diff --git a/Tools/Performance/Comparer/Comparer.sln b/Tools/Performance/Comparer/Comparer.sln new file mode 100644 index 0000000000..c66696ea3 --- /dev/null +++ b/Tools/Performance/Comparer/Comparer.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.40629.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CurrentVersion", "CurrentVersion\CurrentVersion.csproj", "{7921C2EA-3634-4C33-BB10-B4F960EEDD97}" + ProjectSection(ProjectDependencies) = postProject + {1390F440-FFFA-45F3-A920-07FD4EEC8785} = {1390F440-FFFA-45F3-A920-07FD4EEC8785} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PreviousVersion", "PreviousVersion\PreviousVersion.csproj", "{18B60F92-5DB1-495A-947D-80F60F6B0661}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{1390F440-FFFA-45F3-A920-07FD4EEC8785}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7921C2EA-3634-4C33-BB10-B4F960EEDD97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7921C2EA-3634-4C33-BB10-B4F960EEDD97}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7921C2EA-3634-4C33-BB10-B4F960EEDD97}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7921C2EA-3634-4C33-BB10-B4F960EEDD97}.Release|Any CPU.Build.0 = Release|Any CPU + {18B60F92-5DB1-495A-947D-80F60F6B0661}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {18B60F92-5DB1-495A-947D-80F60F6B0661}.Debug|Any CPU.Build.0 = Debug|Any CPU + {18B60F92-5DB1-495A-947D-80F60F6B0661}.Release|Any CPU.ActiveCfg = Release|Any CPU + {18B60F92-5DB1-495A-947D-80F60F6B0661}.Release|Any CPU.Build.0 = Release|Any CPU + {1390F440-FFFA-45F3-A920-07FD4EEC8785}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1390F440-FFFA-45F3-A920-07FD4EEC8785}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1390F440-FFFA-45F3-A920-07FD4EEC8785}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1390F440-FFFA-45F3-A920-07FD4EEC8785}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Tools/Performance/Comparer/CurrentVersion/App.config b/Tools/Performance/Comparer/CurrentVersion/App.config new file mode 100644 index 0000000000..4823ad6c3 --- /dev/null +++ b/Tools/Performance/Comparer/CurrentVersion/App.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/CurrentVersion/CurrentVersion.csproj b/Tools/Performance/Comparer/CurrentVersion/CurrentVersion.csproj new file mode 100644 index 0000000000..cdebe363a --- /dev/null +++ b/Tools/Performance/Comparer/CurrentVersion/CurrentVersion.csproj @@ -0,0 +1,153 @@ + + + + + Debug + AnyCPU + {7921C2EA-3634-4C33-BB10-B4F960EEDD97} + Exe + Properties + CurrentVersion + CurrentVersion + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\Release\net45\Accord.dll + + + ..\..\..\..\Release\net45\Accord.Audio.dll + + + ..\..\..\..\Release\net45\Accord.Audio.DirectSound.dll + + + ..\..\..\..\Release\net45\Accord.Audio.Formats.dll + + + ..\..\..\..\Release\net45\Accord.Audition.dll + + + ..\..\..\..\Release\net45\Accord.Controls.dll + + + ..\..\..\..\Release\net45\Accord.Controls.Audio.dll + + + ..\..\..\..\Release\net45\Accord.Controls.Imaging.dll + + + ..\..\..\..\Release\net45\Accord.Controls.Vision.dll + + + ..\..\..\..\Release\net45\Accord.Fuzzy.dll + + + ..\..\..\..\Release\net45\Accord.Genetic.dll + + + ..\..\..\..\Release\net45\Accord.Imaging.dll + + + ..\..\..\..\Release\net45\Accord.IO.dll + + + ..\..\..\..\Release\net45\Accord.MachineLearning.dll + + + ..\..\..\..\Release\net45\GPL\Accord.MachineLearning.GPL.dll + + + ..\..\..\..\Release\net45\Accord.Math.dll + + + ..\..\..\..\Release\net45\Noncommercial\Accord.Math.Noncommercial.dll + + + ..\..\..\..\Release\net45\Accord.Neuro.dll + + + ..\..\..\..\Release\net45\Accord.Statistics.dll + + + ..\..\..\..\Release\net45\Accord.Video.dll + + + ..\..\..\..\Release\net45\Accord.Video.DirectShow.dll + + + ..\..\..\..\Release\net45\Accord.Video.Kinect.dll + + + ..\..\..\..\Release\net45\Accord.Video.VFW.dll + + + ..\..\..\..\Release\net45\Accord.Video.Ximea.dll + + + ..\..\..\..\Release\net45\Accord.Vision.dll + + + ..\packages\BenchmarkDotNet.0.9.4\lib\net45\BenchmarkDotNet.dll + True + + + + + + + + + + + + + + ..\..\..\..\Release\net45\ZedGraph.dll + + + + + + + + + + + + + + + {1390f440-fffa-45f3-a920-07fd4eec8785} + Shared + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/CurrentVersion/KernelSupportVectorMachineTest.cs b/Tools/Performance/Comparer/CurrentVersion/KernelSupportVectorMachineTest.cs new file mode 100644 index 0000000000..a5c02955a --- /dev/null +++ b/Tools/Performance/Comparer/CurrentVersion/KernelSupportVectorMachineTest.cs @@ -0,0 +1,72 @@ +using Accord.MachineLearning.VectorMachines; +using Accord.MachineLearning.VectorMachines.Learning; +using Accord.Statistics.Kernels; +using BenchmarkDotNet.Attributes; +using System.Text; +using System.Threading.Tasks; +using Accord.Math; +using Accord.Math.Distances; +using Accord.Statistics.Distributions.Univariate; +using Accord; +using Shared; + +namespace CurrentVersion +{ + [Config(typeof(FastAndDirtyConfig))] + public class KernelSupportVectorMachineTest + { + private readonly double[][] inputs; + private readonly int[] outputs; + + SupportVectorMachine ksvm; + SequentialMinimalOptimization smo; + + public KernelSupportVectorMachineTest() + { + var data = Shared.Examples.YinYang(); + inputs = data.Training.Inputs; + outputs = data.Training.Output; + } + + [Setup] + public void Setup() + { + ksvm = new SupportVectorMachine(inputs: 2, kernel: new Polynomial(2)); + smo = new SequentialMinimalOptimization() + { + Model = ksvm + }; + } + + [Benchmark] + public IntRange Accord_Core() + { + return new IntRange(0, 1); + } + + [Benchmark] + public Cosine Accord_Math() + { + return new Cosine(); + } + + [Benchmark] + public NormalDistribution Accord_Statistics() + { + return new NormalDistribution(); + } + + [Benchmark] + public SupportVectorMachine v3_1_0() + { + ksvm = new SupportVectorMachine(inputs: 2, kernel: new Polynomial(2)); + smo = new SequentialMinimalOptimization() + { + Model = ksvm + }; + smo.Learn(inputs, outputs); + return ksvm; + } + + } +} \ No newline at end of file diff --git a/Tools/Performance/Comparer/CurrentVersion/MulticlassSupportVectorMachineTest.cs b/Tools/Performance/Comparer/CurrentVersion/MulticlassSupportVectorMachineTest.cs new file mode 100644 index 0000000000..3aa9e298e --- /dev/null +++ b/Tools/Performance/Comparer/CurrentVersion/MulticlassSupportVectorMachineTest.cs @@ -0,0 +1,74 @@ +using Accord.MachineLearning.VectorMachines; +using Accord.MachineLearning.VectorMachines.Learning; +using Accord.Statistics.Kernels; +using BenchmarkDotNet.Attributes; +using System.Text; +using System.Threading.Tasks; +using Accord.Math; +using Accord.Math.Distances; +using Accord.Statistics.Distributions.Univariate; +using Accord; +using Shared; + +namespace CurrentVersion +{ + [Config(typeof(FastAndDirtyConfig))] + public class MulticlassSupportVectorMachineTest + { + private readonly Problem problem; + + MulticlassSupportVectorMachine ksvm; + MulticlassSupportVectorLearning smo; + + public MulticlassSupportVectorMachineTest() + { + problem = Shared.Examples.KaggleDigits(); + } + + [Setup] + public void Setup() + { + ksvm = new MulticlassSupportVectorMachine( + inputs: 2, kernel: new Polynomial(2), classes: 10); + + smo = new MulticlassSupportVectorLearning() + { + Model = ksvm + }; + } + + [Benchmark] + public IntRange Accord_Core() + { + return new IntRange(0, 1); + } + + [Benchmark] + public Cosine Accord_Math() + { + return new Cosine(); + } + + [Benchmark] + public NormalDistribution Accord_Statistics() + { + return new NormalDistribution(); + } + + [Benchmark] + public MulticlassSupportVectorMachine v3_1_0() + { + ksvm = new MulticlassSupportVectorMachine( + inputs: 2, kernel: new Polynomial(2), classes: 10); + + smo = new MulticlassSupportVectorLearning() + { + Model = ksvm + }; + + smo.Learn(problem.Training.Inputs, problem.Testing.Output); + return ksvm; + } + + } +} \ No newline at end of file diff --git a/Tools/Performance/Comparer/CurrentVersion/Program.cs b/Tools/Performance/Comparer/CurrentVersion/Program.cs new file mode 100644 index 0000000000..e55e1b7ea --- /dev/null +++ b/Tools/Performance/Comparer/CurrentVersion/Program.cs @@ -0,0 +1,26 @@ +using Accord.Statistics.Kernels; +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Jobs; +using BenchmarkDotNet.Running; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CurrentVersion +{ + class Program + { + static void Main(string[] args) + { + BenchmarkRunner.Run(); + BenchmarkRunner.Run(); + //MulticlassSupportVectorMachineTest().v3_1_0(); + //Console.ReadLine(); + } + + + } +} diff --git a/Tools/Performance/Comparer/CurrentVersion/Properties/AssemblyInfo.cs b/Tools/Performance/Comparer/CurrentVersion/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..1c088d4ff --- /dev/null +++ b/Tools/Performance/Comparer/CurrentVersion/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Comparer")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Comparer")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("28b79060-2935-440c-8908-3043b4114a0d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tools/Performance/Comparer/CurrentVersion/packages.config b/Tools/Performance/Comparer/CurrentVersion/packages.config new file mode 100644 index 0000000000..46606255b --- /dev/null +++ b/Tools/Performance/Comparer/CurrentVersion/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/PreviousVersion/App.config b/Tools/Performance/Comparer/PreviousVersion/App.config new file mode 100644 index 0000000000..d39efc371 --- /dev/null +++ b/Tools/Performance/Comparer/PreviousVersion/App.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/PreviousVersion/KernelSupportVectorMachineTest.cs b/Tools/Performance/Comparer/PreviousVersion/KernelSupportVectorMachineTest.cs new file mode 100644 index 0000000000..c46677686 --- /dev/null +++ b/Tools/Performance/Comparer/PreviousVersion/KernelSupportVectorMachineTest.cs @@ -0,0 +1,49 @@ +using Accord.MachineLearning.VectorMachines; +using Accord.MachineLearning.VectorMachines.Learning; +using Accord.Math; +using Accord.Statistics.Distributions.Univariate; +using Accord.Statistics.Kernels; +using BenchmarkDotNet.Attributes; +using Shared; +using System; +using System.Text; +using System.Threading.Tasks; + +namespace PreviousVersion +{ + [Config(typeof(FastAndDirtyConfig))] + public class KernelSupportVectorMachineTest + { + private readonly double[][] inputs; + private readonly int[] outputs; + + public KernelSupportVectorMachineTest() + { + var data = Shared.Examples.YinYang(); + inputs = data.Training.Inputs; + outputs = data.Training.Output; + } + + [Benchmark] + public Plane Accord_Math() + { + return new Accord.Math.Plane(0, 1, 2); + } + + [Benchmark] + public NormalDistribution Accord_Statistics() + { + return new NormalDistribution(); + } + + [Benchmark] + public double v3_0_1() + { + var ksvm = new KernelSupportVectorMachine(new Polynomial(2), 2); + var smo = new SequentialMinimalOptimization(ksvm, inputs, outputs); + + return smo.Run(computeError: false); + } + + } +} \ No newline at end of file diff --git a/Tools/Performance/Comparer/PreviousVersion/License-LGPL.txt b/Tools/Performance/Comparer/PreviousVersion/License-LGPL.txt new file mode 100644 index 0000000000..8ac0cecfb --- /dev/null +++ b/Tools/Performance/Comparer/PreviousVersion/License-LGPL.txt @@ -0,0 +1,506 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey 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 library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + + + diff --git a/Tools/Performance/Comparer/PreviousVersion/MulticlassSupportVectorMachineTest.cs b/Tools/Performance/Comparer/PreviousVersion/MulticlassSupportVectorMachineTest.cs new file mode 100644 index 0000000000..164c1b1b0 --- /dev/null +++ b/Tools/Performance/Comparer/PreviousVersion/MulticlassSupportVectorMachineTest.cs @@ -0,0 +1,47 @@ +using Accord.MachineLearning.VectorMachines; +using Accord.MachineLearning.VectorMachines.Learning; +using Accord.Math; +using Accord.Statistics.Distributions.Univariate; +using Accord.Statistics.Kernels; +using BenchmarkDotNet.Attributes; +using Shared; +using System; +using System.Text; +using System.Threading.Tasks; + +namespace PreviousVersion +{ + [Config(typeof(FastAndDirtyConfig))] + public class MulticlassSupportVectorMachineTest + { + private readonly Problem problem; + + public MulticlassSupportVectorMachineTest() + { + problem = Shared.Examples.KaggleDigits(); + } + + [Benchmark] + public Plane Accord_Math() + { + return new Accord.Math.Plane(0, 1, 2); + } + + [Benchmark] + public NormalDistribution Accord_Statistics() + { + return new NormalDistribution(); + } + + [Benchmark] + public double v3_0_1() + { + var ksvm = new MulticlassSupportVectorMachine(784, new Polynomial(2), 10); + var smo = new MulticlassSupportVectorLearning(ksvm, problem.Training.Inputs, problem.Training.Output); + smo.Algorithm = (svm, x, y, i, j) => new SequentialMinimalOptimization(svm, x, y); + + return smo.Run(computeError: false); + } + + } +} \ No newline at end of file diff --git a/Tools/Performance/Comparer/PreviousVersion/PreviousVersion.csproj b/Tools/Performance/Comparer/PreviousVersion/PreviousVersion.csproj new file mode 100644 index 0000000000..89a1bd911 --- /dev/null +++ b/Tools/Performance/Comparer/PreviousVersion/PreviousVersion.csproj @@ -0,0 +1,198 @@ + + + + + Debug + AnyCPU + {18B60F92-5DB1-495A-947D-80F60F6B0661} + Exe + Properties + PreviousVersion + PreviousVersion + v4.5 + 512 + 9a3b8f46 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Accord.3.0.2\lib\net45\Accord.dll + True + + + ..\packages\Accord.Audio.3.0.2\lib\net45\Accord.Audio.dll + True + + + ..\packages\Accord.DirectSound.3.0.2\lib\net45\Accord.Audio.DirectSound.dll + True + + + ..\packages\Accord.Audio.3.0.2\lib\net45\Accord.Audition.dll + True + + + ..\packages\Accord.Controls.3.0.2\lib\net45\Accord.Controls.dll + True + + + ..\packages\Accord.Controls.Audio.3.0.2\lib\net45\Accord.Controls.Audio.dll + True + + + ..\packages\Accord.Controls.Imaging.3.0.2\lib\net45\Accord.Controls.Imaging.dll + True + + + ..\packages\Accord.Controls.Vision.3.0.2\lib\net45\Accord.Controls.Vision.dll + True + + + ..\packages\Accord.Fuzzy.3.0.2\lib\net45\Accord.Fuzzy.dll + True + + + ..\packages\Accord.Genetic.3.0.2\lib\net45\Accord.Genetic.dll + True + + + ..\packages\Accord.Imaging.3.0.2\lib\net45\Accord.Imaging.dll + True + + + ..\packages\Accord.IO.3.0.2\lib\net45\Accord.IO.dll + True + + + ..\packages\Accord.MachineLearning.3.0.2\lib\net45\Accord.MachineLearning.dll + True + + + ..\packages\Accord.MachineLearning.GPL.3.0.2\lib\net45\Accord.MachineLearning.GPL.dll + True + + + ..\packages\Accord.Math.3.0.2\lib\net45\Accord.Math.dll + True + + + ..\packages\Accord.Neuro.3.0.2\lib\net45\Accord.Neuro.dll + True + + + ..\packages\Accord.Statistics.3.0.2\lib\net45\Accord.Statistics.dll + True + + + ..\packages\Accord.Video.3.0.2\lib\net45\Accord.Video.dll + True + + + ..\packages\Accord.Video.DirectShow.3.0.2\lib\net45\Accord.Video.DirectShow.dll + True + + + ..\packages\Accord.Video.Kinect.3.0.2\lib\net45\Accord.Video.Kinect.dll + True + + + ..\packages\Accord.Video.VFW.3.0.2\lib\net45\Accord.Video.VFW.dll + True + + + ..\packages\Accord.Video.Ximea.3.0.2\lib\net45\Accord.Video.Ximea.dll + True + + + ..\packages\Accord.Vision.3.0.2\lib\net45\Accord.Vision.dll + True + + + ..\packages\BenchmarkDotNet.0.9.4\lib\net45\BenchmarkDotNet.dll + True + + + + + + $(SharpDXPackageBinDir)\SharpDX.dll + + + $(SharpDXPackageBinDir)\SharpDX.DirectSound.dll + + + + + + + + + + + + + ..\packages\ZedGraph.5.1.6\lib\net35-Client\ZedGraph.dll + True + + + + + + + + + + + + Designer + + + + + + + + {1390f440-fffa-45f3-a920-07fd4eec8785} + Shared + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/PreviousVersion/Program.cs b/Tools/Performance/Comparer/PreviousVersion/Program.cs new file mode 100644 index 0000000000..c750c334f --- /dev/null +++ b/Tools/Performance/Comparer/PreviousVersion/Program.cs @@ -0,0 +1,20 @@ +using BenchmarkDotNet.Running; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PreviousVersion +{ + class Program + { + static void Main(string[] args) + { + BenchmarkRunner.Run(); + BenchmarkRunner.Run(); + //new MulticlassSupportVectorMachineTest().v3_0_1(); + //Console.ReadLine(); + } + } +} diff --git a/Tools/Performance/Comparer/PreviousVersion/Properties/AssemblyInfo.cs b/Tools/Performance/Comparer/PreviousVersion/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..58a312277 --- /dev/null +++ b/Tools/Performance/Comparer/PreviousVersion/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("PreviousVersion")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("PreviousVersion")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("962bdc36-b190-4c03-9f22-2e23d57f0525")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tools/Performance/Comparer/PreviousVersion/packages.config b/Tools/Performance/Comparer/PreviousVersion/packages.config new file mode 100644 index 0000000000..c0dfe0c0f --- /dev/null +++ b/Tools/Performance/Comparer/PreviousVersion/packages.config @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/Shared/DataSets.cs b/Tools/Performance/Comparer/Shared/DataSets.cs new file mode 100644 index 0000000000..215b167bb --- /dev/null +++ b/Tools/Performance/Comparer/Shared/DataSets.cs @@ -0,0 +1,183 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shared +{ + public static class Examples + { + private static Tuple readData(string text) + { + var lines = text.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); + var output = new int[lines.Length - 1]; + var inputs = new double[lines.Length - 1][]; + for (int i = 0; i < lines.Length - 1; i++) + { + string[] parts = lines[i + 1].Split(','); + output[i] = int.Parse(parts[0]); + inputs[i] = new double[parts.Length - 1]; + for (int j = 0; j < parts.Length - 1; j++) + { + inputs[i][j] = double.Parse(parts[1 + j]); + } + } + + return Tuple.Create(inputs, output); + } + + public static Problem YinYang() + { + double[][] inputs = new double[yinyang.GetLength(0)][]; + int[] outputs = new int[inputs.Length]; + for (int i = 0; i < inputs.Length; i++) + { + inputs[i] = new double[2]; + for (int j = 0; j < 2; j++) + inputs[i][j] = yinyang[i, j]; + outputs[i] = (int)yinyang[i, 2]; + } + + return new Problem() + { + Training = new Partition() + { + Inputs = inputs, + Output = outputs + } + }; + } + + public static Problem KaggleDigits() + { + var validation = Properties.Resources.validation; + + var training = readData(Properties.Resources.training); + var testing = readData(Properties.Resources.validation); + + return new Problem() + { + Training = new Partition() + { + Inputs = training.Item1, + Output = training.Item2 + }, + + Testing = new Partition() + { + Inputs = testing.Item1, + Output = testing.Item2, + } + }; + } + + + + private static double[,] yinyang = + { + #region Yin Yang + { -0.876847428, 1.996318824, -1 }, + { -0.748759325, 1.997248514, -1 }, + { -0.635574695, 1.978046579, -1 }, + { -0.513769071, 1.973224777, -1 }, + { -0.382577547, 1.955077224, -1 }, + { -0.275144211, 1.923813789, -1 }, + { -0.156802752, 1.949219695, -1 }, + { -0.046002059, 1.895342542, -1 }, + { 0.084152257, 1.873104082, -1 }, + { 0.192063131, 1.868157532, -1 }, + { 0.238547032, 1.811664165, -1 }, + { 0.381412694, 1.830869925, -1 }, + { 0.431182119, 1.755312479, -1 }, + { 0.562589082, 1.725444806, -1 }, + { 0.553294269, 1.689047886, -1 }, + { 0.730976261, 1.610522064, -1 }, + { 0.722164981, 1.633112952, -1 }, + { 0.861069302, 1.562450197, -1 }, + { 0.825107945, 1.435846225, -1 }, + { 0.825261132, 1.456391196, -1 }, + { 0.948721626, 1.393367552, -1 }, + { 1.001705278, 1.275768447, -1 }, + { 0.966788667, 1.321375233, -1 }, + { 1.030828944, 1.228437023, -1 }, + { 1.083195636, 1.143011589, -1 }, + { 0.920876422, 1.037854388, -1 }, + { 0.994518277, 1.064971023, -1 }, + { 0.954169422, 0.938084211, -1 }, + { 0.903586083, 0.985255341, -1 }, + { 0.877869854, 0.729143525, -1 }, + { 0.866594018, 0.75025734, -1 }, + { 0.757278389, 0.638917822, -1 }, + { 0.655489515, 0.670717406, -1 }, + { 0.687639626, 0.511655563, -1 }, + { 0.656365078, 0.638542346, -1 }, + { 0.491775914, 0.401874802, -1 }, + { 0.35504489, 0.38963967, -1 }, + { 0.275616568, 0.182958126, -1 }, + { 0.338471037, 0.102347682, -1 }, + { 0.103918095, 0.152960961, -1 }, + { 0.238473941, -0.070899965, -1 }, + { -0.00657754, 0.168107931, -1 }, + { -0.091307058, -0.032174399, -1 }, + { -0.290772034, -0.345025689, -1 }, + { -0.287555253, -0.397984323, -1 }, + { -0.363424618, -0.365636808, -1 }, + { -0.544071691, -0.512970644, -1 }, + { -0.7098968, -0.54654921, -1 }, + { -1.007857216, -0.811837224, -1 }, + { -0.932787122, -0.687973276, -1 }, + { -0.123987649, -1.547976483, 1 }, + { -0.247236701, -1.546629461, 1 }, + { -0.369357682, -1.533968755, 1 }, + { -0.497892178, -1.525597952, 1 }, + { -0.606998699, -1.518386229, 1 }, + { -0.751556976, -1.46427032, 1 }, + { -0.858848619, -1.464142289, 1 }, + { -0.957834238, -1.454165888, 1 }, + { -1.061602698, -1.444783216, 1 }, + { -1.169634343, -1.426033507, 1 }, + { -1.272115895, -1.408678817, 1 }, + { -1.380383293, -1.345651442, 1 }, + { -1.480866574, -1.279955202, 1 }, + { -1.548927664, -1.223262541, 1 }, + { -1.597886819, -1.227115936, 1 }, + { -1.686711497, -1.141898276, 1 }, + { -1.812689051, -1.14805053, 1 }, + { -1.809841336, -1.083347602, 1 }, + { -1.938850711, -1.019723742, 1 }, + { -1.974552679, -0.970515422, 1 }, + { -1.953184359, -0.88363121, 1 }, + { -1.98749965, -0.861879772, 1 }, + { -2.04215554, -0.797813815, 1 }, + { -1.984185734, -0.826986835, 1 }, + { -2.063307605, -0.749495213, 1 }, + { -1.964274134, -0.653639779, 1 }, + { -2.020258155, -0.530431615, 1 }, + { -1.946081996, -0.514425683, 1 }, + { -1.934356006, -0.435380423, 1 }, + { -1.827017658, -0.425058004, 1 }, + { -1.788385889, -0.312443513, 1 }, + { -1.800874033, -0.237312969, 1 }, + { -1.784225126, 0.013987951, 1 }, + { -1.682828321, -0.063911465, 1 }, + { -1.754042471, -0.075520653, 1 }, + { -1.5680733, 0.110795036, 1 }, + { -1.438333268, 0.170230561, 1 }, + { -1.356614661, 0.163613841, 1 }, + { -1.336362397, 0.334537756, 1 }, + { -1.296677607, 0.316006907, 1 }, + { -1.109908857, 0.474036646, 1 }, + { -0.845929174, 0.485303884, 1 }, + { -0.855794711, 0.395603118, 1 }, + { -0.68479255, 0.671166245, 1 }, + { -0.514222252, 0.652065554, 1 }, + { -0.387612557, 0.700858902, 1 }, + { -0.51939719, 1.025735335, 1 }, + { -0.228760025, 0.93490314, 1 }, + { -0.293782477, 1.008861678, 1 }, + { 0.013431012, 1.082021525, 1 }, + #endregion + }; + } +} diff --git a/Tools/Performance/Comparer/Shared/FastAndDirtyConfig.cs b/Tools/Performance/Comparer/Shared/FastAndDirtyConfig.cs new file mode 100644 index 0000000000..48b59d469 --- /dev/null +++ b/Tools/Performance/Comparer/Shared/FastAndDirtyConfig.cs @@ -0,0 +1,21 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Jobs; + +namespace Shared +{ + public class FastAndDirtyConfig : ManualConfig + { + public FastAndDirtyConfig() + { + Add(Job.Default + .WithLaunchCount(1) + .WithIterationTime(100) + .WithWarmupCount(100) + .WithTargetCount(100) + ); + } + } +} \ No newline at end of file diff --git a/Tools/Performance/Comparer/Shared/Partition.cs b/Tools/Performance/Comparer/Shared/Partition.cs new file mode 100644 index 0000000000..208499221 --- /dev/null +++ b/Tools/Performance/Comparer/Shared/Partition.cs @@ -0,0 +1,13 @@ +using System; +using System.Linq; +using System.Collections.Generic; + +namespace Shared +{ + public class Partition + { + public double[][] Inputs { get; set; } + + public int[] Output { get; set; } + } +} \ No newline at end of file diff --git a/Tools/Performance/Comparer/Shared/Problem.cs b/Tools/Performance/Comparer/Shared/Problem.cs new file mode 100644 index 0000000000..f82291fa1 --- /dev/null +++ b/Tools/Performance/Comparer/Shared/Problem.cs @@ -0,0 +1,13 @@ +using System; +using System.Linq; +using System.Collections.Generic; + +namespace Shared +{ + public class Problem + { + public Partition Training { get; set; } + + public Partition Testing { get; set; } + } +} \ No newline at end of file diff --git a/Tools/Performance/Comparer/Shared/Properties/AssemblyInfo.cs b/Tools/Performance/Comparer/Shared/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..83f4b2b08 --- /dev/null +++ b/Tools/Performance/Comparer/Shared/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Shared")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Shared")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c2e9d4c4-5b90-4512-8c77-b54dfebd82c2")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tools/Performance/Comparer/Shared/Properties/Resources.Designer.cs b/Tools/Performance/Comparer/Shared/Properties/Resources.Designer.cs new file mode 100644 index 0000000000..2fd517736 --- /dev/null +++ b/Tools/Performance/Comparer/Shared/Properties/Resources.Designer.cs @@ -0,0 +1,81 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Shared.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Shared.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to label,pixel0,pixel1,pixel2,pixel3,pixel4,pixel5,pixel6,pixel7,pixel8,pixel9,pixel10,pixel11,pixel12,pixel13,pixel14,pixel15,pixel16,pixel17,pixel18,pixel19,pixel20,pixel21,pixel22,pixel23,pixel24,pixel25,pixel26,pixel27,pixel28,pixel29,pixel30,pixel31,pixel32,pixel33,pixel34,pixel35,pixel36,pixel37,pixel38,pixel39,pixel40,pixel41,pixel42,pixel43,pixel44,pixel45,pixel46,pixel47,pixel48,pixel49,pixel50,pixel51,pixel52,pixel53,pixel54,pixel55,pixel56,pixel57,pixel58,pixel59,pixel60,pixel61,pixel62,pixel63,pixe [rest of string was truncated]";. + /// + internal static string training { + get { + return ResourceManager.GetString("training", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to label,pixel0,pixel1,pixel2,pixel3,pixel4,pixel5,pixel6,pixel7,pixel8,pixel9,pixel10,pixel11,pixel12,pixel13,pixel14,pixel15,pixel16,pixel17,pixel18,pixel19,pixel20,pixel21,pixel22,pixel23,pixel24,pixel25,pixel26,pixel27,pixel28,pixel29,pixel30,pixel31,pixel32,pixel33,pixel34,pixel35,pixel36,pixel37,pixel38,pixel39,pixel40,pixel41,pixel42,pixel43,pixel44,pixel45,pixel46,pixel47,pixel48,pixel49,pixel50,pixel51,pixel52,pixel53,pixel54,pixel55,pixel56,pixel57,pixel58,pixel59,pixel60,pixel61,pixel62,pixel63,pixe [rest of string was truncated]";. + /// + internal static string validation { + get { + return ResourceManager.GetString("validation", resourceCulture); + } + } + } +} diff --git a/Tools/Performance/Comparer/Shared/Properties/Resources.resx b/Tools/Performance/Comparer/Shared/Properties/Resources.resx new file mode 100644 index 0000000000..c7718fdc9 --- /dev/null +++ b/Tools/Performance/Comparer/Shared/Properties/Resources.resx @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\resources\training.csv;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\resources\validation.csv;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/Shared/Resources/training.csv b/Tools/Performance/Comparer/Shared/Resources/training.csv new file mode 100644 index 0000000000..da1852ab0 --- /dev/null +++ b/Tools/Performance/Comparer/Shared/Resources/training.csv @@ -0,0 +1,5001 @@ +label,pixel0,pixel1,pixel2,pixel3,pixel4,pixel5,pixel6,pixel7,pixel8,pixel9,pixel10,pixel11,pixel12,pixel13,pixel14,pixel15,pixel16,pixel17,pixel18,pixel19,pixel20,pixel21,pixel22,pixel23,pixel24,pixel25,pixel26,pixel27,pixel28,pixel29,pixel30,pixel31,pixel32,pixel33,pixel34,pixel35,pixel36,pixel37,pixel38,pixel39,pixel40,pixel41,pixel42,pixel43,pixel44,pixel45,pixel46,pixel47,pixel48,pixel49,pixel50,pixel51,pixel52,pixel53,pixel54,pixel55,pixel56,pixel57,pixel58,pixel59,pixel60,pixel61,pixel62,pixel63,pixel64,pixel65,pixel66,pixel67,pixel68,pixel69,pixel70,pixel71,pixel72,pixel73,pixel74,pixel75,pixel76,pixel77,pixel78,pixel79,pixel80,pixel81,pixel82,pixel83,pixel84,pixel85,pixel86,pixel87,pixel88,pixel89,pixel90,pixel91,pixel92,pixel93,pixel94,pixel95,pixel96,pixel97,pixel98,pixel99,pixel100,pixel101,pixel102,pixel103,pixel104,pixel105,pixel106,pixel107,pixel108,pixel109,pixel110,pixel111,pixel112,pixel113,pixel114,pixel115,pixel116,pixel117,pixel118,pixel119,pixel120,pixel121,pixel122,pixel123,pixel124,pixel125,pixel126,pixel127,pixel128,pixel129,pixel130,pixel131,pixel132,pixel133,pixel134,pixel135,pixel136,pixel137,pixel138,pixel139,pixel140,pixel141,pixel142,pixel143,pixel144,pixel145,pixel146,pixel147,pixel148,pixel149,pixel150,pixel151,pixel152,pixel153,pixel154,pixel155,pixel156,pixel157,pixel158,pixel159,pixel160,pixel161,pixel162,pixel163,pixel164,pixel165,pixel166,pixel167,pixel168,pixel169,pixel170,pixel171,pixel172,pixel173,pixel174,pixel175,pixel176,pixel177,pixel178,pixel179,pixel180,pixel181,pixel182,pixel183,pixel184,pixel185,pixel186,pixel187,pixel188,pixel189,pixel190,pixel191,pixel192,pixel193,pixel194,pixel195,pixel196,pixel197,pixel198,pixel199,pixel200,pixel201,pixel202,pixel203,pixel204,pixel205,pixel206,pixel207,pixel208,pixel209,pixel210,pixel211,pixel212,pixel213,pixel214,pixel215,pixel216,pixel217,pixel218,pixel219,pixel220,pixel221,pixel222,pixel223,pixel224,pixel225,pixel226,pixel227,pixel228,pixel229,pixel230,pixel231,pixel232,pixel233,pixel234,pixel235,pixel236,pixel237,pixel238,pixel239,pixel240,pixel241,pixel242,pixel243,pixel244,pixel245,pixel246,pixel247,pixel248,pixel249,pixel250,pixel251,pixel252,pixel253,pixel254,pixel255,pixel256,pixel257,pixel258,pixel259,pixel260,pixel261,pixel262,pixel263,pixel264,pixel265,pixel266,pixel267,pixel268,pixel269,pixel270,pixel271,pixel272,pixel273,pixel274,pixel275,pixel276,pixel277,pixel278,pixel279,pixel280,pixel281,pixel282,pixel283,pixel284,pixel285,pixel286,pixel287,pixel288,pixel289,pixel290,pixel291,pixel292,pixel293,pixel294,pixel295,pixel296,pixel297,pixel298,pixel299,pixel300,pixel301,pixel302,pixel303,pixel304,pixel305,pixel306,pixel307,pixel308,pixel309,pixel310,pixel311,pixel312,pixel313,pixel314,pixel315,pixel316,pixel317,pixel318,pixel319,pixel320,pixel321,pixel322,pixel323,pixel324,pixel325,pixel326,pixel327,pixel328,pixel329,pixel330,pixel331,pixel332,pixel333,pixel334,pixel335,pixel336,pixel337,pixel338,pixel339,pixel340,pixel341,pixel342,pixel343,pixel344,pixel345,pixel346,pixel347,pixel348,pixel349,pixel350,pixel351,pixel352,pixel353,pixel354,pixel355,pixel356,pixel357,pixel358,pixel359,pixel360,pixel361,pixel362,pixel363,pixel364,pixel365,pixel366,pixel367,pixel368,pixel369,pixel370,pixel371,pixel372,pixel373,pixel374,pixel375,pixel376,pixel377,pixel378,pixel379,pixel380,pixel381,pixel382,pixel383,pixel384,pixel385,pixel386,pixel387,pixel388,pixel389,pixel390,pixel391,pixel392,pixel393,pixel394,pixel395,pixel396,pixel397,pixel398,pixel399,pixel400,pixel401,pixel402,pixel403,pixel404,pixel405,pixel406,pixel407,pixel408,pixel409,pixel410,pixel411,pixel412,pixel413,pixel414,pixel415,pixel416,pixel417,pixel418,pixel419,pixel420,pixel421,pixel422,pixel423,pixel424,pixel425,pixel426,pixel427,pixel428,pixel429,pixel430,pixel431,pixel432,pixel433,pixel434,pixel435,pixel436,pixel437,pixel438,pixel439,pixel440,pixel441,pixel442,pixel443,pixel444,pixel445,pixel446,pixel447,pixel448,pixel449,pixel450,pixel451,pixel452,pixel453,pixel454,pixel455,pixel456,pixel457,pixel458,pixel459,pixel460,pixel461,pixel462,pixel463,pixel464,pixel465,pixel466,pixel467,pixel468,pixel469,pixel470,pixel471,pixel472,pixel473,pixel474,pixel475,pixel476,pixel477,pixel478,pixel479,pixel480,pixel481,pixel482,pixel483,pixel484,pixel485,pixel486,pixel487,pixel488,pixel489,pixel490,pixel491,pixel492,pixel493,pixel494,pixel495,pixel496,pixel497,pixel498,pixel499,pixel500,pixel501,pixel502,pixel503,pixel504,pixel505,pixel506,pixel507,pixel508,pixel509,pixel510,pixel511,pixel512,pixel513,pixel514,pixel515,pixel516,pixel517,pixel518,pixel519,pixel520,pixel521,pixel522,pixel523,pixel524,pixel525,pixel526,pixel527,pixel528,pixel529,pixel530,pixel531,pixel532,pixel533,pixel534,pixel535,pixel536,pixel537,pixel538,pixel539,pixel540,pixel541,pixel542,pixel543,pixel544,pixel545,pixel546,pixel547,pixel548,pixel549,pixel550,pixel551,pixel552,pixel553,pixel554,pixel555,pixel556,pixel557,pixel558,pixel559,pixel560,pixel561,pixel562,pixel563,pixel564,pixel565,pixel566,pixel567,pixel568,pixel569,pixel570,pixel571,pixel572,pixel573,pixel574,pixel575,pixel576,pixel577,pixel578,pixel579,pixel580,pixel581,pixel582,pixel583,pixel584,pixel585,pixel586,pixel587,pixel588,pixel589,pixel590,pixel591,pixel592,pixel593,pixel594,pixel595,pixel596,pixel597,pixel598,pixel599,pixel600,pixel601,pixel602,pixel603,pixel604,pixel605,pixel606,pixel607,pixel608,pixel609,pixel610,pixel611,pixel612,pixel613,pixel614,pixel615,pixel616,pixel617,pixel618,pixel619,pixel620,pixel621,pixel622,pixel623,pixel624,pixel625,pixel626,pixel627,pixel628,pixel629,pixel630,pixel631,pixel632,pixel633,pixel634,pixel635,pixel636,pixel637,pixel638,pixel639,pixel640,pixel641,pixel642,pixel643,pixel644,pixel645,pixel646,pixel647,pixel648,pixel649,pixel650,pixel651,pixel652,pixel653,pixel654,pixel655,pixel656,pixel657,pixel658,pixel659,pixel660,pixel661,pixel662,pixel663,pixel664,pixel665,pixel666,pixel667,pixel668,pixel669,pixel670,pixel671,pixel672,pixel673,pixel674,pixel675,pixel676,pixel677,pixel678,pixel679,pixel680,pixel681,pixel682,pixel683,pixel684,pixel685,pixel686,pixel687,pixel688,pixel689,pixel690,pixel691,pixel692,pixel693,pixel694,pixel695,pixel696,pixel697,pixel698,pixel699,pixel700,pixel701,pixel702,pixel703,pixel704,pixel705,pixel706,pixel707,pixel708,pixel709,pixel710,pixel711,pixel712,pixel713,pixel714,pixel715,pixel716,pixel717,pixel718,pixel719,pixel720,pixel721,pixel722,pixel723,pixel724,pixel725,pixel726,pixel727,pixel728,pixel729,pixel730,pixel731,pixel732,pixel733,pixel734,pixel735,pixel736,pixel737,pixel738,pixel739,pixel740,pixel741,pixel742,pixel743,pixel744,pixel745,pixel746,pixel747,pixel748,pixel749,pixel750,pixel751,pixel752,pixel753,pixel754,pixel755,pixel756,pixel757,pixel758,pixel759,pixel760,pixel761,pixel762,pixel763,pixel764,pixel765,pixel766,pixel767,pixel768,pixel769,pixel770,pixel771,pixel772,pixel773,pixel774,pixel775,pixel776,pixel777,pixel778,pixel779,pixel780,pixel781,pixel782,pixel783 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,255,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,250,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,248,253,167,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,207,253,235,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,209,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,238,170,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,210,254,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,209,253,254,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,206,254,254,198,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,203,253,248,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,188,253,245,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,240,253,195,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,220,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,253,250,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,218,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,30,137,137,192,86,72,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,86,250,254,254,254,254,217,246,151,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,179,254,254,254,254,254,254,254,254,254,231,54,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,254,254,254,254,254,254,254,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,61,191,254,254,254,254,254,109,83,199,254,254,254,254,243,85,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,202,147,147,45,0,11,29,200,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,1,174,254,254,89,67,0,0,0,0,0,0,128,252,254,254,212,76,0,0,0,0,0,0,0,0,0,0,47,254,254,254,29,0,0,0,0,0,0,0,0,83,254,254,254,153,0,0,0,0,0,0,0,0,0,0,80,254,254,240,24,0,0,0,0,0,0,0,0,25,240,254,254,153,0,0,0,0,0,0,0,0,0,0,64,254,254,186,7,0,0,0,0,0,0,0,0,0,166,254,254,224,12,0,0,0,0,0,0,0,0,14,232,254,254,254,29,0,0,0,0,0,0,0,0,0,75,254,254,254,17,0,0,0,0,0,0,0,0,18,254,254,254,254,29,0,0,0,0,0,0,0,0,0,48,254,254,254,17,0,0,0,0,0,0,0,0,2,163,254,254,254,29,0,0,0,0,0,0,0,0,0,48,254,254,254,17,0,0,0,0,0,0,0,0,0,94,254,254,254,200,12,0,0,0,0,0,0,0,16,209,254,254,150,1,0,0,0,0,0,0,0,0,0,15,206,254,254,254,202,66,0,0,0,0,0,21,161,254,254,245,31,0,0,0,0,0,0,0,0,0,0,0,60,212,254,254,254,194,48,48,34,41,48,209,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,86,243,254,254,254,254,254,233,243,254,254,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,254,254,254,254,254,254,254,254,239,86,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,182,254,254,254,254,254,254,254,254,243,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,76,146,254,255,254,255,146,19,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,141,139,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,185,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,146,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,179,6,0,0,0,0,0,0,0,0,9,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,247,17,0,0,0,0,0,0,0,0,27,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,155,0,0,0,0,0,0,0,0,27,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,207,6,0,0,0,0,0,0,0,27,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,21,0,0,0,0,0,0,0,20,239,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,21,0,0,0,0,0,0,0,0,195,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,21,0,0,0,0,0,0,0,0,195,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,251,21,0,0,0,0,0,0,0,0,195,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,153,5,0,0,0,0,0,0,0,120,240,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,251,40,0,0,0,0,0,0,0,94,255,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,184,0,0,0,0,0,0,0,19,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,169,0,0,0,0,0,0,0,3,199,182,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,205,4,0,0,26,72,128,203,208,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,129,113,186,245,251,189,75,56,136,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,216,233,233,159,104,52,0,0,0,38,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,206,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,209,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,25,130,155,254,254,254,157,30,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,103,253,253,253,253,253,253,253,253,114,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,208,253,253,253,253,253,253,253,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,253,253,253,253,253,253,253,253,215,101,3,0,0,0,0,0,0,0,0,0,0,0,0,23,210,253,253,253,248,161,222,222,246,253,253,253,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,229,77,0,0,0,70,218,253,253,253,253,215,91,0,0,0,0,0,0,0,0,0,0,5,214,253,253,253,195,0,0,0,0,0,104,224,253,253,253,253,215,29,0,0,0,0,0,0,0,0,0,116,253,253,253,247,75,0,0,0,0,0,0,26,200,253,253,253,253,216,4,0,0,0,0,0,0,0,0,254,253,253,253,195,0,0,0,0,0,0,0,0,26,200,253,253,253,253,5,0,0,0,0,0,0,0,0,254,253,253,253,99,0,0,0,0,0,0,0,0,0,25,231,253,253,253,36,0,0,0,0,0,0,0,0,254,253,253,253,99,0,0,0,0,0,0,0,0,0,0,223,253,253,253,129,0,0,0,0,0,0,0,0,254,253,253,253,99,0,0,0,0,0,0,0,0,0,0,127,253,253,253,129,0,0,0,0,0,0,0,0,254,253,253,253,99,0,0,0,0,0,0,0,0,0,0,139,253,253,253,90,0,0,0,0,0,0,0,0,254,253,253,253,99,0,0,0,0,0,0,0,0,0,78,248,253,253,253,5,0,0,0,0,0,0,0,0,254,253,253,253,216,34,0,0,0,0,0,0,0,33,152,253,253,253,107,1,0,0,0,0,0,0,0,0,206,253,253,253,253,140,0,0,0,0,0,30,139,234,253,253,253,154,2,0,0,0,0,0,0,0,0,0,16,205,253,253,253,250,208,106,106,106,200,237,253,253,253,253,209,22,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,253,253,253,253,253,253,253,253,253,253,209,22,0,0,0,0,0,0,0,0,0,0,0,0,1,91,253,253,253,253,253,253,253,253,253,253,213,90,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,129,208,253,253,253,253,159,129,90,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,141,202,254,193,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,254,179,163,249,244,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,150,0,0,189,254,243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,248,209,5,0,0,164,236,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,211,254,58,0,0,0,0,33,230,212,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,156,3,0,0,0,0,18,230,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,254,35,0,0,0,0,0,33,254,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,154,3,0,0,0,0,0,33,254,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,115,0,0,0,0,0,0,160,254,239,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,35,0,0,0,0,0,0,197,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,239,221,11,0,0,0,0,0,0,198,255,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,238,178,0,0,0,0,0,0,10,219,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,249,204,0,0,0,0,0,0,25,235,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,204,0,0,0,0,0,0,91,254,248,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,204,0,0,0,0,0,67,241,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,214,7,0,0,0,50,242,254,194,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,254,78,0,0,19,128,254,195,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,222,74,143,235,254,228,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,242,254,254,254,254,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,64,158,200,174,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,152,71,51,51,21,41,51,51,51,51,113,193,152,30,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,252,253,252,223,243,253,252,253,252,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,123,102,41,102,102,102,102,102,102,102,162,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,102,0,0,0,0,0,0,0,0,183,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,142,0,0,0,0,0,0,0,11,213,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,102,0,0,0,0,0,0,0,51,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,102,0,0,0,0,0,0,0,214,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,130,190,254,254,250,175,135,96,96,16,4,0,0,0,0,0,0,0,0,0,0,0,0,0,26,102,186,254,254,248,222,222,225,254,254,254,254,254,206,112,4,0,0,0,0,0,0,0,0,0,0,0,207,254,254,177,117,39,0,0,56,248,102,48,48,103,192,254,135,0,0,0,0,0,0,0,0,0,0,0,91,111,36,0,0,0,0,0,72,92,0,0,0,0,12,224,210,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,139,240,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,121,220,254,244,194,15,0,0,0,0,0,0,0,0,0,0,0,0,0,8,107,112,112,112,87,112,141,218,248,177,68,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,221,254,254,254,254,254,225,104,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,32,32,32,32,130,215,195,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,111,231,174,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,18,0,0,0,0,0,0,0,0,0,40,228,205,35,0,0,0,0,0,0,0,0,0,0,0,0,22,234,42,0,0,0,0,0,0,0,0,0,0,56,212,226,38,0,0,0,0,0,0,0,0,0,0,0,96,157,0,0,0,0,0,0,0,0,0,0,0,0,30,215,188,9,0,0,0,0,0,0,0,0,0,0,96,142,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,68,0,0,0,0,0,0,0,0,0,0,71,202,15,0,0,0,0,0,0,0,0,0,0,0,0,6,214,151,0,0,0,0,0,0,0,0,0,0,10,231,86,2,0,0,0,0,0,0,0,0,0,0,0,0,191,207,0,0,0,0,0,0,0,0,0,0,0,93,248,129,7,0,0,0,0,0,0,0,0,0,0,117,238,112,0,0,0,0,0,0,0,0,0,0,0,0,94,248,209,73,12,0,0,0,0,0,0,42,147,252,136,9,0,0,0,0,0,0,0,0,0,0,0,0,0,48,160,215,230,158,74,64,94,153,223,250,214,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,189,234,224,255,194,134,75,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,149,156,179,254,254,201,119,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,147,241,253,253,254,253,253,253,253,245,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,253,253,180,174,175,174,174,174,174,223,247,145,6,0,0,0,0,0,0,0,0,0,0,0,0,7,197,254,253,165,2,0,0,0,0,0,0,12,102,184,16,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,162,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,158,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,253,15,0,0,0,16,20,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,199,253,253,0,0,25,130,235,254,247,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,177,100,219,240,253,253,254,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,253,253,254,253,253,200,155,155,238,253,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,249,254,241,150,30,0,0,0,215,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,39,30,0,0,0,0,0,214,253,234,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,154,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,255,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,118,235,253,249,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,81,0,102,211,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,243,234,254,253,253,216,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,253,254,207,126,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,60,136,136,147,254,255,199,111,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,152,253,253,253,253,253,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,225,244,253,202,200,181,164,216,253,253,211,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,149,78,3,0,0,0,20,134,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,206,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,99,234,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,142,220,219,236,253,253,240,121,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,235,233,253,253,185,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,150,194,194,194,53,40,97,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,120,193,253,253,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,253,253,253,253,212,30,0,0,0,0,0,0,0,0,0,0,0,0,0,33,136,70,6,0,27,67,186,253,253,253,253,234,31,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,253,253,191,183,223,253,253,253,253,172,216,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,215,253,253,253,253,253,253,253,253,253,47,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,87,223,253,253,253,244,152,223,223,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,50,176,148,78,16,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,24,24,97,253,253,253,253,255,180,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,186,252,252,253,252,252,252,252,253,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,155,252,252,252,253,252,252,227,79,222,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,85,233,252,252,252,252,253,252,252,202,11,180,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,43,240,253,252,252,252,252,253,252,252,244,126,201,252,252,150,0,0,0,0,0,0,0,0,0,0,0,7,212,253,255,253,253,253,232,221,42,0,104,253,255,253,205,21,0,0,0,0,0,0,0,0,0,0,0,25,223,252,253,252,252,214,18,0,0,34,215,252,253,223,56,0,0,0,0,0,0,0,0,0,0,0,0,0,99,246,253,252,252,77,0,7,70,203,252,252,173,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,252,252,236,103,160,252,252,218,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,252,253,231,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,255,159,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,118,252,240,244,252,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,164,246,253,187,50,99,246,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,232,252,203,58,0,0,135,253,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,252,200,11,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,192,11,0,0,0,0,179,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,252,119,0,5,47,47,140,244,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,252,227,184,191,252,252,252,252,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,144,227,252,252,253,252,252,252,252,98,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,137,242,253,231,137,137,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,48,143,186,244,143,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,209,253,252,252,252,252,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,166,241,252,253,252,170,162,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,61,234,252,252,243,121,44,2,21,245,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,252,243,163,50,0,0,0,5,101,88,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,234,252,210,88,0,0,0,0,74,199,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,210,21,0,4,12,41,231,249,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,218,154,154,184,252,253,252,252,248,184,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,252,252,252,253,252,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,57,142,95,142,61,81,253,252,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,177,255,230,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,124,252,245,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,252,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,202,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,175,248,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,159,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,218,252,252,192,141,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,252,205,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,146,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,207,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,249,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,193,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,209,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,187,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,155,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,238,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,231,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,191,191,191,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,128,128,191,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,64,0,0,0,64,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,222,253,253,192,113,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,226,249,252,252,252,253,252,246,209,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,156,252,253,233,195,195,195,196,214,252,252,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,162,56,0,0,0,0,28,121,252,252,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,173,0,0,0,0,0,0,0,25,205,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,0,0,0,0,0,0,0,0,92,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,126,0,0,0,0,0,0,51,243,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,195,110,0,0,0,0,0,51,101,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,29,92,243,252,252,252,253,177,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,165,252,252,253,252,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,255,215,140,140,140,192,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,242,167,106,18,0,0,0,12,228,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,55,49,0,0,0,0,0,0,0,225,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,92,243,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,215,31,0,0,0,0,0,0,0,0,0,0,101,225,175,0,0,0,0,0,10,85,147,225,231,252,252,168,33,0,0,0,0,0,0,0,0,0,0,0,113,252,208,57,57,57,57,166,203,252,253,252,239,195,118,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,252,252,253,252,252,252,252,225,176,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,221,252,252,253,127,112,112,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,207,214,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,192,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,249,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,215,187,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,124,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,91,91,91,91,91,191,255,142,91,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,253,253,253,253,253,253,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,253,253,253,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,253,253,253,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,253,253,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,224,253,253,211,114,96,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,204,114,18,0,156,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,230,253,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,156,244,253,253,253,192,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,215,253,253,253,245,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,220,253,253,253,238,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,222,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,210,35,0,0,0,5,42,42,42,42,18,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,178,131,131,131,143,253,253,253,253,182,8,0,0,0,0,0,0,0,0,0,0,0,83,240,253,253,253,253,253,253,253,253,253,253,253,253,240,195,12,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,253,253,253,229,106,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,179,241,253,253,253,253,253,253,246,179,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,89,195,89,89,89,89,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,157,251,253,222,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,232,253,253,253,253,249,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,253,253,228,137,85,253,235,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,229,254,253,228,57,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,253,254,202,55,0,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,133,253,253,214,11,0,0,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,182,253,253,168,0,0,0,0,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,4,65,253,252,233,50,0,0,0,0,0,131,253,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,226,0,0,0,0,0,0,0,187,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,235,49,0,0,0,0,0,0,131,254,255,94,0,0,0,0,0,0,0,0,0,0,0,0,0,204,251,230,53,0,0,0,0,0,0,0,201,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,85,249,228,126,0,0,0,0,0,0,0,123,248,253,253,93,0,0,0,0,0,0,0,0,0,0,0,35,215,253,186,0,0,0,0,0,0,0,123,247,253,236,151,15,0,0,0,0,0,0,0,0,0,0,0,108,253,253,81,0,0,0,0,0,0,191,248,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,194,14,0,0,0,3,54,188,250,253,253,175,18,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,228,68,41,132,174,178,253,255,253,253,176,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,237,253,253,253,253,253,253,253,255,242,177,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,253,253,252,240,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,253,232,120,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,69,128,199,199,220,255,177,242,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,180,252,254,254,254,254,254,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,230,186,136,73,56,56,56,63,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,50,16,0,0,0,0,0,0,76,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,208,219,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,209,187,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,222,240,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,213,238,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,203,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,172,254,152,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,151,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,226,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,249,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,66,141,141,216,253,203,255,253,253,153,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,179,252,252,252,253,252,252,252,253,252,252,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,252,252,253,252,252,177,216,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,252,252,252,140,115,78,3,66,53,90,139,75,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,255,222,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,254,228,141,141,129,29,29,29,79,29,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,253,252,252,252,253,252,252,178,169,82,0,0,0,0,0,0,0,0,0,0,0,13,171,252,253,252,252,252,253,252,252,252,253,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,252,252,252,253,252,252,202,203,252,252,252,253,246,100,0,0,0,0,0,0,0,0,0,0,0,0,0,63,44,7,176,63,0,0,0,0,0,38,238,254,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,45,187,149,231,138,0,0,0,0,0,0,225,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,137,0,0,0,0,0,104,246,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,238,150,113,113,114,188,246,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,76,244,253,253,254,253,253,253,254,253,253,253,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,253,252,252,252,253,252,252,252,209,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,94,243,253,252,252,252,206,187,252,177,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,91,165,252,252,63,7,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,0,0,0,57,136,162,245,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,147,249,253,224,232,232,6,81,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,91,254,253,242,128,17,97,240,149,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,151,38,0,0,47,253,253,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,160,0,0,0,0,164,254,228,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,9,0,0,17,130,251,223,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,17,0,19,199,254,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,253,235,101,199,253,195,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,255,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,253,253,211,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,149,254,215,232,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,228,15,107,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,228,0,0,17,235,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,243,164,15,0,0,13,222,241,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,206,9,0,0,0,141,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,228,40,0,0,0,102,240,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,102,0,0,0,128,245,188,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,168,0,9,89,172,254,160,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,169,83,174,242,230,80,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,228,143,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,89,208,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,70,254,203,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,189,254,230,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,219,255,206,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,94,233,248,179,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,251,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,173,252,209,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,252,254,146,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,131,254,239,130,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,237,254,239,58,0,0,0,0,0,0,20,36,0,0,0,0,0,0,0,0,0,0,0,0,0,4,70,223,251,196,61,0,0,0,30,112,138,207,226,242,138,0,0,0,0,0,0,0,0,0,0,0,0,153,254,228,68,0,0,0,34,143,249,254,233,177,179,254,190,0,0,0,0,0,0,0,0,0,0,0,67,253,208,40,0,0,31,99,226,241,195,112,14,0,18,186,246,84,0,0,0,0,0,0,0,0,0,67,241,168,8,0,0,60,239,253,161,37,0,0,0,20,165,254,105,0,0,0,0,0,0,0,0,0,0,185,254,74,0,0,43,224,254,116,0,0,0,3,73,205,253,182,21,0,0,0,0,0,0,0,0,0,58,252,121,1,0,47,205,230,53,2,0,0,53,176,254,219,118,0,0,0,0,0,0,0,0,0,0,0,99,254,107,2,1,127,254,65,5,24,107,198,250,252,195,27,0,0,0,0,0,0,0,0,0,0,0,0,24,234,254,199,172,254,254,186,254,254,254,234,134,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,195,233,250,254,254,254,244,129,46,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,71,254,254,254,235,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,171,253,253,170,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,73,176,237,253,252,252,252,238,175,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,120,252,252,252,252,237,215,221,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,252,62,0,16,190,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,205,103,0,0,0,0,16,191,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,35,20,0,0,0,0,0,37,252,253,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,252,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,241,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,252,159,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,242,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,108,0,0,0,0,0,42,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,253,253,232,109,171,253,253,253,255,253,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,252,252,253,252,252,252,253,252,252,252,180,128,0,0,0,0,0,0,0,0,0,0,0,0,155,236,252,252,252,252,237,215,195,71,72,71,71,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,252,210,128,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,55,138,138,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,84,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,252,252,247,131,184,142,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,197,253,252,252,252,252,253,252,252,252,252,198,34,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,252,253,252,252,252,252,253,252,252,252,252,253,217,32,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,255,239,237,253,253,255,253,253,253,253,255,253,79,0,0,0,0,0,0,0,0,0,0,0,9,197,252,252,249,128,57,244,252,249,132,175,244,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,130,252,252,252,146,0,0,207,252,230,0,0,124,252,253,252,234,118,0,0,0,0,0,0,0,0,0,9,194,252,252,252,21,0,0,165,252,239,93,25,17,45,253,252,252,236,19,0,0,0,0,0,0,0,0,76,252,252,252,95,0,0,0,9,75,137,137,90,0,0,96,252,252,252,22,0,0,0,0,0,0,0,0,202,253,253,245,21,0,0,0,0,0,0,0,0,0,0,0,162,253,253,148,0,0,0,0,0,0,0,0,253,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,0,0,0,0,0,0,0,0,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,65,234,252,252,0,0,0,0,0,0,0,0,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,81,240,252,210,0,0,0,0,0,0,0,0,253,252,252,192,11,0,0,0,0,0,0,0,0,0,0,11,203,252,252,32,0,0,0,0,0,0,0,0,128,253,253,253,148,76,9,0,0,0,0,0,0,9,76,255,253,247,146,0,0,0,0,0,0,0,0,0,9,194,252,252,252,253,194,161,161,109,47,68,161,194,252,253,252,162,0,0,0,0,0,0,0,0,0,0,0,44,171,252,252,253,252,252,252,252,253,252,252,252,252,247,110,19,0,0,0,0,0,0,0,0,0,0,0,0,13,88,202,253,252,252,252,252,253,252,252,218,160,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,22,107,137,137,23,22,22,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,107,107,107,107,184,240,178,107,107,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,149,226,235,252,252,252,252,252,252,253,252,252,230,166,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,252,252,252,252,252,205,172,173,206,252,252,206,21,0,0,0,0,0,0,0,0,0,0,0,0,116,185,185,143,53,53,53,53,22,0,0,23,127,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,197,252,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,247,252,187,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,253,252,247,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,196,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,255,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,247,252,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,252,252,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,209,0,0,0,0,0,0,0,9,81,109,0,0,0,0,0,0,0,0,0,0,0,0,0,43,236,252,206,25,0,0,0,0,18,67,158,205,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,106,0,0,51,54,166,204,252,252,246,122,31,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,206,173,174,248,252,252,252,222,191,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,202,252,252,252,253,252,252,229,190,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,238,238,238,240,112,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,230,254,254,255,254,254,254,254,212,174,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,202,207,207,207,207,207,139,158,148,235,253,237,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,237,253,245,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,143,233,253,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,70,153,227,253,253,232,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,79,196,254,253,253,230,156,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,154,253,253,254,192,128,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,157,238,253,254,253,213,184,149,66,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,123,123,159,199,176,199,229,222,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,244,250,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,141,250,237,105,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,95,220,253,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,152,226,253,253,219,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,57,85,147,232,249,253,253,217,111,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,135,236,253,253,253,253,253,251,208,125,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,145,248,253,212,229,253,214,199,106,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,192,176,50,6,13,46,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,220,251,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,254,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,255,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,245,254,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,235,255,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,134,0,0,0,0,24,79,133,42,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,219,31,2,89,172,228,254,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,236,254,254,245,240,254,254,254,254,254,254,239,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,254,254,254,254,254,254,254,254,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,185,254,254,254,254,254,254,254,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,254,254,254,254,254,218,113,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,254,254,254,219,36,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,242,254,254,190,67,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,218,254,254,163,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,254,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,253,254,236,111,238,253,238,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,253,235,26,19,0,227,253,245,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,230,23,0,0,47,241,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,244,250,105,0,0,59,229,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,235,1,27,115,248,253,253,248,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,249,194,253,254,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,196,244,211,156,223,253,253,208,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,250,254,161,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,164,253,235,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,212,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,148,253,245,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,251,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,243,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,230,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,141,225,186,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,61,223,254,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,140,254,254,254,254,254,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,254,254,254,254,254,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,139,254,254,254,241,152,207,254,254,216,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,248,136,31,0,51,248,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,254,50,0,86,149,142,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,234,27,0,101,254,254,254,254,222,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,147,83,188,254,254,254,251,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,254,254,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,176,249,254,254,254,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,118,82,115,254,254,196,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,247,254,222,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,200,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,254,247,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,239,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,212,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,128,0,0,0,0,0,0,128,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,191,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,191,0,64,128,255,255,191,128,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,140,193,255,254,254,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,147,246,254,254,254,133,223,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,153,250,254,250,171,56,26,3,147,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,213,57,0,0,0,90,248,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,250,248,106,10,0,0,0,77,223,250,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,195,0,0,0,9,127,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,195,0,0,73,231,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,253,30,113,253,254,206,41,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,239,251,250,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,221,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,182,253,232,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,66,239,241,92,38,241,224,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,148,253,211,23,0,0,223,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,145,242,127,0,0,0,0,223,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,241,129,0,0,0,0,0,223,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,185,0,0,0,0,0,54,251,206,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,161,0,0,0,0,12,183,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,227,69,0,1,57,218,254,214,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,245,184,139,254,254,221,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,164,235,254,254,165,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,233,255,166,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,236,249,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,240,238,130,7,177,239,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,209,248,91,0,0,17,244,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,129,0,0,0,0,173,205,176,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,202,254,31,0,0,0,0,77,244,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,148,1,0,0,0,0,0,119,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,62,0,0,0,0,0,0,123,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,222,4,0,0,0,0,0,49,235,242,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,191,0,0,0,0,0,77,247,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,172,0,0,0,14,143,246,210,209,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,191,0,0,61,217,254,192,23,146,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,251,172,232,251,223,109,7,0,165,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,125,177,196,123,15,0,0,0,165,217,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,229,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,250,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,244,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,131,42,0,0,0,0,0,0,0,0,0,174,198,3,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,141,0,0,0,0,0,0,0,0,12,180,190,3,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,90,0,0,0,0,0,0,0,50,242,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,4,171,250,184,0,0,0,0,0,0,0,10,233,243,62,0,0,0,0,0,0,0,0,0,0,0,0,0,16,209,238,50,0,0,0,0,0,0,0,100,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,233,41,0,0,0,0,0,0,60,198,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,26,173,254,254,195,168,168,168,168,128,106,182,254,254,216,8,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,254,254,254,254,254,254,254,254,254,254,255,232,10,0,0,0,0,0,0,0,0,0,0,0,75,224,254,254,254,254,254,213,198,198,216,254,254,254,151,42,0,0,0,0,0,0,0,0,0,0,0,4,77,254,254,254,244,167,68,18,0,0,73,234,232,143,7,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,244,94,0,0,0,0,0,206,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,2,172,254,254,209,93,0,0,0,0,0,59,220,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,2,159,254,247,68,0,0,0,0,0,0,99,254,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,4,195,239,39,0,0,0,0,0,0,58,224,215,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,95,0,0,0,0,0,0,23,198,254,225,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,224,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,248,254,186,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,143,254,224,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,220,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,93,245,181,76,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,132,240,254,254,254,254,254,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,197,254,254,248,225,140,75,237,254,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,196,254,254,232,49,0,0,0,215,253,164,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,238,254,254,185,34,0,0,0,12,16,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,238,254,252,191,29,0,0,0,32,218,239,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,254,254,124,0,0,0,0,6,207,254,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,196,13,0,0,0,7,160,254,254,254,246,14,0,0,0,0,0,0,0,0,0,0,0,0,0,23,221,254,162,9,0,0,45,200,254,254,254,233,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,230,254,192,209,209,246,254,254,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,187,254,254,254,254,254,254,254,135,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,112,115,228,254,254,254,182,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,254,254,211,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,180,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,233,254,208,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,243,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,225,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,149,226,226,191,94,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,204,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,249,252,252,252,252,252,246,200,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,198,86,66,66,157,232,252,147,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,235,252,152,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,13,0,0,0,0,0,17,13,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,26,252,253,151,146,146,146,146,146,213,196,252,0,0,0,0,0,0,0,0,0,0,0,0,0,99,196,208,252,252,253,252,252,252,252,252,252,252,245,119,0,0,0,0,0,0,0,0,0,0,0,102,226,253,253,253,253,253,255,253,253,253,158,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,250,252,252,157,38,252,252,253,24,13,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,249,252,252,154,8,77,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,195,11,77,238,252,252,110,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,80,50,194,252,248,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,246,252,200,235,252,246,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,246,252,252,245,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,162,191,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,193,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,247,240,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,236,243,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,205,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,251,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,235,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,255,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,239,111,175,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,243,254,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,240,254,238,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,201,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,218,191,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,219,253,253,253,253,114,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,253,253,253,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,236,228,195,141,228,249,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,99,29,0,0,0,0,125,249,215,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,181,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,14,0,76,174,201,253,234,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,199,120,237,253,253,233,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,201,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,149,202,253,253,253,160,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,55,92,202,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,219,235,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,181,188,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,34,0,0,0,0,0,0,0,0,94,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,194,201,0,0,0,0,0,0,0,0,94,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,164,250,78,0,0,0,0,0,0,0,94,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,242,150,88,0,0,55,91,112,225,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,210,253,253,251,242,59,159,227,253,210,87,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,249,216,90,66,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,200,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,0,0,0,96,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,210,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,126,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,252,214,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,242,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,232,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,148,25,0,0,0,0,47,253,246,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,98,0,0,0,0,191,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,226,16,0,0,0,16,230,244,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,244,242,70,0,0,0,0,155,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,254,135,0,0,0,0,18,230,242,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,188,14,0,0,0,0,125,255,186,4,53,110,0,0,0,0,0,0,0,0,0,0,0,0,0,53,247,254,69,6,0,0,0,7,213,254,181,223,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,254,254,221,216,216,203,206,254,254,254,237,115,11,0,0,0,0,0,0,0,0,0,0,0,0,88,252,254,219,215,223,254,254,254,254,254,186,63,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,255,148,4,0,10,47,47,79,255,250,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,147,4,0,0,0,0,0,148,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,216,255,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,240,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,117,236,232,117,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,165,244,249,244,244,253,242,73,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,195,254,230,39,0,0,150,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,73,0,0,0,22,167,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,254,89,0,0,0,0,100,245,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,208,111,7,31,122,247,242,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,200,254,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,164,229,254,254,214,193,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,60,59,0,153,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,215,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,143,4,0,0,0,0,215,235,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,115,2,0,0,0,40,235,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,70,0,0,0,4,227,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,109,0,0,21,119,254,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,174,55,91,227,254,198,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,251,254,246,166,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,166,254,199,118,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,214,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,237,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,219,220,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,11,0,0,0,0,0,0,0,0,0,202,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,116,0,0,0,0,0,0,0,0,0,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,116,0,0,0,0,0,0,0,0,85,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,252,74,0,0,0,0,0,0,0,0,210,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,0,0,0,0,0,0,0,0,43,240,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,180,0,0,0,0,0,0,0,0,93,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,22,0,0,0,0,0,0,0,0,93,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,22,0,0,0,0,0,0,0,0,176,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,22,0,0,0,0,0,0,0,0,207,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,252,128,64,116,32,0,0,0,0,116,248,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,255,253,253,253,253,128,97,222,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,253,252,252,252,252,253,252,252,252,252,245,161,78,9,0,0,0,0,0,0,0,0,0,0,65,183,208,252,215,215,183,240,252,253,252,252,252,252,253,240,151,13,0,0,0,0,0,0,0,0,0,0,0,0,17,45,21,21,0,37,45,46,83,252,176,45,46,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,195,255,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,189,249,253,199,115,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,182,254,253,244,219,132,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,240,253,228,111,128,253,254,240,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,221,254,254,136,34,13,221,254,151,222,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,247,254,194,39,6,0,97,253,168,0,46,226,63,0,0,0,0,0,0,0,0,0,0,0,0,41,174,253,253,146,4,0,0,0,147,253,152,0,0,21,13,0,0,0,0,0,0,0,0,0,0,0,34,229,253,244,94,0,0,0,0,0,230,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,199,17,0,0,0,0,0,70,254,247,50,0,0,0,0,0,0,0,0,0,0,0,0,13,181,249,236,157,11,0,0,0,0,0,0,153,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,85,0,0,0,0,0,0,0,0,170,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,203,68,0,0,0,0,0,0,0,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,216,254,254,254,178,161,162,78,38,51,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,90,173,232,253,253,254,253,243,247,254,253,192,47,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,54,137,138,137,213,246,254,253,253,253,241,207,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,236,160,228,254,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,148,0,0,0,85,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,29,29,29,107,29,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,140,227,252,252,253,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,255,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,27,27,27,27,27,74,233,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,234,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,253,252,220,75,25,57,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,252,253,252,252,252,205,253,177,169,169,169,108,29,29,29,13,0,0,0,0,0,0,0,0,0,0,135,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,252,189,0,0,0,0,0,0,0,0,0,0,135,253,253,255,253,253,253,253,255,253,253,253,253,255,253,253,240,63,0,0,0,0,0,0,0,0,0,0,6,122,167,27,27,27,27,27,27,27,27,27,27,27,27,27,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,112,228,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,253,253,192,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,238,253,244,127,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,116,254,253,218,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,181,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,231,253,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,231,253,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,253,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,222,254,253,198,145,81,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,253,253,253,253,243,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,254,249,235,242,253,254,241,186,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,254,198,0,31,136,254,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,134,0,0,0,170,254,254,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,198,0,0,0,31,243,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,245,89,0,0,0,190,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,190,254,253,245,193,109,110,224,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,189,253,253,253,253,254,253,253,175,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,142,227,255,254,254,254,238,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,222,183,183,156,120,102,114,219,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,0,0,0,0,0,31,233,232,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,224,210,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,123,250,195,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,36,194,243,116,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,149,253,245,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,67,238,246,205,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,133,253,210,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,213,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,254,254,223,167,112,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,51,96,96,128,183,229,253,224,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,126,227,244,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,172,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,53,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,67,0,0,0,0,0,0,0,0,62,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,201,78,10,0,0,0,0,0,90,226,219,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,222,147,97,67,97,150,248,196,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,118,202,253,253,254,228,115,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,132,219,253,253,253,253,253,255,242,58,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,252,252,252,252,252,253,252,252,180,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,216,124,96,141,216,216,159,219,252,252,229,123,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,8,158,236,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,179,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,177,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,207,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,158,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,156,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,143,177,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,218,250,155,107,127,155,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,210,171,246,254,254,254,240,222,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,209,254,254,200,90,90,90,46,141,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,245,254,255,195,46,0,0,0,0,127,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,213,103,2,0,0,0,0,0,32,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,243,199,17,0,0,0,0,2,86,204,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,157,19,0,0,0,0,0,11,226,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,183,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,245,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,182,253,43,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,226,186,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,214,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,207,215,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,88,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,131,249,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,204,209,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,235,244,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,228,156,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,200,184,67,0,0,0,0,0,0,113,238,222,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,144,0,0,0,0,3,164,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,103,0,0,0,0,49,254,254,184,41,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,6,0,0,0,0,145,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,6,0,0,0,4,160,254,240,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,177,254,254,6,0,0,0,28,254,254,151,0,0,33,140,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,187,3,0,0,0,100,254,254,80,0,33,218,234,0,0,0,0,0,0,0,0,0,0,0,34,217,254,248,70,0,0,0,0,166,254,254,249,249,250,254,173,0,0,0,0,0,0,0,0,0,0,35,139,254,254,246,44,89,91,91,191,245,254,254,254,254,254,168,10,0,0,0,0,0,0,0,0,0,0,209,254,254,254,254,230,253,254,254,254,254,254,254,189,140,48,14,0,0,0,0,0,0,0,0,0,0,0,209,254,254,254,254,254,254,254,215,242,254,249,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,130,227,227,219,89,89,89,62,231,255,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,237,254,212,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,159,217,180,172,120,91,91,91,91,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,167,155,179,184,238,238,254,254,226,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,33,0,0,0,0,5,68,217,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,33,0,0,0,0,0,25,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,33,0,0,0,0,0,25,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,146,6,0,0,0,0,0,41,237,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,255,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,243,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,247,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,230,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,105,234,131,131,40,7,7,7,7,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,254,254,254,254,254,254,254,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,254,254,254,254,254,254,254,254,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,24,211,254,251,147,105,105,105,138,229,229,229,239,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,202,0,0,0,0,0,0,0,0,37,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,162,254,249,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,254,223,0,0,0,36,141,174,174,174,174,68,31,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,254,230,29,138,181,233,254,254,254,254,254,254,177,33,0,0,0,0,0,0,0,0,0,0,0,0,10,227,254,254,221,254,254,254,254,254,254,254,254,254,254,174,5,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,254,254,206,155,62,62,62,105,245,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,14,187,254,243,158,55,16,0,0,0,0,0,218,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,5,49,42,0,0,0,0,0,0,0,0,118,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,64,126,0,0,0,0,0,0,0,0,0,62,244,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,149,235,35,0,0,0,0,0,0,0,0,0,224,254,239,10,0,0,0,0,0,0,0,0,0,0,0,0,149,254,156,34,0,0,0,0,0,0,0,0,224,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,239,145,107,29,0,0,34,107,152,252,255,254,12,0,0,0,0,0,0,0,0,0,0,0,0,2,95,214,254,254,254,242,237,237,243,254,254,254,254,205,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,214,254,254,254,254,254,254,254,254,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,94,130,130,191,191,130,130,130,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,255,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,218,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,231,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,230,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,198,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,252,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,178,253,255,253,165,141,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,252,247,234,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,127,50,38,94,205,253,190,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,177,3,0,0,0,13,103,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,247,50,0,0,0,0,0,104,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,101,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,67,246,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,196,0,0,0,26,210,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,165,28,4,179,253,253,254,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,252,252,215,179,252,252,227,253,252,187,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,224,252,252,253,252,186,43,165,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,65,139,140,115,6,0,141,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,207,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,255,254,151,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,191,253,253,253,167,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,134,237,253,253,253,253,253,244,91,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,117,113,239,253,253,202,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,129,223,253,251,148,34,1,0,67,209,245,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,158,0,0,0,0,0,0,211,253,244,77,0,0,0,0,0,0,0,0,0,0,0,0,15,187,253,253,242,62,0,0,0,0,0,0,71,253,253,166,9,0,0,0,0,0,0,0,0,0,0,26,187,253,253,242,87,0,0,0,0,0,0,0,36,253,253,253,78,0,0,0,0,0,0,0,0,0,0,62,253,253,248,97,0,0,0,0,0,0,0,0,34,248,253,249,75,0,0,0,0,0,0,0,0,0,0,123,253,253,130,0,0,0,0,0,0,0,0,0,13,162,253,156,0,0,0,0,0,0,0,0,0,0,105,247,253,224,45,0,0,0,0,0,0,0,0,0,36,253,253,156,0,0,0,0,0,0,0,0,0,77,250,253,253,160,0,0,0,0,0,0,0,0,0,0,206,253,253,156,0,0,0,0,0,0,0,0,0,80,253,253,253,34,0,0,0,0,0,0,0,0,0,0,211,253,253,156,0,0,0,0,0,0,0,0,0,80,253,253,155,11,0,0,0,0,0,0,0,0,0,28,219,253,200,16,0,0,0,0,0,0,0,0,0,80,253,253,253,34,0,0,0,0,0,0,0,0,28,195,253,253,60,0,0,0,0,0,0,0,0,0,0,80,253,253,253,186,19,0,0,0,0,0,35,36,202,253,253,237,52,0,0,0,0,0,0,0,0,0,0,44,210,253,253,253,185,115,115,115,115,115,249,253,253,253,157,77,0,0,0,0,0,0,0,0,0,0,0,0,38,107,253,253,253,253,253,253,253,253,253,253,237,144,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,210,253,253,253,253,253,253,253,226,156,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,108,253,253,253,247,78,78,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,105,193,123,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,194,239,203,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,93,1,23,201,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,30,0,0,36,245,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,85,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,224,155,26,0,0,153,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,209,182,239,247,181,247,128,16,16,16,8,0,6,16,3,0,0,0,0,0,0,0,0,0,0,0,0,62,216,126,138,235,254,217,232,254,254,255,224,193,215,254,202,193,193,176,93,0,0,0,0,0,0,0,0,0,68,159,192,180,97,3,17,38,38,38,38,83,87,38,38,38,38,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,37,115,128,128,102,37,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,254,253,207,128,44,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,227,162,162,194,189,168,207,253,253,233,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,181,255,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,254,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,232,254,201,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,131,254,254,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,102,218,250,247,177,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,253,254,249,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,243,253,253,254,218,91,20,0,0,0,0,0,0,27,72,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,254,255,254,254,254,254,255,254,254,254,254,255,254,254,254,228,0,0,0,0,0,0,0,0,0,4,63,202,253,254,253,253,253,253,254,253,206,198,198,140,108,108,102,12,0,0,0,0,0,0,0,0,0,0,0,16,36,36,36,36,36,36,36,36,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,166,253,156,148,148,43,43,43,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,252,252,252,253,252,252,211,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,253,252,136,196,240,253,252,252,252,252,216,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,227,252,21,0,35,102,189,189,231,252,253,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,42,4,0,0,0,0,0,28,218,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,253,254,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,252,252,239,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,66,145,239,252,252,252,83,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,252,253,252,252,252,252,253,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,253,173,191,217,252,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,62,0,0,0,0,45,237,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,246,253,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,218,253,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,164,247,252,252,151,16,0,0,0,0,0,0,0,0,0,0,0,0,0,82,161,83,128,127,135,232,232,253,252,252,238,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,252,252,252,253,231,136,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,252,252,253,252,252,226,147,129,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,79,160,215,238,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,218,251,253,253,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,89,185,248,253,235,167,53,114,244,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,221,248,253,181,53,18,0,0,0,98,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,253,224,86,10,0,0,0,63,192,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,224,72,0,0,13,63,177,250,253,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,216,114,114,177,219,254,253,253,253,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,253,254,253,253,231,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,112,156,91,70,168,254,253,229,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,230,254,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,153,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,249,253,232,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,203,253,251,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,232,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,211,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,196,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,186,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,219,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,237,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,211,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,219,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,211,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,230,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,128,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,253,254,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,138,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,255,253,255,196,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,196,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,91,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,97,148,108,199,253,229,180,180,180,180,48,17,13,0,0,0,0,0,0,0,0,0,0,0,0,7,107,221,253,253,253,253,253,253,253,253,253,253,253,253,220,107,107,38,0,0,0,0,0,0,0,0,12,48,253,253,253,225,220,228,253,242,221,253,253,253,253,253,253,253,253,111,0,0,0,0,0,0,0,0,170,253,253,237,129,21,0,34,129,88,5,129,129,186,253,253,253,253,253,173,0,0,0,0,0,0,0,0,254,253,253,188,0,0,0,0,0,0,0,0,0,18,40,40,40,40,40,14,0,0,0,0,0,0,0,0,254,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,229,253,252,246,214,83,83,83,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,248,253,253,253,253,253,253,174,61,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,167,253,253,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,65,97,228,228,243,253,253,228,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,175,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,250,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,241,253,253,166,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,148,175,253,253,248,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,164,239,253,253,207,179,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,89,89,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,78,112,195,241,164,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,141,244,205,131,248,253,253,253,253,243,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,236,253,253,253,253,253,253,253,253,253,253,236,48,0,0,0,0,0,0,0,0,0,0,0,0,36,206,249,253,253,253,232,68,32,32,32,32,49,253,253,237,0,0,0,0,0,0,0,0,0,0,0,36,150,253,253,253,253,187,63,0,0,0,0,0,3,160,253,253,0,0,0,0,0,0,0,0,0,0,35,218,253,253,213,253,231,40,0,0,0,0,0,0,17,234,253,253,0,0,0,0,0,0,0,0,0,34,151,253,253,143,69,218,63,0,0,0,0,0,0,0,125,253,253,149,0,0,0,0,0,0,0,0,0,151,253,253,144,8,0,30,0,0,0,0,0,0,0,54,230,253,147,28,0,0,0,0,0,0,0,0,124,252,253,145,7,0,0,0,0,0,0,0,0,0,38,179,253,250,90,0,0,0,0,0,0,0,0,0,254,253,253,19,0,0,0,0,0,0,0,0,0,29,228,253,249,124,0,0,0,0,0,0,0,0,0,0,255,253,196,9,0,0,0,0,0,0,0,0,9,145,253,253,210,0,0,0,0,0,0,0,0,0,0,0,254,253,253,19,0,0,0,0,0,0,0,29,145,253,253,215,35,0,0,0,0,0,0,0,0,0,0,0,238,253,253,169,46,33,22,0,10,33,130,228,253,253,215,35,0,0,0,0,0,0,0,0,0,0,0,0,48,236,253,253,253,253,221,156,184,253,253,253,253,215,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,242,253,253,253,253,253,253,253,253,239,143,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,110,227,240,240,240,240,206,110,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,64,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,191,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,128,64,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,128,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,128,191,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,128,255,253,253,203,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,82,234,252,253,252,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,214,156,56,94,243,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,177,52,15,0,0,0,125,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,179,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,222,253,252,196,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,246,252,253,252,252,228,214,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,225,175,114,188,235,253,254,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,203,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,95,119,0,38,144,243,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,198,234,252,252,156,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,177,252,253,252,214,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,235,253,231,0,0,0,0,0,0,0,0,24,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,129,0,0,0,0,0,0,0,0,166,232,36,0,0,0,0,0,0,0,0,0,0,0,0,40,237,253,253,41,0,0,0,0,0,0,0,23,231,253,53,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,166,2,0,0,0,0,0,0,0,127,253,200,10,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,241,10,0,0,0,0,0,0,5,192,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,53,252,253,253,125,0,0,0,0,0,0,12,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,196,11,0,0,0,0,0,23,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,205,253,253,190,16,0,0,0,0,130,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,247,253,253,205,95,14,0,27,214,253,220,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,209,96,155,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,101,253,253,253,253,253,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,130,116,253,253,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,61,41,233,253,253,224,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,218,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,246,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,245,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,253,242,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,113,183,174,253,193,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,190,183,252,252,252,252,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,237,252,253,252,252,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,158,252,252,253,231,189,119,128,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,199,252,252,164,104,54,0,0,0,165,217,110,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,165,0,0,0,0,0,166,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,129,128,78,0,116,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,253,252,251,232,249,253,252,252,141,4,0,0,0,0,0,0,0,0,0,0,0,0,0,14,163,247,252,252,253,252,252,252,252,253,252,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,103,235,253,252,252,252,252,253,252,252,198,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,27,216,253,253,255,253,253,253,253,175,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,186,205,252,252,252,253,170,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,16,118,196,249,253,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,62,0,0,0,115,253,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,150,0,0,0,0,165,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,253,255,174,12,0,0,61,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,253,252,195,190,146,227,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,161,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,156,252,252,252,252,253,252,141,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,77,200,252,252,253,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,198,167,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,203,254,255,254,165,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,232,75,249,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,71,0,50,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,245,199,0,0,0,213,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,245,51,0,0,0,107,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,225,236,0,0,0,0,34,242,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,163,0,0,0,0,0,222,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,59,0,0,0,0,0,137,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,227,0,0,0,0,0,0,35,242,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,240,201,0,0,0,0,0,0,0,220,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,139,0,0,0,0,0,0,0,219,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,139,0,0,0,0,0,0,0,219,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,139,0,0,0,0,0,0,11,226,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,110,0,0,0,0,0,0,114,246,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,151,0,0,0,0,0,42,240,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,210,227,0,0,0,0,17,221,221,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,59,0,0,46,228,216,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,249,184,184,254,221,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,172,254,193,139,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,88,156,253,161,35,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,88,206,252,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,146,202,253,252,230,96,96,215,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,241,252,252,253,213,72,0,0,193,252,220,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,223,129,31,0,0,15,207,252,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,60,60,31,0,0,0,0,152,252,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,239,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,252,224,58,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,187,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,121,242,247,252,252,194,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,252,243,253,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,250,229,223,98,37,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,5,0,0,37,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,7,73,73,21,0,0,0,0,0,0,7,184,252,206,14,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,218,170,16,0,0,0,0,123,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,252,48,84,148,217,218,237,252,164,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,211,252,252,252,233,249,252,252,253,242,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,131,218,252,252,252,252,194,69,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,226,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,114,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,57,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,57,198,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,255,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,114,86,86,29,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,45,222,211,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,230,253,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,85,0,0,0,0,0,0,74,116,116,116,231,157,32,0,0,0,0,0,0,0,0,0,0,24,212,253,161,0,0,0,0,0,0,139,212,253,253,253,255,253,253,117,13,0,0,0,0,0,0,0,0,138,252,252,87,0,0,0,0,81,161,253,252,252,252,252,228,214,252,252,137,0,0,0,0,0,0,0,0,138,252,252,45,0,0,0,83,240,252,253,252,202,89,69,32,47,252,252,221,0,0,0,0,0,0,0,0,233,252,252,45,0,0,38,240,252,252,245,87,13,0,0,9,174,252,252,210,0,0,0,0,0,0,0,0,148,252,252,45,0,22,234,252,252,252,21,0,0,0,158,233,252,252,252,137,0,0,0,0,0,0,0,0,139,253,253,159,86,45,253,253,253,44,24,97,170,253,253,255,253,247,94,0,0,0,0,0,0,0,0,0,61,236,252,252,252,253,252,252,252,252,253,252,252,252,252,249,185,67,0,0,0,0,0,0,0,0,0,0,0,65,202,252,252,253,252,252,252,252,253,252,252,252,189,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,45,150,253,252,252,252,252,253,193,128,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,137,137,137,32,23,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,0,57,141,253,255,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,197,251,169,224,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,254,253,254,253,254,253,254,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,254,253,226,168,254,253,254,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,56,0,139,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,168,0,0,0,0,0,0,0,0,0,29,85,85,85,254,253,254,253,254,139,85,85,141,253,254,253,254,253,169,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,251,253,251,253,251,253,251,253,251,253,251,56,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,253,251,253,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,111,241,255,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,253,227,156,175,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,253,254,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,253,252,252,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,244,93,122,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,252,151,25,76,210,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,253,53,154,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,252,252,252,253,252,252,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,165,252,202,140,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,250,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,218,7,0,0,0,0,0,0,4,127,254,226,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,104,0,0,0,0,0,0,39,240,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,104,0,0,0,0,0,5,201,253,204,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,222,253,82,0,0,0,0,0,124,254,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,248,196,7,0,0,0,0,84,250,254,134,2,0,0,0,0,0,0,0,0,0,0,0,0,0,15,162,255,254,196,7,0,4,131,157,236,254,172,14,0,0,0,0,0,0,0,0,0,0,0,0,0,44,190,253,247,193,250,219,209,215,253,253,253,196,14,0,0,0,0,0,0,0,0,0,0,0,0,7,95,244,253,218,79,0,67,163,163,218,253,253,233,46,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,250,116,7,0,0,0,0,0,179,253,246,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,213,58,0,0,0,0,0,0,23,254,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,255,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,248,220,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,216,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,248,128,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,254,236,138,29,29,29,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,248,163,250,254,254,254,254,236,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,235,0,4,46,129,228,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,24,13,0,0,21,244,254,235,0,0,0,0,140,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,235,0,0,0,0,209,254,230,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,235,0,0,0,131,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,155,0,0,7,210,254,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,231,254,108,0,0,83,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,14,3,0,0,202,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,15,15,106,228,254,254,217,180,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,254,254,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,195,225,254,254,254,254,254,242,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,244,254,254,176,53,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,248,254,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,236,255,254,82,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,249,170,20,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,203,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,211,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,128,128,64,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,44,116,116,133,197,197,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,197,205,205,206,205,241,254,254,254,254,230,213,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,254,254,254,249,204,191,107,41,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,238,254,190,33,33,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,215,254,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,237,254,254,206,171,251,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,231,230,75,0,0,159,247,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,59,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,55,0,0,0,0,0,0,0,125,255,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,181,30,0,0,0,0,30,108,252,243,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,156,124,124,124,168,249,254,227,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,241,254,254,254,254,225,130,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,115,115,99,33,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,69,0,0,0,0,0,198,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,245,17,0,0,0,55,243,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,51,0,0,0,170,253,242,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,253,219,0,0,0,34,254,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,254,254,228,0,0,0,151,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,214,254,253,244,86,47,47,55,222,254,253,54,0,0,0,5,13,0,0,0,0,0,0,0,0,32,166,245,253,254,253,253,253,254,253,253,253,254,253,173,149,208,207,212,77,0,0,0,0,0,0,0,0,136,253,253,253,254,253,253,253,254,253,253,253,254,253,253,253,254,253,253,128,0,0,0,0,0,0,0,0,104,254,254,254,185,184,184,184,185,248,254,254,210,184,210,184,185,134,51,0,0,0,0,0,0,0,0,0,7,140,73,23,0,0,0,0,38,243,253,253,42,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,255,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,244,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,253,255,159,55,138,191,128,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,228,252,210,232,252,252,252,252,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,210,12,138,240,151,69,69,169,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,22,138,164,0,0,0,138,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,190,252,75,13,8,0,0,53,243,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,0,0,7,66,243,252,157,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,252,74,9,155,252,252,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,163,197,252,227,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,244,253,252,185,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,250,253,210,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,138,253,232,255,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,172,8,180,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,240,151,13,0,138,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,112,0,0,0,138,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,128,8,0,0,0,243,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,190,0,0,0,0,179,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,117,0,0,13,89,244,249,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,54,0,45,172,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,232,208,236,252,176,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,137,137,253,178,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,82,238,255,239,171,153,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,138,254,254,254,254,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,254,241,158,158,158,104,233,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,252,124,0,0,0,0,33,209,67,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,224,0,0,0,0,0,0,115,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,197,0,0,0,0,0,32,217,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,228,7,0,0,31,129,227,254,246,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,200,184,200,227,254,254,227,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,121,233,254,254,247,223,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,46,46,38,155,254,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,211,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,248,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,228,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,250,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,228,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,201,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,150,254,255,176,129,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,237,254,254,254,254,254,223,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,254,212,96,67,109,224,254,251,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,101,81,3,0,0,0,32,242,254,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,249,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,218,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,241,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,210,230,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,73,73,73,49,14,187,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,246,235,254,188,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,252,192,197,254,254,254,254,184,25,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,167,0,82,254,223,91,120,186,186,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,211,94,222,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,210,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,105,254,255,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,134,68,165,216,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,163,0,0,133,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,209,14,0,0,133,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,169,0,0,0,133,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,95,0,0,0,133,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,141,0,0,42,199,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,228,152,178,238,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,197,225,225,187,228,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,236,56,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,213,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,229,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,125,23,64,163,189,150,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,238,249,253,254,253,127,0,0,114,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,69,241,253,176,94,127,127,244,171,3,133,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,164,8,0,0,0,164,219,132,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,14,218,253,195,12,0,0,0,0,113,253,253,253,228,37,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,0,0,0,0,0,131,215,254,254,228,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,0,0,47,35,152,254,253,253,249,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,245,253,218,185,248,240,253,254,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,254,246,179,119,100,254,253,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,227,163,53,11,0,181,254,233,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,212,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,245,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,230,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,243,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,216,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,221,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,188,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,108,187,187,174,150,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,223,230,169,85,69,89,149,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,228,68,0,0,0,0,0,0,188,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,202,24,0,0,0,0,0,0,0,104,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,68,0,0,0,0,0,0,0,0,109,132,61,77,0,0,0,0,0,0,0,0,0,0,0,0,0,43,255,79,0,0,0,0,0,0,66,149,247,248,245,164,12,0,0,0,0,0,0,0,0,0,0,0,0,2,65,241,101,1,36,86,147,230,250,174,193,57,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,216,182,254,147,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,237,137,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,122,20,122,221,92,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,19,0,0,84,246,127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,181,0,0,0,0,41,197,204,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,204,3,0,0,0,0,4,142,250,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,178,91,0,0,0,0,0,0,63,245,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,176,0,0,0,0,0,0,0,59,231,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,250,69,0,0,0,0,0,0,0,148,230,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,205,46,0,0,0,0,0,0,27,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,195,230,47,0,0,0,0,0,8,217,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,120,207,188,150,126,70,48,170,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,55,93,168,173,228,182,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,122,196,254,255,187,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,105,241,254,252,196,224,253,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,162,254,247,99,47,0,0,109,244,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,184,254,180,36,0,0,0,0,0,212,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,183,10,0,0,0,0,0,0,114,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,231,236,36,0,0,0,0,0,0,0,72,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,145,0,0,0,0,0,0,0,0,137,226,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,163,124,57,77,10,42,81,128,194,245,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,222,254,254,254,254,243,222,202,155,174,254,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,74,113,113,105,42,0,0,0,178,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,174,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,242,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,227,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,255,220,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,198,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,207,7,0,0,0,0,0,0,0,0,0,0,10,133,184,32,0,0,0,0,0,0,0,0,0,0,0,246,215,10,0,0,0,0,0,0,0,0,0,24,178,254,254,151,0,0,0,0,0,0,0,0,0,0,0,246,254,26,0,0,0,0,0,0,0,0,22,210,254,150,236,248,79,0,0,0,0,0,0,0,0,0,0,161,254,84,0,0,0,0,0,0,0,0,177,254,96,0,175,255,157,0,0,0,0,0,0,0,0,0,0,27,243,231,22,0,0,0,0,0,0,93,253,166,13,0,90,254,212,0,0,0,0,0,0,0,0,0,0,0,194,254,148,11,0,0,0,0,0,158,254,93,0,0,2,197,245,0,0,0,0,0,0,0,0,0,0,0,28,240,254,118,48,0,0,0,0,206,254,26,28,96,149,248,147,0,0,0,0,0,0,0,0,0,0,0,0,128,248,254,250,183,131,131,190,253,254,223,237,254,225,86,10,0,0,0,0,0,0,0,0,0,0,0,0,0,53,208,254,254,254,254,254,254,254,222,173,89,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,52,52,52,52,145,254,205,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,242,239,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,170,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,198,170,255,255,255,255,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,170,170,170,86,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,57,0,57,141,114,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,114,226,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,255,226,114,86,86,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,141,29,0,0,0,29,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,86,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,57,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,29,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,29,0,0,0,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,0,0,0,0,0,0,114,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,141,0,0,0,0,0,0,198,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,29,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,198,170,170,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,226,255,255,198,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,166,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,242,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,22,128,246,252,250,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,236,145,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,244,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,236,254,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,232,252,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,136,251,252,146,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,252,183,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,199,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,239,17,0,0,0,0,0,0,0,8,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,242,239,68,0,0,0,0,0,0,57,128,201,205,16,0,0,0,0,0,0,0,0,0,0,0,0,11,211,252,149,0,0,0,0,0,0,82,246,252,253,252,127,0,0,0,0,0,0,0,0,0,0,0,0,48,252,182,0,0,0,0,27,82,90,237,236,101,138,252,205,0,0,0,0,0,0,0,0,0,0,0,0,215,252,103,0,0,0,0,106,253,252,146,31,132,236,252,38,0,0,0,0,0,0,0,0,0,0,0,0,233,253,42,0,0,0,29,175,255,218,113,253,253,255,186,9,0,0,0,0,0,0,0,0,0,0,0,0,232,252,156,86,85,94,232,252,253,252,252,252,252,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,252,253,252,252,252,252,253,252,251,205,82,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,196,252,253,252,252,252,252,216,189,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,129,253,252,252,182,59,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,195,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,52,0,0,0,0,15,54,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,199,2,0,0,0,0,185,247,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,235,193,0,0,0,0,0,221,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,254,131,0,0,0,0,10,228,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,243,34,0,0,0,0,42,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,210,0,0,0,0,0,76,254,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,127,0,0,0,0,0,136,254,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,68,0,0,0,0,0,194,231,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,251,38,0,0,0,0,3,203,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,128,65,115,141,206,219,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,200,254,251,239,205,143,75,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,61,46,0,0,0,28,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,208,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,249,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,225,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,204,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,240,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,201,245,61,65,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,247,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,132,0,0,0,71,223,225,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,127,0,0,76,250,253,250,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,127,0,40,234,246,253,232,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,127,0,155,254,227,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,228,93,254,255,254,243,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,217,253,247,253,254,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,176,253,253,230,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,203,112,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,26,37,37,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,118,214,233,253,253,252,187,105,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,27,229,253,240,227,221,149,227,227,248,242,161,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,228,78,38,0,0,0,0,0,144,222,253,200,21,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,219,28,0,0,0,0,0,0,0,35,213,253,232,29,0,0,0,0,0,0,0,0,0,0,0,0,0,33,4,0,0,0,0,0,0,0,0,0,0,145,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,0,0,0,0,0,0,31,252,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,150,156,103,192,207,156,156,156,73,23,0,0,182,253,83,0,0,0,0,0,0,0,0,0,0,0,0,116,252,253,243,155,201,253,253,253,253,224,166,112,239,245,51,0,0,0,0,0,0,0,0,0,0,0,148,253,215,32,4,0,2,5,5,69,191,253,253,253,253,245,65,0,0,0,0,0,0,0,0,0,0,0,229,221,32,0,0,0,0,0,0,0,0,61,207,253,253,253,237,142,0,0,0,0,0,0,0,0,0,0,255,160,0,0,0,0,0,0,0,0,25,193,250,224,119,212,243,253,215,93,0,0,0,0,0,0,0,0,180,227,125,21,0,0,0,0,2,142,239,253,158,34,0,0,49,196,253,253,0,0,0,0,0,0,0,0,100,253,253,235,188,0,19,90,212,249,233,72,7,0,0,0,0,16,195,190,0,0,0,0,0,0,0,0,16,163,87,83,18,105,133,160,83,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,143,254,253,253,76,106,230,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,233,252,253,252,252,219,252,252,246,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,200,236,252,252,197,222,252,252,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,204,250,252,239,196,92,137,216,252,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,22,206,252,252,252,151,165,241,253,252,252,252,252,123,8,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,252,252,252,252,252,253,252,252,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,241,241,241,241,241,208,131,71,186,252,251,145,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,252,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,177,255,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,194,252,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,226,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,238,252,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,157,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,251,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,255,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,250,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,226,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,239,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,92,166,253,253,255,253,253,153,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,57,194,253,252,252,252,253,252,252,252,207,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,253,252,252,177,168,168,168,243,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,252,253,227,103,3,0,0,0,25,153,252,205,13,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,239,125,0,0,0,0,0,0,13,169,229,153,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,252,38,0,0,0,0,0,0,0,0,44,240,252,26,0,0,0,0,0,0,0,0,0,0,0,216,252,252,127,0,0,0,0,0,0,0,0,0,26,222,252,113,0,0,0,0,0,0,0,0,0,0,0,79,139,103,3,0,0,0,0,0,0,0,0,0,0,97,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,203,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,187,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,154,253,253,153,79,22,0,26,179,179,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,252,252,252,253,208,57,231,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,252,252,252,253,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,151,28,28,203,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,229,10,0,13,204,253,253,253,254,253,253,153,79,22,0,0,0,0,0,0,0,0,0,0,0,0,66,246,253,196,169,206,253,252,233,96,84,122,252,252,253,234,169,44,0,0,0,0,0,0,0,0,0,0,0,225,253,252,252,252,253,170,37,0,0,13,56,193,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,25,140,165,252,151,78,9,0,0,0,0,0,13,28,78,28,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,95,95,95,188,198,194,95,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,224,254,254,254,254,254,254,254,231,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,229,254,254,254,254,254,213,171,243,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,251,254,254,212,46,20,20,11,0,165,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,228,254,254,185,2,0,0,0,0,0,187,254,255,0,0,0,0,0,0,0,0,0,0,0,0,0,71,238,254,254,202,19,0,0,0,0,0,60,250,254,162,0,0,0,0,0,0,0,0,0,0,0,0,33,196,254,254,225,34,0,0,0,0,0,0,94,254,254,82,0,0,0,0,0,0,0,0,0,0,0,2,176,255,254,251,57,0,0,0,0,0,0,12,207,254,230,27,0,0,0,0,0,0,0,0,0,0,15,175,254,254,202,34,0,0,0,0,0,0,0,168,254,248,77,0,0,0,0,0,0,0,0,0,0,0,30,241,254,254,196,0,0,0,0,0,0,0,31,218,254,248,37,0,0,0,0,0,0,0,0,0,0,33,243,254,250,153,4,0,0,0,0,0,0,36,222,254,226,77,2,0,0,0,0,0,0,0,0,0,17,218,254,254,192,0,0,0,0,0,0,15,89,118,200,211,54,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,69,0,0,0,0,7,73,198,254,247,122,51,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,195,6,0,0,20,79,157,254,254,222,213,50,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,246,229,229,229,236,254,250,110,86,41,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,254,254,254,254,254,254,196,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,178,254,254,254,254,250,244,112,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,94,94,94,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,234,152,152,233,254,253,254,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,252,253,252,253,252,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,254,253,254,253,254,253,255,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,253,252,253,252,253,252,233,151,172,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,253,254,213,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,252,253,212,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,254,253,254,253,152,112,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,172,252,253,252,253,252,253,252,243,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,163,243,254,253,254,253,254,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,151,192,253,252,253,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,162,254,253,254,253,102,0,0,0,0,0,0,0,0,0,123,203,82,0,0,0,0,0,0,0,0,0,0,20,253,252,253,252,102,0,0,0,0,0,0,0,0,0,152,253,254,131,0,0,0,0,0,0,0,0,11,132,254,253,254,253,82,0,0,0,0,0,0,0,0,0,152,252,253,252,142,20,0,0,0,0,62,102,213,252,253,252,253,212,0,0,0,0,0,0,0,0,0,0,82,243,255,253,255,253,153,152,153,193,254,253,254,253,254,253,142,20,0,0,0,0,0,0,0,0,0,0,0,81,213,252,253,252,253,252,253,252,253,252,253,252,233,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,255,253,254,253,254,253,254,253,203,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,253,252,253,212,91,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,176,254,254,228,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,87,204,245,253,171,140,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,128,220,253,230,164,114,24,37,254,245,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,135,230,253,238,112,20,0,0,141,253,254,253,229,20,0,0,0,0,0,0,0,0,0,0,0,0,46,232,254,253,162,41,0,0,0,0,38,227,254,253,216,0,0,0,0,0,0,0,0,0,0,0,0,50,234,254,234,78,0,0,0,0,0,0,0,92,255,254,159,0,0,0,0,0,0,0,0,0,0,0,32,231,253,233,13,0,0,0,0,0,0,0,30,216,254,221,22,0,0,0,0,0,0,0,0,0,0,0,68,253,237,23,0,0,0,0,0,0,0,77,213,253,243,73,0,0,0,0,0,0,0,0,0,0,0,0,145,253,235,0,0,0,0,0,7,19,154,245,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,241,91,92,7,79,98,207,254,253,253,253,188,26,0,0,0,0,0,0,0,0,0,0,0,0,0,40,217,254,254,255,254,254,196,181,92,184,254,242,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,108,108,173,89,18,4,0,62,239,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,232,254,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,249,253,134,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,132,253,254,172,152,152,132,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,123,223,253,252,253,252,253,252,253,232,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,224,223,203,203,203,223,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,192,70,20,20,0,0,0,20,91,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,233,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,252,182,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,254,253,254,253,193,71,41,0,0,0,0,0,11,51,0,0,0,0,0,0,0,0,0,0,0,162,253,252,253,252,253,252,253,252,243,203,203,203,142,142,213,252,183,20,0,0,0,0,0,0,0,0,0,0,62,142,102,142,203,243,254,253,254,253,254,253,254,253,255,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,50,91,151,151,151,232,253,252,233,151,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,166,235,254,137,77,50,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,198,253,254,254,254,254,254,250,244,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,80,244,254,228,162,116,116,175,236,254,254,252,56,0,0,0,0,0,0,0,0,0,0,0,0,6,163,254,254,244,166,30,0,0,0,0,25,67,242,254,137,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,135,0,0,0,0,0,0,0,94,254,243,54,0,0,0,0,0,0,0,0,0,0,3,76,244,254,254,154,1,0,0,0,0,0,0,30,218,254,193,0,0,0,0,0,0,0,0,0,0,0,154,254,254,254,154,0,0,0,0,0,0,0,58,221,254,241,93,5,26,0,0,0,0,0,0,0,0,101,254,254,244,135,1,0,0,0,0,0,0,29,224,254,239,91,0,14,76,0,0,0,0,0,0,0,0,166,254,243,106,0,0,0,0,0,0,0,5,194,254,239,61,0,0,14,76,0,0,0,0,0,0,0,0,47,174,137,0,0,0,0,0,0,0,0,144,254,240,92,0,0,0,14,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,245,254,90,0,0,0,0,14,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,253,138,0,0,0,0,0,14,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,235,254,138,0,0,0,0,0,0,14,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,231,254,210,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,237,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,238,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,248,76,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,72,143,143,225,253,255,253,253,196,120,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,252,252,252,187,186,241,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,109,44,44,44,0,0,36,152,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,201,10,0,0,0,0,0,0,132,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,0,0,0,0,132,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,248,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,226,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,236,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,222,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,175,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,103,225,255,254,203,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,94,196,240,253,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,206,253,253,253,249,142,105,75,253,228,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,190,108,0,0,144,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,151,5,0,0,84,247,253,213,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,141,140,2,0,0,55,246,253,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,233,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,61,139,166,166,160,22,0,0,0,0,84,248,253,253,184,13,0,0,0,0,0,0,0,0,0,0,0,166,252,253,253,253,253,227,82,0,0,82,244,253,252,189,14,0,0,0,0,0,0,0,0,0,0,0,29,232,253,253,216,140,192,253,251,93,93,252,253,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,221,33,0,4,143,253,253,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,170,0,0,3,136,253,253,253,253,222,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,134,0,26,183,253,253,253,253,222,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,166,145,243,253,253,253,234,247,251,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,236,253,253,253,253,253,234,131,28,98,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,251,233,135,19,0,0,0,249,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,186,82,0,0,0,0,0,0,222,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,160,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,96,143,186,253,181,143,138,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,176,243,253,252,252,252,252,252,252,220,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,174,252,252,197,125,44,152,252,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,229,252,246,134,5,0,0,15,121,176,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,223,61,0,0,0,0,0,37,234,252,199,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,122,0,0,0,0,0,8,172,252,205,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,104,0,0,0,0,0,176,252,210,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,208,0,0,0,12,88,248,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,246,241,130,0,0,148,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,243,28,173,243,252,89,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,253,253,255,201,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,252,252,239,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,202,252,252,209,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,222,252,220,39,112,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,168,252,252,149,34,0,182,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,201,252,252,144,5,0,0,220,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,252,237,108,5,0,7,127,250,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,191,45,130,154,214,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,252,252,252,252,229,128,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,152,252,252,199,124,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,138,180,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,252,235,248,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,191,240,183,64,230,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,134,228,203,79,0,76,248,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,205,210,85,11,0,32,218,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,205,74,0,0,0,81,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,244,56,0,0,0,51,228,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,247,98,0,0,0,0,161,252,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,230,0,0,0,0,62,236,195,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,251,135,0,0,0,243,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,253,137,13,181,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,211,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,122,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,253,152,157,251,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,223,25,0,230,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,240,101,112,246,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,252,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,43,221,252,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,96,150,195,254,255,152,73,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,105,236,253,253,253,196,235,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,108,253,243,211,114,27,4,8,10,89,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,124,0,4,89,166,166,166,166,88,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,125,36,203,253,253,253,253,253,253,202,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,213,253,253,241,115,98,98,115,241,253,183,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,160,39,0,0,0,0,39,242,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,232,110,1,0,0,0,0,0,0,73,242,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,30,0,0,0,0,0,0,0,0,0,182,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,250,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,228,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,173,0,0,0,0,0,0,0,0,0,228,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,200,64,0,0,0,0,0,0,9,142,245,235,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,251,218,131,51,11,71,115,216,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,123,200,253,253,253,253,253,253,253,236,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,133,149,192,149,149,149,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,139,118,24,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,219,252,252,252,253,252,252,219,161,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,222,252,252,252,252,253,252,252,252,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,252,252,252,252,253,252,252,252,252,253,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,253,252,252,157,137,137,117,137,252,252,253,252,121,0,0,0,0,0,0,0,0,0,0,0,0,7,160,253,255,228,32,0,0,0,0,0,145,253,255,253,184,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,206,0,0,0,0,0,0,34,238,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,206,0,0,0,0,0,0,26,236,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,253,112,0,0,0,0,0,0,93,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,92,0,0,0,0,0,0,93,252,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,255,154,0,0,0,0,0,0,93,253,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,253,206,0,0,0,0,0,13,174,252,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,219,19,0,0,0,45,172,252,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,252,253,252,111,0,0,62,236,252,252,252,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,253,252,215,21,53,243,252,252,252,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,255,253,253,159,191,255,253,253,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,252,252,252,253,252,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,222,252,252,252,252,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,245,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,96,221,252,147,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,199,247,233,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,154,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,246,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,222,253,159,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,246,253,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,164,13,0,0,0,0,0,38,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,244,236,36,0,14,53,80,183,183,228,196,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,145,0,13,166,253,253,253,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,245,239,33,73,193,253,244,187,84,84,193,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,162,72,237,244,221,103,0,0,43,221,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,218,239,253,101,0,0,19,50,221,253,250,93,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,253,253,253,213,41,121,150,224,253,253,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,236,253,253,253,253,253,253,253,253,253,244,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,240,253,253,253,250,248,216,117,117,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,142,123,60,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,91,91,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,184,253,253,251,117,139,180,48,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,187,253,253,253,253,253,253,253,253,177,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,208,253,253,253,253,253,253,253,253,253,253,240,102,2,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,253,253,253,253,253,253,253,253,253,253,253,95,0,0,0,0,0,0,0,0,0,0,4,50,182,253,253,253,253,222,252,253,253,253,253,253,253,253,253,193,18,0,0,0,0,0,0,0,0,0,17,253,253,253,253,253,217,44,111,114,167,253,253,253,253,253,253,253,89,0,0,0,0,0,0,0,0,0,60,253,253,253,253,253,144,0,0,0,9,152,253,253,253,253,253,253,89,0,0,0,0,0,0,0,0,0,180,253,253,253,253,253,24,0,0,0,0,10,98,223,253,253,253,253,89,0,0,0,0,0,0,0,0,30,204,253,253,253,237,81,1,0,0,0,0,0,0,33,213,253,253,253,249,0,0,0,0,0,0,0,0,202,253,253,253,253,203,0,0,0,0,0,0,0,0,0,131,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,139,0,0,0,0,0,0,0,0,0,131,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,40,0,0,0,0,0,0,0,0,21,143,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,40,0,0,0,0,0,0,0,53,227,253,253,253,253,253,0,0,0,0,0,0,0,0,255,253,253,253,253,181,42,42,42,42,47,205,205,227,253,253,253,253,253,120,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,214,43,0,0,0,0,0,0,0,0,197,236,253,253,253,253,253,253,253,253,253,253,253,253,253,253,240,100,23,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,253,253,253,253,253,253,253,253,253,176,82,0,0,0,0,0,0,0,0,0,0,0,0,1,15,37,179,193,253,253,253,253,253,253,246,179,152,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,89,89,89,89,89,89,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,250,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,228,254,254,199,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,171,251,187,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,196,1,148,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,253,79,0,21,245,202,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,161,0,0,0,156,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,200,18,0,0,0,131,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,254,68,0,0,0,0,68,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,216,254,155,4,0,0,0,0,68,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,245,62,0,0,0,0,0,68,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,239,254,114,0,0,0,0,0,0,105,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,177,254,222,28,0,0,0,0,0,2,189,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,110,0,0,0,0,0,0,109,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,221,3,0,0,0,0,0,60,251,236,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,74,0,0,0,0,0,29,215,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,81,0,0,0,0,31,213,254,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,232,117,29,111,132,228,254,209,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,228,254,254,254,254,254,247,196,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,164,226,254,202,164,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,245,118,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,253,253,178,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,253,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,235,46,77,194,253,230,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,231,0,0,9,180,254,249,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,253,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,38,70,45,64,70,26,0,125,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,198,254,233,253,237,249,254,224,208,245,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,138,86,169,253,253,254,253,253,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,11,0,0,0,0,0,0,49,234,244,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,194,17,0,0,0,0,30,229,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,255,210,82,0,0,39,156,253,228,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,170,253,241,208,208,234,253,228,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,44,169,253,253,254,158,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,194,255,254,254,163,119,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,174,181,233,244,253,230,87,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,222,0,0,0,42,78,186,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,155,0,0,0,0,0,95,247,247,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,155,0,0,0,0,0,0,214,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,0,0,0,0,0,0,155,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,128,0,0,0,0,0,118,253,232,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,213,42,0,0,0,0,118,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,238,236,136,136,136,137,228,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,200,253,253,253,254,207,147,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,98,38,0,61,249,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,238,43,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,193,171,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,21,34,82,144,144,144,134,34,34,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,153,210,224,253,253,254,253,253,253,253,253,178,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,82,154,124,253,253,198,180,171,249,232,188,253,227,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,112,253,195,53,3,2,10,8,4,69,245,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,20,113,253,178,50,0,0,0,0,0,0,8,219,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,66,0,0,0,0,0,0,0,8,180,253,71,0,0,0,0,0,0,0,0,0,0,0,1,108,240,243,65,6,0,0,0,0,0,0,0,1,150,253,95,0,0,0,0,0,0,0,0,0,0,0,42,253,253,160,0,0,0,0,0,0,0,0,0,7,210,253,191,0,0,0,0,0,0,0,0,0,0,31,218,253,154,6,0,0,0,0,0,0,0,0,0,12,253,253,143,0,0,0,0,0,0,0,0,0,30,167,253,181,31,0,0,0,0,0,0,0,0,0,39,118,253,220,81,0,0,0,0,0,0,0,0,0,178,254,232,0,0,0,0,0,0,0,0,0,0,0,90,254,255,91,5,0,0,0,0,0,0,0,0,101,230,227,75,0,0,0,0,0,0,0,0,0,6,91,204,253,253,170,10,0,0,0,0,0,0,0,0,101,253,193,4,0,0,0,0,0,0,0,0,0,71,253,253,253,173,12,0,0,0,0,0,0,0,0,0,246,253,100,1,0,0,0,0,0,0,0,6,66,240,253,246,77,4,0,0,0,0,0,0,0,0,0,0,206,253,92,0,0,0,0,0,0,0,32,79,235,253,217,129,0,0,0,0,0,0,0,0,0,0,0,0,254,253,44,0,0,0,0,0,0,78,231,253,253,111,19,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,149,6,8,12,16,122,155,251,248,165,89,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,240,253,202,219,253,253,253,253,166,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,240,253,253,253,182,156,66,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,33,33,33,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,28,6,0,0,0,0,0,0,19,183,153,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,219,231,69,0,0,0,0,0,0,32,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,255,120,0,0,0,0,0,0,32,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,31,0,0,0,0,0,0,22,231,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,19,222,254,217,15,0,0,0,0,0,0,0,182,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,151,0,0,0,0,0,0,0,0,182,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,78,0,0,0,0,0,0,0,0,182,254,219,17,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,193,76,22,0,0,0,0,0,21,230,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,6,196,254,254,254,228,214,214,214,214,214,219,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,33,109,239,254,254,254,254,254,254,254,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,155,155,155,155,155,155,155,167,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,166,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,231,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,242,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,249,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,184,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,113,113,114,75,0,13,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,194,225,225,226,225,231,252,252,253,243,225,228,237,226,225,225,225,146,0,0,0,0,0,0,0,0,120,246,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,253,252,252,249,223,225,176,193,145,145,225,223,223,223,223,253,252,252,252,236,0,0,0,0,0,0,0,0,253,252,252,145,0,0,0,0,0,0,0,0,0,0,79,253,252,252,236,50,0,0,0,0,0,0,0,0,63,63,31,0,0,0,0,0,0,0,0,0,0,92,253,255,253,228,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,252,253,176,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,209,252,252,165,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,252,249,223,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,243,252,253,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,252,220,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,196,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,223,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,7,29,128,204,253,253,253,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,169,206,207,187,252,252,253,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,253,252,252,177,106,56,122,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,165,252,252,253,177,52,3,0,26,210,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,178,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,254,247,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,253,208,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,255,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,243,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,249,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,246,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,252,253,235,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,230,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,248,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,179,246,187,187,174,200,177,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,254,255,254,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,254,230,137,163,137,137,83,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,249,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,245,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,243,19,0,0,19,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,249,208,166,214,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,253,245,255,254,254,231,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,160,28,78,162,242,254,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,0,0,0,0,82,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,235,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,168,179,121,40,0,0,33,231,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,254,251,219,150,219,254,235,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,215,254,254,254,254,254,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,91,98,173,212,254,161,69,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,230,0,0,0,0,0,0,0,0,0,0,0,0,24,111,91,0,0,0,0,0,0,0,0,0,0,111,253,159,0,0,0,0,0,0,0,0,0,44,75,164,247,253,208,0,0,0,0,0,0,0,0,0,5,200,253,251,219,129,121,65,97,120,120,121,204,242,254,239,244,254,115,0,0,0,0,0,0,0,0,0,56,253,253,194,253,253,253,253,253,253,253,253,253,203,129,24,164,253,9,0,0,0,0,0,0,0,0,0,56,253,253,36,24,24,24,24,101,105,64,24,24,8,0,10,237,253,9,0,0,0,0,0,0,0,0,0,56,253,253,35,0,0,0,0,0,0,0,0,0,0,0,80,254,253,9,0,0,0,0,0,0,0,0,0,4,212,243,29,0,0,0,0,0,0,0,0,0,0,0,80,254,204,5,0,0,0,0,0,0,0,0,0,0,89,44,0,0,0,0,0,0,0,0,0,0,0,0,80,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,181,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,239,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,24,139,138,222,201,253,255,232,138,97,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,186,252,253,252,252,252,252,253,252,252,252,211,100,38,0,0,0,0,0,0,0,0,0,0,0,0,0,134,240,252,253,208,183,183,130,184,196,202,240,252,253,240,101,13,0,0,0,0,0,0,0,0,0,0,60,209,252,168,46,17,0,0,0,0,9,13,80,244,253,252,252,98,0,0,0,0,0,0,0,0,0,0,109,252,252,75,0,0,0,0,0,0,0,0,0,21,148,252,252,234,21,0,0,0,0,0,0,0,0,22,245,253,253,253,139,118,24,15,0,0,0,0,19,128,85,136,199,74,0,0,0,0,0,0,0,0,0,0,67,221,252,252,253,252,252,219,161,162,161,161,236,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,34,183,240,252,253,252,252,252,252,253,252,252,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,45,161,219,252,252,252,253,252,252,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,22,65,242,253,252,221,96,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,159,234,252,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,194,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,252,221,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,191,252,209,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,240,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,192,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,159,254,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,122,141,0,0,0,0,0,90,254,250,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,229,254,162,0,0,0,0,23,241,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,220,254,243,37,0,0,0,0,76,254,250,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,254,254,79,0,0,0,0,0,152,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,162,3,0,0,0,0,39,229,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,254,221,31,0,0,0,0,0,104,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,5,190,254,231,38,0,0,0,0,0,5,190,254,213,7,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,171,0,0,0,0,0,0,73,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,113,0,0,0,0,0,0,132,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,254,221,91,38,2,0,0,10,220,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,254,200,198,198,213,254,254,251,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,113,220,254,254,254,254,254,254,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,25,113,203,206,241,254,254,139,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,217,254,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,240,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,240,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,249,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,52,0,0,0,0,123,209,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,134,0,0,0,146,253,254,250,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,139,0,0,98,254,254,183,240,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,185,0,2,189,254,178,3,137,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,240,42,52,254,254,54,0,108,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,196,137,254,254,34,100,248,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,254,254,254,255,254,254,254,229,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,248,254,254,254,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,166,227,254,254,254,235,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,172,252,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,250,250,232,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,252,254,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,161,250,250,252,210,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,172,250,250,250,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,49,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,172,252,254,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,161,250,250,252,210,149,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,250,250,250,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,241,252,250,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,255,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,49,212,49,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,150,230,105,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,211,247,223,252,225,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,135,16,204,252,184,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,96,0,81,238,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,96,0,0,101,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,252,205,28,0,14,48,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,114,252,205,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,132,248,252,244,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,117,184,253,255,253,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,111,175,252,252,242,228,229,159,128,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,221,252,252,240,216,124,0,0,0,37,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,241,169,56,0,0,0,0,0,37,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,206,15,0,0,0,0,0,0,37,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,228,252,172,14,0,0,0,0,0,71,252,206,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,228,252,214,102,8,0,0,9,189,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,229,252,252,168,97,0,71,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,180,252,252,252,230,242,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,11,121,131,138,252,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,232,170,159,86,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,227,252,252,252,253,240,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,160,236,252,253,252,240,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,75,148,252,252,202,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,255,253,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,220,252,253,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,245,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,168,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,38,139,171,255,254,227,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,253,253,253,192,177,197,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,160,253,251,183,32,6,0,9,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,161,253,226,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,160,253,248,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,253,132,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,216,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,193,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,162,81,168,168,168,168,168,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,241,253,253,253,253,253,253,253,253,235,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,253,253,227,119,19,10,10,66,190,248,252,142,5,0,0,0,0,0,0,0,0,0,0,0,0,0,114,242,142,247,238,136,6,0,0,0,0,66,219,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,22,79,0,94,253,253,109,0,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,93,246,253,180,102,33,33,33,150,253,252,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,179,253,253,253,253,253,253,253,225,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,61,145,201,253,253,195,118,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,97,97,118,180,180,251,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,244,254,254,254,254,254,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,230,254,225,150,150,128,67,92,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,188,254,233,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,91,254,254,177,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,222,254,254,244,218,182,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,254,254,254,254,254,254,242,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,158,254,254,234,129,58,82,250,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,245,254,248,120,0,0,0,140,254,244,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,213,254,243,86,0,0,0,0,87,254,232,11,0,0,0,0,0,0,0,0,0,0,0,19,55,16,4,15,125,242,162,7,0,0,0,0,77,254,254,16,0,0,0,0,0,0,0,0,0,0,0,134,254,234,228,67,0,23,7,0,0,0,0,13,223,254,254,72,0,0,0,0,0,0,0,0,0,0,0,151,254,254,249,153,78,0,0,0,0,0,0,178,254,254,146,2,0,0,0,0,0,0,0,0,0,0,0,9,164,254,254,254,253,225,150,150,150,150,195,252,254,216,22,0,0,0,0,0,0,0,0,0,0,0,0,0,1,16,83,213,254,254,254,254,254,254,254,254,172,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,12,77,161,179,179,164,96,23,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,153,214,232,119,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,210,245,253,253,253,254,190,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,247,254,253,239,190,89,174,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,222,151,4,0,0,7,206,250,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,251,253,187,9,0,0,0,0,0,113,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,241,254,254,100,9,0,0,0,0,0,0,209,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,227,160,253,58,0,0,0,0,0,0,164,253,47,0,0,0,0,0,0,0,0,0,0,0,0,145,254,253,89,20,89,0,0,0,0,0,0,0,142,253,104,0,0,0,0,0,0,0,0,0,0,0,22,229,254,194,4,0,0,0,0,0,0,0,0,0,164,253,104,0,0,0,0,0,0,0,0,0,0,0,163,253,236,27,0,0,0,0,0,0,0,0,0,0,164,253,38,0,0,0,0,0,0,0,0,0,0,55,254,254,132,0,0,0,0,0,0,0,0,0,0,8,241,248,26,0,0,0,0,0,0,0,0,0,0,182,253,235,0,0,0,0,0,0,0,0,0,0,0,100,253,190,0,0,0,0,0,0,0,0,0,0,66,248,253,82,0,0,0,0,0,0,0,0,0,0,0,134,252,60,0,0,0,0,0,0,0,0,0,0,169,253,253,30,0,0,0,0,0,0,0,0,0,0,28,212,167,0,0,0,0,0,0,0,0,0,0,18,235,253,213,4,0,0,0,0,0,0,0,0,0,0,170,235,19,0,0,0,0,0,0,0,0,0,0,61,254,254,227,13,0,0,0,0,0,0,0,0,0,93,255,120,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,30,0,0,0,0,0,0,0,0,24,239,254,102,0,0,0,0,0,0,0,0,0,0,0,105,253,226,228,196,0,0,0,0,0,0,0,68,202,253,173,3,0,0,0,0,0,0,0,0,0,0,0,105,253,245,69,133,0,0,0,0,40,120,181,250,245,142,18,0,0,0,0,0,0,0,0,0,0,0,0,52,178,178,143,31,0,0,27,132,175,188,253,178,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,64,64,255,255,64,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,64,0,128,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,191,64,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,191,128,191,191,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,128,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,184,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,217,254,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,203,253,254,237,243,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,247,253,227,85,21,52,232,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,227,42,0,0,0,169,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,254,146,0,18,0,0,65,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,238,191,218,191,137,128,253,212,0,0,0,36,192,191,51,0,0,0,0,0,0,0,0,0,0,30,206,252,253,253,254,253,253,253,253,251,153,75,48,224,254,253,243,135,4,0,0,0,0,0,0,0,0,0,0,78,84,172,190,190,190,206,253,254,253,253,253,253,254,253,227,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,42,166,253,253,253,253,192,68,33,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,255,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,242,255,246,243,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,253,254,142,198,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,174,46,242,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,45,192,255,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,86,212,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,253,252,179,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,174,253,148,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,128,128,191,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,128,191,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,128,191,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,208,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,235,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,202,253,240,107,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,237,253,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,244,253,253,240,239,239,197,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,213,129,43,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,149,253,250,111,0,7,162,253,239,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,222,0,0,0,124,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,222,0,0,0,124,253,239,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,176,253,222,0,0,2,131,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,222,0,0,24,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,222,0,0,61,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,242,83,8,180,253,251,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,253,253,253,253,227,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,211,253,253,239,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,253,229,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,171,253,253,253,229,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,109,253,253,248,168,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,253,253,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,243,253,253,253,165,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,206,253,253,142,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,242,114,253,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,190,253,253,193,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,245,253,253,247,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,163,248,253,253,248,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,191,182,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,38,67,218,67,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,162,228,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,187,217,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,215,253,168,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,114,170,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,86,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,141,0,0,198,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,29,29,198,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,0,114,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,170,29,226,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,226,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,170,0,170,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,29,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,29,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,226,86,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,48,103,183,247,124,7,0,0,0,0,0,0,0,0,0,0,0,0,53,64,0,0,83,95,95,95,177,207,254,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,141,251,245,245,253,254,255,254,254,254,227,162,157,255,254,36,0,0,0,0,0,0,0,0,0,0,0,0,95,233,254,254,215,171,171,171,88,67,17,0,113,254,204,10,0,0,0,0,0,0,0,0,0,0,0,0,0,15,20,20,11,0,0,0,0,0,0,27,219,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,240,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,246,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,222,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,216,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,197,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,200,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,170,226,255,226,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,255,170,114,170,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,86,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,226,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,170,170,255,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,226,57,0,0,0,0,0,0,0,0,0,0,29,226,226,29,0,0,0,0,0,0,0,0,0,0,0,0,255,114,0,0,0,0,0,0,0,0,0,86,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,141,57,0,0,0,0,0,86,226,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,255,255,226,170,226,255,226,141,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,170,226,226,170,170,170,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,253,253,255,253,253,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,252,252,253,252,252,252,252,252,250,88,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,252,252,253,252,252,252,252,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,184,184,39,39,110,53,172,172,110,110,39,39,208,252,252,205,0,0,0,0,0,0,0,0,0,0,0,0,164,172,0,0,0,0,0,0,0,0,0,0,164,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,74,223,39,0,0,0,0,0,0,0,0,0,67,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,192,53,0,0,0,0,0,0,0,0,0,88,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,30,20,0,0,0,0,0,0,0,0,9,205,252,226,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,250,252,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,222,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,195,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,208,252,252,199,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,206,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,243,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,202,19,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,147,224,183,191,200,174,99,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,221,231,173,140,69,136,149,233,252,123,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,134,2,0,0,0,0,0,17,138,244,201,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,30,0,0,0,0,0,0,0,0,71,227,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,249,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,221,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,147,117,37,0,0,0,0,2,135,249,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,254,250,150,38,0,0,136,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,235,254,254,223,74,165,254,169,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,157,190,254,254,254,122,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,21,151,254,115,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,16,0,0,0,0,0,0,0,0,0,92,250,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,230,91,4,0,0,0,0,0,0,0,5,219,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,172,23,0,0,0,0,0,0,23,221,247,38,0,0,0,0,0,0,0,0,0,0,0,0,0,4,65,150,249,238,94,18,0,0,40,145,212,249,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,146,255,246,178,205,250,254,172,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,225,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,223,254,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,254,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,213,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,239,255,254,245,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,222,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,33,182,155,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,108,165,254,254,254,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,34,212,254,254,254,254,254,254,205,179,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,158,254,254,254,254,254,254,254,254,254,178,125,44,0,0,0,0,0,0,0,0,0,0,0,0,0,75,237,254,254,254,254,254,254,254,254,254,254,254,206,32,0,0,0,0,0,0,0,0,0,0,0,19,140,237,254,254,254,254,254,254,254,254,254,254,254,254,213,41,0,0,0,0,0,0,0,0,0,0,28,91,254,254,254,254,254,233,188,188,195,254,254,254,254,254,248,82,0,0,0,0,0,0,0,0,0,0,108,254,254,254,254,254,254,71,0,0,10,98,225,254,254,254,254,191,0,0,0,0,0,0,0,0,0,17,251,254,254,254,254,190,7,1,0,0,0,0,6,135,254,254,254,147,0,0,0,0,0,0,0,0,0,129,254,254,254,254,159,61,0,0,0,0,0,80,173,216,254,254,206,85,0,0,0,0,0,0,0,0,100,210,254,254,254,171,70,0,0,0,0,39,100,170,254,254,254,254,161,55,0,0,0,0,0,0,0,0,149,254,254,254,242,143,0,7,25,25,137,215,254,254,254,254,249,230,14,0,0,0,0,0,0,0,0,0,181,254,254,254,187,94,64,152,254,254,254,254,254,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,254,245,233,254,255,254,254,254,254,254,221,128,6,0,0,0,0,0,0,0,0,0,0,0,177,254,254,254,254,254,254,254,254,254,254,254,242,123,24,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,254,254,254,254,254,236,197,132,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,106,168,254,254,254,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,37,180,180,90,15,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,121,197,253,255,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,252,252,252,253,252,247,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,118,158,82,97,90,198,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,242,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,242,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,255,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,247,242,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,219,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,232,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,245,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,34,0,0,22,174,248,252,239,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,237,90,160,208,253,252,242,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,252,252,253,183,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,210,252,252,252,120,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,233,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,251,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,236,253,193,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,233,253,114,19,0,0,0,0,0,0,0,0,0,0,0,0,0,43,212,46,0,0,0,0,0,0,138,252,251,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,48,229,226,37,0,0,0,0,0,12,215,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,230,188,43,0,0,0,0,0,17,209,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,77,251,200,6,0,0,0,0,0,46,228,253,152,14,0,0,0,0,0,0,0,0,0,0,0,0,0,32,199,110,0,0,0,0,0,0,12,173,253,146,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,226,21,0,0,0,0,0,6,173,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,177,0,0,0,1,22,59,230,253,253,252,177,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,228,168,168,168,171,253,253,253,253,192,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,253,205,87,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,43,119,119,219,253,253,195,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,206,253,220,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,218,253,111,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,248,106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,5,70,70,70,70,70,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,79,233,250,247,247,247,254,250,238,238,215,122,0,0,0,0,0,0,0,0,0,0,0,0,6,58,105,156,254,254,239,201,115,138,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,156,254,132,38,141,145,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,236,62,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,250,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,149,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,60,254,241,205,89,0,0,0,0,0,5,113,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,126,250,255,193,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,80,220,242,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,204,245,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,79,2,0,0,0,0,0,6,227,207,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,172,8,0,0,0,0,0,60,199,190,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,247,148,134,62,62,62,128,235,216,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,153,190,199,246,246,246,237,169,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,0,0,0,0,0,141,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,0,0,0,0,0,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,29,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,29,0,0,0,0,0,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,198,0,0,0,0,141,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,226,0,29,57,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,170,57,0,170,255,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,0,0,0,0,198,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,29,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,245,252,252,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,204,253,252,252,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,142,252,253,252,252,252,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,254,253,236,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,252,252,239,168,45,189,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,221,252,252,252,149,0,0,72,252,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,252,252,252,252,0,0,0,64,252,253,111,6,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,252,244,147,103,0,0,0,64,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,254,253,152,0,0,0,0,0,0,212,255,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,253,153,5,0,0,0,0,0,0,211,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,252,250,58,0,0,0,0,0,0,32,232,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,115,0,0,0,0,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,0,0,0,0,0,0,0,0,108,252,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,0,0,0,0,0,0,0,101,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,36,0,0,0,0,50,164,247,231,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,245,252,242,153,127,127,171,245,252,242,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,253,231,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,42,165,252,252,226,147,129,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,119,219,151,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,155,252,254,254,254,202,0,0,0,0,0,0,3,55,0,0,0,0,0,0,0,0,0,0,0,0,41,226,254,254,254,254,254,251,236,236,236,236,226,106,176,245,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,254,228,162,184,254,167,120,162,162,170,207,254,207,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,187,28,0,9,39,12,0,0,0,3,19,106,19,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,241,210,109,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,254,254,254,186,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,128,254,254,254,255,254,213,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,187,133,5,0,24,176,244,254,254,254,254,186,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,19,0,0,0,100,217,254,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,255,254,128,5,0,0,0,22,191,254,254,255,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,231,254,254,114,0,0,0,0,66,254,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,219,164,53,6,0,150,254,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,234,254,254,254,254,174,157,232,254,254,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,233,254,254,254,254,254,255,254,254,255,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,228,253,254,254,254,254,254,254,154,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,117,117,117,117,117,117,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,245,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,254,253,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,178,253,254,240,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,26,214,253,253,228,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,245,105,0,0,0,0,0,221,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,212,253,137,0,0,0,5,147,254,253,248,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,174,254,253,137,0,0,22,161,253,254,248,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,253,254,236,54,0,0,147,253,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,90,0,51,153,254,254,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,251,253,253,254,232,230,247,254,253,253,253,248,230,230,97,0,0,0,0,0,0,0,0,0,0,0,0,237,253,253,253,254,253,253,253,254,253,253,253,254,248,145,13,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,253,254,253,253,253,254,236,128,194,228,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,93,93,34,139,254,254,236,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,226,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,244,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,247,254,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,247,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,20,5,80,200,214,214,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,124,199,253,193,254,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,201,253,253,253,237,154,71,143,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,239,254,253,253,253,118,0,0,101,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,156,254,254,255,254,254,19,0,0,13,224,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,58,217,253,227,143,254,243,68,3,0,0,140,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,68,224,247,144,63,205,254,135,0,0,0,19,196,253,116,0,0,0,0,0,0,0,0,0,0,0,0,74,181,244,167,30,144,253,169,18,0,0,0,141,238,195,47,0,0,0,0,0,0,0,0,0,0,0,31,219,253,157,0,61,248,215,23,0,0,0,38,254,245,48,0,0,0,0,0,0,0,0,0,0,0,0,138,254,231,0,0,117,254,119,0,0,0,0,196,255,136,0,0,0,0,0,0,0,0,0,0,0,0,62,241,219,24,0,0,86,253,73,0,0,0,87,244,249,88,0,0,0,0,0,0,0,0,0,0,0,19,196,253,116,0,0,0,108,253,126,0,0,25,240,253,98,0,0,0,0,0,0,0,0,0,0,0,0,112,253,180,2,0,0,0,6,167,208,53,49,240,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,137,0,0,0,0,0,9,133,180,244,253,185,14,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,101,0,0,0,0,0,108,231,255,249,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,211,118,118,118,162,214,250,245,151,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,158,253,253,253,254,253,253,195,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,87,117,117,117,117,49,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,166,255,163,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,240,234,254,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,68,22,244,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,81,1,0,204,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,250,254,139,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,254,254,254,193,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,246,254,250,156,138,238,236,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,251,254,254,72,0,0,42,186,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,206,43,1,0,0,0,106,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,124,8,0,0,0,0,0,64,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,160,141,0,0,0,0,0,145,251,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,230,173,0,0,0,0,0,57,236,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,105,0,0,0,0,27,193,230,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,107,0,0,5,84,205,251,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,235,91,163,249,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,254,254,254,233,95,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,163,161,165,254,109,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,76,76,76,76,76,76,76,182,184,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,43,213,242,253,253,253,253,253,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,26,171,253,253,253,253,250,220,253,235,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,82,188,253,253,236,133,59,16,65,37,65,109,172,97,10,0,0,0,0,0,0,0,0,0,0,0,0,0,57,191,253,188,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,253,253,200,172,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,217,253,253,253,253,253,207,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,228,132,92,190,211,253,246,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,29,0,0,0,12,211,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,16,0,0,0,0,0,0,0,0,200,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,195,8,0,0,0,0,0,0,0,200,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,161,0,0,0,0,0,0,63,221,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,249,23,0,0,0,0,2,172,253,242,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,240,72,0,13,66,169,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,151,253,253,240,211,219,253,253,253,132,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,56,240,253,253,253,253,237,83,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,156,183,183,183,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,197,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,224,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,253,254,253,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,244,254,254,115,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,248,216,241,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,215,254,216,0,128,253,222,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,216,0,0,208,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,251,254,147,61,0,0,81,245,184,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,251,129,0,0,0,0,0,165,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,235,22,0,0,0,0,0,114,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,251,199,23,3,0,0,0,0,0,114,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,216,212,19,0,0,0,0,0,0,0,68,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,99,0,0,0,0,0,0,0,0,19,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,73,248,176,0,0,0,0,0,0,0,0,0,19,255,198,0,0,0,0,0,0,0,0,0,0,0,0,2,182,247,85,0,0,0,0,0,0,0,0,0,10,215,197,0,0,0,0,0,0,0,0,0,0,0,0,13,254,133,0,0,0,0,0,0,0,0,0,0,15,237,193,0,0,0,0,0,0,0,0,0,0,0,0,131,254,50,0,0,0,0,0,0,0,0,0,0,83,254,103,0,0,0,0,0,0,0,0,0,0,0,0,198,166,2,0,0,0,0,0,0,0,0,0,0,130,254,51,0,0,0,0,0,0,0,0,0,0,0,0,198,92,0,0,0,0,0,0,0,0,0,0,123,245,177,2,0,0,0,0,0,0,0,0,0,0,0,0,198,203,7,0,0,0,0,0,0,13,89,179,248,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,193,151,151,130,137,151,176,246,254,254,204,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,213,254,254,254,254,254,254,254,254,231,162,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,118,159,159,229,170,254,160,111,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,154,239,109,0,166,220,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,240,216,158,112,0,135,235,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,177,19,2,2,0,0,190,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,202,15,0,0,0,0,45,251,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,244,224,20,0,0,0,0,0,130,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,74,0,0,0,0,0,7,209,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,185,3,0,0,0,0,0,152,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,112,0,0,0,0,0,35,229,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,128,0,0,0,0,0,162,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,222,246,40,0,0,0,119,247,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,242,231,92,6,60,247,183,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,217,254,170,232,250,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,188,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,205,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,217,254,181,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,251,117,89,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,211,254,106,7,195,239,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,254,179,64,209,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,185,246,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,249,254,235,150,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,63,153,200,254,255,255,254,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,22,124,126,126,218,236,254,254,254,254,254,254,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,11,211,254,254,254,254,254,254,254,179,162,162,200,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,254,254,242,189,101,9,1,0,49,232,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,5,179,229,184,65,30,0,0,0,2,90,230,254,254,203,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,169,254,254,254,169,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,254,254,245,157,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,254,254,254,230,112,20,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,254,254,254,254,254,254,170,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,115,188,238,254,254,254,254,203,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,48,124,211,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,238,254,232,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,234,254,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,222,17,0,0,0,0,0,0,0,0,0,0,0,0,44,154,168,97,0,0,0,0,0,0,98,225,254,250,31,0,0,0,0,0,0,0,0,0,0,0,0,14,205,254,254,201,0,0,0,3,105,187,249,254,248,138,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,254,254,165,5,5,115,200,254,254,254,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,254,254,254,254,254,254,254,196,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,222,254,254,254,254,254,239,154,72,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,95,214,254,254,72,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,152,193,193,193,152,152,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,253,252,253,252,253,212,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,233,142,102,102,102,102,183,254,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,253,111,0,0,0,0,0,0,71,192,253,232,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,233,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,233,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,96,175,229,229,145,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,214,253,253,253,253,254,225,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,226,254,253,189,127,176,239,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,254,205,16,0,0,106,253,247,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,232,253,189,9,0,0,0,21,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,249,0,0,0,0,0,16,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,241,253,139,0,0,0,0,0,16,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,253,253,95,0,0,0,0,0,31,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,181,130,41,0,0,0,0,0,96,253,241,24,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,253,52,0,5,0,0,0,0,0,170,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,29,244,255,88,0,0,0,0,0,0,0,55,255,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,232,16,0,0,0,0,0,0,28,180,254,194,12,0,0,0,0,0,0,0,0,0,0,0,0,64,237,253,80,0,0,0,0,0,0,0,119,253,251,91,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,188,0,0,0,0,0,0,0,82,249,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,10,221,233,40,0,0,0,0,0,5,125,250,253,228,30,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,190,0,0,0,0,9,91,180,254,254,230,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,237,42,32,32,97,216,253,254,249,206,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,254,253,253,253,253,251,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,212,253,253,254,253,253,253,168,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,218,203,174,173,110,50,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,165,253,221,253,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,243,163,50,0,58,224,116,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,84,241,91,0,0,0,0,108,214,205,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,92,0,0,0,0,0,108,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,205,0,0,0,0,0,0,121,254,248,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,231,33,0,0,0,0,73,244,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,245,218,66,58,112,170,241,154,205,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,203,254,214,188,160,73,0,198,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,16,7,0,0,0,0,198,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,220,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,255,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,206,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,110,255,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,170,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,168,253,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,253,253,253,219,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,246,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,246,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,220,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,244,65,0,0,0,48,99,186,186,186,77,6,0,0,0,0,0,0,0,0,0,0,0,0,10,227,253,253,182,0,0,49,99,239,253,253,253,253,253,198,14,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,93,0,76,237,253,253,253,253,253,253,253,253,147,4,0,0,0,0,0,0,0,0,0,0,136,253,253,243,63,75,238,253,253,253,253,253,253,253,253,253,253,112,0,0,0,0,0,0,0,0,0,0,136,253,253,119,74,239,253,253,253,253,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,136,253,253,216,195,253,253,253,253,253,253,208,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,89,253,253,253,253,253,253,253,253,253,253,239,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,13,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,7,204,253,253,253,253,253,253,253,253,253,253,253,253,253,207,87,1,0,0,0,0,0,0,0,0,0,0,0,16,147,253,253,253,253,253,253,253,253,253,213,179,101,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,21,129,211,168,129,190,129,129,29,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,132,51,152,152,173,172,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,253,252,253,252,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,253,254,253,254,213,214,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,252,253,252,131,10,92,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,172,254,253,102,21,214,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,50,50,50,82,203,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,255,172,52,132,255,253,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,172,253,252,253,252,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,255,253,255,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,131,151,192,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,104,222,254,255,254,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,242,155,160,249,243,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,245,253,187,26,0,0,188,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,34,0,0,0,188,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,200,3,0,0,0,188,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,187,0,0,0,0,188,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,223,9,0,2,174,245,245,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,245,253,112,0,30,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,248,106,140,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,129,221,253,251,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,255,254,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,246,254,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,254,230,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,240,253,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,228,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,197,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,153,153,153,153,153,153,153,153,153,217,213,250,250,250,140,0,0,0,0,0,0,0,0,0,0,0,6,191,254,254,254,254,254,254,254,254,254,254,254,254,254,250,121,0,0,0,0,0,0,0,0,0,0,0,91,254,254,254,254,254,254,254,254,254,254,254,208,167,141,62,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,254,209,133,105,105,105,141,105,42,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,254,248,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,218,254,254,254,249,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,176,253,254,254,245,164,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,254,254,169,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,177,254,254,254,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,202,202,202,202,202,202,225,254,254,254,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,254,254,254,254,254,254,254,244,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,254,254,254,254,254,254,213,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,163,249,249,167,222,192,152,86,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,210,253,253,178,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,253,253,97,2,0,0,61,228,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,211,0,0,0,0,68,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,96,209,253,207,25,0,0,0,0,173,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,107,253,253,233,28,0,0,0,0,0,201,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,245,122,71,0,0,0,0,15,153,237,216,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,205,9,0,0,0,0,0,94,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,159,14,14,14,14,7,173,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,225,253,253,253,253,253,254,190,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,134,134,134,134,134,185,254,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,185,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,228,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,220,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,153,255,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,255,101,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,184,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,197,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,243,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,240,207,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,199,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,239,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,215,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,198,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,208,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,253,187,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,209,117,4,83,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,255,57,0,0,203,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,199,2,0,24,226,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,181,0,0,149,220,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,244,7,77,246,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,206,247,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,253,168,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,69,151,190,121,28,0,24,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,222,197,78,1,57,156,0,206,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,177,217,112,4,0,0,0,162,133,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,209,51,0,0,0,0,0,155,236,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,206,23,0,0,0,0,0,46,239,246,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,248,78,0,0,0,0,0,12,179,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,231,10,0,0,0,0,13,174,201,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,235,20,0,0,2,85,237,83,89,234,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,226,123,135,212,228,62,2,135,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,202,196,99,56,0,0,42,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,240,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,249,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,182,255,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,169,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,86,170,170,96,170,26,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,148,254,254,254,254,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,242,131,128,127,150,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,242,68,0,0,0,33,244,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,244,67,0,0,0,0,147,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,249,110,0,0,0,0,12,225,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,40,0,0,0,0,0,77,254,226,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,147,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,159,254,184,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,254,181,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,186,254,233,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,121,254,173,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,239,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,205,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,92,21,18,176,255,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,200,198,192,233,254,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,255,240,248,254,214,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,254,239,110,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,148,196,169,254,255,138,166,215,132,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,254,253,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,161,238,229,131,105,105,155,191,176,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,205,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,242,36,18,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,229,253,232,184,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,131,135,250,207,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,248,109,0,0,55,243,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,211,0,0,0,0,128,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,191,52,0,0,0,0,5,229,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,218,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,44,9,0,0,0,0,0,0,185,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,220,139,9,0,0,0,0,0,73,240,247,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,122,0,0,0,0,0,96,231,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,244,153,100,82,106,163,230,253,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,253,253,253,253,254,250,223,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,253,250,165,166,54,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,207,28,0,0,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,66,0,0,0,0,0,0,0,0,75,192,240,132,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,178,0,0,0,0,0,0,0,26,216,252,252,234,34,0,0,0,0,0,0,0,0,0,0,0,94,252,252,198,0,0,0,0,0,0,0,116,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,94,252,252,198,0,0,0,0,0,0,20,221,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,94,252,252,108,0,0,0,0,0,0,94,252,252,252,252,233,33,0,0,0,0,0,0,0,0,0,0,0,108,252,209,24,0,0,0,0,0,0,178,252,195,210,252,228,12,0,0,0,0,0,0,0,0,0,0,0,226,252,185,0,0,0,0,0,0,70,241,198,22,186,252,250,100,0,0,0,0,0,0,0,0,0,0,0,226,252,115,0,0,0,0,0,64,246,202,19,0,186,252,225,0,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,0,64,255,253,26,0,0,187,253,226,0,0,0,0,0,0,0,0,0,0,0,107,252,252,109,0,0,68,184,246,253,95,2,0,0,186,252,225,0,0,0,0,0,0,0,0,0,0,0,11,229,252,210,192,226,243,252,252,97,2,0,0,0,186,252,225,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,252,252,252,198,39,0,0,0,0,0,186,252,113,0,0,0,0,0,0,0,0,0,0,0,0,20,165,220,185,185,101,22,0,0,0,0,0,0,186,220,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,50,235,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,217,231,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,113,113,113,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,85,86,210,225,225,225,226,249,252,252,252,241,149,0,0,0,0,0,0,0,0,0,0,0,0,0,76,234,252,253,252,252,252,252,253,252,252,252,252,253,233,75,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,245,242,252,240,223,223,227,252,253,252,202,10,0,0,0,0,0,0,0,0,0,0,0,119,252,252,253,204,87,75,112,63,0,0,13,189,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,32,216,253,141,15,0,0,0,0,0,0,0,141,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,18,27,0,0,0,0,0,0,0,0,10,178,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,204,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,85,178,225,226,234,252,252,252,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,45,19,32,198,246,252,252,252,253,252,252,252,252,229,150,57,57,25,0,0,0,0,0,0,0,0,0,73,234,196,215,237,252,252,252,252,253,252,252,252,252,253,252,252,252,205,0,0,0,0,0,0,0,0,141,240,252,236,112,50,158,252,252,252,253,252,252,252,252,253,252,252,252,173,0,0,0,0,0,0,0,0,255,253,253,84,0,0,147,253,253,253,255,168,0,0,0,141,241,253,178,63,0,0,0,0,0,0,0,0,253,252,201,19,85,226,249,252,252,252,106,18,0,0,0,0,24,27,9,0,0,0,0,0,0,0,0,0,253,252,239,203,252,253,252,252,198,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,233,252,252,252,225,176,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,112,112,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,87,234,235,36,0,0,0,0,0,0,46,25,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,187,252,252,247,41,0,0,0,0,8,156,231,199,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,252,149,0,0,0,0,15,189,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,67,183,252,252,252,207,17,0,0,0,67,227,252,252,194,90,0,0,0,0,0,0,0,0,0,0,20,101,243,252,252,188,74,30,0,0,2,101,200,252,252,241,52,0,0,0,0,0,0,0,0,0,0,32,210,252,252,252,252,84,0,0,0,0,95,252,252,252,180,76,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,241,84,33,90,90,91,212,247,252,252,241,76,0,0,0,0,0,0,0,0,0,0,0,81,242,252,252,252,245,193,214,252,252,253,252,252,252,194,52,0,0,0,0,0,0,0,0,0,0,0,0,192,252,252,252,252,252,252,252,252,252,253,252,252,181,73,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,253,253,253,253,253,253,253,255,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,206,252,252,252,252,252,252,252,252,253,80,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,97,237,250,252,252,252,252,243,176,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,252,252,252,230,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,237,252,252,252,225,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,174,252,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,207,207,75,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,152,203,181,141,58,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,172,247,188,232,234,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,82,101,143,252,245,67,35,225,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,132,237,254,254,254,254,254,243,80,210,248,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,251,211,107,23,36,120,240,246,98,218,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,251,166,0,0,0,0,0,16,43,189,212,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,250,214,14,0,0,0,0,10,148,250,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,234,103,6,0,0,154,225,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,44,195,254,184,24,129,235,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,240,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,154,253,98,190,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,131,0,13,212,225,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,238,254,29,0,0,55,244,195,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,219,6,0,0,0,100,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,116,0,0,0,0,23,248,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,63,0,0,0,0,49,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,248,29,0,0,0,38,167,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,233,211,115,115,135,254,244,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,236,254,254,254,173,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,52,7,93,131,131,131,192,131,235,210,131,80,4,0,0,0,0,0,0,0,0,0,0,0,0,0,14,209,254,254,254,254,254,254,251,242,242,248,253,254,148,1,0,0,0,0,0,0,0,0,0,0,0,0,11,187,239,242,211,112,112,112,79,0,0,55,154,254,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,36,0,0,0,0,0,0,0,0,113,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,243,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,239,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,177,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,116,254,254,235,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,234,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,240,254,254,94,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,213,254,254,154,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,204,254,254,154,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,202,254,254,154,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,242,254,254,155,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,244,254,254,156,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,119,245,254,254,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,184,254,254,254,180,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,240,57,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,255,242,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,255,163,219,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,160,160,160,116,99,99,57,57,161,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,181,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,232,233,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,97,177,211,110,110,218,253,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,253,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,253,253,253,253,213,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,5,5,5,5,5,249,253,120,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,226,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,190,151,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,164,113,191,210,210,210,200,181,210,135,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,254,254,254,254,254,254,254,254,186,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,254,254,254,254,254,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,254,237,179,179,216,254,254,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,203,248,254,189,56,0,0,12,25,117,125,68,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,244,199,238,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,173,254,254,169,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,211,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,227,254,254,232,110,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,157,254,254,254,254,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,149,194,230,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,167,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,83,9,0,0,3,26,120,126,145,159,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,206,180,180,189,254,254,254,254,254,212,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,255,254,254,254,254,254,254,240,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,112,254,254,254,254,254,254,254,166,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,57,110,110,110,94,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,156,254,255,254,188,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,217,151,54,54,68,224,229,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,223,223,251,240,146,100,22,0,18,202,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,166,161,161,184,180,80,0,169,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,195,253,27,0,0,0,0,0,0,181,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,201,17,0,0,0,0,57,250,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,241,191,4,0,0,18,205,164,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,245,185,13,52,202,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,225,240,159,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,235,253,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,233,179,147,247,141,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,229,10,0,99,243,141,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,154,0,0,0,112,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,150,0,0,0,2,168,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,222,0,0,0,0,17,213,214,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,239,44,0,0,0,0,59,238,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,160,189,10,0,0,0,0,117,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,224,164,0,0,0,0,0,215,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,248,104,0,0,0,0,175,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,238,103,0,0,0,185,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,207,253,255,253,253,253,253,255,128,113,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,131,246,252,252,253,252,252,252,252,253,252,252,234,225,48,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,252,252,253,252,252,252,252,253,252,252,252,252,229,53,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,117,84,84,84,225,233,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,214,110,0,0,0,38,142,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,255,253,253,84,0,0,0,26,207,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,6,122,214,253,252,252,234,146,0,29,200,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,196,214,252,252,252,198,215,252,252,252,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,180,252,253,252,252,252,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,207,253,255,253,253,253,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,252,252,253,252,252,252,252,253,243,193,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,200,252,252,252,196,70,55,149,195,253,252,252,121,25,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,252,252,236,0,0,0,0,0,84,139,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,236,50,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,84,0,0,0,0,0,0,0,147,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,15,253,252,252,218,85,85,85,85,85,163,226,249,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,252,252,253,252,252,252,252,253,252,239,102,25,0,0,0,0,0,0,0,0,0,0,0,0,0,38,218,252,252,252,253,252,252,252,252,253,226,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,112,128,252,253,252,252,252,173,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,141,255,178,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,234,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,252,253,171,101,225,214,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,226,38,176,250,254,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,227,38,0,0,175,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,224,43,0,0,104,246,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,252,118,0,0,101,246,252,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,78,128,254,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,233,145,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,252,252,244,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,113,150,249,253,252,252,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,254,253,253,241,242,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,197,252,253,214,109,47,116,252,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,214,106,19,0,0,29,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,240,101,0,0,0,4,178,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,250,254,253,216,41,29,179,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,228,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,130,234,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,28,140,215,214,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,240,255,254,165,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,104,234,253,253,227,227,253,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,214,177,55,30,56,227,253,234,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,61,30,0,0,0,0,135,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,238,253,220,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,137,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,244,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,242,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,172,221,253,219,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,63,63,63,63,63,174,210,253,253,253,175,63,47,0,0,0,0,0,0,0,0,0,0,0,0,0,150,195,253,253,253,253,253,253,253,253,253,253,236,248,202,116,0,0,0,0,0,0,0,0,0,0,0,0,122,248,253,253,253,253,253,248,232,143,96,96,57,83,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,116,124,182,175,130,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,157,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,254,250,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,198,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,254,254,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,254,254,235,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,234,32,72,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,104,0,19,110,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,101,0,94,254,250,211,103,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,101,0,182,254,254,254,254,249,178,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,101,0,128,254,254,254,254,254,254,246,200,67,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,106,0,87,254,254,218,161,239,249,254,254,240,141,9,0,0,0,0,0,0,0,0,0,0,0,225,254,254,235,26,28,248,254,172,0,0,85,219,254,254,254,220,28,0,0,0,0,0,0,0,0,0,0,59,248,254,254,143,0,95,210,107,0,0,0,11,59,190,254,254,216,16,0,0,0,0,0,0,0,0,0,0,177,254,254,249,136,4,0,0,0,0,0,0,0,15,155,254,254,144,0,0,0,0,0,0,0,0,0,0,10,182,254,254,254,183,40,0,0,0,0,0,0,0,28,210,254,242,41,0,0,0,0,0,0,0,0,0,0,9,199,254,254,254,243,163,44,22,0,0,0,0,0,29,254,254,113,0,0,0,0,0,0,0,0,0,0,0,35,147,250,254,254,254,254,229,197,144,102,102,116,219,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,64,226,254,254,254,254,254,254,254,254,254,254,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,109,191,239,254,254,254,254,254,254,254,254,174,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,62,128,157,122,157,157,155,62,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,242,254,255,254,178,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,241,240,176,176,212,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,199,49,0,0,4,146,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,202,222,18,0,0,0,0,31,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,100,0,0,0,0,0,26,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,201,13,0,0,0,0,0,126,248,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,112,0,0,0,0,0,76,248,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,36,0,0,0,0,37,220,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,201,4,0,0,39,206,236,254,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,193,0,0,0,129,254,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,244,86,39,39,178,254,254,249,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,146,250,254,254,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,137,137,114,239,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,188,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,169,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,232,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,198,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,190,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,192,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,161,221,254,254,186,136,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,164,230,211,206,148,148,156,206,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,240,239,179,25,0,0,0,0,0,178,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,232,160,25,0,0,0,0,0,0,0,195,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,166,253,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,190,234,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,202,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,254,254,254,211,161,136,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,230,215,139,115,64,140,206,220,249,180,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,25,0,0,0,0,0,13,96,181,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,194,235,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,229,220,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,46,0,0,0,0,0,0,0,0,0,0,0,0,102,34,0,0,0,0,0,0,0,0,0,0,0,229,253,46,0,0,0,0,0,0,0,0,0,0,0,24,254,170,7,0,0,0,0,0,0,0,13,78,229,255,124,0,0,0,0,0,0,0,0,0,0,0,0,3,124,254,131,47,13,0,0,0,17,130,235,253,253,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,220,183,116,124,224,254,240,145,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,160,160,254,236,194,160,136,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,48,215,253,252,252,239,188,128,92,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,253,252,252,252,252,253,252,210,169,81,27,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,252,252,147,182,190,42,42,60,147,200,252,252,229,53,0,0,0,0,0,0,0,0,0,0,0,43,227,253,243,79,0,0,54,35,0,0,0,0,98,229,254,253,83,0,0,0,0,0,0,0,0,0,0,183,252,245,82,0,0,0,0,0,0,0,0,0,0,27,253,252,212,28,0,0,0,0,0,0,0,0,0,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,38,221,252,180,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,99,247,205,11,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,252,129,0,0,0,0,0,0,0,0,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,147,0,0,0,0,0,0,0,0,138,252,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,182,0,0,0,0,0,0,0,0,22,221,252,221,30,0,0,0,0,0,0,0,0,0,0,0,0,127,252,155,0,0,0,0,0,0,0,0,0,99,221,252,217,109,16,0,0,0,0,0,0,0,0,0,0,197,252,147,0,0,0,0,0,0,0,0,0,0,74,217,252,253,186,53,0,0,0,0,0,0,0,0,116,249,252,103,0,0,0,0,0,0,0,0,0,0,0,54,211,254,253,253,227,148,148,104,96,114,148,255,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,231,252,252,252,253,252,252,252,252,253,252,210,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,118,196,231,232,231,231,231,231,232,117,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,46,0,0,0,0,0,0,3,45,138,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,187,17,0,0,0,0,0,0,118,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,218,19,0,0,0,0,0,0,116,253,252,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,230,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,153,0,0,0,0,0,0,136,250,253,178,48,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,255,107,7,11,22,24,24,191,253,253,252,84,0,0,0,0,0,0,0,0,0,0,0,0,51,186,252,252,253,252,102,182,244,253,252,252,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,253,252,252,252,252,253,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,253,252,252,252,252,253,252,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,147,75,22,22,22,232,253,252,221,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,32,0,0,0,0,0,155,253,242,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,231,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,143,253,253,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,249,253,253,248,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,243,253,253,217,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,253,166,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,218,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,232,169,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,101,248,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,245,112,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,195,253,253,242,162,162,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,220,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,253,246,199,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,88,214,196,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,25,25,146,207,253,253,253,171,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,254,253,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,242,253,253,254,253,253,253,253,239,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,254,253,216,169,72,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,242,253,253,184,118,60,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,191,253,253,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,170,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,254,254,202,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,217,217,217,233,253,250,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,199,254,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,18,52,0,0,32,189,254,253,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,217,240,206,148,226,253,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,253,253,254,253,175,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,222,253,253,253,253,253,254,179,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,132,231,253,253,253,185,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,63,189,254,255,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,154,231,253,253,253,253,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,120,223,253,253,253,253,201,200,210,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,186,253,253,253,198,138,65,2,0,81,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,32,158,253,253,239,137,11,0,0,46,158,237,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,80,213,253,253,193,68,0,0,0,98,237,253,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,29,221,253,253,245,58,6,34,125,224,252,253,253,253,253,251,39,0,0,0,0,0,0,0,0,0,0,20,217,253,253,253,147,152,253,253,253,253,253,253,253,253,253,105,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,253,253,253,253,253,253,253,253,253,253,243,44,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,253,253,253,253,253,231,141,250,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,253,253,199,86,37,87,252,253,217,17,0,0,0,0,0,0,0,0,0,0,0,0,23,223,253,253,253,253,200,85,13,0,36,220,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,23,23,23,23,10,0,0,0,95,253,253,240,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,213,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,237,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,202,253,253,216,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,231,255,148,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,253,253,253,150,136,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,197,253,247,250,253,253,253,253,202,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,226,253,253,172,129,250,253,253,253,242,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,135,253,253,253,229,91,0,202,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,210,20,0,0,34,234,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,224,253,253,191,63,0,0,0,0,141,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,22,224,253,253,190,22,0,0,0,0,0,100,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,6,141,253,253,242,58,0,0,0,0,0,0,100,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,243,94,0,0,0,0,0,0,0,100,253,253,135,0,0,0,0,0,0,0,0,0,0,0,48,228,253,253,210,0,0,0,0,0,0,0,0,133,253,253,103,0,0,0,0,0,0,0,0,0,0,0,143,253,253,242,88,0,0,0,0,0,0,0,170,247,253,220,8,0,0,0,0,0,0,0,0,0,0,4,178,253,253,116,0,0,0,0,0,0,0,111,246,253,220,36,0,0,0,0,0,0,0,0,0,0,0,117,253,253,243,61,0,0,0,0,0,0,111,246,253,219,37,0,0,0,0,0,0,0,0,0,0,0,6,237,253,244,80,0,0,0,0,0,0,110,246,253,219,98,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,228,0,0,0,0,0,0,76,220,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,239,121,150,106,106,106,197,248,253,253,123,4,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,253,253,253,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,253,253,253,253,253,253,253,253,161,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,5,79,205,253,253,253,226,129,35,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,181,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,246,243,82,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,227,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,251,254,123,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,254,219,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,61,0,0,0,0,0,7,70,70,70,70,11,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,73,16,16,111,97,171,178,254,254,254,254,145,16,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,254,254,254,254,254,254,254,254,254,254,250,67,0,0,0,0,0,0,0,0,0,0,0,36,228,254,254,254,254,254,254,236,192,223,254,254,254,254,254,172,11,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,255,227,163,208,254,254,254,254,254,180,17,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,254,254,254,254,254,254,254,254,247,0,0,0,0,0,0,0,0,0,0,0,0,0,117,200,208,254,254,254,254,254,254,254,254,251,200,68,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,100,246,254,255,254,240,100,100,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,218,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,233,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,123,254,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,173,253,254,149,244,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,126,81,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,205,97,0,125,247,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,210,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,247,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,249,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,189,237,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,141,200,254,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,206,226,172,253,251,237,205,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,211,175,12,191,246,94,95,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,182,203,240,94,0,14,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,195,37,0,0,0,255,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,85,62,4,0,0,0,0,227,192,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,255,114,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,202,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,201,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,159,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,240,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,244,253,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,222,253,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,149,253,253,253,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,235,253,253,253,253,253,253,237,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,141,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,162,193,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,247,253,253,135,8,131,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,214,84,5,0,124,252,253,253,230,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,234,253,253,251,145,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,145,240,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,242,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,202,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,56,111,155,214,214,131,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,249,254,254,254,254,254,254,252,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,184,228,90,90,92,205,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,69,0,0,0,9,87,254,231,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,244,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,124,249,252,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,166,254,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,254,251,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,167,250,254,251,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,30,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,250,248,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,247,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,197,233,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,118,240,255,254,165,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,244,253,253,253,253,253,238,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,182,253,120,116,253,253,253,253,166,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,157,253,225,5,22,99,238,253,253,253,139,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,107,0,0,0,167,253,253,169,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,239,0,0,0,0,20,193,253,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,239,0,0,0,0,0,28,253,253,203,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,179,0,0,0,0,0,1,10,197,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,103,0,0,0,0,0,0,0,125,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,103,0,0,0,0,0,0,0,91,250,238,44,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,253,103,0,0,0,0,0,0,0,0,241,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,103,0,0,0,0,0,0,0,0,151,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,74,251,253,103,0,0,0,0,0,0,0,0,104,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,103,0,0,0,0,0,0,0,0,104,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,103,0,0,0,0,0,0,0,51,239,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,226,41,0,0,0,0,0,3,166,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,253,225,5,0,0,0,56,201,253,228,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,236,253,180,56,79,179,227,253,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,243,253,253,253,253,251,154,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,250,253,253,152,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,131,214,254,254,164,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,228,253,253,253,253,253,241,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,229,253,253,215,188,149,192,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,165,253,253,161,16,0,0,3,128,251,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,196,19,0,0,0,0,0,158,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,174,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,253,192,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,223,0,0,0,0,41,113,144,50,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,143,0,1,82,164,244,250,250,252,200,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,124,0,127,253,218,114,35,38,91,247,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,126,122,251,165,18,0,0,0,0,224,236,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,181,253,199,20,0,0,0,0,47,244,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,65,0,0,0,0,8,199,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,227,10,0,0,0,19,129,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,168,0,0,0,17,163,253,230,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,194,253,232,46,0,73,216,253,207,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,249,245,250,253,185,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,88,248,253,155,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,57,57,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,198,234,252,252,0,132,222,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,150,237,253,252,252,252,26,243,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,216,253,253,239,150,76,0,126,231,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,169,253,252,233,96,38,0,0,0,0,19,215,215,0,0,0,0,0,0,0,0,0,0,0,0,0,132,240,252,244,93,37,0,0,0,0,0,0,0,197,164,0,0,0,0,0,0,0,0,0,0,0,0,126,243,252,202,25,0,0,0,0,0,0,0,0,51,246,139,0,0,0,0,0,0,0,0,0,0,48,191,255,247,137,13,0,0,0,0,0,0,0,0,0,169,253,128,0,0,0,0,0,0,0,0,0,13,172,252,247,103,0,0,0,0,0,0,0,0,0,0,7,187,196,9,0,0,0,0,0,0,0,0,0,144,252,252,50,0,0,0,0,0,0,0,0,0,0,38,204,252,168,0,0,0,0,0,0,0,0,0,26,243,214,90,0,0,0,0,0,0,0,0,0,0,38,225,253,227,43,0,0,0,0,0,0,0,0,0,204,247,100,0,0,0,0,0,0,0,0,13,41,141,229,253,226,38,0,0,0,0,0,0,0,0,0,0,253,208,13,0,0,0,0,0,0,0,82,206,253,252,252,227,38,0,0,0,0,0,0,0,0,0,0,0,253,252,171,85,86,85,85,134,198,197,240,252,253,233,130,31,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,252,253,252,252,252,253,252,252,252,140,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,244,253,253,255,253,253,253,251,225,137,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,184,197,121,84,84,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,131,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,251,253,253,211,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,254,232,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,253,210,154,253,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,163,6,161,254,253,242,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,57,0,44,224,248,253,147,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,240,253,181,7,0,0,0,209,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,246,253,242,77,0,0,0,0,47,222,253,205,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,223,0,0,0,0,0,0,50,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,223,0,0,0,0,0,0,15,253,253,241,71,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,224,0,0,0,0,0,0,0,121,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,223,0,0,0,0,0,0,0,92,246,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,223,0,0,0,0,0,0,0,0,224,253,206,9,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,223,0,0,0,0,0,0,0,0,224,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,11,214,253,250,145,4,0,0,0,0,0,107,250,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,106,250,253,253,121,0,0,0,0,29,214,253,253,157,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,211,112,0,0,112,212,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,227,253,253,251,239,241,251,253,253,253,189,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,232,253,253,253,254,253,253,232,164,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,245,253,253,255,253,155,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,208,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,215,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,222,254,217,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,77,77,77,77,77,77,77,77,236,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,230,254,254,254,254,254,254,254,254,254,254,254,234,142,42,0,0,0,0,0,0,0,0,0,0,0,50,224,254,254,254,254,254,254,254,254,254,254,254,254,254,246,69,0,0,0,0,0,0,0,0,0,0,0,0,89,236,254,254,248,169,220,254,254,254,254,219,169,169,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,247,152,213,254,254,254,232,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,254,254,254,236,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,159,213,254,254,254,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,226,254,254,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,229,254,254,254,238,58,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,254,254,193,105,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,254,254,254,254,254,254,176,171,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,248,254,254,254,254,254,254,254,242,54,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,254,254,254,254,254,254,254,186,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,141,254,254,254,254,254,254,254,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,197,249,254,254,254,254,254,254,227,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,254,254,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,65,65,242,254,121,65,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,51,51,51,213,254,252,252,252,51,51,20,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,191,250,252,250,250,250,252,250,250,250,252,250,160,102,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,252,250,250,250,252,250,250,250,252,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,252,250,250,250,252,250,250,250,252,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,41,222,222,202,203,202,202,202,163,0,123,243,254,252,222,202,0,0,0,0,0,0,0,0,0,0,0,0,0,61,60,0,0,0,0,0,0,41,102,221,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,191,250,250,252,189,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,250,250,250,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,252,252,252,254,252,130,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,252,250,250,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,250,250,250,252,250,250,250,152,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,49,49,49,252,250,250,250,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,51,10,0,0,0,0,0,82,232,252,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,49,0,0,0,0,0,0,91,149,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,160,250,170,123,0,0,0,0,0,0,0,130,210,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,250,243,121,0,0,0,0,0,0,213,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,252,252,90,52,51,51,213,255,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,252,250,250,250,232,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,252,250,250,250,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,90,250,250,250,252,250,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,164,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,253,253,253,222,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,186,253,253,253,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,253,225,182,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,162,18,24,193,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,196,68,0,10,134,255,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,39,0,0,0,85,253,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,213,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,237,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,253,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,59,59,149,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,65,147,250,253,254,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,253,254,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,253,253,237,253,254,253,253,253,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,253,154,178,253,254,207,155,208,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,255,216,254,254,254,135,15,0,175,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,253,253,253,162,0,0,0,129,253,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,253,253,240,40,0,0,0,40,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,254,234,116,16,0,0,0,0,220,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,133,31,0,0,0,0,0,0,196,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,255,180,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,252,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,252,252,210,94,60,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,189,231,244,246,230,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,253,253,253,253,242,230,247,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,252,252,252,231,42,0,67,202,252,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,240,202,252,106,0,0,0,68,246,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,164,44,236,22,0,0,0,0,94,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,252,253,92,0,19,2,0,0,0,0,0,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,168,0,0,0,0,0,0,0,0,0,255,253,131,0,0,0,0,0,0,0,0,0,0,0,9,197,252,252,116,0,0,0,0,0,0,0,0,0,201,252,183,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,32,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,0,0,0,0,0,0,0,0,0,43,253,252,141,0,0,0,0,0,0,0,0,0,0,0,5,190,252,252,0,0,0,0,0,0,0,0,43,230,253,157,6,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,11,0,0,0,0,0,0,49,233,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,136,0,0,0,0,47,68,228,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,247,184,101,164,184,253,252,252,227,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,88,244,253,252,252,252,252,253,252,185,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,148,252,252,252,200,137,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,195,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,186,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,229,253,253,152,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,245,253,253,222,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,90,157,253,253,43,80,148,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,223,253,166,2,168,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,220,21,0,168,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,215,253,117,0,0,168,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,195,253,232,8,0,0,168,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,106,0,0,0,168,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,222,14,0,0,0,168,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,253,66,0,0,0,0,168,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,242,45,0,0,0,0,168,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,205,0,0,0,0,18,237,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,248,50,0,0,0,0,184,253,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,0,0,0,0,24,242,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,247,40,0,0,90,226,253,160,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,230,104,185,252,253,167,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,253,253,253,253,228,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,212,253,200,123,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,138,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,233,183,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,240,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,253,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,255,249,63,0,0,0,0,7,24,128,139,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,249,117,0,0,0,5,68,186,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,252,230,0,0,0,32,191,252,252,252,252,253,219,19,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,135,0,0,119,228,253,252,252,176,160,253,235,44,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,116,0,168,248,252,243,137,106,4,0,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,139,212,253,253,180,0,0,0,0,74,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,253,252,252,193,8,0,0,34,89,244,228,75,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,252,253,252,252,227,184,185,184,234,252,221,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,192,253,252,252,252,252,253,252,227,160,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,33,137,221,252,200,137,137,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,255,253,87,0,0,21,73,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,215,63,144,176,251,236,144,144,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,241,253,251,246,231,251,253,251,251,251,251,243,217,30,0,0,0,0,0,0,0,0,0,0,0,0,115,251,251,253,251,251,251,251,253,251,251,251,251,253,251,113,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,251,251,251,251,72,71,71,148,251,253,251,241,103,0,0,0,0,0,0,0,0,0,21,176,253,253,253,182,222,253,221,51,0,0,0,0,0,255,253,253,253,72,0,0,0,0,0,0,0,0,73,251,251,251,147,0,144,127,61,0,0,0,0,0,0,149,251,251,251,71,0,0,0,0,0,0,0,0,73,251,251,251,71,0,20,5,0,0,0,0,0,0,0,10,138,246,251,226,0,0,0,0,0,0,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,0,0,0,0,0,0,0,0,73,251,251,173,20,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,0,0,0,0,0,0,0,0,255,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,145,253,253,201,0,0,0,0,0,0,0,0,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,42,206,251,251,71,0,0,0,0,0,0,0,0,98,251,251,251,71,0,0,0,0,0,0,0,0,0,27,228,251,251,157,10,0,0,0,0,0,0,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,47,211,253,251,235,82,0,0,0,0,0,0,0,0,0,21,174,251,251,200,130,0,0,0,0,0,0,156,211,251,253,251,86,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,149,73,73,73,255,253,253,253,253,255,211,25,0,0,0,0,0,0,0,0,0,0,0,0,93,169,251,253,251,251,251,251,253,251,251,251,251,108,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,164,227,251,251,251,251,253,230,215,137,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,205,251,204,142,143,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,71,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,64,0,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,64,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,64,0,191,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,191,64,0,0,191,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,64,255,255,128,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,64,191,191,64,0,0,0,0,0,0,0,0,0,191,255,191,64,0,0,0,0,0,0,0,0,0,128,128,191,255,128,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,0,64,128,128,128,128,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,170,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,170,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,141,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,29,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,114,0,0,0,0,0,0,0,198,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,114,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,198,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,141,0,0,0,0,0,0,0,57,86,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,29,0,0,0,0,114,170,226,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,141,255,141,29,86,114,198,255,255,255,255,170,86,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,198,255,198,226,255,255,255,226,141,29,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,226,141,86,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,57,170,141,57,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,66,226,242,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,11,74,111,189,254,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,50,99,149,142,183,254,254,254,254,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,34,244,241,254,254,254,254,254,250,189,68,56,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,20,230,254,254,254,254,254,180,138,61,0,0,95,254,254,65,0,0,0,0,0,0,0,0,0,0,0,2,166,254,254,239,151,70,25,1,0,0,0,9,180,254,250,57,0,0,0,0,0,0,0,0,0,0,0,3,134,243,229,83,0,0,0,0,0,0,0,71,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,10,0,0,0,0,0,0,0,0,126,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,156,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,197,254,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,166,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,254,207,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,187,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,168,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,221,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,253,253,126,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,180,253,253,253,253,253,119,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,218,253,253,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,218,253,253,253,246,128,143,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,50,218,253,253,228,189,70,0,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,174,253,253,247,188,27,0,0,0,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,5,217,253,253,223,114,0,0,0,0,0,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,249,125,29,0,0,0,0,0,0,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,2,68,63,0,0,0,0,0,0,0,0,75,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,183,253,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,81,109,205,242,253,253,253,166,10,0,0,38,2,0,0,0,0,0,0,0,0,0,0,0,0,11,106,218,253,253,253,253,253,253,253,253,216,211,211,231,5,0,0,0,0,0,0,0,0,0,0,7,94,173,253,253,253,253,253,253,189,37,171,253,253,253,212,103,1,0,0,0,0,0,0,0,0,0,0,68,253,253,253,253,253,253,253,178,48,0,11,76,45,30,17,0,0,0,0,0,0,0,0,0,0,0,64,243,253,253,253,253,253,253,227,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,245,253,253,253,253,253,253,201,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,253,253,233,112,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,177,112,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,38,195,255,255,139,38,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,147,129,199,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,166,253,253,253,253,253,253,250,252,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,253,253,253,244,210,109,35,141,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,172,51,0,0,54,194,253,170,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,175,52,3,0,0,11,208,253,229,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,97,93,0,0,0,0,0,156,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,250,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,110,249,253,243,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,249,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,253,249,192,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,184,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,152,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,253,195,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,233,253,241,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,208,253,243,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,210,219,140,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,153,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,130,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,179,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,174,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,96,219,255,254,254,254,176,138,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,253,253,253,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,251,253,245,217,153,114,173,230,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,157,0,0,0,0,24,132,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,186,7,0,0,0,15,17,3,20,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,134,0,0,0,59,219,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,190,95,106,223,247,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,248,248,248,248,251,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,220,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,252,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,253,205,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,242,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,251,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,93,234,254,255,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,232,253,253,253,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,235,246,94,10,137,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,253,126,0,0,89,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,238,8,0,5,148,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,73,37,36,72,253,232,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,236,253,41,10,103,241,253,224,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,137,184,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,251,189,182,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,124,201,180,60,0,89,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,181,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,146,229,254,255,169,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,253,253,253,209,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,229,103,32,102,179,253,221,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,249,97,0,0,0,0,173,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,97,0,0,0,0,130,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,52,0,0,0,0,130,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,250,208,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,86,226,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,159,253,253,253,232,162,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,161,124,38,16,67,249,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,253,235,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,104,40,0,0,0,0,113,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,251,166,141,141,226,251,253,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,181,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,105,145,152,253,168,44,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,143,143,239,255,253,162,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,152,246,252,252,252,253,252,252,203,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,252,248,153,153,106,44,72,235,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,245,77,0,0,0,0,0,151,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,249,240,81,0,0,0,0,0,0,100,252,209,56,29,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,216,58,81,89,89,89,89,118,219,252,252,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,52,248,252,245,251,252,252,252,253,252,252,252,221,131,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,237,252,214,252,239,208,195,99,226,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,66,9,66,46,0,0,50,241,236,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,195,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,252,154,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,251,253,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,232,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,238,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,244,252,199,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,209,170,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,166,230,254,255,169,85,79,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,125,248,253,253,253,254,253,253,253,231,85,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,253,253,253,253,253,254,253,253,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,253,253,253,216,143,114,134,211,253,253,250,55,0,0,0,0,0,0,0,0,0,0,0,0,11,220,253,253,169,47,206,38,0,0,0,8,223,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,32,228,253,253,64,0,0,0,0,0,0,81,235,253,249,53,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,211,16,0,0,0,0,107,239,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,253,222,72,0,0,127,249,253,253,153,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,129,251,253,253,250,184,184,251,253,253,200,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,254,253,253,156,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,255,254,254,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,248,253,253,253,254,253,253,253,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,197,253,253,253,251,101,17,126,249,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,247,158,25,0,0,0,45,239,253,249,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,135,0,0,0,0,0,0,77,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,110,21,0,0,0,0,21,171,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,225,114,54,27,112,226,253,253,249,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,154,253,253,253,253,253,254,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,112,226,248,253,253,254,253,253,248,124,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,165,226,254,253,150,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,151,241,254,251,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,213,253,253,254,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,239,254,222,157,255,234,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,132,254,251,173,18,0,254,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,180,253,254,173,0,0,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,240,253,237,154,18,0,0,0,254,245,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,207,253,162,58,0,0,0,0,0,178,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,183,8,0,0,0,0,0,0,97,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,226,125,118,118,80,118,118,80,149,253,158,27,20,8,0,7,20,12,0,0,0,0,0,0,0,0,127,253,253,253,253,254,253,253,253,253,254,253,253,253,253,206,175,199,253,155,0,0,0,0,0,0,0,0,5,19,49,117,191,177,206,117,79,153,186,253,225,197,237,19,176,117,117,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,182,39,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,230,223,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,239,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,247,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,230,226,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,245,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,250,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,236,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,242,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,157,254,96,14,59,59,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,111,187,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,206,175,230,242,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,254,217,102,8,4,188,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,223,12,0,0,58,254,185,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,255,153,0,0,37,187,206,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,244,42,0,54,202,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,234,25,131,236,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,252,241,254,254,132,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,201,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,87,144,62,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,139,204,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,210,253,253,157,44,108,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,228,253,215,83,1,0,4,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,119,227,253,190,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,209,255,253,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,248,253,185,55,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,166,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,248,253,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,183,247,253,166,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,250,254,243,131,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,188,253,239,74,122,207,177,177,163,67,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,207,253,245,73,0,79,253,253,253,254,253,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,201,62,0,0,1,10,10,59,122,149,250,234,61,5,0,0,0,0,0,0,0,0,0,0,0,0,254,253,129,0,0,0,0,0,0,0,0,0,138,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,254,253,82,0,0,0,0,0,0,0,0,24,153,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,196,253,202,64,12,12,12,12,45,122,233,238,253,243,145,5,0,0,0,0,0,0,0,0,0,0,0,0,13,207,253,253,253,253,253,253,253,253,229,180,99,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,187,253,253,253,216,176,142,66,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,33,33,33,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,11,52,47,3,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,173,0,0,82,173,247,251,221,224,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,222,89,201,252,254,190,105,31,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,255,254,183,96,26,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,244,254,198,68,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,222,254,199,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,241,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,220,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,248,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,223,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,248,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,156,246,254,203,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,37,191,254,250,179,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,211,229,254,229,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,251,178,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,79,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,139,253,250,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,37,187,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,174,252,252,252,253,244,169,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,147,235,252,252,252,194,195,252,252,238,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,252,252,252,190,71,3,3,71,225,252,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,184,252,228,70,7,0,0,0,9,189,252,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,36,25,0,0,0,0,0,71,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,242,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,248,252,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,255,253,253,253,253,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,238,241,229,216,108,130,234,252,125,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,50,0,0,0,0,61,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,232,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,201,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,197,252,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,14,177,188,97,97,60,0,0,51,109,222,252,229,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,243,229,229,242,252,252,179,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,92,218,252,252,252,252,252,248,131,57,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,207,250,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,178,177,177,161,17,215,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,182,229,254,253,253,231,0,199,253,246,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,250,253,253,232,154,121,62,0,94,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,253,236,150,0,0,0,0,0,89,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,90,0,0,0,0,0,0,89,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,66,0,0,0,0,0,0,141,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,253,133,0,0,0,0,0,54,232,253,226,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,233,24,0,0,0,51,231,253,250,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,177,0,78,154,238,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,159,255,254,252,197,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,253,255,253,227,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,175,253,253,254,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,171,253,253,253,234,245,253,206,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,220,117,12,65,237,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,180,251,253,253,167,22,0,0,0,177,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,253,252,145,22,2,0,0,0,7,180,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,235,45,45,45,45,45,93,211,253,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,253,253,253,253,253,253,253,254,199,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,143,249,253,253,253,253,253,205,129,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,236,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,251,219,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,247,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,181,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,225,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,158,251,251,218,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,71,159,159,195,159,159,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,99,225,252,194,202,166,158,226,236,194,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,181,62,0,0,0,0,0,32,163,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,106,0,0,0,0,0,0,25,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,106,0,0,0,0,8,130,232,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,192,15,0,0,11,205,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,249,155,0,29,192,238,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,248,114,137,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,239,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,234,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,250,206,223,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,143,34,240,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,227,35,0,138,249,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,99,0,0,9,217,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,239,31,0,0,0,78,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,248,115,0,0,0,3,140,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,106,0,0,0,55,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,106,0,0,57,238,234,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,245,181,130,198,242,179,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,254,187,104,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,150,163,195,163,215,176,169,254,255,234,163,195,163,163,163,86,16,0,0,0,0,0,0,0,0,0,0,4,173,198,198,199,198,198,198,198,199,198,166,198,198,199,249,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,250,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,255,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,243,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,222,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,140,246,251,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,253,251,251,157,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,235,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,251,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,255,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,251,253,230,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,241,251,251,201,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,251,225,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,168,255,254,187,157,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,162,39,12,192,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,63,27,0,0,189,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,225,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,211,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,220,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,243,253,253,253,253,219,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,240,253,253,179,82,232,229,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,161,65,18,0,139,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,210,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,12,27,27,17,0,0,0,0,0,0,5,128,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,253,216,107,4,0,0,0,32,169,253,251,220,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,110,229,253,163,107,14,14,130,253,244,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,117,226,253,253,253,252,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,123,156,155,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,41,29,29,29,29,41,141,141,91,29,29,29,128,204,253,168,0,0,0,0,0,0,0,0,0,0,131,252,252,253,252,252,252,253,252,252,252,253,252,252,252,253,252,93,0,0,0,0,0,0,0,0,0,0,131,252,252,253,252,252,252,253,252,252,252,253,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,32,228,252,253,252,202,252,253,177,190,240,253,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,255,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,214,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,229,252,186,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,133,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,226,225,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,255,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,152,252,226,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,138,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,250,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,228,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,254,169,0,0,0,0,43,60,147,106,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,75,44,90,184,184,235,254,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,189,241,254,255,254,245,208,216,254,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,223,181,85,67,0,60,254,237,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,199,91,19,0,0,0,30,225,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,102,0,0,0,0,6,135,254,251,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,254,220,43,4,6,20,135,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,254,166,173,254,254,254,225,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,232,250,254,254,254,254,250,156,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,124,191,124,124,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,255,253,253,253,167,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,252,252,252,252,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,96,96,96,119,242,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,201,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,201,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,172,229,243,252,252,134,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,252,252,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,255,253,253,248,253,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,234,253,250,153,80,245,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,96,87,0,31,225,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,61,61,12,0,0,0,0,0,0,49,252,200,14,0,0,0,0,0,0,0,0,0,0,0,0,0,11,164,252,252,204,147,7,0,0,0,11,164,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,224,252,252,252,220,16,0,0,0,134,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,252,239,108,97,98,166,239,252,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,169,252,252,252,252,252,253,252,252,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,172,252,252,252,253,252,177,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127,194,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,255,151,0,0,0,0,0,0,0,0,14,59,18,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,204,6,0,0,0,0,0,7,73,192,224,253,196,17,0,0,0,0,0,0,0,0,0,0,0,85,247,253,128,0,0,0,0,0,37,169,253,253,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,175,253,237,45,0,0,0,0,47,190,253,247,176,117,232,253,117,0,0,0,0,0,0,0,0,0,0,8,205,253,155,0,0,0,0,0,156,253,253,176,0,61,229,253,117,0,0,0,0,0,0,0,0,0,0,80,254,254,155,0,0,0,0,83,255,254,152,0,0,255,254,254,117,0,0,0,0,0,0,0,0,0,0,154,253,253,73,0,0,0,4,199,254,191,12,0,0,254,253,209,25,0,0,0,0,0,0,0,0,0,0,118,253,253,58,0,0,0,107,253,254,106,0,0,135,254,247,54,0,0,0,0,0,0,0,0,0,0,0,118,253,253,58,0,0,0,227,253,184,3,0,52,248,254,165,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,58,0,0,0,234,253,98,0,31,219,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,16,236,254,81,0,0,0,235,254,121,35,186,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,200,53,0,0,107,253,245,232,253,250,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,209,253,236,168,109,187,253,254,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,206,254,253,253,253,253,254,234,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,81,155,155,245,177,96,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,48,144,144,250,182,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,210,254,253,224,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,198,77,25,44,137,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,231,5,0,0,12,169,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,251,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,151,250,253,251,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,211,253,253,250,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,203,254,253,253,238,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,253,253,253,208,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,207,222,221,221,239,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,192,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,250,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,212,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,118,244,253,253,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,4,0,0,0,9,60,188,253,253,253,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,189,155,155,155,228,253,255,253,253,201,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,253,253,253,244,176,132,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,105,181,253,253,220,143,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,128,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,255,255,255,191,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,128,255,255,191,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,64,255,255,191,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,128,255,255,128,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,64,255,255,255,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,60,171,171,216,255,254,205,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,170,254,254,254,254,254,254,254,208,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,254,254,254,247,245,222,236,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,254,251,182,71,34,24,0,18,206,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,251,117,0,0,0,0,0,6,186,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,72,0,0,0,0,0,0,63,254,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,26,175,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,176,254,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,53,165,231,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,174,254,254,254,254,254,220,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,200,254,254,254,244,233,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,254,196,77,29,21,118,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,143,103,6,0,0,0,63,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,59,67,0,0,0,0,0,0,13,72,134,241,254,191,1,0,0,0,0,0,0,0,0,0,0,0,0,0,175,244,151,103,76,76,116,172,244,254,254,254,235,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,254,254,254,254,254,254,254,237,155,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,126,254,254,254,254,254,212,155,87,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,147,254,255,163,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,198,253,231,226,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,252,133,31,20,214,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,159,0,0,0,162,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,33,0,0,0,78,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,11,0,0,0,78,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,125,0,0,0,78,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,57,0,0,0,143,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,78,29,150,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,233,253,228,241,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,237,253,253,253,253,183,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,248,88,253,253,253,216,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,209,249,253,235,175,253,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,227,77,21,193,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,188,185,31,0,0,22,224,222,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,150,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,169,138,138,24,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,252,252,252,253,173,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,90,151,111,183,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,246,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,158,252,241,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,253,190,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,236,252,219,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,99,253,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,70,70,188,252,215,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,252,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,37,60,91,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,141,233,227,220,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,201,156,98,15,10,196,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,0,0,0,45,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,153,225,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,255,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,247,182,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,193,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,229,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,160,245,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,78,53,0,0,0,0,0,0,0,0,174,246,37,0,0,0,0,0,0,0,0,8,85,118,170,170,184,252,247,142,0,0,0,0,0,0,0,0,181,172,0,0,0,0,14,21,73,60,144,247,248,234,202,153,139,73,7,0,0,0,0,0,0,0,0,0,245,230,131,114,114,188,234,254,251,222,179,95,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,192,254,254,215,187,128,48,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,48,50,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,69,108,236,255,146,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,113,205,227,254,254,238,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,102,241,254,252,216,174,125,34,108,236,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,254,241,159,52,0,0,0,0,124,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,82,0,0,0,0,0,10,214,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,42,87,5,0,0,0,0,0,160,252,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,238,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,190,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,214,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,244,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,170,179,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,173,236,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,161,237,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,251,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,244,169,0,0,0,0,0,0,40,120,63,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,228,29,0,0,33,115,175,224,250,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,65,56,118,201,252,254,239,218,155,82,80,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,254,254,254,232,162,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,229,178,97,26,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,137,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,118,208,248,251,253,253,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,144,244,253,253,253,253,253,253,253,247,0,0,0,0,0,0,0,0,0,0,103,105,105,105,219,235,235,250,253,253,253,253,253,253,253,253,253,247,0,0,0,0,0,0,0,0,0,113,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,247,0,0,0,0,0,0,0,0,0,125,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,247,0,0,0,0,0,0,0,0,0,83,251,253,253,253,253,253,253,253,253,253,192,145,38,176,253,253,249,97,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,227,134,45,45,45,13,0,13,191,253,253,132,0,0,0,0,0,0,0,0,0,0,0,50,175,128,51,51,34,0,0,0,0,0,0,77,253,253,248,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,234,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,247,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,248,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,226,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,216,255,152,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,239,253,253,253,237,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,253,250,202,253,253,186,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,215,253,225,37,0,155,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,191,42,0,0,22,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,251,210,7,0,0,0,73,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,184,0,0,0,0,197,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,253,97,0,0,0,71,250,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,243,8,0,0,34,218,253,253,205,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,243,0,0,27,182,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,230,251,116,32,218,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,250,243,253,249,193,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,211,253,253,199,107,93,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,48,48,4,0,93,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,247,253,156,56,105,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,238,253,252,251,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,204,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,96,234,253,255,233,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,92,197,251,251,251,253,251,220,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,253,251,251,251,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,210,251,253,251,251,196,228,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,251,253,251,172,12,158,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,218,219,39,0,0,159,255,253,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,39,0,0,0,158,253,251,141,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,253,251,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,251,253,243,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,221,251,251,241,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,79,0,0,0,0,0,16,127,127,48,0,0,0,0,0,0,0,0,0,0,0,16,64,223,244,251,251,211,0,0,0,0,0,84,225,251,251,133,0,0,0,0,0,0,0,0,0,0,80,181,251,253,251,251,211,35,0,0,0,0,0,96,251,251,251,251,0,0,0,0,0,0,0,0,36,214,253,253,253,255,253,253,253,153,96,84,0,0,60,155,253,253,253,95,0,0,0,0,0,0,0,0,115,251,251,251,251,253,251,251,251,251,253,244,190,190,228,253,251,251,184,23,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,188,15,0,0,0,0,0,0,0,0,0,253,251,251,251,251,189,89,188,244,251,253,251,251,251,251,253,204,94,0,0,0,0,0,0,0,0,0,0,253,251,251,251,152,0,0,0,83,94,253,251,251,251,251,193,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,98,144,133,163,218,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,175,96,147,158,201,254,151,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,68,120,179,238,253,254,254,254,254,254,254,227,33,0,0,0,0,0,0,0,0,0,0,0,0,28,168,240,254,254,254,254,254,254,224,247,235,254,248,55,0,0,0,0,0,0,0,0,0,0,0,0,107,237,254,254,251,211,223,165,185,92,61,243,242,244,97,10,0,0,0,0,0,0,0,0,0,0,0,0,126,254,237,131,122,2,14,15,10,87,141,248,254,210,32,0,0,0,0,0,0,0,0,0,0,0,0,0,47,139,121,0,0,0,0,85,153,254,254,254,254,248,129,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,135,254,254,254,226,163,245,254,248,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,160,254,254,193,136,32,0,180,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,208,254,227,33,0,0,0,24,236,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,122,116,0,0,0,0,0,13,220,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,238,248,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,226,32,0,0,0,0,0,0,0,0,0,14,183,219,140,207,146,131,126,44,29,16,0,0,0,0,108,254,103,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,254,254,254,254,239,226,211,159,105,156,216,244,67,36,36,0,0,0,0,0,0,0,0,197,254,254,254,240,249,254,254,254,254,254,254,254,254,254,254,254,254,254,153,0,0,0,0,0,0,0,0,126,253,254,254,222,243,254,254,254,254,255,254,254,254,254,254,254,254,254,160,0,0,0,0,0,0,0,0,0,179,254,254,254,254,254,254,254,254,254,254,194,127,97,85,100,130,100,22,0,0,0,0,0,0,0,0,0,22,129,166,166,166,166,166,166,166,109,79,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,29,81,109,110,136,244,249,205,255,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,253,253,253,253,253,253,253,221,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,253,205,200,200,235,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,189,208,154,65,65,6,0,0,166,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,18,0,0,0,0,0,0,166,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,34,250,253,251,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,247,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,52,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,242,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,238,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,95,95,178,213,247,253,253,184,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,217,242,253,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,37,219,252,253,253,253,253,253,253,253,253,253,237,46,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,244,224,237,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,4,172,253,253,253,253,253,253,253,242,89,0,39,228,253,206,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,253,253,253,253,212,90,0,0,0,100,253,206,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,253,253,253,246,64,0,0,0,0,12,253,113,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,253,211,150,32,0,0,0,0,0,8,153,53,0,0,0,0,0,0,0,0,0,0,0,0,2,106,253,220,135,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,141,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,0,0,0,0,129,139,229,244,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,156,172,24,31,0,0,14,174,179,253,254,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,7,197,254,253,78,45,0,0,0,0,47,230,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,254,245,48,0,0,0,0,0,136,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,49,246,254,255,114,0,0,0,0,0,109,246,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,253,114,6,0,0,0,0,70,241,253,245,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,100,0,0,0,0,0,19,226,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,222,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,168,253,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,247,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,169,253,237,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,254,253,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,171,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,226,255,255,198,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,198,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,170,114,57,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,170,170,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,170,170,198,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,114,29,57,86,141,226,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,255,198,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,198,170,114,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,68,15,0,18,106,126,126,126,126,126,126,126,126,0,0,0,0,0,0,0,0,0,0,5,35,112,178,237,254,223,201,226,244,230,142,111,142,128,53,53,53,0,0,0,0,0,0,0,0,0,28,191,254,254,244,185,251,193,109,98,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,254,182,99,21,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,236,22,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,249,108,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,236,254,184,64,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,141,238,254,221,148,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,128,212,248,237,144,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,216,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,160,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,121,77,68,68,167,251,254,194,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,221,200,245,249,200,138,86,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,15,0,30,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,121,121,233,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,128,240,253,252,252,252,252,198,95,240,240,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,194,238,252,253,252,252,252,252,246,244,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,253,176,53,107,252,252,252,252,248,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,253,118,0,186,252,252,252,245,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,204,252,252,253,168,103,242,252,252,243,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,252,252,252,252,243,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,185,252,253,252,252,252,209,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,14,152,252,253,252,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,253,252,252,139,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,255,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,208,252,252,252,252,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,233,252,252,252,252,252,253,252,168,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,134,252,252,252,201,106,252,253,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,233,252,252,202,94,76,132,252,253,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,249,252,252,252,66,30,228,252,252,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,252,206,51,144,252,252,252,149,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,251,252,252,227,228,252,252,229,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,250,252,252,242,217,106,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,189,189,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,170,198,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,255,255,255,255,255,255,170,0,0,0,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,198,29,57,0,170,57,0,0,0,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,114,0,0,0,0,198,86,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,0,0,0,0,255,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,198,29,0,0,226,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,141,0,0,0,0,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,255,114,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,114,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,114,114,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,165,253,255,254,169,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,250,254,236,249,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,248,235,143,20,25,42,230,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,202,25,0,0,0,0,91,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,251,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,250,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,246,245,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,225,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,239,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,242,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,247,254,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,247,254,131,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,88,232,254,203,9,0,0,0,0,0,25,41,55,202,182,39,0,0,0,0,0,0,0,0,35,117,117,167,254,254,254,166,199,205,205,205,205,205,235,254,254,254,254,107,0,0,0,0,0,0,0,0,113,254,254,254,254,254,254,254,254,254,254,253,250,240,240,240,195,151,115,19,0,0,0,0,0,0,0,0,103,254,236,152,76,76,76,107,76,76,76,70,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,132,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,253,253,220,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,107,249,253,253,253,253,229,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,197,211,253,253,253,253,253,253,253,224,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,253,253,253,253,223,52,0,0,0,0,0,0,0,0,0,0,0,0,0,7,129,247,253,253,253,183,45,203,203,226,253,253,253,134,3,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,253,167,77,0,0,0,52,227,253,253,253,15,0,0,0,0,0,0,0,0,0,0,5,66,196,253,253,217,38,9,0,0,0,0,0,162,253,253,253,183,24,0,0,0,0,0,0,0,0,0,17,253,253,253,222,44,0,0,0,0,0,0,0,42,253,253,253,253,89,0,0,0,0,0,0,0,0,0,70,253,253,253,44,0,0,0,0,0,0,0,0,28,213,253,253,253,89,0,0,0,0,0,0,0,0,62,230,253,252,165,13,0,0,0,0,0,0,0,0,0,131,253,253,253,89,0,0,0,0,0,0,0,0,91,253,253,220,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,152,0,0,0,0,0,0,0,0,213,253,253,220,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,253,0,0,0,0,0,0,0,0,254,253,253,220,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,253,0,0,0,0,0,0,0,0,255,253,253,247,126,42,42,31,0,14,42,42,42,116,205,230,253,253,253,120,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,221,131,171,253,253,253,253,253,253,253,253,253,89,0,0,0,0,0,0,0,0,197,236,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,151,11,0,0,0,0,0,0,0,0,0,85,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,166,7,0,0,0,0,0,0,0,0,0,0,12,179,188,253,253,253,253,253,253,253,253,253,219,179,94,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,12,89,89,89,238,253,199,89,89,89,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,242,252,131,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,226,253,209,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,159,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,253,197,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,187,254,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,251,253,230,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,158,253,253,125,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,249,253,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,254,244,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,169,253,241,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,244,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,234,254,220,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,242,49,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,233,253,151,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,64,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,64,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,128,128,128,128,128,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,211,255,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,210,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,216,241,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,251,253,222,20,50,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,245,83,63,89,133,207,207,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,230,0,177,253,253,253,253,250,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,253,171,40,250,252,247,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,112,19,194,160,0,220,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,112,0,0,0,0,132,253,235,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,112,0,0,0,0,231,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,112,0,0,0,74,248,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,155,0,0,29,209,253,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,230,0,0,78,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,239,253,230,0,3,196,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,243,69,128,253,253,240,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,253,239,227,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,253,253,253,253,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,228,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,201,253,88,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,255,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,163,225,249,225,226,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,205,253,188,105,15,15,154,247,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,240,247,112,3,0,0,0,13,159,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,244,121,0,0,0,0,0,0,1,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,230,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,245,13,0,0,0,0,0,0,0,0,2,92,174,174,123,26,0,0,0,0,0,0,0,0,0,0,0,225,243,0,0,0,0,0,0,0,0,14,169,253,253,253,253,217,14,0,0,0,0,0,0,0,0,0,0,226,220,0,0,0,0,0,0,0,136,198,254,209,135,102,210,254,131,0,0,0,0,0,0,0,0,0,0,225,233,0,0,0,0,0,5,142,254,219,83,10,0,0,54,249,117,0,0,0,0,0,0,0,0,0,0,225,244,4,0,0,0,0,67,253,227,37,0,0,0,0,85,232,24,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,17,196,253,98,0,0,0,0,6,134,215,13,0,0,0,0,0,0,0,0,0,0,121,253,241,70,0,0,57,253,183,0,0,0,0,0,124,253,127,0,0,0,0,0,0,0,0,0,0,0,7,200,253,227,52,0,133,251,61,0,0,0,0,123,244,176,2,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,247,113,219,224,0,0,0,35,113,247,208,22,0,0,0,0,0,0,0,0,0,0,0,0,0,1,134,228,253,253,253,252,139,57,106,192,253,169,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,207,244,253,253,253,254,253,227,68,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,155,228,228,159,145,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,105,105,105,105,105,194,105,105,56,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,209,248,253,253,253,253,253,254,253,253,232,235,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,253,241,247,254,253,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,239,133,133,31,79,134,133,211,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,29,29,26,0,0,14,75,76,111,243,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,110,179,193,253,254,253,253,253,209,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,254,253,253,253,253,169,134,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,249,253,253,253,253,254,253,253,253,253,253,253,248,56,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,208,251,253,253,254,253,253,253,253,253,253,253,181,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,104,104,105,104,104,104,104,122,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,255,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,15,148,227,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,75,137,224,243,253,253,244,99,19,0,0,0,0,0,0,0,0,0,0,13,154,63,0,0,22,30,172,193,253,254,253,253,253,182,65,0,0,0,0,0,0,0,0,0,0,0,0,105,253,176,134,134,219,253,253,253,253,254,253,245,119,14,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,253,253,217,128,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,208,237,253,253,248,208,208,208,120,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,174,121,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,253,211,96,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,153,96,204,204,235,228,228,190,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,67,0,0,0,37,87,175,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,53,0,0,0,0,0,95,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,240,33,0,0,0,0,0,32,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,188,0,0,0,0,0,0,32,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,0,0,0,0,0,0,32,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,186,223,238,254,242,223,137,134,134,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,230,254,235,239,254,254,242,222,167,115,44,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,58,24,31,150,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,244,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,243,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,170,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,249,233,140,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,222,224,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,204,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,216,238,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,233,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,207,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,245,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,202,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,248,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,171,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,192,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,200,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,220,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,209,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,255,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,137,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,102,238,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,251,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,254,254,243,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,231,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,244,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,254,254,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,232,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,221,254,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,255,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,254,221,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,231,127,0,0,0,0,0,18,200,255,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,203,0,0,0,0,0,162,253,211,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,203,0,0,0,0,42,228,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,253,203,0,0,0,0,132,253,237,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,205,253,253,135,0,0,0,49,244,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,205,12,0,0,0,82,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,253,253,87,0,0,0,6,198,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,249,253,253,145,4,0,0,0,71,253,253,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,253,253,184,9,0,0,0,0,191,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,26,215,253,253,236,29,0,0,0,0,0,214,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,248,204,111,105,164,165,204,246,253,253,219,113,105,87,0,0,0,0,0,0,0,0,0,35,237,253,253,253,253,253,253,253,253,253,253,253,253,254,253,254,253,146,0,0,0,0,0,0,0,0,0,9,210,253,253,253,253,253,253,248,238,251,253,253,253,246,207,192,164,21,0,0,0,0,0,0,0,0,0,0,37,84,84,84,84,84,84,53,0,72,253,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,253,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,211,254,251,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,234,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,38,38,106,146,146,216,255,254,255,255,150,73,38,1,0,0,0,0,0,0,0,0,0,0,0,0,116,196,253,253,253,253,253,253,253,253,253,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,33,233,253,252,250,248,250,253,248,248,192,139,228,249,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,46,102,70,44,0,44,88,0,0,0,0,0,11,205,253,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,199,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,246,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,197,253,253,218,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,223,253,253,188,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,233,253,253,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,230,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,221,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,122,253,253,184,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,248,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,230,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,254,255,235,136,136,37,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,253,253,253,209,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,233,253,206,200,200,200,225,241,253,253,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,228,21,0,0,0,30,86,209,253,253,246,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,164,0,0,0,0,0,0,18,99,252,253,245,58,0,0,0,0,0,0,0,0,0,0,0,0,32,244,253,115,0,0,0,0,0,0,0,0,34,209,253,175,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,47,0,0,0,0,0,0,0,0,0,145,253,251,50,0,0,0,0,0,0,0,0,0,0,0,36,253,213,21,0,0,0,0,0,0,0,0,0,14,204,253,53,0,0,0,0,0,0,0,0,0,0,0,36,253,182,0,0,0,0,0,0,0,0,0,0,0,146,253,53,0,0,0,0,0,0,0,0,0,0,0,36,253,182,0,0,0,0,0,0,0,0,0,0,0,48,253,135,0,0,0,0,0,0,0,0,0,0,0,36,253,182,0,0,0,0,0,0,0,0,0,0,0,48,253,170,0,0,0,0,0,0,0,0,0,0,0,36,253,242,39,0,0,0,0,0,0,0,0,0,0,48,253,170,0,0,0,0,0,0,0,0,0,0,0,36,253,253,47,0,0,0,0,0,0,0,0,0,0,101,253,170,0,0,0,0,0,0,0,0,0,0,0,36,253,253,52,0,0,0,0,0,0,0,0,0,91,252,253,55,0,0,0,0,0,0,0,0,0,0,0,36,253,253,164,0,0,0,0,0,0,0,0,35,209,253,232,47,0,0,0,0,0,0,0,0,0,0,0,13,200,253,181,6,0,0,0,0,0,18,101,252,253,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,191,71,29,0,46,102,209,253,253,246,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,253,253,224,201,238,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,166,253,253,253,253,253,253,253,161,147,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,135,248,253,253,170,135,91,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,210,254,254,254,254,217,192,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,253,253,253,253,253,253,253,251,155,97,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,70,177,177,177,177,245,253,253,253,253,253,215,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,61,87,204,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,160,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,251,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,244,253,253,217,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,49,178,253,253,222,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,126,253,253,253,220,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,200,253,253,253,222,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,201,253,253,253,152,35,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,31,133,249,253,253,208,102,3,0,12,104,170,241,241,241,247,221,0,0,0,0,0,0,0,0,0,0,32,208,253,253,249,170,22,30,83,183,224,253,253,253,253,253,195,83,0,0,0,0,0,0,0,0,0,0,205,253,253,253,243,133,199,218,253,253,253,253,253,194,146,54,16,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,253,253,253,253,226,208,75,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,244,232,121,96,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,231,253,234,116,116,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,149,255,254,210,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,253,253,242,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,245,217,239,250,210,73,225,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,242,51,0,63,237,253,253,253,233,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,185,0,0,0,160,253,253,253,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,168,26,62,95,238,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,234,249,253,253,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,159,246,253,253,253,253,253,253,233,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,144,144,81,124,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,232,253,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,242,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,118,118,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,149,235,235,235,247,254,254,248,235,235,235,235,167,58,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,254,254,254,254,254,254,254,254,254,254,254,254,238,29,0,0,0,0,0,0,0,0,0,0,0,0,126,199,199,199,199,117,61,61,61,99,240,254,254,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,196,254,254,254,240,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,180,254,254,254,248,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,175,254,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,254,254,254,187,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,228,254,254,254,254,181,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,180,254,254,254,254,103,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,196,254,254,254,237,94,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,228,254,254,254,187,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,254,254,254,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,254,254,254,129,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,254,254,237,87,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,254,254,254,254,206,200,200,200,200,200,200,155,171,104,63,29,0,0,0,0,0,0,0,0,0,0,64,115,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,214,0,0,0,0,0,0,0,0,0,0,0,21,96,96,167,99,219,234,234,234,234,234,234,234,234,234,234,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,94,217,218,217,217,217,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,201,252,252,253,252,252,252,222,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,253,252,252,168,108,108,211,252,253,179,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,253,252,215,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,32,197,242,252,253,231,71,0,0,0,5,35,211,252,195,0,0,0,0,0,0,0,0,0,0,0,0,21,211,252,252,252,237,71,0,0,0,0,0,0,109,252,241,78,0,0,0,0,0,0,0,0,0,0,21,206,252,252,252,252,144,0,0,0,0,0,0,0,109,252,252,190,0,0,0,0,0,0,0,0,0,32,212,253,253,253,253,253,0,0,0,0,0,0,0,0,63,238,253,253,0,0,0,0,0,0,0,0,0,197,252,252,158,35,190,252,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,16,222,252,252,41,0,181,252,0,0,0,0,0,0,0,0,79,242,252,148,0,0,0,0,0,0,0,0,109,252,252,168,0,0,181,252,0,0,0,0,0,0,0,0,109,252,231,46,0,0,0,0,0,0,0,0,171,253,217,0,0,0,182,191,0,0,0,0,0,0,16,191,255,253,72,0,0,0,0,0,0,0,0,0,211,252,215,0,0,0,25,15,0,0,0,0,0,63,181,252,253,231,51,0,0,0,0,0,0,0,0,0,109,252,241,98,21,0,0,0,0,0,0,21,99,242,252,252,175,51,0,0,0,0,0,0,0,0,0,0,109,252,252,252,205,144,144,62,145,144,144,206,253,252,252,168,62,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,253,253,253,253,255,253,253,253,255,159,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,231,252,252,252,252,252,253,231,179,179,35,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,71,133,215,215,132,72,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,114,164,164,225,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,143,228,250,254,254,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,99,116,229,242,248,254,254,254,203,151,96,13,9,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,254,254,254,254,201,189,123,37,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,177,108,95,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,245,254,179,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,209,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,228,254,136,44,90,130,58,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,254,254,254,254,234,172,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,194,254,235,220,204,133,133,232,254,180,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,52,23,0,0,0,0,100,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,15,108,54,2,0,0,0,0,0,4,78,244,254,198,15,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,118,8,0,10,18,109,201,254,254,254,149,5,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,254,254,214,186,224,254,254,254,254,254,254,206,17,0,0,0,0,0,0,0,0,0,0,0,0,0,168,246,251,254,254,254,254,255,254,254,253,249,176,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,101,163,163,134,117,107,107,66,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,176,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,228,252,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,104,240,252,252,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,128,252,252,252,236,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,252,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,165,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,215,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,215,252,252,220,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,169,253,252,252,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,121,0,0,0,0,76,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,252,252,165,6,0,7,57,120,246,252,252,252,198,150,13,0,0,0,0,0,0,0,0,0,0,0,38,221,252,252,140,0,0,29,252,253,252,252,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,38,221,252,252,140,0,0,29,252,253,252,252,252,252,253,252,133,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,255,206,25,16,140,141,140,110,29,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,231,209,85,85,85,85,104,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,75,233,252,253,252,252,252,252,253,252,252,252,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,72,223,237,252,252,252,252,253,252,252,249,223,162,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,112,221,252,252,253,252,220,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,240,217,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,248,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,241,254,237,254,209,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,254,184,39,245,254,244,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,202,254,254,187,44,0,105,247,254,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,135,254,254,142,8,0,0,0,132,251,254,161,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,175,6,0,0,0,0,0,105,247,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,23,235,254,205,4,0,0,0,0,0,0,0,208,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,226,6,0,0,0,0,0,0,0,0,143,254,138,0,0,0,0,0,0,0,0,0,0,0,0,27,236,243,43,0,0,0,0,0,0,0,0,0,143,254,138,0,0,0,0,0,0,0,0,0,0,0,0,50,254,232,0,0,0,0,0,0,0,0,0,0,154,254,138,0,0,0,0,0,0,0,0,0,0,0,0,88,254,194,0,0,0,0,0,0,0,0,0,0,233,254,101,0,0,0,0,0,0,0,0,0,0,0,0,106,254,142,0,0,0,0,0,0,0,0,0,49,249,240,31,0,0,0,0,0,0,0,0,0,0,0,0,110,254,171,0,0,0,0,0,0,0,0,0,128,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,246,123,98,69,5,0,0,0,0,0,180,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,254,254,254,254,68,0,0,0,0,93,254,224,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,182,254,254,254,62,0,0,0,31,213,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,49,49,226,62,0,4,72,241,254,214,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,240,177,153,254,254,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,254,254,248,163,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,132,249,64,88,156,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,242,252,253,252,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,77,239,252,252,253,252,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,252,252,253,252,252,252,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,235,252,252,252,252,253,252,243,192,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,252,253,141,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,252,203,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,206,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,252,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,252,252,252,247,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,255,116,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,185,159,251,253,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,230,252,36,0,92,253,252,221,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,195,12,0,0,149,252,252,173,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,167,0,0,0,4,175,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,232,27,0,0,0,145,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,108,8,0,10,232,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,229,252,252,220,217,220,252,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,252,252,253,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,52,235,252,252,253,183,115,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,63,155,158,189,255,249,158,106,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,210,254,254,229,225,225,237,254,254,240,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,188,70,12,0,0,35,162,212,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,150,2,0,0,0,0,0,18,238,254,86,82,116,21,0,0,0,0,0,0,0,0,0,0,0,14,219,254,38,0,0,0,0,0,7,197,240,114,13,180,254,91,0,0,0,0,0,0,0,0,0,0,0,9,206,254,104,0,0,0,0,0,10,167,40,4,150,247,250,26,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,143,22,0,0,0,0,0,30,133,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,251,254,229,167,116,133,211,211,234,254,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,145,220,254,254,254,254,254,254,188,190,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,21,110,56,14,14,14,3,78,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,237,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,232,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,253,253,253,255,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,163,238,252,252,195,167,168,243,246,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,203,252,253,201,86,19,0,0,50,55,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,234,252,236,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,228,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,227,253,154,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,190,0,0,26,38,63,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,158,147,225,231,234,240,253,228,225,225,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,252,252,252,220,253,252,252,252,221,135,6,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,242,114,84,37,84,84,115,227,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,167,0,0,0,0,0,0,29,252,253,106,0,0,0,0,0,0,0,0,0,0,0,0,48,229,253,253,255,27,0,0,0,0,0,0,13,191,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,253,228,116,76,48,85,85,117,228,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,13,149,227,253,252,252,246,227,253,252,252,252,252,165,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,146,223,246,252,252,253,252,245,223,145,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,112,189,190,112,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,149,253,253,253,253,255,180,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,211,252,252,252,252,253,252,227,120,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,69,69,162,79,184,227,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,227,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,194,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,239,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,173,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,203,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,205,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,252,196,184,185,184,184,184,184,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,211,252,252,252,252,253,252,252,218,160,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,22,107,179,147,137,64,22,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,147,184,209,232,147,92,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,218,254,254,254,254,254,254,238,185,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,233,254,254,254,254,254,254,254,254,254,251,195,71,3,0,0,0,0,0,0,0,0,0,0,0,0,4,213,254,254,246,128,103,172,227,254,254,254,254,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,251,94,0,0,0,24,74,173,239,254,254,254,246,92,0,0,0,0,0,0,0,0,0,0,0,223,254,254,192,0,0,0,0,0,0,0,22,142,251,254,254,184,0,0,0,0,0,0,0,0,0,0,48,242,254,254,202,0,0,0,0,0,0,0,0,0,107,254,254,197,8,0,0,0,0,0,0,0,0,14,183,254,254,217,124,0,0,0,0,0,0,0,0,0,16,222,254,254,38,0,0,0,0,0,0,0,0,39,254,254,161,12,3,0,0,0,0,0,0,0,0,0,0,212,254,254,38,0,0,0,0,0,0,0,0,39,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,38,0,0,0,0,0,0,0,0,39,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,38,0,0,0,0,0,0,0,0,39,254,254,208,6,0,0,0,0,0,0,0,0,0,0,0,205,254,218,19,0,0,0,0,0,0,0,0,30,238,254,254,65,0,0,0,0,0,0,0,0,0,0,16,222,254,184,0,0,0,0,0,0,0,0,0,0,97,254,254,152,0,0,0,0,0,0,0,0,0,11,138,254,242,67,0,0,0,0,0,0,0,0,0,0,69,251,254,251,96,0,0,0,0,0,0,0,0,98,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,251,107,16,0,0,0,0,16,108,251,255,228,38,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,254,254,222,212,189,189,212,222,254,254,228,44,0,0,0,0,0,0,0,0,0,0,0,0,0,1,140,254,254,254,254,254,254,254,254,254,254,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,179,254,254,254,254,254,254,254,254,227,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,42,146,229,254,254,254,199,74,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,153,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,252,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,250,214,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,253,253,253,253,253,253,250,147,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,225,155,155,175,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,253,178,49,0,0,7,138,253,249,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,137,7,0,0,0,0,7,182,253,236,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,178,7,0,0,0,0,0,0,129,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,162,0,0,0,0,0,0,0,40,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,162,0,0,0,0,0,0,0,40,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,162,0,0,0,0,0,0,0,40,253,253,248,83,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,162,0,0,0,0,0,0,0,133,253,253,249,88,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,72,0,0,0,0,0,0,0,170,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,37,221,253,120,0,0,0,0,0,0,8,182,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,250,173,5,0,0,0,0,7,139,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,128,5,0,0,0,66,253,253,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,253,128,20,20,118,224,253,253,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,225,253,253,253,253,253,253,244,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,224,252,253,253,252,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,155,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,79,92,216,165,141,204,178,141,241,255,178,229,253,126,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,252,252,252,253,252,252,252,253,252,252,252,244,131,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,253,252,214,252,253,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,57,252,202,128,28,28,28,28,28,15,28,28,28,203,252,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,209,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,254,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,252,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,71,134,145,254,254,254,254,156,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,192,253,254,253,250,229,229,248,253,212,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,240,253,218,154,96,83,0,0,74,224,253,160,2,0,0,0,0,0,0,0,0,0,0,0,0,0,49,221,181,84,4,0,0,0,0,0,0,206,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,21,48,35,0,0,0,0,0,0,0,0,120,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,253,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,253,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,222,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,222,253,242,170,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,90,182,182,182,182,182,183,223,253,253,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,7,91,234,253,253,253,253,253,253,254,253,253,253,253,208,96,45,0,0,0,0,0,0,0,0,0,0,51,210,253,253,253,253,253,253,253,253,254,245,221,253,253,253,253,235,206,50,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,253,253,94,32,22,36,65,156,235,253,253,86,0,0,0,0,0,0,0,0,191,253,253,253,253,253,253,211,144,29,0,0,0,0,0,0,19,24,24,1,0,0,0,0,0,0,0,0,70,202,253,253,224,132,92,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,219,255,210,136,76,18,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,163,253,253,253,253,253,253,253,188,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,245,200,145,156,82,82,151,235,202,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,251,253,124,0,0,0,0,0,0,132,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,235,251,99,18,0,0,0,0,0,0,31,229,170,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,253,198,0,0,0,0,0,0,0,0,0,183,244,31,0,0,0,0,0,0,0,0,0,0,0,27,216,253,253,72,0,0,0,0,0,0,0,0,0,183,253,35,0,0,0,0,0,0,0,0,0,0,0,54,253,253,193,5,0,0,0,0,0,0,0,0,0,183,253,35,0,0,0,0,0,0,0,0,0,0,0,128,253,253,128,0,0,0,0,0,0,0,0,0,0,183,253,35,0,0,0,0,0,0,0,0,0,0,0,171,253,191,9,0,0,0,0,0,0,0,0,0,0,183,253,35,0,0,0,0,0,0,0,0,0,0,28,235,253,164,0,0,0,0,0,0,0,0,0,0,37,237,189,8,0,0,0,0,0,0,0,0,0,0,135,253,253,121,0,0,0,0,0,0,0,0,0,0,147,253,170,0,0,0,0,0,0,0,0,0,0,0,154,253,253,47,0,0,0,0,0,0,0,0,0,0,166,253,63,0,0,0,0,0,0,0,0,0,0,0,154,253,253,47,0,0,0,0,0,0,0,0,7,199,249,186,1,0,0,0,0,0,0,0,0,0,0,0,85,253,253,47,0,0,0,0,0,0,0,14,96,253,206,50,0,0,0,0,0,0,0,0,0,0,0,0,29,238,253,140,6,0,0,0,0,0,18,139,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,59,0,0,0,0,20,191,253,245,70,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,231,89,84,84,166,217,253,178,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,68,235,253,253,253,253,253,253,125,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,185,198,253,253,170,44,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,199,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,216,243,243,193,0,0,0,0,145,254,248,6,0,0,0,0,0,0,0,0,0,0,0,0,0,38,149,251,254,254,230,173,0,0,0,0,151,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,89,222,254,254,254,178,53,13,0,0,0,0,151,254,248,0,0,0,0,0,0,0,0,0,0,0,0,38,239,254,254,179,126,8,0,0,0,0,0,24,242,254,200,0,0,0,0,0,0,0,0,0,0,0,38,223,254,254,182,30,0,0,0,0,0,0,0,71,254,254,117,0,0,0,0,0,0,0,0,0,0,0,152,254,254,179,7,0,0,0,0,0,0,0,11,187,254,254,157,0,0,0,0,0,0,0,0,0,0,199,252,254,227,50,0,0,0,0,0,15,73,73,163,254,254,254,253,99,0,0,0,0,0,0,0,0,0,249,254,254,115,66,66,66,66,100,197,209,254,254,254,254,254,251,119,29,0,0,0,0,0,0,0,0,94,253,254,254,254,254,254,254,254,254,254,254,213,235,254,254,254,143,0,0,0,0,0,0,0,0,0,0,35,251,254,254,254,254,254,254,254,214,202,108,22,48,189,254,213,31,0,0,0,0,0,0,0,0,0,0,0,76,135,208,208,208,208,101,78,18,0,0,0,28,227,255,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,238,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,243,67,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,255,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,112,225,241,241,251,244,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,161,252,253,253,253,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,215,155,155,116,90,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,166,109,20,0,0,0,120,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,2,0,0,0,0,27,219,231,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,200,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,113,245,233,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,246,253,98,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,170,248,235,160,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,135,0,0,0,0,0,0,0,0,0,0,25,40,40,18,0,0,0,0,0,0,0,0,0,97,251,253,199,29,0,0,0,64,163,163,163,163,163,163,219,253,253,204,163,0,0,0,0,0,0,0,0,255,253,253,253,216,156,156,156,234,253,253,253,253,253,253,253,253,253,253,240,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,253,248,234,234,234,234,234,234,153,104,104,104,51,0,0,0,0,0,0,0,0,0,108,110,110,160,240,240,200,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,113,192,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,243,252,253,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,240,252,252,222,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,196,252,233,145,128,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,220,37,0,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,255,253,133,0,0,176,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,253,223,37,0,0,152,18,0,0,0,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,76,234,252,253,136,0,0,0,31,0,0,0,0,253,233,165,19,0,0,0,0,0,0,0,0,0,0,10,203,252,252,240,24,0,0,0,0,0,0,0,0,253,252,245,74,0,0,0,0,0,0,0,0,0,0,85,252,252,252,63,0,0,0,0,0,0,0,0,0,253,252,195,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,0,0,0,0,0,0,0,0,0,0,255,253,196,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,0,0,253,252,70,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,38,135,253,233,43,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,169,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,79,0,0,0,0,0,0,0,169,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,192,12,0,0,0,0,147,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,252,253,181,85,85,163,226,249,252,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,155,252,253,252,252,252,252,253,252,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,161,237,252,252,252,252,240,176,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,112,142,157,112,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,47,134,214,255,254,176,138,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,188,253,253,196,160,160,231,253,181,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,253,230,86,4,0,0,8,182,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,208,23,0,0,0,0,0,212,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,81,0,0,0,0,0,0,239,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,31,0,0,0,0,0,26,243,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,171,6,0,0,0,20,209,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,235,253,196,80,50,25,136,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,193,250,253,245,229,232,228,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,98,98,98,44,253,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,230,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,231,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,185,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,187,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,254,249,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,248,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,241,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,245,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,249,253,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,152,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,96,255,233,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,228,253,247,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,63,0,24,194,255,253,253,114,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,251,253,86,112,205,251,253,251,251,251,251,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,251,251,253,251,251,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,219,148,31,31,31,31,70,228,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,251,253,231,47,0,0,0,0,0,0,59,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,221,0,0,0,0,0,0,0,159,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,244,111,4,0,0,0,0,68,228,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,251,251,141,48,48,127,127,236,251,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,251,251,251,232,234,251,251,235,188,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,94,94,94,193,253,132,94,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,39,39,140,147,193,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,134,254,254,254,237,178,244,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,254,249,163,85,26,48,98,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,174,254,220,0,0,0,60,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,189,33,0,0,0,141,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,218,227,43,0,0,0,25,246,250,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,161,254,97,0,0,0,0,151,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,251,64,0,0,0,109,251,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,90,6,24,195,250,254,251,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,254,198,194,254,243,173,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,254,254,162,42,132,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,16,16,2,0,201,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,179,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,201,229,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,122,240,216,216,193,75,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,140,140,231,254,254,242,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,210,254,254,238,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,204,254,254,235,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,254,254,142,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,164,254,254,249,170,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,44,221,254,254,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,152,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,147,254,249,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,254,223,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,205,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,139,247,254,240,126,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,89,238,254,255,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,138,207,104,140,251,254,254,201,126,43,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,254,254,254,254,189,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,196,254,254,254,230,177,76,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,220,95,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,65,132,255,253,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,169,252,252,165,176,243,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,212,252,252,103,0,0,82,234,45,0,0,78,32,0,0,0,0,0,0,0,0,0,0,0,0,0,64,193,252,234,95,4,0,0,37,252,72,0,0,194,216,8,0,0,0,0,0,0,0,0,0,0,0,64,232,252,232,119,0,0,0,0,11,181,55,0,0,97,252,11,0,0,0,0,0,0,0,0,0,0,11,193,252,252,76,0,0,0,0,0,0,29,0,0,0,97,252,11,0,0,0,0,0,0,0,0,0,9,166,252,252,153,9,0,0,0,0,0,0,0,0,0,0,97,252,52,0,0,0,0,0,0,0,0,0,71,252,252,200,9,0,0,0,0,0,0,0,0,0,0,0,97,252,131,0,0,0,0,0,0,0,0,6,191,252,231,52,0,0,0,0,0,0,0,0,0,0,0,0,97,252,131,0,0,0,0,0,0,0,0,128,252,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,131,0,0,0,0,0,0,0,0,133,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,132,0,0,0,0,0,0,0,0,132,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,121,0,0,0,0,0,0,0,0,208,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,252,11,0,0,0,0,0,0,0,0,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,14,174,252,231,9,0,0,0,0,0,0,0,0,224,252,96,0,0,0,0,0,0,0,0,0,0,0,15,173,252,229,52,0,0,0,0,0,0,0,0,0,132,252,198,24,0,0,0,0,0,0,0,0,0,49,173,252,252,122,0,0,0,0,0,0,0,0,0,0,89,216,252,140,65,0,0,0,0,0,0,20,205,237,252,228,70,7,0,0,0,0,0,0,0,0,0,0,0,99,252,252,244,182,97,14,42,97,160,220,252,252,154,25,0,0,0,0,0,0,0,0,0,0,0,0,0,14,159,252,252,252,252,232,239,252,253,252,236,63,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,11,40,131,131,235,252,252,248,121,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,128,253,255,206,113,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,210,246,252,252,253,252,252,252,252,226,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,135,253,252,252,252,252,253,252,252,252,252,253,186,13,0,0,0,0,0,0,0,0,0,0,0,0,7,178,252,253,252,252,252,252,253,252,252,252,252,253,252,155,10,0,0,0,0,0,0,0,0,0,0,48,165,252,252,253,252,252,252,252,253,252,252,173,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,147,253,253,253,255,215,31,169,253,255,106,0,0,0,255,253,253,84,0,0,0,0,0,0,0,0,0,38,234,252,252,252,168,33,0,122,252,215,18,0,0,0,128,252,252,218,38,0,0,0,0,0,0,0,0,222,252,252,252,220,0,0,0,7,133,31,0,0,0,0,88,246,252,252,112,0,0,0,0,0,0,0,0,253,252,252,249,99,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,112,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,26,231,252,252,112,0,0,0,0,0,0,0,0,253,252,252,99,0,0,0,0,0,0,0,0,0,0,0,207,252,252,252,112,0,0,0,0,0,0,0,0,253,252,252,239,140,0,0,0,0,0,0,0,0,0,79,253,252,252,236,50,0,0,0,0,0,0,0,0,192,253,253,253,253,255,128,113,113,50,0,101,144,253,253,255,253,253,162,0,0,0,0,0,0,0,0,0,12,228,252,252,252,253,252,252,252,237,226,249,252,252,252,253,252,233,56,0,0,0,0,0,0,0,0,0,0,97,239,252,252,253,252,252,252,252,253,252,252,252,252,253,233,152,0,0,0,0,0,0,0,0,0,0,0,0,66,180,252,253,252,252,252,252,253,252,252,249,223,225,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,112,112,142,252,252,253,204,112,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,140,175,166,149,69,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,85,192,212,253,253,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,212,253,251,232,134,127,127,148,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,211,102,71,0,0,0,0,43,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,14,0,0,0,0,0,0,7,201,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,202,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,232,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,237,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,233,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,247,184,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,243,200,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,211,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,218,55,86,86,104,112,94,121,173,192,191,51,0,0,0,0,0,0,0,0,0,0,0,0,0,86,233,254,253,245,253,253,254,253,253,253,253,254,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,254,253,253,253,200,173,163,190,190,145,103,154,7,0,0,0,0,0,0,0,0,0,0,0,0,0,169,209,148,68,42,42,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,253,253,255,128,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,219,252,252,252,253,252,231,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,135,253,252,252,252,252,253,252,252,246,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,60,224,252,253,242,192,99,223,237,252,252,252,252,108,3,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,167,0,0,0,50,158,252,252,252,253,106,0,0,0,0,0,0,0,0,0,0,0,51,238,253,253,253,255,168,0,0,0,0,48,229,253,253,255,206,25,0,0,0,0,0,0,0,0,0,0,113,252,252,252,252,253,167,0,0,0,0,0,53,224,252,253,252,199,28,0,0,0,0,0,0,0,0,0,222,252,252,252,252,253,233,43,0,0,0,0,0,37,165,253,252,252,84,0,0,0,0,0,0,0,0,0,253,252,252,217,161,253,252,155,10,0,0,0,0,0,47,253,252,252,177,0,0,0,0,0,0,0,0,0,253,252,252,84,0,112,237,252,84,0,0,0,0,0,0,253,252,252,223,0,0,0,0,0,0,0,0,0,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,112,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,206,252,252,252,112,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,144,252,252,252,112,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,16,253,252,252,249,99,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,16,203,253,252,252,145,0,0,0,0,0,0,0,0,0,255,253,253,253,112,0,0,0,0,0,0,0,26,207,253,255,253,253,84,0,0,0,0,0,0,0,0,0,90,243,252,252,237,226,225,116,85,85,85,131,231,252,252,253,223,58,9,0,0,0,0,0,0,0,0,0,0,193,252,252,252,253,252,252,252,252,253,252,252,252,252,196,52,0,0,0,0,0,0,0,0,0,0,0,0,28,115,227,252,253,252,252,252,252,253,252,252,233,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,253,252,252,252,252,253,204,112,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,108,253,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,252,116,2,0,0,0,95,220,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,184,0,0,87,159,253,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,110,0,95,253,244,206,170,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,218,19,0,230,253,123,0,176,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,112,0,34,238,234,34,124,244,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,197,252,251,234,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,255,232,138,233,253,255,253,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,252,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,183,183,240,252,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,253,252,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,232,253,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,61,96,126,175,240,235,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,77,203,246,197,114,63,103,230,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,210,248,151,36,0,0,0,0,27,122,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,242,226,72,0,0,0,0,0,0,0,115,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,85,0,0,0,0,0,0,0,40,168,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,244,220,36,3,0,5,16,16,145,130,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,240,27,0,45,160,254,254,246,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,215,228,9,0,0,150,239,175,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,117,16,138,251,86,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,216,148,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,206,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,254,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,224,135,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,240,249,65,128,251,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,194,0,137,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,83,93,245,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,245,235,254,212,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,255,209,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,149,254,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,39,131,131,111,20,0,0,0,0,0,144,253,253,253,250,107,0,0,0,0,0,0,0,0,0,0,1,73,221,253,253,253,205,3,0,0,8,135,249,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,253,253,128,0,0,197,253,253,253,253,253,244,112,0,0,0,0,0,0,0,0,0,7,207,253,253,253,253,253,253,159,0,74,228,253,253,253,253,253,224,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,253,253,125,0,173,253,253,253,253,253,248,104,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,253,253,233,47,0,225,253,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,15,231,253,253,253,253,253,240,139,0,61,242,253,253,253,253,116,4,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,253,190,51,0,21,240,253,253,253,253,253,195,50,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,253,253,238,188,236,254,253,253,253,253,253,253,103,0,0,0,0,0,0,0,0,0,0,25,236,254,254,254,254,254,254,254,254,255,254,254,254,254,254,200,4,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,253,253,254,253,253,253,253,236,109,0,0,0,0,0,0,0,0,0,0,0,0,9,132,250,253,253,253,253,253,253,254,253,252,243,138,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,177,211,253,253,253,253,254,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,253,254,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,210,253,253,253,253,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,253,207,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,253,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,159,159,190,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,128,140,255,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,243,253,254,253,253,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,167,253,253,253,237,253,253,253,184,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,149,53,225,235,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,146,4,4,31,71,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,211,253,253,24,0,0,0,9,97,253,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,174,5,0,0,0,0,49,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,192,253,221,39,0,0,0,0,0,7,192,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,168,0,0,0,0,0,0,0,182,253,246,33,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,168,0,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,251,46,0,0,0,0,0,0,49,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,21,218,253,180,0,0,0,0,0,0,0,49,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,106,0,0,0,0,0,0,0,67,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,60,0,0,0,0,0,0,25,226,253,239,39,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,253,89,0,0,0,0,0,0,124,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,180,0,0,0,0,0,7,185,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,205,16,0,0,0,5,159,253,253,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,184,98,98,155,221,253,253,211,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,253,253,253,253,253,254,243,128,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,231,253,253,253,132,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,150,185,169,182,157,254,255,254,214,92,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,241,253,253,253,253,253,253,253,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,253,253,215,181,218,253,253,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,132,67,67,67,67,8,0,4,221,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,227,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,0,5,249,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,156,114,220,251,156,234,253,253,229,53,61,156,93,132,10,0,0,0,0,0,0,0,0,0,0,0,67,249,253,253,253,253,253,253,253,253,253,253,212,253,233,253,169,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,253,253,253,253,253,253,253,253,233,240,253,244,85,0,0,0,0,0,0,0,0,0,0,0,21,157,165,117,62,66,253,253,239,129,105,62,32,85,62,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,183,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,223,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,240,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,156,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,223,139,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,201,254,254,220,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,123,247,254,233,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,201,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,175,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,247,233,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,132,126,38,2,19,143,254,206,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,235,254,254,254,200,225,254,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,254,254,254,254,254,254,208,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,106,189,206,206,212,254,254,188,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,82,200,252,252,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,235,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,235,252,196,124,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,241,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,236,155,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,229,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,198,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,198,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,245,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,255,248,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,121,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,121,121,121,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,252,253,252,247,197,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,243,252,252,253,252,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,252,252,252,253,176,131,252,242,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,176,252,252,252,217,53,3,128,252,252,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,249,94,0,51,232,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,217,22,104,248,252,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,252,252,198,208,253,252,252,252,245,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,253,252,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,253,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,216,253,183,197,255,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,6,133,253,252,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,177,253,252,168,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,159,252,253,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,174,252,252,234,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,193,252,252,209,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,196,252,120,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,105,105,105,184,254,254,254,106,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,160,253,253,253,253,253,253,253,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,242,238,238,149,238,90,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,253,217,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,245,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,239,134,134,134,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,253,253,253,253,241,204,90,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,229,253,221,208,208,208,208,254,253,253,225,150,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,104,31,0,0,0,0,105,139,253,253,253,180,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,149,243,254,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,236,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,184,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,216,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,29,214,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,169,134,8,0,80,135,134,212,253,253,237,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,240,239,247,255,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,232,253,253,253,254,253,253,232,164,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,104,218,253,105,104,104,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,173,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,243,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,81,21,142,254,253,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,232,253,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,172,21,0,0,0,0,0,0,102,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,130,213,252,223,81,0,0,0,0,0,142,253,151,0,0,0,0,0,0,0,0,0,0,0,0,72,253,203,0,0,123,254,253,163,0,0,0,31,233,254,50,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,0,0,112,232,243,122,0,0,132,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,0,102,254,253,82,21,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,61,0,0,0,0,20,131,252,243,223,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,123,0,0,0,0,0,11,213,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,223,20,0,0,0,82,213,252,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,255,253,153,233,254,253,244,203,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,213,252,253,252,233,151,40,0,112,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,152,30,0,0,0,21,51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,253,131,0,0,0,183,253,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,244,122,0,0,0,0,51,253,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,203,0,0,0,0,0,132,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,41,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,213,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,41,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,152,253,214,51,113,152,152,152,62,0,0,0,0,0,0,0,0,0,0,0,213,252,203,102,0,82,102,142,233,252,253,252,253,252,253,252,61,0,0,0,0,0,0,0,0,0,0,0,82,243,254,253,254,253,254,253,254,253,254,213,142,102,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,172,252,253,252,192,151,213,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,124,208,255,254,241,156,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,254,254,254,254,254,254,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,221,167,75,75,186,254,218,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,215,29,0,0,12,71,57,0,0,0,5,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,220,254,203,0,0,0,0,0,0,0,40,171,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,239,247,139,0,0,0,0,6,119,248,247,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,247,246,139,0,6,90,208,254,207,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,246,105,169,254,254,158,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,131,254,254,254,246,126,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,98,254,254,246,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,125,254,254,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,221,254,247,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,225,254,207,44,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,228,16,38,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,226,254,176,0,38,254,242,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,239,31,9,177,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,226,254,205,0,108,254,242,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,210,254,170,78,251,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,253,252,243,149,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,204,254,179,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,222,248,230,230,230,139,155,155,138,139,138,138,72,0,0,0,0,0,0,0,0,0,0,0,0,0,17,157,253,254,253,253,253,254,253,253,253,254,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,228,160,236,253,254,253,253,253,254,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,38,187,254,134,0,0,0,93,93,168,184,127,176,142,25,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,202,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,249,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,255,199,17,51,95,161,161,161,143,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,254,241,230,247,254,253,253,253,248,129,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,254,253,253,244,230,128,46,113,220,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,254,168,152,44,0,0,0,0,186,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,184,68,0,0,0,0,0,0,0,195,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,116,34,0,0,0,0,0,0,68,254,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,240,151,0,0,0,0,0,0,17,234,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,203,70,70,70,70,70,70,120,203,254,229,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,254,253,253,253,254,253,253,253,56,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,188,230,230,171,188,230,230,230,213,129,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,101,144,144,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,230,253,253,253,253,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,148,236,253,253,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,218,253,254,253,245,222,149,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,254,186,54,0,20,218,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,189,253,253,204,50,0,0,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,249,250,242,10,0,0,0,3,201,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,69,0,0,0,0,0,75,253,251,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,231,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,202,254,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,59,30,47,188,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,138,210,229,229,248,230,240,253,253,232,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,207,253,253,253,253,253,255,253,253,253,251,156,31,0,0,0,0,0,0,0,0,0,0,0,0,15,147,250,253,253,253,220,239,253,254,253,253,253,253,253,250,89,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,184,64,76,211,253,254,253,219,250,253,253,253,244,91,0,0,0,0,0,0,0,0,0,0,168,253,253,205,103,122,202,253,253,253,136,13,30,131,222,253,253,171,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,253,253,253,134,0,0,0,0,35,99,99,26,0,0,0,0,0,0,0,0,0,0,96,253,253,253,253,253,253,196,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,253,253,253,152,76,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,152,237,255,254,213,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,166,253,254,218,176,209,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,236,254,192,99,5,0,162,243,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,238,241,97,3,0,0,0,170,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,243,254,75,0,0,0,0,0,13,203,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,254,135,3,0,0,0,0,0,150,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,174,13,0,0,0,0,0,121,248,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,246,241,30,0,0,0,0,25,131,247,254,221,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,148,0,0,0,0,53,220,254,237,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,103,14,44,119,203,247,221,56,121,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,254,225,254,254,221,143,39,0,83,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,183,219,143,88,7,0,0,0,125,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,245,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,232,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,247,182,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,144,144,144,159,254,254,254,254,254,254,167,9,0,0,0,0,0,0,0,0,0,0,0,0,6,67,153,247,253,253,253,254,253,253,253,253,253,253,222,20,0,0,0,0,0,0,0,0,0,0,27,143,214,253,253,253,253,253,253,254,227,236,253,253,253,249,79,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,246,178,54,10,10,11,14,214,253,253,207,19,0,0,0,0,0,0,0,0,0,0,0,0,52,244,253,253,165,0,0,0,0,8,155,253,253,217,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,55,127,108,0,0,0,0,72,253,253,246,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,245,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,203,255,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,254,224,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,254,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,242,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,244,234,110,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,254,255,254,254,254,210,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,104,234,253,253,253,253,253,253,253,253,253,248,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,179,177,177,77,40,119,111,171,243,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,60,6,0,0,0,0,0,0,220,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,132,26,0,0,0,0,71,243,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,248,253,253,253,225,126,13,0,0,104,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,190,253,253,253,253,240,128,0,104,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,66,143,233,253,253,253,248,250,253,192,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,164,222,253,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,164,253,253,231,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,224,253,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,174,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,128,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,226,251,253,242,146,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,231,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,227,253,253,236,91,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,83,105,179,223,253,253,167,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,242,99,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,253,171,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,120,228,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,191,252,252,252,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,253,252,252,252,252,253,223,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,253,252,252,210,189,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,255,249,146,21,116,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,143,92,75,0,0,189,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,236,253,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,24,24,138,253,253,233,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,89,203,253,252,252,252,252,253,173,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,252,252,253,252,252,252,252,253,252,234,142,7,0,0,0,0,0,0,0,0,0,0,0,0,0,114,236,252,252,252,253,252,252,218,160,169,252,252,252,211,43,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,253,252,221,35,0,3,43,168,252,252,231,95,0,0,0,0,0,0,0,0,0,0,0,244,253,253,253,253,255,239,63,0,0,0,0,0,43,231,255,253,137,5,0,0,0,0,0,0,0,0,0,138,252,252,252,252,218,33,0,0,0,0,0,0,0,42,232,252,252,119,0,0,0,0,0,0,0,0,0,48,196,252,195,130,32,0,0,0,0,0,0,0,0,0,138,252,252,227,17,0,0,0,0,0,0,0,0,0,9,45,9,0,0,0,0,0,0,0,0,0,0,0,44,252,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,252,210,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,141,213,157,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,240,254,254,255,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,244,241,166,23,50,95,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,146,22,0,0,0,0,189,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,238,30,0,0,0,0,19,232,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,192,3,0,0,0,9,142,255,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,230,17,0,10,70,187,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,181,138,158,254,247,209,255,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,241,254,254,254,231,91,31,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,201,219,218,34,0,31,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,21,0,0,31,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,246,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,251,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,83,90,204,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,96,164,179,251,251,253,255,254,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,231,254,254,242,206,181,102,8,16,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,202,254,199,24,11,5,0,0,0,37,225,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,124,0,0,0,0,0,0,109,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,255,172,13,0,0,0,0,0,9,208,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,222,29,0,0,0,0,0,0,15,228,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,201,20,0,0,0,0,0,0,0,179,247,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,14,0,0,0,0,0,0,0,27,247,190,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,157,250,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,237,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,250,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,213,245,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,206,243,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,229,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,250,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,21,0,0,0,0,0,0,0,0,103,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,208,20,0,0,0,0,0,0,0,109,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,207,253,205,9,0,0,0,0,0,0,31,253,243,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,254,24,0,0,0,0,0,0,11,222,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,254,140,0,0,0,0,0,0,0,181,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,255,199,0,0,0,0,0,0,6,202,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,14,199,253,254,198,0,0,72,88,35,132,185,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,254,226,140,217,243,254,240,253,253,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,254,253,253,253,253,254,253,253,207,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,253,253,253,253,254,201,117,34,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,181,255,254,254,254,202,124,39,0,51,254,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,166,198,121,37,5,0,0,0,103,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,217,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,194,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,116,164,249,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,166,237,254,254,254,250,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,200,254,254,208,171,231,254,236,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,226,254,205,44,5,0,12,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,232,36,0,0,0,67,117,254,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,123,0,0,0,0,54,20,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,39,0,0,0,0,0,3,138,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,255,254,135,0,0,0,0,0,0,118,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,62,0,0,0,0,8,194,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,245,254,254,196,196,153,166,201,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,245,254,254,254,254,254,254,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,175,176,236,236,199,182,254,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,236,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,118,64,76,233,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,254,236,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,218,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,24,45,138,138,191,244,191,138,138,138,24,24,7,0,0,0,0,0,0,0,0,0,0,0,0,13,140,203,253,252,252,252,252,253,252,252,252,252,253,252,186,50,0,0,0,0,0,0,0,0,0,17,184,203,252,252,215,183,100,69,69,69,69,69,111,183,184,227,252,227,17,0,0,0,0,0,0,0,0,15,219,227,160,56,21,0,0,0,0,0,0,0,0,0,0,50,227,252,22,0,0,0,0,0,0,0,0,0,15,16,0,0,0,0,0,0,0,0,0,0,0,0,0,95,246,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,89,161,253,252,208,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,203,252,252,247,162,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,155,236,252,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,116,210,240,253,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,255,253,253,253,253,244,65,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,206,206,227,206,207,206,206,244,252,253,252,154,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,56,69,190,252,252,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,67,227,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,215,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,162,253,253,23,0,0,0,0,0,0,0,0,0,0,13,47,99,106,84,0,0,0,0,0,0,17,47,162,219,252,235,18,0,0,0,0,0,0,0,0,0,66,203,252,252,184,70,70,70,70,70,70,153,209,252,253,252,202,44,0,0,0,0,0,0,0,0,0,0,67,252,252,252,253,252,252,252,252,253,252,252,252,252,203,139,33,0,0,0,0,0,0,0,0,0,0,0,5,54,137,137,137,137,137,137,242,253,178,137,137,32,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,136,227,255,254,254,254,254,224,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127,253,243,173,100,100,100,183,253,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,216,85,0,0,0,0,16,206,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,242,55,0,0,0,0,0,0,47,214,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,212,0,0,0,0,0,0,0,0,160,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,249,68,0,0,0,0,0,0,0,84,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,170,11,4,0,0,0,0,0,0,0,141,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,48,230,197,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,195,240,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,91,195,58,0,0,0,0,0,0,0,0,10,165,253,134,0,0,0,0,0,0,0,0,0,0,0,14,175,243,253,236,109,0,0,0,0,0,0,0,74,253,229,33,0,0,0,0,0,0,0,0,0,0,0,143,253,222,141,241,239,50,0,0,0,0,0,6,195,253,81,0,0,0,0,0,0,0,0,0,0,0,18,251,253,182,0,55,181,227,22,103,9,0,11,189,252,219,35,0,0,0,0,0,0,0,0,0,0,0,18,253,253,114,0,0,3,96,42,253,185,30,233,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,65,0,0,0,0,15,204,253,253,253,229,86,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,168,43,0,0,37,85,232,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,221,253,253,235,201,201,230,253,253,253,253,253,166,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,135,253,253,253,253,253,237,152,62,35,234,253,233,141,101,21,0,0,0,0,0,0,0,0,0,0,0,0,4,50,135,135,78,17,14,0,0,0,16,132,149,198,223,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,128,128,128,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,137,167,188,175,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,246,251,254,254,254,254,234,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,250,254,232,135,50,32,236,243,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,248,250,201,71,0,0,111,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,240,105,0,0,0,0,164,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,114,251,167,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,254,218,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,138,254,255,156,97,49,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,160,254,254,254,254,254,254,213,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,194,254,254,197,116,89,88,88,136,244,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,242,198,111,3,0,0,0,0,0,23,202,201,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,4,0,0,0,0,0,0,0,0,124,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,180,221,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,248,224,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,248,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,23,0,0,0,0,0,0,39,160,250,171,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,152,137,85,9,15,97,157,230,221,106,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,163,254,254,254,193,109,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,203,254,238,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,248,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,251,253,201,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,228,253,244,73,0,13,25,42,145,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,139,0,35,209,253,253,253,230,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,78,158,250,254,253,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,253,252,193,175,193,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,253,253,253,253,218,57,0,63,234,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,253,253,253,253,34,45,154,235,253,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,201,99,238,253,253,188,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,253,253,254,243,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,253,253,253,253,132,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,24,76,202,232,138,44,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,155,252,252,253,252,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,189,253,252,252,252,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,236,252,252,211,253,252,252,252,252,229,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,137,137,137,137,128,65,252,252,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,191,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,136,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,101,184,184,253,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,252,253,252,252,252,232,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,252,253,252,252,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,253,253,232,116,42,32,210,251,255,232,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,92,92,8,0,0,0,0,157,253,252,154,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,252,139,0,0,0,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,160,0,0,0,0,0,0,0,0,0,13,212,253,253,201,255,92,0,0,0,0,0,0,9,128,255,253,247,42,0,0,0,0,0,0,0,0,0,24,252,252,252,252,253,121,47,9,0,5,47,47,174,252,253,252,110,0,0,0,0,0,0,0,0,0,0,7,154,252,252,252,253,252,252,196,184,191,252,252,252,252,247,162,19,0,0,0,0,0,0,0,0,0,0,0,9,77,194,252,253,252,252,252,252,253,252,252,252,210,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,22,33,137,221,252,252,253,178,137,43,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,212,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,254,233,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,131,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,185,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,254,228,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,219,254,247,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,85,235,254,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,208,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,219,254,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,192,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,251,254,192,35,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,241,254,254,243,228,228,238,228,228,228,213,128,11,0,0,0,0,0,0,0,0,0,0,0,0,0,26,190,254,254,254,254,254,254,255,241,210,204,254,254,217,47,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,254,245,131,101,44,32,0,24,140,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,198,101,49,0,0,18,27,27,45,138,254,251,211,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,224,193,187,169,193,234,254,254,254,254,227,103,0,0,0,0,0,0,0,0,0,0,0,0,0,63,244,254,254,254,254,254,254,254,254,245,147,70,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,169,254,254,254,254,193,139,79,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,112,194,194,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,162,226,253,253,254,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,116,254,253,253,180,100,137,167,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,192,253,254,227,87,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,253,253,171,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,238,132,19,0,0,0,0,0,0,4,58,58,103,44,0,0,0,0,0,0,0,0,0,0,0,6,145,247,253,254,247,108,36,0,0,67,109,187,253,254,253,229,13,0,0,0,0,0,0,0,0,0,0,0,0,18,95,223,253,253,243,234,235,250,253,253,253,229,206,87,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,73,253,253,253,254,253,222,140,58,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,254,255,254,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,247,253,250,158,196,250,253,149,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,253,79,0,0,111,229,253,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,197,254,250,116,2,0,0,0,74,250,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,195,0,0,0,0,0,0,159,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,241,30,0,0,0,0,5,89,246,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,195,0,0,0,0,80,203,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,213,79,79,130,175,254,253,253,240,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,254,253,253,253,253,254,212,117,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,133,216,253,253,253,177,58,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,41,141,229,253,242,141,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,57,82,169,206,253,252,252,252,253,252,205,13,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,253,252,252,252,244,142,143,118,78,252,234,110,0,0,0,0,0,0,0,0,0,0,0,0,176,231,252,252,190,165,252,52,25,0,0,0,229,252,177,15,0,0,0,0,0,0,0,0,0,0,0,63,204,253,194,13,0,0,51,0,0,0,0,114,255,253,119,0,0,0,0,0,0,0,0,0,0,0,19,194,253,189,19,0,0,0,0,0,0,13,95,206,253,189,56,0,0,0,0,0,0,0,0,0,0,0,57,243,241,47,0,0,0,0,0,0,0,144,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,234,50,0,0,0,0,0,126,243,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,253,153,29,29,117,241,254,234,187,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,208,252,252,253,252,252,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,253,252,252,252,235,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,241,215,252,252,253,246,150,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,66,141,204,234,238,225,51,0,10,179,254,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,252,253,159,38,0,0,0,28,234,253,252,180,13,0,0,0,0,0,0,0,0,0,0,0,0,53,252,252,252,156,43,0,0,0,0,0,175,253,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,177,28,0,0,0,0,0,26,200,249,253,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,216,28,0,0,0,0,29,216,253,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,215,57,57,95,169,216,252,252,202,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,149,252,252,253,252,252,252,253,196,80,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,78,203,252,252,151,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,149,166,254,201,220,166,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,185,253,253,253,253,253,253,253,254,217,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,195,253,253,253,253,253,253,253,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,146,133,133,176,253,253,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,29,4,0,0,11,113,253,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,84,236,253,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,198,253,253,253,254,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,249,253,253,253,253,254,253,235,90,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,253,254,253,253,253,157,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,253,253,254,253,253,253,253,241,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,155,168,192,150,149,218,254,254,254,175,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,44,3,8,18,0,0,41,253,253,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,120,28,0,0,0,15,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,170,253,191,0,0,63,174,253,253,253,133,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,239,253,240,92,93,240,253,253,253,249,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,246,253,253,254,253,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,255,253,253,253,129,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,181,253,254,253,224,137,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,192,255,129,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,193,152,92,51,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,252,243,203,203,122,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,142,203,203,254,253,254,253,254,253,152,71,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,151,151,213,252,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,248,163,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,171,254,250,197,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,219,218,218,233,254,254,254,236,172,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,243,245,254,208,81,233,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,238,254,228,70,37,202,21,0,36,241,254,228,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,66,0,0,0,0,0,0,59,239,255,203,5,0,0,0,0,0,0,0,0,0,0,0,0,104,251,254,182,0,0,0,0,0,0,0,0,96,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,72,0,0,0,0,0,0,0,0,10,204,254,226,18,0,0,0,0,0,0,0,0,0,0,0,236,254,239,16,0,0,0,0,0,0,0,0,0,20,248,254,146,0,0,0,0,0,0,0,0,0,0,0,236,254,203,0,0,0,0,0,0,0,0,0,0,0,99,254,230,20,0,0,0,0,0,0,0,0,0,0,237,254,87,0,0,0,0,0,0,0,0,0,0,0,0,237,254,54,0,0,0,0,0,0,0,0,0,0,236,254,54,0,0,0,0,0,0,0,0,0,0,0,0,236,254,74,0,0,0,0,0,0,0,0,0,0,236,254,54,0,0,0,0,0,0,0,0,0,0,0,0,236,254,190,0,0,0,0,0,0,0,0,0,0,236,254,164,0,0,0,0,0,0,0,0,0,0,0,0,230,254,235,0,0,0,0,0,0,0,0,0,0,236,254,242,26,0,0,0,0,0,0,0,0,0,0,0,210,254,235,0,0,0,0,0,0,0,0,0,0,152,254,254,157,0,0,0,0,0,0,0,0,0,0,0,237,254,151,0,0,0,0,0,0,0,0,0,0,4,201,254,254,178,61,28,0,0,0,0,0,0,20,172,252,254,54,0,0,0,0,0,0,0,0,0,0,0,31,214,254,254,254,236,179,128,96,128,128,166,231,254,254,99,8,0,0,0,0,0,0,0,0,0,0,0,0,24,120,236,252,254,254,254,254,254,254,254,254,210,60,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,86,163,163,228,195,195,124,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,107,234,255,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,107,228,253,253,253,253,205,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,108,224,253,253,253,253,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,47,220,253,253,253,197,164,253,253,253,179,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,125,253,253,246,192,99,67,234,253,253,192,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,253,253,228,108,0,0,75,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,253,253,203,27,0,0,34,166,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,228,27,35,78,174,234,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,242,180,230,253,253,253,253,253,253,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,253,253,238,98,213,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,134,227,253,208,185,157,47,19,213,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,55,19,0,0,0,165,253,253,88,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,188,253,253,186,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,189,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,194,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,139,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,253,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,249,253,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,133,243,196,134,133,59,13,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,238,253,253,254,253,253,253,227,145,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,206,217,218,220,253,253,253,253,221,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,108,205,242,253,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,115,242,253,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,195,253,253,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,203,253,253,126,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,140,255,255,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,77,197,255,253,238,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,194,253,253,253,205,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,141,238,253,253,230,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,199,253,253,253,198,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,156,253,253,253,229,77,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,253,253,253,153,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,253,226,218,218,218,218,219,218,218,218,218,218,218,172,9,0,0,0,0,0,0,0,0,0,7,207,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,18,132,213,253,253,253,253,195,253,249,143,253,172,132,132,92,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,125,125,125,57,0,0,0,0,0,0,0,0,0,0,0,0,0,46,118,118,118,118,118,215,248,248,248,249,253,253,253,250,181,0,0,0,0,0,0,0,0,112,171,241,241,246,253,253,253,253,253,253,253,253,253,253,242,208,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,159,149,149,149,149,149,52,19,19,19,19,17,11,31,253,253,0,0,0,0,0,0,0,0,156,155,31,25,3,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,227,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,250,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,241,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,123,51,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,61,227,253,253,253,193,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,112,216,253,252,252,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,253,236,82,47,179,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,246,252,252,172,21,0,0,35,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,252,252,164,0,0,0,27,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,172,0,0,0,22,139,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,157,21,0,0,0,162,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,253,252,73,0,0,22,180,251,252,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,79,64,108,253,252,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,174,253,252,252,252,252,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,243,253,253,253,255,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,63,189,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,211,252,253,122,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,195,252,221,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,146,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,171,149,165,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,39,119,128,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,222,254,254,254,254,254,254,250,108,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,254,254,254,254,254,254,254,254,254,106,198,38,0,0,0,0,0,0,0,0,0,0,0,0,0,45,132,254,254,254,230,130,163,254,254,254,254,254,254,49,65,16,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,254,66,0,11,40,201,239,254,254,254,195,156,182,21,0,0,0,0,0,0,0,0,0,0,92,254,254,254,254,40,0,0,0,0,83,254,254,254,254,254,254,188,9,0,0,0,0,0,0,0,0,0,92,254,254,254,222,30,0,0,0,0,7,214,254,254,254,254,254,254,15,0,0,0,0,0,0,0,0,0,193,254,254,254,130,0,0,0,0,0,0,39,98,98,225,254,254,254,118,0,0,0,0,0,0,0,0,0,96,254,254,254,130,0,0,0,0,0,0,0,0,0,153,254,254,254,253,88,0,0,0,0,0,0,0,0,198,254,254,254,130,0,0,0,0,0,0,0,0,0,42,254,254,254,254,90,0,0,0,0,0,0,0,0,92,254,254,254,179,80,0,0,0,0,0,0,0,0,26,207,254,254,254,90,0,0,0,0,0,0,0,0,92,254,254,254,254,242,100,3,0,0,0,0,0,0,5,144,254,254,254,90,0,0,0,0,0,0,0,0,92,254,254,254,254,254,254,128,45,0,0,0,0,0,117,254,254,254,221,49,0,0,0,0,0,0,0,0,92,254,254,254,254,254,254,254,225,153,15,42,165,206,245,254,254,254,47,0,0,0,0,0,0,0,0,0,92,254,254,254,254,254,254,254,254,254,175,254,254,254,254,254,224,123,8,0,0,0,0,0,0,0,0,0,12,43,221,254,254,254,254,254,254,254,254,254,254,254,255,224,45,0,0,0,0,0,0,0,0,0,0,0,0,0,45,126,254,254,254,254,254,254,254,254,254,254,134,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,154,221,254,254,254,254,225,57,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,132,254,94,90,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,95,161,160,228,194,255,255,206,130,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,115,253,253,253,253,253,249,241,241,246,253,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,157,111,111,76,0,0,44,111,57,60,0,0,0,0,0,0,0,0,0,0,0,0,3,102,215,249,143,192,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,171,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,167,253,253,194,167,137,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,166,253,253,253,253,193,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,74,158,237,253,253,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,204,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,253,197,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,239,253,158,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,180,253,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,181,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,242,253,253,95,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,118,244,253,235,63,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,183,253,253,182,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,248,253,242,121,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,135,183,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,120,0,0,0,0,0,26,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,119,0,0,0,0,0,54,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,119,0,0,0,0,0,173,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,238,252,119,0,0,0,0,57,242,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,119,0,0,0,0,172,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,252,242,31,0,0,0,0,200,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,155,252,252,147,0,0,0,0,0,200,252,224,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,235,39,0,0,0,0,51,233,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,203,252,252,227,14,14,77,77,146,180,252,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,253,255,253,253,253,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,5,158,252,252,252,241,145,145,146,145,241,252,252,173,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,26,26,26,23,0,0,0,145,249,252,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,252,231,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,219,252,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,253,252,252,174,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,252,247,196,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,189,253,126,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,134,156,156,224,254,254,156,74,59,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,213,253,254,253,253,253,253,254,245,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,199,253,253,235,167,78,78,78,78,48,145,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,247,138,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,222,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,235,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,215,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,253,199,120,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,209,254,254,254,254,255,246,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,135,188,233,246,253,253,217,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,123,199,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,130,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,8,135,45,0,0,0,0,0,0,0,0,0,40,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,238,96,0,0,0,0,0,0,0,19,127,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,238,193,110,20,20,20,80,80,159,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,253,253,254,253,253,253,253,254,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,227,253,254,253,253,253,253,254,253,240,198,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,133,178,253,253,253,253,254,200,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,152,233,254,253,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,223,253,252,253,252,253,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,254,253,254,213,254,253,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,172,92,112,151,213,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,224,102,72,233,21,0,92,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,122,0,253,252,203,20,10,91,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,233,254,192,0,21,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,151,21,203,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,213,173,253,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,252,253,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,254,253,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,253,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,213,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,131,51,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,233,30,51,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,255,253,153,193,254,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,252,253,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,253,254,253,254,253,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,151,253,252,253,171,131,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,37,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,133,0,0,0,0,0,0,0,37,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,215,0,0,0,0,0,0,0,161,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,215,0,0,0,0,0,0,42,221,252,175,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,215,0,0,0,0,0,0,42,221,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,154,0,0,0,0,0,0,73,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,231,51,0,0,0,0,0,0,115,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,252,179,0,0,0,0,0,0,16,222,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,221,144,144,145,144,144,62,109,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,255,253,253,253,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,98,179,190,252,253,252,200,221,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,71,72,71,20,41,253,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,231,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,193,199,254,255,254,254,195,150,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,253,253,253,253,253,253,247,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,185,217,149,156,156,196,238,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,208,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,145,249,250,122,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,136,238,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,42,165,253,253,245,165,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,121,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,236,253,253,126,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,235,253,253,253,215,156,78,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,253,253,253,253,205,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,30,21,69,148,212,243,253,253,241,76,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,128,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,240,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,90,228,251,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,109,171,234,253,253,253,180,12,0,0,0,0,0,0,0,0,0,0,0,0,68,115,115,115,163,218,218,240,253,253,253,252,168,46,12,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,253,253,253,253,253,253,210,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,46,141,192,241,253,251,149,67,46,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,118,118,199,254,254,254,254,254,255,176,118,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,240,253,253,253,253,211,243,201,253,253,253,253,179,13,0,0,0,0,0,0,0,0,0,0,0,0,36,240,230,147,40,40,40,23,36,19,40,40,161,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,118,253,177,0,0,0,0,0,0,0,11,71,227,253,231,26,0,0,0,0,0,0,0,0,0,0,0,0,38,133,79,0,0,0,0,0,13,72,187,253,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,187,253,253,253,167,103,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,250,253,253,253,253,183,130,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,140,143,173,253,253,253,253,192,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,27,27,105,207,253,245,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,253,242,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,203,253,205,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,247,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,232,0,0,0,0,0,0,0,0,0,0,0,0,63,157,79,0,0,0,0,0,0,0,0,0,27,199,253,232,0,0,0,0,0,0,0,0,0,0,0,0,192,253,243,63,36,0,0,0,0,0,0,26,125,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,57,168,236,253,221,179,179,179,179,179,179,209,253,253,201,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,232,241,253,253,253,253,253,253,253,246,199,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,116,116,190,205,253,253,197,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,15,4,100,148,141,173,245,78,130,254,218,92,0,0,0,0,0,0,0,0,0,0,0,0,175,190,190,217,211,195,232,252,243,237,252,252,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,232,247,249,250,247,251,245,244,188,196,179,201,252,253,252,222,0,0,0,0,0,0,0,0,0,0,0,0,77,63,70,70,63,77,56,49,0,0,0,169,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,252,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,246,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,231,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,69,192,254,253,253,253,253,237,148,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,121,221,252,252,253,252,252,252,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,6,66,201,252,251,231,143,144,231,134,126,179,253,252,240,70,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,217,82,0,0,0,0,0,0,35,156,252,157,21,0,0,0,0,0,0,0,0,0,0,0,9,204,252,191,68,4,0,0,0,0,0,0,0,87,252,244,49,0,0,0,0,0,0,0,0,0,0,0,9,204,253,168,0,0,0,0,0,0,0,0,124,255,253,152,0,0,0,0,0,0,0,0,0,0,0,0,9,204,252,211,0,0,0,0,0,0,52,190,242,253,153,5,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,250,190,9,0,0,13,57,190,252,235,153,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,224,67,0,27,218,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,252,249,211,228,253,252,199,77,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,243,253,253,253,247,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,237,252,252,217,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,110,253,252,252,252,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,196,142,252,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,204,252,174,28,22,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,236,45,0,22,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,252,68,0,0,136,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,252,147,22,22,234,247,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,180,231,252,253,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,218,253,252,146,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,191,64,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,64,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,128,128,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,191,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,158,158,200,189,211,255,254,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,145,236,254,248,219,194,188,237,254,220,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,210,254,254,254,64,0,0,16,195,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,201,254,254,249,98,1,0,0,138,254,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,210,51,0,0,0,46,230,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,245,134,3,0,0,0,0,173,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,0,0,0,0,0,29,220,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,174,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,251,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,241,253,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,248,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,233,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,239,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,241,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,246,69,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,247,134,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,246,254,244,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,163,233,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,139,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,240,226,225,237,225,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,255,234,137,175,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,221,246,253,196,82,194,253,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,150,253,252,252,252,244,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,165,164,139,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,92,141,229,253,141,141,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,206,253,252,252,252,253,252,187,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,253,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,252,252,253,177,103,28,28,178,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,190,0,0,0,0,0,57,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,233,59,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,80,0,0,0,0,0,0,144,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,56,0,0,0,0,0,63,206,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,240,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,191,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,113,126,200,113,113,126,243,252,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,10,29,154,253,253,253,254,253,253,253,254,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,63,197,252,253,252,252,252,253,252,252,252,253,252,252,165,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,252,253,252,252,252,253,252,252,252,253,252,252,252,135,28,0,0,0,0,0,0,0,0,0,0,191,252,252,252,253,252,252,252,253,252,214,139,28,103,177,252,253,133,0,0,0,0,0,0,0,0,0,0,255,253,253,253,254,253,253,253,239,150,25,0,0,0,0,51,229,253,119,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,233,196,38,0,0,0,0,0,0,0,10,159,130,0,0,0,0,0,0,0,0,0,253,252,252,252,206,93,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,139,139,90,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,154,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,251,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,239,238,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,243,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,227,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,230,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,111,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,244,161,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,244,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,246,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,169,241,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,237,241,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,215,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,255,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,199,226,213,205,164,108,112,160,161,87,210,113,62,81,255,254,37,0,0,0,0,0,0,0,0,0,0,177,254,254,254,254,254,254,254,254,254,243,254,217,245,254,254,254,72,0,0,0,0,0,0,0,0,0,0,163,250,244,139,203,150,185,150,185,185,150,185,150,150,235,254,206,9,0,0,0,0,0,0,0,0,0,0,13,50,0,0,0,0,0,0,0,0,0,0,0,15,221,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,189,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,250,245,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,229,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,100,254,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,212,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,177,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,242,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,167,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,159,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,195,254,254,255,146,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,253,253,253,253,253,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,114,221,253,131,40,40,184,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,214,253,253,253,109,0,0,65,241,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,251,253,253,228,204,35,0,0,0,181,253,235,16,0,0,0,0,0,0,0,0,0,0,0,0,2,102,253,253,253,130,28,0,0,0,0,0,63,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,136,23,0,0,0,0,0,0,63,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,145,1,0,0,0,0,0,0,0,122,253,253,116,0,0,0,0,0,0,0,0,0,0,0,50,245,253,253,95,0,0,0,0,0,0,0,30,218,253,246,75,0,0,0,0,0,0,0,0,0,0,21,183,253,249,114,2,0,0,0,0,0,0,0,121,253,253,232,0,0,0,0,0,0,0,0,0,0,0,103,253,253,213,0,0,0,0,0,0,0,0,103,244,253,253,131,0,0,0,0,0,0,0,0,0,0,78,239,253,249,91,0,0,0,0,0,0,16,95,249,253,253,136,34,0,0,0,0,0,0,0,0,0,0,234,253,253,140,0,0,0,0,0,2,22,206,253,253,253,248,73,0,0,0,0,0,0,0,0,0,0,0,234,253,253,82,0,0,0,0,0,49,253,253,253,253,213,28,0,0,0,0,0,0,0,0,0,0,0,112,252,253,201,4,0,0,0,0,122,243,253,253,253,100,9,0,0,0,0,0,0,0,0,0,0,0,0,79,247,253,198,0,0,0,36,131,247,253,253,251,104,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,241,107,70,199,223,253,253,253,213,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,247,253,253,253,253,253,253,219,186,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,248,253,253,253,244,110,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,246,116,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,155,80,89,248,145,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,248,254,183,195,253,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,218,254,254,211,189,189,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,194,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,254,207,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,249,254,212,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,223,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,218,254,254,254,243,177,140,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,254,254,254,254,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,235,254,254,216,204,124,105,231,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,101,149,95,12,0,0,0,174,254,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,226,254,238,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,3,207,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,180,224,0,0,0,0,0,0,69,254,254,232,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,245,56,0,0,0,0,41,231,254,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,236,178,91,91,128,228,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,217,254,254,254,254,254,254,254,123,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,124,205,254,254,254,156,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,240,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,207,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,248,139,178,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,190,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,190,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,249,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,229,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,238,132,0,0,38,67,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,99,31,196,236,253,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,252,114,218,253,242,183,250,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,242,69,236,198,39,68,238,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,242,101,115,0,0,177,219,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,204,242,0,0,0,137,244,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,249,61,0,39,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,247,194,159,245,196,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,157,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,154,79,79,79,83,164,225,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,254,254,254,254,251,181,179,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,85,238,245,117,99,99,34,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,229,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,189,254,182,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,251,254,52,47,97,143,209,229,166,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,225,254,240,215,249,213,164,80,65,152,241,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,241,254,254,201,80,7,0,0,0,2,191,239,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,232,94,7,0,0,0,0,0,3,194,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,21,0,0,0,0,0,0,0,3,181,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,254,87,0,0,0,0,0,0,0,0,0,0,0,29,112,10,0,0,0,0,0,0,0,0,0,0,9,230,252,38,0,0,0,0,0,0,0,0,0,17,194,236,67,5,0,0,0,0,0,0,0,0,0,0,90,254,251,18,0,0,0,0,0,0,0,0,72,232,194,28,0,0,0,0,0,0,0,0,0,0,0,37,215,252,122,0,0,0,0,0,0,0,0,0,204,254,156,13,0,0,0,0,0,0,0,0,0,0,2,123,254,254,72,0,0,0,0,0,0,0,0,0,155,240,254,236,134,100,22,14,2,0,0,0,2,14,151,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,96,183,248,254,254,255,191,182,182,182,190,254,254,248,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,78,97,163,163,237,250,250,240,163,156,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,167,253,253,253,253,255,242,132,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,252,252,252,231,228,228,229,242,252,231,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,243,124,96,14,0,0,0,67,221,252,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,220,98,0,0,0,0,0,0,0,30,236,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,24,0,0,0,0,0,0,0,0,9,189,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,206,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,252,212,32,0,0,30,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,247,78,0,12,84,237,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,228,0,64,198,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,253,246,193,233,252,252,193,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,214,252,253,252,252,252,232,133,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,253,252,238,132,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,253,242,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,194,69,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,118,185,199,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,189,254,254,254,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,254,254,217,209,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,243,254,218,121,32,134,254,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,245,193,29,0,17,244,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,86,197,254,178,0,0,12,202,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,208,23,0,0,145,254,254,254,222,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,252,254,206,18,0,0,88,252,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,96,0,25,117,245,254,254,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,195,254,147,2,0,107,254,254,217,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,218,33,22,172,242,245,117,32,159,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,254,120,28,201,254,247,109,0,0,125,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,254,248,180,0,0,0,125,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,254,27,0,0,0,0,64,248,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,201,16,2,0,0,0,0,0,242,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,10,34,109,34,17,0,0,0,0,0,0,0,242,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,191,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,133,133,156,196,254,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,253,253,253,253,253,193,109,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,198,254,253,253,229,188,96,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,235,253,254,225,129,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,209,253,253,249,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,242,253,253,253,254,248,194,194,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,214,253,253,253,253,254,253,253,253,253,182,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,243,253,253,253,253,253,250,156,217,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,154,29,23,0,15,68,253,253,246,85,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,253,115,11,1,0,0,0,0,3,128,253,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,32,38,0,0,0,0,0,0,0,0,0,30,223,254,254,24,0,0,0,0,0,0,0,0,0,0,0,33,218,72,0,0,0,0,0,0,0,0,0,0,194,253,253,24,0,0,0,0,0,0,0,0,0,0,4,171,246,62,0,0,0,0,0,0,0,0,0,0,194,253,253,24,0,0,0,0,0,0,0,0,0,0,48,253,205,0,0,0,0,0,0,0,0,0,0,12,205,253,253,24,0,0,0,0,0,0,0,0,0,0,117,253,216,47,0,0,0,0,0,0,0,0,0,119,253,253,253,53,0,0,0,0,0,0,0,0,0,0,18,226,253,210,18,0,0,0,0,0,0,0,0,153,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,118,253,253,182,86,86,49,0,0,0,0,57,206,253,253,221,16,0,0,0,0,0,0,0,0,0,0,0,23,221,253,253,253,253,238,218,219,218,218,242,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,16,111,228,253,253,253,253,254,253,253,253,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,52,132,184,253,254,253,253,253,253,126,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,5,212,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,100,231,66,0,0,0,0,0,0,0,155,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,232,54,0,0,0,0,0,0,118,247,150,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,187,16,0,0,0,0,0,0,91,249,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,248,127,0,0,0,0,0,0,37,255,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,91,0,0,0,0,0,10,195,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,249,156,0,0,0,0,10,152,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,180,0,0,0,0,135,253,156,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,242,29,0,0,80,254,231,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,226,177,141,236,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,203,253,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,122,253,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,224,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,239,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,223,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,200,179,35,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,181,242,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,220,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,252,179,0,0,0,0,0,0,0,32,37,37,21,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,179,0,0,0,0,0,0,63,237,252,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,35,0,0,0,0,0,0,110,253,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,35,0,0,0,0,32,217,233,231,76,159,253,35,0,0,0,0,0,0,0,0,0,0,0,0,181,252,174,10,0,0,0,0,140,252,237,71,6,160,154,10,0,0,0,0,0,0,0,0,0,0,0,0,181,252,143,0,0,0,0,0,181,252,144,0,37,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,144,0,0,0,0,32,212,253,0,0,182,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,20,0,0,0,0,197,252,252,156,197,231,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,0,0,0,0,0,217,252,252,253,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,83,0,0,0,0,217,252,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,191,15,0,0,110,233,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,222,217,217,253,252,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,154,252,252,252,252,253,252,252,252,182,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,148,231,108,108,108,128,252,191,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,155,255,177,170,191,186,74,96,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,223,224,218,219,253,253,197,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,241,200,71,0,4,102,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,150,106,0,0,0,0,8,87,234,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,14,0,0,0,0,0,0,183,238,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,249,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,190,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,29,0,0,0,0,0,0,15,205,253,152,0,0,0,0,0,0,0,0,0,0,0,20,95,18,0,94,217,193,67,95,16,0,0,0,92,253,222,41,0,0,0,0,0,0,0,0,0,8,184,236,253,99,149,252,242,79,211,253,234,74,0,14,205,253,170,0,0,0,0,0,0,0,0,0,0,18,253,253,253,252,253,242,241,239,244,250,251,251,72,96,253,250,52,0,0,0,0,0,0,0,0,0,0,18,253,253,231,224,119,5,0,0,25,74,213,253,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,18,253,253,65,0,0,0,0,0,0,15,221,253,253,253,244,57,0,0,0,0,0,0,0,0,0,0,0,18,253,253,168,66,8,31,7,66,93,205,253,253,253,246,98,0,0,0,0,0,0,0,0,0,0,0,0,4,81,253,253,253,207,226,206,253,253,253,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,183,253,253,253,253,253,253,253,223,152,45,147,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,135,240,253,242,135,53,12,0,0,15,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,199,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,176,254,254,118,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,177,241,254,254,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,105,243,254,254,254,227,222,254,240,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,254,254,250,42,34,232,254,219,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,86,252,254,254,254,253,159,0,0,138,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,254,254,155,0,0,0,84,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,16,197,254,254,254,254,72,2,0,0,0,84,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,23,218,254,254,126,27,8,0,0,0,0,84,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,48,48,5,0,0,0,0,0,0,121,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,224,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,243,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,249,254,219,33,0,0,0,0,0,0,0,0,0,0,0,0,0,28,125,125,125,125,125,125,102,0,4,188,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,88,212,254,254,254,254,254,254,252,242,242,254,254,120,3,0,0,0,0,0,0,0,0,0,0,0,0,85,249,254,254,250,171,253,254,254,254,255,254,254,254,180,63,0,0,0,0,0,0,0,0,0,0,0,0,98,254,224,75,52,0,114,240,254,254,254,254,254,254,254,241,168,0,0,0,0,0,0,0,0,0,0,0,98,254,254,204,180,180,253,254,254,247,198,75,142,230,254,254,190,0,0,0,0,0,0,0,0,0,0,0,37,218,254,254,254,254,254,247,234,115,0,0,0,39,216,200,29,0,0,0,0,0,0,0,0,0,0,0,0,35,117,117,199,254,120,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,125,144,254,254,244,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,215,252,253,253,253,253,253,243,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,219,241,251,253,253,233,123,12,12,155,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,253,229,55,16,0,0,0,150,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,77,20,0,0,0,0,11,190,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,139,58,8,0,0,0,0,0,74,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,242,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,186,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,162,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,213,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,232,246,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,232,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,232,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,199,253,223,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,163,233,253,253,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,27,77,156,156,236,253,253,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,253,253,253,238,203,130,234,231,67,8,0,0,0,0,0,0,0,0,0,0,0,0,0,7,242,253,253,253,253,249,203,25,0,0,0,169,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,248,104,0,0,0,0,0,100,253,181,56,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,203,123,19,0,0,0,0,0,0,20,139,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,19,107,229,255,254,161,124,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,155,219,253,253,253,253,253,162,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,105,189,253,253,253,253,253,253,253,247,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,179,253,253,253,187,153,67,67,67,76,227,113,0,0,0,0,0,0,0,0,0,0,0,0,0,9,91,247,253,236,138,20,4,0,0,0,0,0,42,26,0,0,0,0,0,0,0,0,0,0,0,0,41,174,253,253,140,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,235,105,4,0,0,4,99,222,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,82,0,4,63,65,184,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,233,213,215,253,253,248,250,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,201,223,216,208,201,113,0,162,253,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,15,7,0,0,42,243,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,230,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,229,253,188,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,253,216,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,218,253,242,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,229,253,209,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,148,236,253,195,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,184,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,243,255,180,138,138,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,253,252,252,252,252,151,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,185,184,234,252,252,222,252,252,252,252,253,188,19,0,0,0,0,0,0,0,0,0,0,0,0,0,119,228,253,252,252,252,252,25,45,45,45,150,253,252,111,0,0,0,0,0,0,0,0,0,0,0,0,116,248,252,253,252,252,252,252,106,0,0,0,0,148,252,215,21,0,0,0,0,0,0,0,0,0,0,36,222,253,253,255,239,199,116,11,0,0,0,0,0,22,245,253,109,0,0,0,0,0,0,0,0,0,15,219,252,252,252,218,33,0,0,0,0,0,0,0,0,0,161,252,177,5,0,0,0,0,0,0,0,0,108,252,252,252,136,84,0,0,0,0,0,0,0,0,0,0,161,252,252,54,0,0,0,0,0,0,0,0,180,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,67,252,252,137,0,0,0,0,0,0,0,0,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,0,255,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,137,0,0,0,0,0,0,0,0,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,5,178,252,252,137,0,0,0,0,0,0,0,0,222,252,252,77,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,137,0,0,0,0,0,0,0,0,138,252,221,25,0,0,0,0,0,0,0,0,0,0,0,160,252,252,252,43,0,0,0,0,0,0,0,0,34,252,189,4,0,0,0,0,0,0,0,0,0,0,158,253,252,252,168,2,0,0,0,0,0,0,0,0,22,245,253,117,3,0,0,0,0,0,3,45,138,233,253,255,253,253,98,0,0,0,0,0,0,0,0,0,0,80,240,252,169,47,47,47,89,161,170,252,252,252,252,253,244,123,17,0,0,0,0,0,0,0,0,0,0,0,153,252,252,253,252,252,252,252,253,252,252,252,252,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,13,88,160,253,252,252,252,252,253,252,252,210,210,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,22,107,137,242,190,137,54,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,255,254,254,175,106,105,105,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,238,253,253,253,253,253,253,253,254,217,209,209,209,210,130,4,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,133,170,151,118,179,178,178,214,253,253,253,190,18,0,0,0,0,0,0,0,0,0,0,61,253,253,253,232,35,0,0,0,0,0,0,35,233,253,253,253,59,0,0,0,0,0,0,0,0,0,0,29,206,253,253,223,0,0,0,0,0,0,0,0,224,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,23,253,253,170,0,0,0,0,0,0,0,0,224,253,253,168,4,0,0,0,0,0,0,0,0,0,0,0,4,59,59,17,0,0,0,0,0,0,0,0,224,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,241,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,176,254,255,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,189,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,244,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,137,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,211,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,174,253,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,207,125,125,125,125,125,125,125,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,252,248,234,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,253,253,253,253,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,19,19,127,149,149,82,149,167,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,230,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,242,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,239,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,223,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,159,237,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,193,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,238,253,253,217,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,216,253,253,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,174,253,253,245,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,171,253,253,211,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,251,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,116,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,252,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,250,254,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,179,183,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,194,117,10,175,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,213,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,254,224,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,252,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,251,60,0,0,0,74,118,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,222,254,196,0,0,0,92,204,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,244,46,0,0,152,251,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,254,121,0,13,150,252,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,233,15,33,220,254,246,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,247,197,254,254,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,254,254,251,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,208,254,254,187,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,128,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,191,128,128,128,128,128,255,191,191,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,193,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,205,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,247,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,184,8,51,46,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,230,254,69,215,252,251,249,182,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,255,250,214,225,253,241,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,242,254,254,244,105,24,0,0,107,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,195,236,98,0,0,0,0,9,218,209,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,78,34,49,0,0,0,0,0,205,215,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,244,214,7,0,0,0,0,0,0,40,244,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,135,0,0,0,0,0,0,80,232,232,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,123,0,0,0,0,21,148,245,246,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,225,225,103,66,90,148,239,254,218,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,254,254,254,228,174,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,93,171,219,176,119,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,105,245,253,253,255,253,253,253,122,105,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,196,252,252,252,252,253,252,252,252,252,252,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,237,237,237,238,237,237,244,252,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,203,132,8,0,0,0,0,0,120,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,58,237,252,243,177,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,226,252,243,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,183,252,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,116,246,253,252,193,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,206,252,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,252,185,149,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,253,253,255,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,44,44,193,192,231,252,252,229,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,252,252,205,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,237,252,252,212,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,31,153,226,252,252,230,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,203,253,252,252,252,212,104,0,0,0,0,0,0,0,0,0,0,0,0,0,22,90,90,90,108,238,238,248,252,253,252,246,162,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,252,252,252,208,171,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,252,137,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,13,0,0,0,0,0,0,0,0,21,192,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,238,99,0,0,0,0,0,0,0,0,45,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,253,99,0,0,0,0,0,0,0,0,12,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,248,47,0,0,0,0,0,0,0,0,12,253,176,0,0,0,0,0,0,0,0,0,0,0,0,5,185,253,170,0,0,0,0,0,0,0,0,0,36,253,227,22,0,0,0,0,0,0,0,0,0,0,0,110,253,253,45,0,0,0,0,0,0,0,0,0,122,253,253,33,0,0,0,0,0,0,0,0,0,0,53,239,253,211,11,0,0,0,0,0,0,0,0,0,122,253,253,33,0,0,0,0,0,0,0,0,0,0,210,253,244,88,0,0,0,0,0,0,0,0,0,0,122,253,253,33,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,0,122,253,253,33,0,0,0,0,0,0,0,0,0,59,248,253,102,0,0,0,0,0,0,0,0,0,0,0,122,253,220,19,0,0,0,0,0,0,0,0,19,221,254,169,0,0,0,0,25,5,15,9,34,92,144,144,245,255,177,0,0,0,0,0,0,0,0,0,34,253,253,155,67,67,168,177,234,187,211,197,253,253,253,253,253,253,176,0,0,0,0,0,0,0,0,0,34,253,253,253,253,253,253,253,253,253,254,253,253,245,154,154,245,253,132,0,0,0,0,0,0,0,0,0,31,237,253,253,253,236,226,121,121,73,11,10,10,10,0,0,223,253,76,0,0,0,0,0,0,0,0,0,0,23,88,88,88,19,0,0,0,0,0,0,0,0,0,0,122,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,203,255,255,254,255,227,130,130,130,30,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,248,253,251,249,253,253,253,253,253,253,156,92,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,186,139,74,111,199,235,249,253,253,253,253,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,141,236,253,253,253,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,77,238,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,193,253,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,208,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,147,236,253,235,197,197,89,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,168,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,236,253,108,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,197,253,168,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,237,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,238,253,236,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,166,239,253,237,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,172,25,0,0,0,0,0,0,0,37,61,49,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,225,9,0,0,0,0,81,106,145,230,238,244,145,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,175,112,112,197,236,236,249,253,253,253,157,94,11,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,253,253,218,135,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,202,253,253,253,229,129,99,5,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,254,224,125,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,253,253,253,252,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,239,253,253,164,171,253,253,253,253,229,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,155,46,86,19,4,5,19,113,221,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,215,70,0,0,0,0,0,0,41,170,253,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,111,28,0,0,0,0,0,0,0,26,221,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,142,0,0,0,0,0,0,0,0,163,253,250,94,0,0,0,0,0,0,0,0,0,0,0,0,35,241,253,162,0,0,0,0,0,0,0,0,124,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,188,11,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,38,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,38,0,0,0,0,0,0,0,64,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,31,240,253,253,38,0,0,0,0,0,0,0,163,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,253,62,0,0,0,0,0,0,0,163,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,168,0,0,0,0,0,0,0,163,253,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,92,250,253,223,46,0,0,0,0,0,26,221,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,183,6,0,0,6,50,171,253,237,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,235,253,253,134,20,20,135,253,253,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,244,253,253,253,253,253,253,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,249,253,253,253,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,123,156,253,159,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,221,246,89,11,11,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,209,254,254,254,254,254,195,165,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,245,254,247,215,134,158,234,234,234,238,220,145,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,159,0,0,0,0,0,0,57,94,144,80,17,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,234,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,196,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,211,254,145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,248,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,236,255,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,234,254,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,165,253,254,150,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,147,117,221,254,244,92,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,251,140,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,180,229,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,154,209,255,187,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,239,252,254,254,254,254,246,158,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,250,254,254,150,24,8,122,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,169,252,254,194,38,3,33,109,224,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,161,3,0,55,184,254,254,254,215,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,245,254,254,235,158,191,250,254,254,254,254,235,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,190,254,224,254,254,254,254,254,254,254,193,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,254,254,227,130,211,254,240,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,199,206,130,46,17,80,236,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,176,254,199,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,205,254,202,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,195,254,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,249,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,237,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,234,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,247,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,223,254,152,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,255,181,0,0,0,0,0,0,47,150,182,223,223,139,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,160,0,0,0,0,84,207,254,232,181,180,212,253,125,0,0,0,0,0,0,0,0,0,0,0,0,135,255,181,0,0,27,192,255,233,135,11,0,0,0,63,244,109,0,0,0,0,0,0,0,0,0,0,0,94,254,180,0,21,213,253,119,16,0,0,0,0,0,0,191,243,21,0,0,0,0,0,0,0,0,0,0,73,254,150,27,192,254,119,0,0,0,0,0,0,0,0,99,254,73,0,0,0,0,0,0,0,0,0,0,73,254,191,212,253,160,5,0,0,0,0,0,0,0,0,37,253,115,0,0,0,0,0,0,0,0,0,0,0,254,254,254,191,0,0,0,0,0,0,0,0,0,0,79,254,63,0,0,0,0,0,0,0,0,0,0,0,212,253,222,16,0,0,0,0,0,0,0,0,0,0,244,211,0,0,0,0,0,0,0,0,0,0,0,0,182,254,144,0,0,0,0,0,0,0,0,0,0,115,254,150,0,0,0,0,0,0,0,0,0,0,0,0,244,253,227,83,0,0,0,0,0,0,0,42,156,248,202,16,0,0,0,0,0,0,0,0,0,0,0,0,254,254,243,233,150,109,58,26,37,58,140,244,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,68,222,254,253,254,243,254,253,254,170,57,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,191,171,254,191,145,145,145,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,119,180,201,139,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,39,124,154,244,131,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,207,254,254,246,246,253,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,233,244,151,68,0,0,113,252,226,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,154,66,0,0,0,0,0,149,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,229,249,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,246,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,156,254,206,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,247,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,248,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,248,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,219,254,209,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,220,254,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,215,124,76,76,76,76,76,76,76,95,159,181,243,243,60,0,0,0,0,0,0,0,0,0,0,36,231,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,92,0,0,0,0,0,0,0,0,0,0,0,7,88,122,171,171,182,242,171,171,171,171,171,150,88,88,63,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,232,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,237,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,255,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,255,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,250,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,163,222,254,254,176,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,190,249,253,199,198,245,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,231,253,218,94,0,0,95,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,237,31,0,0,0,37,253,233,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,253,87,0,0,0,0,69,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,199,0,0,0,0,16,196,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,249,113,12,0,36,162,253,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,228,253,253,225,217,241,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,138,222,249,253,254,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,72,98,247,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,221,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,71,42,168,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,161,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,116,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,253,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,253,245,233,253,253,229,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,183,251,254,246,97,40,106,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,207,253,253,210,95,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,253,253,253,75,0,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,208,253,253,253,92,0,0,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,149,1,0,0,0,0,61,253,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,151,0,0,0,0,0,0,62,254,254,250,23,0,0,0,0,0,0,0,0,0,0,0,21,218,253,253,193,15,0,0,0,0,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,243,41,0,0,0,0,0,0,7,146,253,253,139,0,0,0,0,0,0,0,0,0,0,0,17,222,253,253,180,0,0,0,0,0,0,0,72,253,253,237,29,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,94,0,0,0,0,0,6,79,230,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,152,0,0,0,0,39,148,253,253,236,146,12,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,240,108,86,86,86,174,253,253,237,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,125,253,253,253,253,253,253,253,254,253,193,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,217,253,253,253,253,253,253,197,75,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,253,253,253,253,137,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,234,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,251,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,201,254,242,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,189,254,200,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,176,254,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,234,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,220,241,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,181,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,222,30,0,0,0,0,0,29,147,181,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,110,0,0,0,0,0,91,223,254,254,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,188,9,0,0,0,10,136,248,242,163,180,254,58,0,0,0,0,0,0,0,0,0,0,0,0,1,173,254,103,0,0,0,4,178,254,208,71,0,114,254,103,0,0,0,0,0,0,0,0,0,0,0,0,10,254,222,16,0,0,0,123,254,228,19,0,0,114,254,103,0,0,0,0,0,0,0,0,0,0,0,0,80,254,215,9,0,0,0,171,254,94,0,0,0,114,254,103,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,54,0,0,0,95,254,128,0,0,29,211,254,61,0,0,0,0,0,0,0,0,0,0,0,0,7,225,254,207,0,0,0,28,255,228,51,85,221,254,225,6,0,0,0,0,0,0,0,0,0,0,0,0,0,97,250,253,213,95,30,43,184,254,250,251,243,155,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,238,254,254,236,244,254,254,253,197,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,131,215,254,254,195,145,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,97,97,97,97,141,234,234,234,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,76,184,253,253,253,253,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,233,253,253,253,253,253,253,205,198,198,232,220,0,0,0,0,0,0,0,0,0,0,0,0,0,104,172,251,253,253,253,249,215,82,115,16,0,23,114,144,0,0,0,0,0,0,0,0,0,0,0,3,108,212,253,253,253,212,103,91,4,144,248,164,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,207,90,0,0,0,61,247,253,223,39,0,0,0,0,0,0,0,0,0,0,0,0,42,222,253,253,253,145,18,0,0,0,0,0,181,253,253,134,0,0,0,0,0,0,0,0,0,0,0,53,213,247,253,253,136,1,0,0,0,0,0,0,226,253,253,89,0,0,0,0,0,0,0,0,0,0,0,153,246,253,234,75,23,0,0,0,0,0,4,171,251,253,128,14,0,0,0,0,0,0,0,0,0,0,23,201,253,253,202,28,0,0,0,0,0,6,52,219,253,253,91,0,0,0,0,0,0,0,0,0,0,0,118,253,253,217,29,0,0,0,0,0,0,43,253,253,242,107,19,0,0,0,0,0,0,0,0,0,0,0,118,253,253,198,0,0,0,0,0,0,107,215,253,186,65,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,131,0,0,0,0,44,125,219,253,253,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,135,0,0,54,104,231,253,253,242,150,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,124,102,220,237,253,253,253,192,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,231,80,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,228,212,152,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,147,232,232,214,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,245,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,193,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,84,157,17,0,113,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,237,19,0,155,237,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,170,4,0,8,231,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,226,154,7,0,0,86,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,132,57,3,16,164,253,120,57,77,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,186,250,253,240,243,254,253,239,225,205,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,78,105,101,254,143,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,251,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,221,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,48,171,255,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,209,253,253,224,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,242,251,146,69,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,245,202,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,125,0,0,0,8,53,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,42,0,0,56,221,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,129,19,172,250,196,79,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,250,243,237,248,80,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,207,253,253,181,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,124,253,175,253,253,194,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,78,253,117,3,39,163,252,243,196,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,196,20,0,0,0,90,208,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,97,0,0,0,0,0,12,173,248,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,231,4,0,0,0,0,0,0,46,248,251,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,233,134,0,0,0,0,0,0,0,67,250,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,224,0,0,0,0,0,0,25,207,242,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,130,253,161,8,0,0,12,143,250,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,205,253,196,179,179,206,253,237,141,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,228,253,253,253,151,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,110,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,176,0,0,0,0,45,240,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,238,38,0,0,0,57,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,114,0,0,0,29,216,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,252,88,0,0,0,141,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,229,252,252,127,0,0,0,0,178,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,252,127,3,0,0,0,101,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,253,255,197,0,0,0,0,0,226,254,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,247,103,0,0,0,0,0,225,253,252,56,0,0,13,38,0,0,0,0,0,0,0,0,0,60,234,252,252,137,0,0,0,0,0,67,246,253,208,13,0,0,95,234,22,0,0,0,0,0,0,0,0,141,252,252,252,238,225,137,113,114,38,134,252,253,196,0,101,176,243,214,15,0,0,0,0,0,0,0,0,126,244,253,241,255,253,253,253,254,253,253,253,254,253,253,253,254,209,25,0,0,0,0,0,0,0,0,0,0,56,84,47,97,171,122,196,228,252,252,252,253,252,233,196,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,187,252,252,244,93,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,144,144,144,192,144,144,67,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,254,253,223,177,105,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,162,154,184,253,254,253,253,253,253,238,157,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,121,11,0,4,10,11,88,164,233,253,253,253,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,167,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,204,253,253,253,238,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,75,199,250,253,253,250,189,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,45,127,198,254,253,253,250,185,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,182,253,253,253,255,199,132,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,253,253,253,253,81,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,254,144,144,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,253,255,253,223,167,67,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,44,144,154,154,197,254,253,253,253,253,219,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,88,164,243,253,253,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,172,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,230,253,209,0,0,0,0,0,0,0,0,0,0,0,0,53,15,0,0,0,0,0,0,0,0,5,70,199,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,210,235,45,84,155,155,155,155,155,155,193,253,253,253,232,125,0,0,0,0,0,0,0,0,0,0,0,50,242,253,253,253,253,253,253,253,254,253,253,253,253,192,44,0,0,0,0,0,0,0,0,0,0,0,0,9,125,143,143,143,143,143,225,253,254,253,210,143,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,203,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,107,253,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,234,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,253,252,252,230,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,245,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,213,171,5,0,0,0,3,27,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,254,208,36,89,150,183,239,254,254,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,209,254,254,243,226,254,254,254,210,197,123,107,19,0,0,0,0,0,0,0,0,0,0,0,0,0,5,175,254,252,254,248,247,189,85,19,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,218,128,163,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,254,150,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,205,254,174,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,144,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,246,237,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,0,0,0,0,0,0,167,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,242,30,0,0,0,0,0,176,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,231,0,0,0,0,0,194,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,251,254,129,4,0,0,122,250,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,244,254,151,33,134,245,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,246,254,254,111,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,22,155,155,145,39,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,121,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,253,218,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,244,253,111,1,0,0,0,0,0,0,0,0,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,241,43,0,0,0,0,0,0,0,0,0,31,233,44,0,0,0,0,0,0,0,0,0,0,0,0,138,253,198,0,0,0,0,0,0,0,0,0,59,175,238,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,145,0,0,0,0,0,0,0,0,16,208,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,210,244,50,0,0,0,0,0,0,0,0,152,253,238,61,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,88,0,0,0,0,0,0,0,0,243,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,184,0,0,0,0,0,0,0,88,252,229,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,55,0,0,0,0,0,0,163,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,251,253,84,0,0,0,59,129,177,240,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,200,96,0,108,248,254,210,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,243,251,244,155,70,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,88,218,253,253,130,50,0,67,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,55,55,14,0,0,67,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,117,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,187,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,235,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,100,100,148,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,115,192,253,253,253,253,253,253,244,214,90,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,194,253,249,198,150,145,88,122,198,206,253,253,112,20,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,58,0,0,0,0,0,0,8,107,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,36,84,40,1,0,0,0,0,0,0,0,6,65,249,143,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,246,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,134,144,144,144,48,67,168,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,77,177,237,253,253,253,253,254,253,253,253,203,91,6,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,219,149,44,44,178,254,253,253,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,74,247,251,134,7,1,23,186,252,237,121,29,69,149,253,253,156,6,0,0,0,0,0,0,0,0,0,8,194,253,134,0,0,60,253,253,229,77,0,0,0,20,174,249,253,154,56,0,0,0,0,0,0,0,0,34,253,253,96,161,199,249,253,154,31,0,0,0,0,0,0,107,253,253,253,0,0,0,0,0,0,0,0,18,212,253,253,253,250,189,113,6,0,0,0,0,0,0,0,1,156,251,244,0,0,0,0,0,0,0,0,0,26,99,99,99,65,0,0,0,0,0,0,0,0,0,0,0,0,74,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,150,253,253,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,155,233,252,252,252,253,200,73,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,191,252,253,241,112,71,253,252,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,253,97,0,1,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,252,252,252,83,0,79,191,253,252,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,220,35,0,63,201,252,253,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,252,252,241,181,182,242,252,252,253,241,195,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,252,253,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,255,253,253,253,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,210,231,179,179,211,252,252,252,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,0,0,129,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,232,252,253,200,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,171,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,252,241,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,86,167,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,131,246,247,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,195,246,254,245,183,105,108,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,168,253,254,254,193,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,165,243,254,241,188,44,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,156,254,229,134,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,254,148,0,8,48,115,115,115,45,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,233,194,210,254,254,254,254,254,222,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,221,254,254,254,252,245,193,157,157,157,200,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,92,240,254,254,190,106,55,0,0,0,0,0,84,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,246,103,0,0,0,0,0,0,0,0,57,254,249,28,0,0,0,0,0,0,0,0,0,0,0,0,5,81,56,0,0,0,0,0,0,0,0,0,27,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,240,250,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,254,242,25,0,0,0,0,0,0,0,0,0,0,35,15,0,0,0,0,0,0,0,0,0,0,38,176,254,250,113,0,0,0,0,0,0,0,0,0,0,142,252,223,153,100,5,0,0,0,0,27,51,166,230,254,229,95,0,0,0,0,0,0,0,0,0,0,0,181,254,254,254,254,161,106,112,193,193,255,254,254,250,175,32,0,0,0,0,0,0,0,0,0,0,0,0,22,125,241,254,254,254,254,254,254,254,252,220,157,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,79,109,109,118,129,109,79,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,150,238,254,255,237,150,150,225,161,221,203,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,146,253,253,253,253,253,253,253,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,140,251,253,253,178,114,114,114,114,114,114,167,253,253,154,0,0,0,0,0,0,0,0,0,0,0,12,84,240,253,248,170,28,0,0,0,0,0,0,90,253,250,90,0,0,0,0,0,0,0,0,0,0,10,129,226,253,235,128,0,0,0,0,0,0,0,8,188,253,190,0,0,0,0,0,0,0,0,0,0,0,56,250,253,246,98,0,0,0,0,0,0,0,0,76,243,234,100,0,0,0,0,0,0,0,0,0,0,0,185,253,248,44,0,0,0,0,0,0,0,0,34,245,253,95,0,0,0,0,0,0,0,0,0,0,0,0,69,187,87,0,0,0,0,0,0,0,0,22,164,253,223,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,230,253,184,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,241,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,250,253,206,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,251,248,108,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,226,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,233,253,205,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,189,253,240,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,242,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,198,228,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,18,0,0,0,70,77,77,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,247,231,96,211,241,253,254,254,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,153,250,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,239,254,254,254,254,253,218,131,47,161,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,242,157,135,52,0,0,40,234,254,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,204,32,0,0,0,3,120,248,254,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,199,254,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,147,253,254,254,238,60,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,152,245,254,254,254,163,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,102,224,254,254,254,254,254,235,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,254,254,254,254,254,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,223,146,105,58,58,58,247,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,30,0,0,0,0,0,246,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,109,251,254,35,0,0,0,0,0,0,0,0,0,0,0,0,41,31,0,0,0,0,0,0,0,0,5,102,254,254,239,26,0,0,0,0,0,0,0,0,0,0,0,138,245,242,118,0,0,0,0,0,29,138,234,254,254,221,64,0,0,0,0,0,0,0,0,0,0,0,0,255,254,236,70,18,41,71,154,219,237,254,254,223,125,17,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,254,213,227,254,254,254,254,249,216,131,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,200,248,254,254,248,240,215,130,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,76,76,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,212,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,218,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,232,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,170,213,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,229,178,145,94,69,67,62,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,210,254,254,254,254,254,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,135,95,82,132,137,137,130,158,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,215,9,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,249,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,239,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,233,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,184,65,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,250,254,254,237,176,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,211,254,254,254,249,206,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,16,25,97,129,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,164,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,145,254,254,188,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,97,57,57,137,232,254,254,191,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,254,254,254,254,174,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,241,254,255,253,168,58,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,0,0,0,0,0,0,57,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,86,0,0,0,0,0,0,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,86,0,0,0,0,0,0,170,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,141,0,0,0,0,0,0,114,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,0,0,0,0,0,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,0,0,0,0,0,170,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,141,0,0,0,0,0,0,0,114,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,198,86,29,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,198,170,114,86,170,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,86,170,170,255,255,226,141,198,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,100,108,108,166,198,247,225,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,169,246,253,253,253,253,254,253,253,248,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,20,101,113,113,113,113,113,101,42,42,117,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,227,250,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,197,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,230,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,253,216,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,231,255,254,254,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,200,236,63,156,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,32,0,13,243,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,243,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,5,0,0,0,0,4,154,254,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,185,155,155,155,226,226,247,240,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,197,197,197,228,254,234,181,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,14,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,128,191,128,255,255,255,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,64,0,0,0,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,147,233,200,147,147,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,219,254,254,254,254,254,247,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,94,247,254,254,164,95,140,233,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,145,254,254,254,245,45,0,36,235,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,172,51,0,0,95,254,246,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,227,98,3,0,0,71,246,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,37,0,0,0,0,130,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,254,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,225,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,235,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,235,254,247,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,176,254,247,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,218,254,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,164,254,246,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,243,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,220,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,243,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,191,128,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,18,18,93,136,172,255,254,249,66,0,0,0,95,16,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,253,253,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,248,200,118,82,82,82,225,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,141,0,0,0,0,0,130,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,112,0,0,0,0,0,89,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,216,0,0,0,0,0,12,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,230,0,0,0,0,59,185,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,243,53,0,8,124,243,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,253,94,10,161,253,235,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,205,195,253,203,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,158,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,159,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,242,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,205,248,239,124,205,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,177,253,133,0,0,160,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,253,173,10,0,5,177,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,147,253,235,35,58,69,190,253,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,239,201,247,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,204,141,35,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,207,253,165,135,86,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,196,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,240,253,187,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,215,254,253,235,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,164,253,254,186,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,253,228,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,245,253,249,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,245,253,206,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,239,253,220,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,249,70,0,0,0,0,0,68,221,221,121,92,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,166,0,0,0,19,63,236,254,254,254,254,181,29,0,0,0,0,0,0,0,0,0,0,0,0,195,253,230,16,0,0,59,173,253,253,253,224,253,253,199,29,0,0,0,0,0,0,0,0,0,0,0,40,247,253,165,0,0,65,248,254,253,128,44,25,208,253,190,0,0,0,0,0,0,0,0,0,0,0,6,161,253,239,54,1,110,246,253,232,77,2,2,47,228,252,142,0,0,0,0,0,0,0,0,0,0,0,23,225,253,160,0,7,210,253,229,0,39,10,71,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,99,253,253,230,90,165,165,247,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,32,231,253,152,3,170,253,253,253,192,211,253,253,222,45,2,0,0,0,0,0,0,0,0,0,0,0,0,26,208,253,253,176,154,253,253,253,255,253,253,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,253,253,253,253,253,253,254,253,223,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,167,253,253,253,253,253,192,66,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,218,253,244,244,178,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,253,253,253,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,184,253,253,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,134,42,186,253,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,251,70,0,0,0,0,0,0,0,0,0,0,0,0,0,3,36,158,170,168,88,2,0,0,0,68,249,253,112,0,0,0,0,0,0,0,0,0,0,0,0,8,87,206,253,253,253,253,253,175,24,0,84,226,253,191,14,0,0,0,0,0,0,0,0,0,0,0,0,160,253,243,126,51,51,140,253,253,207,99,224,253,237,17,0,0,0,0,0,0,0,0,0,0,0,44,145,249,189,98,0,0,0,1,56,253,253,253,253,192,100,0,0,0,0,0,0,0,0,0,0,0,0,187,253,190,17,0,0,0,0,39,123,253,253,253,206,47,0,0,0,0,0,0,0,0,0,0,0,0,0,254,148,11,0,0,0,28,100,229,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,89,12,79,131,182,245,253,253,221,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,232,253,253,253,244,233,101,15,156,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,231,175,83,44,0,0,0,73,252,253,121,47,0,0,0,0,0,0,0,0,0,0,0,0,0,7,36,36,24,0,0,0,0,0,0,0,154,243,253,243,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,93,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,229,185,9,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,34,47,21,0,0,0,76,232,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,5,108,240,254,190,17,0,41,224,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,155,253,253,103,6,0,0,229,253,102,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,187,254,247,118,0,0,0,85,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,214,254,210,71,0,0,0,30,222,254,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,207,253,188,29,0,0,0,38,228,253,188,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,235,50,0,0,0,80,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,235,254,237,153,70,19,237,254,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,220,253,253,253,237,253,253,211,139,55,123,138,139,138,201,25,0,0,0,0,0,0,0,0,0,0,0,0,13,63,148,253,254,253,253,253,254,253,253,253,247,213,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,236,85,69,69,69,69,69,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,242,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,255,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,132,253,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,244,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,239,202,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,113,191,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,200,252,252,220,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,107,253,252,245,208,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,153,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,246,252,252,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,252,252,141,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,207,252,252,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,252,253,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,26,57,57,57,57,57,38,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,240,34,29,123,169,207,252,252,252,252,253,224,131,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,203,178,252,252,252,253,252,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,255,253,253,253,253,255,215,229,253,253,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,173,253,243,246,252,252,253,252,70,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,253,252,252,252,252,253,252,252,252,252,253,154,12,0,0,0,0,0,0,0,0,0,0,0,0,19,177,239,253,252,252,252,252,253,252,245,223,145,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,174,252,252,252,252,253,127,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,238,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,165,246,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,200,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,200,236,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,235,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,248,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,223,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,219,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,192,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,247,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,255,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,247,255,192,12,0,0,11,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,237,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,190,51,0,0,0,0,0,181,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,250,253,144,0,0,0,0,0,181,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,250,69,0,0,0,0,15,238,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,253,216,0,0,0,0,0,84,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,255,238,58,0,0,0,0,0,167,254,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,254,198,0,0,0,0,0,21,230,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,254,226,115,76,128,27,0,128,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,209,247,253,253,253,253,238,199,245,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,124,207,253,253,254,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,137,254,254,222,148,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,253,99,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,193,254,249,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,248,250,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,240,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,49,0,0,0,0,0,0,50,105,105,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,239,228,47,0,0,25,60,156,229,252,252,228,134,0,0,0,0,0,0,0,0,0,0,0,0,0,8,225,252,252,220,38,9,201,252,252,252,252,252,252,220,137,7,0,0,0,0,0,0,0,0,0,0,8,182,252,252,252,252,149,197,253,252,252,252,252,252,252,252,252,103,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,207,252,252,253,252,203,107,29,29,29,240,252,103,0,0,0,0,0,0,0,0,0,43,226,252,252,213,74,199,252,252,241,99,26,0,0,0,0,238,252,121,0,0,0,0,0,0,0,0,0,60,252,252,252,74,72,245,252,252,70,0,0,0,0,0,0,238,252,172,0,0,0,0,0,0,0,0,0,200,252,252,225,58,176,252,236,75,0,0,0,0,0,0,48,243,252,103,0,0,0,0,0,0,0,0,81,242,252,252,150,30,252,236,83,0,0,0,0,0,0,23,224,252,244,85,0,0,0,0,0,0,0,0,105,252,252,252,29,119,252,162,0,0,0,0,0,0,0,30,252,252,207,0,0,0,0,0,0,0,0,0,255,253,253,133,0,179,253,14,0,0,0,0,0,0,136,253,253,253,208,0,0,0,0,0,0,0,0,0,253,252,252,132,0,56,252,14,0,0,0,0,4,60,230,252,252,230,70,0,0,0,0,0,0,0,0,0,253,252,252,132,0,29,245,14,0,0,0,4,118,252,252,252,252,153,0,0,0,0,0,0,0,0,0,0,253,252,252,132,0,0,134,85,0,0,0,130,252,252,252,237,132,8,0,0,0,0,0,0,0,0,0,0,209,252,252,168,9,0,16,177,31,75,224,247,252,252,141,25,0,0,0,0,0,0,0,0,0,0,0,0,93,246,252,252,187,178,178,248,208,252,253,252,250,151,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,252,252,252,252,252,252,252,253,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,23,162,162,226,252,252,252,252,216,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,137,67,59,59,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,155,244,192,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,134,248,254,254,254,231,101,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,183,254,254,211,111,210,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,184,254,250,144,12,0,11,198,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,254,253,98,0,0,0,0,166,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,184,254,254,108,0,0,0,0,0,45,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,181,254,254,151,14,0,0,0,0,0,69,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,232,77,1,0,0,0,0,0,0,135,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,58,249,254,137,0,0,0,0,0,0,0,0,135,254,146,0,0,0,0,0,0,0,0,0,0,0,0,32,220,254,131,2,0,0,0,0,0,0,0,0,214,254,72,0,0,0,0,0,0,0,0,0,0,0,0,201,254,228,33,0,0,0,0,0,0,0,0,2,216,254,68,0,0,0,0,0,0,0,0,0,0,0,0,220,254,101,0,0,0,0,0,0,0,0,0,143,254,198,4,0,0,0,0,0,0,0,0,0,0,0,140,249,220,14,0,0,0,0,0,0,0,0,151,243,252,76,0,0,0,0,0,0,0,0,0,0,0,7,225,254,140,0,0,0,0,0,0,0,5,137,245,254,86,0,0,0,0,0,0,0,0,0,0,0,0,148,254,253,83,0,0,0,0,0,0,6,79,254,252,128,3,0,0,0,0,0,0,0,0,0,0,0,0,210,254,163,0,0,0,0,0,0,107,198,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,134,0,0,0,34,36,193,251,254,233,92,3,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,254,216,91,141,190,251,254,254,182,140,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,155,254,254,254,254,254,247,209,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,120,202,254,243,122,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,125,125,157,254,160,125,125,125,125,125,54,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,248,250,253,253,253,253,253,253,253,253,253,253,250,242,0,0,0,0,0,0,0,0,0,0,0,0,229,253,253,253,253,253,253,253,253,253,253,253,184,151,247,72,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,253,253,232,149,128,19,7,2,18,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,225,55,25,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,225,61,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,238,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,196,253,253,237,99,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,253,253,238,196,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,108,194,225,240,253,253,185,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,89,201,239,253,206,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,239,253,203,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,100,0,0,0,0,0,0,0,0,89,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,149,0,0,0,0,0,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,13,199,253,213,107,27,18,0,21,27,27,121,174,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,219,150,232,253,253,253,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,253,253,253,253,253,253,245,148,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,253,253,253,253,253,253,253,253,248,247,159,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,176,253,253,253,253,253,253,155,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,120,195,158,93,57,187,255,255,254,167,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,232,254,254,254,247,247,254,254,254,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,244,254,200,204,254,254,208,67,67,67,190,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,21,249,254,143,5,46,186,254,122,0,0,0,74,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,178,11,0,0,44,116,7,0,0,0,82,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,38,0,0,0,0,0,0,0,0,4,197,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,191,15,0,0,0,0,0,0,10,169,254,211,24,0,0,0,0,0,0,0,0,0,0,0,0,0,16,250,254,223,59,0,0,0,0,6,168,254,248,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,241,254,238,134,56,0,5,170,254,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,178,234,254,249,167,132,254,245,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,188,254,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,225,254,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,254,254,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,254,216,94,176,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,197,254,213,26,0,137,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,236,254,211,29,0,59,249,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,217,27,0,66,229,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,251,238,26,86,163,226,254,250,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,251,226,253,254,254,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,254,210,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,170,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,176,253,191,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,179,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,216,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,247,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,193,253,164,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,248,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,223,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,47,0,0,67,159,160,243,215,97,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,212,218,12,13,115,249,239,156,38,139,240,220,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,250,253,47,89,253,227,35,0,0,0,38,235,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,122,228,215,44,0,0,0,0,0,79,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,246,253,144,0,0,0,0,0,0,4,210,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,251,253,253,144,0,0,0,0,0,0,4,210,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,215,85,22,0,0,0,0,79,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,93,236,253,253,141,21,0,0,38,236,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,231,253,253,230,216,216,240,156,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,111,193,254,253,214,131,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,113,113,207,253,255,253,253,159,113,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,225,253,252,252,252,252,253,252,252,252,252,253,181,19,0,0,0,0,0,0,0,0,0,0,0,98,197,234,252,228,195,195,195,195,196,70,165,195,195,222,252,209,66,0,0,0,0,0,0,0,0,0,13,228,252,138,84,47,0,0,0,0,0,0,0,0,0,38,218,252,177,0,0,0,0,0,0,0,0,0,50,237,252,84,0,0,0,0,0,0,0,0,0,0,0,0,85,252,223,0,0,0,0,0,0,0,0,0,0,48,229,162,0,0,0,0,0,0,0,0,0,0,0,0,85,253,225,0,0,0,0,0,0,0,0,0,0,0,21,9,0,0,0,0,0,0,0,0,0,0,0,0,85,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,234,252,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,223,136,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,227,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,245,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,222,23,0,0,0,0,0,0,0,0,0,0,0,0,0,24,89,0,0,0,0,0,0,0,0,71,243,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,248,74,0,0,0,0,0,0,0,185,253,216,30,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,246,60,0,0,0,0,0,0,65,247,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,239,0,0,0,0,0,0,3,180,253,217,31,0,0,0,0,0,0,0,0,0,0,0,0,0,27,214,253,117,0,0,0,0,0,0,130,253,253,123,0,0,8,164,0,0,0,0,0,0,0,0,0,27,199,253,225,19,0,0,0,0,0,60,233,253,253,212,206,206,210,216,0,0,0,0,0,0,0,0,0,123,253,243,103,0,25,49,49,86,186,230,253,253,253,253,215,182,68,31,0,0,0,0,0,0,0,0,92,246,253,234,165,165,210,253,253,253,253,253,253,240,95,89,19,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,250,246,246,209,215,253,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,169,129,63,0,0,34,219,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,4,0,0,0,0,126,253,186,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,222,237,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,102,245,182,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,207,244,184,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,128,157,158,133,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,137,161,236,249,253,253,254,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,253,253,253,254,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,253,253,235,176,92,254,253,244,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,228,47,0,0,254,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,157,226,184,47,0,0,0,254,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,253,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,157,203,245,245,208,160,250,254,253,137,0,0,0,0,156,239,22,0,0,0,0,0,0,0,0,68,203,252,253,253,253,253,253,253,253,254,253,155,0,0,0,0,192,253,181,0,0,0,0,0,0,0,0,245,253,253,253,207,170,242,253,253,253,254,253,131,0,0,0,42,247,253,174,0,0,0,0,0,0,0,0,208,253,253,186,19,87,228,253,253,238,254,253,244,83,0,7,138,253,253,165,0,0,0,0,0,0,0,0,114,252,253,253,223,253,253,253,236,86,169,253,253,244,164,171,253,253,248,56,0,0,0,0,0,0,0,0,0,105,190,241,253,253,232,184,33,0,44,240,253,253,253,253,253,236,105,0,0,0,0,0,0,0,0,0,0,0,0,34,61,61,13,0,0,0,0,87,246,253,253,244,187,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,88,141,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,97,82,181,247,250,137,137,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,201,225,227,174,107,235,219,242,229,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,218,254,189,19,0,0,39,76,226,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,223,20,0,0,0,0,22,230,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,157,0,0,0,0,0,25,238,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,213,0,0,0,0,6,180,254,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,253,132,2,0,56,242,254,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,192,254,254,77,69,192,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,254,254,254,161,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,254,255,254,255,254,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,137,254,254,254,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,162,254,254,254,255,254,255,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,164,23,23,68,244,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,246,58,2,0,0,49,243,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,198,254,242,60,0,0,0,0,96,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,70,0,0,0,0,0,96,199,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,87,3,0,42,66,102,210,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,233,254,254,204,202,235,254,254,254,127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,254,254,231,153,54,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,177,254,254,243,191,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,142,255,247,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,142,250,253,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,143,236,253,253,253,253,248,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,81,158,214,215,231,253,253,253,253,253,245,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,180,253,253,254,253,253,253,253,253,186,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,254,253,253,253,253,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,62,224,253,253,254,253,253,253,253,236,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,180,253,253,253,253,178,93,223,253,253,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,175,253,253,253,252,169,57,0,164,253,253,225,45,0,0,0,0,0,0,0,0,0,0,0,0,0,50,172,253,253,253,239,114,0,0,0,164,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,254,164,0,0,0,0,95,254,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,103,238,253,253,230,146,54,0,0,0,0,45,233,253,253,177,49,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,178,42,0,0,0,0,0,143,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,144,251,253,228,137,11,0,0,0,0,0,133,249,253,253,165,13,0,0,0,0,0,0,0,0,0,0,0,183,253,253,215,28,0,0,0,0,36,131,251,253,253,235,49,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,215,28,0,9,54,61,222,254,253,253,208,147,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,228,174,174,187,253,253,253,255,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,253,253,253,253,253,253,253,242,226,107,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,252,253,253,253,253,253,252,169,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,232,120,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,192,253,244,119,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,253,248,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,211,253,253,243,24,186,253,247,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,228,253,217,48,0,64,249,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,132,24,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,145,147,249,249,249,252,253,209,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,246,253,253,235,199,253,253,253,235,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,232,253,239,154,32,12,72,252,253,253,253,238,57,0,0,0,0,0,0,0,0,0,0,0,0,0,59,235,253,199,51,0,0,16,218,253,253,212,231,253,234,26,0,0,0,0,0,0,0,0,0,0,0,0,191,253,221,8,0,0,63,194,253,253,201,18,89,253,253,87,0,0,0,0,0,0,0,0,0,0,0,64,250,231,49,0,60,135,240,253,253,198,20,0,79,253,253,209,0,0,0,0,0,0,0,0,0,0,0,94,253,208,115,187,249,253,253,247,203,17,0,0,11,228,253,243,0,0,0,0,0,0,0,0,0,0,0,73,251,253,253,253,253,253,161,36,0,0,0,0,0,102,253,153,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,162,82,8,0,0,0,0,0,0,4,46,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,166,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,170,169,169,169,253,252,252,227,0,0,0,0,0,0,0,0,0,0,0,51,198,172,19,0,13,169,197,246,253,252,252,252,253,252,186,31,0,0,0,0,0,0,0,0,0,0,38,213,253,227,31,0,0,169,214,139,140,139,139,139,78,28,19,0,0,0,0,0,0,0,0,0,4,128,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,228,135,85,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,231,175,114,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,150,225,229,253,253,253,255,253,253,253,141,66,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,84,133,197,196,215,252,253,252,100,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,56,178,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,126,175,0,0,0,0,0,0,0,0,0,169,252,252,101,0,0,0,0,0,0,0,0,0,0,0,13,194,253,253,29,29,19,26,16,29,29,79,154,253,253,203,51,0,0,0,0,0,0,0,0,0,0,0,0,19,190,252,253,252,224,243,216,252,252,252,253,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,168,253,252,252,252,253,252,252,252,253,196,80,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,116,139,140,139,139,139,28,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,32,0,0,0,137,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,177,225,233,224,29,0,56,248,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,142,251,253,246,150,101,13,31,221,253,148,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,208,132,22,0,0,3,163,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,249,253,86,0,0,0,0,80,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,243,253,141,2,0,0,0,38,243,253,165,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,200,253,208,22,0,0,0,23,207,253,227,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,242,39,0,0,0,0,122,253,247,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,228,123,123,32,29,64,240,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,254,253,163,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,254,254,254,254,255,195,190,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,28,28,28,94,213,253,253,132,3,2,28,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,251,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,228,253,206,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,253,204,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,246,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,241,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,250,253,220,31,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,33,231,253,219,38,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,24,232,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,183,253,253,253,255,253,156,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,191,239,252,252,252,252,253,252,252,231,164,18,0,0,0,0,0,0,0,0,0,0,0,0,0,4,112,205,252,252,244,237,237,237,176,211,140,88,233,170,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,167,63,0,0,0,0,0,0,57,237,151,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,141,9,0,0,0,0,0,0,0,84,177,9,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,46,0,0,0,0,0,0,0,0,0,44,4,30,20,0,0,0,0,0,0,0,0,0,0,0,60,252,252,217,39,0,0,0,0,0,0,0,0,120,148,252,162,0,0,0,0,0,0,0,0,0,0,0,39,220,252,252,136,42,0,0,0,0,22,186,238,250,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,47,228,252,252,221,53,19,45,194,207,252,252,238,207,128,38,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,252,252,252,191,252,253,252,243,103,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,223,253,253,253,253,255,167,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,252,253,180,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,226,252,252,249,237,253,252,185,15,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,252,228,49,133,231,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,252,168,12,0,24,42,252,243,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,188,17,0,0,0,5,143,248,243,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,213,252,84,0,0,0,0,0,0,223,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,186,90,90,91,177,99,238,250,170,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,252,252,252,253,252,252,230,163,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,252,253,128,103,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,63,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,141,242,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,155,222,254,254,159,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,58,163,253,254,254,254,129,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,228,254,254,254,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,173,91,124,254,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,1,3,182,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,20,36,193,254,229,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,82,172,239,254,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,246,254,254,254,254,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,230,249,239,197,143,55,97,254,175,22,0,0,0,0,0,0,0,0,0,0,0,78,141,0,0,0,0,0,37,55,0,0,0,0,99,254,186,0,0,0,0,0,0,0,0,0,0,0,0,254,241,90,0,0,0,0,0,0,0,0,0,8,210,254,120,0,0,0,0,0,0,0,0,0,0,0,0,218,254,197,2,0,0,0,0,0,0,0,0,51,254,247,79,0,0,0,0,0,0,0,0,0,0,0,0,254,254,162,0,0,0,0,0,0,0,0,0,235,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,245,78,6,0,38,119,134,8,23,163,252,179,8,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,205,197,252,254,223,123,221,254,196,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,181,254,254,254,254,254,254,254,254,250,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,28,87,206,220,220,220,189,106,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,255,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,176,230,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,197,253,253,253,253,253,229,107,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,253,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,241,253,253,253,253,241,186,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,161,253,253,253,246,40,57,231,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,154,0,25,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,135,8,0,3,128,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,238,253,253,253,7,0,0,0,116,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,165,253,253,231,70,1,0,0,0,78,237,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,182,0,0,0,0,0,0,200,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,253,24,0,0,0,0,0,0,42,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,24,0,0,0,0,0,0,163,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,189,13,0,0,0,0,0,53,227,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,114,0,0,0,0,0,21,227,253,231,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,114,0,0,0,5,131,143,253,231,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,236,73,58,217,223,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,253,253,182,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,168,253,253,253,253,253,248,89,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,140,225,140,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,217,209,64,63,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,207,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,248,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,159,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,215,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,143,0,0,0,0,12,81,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,142,0,0,0,82,238,254,238,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,142,0,0,55,240,223,77,238,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,162,0,0,179,181,38,27,240,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,120,40,248,55,10,187,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,232,255,255,175,235,247,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,230,209,143,108,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,214,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,220,8,0,0,0,0,0,0,0,7,54,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,224,8,0,0,0,0,0,0,0,119,254,238,40,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,147,0,0,0,0,0,0,0,10,235,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,48,247,254,147,0,0,0,0,0,0,0,12,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,90,0,0,0,0,0,0,3,184,254,254,253,52,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,29,0,0,0,0,0,0,114,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,198,11,0,0,0,0,0,16,192,247,188,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,172,255,186,7,0,0,0,0,46,188,254,215,148,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,65,0,0,0,83,241,254,131,29,148,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,54,255,254,187,96,96,170,242,254,130,4,11,238,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,30,226,254,254,254,254,254,175,106,4,0,12,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,165,243,254,248,93,2,0,0,0,1,90,254,223,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,47,0,0,0,0,0,0,30,254,216,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,236,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,226,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,191,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,246,226,99,248,248,203,159,255,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,250,52,92,193,117,254,238,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,249,113,0,111,155,19,223,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,15,0,18,10,0,172,254,248,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,15,0,0,0,0,105,249,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,245,95,0,0,0,0,63,249,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,140,8,79,123,242,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,245,254,254,254,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,220,254,181,124,186,254,246,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,134,2,0,40,129,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,195,14,0,0,0,0,139,243,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,57,0,0,0,0,0,56,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,249,180,0,0,0,0,0,0,2,200,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,64,0,0,0,0,0,0,0,193,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,226,8,0,0,0,0,0,0,24,239,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,192,0,0,0,0,0,0,0,135,244,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,213,5,0,0,0,0,18,107,239,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,90,0,0,10,116,218,245,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,206,252,208,208,222,254,197,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,122,233,237,176,93,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,217,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,50,170,244,254,236,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,213,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,159,250,253,179,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,254,245,88,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,164,254,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,196,253,253,158,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,216,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,98,231,245,126,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,244,254,106,0,4,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,240,253,235,63,146,187,223,176,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,136,228,253,253,253,254,229,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,253,194,245,126,73,155,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,254,196,53,0,0,23,255,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,106,0,0,34,207,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,253,253,236,130,146,247,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,253,254,253,253,253,222,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,133,216,253,185,103,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,183,157,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,137,7,0,0,0,0,59,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,80,0,0,0,0,141,254,248,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,115,0,0,0,53,249,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,46,0,0,0,129,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,15,0,0,56,246,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,15,0,51,194,254,254,203,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,15,16,206,254,254,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,254,67,194,254,254,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,253,254,245,245,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,123,204,172,81,205,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,236,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,239,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,78,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,134,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,176,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,132,255,187,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,133,248,253,253,186,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,37,33,213,253,253,230,161,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,222,115,253,171,135,55,144,253,231,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,175,237,41,0,4,159,253,187,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,220,253,253,6,56,0,0,36,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,133,14,0,25,210,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,199,111,137,253,253,199,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,132,253,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,253,253,253,253,253,253,251,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,205,252,253,253,253,253,248,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,253,143,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,176,251,253,253,253,94,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,184,119,253,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,204,29,3,39,253,253,253,197,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,175,7,0,13,194,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,227,253,185,63,163,205,253,253,253,188,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,166,253,253,253,253,253,253,253,236,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,96,237,253,253,253,241,232,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,116,190,116,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,239,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,179,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,240,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,191,191,255,255,191,128,0,0,0,0,0,0,0,0,128,128,64,0,64,128,128,128,255,255,255,255,255,255,255,255,128,128,64,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,128,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,203,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,253,59,0,0,0,0,30,116,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,159,0,0,0,0,206,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,204,7,0,0,128,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,253,254,23,0,0,212,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,222,13,0,76,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,184,0,0,159,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,127,0,0,185,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,159,253,253,42,0,0,184,254,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,244,0,0,0,184,254,253,46,9,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,160,0,0,0,184,254,253,197,209,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,239,59,19,70,120,254,254,254,254,169,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,251,230,237,253,253,253,254,244,89,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,253,253,253,254,253,236,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,253,253,219,161,77,36,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,93,93,51,0,0,0,24,254,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,242,163,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,242,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,231,254,254,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,118,254,254,236,235,251,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,241,221,72,0,0,108,183,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,209,159,0,0,0,0,0,201,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,163,9,0,0,0,0,0,200,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,146,3,0,0,0,0,20,46,200,195,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,149,0,0,0,14,33,7,29,163,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,85,0,27,182,233,92,0,24,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,183,179,175,92,0,16,203,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,219,61,0,0,0,115,192,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,11,184,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,150,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,234,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,125,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,105,128,121,230,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,170,252,156,0,0,0,0,0,0,0,0,0,9,71,145,76,0,0,0,0,0,0,0,0,0,0,40,175,252,132,18,0,0,0,0,0,0,0,0,28,166,252,252,115,0,0,0,0,0,0,0,0,0,5,175,252,212,20,0,0,0,0,0,0,0,0,12,204,252,252,156,4,0,0,0,0,0,0,0,0,0,54,252,241,89,0,0,0,0,0,0,0,0,12,164,252,252,229,18,0,0,0,0,0,0,0,0,0,10,227,252,204,0,0,0,0,0,0,0,0,11,107,252,252,187,37,0,0,0,0,0,0,0,0,0,0,13,252,252,163,0,0,0,0,0,0,0,0,134,252,252,153,32,0,0,0,0,0,0,0,0,0,0,0,117,252,238,52,0,0,0,0,0,0,47,68,239,252,229,37,0,0,0,0,0,0,0,0,0,0,0,0,242,252,231,36,0,0,0,42,109,224,241,242,252,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,164,121,121,161,245,252,252,253,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,243,131,75,255,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,179,252,247,228,135,108,15,75,247,253,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,96,78,0,0,0,0,229,252,246,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,244,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,225,252,223,35,6,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,166,73,140,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,243,252,252,252,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,252,252,197,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,252,200,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,230,252,142,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,165,254,254,255,254,254,254,135,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,253,253,253,253,204,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,253,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,247,208,198,198,198,198,250,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,16,0,0,0,17,242,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,18,201,253,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,130,130,144,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,250,253,253,253,253,253,253,253,133,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,253,253,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,253,253,182,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,214,205,205,206,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,136,42,0,0,3,89,245,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,4,241,253,253,75,0,0,0,0,0,0,0,0,0,0,0,48,194,125,40,0,0,0,0,0,0,0,4,187,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,97,253,253,226,42,0,0,0,0,0,12,182,253,253,253,194,4,0,0,0,0,0,0,0,0,0,0,0,66,240,253,253,226,41,0,0,68,109,224,253,253,253,226,55,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,225,199,199,243,253,253,253,253,228,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,221,253,253,253,253,253,253,253,253,252,212,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,191,253,253,253,253,253,253,225,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,116,116,190,239,141,116,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,29,105,141,192,243,117,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,207,254,253,253,253,254,253,225,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,255,234,168,119,169,225,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,140,140,28,22,0,0,0,69,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,207,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,245,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,254,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,217,254,254,64,7,7,0,0,0,10,29,29,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,208,188,188,169,170,169,198,253,254,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,254,253,253,253,254,253,253,253,254,234,113,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,140,191,141,216,253,253,141,140,103,28,28,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,216,234,211,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,80,213,251,253,253,253,217,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,151,253,253,253,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,146,231,253,253,236,162,82,189,243,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,187,253,250,224,103,53,0,0,0,179,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,250,253,253,134,0,0,0,0,0,0,179,253,253,0,0,0,0,0,0,0,0,0,0,0,24,111,192,250,253,214,31,2,0,0,0,0,0,61,252,253,253,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,107,17,0,0,0,0,0,0,0,63,253,253,130,0,0,0,0,0,0,0,0,0,0,100,242,253,212,114,2,0,0,0,0,0,0,0,0,174,253,236,22,0,0,0,0,0,0,0,0,0,98,242,253,202,28,0,0,0,0,0,0,0,0,0,87,239,253,206,0,0,0,0,0,0,0,0,0,77,246,253,202,29,0,0,0,0,0,0,0,0,0,12,224,253,249,85,0,0,0,0,0,0,0,0,0,195,253,210,27,0,0,0,0,0,0,0,0,0,71,189,253,251,131,0,0,0,0,0,0,0,0,0,0,254,253,111,0,0,0,0,0,0,0,0,0,4,187,253,253,191,0,0,0,0,0,0,0,0,0,0,0,254,253,40,0,0,0,0,0,0,0,0,83,241,253,253,119,10,0,0,0,0,0,0,0,0,0,0,0,210,253,110,20,0,0,0,0,0,68,183,242,253,253,174,23,0,0,0,0,0,0,0,0,0,0,0,0,89,248,253,182,63,63,63,196,199,243,253,253,251,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,212,243,253,253,253,253,253,253,223,197,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,188,232,232,232,232,121,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,97,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,103,118,175,253,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,138,224,253,253,253,253,152,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,204,251,253,254,253,253,231,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,254,207,88,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,194,254,231,135,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,250,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,137,24,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,230,218,195,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,188,240,255,254,193,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,196,242,253,247,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,169,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,137,51,0,0,0,0,0,36,190,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,239,254,241,68,0,0,0,0,0,136,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,255,254,254,163,156,59,9,19,201,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,253,253,253,253,254,175,196,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,254,253,253,253,253,254,253,253,240,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,206,254,253,253,253,253,254,253,240,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,200,253,253,253,254,162,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,96,254,255,180,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,180,204,253,253,251,244,241,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,211,132,116,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,197,248,253,242,215,35,0,116,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,177,88,0,0,0,116,233,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,247,253,197,16,0,0,0,0,116,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,195,253,253,97,0,0,0,0,14,191,234,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,240,97,3,0,0,0,90,232,253,253,241,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,204,0,0,0,0,0,99,253,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,35,215,253,203,0,0,0,0,0,3,129,208,253,253,251,103,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,198,0,0,0,0,0,0,0,37,215,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,40,0,0,0,0,0,0,0,0,42,253,253,106,0,0,0,0,0,0,0,0,0,0,0,13,216,253,253,40,0,0,0,0,0,0,0,0,42,253,253,106,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,40,0,0,0,0,0,0,0,0,42,253,253,106,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,40,0,0,0,0,0,0,0,19,182,253,244,89,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,40,0,0,0,0,0,0,0,116,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,13,220,253,253,183,0,0,0,0,2,58,74,236,253,137,25,0,0,0,0,0,0,0,0,0,0,0,0,0,45,220,253,232,148,110,92,148,151,253,253,253,229,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,249,247,253,253,253,253,219,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,89,227,253,253,253,253,253,189,89,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,243,255,171,47,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,236,253,253,253,253,209,184,83,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,250,252,253,253,253,253,207,114,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,247,39,79,109,219,253,253,253,253,253,156,8,0,0,0,0,0,0,0,0,0,0,0,0,0,2,184,253,196,0,0,0,14,149,214,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,3,205,253,192,0,0,0,0,0,14,98,47,245,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,155,0,0,0,0,0,0,0,0,176,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,251,75,0,0,0,0,0,0,0,219,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,248,50,0,0,0,0,0,0,0,244,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,243,0,0,0,0,0,0,0,0,244,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,243,0,0,0,0,0,0,0,36,247,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,248,243,0,0,0,0,0,0,0,98,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,185,0,0,0,0,0,0,0,169,253,185,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,244,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,253,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,241,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,212,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,93,174,255,192,46,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,83,228,254,252,244,254,174,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,229,74,2,89,14,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,241,254,179,45,0,0,0,23,120,22,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,253,195,5,0,0,0,18,226,253,129,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,253,238,44,0,0,0,0,30,234,253,180,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,253,118,0,0,0,0,0,0,214,253,156,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,24,0,0,0,0,35,163,251,242,70,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,24,0,0,73,154,242,254,253,146,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,159,149,205,253,253,253,253,245,35,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,39,196,253,253,253,253,252,249,253,253,117,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,94,184,193,138,59,113,253,254,39,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,234,253,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,250,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,247,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,139,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,34,116,144,207,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,253,254,253,253,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,241,180,253,253,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,205,176,25,149,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,253,254,253,44,243,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,254,162,10,243,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,131,131,131,118,7,97,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,236,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,196,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,2,34,34,19,63,254,254,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,139,210,180,253,253,220,254,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,253,253,253,254,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,233,235,253,253,255,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,195,34,91,253,253,254,253,253,198,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,234,225,253,253,253,190,55,219,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,253,253,195,10,0,153,253,249,194,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,253,253,253,187,13,0,0,0,224,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,179,216,109,17,0,0,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,17,0,0,0,0,0,0,27,215,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,115,155,218,250,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,204,254,254,244,253,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,209,254,171,88,0,150,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,205,254,164,1,0,0,162,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,239,36,0,0,0,186,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,218,6,0,0,0,102,197,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,244,185,185,185,162,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,254,254,254,254,254,197,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,60,60,60,62,219,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,186,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,241,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,196,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,235,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,217,162,12,24,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,244,254,250,226,254,250,200,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,254,254,175,47,31,31,101,215,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,161,85,26,0,0,0,0,116,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,250,172,11,0,0,0,0,0,0,150,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,190,249,43,0,0,0,0,0,0,22,237,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,147,0,0,0,0,0,0,0,91,233,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,200,227,30,0,0,0,0,0,0,21,237,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,192,0,0,0,0,0,0,15,197,206,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,192,0,0,0,0,0,15,172,240,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,255,198,9,0,0,15,154,238,248,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,154,254,170,180,200,233,254,226,218,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,211,254,254,239,161,54,12,183,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,223,73,6,0,0,0,47,241,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,160,244,121,0,0,0,0,0,0,247,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,173,0,0,0,0,0,0,0,247,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,65,0,0,0,0,0,0,26,249,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,220,5,0,0,0,0,0,6,183,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,154,20,0,0,0,45,177,239,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,212,254,239,175,154,201,248,240,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,215,254,254,255,240,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,245,253,253,253,254,253,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,230,149,80,116,234,253,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,196,0,0,0,13,215,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,249,70,0,0,0,93,239,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,150,253,247,61,0,0,10,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,247,253,225,85,133,209,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,189,253,254,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,107,225,229,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,234,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,246,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,190,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,152,193,234,152,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,254,253,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,253,212,50,131,151,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,213,10,0,0,0,0,21,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,203,0,0,0,31,132,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,223,20,0,0,233,252,253,252,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,254,112,0,163,254,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,151,41,243,253,212,91,131,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,172,72,253,244,40,0,163,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,233,252,203,0,82,243,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,193,253,255,253,255,253,255,253,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,252,253,252,253,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,253,255,253,183,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,16,16,29,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,215,216,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,253,252,252,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,253,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,163,163,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,151,0,0,0,0,0,0,0,51,57,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,48,110,197,246,253,190,85,10,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,28,0,0,0,0,241,252,252,252,253,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,103,41,141,141,241,255,253,253,253,255,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,41,215,252,252,253,252,252,252,253,240,196,145,84,159,240,252,244,82,0,0,0,0,0,0,0,0,0,0,44,224,252,252,253,252,252,252,206,130,0,0,0,0,81,243,253,215,19,0,0,0,0,0,0,0,0,0,0,69,252,252,253,252,252,202,63,0,0,0,0,0,0,75,253,252,156,0,0,0,0,0,0,0,0,0,0,0,0,101,114,88,0,0,0,0,0,0,0,0,0,0,192,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,16,166,216,41,29,10,0,0,0,0,23,29,204,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,252,253,196,169,169,169,169,234,252,253,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,19,224,252,252,253,252,252,252,253,252,252,252,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,19,28,28,28,28,28,28,28,28,28,28,28,28,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,80,182,254,254,254,175,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,158,220,253,253,253,253,253,253,246,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,190,253,253,253,253,197,191,242,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,140,187,253,253,160,113,113,11,0,211,253,253,210,43,0,0,0,0,0,0,0,0,0,0,0,0,69,236,253,234,203,34,12,0,0,0,115,247,253,253,169,11,0,0,0,0,0,0,0,0,0,0,0,0,219,253,154,76,0,0,0,0,0,26,190,253,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,196,226,46,0,0,0,0,0,0,72,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,205,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,246,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,185,253,253,241,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,126,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,149,149,149,149,149,41,0,99,250,253,222,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,223,253,253,253,253,253,235,228,244,253,222,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,207,253,253,138,122,226,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,177,43,6,0,81,253,253,253,253,253,125,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,16,0,0,56,225,253,253,253,253,253,253,128,115,99,0,0,0,0,0,0,0,0,0,0,0,0,254,253,33,18,170,222,253,245,114,235,247,253,253,253,253,244,185,42,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,243,92,0,0,104,156,213,253,202,156,86,0,0,0,0,0,0,0,0,0,0,0,78,187,253,253,253,253,105,0,0,0,0,0,46,78,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,141,0,0,0,0,0,0,0,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,170,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,0,0,0,0,0,0,141,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,29,0,0,0,0,0,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,0,0,0,0,29,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,170,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,170,170,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,198,170,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,108,0,0,0,0,0,0,0,79,251,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,163,253,211,0,0,0,0,0,0,31,246,224,18,0,0,0,0,0,0,0,0,0,0,0,0,0,2,132,254,254,58,0,0,0,0,0,2,153,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,188,13,0,0,0,0,0,48,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,254,238,14,0,0,0,0,0,0,152,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,5,190,254,245,59,0,0,0,0,0,0,62,250,254,184,2,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,203,0,0,0,0,0,0,0,76,254,247,78,0,0,0,0,0,0,0,0,0,0,0,0,9,172,254,243,75,0,0,0,0,0,0,0,166,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,196,0,0,0,0,0,0,0,5,210,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,113,0,0,0,0,0,0,0,80,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,29,240,254,184,13,0,0,0,0,0,123,254,254,255,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,231,159,132,98,132,192,251,254,254,211,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,147,249,254,254,254,254,254,252,112,171,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,161,231,254,254,225,98,0,167,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,18,18,12,0,0,198,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,251,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,125,254,253,234,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,254,236,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,243,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,237,253,251,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,249,253,157,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,216,253,253,0,0,0,0,15,24,24,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,151,0,17,134,184,229,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,171,0,162,245,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,253,100,172,254,253,253,253,241,232,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,219,120,253,254,215,96,46,34,38,220,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,253,253,169,6,0,0,60,214,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,254,254,254,70,70,145,229,254,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,253,253,253,254,253,253,253,254,253,173,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,254,253,253,253,205,88,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,135,253,253,254,168,152,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,111,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,214,254,195,0,0,0,0,0,0,0,127,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,250,73,0,0,0,0,0,9,71,242,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,4,120,254,134,0,0,0,0,0,0,103,254,254,189,7,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,249,74,0,0,0,0,0,131,239,254,172,54,0,0,0,0,0,0,0,0,0,0,0,0,0,4,168,254,196,0,0,0,33,78,168,238,254,238,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,233,30,0,35,138,233,254,254,254,237,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,245,181,181,231,254,254,254,254,237,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,254,254,254,242,192,146,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,134,219,186,104,50,0,157,254,234,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,17,207,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,230,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,208,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,230,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,230,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,60,136,250,254,254,255,254,159,0,1,18,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,236,218,218,190,100,63,16,102,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,49,0,0,0,0,20,197,253,247,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,132,0,0,0,22,194,253,217,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,253,252,132,0,63,194,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,133,249,251,225,245,253,213,39,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,213,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,250,248,231,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,194,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,251,79,195,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,251,139,24,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,124,24,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,253,11,38,253,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,253,37,215,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,165,253,243,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,149,244,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,246,69,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,41,0,0,0,0,0,0,0,0,123,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,203,0,0,0,0,0,0,0,21,223,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,82,0,0,0,0,0,0,0,152,253,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,0,0,0,0,0,0,0,0,152,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,192,0,0,0,0,0,0,0,0,214,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,233,50,0,0,0,0,0,0,0,123,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,183,0,0,0,0,0,0,0,11,213,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,61,0,0,0,0,0,0,0,132,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,192,0,0,0,0,0,0,11,51,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,232,142,102,102,102,102,183,213,252,253,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,123,234,253,254,253,254,253,254,253,254,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,232,253,252,253,252,151,151,253,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,255,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,235,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,194,253,253,214,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,203,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,250,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,130,130,173,255,255,203,15,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,13,13,104,225,253,253,253,253,253,253,253,141,1,0,0,0,0,0,0,0,0,0,0,0,0,12,115,253,253,253,253,253,253,253,238,235,235,252,253,253,5,0,0,0,0,0,0,0,0,0,0,2,25,165,253,253,253,253,253,247,192,105,18,0,0,230,253,253,5,0,0,0,0,0,0,0,0,0,2,109,253,253,253,253,253,246,192,72,0,0,0,0,13,233,253,253,5,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,203,72,0,0,0,0,0,0,118,253,253,236,5,0,0,0,0,0,0,0,0,2,156,253,253,253,226,188,27,0,0,0,0,0,0,84,243,253,234,113,0,0,0,0,0,0,0,0,0,7,253,253,253,223,75,0,0,0,0,0,0,0,0,217,253,253,141,0,0,0,0,0,0,0,0,0,0,2,140,197,125,29,0,0,0,0,0,0,0,0,43,235,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,223,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,196,253,253,222,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,201,253,221,115,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,222,253,214,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,219,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,194,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,64,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,128,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,64,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,255,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,64,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,191,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,152,175,242,230,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,124,249,251,153,154,238,225,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,179,253,199,84,0,0,48,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,242,241,91,2,85,144,12,0,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,242,217,85,0,79,255,242,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,244,241,36,0,0,174,254,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,197,239,63,0,10,95,250,207,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,123,0,7,129,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,162,17,44,205,231,242,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,216,49,119,247,198,118,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,244,251,244,239,146,59,232,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,163,224,138,51,0,74,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,158,245,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,241,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,249,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,188,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,169,229,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,70,70,112,128,162,178,211,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,247,254,253,253,253,254,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,246,254,253,253,253,254,253,251,230,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,220,253,253,253,254,236,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,254,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,247,254,253,164,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,228,253,254,185,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,254,253,221,151,119,167,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,225,254,254,254,254,254,254,254,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,115,90,107,115,115,140,173,228,253,172,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,226,253,219,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,116,11,0,0,0,0,0,51,187,253,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,23,0,0,0,0,85,234,254,253,244,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,255,48,0,51,128,212,254,254,254,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,241,230,247,254,253,253,253,241,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,245,253,253,253,254,253,242,196,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,119,169,253,228,111,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,109,129,253,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,217,253,252,252,252,253,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,181,232,252,253,252,226,236,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,252,252,252,252,108,108,31,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,153,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,231,51,0,0,0,0,144,253,252,113,42,135,175,21,0,0,0,0,0,0,0,0,0,0,53,232,252,236,71,0,0,0,0,0,125,232,231,241,221,253,252,71,0,0,0,0,0,0,0,0,0,0,155,252,252,143,0,0,0,0,0,0,0,47,88,252,252,253,210,31,0,0,0,0,0,0,0,0,0,0,218,253,253,144,0,0,0,0,0,0,0,0,135,253,253,208,20,0,0,0,0,0,0,0,0,0,0,0,93,252,252,143,0,0,0,0,0,0,0,135,247,252,252,104,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,143,0,0,0,0,11,58,181,253,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,31,211,252,205,20,0,0,0,155,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,211,109,109,255,253,253,253,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,252,252,252,252,253,252,252,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,133,215,215,215,217,91,201,252,253,179,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,252,252,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,212,125,125,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,253,249,154,142,229,202,236,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,254,254,254,254,254,254,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,204,149,233,173,149,149,149,166,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,20,6,0,0,0,4,173,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,35,128,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,222,180,156,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,41,21,20,160,240,89,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,203,230,73,189,149,216,225,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,237,243,255,254,229,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,254,254,254,175,95,100,117,30,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,71,71,71,17,0,15,92,107,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,239,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,206,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,140,119,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,71,165,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,20,20,125,177,230,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,144,241,254,254,254,217,111,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,252,207,225,211,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,96,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,64,0,128,64,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,128,128,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,168,4,0,112,105,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,229,138,84,149,252,161,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,181,255,254,254,228,145,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,230,154,94,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,228,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,149,247,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,177,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,232,254,254,172,154,155,94,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,231,161,231,231,231,234,254,254,151,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,142,252,159,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,251,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,143,254,180,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,78,0,2,102,218,252,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,125,236,35,64,186,254,186,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,243,210,254,226,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,235,176,112,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,103,174,131,106,254,255,164,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,251,165,204,216,245,238,254,213,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,237,188,0,185,144,168,21,172,249,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,251,66,0,23,5,0,5,218,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,237,0,0,0,0,0,79,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,60,0,0,0,0,87,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,227,204,19,0,0,3,222,206,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,219,217,42,110,225,238,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,189,254,254,151,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,227,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,244,199,86,248,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,221,170,23,0,226,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,195,25,0,0,226,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,248,26,0,0,19,236,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,248,112,0,0,0,53,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,244,26,0,0,0,176,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,228,181,0,0,0,35,234,147,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,227,197,2,0,7,202,242,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,77,49,166,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,158,250,250,245,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,161,57,162,161,129,140,161,162,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,252,252,253,252,252,252,252,253,240,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,236,252,252,252,253,235,160,160,160,211,252,240,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,200,75,18,0,0,0,13,65,252,244,21,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,161,0,0,0,0,0,0,0,22,216,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,87,0,0,0,0,0,0,0,0,111,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,169,240,151,13,0,0,0,0,0,0,0,0,70,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,25,37,0,0,0,0,0,0,0,0,0,0,38,232,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,122,185,184,184,184,184,185,228,252,185,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,252,252,252,252,253,252,252,236,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,253,252,252,252,252,253,252,252,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,128,45,222,253,253,255,249,230,249,253,255,253,137,15,0,0,0,0,0,0,0,0,0,0,0,57,244,252,253,252,252,252,252,218,75,0,75,196,232,252,252,219,109,0,0,0,0,0,0,0,0,0,0,0,124,252,253,252,252,252,136,32,0,0,0,0,48,183,234,252,221,0,0,0,0,0,0,0,0,0,0,0,17,98,161,160,128,45,4,0,0,0,0,0,0,0,33,45,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,226,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,170,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,226,86,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,57,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,29,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,0,0,0,0,0,0,198,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,0,0,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,29,0,0,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,226,255,255,255,141,114,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,86,0,86,141,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,57,0,0,0,86,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,114,0,0,0,86,255,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,141,255,226,0,198,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,57,226,255,141,0,0,86,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,255,226,57,0,0,0,0,170,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,198,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,59,59,59,59,59,59,164,253,209,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,251,251,251,251,251,251,251,251,253,188,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,251,251,251,251,251,251,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,212,248,251,251,251,251,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,153,153,153,153,153,153,253,205,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,170,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,136,136,136,136,136,136,253,251,170,136,136,136,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,251,251,251,251,251,251,253,251,251,251,251,251,246,134,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,253,253,253,255,253,253,253,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,39,251,251,251,251,251,251,253,251,251,251,251,251,251,251,115,0,0,0,0,0,0,0,0,0,0,0,0,12,76,184,116,251,251,251,253,251,251,223,76,76,76,130,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,4,18,124,242,198,18,18,15,0,0,0,6,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,244,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,170,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,55,138,243,255,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,178,252,252,252,253,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,252,252,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,228,253,252,252,218,56,46,177,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,221,35,0,0,161,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,255,253,173,0,0,0,162,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,223,56,0,0,0,161,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,215,67,0,0,0,0,161,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,160,21,0,0,0,0,9,194,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,184,184,123,70,70,164,184,253,92,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,17,209,252,252,253,252,252,252,252,192,17,0,0,0,9,51,176,152,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,252,252,252,252,241,178,146,116,220,233,242,252,160,0,0,0,0,0,0,0,0,0,0,162,253,253,253,255,253,253,253,253,255,253,253,253,253,255,253,253,161,0,0,0,0,0,0,0,0,0,15,219,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,24,252,252,252,252,247,110,69,69,69,184,183,183,183,183,184,183,100,13,0,0,0,0,0,0,0,0,0,24,252,252,252,168,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,221,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,128,211,255,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,138,247,254,254,243,99,0,135,195,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,209,254,254,191,74,42,23,29,239,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,251,254,243,77,2,0,0,0,119,254,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,252,162,36,0,0,0,11,116,250,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,254,132,0,0,0,0,48,192,254,240,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,202,2,0,0,0,102,243,254,191,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,121,0,0,4,104,240,250,119,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,105,0,27,187,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,105,30,216,254,172,45,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,189,228,254,185,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,254,254,198,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,248,254,219,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,232,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,218,254,196,157,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,250,70,53,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,188,254,155,2,94,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,129,167,254,248,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,220,254,254,254,247,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,184,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,0,0,0,28,169,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,223,35,0,0,153,254,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,171,0,0,227,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,231,46,0,0,227,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,209,0,0,30,242,254,247,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,255,157,0,0,77,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,157,0,41,200,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,220,98,198,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,254,254,254,254,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,204,254,248,248,254,193,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,66,34,189,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,235,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,207,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,231,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,205,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,255,164,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,250,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,248,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,206,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,247,220,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,196,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,248,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,181,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,223,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,247,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,175,255,255,236,158,129,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,178,254,254,254,254,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,180,111,131,85,127,133,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,111,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,72,0,0,0,0,0,0,112,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,243,72,0,0,0,0,0,0,235,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,217,182,2,0,0,0,0,75,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,101,11,0,0,2,127,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,251,219,111,82,128,254,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,153,239,244,245,235,254,249,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,39,39,88,252,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,192,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,233,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,157,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,85,211,255,218,136,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,203,253,253,253,253,253,111,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,248,126,82,118,245,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,125,59,0,0,0,99,247,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,240,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,243,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,241,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,219,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,243,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,251,248,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,64,0,0,0,0,0,231,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,201,127,84,84,182,249,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,249,253,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,84,135,190,135,135,83,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,233,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,237,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,240,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,254,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,221,0,0,0,19,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,166,0,0,55,150,131,89,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,148,0,16,207,254,255,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,129,11,192,254,254,254,254,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,129,23,250,254,251,243,253,254,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,129,3,171,255,172,5,232,254,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,129,9,171,216,175,180,247,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,243,254,162,66,97,238,238,254,254,254,247,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,254,254,254,254,206,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,254,254,254,55,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,172,254,254,254,227,135,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,82,133,133,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,227,145,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,209,253,253,253,253,253,253,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,158,250,254,253,253,221,205,242,253,253,217,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,192,253,253,252,193,193,64,0,90,242,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,116,0,0,0,0,0,206,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,21,120,244,253,253,115,0,0,0,0,0,0,148,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,159,2,0,0,0,0,0,0,206,253,253,207,0,0,0,0,0,0,0,0,0,0,0,154,247,253,253,165,14,0,0,0,0,0,0,32,226,253,253,81,0,0,0,0,0,0,0,0,0,0,93,250,253,253,155,24,0,0,0,0,0,0,0,189,253,253,253,11,0,0,0,0,0,0,0,0,0,31,254,254,254,216,23,0,0,0,0,0,0,0,67,254,254,250,81,0,0,0,0,0,0,0,0,0,2,156,253,253,247,106,0,0,0,0,0,0,0,40,223,253,253,145,0,0,0,0,0,0,0,0,0,0,88,253,253,253,175,0,0,0,0,0,0,0,41,222,253,253,224,31,0,0,0,0,0,0,0,0,0,0,156,253,253,198,24,0,0,0,0,0,0,40,222,253,253,239,39,0,0,0,0,0,0,0,0,0,0,0,254,253,253,84,0,0,0,0,0,0,38,223,253,253,210,52,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,84,0,0,60,11,0,70,226,253,253,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,222,206,206,244,212,206,251,254,253,200,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,253,253,253,253,253,253,203,145,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,160,253,253,253,253,211,144,29,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,11,11,11,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,29,29,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,120,169,197,252,253,234,131,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,123,246,253,252,252,252,253,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,243,252,252,253,227,139,139,153,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,231,125,0,0,0,0,0,169,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,197,121,19,0,0,0,0,0,7,187,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,47,0,0,0,0,0,19,215,252,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,51,126,225,234,240,226,150,113,13,0,107,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,19,154,253,254,253,253,253,254,253,253,253,254,253,244,125,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,252,247,196,158,84,146,234,252,252,253,252,224,169,26,0,0,0,0,0,0,0,0,0,0,0,229,252,224,168,50,0,0,0,86,197,252,252,206,168,168,168,25,0,0,0,0,0,0,0,0,0,0,0,253,252,118,0,0,26,113,163,253,252,214,90,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,165,191,254,253,253,253,214,113,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,208,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,168,168,168,156,56,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,196,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,221,249,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,163,253,164,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,239,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,240,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,231,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,87,145,164,250,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,82,201,253,228,253,253,237,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,207,222,170,54,47,247,253,253,233,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,166,0,0,0,202,233,85,214,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,228,98,0,0,6,106,255,50,0,51,254,228,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,0,0,8,102,253,115,2,0,8,173,254,171,8,0,0,0,0,0,0,0,0,0,0,0,0,45,245,175,0,8,132,231,94,0,0,0,0,0,152,145,5,0,0,0,0,0,0,0,0,0,0,0,0,118,249,233,135,211,231,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,220,163,142,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,109,171,253,149,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,73,197,242,252,253,252,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,58,221,253,252,252,252,253,252,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,155,252,252,253,252,252,252,253,252,252,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,1,170,252,252,252,253,252,252,252,253,252,252,252,206,20,0,0,0,0,0,0,0,0,0,0,0,0,11,155,252,252,252,252,253,252,252,252,253,252,252,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,252,253,252,252,252,253,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,207,253,253,253,253,255,253,253,253,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,252,252,252,252,253,252,252,252,253,252,96,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,133,215,215,132,72,227,252,252,253,220,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,252,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,154,217,247,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,219,253,232,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,253,230,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,247,253,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,235,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,242,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,247,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,10,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,78,243,203,92,111,154,201,154,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,254,254,254,254,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,254,254,254,254,254,226,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,254,254,254,254,254,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,71,192,154,254,237,167,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,22,53,178,254,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,254,254,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,147,255,254,255,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,120,196,138,95,254,254,254,254,220,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,176,244,254,254,254,254,254,255,254,255,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,254,254,254,254,254,254,254,116,3,0,0,0,82,77,0,0,0,0,0,0,0,0,0,0,79,253,254,254,254,254,254,254,254,254,218,32,7,0,0,109,253,253,147,9,0,0,0,0,0,0,0,0,150,254,254,254,254,254,254,254,254,255,254,254,207,148,148,218,254,254,254,31,0,0,0,0,0,0,0,0,155,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,213,0,0,0,0,0,0,0,0,18,254,254,254,254,254,222,178,156,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,4,70,228,254,254,180,32,0,9,53,144,241,254,254,254,254,254,254,254,216,0,0,0,0,0,0,0,0,0,0,24,35,35,4,0,0,0,0,0,30,35,151,153,153,153,153,153,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,34,138,170,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,47,140,244,253,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,252,252,252,252,253,252,252,252,136,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,211,252,252,176,160,65,252,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,64,22,4,0,76,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,189,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,89,203,221,226,252,193,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,234,254,254,254,254,254,254,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,210,253,254,221,154,101,11,48,234,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,243,131,17,0,0,0,0,168,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,147,39,0,0,0,0,0,0,168,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,174,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,244,254,180,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,24,241,254,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,126,208,235,242,235,217,144,241,254,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,106,232,254,254,254,254,254,254,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,129,254,254,254,202,89,162,254,254,254,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,194,71,78,191,241,254,246,217,254,254,253,139,19,0,0,33,171,0,0,0,0,0,0,0,0,233,254,254,198,245,254,254,253,218,88,4,86,246,254,254,209,102,127,225,212,0,0,0,0,0,0,0,0,255,254,254,254,254,254,240,136,0,0,0,0,101,240,254,254,254,254,220,0,0,0,0,0,0,0,0,0,52,135,183,198,125,92,23,0,0,0,0,0,0,23,155,220,220,158,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,255,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,205,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,233,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,239,249,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,214,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,243,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,236,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,224,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,245,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,199,253,195,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,204,253,204,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,196,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,253,234,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,240,251,135,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,148,148,192,148,148,87,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,252,252,252,252,253,231,137,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,109,127,126,126,126,126,236,252,252,212,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,120,247,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,247,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,189,247,252,221,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,253,252,221,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,253,217,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,255,174,51,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,189,252,253,252,252,237,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,65,127,126,223,245,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,43,0,0,146,237,252,205,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,242,232,232,253,252,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,239,252,252,253,205,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,129,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,55,0,0,0,0,0,0,111,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,55,0,0,0,0,0,4,153,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,55,0,0,0,0,0,29,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,168,0,0,0,0,0,0,29,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,121,0,0,0,0,0,19,181,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,253,27,0,0,0,0,0,135,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,27,0,0,0,0,10,156,252,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,27,0,0,0,0,163,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,255,27,0,0,0,0,226,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,152,3,0,0,0,0,225,252,226,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,229,72,57,73,197,198,246,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,177,253,252,252,252,252,253,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,252,252,253,204,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,140,166,253,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,157,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,36,97,217,254,223,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,103,196,238,253,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,153,254,253,253,222,253,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,166,244,253,254,174,49,48,253,254,253,165,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,222,253,253,253,96,9,0,115,253,254,200,18,0,0,0,0,0,0,0,0,0,0,0,0,0,10,171,255,254,235,180,60,0,28,156,254,254,196,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,254,191,57,0,8,118,217,253,253,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,253,145,12,0,13,183,254,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,247,253,200,32,123,136,230,253,229,247,253,216,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,230,231,253,253,253,215,23,214,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,254,255,249,165,45,0,37,239,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,107,173,135,76,36,0,0,0,104,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,168,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,150,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,202,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,207,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,237,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,206,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,235,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,174,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,179,253,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,244,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,192,253,253,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,201,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,251,253,84,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,113,152,214,253,193,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,163,243,253,252,253,252,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,233,183,102,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,192,50,0,0,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,131,0,0,0,163,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,91,10,0,0,41,243,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,132,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,82,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,51,193,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,41,0,193,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,214,213,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,252,253,252,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,253,254,233,41,163,254,213,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,131,30,0,0,131,252,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,255,91,0,0,0,0,0,142,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,233,112,0,0,0,82,102,203,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,255,253,254,253,254,253,254,253,244,203,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,213,252,253,252,253,252,192,70,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,140,150,146,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,149,238,253,253,253,217,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,200,251,253,253,253,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,240,253,253,253,253,247,170,208,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,238,253,253,244,215,124,29,0,115,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,155,253,242,76,0,0,0,0,187,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,121,0,0,0,0,109,249,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,83,0,0,0,40,225,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,41,1,0,0,2,212,253,253,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,186,253,253,230,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,121,246,253,250,115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,66,89,160,143,89,87,0,35,226,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,63,192,250,253,253,253,253,253,239,245,253,253,224,15,2,9,32,12,0,0,0,0,0,0,0,0,0,109,238,253,253,253,253,253,253,253,253,253,253,253,232,79,87,201,253,93,0,0,0,0,0,0,0,0,0,244,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,244,10,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,199,225,253,226,253,253,253,145,0,0,0,0,0,0,0,0,0,0,203,253,253,253,253,253,253,251,198,76,8,21,36,34,139,224,70,5,0,0,0,0,0,0,0,0,0,0,18,152,253,253,253,253,197,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,104,149,54,46,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,177,253,255,253,119,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,170,252,252,252,253,252,252,212,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,252,209,167,252,252,252,243,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,252,252,121,6,2,39,163,251,252,249,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,188,118,0,0,0,170,252,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,155,179,252,214,0,0,0,38,222,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,21,12,0,0,0,0,160,252,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,53,143,191,206,224,143,143,215,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,105,213,252,252,252,253,252,252,252,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,237,252,252,235,153,58,44,44,173,252,252,252,250,125,0,0,0,0,0,0,0,0,0,0,0,6,114,248,252,196,116,9,0,0,0,16,209,252,252,252,252,251,128,3,0,0,0,0,0,0,0,0,0,138,252,247,126,19,0,0,0,0,46,226,252,252,240,111,214,252,252,33,0,0,0,0,0,0,0,0,27,236,252,230,0,0,0,0,0,39,230,252,252,206,81,0,31,164,130,7,0,0,0,0,0,0,0,0,129,252,252,183,12,12,16,122,203,240,253,252,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,239,252,252,252,252,252,252,252,252,253,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,252,252,252,252,252,219,114,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,142,200,252,252,252,252,170,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,149,155,253,254,254,209,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,196,253,253,253,253,253,253,253,241,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,153,213,190,190,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,113,34,2,13,1,2,179,253,248,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,171,253,246,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,177,253,252,130,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,253,227,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,42,163,164,235,253,252,190,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,194,253,253,207,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,254,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,227,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,167,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,98,181,253,250,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,91,188,241,253,253,229,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,245,244,245,246,254,253,253,225,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,54,144,226,214,253,135,94,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,0,0,0,0,0,0,0,0,0,0,0,123,183,61,0,0,0,0,0,0,0,0,0,0,203,203,233,91,0,0,0,0,0,0,0,0,0,0,11,213,254,253,82,0,0,0,0,0,0,0,0,62,254,253,255,253,0,0,0,0,0,0,0,0,0,0,51,252,253,252,243,40,0,0,0,0,0,0,0,142,253,252,253,252,41,0,0,0,0,0,0,0,0,0,152,253,254,253,102,20,0,0,0,0,0,0,0,203,254,253,254,253,0,0,0,0,0,0,0,0,0,0,152,252,253,252,41,0,0,0,0,0,0,0,21,223,253,252,253,171,0,0,0,0,0,0,0,0,0,0,152,253,254,253,203,0,0,0,0,0,0,0,51,253,254,253,254,213,21,0,0,0,0,0,0,0,0,0,193,252,253,252,223,102,0,0,21,102,102,102,132,252,253,252,253,252,203,61,0,0,0,0,0,0,0,0,92,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,224,122,0,0,0,0,0,0,0,0,10,50,172,252,253,252,253,252,253,252,253,252,253,252,253,252,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,102,61,102,102,82,82,183,102,234,253,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,213,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,142,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,150,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,220,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,234,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,208,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,232,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,248,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,255,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,254,155,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,42,132,132,174,226,226,181,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,45,128,206,254,254,254,254,254,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,254,255,254,254,254,166,85,85,185,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,179,206,147,113,170,240,15,0,0,151,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,33,0,9,118,235,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,120,240,254,235,121,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,232,254,254,254,143,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,230,254,254,254,254,254,254,194,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,189,188,150,95,95,171,235,254,131,0,0,0,0,0,0,0,0,0,49,216,113,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,230,34,0,0,0,0,0,0,0,0,164,254,244,4,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,138,0,0,0,0,0,0,0,0,226,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,159,0,0,0,0,0,0,0,0,108,254,254,213,11,0,0,0,0,0,0,0,0,0,0,0,0,245,254,159,0,0,0,0,0,0,0,0,13,182,254,254,140,4,0,0,0,0,0,0,0,0,0,16,118,252,254,152,0,0,0,0,0,0,0,0,0,26,203,254,254,193,179,89,76,0,0,45,82,57,137,240,254,254,212,44,0,0,0,0,0,0,0,0,0,0,7,131,197,243,254,254,253,245,246,249,253,251,254,254,214,107,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,104,131,176,225,226,225,222,131,131,90,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,13,122,190,255,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,181,252,252,252,253,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,221,252,252,236,158,104,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,106,84,48,0,13,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,229,188,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,109,242,252,252,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,251,252,253,252,235,109,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,241,241,255,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,176,230,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,193,107,0,0,0,0,0,133,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,206,0,0,0,0,27,240,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,254,254,127,0,0,0,0,130,255,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,254,254,175,2,0,0,0,54,242,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,215,51,0,0,0,0,175,254,254,218,26,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,254,119,0,0,0,0,46,233,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,50,252,254,254,210,8,0,0,53,49,228,254,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,52,235,254,254,254,134,0,0,34,240,254,254,254,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,35,254,254,254,222,76,27,97,244,254,254,254,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,254,254,237,233,240,254,254,254,254,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,21,234,254,254,254,254,254,254,254,254,254,254,254,254,214,71,0,0,0,0,0,0,0,0,0,0,0,0,0,14,114,197,211,211,211,211,183,254,254,254,253,147,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,198,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,248,254,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,187,254,254,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,207,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,139,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,252,252,252,239,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,252,252,252,239,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,179,253,252,252,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,239,253,252,252,252,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,253,252,252,252,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,252,230,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,255,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,239,252,252,253,213,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,189,252,252,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,252,252,252,252,160,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,187,252,252,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,250,252,252,252,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,246,252,252,236,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,232,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,99,90,0,0,0,0,0,0,0,0,0,0,69,252,103,0,0,0,0,0,0,0,0,0,0,0,0,20,234,250,65,0,0,0,0,0,0,0,0,0,115,254,184,0,0,0,0,0,0,0,0,0,0,0,0,176,254,229,7,0,0,0,0,0,0,0,0,0,115,254,254,0,0,0,0,0,0,0,0,0,0,0,24,240,255,105,0,0,0,0,0,0,0,0,0,0,115,254,254,0,0,0,0,0,0,0,0,0,0,3,136,254,184,4,0,0,0,0,0,0,0,0,0,0,115,254,254,0,0,0,0,0,0,0,0,0,0,130,254,254,78,0,0,0,0,0,0,0,0,0,0,0,115,254,254,0,0,0,0,0,0,0,0,0,82,253,254,185,13,0,0,0,0,0,0,0,0,0,0,0,113,254,254,0,0,0,0,0,0,0,0,29,233,247,168,8,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,0,0,0,0,0,0,0,0,130,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,0,0,0,0,0,0,0,0,254,254,254,250,250,250,244,146,146,146,146,146,146,146,72,42,42,137,254,237,0,0,0,0,0,0,0,0,219,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,150,0,0,0,0,0,0,0,0,71,120,105,15,112,77,70,58,103,77,120,120,120,120,120,213,244,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,213,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,224,223,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,207,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,201,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,98,254,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,83,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,234,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,230,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,213,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,254,253,254,253,224,203,214,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,253,171,151,111,50,50,20,0,10,30,0,0,0,0,0,0,0,0,0,0,52,193,203,0,0,102,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,171,40,0,21,203,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,233,0,0,0,163,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,254,172,254,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,131,151,151,151,151,253,252,223,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,163,223,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,213,192,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,193,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,123,122,0,0,0,0,0,0,31,232,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,233,183,61,0,0,0,0,0,0,21,223,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,203,0,0,0,0,0,0,0,123,243,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,255,253,153,71,52,92,153,233,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,172,252,253,252,253,252,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,102,102,163,203,183,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,81,136,109,18,63,189,138,68,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,140,203,253,253,253,253,253,253,253,253,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,200,253,253,253,253,253,237,220,253,253,253,253,202,54,8,0,0,0,0,0,0,0,0,0,0,10,97,237,253,253,252,117,84,154,45,24,65,126,224,253,253,230,25,0,0,0,0,0,0,0,0,0,7,113,253,253,253,174,51,0,0,0,0,0,0,0,83,182,253,238,207,56,0,0,0,0,0,0,0,0,124,253,253,253,70,4,0,0,0,0,0,0,0,0,63,147,253,253,253,135,0,0,0,0,0,0,0,0,250,253,253,73,2,0,0,0,0,0,0,0,0,73,249,253,253,253,253,248,0,0,0,0,0,0,0,0,255,253,253,82,5,0,0,0,0,0,0,9,131,251,253,249,230,248,253,253,0,0,0,0,0,0,0,0,235,253,253,253,135,42,42,42,35,30,132,195,253,253,229,118,0,201,253,253,0,0,0,0,0,0,0,0,41,101,226,253,253,253,253,253,241,231,253,253,253,190,32,0,0,201,253,253,0,0,0,0,0,0,0,0,0,9,31,146,203,253,253,253,253,253,194,132,59,2,0,0,0,201,253,253,0,0,0,0,0,0,0,0,0,0,0,0,15,41,99,93,96,41,10,0,0,0,0,0,0,201,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,143,249,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,5,71,58,0,0,0,0,0,0,0,53,253,253,249,74,0,0,0,0,0,0,0,0,0,0,0,0,52,192,253,112,0,0,0,0,0,0,87,217,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,14,175,253,117,39,0,0,0,0,0,53,217,253,253,177,12,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,219,118,66,66,66,164,128,252,253,253,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,48,199,215,253,253,253,253,253,253,253,253,253,144,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,19,150,253,253,253,253,253,253,154,139,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,92,135,80,80,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,191,0,0,0,64,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,191,0,0,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,64,0,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,64,191,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,161,222,93,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,254,254,220,137,195,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,250,141,214,254,254,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,254,180,0,75,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,221,254,220,27,9,158,254,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,180,0,88,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,246,62,0,193,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,204,0,68,235,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,228,254,117,13,202,254,254,197,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,80,87,254,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,212,237,254,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,145,254,254,254,254,254,196,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,187,239,173,233,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,35,0,187,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,214,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,255,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,172,255,254,218,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,221,253,179,252,253,247,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,175,253,188,2,69,149,236,251,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,252,66,0,0,0,49,230,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,195,0,0,0,0,0,171,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,244,253,115,0,0,0,0,0,56,246,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,224,22,0,0,0,0,0,0,228,218,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,227,253,191,0,0,0,0,0,0,0,228,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,202,67,0,0,0,0,0,0,0,228,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,18,238,253,113,0,0,0,0,0,0,0,0,228,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,225,19,0,0,0,0,0,0,0,63,248,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,164,0,0,0,0,0,0,0,18,221,253,198,16,0,0,0,0,0,0,0,0,0,0,0,0,28,237,253,78,0,0,0,0,0,0,0,32,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,78,0,0,0,0,0,0,48,192,253,221,5,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,235,22,0,0,0,0,0,13,181,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,227,0,0,0,0,0,0,144,253,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,245,53,0,0,0,14,150,252,253,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,251,253,229,127,115,159,225,253,253,209,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,217,253,253,253,253,253,231,179,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,119,156,253,166,149,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,130,246,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,158,186,248,254,190,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,102,216,249,254,255,194,59,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,230,114,26,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,241,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,212,218,0,0,0,27,112,115,97,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,104,2,82,166,254,243,236,252,171,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,137,189,253,245,101,27,0,100,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,217,100,0,0,0,0,0,219,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,79,0,0,0,0,0,0,0,220,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,240,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,221,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,105,0,0,0,0,0,0,0,0,0,219,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,179,0,0,0,0,0,0,0,0,0,219,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,210,0,0,0,0,0,0,0,0,56,248,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,245,83,0,0,0,0,0,0,0,180,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,245,84,17,0,0,0,42,157,248,178,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,154,249,249,154,184,185,251,251,147,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,115,169,223,166,141,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,237,37,0,0,0,43,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,253,63,0,0,116,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,234,252,252,253,63,11,119,249,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,206,252,252,252,253,154,202,252,252,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,199,77,174,253,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,254,186,9,0,0,212,243,253,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,171,252,236,37,0,0,0,0,190,252,231,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,245,252,253,63,0,0,0,101,247,251,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,128,84,21,0,0,27,253,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,255,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,234,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,252,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,199,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,191,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,252,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,84,0,0,0,45,150,197,135,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,214,28,0,13,154,234,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,195,0,0,113,252,252,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,196,0,0,176,253,253,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,118,26,225,253,252,252,252,252,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,208,156,252,253,252,252,252,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,252,252,252,253,252,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,255,253,253,253,253,255,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,252,252,252,253,252,233,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,252,252,252,252,253,233,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,233,252,252,252,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,189,112,112,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,99,167,253,253,253,253,133,64,11,0,38,132,31,0,0,0,0,0,0,0,0,0,0,0,0,0,33,165,252,252,252,252,252,252,253,252,237,145,222,252,216,145,25,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,252,175,96,96,219,252,252,252,252,252,252,252,143,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,195,12,0,0,59,252,252,252,252,252,252,210,59,0,0,0,0,0,0,0,0,0,0,0,71,252,252,252,228,26,0,29,253,252,252,252,252,252,162,10,0,0,0,0,0,0,0,0,0,0,0,0,9,83,232,252,252,201,193,221,253,252,252,252,200,145,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,252,253,252,240,144,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,201,252,252,252,252,253,197,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,247,252,252,252,252,248,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,215,252,252,252,252,252,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,253,253,253,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,252,243,250,252,253,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,252,252,252,240,76,212,252,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,252,252,167,0,109,252,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,235,70,0,195,252,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,200,113,193,247,252,253,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,252,252,252,252,252,252,252,253,248,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,174,252,252,252,252,252,252,253,243,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,227,252,252,252,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,131,189,131,17,17,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,105,183,165,227,148,131,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,252,253,252,252,252,252,253,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,252,252,253,245,231,231,240,253,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,231,226,172,56,0,0,35,156,252,237,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,24,0,0,0,0,0,43,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,201,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,255,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,226,252,244,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,175,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,175,254,253,253,253,253,131,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,252,253,252,252,252,252,253,205,94,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,252,252,250,231,134,196,231,253,252,252,239,144,22,6,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,226,115,0,0,0,0,102,189,247,252,252,253,189,67,0,0,0,0,0,0,0,0,0,0,0,0,21,113,86,0,0,0,0,0,0,0,38,113,191,236,147,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,85,85,85,85,85,85,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,230,252,250,250,250,250,252,250,250,250,250,128,127,63,0,0,0,0,0,0,0,0,0,0,0,0,85,223,250,252,250,250,250,250,252,250,250,250,250,252,250,209,56,0,0,0,0,0,0,0,0,0,0,71,230,250,250,252,250,250,250,250,252,250,250,250,250,252,250,250,223,34,0,0,0,0,0,0,0,0,0,85,252,252,252,254,252,252,252,252,254,252,252,252,252,254,252,252,252,252,0,0,0,0,0,0,0,0,0,85,250,250,250,252,250,250,250,250,252,250,250,250,250,252,250,250,250,250,0,0,0,0,0,0,0,0,22,168,250,250,250,252,250,250,250,250,231,125,125,125,125,252,250,250,250,250,0,0,0,0,0,0,0,0,183,250,250,250,250,252,250,165,83,83,70,0,0,0,0,112,250,250,250,250,0,0,0,0,0,0,0,0,252,250,250,250,250,217,41,20,0,0,0,0,0,0,0,43,250,250,250,250,0,0,0,0,0,0,0,0,254,252,252,252,252,0,0,0,0,0,0,0,0,0,0,78,252,252,252,252,0,0,0,0,0,0,0,0,252,250,250,250,250,0,0,0,0,0,0,0,0,0,71,252,250,250,250,250,0,0,0,0,0,0,0,0,252,250,250,250,250,128,127,127,42,0,128,127,127,127,230,252,250,250,250,144,0,0,0,0,0,0,0,0,252,250,250,250,250,252,250,250,195,168,252,250,250,250,250,252,250,250,250,41,0,0,0,0,0,0,0,0,252,250,250,250,250,252,250,250,250,250,252,250,250,250,250,252,250,250,110,7,0,0,0,0,0,0,0,0,36,224,252,252,252,254,252,252,252,252,255,252,252,252,252,255,252,126,0,0,0,0,0,0,0,0,0,0,0,56,208,250,250,252,250,250,250,250,252,250,250,250,250,167,166,83,0,0,0,0,0,0,0,0,0,0,0,0,63,125,125,126,166,250,250,250,146,250,187,125,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,83,83,83,14,83,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,47,47,47,130,167,255,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,253,253,253,253,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,233,253,253,253,253,253,206,134,209,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,236,140,124,41,9,0,145,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,243,27,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,189,0,0,0,0,0,85,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,236,59,0,0,0,0,11,207,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,29,0,0,0,0,0,42,253,253,186,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,209,253,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,241,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,222,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,38,122,146,146,232,254,255,213,146,119,38,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,76,159,253,253,253,253,253,253,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,54,227,253,253,252,248,148,139,139,149,202,160,247,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,114,246,129,102,83,0,0,0,0,0,0,0,200,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,29,54,0,0,0,0,0,0,0,0,20,169,251,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,76,233,253,253,251,109,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,169,253,253,253,227,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,232,253,253,253,141,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,161,252,253,253,252,140,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,241,113,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,53,223,246,253,253,253,253,234,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,171,199,253,253,253,231,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,74,193,253,253,234,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,244,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,250,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,174,245,253,253,124,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,182,141,141,141,226,251,253,253,253,176,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,155,253,253,253,253,253,253,253,128,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,74,145,214,253,198,74,37,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,174,254,255,255,254,221,221,160,215,167,125,125,125,54,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,253,253,253,253,253,253,253,253,253,253,253,253,250,248,248,0,0,0,0,0,0,0,0,0,52,168,252,253,253,253,219,142,109,110,142,142,142,142,142,142,142,142,142,0,0,0,0,0,0,0,0,0,118,253,253,213,149,159,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,213,29,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,238,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,185,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,253,95,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,248,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,247,253,232,149,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,2,0,0,115,220,253,253,197,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,97,0,0,0,28,188,245,253,160,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,154,2,0,0,0,0,189,253,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,111,3,0,0,0,28,194,246,253,188,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,110,17,0,0,0,0,196,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,253,253,213,150,40,20,57,230,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,246,253,253,253,253,253,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,237,249,253,253,253,253,253,221,117,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,123,123,123,123,123,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,77,186,255,240,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,106,221,250,254,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,222,254,254,254,221,204,249,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,231,254,249,180,65,14,0,232,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,254,226,62,0,0,0,54,249,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,231,42,0,0,42,159,171,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,134,0,0,43,231,254,254,254,240,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,107,0,9,180,254,254,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,203,7,104,254,254,235,78,88,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,254,227,248,254,251,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,178,254,254,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,120,254,254,253,250,254,251,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,254,122,11,159,254,227,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,254,254,120,1,0,7,210,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,254,236,119,2,0,0,86,248,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,252,111,0,0,52,140,246,254,241,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,254,163,0,27,130,248,254,252,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,142,164,253,254,254,236,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,254,254,254,233,148,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,171,254,254,254,153,125,125,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,253,250,248,164,118,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,166,253,253,253,253,253,253,253,253,253,253,246,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,129,149,149,149,227,253,253,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,25,25,128,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,184,253,253,236,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,202,253,253,187,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,176,241,253,253,203,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,202,215,253,253,253,185,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,243,253,253,253,253,184,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,107,244,253,253,253,240,101,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,210,253,253,253,253,113,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,238,253,253,253,253,136,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,206,253,253,253,253,253,229,169,139,40,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,205,253,253,253,253,253,253,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,186,66,0,0,3,27,97,156,0,0,0,0,0,0,0,0,244,253,253,253,235,234,123,104,104,204,248,253,253,237,133,20,106,253,253,176,0,0,0,0,0,0,0,0,54,237,240,120,11,0,0,0,0,0,116,253,253,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,143,251,253,253,253,253,249,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,210,253,253,243,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,174,253,254,253,200,148,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,252,252,253,217,252,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,252,247,143,65,12,29,210,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,162,0,0,0,15,225,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,84,0,0,0,153,226,235,247,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,145,0,0,103,253,253,253,247,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,210,14,0,190,252,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,252,59,31,221,252,252,190,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,218,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,252,244,77,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,218,253,255,204,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,142,252,252,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,235,245,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,92,147,139,14,148,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,192,252,209,102,35,174,155,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,254,107,0,0,45,255,204,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,239,42,0,22,173,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,232,48,39,237,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,111,242,253,252,252,252,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,209,252,244,103,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,114,148,254,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,252,252,253,252,252,184,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,213,252,252,244,127,168,252,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,186,253,252,247,162,49,0,85,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,253,252,143,0,0,0,85,252,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,236,194,71,0,0,0,43,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,37,0,0,0,0,0,87,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,237,252,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,228,253,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,148,218,209,148,148,60,218,253,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,191,237,252,252,252,253,252,252,252,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,8,128,161,223,253,252,251,231,249,253,252,252,252,252,127,15,0,0,0,0,0,0,0,0,0,0,0,11,171,252,252,252,253,231,129,43,221,253,252,252,252,252,253,203,9,0,0,0,0,0,0,0,0,0,0,43,252,252,226,103,42,28,0,169,252,253,252,252,252,252,236,54,0,0,0,0,0,0,0,0,0,0,0,61,253,250,70,0,0,32,96,218,253,255,222,62,109,253,255,125,0,0,0,0,0,0,0,0,0,0,0,148,252,231,0,0,103,237,252,252,252,151,16,0,64,252,253,168,0,0,0,0,0,0,0,0,0,0,0,96,252,251,161,215,253,252,252,247,143,0,0,0,32,223,253,116,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,253,252,185,63,0,0,0,0,0,80,128,21,0,0,0,0,0,0,0,0,0,0,0,7,121,155,252,208,129,42,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,243,253,227,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,168,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,194,253,253,200,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,249,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,125,192,249,253,250,250,253,198,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,250,111,200,253,241,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,222,105,0,200,253,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,113,124,36,0,0,200,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,253,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,253,228,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,187,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,52,174,253,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,252,252,218,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,245,252,252,252,103,12,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,252,253,252,252,236,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,253,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,157,253,225,185,255,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,245,56,141,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,253,210,72,6,215,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,252,253,141,0,64,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,218,11,0,64,252,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,187,253,237,55,4,183,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,253,231,195,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,83,205,251,252,252,232,92,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,253,252,245,99,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,218,77,200,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,212,0,22,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,225,21,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,252,253,116,31,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,198,253,224,211,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,104,182,155,77,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,67,0,61,227,253,253,253,255,253,156,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,237,190,253,252,174,168,168,168,168,168,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,221,252,252,244,153,21,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,252,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,173,155,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,234,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,250,253,209,148,113,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,224,252,253,252,221,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,21,127,126,225,247,188,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,213,231,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,55,0,18,145,247,242,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,210,169,239,253,205,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,200,252,226,147,42,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,78,146,218,254,254,255,121,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,199,253,253,253,192,131,229,209,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,253,251,253,253,140,1,173,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,221,59,244,253,171,47,184,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,239,213,90,0,68,217,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,175,0,0,4,180,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,83,0,0,69,253,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,129,0,0,142,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,137,6,46,246,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,228,253,195,195,249,128,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,136,246,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,246,253,253,246,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,164,242,198,71,191,253,217,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,248,189,61,0,53,247,253,208,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,126,253,177,0,0,0,30,90,231,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,175,253,200,17,0,0,0,0,9,202,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,139,253,242,33,33,19,33,72,197,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,236,253,253,253,221,253,253,253,207,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,150,253,253,253,230,145,90,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,47,99,150,104,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,129,204,253,253,253,253,241,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,37,39,140,223,249,253,253,253,253,253,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,88,191,253,253,253,253,240,128,73,67,67,193,253,253,226,0,0,0,0,0,0,0,0,0,10,84,130,226,247,241,227,227,163,124,19,0,0,19,128,247,253,253,243,0,0,0,0,0,0,0,0,14,139,253,253,246,151,41,0,0,0,0,0,0,0,182,253,253,253,253,121,0,0,0,0,0,0,0,0,60,253,245,204,36,0,0,0,0,0,0,9,16,127,245,253,253,253,244,43,0,0,0,0,0,0,0,0,212,253,181,0,0,0,0,0,0,0,25,214,253,253,253,253,253,221,32,0,0,0,0,0,0,0,0,0,255,253,175,2,5,48,48,31,110,173,229,253,253,253,253,251,193,23,0,0,0,0,0,0,0,0,0,0,169,253,253,181,246,253,253,253,253,253,253,253,253,253,237,60,0,0,0,0,0,0,0,0,0,0,0,0,10,90,250,253,253,253,247,155,152,175,253,253,253,241,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,58,36,4,0,3,212,253,253,217,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,239,87,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,251,253,158,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,229,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,175,253,251,108,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,247,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,223,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,254,116,13,65,133,140,185,133,214,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,253,253,254,253,253,253,253,222,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,253,253,254,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,253,207,206,193,102,237,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,192,72,72,4,0,0,27,230,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,89,180,63,0,0,0,0,0,129,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,235,253,253,194,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,253,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,253,248,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,254,249,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,248,253,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,207,253,253,204,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,242,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,249,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,236,253,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,253,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,177,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,254,228,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,248,253,207,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,53,224,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,235,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,116,196,213,215,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,254,254,254,254,205,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,183,220,254,254,240,254,254,214,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,200,57,148,254,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,239,228,45,7,0,53,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,83,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,243,254,252,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,113,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,234,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,201,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,186,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,247,254,171,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,250,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,211,254,254,177,12,0,0,0,60,79,153,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,255,254,170,126,189,229,229,248,254,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,254,254,254,254,254,254,254,254,254,248,84,0,0,0,0,0,0,0,0,0,0,0,0,0,32,245,254,254,254,254,254,254,254,254,254,254,215,195,94,0,0,0,0,0,0,0,0,0,0,0,0,0,14,212,254,254,254,231,254,219,219,138,129,141,27,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,182,144,28,46,18,18,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,173,0,0,0,0,0,0,0,0,0,0,0,100,181,64,0,0,0,0,0,0,0,0,0,0,0,127,252,244,45,0,0,0,0,0,0,0,0,0,22,221,252,145,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,0,0,0,0,0,114,252,212,107,0,0,0,0,0,0,0,0,0,0,36,241,252,252,0,0,0,0,0,0,0,0,0,0,236,252,126,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,0,0,0,0,0,0,0,0,0,80,254,253,127,0,0,0,0,0,0,0,0,0,0,0,190,252,252,173,0,0,0,0,0,0,0,0,22,225,253,252,47,0,0,0,0,0,0,0,0,0,0,0,190,252,252,138,0,0,0,0,0,0,0,0,73,252,253,252,40,48,83,0,0,0,0,0,0,0,0,11,206,252,252,42,0,0,0,0,0,0,0,6,190,252,253,252,252,236,145,0,0,0,0,0,0,0,0,43,252,252,226,24,0,0,0,0,0,18,106,206,252,252,253,252,199,111,0,0,0,0,0,0,0,0,0,123,253,253,190,0,43,43,96,148,192,255,253,253,253,253,247,131,9,0,0,0,0,0,0,0,0,0,0,253,252,252,210,173,253,252,252,252,252,253,252,252,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,235,170,168,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,205,136,84,14,0,155,252,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,208,86,11,0,0,0,18,216,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,53,0,0,0,0,0,0,0,43,253,253,253,77,148,69,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,244,127,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,211,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,42,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,56,56,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,167,88,11,56,137,131,209,250,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,253,253,253,253,253,253,253,253,253,191,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,225,253,253,253,253,237,167,133,64,34,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,253,209,137,79,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,122,30,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,253,253,253,253,186,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,213,213,228,253,253,253,247,173,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,59,139,218,253,253,215,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,149,237,253,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,251,253,247,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,127,0,0,0,0,0,0,0,0,0,0,98,83,0,0,0,0,0,0,0,0,0,0,0,0,4,191,253,163,0,0,0,0,0,0,0,0,0,0,254,143,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,163,0,0,0,0,0,0,0,0,0,0,254,237,44,0,0,0,0,0,0,0,0,16,31,152,239,253,250,70,0,0,0,0,0,0,0,0,0,0,223,253,205,94,25,0,0,45,80,80,160,226,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,95,247,253,253,240,234,234,245,253,253,253,253,253,244,209,88,2,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,253,239,233,253,252,163,119,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,9,78,109,148,92,45,11,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,24,24,24,24,24,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,110,161,161,203,203,253,252,252,252,252,203,140,13,0,0,0,0,0,0,0,0,0,0,0,0,0,100,215,253,252,252,252,252,253,252,252,252,252,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,26,224,252,253,193,160,119,45,46,45,45,45,45,211,235,64,0,0,0,0,0,0,0,0,0,0,0,43,236,252,252,128,8,0,0,0,0,0,0,0,0,13,18,0,0,0,0,0,0,0,0,0,0,0,87,253,253,234,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,240,37,0,0,0,0,17,47,47,120,161,161,109,47,38,0,0,0,0,0,0,0,0,0,0,0,253,252,100,0,32,70,91,184,209,252,253,252,252,252,252,253,219,51,0,0,0,0,0,0,0,0,0,0,253,252,188,187,228,253,252,252,252,252,161,160,160,160,244,253,252,240,113,9,0,0,0,0,0,0,0,0,148,252,252,252,252,253,178,137,43,22,0,0,0,0,21,33,211,252,252,128,0,0,0,0,0,0,0,0,11,116,168,116,116,0,0,0,0,0,0,0,0,0,0,0,47,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,243,252,252,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,76,5,0,24,97,170,253,253,255,249,146,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,252,135,151,253,252,252,252,252,144,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,252,252,252,253,252,233,183,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,129,160,160,161,87,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,223,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,224,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,130,167,167,167,176,218,133,80,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,147,183,244,254,254,254,254,254,252,246,246,227,158,158,158,128,125,22,0,0,0,0,0,0,0,0,0,0,0,0,137,254,156,23,213,202,106,219,254,254,254,254,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,162,234,24,0,184,214,229,253,254,206,170,128,114,114,111,17,0,0,0,0,0,0,0,0,0,0,0,0,131,249,50,87,244,254,241,125,41,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,224,254,240,158,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,251,185,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,245,254,229,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,247,252,185,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,248,235,77,36,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,117,0,0,202,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,215,170,1,0,0,202,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,212,13,0,0,0,202,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,183,0,0,0,0,202,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,183,0,0,0,31,247,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,183,0,0,0,48,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,183,0,0,5,167,242,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,237,60,36,161,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,254,252,160,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,248,205,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,241,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,219,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,218,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,255,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,155,236,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,120,33,0,0,0,0,81,254,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,150,246,223,55,0,0,0,0,81,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,232,254,242,49,0,0,0,0,0,156,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,40,246,254,254,145,9,0,0,0,0,4,237,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,31,236,254,254,254,212,116,8,0,0,5,254,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,151,232,254,254,254,240,132,20,5,254,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,94,202,254,254,254,214,75,254,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,70,216,254,230,180,254,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,31,18,95,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,213,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,221,165,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,249,135,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,245,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,106,214,111,0,0,0,0,0,0,0,5,216,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,74,245,254,220,0,0,0,0,0,0,0,0,125,254,254,206,17,0,0,0,0,0,0,0,0,0,0,0,98,254,254,220,0,0,0,0,0,0,0,0,40,246,254,254,168,0,0,0,0,0,0,0,0,0,0,0,98,254,254,220,0,0,0,0,0,0,0,0,0,159,254,254,238,58,0,0,0,0,0,0,0,0,0,0,98,254,254,220,0,0,0,0,0,0,0,0,0,104,254,254,254,96,0,0,0,0,0,0,0,0,0,0,232,254,254,220,0,0,0,0,0,0,0,0,0,104,254,254,254,231,0,0,0,0,0,0,0,0,0,42,242,254,254,232,98,228,228,179,128,127,91,91,91,157,254,254,254,241,42,0,0,0,0,0,0,0,0,118,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,117,0,0,0,0,0,0,0,0,118,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,251,95,0,0,0,0,0,0,0,0,105,237,254,248,227,144,89,89,89,89,89,89,89,89,231,254,254,250,133,0,0,0,0,0,0,0,0,0,0,42,110,86,0,0,0,0,0,0,0,0,0,0,104,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,242,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,234,254,251,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,229,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,253,206,13,4,29,66,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,252,93,26,128,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,208,116,222,253,252,252,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,241,84,222,252,253,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,217,128,253,253,254,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,141,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,164,141,252,252,252,253,252,186,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,252,40,141,252,252,252,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,253,203,254,253,253,253,214,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,252,253,252,233,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,252,244,168,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,203,252,214,139,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,0,0,0,64,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,128,128,191,128,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,128,64,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,108,233,253,255,180,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,57,219,252,252,252,253,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,205,253,252,252,252,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,176,244,252,253,235,77,88,202,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,193,252,252,252,180,18,0,0,11,96,252,252,244,21,53,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,192,63,0,0,0,0,0,0,162,253,253,253,255,180,55,24,3,0,0,0,0,0,0,0,0,138,252,252,45,0,0,0,0,0,0,5,178,252,252,252,253,252,252,252,22,0,0,0,0,0,0,0,0,138,252,252,102,38,0,0,0,0,0,108,252,252,252,252,253,240,151,69,6,0,0,0,0,0,0,0,0,44,252,252,252,232,155,133,93,17,0,180,252,252,252,252,192,37,0,0,0,0,0,0,0,0,0,0,0,3,117,252,252,252,253,252,252,234,230,253,252,252,252,147,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,220,244,253,253,253,253,255,253,253,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,173,252,252,252,253,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,252,252,252,222,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,218,56,36,219,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,252,56,0,0,161,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,253,253,46,11,149,253,253,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,253,252,252,177,203,253,252,208,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,252,252,252,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,252,252,252,252,203,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,252,252,157,85,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,120,203,254,254,254,254,254,254,169,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,245,253,253,253,254,253,253,253,254,253,251,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,254,240,187,137,138,54,46,46,46,226,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,228,73,0,0,0,0,0,0,0,138,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,185,0,0,0,0,0,0,0,0,47,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,207,253,184,0,0,0,0,0,0,0,0,21,228,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,207,253,216,11,0,0,0,0,0,0,0,30,228,253,247,21,0,0,0,0,0,0,0,0,0,0,0,0,207,253,254,124,0,0,0,0,0,0,60,214,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,51,235,254,254,203,70,70,87,161,195,254,254,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,237,253,253,253,254,253,253,253,241,139,244,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,96,179,230,237,215,137,104,34,0,207,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,6,0,0,0,0,207,253,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,248,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,255,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,228,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,37,131,229,216,131,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,34,137,221,254,254,254,254,254,109,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,254,254,254,254,254,254,108,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,254,248,229,193,105,209,251,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,248,196,75,0,0,0,0,218,254,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,93,75,0,0,0,0,0,0,218,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,182,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,244,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,243,254,230,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,243,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,109,243,254,254,190,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,185,254,254,254,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,113,221,254,254,254,254,136,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,94,173,224,254,254,254,254,254,254,254,223,218,106,7,0,0,0,0,0,0,0,0,0,0,0,0,66,227,254,254,254,254,254,254,254,254,254,254,254,254,254,171,5,0,0,0,0,0,0,0,0,0,3,173,244,254,254,254,254,254,254,176,148,148,148,185,254,254,255,254,125,0,0,0,0,0,0,0,0,0,7,254,254,254,254,254,235,142,54,5,0,0,0,7,18,67,189,254,246,5,0,0,0,0,0,0,0,0,7,254,254,254,254,179,52,0,0,0,0,0,0,0,0,0,5,128,79,1,0,0,0,0,0,0,0,0,7,254,254,181,54,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,227,157,213,255,148,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,253,253,209,184,128,76,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,139,160,248,253,253,253,253,253,186,8,52,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,18,26,0,0,0,94,102,187,210,220,235,210,253,253,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,37,122,193,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,164,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,141,73,118,28,17,0,0,13,132,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,190,253,253,253,228,215,153,133,176,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,253,253,253,253,253,253,253,71,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,253,253,253,253,253,253,253,253,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,253,253,253,253,179,210,253,253,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,190,232,232,232,192,78,52,3,9,71,250,253,75,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,75,0,0,0,0,0,0,0,0,0,0,30,210,98,67,0,0,0,0,0,0,0,0,0,0,0,20,250,75,0,0,0,0,0,0,0,0,0,0,76,253,219,116,12,0,0,0,0,0,0,0,0,0,0,56,251,75,0,0,0,0,0,0,0,0,0,0,76,253,187,17,0,0,0,0,0,0,0,0,0,0,17,141,245,56,0,0,0,0,0,0,0,0,0,0,76,253,253,222,110,0,0,0,0,0,0,0,0,0,110,253,177,0,0,0,0,0,0,0,0,0,0,0,34,236,253,253,253,228,141,95,72,79,30,22,121,199,252,253,53,0,0,0,0,0,0,0,0,0,0,0,0,115,225,253,253,253,253,253,253,253,247,228,253,253,235,139,2,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,196,253,253,253,253,253,253,253,253,184,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,194,254,254,255,163,93,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,209,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,249,82,82,82,82,181,249,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,63,0,0,0,0,0,112,252,246,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,111,253,245,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,143,0,0,0,0,0,0,0,7,209,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,208,147,0,0,0,0,0,0,0,0,90,251,220,29,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,147,0,0,0,0,0,0,0,0,0,166,253,170,0,0,0,0,0,0,0,0,0,0,0,0,34,230,253,147,0,0,0,0,0,0,0,0,0,166,253,170,0,0,0,0,0,0,0,0,0,0,0,0,29,223,253,147,0,0,0,0,0,0,0,0,0,166,253,170,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,56,0,0,0,0,0,0,0,0,0,166,253,170,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,29,0,0,0,0,0,0,0,0,0,166,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,29,0,0,0,0,0,0,0,0,14,205,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,29,0,0,0,0,0,0,0,1,96,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,29,0,0,0,0,0,0,0,12,253,253,215,22,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,51,0,0,0,0,0,0,22,113,253,244,98,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,174,3,0,0,0,0,55,204,253,246,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,232,253,253,201,84,84,111,201,245,253,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,213,253,253,253,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,122,193,253,253,253,253,154,83,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,209,249,237,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,254,232,214,158,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,201,254,254,254,254,254,254,235,160,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,245,119,82,86,220,89,202,186,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,249,250,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,195,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,244,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,239,254,254,254,238,207,107,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,162,235,254,207,249,254,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,89,2,80,224,254,245,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,239,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,208,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,219,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,15,0,0,33,250,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,198,87,50,218,254,240,101,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,254,254,174,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,146,254,172,117,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,248,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,235,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,250,211,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,246,215,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,225,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,255,238,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,226,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,227,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,167,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,214,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,212,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,172,0,0,0,0,23,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,172,0,0,0,174,240,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,172,0,0,0,235,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,179,2,0,0,226,254,188,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,14,0,0,172,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,14,0,0,235,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,185,3,0,6,237,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,219,254,105,0,0,77,254,254,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,235,5,0,0,168,254,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,254,229,0,14,134,239,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,210,144,249,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,254,254,254,254,213,209,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,254,253,213,129,10,173,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,119,161,80,0,0,0,173,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,250,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,218,175,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,58,221,253,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,215,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,232,252,252,253,252,252,252,191,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,252,252,128,35,35,56,179,253,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,253,252,205,31,0,0,0,0,149,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,160,252,253,128,31,0,0,0,0,0,191,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,255,119,0,0,0,0,0,0,0,73,253,253,0,0,0,0,0,0,0,0,0,0,0,0,94,227,252,252,35,5,0,0,0,0,0,0,0,155,252,168,0,0,0,0,0,0,0,0,0,0,0,21,211,252,246,215,0,0,0,0,0,0,0,0,16,181,252,252,0,0,0,0,0,0,0,0,0,0,21,206,252,252,132,0,0,0,0,0,0,0,0,0,191,252,252,168,0,0,0,0,0,0,0,0,0,32,129,253,253,222,41,0,0,0,0,0,0,0,99,253,255,253,154,0,0,0,0,0,0,0,0,0,0,197,252,252,220,45,0,0,0,0,0,0,0,105,242,252,222,138,10,0,0,0,0,0,0,0,0,0,0,217,252,252,123,0,0,0,37,37,140,181,182,242,246,215,125,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,0,42,144,144,253,252,252,252,253,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,253,255,253,237,144,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,242,252,252,252,252,252,210,180,55,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,71,71,71,71,71,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,123,241,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,123,235,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,131,229,254,254,254,189,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,111,76,159,235,254,254,254,254,125,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,230,254,254,254,254,254,245,88,18,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,233,247,236,235,231,113,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,205,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,212,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,225,254,219,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,207,254,178,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,251,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,79,0,0,0,0,0,0,6,165,255,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,215,32,0,0,0,0,0,147,254,218,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,181,0,0,0,0,83,229,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,206,253,154,57,64,151,250,254,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,227,254,254,254,254,254,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,187,254,247,159,104,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,244,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,225,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,228,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,194,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,179,253,253,249,122,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,232,252,252,241,242,252,237,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,230,252,252,236,55,116,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,252,210,59,0,13,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,206,151,10,0,0,13,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,60,14,0,0,0,0,47,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,237,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,235,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,13,70,13,13,185,255,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,165,252,252,252,252,252,252,253,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,252,252,252,252,252,252,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,252,252,252,252,252,252,252,253,244,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,252,252,252,252,252,253,252,133,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,252,252,252,252,186,214,253,252,252,189,21,21,170,147,7,0,0,0,0,0,0,0,0,0,0,5,174,252,252,252,224,122,5,81,213,252,252,252,218,218,252,252,122,0,0,0,0,0,0,0,0,0,0,0,22,116,155,155,46,0,0,0,29,252,252,252,252,252,252,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,35,211,252,252,252,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,131,218,252,212,131,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,112,156,217,254,254,254,254,232,156,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,118,200,241,253,253,249,233,233,233,158,234,250,241,24,0,0,0,0,0,0,0,0,0,0,0,0,13,183,254,253,253,195,78,60,0,0,0,0,0,147,253,117,0,0,0,0,0,0,0,0,0,0,0,43,230,253,254,174,49,9,0,0,0,0,0,0,0,118,253,117,0,0,0,0,0,0,0,0,0,0,8,183,253,253,96,9,0,0,0,0,0,0,0,0,0,118,253,41,0,0,0,0,0,0,0,0,0,0,43,254,244,83,0,0,0,0,0,0,0,0,0,0,59,239,175,0,0,0,0,0,0,0,0,0,0,0,118,253,213,0,0,0,0,0,0,0,0,0,0,8,201,236,57,0,0,0,0,0,0,0,0,0,0,0,118,253,226,18,0,0,0,0,0,0,0,0,0,165,254,179,175,81,0,0,0,0,0,0,0,0,0,0,17,196,253,200,31,0,0,0,0,0,0,0,0,195,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,48,208,253,240,150,68,0,0,23,98,98,188,239,254,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,16,173,255,254,254,254,254,255,254,254,254,231,156,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,135,135,135,135,136,135,135,83,24,156,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,127,127,110,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,91,169,170,204,246,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,223,252,252,236,182,190,42,218,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,210,253,253,253,236,45,0,0,11,219,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,153,79,231,54,0,0,0,64,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,109,5,2,16,0,0,0,0,160,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,185,252,169,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,22,66,192,252,235,28,22,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,169,169,211,252,252,253,252,252,252,252,204,133,32,0,0,0,0,0,0,0,0,0,0,18,141,124,185,140,147,226,252,252,252,147,112,138,147,147,209,252,223,80,0,0,0,0,0,0,0,0,0,105,253,236,43,130,210,253,232,140,18,0,0,0,0,0,0,116,215,253,253,0,0,0,0,0,0,0,0,227,252,252,252,252,204,132,32,0,0,0,0,0,0,0,0,0,6,89,168,0,0,0,0,0,0,0,0,83,126,126,100,21,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,56,200,255,148,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,186,43,0,0,0,0,65,253,253,250,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,214,253,69,0,0,0,0,51,253,231,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,164,253,253,135,0,0,0,34,185,253,224,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,188,2,0,0,0,110,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,167,251,253,205,16,0,0,0,26,236,253,169,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,222,253,225,116,0,0,0,0,76,253,245,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,249,104,0,0,0,0,34,230,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,222,253,147,0,0,0,0,2,171,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,180,253,239,21,0,0,0,0,45,253,253,212,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,101,0,0,0,0,0,204,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,117,0,0,0,0,119,235,253,181,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,173,253,253,119,0,0,0,12,250,253,250,92,0,14,11,46,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,79,0,0,27,234,253,253,128,32,136,244,146,34,0,0,0,0,0,0,0,0,0,0,0,7,165,253,254,135,3,9,85,230,253,253,196,238,253,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,186,204,253,253,253,253,253,253,172,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,241,254,253,253,253,253,253,253,239,156,35,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,153,253,253,253,253,253,165,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,253,253,231,33,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,184,253,220,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,252,252,253,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,71,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,207,255,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,253,252,252,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,253,252,252,252,218,217,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,253,252,252,252,253,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,253,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,179,253,252,252,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,252,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,122,190,255,184,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,186,252,252,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,252,204,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,140,197,252,252,229,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,232,252,252,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,252,134,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,237,252,252,252,220,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,220,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,48,0,11,128,191,132,58,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,125,128,242,252,253,252,252,231,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,252,252,252,235,234,219,252,252,252,179,30,0,0,0,0,0,0,0,0,0,0,0,0,0,70,236,252,252,252,252,208,107,40,8,188,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,154,7,0,0,0,157,252,252,252,188,9,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,252,155,7,0,0,0,157,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,10,77,232,252,252,100,4,0,9,189,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,252,252,252,219,218,220,252,252,252,252,220,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,100,252,252,252,253,252,252,252,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,58,131,131,132,201,194,252,252,160,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,64,234,255,152,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,167,253,192,250,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,75,211,241,115,6,244,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,149,253,219,57,0,17,245,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,211,248,149,14,0,0,178,233,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,227,227,244,253,99,0,0,0,29,228,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,241,253,253,253,247,134,11,5,143,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,233,200,196,253,253,207,108,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,173,50,8,128,237,250,253,253,111,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,233,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,131,118,253,176,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,223,232,49,21,128,251,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,120,0,0,0,244,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,54,0,0,0,128,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,216,17,0,0,0,28,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,199,0,0,0,0,28,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,252,78,16,8,75,199,245,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,215,196,253,216,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,107,231,198,145,145,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,121,198,183,122,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,206,249,253,253,253,254,242,241,128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,253,253,253,254,253,253,253,197,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,240,158,39,39,40,166,202,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,213,0,0,0,0,0,20,187,253,214,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,253,114,0,0,0,0,0,0,64,242,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,80,0,0,0,0,0,0,0,201,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,80,0,0,0,0,0,0,0,201,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,80,0,0,0,0,0,0,5,204,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,80,0,0,0,0,0,0,81,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,255,162,45,0,0,0,0,0,144,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,88,5,0,0,0,0,40,231,253,202,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,80,0,0,0,0,0,94,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,226,200,34,114,0,35,215,253,232,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,223,157,138,217,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,253,253,253,253,254,253,233,87,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,232,214,213,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,246,253,253,246,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,242,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,133,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,211,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,182,139,11,0,0,0,37,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,253,252,71,0,0,0,37,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,47,109,211,252,253,252,71,0,0,0,181,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,42,232,252,252,252,253,252,195,0,0,0,181,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,47,221,252,252,252,252,253,220,102,0,0,11,191,252,253,252,112,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,252,253,35,0,0,0,155,252,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,253,255,211,31,0,47,233,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,252,253,252,206,73,150,252,252,252,253,138,0,0,0,0,0,0,0,0,0,0,0,53,232,252,252,252,252,252,253,252,252,252,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,155,252,252,252,252,252,252,253,252,252,252,253,252,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,218,253,253,253,253,253,253,255,253,253,253,255,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,252,231,179,179,180,200,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,21,175,215,153,51,0,0,0,21,201,252,253,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,115,235,254,254,227,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,243,253,253,253,253,253,253,82,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,99,249,253,253,253,253,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,175,93,35,125,247,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,246,253,242,103,2,0,0,0,102,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,253,243,71,0,0,0,0,8,203,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,168,0,0,0,0,0,88,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,230,36,0,0,40,42,163,246,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,234,194,194,253,253,253,253,253,254,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,253,253,253,253,253,242,226,253,253,117,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,79,160,248,193,188,188,148,75,115,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,249,253,222,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,246,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,201,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,239,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,216,248,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,51,51,254,252,252,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,161,250,250,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,151,252,250,250,250,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,202,231,250,252,250,250,250,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,254,252,252,252,254,252,252,252,254,252,252,252,214,51,20,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,250,250,252,250,250,250,252,250,250,250,252,250,160,102,0,0,0,0,0,0,0,0,0,62,211,250,252,250,250,250,252,189,190,250,252,250,250,250,252,250,250,128,0,0,0,0,0,0,0,0,0,102,250,250,252,250,250,250,252,149,151,250,252,250,250,250,252,250,128,10,0,0,0,0,0,0,0,0,0,0,152,252,254,252,252,252,0,82,202,243,254,252,252,252,244,121,0,0,0,0,0,0,0,0,0,0,0,41,191,250,252,250,250,169,0,0,0,121,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,31,191,250,250,252,250,159,20,0,0,0,0,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,213,250,250,250,212,49,20,0,0,0,0,0,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,254,252,252,252,163,0,0,0,0,0,0,203,254,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,0,0,0,0,0,0,62,221,252,250,250,169,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,123,0,0,0,0,62,211,250,252,250,159,20,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,243,202,202,202,203,221,250,250,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,41,222,252,252,255,252,252,252,254,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,210,250,252,250,250,250,252,250,189,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,100,252,250,250,250,222,100,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,49,49,49,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,93,93,134,103,198,93,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,221,232,200,253,252,246,230,126,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,181,255,144,0,0,0,11,116,116,116,220,255,232,107,15,0,0,0,0,0,0,0,0,0,0,0,0,114,252,228,75,0,0,0,0,0,0,0,0,103,206,240,219,109,0,0,0,0,0,0,0,0,0,0,83,240,252,84,0,0,0,0,0,0,0,0,0,0,0,82,240,252,0,0,0,0,0,0,0,0,0,81,240,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,0,0,0,0,0,0,0,0,74,244,252,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,0,0,0,0,0,0,0,0,255,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,15,191,253,180,0,0,0,0,0,0,0,0,239,33,0,0,0,0,0,0,0,0,0,0,0,0,22,110,219,252,172,8,0,0,0,0,0,0,0,0,230,0,0,0,0,0,0,0,0,0,0,0,19,70,205,253,240,100,13,0,0,0,0,0,0,0,0,0,249,133,25,0,0,0,0,0,0,0,51,114,220,252,252,150,37,0,0,0,0,0,0,0,0,0,0,0,201,252,205,116,116,116,63,116,116,220,243,252,221,137,32,0,0,0,0,0,0,0,0,0,0,0,0,0,11,116,199,230,230,233,239,230,230,126,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,64,191,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,128,191,128,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,255,191,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,161,160,195,98,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,94,236,254,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,172,254,250,150,66,207,254,243,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,254,235,53,0,0,104,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,204,30,0,0,0,156,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,247,61,0,0,0,24,223,254,232,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,169,0,0,0,0,163,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,99,0,7,57,57,232,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,210,123,207,254,247,128,206,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,184,254,254,254,183,49,15,219,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,95,74,0,0,0,38,254,255,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,248,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,36,133,133,232,254,254,254,250,133,191,133,133,41,9,0,0,0,0,0,0,0,0,0,0,0,0,14,116,253,253,253,253,253,253,253,254,253,253,253,253,253,217,42,3,0,0,0,0,0,0,0,0,0,8,212,253,253,253,253,253,239,217,159,218,205,171,217,226,253,253,253,41,0,0,0,0,0,0,0,0,0,13,253,253,253,253,216,107,52,0,0,0,0,0,0,21,176,221,253,217,8,0,0,0,0,0,0,0,0,13,253,253,242,164,17,0,0,0,0,0,0,0,0,0,0,86,253,253,11,0,0,0,0,0,0,0,0,3,72,180,146,0,0,0,0,0,0,0,0,0,0,0,21,191,253,222,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,191,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,134,253,253,124,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,195,253,222,104,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,133,249,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,71,198,255,255,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,25,232,253,255,239,153,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,110,253,253,236,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,194,253,253,209,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,233,146,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,165,253,198,40,0,0,0,0,42,73,130,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,147,16,0,89,148,149,233,253,253,213,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,225,218,233,253,254,253,253,253,207,133,19,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,254,253,253,253,242,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,19,132,219,253,253,253,201,190,132,63,70,11,11,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,193,234,152,152,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,223,253,252,253,252,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,244,203,102,61,0,0,132,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,212,81,0,0,0,0,0,92,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,20,0,0,0,0,0,0,152,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,223,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,102,142,254,253,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,0,0,0,0,0,0,0,102,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,212,0,0,0,0,0,0,62,203,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,172,52,31,0,21,72,233,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,253,232,203,223,253,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,2,7,6,7,7,11,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,99,165,234,254,182,221,214,225,219,254,254,223,165,87,0,0,0,0,0,0,0,0,0,0,0,65,150,224,254,254,254,254,246,195,228,134,223,163,134,134,134,96,0,0,0,0,0,0,0,0,0,0,115,244,254,216,179,85,80,207,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,246,240,127,12,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,193,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,125,204,214,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,188,254,217,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,151,253,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,251,219,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,74,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,32,0,0,0,0,0,51,255,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,218,60,0,0,0,27,216,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,185,237,235,235,235,242,254,190,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,158,254,244,164,70,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,102,186,255,201,18,2,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,186,245,254,239,246,254,244,241,250,217,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,248,254,190,91,21,86,204,204,140,143,252,248,136,10,0,0,0,0,0,0,0,0,0,0,0,0,18,228,254,127,13,0,0,0,0,0,1,65,250,254,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,137,0,0,0,0,0,0,5,254,254,230,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,155,0,0,0,0,0,0,5,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,126,0,0,0,0,0,6,120,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,67,0,0,0,38,83,230,254,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,206,147,147,168,246,254,254,254,235,86,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,190,242,254,241,225,185,254,254,218,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,44,32,23,165,254,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,134,254,240,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,222,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,161,254,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,238,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,218,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,222,254,219,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,235,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,70,7,0,68,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,254,157,0,0,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,211,5,0,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,253,46,0,186,253,137,0,0,0,9,93,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,254,46,0,187,254,169,70,70,120,203,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,234,230,254,253,253,253,254,253,253,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,253,253,253,254,253,253,244,230,213,129,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,202,160,160,220,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,210,17,0,0,162,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,23,9,0,0,0,161,253,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,186,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,0,0,0,28,232,211,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,194,69,0,0,0,59,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,99,0,0,0,149,253,142,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,217,231,84,0,0,0,194,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,196,0,0,0,0,120,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,113,0,0,0,0,194,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,240,253,30,0,0,0,0,186,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,235,253,175,129,40,34,0,178,253,167,0,16,25,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,254,253,253,244,195,254,253,235,157,217,231,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,135,255,254,254,254,254,255,254,254,254,254,241,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,135,135,150,248,254,251,203,135,135,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,217,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,231,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,122,146,216,255,98,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,129,253,253,253,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,229,103,32,79,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,247,39,0,0,73,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,196,0,0,6,191,253,237,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,25,0,0,119,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,253,163,86,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,215,253,253,253,253,253,164,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,195,253,252,214,44,30,211,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,199,241,144,0,0,0,99,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,5,0,0,0,13,216,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,244,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,206,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,187,16,0,0,0,0,16,218,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,137,9,0,0,0,104,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,186,253,196,72,33,33,179,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,158,248,253,253,253,253,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,168,253,253,182,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,208,254,255,254,199,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,135,252,254,254,254,254,254,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,202,254,254,248,198,116,175,252,254,226,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,136,241,254,254,206,82,0,0,0,127,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,12,137,254,254,247,128,7,0,0,1,23,178,254,254,211,6,0,0,0,0,0,0,0,0,0,0,0,2,161,254,254,251,82,0,0,0,32,71,254,254,254,254,240,38,0,0,0,0,0,0,0,0,0,0,0,111,254,254,221,82,0,0,0,0,0,32,194,254,254,240,61,0,0,0,0,0,0,0,0,0,0,0,18,234,254,247,81,0,0,0,0,0,6,137,252,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,148,0,0,0,0,67,190,238,254,254,254,163,3,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,232,134,134,134,186,250,254,254,254,254,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,49,241,254,254,254,254,254,254,237,174,254,254,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,222,244,254,254,236,132,28,158,254,253,147,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,71,71,1,0,33,241,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,236,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,240,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,240,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,249,190,103,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,175,254,252,105,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,128,48,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,204,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,253,253,174,131,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,174,98,11,43,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,2,0,0,148,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,218,253,255,253,104,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,190,247,252,252,204,231,252,211,146,85,57,43,85,173,0,0,0,0,0,0,0,0,0,0,0,15,153,245,252,252,252,190,9,16,127,231,249,253,246,242,238,143,0,0,0,0,0,0,0,0,0,0,41,225,252,253,252,252,183,14,0,0,0,0,70,84,84,84,28,0,0,0,0,0,0,0,0,0,0,36,223,252,252,253,252,59,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,236,150,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,174,98,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,122,153,255,255,254,255,255,243,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,176,253,253,253,253,253,253,253,253,253,253,196,36,0,0,0,0,0,0,0,0,0,0,0,0,54,178,232,253,250,165,139,71,32,32,32,120,151,249,253,236,115,0,0,0,0,0,0,0,0,0,7,123,241,253,221,114,39,0,0,0,0,0,0,0,0,27,192,253,225,41,0,0,0,0,0,0,0,0,73,253,253,140,17,0,0,0,0,0,0,0,0,0,0,0,0,249,253,145,0,0,0,0,0,0,0,0,146,253,249,15,35,12,0,0,0,0,0,0,0,0,0,0,54,205,253,140,0,0,0,0,0,0,0,0,126,253,253,177,34,0,0,0,0,0,0,0,0,0,0,62,237,253,240,30,0,0,0,0,0,0,0,0,25,167,243,253,135,0,0,0,0,0,0,0,0,0,141,235,253,242,75,0,0,0,0,0,0,0,0,0,0,0,19,21,6,0,0,0,0,0,0,0,11,146,253,253,247,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,140,162,223,253,253,240,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,253,253,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,124,225,237,253,240,57,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,150,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,117,253,234,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,199,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,58,138,7,0,0,0,0,0,0,0,0,0,93,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,115,0,0,0,0,0,0,0,0,23,240,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,249,249,196,141,141,141,166,207,245,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,13,110,216,253,253,253,253,253,253,253,253,253,235,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,145,191,168,253,151,145,145,88,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,255,218,105,105,105,105,105,105,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,242,252,253,252,252,252,252,252,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,239,252,252,253,252,252,252,252,252,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,252,253,252,252,252,252,252,188,132,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,252,252,252,253,252,247,107,29,29,14,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,178,252,252,252,252,241,99,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,178,252,252,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,252,252,210,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,137,249,252,252,229,193,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,255,253,253,182,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,253,252,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,42,0,0,0,0,0,0,0,105,252,252,252,212,35,0,0,0,0,0,0,0,0,0,0,0,0,0,191,233,153,9,0,0,0,0,0,148,252,252,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,187,178,178,178,178,178,253,252,252,252,199,22,0,0,0,0,0,0,0,0,0,0,0,0,0,28,205,252,252,252,252,252,252,252,253,252,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,157,204,252,252,252,252,252,252,253,252,252,252,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,203,252,252,252,252,252,253,252,222,136,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,103,103,244,225,191,253,216,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,64,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,82,181,234,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,83,40,4,52,102,119,159,204,254,254,246,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,112,254,170,184,254,254,254,233,202,121,89,230,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,254,235,169,137,56,14,0,0,5,88,16,0,0,0,0,0,0,0,0,0,0,0,0,0,73,207,199,119,55,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,200,155,119,116,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,248,254,227,254,254,241,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,227,252,79,7,37,241,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,147,0,0,70,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,105,5,0,32,201,248,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,228,248,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,17,7,5,17,90,223,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,224,217,254,254,231,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,255,251,203,140,68,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,17,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,163,248,201,127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,239,254,211,226,254,181,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,215,44,3,19,202,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,71,0,0,0,46,252,214,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,59,0,0,0,0,165,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0,0,128,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,132,170,194,86,199,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,225,161,240,254,254,211,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,250,136,11,0,6,190,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,69,0,0,39,246,254,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,249,33,8,79,222,254,226,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,254,254,254,252,148,78,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,123,186,129,66,0,13,248,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,117,224,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,166,252,252,245,43,0,0,0,0,0,0,0,0,0,0,0,2,106,82,30,0,0,0,0,0,0,8,166,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,236,83,12,0,0,0,24,117,252,252,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,197,181,135,170,215,253,252,252,241,163,17,0,0,0,0,0,0,0,0,0,0,0,0,9,180,225,252,252,252,252,252,252,252,253,252,207,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,128,167,167,236,252,175,248,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,36,4,137,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,252,163,109,31,53,0,42,10,0,0,0,0,0,0,0,0,0,0,0,0,47,241,241,201,121,230,252,253,252,252,252,244,246,241,245,190,6,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,253,253,255,253,246,241,241,241,241,241,22,0,0,0,0,0,0,0,0,0,0,0,0,44,234,252,232,228,119,246,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,96,18,0,0,224,253,249,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,244,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,195,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,18,18,76,191,211,255,218,37,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,152,253,253,253,253,253,253,253,253,253,202,154,154,60,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,227,145,200,200,200,200,200,252,253,253,232,61,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,223,94,0,0,0,0,0,0,124,224,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,130,228,124,27,0,0,0,0,0,0,0,5,185,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,6,21,0,0,0,0,0,0,0,0,0,118,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,234,253,253,246,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,132,253,253,246,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,150,95,36,67,217,253,253,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,113,237,253,253,239,247,253,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,220,253,253,253,253,253,253,253,253,201,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,253,253,253,253,248,79,11,0,0,0,0,0,0,0,0,0,0,0,0,0,46,225,253,253,253,253,253,253,220,242,253,253,253,253,196,81,10,0,0,0,0,0,0,0,0,0,0,13,226,253,253,253,253,253,247,169,21,90,212,253,253,253,253,253,198,82,5,0,0,0,0,0,0,0,0,57,253,253,253,253,253,251,154,0,0,0,20,160,252,253,253,253,253,253,17,0,0,0,0,0,0,0,0,90,253,253,253,253,164,95,0,0,0,0,0,0,40,164,253,253,253,213,11,0,0,0,0,0,0,0,0,10,207,253,220,94,2,0,0,0,0,0,0,0,0,2,39,135,97,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,226,75,0,0,0,0,0,151,253,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,255,209,25,0,0,0,60,241,255,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,253,84,0,0,0,13,209,252,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,98,234,252,252,231,19,0,0,0,144,252,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,38,163,253,252,252,252,75,0,0,0,76,243,252,252,178,9,0,0,0,0,0,0,0,0,0,0,4,104,229,253,254,253,253,253,79,10,0,13,254,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,253,252,252,252,253,196,169,206,253,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,253,252,252,252,253,252,252,252,253,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,202,28,28,65,139,203,252,252,252,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,114,113,76,0,0,0,0,0,16,166,253,253,254,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,222,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,105,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,95,211,252,213,103,60,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,252,116,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,252,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,247,177,177,177,217,252,252,252,163,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,74,69,0,0,0,39,127,227,252,253,156,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,197,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,255,228,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,78,208,249,252,252,193,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,86,242,252,252,252,252,163,16,15,24,164,164,59,15,15,15,15,0,0,0,0,0,0,0,0,0,0,86,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,93,223,242,252,252,252,252,252,252,252,253,252,252,252,229,177,177,177,63,29,0,0,0,0,0,0,0,0,123,252,252,252,252,252,252,252,246,222,223,99,74,74,52,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,125,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,41,14,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,241,224,59,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,79,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,198,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,142,233,253,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,210,253,254,251,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,216,253,225,254,187,0,0,0,6,141,148,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,247,253,167,36,154,64,0,0,0,158,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,88,244,253,157,7,0,18,0,0,0,0,207,253,123,7,0,0,0,0,0,0,0,0,0,0,0,0,85,247,253,161,3,0,0,0,0,0,0,34,239,253,9,0,0,0,0,0,0,0,0,0,0,0,0,87,250,253,123,3,0,0,0,0,0,0,0,193,253,171,1,0,0,0,0,0,0,0,0,0,0,0,33,245,253,122,7,0,0,0,0,0,5,28,9,237,253,88,0,0,0,0,0,0,0,0,0,0,0,0,108,253,197,5,42,95,95,139,188,188,197,250,207,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,191,254,254,254,254,254,254,254,254,255,244,190,254,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,246,215,215,215,135,87,28,24,59,253,246,69,46,0,0,0,0,0,0,0,0,0,0,0,0,9,56,56,46,0,0,0,0,0,0,2,179,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,230,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,251,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,238,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,250,244,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,219,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,155,253,255,231,149,56,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,242,167,85,44,68,150,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,89,5,0,0,0,0,16,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,190,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,215,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,153,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,111,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,250,84,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,179,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,206,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,250,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,125,221,254,255,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,253,253,253,238,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,86,19,19,42,149,216,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,251,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,238,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,233,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,232,253,234,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,156,253,219,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,90,176,73,46,46,156,253,223,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,90,243,253,253,253,253,253,253,253,110,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,191,253,253,253,253,253,253,253,253,253,253,178,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,253,253,253,253,253,253,253,243,146,12,0,0,0,0,0,0,0,0,0,0,0,80,248,253,253,253,253,253,238,200,104,104,127,237,253,253,253,195,80,0,0,0,0,0,0,0,0,0,7,248,253,253,253,253,249,132,23,0,0,0,0,17,127,248,253,253,247,0,0,0,0,0,0,0,0,0,122,253,253,253,253,247,97,0,0,0,0,0,0,0,0,86,247,253,247,0,0,0,0,0,0,0,0,0,0,181,253,199,123,16,0,0,0,0,0,0,0,0,0,0,10,123,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,49,116,116,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,191,253,254,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,70,136,254,254,254,254,210,184,151,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,235,253,253,241,206,164,48,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,125,254,232,230,162,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,199,253,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,245,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,245,253,236,53,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,201,254,253,253,253,254,211,90,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,161,160,160,128,152,253,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,237,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,114,42,0,0,0,5,47,178,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,249,174,116,116,161,253,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,245,253,253,254,253,253,253,228,160,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,185,255,254,197,151,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,23,23,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,194,255,163,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,254,253,241,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,254,253,253,226,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,95,139,232,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,138,241,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,248,254,253,253,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,253,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,255,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,173,246,253,253,232,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,241,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,71,0,0,120,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,241,34,95,239,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,254,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,253,253,254,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,200,253,253,253,133,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,178,253,179,104,141,141,141,141,91,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,253,252,252,252,253,252,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,252,253,252,252,252,253,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,252,178,28,28,78,103,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,51,0,0,0,104,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,227,0,0,0,51,253,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,90,0,0,0,187,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,214,28,0,26,150,237,253,227,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,88,0,0,0,108,253,253,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,187,252,252,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,252,252,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,104,253,254,253,231,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,101,252,252,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,252,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,255,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,252,99,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,241,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,128,128,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,191,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,192,255,218,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,253,252,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,252,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,253,253,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,222,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,210,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,241,252,167,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,191,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,147,254,254,255,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,228,253,253,253,253,240,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,224,253,253,253,253,253,253,204,146,146,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,253,253,253,253,253,253,253,253,250,44,0,0,0,0,0,0,0,0,0,0,0,0,15,156,226,253,253,253,253,253,253,219,217,253,253,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,253,240,115,14,7,115,148,253,253,199,0,0,0,0,0,0,0,0,0,0,16,174,253,253,253,224,149,14,14,13,0,0,0,0,4,167,253,250,94,0,0,0,0,0,0,0,0,0,66,253,253,253,151,46,0,0,0,0,0,0,0,0,0,162,253,253,99,0,0,0,0,0,0,0,0,0,200,253,253,153,56,0,0,0,0,0,0,0,0,0,0,162,253,253,99,0,0,0,0,0,0,0,0,92,248,253,225,42,0,0,0,0,0,0,0,0,0,0,57,245,253,236,69,0,0,0,0,0,0,0,0,208,253,253,160,0,0,0,0,0,0,0,0,0,0,11,173,253,253,185,0,0,0,0,0,0,0,0,0,254,253,253,160,0,0,0,0,0,0,0,0,0,0,116,253,253,253,45,0,0,0,0,0,0,0,0,0,255,253,253,160,0,0,0,0,0,0,0,0,0,5,153,253,253,223,33,0,0,0,0,0,0,0,0,0,255,253,253,160,0,0,0,0,0,0,0,0,47,175,253,253,238,48,0,0,0,0,0,0,0,0,0,0,184,253,253,203,99,0,0,0,0,0,0,0,140,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,76,240,253,253,247,98,0,0,0,19,76,216,249,253,253,238,69,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,253,203,162,162,162,190,253,253,253,253,249,92,0,0,0,0,0,0,0,0,0,0,0,0,0,27,207,253,253,253,253,253,253,253,253,253,253,246,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,102,240,253,253,253,253,253,248,199,156,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,99,150,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,34,34,68,192,241,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,237,253,253,253,253,254,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,253,253,254,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,250,253,253,250,241,134,232,247,253,253,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,253,253,251,116,39,0,0,91,244,253,253,146,5,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,69,0,0,0,0,0,171,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,62,250,253,253,172,2,0,0,0,0,0,96,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,67,253,230,136,65,0,0,0,0,0,0,0,224,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,18,157,84,0,0,0,0,0,0,0,0,0,133,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,230,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,201,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,238,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,67,132,216,255,66,0,0,0,0,0,0,0,0,0,0,0,12,73,38,70,77,38,38,98,132,205,226,241,254,254,231,125,8,0,0,0,0,0,0,0,0,0,0,0,76,254,254,254,254,254,254,254,254,254,251,244,167,84,23,0,0,0,0,0,0,0,0,0,0,0,0,0,25,171,212,254,254,254,254,207,129,85,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,226,254,187,67,18,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,47,226,252,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,207,254,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,227,254,254,237,217,126,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,159,159,201,254,254,222,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,200,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,221,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,247,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,127,0,7,151,251,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,190,246,111,75,193,254,254,149,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,252,241,254,241,194,76,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,243,254,225,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,119,163,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,194,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,121,0,0,0,0,92,196,253,253,237,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,222,253,33,0,0,86,212,254,253,198,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,217,253,253,33,0,59,238,253,254,201,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,157,254,254,254,228,0,16,228,254,254,208,45,0,0,0,0,0,0,0,0,0,0,0,0,0,28,132,242,254,253,253,210,63,0,158,253,253,233,72,0,0,0,0,0,0,0,0,0,0,0,0,0,86,222,253,253,254,245,158,8,0,186,250,253,253,142,59,0,0,0,0,0,0,0,0,0,0,0,0,64,249,253,253,253,209,49,0,2,116,254,253,253,253,253,238,60,0,0,0,0,0,0,0,0,0,0,0,195,253,253,214,194,92,111,181,186,253,254,253,253,253,253,254,218,13,0,0,0,0,0,0,0,0,0,0,196,254,254,254,254,255,254,254,254,254,255,254,243,201,59,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,254,253,253,253,253,238,128,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,120,204,216,184,127,212,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,249,253,251,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,255,254,243,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,233,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,247,253,204,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,88,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,142,239,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,101,162,250,254,245,174,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,86,195,254,252,210,104,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,92,223,254,245,197,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,0,4,90,210,254,250,169,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,239,15,175,254,232,186,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,236,66,156,203,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,236,222,11,2,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,220,254,162,79,65,65,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,239,254,254,254,254,246,142,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,61,61,61,117,200,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,6,0,0,0,0,19,198,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,131,37,0,0,0,0,0,62,254,212,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,120,0,0,0,0,0,0,144,254,223,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,146,0,0,0,3,128,190,253,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,238,175,175,192,252,254,242,205,42,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,230,254,255,254,208,172,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,26,26,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,247,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,219,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,223,222,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,224,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,227,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,146,254,254,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,230,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,254,239,50,19,69,69,69,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,254,254,254,154,166,214,254,254,254,234,150,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,241,189,254,254,254,254,254,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,16,237,254,254,211,154,254,254,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,254,141,243,254,254,229,161,191,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,254,179,254,254,199,49,136,234,254,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,254,254,254,254,249,237,254,254,254,254,213,14,0,0,0,0,0,0,0,0,0,0,0,0,0,11,208,254,254,254,254,254,254,254,254,254,254,213,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,254,254,254,254,254,217,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,82,130,151,255,254,224,130,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,61,148,156,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,112,242,253,252,252,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,226,252,252,214,126,29,123,252,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,232,252,210,101,0,0,0,64,252,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,235,14,0,0,0,0,108,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,204,53,0,0,0,0,39,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,29,213,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,210,83,127,127,171,213,252,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,252,252,252,252,253,252,252,252,226,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,209,252,252,252,252,253,252,252,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,115,211,247,255,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,252,250,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,232,252,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,183,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,252,252,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,252,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,253,231,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,235,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,150,150,79,44,31,47,47,90,107,150,150,182,255,227,64,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,253,250,234,253,253,253,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,166,244,253,253,253,253,253,253,253,253,253,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,50,162,194,253,253,218,170,170,170,170,73,125,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,20,12,0,0,0,0,0,79,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,215,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,180,253,253,152,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,216,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,241,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,72,252,253,250,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,182,253,253,166,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,227,218,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,246,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,175,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,99,175,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,160,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,150,251,251,204,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,202,255,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,190,251,253,251,230,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,251,251,253,251,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,188,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,241,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,234,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,221,251,251,251,232,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,211,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,159,251,251,251,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,173,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,252,252,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,165,253,252,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,242,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,255,106,0,0,0,0,0,0,76,113,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,252,215,18,0,0,0,0,29,194,243,252,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,110,0,0,0,0,0,117,252,252,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,13,228,252,252,252,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,191,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,63,0,0,0,0,255,253,253,253,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,241,100,85,85,85,253,252,252,252,252,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,253,252,252,252,252,253,252,252,252,252,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,239,253,252,252,252,252,253,242,223,129,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,252,252,190,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,55,138,138,139,138,222,201,253,191,138,55,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,253,252,252,252,252,253,252,252,211,137,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,253,252,252,252,252,253,252,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,168,161,87,45,45,98,46,67,227,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,3,22,75,22,2,0,0,0,0,0,0,43,246,252,200,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,212,253,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,151,253,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,70,188,252,253,252,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,253,252,219,165,93,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,253,252,252,252,252,251,157,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,189,230,188,116,64,189,230,230,241,255,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,159,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,7,186,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,43,189,21,0,0,0,0,0,0,0,0,0,161,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,168,241,42,0,0,0,0,0,0,0,0,22,244,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,159,17,0,0,0,0,0,9,76,202,253,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,227,67,5,0,9,78,194,252,253,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,252,190,185,197,252,252,252,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,252,252,252,253,252,252,252,168,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,221,252,252,253,252,221,43,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,79,155,155,155,226,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,66,187,210,246,252,244,244,195,222,247,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,78,230,254,254,190,148,69,0,0,42,228,194,0,0,0,0,0,0,0,0,0,0,0,0,0,39,167,244,255,240,163,35,1,0,0,2,88,224,132,16,0,0,0,0,0,0,0,0,0,0,0,17,119,227,249,179,89,22,0,0,0,0,18,164,234,123,0,0,0,0,0,0,0,0,0,0,0,0,0,49,220,125,76,0,0,0,0,0,0,68,236,178,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,144,239,107,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,222,211,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,168,251,144,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192,238,95,40,51,131,213,250,250,250,250,197,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,238,205,243,252,249,186,149,149,149,149,242,251,132,2,0,0,0,0,0,0,0,0,0,0,0,0,115,255,211,194,157,39,0,0,0,0,0,0,0,34,249,55,0,0,0,0,0,0,0,0,0,0,0,0,12,40,11,0,0,0,0,0,0,0,0,0,0,0,245,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,239,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,236,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,238,139,3,0,0,0,0,0,0,0,0,0,0,16,13,0,0,0,0,0,0,0,0,0,16,103,184,192,64,0,0,0,0,0,0,0,0,0,0,0,0,111,187,84,0,0,0,0,0,0,73,153,219,230,116,19,0,0,0,0,0,0,0,0,0,0,0,0,0,8,186,254,245,245,172,161,245,245,253,226,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,63,154,166,181,154,154,154,74,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,255,115,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,198,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,198,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,231,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,205,253,253,226,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,223,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,255,217,125,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,253,250,147,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,224,229,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,209,167,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,167,253,237,253,253,224,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,75,168,232,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,253,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,236,253,244,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,169,123,84,169,236,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,200,253,253,253,253,253,253,246,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,228,253,253,253,253,253,253,231,63,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,244,251,253,253,253,253,253,253,181,63,7,0,2,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,97,110,110,110,143,240,250,253,253,182,143,152,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,248,253,253,253,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,143,253,186,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,191,122,121,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,193,253,253,254,253,242,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,121,97,160,249,253,189,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,118,17,0,0,128,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,20,0,0,0,23,197,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,68,0,0,0,81,245,253,142,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,103,240,245,201,201,201,254,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,222,253,253,245,234,253,253,254,253,203,64,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,125,116,224,253,253,255,253,253,253,190,76,41,15,0,0,0,0,0,0,0,0,0,0,0,0,133,249,253,185,224,253,252,226,94,220,226,235,246,241,226,153,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,252,156,0,0,0,0,34,78,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,232,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,116,234,234,234,234,234,208,97,97,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,222,253,253,253,253,253,253,253,253,253,234,213,70,0,0,0,0,0,0,0,0,0,0,0,0,26,108,244,253,253,253,253,253,223,253,253,253,253,253,253,233,159,47,0,0,0,0,0,0,0,0,0,0,118,253,253,253,248,211,82,82,38,203,253,253,253,253,253,253,253,240,65,0,0,0,0,0,0,0,0,0,199,253,253,220,89,0,0,0,0,28,213,253,253,253,253,253,253,253,177,0,0,0,0,0,0,0,0,0,254,253,253,198,0,0,0,0,0,0,186,253,253,253,253,253,253,253,243,60,0,0,0,0,0,0,0,0,254,253,253,198,0,0,0,0,0,0,31,215,253,199,13,221,253,253,253,175,0,0,0,0,0,0,0,0,206,253,253,198,0,0,0,0,0,0,0,107,90,84,0,68,234,253,253,253,0,0,0,0,0,0,0,0,118,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,0,0,0,0,0,0,0,0,118,253,253,238,60,0,0,0,0,0,0,0,0,0,0,0,199,253,253,227,0,0,0,0,0,0,0,0,105,251,253,253,174,12,0,0,0,0,0,0,0,0,0,9,205,253,253,116,0,0,0,0,0,0,0,0,0,230,253,253,253,103,0,0,0,0,0,0,0,0,0,87,253,253,253,116,0,0,0,0,0,0,0,0,0,97,253,253,253,169,0,0,0,0,0,0,0,0,0,220,253,253,243,60,0,0,0,0,0,0,0,0,0,5,215,253,253,252,241,107,67,0,0,0,3,104,159,252,253,253,176,0,0,0,0,0,0,0,0,0,0,0,70,233,253,253,253,253,241,220,220,220,221,253,253,253,253,240,65,0,0,0,0,0,0,0,0,0,0,0,0,71,233,253,253,253,253,253,253,253,253,253,253,253,204,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,156,212,252,253,253,253,253,253,253,253,98,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,96,132,206,170,96,96,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,73,163,247,254,254,254,255,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,139,225,253,253,218,179,108,108,43,18,50,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,247,145,62,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,241,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,214,242,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,146,254,254,106,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,173,254,243,157,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,171,235,237,152,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,131,248,238,96,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,221,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,242,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,204,252,127,0,0,0,0,0,0,0,0,0,0,0,0,19,37,24,0,0,0,0,0,37,56,128,198,243,243,145,18,0,0,0,0,0,0,0,0,0,0,0,0,198,253,233,200,199,199,199,199,254,253,253,232,112,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,143,162,254,253,240,162,162,163,142,72,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,128,128,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,128,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,128,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,255,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,127,200,237,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,251,253,253,188,160,25,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,189,193,226,253,253,253,241,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,209,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,159,253,253,253,253,118,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,164,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,220,253,253,253,253,253,242,231,231,231,189,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,52,221,253,253,253,253,253,253,253,253,253,253,202,177,177,79,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,253,178,253,253,140,141,253,253,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,215,20,30,30,3,3,30,30,179,253,253,252,224,83,0,0,0,0,0,0,0,0,0,34,218,253,253,253,115,0,0,0,0,0,0,0,169,253,253,253,180,66,0,0,0,0,0,0,0,0,0,0,200,253,253,253,115,0,0,0,0,0,0,0,169,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,69,253,253,253,233,12,0,0,0,0,0,98,241,253,253,246,22,0,0,0,0,0,0,0,0,0,0,0,17,185,253,253,253,22,8,8,8,8,84,242,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,253,253,253,253,253,253,253,253,253,253,227,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,162,229,253,253,253,253,253,253,220,217,199,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,99,118,173,99,99,99,39,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,245,254,254,195,144,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,253,253,253,254,253,234,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,248,113,46,71,154,249,202,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,223,17,0,0,0,107,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,254,129,0,0,0,0,185,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,253,234,47,0,0,0,184,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,253,253,149,11,28,240,108,125,207,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,253,254,173,165,253,254,236,119,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,210,254,254,254,254,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,220,253,253,253,155,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,149,254,248,240,253,254,177,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,254,73,40,194,254,253,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,102,0,0,0,170,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,248,106,0,0,0,0,7,148,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,230,0,0,0,0,0,0,59,249,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,230,0,0,0,0,0,0,68,240,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,245,128,0,0,0,26,128,245,254,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,182,253,253,231,230,230,239,254,253,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,224,253,254,253,253,253,254,215,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,160,161,228,160,160,69,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,57,182,251,147,110,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,254,254,254,220,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,237,254,249,151,140,224,252,248,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,128,0,0,0,0,51,200,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,63,0,0,0,0,0,0,82,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,181,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,88,216,254,254,16,58,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,238,254,254,254,254,235,248,247,164,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,251,212,211,223,236,254,254,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,223,106,12,12,23,36,96,172,254,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,16,11,0,0,0,0,0,0,25,248,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,245,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,234,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,217,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,195,254,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,24,0,0,0,0,25,104,231,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,251,197,141,56,98,251,254,254,254,241,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,254,254,254,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,38,190,254,254,245,146,146,42,38,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,213,253,252,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,214,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,191,252,164,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,200,253,189,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,246,241,47,0,126,198,172,85,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,241,72,200,249,253,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,254,253,253,228,242,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,253,252,170,9,116,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,252,252,253,233,88,38,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,246,225,237,253,252,164,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,255,253,253,253,254,253,253,253,254,222,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,252,252,253,252,252,252,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,253,252,224,118,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,215,252,252,140,65,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,254,254,255,240,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,160,215,233,253,254,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,128,254,237,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,224,217,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,202,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,218,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,123,123,88,123,123,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,102,188,250,253,253,254,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,254,254,254,188,153,115,95,95,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,246,253,253,213,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,219,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,221,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,254,172,152,152,113,152,51,92,152,152,82,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,172,252,253,252,253,252,253,252,253,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,102,102,214,253,244,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,233,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,254,252,150,150,92,47,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,153,253,253,253,253,253,253,224,197,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,12,114,196,223,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,228,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,170,253,253,250,195,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,176,176,224,253,253,198,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,253,253,250,197,75,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,214,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,67,234,253,238,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,234,253,236,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,251,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,7,0,0,0,0,0,51,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,166,64,0,0,0,0,216,253,245,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,250,251,192,72,135,218,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,247,253,253,253,253,253,174,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,175,253,253,170,48,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,62,232,254,255,255,243,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,76,159,248,253,253,253,253,253,253,253,151,34,0,0,0,0,0,0,0,0,0,0,0,0,1,24,148,223,253,253,251,248,162,139,139,139,197,252,253,208,2,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,227,173,52,0,0,0,0,0,0,173,253,253,75,0,0,0,0,0,0,0,0,0,0,25,232,253,253,164,25,0,0,0,0,0,0,0,90,233,253,194,19,0,0,0,0,0,0,0,0,0,0,8,221,253,253,237,53,3,0,0,0,1,37,161,252,251,152,14,0,0,0,0,0,0,0,0,0,0,0,0,46,213,253,253,253,179,58,39,39,113,253,253,227,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,139,245,253,253,253,241,241,253,253,220,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,88,218,253,253,253,253,253,245,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,168,253,253,171,151,253,253,244,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,192,253,248,138,12,22,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,209,70,0,0,31,253,253,251,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,245,253,96,0,0,0,130,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,194,253,214,12,0,0,0,171,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,101,0,0,0,61,246,253,243,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,253,170,0,0,0,154,253,253,197,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,200,253,205,0,0,90,245,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,166,148,252,253,251,124,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,235,253,253,253,253,198,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,154,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,158,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,237,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,154,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,234,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,247,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,154,253,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,190,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,194,43,0,0,0,0,0,53,101,101,175,255,255,184,101,199,254,222,40,0,0,0,0,0,0,0,0,222,253,223,200,200,200,200,200,228,253,253,253,253,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,222,42,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,168,160,160,186,253,253,253,253,253,49,0,0,0,0,0,0,0,0,0,24,89,214,228,224,214,162,61,61,6,0,0,94,253,253,253,228,148,11,0,0,0,0,0,0,0,0,0,0,0,0,42,28,0,0,0,0,0,0,68,240,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,246,253,253,253,195,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,145,253,253,253,168,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,245,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,232,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,246,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,247,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,236,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,173,253,234,152,152,112,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,253,252,50,212,253,252,203,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,233,123,0,0,41,163,223,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,151,0,0,0,0,0,20,172,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,151,0,0,0,0,0,0,132,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,232,41,0,0,0,0,123,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,214,31,0,82,214,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,232,203,243,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,253,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,253,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,62,146,146,218,255,243,146,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,143,184,218,253,253,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,155,253,253,251,250,248,248,248,250,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,249,253,220,61,44,0,0,0,117,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,151,15,0,0,0,7,153,241,253,253,142,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,97,223,253,253,236,107,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,154,253,253,253,242,163,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,154,240,253,253,253,246,82,71,87,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,242,253,253,253,253,253,252,233,250,253,248,233,58,0,0,0,0,0,0,0,0,0,0,0,0,0,28,230,253,253,253,253,253,253,253,253,253,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,28,230,253,253,253,208,161,161,152,54,54,75,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,67,57,16,8,0,0,0,0,9,185,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,180,253,253,229,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,237,253,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,120,244,253,253,243,157,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,204,253,253,253,210,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,124,244,253,253,216,96,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,148,249,253,253,237,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,223,253,250,162,75,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,235,145,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,180,254,254,255,88,6,83,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,242,250,163,128,240,252,159,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,226,249,72,0,0,22,254,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,104,0,0,0,0,90,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,41,0,0,0,0,9,254,250,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,232,20,0,0,0,0,9,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,222,10,0,0,0,0,9,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,41,0,0,0,0,78,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,115,0,0,0,75,249,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,180,252,129,83,107,249,223,206,245,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,167,253,254,249,140,0,152,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,74,29,0,0,99,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,243,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,248,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,239,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,251,153,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,142,238,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,24,254,162,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,120,172,231,253,233,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,194,253,230,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,237,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,233,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,117,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,25,25,65,42,25,2,0,0,49,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,222,253,253,253,253,253,104,35,0,157,253,198,23,0,0,0,0,0,0,0,0,0,0,0,0,0,17,222,244,205,113,125,205,226,253,250,169,222,244,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,205,0,0,0,0,31,129,254,253,253,216,18,0,21,61,6,0,0,0,0,0,0,0,0,0,0,18,215,89,0,0,0,0,0,35,254,253,253,253,211,194,214,144,6,0,0,0,0,0,0,0,0,0,0,119,211,29,0,0,0,33,86,223,254,204,111,185,253,253,143,7,0,0,0,0,0,0,0,0,0,0,0,100,253,206,28,75,137,232,253,253,198,15,0,7,36,36,7,0,0,0,0,0,0,0,0,0,0,0,0,14,212,253,237,248,253,253,154,87,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,213,253,253,155,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,161,209,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,129,247,254,254,254,85,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,42,207,254,247,185,129,205,109,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,143,22,0,0,31,163,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,238,60,3,0,0,74,220,178,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,99,0,0,0,97,222,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,197,3,0,0,227,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,153,254,168,9,113,170,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,235,254,222,244,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,177,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,255,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,211,122,240,225,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,36,0,60,204,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,107,0,0,0,70,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,189,4,0,0,0,3,184,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,75,0,0,0,0,0,104,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,47,0,0,0,0,0,104,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,216,130,57,15,0,30,201,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,149,207,254,254,226,218,236,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,122,159,229,254,121,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,108,232,255,183,105,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,159,248,253,253,253,253,253,246,156,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,253,253,250,209,241,249,253,253,253,241,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,235,220,157,37,0,0,24,143,215,253,253,253,195,7,0,0,0,0,0,0,0,0,0,0,0,0,0,3,37,15,0,0,0,0,0,0,7,92,240,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,39,231,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,118,253,253,253,210,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,113,217,253,253,253,242,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,233,233,233,233,252,253,253,253,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,253,253,253,253,253,105,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,161,161,161,161,161,222,253,253,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,20,65,0,0,0,0,0,0,0,0,11,16,27,203,253,253,183,0,0,0,0,0,0,0,0,0,9,138,243,138,0,0,0,0,0,0,0,0,0,0,0,66,253,253,183,0,0,0,0,0,0,0,0,0,80,253,207,20,0,0,0,0,0,0,0,0,0,0,11,184,253,253,141,0,0,0,0,0,0,0,0,0,250,253,139,0,0,0,0,0,0,0,0,0,0,11,144,253,253,250,67,0,0,0,0,0,0,0,0,0,227,253,167,0,0,0,0,0,0,0,0,0,44,184,253,253,253,147,0,0,0,0,0,0,0,0,0,0,146,253,250,42,0,0,0,0,0,0,0,97,202,253,253,253,168,21,0,0,0,0,0,0,0,0,0,0,35,231,253,251,214,136,33,33,132,164,249,253,253,253,224,86,1,0,0,0,0,0,0,0,0,0,0,0,0,23,124,225,253,253,253,253,253,253,253,253,237,213,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,145,150,253,170,138,61,145,44,29,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,125,125,192,125,125,125,125,125,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,255,254,254,254,254,251,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,165,143,143,223,254,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,63,110,4,0,0,63,254,254,241,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,239,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,246,238,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,225,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,192,254,170,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,238,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,238,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,242,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,242,240,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,231,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,179,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,187,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,242,248,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,242,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,72,0,0,0,0,0,0,0,0,9,203,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,230,0,0,0,0,0,0,0,0,93,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,245,44,0,0,0,0,0,0,0,119,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,240,31,0,0,0,0,0,0,5,197,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,253,113,0,0,0,0,0,0,0,66,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,254,219,13,0,0,0,0,0,0,0,116,253,118,0,0,0,0,0,0,0,0,0,0,0,0,89,237,254,255,237,153,70,0,0,0,0,0,13,187,254,34,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,254,253,253,253,147,5,0,0,0,130,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,239,213,137,171,254,194,38,0,41,224,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,69,25,0,0,0,128,245,246,184,229,253,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,191,254,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,140,254,227,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,97,218,164,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,11,0,0,8,16,2,20,169,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,218,176,176,206,237,182,254,254,254,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,248,254,254,254,254,254,254,202,79,164,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,155,171,216,156,148,58,5,0,156,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,223,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,20,149,254,242,125,118,119,42,118,24,0,0,0,0,0,0,0,0,0,0,37,24,73,79,177,176,176,248,254,254,254,254,254,254,254,254,254,242,71,0,0,0,0,0,0,0,0,236,244,241,252,254,255,254,254,217,214,215,248,254,179,117,118,110,87,207,222,0,0,0,0,0,0,0,0,217,254,254,254,254,194,155,88,5,0,0,57,155,72,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,148,148,148,104,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,252,243,111,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,250,152,126,152,231,253,252,181,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,115,0,0,0,0,156,252,252,170,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,7,77,244,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,189,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,225,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,39,43,43,43,11,0,0,0,0,0,0,0,107,255,63,0,0,0,0,0,0,0,0,0,0,0,15,164,247,252,252,253,205,94,85,50,0,0,0,0,106,253,63,0,0,0,0,0,0,0,0,0,0,0,34,226,251,231,231,232,238,252,252,244,233,153,74,22,119,253,107,0,0,0,0,0,0,0,0,0,0,0,174,252,160,0,0,0,28,84,170,252,253,252,252,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,165,252,126,0,0,0,0,0,11,42,147,182,252,252,252,253,142,53,71,150,0,0,0,0,0,0,0,0,36,243,245,67,0,0,0,0,0,0,0,0,57,218,253,255,253,253,253,174,0,0,0,0,0,0,0,0,0,155,252,237,102,0,0,0,0,0,0,0,136,252,252,81,168,168,98,11,0,0,0,0,0,0,0,0,0,7,170,245,252,233,153,127,127,127,128,206,251,212,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,189,253,252,252,252,252,253,252,194,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,77,147,147,147,147,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,135,147,147,200,186,147,147,122,39,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,197,254,254,254,254,254,254,254,254,254,254,217,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,249,249,151,140,140,88,32,32,41,140,229,254,246,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,161,253,219,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,105,222,254,249,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,88,95,196,242,254,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,254,254,254,254,254,254,171,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,200,200,200,200,228,254,254,245,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,80,197,254,190,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,245,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,220,29,0,0,0,0,0,0,0,0,0,0,0,0,0,17,133,22,0,0,0,0,0,0,0,0,6,189,254,155,0,0,0,0,0,0,0,0,0,0,0,0,62,198,192,13,0,0,0,0,0,0,0,0,0,174,254,222,0,0,0,0,0,0,0,0,0,0,0,0,115,211,0,0,0,0,0,0,0,0,0,0,0,174,254,222,0,0,0,0,0,0,0,0,0,0,0,0,115,229,71,0,0,0,0,0,0,0,0,0,12,207,254,178,0,0,0,0,0,0,0,0,0,0,0,0,51,184,253,152,75,33,31,7,33,33,59,141,246,254,241,6,0,0,0,0,0,0,0,0,0,0,0,0,0,32,206,254,254,254,250,195,254,254,254,254,254,206,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,89,213,254,254,254,254,254,254,213,134,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,214,253,244,203,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,163,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,223,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,232,253,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,253,193,112,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,253,252,253,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,253,254,253,254,253,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,193,252,253,252,233,111,91,50,213,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,253,41,0,0,0,21,223,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,192,70,0,0,0,0,41,243,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,253,72,10,0,0,0,21,214,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,252,213,30,0,0,62,203,253,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,255,253,234,71,153,152,254,253,234,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,253,252,253,252,253,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,255,253,254,253,254,253,203,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,151,232,253,252,151,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,6,13,58,58,61,111,111,111,111,111,111,111,68,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,254,254,254,254,254,214,215,204,204,204,227,223,0,0,0,0,0,0,0,0,0,0,0,144,27,92,65,55,55,28,3,3,3,1,1,0,0,0,37,42,0,0,0,0,0,0,0,0,0,0,51,246,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,249,184,128,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,215,140,195,246,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,20,70,11,0,0,70,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,73,2,0,0,1,24,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,232,239,205,205,206,254,209,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,55,95,111,88,48,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,121,122,121,121,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,192,242,253,254,253,253,249,241,241,220,108,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,232,253,253,253,254,253,253,253,253,253,253,229,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,254,253,253,253,253,253,253,249,132,0,0,0,0,0,0,0,0,0,0,0,0,0,89,240,253,253,253,253,254,253,253,232,186,186,232,253,250,95,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,250,199,254,230,150,45,0,0,76,253,253,147,0,0,0,0,0,0,0,0,0,0,0,56,237,253,253,249,131,93,235,53,0,0,0,0,41,253,253,253,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,141,0,49,49,0,0,0,0,0,41,253,253,168,0,0,0,0,0,0,0,0,0,0,55,237,253,253,230,132,62,0,0,0,0,0,0,0,41,253,253,120,0,0,0,0,0,0,0,0,0,0,94,253,253,253,163,195,50,0,0,0,0,0,0,0,112,253,253,120,0,0,0,0,0,0,0,0,0,0,95,254,254,254,80,72,0,0,0,0,0,0,0,0,175,255,248,64,0,0,0,0,0,0,0,0,0,0,221,253,253,202,4,0,0,0,0,0,0,0,0,108,249,253,183,0,0,0,0,0,0,0,0,0,0,0,228,253,253,199,0,0,0,0,0,0,0,0,25,212,253,253,107,0,0,0,0,0,0,0,0,0,0,204,249,253,253,199,0,0,0,0,0,0,0,26,197,253,253,245,73,0,0,0,0,0,0,0,0,0,68,180,211,253,253,214,21,0,0,0,0,0,25,197,253,253,221,47,0,0,0,0,0,0,0,0,0,0,137,4,94,253,253,253,187,20,0,0,26,111,212,253,253,213,98,0,0,0,0,0,0,0,0,0,0,0,0,0,30,205,253,253,253,203,174,174,213,253,253,253,243,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,220,253,253,253,253,253,255,253,253,188,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,205,249,253,253,253,255,253,191,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,120,120,120,121,120,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,183,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,60,226,252,246,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,252,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,173,252,252,252,212,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,230,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,231,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,252,252,209,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,228,253,252,249,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,228,252,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,231,252,252,252,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,252,252,249,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,145,248,252,252,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,252,252,252,156,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,252,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,230,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,243,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,116,223,167,82,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,253,254,253,245,148,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,161,244,253,253,253,254,253,253,253,193,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,253,253,253,253,253,219,251,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,251,119,12,34,137,248,253,248,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,253,238,42,0,0,0,0,197,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,228,253,253,243,80,0,0,0,7,230,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,229,253,253,251,132,13,11,195,253,253,232,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,253,253,253,232,227,253,253,248,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,202,253,253,254,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,255,254,254,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,227,253,253,254,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,116,249,253,253,253,134,175,253,253,235,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,147,253,253,253,230,83,0,32,244,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,213,46,0,0,0,236,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,219,11,0,0,0,89,244,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,181,27,60,114,202,251,253,253,224,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,253,253,253,254,253,253,249,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,253,253,253,253,253,254,247,192,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,165,165,171,250,165,138,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,64,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,255,255,255,255,64,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,128,255,255,255,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,128,255,255,0,0,0,0,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,79,202,255,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,172,227,253,253,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,101,223,253,241,162,214,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,109,216,253,253,172,69,0,182,238,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,159,243,253,232,142,20,1,0,0,182,233,0,112,59,0,0,0,0,0,0,0,0,0,0,0,11,107,216,253,249,113,13,0,0,0,0,52,232,203,77,243,196,0,0,0,0,0,0,0,0,0,0,6,177,253,241,105,29,0,0,0,0,0,0,141,253,196,244,253,141,0,0,0,0,0,0,0,0,0,0,161,253,253,234,63,63,63,63,63,145,166,166,248,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,253,253,252,248,231,227,253,253,245,117,6,0,0,0,0,0,0,0,0,0,0,0,0,151,201,191,98,98,98,98,78,0,9,205,253,237,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,201,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,165,253,222,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,165,253,239,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,242,237,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,245,242,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,231,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,197,253,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,220,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,146,200,255,229,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,254,254,254,254,251,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,183,116,185,254,218,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,248,178,11,0,12,121,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,11,0,0,0,59,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,250,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,220,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,218,12,0,0,0,0,65,167,200,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,247,254,145,0,0,23,87,171,253,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,61,52,140,233,254,254,254,254,173,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,254,254,209,248,254,254,254,254,213,56,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,250,254,254,254,254,247,196,125,62,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,233,148,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,255,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,216,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,166,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,253,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,238,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,238,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,253,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,217,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,211,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,32,57,172,252,244,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,229,252,252,252,181,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,199,253,202,116,40,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,190,117,241,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,215,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,252,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,150,237,253,202,78,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,150,247,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,70,156,234,252,163,0,0,26,32,131,82,107,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,252,223,197,197,222,229,252,252,252,210,66,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,252,202,253,252,252,252,253,252,252,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,48,241,255,253,253,253,254,146,225,225,163,113,150,238,254,153,7,0,0,0,0,0,0,0,0,0,0,0,160,252,253,227,228,252,209,65,0,0,0,0,0,163,253,164,19,0,0,0,0,0,0,0,0,0,0,0,197,252,253,252,252,115,25,0,0,0,0,45,197,222,244,81,0,0,0,0,0,0,0,0,0,0,0,51,246,252,253,202,28,15,0,0,0,0,126,231,252,202,75,0,0,0,0,0,0,0,0,0,0,0,0,26,223,253,255,203,7,0,79,35,172,253,239,88,137,63,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,253,252,187,169,253,196,196,240,156,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,106,168,216,252,252,252,253,252,252,214,156,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,252,153,252,127,15,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,255,253,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,144,236,251,251,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,217,253,251,251,251,251,253,251,251,236,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,129,251,251,253,251,251,251,251,253,251,251,251,148,0,0,0,0,0,0,0,0,0,0,0,0,0,53,221,251,251,251,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,32,202,255,253,253,253,253,255,211,154,0,0,255,253,253,253,201,0,0,0,0,0,0,0,0,0,0,21,190,251,253,251,251,251,251,211,46,0,0,0,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,192,251,251,253,251,246,137,35,25,0,0,0,0,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,217,251,251,253,188,123,0,0,0,0,0,0,0,175,251,251,251,71,0,0,0,0,0,0,0,0,0,105,241,251,251,253,107,0,0,0,0,0,0,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,0,145,253,253,253,182,0,0,0,0,0,0,0,0,0,73,253,253,253,72,0,0,0,0,0,0,0,0,42,206,251,251,251,77,0,0,0,0,0,0,0,0,0,176,251,251,251,71,0,0,0,0,0,0,0,0,99,251,251,251,251,0,0,0,0,0,0,0,0,0,0,253,251,251,251,71,0,0,0,0,0,0,0,0,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,253,251,251,204,41,0,0,0,0,0,0,0,0,124,251,251,251,251,130,0,0,0,0,0,0,27,180,180,253,251,251,142,0,0,0,0,0,0,0,0,0,0,105,243,253,253,255,253,253,175,73,73,73,99,253,253,255,253,242,103,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,251,251,251,251,253,251,251,251,251,253,251,112,0,0,0,0,0,0,0,0,0,0,0,0,56,215,241,253,251,251,251,251,253,251,251,251,251,216,112,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,71,97,251,251,201,71,71,71,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,255,221,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,163,252,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,165,214,253,253,253,160,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,93,204,253,253,253,253,160,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,106,172,245,253,253,253,253,253,164,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,33,212,253,253,253,253,253,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,253,253,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,214,106,6,167,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,207,105,17,0,0,165,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,165,47,23,0,0,0,14,189,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,253,252,158,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,0,0,7,148,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,125,222,253,246,125,125,240,253,253,240,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,235,253,253,253,253,253,253,253,253,253,237,101,0,0,0,82,104,104,48,0,0,0,0,0,0,0,0,237,253,253,253,253,253,253,253,253,253,253,253,252,220,220,220,246,253,253,235,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,219,253,253,253,253,253,253,253,253,253,219,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,153,75,34,75,75,153,212,212,212,104,75,75,34,0,0,0,0,0,0,0,0,243,253,253,253,250,225,96,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,116,116,116,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,128,253,255,127,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,128,241,252,252,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,197,252,252,197,158,204,252,193,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,216,252,252,117,17,0,121,252,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,244,252,238,164,20,0,0,155,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,238,87,0,0,0,0,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,230,252,94,0,0,0,0,0,161,252,111,173,173,45,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,252,143,7,0,0,0,15,204,252,252,243,120,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,252,252,174,126,14,21,202,253,239,189,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,252,252,252,252,252,252,190,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,253,253,253,253,253,255,253,133,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,190,252,252,252,252,253,252,252,248,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,245,252,109,26,26,159,158,242,252,252,233,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,218,15,0,0,0,0,35,82,235,252,246,121,0,0,0,0,0,0,0,0,0,0,0,0,0,64,241,238,86,0,0,0,0,0,0,0,77,235,252,232,28,0,0,0,0,0,0,0,0,0,0,0,0,81,252,198,0,0,0,0,0,0,0,0,0,186,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,81,252,207,13,0,0,0,0,0,15,83,173,231,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,72,246,252,188,160,160,160,161,160,194,252,252,252,212,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,248,252,252,252,252,253,252,252,248,238,140,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,119,119,126,181,120,119,119,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,219,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,208,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,218,231,50,0,156,249,233,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,19,134,250,230,52,0,0,164,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,150,45,190,195,20,0,0,0,164,254,254,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,83,154,127,188,112,24,0,0,0,0,117,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,45,230,79,216,77,8,0,0,0,0,0,33,254,254,254,248,0,0,0,0,0,0,0,0,0,0,0,35,223,250,215,137,8,0,0,0,0,0,0,33,254,254,254,248,0,0,0,0,0,0,0,0,0,0,71,182,254,254,144,8,0,0,0,0,0,0,0,33,254,254,254,248,0,0,0,0,0,0,0,0,0,0,88,185,227,172,8,0,0,0,0,0,0,0,0,33,254,254,254,248,0,0,0,0,0,0,0,0,0,65,219,221,204,47,0,0,0,0,0,0,0,0,0,33,254,254,254,248,0,0,0,0,0,0,0,0,0,91,253,254,149,0,0,0,0,0,0,0,0,0,0,33,254,254,254,248,0,0,0,0,0,0,0,0,0,125,187,254,149,0,0,0,0,0,0,0,0,0,0,57,255,254,254,248,0,0,0,0,0,0,0,0,0,125,254,254,149,0,0,0,0,0,0,0,0,0,0,164,254,254,254,160,0,0,0,0,0,0,0,0,0,125,254,254,163,21,0,0,0,0,0,0,0,0,23,175,254,254,229,42,0,0,0,0,0,0,0,0,0,112,254,254,254,217,43,27,5,0,0,14,19,51,222,254,255,254,111,0,0,0,0,0,0,0,0,0,0,0,102,247,254,254,254,254,169,151,151,204,226,254,254,254,255,233,45,0,0,0,0,0,0,0,0,0,0,0,0,230,247,254,254,254,254,254,254,254,254,254,254,254,233,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,254,254,254,254,254,254,254,253,248,163,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,167,214,191,191,124,124,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,116,240,174,0,0,0,0,0,0,21,149,254,0,0,0,0,0,0,0,0,0,0,0,0,0,24,72,190,253,253,221,0,0,0,0,0,66,224,253,253,0,0,0,0,0,0,0,0,0,0,0,0,66,202,253,253,253,253,221,0,0,0,22,186,250,253,253,253,0,0,0,0,0,0,0,0,0,0,19,186,250,253,253,253,253,253,168,34,0,80,159,253,253,253,253,186,0,0,0,0,0,0,0,0,0,68,238,253,253,253,253,253,212,102,0,0,90,250,253,253,253,244,164,12,0,0,0,0,0,0,0,0,27,237,253,253,253,253,211,98,14,0,0,92,244,253,253,253,172,88,0,0,0,0,0,0,0,0,0,0,39,253,253,253,222,131,21,0,0,10,185,247,253,253,246,117,2,0,0,0,0,0,0,0,0,0,0,0,71,240,253,240,35,0,0,8,127,241,254,253,253,172,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,248,66,0,43,199,253,253,255,253,145,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,232,134,227,253,253,253,240,66,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,234,254,254,254,254,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,157,253,253,253,252,144,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,253,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,236,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,143,143,133,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,80,80,80,80,80,128,152,80,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,205,254,254,254,254,254,254,254,254,205,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,254,254,229,193,193,193,193,229,254,254,228,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,141,67,0,0,0,0,67,142,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,247,125,7,0,0,0,0,0,0,54,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,125,0,99,124,124,124,124,4,74,151,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,12,113,244,254,254,254,254,205,233,254,254,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,200,170,148,148,185,254,254,254,254,199,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,14,0,0,28,194,254,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,146,254,254,254,254,168,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,254,208,134,112,248,254,229,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,194,254,254,87,0,0,126,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,253,140,9,0,0,6,144,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,246,0,0,0,0,0,132,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,247,24,0,0,0,8,149,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,255,166,0,0,0,54,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,254,234,78,18,123,207,254,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,254,254,254,254,254,254,204,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,207,254,254,254,254,218,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,212,254,254,255,217,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,249,136,73,131,248,206,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,209,247,90,0,0,0,84,247,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,122,0,0,0,0,0,188,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,212,229,17,0,0,0,0,0,188,194,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,135,0,0,0,0,0,9,222,253,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,123,0,0,0,0,0,17,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,48,0,0,0,0,0,2,194,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,41,0,0,0,0,0,0,164,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,213,2,0,0,0,0,0,0,107,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,214,2,0,0,0,0,0,0,52,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,41,0,0,0,0,0,0,16,231,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,49,0,0,0,0,0,0,0,196,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,123,0,0,0,0,0,0,0,196,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,200,228,66,0,0,0,0,0,0,196,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,229,231,118,35,0,0,41,131,226,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,172,253,244,221,222,244,247,169,242,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,72,156,187,188,129,43,0,204,216,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,242,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,198,208,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,255,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,208,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,251,227,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,170,254,130,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,249,240,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,220,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,195,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,252,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,245,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,250,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,201,254,122,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,234,155,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,243,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,209,254,155,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,220,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,20,20,20,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,116,254,253,253,253,253,254,217,175,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,70,230,253,254,253,253,253,253,254,253,253,243,122,16,0,0,0,0,0,0,0,0,0,0,0,0,23,110,253,253,253,254,253,253,222,58,178,245,223,253,253,218,180,0,0,0,0,0,0,0,0,0,0,0,232,254,254,254,254,255,254,213,204,178,255,254,213,249,254,255,189,0,0,0,0,0,0,0,0,0,0,0,24,46,165,180,99,136,53,12,6,39,39,39,12,151,253,204,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,79,0,0,0,136,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,13,58,253,106,0,0,189,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,8,98,188,195,196,217,213,200,208,240,37,128,248,253,120,0,0,0,0,0,0,0,0,0,0,0,0,37,239,254,254,254,255,254,254,254,254,255,104,254,254,231,38,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,253,254,253,253,253,253,254,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,240,174,175,174,229,253,253,254,253,253,253,155,61,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,48,0,0,0,41,238,253,254,253,253,253,253,249,143,28,0,0,0,0,0,0,0,0,0,0,81,253,253,191,0,61,180,235,253,253,231,155,185,200,230,254,253,235,90,0,0,0,0,0,0,0,0,0,0,53,195,249,254,255,254,254,222,120,0,0,0,0,38,172,254,254,254,178,0,0,0,0,0,0,0,0,0,0,0,126,173,136,128,39,18,0,0,0,0,0,0,9,91,233,251,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,13,29,12,132,179,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,241,252,252,252,254,254,253,216,189,79,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,238,251,254,254,254,244,231,213,254,254,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,240,111,55,13,11,9,6,20,162,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,169,53,0,0,0,0,0,0,0,127,254,227,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,10,0,0,0,0,0,0,7,163,249,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,184,254,226,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,221,254,170,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,175,254,170,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,235,249,131,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,101,248,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,138,254,249,134,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,168,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,169,254,240,109,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,250,169,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,251,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,225,254,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,47,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,254,254,254,181,173,173,100,87,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,197,253,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,253,253,189,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,217,253,253,253,230,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,237,253,253,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,216,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,233,253,253,253,253,253,215,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,125,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,214,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,150,253,253,253,231,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,220,253,253,253,240,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,217,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,199,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,234,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,191,0,0,0,58,241,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,57,0,0,0,46,245,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,248,246,8,0,0,0,97,250,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,168,244,88,0,0,0,0,140,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,181,0,0,0,0,0,213,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,182,233,13,0,0,0,0,16,200,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,193,18,49,49,133,193,229,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,220,254,230,254,254,254,254,254,254,254,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,254,254,254,254,254,168,187,254,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,133,49,61,0,0,0,0,90,255,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,225,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,225,243,232,172,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,253,253,149,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,240,253,253,231,243,253,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,246,130,6,35,173,254,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,151,0,0,0,16,201,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,41,0,0,0,0,48,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,41,0,0,0,0,7,236,250,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,162,0,0,0,0,0,180,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,223,250,122,74,74,127,158,248,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,254,253,253,239,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,254,254,255,254,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,237,236,208,176,116,244,253,207,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,196,4,0,0,0,0,51,248,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,69,0,0,0,0,0,0,141,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,24,0,0,0,0,0,16,212,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,24,0,0,0,0,13,173,253,211,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,248,253,155,108,5,0,4,156,253,244,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,208,253,253,253,230,203,231,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,209,253,253,253,254,253,253,209,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,82,166,171,227,248,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,250,251,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,246,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,248,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,246,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,0,0,0,0,0,16,213,255,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,237,47,0,0,0,0,30,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,217,253,168,13,0,0,3,132,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,59,0,0,101,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,251,253,253,109,11,0,0,227,253,253,158,10,0,0,0,0,0,0,0,0,0,0,0,0,0,30,148,250,253,253,236,44,0,0,149,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,253,253,253,239,53,0,0,50,242,253,253,148,3,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,239,49,0,0,44,236,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,223,253,253,253,129,0,0,10,161,253,253,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,216,166,60,160,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,253,253,253,253,253,253,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,229,253,253,253,253,253,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,23,23,84,253,253,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,214,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,195,253,253,233,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,245,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,253,253,253,240,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,233,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,253,195,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,178,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,51,0,0,0,0,0,0,0,0,57,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,225,0,0,0,0,0,0,0,0,144,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,238,38,0,0,0,0,0,0,0,169,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,229,10,0,0,0,0,0,0,0,170,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,247,65,0,0,0,0,0,0,0,169,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,225,0,0,0,0,0,0,0,0,169,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,225,0,0,0,0,0,0,0,0,169,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,229,10,0,0,0,0,0,0,0,70,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,234,28,0,0,0,0,19,107,170,225,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,225,0,0,0,0,82,215,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,225,0,0,0,176,243,252,252,78,78,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,226,0,10,179,255,253,231,25,0,57,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,231,82,197,252,253,189,19,0,0,57,252,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,252,252,143,19,0,0,0,38,234,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,252,202,13,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,150,25,0,0,0,0,0,0,0,86,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,241,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,101,166,181,223,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,142,212,157,185,247,253,253,177,84,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,195,253,253,253,254,169,84,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,216,248,253,249,197,83,26,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,185,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,248,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,246,162,78,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,238,253,253,196,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,79,193,253,229,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,202,255,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,243,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,40,254,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,183,18,12,24,109,213,254,157,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,229,253,253,253,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,124,208,183,165,132,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,232,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,183,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,180,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,231,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,215,255,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,216,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,195,51,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,242,217,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,199,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,121,169,253,253,253,161,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,107,114,240,247,252,252,252,252,252,252,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,226,230,252,252,252,253,252,252,252,252,252,252,249,144,0,0,0,0,0,0,0,0,0,0,0,0,26,196,252,252,252,252,252,253,176,172,102,235,252,252,252,238,0,0,0,0,0,0,0,0,0,0,0,25,196,252,252,252,245,185,185,53,3,0,99,241,252,252,252,203,0,0,0,0,0,0,0,0,0,0,0,192,252,252,241,177,59,0,0,0,0,98,242,252,252,252,246,84,0,0,0,0,0,0,0,0,0,0,17,230,252,252,108,0,0,0,0,20,97,244,252,252,252,245,120,0,0,0,0,0,0,0,0,0,0,0,107,252,252,252,86,9,0,0,15,204,252,252,252,252,246,120,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,252,252,158,5,86,202,253,252,252,252,241,118,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,252,252,252,252,176,202,252,253,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,253,255,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,252,252,252,252,252,253,207,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,252,252,252,252,252,252,209,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,252,252,252,252,252,235,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,186,252,252,252,252,252,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,252,252,253,168,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,240,252,252,252,252,252,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,229,252,252,252,252,252,252,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,252,252,252,252,252,252,253,246,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,252,252,252,252,252,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,188,254,180,254,254,255,251,118,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,179,253,253,253,253,253,253,253,253,245,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,179,177,177,192,204,179,253,253,253,188,23,0,0,0,0,0,0,0,0,0,0,0,0,17,56,83,253,153,2,0,0,12,22,2,61,139,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,251,107,0,0,0,0,0,0,0,34,231,253,212,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,232,0,0,0,0,0,0,0,0,0,220,253,212,0,0,0,0,0,0,0,0,0,0,0,50,234,253,253,103,0,0,0,0,0,0,0,0,0,220,253,212,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,103,0,0,0,0,0,0,0,0,102,252,253,152,0,0,0,0,0,0,0,0,0,0,0,10,217,253,241,66,0,0,0,0,0,0,0,0,226,253,231,49,0,0,0,0,0,0,0,0,0,0,0,0,176,253,219,0,0,0,0,0,0,0,6,206,251,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,62,242,192,0,0,0,0,0,0,0,34,253,253,166,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,29,0,0,0,0,0,0,33,215,253,186,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,249,247,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,246,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,249,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,228,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,37,0,0,0,0,100,105,105,106,105,105,176,254,254,254,255,254,166,0,0,0,0,0,0,0,0,211,246,225,209,209,209,209,251,253,253,254,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,253,155,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,29,65,178,178,178,178,178,178,178,178,179,55,29,65,236,253,253,253,169,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,253,253,253,189,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,248,253,253,253,205,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,217,253,253,253,230,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,148,254,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,254,253,252,167,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,254,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,246,253,254,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,241,253,253,242,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,253,253,245,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,104,104,104,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,134,250,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,233,254,253,253,253,250,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,227,149,94,186,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,242,249,151,21,0,0,147,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,173,0,0,0,0,164,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,170,0,0,0,27,227,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,232,252,187,142,108,161,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,115,159,178,241,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,237,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,20,245,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,114,253,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,224,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,219,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,188,253,237,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,16,213,255,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,200,154,72,9,0,16,36,62,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,158,250,253,253,253,190,171,208,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,54,242,253,253,253,253,253,253,253,253,253,253,253,205,14,0,0,0,0,0,0,0,0,0,0,0,0,19,190,253,253,251,153,66,164,233,253,253,253,253,237,123,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,93,0,0,0,22,113,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,1,173,253,253,248,66,0,0,0,2,55,243,253,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,196,112,13,0,0,0,0,143,253,253,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,142,236,231,87,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,106,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,224,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,233,253,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,200,226,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,238,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,232,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,229,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,182,197,197,197,135,57,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,123,169,253,252,252,252,252,253,252,187,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,252,253,252,252,177,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,255,215,31,0,79,255,253,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,226,234,252,252,204,27,18,0,104,225,253,252,252,102,12,0,0,0,0,0,0,0,0,0,0,0,54,197,253,252,239,102,25,0,0,0,138,252,253,252,208,19,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,179,65,0,0,0,0,0,169,252,253,252,180,0,0,0,0,0,0,0,0,0,0,0,48,165,252,252,253,27,0,0,0,0,0,0,91,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,141,0,0,0,0,0,0,0,169,253,255,206,25,0,0,0,0,0,0,0,0,0,0,0,131,252,252,204,15,0,0,0,0,0,0,98,243,252,253,129,6,0,0,0,0,0,0,0,0,0,0,26,231,252,230,25,0,0,0,7,57,57,182,240,252,220,133,6,0,0,0,0,0,0,0,0,0,0,0,128,252,252,208,16,29,29,138,178,252,253,252,245,208,37,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,177,203,253,252,252,252,252,253,204,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,255,253,253,240,140,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,195,252,252,252,215,167,58,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,55,55,55,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,193,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,111,0,123,123,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,244,122,214,253,254,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,243,243,192,192,71,232,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,254,192,41,0,11,213,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,233,50,0,0,92,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,253,0,0,31,132,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,252,102,142,233,252,233,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,253,255,253,255,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,151,233,151,91,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,120,163,223,104,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,162,244,254,236,239,253,185,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,199,253,222,116,12,24,240,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,213,240,146,12,0,0,58,244,237,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,137,0,0,0,53,235,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,151,0,0,0,37,224,254,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,39,0,26,154,234,242,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,149,175,217,253,60,147,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,177,232,225,146,19,0,214,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,18,0,0,23,229,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,234,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,82,2,0,0,0,169,246,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,11,0,0,23,221,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,241,252,11,0,0,60,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,252,226,9,0,6,179,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,125,252,224,103,0,0,25,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,155,0,0,0,65,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,242,252,220,39,0,0,0,145,252,210,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,244,252,252,59,0,0,0,64,242,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,202,252,252,252,203,167,241,241,248,252,252,250,241,241,241,241,22,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,255,253,253,253,253,253,253,197,11,0,0,0,0,0,0,0,0,0,0,11,108,188,228,228,228,228,250,252,253,252,237,228,228,228,130,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,245,253,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,249,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,116,188,216,139,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,88,217,254,254,254,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,165,254,254,254,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,243,254,254,254,254,254,254,115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,238,254,218,249,240,237,172,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,255,154,0,35,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,226,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,142,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,158,254,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,187,254,215,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,175,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,138,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,225,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,194,252,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,34,120,246,254,254,147,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,149,189,223,254,254,254,211,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,237,254,254,255,244,203,72,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,171,146,84,60,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,222,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,193,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,218,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,203,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,249,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,225,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,249,253,45,0,0,0,52,141,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,181,4,0,8,132,254,254,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,244,45,0,0,172,253,230,182,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,168,0,0,87,254,230,44,115,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,122,0,102,251,237,44,0,177,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,59,0,208,253,133,0,52,247,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,28,73,250,242,0,38,203,249,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,119,131,253,186,78,227,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,250,241,253,253,254,250,145,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,242,253,253,253,237,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,78,206,233,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,112,112,112,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,166,236,253,254,254,254,249,236,134,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,158,156,156,106,73,156,186,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,10,162,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,243,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,254,239,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,207,254,175,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,205,254,217,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,94,246,254,254,78,40,40,40,40,40,40,40,40,17,0,0,21,0,0,0,0,0,0,0,0,0,0,128,254,254,254,254,254,254,254,254,254,254,254,254,254,201,164,164,211,0,0,0,0,0,0,0,0,0,154,250,254,254,254,241,246,242,228,228,228,228,228,245,255,241,254,254,241,0,0,0,0,0,0,0,0,0,230,235,235,184,104,51,72,54,0,0,0,0,0,67,104,51,104,104,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,34,130,144,144,144,144,144,144,197,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,190,253,253,254,253,253,253,253,230,182,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,186,231,253,253,253,254,184,154,154,82,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,246,253,253,250,149,25,11,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,149,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,239,188,87,78,78,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,253,253,253,253,222,221,221,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,111,111,111,164,221,221,221,241,254,254,255,182,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,77,121,251,253,227,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,219,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,223,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,3,0,0,0,0,21,122,231,253,251,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,176,54,45,45,93,211,253,253,220,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,253,253,254,253,145,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,71,196,253,253,253,129,33,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,165,254,254,254,133,0,0,0,0,0,42,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,243,253,253,251,54,0,7,109,209,210,242,211,71,0,0,0,0,0,0,0,0,0,0,0,0,0,34,137,214,253,253,121,128,164,224,253,253,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,6,179,253,253,253,253,227,253,252,233,196,253,254,253,250,50,0,0,0,0,0,0,0,0,0,0,0,0,93,246,253,253,253,253,253,236,90,0,18,232,253,253,182,16,0,0,0,0,0,0,0,0,0,0,0,121,229,251,253,253,230,126,83,19,0,48,218,247,253,253,111,6,0,0,0,0,0,0,0,0,0,8,184,244,253,253,253,119,17,0,0,0,11,231,253,253,253,149,3,0,0,0,0,0,0,0,0,0,31,223,253,253,253,237,42,1,0,0,0,0,164,253,253,253,165,10,0,0,0,0,0,0,0,0,0,0,169,253,253,253,225,101,0,0,0,0,2,119,244,253,254,224,75,0,0,0,0,0,0,0,0,0,0,0,87,245,253,202,34,0,0,0,0,0,162,253,253,253,209,3,0,0,0,0,0,0,0,0,0,0,0,0,0,41,49,7,0,0,0,0,0,82,244,253,253,225,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,213,253,253,226,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,206,253,253,244,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,216,253,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,191,253,253,249,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,237,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,253,253,253,253,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,222,253,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,253,253,253,231,33,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,153,153,153,153,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,202,216,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,251,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,223,219,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,199,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,74,0,0,0,0,199,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,130,254,211,0,0,0,0,199,254,225,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,211,0,0,0,0,199,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,211,0,0,0,0,172,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,211,0,0,0,0,75,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,177,0,0,0,0,55,241,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,87,0,0,0,0,0,206,254,188,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,224,17,0,58,82,115,206,245,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,248,212,212,242,254,254,254,254,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,254,232,161,64,106,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,254,237,154,128,23,0,0,82,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,24,20,0,0,0,0,0,82,255,255,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,228,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,19,0,0,0,0,0,51,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,204,190,85,85,85,85,172,246,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,252,253,252,252,252,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,255,253,253,228,226,225,235,253,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,9,0,0,110,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,79,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,252,253,252,252,252,169,169,169,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,252,253,252,252,252,253,252,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,139,139,139,53,252,252,202,28,28,28,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,178,152,226,242,176,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,169,236,254,254,254,254,254,177,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,193,254,254,254,254,254,254,254,254,151,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,243,254,254,254,254,254,254,254,254,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,254,254,254,254,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,254,254,254,254,254,254,254,254,254,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,190,254,254,254,254,254,254,254,254,254,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,222,254,254,197,113,185,254,254,254,254,192,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,66,91,1,0,213,254,254,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,249,254,254,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,6,72,156,122,108,41,0,37,245,254,254,254,254,214,5,0,0,0,0,0,0,0,0,0,0,0,0,0,78,255,254,254,254,252,184,229,254,254,254,254,254,88,5,5,5,14,58,2,0,0,0,0,0,0,0,0,226,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,135,0,0,0,0,0,0,0,0,232,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,252,0,0,0,0,0,0,0,0,166,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,252,107,0,0,0,0,0,0,0,0,166,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,248,173,87,0,0,0,0,0,0,0,0,0,86,253,254,254,254,254,254,254,254,254,254,254,235,228,172,88,41,0,0,0,0,0,0,0,0,0,0,0,0,82,151,151,151,151,151,151,151,105,62,62,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,64,128,128,191,128,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,64,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,64,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,128,128,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,191,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,233,255,252,252,252,252,252,106,23,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,46,214,250,252,250,250,250,250,250,250,250,82,4,0,0,0,0,0,0,0,0,0,0,0,0,0,38,185,250,250,250,252,250,250,250,250,250,250,250,250,21,0,0,0,0,0,0,0,0,0,0,0,34,92,179,250,250,250,250,244,158,158,158,200,250,250,250,250,21,0,0,0,0,0,0,0,0,0,0,32,164,250,250,250,250,250,145,125,0,0,0,63,135,209,250,250,127,0,0,0,0,0,0,0,0,0,0,69,250,250,250,250,250,136,10,0,0,0,0,0,0,160,250,250,250,0,0,0,0,0,0,0,0,0,0,69,250,250,250,250,250,44,0,0,0,0,0,0,0,160,250,250,250,0,0,0,0,0,0,0,0,0,34,202,250,250,250,250,116,12,0,0,0,0,0,0,0,160,250,250,250,0,0,0,0,0,0,0,0,0,46,250,250,250,250,118,12,0,0,0,0,0,0,0,0,160,250,250,250,0,0,0,0,0,0,0,0,22,233,250,250,250,124,8,0,0,0,0,0,0,0,0,127,242,250,250,250,0,0,0,0,0,0,0,0,45,252,252,252,252,114,0,0,0,0,0,0,0,9,128,252,252,252,252,21,0,0,0,0,0,0,0,0,252,250,250,250,250,113,0,0,0,0,0,0,0,92,250,250,250,250,250,21,0,0,0,0,0,0,0,0,252,250,250,250,250,113,0,0,0,0,0,0,19,135,250,250,250,250,193,15,0,0,0,0,0,0,0,0,252,250,250,250,250,113,0,0,0,0,9,92,135,250,250,250,250,182,28,0,0,0,0,0,0,0,0,0,252,250,250,250,250,113,0,0,95,115,128,250,250,250,250,250,176,37,0,0,0,0,0,0,0,0,0,0,127,250,250,250,250,188,137,137,230,250,252,250,250,250,187,113,41,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,250,250,250,250,252,250,250,191,49,0,0,0,0,0,0,0,0,0,0,0,0,0,7,101,250,250,250,250,250,250,250,250,252,250,250,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,101,250,250,250,250,250,250,250,233,44,44,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,105,250,250,250,250,250,250,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,255,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,11,77,111,155,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,147,253,253,253,253,253,245,153,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,115,157,253,245,233,188,174,253,247,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,174,253,225,159,47,0,40,227,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,251,243,114,16,0,0,19,210,253,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,243,74,0,0,0,38,228,253,130,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,228,11,0,0,79,245,244,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,253,211,101,132,253,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,200,253,253,253,234,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,226,253,253,253,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,198,253,205,131,193,242,231,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,241,253,209,63,0,0,121,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,229,253,245,50,0,0,0,132,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,253,47,0,0,0,55,248,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,169,7,0,0,30,222,253,211,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,247,235,6,0,0,89,218,253,221,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,159,0,47,162,250,253,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,241,213,249,253,229,95,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,179,253,253,163,82,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,183,20,0,0,0,0,0,0,132,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,223,20,0,0,0,0,0,41,213,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,234,30,0,0,0,0,21,183,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,213,10,0,0,0,0,21,223,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,233,0,0,0,0,0,21,173,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,151,0,0,0,0,0,102,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,163,0,0,0,0,0,31,193,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,212,40,0,0,0,62,183,213,252,253,252,243,203,123,0,0,0,0,0,0,0,0,0,0,21,254,253,224,40,31,51,214,253,254,253,254,253,254,253,254,253,142,0,0,0,0,0,0,0,0,0,0,142,253,252,162,142,233,252,253,252,253,252,253,252,192,151,151,151,20,0,0,0,0,0,0,0,0,0,31,233,254,253,254,253,254,253,254,253,254,253,224,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,232,253,252,253,252,253,212,213,252,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,162,254,213,203,122,0,21,254,253,254,213,193,92,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,20,50,10,0,0,0,142,253,252,253,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,254,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,151,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,191,254,253,253,244,143,57,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,67,105,176,176,233,252,253,252,252,252,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,126,213,252,252,252,252,252,252,253,183,153,162,187,231,250,125,0,0,0,0,0,0,0,0,0,0,0,0,151,252,252,245,230,234,236,240,253,77,0,1,4,189,252,208,0,0,0,0,0,0,0,0,0,0,0,0,124,252,252,93,0,16,23,39,135,27,0,0,0,113,252,208,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,55,0,0,0,0,0,0,0,0,0,198,252,208,0,0,0,0,0,0,0,0,0,0,0,0,52,248,252,108,0,0,0,0,0,0,0,6,108,248,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,218,13,0,0,0,0,0,18,153,252,252,250,124,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,188,31,0,0,11,78,146,252,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,252,252,233,187,158,225,252,252,252,180,104,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,251,253,253,253,255,253,240,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,252,252,253,206,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,249,252,252,252,253,241,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,156,250,252,239,116,10,253,252,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,121,252,252,226,77,0,0,181,252,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,252,45,0,0,39,230,252,174,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,175,13,12,79,240,253,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,252,252,252,252,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,252,252,252,252,114,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,33,119,243,252,219,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,114,254,254,148,106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,194,253,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,104,254,253,252,238,251,253,173,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,222,253,254,253,167,0,224,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,138,253,253,179,90,199,76,233,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,253,248,134,0,0,136,74,233,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,128,0,0,0,0,0,224,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,249,253,116,4,0,0,0,0,0,224,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,230,59,4,0,0,0,0,0,22,230,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,241,134,0,0,0,0,0,0,0,120,253,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,16,255,254,74,0,0,0,0,0,0,16,254,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,155,13,0,0,0,0,0,0,15,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,253,29,0,0,0,0,0,0,0,24,253,204,26,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,29,0,0,0,0,0,0,0,164,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,29,0,0,0,0,0,0,98,243,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,253,29,0,0,0,0,0,0,210,253,168,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,109,0,0,0,0,0,56,233,245,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,249,222,91,91,90,178,247,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,129,248,253,253,253,253,253,254,92,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,210,253,253,253,164,105,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,144,163,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,253,146,9,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,248,183,99,253,216,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,251,186,5,3,10,232,246,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,33,0,0,0,39,166,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,192,7,0,0,0,0,166,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,232,44,0,0,0,0,0,166,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,236,209,0,0,0,0,0,0,166,219,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,128,0,0,0,0,0,0,166,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,249,56,0,0,0,0,0,0,118,215,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,207,180,0,0,0,0,0,0,0,167,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,131,0,0,0,0,0,0,6,189,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,131,0,0,0,0,0,0,23,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,123,0,0,0,0,0,0,81,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,253,46,0,0,0,0,0,0,205,193,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,253,170,0,0,0,0,0,118,251,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,243,5,0,10,12,118,250,175,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,174,45,227,255,253,217,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,247,253,253,253,254,170,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,162,253,157,81,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,147,200,226,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,118,252,236,98,117,231,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,198,239,124,0,0,0,110,223,157,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,218,203,28,0,0,0,30,223,244,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,173,13,0,0,0,67,222,138,33,222,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,213,16,0,0,0,109,234,85,0,0,214,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,248,51,0,0,17,164,165,31,0,0,0,214,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,96,67,140,213,56,0,0,0,0,11,225,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,225,254,214,132,17,0,0,0,0,0,42,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,4,0,0,0,0,0,0,0,42,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,211,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,220,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,210,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,34,34,34,67,143,144,143,143,153,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,226,252,252,252,252,252,253,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,252,252,252,253,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,252,252,252,252,252,252,253,252,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,209,221,197,214,204,135,202,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,245,93,12,24,0,17,7,12,203,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,24,0,0,0,0,0,0,34,252,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,252,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,239,252,240,220,148,148,167,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,177,253,255,253,253,253,253,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,252,252,253,252,252,252,252,252,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,252,253,252,252,252,252,252,248,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,187,237,252,253,208,121,121,121,158,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,237,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,199,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,219,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,190,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,23,191,64,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,46,139,250,250,250,250,250,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,69,119,250,250,250,250,250,250,250,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,250,250,250,250,238,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,250,250,250,250,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,250,250,250,250,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,250,250,250,250,252,233,160,102,0,0,104,160,29,0,0,0,0,0,0,0,0,0,68,67,67,67,67,167,250,250,250,250,252,250,250,225,100,0,160,250,195,16,0,0,0,0,0,0,0,0,0,0,0,0,95,230,250,250,250,250,252,250,250,250,230,206,234,250,250,21,0,0,0,0,0,0,0,0,0,0,0,0,115,250,250,250,250,250,252,250,250,250,250,250,250,250,250,231,0,0,0,0,0,0,0,0,0,0,7,108,252,252,252,252,252,252,255,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,69,250,250,250,250,250,250,250,252,250,250,250,250,250,250,250,250,208,0,0,0,0,0,0,0,0,0,0,50,181,213,250,250,250,250,250,252,250,250,250,250,250,250,250,193,15,0,0,0,0,0,0,0,0,0,0,0,0,73,158,217,250,250,250,252,250,250,250,250,250,191,158,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,219,250,250,252,250,250,208,135,135,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,250,250,252,250,212,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,250,250,252,250,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,250,250,252,250,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,214,250,252,212,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,21,231,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,73,157,241,182,195,163,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,100,216,248,254,253,253,253,253,254,197,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,186,250,253,253,253,254,253,234,232,253,254,233,36,0,0,0,0,0,0,0,0,0,0,0,0,0,21,193,254,253,237,196,144,87,54,36,151,253,254,253,191,0,0,0,0,0,0,0,0,0,0,0,0,27,238,253,254,253,68,0,0,0,20,172,253,253,254,201,81,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,149,7,0,0,0,0,105,243,254,254,175,7,0,0,0,0,0,0,0,0,0,0,0,0,12,219,229,166,7,0,0,0,0,36,127,250,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,189,0,0,0,0,0,59,208,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,210,109,110,77,154,199,238,254,253,253,253,181,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,254,253,253,253,253,189,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,233,182,233,71,20,0,54,241,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,13,0,0,0,189,253,253,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,241,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,25,212,254,253,224,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,233,253,254,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127,250,253,253,147,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,253,250,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,253,231,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,148,254,233,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,85,155,171,227,255,254,254,254,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,82,249,253,253,253,253,253,253,253,253,253,151,8,0,0,0,0,0,0,0,0,0,0,0,0,12,87,210,244,253,253,253,253,253,253,253,253,228,253,253,53,0,0,0,0,0,0,0,0,0,0,0,10,164,253,253,253,253,213,163,147,182,182,182,177,35,188,253,53,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,253,165,21,0,0,0,0,0,0,0,166,253,53,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,110,2,0,0,0,0,0,0,0,0,166,253,157,0,0,0,0,0,0,0,0,0,0,12,203,253,253,168,2,6,18,125,125,215,243,243,237,138,250,253,113,0,0,0,0,0,0,0,0,0,0,126,253,253,253,214,142,249,253,253,253,253,253,253,253,253,253,217,23,0,0,0,0,0,0,0,0,0,0,7,190,253,253,253,253,253,253,253,253,253,253,253,253,253,253,229,33,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,100,9,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,215,176,212,176,176,132,59,59,128,227,253,253,126,0,0,0,0,0,0,0,0,0,51,191,253,253,134,41,21,0,19,0,0,0,0,0,0,67,253,253,190,7,0,0,0,0,0,0,0,0,136,253,253,136,5,0,0,0,0,0,0,0,0,0,0,5,137,253,253,70,0,0,0,0,0,0,0,0,136,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,75,0,0,0,0,0,0,0,0,150,253,253,65,0,0,0,0,0,0,0,0,0,0,0,42,224,253,194,7,0,0,0,0,0,0,0,0,177,253,253,65,0,0,0,0,0,0,0,0,0,47,117,223,253,253,130,0,0,0,0,0,0,0,0,0,136,253,253,113,12,0,0,0,0,0,0,0,113,252,253,241,158,70,10,0,0,0,0,0,0,0,0,0,37,221,253,253,169,84,43,8,103,146,201,201,249,249,170,84,0,0,0,0,0,0,0,0,0,0,0,0,0,38,152,228,253,253,236,222,253,253,253,216,152,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,114,135,248,187,190,135,44,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,242,141,53,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,240,252,253,252,252,215,157,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,56,69,187,252,252,253,215,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,178,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,178,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,227,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,54,91,241,255,253,165,141,141,141,141,91,13,0,0,0,0,0,0,0,0,0,0,0,0,0,82,169,253,252,252,252,253,252,252,252,253,252,252,252,194,19,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,252,252,252,253,252,252,252,253,252,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,110,240,190,139,52,28,28,28,28,28,28,28,28,28,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,233,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,204,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,232,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,200,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,242,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,247,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,139,254,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,171,48,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,255,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,247,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,139,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,177,0,19,111,144,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,99,30,221,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,241,236,40,202,254,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,209,41,238,169,108,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,146,164,253,32,155,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,242,245,105,253,166,144,253,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,243,159,253,244,245,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,166,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,237,253,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,171,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,47,47,47,47,34,22,0,26,68,161,120,26,0,0,0,0,0,0,0,0,0,0,0,0,0,38,142,234,252,252,253,252,234,215,184,222,252,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,44,252,252,252,252,253,252,252,252,252,253,252,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,252,253,252,252,252,252,253,252,221,137,22,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,252,252,121,93,93,93,93,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,178,253,252,252,252,252,253,252,252,234,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,255,253,253,253,253,255,253,253,253,253,191,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,253,223,206,206,153,92,113,240,252,252,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,69,25,0,0,0,0,0,50,69,205,253,252,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,195,9,0,0,0,0,0,0,0,0,0,64,116,32,0,0,0,0,0,0,0,0,0,0,0,11,201,252,246,42,0,0,0,0,0,0,0,0,0,244,253,222,97,24,11,0,0,0,0,0,0,7,66,191,255,253,184,0,0,0,0,0,0,0,0,0,0,118,252,252,252,252,203,161,161,161,161,162,161,186,252,252,253,244,149,0,0,0,0,0,0,0,0,0,0,7,154,252,252,252,253,252,252,252,252,253,252,252,252,252,247,98,0,0,0,0,0,0,0,0,0,0,0,0,9,45,45,45,46,45,45,45,45,46,45,45,45,45,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,38,124,146,218,255,231,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,114,188,253,253,253,253,253,201,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,253,253,250,248,192,69,32,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,253,253,207,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,216,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,253,253,169,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,173,253,253,192,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,171,253,253,207,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,82,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,172,253,246,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,147,253,248,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,189,253,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,244,253,164,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,163,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,255,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,205,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,239,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,231,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,245,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,238,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,235,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,211,255,181,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,248,238,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,253,182,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,161,253,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,228,253,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,232,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,246,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,233,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,255,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,201,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,239,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,132,254,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,254,185,253,241,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,253,146,30,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,23,12,223,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,194,254,231,0,0,176,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,147,0,0,175,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,58,0,14,229,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,211,253,163,137,221,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,254,253,253,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,239,254,200,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,201,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,129,253,245,76,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,129,253,240,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,240,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,170,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,240,251,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,24,0,0,0,0,0,0,0,92,253,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,250,190,107,45,19,0,0,109,253,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,213,254,254,254,240,207,207,240,254,254,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,73,113,183,228,249,254,254,254,209,162,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,199,254,248,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,222,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,234,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,254,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,254,254,254,229,116,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,218,253,44,3,47,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,232,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,236,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,236,208,121,61,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,220,237,245,252,252,252,253,231,164,164,120,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,132,153,252,253,252,252,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,29,178,239,252,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,189,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,210,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,242,252,230,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,243,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,253,237,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,221,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,117,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,245,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,176,252,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,108,138,138,255,232,170,253,253,244,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,99,170,252,252,252,252,253,252,252,252,252,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,104,209,252,253,252,252,252,221,253,208,100,69,121,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,203,139,45,45,120,234,17,0,0,43,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,11,0,0,0,63,21,0,0,85,240,253,210,6,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,128,24,7,0,0,3,45,170,253,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,252,253,252,186,29,22,170,252,252,252,210,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,173,253,252,252,196,215,253,252,202,89,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,177,252,252,252,245,87,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,234,251,255,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,187,17,157,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,218,19,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,245,79,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,252,178,0,0,0,168,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,116,0,0,114,243,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,66,236,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,252,153,91,234,252,221,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,253,252,252,218,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,232,253,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,196,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,247,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,152,246,254,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,127,254,254,204,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,172,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,249,254,171,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,201,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,241,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,245,254,149,0,0,0,1,74,111,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,246,31,0,0,3,99,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,240,254,145,0,0,9,129,254,254,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,61,0,3,155,254,253,251,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,4,0,134,254,249,79,81,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,4,16,229,254,127,0,167,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,23,140,254,207,5,87,247,240,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,244,254,175,202,254,138,147,232,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,237,254,254,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,213,254,254,254,254,249,175,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,217,254,180,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,237,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,90,0,0,0,213,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,155,0,0,0,213,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,89,0,0,0,213,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,250,36,0,0,0,213,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,254,112,0,0,0,0,213,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,209,254,111,0,0,0,0,0,213,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,236,254,84,1,0,0,0,0,0,213,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,102,204,253,254,163,1,0,0,0,0,0,0,213,254,24,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,254,254,254,201,173,172,138,91,76,214,255,24,0,0,0,0,0,0,0,0,0,0,0,0,31,174,237,237,237,247,254,254,254,254,254,254,175,213,231,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,65,65,122,152,229,218,29,213,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,205,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,242,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,152,152,92,51,72,152,152,193,254,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,253,252,253,252,253,252,253,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,253,254,253,254,253,254,253,254,253,254,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,253,252,253,252,151,111,112,192,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,21,223,255,253,254,253,142,0,0,0,0,123,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,252,253,252,61,0,0,0,41,243,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,254,151,0,0,0,0,152,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,151,131,30,0,0,0,41,233,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,192,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,255,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,255,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,192,233,151,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,79,25,86,164,229,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,234,254,249,254,254,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,245,185,185,120,93,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,239,245,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,148,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,231,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,145,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,205,203,216,216,229,207,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,215,215,202,129,129,214,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,245,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,242,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,242,245,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,243,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,0,0,0,0,0,12,131,243,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,183,3,6,9,87,172,245,254,247,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,202,228,254,254,255,252,162,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,187,254,175,168,92,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,66,142,191,254,254,254,255,205,156,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,202,246,215,149,122,122,122,122,205,230,244,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,218,52,0,0,0,0,0,0,0,27,218,225,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,59,0,0,0,0,0,0,0,0,0,169,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,247,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,225,247,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,128,253,249,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,102,223,254,188,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,221,249,189,37,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,234,253,245,188,188,153,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,188,188,188,212,230,254,254,254,149,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,18,28,66,149,250,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,234,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,215,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,167,244,136,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,89,228,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,11,0,0,0,21,140,245,253,215,57,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,146,123,123,167,230,246,175,58,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,197,148,65,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,138,255,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,141,253,253,211,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,200,253,253,250,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,228,253,253,244,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,233,253,253,244,85,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,168,253,253,253,165,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,243,253,253,253,142,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,180,253,253,253,242,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,218,253,253,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,225,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,40,215,253,253,253,98,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,239,137,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,226,253,253,253,230,62,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,253,253,253,253,253,249,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,253,253,253,174,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,245,199,54,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,196,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,138,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,242,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,246,252,253,245,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,252,252,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,227,252,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,153,241,253,252,244,203,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,252,252,253,252,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,199,252,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,123,253,253,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,252,252,252,173,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,232,253,252,251,134,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,252,253,252,134,0,0,0,0,6,64,64,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,253,217,12,0,0,124,211,215,252,252,247,131,9,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,230,27,4,69,192,255,253,253,253,253,255,253,191,14,0,0,0,0,0,0,0,0,0,0,50,244,252,252,97,0,136,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,182,252,252,199,31,206,251,252,252,253,252,252,252,244,253,252,252,84,0,0,0,0,0,0,0,0,0,0,120,252,252,217,218,252,252,252,252,243,189,92,84,120,253,252,252,84,0,0,0,0,0,0,0,0,0,0,14,236,252,252,253,252,252,252,252,124,0,0,71,211,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,222,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,249,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,13,0,0,0,0,0,0,25,183,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,121,0,0,0,0,0,0,61,251,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,169,12,0,0,0,0,0,14,191,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,169,0,0,0,0,0,0,65,248,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,170,208,31,0,0,0,0,0,22,226,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,236,63,0,0,0,0,0,7,171,213,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,108,250,117,0,0,0,0,0,0,96,236,128,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,248,247,156,181,156,133,109,156,156,255,251,251,104,0,0,0,0,0,0,0,0,0,0,0,0,2,69,243,248,181,156,175,235,236,235,245,255,236,97,61,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,245,76,0,0,0,0,0,0,137,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,233,66,0,0,0,0,0,0,46,224,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,52,0,0,0,0,0,0,0,160,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,226,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,94,146,188,254,255,239,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,76,76,145,239,253,253,253,213,104,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,187,253,253,253,253,251,222,52,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,253,253,207,171,171,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,182,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,149,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,165,157,157,148,49,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,155,183,253,253,253,253,253,253,206,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,21,21,91,129,184,241,253,231,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,132,251,230,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,232,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,64,249,253,198,3,0,0,0,0,0,0,0,0,0,0,0,0,186,70,0,0,0,0,0,0,0,0,69,238,253,237,66,0,0,0,0,0,0,0,0,0,0,0,0,0,222,146,0,0,0,0,0,0,38,113,239,253,187,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,88,4,0,0,30,103,228,253,253,185,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,135,92,179,247,253,253,247,157,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,253,253,253,253,253,214,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,34,0,0,0,0,0,0,53,151,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,219,238,101,0,0,0,0,16,150,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,255,254,245,159,245,245,247,254,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,210,254,124,74,171,241,254,254,241,200,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,78,0,0,17,20,20,17,89,254,182,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,154,171,24,0,0,0,0,0,0,89,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,231,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,100,182,254,254,254,207,100,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,111,234,254,254,254,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,236,166,180,254,254,117,62,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,84,117,12,0,42,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,236,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,248,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,238,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,148,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,67,15,0,0,0,0,0,0,128,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,55,0,0,0,0,0,55,245,252,187,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,252,55,0,0,0,0,3,178,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,181,252,240,43,0,0,0,0,58,252,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,159,0,0,0,0,0,143,252,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,179,8,0,0,0,0,0,196,252,248,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,121,0,0,0,0,0,20,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,233,252,87,0,0,0,0,0,144,253,203,12,0,0,0,4,78,54,0,0,0,0,0,0,0,0,0,34,252,252,212,111,24,102,111,111,234,253,215,111,121,220,220,222,252,243,28,0,0,0,0,0,0,0,0,15,210,253,253,253,253,253,253,253,253,255,253,253,253,253,253,253,248,138,14,0,0,0,0,0,0,0,0,0,83,212,252,252,252,252,252,252,252,253,252,252,252,209,147,77,63,0,0,0,0,0,0,0,0,0,0,0,0,17,44,44,44,48,86,198,252,253,154,44,44,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,221,252,212,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,231,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,252,252,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,166,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,241,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,220,238,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,229,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,170,254,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,247,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,222,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,238,254,158,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,227,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,215,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,238,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,181,254,206,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,166,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,134,255,254,254,163,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,228,253,254,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,217,253,185,95,19,117,250,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,222,14,0,0,0,143,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,214,0,0,0,0,55,134,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,247,49,0,2,88,243,253,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,253,155,79,129,253,253,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,254,253,253,253,222,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,254,253,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,254,254,255,219,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,217,253,253,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,222,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,253,225,71,102,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,239,254,207,48,0,60,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,39,0,0,99,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,231,48,80,132,229,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,253,253,253,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,206,254,253,253,253,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,81,238,253,237,118,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,228,89,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,237,244,249,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,180,247,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,155,246,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,194,233,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,74,222,230,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,159,239,254,186,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,255,190,29,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,250,239,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,202,191,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,203,236,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,148,77,28,0,0,0,0,46,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,140,180,238,187,104,75,80,224,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,225,254,254,184,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,125,125,151,254,254,254,254,177,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,248,249,253,253,253,253,253,253,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,253,253,253,253,253,253,183,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,253,232,149,149,132,19,19,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,250,253,253,175,155,58,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,225,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,237,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,239,209,175,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,215,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,241,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,182,194,151,65,65,180,253,253,218,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,232,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,21,0,14,23,70,156,184,253,253,253,211,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,208,150,203,240,253,253,253,253,253,212,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,253,253,253,253,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,243,253,253,253,253,253,251,213,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,176,253,206,123,123,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,108,253,248,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,151,236,249,172,63,49,152,252,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,230,230,250,250,254,254,240,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,254,183,11,26,117,168,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,240,59,0,0,0,56,254,230,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,220,58,0,0,0,9,179,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,240,66,0,0,0,0,57,254,237,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,26,0,0,0,0,23,193,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,236,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,220,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,235,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,230,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,220,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,247,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,218,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,215,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,185,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,143,255,209,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,37,134,172,253,249,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,25,30,30,161,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,253,239,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,203,253,198,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,170,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,200,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,199,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,243,253,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,202,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,103,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,255,129,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,253,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,200,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,253,253,255,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,242,252,252,253,234,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,199,241,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,191,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,226,255,255,255,170,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,255,255,226,170,170,170,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,141,57,0,29,170,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,29,0,0,0,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,29,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,198,29,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,141,0,0,0,0,0,141,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,57,0,0,0,170,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,29,198,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,114,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,226,198,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,29,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,57,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,29,0,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,226,255,255,255,170,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,102,214,175,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,231,254,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,229,254,254,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,254,73,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,253,254,254,166,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,178,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,208,254,254,250,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,254,216,0,0,0,0,0,0,0,0,2,24,4,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,254,216,0,0,92,125,87,88,125,125,132,254,143,45,0,0,0,0,0,0,0,0,0,0,0,12,208,254,254,250,140,216,247,254,245,246,254,254,254,254,254,236,159,13,0,0,0,0,0,0,0,0,0,0,192,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,55,0,0,0,0,0,0,0,0,0,0,47,254,254,254,254,254,254,254,254,244,195,254,176,138,166,254,254,200,0,0,0,0,0,0,0,0,0,0,36,192,253,254,254,254,254,254,254,251,235,254,126,63,204,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,146,253,254,254,254,254,254,254,254,254,254,254,254,255,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,254,254,254,254,254,254,254,254,254,254,208,26,0,0,0,0,0,0,0,0,0,0,0,0,0,59,200,252,254,254,254,254,254,254,254,254,254,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,119,254,254,254,254,254,254,183,100,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,242,178,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,82,0,0,0,0,0,0,0,0,0,0,170,99,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,173,0,0,0,0,0,0,0,0,0,0,201,242,201,74,0,0,0,0,0,0,0,0,0,0,254,253,253,232,39,0,0,0,0,0,0,0,0,0,201,253,253,122,0,0,0,0,0,0,0,0,0,0,162,253,253,253,53,0,0,0,0,0,0,0,0,0,201,253,253,245,73,0,0,0,0,0,0,0,0,0,109,252,253,253,137,0,0,0,0,0,0,0,0,0,201,253,253,253,121,0,0,0,0,0,0,0,0,0,0,241,253,253,186,0,0,0,0,0,0,0,0,0,124,253,253,253,240,0,0,0,0,0,0,0,0,0,0,170,253,253,186,0,0,0,0,0,0,0,0,0,68,253,253,253,240,0,0,0,0,0,0,0,0,0,0,108,254,254,187,0,0,0,0,0,0,0,0,0,0,188,255,255,241,0,0,0,0,0,0,0,0,0,0,108,253,253,250,142,108,108,108,51,0,0,0,0,121,250,253,253,240,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,253,253,253,240,229,228,178,94,220,253,253,253,240,0,0,0,0,0,0,0,0,0,0,17,232,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,97,243,253,253,253,253,253,253,254,253,253,253,253,253,253,253,250,95,0,0,0,0,0,0,0,0,0,0,0,56,102,211,225,253,253,253,201,251,253,253,253,253,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,17,38,80,80,80,0,76,128,213,142,243,253,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,203,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,107,107,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,255,255,203,130,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,253,253,253,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,253,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,241,228,250,253,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,87,239,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,245,253,236,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,143,71,77,32,35,9,0,17,229,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,232,236,189,174,203,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,253,253,253,253,146,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,253,253,253,253,253,253,253,253,145,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,235,253,253,253,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,89,179,179,136,225,253,24,0,0,0,0,0,0,0,0,0,0,0,45,199,36,0,0,0,0,0,0,0,0,0,0,0,118,253,125,0,0,0,0,0,0,0,0,0,0,0,173,253,229,88,0,0,0,0,0,0,0,0,0,0,16,228,236,15,0,0,0,0,0,0,0,0,0,0,254,253,253,232,130,0,0,0,0,0,0,0,0,0,0,178,253,165,5,0,0,0,0,0,0,0,0,0,145,253,253,253,250,205,34,0,0,0,0,0,0,0,0,12,232,253,12,0,0,0,0,0,0,0,0,0,13,96,253,253,253,253,238,205,106,106,106,106,106,106,106,215,251,253,113,3,0,0,0,0,0,0,0,0,0,7,150,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,201,3,0,0,0,0,0,0,0,0,0,0,1,24,150,253,253,253,253,253,253,253,253,253,253,253,253,201,12,0,0,0,0,0,0,0,0,0,0,0,0,0,1,24,129,153,192,253,253,156,129,129,129,129,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,132,184,253,255,184,132,52,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,175,252,252,252,252,253,252,252,252,146,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,225,252,252,252,219,216,236,252,252,252,252,190,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,252,164,8,0,44,84,84,196,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,106,10,0,0,0,0,0,83,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,48,0,0,0,0,0,0,84,252,231,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,214,69,0,0,0,0,0,169,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,144,252,252,239,165,5,0,0,78,241,229,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,23,209,252,252,172,0,22,243,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,161,252,252,185,242,252,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,248,255,253,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,252,168,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,89,248,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,141,180,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,136,0,145,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,252,11,44,227,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,164,83,231,252,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,237,251,253,231,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,196,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,200,131,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,66,241,242,141,141,141,141,141,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,169,225,252,252,253,252,252,252,253,252,224,44,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,253,252,252,252,253,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,253,252,252,252,190,65,28,28,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,239,150,25,0,0,0,48,191,254,253,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,19,84,84,38,0,0,0,0,63,197,252,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,198,234,252,252,253,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,210,252,253,252,252,252,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,254,253,253,253,254,253,206,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,197,252,253,252,252,252,253,252,224,169,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,253,252,252,252,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,227,139,139,140,139,228,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,163,113,51,0,0,0,0,0,86,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,240,252,244,56,0,0,0,0,0,0,0,0,0,0,114,188,150,0,0,0,0,0,0,0,38,113,229,252,252,252,175,0,0,0,0,0,0,0,0,0,0,0,255,253,178,29,29,29,66,141,141,216,253,253,254,253,244,175,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,252,252,253,252,252,252,247,171,56,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,252,252,253,252,186,168,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,177,252,253,252,214,139,128,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,155,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,199,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,218,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,203,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,235,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,201,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,242,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,232,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,255,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,189,254,176,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,248,254,253,253,239,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,245,253,254,219,171,213,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,243,253,240,87,4,0,109,253,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,175,21,0,0,0,70,227,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,223,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,139,253,254,223,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,222,253,253,254,253,248,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,249,253,253,214,87,93,244,249,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,246,72,0,0,49,233,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,254,254,119,0,0,0,0,51,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,248,254,253,212,23,0,0,0,0,15,237,223,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,254,206,18,0,0,0,0,0,0,104,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,121,0,0,0,0,0,0,0,20,247,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,136,5,0,0,0,0,0,0,0,0,99,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,138,138,233,201,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,151,253,252,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,252,247,110,69,69,152,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,135,0,0,0,116,239,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,200,11,0,0,0,116,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,253,181,19,0,9,181,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,253,236,78,174,231,0,0,0,0,95,162,140,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,222,252,252,227,48,0,0,51,164,246,253,134,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,135,252,236,61,51,93,209,252,252,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,242,243,252,252,252,200,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,249,247,253,253,255,253,152,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,105,228,252,231,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,252,227,48,169,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,227,50,0,44,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,130,0,0,24,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,137,5,0,24,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,173,252,45,0,24,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,154,70,138,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,77,236,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,242,253,178,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,153,254,254,186,104,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,254,253,253,253,254,165,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,145,253,254,240,240,253,254,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,195,40,40,228,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,195,0,0,0,0,195,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,77,0,0,0,0,132,249,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,119,0,0,0,0,0,159,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,160,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,255,254,245,195,104,204,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,244,253,254,253,253,253,254,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,171,237,244,253,253,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,44,144,228,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,255,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,245,253,155,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,219,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,202,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,253,236,129,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,247,183,234,252,190,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,33,88,202,229,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,252,126,0,0,0,11,201,248,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,243,0,0,0,0,0,11,203,253,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,137,0,0,0,0,0,0,80,240,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,152,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,70,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,137,0,0,0,0,0,0,0,70,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,23,0,0,0,0,0,0,0,81,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,0,9,197,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,0,130,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,65,0,0,0,0,0,155,236,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,137,0,0,0,43,168,253,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,247,253,253,139,138,222,253,253,255,165,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,253,252,252,252,252,144,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,252,253,252,252,195,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,45,46,45,45,9,0,0,0,0,0,0,0,60,176,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,213,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,91,0,82,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,91,10,0,0,213,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,0,0,0,0,152,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,212,0,0,0,0,152,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,151,0,0,0,62,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,142,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,21,41,173,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,223,243,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,203,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,255,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,248,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,183,253,253,224,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,163,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,230,253,253,253,171,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,56,233,253,253,253,250,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,253,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,241,246,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,222,253,253,253,253,237,82,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,236,253,253,253,253,203,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,253,253,253,253,216,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,252,232,99,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,57,45,192,144,144,53,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,207,200,253,254,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,166,92,146,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,223,253,250,116,2,0,32,231,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,251,116,0,0,0,0,210,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,196,253,204,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,250,30,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,165,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,176,67,0,0,0,0,0,50,242,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,221,254,255,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,209,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,23,13,71,202,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,142,170,253,215,253,254,253,253,112,56,56,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,250,165,192,253,254,253,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,141,0,130,253,239,103,114,131,131,45,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,244,206,155,228,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,220,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,147,253,186,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,117,191,255,178,229,203,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,222,196,240,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,224,118,25,0,44,231,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,165,168,0,0,0,0,175,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,234,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,187,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,228,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,215,252,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,160,253,254,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,209,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,175,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,54,229,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,169,169,179,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,224,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,130,209,254,255,254,254,254,218,91,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,205,253,245,241,241,241,241,244,253,253,156,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,246,253,164,7,0,0,0,30,111,217,253,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,228,244,159,0,0,0,0,0,81,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,82,0,0,0,0,0,81,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,167,253,176,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,44,166,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,138,193,253,253,253,253,224,126,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,155,253,253,253,237,197,216,253,253,223,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,234,253,208,98,48,0,24,113,215,253,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,61,17,0,0,0,0,0,100,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,235,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,135,0,0,0,0,0,0,0,0,0,0,0,50,79,0,0,0,0,0,0,0,0,0,0,0,83,249,253,32,0,0,0,0,0,0,0,0,0,3,160,238,241,110,0,0,0,0,0,0,0,0,0,0,145,253,212,8,0,0,0,0,0,0,0,0,0,7,253,253,167,0,0,0,0,0,0,0,0,0,0,192,250,253,33,0,0,0,0,0,0,0,0,0,0,1,96,253,239,93,0,0,0,0,0,0,0,34,148,250,212,97,2,0,0,0,0,0,0,0,0,0,0,0,1,150,253,251,157,93,0,0,0,86,209,241,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,96,253,253,251,242,242,242,251,253,253,213,29,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,21,147,253,253,253,253,220,129,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,67,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,160,226,142,26,0,127,254,237,142,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,241,254,254,253,169,27,232,254,254,254,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,194,78,91,56,229,190,198,254,254,229,69,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,254,240,22,64,208,236,251,212,5,158,254,254,250,117,32,0,0,0,0,0,0,0,0,0,0,0,254,254,254,136,0,63,140,175,188,240,0,21,229,254,254,254,238,43,0,0,0,0,0,0,0,0,0,0,254,254,250,56,0,0,0,0,9,20,0,0,59,103,248,254,254,41,0,0,0,0,0,0,0,0,0,0,254,254,244,0,0,0,0,0,0,0,0,0,0,0,148,243,254,194,0,0,0,0,0,0,0,0,0,0,254,254,245,10,0,0,0,0,0,0,0,0,0,0,0,80,245,245,88,0,0,0,0,0,0,0,0,0,219,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,110,254,236,25,0,0,0,0,0,0,0,0,161,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,32,249,255,126,0,0,0,0,0,0,0,0,77,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,159,0,0,0,0,0,0,0,0,15,232,254,237,53,0,0,0,0,0,0,0,0,0,0,0,0,189,254,229,0,0,0,0,0,0,0,0,0,135,254,254,140,0,0,0,0,0,0,0,0,0,0,0,57,251,254,159,0,0,0,0,0,0,0,0,0,17,222,254,250,114,0,0,0,0,0,0,0,0,0,29,179,254,238,36,0,0,0,0,0,0,0,0,0,0,79,247,254,250,110,15,0,0,0,0,0,13,90,228,254,221,90,0,0,0,0,0,0,0,0,0,0,0,0,79,248,254,254,237,133,86,86,22,124,229,254,216,137,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,222,254,254,254,254,254,247,254,254,148,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,69,152,225,225,254,249,225,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,97,233,168,127,132,138,13,11,0,7,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,46,47,124,252,43,151,161,186,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,153,162,37,111,48,184,215,234,200,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,139,56,21,0,0,0,0,0,95,215,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,136,246,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,24,233,255,249,146,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,47,47,155,252,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,91,184,184,215,253,252,252,252,252,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,252,252,253,252,252,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,253,252,252,252,200,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,245,253,253,232,116,116,116,74,0,66,201,137,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,123,92,8,0,0,0,0,0,45,211,187,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,178,48,0,0,0,0,0,0,0,0,0,0,76,212,222,44,3,0,0,0,0,0,3,93,32,43,63,179,42,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,117,47,47,47,26,151,118,185,0,0,53,42,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,253,252,202,152,183,69,25,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,177,252,252,252,253,193,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,168,252,200,96,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,177,177,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,191,252,253,253,252,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,213,253,253,253,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,82,253,253,253,241,198,102,232,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,160,255,253,253,207,81,0,0,155,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,31,210,253,253,213,40,11,0,0,0,155,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,16,102,253,253,253,134,0,0,0,0,0,0,155,253,143,0,0,0,0,0,0,0,0,0,0,0,0,17,139,253,253,230,80,0,0,0,0,0,0,4,185,253,110,0,0,0,0,0,0,0,0,0,0,0,10,190,253,249,143,51,0,0,0,0,0,0,0,156,253,186,5,0,0,0,0,0,0,0,0,0,0,14,246,254,254,166,0,0,0,0,0,0,0,0,65,245,234,58,0,0,0,0,0,0,0,0,0,0,47,207,253,253,115,7,0,0,0,0,0,0,0,117,237,246,30,0,0,0,0,0,0,0,0,0,0,0,67,253,253,164,10,0,0,0,0,0,0,0,153,238,253,108,0,0,0,0,0,0,0,0,0,0,0,91,246,253,174,4,0,0,0,0,0,3,81,243,253,249,106,1,0,0,0,0,0,0,0,0,0,0,0,168,253,232,47,0,0,0,0,42,104,178,253,253,224,155,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,188,89,89,89,190,199,239,253,254,230,122,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,253,251,242,145,118,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,128,209,252,253,219,209,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,66,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,65,191,134,203,179,133,105,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,145,238,253,253,254,242,253,253,253,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,185,253,253,253,218,97,51,96,120,243,253,135,6,0,0,0,0,0,0,0,0,0,0,0,0,31,72,230,253,253,235,152,4,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,32,130,226,253,253,253,204,62,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,226,253,253,253,236,88,12,0,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,254,253,253,173,37,0,0,0,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,100,156,82,12,0,0,0,0,0,0,0,0,14,98,209,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,179,234,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,237,254,253,253,253,253,253,253,249,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,53,180,254,249,244,173,140,254,254,254,254,254,202,6,0,0,0,0,0,0,0,0,0,0,0,17,112,228,253,244,177,57,0,3,116,253,253,211,148,250,253,81,0,0,0,0,0,0,0,0,0,4,54,222,253,243,217,77,0,0,2,116,253,253,245,97,0,201,253,207,0,0,0,0,0,0,0,0,0,106,253,253,242,89,0,0,0,0,117,253,253,244,99,0,0,33,215,230,0,0,0,0,0,0,0,0,9,223,253,253,106,0,0,0,27,119,254,253,245,99,0,0,0,0,31,38,0,0,0,0,0,0,0,0,139,253,253,181,17,0,25,177,219,253,254,211,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,224,16,62,120,222,253,253,253,163,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,248,218,243,253,253,253,211,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,164,40,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,132,132,132,104,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,156,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,147,253,252,252,160,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,231,252,253,252,252,252,129,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,244,252,252,204,160,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,238,252,252,252,17,42,225,252,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,230,252,252,252,234,0,0,59,252,252,243,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,252,252,103,0,0,15,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,225,252,252,252,156,6,0,0,1,127,252,252,165,5,0,0,0,0,0,0,0,0,0,0,0,0,12,221,252,252,252,236,48,0,0,0,12,221,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,252,75,0,0,0,0,15,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,119,0,0,0,0,0,16,253,253,253,197,8,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,252,118,0,0,0,0,0,138,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,252,118,0,0,0,0,39,221,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,252,118,0,0,0,0,60,252,252,252,237,63,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,118,0,0,0,75,204,252,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,213,126,30,30,253,252,252,252,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,252,252,252,252,253,252,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,172,252,252,252,252,252,253,252,246,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,252,252,252,253,241,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,182,252,252,252,191,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,57,57,57,57,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,110,197,197,229,252,252,252,253,190,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,252,253,252,164,139,153,252,243,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,244,175,51,0,0,0,104,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,56,0,0,0,0,26,253,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,222,253,252,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,225,246,252,253,227,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,104,178,253,254,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,252,253,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,130,234,252,206,168,146,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,28,13,26,159,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,25,0,0,0,0,0,0,0,0,0,0,0,13,113,113,113,51,0,0,0,0,0,89,213,241,252,252,52,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,255,253,253,253,254,253,253,253,254,209,76,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,252,253,252,252,252,253,252,252,227,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,56,56,56,56,56,56,56,56,56,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,191,255,253,253,153,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,252,253,252,252,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,252,253,252,252,252,247,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,252,252,78,28,28,228,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,255,253,194,13,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,82,197,252,253,214,19,0,0,0,0,138,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,244,81,0,0,0,0,29,234,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,75,0,0,0,0,51,234,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,244,25,0,0,0,0,0,120,253,253,254,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,56,0,0,0,0,0,0,94,252,252,253,252,224,119,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,168,168,216,252,252,252,160,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,103,228,252,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,225,163,88,0,0,0,0,0,0,241,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,254,253,216,91,79,29,66,191,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,228,252,252,252,253,252,252,252,253,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,81,234,252,253,252,252,252,253,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,139,140,215,252,151,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,158,187,187,95,0,0,0,0,0,25,57,23,0,0,0,0,0,0,0,0,0,0,0,0,6,127,246,251,254,254,254,252,99,0,0,0,25,180,252,229,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,243,229,138,177,254,210,0,16,127,231,247,168,24,0,0,0,0,0,0,0,0,0,0,0,0,216,254,235,55,0,0,10,193,225,91,230,254,219,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,232,106,16,0,29,180,254,254,254,174,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,248,254,254,193,133,230,254,254,235,75,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,251,254,254,254,254,229,155,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,94,213,253,254,254,244,123,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,86,216,254,254,254,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,169,254,254,254,198,165,237,229,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,227,84,70,206,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,212,22,100,239,254,194,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,234,49,95,241,254,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,239,254,254,193,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,254,227,71,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,91,91,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,98,159,205,254,255,254,254,191,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,253,253,253,253,254,253,253,253,248,176,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,251,233,184,160,105,153,246,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,126,146,66,0,0,0,0,0,25,213,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,111,238,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,167,253,253,230,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,85,66,73,85,179,245,253,253,205,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,251,251,253,254,253,253,236,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,253,253,254,253,253,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,253,253,184,253,253,253,140,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,0,35,0,49,169,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,91,229,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,141,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,228,113,0,0,0,0,0,0,0,0,141,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,200,6,0,0,0,0,0,0,0,141,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,169,35,0,0,0,0,0,85,220,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,221,253,253,227,150,116,57,140,154,250,253,241,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,202,253,253,253,253,254,253,253,253,247,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,225,253,253,253,254,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,24,150,255,254,160,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,187,253,253,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,171,240,253,253,253,228,253,236,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,188,122,65,35,95,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,239,226,66,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,169,225,147,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,161,248,236,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,170,0,0,0,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,253,51,109,160,160,188,130,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,253,253,253,253,253,253,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,179,165,59,59,59,103,210,251,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,158,62,41,2,0,0,0,0,0,71,252,249,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,12,66,24,16,0,0,0,0,0,65,182,249,253,191,19,0,0,0,0,0,0,0,0,0,0,0,0,0,5,150,199,225,219,219,219,219,219,245,253,253,149,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,17,210,253,253,242,135,162,253,154,83,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,207,67,67,67,67,67,88,254,255,254,254,128,67,37,0,0,0,0,0,0,0,0,0,0,0,0,35,195,253,253,253,253,253,253,253,253,253,253,253,253,253,198,132,103,0,0,0,0,0,0,0,0,0,0,64,248,253,253,253,252,243,243,243,243,249,244,243,250,253,253,253,240,103,0,0,0,0,0,0,0,0,0,0,93,177,177,177,164,0,0,0,0,113,19,0,120,177,211,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,191,253,221,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,219,253,253,145,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,231,253,253,155,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,235,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,250,253,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,198,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,253,253,183,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,211,253,253,42,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,223,253,253,139,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,246,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,190,235,166,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,158,254,254,232,253,204,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,241,164,17,69,188,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,183,0,0,0,3,150,242,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,113,0,0,0,0,24,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,190,254,27,0,0,0,0,3,222,237,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,196,2,0,0,0,0,0,109,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,169,0,0,0,0,0,0,81,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,169,0,0,0,0,0,0,34,250,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,123,0,0,0,0,0,0,0,246,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,80,0,0,0,0,0,0,0,246,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,80,0,0,0,0,0,0,0,246,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,80,0,0,0,0,0,0,30,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,80,0,0,0,0,0,0,81,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,80,0,0,0,0,0,2,190,237,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,162,0,0,0,0,0,106,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,213,17,0,0,0,62,245,199,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,254,198,33,27,81,227,241,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,246,254,254,254,254,236,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,189,254,239,154,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,18,29,155,254,254,255,254,254,254,254,254,254,152,18,0,0,0,0,0,0,0,0,0,0,0,10,36,128,253,253,253,245,218,162,162,108,218,196,100,100,100,54,0,0,0,0,0,0,0,0,0,0,12,164,253,253,252,200,126,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,164,253,253,223,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,125,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,147,253,128,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,248,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,234,72,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,253,191,128,60,60,32,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,176,253,253,253,253,253,253,226,240,195,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,121,104,158,158,101,107,218,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,38,0,0,0,24,59,221,253,181,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,200,0,0,108,218,253,253,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,233,242,201,201,247,253,253,182,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,253,253,253,186,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,89,160,253,253,148,22,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,67,177,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,91,227,254,253,253,253,215,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,171,253,253,254,235,167,168,253,240,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,217,253,253,253,162,17,0,178,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,177,253,253,228,80,0,0,73,242,253,245,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,224,26,0,2,139,243,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,253,253,61,0,38,196,253,253,253,230,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,163,68,166,244,254,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,253,254,253,253,233,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,253,254,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,122,232,245,171,114,6,255,254,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,251,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,246,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,147,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,210,253,156,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,252,252,237,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,202,252,214,126,233,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,155,0,0,51,231,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,199,7,0,0,0,81,252,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,250,70,0,0,0,0,54,247,219,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,152,0,0,0,0,0,0,211,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,73,0,0,0,0,0,0,158,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,231,16,0,0,0,0,0,0,106,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,168,0,0,0,0,0,0,0,106,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,150,0,0,0,0,0,0,0,0,107,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,71,0,0,0,0,0,0,0,0,141,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,0,0,0,0,0,0,0,0,6,215,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,0,0,0,0,0,0,0,0,64,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,0,0,0,0,0,0,0,0,152,252,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,0,0,0,0,0,0,0,84,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,116,0,0,0,0,0,64,213,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,250,118,22,22,22,145,247,251,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,252,252,252,252,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,121,244,252,252,147,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,38,38,139,146,146,204,255,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,218,253,253,253,253,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,183,253,253,253,253,248,248,248,248,158,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,253,253,244,125,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,171,253,253,253,237,188,120,48,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,253,253,253,253,253,216,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,239,253,253,253,253,253,253,253,253,253,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,245,253,253,250,154,83,106,21,123,201,250,253,248,46,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,223,74,0,0,0,0,0,0,136,253,253,216,26,0,0,0,0,0,0,0,0,0,0,0,0,75,253,189,29,0,0,0,0,0,0,0,21,160,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,1,16,11,0,0,0,0,0,0,0,0,0,32,247,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,226,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,253,253,113,0,0,0,0,0,0,0,0,0,0,0,64,211,193,104,104,40,0,0,0,0,53,174,227,253,253,212,21,0,0,0,0,0,0,0,0,0,0,0,67,249,253,253,253,251,249,249,249,249,251,253,253,250,193,21,0,0,0,0,0,0,0,0,0,0,0,0,0,68,195,253,253,253,253,253,253,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,37,134,145,228,253,253,214,191,145,58,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127,168,180,255,216,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,198,254,254,190,176,237,245,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,215,122,8,2,0,45,95,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,120,204,163,18,12,36,0,0,0,83,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,70,8,0,3,154,96,0,128,185,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,233,17,0,0,0,76,232,186,205,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,249,106,45,0,0,4,163,148,97,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,155,196,70,109,62,44,80,228,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,66,12,0,117,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,243,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,210,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,214,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,238,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,192,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,239,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,251,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,234,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,233,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,245,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,193,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,250,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,226,253,192,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,234,253,197,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,253,246,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,241,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,242,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,187,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,200,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,253,253,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,240,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,249,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,36,0,0,20,38,80,146,220,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,249,184,184,220,253,253,253,253,223,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,253,253,253,251,248,248,248,146,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,214,187,103,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,229,188,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,233,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,158,253,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,193,253,211,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,207,253,172,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,246,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,241,237,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,54,0,0,0,0,0,0,200,248,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,246,54,0,0,0,0,90,245,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,240,215,43,0,0,44,252,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,250,179,179,247,253,158,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,72,242,253,253,246,123,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,235,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,184,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,179,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,231,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,224,204,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,191,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,85,133,146,146,50,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,240,147,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,238,152,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,252,210,210,249,253,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,97,123,0,0,58,65,147,247,253,253,221,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,157,251,253,222,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,250,253,216,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,204,253,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,163,10,0,0,0,0,0,0,0,0,0,0,0,40,68,53,93,93,93,114,163,184,93,20,0,60,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,7,12,12,210,253,253,253,253,253,230,94,11,30,229,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,253,253,253,253,209,122,237,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,253,253,253,253,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,1,155,253,253,253,253,253,253,253,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,253,253,253,253,253,253,253,253,253,221,59,0,0,0,0,0,0,0,0,0,0,0,0,0,8,156,253,253,253,253,253,253,253,253,253,253,253,253,248,211,122,0,0,0,0,0,0,0,0,0,0,0,0,2,102,180,246,253,253,253,253,232,133,170,243,253,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,82,114,75,75,26,0,0,80,212,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,143,145,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,242,175,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,201,254,254,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,224,254,254,178,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,168,254,254,148,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,135,254,253,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,213,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,250,254,244,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,173,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,254,197,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,149,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,214,254,197,19,70,112,176,102,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,227,254,218,199,254,254,254,254,254,173,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,254,254,254,254,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,254,253,203,148,243,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,254,231,75,0,0,104,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,226,120,82,0,3,68,201,254,244,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,243,74,5,60,111,254,254,254,206,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,254,254,254,254,254,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,245,254,254,254,254,240,221,116,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,138,203,125,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,46,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,4,0,39,13,41,65,65,153,164,212,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,30,204,221,220,240,226,241,254,254,254,254,251,234,234,103,0,0,0,0,0,0,0,0,0,0,0,0,52,246,254,253,254,209,208,178,178,178,169,79,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,174,253,177,103,24,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,210,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,40,185,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,218,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,224,253,254,253,250,249,194,150,130,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,254,253,253,253,253,254,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,158,108,124,201,210,250,254,254,254,208,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,37,77,206,253,226,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,32,0,0,0,0,0,4,102,251,254,168,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,29,0,0,0,27,146,253,253,148,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,241,235,234,234,241,254,254,102,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,150,254,254,254,254,254,153,65,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,9,39,109,37,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,101,101,101,101,101,227,255,0,0,0,0,0,0,0,0,0,0,0,0,8,47,47,47,47,47,154,226,253,253,253,253,253,253,253,225,0,0,0,0,0,0,0,0,0,0,0,54,163,253,253,253,253,253,253,253,253,253,253,253,253,253,132,42,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,188,160,160,160,91,7,7,7,2,0,0,0,0,0,0,0,0,0,0,0,0,60,216,232,214,102,61,61,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,139,250,253,190,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,250,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,185,68,152,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,208,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,237,253,253,236,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,230,252,253,253,181,65,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,186,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,53,183,249,253,253,226,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,249,253,253,231,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,197,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,161,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,253,253,238,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,109,245,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,225,59,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,183,201,99,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,82,151,255,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,237,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,204,254,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,201,253,217,176,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,200,253,218,29,145,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,222,253,217,30,0,145,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,228,253,253,99,0,5,187,253,84,0,0,0,0,89,5,0,0,0,0,0,0,0,0,0,0,16,132,247,253,253,114,3,0,117,253,253,215,196,230,230,230,101,1,0,0,0,0,0,0,0,0,0,0,95,253,253,218,34,48,122,237,254,253,253,253,253,160,132,28,1,0,0,0,0,0,0,0,0,0,1,151,254,254,254,254,254,254,254,254,250,254,235,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,243,253,253,253,253,245,229,177,109,133,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,217,217,130,96,64,0,0,0,133,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,230,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,59,141,186,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,222,254,253,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,254,253,253,240,174,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,169,117,87,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,235,253,170,118,185,125,118,118,118,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,253,253,253,253,254,253,253,128,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,253,253,216,213,214,216,253,253,163,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,215,133,58,58,5,0,0,5,58,200,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,240,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,156,107,0,0,0,0,0,0,85,231,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,244,254,250,148,0,0,0,10,88,228,253,204,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,253,229,124,79,102,211,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,254,253,253,253,253,254,253,253,247,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,140,253,253,253,253,254,253,222,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,255,119,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,237,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,198,253,253,200,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,220,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,247,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,242,129,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,245,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,196,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,169,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,250,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,234,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,209,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,236,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,252,121,0,0,0,0,0,0,6,45,135,154,154,68,4,0,0,0,0,0,0,0,0,0,0,0,143,252,252,87,0,0,0,0,0,0,67,252,252,252,252,252,193,73,0,0,0,0,0,0,0,0,0,0,143,252,252,10,0,0,0,0,0,49,239,252,252,252,252,252,252,213,29,0,0,0,0,0,0,0,0,0,144,253,253,10,0,0,0,0,0,173,255,253,183,5,25,208,253,253,176,0,0,0,0,0,0,0,0,0,143,252,252,10,0,0,0,0,54,243,253,235,32,0,0,27,238,252,195,9,0,0,0,0,0,0,0,0,143,252,252,102,0,0,0,0,121,252,253,143,0,0,0,0,140,252,252,33,0,0,0,0,0,0,0,0,143,252,252,178,0,0,0,0,187,252,253,77,0,0,0,0,122,252,252,33,0,0,0,0,0,0,0,0,72,252,252,235,20,0,0,0,187,252,253,77,0,0,0,0,145,252,202,12,0,0,0,0,0,0,0,0,22,226,252,252,88,0,0,0,187,252,253,77,0,0,20,127,248,252,136,0,0,0,0,0,0,0,0,0,0,124,252,252,214,83,11,0,84,251,253,84,55,179,236,252,252,154,6,0,0,0,0,0,0,0,0,0,0,55,245,252,252,252,248,154,154,240,253,252,252,252,252,218,104,0,0,0,0,0,0,0,0,0,0,0,0,0,55,177,252,252,252,252,252,252,253,252,252,212,151,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,105,142,195,252,252,252,239,142,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,41,0,0,16,71,164,164,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,83,219,252,241,200,161,223,233,233,233,248,235,149,9,0,0,0,0,0,0,0,0,0,0,0,0,6,167,253,253,183,141,192,253,193,0,0,0,56,181,253,191,16,0,0,0,0,0,0,0,0,0,0,8,165,245,161,24,2,0,5,209,193,0,0,0,0,4,144,253,156,0,0,0,0,0,0,0,0,0,0,137,253,145,0,0,0,0,0,203,90,0,0,0,0,0,25,213,253,0,0,0,0,0,0,0,0,0,81,249,179,5,0,0,0,0,0,51,0,0,0,0,0,0,0,90,253,0,0,0,0,0,0,0,0,43,243,229,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,0,0,0,0,0,0,0,0,153,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,0,0,0,0,0,0,0,0,235,249,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,130,0,0,0,0,0,0,0,0,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,230,208,0,0,0,0,0,0,0,0,0,254,204,0,0,0,0,0,0,0,0,0,0,0,0,8,118,235,248,79,0,0,0,0,0,0,0,0,0,254,246,25,0,0,0,0,0,0,0,0,0,0,47,199,253,216,80,0,0,0,0,0,0,0,0,0,0,156,253,106,14,0,0,0,0,0,5,26,88,170,244,222,98,14,0,0,0,0,0,0,0,0,0,0,0,38,240,253,219,179,90,80,80,156,194,253,253,211,74,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,183,219,243,253,253,253,227,159,78,20,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,64,64,64,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,39,60,147,154,186,186,246,147,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,185,237,254,254,254,254,254,254,254,254,228,173,25,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,254,254,254,253,249,149,140,55,134,166,253,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,254,222,160,83,0,0,0,0,0,0,207,254,228,26,0,0,0,0,0,0,0,0,0,0,0,0,0,151,109,17,0,0,0,0,0,0,0,0,95,251,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,113,243,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,176,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,249,254,234,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,220,254,193,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,210,254,215,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,143,248,254,168,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,174,254,248,88,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,180,254,234,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,234,255,193,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,213,254,254,155,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,254,254,254,252,250,250,250,227,227,204,225,230,128,191,250,204,173,82,0,0,0,0,0,0,0,0,223,254,254,254,254,254,254,254,254,254,254,239,118,254,137,199,179,170,76,44,0,0,0,0,0,0,0,0,209,254,254,236,146,146,126,38,38,38,38,34,9,38,22,38,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,116,234,254,219,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,202,244,254,254,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,245,254,254,254,254,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,251,254,254,254,254,254,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,254,254,254,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,254,254,254,254,254,254,254,236,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,254,254,254,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,254,254,254,254,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,118,201,166,195,254,254,254,254,178,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,254,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,254,254,255,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,38,38,24,150,254,254,254,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,146,198,252,254,254,234,254,254,254,254,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,35,169,248,254,254,254,254,254,254,254,254,254,254,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,254,254,254,254,254,254,254,254,254,254,254,254,250,35,0,0,0,0,0,0,0,0,0,0,3,202,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,37,0,0,0,0,0,0,0,0,0,0,38,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,235,25,0,0,0,0,0,0,0,0,0,0,16,220,254,254,254,254,254,254,254,254,254,254,254,254,254,235,49,0,0,0,0,0,0,0,0,0,0,0,0,106,244,254,254,254,254,254,254,254,228,187,131,114,37,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,212,247,191,254,173,90,66,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,124,255,254,223,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,242,238,160,171,253,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,246,134,53,0,6,152,242,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,94,0,0,0,66,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,247,195,0,0,0,93,241,153,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,73,0,0,102,235,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,90,0,13,195,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,170,39,215,201,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,238,211,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,218,253,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,212,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,194,186,213,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,235,159,0,31,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,202,21,0,3,189,207,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,78,0,0,0,37,238,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,239,40,0,0,0,0,194,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,245,53,0,0,0,0,99,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,232,229,78,8,0,0,63,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,236,253,231,161,119,235,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,95,175,251,128,89,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,116,65,57,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,168,234,254,253,253,253,235,134,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,136,93,214,197,235,254,254,254,186,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,251,130,6,0,13,4,17,56,107,194,253,248,88,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,164,9,0,0,0,0,0,0,0,5,79,254,244,80,0,0,0,0,0,0,0,0,0,0,0,85,234,228,15,0,0,0,0,0,0,0,0,0,0,94,245,221,50,0,0,0,0,0,0,0,0,0,47,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,102,241,186,0,0,0,0,0,0,0,0,0,114,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,0,0,0,0,32,241,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,5,212,253,0,0,0,0,0,0,0,0,70,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,0,0,0,0,0,0,0,0,221,254,46,0,0,0,0,0,0,0,0,0,0,0,0,26,128,245,254,136,0,0,0,0,0,0,0,0,254,210,4,0,0,0,0,0,0,0,0,0,0,0,22,189,254,253,232,56,0,0,0,0,0,0,0,0,211,206,0,0,0,0,0,0,0,0,0,9,7,83,211,253,254,232,58,0,0,0,0,0,0,0,0,0,161,240,67,0,0,0,0,0,0,51,101,209,204,228,169,253,195,15,0,0,0,0,0,0,0,0,0,0,70,254,245,161,70,153,161,161,221,254,254,254,255,254,214,93,0,0,0,0,0,0,0,0,0,0,0,0,7,73,115,115,115,115,115,115,115,115,115,115,115,98,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,85,130,169,248,255,255,254,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,111,184,184,237,253,253,253,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,56,241,253,253,253,253,253,253,253,253,252,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,253,253,251,210,210,146,68,206,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,4,207,137,65,65,65,60,0,0,0,0,98,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,103,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,236,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,251,154,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,180,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,145,253,253,241,135,46,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,187,253,253,191,188,99,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,219,255,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,203,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,192,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,241,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,111,170,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,149,233,244,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,151,254,254,252,245,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,224,254,200,89,59,51,249,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,248,223,115,0,0,0,0,141,243,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,248,243,14,0,0,0,0,0,84,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,172,0,0,0,0,0,0,42,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,61,0,0,0,0,0,0,19,232,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,250,220,10,0,0,0,0,0,0,0,213,230,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,96,0,0,0,0,0,0,0,0,213,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,33,0,0,0,0,0,0,0,0,134,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,23,239,221,11,0,0,0,0,0,0,0,0,134,255,24,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,172,0,0,0,0,0,0,0,0,3,216,213,7,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,62,0,0,0,0,0,0,0,0,84,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,4,204,248,36,0,0,0,0,0,0,0,37,243,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,213,0,0,0,0,0,0,0,26,209,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,213,0,0,0,0,0,0,41,209,254,187,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,141,0,0,0,0,19,117,244,229,96,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,239,215,11,0,81,225,238,252,151,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,241,238,252,254,230,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,169,254,254,232,122,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,46,233,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,242,74,155,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,134,0,81,243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,246,0,0,33,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,166,0,0,100,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,40,0,0,157,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,0,0,22,247,218,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,206,0,5,163,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,122,0,68,254,223,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,10,6,225,254,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,255,202,254,243,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,200,254,237,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,243,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,218,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,225,225,192,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,241,29,34,250,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,250,101,0,86,251,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,97,169,253,230,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,241,254,206,95,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,47,5,0,9,47,89,161,66,194,228,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,190,185,197,252,252,252,253,252,252,227,131,0,0,0,0,0,0,0,0,0,0,0,0,0,9,114,240,252,252,253,252,252,252,252,253,252,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,252,252,253,231,221,210,189,86,137,106,22,12,0,0,0,0,0,0,0,0,0,0,0,9,128,255,253,253,234,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,149,92,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,239,144,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,253,252,215,116,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,63,127,230,247,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,244,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,176,244,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,138,191,97,181,255,253,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,252,252,249,185,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,195,130,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,139,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,131,177,145,80,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,137,232,254,254,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,228,254,254,254,254,254,247,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,227,254,254,194,105,233,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,226,254,254,193,19,11,223,242,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,141,254,254,192,20,12,173,241,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,213,21,0,68,211,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,185,254,243,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,230,254,187,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,254,221,20,0,0,0,0,22,69,69,69,69,5,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,174,0,0,0,21,112,217,254,254,254,254,148,4,0,0,0,0,0,0,0,0,0,0,0,55,234,254,184,17,0,18,112,219,254,254,254,254,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,143,254,244,61,0,0,160,254,254,229,167,64,43,126,254,254,12,0,0,0,0,0,0,0,0,0,0,11,239,254,177,0,0,19,208,254,229,53,0,0,35,218,254,158,2,0,0,0,0,0,0,0,0,0,0,62,254,232,12,0,0,50,254,199,22,0,0,35,218,254,254,33,0,0,0,0,0,0,0,0,0,0,0,137,254,229,0,0,0,50,254,192,0,32,146,239,254,213,36,2,0,0,0,0,0,0,0,0,0,0,0,137,254,241,113,41,75,140,254,220,207,242,254,254,158,87,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,254,254,247,251,254,254,254,254,254,158,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,142,255,255,255,255,254,224,130,32,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,245,254,254,254,254,211,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,254,253,253,253,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,137,129,46,105,158,253,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,152,253,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,255,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,253,222,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,119,222,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,153,161,229,254,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,245,253,253,253,254,227,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,253,253,253,254,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,160,160,228,254,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,229,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,38,0,0,0,0,0,0,112,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,221,198,0,0,0,0,0,9,187,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,115,0,0,0,0,43,184,254,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,255,237,120,19,0,38,187,254,254,241,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,254,253,253,236,231,243,253,253,241,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,197,251,253,253,254,253,253,202,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,160,194,254,253,135,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,118,189,255,241,59,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,231,253,253,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,229,253,253,205,202,253,253,232,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,95,6,3,78,229,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,236,253,149,8,0,0,0,166,253,238,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,201,7,0,0,0,0,166,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,249,253,195,2,0,0,0,0,108,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,125,0,0,0,0,59,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,105,212,184,66,0,0,0,0,166,253,240,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,253,198,9,0,0,0,0,0,0,0,0,0,0,0,0,24,113,113,113,113,50,0,0,0,0,0,12,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,2,173,253,253,253,253,251,249,221,95,2,6,189,253,251,69,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,229,224,224,253,253,253,253,165,195,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,47,0,3,88,108,217,253,253,253,253,212,31,0,0,0,0,0,0,0,0,0,0,0,0,0,10,164,253,155,38,0,0,11,110,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,231,146,201,210,253,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,151,253,253,253,253,253,253,176,54,131,253,235,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,185,253,242,135,53,4,0,61,251,239,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,112,159,220,254,254,254,254,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,105,238,253,253,254,253,253,253,253,253,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,167,253,253,253,246,185,135,91,146,248,253,249,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,208,98,22,0,0,0,0,169,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,245,253,188,11,0,0,0,0,0,60,245,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,8,237,253,244,42,0,0,7,0,0,15,237,253,251,69,0,0,0,0,0,0,0,0,0,0,0,0,0,10,253,253,136,0,0,0,95,85,168,209,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,246,178,206,199,223,254,253,253,253,151,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,243,253,253,253,253,253,253,254,253,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,152,235,221,159,114,65,254,253,246,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,170,255,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,0,206,253,254,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,245,253,185,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,220,253,247,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,227,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,120,245,253,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,253,253,240,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,221,235,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,204,253,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,253,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,194,252,252,253,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,204,253,253,178,204,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,252,170,85,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,253,208,13,150,253,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,231,252,252,190,59,0,225,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,204,253,253,228,51,0,0,226,254,253,56,0,16,10,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,252,233,22,0,38,95,243,253,252,187,169,216,196,131,7,0,0,0,0,0,0,0,0,0,45,215,252,253,252,146,185,198,234,252,252,253,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,13,194,252,252,253,252,252,252,253,252,252,252,253,252,252,202,140,139,139,15,0,0,0,0,0,0,0,0,26,244,253,253,255,247,247,228,226,225,235,253,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,196,196,134,65,66,9,0,0,160,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,128,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,255,191,191,128,128,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,191,0,0,0,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,64,0,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,64,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,64,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,191,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,128,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,128,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,157,171,255,196,77,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,246,254,254,254,254,254,194,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,254,254,254,249,251,209,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,254,254,254,162,85,41,135,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,254,66,0,0,11,189,233,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,124,254,221,60,12,0,0,0,42,239,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,37,0,0,0,0,0,0,141,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,203,4,0,0,0,0,0,0,141,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,195,254,89,0,0,0,0,0,0,0,61,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,240,20,0,0,0,0,0,0,0,48,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,236,0,0,0,0,0,0,0,0,48,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,136,0,0,0,0,0,0,0,0,48,254,213,5,0,0,0,0,0,0,0,0,0,0,0,0,8,204,252,45,0,0,0,0,0,0,0,0,86,254,250,9,0,0,0,0,0,0,0,0,0,0,0,0,104,254,206,0,0,0,0,0,0,0,0,0,169,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,206,0,0,0,0,0,0,0,0,43,246,236,6,0,0,0,0,0,0,0,0,0,0,0,0,0,58,216,245,38,0,0,0,0,0,0,47,190,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,144,0,0,0,0,0,125,209,254,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,250,246,151,95,57,57,176,253,254,188,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,248,254,254,254,254,254,225,93,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,159,215,254,254,135,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,66,138,149,180,138,138,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,162,161,228,252,252,253,252,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,189,184,110,119,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,161,160,77,45,4,0,0,70,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,205,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,240,253,157,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,42,30,78,161,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,185,228,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,179,252,253,252,252,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,255,253,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,89,244,253,223,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,123,142,234,252,252,184,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,168,43,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,142,0,0,41,152,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,171,20,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,244,81,0,0,51,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,122,0,0,0,173,252,253,232,203,122,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,192,0,0,11,51,254,253,254,253,254,233,183,20,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,70,0,41,132,252,253,252,253,171,50,30,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,172,214,253,254,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,253,252,253,252,253,252,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,203,122,41,0,173,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,172,50,0,0,0,41,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,255,233,0,0,0,0,0,102,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,233,50,0,0,0,0,0,142,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,41,0,0,0,0,0,0,203,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,151,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,173,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,156,252,244,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,249,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,128,115,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,48,115,232,245,254,255,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,73,180,238,254,252,224,179,119,110,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,197,209,243,254,254,211,131,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,244,254,254,213,151,22,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,198,254,207,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,175,254,195,20,22,62,62,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,252,254,225,240,245,254,254,236,164,101,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,254,254,242,216,216,167,140,140,238,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,229,238,114,31,0,0,0,0,0,25,86,246,229,15,0,0,0,0,0,0,0,0,0,0,0,0,65,23,7,10,0,0,0,0,0,0,0,0,26,241,243,23,0,0,0,0,0,0,0,0,0,0,0,0,237,176,7,0,0,0,0,0,0,0,0,0,20,236,246,31,0,0,0,0,0,0,0,0,0,0,0,0,168,247,104,0,0,0,0,0,0,0,0,0,19,235,213,0,0,0,0,0,0,0,0,0,0,0,0,0,65,230,253,153,10,0,0,0,0,0,0,0,76,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,221,254,208,82,0,0,0,0,0,49,223,242,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,191,254,245,225,161,148,148,191,253,254,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,80,198,235,254,254,254,254,242,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,53,53,53,53,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,255,170,141,141,170,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,141,29,0,0,0,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,57,0,0,0,0,0,0,0,0,114,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,86,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,198,255,29,0,0,0,0,0,0,0,0,0,170,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,29,0,0,0,0,0,0,0,0,170,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,86,86,86,0,0,86,141,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,255,255,255,255,255,170,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,0,57,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,198,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,157,82,71,71,71,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,120,203,252,253,253,253,253,253,246,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,253,222,152,114,71,65,171,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,210,125,20,0,0,0,0,106,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,240,240,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,240,245,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,58,153,253,206,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,151,175,254,253,253,253,253,138,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,254,255,254,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,219,253,253,228,183,128,44,143,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,17,17,11,0,0,0,140,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,197,253,169,21,0,0,0,0,0,0,0,0,0,0,0,0,51,123,102,4,0,0,0,0,0,0,121,237,223,83,6,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,128,99,100,114,120,201,201,254,212,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,253,253,253,253,253,253,240,235,151,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,91,156,156,144,70,70,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,159,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,236,189,226,225,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,73,197,253,252,252,252,220,222,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,252,233,37,113,252,233,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,127,112,99,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,253,253,253,255,27,0,0,0,0,226,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,126,238,252,252,252,127,27,3,0,0,0,0,225,252,130,0,0,0,0,0,0,0,0,0,0,0,0,7,165,253,252,239,211,25,0,0,0,0,0,26,231,252,114,0,0,0,0,0,0,0,0,0,0,0,7,131,252,253,242,96,47,0,0,0,0,0,0,113,252,252,84,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,167,0,0,0,0,0,0,0,0,113,252,220,37,0,0,0,0,0,0,0,0,0,0,0,57,253,253,192,12,0,0,0,0,0,0,0,63,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,182,252,127,27,3,0,0,0,0,0,0,0,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,98,240,198,25,0,0,0,0,0,0,0,0,23,227,253,233,74,0,0,0,0,0,0,0,0,0,0,76,243,198,28,0,0,0,0,0,0,0,0,23,54,252,253,167,0,0,0,0,0,0,0,0,0,0,0,113,204,25,0,0,0,0,0,0,0,63,140,227,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,114,90,0,0,0,0,0,26,128,253,255,253,253,253,253,141,15,0,0,0,0,0,0,0,0,0,0,0,113,243,116,85,163,163,57,104,252,252,253,252,233,167,89,0,0,0,0,0,0,0,0,0,0,0,0,0,88,246,252,252,252,253,233,240,252,252,253,201,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,226,246,233,161,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,220,128,252,253,27,119,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,121,24,0,0,0,2,21,34,121,121,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,190,175,175,175,183,254,254,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,246,254,254,254,254,254,254,254,254,254,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,254,254,254,254,182,169,169,99,70,70,70,42,0,0,0,0,0,0,0,0,0,0,0,0,12,142,251,254,254,254,254,158,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,254,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,238,254,254,247,204,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,140,149,47,79,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,233,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,158,215,215,68,0,0,53,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,241,27,0,85,250,254,193,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,252,225,225,247,254,255,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,209,254,254,254,254,254,254,155,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,85,120,120,120,120,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,91,149,196,138,54,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,86,249,254,254,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,104,254,246,202,177,202,247,254,222,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,132,0,0,0,189,254,254,166,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,246,254,187,3,0,0,0,71,226,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,162,254,242,59,0,0,0,0,0,106,228,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,254,177,0,0,0,0,0,0,0,124,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,67,0,0,0,0,0,0,0,124,254,248,22,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,207,2,0,0,0,0,0,0,0,124,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,204,0,0,0,0,0,0,0,0,124,254,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,176,0,0,0,0,0,0,0,0,124,254,253,24,0,0,0,0,0,0,0,0,0,0,0,0,10,219,254,123,0,0,0,0,0,0,0,0,124,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,23,248,254,130,0,0,0,0,0,0,0,0,124,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,204,0,0,0,0,0,0,0,0,124,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,204,0,0,0,0,0,0,0,0,124,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,246,43,0,0,0,0,0,0,34,217,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,254,199,6,0,0,0,0,0,133,254,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,211,125,66,45,72,156,248,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,101,244,254,254,254,249,254,254,254,141,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,137,222,254,254,248,137,53,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,111,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,249,133,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,244,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,165,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,162,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,248,216,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,172,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,219,250,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,103,0,0,0,0,0,0,72,150,78,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,109,0,0,0,0,0,96,246,254,254,238,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,69,0,0,0,0,16,238,254,250,181,241,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,230,0,0,0,0,0,112,254,162,51,21,205,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,230,0,0,0,0,0,112,254,136,79,205,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,230,0,0,0,0,1,114,254,254,254,253,147,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,246,164,71,75,164,181,254,254,243,183,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,254,254,240,155,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,189,152,155,158,158,67,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,76,147,193,233,246,122,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,198,254,254,254,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,252,253,242,71,72,196,254,242,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,0,9,203,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,222,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,248,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,249,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,198,254,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,224,233,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,251,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,252,253,134,3,0,0,0,189,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,136,0,0,0,16,153,251,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,221,254,138,4,0,0,63,222,254,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,213,34,33,103,181,252,254,228,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,254,254,254,248,158,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,254,217,146,146,107,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,7,7,2,2,7,7,108,131,238,207,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,195,212,254,254,171,166,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,254,251,249,241,236,199,112,112,234,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,105,105,105,85,75,28,0,0,0,52,240,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,250,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,245,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,174,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,138,216,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,254,238,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,188,254,245,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,231,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,231,244,0,19,55,125,124,55,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,248,114,219,254,254,254,254,242,114,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,254,234,233,193,180,247,254,170,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,171,7,0,0,0,58,223,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,215,12,0,0,0,0,0,39,247,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,220,254,205,0,0,0,0,0,0,0,245,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,239,174,174,63,0,0,0,26,247,255,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,188,254,254,152,16,0,0,0,188,254,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,187,254,150,119,33,43,167,254,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,208,254,254,254,254,254,197,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,137,215,215,192,121,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,236,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,203,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,226,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,244,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,39,0,0,0,0,7,50,62,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,223,9,0,0,0,28,183,254,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,214,0,0,0,10,200,235,141,204,196,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,214,0,0,0,40,253,55,0,70,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,214,0,0,8,194,213,6,0,28,242,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,190,0,0,20,253,158,0,0,76,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,214,0,0,20,253,75,0,0,135,239,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,226,12,0,92,253,87,0,91,249,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,39,0,68,254,211,200,255,166,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,143,3,8,193,253,253,166,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,217,218,253,253,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,223,248,163,79,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,178,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,210,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,240,180,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,199,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,164,242,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,174,247,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,164,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,248,42,0,0,0,0,0,0,38,116,116,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,106,0,0,0,0,0,0,85,247,253,253,210,9,0,0,0,0,0,0,0,0,0,0,0,0,7,170,236,17,0,0,0,0,7,104,254,254,197,184,255,23,0,0,0,0,0,0,0,0,0,0,0,0,24,253,134,0,0,0,0,0,91,253,224,106,4,17,254,23,0,0,0,0,0,0,0,0,0,0,0,0,24,253,17,0,0,0,7,157,242,128,17,0,70,224,188,4,0,0,0,0,0,0,0,0,0,0,0,0,7,203,68,0,0,0,70,253,238,25,0,17,224,219,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,119,0,0,0,187,224,17,0,95,212,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,248,97,9,51,254,73,30,206,254,194,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,242,215,224,254,211,228,168,80,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,160,160,195,160,85,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,52,148,192,254,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,185,252,252,252,253,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,127,245,252,251,231,187,127,205,251,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,225,252,253,231,129,70,169,27,0,77,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,252,252,129,28,62,239,252,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,250,185,62,0,68,245,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,117,0,36,146,237,252,252,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,252,136,197,241,253,252,251,178,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,252,252,252,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,147,200,252,252,253,94,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,221,252,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,252,167,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,232,252,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,226,252,199,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,210,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,130,210,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,171,252,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,85,252,244,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,252,155,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,255,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,199,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,252,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,155,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,237,252,184,173,191,190,181,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,245,252,252,252,252,253,252,252,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,252,252,252,226,128,84,239,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,253,252,199,121,24,0,71,249,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,218,253,247,97,0,0,0,25,201,253,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,211,0,0,22,94,227,252,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,245,252,211,0,38,237,244,253,122,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,239,169,246,252,252,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,147,253,252,252,226,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,0,0,0,0,0,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,226,170,170,170,226,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,226,255,255,226,198,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,56,136,155,149,56,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,11,121,227,254,254,254,254,254,223,142,65,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,227,254,254,254,254,254,254,254,254,254,203,223,58,0,0,0,0,0,0,0,0,0,0,0,0,0,30,213,254,236,134,36,35,35,35,102,223,93,35,242,213,13,0,0,0,0,0,0,0,0,0,0,0,0,23,238,254,185,0,0,0,0,0,0,0,0,0,91,254,125,0,0,0,0,0,0,0,0,0,0,0,0,37,230,254,186,43,0,0,0,0,0,0,0,0,45,250,196,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,87,0,0,0,0,0,0,0,0,138,252,181,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,254,244,60,0,0,0,0,0,0,51,226,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,7,132,249,254,160,19,0,0,0,47,166,250,254,237,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,90,114,156,250,252,254,254,237,91,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,254,254,254,254,254,254,251,196,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,94,175,254,254,254,254,254,254,113,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,63,116,210,254,254,254,254,254,221,133,40,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,254,254,216,147,185,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,244,254,208,118,30,14,47,241,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,242,202,128,24,0,0,76,185,254,221,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,177,135,97,147,235,253,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,254,254,254,254,254,185,106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,152,227,231,237,214,136,110,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,26,33,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,128,244,194,123,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,63,47,152,218,253,253,166,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,73,253,234,210,28,0,89,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,162,11,0,46,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,239,137,11,0,40,229,253,245,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,29,24,0,0,0,217,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,125,168,252,253,253,205,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,99,220,253,253,253,252,230,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,168,253,253,253,253,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,164,250,253,253,253,253,203,87,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,243,253,253,253,253,172,59,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,243,253,253,253,200,85,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,208,253,253,253,143,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,149,1,0,8,40,130,174,196,125,12,12,12,3,0,0,0,0,0,0,0,0,0,0,3,165,253,253,253,209,148,148,214,253,253,253,253,253,253,253,253,169,46,16,0,0,0,0,0,0,0,0,172,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,234,110,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,208,208,253,253,253,253,133,70,70,43,0,0,0,0,0,0,0,0,0,255,253,253,253,224,170,170,105,53,16,16,151,246,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,145,23,0,0,0,0,0,0,0,32,40,153,53,0,0,0,0,0,0,0,0,0,0,0,0,2,160,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,141,154,253,253,253,242,116,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,252,252,252,253,252,149,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,252,253,252,148,56,216,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,252,252,253,151,6,0,41,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,204,253,253,178,51,0,0,0,26,244,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,194,253,252,170,9,0,0,0,0,7,187,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,253,233,37,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,26,231,252,252,228,22,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,13,204,253,253,241,51,0,0,0,0,0,0,0,41,253,253,78,0,0,0,0,0,0,0,0,0,0,0,188,253,252,208,59,0,0,0,0,0,0,0,0,166,252,233,22,0,0,0,0,0,0,0,0,0,0,104,246,253,252,56,0,0,0,0,0,0,0,0,89,253,252,130,0,0,0,0,0,0,0,0,0,0,26,222,252,253,151,6,0,0,0,0,0,0,0,0,163,253,252,56,0,0,0,0,0,0,0,0,0,4,128,253,253,214,0,0,0,0,0,0,0,0,0,98,253,255,134,0,0,0,0,0,0,0,0,0,0,54,252,252,177,38,0,0,0,0,0,0,0,0,13,209,252,234,28,0,0,0,0,0,0,0,0,0,0,141,252,252,52,0,0,0,0,0,0,0,0,10,172,252,252,137,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,0,0,0,51,179,252,252,151,13,0,0,0,0,0,0,0,0,0,0,0,29,253,253,203,129,29,29,16,29,29,117,241,255,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,252,252,215,253,252,252,252,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,7,81,234,252,253,252,252,252,253,252,252,252,194,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,78,153,252,252,202,253,227,139,90,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,255,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,225,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,193,253,246,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,227,253,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,211,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,228,253,241,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,231,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,214,16,19,75,75,75,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,234,253,253,244,205,217,253,253,253,213,99,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,187,129,37,37,106,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,236,129,9,0,0,30,148,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,210,0,0,0,29,210,253,253,163,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,250,150,112,142,241,253,253,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,102,253,253,253,253,253,253,253,216,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,103,253,253,253,253,220,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,152,255,255,91,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,231,253,253,253,253,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,229,253,253,253,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,147,253,253,253,253,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,194,253,253,253,253,181,235,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,182,253,253,253,253,211,19,205,253,253,152,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,253,253,253,253,253,253,134,105,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,240,167,80,80,80,109,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,54,228,253,253,253,157,0,0,0,0,127,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,253,253,208,47,0,0,0,0,223,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,7,152,253,253,253,238,50,0,0,0,0,0,223,253,253,221,4,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,239,79,0,0,0,0,0,74,247,253,253,100,0,0,0,0,0,0,0,0,0,0,0,55,233,253,253,253,164,0,0,0,0,0,28,205,253,253,253,12,0,0,0,0,0,0,0,0,0,0,11,235,253,253,253,174,14,0,0,0,0,71,205,253,253,253,160,2,0,0,0,0,0,0,0,0,0,0,120,253,253,253,240,55,0,0,0,26,129,246,253,253,253,163,21,0,0,0,0,0,0,0,0,0,0,55,240,253,253,241,71,0,0,71,129,231,253,253,253,253,118,18,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,235,106,106,191,246,253,253,253,253,217,103,3,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,253,253,253,253,124,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,253,253,253,253,253,221,100,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,138,253,253,253,253,168,129,38,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,130,151,151,151,151,202,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,97,210,254,254,254,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,190,247,254,254,254,254,242,252,254,254,159,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,234,254,254,253,171,88,67,44,87,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,254,242,160,37,0,0,0,0,32,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,26,234,254,234,54,0,0,0,0,0,0,32,254,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,20,223,254,246,34,0,0,0,0,0,6,173,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,250,254,213,141,11,0,0,36,172,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,251,254,254,218,110,110,235,254,254,174,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,147,237,254,254,254,254,236,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,137,254,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,253,166,200,254,233,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,234,221,74,0,47,252,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,118,0,0,0,250,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,146,9,0,0,140,254,211,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,92,0,0,36,238,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,225,11,99,186,254,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,205,254,254,254,254,232,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,199,254,252,129,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,138,201,253,255,232,107,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,252,210,207,214,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,233,89,6,0,13,202,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,183,0,0,0,0,159,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,79,0,0,0,0,63,43,220,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,232,38,0,0,0,0,7,212,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,252,154,30,0,0,9,155,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,227,184,132,197,252,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,119,160,236,252,253,252,227,160,244,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,0,0,61,85,75,22,16,0,178,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,11,0,0,0,0,0,0,0,0,231,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,116,0,0,0,0,0,0,0,0,157,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,116,0,0,0,0,0,0,0,0,116,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,63,0,0,0,0,0,0,0,0,116,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,116,0,0,0,0,0,0,0,0,220,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,244,61,0,0,0,0,0,38,233,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,217,253,236,129,9,0,0,30,155,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,252,196,80,185,228,252,227,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,219,252,252,252,253,252,252,119,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,54,179,147,190,117,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,118,151,208,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,82,82,107,189,251,253,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,194,253,253,253,253,253,253,249,229,105,4,0,0,0,0,0,0,0,0,0,0,0,0,0,95,157,104,14,215,253,253,253,214,193,97,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,167,247,253,233,16,13,59,59,59,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,173,245,253,253,243,118,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,199,253,253,253,253,130,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,253,253,175,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,218,244,253,253,253,253,253,239,108,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,122,57,86,86,185,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,163,40,0,3,175,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,248,244,244,250,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,159,245,253,253,253,253,253,242,81,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,168,253,161,150,114,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,125,254,254,206,118,118,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,236,253,253,253,253,253,253,241,155,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,179,204,253,253,253,253,234,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,235,213,61,2,22,61,87,234,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,33,0,0,0,0,0,165,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,170,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,220,253,253,189,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,224,253,253,246,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,90,222,253,253,195,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,164,253,253,253,227,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,230,253,253,253,253,209,182,49,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,253,253,253,253,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,109,109,109,198,250,253,253,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,197,253,253,213,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,194,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,121,244,253,253,213,115,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,63,204,253,253,253,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,179,179,217,253,253,253,245,123,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,235,121,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,209,246,116,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,145,254,229,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,228,109,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,249,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,247,224,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,245,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,164,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,253,128,155,213,98,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,253,253,254,253,239,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,253,45,11,11,17,143,253,251,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,169,0,0,0,0,0,152,255,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,0,16,194,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,0,0,49,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,0,0,49,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,0,9,155,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,193,11,0,0,0,0,129,253,236,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,253,166,8,0,0,61,235,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,221,103,104,238,253,211,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,158,253,253,253,254,253,168,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,58,242,253,249,121,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,33,101,101,131,154,177,248,212,236,41,0,0,0,0,0,0,0,0,0,0,0,0,0,34,96,101,182,218,254,254,254,255,217,207,203,172,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,30,140,137,184,182,108,108,61,31,7,0,0,29,243,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,239,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,222,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,234,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,227,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,71,202,134,0,0,0,0,0,0,0,0,40,52,202,192,155,0,0,0,0,0,0,0,0,0,0,0,248,254,254,169,0,0,0,0,0,0,0,0,217,255,254,232,58,0,0,0,0,0,0,0,0,0,0,144,254,254,254,75,0,0,0,0,0,26,197,248,254,254,215,34,3,0,0,0,0,0,0,0,0,0,154,229,254,249,216,49,0,0,0,0,19,192,254,254,245,211,35,0,0,0,0,0,0,0,0,0,0,56,231,254,254,216,0,0,0,0,0,99,196,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,248,254,254,254,134,86,86,86,86,132,250,254,254,254,254,251,236,50,0,0,0,0,0,0,0,0,0,0,237,254,254,254,254,254,254,254,254,254,254,254,254,254,254,247,125,40,0,0,0,0,0,0,0,0,0,0,102,254,254,254,254,254,254,254,254,254,254,254,254,166,123,93,0,0,0,0,0,0,0,0,0,0,0,0,9,22,22,173,177,177,250,254,254,254,247,177,40,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,233,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,241,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,192,254,254,194,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,235,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,200,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,91,218,254,254,254,254,255,95,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,253,251,180,164,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,253,253,253,253,253,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,249,220,82,56,56,56,216,242,253,253,253,244,95,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,140,0,0,0,0,0,0,89,129,222,253,253,185,16,0,0,0,0,0,0,0,0,0,0,0,0,145,203,46,0,0,0,0,0,0,0,0,83,253,253,227,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,224,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,66,177,239,253,253,242,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,216,253,253,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,246,252,253,253,253,253,229,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,245,98,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,253,253,228,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,65,65,65,65,177,253,253,253,253,220,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,116,93,0,0,0,0,5,138,149,253,253,253,221,48,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,244,93,0,0,0,0,0,5,123,245,253,253,225,13,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,186,12,0,0,0,0,0,0,205,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,224,222,222,222,222,222,222,247,253,253,219,12,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,33,179,241,253,253,253,253,253,253,253,253,253,253,151,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,89,89,89,89,95,253,237,89,89,89,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,66,56,165,224,255,254,199,96,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,214,253,253,253,253,254,253,253,253,233,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,235,254,253,174,107,47,72,47,87,222,253,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,27,205,253,225,101,6,0,0,0,0,12,220,253,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,228,35,0,0,0,0,0,0,123,253,253,129,196,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,204,10,0,0,0,0,21,189,254,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,230,190,190,190,190,254,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,198,253,254,253,253,253,253,254,253,253,241,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,160,234,253,253,253,253,254,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,50,55,16,16,179,253,238,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,255,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,249,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,237,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,244,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,244,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,199,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,81,244,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,239,132,215,155,71,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,226,254,254,237,232,254,254,187,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,229,252,151,67,15,2,95,251,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,229,254,105,0,0,0,0,0,185,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,229,254,102,1,0,0,0,0,0,157,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,251,232,105,1,0,0,0,0,0,0,240,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,102,43,0,0,0,0,0,0,0,0,246,226,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,247,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,125,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,199,205,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,214,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,77,77,189,188,77,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,149,194,225,254,254,254,254,254,253,194,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,235,254,254,254,254,254,254,254,254,254,254,221,42,0,0,0,0,0,0,0,0,0,0,0,0,0,66,238,254,254,254,241,106,103,103,103,103,182,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,61,245,254,254,165,117,0,0,0,0,0,0,7,254,201,17,0,0,0,0,0,0,0,0,0,0,0,0,253,254,254,140,2,0,0,0,0,0,0,0,7,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,186,7,0,0,0,0,0,0,0,0,56,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,22,48,34,0,0,0,0,0,0,0,0,61,234,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,183,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,231,255,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,254,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,230,254,254,251,125,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,239,254,254,254,254,254,249,242,208,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,254,255,254,254,254,254,254,249,210,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,254,209,103,55,55,55,100,192,202,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,199,101,20,0,0,0,0,0,0,13,87,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,44,169,254,217,137,31,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,143,143,143,143,168,254,254,254,254,254,254,156,31,2,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,254,254,249,168,135,222,254,254,254,254,254,103,2,0,0,0,0,0,0,0,0,0,0,0,27,214,254,250,167,254,183,0,0,175,223,223,250,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,143,254,254,137,44,254,74,0,0,0,0,0,186,250,254,254,211,22,0,0,0,0,0,0,0,0,0,30,217,254,249,77,119,126,25,0,0,0,0,0,0,77,217,254,254,130,0,0,0,0,0,0,0,0,2,160,254,254,199,0,40,0,0,0,0,0,0,0,0,0,107,254,254,154,0,0,0,0,0,0,0,0,7,254,254,237,29,0,0,0,0,0,0,0,0,0,0,0,195,254,254,254,0,0,0,0,0,0,0,0,37,254,254,229,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,254,0,0,0,0,0,0,0,0,131,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,0,0,0,0,0,0,0,0,131,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,75,249,254,254,0,0,0,0,0,0,0,0,171,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,215,0,0,0,0,0,0,0,0,213,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,37,243,254,26,0,0,0,0,0,0,0,0,192,254,254,150,0,0,0,0,0,0,0,0,0,0,0,37,160,254,211,4,0,0,0,0,0,0,0,0,83,254,254,252,148,100,83,0,0,0,0,0,0,35,145,236,254,254,88,0,0,0,0,0,0,0,0,0,7,254,254,254,254,254,250,231,231,169,231,231,231,239,254,254,255,101,2,0,0,0,0,0,0,0,0,0,1,85,205,254,254,254,254,254,254,254,254,254,254,254,254,210,91,2,0,0,0,0,0,0,0,0,0,0,0,0,7,24,136,136,156,254,254,254,164,136,136,136,30,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,6,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,198,0,0,0,239,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,233,0,0,31,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,142,0,0,113,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,99,0,0,195,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,218,15,0,25,231,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,113,0,0,47,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,73,0,204,253,68,0,0,166,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,246,251,234,251,185,0,0,0,234,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,239,171,148,253,253,208,38,0,61,248,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,82,201,254,125,218,255,126,119,244,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,254,243,106,3,15,158,250,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,116,72,0,0,0,0,117,253,241,101,79,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,223,253,253,229,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,147,58,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,246,190,121,121,121,121,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,253,252,252,252,242,212,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,218,252,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,53,53,53,232,252,252,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,245,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,242,252,252,241,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,252,252,243,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,139,253,252,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,255,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,192,252,252,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,202,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,240,252,248,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,252,245,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,208,252,224,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,246,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,217,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,149,81,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,207,252,252,252,252,139,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,135,247,252,252,253,186,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,248,252,253,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,118,253,252,244,193,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,213,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,252,245,188,97,154,142,108,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,252,252,252,252,252,210,190,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,190,252,252,252,252,217,34,7,5,1,0,0,0,0,0,0,0,0,0,0,0,0,3,13,111,237,253,253,255,253,253,228,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,170,252,252,252,252,252,253,252,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,54,221,252,252,252,238,216,233,253,252,247,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,252,238,106,52,0,143,253,247,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,222,252,241,163,51,0,0,27,244,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,252,252,112,0,0,0,109,218,252,209,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,124,0,65,182,246,252,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,245,217,244,252,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,210,92,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,143,252,252,252,252,154,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,157,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,252,252,211,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,252,252,252,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,252,252,252,187,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,209,252,252,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,253,253,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,78,245,253,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,157,252,252,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,31,153,249,253,252,252,252,103,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,197,252,252,252,253,252,247,162,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,236,252,252,252,252,253,217,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,254,253,253,253,253,255,95,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,253,252,252,252,252,253,252,212,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,232,253,252,252,252,252,253,252,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,183,252,252,252,252,253,252,252,252,226,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,68,42,113,147,104,191,147,121,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,218,254,254,148,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,245,220,128,136,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,30,0,0,235,224,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,16,0,28,238,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,99,8,206,254,178,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,233,240,236,106,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,204,255,237,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,236,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,175,216,117,239,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,117,0,156,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,116,0,0,60,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,184,12,0,0,55,251,211,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,184,214,12,0,0,0,0,185,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,106,0,0,0,0,0,103,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,99,0,0,0,0,0,58,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,97,9,0,0,0,0,16,237,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,130,6,0,0,0,2,182,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,169,6,0,0,20,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,165,254,236,197,137,146,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,89,208,254,254,254,193,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,94,133,226,254,254,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,212,253,253,253,253,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,95,209,253,253,253,253,253,253,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,206,253,254,253,246,205,119,84,222,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,243,253,253,254,207,62,0,0,53,240,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,253,118,26,0,0,0,108,253,253,170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,168,168,53,0,0,0,0,50,242,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,170,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,213,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,106,254,254,245,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,145,145,88,13,47,253,253,218,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,124,185,253,253,253,253,209,253,253,229,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,226,253,253,253,253,253,253,254,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,226,253,239,101,92,236,253,253,254,253,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,4,148,253,181,63,108,214,253,253,253,216,187,253,253,210,18,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,222,217,253,253,253,253,172,23,17,221,253,253,182,16,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,216,47,2,0,0,54,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,18,207,253,253,227,144,46,15,0,0,0,0,4,177,253,253,235,33,0,0,0,0,0,0,0,0,0,0,0,7,11,11,9,0,0,0,0,0,0,0,0,8,128,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,193,4,0,0,0,3,63,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,198,254,254,187,222,222,222,223,254,159,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,254,254,254,254,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,254,254,254,254,254,254,254,254,254,158,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,254,254,254,206,134,128,38,239,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,254,138,22,0,0,0,236,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,247,216,89,2,0,0,0,75,254,254,239,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,12,0,0,0,0,0,122,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,199,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,239,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,225,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,255,253,86,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,253,251,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,226,168,169,168,254,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,138,56,0,0,0,253,251,253,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,253,114,0,0,0,0,0,0,114,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,0,0,0,0,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,255,253,226,56,0,0,0,0,0,0,0,0,57,225,254,253,0,0,0,0,0,0,0,0,0,0,0,114,253,251,168,0,0,0,0,0,0,0,0,0,0,168,253,251,0,0,0,0,0,0,0,0,0,0,0,169,254,253,169,0,0,0,0,0,0,0,0,0,0,0,254,253,0,0,0,0,0,0,0,0,0,0,0,168,253,251,56,0,0,0,0,0,0,0,0,0,0,0,253,251,0,0,0,0,0,0,0,0,0,0,0,169,254,253,0,0,0,0,0,0,0,0,0,0,0,57,254,253,0,0,0,0,0,0,0,0,0,0,0,168,253,251,114,0,0,0,0,0,0,0,0,0,57,224,253,251,0,0,0,0,0,0,0,0,0,0,0,114,254,253,198,28,0,0,0,0,0,0,0,0,141,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,85,28,0,0,0,0,0,0,198,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,28,196,253,251,253,196,0,0,0,0,0,0,197,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,198,85,85,85,141,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,251,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,254,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,83,253,251,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,24,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,212,96,0,0,0,0,0,16,102,196,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,249,0,0,0,0,0,114,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,249,0,0,0,0,0,202,254,246,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,249,0,0,0,0,34,240,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,249,0,0,0,0,96,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,254,190,0,0,0,0,209,254,254,239,180,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,129,0,0,0,0,214,254,254,254,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,129,0,0,58,160,240,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,214,127,178,232,254,255,254,254,206,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,254,254,254,254,254,254,254,245,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,159,244,254,254,254,255,254,255,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,82,141,141,114,23,218,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,237,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,129,253,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,207,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,120,253,252,252,252,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,181,252,253,252,252,252,253,221,144,62,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,252,252,253,252,252,252,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,149,252,252,252,253,148,35,119,222,179,231,252,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,231,72,10,0,0,41,0,51,154,253,231,52,0,0,0,0,0,0,0,0,0,0,0,21,206,252,252,148,46,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,72,0,0,0,0,0,0,0,0,0,255,253,72,0,0,0,0,0,0,0,0,0,0,0,161,252,252,189,10,0,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,0,0,181,252,252,76,0,0,0,0,0,0,0,0,6,120,253,252,71,0,0,0,0,0,0,0,0,0,0,42,221,252,252,35,0,0,0,0,0,0,0,0,37,252,253,210,31,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,0,0,0,0,32,212,253,208,20,0,0,0,0,0,0,0,0,0,0,0,73,252,252,143,0,0,0,0,0,0,0,32,207,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,31,211,252,159,5,0,0,0,0,0,105,212,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,35,0,0,0,125,144,206,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,211,109,109,171,253,253,253,255,222,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,252,253,252,252,252,222,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,154,252,252,252,252,253,252,226,132,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,232,252,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,127,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,235,212,211,158,106,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,243,211,255,253,253,253,253,255,160,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,110,0,63,63,63,63,107,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,127,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,235,212,131,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,236,219,253,191,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,231,54,11,170,252,140,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,231,86,0,0,7,172,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,196,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,28,0,0,0,0,0,0,0,0,136,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,170,127,22,22,2,15,22,128,206,251,252,190,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,198,253,252,175,225,252,253,252,247,119,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,252,252,252,252,147,147,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,217,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,217,254,88,111,143,46,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,165,254,254,254,254,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,248,231,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,219,254,254,204,73,142,254,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,168,254,248,128,28,10,199,243,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,180,254,254,131,0,10,156,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,163,254,254,205,27,0,78,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,250,180,27,0,63,233,254,118,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,180,57,0,0,11,192,183,62,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,162,183,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,163,254,87,0,0,0,0,0,0,0,0,0,34,136,206,5,0,0,0,0,0,0,0,0,0,0,7,165,254,120,15,0,0,0,0,0,0,0,33,197,230,254,254,6,0,0,0,0,0,0,0,0,0,0,19,254,243,59,0,0,0,0,0,0,30,136,232,254,254,167,42,1,0,0,0,0,0,0,0,0,0,0,129,254,223,0,0,0,0,0,0,79,210,254,254,215,103,3,0,0,0,0,0,0,0,0,0,0,0,12,244,254,111,0,0,0,0,27,139,249,221,148,42,15,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,254,153,0,75,113,140,241,254,221,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,254,253,243,251,254,254,254,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,255,255,255,230,103,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,152,81,0,130,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,177,247,254,248,20,130,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,204,248,254,254,254,141,43,223,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,111,245,254,252,249,254,151,8,185,254,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,254,249,166,74,162,213,22,136,254,250,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,234,254,230,40,0,32,34,24,145,252,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,38,0,0,0,6,169,254,254,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,235,3,0,0,60,218,254,254,143,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,214,2,0,103,249,254,238,90,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,98,52,238,254,224,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,254,254,254,254,229,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,213,254,254,254,125,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,237,254,254,254,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,254,252,233,254,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,254,250,154,220,254,242,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,158,92,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,237,254,254,247,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,254,254,245,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,182,254,215,130,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,191,128,128,128,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,191,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,43,114,148,254,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,201,252,252,252,252,253,252,252,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,245,231,205,126,127,126,29,123,252,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,215,172,56,0,0,0,0,0,0,64,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,64,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,252,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,244,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,94,137,137,137,245,189,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,164,254,254,254,254,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,213,254,254,242,201,201,225,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,148,254,254,190,50,0,0,29,162,247,168,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,203,254,254,193,18,0,0,0,0,172,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,249,13,0,0,0,0,0,250,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,134,0,0,0,0,0,109,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,31,226,254,254,129,0,0,0,0,0,114,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,129,0,0,0,0,0,188,254,254,224,26,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,254,214,60,50,42,60,105,248,254,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,199,254,254,254,254,245,237,254,254,254,254,254,244,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,237,254,254,254,254,255,254,255,254,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,73,194,205,254,93,23,23,76,252,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,5,2,0,0,0,250,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,255,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,210,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,149,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,233,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,186,251,241,200,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,186,251,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,251,251,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,247,140,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,251,229,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,174,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,251,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,244,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,172,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,170,241,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,210,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,230,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,185,9,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,159,224,42,0,0,0,0,0,0,0,0,0,0,0,20,225,0,0,0,0,0,0,0,0,0,0,7,153,241,87,0,0,0,0,0,0,0,0,0,0,10,124,220,135,0,0,0,0,0,0,0,0,0,11,165,243,104,0,0,0,0,0,0,0,0,0,0,21,195,219,113,0,0,0,0,0,0,0,0,0,6,191,248,49,0,0,0,0,0,0,0,0,0,0,69,216,165,17,0,0,0,0,0,0,0,0,0,0,227,253,155,40,46,76,101,21,0,0,0,31,22,106,242,187,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,254,254,254,254,221,175,175,88,133,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,127,96,96,96,51,81,26,5,0,0,0,148,253,153,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,200,254,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,184,238,65,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,84,228,236,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,236,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,211,221,144,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,238,253,253,253,255,200,133,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,253,253,253,253,254,253,253,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,73,253,253,253,213,73,11,10,145,253,223,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,176,0,0,0,0,171,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,176,0,0,0,0,46,253,211,56,0,0,0,0,0,0,0,0,0,0,0,0,0,53,248,253,253,89,89,173,63,0,0,0,22,250,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,238,18,0,0,0,0,0,0,0,166,253,242,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,236,67,0,0,0,0,0,0,0,0,84,253,251,74,0,0,0,0,0,0,0,0,0,0,0,67,253,253,198,0,0,0,0,0,0,0,0,0,32,230,253,195,0,0,0,0,0,0,0,0,0,0,0,67,254,254,199,0,0,0,0,0,0,0,0,0,32,231,255,210,0,0,0,0,0,0,0,0,0,0,0,67,253,253,169,0,0,0,0,0,0,0,0,0,56,253,253,209,0,0,0,0,0,0,0,0,0,0,0,67,253,253,88,0,0,0,0,0,0,0,0,0,56,253,253,209,0,0,0,0,0,0,0,0,0,0,0,32,231,253,194,0,0,0,0,0,0,0,0,2,169,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,23,253,253,251,78,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,35,151,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,62,249,249,55,0,0,0,0,7,89,222,253,253,206,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,219,54,18,33,93,211,253,253,250,185,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,154,253,253,213,237,253,254,253,223,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,143,244,253,253,253,192,66,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,200,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,209,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,177,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,234,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,157,253,253,207,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,251,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,202,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,95,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,105,105,255,218,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,208,249,252,252,253,252,223,138,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,226,252,252,240,237,238,249,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,139,31,0,0,138,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,248,252,252,14,0,0,0,42,225,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,248,252,252,14,0,0,0,0,164,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,213,252,14,0,0,0,32,210,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,162,97,0,0,0,60,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,234,252,181,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,60,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,68,179,252,253,252,246,94,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,189,252,252,252,253,252,252,252,212,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,119,243,252,252,252,252,222,177,225,252,252,248,223,170,18,0,0,0,0,0,0,0,0,0,0,0,2,135,252,252,236,250,252,252,131,0,48,74,205,222,222,169,17,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,189,245,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,187,252,252,252,252,252,156,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,236,252,252,252,252,209,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,172,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,83,130,212,255,254,224,130,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,148,253,253,251,241,241,244,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,201,0,0,28,144,249,218,101,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,231,253,250,78,0,0,0,0,119,248,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,99,84,0,0,0,0,0,0,205,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,239,234,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,186,186,140,17,179,233,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,238,209,233,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,80,195,253,253,140,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,79,234,253,174,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,253,218,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,166,253,240,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,167,253,193,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,221,253,243,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,148,236,236,251,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,242,242,242,242,242,245,253,253,253,253,253,204,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,208,253,253,253,223,129,129,129,87,5,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,129,248,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,248,254,229,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,248,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,223,116,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,225,254,229,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,219,254,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,201,254,240,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,121,0,0,99,188,188,171,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,254,240,28,0,102,244,254,254,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,100,0,15,244,254,238,227,254,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,250,9,0,133,254,235,54,17,201,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,248,254,140,0,9,208,254,122,0,23,210,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,236,6,0,29,254,254,35,0,94,254,236,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1,176,254,193,0,0,27,249,254,45,97,238,250,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,140,0,0,0,188,255,254,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,204,254,243,85,57,147,251,254,254,230,107,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,254,254,254,254,254,237,176,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,201,254,254,173,125,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,92,158,254,254,218,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,120,253,249,204,149,253,218,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,102,215,249,228,118,0,69,253,245,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,241,253,210,0,0,0,144,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,93,77,0,0,10,201,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,239,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,234,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,200,253,168,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,110,253,235,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,199,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,183,253,253,253,246,190,22,0,0,0,40,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,233,253,253,253,253,253,253,235,96,0,91,224,243,16,0,0,0,0,0,0,0,0,0,0,0,0,9,195,253,253,234,57,45,169,253,253,248,236,251,253,155,2,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,92,0,0,3,137,253,253,253,253,207,19,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,205,217,2,0,0,0,2,42,129,233,208,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,128,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,64,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,128,255,255,128,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,64,0,0,255,255,128,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,255,255,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,255,64,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,128,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,247,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,245,253,248,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,188,253,245,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,177,253,216,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,219,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,216,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,67,0,0,0,0,58,57,121,121,121,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,225,38,0,0,6,108,248,247,253,253,253,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,211,25,0,10,173,253,160,103,26,69,184,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,109,13,169,249,103,0,0,0,0,11,197,213,0,0,0,0,0,0,0,0,0,0,0,0,0,20,222,253,214,132,246,106,0,0,0,0,0,18,205,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,119,129,0,0,0,0,0,0,96,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,241,90,17,0,20,41,41,153,237,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,253,253,253,199,161,206,253,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,240,249,253,253,253,255,253,253,242,133,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,120,197,182,183,126,120,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,218,247,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,140,221,253,252,246,132,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,175,252,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,252,252,252,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,252,252,210,35,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,252,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,253,253,253,253,255,128,109,109,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,252,252,252,253,252,252,252,238,175,63,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,252,252,252,252,252,252,253,252,252,252,253,252,241,181,37,5,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,253,252,252,252,253,252,252,252,253,119,0,0,0,0,0,0,0,0,0,0,255,253,253,253,191,253,253,253,208,20,21,144,145,238,253,253,255,253,133,0,0,0,0,0,0,0,0,0,253,252,252,252,15,77,76,35,20,0,0,0,0,30,149,252,253,252,247,93,0,0,0,0,0,0,0,0,232,252,252,252,181,46,0,0,0,0,0,0,0,0,11,154,253,252,252,108,0,0,0,0,0,0,0,0,109,252,252,252,252,221,41,0,0,0,0,0,0,0,0,84,253,252,252,108,0,0,0,0,0,0,0,0,0,156,253,253,253,253,253,253,255,211,109,109,110,109,212,253,255,253,253,108,0,0,0,0,0,0,0,0,0,10,138,221,252,252,252,252,253,252,252,252,253,252,252,252,253,252,179,15,0,0,0,0,0,0,0,0,0,0,0,41,215,226,252,252,253,252,252,252,253,252,252,252,217,91,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,108,108,108,232,252,252,253,252,148,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,158,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,208,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,227,254,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,191,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,82,163,254,111,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,88,207,244,254,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,196,253,253,253,254,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,246,253,253,253,185,57,45,223,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,253,253,185,14,23,207,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,254,175,10,59,217,254,254,238,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,253,241,220,253,254,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,253,253,253,253,254,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,221,254,253,253,253,253,254,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,253,253,237,155,140,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,142,165,8,0,59,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,103,0,0,0,0,0,173,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,102,0,0,0,0,62,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,255,253,0,0,0,0,0,102,254,151,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,171,0,0,0,0,0,102,253,192,62,203,203,61,0,0,0,0,0,0,0,0,0,0,0,0,214,253,255,253,254,253,254,172,152,233,254,253,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,253,252,253,252,253,252,253,252,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,255,213,204,203,203,203,214,213,234,253,244,162,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,10,0,0,0,0,10,10,30,212,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,168,57,0,0,17,82,166,107,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,254,236,171,199,232,254,254,244,238,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,231,254,254,254,254,242,218,167,128,98,93,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,195,142,105,53,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,252,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,236,223,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,106,221,240,254,248,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,151,244,243,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,247,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,59,6,0,0,40,54,79,132,251,254,187,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,222,219,219,245,254,254,254,254,209,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,254,254,254,254,238,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,84,151,226,240,240,210,127,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,237,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,163,252,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,82,232,253,253,253,253,253,243,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,253,236,89,82,198,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,229,103,53,0,0,63,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,123,43,0,0,0,0,133,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,248,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,190,253,223,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,75,248,253,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,197,253,253,253,221,37,0,0,0,0,0,0,0,0,0,0,0,0,31,104,197,241,241,241,241,241,241,242,253,253,253,253,253,244,221,0,0,0,0,0,0,0,0,0,0,84,230,253,253,253,253,253,253,253,253,253,253,253,253,226,170,74,31,0,0,0,0,0,0,0,0,0,0,205,253,253,253,250,223,253,253,253,253,246,191,125,54,37,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,159,120,217,253,253,242,186,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,233,184,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,246,116,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,191,113,114,75,0,0,0,51,113,113,128,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,243,225,225,225,238,252,252,252,252,253,243,50,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,253,252,252,252,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,66,84,84,225,223,223,223,223,237,252,252,252,252,240,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,252,252,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,253,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,252,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,252,252,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,228,252,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,252,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,155,158,158,249,218,189,248,255,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,254,254,254,254,254,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,235,254,254,254,202,162,162,127,129,254,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,185,254,254,227,98,2,0,0,0,1,169,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,219,37,0,0,0,0,0,9,241,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,158,30,0,0,0,0,0,0,43,254,226,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,46,3,0,0,0,0,0,0,0,106,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,238,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,250,244,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,246,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,226,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,247,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,254,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,222,254,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,204,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,253,253,236,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,253,128,97,242,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,154,4,0,93,248,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,111,0,0,0,180,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,111,0,0,0,29,128,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,148,0,0,0,58,248,215,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,241,233,16,0,7,219,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,72,2,177,253,227,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,230,215,99,254,240,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,216,253,181,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,237,253,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,181,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,222,0,170,248,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,236,119,0,16,208,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,52,0,0,123,211,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,239,162,14,10,113,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,241,253,229,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,95,205,254,189,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,121,121,255,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,241,252,252,253,252,252,252,252,249,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,244,252,252,252,253,252,252,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,252,252,248,172,103,172,244,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,252,195,50,0,0,0,226,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,211,252,252,93,0,0,0,80,245,252,252,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,252,224,29,0,0,20,200,252,252,252,194,25,0,0,0,0,0,0,0,0,0,0,0,0,0,10,217,252,252,141,0,2,27,204,252,252,252,195,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,252,252,235,77,152,252,253,252,252,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,252,252,252,252,253,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,133,222,253,253,253,253,255,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,145,156,246,202,253,252,212,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,37,240,253,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,218,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,147,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,252,252,164,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,252,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,245,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,192,254,255,254,207,168,168,168,156,83,83,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,181,176,176,245,254,254,254,254,254,254,251,215,164,103,24,0,0,0,0,0,0,0,0,0,0,250,232,17,1,0,0,7,8,23,95,95,95,95,160,180,209,254,107,0,0,0,0,0,0,0,0,0,0,250,180,0,0,0,0,0,0,0,0,0,0,0,0,0,5,13,4,0,0,0,0,0,0,0,0,0,0,250,224,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,153,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,247,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,244,87,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,251,254,215,135,51,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,183,250,254,254,246,207,166,82,64,35,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,69,153,223,223,248,254,254,254,215,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,56,94,149,247,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,73,0,0,0,0,0,0,0,0,0,0,0,0,101,151,6,0,0,0,0,0,0,0,0,0,87,238,253,68,0,0,0,0,0,0,0,0,0,0,0,31,249,65,0,0,0,0,0,0,0,11,24,167,238,253,140,0,0,0,0,0,0,0,0,0,0,0,0,49,248,161,15,1,0,0,8,53,137,240,254,254,240,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,249,254,183,177,177,243,254,254,254,240,96,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,189,254,254,254,254,180,126,82,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,99,254,254,188,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,44,126,209,253,253,253,253,253,249,209,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,166,253,253,253,253,201,127,203,253,253,253,206,42,0,0,0,0,0,0,0,0,0,0,0,0,0,65,159,253,253,253,253,135,29,58,121,153,242,253,254,193,117,22,0,0,0,0,0,0,0,0,0,0,20,230,253,253,253,253,196,154,253,253,253,253,253,253,243,178,147,0,0,0,0,0,0,0,0,0,0,0,7,94,253,250,223,36,6,5,146,223,237,253,253,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,157,0,0,0,0,0,0,148,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,64,0,0,0,0,17,88,251,253,198,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,177,0,0,0,0,104,253,253,227,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,148,184,0,0,19,168,253,253,205,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,132,66,200,253,253,203,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,253,253,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,170,253,253,253,132,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,194,253,253,253,253,178,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,150,238,253,253,162,74,191,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,253,253,230,123,21,0,66,252,250,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,230,253,206,56,0,0,0,0,196,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,253,253,209,189,189,112,189,227,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,174,238,254,253,253,253,253,254,253,233,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,140,222,253,253,159,153,95,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,109,150,191,255,218,236,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,234,253,253,253,253,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,231,134,54,95,236,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,134,84,26,0,14,185,245,235,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,131,228,253,245,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,101,247,253,175,50,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,204,253,253,253,195,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,232,253,253,174,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,181,175,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,102,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,220,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,199,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,39,0,0,0,0,0,0,0,0,0,111,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,239,84,3,0,0,0,0,0,0,3,188,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,175,52,28,0,0,0,0,87,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,169,252,245,233,197,115,72,150,251,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,210,207,253,253,253,253,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,11,149,147,253,175,137,46,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,161,161,253,252,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,197,252,252,252,215,162,202,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,134,207,253,252,252,252,252,29,166,240,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,236,252,252,243,137,221,252,252,233,252,221,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,215,116,178,244,86,170,253,253,242,157,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,196,9,63,253,252,252,252,157,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,252,196,215,253,252,202,89,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,194,252,252,252,203,87,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,74,106,233,252,252,252,147,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,253,255,239,230,249,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,252,252,144,33,0,207,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,233,183,79,0,0,0,99,246,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,188,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,246,188,11,0,0,0,0,116,253,227,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,237,253,201,76,9,0,0,0,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,223,252,253,173,47,9,0,201,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,173,222,252,252,196,184,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,119,160,194,252,245,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,22,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,118,118,118,118,229,254,255,254,254,254,255,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,253,253,253,253,253,253,253,253,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,249,177,177,177,177,151,40,40,40,97,177,177,53,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,201,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,235,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,231,253,234,111,111,111,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,253,253,244,189,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,242,253,253,212,184,252,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,205,112,28,0,67,117,244,240,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,208,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,231,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,227,253,253,165,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,183,253,235,163,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,252,232,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,234,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,130,254,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,206,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,180,251,252,235,170,221,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,183,14,55,184,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,194,253,252,190,14,0,25,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,139,253,254,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,252,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,251,252,244,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,252,126,0,0,85,85,137,190,190,129,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,215,253,252,189,197,232,253,252,252,252,252,253,237,72,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,252,252,252,253,252,194,189,189,253,252,202,21,0,0,0,0,0,0,0,0,0,0,0,9,142,252,253,252,252,252,208,129,42,4,0,0,165,252,252,84,0,0,0,0,0,0,0,0,0,0,15,192,253,253,254,253,179,80,0,0,0,0,11,87,255,253,250,70,0,0,0,0,0,0,0,0,0,0,85,252,252,217,253,252,221,120,85,86,164,146,206,252,253,252,117,0,0,0,0,0,0,0,0,0,0,0,78,251,252,155,200,252,252,252,252,253,252,252,252,252,214,91,2,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,218,252,252,252,252,253,252,194,162,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,138,252,253,252,199,147,59,42,42,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,128,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,64,0,128,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,0,0,0,0,64,128,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,255,207,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,253,178,146,146,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,253,253,253,253,249,176,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,156,253,253,253,253,253,253,253,253,253,202,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,253,253,155,115,237,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,253,35,5,0,55,225,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,253,157,6,0,0,0,169,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,49,224,253,253,237,59,0,0,0,0,169,253,253,253,201,24,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,222,0,0,0,0,0,169,253,253,253,154,4,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,208,0,0,0,0,0,169,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,68,0,0,0,0,34,210,253,253,249,75,0,0,0,0,0,0,0,0,0,0,0,0,129,252,253,253,230,50,0,0,0,0,112,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,168,0,0,0,0,83,243,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,168,0,0,0,11,183,253,253,253,225,50,0,0,0,0,0,0,0,0,0,0,0,0,40,237,253,253,253,168,0,0,19,173,253,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,17,185,253,253,253,222,50,88,190,253,253,253,248,175,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,45,203,253,253,253,253,253,248,199,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,183,253,253,253,206,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,156,156,217,171,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,140,232,253,253,253,254,253,253,247,214,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,183,254,253,198,174,174,175,174,199,253,253,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,244,127,142,234,234,175,136,113,105,221,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,61,248,253,83,20,253,253,253,254,253,253,244,239,254,248,60,0,0,0,0,0,0,0,0,0,0,0,0,176,254,133,14,149,235,195,120,99,180,213,254,254,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,175,253,58,55,180,27,0,0,0,10,92,253,253,208,253,152,0,0,0,0,0,0,0,0,0,0,0,0,175,253,58,0,0,0,0,0,49,196,253,253,185,224,253,78,0,0,0,0,0,0,0,0,0,0,0,0,111,250,200,137,136,136,189,234,246,253,225,183,27,254,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,254,253,253,253,253,193,111,18,0,135,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,91,0,0,0,0,0,0,40,254,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,168,253,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,247,247,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,207,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,235,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,243,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,235,235,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,134,133,133,214,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,128,145,249,254,251,244,253,227,111,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,66,157,235,253,253,218,154,87,135,217,243,253,135,6,0,0,0,0,0,0,0,0,0,0,0,5,67,226,253,253,253,253,253,11,0,0,0,0,101,253,253,117,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,230,193,9,0,0,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,25,253,253,236,146,60,37,0,0,0,0,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,25,253,253,193,0,0,0,0,0,0,0,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,4,125,253,193,0,0,0,0,0,0,0,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,37,253,219,26,0,0,0,0,0,0,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,2,173,253,245,144,75,0,0,0,0,0,0,119,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,82,208,116,0,52,82,1,0,0,0,3,186,254,250,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,218,10,0,0,0,61,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,253,239,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,236,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,210,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,253,222,149,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,209,18,7,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,196,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,84,187,254,254,255,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,113,236,254,224,128,76,143,254,117,48,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,254,224,106,10,5,173,229,140,119,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,4,88,249,230,107,5,0,0,0,0,0,83,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,193,46,0,0,0,0,0,0,36,237,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,249,216,13,0,0,0,0,0,0,17,198,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,241,46,0,0,0,0,0,0,7,199,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,223,0,0,0,0,0,0,0,75,254,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,243,124,17,4,0,0,0,3,239,188,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,247,254,197,74,14,6,161,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,161,236,254,230,222,254,252,158,75,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,52,99,254,226,162,198,247,215,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,56,0,0,35,213,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,237,157,5,0,0,0,171,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,240,21,0,0,0,6,223,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,108,0,0,0,8,125,231,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,236,43,0,0,5,126,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,140,0,0,13,150,250,125,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,184,81,136,230,231,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,241,254,220,135,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,107,30,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,168,236,254,254,254,166,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,244,254,254,243,238,254,248,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,245,254,254,181,38,49,234,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,241,254,147,15,0,0,236,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,24,4,0,0,0,220,254,243,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,128,0,0,0,0,19,30,59,0,0,0,0,0,0,0,0,0,0,0,1,46,170,239,154,86,249,254,250,24,0,2,141,188,255,254,254,148,0,0,0,0,0,0,0,0,14,157,188,254,254,254,254,254,254,254,72,0,0,58,237,240,254,254,254,158,0,0,0,0,0,0,0,0,180,254,254,250,233,254,254,254,254,219,0,0,0,0,20,149,254,254,183,2,0,0,0,0,0,0,0,0,244,254,232,157,164,254,254,254,254,209,0,3,33,108,243,254,246,152,4,0,0,0,0,0,0,0,0,0,146,254,225,198,254,254,199,242,254,254,206,182,254,254,254,246,112,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,254,170,6,132,251,254,254,254,254,254,200,46,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,209,91,16,0,0,131,252,254,250,161,78,7,0,0,0,0,0,0,0,0,0,0,0,0,0,38,107,99,6,0,0,0,0,0,24,24,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,198,0,0,0,29,57,57,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,198,114,170,198,198,255,255,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,114,57,57,29,86,141,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,114,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,29,0,0,0,0,0,0,57,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,29,29,29,0,141,170,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,255,255,255,255,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,198,170,170,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,110,205,241,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,228,253,192,182,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,182,243,177,28,1,146,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,103,232,197,33,0,0,25,239,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,129,16,0,0,40,226,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,154,0,0,40,166,254,254,213,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,229,8,44,169,235,203,125,249,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,252,239,248,233,120,6,207,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,133,108,32,0,79,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,235,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,255,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,248,172,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,171,249,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,182,204,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,242,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,86,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,170,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,170,29,0,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,255,255,114,0,0,29,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,255,255,255,255,255,141,198,255,255,255,255,170,57,0,0,0,0,0,0,0,0,0,0,0,170,198,57,255,255,255,255,255,57,57,226,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,86,0,114,255,255,255,255,198,198,255,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,255,255,255,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,29,86,198,255,255,255,255,255,255,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,255,255,255,255,226,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,255,255,255,255,255,255,57,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,255,198,29,226,255,0,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,141,0,0,86,198,29,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,226,0,0,0,0,29,255,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,198,0,0,0,86,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,141,170,226,255,255,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,255,255,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,163,0,0,0,0,0,0,0,0,0,233,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,203,0,0,0,0,0,0,0,0,123,255,253,142,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,203,0,0,0,0,0,0,0,0,203,253,252,61,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,82,0,0,0,0,0,0,0,132,253,255,151,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,171,0,0,0,0,0,0,0,0,253,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,254,253,224,20,0,0,0,0,0,0,11,132,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,82,253,252,223,102,102,102,0,82,102,183,213,252,253,252,243,122,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,253,254,253,254,253,254,253,254,253,254,172,82,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,252,253,252,253,252,253,252,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,41,123,203,203,162,102,102,102,61,72,233,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,117,247,195,93,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,193,251,253,253,253,253,142,4,28,39,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,229,253,253,147,115,245,253,181,53,219,253,222,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,253,20,4,0,159,168,82,129,253,253,253,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,7,0,0,0,0,17,234,253,253,253,249,101,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,7,0,0,0,0,131,253,253,189,238,253,197,20,0,0,0,0,0,0,0,0,0,0,0,0,254,253,208,5,0,0,0,29,243,253,185,12,176,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,254,253,121,1,0,0,74,186,253,232,69,0,21,194,253,234,79,0,0,0,0,0,0,0,0,0,0,0,254,253,253,127,124,124,246,253,253,22,0,0,0,95,253,253,249,71,0,0,0,0,0,0,0,0,0,0,91,239,253,253,253,253,253,244,104,3,0,0,0,12,215,253,253,145,0,0,0,0,0,0,0,0,0,0,0,67,84,234,237,237,186,74,0,0,0,0,0,0,39,219,253,217,43,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,218,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,245,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,237,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,220,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,162,128,0,0,0,0,0,219,254,231,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,254,202,0,0,0,0,44,248,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,254,252,111,0,0,0,0,162,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,120,254,254,193,0,0,0,0,0,228,254,251,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,231,17,0,0,0,0,24,238,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,210,254,254,79,0,0,0,0,0,92,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,219,0,0,0,0,0,0,207,254,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,253,246,246,246,246,158,158,247,254,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,254,254,254,254,254,254,254,254,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,131,170,128,123,140,201,201,236,254,254,243,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,254,243,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,220,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,255,200,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,139,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,226,244,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,247,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,225,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,209,255,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,229,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,168,246,255,254,254,254,184,128,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,242,253,254,254,254,254,254,254,254,254,213,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,242,254,254,110,95,65,65,124,135,239,254,243,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,93,99,10,0,0,0,0,0,127,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,216,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,223,248,125,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,108,238,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,123,213,254,254,254,201,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,254,254,254,254,237,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,240,254,234,215,215,245,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,31,77,24,0,0,37,164,254,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,2,0,0,0,0,0,0,0,0,30,241,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,83,0,0,0,0,0,0,0,21,202,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,216,61,2,0,0,0,0,20,202,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,144,16,0,7,69,218,254,239,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,177,254,254,214,181,218,254,254,210,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,254,254,254,254,253,167,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,101,185,179,124,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,174,243,235,174,143,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,237,243,162,124,149,212,214,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,213,239,63,0,0,0,90,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,255,79,0,0,0,0,172,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,185,243,132,8,0,0,0,19,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,234,50,0,0,0,0,0,175,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,181,0,0,0,0,0,91,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,231,42,0,0,0,4,204,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,232,67,0,0,88,254,162,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,235,103,7,204,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,128,237,195,254,140,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,241,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,251,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,192,196,197,184,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,243,32,15,235,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,226,0,0,180,212,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,212,0,0,65,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,145,0,0,65,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,15,59,193,209,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,164,240,182,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,179,0,0,0,0,0,0,0,0,114,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,108,0,0,0,0,0,0,0,14,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,108,0,0,0,0,0,0,2,167,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,108,0,0,0,0,0,0,19,253,169,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,234,13,0,0,0,0,0,0,45,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,222,129,0,0,0,0,0,0,0,160,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,91,0,0,0,0,0,0,32,245,162,11,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,91,0,0,0,0,0,0,43,253,85,183,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,91,0,0,0,0,0,20,172,253,253,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,255,254,254,254,254,255,254,254,242,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,83,199,146,108,108,108,109,139,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,237,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,247,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,208,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,248,159,159,159,159,107,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,254,254,254,254,254,241,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,236,254,254,254,254,254,254,254,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,236,106,182,254,254,254,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,254,254,254,211,7,3,104,237,254,254,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,236,168,136,4,0,0,108,254,254,254,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,181,0,0,0,0,0,2,49,141,148,254,184,0,0,0,0,0,0,0,0,0,0,0,0,50,252,254,254,98,0,0,0,0,0,0,0,0,128,254,187,0,0,0,0,0,0,0,0,0,0,0,0,188,254,247,139,3,0,0,0,0,0,0,0,0,39,254,187,0,0,0,0,0,0,0,0,0,0,0,28,251,254,139,0,0,0,0,0,0,0,0,0,28,230,254,200,6,0,0,0,0,0,0,0,0,0,0,35,254,254,128,0,0,0,0,0,0,0,0,0,0,75,254,254,29,0,0,0,0,0,0,0,0,0,0,126,254,254,38,0,0,0,0,0,0,0,0,0,0,39,254,208,9,0,0,0,0,0,0,0,0,0,0,126,254,254,91,0,0,0,0,0,0,0,0,0,0,56,254,187,0,0,0,0,0,0,0,0,0,0,0,86,254,254,134,0,0,0,0,0,0,0,0,0,0,138,254,183,0,0,0,0,0,0,0,0,0,0,0,21,236,254,134,0,0,0,0,0,0,0,0,0,49,247,253,66,0,0,0,0,0,0,0,0,0,0,0,0,188,254,225,11,0,0,0,0,0,0,0,20,205,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,77,251,254,148,4,0,0,0,0,0,20,165,254,239,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,236,121,21,0,0,0,165,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,156,245,254,254,235,135,135,226,252,240,129,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,215,254,254,254,254,254,185,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,141,101,101,101,101,194,110,254,254,255,254,107,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,253,253,253,253,253,253,253,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,253,253,253,253,253,253,253,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,17,182,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,49,0,0,0,0,0,0,0,0,0,0,70,253,253,253,253,240,214,134,61,61,61,114,253,253,253,253,236,38,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,84,0,0,0,0,0,70,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,122,1,0,0,0,0,42,225,253,253,253,194,8,0,0,0,0,0,0,0,0,0,0,0,200,253,242,198,31,0,0,0,0,17,218,253,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,200,253,160,0,0,0,0,0,0,104,253,253,253,253,221,44,0,0,0,0,0,0,0,0,0,0,0,0,18,22,14,0,0,0,0,0,118,246,253,253,253,218,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,253,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,242,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,239,253,253,253,191,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,243,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,253,249,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,253,243,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,113,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,174,253,253,174,105,105,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,252,252,252,209,208,208,208,77,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,158,237,237,237,237,239,252,253,252,252,252,252,241,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,132,253,252,252,252,252,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,173,252,252,252,252,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,226,252,252,248,142,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,249,252,252,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,230,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,243,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,192,255,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,252,253,202,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,231,252,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,240,246,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,196,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,236,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,222,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,128,128,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,128,64,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,128,255,255,191,0,0,0,0,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,64,0,0,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,128,128,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,191,64,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,61,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,185,252,252,182,85,85,50,85,85,85,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,252,252,252,253,252,244,252,252,253,246,116,0,0,0,0,0,0,0,0,0,0,0,0,0,16,152,253,252,252,252,252,253,231,189,189,242,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,18,221,252,253,252,155,121,42,42,28,0,0,167,253,182,4,0,0,0,0,0,0,0,0,0,0,0,0,110,253,236,132,0,0,0,0,0,0,0,55,236,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,6,63,37,0,0,0,0,0,0,0,16,232,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,173,252,146,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,171,252,183,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,255,239,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,112,242,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,246,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,199,252,226,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,224,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,249,250,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,76,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,216,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,243,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,199,253,222,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,244,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,97,255,249,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,249,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,217,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,142,231,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,183,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,170,239,183,12,0,8,20,28,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,254,76,0,13,145,254,253,253,181,138,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,146,3,43,230,253,254,253,253,253,253,197,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,60,0,153,253,253,193,73,58,111,230,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,216,61,8,206,254,133,0,0,0,0,196,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,110,20,241,237,36,0,0,0,87,236,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,212,254,185,223,253,155,0,37,146,247,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,177,216,253,253,253,235,243,253,74,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,88,170,253,254,170,88,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,94,237,111,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,253,231,136,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,204,254,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,237,253,251,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,232,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,251,253,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,228,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,193,9,0,20,37,37,37,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,253,253,94,158,169,214,253,253,253,233,135,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,219,253,253,254,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,253,253,254,253,253,253,253,232,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,253,253,254,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,192,253,253,253,253,253,254,253,253,253,97,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,253,253,254,191,144,64,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,132,236,143,132,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,111,231,254,254,254,209,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,170,253,253,253,245,243,252,224,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,253,166,89,18,0,214,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,250,55,0,0,0,167,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,213,0,0,0,0,115,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,250,54,0,0,0,205,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,253,131,0,0,78,243,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,188,253,158,0,3,211,253,199,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,231,4,120,253,248,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,251,253,131,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,227,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,250,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,253,253,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,180,253,207,192,253,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,241,70,50,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,242,67,0,11,215,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,168,50,128,202,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,240,250,249,254,253,253,185,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,234,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,62,232,254,255,166,146,73,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,180,253,253,253,253,253,253,253,151,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,139,246,253,253,253,253,253,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,188,253,253,253,253,253,253,253,253,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,14,183,253,253,253,253,253,253,253,253,253,253,253,142,2,0,0,0,0,0,0,0,0,0,0,0,0,3,188,253,253,253,216,36,50,228,253,253,253,253,144,5,0,0,0,0,0,0,0,0,0,0,0,0,0,3,190,253,253,253,253,158,119,233,253,253,253,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,253,253,253,233,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,163,245,253,253,253,253,253,189,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,237,253,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,253,253,209,187,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,175,253,253,253,96,150,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,127,12,233,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,185,4,47,244,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,134,41,176,253,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,229,196,253,253,253,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,253,253,246,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,253,253,253,253,249,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,180,253,253,216,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,220,162,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,249,253,254,249,113,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,171,234,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,151,0,105,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,69,0,0,149,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,215,6,0,0,61,240,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,25,0,0,0,0,176,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,93,9,0,127,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,220,254,255,237,203,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,204,253,253,253,237,253,253,253,248,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,215,62,46,29,46,215,253,254,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,228,15,0,0,0,68,240,219,94,245,246,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,185,0,0,0,128,245,247,84,0,17,199,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,248,146,138,206,254,244,87,0,0,0,11,56,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,253,253,253,247,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,177,253,185,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,253,200,78,25,0,0,0,0,0,43,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,252,252,252,226,173,85,182,190,190,253,170,7,0,0,0,0,0,0,0,0,0,0,0,0,20,202,252,253,252,252,252,252,253,252,252,252,252,253,252,74,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,252,252,252,253,252,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,252,252,252,253,252,252,252,252,253,182,4,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,222,158,106,106,0,0,128,253,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,32,133,124,63,16,0,0,0,0,0,127,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,246,252,252,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,252,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,253,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,7,210,174,139,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,206,77,253,252,252,237,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,234,252,244,232,205,251,252,244,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,232,252,252,252,115,0,161,252,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,199,121,86,0,0,21,182,252,253,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,254,142,53,0,0,0,0,0,54,229,254,253,83,0,0,0,0,0,0,0,0,0,0,0,0,8,171,252,168,42,0,0,0,0,0,0,0,106,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,0,0,0,0,0,0,0,0,0,9,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,153,252,155,0,0,0,0,0,0,0,0,0,0,253,252,205,0,0,0,0,0,0,0,0,0,0,0,0,232,226,24,0,0,0,0,0,0,0,0,0,0,165,252,126,0,0,0,0,0,0,0,0,0,0,0,0,233,190,0,0,0,0,0,0,0,0,0,0,0,131,253,127,0,0,0,0,0,0,0,0,0,0,0,0,232,210,14,0,0,0,0,0,0,0,0,0,0,123,252,126,0,0,0,0,0,0,0,0,0,0,0,0,232,252,42,0,0,0,0,0,0,0,0,0,0,245,252,118,0,0,0,0,0,0,0,0,0,0,0,0,206,252,138,27,0,0,0,0,0,0,0,0,0,253,252,47,0,0,0,0,0,0,0,0,0,0,0,0,39,252,252,150,0,0,0,0,0,0,0,0,132,253,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,98,247,254,138,39,0,0,0,0,4,114,236,255,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,247,163,85,86,121,195,252,252,218,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,252,252,252,253,252,252,247,143,12,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,210,252,252,252,253,252,185,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,95,147,235,174,42,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,179,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,148,254,166,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,125,0,0,0,0,0,0,0,77,254,241,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,217,10,0,0,0,0,0,16,226,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,175,0,0,0,0,0,0,78,254,237,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,239,27,0,0,0,0,0,8,175,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,193,0,0,0,0,0,0,31,254,242,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,238,254,71,0,0,0,0,0,0,107,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,197,3,0,0,0,0,0,19,218,249,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,242,69,0,0,0,0,0,0,79,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,171,0,0,0,0,0,0,20,216,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,252,254,28,0,0,0,0,0,0,81,254,229,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,124,117,117,117,117,117,117,213,254,168,31,8,0,0,0,0,0,0,0,0,0,0,0,0,0,46,234,254,254,254,254,254,254,254,254,254,254,254,251,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,143,169,232,211,194,214,166,254,254,195,135,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,210,251,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,118,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,237,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,39,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,226,254,192,185,102,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,205,251,254,254,254,239,223,223,223,223,223,211,115,115,54,6,1,0,0,0,0,0,0,0,0,0,0,0,0,68,211,219,254,254,254,254,254,254,254,254,254,254,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,65,164,173,173,180,254,254,254,254,254,254,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,35,120,224,254,254,254,254,254,244,167,31,0,0,0,0,0,0,0,0,0,0,0,0,0,3,70,158,247,254,254,254,254,254,228,178,97,2,0,0,0,0,0,0,0,0,0,0,0,0,0,53,123,198,254,254,254,254,254,163,59,59,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,254,254,168,34,54,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,254,254,254,254,254,219,163,135,55,1,0,0,0,0,0,0,0,0,0,0,0,0,0,32,89,162,219,254,254,254,254,254,254,254,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,16,16,16,16,88,125,231,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,128,254,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,170,225,254,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,81,159,245,250,254,254,252,199,75,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,71,174,236,254,255,254,254,211,189,77,0,0,0,0,0,0,0,0,0,0,0,0,0,16,104,198,212,244,254,254,254,254,188,151,50,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,254,254,225,154,114,60,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,223,165,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,38,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,98,159,159,159,160,243,219,254,201,159,159,159,205,184,0,0,0,0,0,0,0,0,0,0,0,0,25,185,253,253,253,239,216,215,215,215,215,215,242,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,28,149,149,59,56,35,0,0,0,0,0,15,209,253,238,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,237,253,187,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,253,188,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,237,249,150,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,236,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,251,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,9,0,4,133,254,248,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,207,98,181,253,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,254,254,254,255,156,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,31,197,253,253,253,254,253,241,134,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,98,253,251,163,149,150,199,253,253,242,190,38,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,106,0,0,0,13,88,177,219,253,253,172,81,0,0,0,0,0,0,0,0,0,0,0,0,42,238,253,188,4,0,0,0,0,0,0,28,146,112,202,158,25,0,0,0,0,0,0,0,0,0,0,12,189,253,230,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,237,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,251,208,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,239,199,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,204,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,145,1,0,0,0,0,0,0,0,0,0,0,0,1,13,13,93,137,137,110,13,4,0,0,0,0,107,254,249,11,0,0,0,0,0,0,0,0,0,0,11,98,254,254,254,254,254,254,254,62,0,0,0,53,241,255,142,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,254,254,237,247,254,62,0,0,64,188,254,255,142,0,0,0,0,0,0,0,0,0,0,0,54,169,223,223,205,99,31,105,254,179,156,156,238,254,254,241,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,124,245,254,254,254,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,87,87,226,254,237,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,220,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,234,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,218,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,192,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,244,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,254,225,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,137,254,225,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,179,91,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,251,254,254,251,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,122,254,221,94,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,166,253,253,192,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,216,252,252,252,253,234,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,29,234,253,252,224,168,178,252,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,200,159,252,253,227,43,0,4,178,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,247,247,253,251,125,0,0,0,57,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,171,197,252,150,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,234,253,84,159,214,25,0,0,0,0,38,234,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,228,9,47,128,0,0,0,0,0,0,147,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,226,0,0,0,0,0,0,0,0,0,86,253,229,10,0,0,0,0,0,0,0,0,0,0,0,0,85,252,150,0,0,0,0,0,0,0,0,0,66,246,253,84,0,0,0,0,0,0,0,0,0,0,0,0,85,252,113,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,85,252,113,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,76,250,114,0,0,0,0,0,0,0,0,0,0,226,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,225,188,0,0,0,0,0,0,0,0,0,19,231,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,225,235,28,0,0,0,0,0,0,0,0,85,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,133,0,0,0,0,0,0,0,0,134,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,228,44,0,0,0,0,0,16,79,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,224,119,57,57,95,169,216,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,196,252,253,252,252,252,253,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,140,215,252,202,190,115,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,152,152,254,253,152,152,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,252,253,252,253,252,243,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,254,233,102,61,0,0,102,183,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,70,0,0,0,0,0,0,172,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,11,51,132,253,254,213,152,152,41,0,0,0,21,223,255,253,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,252,253,252,213,252,243,162,0,0,0,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,193,253,254,213,123,122,21,142,254,253,0,0,173,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,252,183,20,0,0,112,111,0,123,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,253,254,253,152,112,21,21,214,253,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,253,252,253,252,223,223,253,252,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,254,253,254,253,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,252,253,252,223,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,254,233,82,0,123,243,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,253,252,192,50,0,0,0,122,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,244,122,0,0,0,0,31,233,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,162,0,0,0,0,0,92,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,255,253,41,0,11,51,72,193,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,212,102,183,213,252,253,252,253,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,255,253,254,253,254,253,203,122,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,192,151,151,151,151,91,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,216,70,0,0,0,0,0,0,0,0,0,0,0,21,9,0,0,0,0,0,0,0,0,0,0,0,0,100,253,188,6,0,0,0,0,0,0,0,0,0,86,224,95,0,0,0,0,0,0,0,0,0,0,0,40,228,253,253,22,0,0,0,0,0,0,0,0,35,222,253,132,0,0,0,0,0,0,0,0,0,0,0,100,253,253,111,1,0,0,0,0,0,0,0,88,223,253,250,60,0,0,0,0,0,0,0,0,0,0,0,124,253,253,55,0,0,0,0,0,0,0,63,223,253,251,116,0,0,0,0,0,0,0,0,0,0,0,0,210,253,210,12,0,0,0,0,0,0,79,251,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,66,250,243,55,0,0,0,0,0,7,60,107,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,177,253,231,0,0,0,0,0,20,163,253,253,253,253,199,9,0,0,0,0,0,0,0,0,0,0,0,11,200,253,149,0,0,0,0,24,203,254,233,206,253,236,67,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,25,0,39,164,173,231,253,129,82,234,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,254,196,216,254,254,254,244,125,0,67,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,253,253,253,250,168,54,0,9,164,253,238,27,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,193,253,232,154,99,0,0,0,77,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,8,0,0,0,0,0,144,253,201,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,230,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,255,228,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,129,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,191,86,0,0,0,0,0,24,97,222,211,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,252,22,0,34,89,161,253,252,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,252,252,252,153,91,234,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,43,233,252,252,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,43,230,253,252,252,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,81,253,253,255,253,253,253,253,255,253,236,135,63,97,253,253,253,75,0,0,0,0,0,0,0,0,0,51,228,252,252,253,252,252,252,252,218,92,25,0,22,253,252,252,252,22,0,0,0,0,0,0,0,0,81,228,252,252,252,253,252,252,195,79,32,0,0,68,215,253,252,252,153,6,0,0,0,0,0,0,0,0,253,252,252,252,252,253,172,45,9,0,0,0,68,203,252,253,252,153,9,0,0,0,0,0,0,0,0,0,148,252,252,252,200,75,8,0,0,0,11,136,246,252,252,253,157,6,0,0,0,0,0,0,0,0,0,0,11,189,199,116,11,0,0,0,0,11,149,253,253,253,253,221,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,193,253,252,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,252,253,252,252,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,240,252,252,253,252,101,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,252,252,252,243,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,253,253,253,190,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,252,252,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,185,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,157,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,128,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,255,255,128,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,255,255,128,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,64,64,255,255,128,0,128,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,108,108,108,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,252,253,253,253,248,228,142,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,158,214,254,253,223,173,173,173,185,253,223,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,157,253,253,124,53,33,0,0,0,9,180,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,40,191,253,222,128,0,0,0,0,0,0,0,62,253,253,0,0,0,0,0,0,0,0,0,0,0,0,68,233,253,213,34,0,0,0,0,0,0,0,0,27,253,253,0,0,0,0,0,0,0,0,0,0,0,66,234,253,142,34,0,0,0,0,0,0,0,0,0,113,253,239,0,0,0,0,0,0,0,0,0,0,5,216,250,211,34,0,0,0,0,0,0,0,0,0,0,161,245,50,0,0,0,0,0,0,0,0,0,0,164,253,186,0,0,0,0,0,0,0,0,0,0,0,22,210,240,0,0,0,0,0,0,0,0,0,0,108,254,254,124,0,0,0,0,0,0,0,0,0,0,26,213,255,177,0,0,0,0,0,0,0,0,0,0,164,253,121,3,0,0,0,0,0,0,0,0,0,0,111,253,242,62,0,0,0,0,0,0,0,0,0,45,246,253,39,0,0,0,0,0,0,0,0,0,0,111,247,253,107,0,0,0,0,0,0,0,0,0,0,163,253,223,27,0,0,0,0,0,0,0,0,30,124,245,236,81,15,0,0,0,0,0,0,0,0,0,0,219,253,159,0,0,0,0,0,0,0,0,64,207,253,235,77,0,0,0,0,0,0,0,0,0,0,0,0,96,251,229,58,0,0,0,0,3,54,188,250,233,157,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,228,138,112,132,104,178,253,255,215,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,213,249,253,253,253,253,252,155,94,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,107,107,107,107,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,64,128,64,64,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,128,255,255,255,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,128,255,255,255,191,64,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,191,255,255,128,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,64,191,255,255,64,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,191,255,255,64,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,128,255,255,64,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,255,255,255,0,0,0,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,191,255,255,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,169,254,255,234,118,112,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,250,253,214,199,229,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,221,55,11,11,57,195,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,55,0,0,42,232,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,36,0,0,0,87,253,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,88,0,0,73,215,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,243,131,145,247,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,197,216,127,133,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,46,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,186,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,73,150,214,255,152,150,138,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,211,253,253,253,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,251,253,253,253,246,246,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,248,145,67,53,54,67,208,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,58,0,0,0,0,0,192,227,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,164,0,0,0,0,0,102,36,0,30,50,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,245,42,0,0,0,0,12,72,194,236,244,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,235,253,88,0,0,25,80,232,253,253,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,201,112,213,229,253,253,253,252,197,75,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,235,253,253,253,253,253,253,204,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,247,253,253,253,253,156,77,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,199,252,253,253,253,190,26,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,253,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,245,224,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,203,52,16,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,245,213,21,0,76,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,192,79,171,244,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,225,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,248,253,253,253,250,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,237,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,163,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,220,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,247,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,207,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,205,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,224,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,236,37,0,0,0,41,59,84,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,233,128,0,0,0,145,249,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,232,12,0,52,207,218,73,46,250,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,162,183,0,76,234,130,23,4,187,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,75,85,232,93,0,0,170,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,94,247,132,0,0,97,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,255,250,91,0,4,128,243,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,183,0,16,145,233,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,191,161,231,214,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,254,205,146,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,254,155,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,108,232,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,218,118,62,229,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,253,47,0,0,187,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,223,129,6,0,0,187,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,51,35,35,0,0,0,0,187,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,175,240,0,0,0,0,0,0,187,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,253,226,0,0,0,0,0,43,229,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,101,0,0,0,0,0,145,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,155,0,0,0,0,0,43,229,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,94,0,0,0,0,0,81,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,215,5,0,0,0,0,0,137,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,233,64,0,0,0,0,0,205,249,193,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,199,0,0,0,0,0,133,249,185,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,245,253,199,0,0,0,36,131,251,228,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,199,0,0,39,222,254,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,199,0,111,220,253,255,158,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,253,234,161,219,253,253,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,253,253,253,238,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,168,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,202,255,253,253,253,253,255,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,190,251,253,251,251,251,251,253,168,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,251,253,251,251,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,231,251,251,253,251,251,251,251,221,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,253,251,251,251,122,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,255,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,251,251,251,251,253,251,251,235,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,253,253,253,253,255,253,242,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,221,253,251,251,251,251,253,251,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,129,251,253,251,251,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,251,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,251,251,253,251,251,251,251,253,147,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,255,253,253,253,253,234,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,253,251,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,246,251,251,253,251,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,251,253,251,251,251,251,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,148,251,253,251,251,251,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,197,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,182,253,253,208,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,180,253,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,165,253,253,248,134,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,251,253,253,191,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,127,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,249,104,0,0,0,0,0,0,0,16,24,24,9,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,214,0,0,0,0,0,0,0,110,210,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,214,0,0,0,0,0,63,224,250,253,253,253,252,128,0,0,0,0,0,0,0,0,0,0,0,47,253,253,214,0,0,0,9,156,228,253,253,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,47,253,253,232,53,0,15,187,253,253,253,221,144,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,233,71,179,253,253,253,223,45,54,253,253,246,22,0,0,0,0,0,0,0,0,0,0,0,17,92,244,253,253,253,253,253,253,253,133,51,223,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,69,229,253,253,253,253,253,253,253,253,253,240,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,99,211,253,253,253,253,253,253,182,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,239,254,81,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,80,253,254,148,5,0,0,0,31,100,139,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,138,254,254,118,5,0,0,1,96,236,254,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,4,137,254,247,88,4,0,0,2,153,254,249,181,57,0,0,0,0,0,0,0,0,0,0,0,0,0,2,138,254,248,73,0,0,0,2,122,254,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,247,73,0,0,0,0,124,254,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,254,175,0,0,0,0,127,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,234,29,0,0,0,34,242,254,133,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,171,0,0,0,0,184,254,195,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,171,0,0,0,114,252,249,39,0,0,0,20,14,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,234,69,6,48,252,254,103,0,0,7,79,195,33,0,0,0,0,0,0,0,0,0,0,0,0,0,18,201,254,254,205,254,254,254,192,184,184,210,190,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,128,209,254,254,254,254,240,231,174,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,107,9,7,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,211,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,121,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,199,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,114,148,148,227,253,253,253,237,148,148,78,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,221,252,252,253,252,252,252,252,253,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,244,252,252,253,252,252,238,231,253,252,251,231,83,0,0,0,0,0,0,0,0,0,0,0,0,0,29,232,252,252,226,84,84,84,28,0,84,84,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,252,192,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,215,253,252,251,232,232,171,127,127,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,215,253,252,252,252,252,253,252,252,231,81,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,104,182,252,252,252,253,252,252,252,252,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,62,106,158,239,253,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,168,0,0,0,0,0,0,0,0,0,0,0,101,232,169,0,0,0,0,0,0,0,0,0,0,19,218,253,239,17,0,0,0,0,0,0,0,0,0,0,227,252,237,21,0,0,0,0,0,0,0,0,0,48,242,253,189,6,0,0,0,0,0,0,0,0,0,0,192,252,252,84,0,0,0,0,0,0,0,0,0,71,228,253,217,12,0,0,0,0,0,0,0,0,0,0,87,253,253,227,87,0,0,0,0,0,8,43,192,253,253,255,107,0,0,0,0,0,0,0,0,0,0,0,29,231,252,252,226,86,85,85,85,173,201,252,252,252,252,186,16,0,0,0,0,0,0,0,0,0,0,0,0,58,244,252,252,253,252,252,252,252,253,252,252,252,235,97,0,0,0,0,0,0,0,0,0,0,0,0,0,28,136,231,252,253,252,252,252,252,253,252,252,183,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,129,209,252,252,252,208,147,147,50,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,93,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,166,253,245,168,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,253,253,253,174,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,34,54,175,246,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,211,239,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,213,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,253,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,108,125,125,125,125,158,252,253,253,70,26,26,26,114,55,22,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,243,179,148,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,254,253,254,253,250,156,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,183,220,163,236,253,253,193,163,163,211,253,253,253,0,0,0,0,0,0,0,0,237,253,253,253,253,201,37,2,6,0,8,9,9,3,0,0,5,9,67,109,0,0,0,0,0,0,0,0,33,58,128,62,125,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,113,191,255,253,253,253,253,255,253,253,253,253,255,253,253,225,0,0,0,0,0,0,0,0,0,38,210,246,252,252,253,252,252,252,252,253,252,186,214,167,215,195,252,249,100,0,0,0,0,0,0,0,0,144,252,252,252,252,196,195,86,55,55,56,55,12,31,0,31,19,209,252,112,0,0,0,0,0,0,0,0,253,252,252,249,145,0,0,0,0,0,0,0,0,0,0,0,57,234,249,99,0,0,0,0,0,0,0,0,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,163,252,223,0,0,0,0,0,0,0,0,0,192,253,228,47,0,0,0,0,0,0,0,0,0,0,0,176,253,253,162,0,0,0,0,0,0,0,0,0,113,252,195,0,0,0,0,0,0,0,0,0,0,10,163,253,252,154,9,0,0,0,0,0,0,0,0,0,25,231,195,0,0,0,0,0,0,0,0,0,0,60,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,122,173,0,0,0,0,0,0,0,0,0,7,178,252,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,219,252,226,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,120,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,215,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,234,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,255,253,253,138,34,34,3,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,146,0,0,0,0,0,0,0,0,0,0,0,119,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,174,0,0,0,0,0,0,0,0,0,0,0,16,174,233,183,230,192,73,187,230,134,217,149,191,252,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,23,88,4,0,0,0,0,0,0,0,15,132,252,252,252,248,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,89,151,212,252,252,252,252,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,174,231,238,252,253,252,252,252,252,252,252,220,40,2,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,252,252,252,253,252,252,252,252,252,252,252,252,52,0,0,0,0,0,0,0,0,0,0,0,0,39,236,252,252,252,252,210,229,140,243,185,104,130,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,252,252,204,63,52,68,225,14,0,12,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,39,106,68,29,0,0,0,0,49,0,51,101,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,252,252,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,147,251,252,252,146,0,0,0,0,0,0,0,0,0,0,90,155,56,12,0,0,0,0,0,0,0,54,146,252,252,252,252,142,0,0,0,0,0,0,0,0,0,0,209,252,252,210,104,0,0,0,0,62,131,250,252,252,204,252,225,93,0,0,0,0,0,0,0,0,0,0,209,252,252,252,242,164,122,217,232,246,252,252,252,248,193,241,120,0,0,0,0,0,0,0,0,0,0,0,125,251,252,252,252,252,252,252,253,252,252,252,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,175,236,252,252,252,252,253,252,188,118,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,86,142,142,142,81,33,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0,0,28,204,255,254,92,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,98,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,247,252,253,211,124,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,152,253,253,251,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,165,252,253,253,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,250,147,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,220,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,253,135,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,22,0,0,21,24,24,24,118,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,253,253,134,124,124,238,253,253,253,253,198,22,0,0,0,0,0,0,0,0,0,0,0,0,26,191,253,253,253,253,253,253,253,253,253,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,239,237,237,195,93,245,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,193,12,0,0,0,0,116,253,253,203,25,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,253,189,18,0,0,0,17,72,233,253,213,110,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,74,8,8,8,8,169,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,227,253,253,253,253,253,253,253,253,253,253,227,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,229,253,253,253,253,253,253,253,253,228,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,150,253,253,253,253,253,211,99,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,25,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,203,254,253,176,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,253,254,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,159,243,253,253,254,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,218,70,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,168,168,117,25,151,253,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,178,254,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,254,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,163,254,254,238,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,181,253,253,242,0,0,0,0,0,0,0,0,11,13,0,0,0,0,0,0,0,0,0,0,0,25,66,231,253,253,185,51,0,0,0,0,0,11,37,141,199,207,0,0,0,0,0,0,0,0,0,28,125,226,253,253,253,253,108,49,49,49,125,170,169,194,253,253,253,230,0,0,0,0,0,0,0,0,38,223,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,146,38,0,0,0,0,0,0,0,0,168,253,253,253,201,201,253,253,253,253,254,253,253,253,253,198,180,77,6,0,0,0,0,0,0,0,0,0,254,253,241,145,14,14,48,151,168,168,169,168,151,48,48,12,0,0,0,0,0,0,0,0,0,0,0,0,42,156,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,82,169,169,169,144,57,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,253,252,252,252,253,252,252,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,188,246,252,253,252,214,139,140,215,252,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,206,113,101,0,0,0,0,0,147,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,240,81,0,0,0,0,0,0,13,209,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,43,0,0,0,0,0,0,0,95,252,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,234,252,253,177,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,216,253,253,226,38,0,0,0,0,0,13,16,29,19,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,252,252,38,0,19,57,70,169,169,206,216,252,224,119,0,0,0,0,0,0,0,0,0,0,67,246,253,252,252,252,198,197,215,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,185,252,253,252,252,252,253,252,252,252,253,252,252,252,253,252,164,139,0,0,0,0,0,0,0,0,0,57,253,253,254,253,253,253,254,253,244,225,214,113,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,190,252,197,196,196,196,84,84,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,61,141,255,161,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,217,254,240,155,225,206,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,247,106,17,0,23,209,233,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,235,169,5,0,0,0,0,144,246,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,169,8,0,0,0,0,0,144,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,251,46,0,0,0,0,0,2,193,241,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,236,0,0,0,0,0,0,53,254,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,129,0,0,0,0,0,0,108,246,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,121,0,0,0,0,3,117,190,181,240,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,227,0,0,0,0,88,240,71,144,238,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,248,128,11,3,111,232,99,0,144,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,250,245,244,236,99,0,0,144,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,124,111,34,0,0,0,144,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,250,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,202,254,254,254,254,113,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,220,253,253,253,253,253,253,220,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,250,253,253,253,253,253,253,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,29,29,29,29,109,249,253,253,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,180,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,247,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,226,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,162,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,236,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,231,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,206,253,253,253,239,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,189,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,243,253,253,253,119,0,0,0,0,0,0,0,0,9,36,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,214,179,179,179,181,144,30,30,30,145,214,127,7,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,138,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,253,253,253,253,255,253,253,253,253,253,253,253,208,0,0,0,0,0,0,0,0,0,0,84,237,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,68,104,104,104,104,104,104,104,105,104,104,104,104,210,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,58,230,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,148,128,38,67,110,183,252,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,235,252,252,252,252,252,200,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,248,252,243,244,252,252,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,252,119,50,88,224,252,252,170,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,248,252,153,7,0,0,209,252,209,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,248,252,226,34,0,0,66,249,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,201,252,252,246,39,0,0,6,189,252,220,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,127,0,0,0,34,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,128,3,0,0,0,129,252,252,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,87,0,0,0,0,63,255,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,195,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,240,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,250,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,252,252,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,252,161,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,205,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,226,29,0,0,0,44,255,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,145,235,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,144,254,166,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,243,37,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,150,0,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,9,0,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,247,254,241,241,241,186,144,210,190,235,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,176,240,240,240,243,254,254,254,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,82,82,111,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,227,254,146,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,229,230,145,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,122,159,135,175,252,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,155,253,167,9,132,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,250,253,162,63,0,10,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,253,122,5,0,0,10,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,129,7,0,0,3,132,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,103,0,0,0,38,253,227,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,124,0,0,15,190,247,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,134,233,160,8,122,248,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,204,204,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,176,239,146,231,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,155,0,114,223,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,250,234,22,0,38,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,137,0,0,31,242,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,54,0,0,31,243,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,37,0,0,105,249,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,58,0,61,238,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,144,64,240,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,239,253,170,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,28,130,130,130,130,130,130,234,254,254,254,254,136,6,0,0,0,0,0,0,0,0,1,80,136,136,151,253,253,253,253,253,253,253,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,68,253,253,253,253,253,253,253,253,253,253,253,253,247,251,253,253,253,253,129,0,0,0,0,0,0,0,0,3,184,253,253,253,253,253,253,253,247,228,248,245,90,196,250,253,253,253,57,0,0,0,0,0,0,0,0,0,53,108,222,222,222,140,123,222,108,0,78,67,0,0,223,253,253,181,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,242,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,242,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,222,253,253,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,199,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,222,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,246,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,108,1,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,169,169,169,169,57,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,215,252,253,252,252,252,253,215,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,177,28,28,28,65,139,253,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,247,50,0,0,0,0,0,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,65,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,101,0,0,0,0,0,85,252,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,229,253,254,253,216,141,29,54,229,253,254,84,0,0,16,29,79,29,0,0,0,0,0,0,0,0,128,252,252,252,253,252,252,252,253,252,252,252,253,196,169,169,216,252,252,252,0,0,0,0,0,0,0,0,253,252,224,118,168,168,234,252,253,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,253,252,168,0,0,0,147,252,253,252,252,252,253,252,252,252,253,252,252,202,0,0,0,0,0,0,0,0,255,253,253,153,254,253,253,253,254,234,137,113,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,252,252,253,252,252,252,184,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,130,168,168,168,168,80,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,89,156,231,255,163,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,165,253,253,253,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,153,224,253,253,180,174,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,70,237,253,207,71,19,2,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,147,253,253,177,23,0,0,0,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,217,254,254,131,0,0,0,0,0,83,255,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,87,229,254,251,135,3,0,0,0,44,132,244,254,253,129,0,0,0,0,0,0,0,0,0,0,0,0,85,247,253,235,124,0,0,0,0,112,229,253,253,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,120,0,0,52,212,235,250,253,253,253,254,167,6,0,0,0,0,0,0,0,0,0,0,0,16,235,253,253,240,195,195,248,253,254,253,253,253,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,254,255,254,254,222,120,38,5,156,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,3,136,233,241,241,225,135,25,0,0,103,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,0,0,0,0,19,196,253,240,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,255,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,199,254,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,207,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,254,254,254,254,254,254,157,125,125,106,81,112,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,253,253,253,253,253,252,251,253,248,241,54,0,0,0,0,0,0,0,0,0,0,6,185,253,253,253,253,196,253,253,253,253,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,9,236,253,253,54,9,19,19,49,149,149,149,149,149,211,248,69,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,155,0,0,0,0,0,0,0,0,0,15,24,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,199,79,79,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,244,253,253,253,253,241,202,112,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,253,236,237,253,253,215,112,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,244,253,253,157,48,158,235,253,253,200,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,174,17,0,0,73,209,253,253,201,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,185,42,0,0,0,0,12,167,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,188,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,33,6,0,0,0,0,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,45,0,0,0,0,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,168,46,15,0,0,0,0,97,214,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,253,225,143,143,143,143,214,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,249,253,253,253,253,253,253,253,253,253,237,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,123,227,219,123,123,123,123,123,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,255,254,254,254,174,101,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,168,231,253,253,253,253,253,253,253,248,200,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,141,107,107,107,107,240,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,35,160,105,2,0,0,0,0,53,169,253,251,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,219,253,215,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,239,243,253,211,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,193,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,176,199,253,253,234,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,90,241,253,248,177,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,163,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,137,253,246,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,245,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,249,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,171,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,250,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,181,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,134,61,0,0,0,0,0,0,0,0,0,0,178,223,12,0,0,0,0,0,0,0,0,0,0,0,0,144,253,142,0,0,0,0,0,0,0,0,0,28,232,216,10,0,0,0,0,0,0,0,0,0,0,0,0,234,253,128,0,0,0,0,0,0,0,0,0,89,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,83,0,0,0,0,0,0,0,0,0,156,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,0,0,0,0,0,0,0,0,0,0,231,233,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,155,0,0,0,0,0,0,0,0,0,61,255,234,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,73,0,0,0,0,0,0,0,0,0,98,254,188,0,0,0,0,0,0,0,0,0,0,0,0,88,253,237,36,0,0,0,0,0,0,0,0,0,165,254,68,0,0,0,0,0,0,0,0,0,0,0,0,9,196,253,126,40,24,40,9,24,0,0,0,52,248,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,18,238,253,254,230,253,208,230,196,195,195,226,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,99,98,68,0,0,0,0,0,235,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,250,245,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,192,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,112,161,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,172,231,251,253,253,222,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,83,199,245,253,254,248,230,238,239,37,0,0,0,0,95,74,0,0,0,0,0,0,0,0,0,0,51,209,254,253,244,160,69,56,0,25,25,0,0,0,0,68,240,194,0,0,0,0,0,0,0,0,0,130,254,254,236,167,17,0,0,0,0,0,0,0,0,26,128,245,254,254,0,0,0,0,0,0,0,0,81,251,232,139,17,0,0,0,0,0,0,0,0,26,164,239,254,253,232,139,0,0,0,0,0,0,0,0,161,223,42,0,0,0,0,0,0,0,0,17,141,232,253,253,247,179,42,0,0,0,0,0,0,0,0,0,161,115,0,0,0,0,0,0,0,0,85,234,254,253,253,219,118,0,0,0,0,0,0,0,0,0,0,0,162,140,0,0,0,0,0,0,45,204,254,254,254,216,67,0,0,0,0,0,0,0,0,0,0,0,0,0,195,232,97,13,0,0,5,114,245,253,253,219,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,226,253,152,24,3,141,253,254,223,62,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,236,253,254,190,240,253,195,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,127,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,253,253,253,114,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,130,163,246,254,44,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,228,15,0,50,220,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,23,0,0,0,198,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,232,155,138,164,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,188,240,253,254,240,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,69,69,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,101,154,155,154,141,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,93,220,253,253,253,253,253,238,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,217,253,253,253,253,253,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,130,246,253,253,249,188,107,44,211,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,253,253,253,152,61,0,0,0,25,240,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,51,184,253,253,242,67,5,0,0,0,0,0,132,253,249,101,0,0,0,0,0,0,0,0,0,0,0,49,232,253,253,207,67,0,0,0,0,0,0,0,10,207,253,153,0,0,0,0,0,0,0,0,0,0,11,219,253,253,240,18,0,0,0,0,0,0,0,0,0,134,253,209,0,0,0,0,0,0,0,0,0,0,141,253,253,230,40,0,0,0,0,0,0,0,0,0,0,91,253,253,0,0,0,0,0,0,0,0,0,89,252,253,239,62,0,0,0,0,0,0,0,0,0,0,0,188,253,234,0,0,0,0,0,0,0,0,2,210,253,253,136,0,0,0,0,0,0,0,0,0,0,0,70,241,253,112,0,0,0,0,0,0,0,0,56,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,158,253,208,0,0,0,0,0,0,0,0,0,139,253,253,89,0,0,0,0,0,0,0,0,0,0,0,113,251,253,119,0,0,0,0,0,0,0,0,0,221,253,253,34,0,0,0,0,0,0,0,0,0,0,112,229,253,193,3,0,0,0,0,0,0,0,0,0,254,253,253,34,0,0,0,0,0,0,0,0,18,152,250,253,226,44,0,0,0,0,0,0,0,0,0,0,254,253,253,66,0,0,0,0,0,0,2,104,213,253,253,197,43,0,0,0,0,0,0,0,0,0,0,0,148,253,253,197,67,18,0,0,27,95,216,253,251,218,121,6,0,0,0,0,0,0,0,0,0,0,0,0,14,221,253,253,253,221,189,189,239,253,253,232,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,238,253,253,253,253,253,253,227,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,140,153,153,153,153,117,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,238,211,86,0,0,0,0,0,40,255,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,250,253,253,175,0,0,0,0,0,100,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,172,9,0,0,0,0,44,249,253,242,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,115,0,0,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,251,253,171,4,0,0,0,0,0,163,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,48,0,0,0,0,0,19,204,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,32,0,0,0,0,0,97,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,248,253,167,79,79,182,209,209,241,253,253,253,212,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,253,253,253,253,253,253,253,253,253,223,88,0,0,0,0,0,0,0,0,0,0,0,0,0,24,175,245,253,253,253,253,253,253,253,253,211,174,58,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,108,194,194,210,253,253,253,244,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,153,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,119,0,0,0,0,0,0,0,0,0,152,104,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,229,0,0,0,0,0,0,0,0,0,212,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,244,65,0,0,0,0,0,0,0,0,212,254,162,2,0,0,0,0,0,0,0,0,0,0,0,0,6,189,254,226,10,0,0,0,0,0,0,0,138,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,93,0,0,0,0,0,0,0,88,254,254,161,3,0,0,0,0,0,0,0,0,0,0,0,0,62,239,254,177,32,0,0,0,0,0,0,32,213,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,240,53,0,0,0,0,0,0,94,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,8,187,254,254,200,174,174,174,174,174,174,204,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,234,254,254,254,254,254,254,254,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,241,192,239,236,192,213,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,83,101,48,0,47,44,0,22,132,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,233,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,227,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,91,143,254,254,238,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,49,180,199,253,253,242,236,236,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,178,253,253,253,253,218,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,168,253,253,253,223,119,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,178,253,253,253,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,211,18,0,0,0,34,50,66,213,187,24,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,185,92,0,0,0,46,217,253,253,253,253,194,18,0,0,0,0,0,0,0,0,0,0,0,125,246,253,223,12,0,0,0,41,233,253,253,253,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,255,253,253,220,0,0,0,41,216,253,253,253,238,168,253,253,195,0,0,0,0,0,0,0,0,0,0,0,254,253,253,61,0,0,0,66,253,253,253,157,14,160,253,253,195,0,0,0,0,0,0,0,0,0,0,0,254,253,253,56,0,0,5,178,253,250,132,53,138,253,253,249,83,0,0,0,0,0,0,0,0,0,0,0,254,253,253,56,0,20,184,253,253,171,4,158,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,72,0,50,253,253,253,232,191,253,253,253,206,31,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,235,116,142,253,253,253,253,253,253,253,201,27,0,0,0,0,0,0,0,0,0,0,0,0,0,107,241,253,253,253,253,253,253,253,253,253,237,196,27,0,0,37,137,205,73,0,0,0,0,0,0,0,0,0,180,253,253,253,253,253,253,253,253,249,75,0,0,0,69,238,253,214,43,0,0,0,0,0,0,0,0,0,34,195,203,253,253,253,253,253,94,86,23,74,222,222,238,253,124,23,0,0,0,0,0,0,0,0,0,0,0,0,14,106,230,253,253,253,253,249,189,253,253,253,253,124,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,253,253,253,253,253,166,15,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,179,253,253,253,253,253,130,89,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,43,87,148,148,148,148,236,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,187,252,252,253,252,252,252,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,252,235,232,231,231,205,126,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,252,247,119,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,247,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,71,0,6,64,64,64,64,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,229,211,215,252,252,253,252,232,140,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,255,253,253,243,211,212,211,232,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,63,63,63,47,0,0,0,48,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,232,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,227,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,128,227,252,245,141,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,127,128,127,180,237,252,253,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,253,252,252,252,226,128,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,218,253,252,244,147,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,53,101,246,182,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,197,253,248,187,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,227,111,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,57,238,242,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,138,253,205,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,216,253,188,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,36,225,248,204,6,0,0,0,0,0,0,4,2,31,37,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,113,0,0,0,0,0,0,0,0,89,167,253,223,40,0,0,0,0,0,0,0,0,0,0,31,169,253,154,6,0,0,0,0,0,0,51,164,187,250,176,233,143,0,0,0,0,0,0,0,0,0,0,100,253,157,7,0,0,0,0,0,30,111,234,181,105,31,0,188,143,0,0,0,0,0,0,0,0,0,24,217,242,39,0,0,0,0,0,5,188,241,163,39,0,0,60,254,143,0,0,0,0,0,0,0,0,0,177,253,126,0,0,0,0,0,0,139,236,66,0,0,0,3,132,199,44,0,0,0,0,0,0,0,0,28,240,171,2,0,0,0,0,0,183,140,32,0,0,0,0,94,215,132,0,0,0,0,0,0,0,0,0,92,253,154,0,0,0,0,24,166,89,0,0,0,0,39,171,252,197,3,0,0,0,0,0,0,0,0,0,120,239,73,0,0,0,0,117,253,33,0,15,56,66,223,253,246,35,0,0,0,0,0,0,0,0,0,0,34,210,16,0,0,0,9,232,226,21,0,67,253,253,253,184,52,0,0,0,0,0,0,0,0,0,0,0,34,253,144,0,0,0,65,253,213,26,123,204,253,252,145,14,0,0,0,0,0,0,0,0,0,0,0,0,13,207,215,98,45,93,145,253,253,253,255,253,192,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,240,253,253,253,253,253,253,253,244,147,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,143,167,205,253,234,143,95,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,237,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,244,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,152,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,253,253,192,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,209,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,210,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,251,253,253,208,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,246,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,244,253,253,248,47,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,232,253,253,248,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,144,251,253,251,145,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,201,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,198,253,253,217,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,243,253,253,217,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,104,253,253,221,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,183,253,253,233,96,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,220,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,214,255,254,254,191,67,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,195,253,253,253,253,253,253,239,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,253,253,253,253,232,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,230,177,239,253,253,253,253,253,226,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,185,142,79,0,92,159,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,10,0,0,0,16,46,209,253,253,253,253,222,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,199,253,253,253,253,221,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,197,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,95,195,253,253,253,235,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,38,150,249,253,253,253,253,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,104,226,253,253,253,253,253,237,149,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,194,253,253,253,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,145,249,253,253,253,253,253,253,165,17,2,0,0,0,22,48,48,25,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,253,253,200,114,114,114,114,114,175,253,253,185,29,0,0,0,0,0,0,0,0,20,167,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,166,19,0,0,0,0,0,0,0,0,0,4,157,253,253,253,253,253,253,253,253,253,253,253,253,253,253,198,4,0,0,0,0,0,0,0,0,0,0,0,5,130,130,130,171,253,253,253,253,253,253,253,253,198,130,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,65,86,253,253,84,65,65,65,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,248,255,255,254,255,214,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,250,253,253,253,253,253,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,213,237,253,253,216,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,207,96,19,12,16,59,232,253,240,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,152,21,0,0,0,0,0,125,231,253,208,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,199,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,222,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,217,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,53,53,35,0,0,0,153,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,208,253,253,227,136,46,56,234,253,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,210,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,253,253,253,253,253,253,253,253,237,163,146,13,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,253,253,253,253,253,253,253,180,27,12,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,253,248,234,234,247,253,253,253,253,195,146,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,249,112,0,0,77,110,110,124,173,241,247,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,251,139,84,0,0,0,0,0,0,0,0,6,114,0,0,0,0,0,0,0,0,0,0,0,174,253,253,139,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,48,73,151,151,151,92,48,244,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,147,214,254,254,214,160,236,254,254,254,237,20,0,0,0,0,0,0,0,0,0,0,0,0,0,14,152,252,221,145,22,10,6,0,8,93,254,254,196,12,0,0,0,0,0,0,0,0,0,0,0,0,16,189,254,117,6,0,0,0,0,0,0,77,254,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,78,0,0,0,0,0,0,51,244,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,185,255,229,117,0,0,0,0,15,186,254,229,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,145,244,251,194,114,6,16,190,254,228,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,210,254,197,240,254,230,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,102,254,254,254,239,197,110,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,254,208,99,181,254,254,242,82,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,186,254,164,9,0,0,68,155,249,254,229,133,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,239,2,0,0,0,0,0,17,140,233,254,242,16,0,0,0,0,0,0,0,0,0,0,0,0,100,250,254,124,0,0,0,0,0,0,0,0,31,155,254,215,35,0,0,0,0,0,0,0,0,0,0,0,188,254,216,15,0,0,0,0,0,0,0,0,0,68,254,254,46,0,0,0,0,0,0,0,0,0,0,0,188,254,149,0,0,0,0,0,0,0,0,0,0,68,254,237,32,0,0,0,0,0,0,0,0,0,0,33,248,254,78,0,0,0,0,0,0,0,0,0,79,236,249,101,0,0,0,0,0,0,0,0,0,0,0,65,254,254,78,0,0,0,0,0,0,0,65,142,246,236,136,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,82,0,0,0,7,52,132,219,252,251,193,60,0,0,0,0,0,0,0,0,0,0,0,0,0,14,212,254,228,161,161,161,219,254,254,234,100,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,204,254,254,254,252,150,150,48,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,63,0,0,0,0,0,0,0,0,0,0,147,222,38,0,0,0,0,0,0,0,0,0,0,0,104,252,252,178,9,0,0,0,0,0,0,0,0,101,249,252,218,38,0,0,0,0,0,0,0,0,0,19,209,252,252,253,27,0,0,0,0,0,0,0,32,144,252,252,252,112,0,0,0,0,0,0,0,0,0,178,252,252,252,240,24,0,0,0,0,0,0,4,153,253,252,252,249,99,0,0,0,0,0,0,0,0,0,225,252,252,252,140,0,0,0,0,0,0,0,29,252,253,252,252,223,0,0,0,0,0,0,0,0,0,0,226,253,253,190,0,0,0,0,0,0,0,0,92,253,255,253,253,84,0,0,0,0,0,0,0,0,0,101,249,252,252,158,0,0,0,0,0,0,0,51,243,252,253,252,201,9,0,0,0,0,0,0,0,0,0,25,231,252,252,252,198,197,197,197,119,57,182,209,252,252,253,252,164,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,253,252,252,252,252,253,252,252,252,252,253,179,19,0,0,0,0,0,0,0,0,0,0,0,38,221,252,252,253,252,252,252,252,253,252,252,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,140,141,241,253,253,253,255,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,27,27,27,174,252,252,252,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,153,253,252,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,130,161,109,0,0,0,0,0,0,0,0,0,0,0,0,0,38,25,0,0,0,0,13,70,164,184,191,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,233,185,0,34,93,155,215,252,252,252,253,252,252,218,108,0,0,0,0,0,0,0,0,0,0,0,0,53,253,248,230,238,252,253,252,252,252,147,137,64,22,14,0,0,0,0,0,0,0,0,0,0,0,0,51,243,255,253,247,230,230,168,116,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,249,132,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,220,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,165,93,93,93,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,252,252,252,252,231,209,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,231,230,230,230,230,255,253,253,117,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,92,92,0,0,0,0,0,103,236,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,9,34,0,0,0,0,0,0,0,0,9,174,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,181,238,146,21,0,0,0,0,0,0,181,252,252,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,139,65,24,66,243,255,253,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,206,206,244,252,253,252,252,252,252,228,185,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,121,184,215,234,195,79,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,33,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,95,251,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,90,164,203,253,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,74,74,120,175,248,254,254,254,254,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,46,209,242,245,254,254,254,254,254,186,99,32,33,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,240,114,104,89,17,4,0,0,22,254,242,5,0,0,0,0,0,0,0,0,0,0,0,0,176,217,172,87,17,0,0,0,0,0,0,0,72,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,8,10,0,0,0,0,0,0,0,0,0,6,199,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,245,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,246,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,221,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,254,231,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,243,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,210,251,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,242,225,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,218,182,23,216,42,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,79,0,120,143,0,0,0,6,76,156,188,91,0,0,0,0,0,0,0,0,0,0,0,0,0,24,235,82,0,9,120,2,0,0,113,207,153,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,231,145,0,0,3,9,0,19,170,212,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,229,147,0,0,0,0,0,88,233,111,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,188,147,3,0,0,0,28,168,231,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,231,17,0,0,0,38,204,202,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,216,91,0,0,0,69,232,180,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,209,11,0,2,109,248,119,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,179,0,0,113,242,104,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,251,12,115,247,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,215,185,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,246,235,241,248,248,221,160,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,55,0,36,57,98,88,224,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,95,0,0,0,0,0,29,228,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,188,7,0,0,0,0,31,221,169,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,212,125,50,50,50,138,230,178,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,65,172,233,254,255,198,97,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,174,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,252,252,141,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,213,252,252,252,250,232,249,232,144,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,174,252,252,252,252,253,252,252,252,252,239,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,252,244,173,208,209,217,200,252,252,253,252,109,0,0,0,0,0,0,0,0,0,0,0,0,13,174,253,254,151,0,0,0,0,0,0,0,132,255,253,232,0,0,0,0,0,0,0,0,0,0,0,29,142,252,252,239,42,0,0,0,0,0,0,0,0,174,252,231,0,0,0,0,0,0,0,0,0,0,4,187,252,252,235,62,0,0,0,0,0,0,0,0,0,30,168,251,86,0,0,0,0,0,0,0,0,0,32,237,252,252,42,0,0,0,0,0,0,0,0,0,0,0,85,252,205,11,0,0,0,0,0,0,0,0,62,216,244,121,7,0,0,0,0,0,0,0,0,0,0,0,50,244,252,42,0,0,0,0,0,0,0,0,148,253,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,42,0,0,0,0,0,0,0,0,148,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,42,0,0,0,0,0,0,0,0,139,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,8,234,252,42,0,0,0,0,0,0,0,0,14,211,237,21,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,42,0,0,0,0,0,0,0,0,0,190,252,198,18,0,0,0,0,0,0,0,0,0,0,0,85,252,226,24,0,0,0,0,0,0,0,0,0,71,232,253,209,18,0,0,0,0,0,0,0,0,0,87,227,250,115,0,0,0,0,0,0,0,0,0,0,0,48,252,252,217,111,78,0,0,0,0,8,85,128,227,252,231,0,0,0,0,0,0,0,0,0,0,0,0,2,118,249,253,252,251,232,232,233,232,234,252,252,253,174,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,190,237,252,252,252,253,252,247,205,155,84,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,42,113,147,209,252,99,11,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,128,128,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,128,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,64,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,19,130,209,254,194,139,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,245,241,249,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,205,251,158,41,0,76,212,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,205,253,216,0,0,0,0,75,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,251,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,237,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,105,0,0,0,0,36,50,50,50,50,50,50,31,0,0,0,0,0,0,0,0,0,0,0,0,5,227,253,131,0,36,78,180,232,253,253,253,253,253,253,224,180,180,97,0,0,0,0,0,0,0,0,0,0,46,253,234,78,229,253,253,209,191,191,191,91,68,173,191,191,191,103,0,0,0,0,0,0,0,0,0,0,3,169,253,253,253,208,100,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,175,253,253,163,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,150,253,214,253,246,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,195,22,129,253,225,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,111,0,5,116,222,222,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,111,0,0,0,120,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,162,0,0,0,26,220,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,90,243,101,0,0,0,174,225,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,91,252,227,119,139,250,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,91,253,253,253,229,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,122,240,254,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,207,253,224,156,240,249,64,0,0,17,38,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,225,249,166,29,0,85,252,188,0,23,205,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,247,84,0,0,0,0,197,243,51,209,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,42,245,223,28,0,0,0,0,45,252,247,253,253,205,4,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,99,0,0,0,0,0,35,248,253,253,237,59,0,0,0,0,0,0,0,0,0,0,0,0,0,4,197,237,31,0,0,0,0,0,0,197,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,150,0,0,0,0,0,0,65,230,253,151,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,123,0,0,0,0,21,147,249,253,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,221,241,70,0,91,174,236,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,224,254,254,254,254,205,95,236,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,122,122,122,41,7,0,225,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,236,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,226,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,234,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,209,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,254,255,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,218,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,253,248,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,253,253,199,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,251,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,215,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,253,253,220,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,115,253,253,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,180,253,253,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,166,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,75,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,64,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,216,253,253,253,235,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,254,231,133,133,133,133,24,13,13,13,13,10,9,9,6,0,12,1,0,0,0,0,0,0,0,0,145,253,253,253,253,253,253,253,253,253,254,253,253,233,223,222,197,145,243,81,0,0,0,0,0,0,0,0,237,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,253,190,0,0,0,0,0,0,0,0,109,205,205,228,205,205,205,223,253,207,229,205,205,205,216,253,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,28,72,4,35,0,0,0,18,124,253,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,211,253,253,187,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,134,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,243,253,134,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,253,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,198,253,224,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,94,254,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,253,213,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,248,253,152,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,224,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,206,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,207,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,162,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,217,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,212,157,95,37,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,205,253,253,253,253,253,254,253,201,170,140,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,97,124,193,254,253,253,253,253,198,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,36,0,0,60,129,180,229,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,216,253,184,7,0,0,0,0,0,169,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,0,14,202,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,0,37,253,253,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,0,37,253,253,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,23,0,0,0,0,0,37,255,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,171,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,233,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,149,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,118,188,254,254,255,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,234,236,253,253,253,253,253,253,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,225,253,253,253,214,177,204,253,253,253,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,253,123,0,22,61,172,253,253,223,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,251,107,0,0,0,49,253,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,251,253,244,226,0,0,0,0,20,193,253,253,155,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,123,40,0,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,90,149,227,116,90,182,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,153,253,253,253,253,253,253,253,253,225,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,151,253,253,253,253,253,253,253,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,232,253,253,253,226,226,248,253,253,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,245,109,3,3,208,253,253,253,253,209,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,239,0,54,169,253,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,252,241,246,253,253,253,242,209,253,253,204,22,0,0,0,0,0,0,0,0,0,0,0,0,0,52,188,253,253,253,253,253,253,211,30,98,211,253,253,227,110,0,0,0,0,0,0,0,0,0,0,0,0,0,12,147,228,253,253,253,203,81,0,0,27,243,253,253,244,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,75,75,75,14,0,0,0,0,127,248,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,123,254,221,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,219,253,253,215,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,176,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,246,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,220,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,216,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,222,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,253,253,253,190,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,220,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,253,253,242,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,216,0,0,0,0,0,100,205,205,205,205,205,115,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,173,0,0,0,65,181,244,253,253,253,253,253,235,113,0,0,0,0,0,0,0,0,0,0,136,253,253,253,93,0,0,94,244,253,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,136,253,253,253,140,0,153,245,253,253,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,136,253,253,253,250,230,246,253,253,253,253,253,253,253,253,253,207,19,0,0,0,0,0,0,0,0,0,0,82,253,253,253,253,253,253,253,253,253,253,253,253,253,253,152,80,0,0,0,0,0,0,0,0,0,0,0,1,91,253,253,253,253,253,253,253,253,253,253,253,210,87,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,82,147,253,253,253,253,253,217,129,26,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,177,255,142,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,244,253,253,253,239,144,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,253,253,253,152,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,61,195,75,61,161,234,253,223,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,126,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,201,232,253,253,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,203,248,253,253,253,210,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,253,192,68,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,238,253,253,162,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,109,226,253,182,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,250,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,133,253,253,247,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,124,179,179,56,153,179,227,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,178,253,253,253,253,253,253,253,243,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,250,253,253,253,238,116,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,190,255,197,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,191,240,252,253,252,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,192,244,252,252,252,253,252,252,201,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,244,252,252,252,252,252,253,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,213,185,218,252,252,252,203,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,243,115,28,0,121,252,252,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,218,41,41,41,141,252,252,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,252,252,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,252,252,252,252,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,252,252,252,252,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,133,152,253,253,253,255,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,25,252,253,252,252,252,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,145,253,252,252,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,234,253,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,230,252,253,252,178,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,126,252,253,195,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,125,241,247,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,210,247,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,245,253,254,232,171,101,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,123,245,253,253,177,30,0,2,84,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,155,0,0,0,84,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,151,0,0,0,11,183,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,253,116,4,0,0,51,180,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,160,5,0,59,186,250,253,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,170,122,134,238,254,253,253,251,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,253,253,253,253,254,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,254,254,254,254,255,254,243,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,134,198,198,128,76,221,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,238,254,203,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,149,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,244,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,157,128,213,142,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,184,253,253,253,253,236,142,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,253,253,253,253,253,231,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,223,253,196,186,200,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,187,255,253,253,68,0,14,158,199,231,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,126,220,253,214,142,163,55,0,0,0,19,220,161,0,0,0,0,0,0,0,0,0,0,0,0,0,20,133,253,238,155,0,0,0,0,0,0,0,42,239,120,0,0,0,0,0,0,0,0,0,0,0,5,49,226,251,226,45,0,0,0,0,0,0,0,3,144,63,114,0,0,0,0,0,0,0,0,0,0,0,151,253,253,142,0,0,0,0,0,0,0,0,0,41,190,107,0,0,0,0,0,0,0,0,0,0,0,158,254,254,67,0,0,0,0,0,0,0,0,0,0,175,228,0,0,0,0,0,0,0,0,0,0,0,103,252,253,132,4,0,0,0,0,0,0,0,0,0,23,207,226,0,0,0,0,0,0,0,0,0,0,109,238,253,131,6,0,0,0,0,0,0,0,0,0,111,233,97,23,0,0,0,0,0,0,0,0,0,0,121,253,174,6,0,0,0,0,0,0,0,0,0,181,245,165,13,0,0,0,0,0,0,0,0,0,0,0,57,247,125,0,0,0,0,0,0,0,0,29,117,245,200,49,0,0,0,0,0,0,0,0,0,0,0,0,191,253,26,0,0,0,0,0,0,0,54,186,199,87,14,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,182,61,41,69,174,174,104,174,214,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,220,250,253,253,253,249,226,148,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,107,107,107,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,215,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,186,36,0,0,175,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,112,0,0,192,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,89,0,23,254,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,90,0,106,255,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,221,20,0,149,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,171,0,0,198,252,42,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,193,0,8,229,166,0,0,94,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,193,0,67,253,149,0,58,246,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,236,152,197,254,224,219,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,158,250,253,253,254,253,249,158,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,149,253,137,89,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,245,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,96,214,253,114,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,32,32,32,171,228,253,251,251,251,212,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,253,251,251,251,251,253,251,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,228,253,243,188,188,89,31,31,110,244,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,95,82,0,0,0,0,0,80,240,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,174,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,251,251,251,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,221,251,251,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,251,251,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,158,253,251,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,234,253,255,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,221,251,251,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,244,251,251,251,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,251,251,251,152,0,0,0,0,100,159,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,255,253,253,213,96,96,96,174,253,253,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,96,244,251,253,251,251,251,251,253,251,251,251,231,161,16,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,251,251,253,251,251,219,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,251,251,189,168,31,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,94,193,95,94,94,94,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,53,128,128,196,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,104,187,251,254,253,241,145,86,0,0,0,0,0,0,0,0,0,0,0,0,0,5,80,15,0,25,189,244,253,253,228,144,35,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,130,254,254,254,254,255,242,158,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,253,253,245,196,88,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,137,250,231,136,220,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,233,20,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,250,253,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,244,254,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,103,24,222,254,245,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,199,253,214,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,238,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,130,189,209,249,255,247,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,223,137,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,112,47,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,86,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,0,0,0,57,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,57,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,255,255,170,170,170,170,198,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,114,86,170,170,255,255,255,255,255,255,170,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,255,255,255,255,141,57,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,198,255,170,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,189,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,119,0,0,0,0,0,0,0,32,110,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,246,233,121,0,0,0,0,0,0,0,118,248,164,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,254,195,6,0,0,0,0,0,0,20,215,254,152,4,0,0,0,0,0,0,0,0,0,0,0,0,50,254,215,70,0,0,0,0,0,0,0,126,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,8,175,254,251,62,0,0,0,0,0,0,0,137,254,223,7,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,151,0,0,0,0,0,0,0,125,247,254,74,0,0,0,0,0,0,0,0,0,0,0,0,6,214,254,213,17,0,0,0,0,0,0,9,217,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,46,221,254,207,85,0,0,0,0,0,0,129,254,254,153,5,0,0,0,0,0,0,0,0,0,0,0,0,4,181,254,254,254,217,205,250,231,192,211,254,254,230,239,244,51,0,0,0,0,0,0,0,0,0,0,0,0,39,236,254,254,254,254,254,254,254,254,254,254,141,178,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,165,185,218,218,217,195,243,254,254,214,106,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,15,1,166,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,249,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,223,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,254,254,132,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,240,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,226,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,244,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,170,255,205,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,254,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,156,245,253,254,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,197,253,253,253,254,171,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,148,88,9,121,114,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,146,12,5,158,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,253,213,11,0,132,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,235,253,106,7,161,250,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,235,253,175,206,253,254,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,183,253,253,253,253,254,155,176,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,129,11,104,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,187,229,204,52,0,0,152,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,197,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,214,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,235,253,180,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,211,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,247,154,147,168,58,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,222,254,254,254,254,254,167,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,107,243,254,245,118,57,57,170,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,114,254,254,212,42,0,0,0,114,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,254,212,28,0,0,0,0,184,244,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,214,27,0,0,0,0,68,250,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,215,25,0,0,0,0,7,227,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,130,23,0,0,0,0,0,95,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,206,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,183,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,208,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,235,254,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,193,254,229,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,21,21,26,144,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,166,247,254,254,254,254,254,254,239,95,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,164,145,254,254,247,219,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,245,254,172,228,254,239,47,8,118,254,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,246,254,254,245,68,0,0,7,193,254,206,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,93,93,35,0,0,0,0,81,255,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,183,0,0,0,0,0,11,51,51,51,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,41,173,252,253,252,223,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,92,233,254,253,254,253,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,61,0,0,0,193,252,253,252,253,252,253,252,243,81,0,0,0,0,0,0,0,0,0,0,0,0,254,253,41,0,0,62,254,253,244,122,0,0,62,223,254,253,0,0,0,0,0,0,0,0,0,0,0,0,253,252,0,0,0,183,253,252,162,0,0,0,0,122,253,252,0,0,0,0,0,0,0,0,0,0,0,62,254,253,0,0,0,203,254,192,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,20,253,252,0,0,0,203,253,151,0,0,0,0,0,142,253,252,0,0,0,0,0,0,0,0,0,0,0,0,254,253,62,0,0,203,254,151,0,0,0,0,113,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,162,253,232,0,0,0,123,233,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,193,253,255,172,52,92,254,253,193,152,214,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,252,253,252,253,252,253,252,253,252,233,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,253,254,253,254,253,254,253,244,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,172,252,192,151,91,50,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,197,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,0,0,0,0,13,207,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,235,54,0,0,0,149,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,233,86,0,105,251,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,248,247,253,228,249,254,254,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,37,34,221,254,254,208,238,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,125,0,0,29,59,59,4,123,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,211,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,189,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,244,246,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,255,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,254,140,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,226,254,182,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,192,146,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,125,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,250,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,253,253,253,250,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,247,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,162,119,101,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,107,183,69,53,218,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,210,253,253,253,253,253,253,241,53,0,0,0,0,0,28,120,176,176,0,0,0,0,0,0,0,0,20,206,253,253,253,253,253,253,253,198,31,0,0,27,57,169,219,253,253,253,0,0,0,0,0,0,0,0,208,253,253,253,253,253,253,253,253,253,232,163,163,223,253,253,253,253,253,169,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,238,156,47,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,241,156,45,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,248,196,110,214,240,240,240,217,110,110,42,0,0,0,0,0,0,0,0,0,0,0,0,117,177,247,193,117,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,121,211,253,253,253,255,127,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,107,219,249,252,252,252,252,252,253,252,192,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,192,158,158,253,252,252,244,47,0,15,94,40,0,0,0,0,0,0,0,0,0,0,240,252,252,252,252,252,213,81,38,39,242,252,252,53,46,219,252,218,0,0,0,0,0,0,0,0,0,0,134,252,252,252,252,252,252,252,224,201,179,252,252,211,211,252,252,133,0,0,0,0,0,0,0,0,0,0,28,66,66,171,198,207,252,252,252,253,252,252,252,252,252,252,204,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,79,88,252,253,252,252,252,252,194,79,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,110,252,253,252,252,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,110,252,252,247,112,154,243,252,230,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,181,63,0,0,38,224,252,233,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,211,253,247,63,0,0,0,0,137,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,112,0,0,0,0,0,39,224,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,252,228,11,0,0,0,0,0,0,186,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,183,0,0,0,0,0,0,0,186,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,128,0,0,0,0,0,0,0,186,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,252,231,23,0,0,0,0,0,78,235,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,206,173,111,41,26,34,208,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,188,252,252,252,253,252,218,238,252,252,212,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,120,238,246,253,252,252,252,252,221,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,183,252,252,252,146,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,72,144,144,226,254,144,67,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,194,253,253,253,253,253,254,253,180,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,191,252,253,253,162,154,154,154,254,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,206,253,222,97,10,1,0,0,0,42,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,154,4,0,0,0,0,0,0,58,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,170,254,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,45,113,228,253,254,253,128,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,239,253,253,253,253,255,253,253,248,164,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,171,143,129,110,186,253,253,242,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,111,111,44,0,0,0,0,0,59,135,247,254,167,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,248,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,240,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,150,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,113,218,253,253,154,7,0,0,0,0,0,0,0,0,0,0,0,16,194,55,0,0,0,0,2,89,165,234,253,253,248,155,6,0,0,0,0,0,0,0,0,0,0,0,0,66,253,219,54,45,79,155,168,253,253,253,244,170,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,154,253,253,253,253,253,244,99,114,66,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,120,147,186,143,143,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,234,245,253,253,253,253,249,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,40,40,40,40,89,239,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,173,253,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,250,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,148,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,253,253,250,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,96,184,235,253,252,139,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,162,253,253,189,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,92,239,253,131,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,153,50,0,0,0,0,0,125,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,170,7,0,0,7,66,226,253,188,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,138,79,105,187,253,253,236,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,243,253,253,253,253,253,253,176,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,250,253,253,253,238,116,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,43,87,166,253,156,148,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,252,252,253,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,101,232,251,238,187,127,126,134,237,252,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,252,185,28,0,0,0,0,21,198,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,98,246,218,42,4,0,0,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,141,211,132,0,0,0,0,0,0,0,0,45,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,106,107,106,9,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,123,245,253,253,255,253,245,78,175,255,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,57,128,227,252,174,98,63,125,231,252,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,73,211,244,153,21,2,0,0,0,16,172,252,252,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,232,236,66,0,0,0,0,0,0,0,48,252,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,71,249,101,0,0,0,0,0,0,0,36,223,252,252,253,239,17,0,0,0,0,0,0,0,0,0,0,0,85,253,102,0,0,0,0,0,18,123,253,253,253,236,255,253,38,0,0,0,0,0,0,0,0,0,0,0,21,237,237,146,36,0,43,155,216,253,252,245,98,37,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,125,245,252,242,232,242,252,252,223,126,27,0,0,156,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,56,172,216,237,247,189,145,35,0,0,0,0,122,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,32,38,0,0,0,0,0,0,0,43,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,104,178,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,57,95,169,253,252,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,19,85,185,204,252,252,252,253,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,231,252,252,253,252,252,252,140,165,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,255,241,253,228,226,200,113,13,16,179,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,84,47,84,9,0,0,0,0,141,252,233,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,209,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,208,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,101,101,237,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,66,200,216,253,253,253,250,200,200,196,47,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,253,253,253,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,15,177,253,253,253,253,253,253,253,253,253,253,253,253,252,97,0,0,0,0,0,0,0,0,0,0,0,15,165,253,253,253,253,170,168,139,61,61,130,224,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,181,10,0,0,0,0,0,62,253,253,253,99,0,0,0,0,0,0,0,0,0,0,50,249,253,253,253,243,82,0,0,0,0,0,0,62,253,253,253,99,0,0,0,0,0,0,0,0,0,53,224,253,253,253,191,60,0,0,0,0,0,0,0,81,253,253,253,99,0,0,0,0,0,0,0,0,0,200,253,253,253,253,168,0,0,0,0,0,0,0,61,235,253,253,253,99,0,0,0,0,0,0,0,0,0,200,253,253,253,211,23,0,0,0,0,0,0,62,241,253,253,253,203,9,0,0,0,0,0,0,0,0,71,237,253,253,249,104,0,0,0,0,0,0,63,228,253,253,253,243,181,0,0,0,0,0,0,0,0,0,101,253,253,253,214,0,0,0,0,0,0,61,238,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,237,253,253,253,214,0,0,0,0,22,177,238,253,253,253,236,179,17,0,0,0,0,0,0,0,0,0,0,254,253,253,253,214,0,6,16,96,195,253,253,253,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,232,116,162,253,253,253,253,253,253,246,137,21,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,236,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,253,253,253,253,253,233,92,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,231,253,253,253,253,253,253,253,154,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,235,199,120,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,99,249,253,168,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,240,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,251,221,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,153,46,0,0,0,30,240,248,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,157,0,0,0,71,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,241,252,117,0,0,0,185,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,203,0,0,0,52,249,215,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,254,119,0,0,0,101,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,210,21,0,28,80,219,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,254,211,194,246,248,254,254,194,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,254,254,254,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,246,170,134,50,105,255,215,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,35,30,0,0,2,177,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,216,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,213,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,251,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,16,11,0,0,47,157,163,169,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,177,242,239,238,235,235,247,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,191,217,216,216,216,216,127,42,222,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,230,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,243,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,245,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,244,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,135,58,109,162,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,220,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,157,163,163,228,255,238,135,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,199,229,253,229,237,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,36,21,181,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,238,248,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,211,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,194,216,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,238,253,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,230,254,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,254,254,254,253,139,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,245,108,97,218,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,244,106,0,0,63,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,254,115,0,0,0,27,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,211,18,0,0,0,44,254,241,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,251,245,69,0,0,0,0,113,254,223,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,158,0,0,0,0,0,113,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,237,254,103,0,0,0,0,0,185,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,228,16,0,0,0,0,67,244,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,158,0,0,0,0,0,156,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,240,254,104,0,0,0,0,66,243,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,26,0,0,0,4,191,254,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,26,0,0,3,142,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,60,0,7,114,254,254,198,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,146,56,179,254,254,239,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,239,254,255,254,254,178,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,130,244,238,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,78,16,109,110,150,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,94,217,253,242,222,252,253,252,252,252,238,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,253,252,252,252,253,252,252,252,175,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,253,128,190,108,253,252,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,252,252,189,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,220,15,0,0,0,42,253,252,241,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,252,252,112,0,0,0,27,160,253,241,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,210,31,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,35,0,0,0,73,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,35,5,0,0,0,115,252,252,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,242,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,252,237,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,252,241,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,210,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,234,152,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,212,203,203,203,162,102,102,123,122,82,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,234,253,254,253,254,253,254,253,254,253,254,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,10,91,51,232,213,252,253,252,253,252,253,252,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,102,183,102,163,243,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,252,253,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,24,118,138,255,253,222,138,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,253,252,252,252,252,203,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,252,252,252,247,183,183,240,252,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,252,252,116,42,0,0,113,252,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,252,221,96,2,0,0,32,218,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,202,249,167,0,0,3,45,222,253,253,255,249,63,0,0,0,0,0,0,0,0,0,0,0,0,34,89,244,253,132,0,0,22,118,252,252,252,252,218,75,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,92,0,57,205,253,252,252,252,136,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,253,202,176,244,252,253,252,252,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,158,252,253,252,252,252,252,253,157,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,253,253,253,253,255,159,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,253,252,252,252,252,253,252,227,67,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,252,253,252,170,69,173,253,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,253,172,13,0,0,117,252,252,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,243,50,0,0,0,3,117,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,233,9,0,0,0,0,57,253,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,253,113,0,0,22,110,219,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,208,252,253,240,184,184,215,253,252,252,252,221,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,150,253,252,252,252,252,253,252,252,176,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,85,137,137,137,190,137,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,113,21,0,0,0,0,0,0,10,88,210,255,102,33,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,207,94,8,0,6,120,197,209,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,32,230,253,253,245,244,245,253,253,253,253,253,253,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,13,67,212,253,253,253,253,253,253,253,253,206,199,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,124,219,227,227,202,124,60,20,9,80,252,253,192,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,201,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,224,253,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,253,215,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,243,253,247,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,198,253,247,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,198,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,239,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,230,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,212,169,233,253,244,138,107,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,151,253,252,252,235,248,249,236,252,177,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,240,252,253,134,69,44,63,63,44,119,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,252,210,98,17,0,0,0,0,0,70,252,211,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,96,12,0,0,0,0,0,0,0,7,211,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,93,93,25,134,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,252,236,248,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,255,253,253,253,253,244,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,207,236,218,206,102,180,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,19,0,0,55,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,177,208,17,0,0,0,0,0,0,0,0,0,0,0,32,21,0,0,0,0,0,0,0,0,0,0,0,11,203,221,25,0,0,0,0,0,0,0,0,0,0,0,64,207,86,0,0,0,0,0,0,0,0,0,0,149,249,115,0,0,0,0,0,0,0,0,0,0,0,0,0,169,227,151,38,0,0,0,0,0,0,0,95,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,131,119,134,70,7,0,0,0,100,246,215,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,211,208,207,207,244,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,179,252,253,252,252,157,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,118,184,254,255,221,118,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,97,220,234,234,246,253,253,253,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,52,158,234,253,253,253,253,253,253,253,253,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,42,234,253,253,253,253,253,253,253,253,226,220,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,145,189,253,253,253,253,222,181,82,82,82,42,104,253,253,253,96,0,0,0,0,0,0,0,0,0,0,58,237,253,253,253,253,180,11,0,0,0,0,7,186,253,253,253,96,0,0,0,0,0,0,0,0,0,0,97,253,253,253,246,123,3,0,0,0,0,0,125,253,253,253,232,47,0,0,0,0,0,0,0,0,0,0,55,236,253,238,61,0,0,0,0,0,0,3,180,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,23,27,23,0,0,0,0,0,0,0,56,253,253,253,197,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,233,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,71,253,253,253,237,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,187,253,253,253,250,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,159,253,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,135,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,250,253,253,253,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,249,253,253,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,245,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,250,253,216,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,106,227,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,253,252,252,252,252,252,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,252,252,252,252,252,116,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,253,153,210,252,252,252,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,228,252,160,5,116,107,29,29,147,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,200,252,149,0,0,0,0,0,134,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,149,0,0,0,0,96,196,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,149,0,68,167,221,248,252,220,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,116,252,229,193,231,252,252,220,128,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,252,252,252,207,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,123,253,253,253,253,255,228,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,130,221,252,220,248,252,252,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,252,238,219,42,84,88,185,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,29,0,0,0,0,79,182,220,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,247,252,146,4,0,0,0,0,89,236,199,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,135,39,0,0,0,0,0,0,253,234,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,88,0,0,0,0,0,0,80,253,220,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,234,48,0,0,0,85,116,246,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,181,236,224,193,88,125,248,252,252,208,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,252,252,252,225,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,118,148,248,224,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,151,245,253,170,142,219,251,143,69,188,241,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,224,48,5,0,13,123,251,246,181,98,253,167,0,0,0,0,0,0,0,0,0,0,0,0,139,237,253,132,18,0,0,0,0,90,253,113,11,14,253,203,0,0,0,0,0,0,0,0,0,0,0,138,250,253,65,6,0,0,0,0,138,165,253,97,0,61,253,123,0,0,0,0,0,0,0,0,0,0,95,250,253,132,6,0,0,0,0,0,20,27,223,97,0,143,251,82,0,0,0,0,0,0,0,0,0,98,228,221,58,6,0,0,0,0,0,0,0,0,29,17,7,177,206,0,0,0,0,0,0,0,0,0,0,154,253,113,0,0,0,0,0,0,0,0,0,0,0,0,20,253,117,0,0,0,0,0,0,0,0,0,33,249,225,14,0,0,0,0,0,0,0,0,0,0,0,7,147,243,27,0,0,0,0,0,0,0,0,0,154,253,142,0,0,0,0,0,0,0,0,0,0,0,8,146,239,61,0,0,0,0,0,0,0,0,0,0,254,253,116,0,0,0,0,0,0,0,0,0,0,9,79,248,119,0,0,0,0,0,0,0,0,0,0,0,255,171,4,0,0,0,0,0,0,0,0,0,0,63,253,136,0,0,0,0,0,0,0,0,0,0,0,0,254,154,2,0,0,0,0,0,0,0,0,0,119,220,197,32,0,0,0,0,0,0,0,0,0,0,0,0,254,253,12,0,0,0,0,0,0,0,55,163,226,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,105,16,0,0,0,22,27,128,229,248,203,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,211,150,150,150,235,253,248,234,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,240,252,253,253,242,240,136,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,117,117,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,225,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,237,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,216,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,215,253,253,213,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,252,253,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,101,167,154,130,176,255,30,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,66,253,253,253,253,253,253,253,253,147,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,253,253,253,253,253,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,22,149,220,253,253,253,253,253,253,253,253,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,253,253,253,253,227,222,222,235,253,253,205,0,0,0,0,0,0,0,0,0,0,0,4,114,220,253,253,253,253,253,253,183,16,0,0,39,242,253,253,0,0,0,0,0,0,0,0,0,0,4,65,253,253,253,253,253,253,253,183,17,0,0,0,19,239,253,253,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,253,253,253,206,18,0,0,0,0,191,253,253,168,0,0,0,0,0,0,0,0,0,37,221,253,253,253,244,236,241,197,205,27,0,0,0,99,246,253,253,102,0,0,0,0,0,0,0,0,0,136,253,253,253,226,56,71,149,46,185,14,0,0,69,245,253,253,253,5,0,0,0,0,0,0,0,0,0,136,253,253,245,98,0,0,0,63,253,55,0,58,197,253,253,253,130,2,0,0,0,0,0,0,0,0,5,228,253,253,126,0,0,0,0,63,253,55,24,223,253,253,253,220,8,0,0,0,0,0,0,0,0,0,7,253,253,253,99,0,0,0,0,63,253,79,196,253,253,253,253,103,0,0,0,0,0,0,0,0,0,0,110,253,253,233,17,0,0,0,0,105,253,233,253,253,253,253,174,12,0,0,0,0,0,0,0,0,0,0,237,253,253,228,0,0,0,0,49,244,253,253,253,253,253,217,15,0,0,0,0,0,0,0,0,0,0,0,145,253,253,238,39,0,18,184,230,253,253,253,253,253,217,33,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,224,125,234,253,253,253,253,253,253,165,33,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,253,253,253,253,253,253,253,253,163,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,253,253,253,253,253,253,253,253,253,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,18,205,253,253,253,165,99,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,210,217,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,29,99,248,254,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,254,254,254,211,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,254,254,254,233,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,254,235,166,75,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,157,15,0,135,254,206,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,9,1,0,43,242,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,245,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,176,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,44,44,138,253,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,103,186,219,254,254,254,254,254,220,151,105,8,0,0,0,0,0,0,0,0,0,0,0,0,0,72,162,254,254,254,254,254,254,254,254,254,254,254,254,232,146,0,0,0,0,0,0,0,0,0,0,31,206,254,251,216,67,63,160,254,254,228,74,24,88,134,231,254,221,0,0,0,0,0,0,0,0,0,2,201,254,253,81,0,3,133,254,254,203,19,0,0,0,0,25,153,97,0,0,0,0,0,0,0,0,0,63,254,254,212,68,137,217,254,254,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,163,254,254,254,254,254,252,158,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,133,253,172,158,138,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,160,195,161,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,198,253,249,244,254,239,115,24,38,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,254,188,64,42,56,190,254,233,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,200,6,0,0,0,66,254,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,236,6,0,0,0,55,235,254,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,193,0,0,3,90,237,251,164,247,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,172,0,104,187,254,201,109,7,229,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,250,253,245,253,226,128,39,0,66,254,225,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,173,225,114,20,0,0,0,115,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,239,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,255,207,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,244,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,250,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,246,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,251,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,192,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,254,210,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,198,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,173,96,96,96,24,48,96,96,96,96,48,24,96,96,96,96,12,0,0,0,0,0,0,0,0,0,214,251,251,251,251,253,205,221,251,251,253,251,220,205,251,253,251,251,157,12,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,251,94,0,0,0,0,0,0,0,0,114,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,251,94,0,0,0,0,0,0,0,0,36,94,94,94,94,95,94,94,94,94,95,193,94,94,94,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,228,253,251,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,253,251,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,143,248,251,253,243,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,219,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,236,251,251,251,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,162,253,251,251,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,251,253,251,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,253,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,244,251,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,244,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,165,253,234,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,224,253,228,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,182,248,244,161,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,235,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,239,254,222,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,58,254,253,171,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,254,209,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,207,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,248,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,0,0,0,0,0,31,0,55,153,116,79,12,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,253,0,0,0,90,174,242,234,247,253,253,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,114,91,195,248,253,193,111,58,148,118,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,255,254,254,146,23,0,0,0,0,0,179,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,6,76,254,253,253,27,0,0,0,0,0,0,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,211,138,31,0,0,73,116,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,146,241,253,253,242,234,234,251,253,169,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,148,230,254,253,253,147,58,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,172,252,157,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,198,234,252,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,252,252,252,253,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,255,253,253,253,255,253,128,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,253,252,252,252,253,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,252,252,253,252,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,228,253,177,139,240,253,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,215,252,253,252,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,76,200,225,226,150,113,113,126,243,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,254,253,253,253,254,253,253,253,254,253,253,253,254,228,104,16,0,0,0,0,0,0,0,0,253,252,252,252,253,252,252,252,253,252,252,252,253,252,252,252,253,252,252,165,0,0,0,0,0,0,0,0,253,252,252,252,253,252,252,252,253,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,153,252,252,252,253,252,252,252,253,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,76,244,253,253,254,253,253,253,254,234,225,250,254,253,253,253,254,253,194,63,0,0,0,0,0,0,0,0,0,131,240,252,253,252,252,202,84,28,0,75,84,159,196,196,184,84,19,0,0,0,0,0,0,0,0,0,0,0,44,106,168,168,80,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,85,78,91,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,184,248,253,253,253,237,142,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,253,253,253,253,253,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,215,253,253,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,253,224,172,226,253,253,237,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,134,187,150,17,0,18,114,253,253,243,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,226,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,189,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,231,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,243,253,253,188,2,0,0,0,0,0,0,0,0,0,0,0,7,71,195,238,187,130,130,130,130,130,139,248,253,253,248,98,1,0,0,0,0,0,0,0,0,0,0,9,164,253,253,253,253,253,253,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,253,253,253,253,253,253,253,253,253,253,253,213,17,0,0,0,0,0,0,0,0,0,0,0,250,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,245,74,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,243,80,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,216,49,43,130,249,253,253,253,242,75,0,0,0,0,0,0,0,0,194,253,253,253,253,253,253,253,230,90,3,0,0,0,5,79,203,253,253,252,0,0,0,0,0,0,0,0,70,253,253,253,253,190,162,75,39,0,0,0,0,0,0,0,0,133,183,183,0,0,0,0,0,0,0,0,6,37,37,37,37,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,236,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,236,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,235,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,242,123,0,0,0,0,13,47,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,78,0,0,0,13,190,254,184,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,65,0,0,9,192,250,173,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,246,0,0,0,82,254,137,139,248,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,180,0,0,0,120,228,92,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,97,0,0,0,250,251,248,162,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,249,134,0,0,33,255,254,184,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,96,118,215,254,226,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,226,254,254,183,137,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,92,216,253,153,79,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,243,253,252,252,252,253,196,82,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,252,168,168,168,205,253,252,252,203,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,102,0,0,0,13,28,128,252,252,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,194,13,0,0,0,0,4,128,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,214,19,0,0,0,0,0,54,252,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,178,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,96,0,0,0,0,0,151,253,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,228,91,141,154,253,253,253,254,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,252,252,253,252,252,252,253,214,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,252,252,252,244,187,252,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,139,139,40,25,107,252,252,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,177,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,18,6,0,0,17,196,242,115,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,112,254,184,36,14,235,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,217,47,96,254,171,207,254,233,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,217,254,190,20,0,69,248,91,30,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,235,18,0,0,0,43,1,6,182,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,254,181,0,0,0,0,0,0,0,62,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,249,58,0,0,0,0,0,0,0,48,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,254,129,0,0,0,0,0,0,0,0,48,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,111,0,0,0,0,0,0,0,0,48,254,171,0,0,0,0,0,0,0,0,0,0,0,0,13,205,254,179,4,0,0,0,0,0,0,0,0,76,254,171,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,56,0,0,0,0,0,0,0,0,10,193,254,171,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,29,0,0,0,0,0,0,0,0,30,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,172,254,215,16,0,0,0,0,0,0,0,0,138,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,172,254,165,0,0,0,0,0,0,0,0,18,253,254,129,1,0,0,0,0,0,0,0,0,0,0,0,0,172,254,217,17,0,0,0,0,0,0,0,200,255,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,29,0,0,0,0,0,0,97,253,249,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,142,34,0,0,0,87,184,248,251,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,233,254,254,229,191,158,202,242,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,254,254,254,254,217,46,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,241,254,254,254,171,100,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,136,251,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,252,238,249,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,238,28,140,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,143,0,106,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,127,0,18,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,252,126,0,106,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,233,127,223,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,252,252,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,252,208,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,220,187,187,103,69,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,254,254,105,9,106,106,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,254,254,254,254,254,254,246,5,196,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,251,85,44,129,234,254,246,4,126,254,245,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,141,0,0,0,39,113,34,103,244,254,241,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,157,0,0,0,0,23,182,254,254,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,210,0,0,3,98,244,254,254,254,238,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,250,58,94,218,254,254,254,254,237,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,249,254,254,254,254,254,254,233,138,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,251,254,254,254,254,198,83,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,254,254,254,229,142,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,254,254,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,238,254,254,229,182,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,147,254,250,100,3,68,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,107,0,0,44,236,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,223,12,0,0,98,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,193,126,128,225,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,242,254,254,254,254,254,248,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,254,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,199,219,255,227,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,118,232,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,161,254,192,70,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,121,44,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,145,1,128,222,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,228,25,0,177,218,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,146,0,0,196,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,205,18,52,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,245,202,196,238,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,214,254,213,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,255,222,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,189,217,55,180,233,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,86,0,10,230,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,239,17,0,0,224,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,252,148,0,0,0,224,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,88,0,0,8,228,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,227,7,0,0,108,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,150,0,0,36,218,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,146,0,19,210,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,234,208,236,226,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,209,214,129,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,63,168,255,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,205,245,208,128,211,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,208,47,0,0,168,225,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,184,3,0,0,3,187,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,165,215,22,0,0,0,137,247,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,139,0,0,0,0,133,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,250,193,21,0,0,0,16,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,239,178,178,178,238,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,45,164,205,220,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,254,198,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,124,254,195,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,156,254,195,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,254,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,254,194,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,107,252,162,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,194,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,235,229,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,225,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,80,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,249,254,238,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,182,254,254,244,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,176,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,114,0,0,0,0,0,0,0,0,0,24,27,27,27,25,0,0,0,0,0,0,0,0,0,0,80,254,254,114,0,0,0,0,0,0,0,0,63,240,254,254,254,244,66,0,0,0,0,0,0,0,0,0,80,254,254,119,2,0,0,0,0,0,0,58,226,254,254,254,254,254,228,63,0,0,0,0,0,0,0,0,80,254,254,254,34,0,0,0,0,0,59,250,254,236,166,178,254,254,254,254,0,0,0,0,0,0,0,0,80,254,254,254,150,0,0,0,0,59,225,254,254,201,0,13,87,215,254,254,0,0,0,0,0,0,0,0,3,162,254,254,210,0,0,0,3,134,254,254,213,23,0,0,0,72,254,254,0,0,0,0,0,0,0,0,0,159,254,254,236,78,0,0,9,254,254,213,43,0,0,0,0,194,254,254,0,0,0,0,0,0,0,0,0,159,254,254,254,156,48,0,168,254,254,184,0,0,0,69,230,249,254,218,0,0,0,0,0,0,0,0,0,77,154,254,254,254,242,132,221,254,254,184,0,120,132,234,254,254,204,38,0,0,0,0,0,0,0,0,0,0,11,140,250,254,254,254,254,254,254,243,212,250,254,254,254,215,27,0,0,0,0,0,0,0,0,0,0,0,0,0,122,195,254,254,254,254,254,254,254,254,254,239,139,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,79,237,237,254,254,250,237,78,61,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,157,221,211,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,78,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,125,125,125,211,255,174,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,253,253,253,253,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,227,116,12,12,43,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,203,48,0,0,0,87,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,36,244,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,227,253,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,242,253,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,218,253,241,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,181,253,253,225,72,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,253,253,247,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,212,194,232,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,53,35,0,0,89,213,215,62,0,70,253,248,80,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,237,71,0,0,0,18,22,0,0,57,253,240,34,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,75,0,0,0,0,0,0,0,0,163,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,190,12,0,0,0,0,0,0,6,53,221,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,165,4,0,0,0,0,0,19,134,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,253,42,0,0,0,16,50,224,253,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,214,143,143,143,228,253,253,251,220,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,249,253,253,253,253,253,252,247,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,123,234,253,216,123,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,143,143,255,224,235,147,143,105,34,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,252,253,252,252,252,252,252,252,206,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,253,252,252,252,252,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,252,107,10,10,10,10,97,121,53,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,243,184,231,231,231,159,83,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,252,253,252,252,252,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,222,252,252,243,175,175,118,137,236,249,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,33,33,28,0,0,0,0,103,252,233,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,165,0,0,0,0,0,0,0,0,0,0,0,46,51,0,0,0,0,0,0,0,0,0,0,0,160,252,252,66,0,0,0,0,0,0,0,0,0,0,138,243,248,150,112,46,0,0,0,0,0,0,0,130,241,252,237,43,0,0,0,0,0,0,0,0,0,0,171,252,252,252,252,242,212,203,30,7,12,12,174,245,252,247,61,0,0,0,0,0,0,0,0,0,0,0,26,207,252,252,252,252,252,252,166,210,252,252,252,252,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,26,171,226,252,252,252,252,252,253,252,252,252,252,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,71,195,252,252,252,253,252,252,146,71,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,25,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,190,190,232,226,243,190,94,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,171,253,252,252,252,252,253,252,252,186,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,225,252,253,252,252,252,252,253,226,252,252,182,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,252,253,252,199,121,42,42,104,112,226,235,229,97,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,236,107,27,0,0,0,0,0,0,0,89,237,253,100,0,0,0,0,0,0,0,0,0,0,15,211,252,231,54,0,0,0,0,0,0,0,0,0,0,55,168,232,28,0,0,0,0,0,0,0,0,0,96,252,242,95,0,0,0,0,0,0,0,0,0,0,0,0,0,223,180,0,0,0,0,0,0,0,0,0,218,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,189,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,242,79,0,0,0,0,0,0,0,0,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,165,0,0,0,0,0,0,0,0,218,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,252,0,0,0,0,0,0,0,0,51,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,246,199,0,0,0,0,0,0,0,0,32,237,152,0,0,0,0,0,0,0,0,0,0,0,0,0,22,158,252,191,0,0,0,0,0,0,0,0,0,190,249,115,0,0,0,0,0,0,0,0,0,0,0,62,199,252,226,42,0,0,0,0,0,0,0,0,0,0,216,253,209,87,43,22,0,0,0,0,22,43,130,255,253,232,70,0,0,0,0,0,0,0,0,0,0,0,85,224,252,253,252,221,190,190,191,190,221,252,252,253,153,76,0,0,0,0,0,0,0,0,0,0,0,0,0,41,126,236,252,252,252,252,253,252,252,238,231,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,84,93,189,189,190,189,136,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,100,120,210,162,101,100,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,247,243,231,149,169,232,231,241,185,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,195,46,0,0,0,0,0,73,223,253,146,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,0,0,0,0,0,0,0,39,223,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,221,221,221,187,111,97,0,0,0,0,199,253,99,0,0,0,0,0,0,0,0,0,0,5,63,144,250,247,221,221,221,221,221,241,255,163,87,43,231,248,44,0,0,0,0,0,0,0,0,0,0,111,253,253,248,99,0,0,0,0,0,44,153,242,253,220,253,242,0,0,0,0,0,0,0,0,0,0,0,187,253,214,44,0,0,0,0,0,0,0,0,36,202,253,253,252,82,0,0,0,0,0,0,0,0,0,0,196,253,162,1,0,0,0,0,0,0,0,0,111,244,249,144,242,247,121,0,0,0,0,0,0,0,0,0,144,253,253,10,0,0,0,0,0,0,8,85,238,224,107,0,86,232,227,142,0,0,0,0,0,0,0,0,46,227,253,143,89,89,89,89,89,185,207,253,219,79,0,0,0,34,55,31,0,0,0,0,0,0,0,0,0,44,131,238,242,246,253,247,242,242,132,103,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,99,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,156,255,255,254,254,183,122,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,253,253,253,253,254,185,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,159,131,26,26,104,159,205,253,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,200,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,244,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,211,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,246,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,253,120,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,179,214,214,214,235,254,253,98,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,180,242,253,253,253,253,253,254,253,253,209,165,53,0,0,0,0,0,0,0,0,0,0,0,0,0,108,247,236,199,101,124,253,222,199,201,199,248,253,253,239,96,20,0,0,0,0,0,0,0,0,0,0,84,249,217,75,0,59,222,213,90,0,0,0,72,122,224,253,253,189,39,0,0,0,0,0,0,0,0,0,191,171,10,9,63,209,120,0,0,0,0,0,0,0,25,122,245,253,248,91,0,0,0,0,0,0,0,0,121,20,0,77,133,28,0,0,0,0,0,0,0,0,0,0,73,191,240,240,0,0,0,0,0,0,0,0,57,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,191,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,64,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,136,211,255,254,210,84,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,86,249,253,253,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,216,241,253,253,249,103,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,253,252,171,65,20,50,134,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,247,0,0,21,89,206,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,253,253,225,225,231,253,253,253,253,253,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,253,253,253,253,253,253,253,170,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,226,253,253,253,242,235,250,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,94,94,94,50,22,213,253,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,241,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,217,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,203,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,179,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,169,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,227,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,154,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,140,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,146,253,198,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,250,253,230,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,227,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,131,253,253,142,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,253,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,182,253,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,250,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,241,249,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,237,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,241,253,205,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,188,255,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,242,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,244,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,212,253,184,0,0,0,0,0,9,128,133,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,234,55,0,0,25,71,166,200,253,253,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,35,247,253,127,0,0,0,149,254,230,74,113,184,253,222,35,0,0,0,0,0,0,0,0,0,0,0,0,105,253,227,29,0,0,125,251,219,16,0,11,40,230,253,99,0,0,0,0,0,0,0,0,0,0,0,0,191,253,232,155,54,64,228,253,198,155,155,250,253,253,251,82,0,0,0,0,0,0,0,0,0,0,0,0,70,250,253,253,253,253,253,253,254,253,253,253,236,176,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,105,143,196,253,253,253,192,143,143,85,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,186,236,21,0,0,0,134,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,213,26,0,0,0,0,129,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,120,0,0,0,0,0,91,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,234,112,0,0,0,0,0,91,242,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,222,21,0,0,0,0,0,170,244,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,240,124,0,0,0,0,0,40,249,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,241,18,0,0,0,0,0,15,230,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,179,0,0,0,0,0,0,0,165,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,191,233,136,101,20,0,0,0,0,113,215,31,31,31,2,0,0,0,0,0,0,0,0,0,0,0,0,0,8,89,128,194,218,210,210,211,210,226,254,254,204,120,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,37,90,90,196,241,34,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,233,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,209,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,0,0,0,0,0,0,0,86,114,170,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,141,170,170,170,255,255,255,255,255,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,114,255,255,255,255,255,198,170,114,86,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,170,86,170,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,29,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,0,0,0,0,0,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,57,0,0,29,170,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,198,226,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,226,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,187,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,251,254,245,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,154,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,155,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,180,253,236,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,222,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,253,227,174,235,234,234,219,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,148,253,253,253,254,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,61,132,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,250,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,241,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,240,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,142,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,244,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,232,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,200,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,160,195,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,189,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,132,254,215,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,203,234,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,187,254,125,134,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,228,44,99,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,225,254,120,0,28,240,222,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,254,186,10,0,0,183,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,191,122,52,18,138,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,243,254,254,254,254,254,231,206,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,188,199,125,70,138,232,254,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,82,193,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,247,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,91,229,254,254,255,254,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,253,253,253,225,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,221,253,253,253,183,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,214,56,20,56,56,63,253,247,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,226,253,203,0,0,0,0,9,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,245,213,213,113,2,41,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,181,253,253,253,253,142,217,253,239,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,161,187,247,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,190,253,253,253,236,83,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,247,253,245,117,65,189,253,242,189,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,97,0,0,25,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,34,0,0,5,141,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,213,42,0,0,116,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,233,253,253,226,58,37,236,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,253,184,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,117,251,253,253,253,253,241,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,201,253,253,178,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,254,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,171,252,253,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,246,230,121,149,239,242,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,151,0,0,0,100,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,248,237,43,0,0,0,56,248,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,252,108,0,0,0,0,100,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,231,246,39,0,0,0,0,119,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,245,31,0,0,0,83,241,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,233,187,111,221,243,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,246,253,253,253,253,255,230,248,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,177,227,252,223,187,57,209,236,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,44,25,0,0,209,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,68,145,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,82,128,159,218,238,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,84,167,249,253,253,253,254,253,253,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,167,253,254,253,253,253,253,254,233,117,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,234,97,91,91,91,92,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,146,235,253,194,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,215,253,253,246,189,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,253,253,253,253,233,161,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,255,254,254,222,233,255,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,227,254,221,63,10,78,254,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,242,254,153,0,0,0,176,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,119,23,0,0,143,234,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,91,0,0,0,79,232,254,181,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,163,241,254,221,73,157,163,234,254,208,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,254,253,253,210,166,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,224,247,219,253,254,219,126,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,46,4,54,54,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,29,41,141,141,141,255,84,0,0,0,0,0,0,0,0,0,0,0,0,19,7,32,19,45,57,169,169,197,252,253,252,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,172,203,229,215,240,252,253,252,252,252,253,196,168,168,253,84,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,252,252,252,253,227,139,90,28,9,0,0,253,84,0,0,0,0,0,0,0,0,0,0,0,0,89,163,114,113,76,0,0,0,0,0,0,0,0,126,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,254,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,252,157,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,151,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,85,19,0,0,0,0,0,229,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,106,0,0,0,0,0,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,255,184,0,0,0,0,0,13,254,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,84,0,0,0,0,0,113,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,84,0,0,0,0,0,113,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,228,9,0,0,0,0,0,213,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,114,0,0,0,0,0,0,226,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,38,0,0,0,0,0,57,243,253,84,0,0,57,57,13,0,0,0,0,0,0,0,0,0,0,95,252,252,38,0,0,0,0,0,85,252,253,140,123,197,253,233,37,0,0,0,0,0,0,0,0,0,0,69,252,252,175,38,0,0,0,0,134,252,253,252,252,252,128,22,0,0,0,0,0,0,0,0,0,0,0,0,185,253,254,253,253,253,254,253,253,253,251,150,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,184,253,252,252,252,253,252,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,106,94,168,56,56,209,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,250,182,46,31,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,93,12,101,81,129,148,140,176,253,227,247,207,46,0,0,0,0,0,0,0,0,0,0,0,0,9,124,244,233,218,253,253,241,180,128,25,44,130,245,253,66,0,0,0,0,0,0,0,0,0,0,0,62,240,253,253,253,240,183,134,58,3,2,0,0,0,127,250,60,0,0,0,0,0,0,0,0,0,0,117,238,253,253,253,149,35,0,0,0,0,0,0,0,20,199,209,0,0,0,0,0,0,0,0,0,0,0,177,253,253,195,79,5,0,0,0,0,0,0,0,0,128,253,209,0,0,0,0,0,0,0,0,0,0,0,177,249,79,8,0,0,0,0,0,0,0,0,1,156,249,243,61,0,0,0,0,0,0,0,0,0,0,0,69,60,0,0,0,0,0,0,0,0,0,0,42,253,238,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,154,252,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,139,255,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,227,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,255,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,126,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,231,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,215,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,245,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,240,94,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,86,85,85,85,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,188,225,249,253,252,252,252,238,200,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,204,253,253,253,251,150,25,0,63,144,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,253,252,252,252,125,0,0,0,0,57,252,53,0,0,0,0,0,0,0,0,0,0,0,0,60,209,252,252,253,252,252,127,0,0,0,0,0,57,252,52,0,0,0,0,0,0,0,0,0,0,0,0,241,252,252,252,140,65,28,3,0,0,0,0,0,157,177,3,0,0,0,0,0,0,0,0,0,0,0,0,63,113,76,0,0,0,0,0,0,0,0,0,104,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,253,214,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,191,252,206,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,163,226,225,225,225,226,243,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,23,128,204,253,253,228,226,231,253,253,255,247,235,253,192,60,0,0,0,0,0,0,0,0,0,0,0,63,234,252,247,171,84,60,120,187,252,252,209,65,28,133,253,234,63,0,0,0,0,0,0,0,0,0,147,234,252,164,134,85,172,246,253,233,130,56,25,0,0,0,178,252,196,10,0,0,0,0,0,0,0,0,253,252,252,240,253,252,252,252,140,59,0,0,0,0,0,0,29,252,252,128,0,0,0,0,0,0,0,0,229,253,231,225,214,113,25,0,0,0,0,0,0,0,0,0,26,244,253,241,0,0,0,0,0,0,0,0,10,84,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,81,160,223,254,177,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,202,244,254,254,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,77,207,254,254,249,195,150,87,56,63,223,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,176,254,254,217,143,32,0,0,0,0,13,229,197,0,0,0,0,0,0,0,0,0,0,0,0,0,43,232,254,254,152,23,0,0,0,0,0,0,90,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,70,249,186,47,2,0,0,0,0,0,0,46,245,247,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,54,221,247,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,216,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,211,254,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,212,254,197,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,220,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,222,254,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,156,245,254,161,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,198,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,185,254,243,81,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,209,254,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,254,240,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,211,151,151,196,245,246,231,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,254,254,254,254,254,247,211,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,128,177,254,218,162,159,125,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,188,255,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,240,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,253,213,185,211,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,84,8,149,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,239,253,138,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,233,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,245,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,190,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,234,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,233,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,206,253,115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,232,0,0,0,60,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,245,231,0,0,0,214,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,231,0,0,53,241,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,246,248,71,0,20,224,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,246,62,0,0,214,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,231,0,0,0,214,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,118,0,0,0,214,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,251,50,0,0,0,214,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,231,249,0,0,0,0,214,254,145,42,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,248,253,112,60,46,19,223,254,254,255,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,254,254,241,214,254,254,254,245,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,206,254,254,255,254,255,254,200,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,23,23,23,115,237,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,233,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,255,254,240,118,118,70,0,0,0,74,118,0,0,0,0,0,0,0,0,0,0,0,0,14,97,167,234,251,253,253,253,253,253,189,13,0,39,246,253,0,0,0,0,0,0,0,0,0,0,0,88,219,253,253,253,253,233,177,103,177,177,249,149,60,179,253,137,0,0,0,0,0,0,0,0,0,21,171,239,253,253,225,138,61,45,0,0,0,0,136,233,240,244,187,28,0,0,0,0,0,0,0,0,0,190,253,253,230,82,40,0,0,0,0,0,1,35,198,253,226,183,0,0,0,0,0,0,0,0,0,0,78,245,253,213,89,0,0,0,0,0,0,9,96,253,248,194,22,0,0,0,0,0,0,0,0,0,0,0,254,253,253,61,0,0,0,0,0,0,97,210,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,70,245,253,219,96,0,0,0,0,128,252,253,250,76,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,250,227,156,90,138,248,253,195,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,47,151,194,253,253,253,253,253,253,223,128,69,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,68,163,253,236,218,253,253,253,253,226,141,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,253,75,24,89,178,226,226,252,253,232,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,154,253,113,12,0,0,0,0,0,104,230,253,235,55,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,189,3,0,0,0,0,0,0,0,43,227,253,96,0,0,0,0,0,0,0,0,0,0,0,0,23,198,248,73,0,0,0,0,0,0,0,0,34,221,253,96,0,0,0,0,0,0,0,0,0,0,0,0,56,253,239,0,0,0,0,0,0,0,0,90,231,253,217,13,0,0,0,0,0,0,0,0,0,0,0,0,12,189,250,128,63,7,0,0,7,63,129,221,253,238,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,236,253,253,186,179,179,187,253,253,253,240,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,166,232,251,253,253,253,253,243,232,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,190,116,116,116,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,79,175,254,254,254,181,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,214,253,253,253,253,253,252,178,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,254,253,253,219,176,105,120,253,248,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,183,253,254,238,149,21,0,0,3,32,82,27,0,0,0,0,0,0,0,0,0,0,0,0,0,7,123,245,253,253,198,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,201,253,253,239,157,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,234,253,253,236,87,0,0,0,0,0,0,0,0,0,1,9,0,0,0,0,0,0,0,0,0,0,0,170,253,253,205,57,0,0,0,0,0,0,4,54,106,141,191,46,0,0,0,0,0,0,0,0,0,0,0,173,253,253,173,3,0,0,0,6,30,115,195,229,249,141,67,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,193,79,0,88,221,253,253,238,165,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,213,254,254,254,254,255,254,254,164,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,205,253,253,253,254,253,163,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,148,253,253,251,191,232,253,249,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,178,253,247,158,25,0,44,151,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,96,229,253,232,128,0,0,0,14,78,247,244,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,253,201,68,0,0,0,0,107,250,253,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,193,43,0,3,27,93,201,254,253,246,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,42,94,118,199,253,253,253,248,235,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,249,180,156,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,165,247,253,253,168,78,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,228,255,169,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,225,253,253,249,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,191,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,245,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,225,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,185,253,253,253,224,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,253,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,184,253,253,241,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,86,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,240,51,0,19,32,63,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,104,17,102,210,223,253,231,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,232,253,253,214,33,179,253,253,253,253,253,232,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,219,179,253,253,253,253,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,253,228,237,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,228,80,223,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,245,232,253,253,253,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,253,253,253,253,163,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,253,253,253,253,253,118,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,102,253,253,253,253,253,253,161,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,211,253,253,162,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,228,254,157,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,253,253,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,251,253,253,253,253,253,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,224,48,194,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,250,253,223,45,0,72,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,128,0,0,29,217,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,45,0,0,103,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,159,65,8,0,21,209,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,215,253,253,180,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,186,253,253,179,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,103,242,253,253,179,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,179,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,244,253,253,180,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,245,253,253,180,17,0,0,0,0,7,40,40,40,38,0,0,0,0,0,0,0,0,0,0,0,0,72,247,253,253,198,16,10,33,64,163,163,177,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,206,91,134,184,253,253,253,253,253,253,253,253,248,72,0,0,0,0,0,0,0,0,0,0,147,248,253,253,253,253,253,253,253,239,234,234,234,217,184,223,104,48,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,253,253,249,139,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,251,206,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,203,123,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,176,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,101,240,253,252,252,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,253,252,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,234,252,252,240,99,215,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,173,63,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,228,126,0,0,85,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,253,223,130,0,0,0,210,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,228,52,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,145,47,0,0,0,0,76,243,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,252,253,154,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,255,253,253,253,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,147,249,252,252,252,253,252,252,252,252,215,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,253,252,252,252,220,196,195,86,55,55,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,242,192,84,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,88,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,156,230,254,254,254,253,141,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,230,254,254,243,234,234,251,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,160,254,254,216,107,36,0,0,136,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,254,228,155,22,0,0,0,0,66,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,251,105,10,0,0,0,0,0,0,106,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,189,0,0,0,0,0,0,0,0,160,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,144,0,0,0,0,0,0,0,39,243,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,42,0,0,0,0,0,0,0,129,254,243,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,254,186,0,0,0,0,0,0,0,11,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,232,82,0,0,0,0,0,22,151,222,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,177,0,0,0,48,120,170,215,254,242,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,254,80,28,126,210,245,254,254,227,129,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,207,254,254,254,254,254,254,254,247,174,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,254,254,254,219,174,53,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,98,178,185,144,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,190,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,210,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,209,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,253,253,75,0,15,24,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,193,8,110,219,252,219,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,185,174,253,252,252,252,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,252,252,252,252,253,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,244,86,222,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,252,252,253,252,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,177,252,252,252,253,252,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,137,242,253,231,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,101,175,254,254,255,124,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,159,200,248,253,253,253,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,117,146,146,146,146,182,253,253,253,253,253,253,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,248,252,253,253,253,253,253,253,253,225,160,160,119,116,253,253,245,0,0,0,0,0,0,0,0,0,0,0,122,214,214,214,214,214,69,61,61,42,0,0,0,40,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,248,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,239,231,105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,38,177,198,253,253,253,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,190,253,253,253,253,236,183,118,156,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,166,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,200,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,253,250,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,99,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,229,254,255,254,254,124,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,97,156,251,253,253,253,253,253,253,191,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,160,253,253,253,253,253,253,253,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,157,253,253,253,253,253,213,198,194,128,250,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,198,253,253,253,222,107,22,0,0,0,147,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,180,11,0,0,0,0,0,104,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,6,0,0,0,86,128,0,51,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,140,0,90,211,251,253,248,13,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,217,253,242,227,248,253,253,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,220,253,253,253,253,253,210,47,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,154,253,253,253,244,116,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,218,253,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,253,206,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,253,253,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,200,195,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,212,253,249,126,231,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,250,227,253,253,253,215,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,253,182,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,248,253,253,253,253,186,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,193,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,115,0,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,165,47,214,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,244,242,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,211,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,138,253,253,179,0,49,138,86,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,219,252,252,252,209,0,184,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,122,253,252,252,252,252,84,0,82,240,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,193,77,98,45,0,0,0,113,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,116,248,252,243,50,0,0,0,0,0,0,9,232,253,92,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,253,53,0,0,0,0,0,0,0,104,253,252,84,0,0,0,0,0,0,0,0,0,0,0,0,17,209,252,252,0,0,0,0,0,0,0,13,215,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,32,0,0,0,0,0,0,101,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,229,133,25,0,0,0,17,209,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,158,252,253,252,236,135,11,64,193,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,231,245,253,253,253,255,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,188,252,252,253,252,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,252,253,252,252,227,131,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,136,252,210,98,67,227,252,252,249,133,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,252,252,32,0,0,17,117,242,253,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,255,253,215,74,0,0,0,0,0,53,181,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,60,244,253,252,110,0,0,0,0,0,0,43,118,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,176,252,253,252,202,142,70,70,91,184,184,246,253,252,202,33,0,0,0,0,0,0,0,0,0,0,0,0,165,252,253,252,252,252,252,253,252,252,252,252,245,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,9,22,23,96,137,137,242,253,252,221,137,32,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,80,250,175,174,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,188,254,254,254,254,251,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,227,247,146,61,57,57,112,170,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,136,238,154,35,0,0,0,33,230,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,203,226,101,0,0,0,0,5,187,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,228,181,13,0,0,0,0,23,156,254,152,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,128,3,0,0,0,0,2,108,253,206,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,208,16,0,0,0,0,107,250,218,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,220,206,33,0,5,88,248,237,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,240,208,24,54,242,223,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,230,228,204,244,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,110,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,250,254,254,188,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,254,249,151,163,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,184,254,214,46,0,25,239,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,247,178,21,0,4,111,238,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,235,40,0,0,74,238,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,223,158,3,58,219,246,183,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,207,241,231,254,254,168,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,255,174,36,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,255,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,230,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,243,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,220,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,190,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,203,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,245,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,145,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,248,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,231,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,170,255,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,239,254,227,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,230,240,64,6,101,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,240,63,0,0,2,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,238,100,0,0,0,0,172,38,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,201,13,0,0,0,0,190,223,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,112,0,0,0,0,88,231,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,36,0,0,9,137,248,220,224,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,71,26,64,213,230,95,19,182,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,232,236,254,173,64,0,0,128,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,187,128,54,7,0,0,0,198,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,200,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,190,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,156,115,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,70,191,254,243,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,97,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,215,254,254,250,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,220,254,250,133,117,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,241,254,223,107,0,99,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,250,254,251,106,0,0,8,245,221,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,220,254,251,112,0,0,0,0,245,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,67,0,0,0,0,0,245,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,200,11,0,0,0,0,0,235,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,222,20,0,0,0,0,0,0,208,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,254,118,0,0,0,0,0,0,38,248,229,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,97,0,0,0,0,0,0,202,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,250,56,0,0,0,0,6,91,239,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,141,0,0,0,82,163,254,254,188,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,219,254,233,141,141,211,254,254,254,186,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,247,254,254,254,254,254,179,76,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,146,183,254,185,60,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,54,45,124,197,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,227,251,249,254,254,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,246,194,206,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,240,161,33,0,32,251,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,177,0,0,18,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,198,2,0,18,254,233,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,31,0,12,231,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,120,0,0,184,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,83,0,5,200,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,196,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,178,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,251,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,234,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,122,167,167,133,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,155,209,246,253,254,254,254,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,99,182,237,249,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,92,140,213,254,254,254,254,254,223,230,254,254,254,254,230,84,0,0,0,0,0,0,0,0,0,0,0,25,225,254,254,254,219,123,35,35,15,155,254,254,249,143,76,0,0,0,0,0,0,0,0,0,0,0,136,234,254,254,214,73,12,0,0,0,106,249,254,237,135,0,0,0,0,0,0,0,0,0,0,0,0,105,250,254,254,254,254,61,11,27,85,169,250,254,225,73,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,254,254,254,254,207,216,254,254,254,254,195,42,0,0,0,0,0,0,0,0,0,0,0,0,0,34,249,254,254,254,254,254,254,254,254,255,254,172,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,254,181,157,79,206,254,254,144,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,37,0,0,0,0,67,230,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,251,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,232,243,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,234,248,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,237,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,240,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,254,216,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,174,254,250,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,166,115,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,190,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,252,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,252,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,244,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,252,226,6,0,51,107,226,128,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,176,5,94,240,252,252,252,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,252,252,227,215,252,253,252,252,252,252,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,252,252,252,252,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,252,252,241,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,252,241,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,246,252,252,252,252,252,253,252,242,183,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,248,252,252,252,252,240,182,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,210,252,252,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,64,128,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,191,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,128,191,128,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,64,0,0,64,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,123,245,156,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,157,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,119,253,252,252,141,4,0,0,0,0,18,22,22,22,7,0,0,0,0,0,0,0,0,0,0,0,68,190,252,253,252,212,28,0,0,0,59,134,239,253,252,252,180,18,0,0,0,0,0,0,0,0,0,36,241,252,252,174,121,29,0,0,80,211,249,252,252,253,217,147,66,0,0,0,0,0,0,0,0,0,0,103,253,253,191,45,0,0,29,175,255,253,253,243,167,45,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,231,54,0,0,87,232,252,253,252,174,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,92,0,4,136,251,252,252,223,91,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,196,81,139,252,252,236,145,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,77,244,252,252,253,252,244,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,255,253,245,78,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,252,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,252,170,126,233,252,252,250,197,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,182,0,0,42,111,215,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,103,0,0,0,0,62,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,253,42,0,0,0,0,0,148,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,156,0,0,0,0,36,227,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,245,252,233,153,127,127,179,253,245,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,242,253,252,252,252,252,243,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,165,252,252,252,208,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,73,153,254,255,195,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,215,253,253,253,253,253,253,250,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,252,107,182,253,253,245,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,241,227,96,0,8,250,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,41,0,0,0,0,249,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,251,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,53,53,213,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,190,215,253,253,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,106,252,253,253,253,253,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,212,253,253,253,253,253,253,253,253,253,246,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,177,127,237,253,253,253,253,253,217,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,201,9,95,253,253,253,253,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,253,246,143,245,253,253,253,245,253,253,253,171,7,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,253,253,253,253,253,159,120,253,253,253,253,198,24,0,0,0,0,0,0,0,0,0,0,0,0,6,113,245,253,253,253,247,119,8,6,196,253,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,196,196,171,53,0,0,0,89,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,156,253,253,183,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,67,67,67,134,177,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,100,143,214,253,253,253,253,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,253,246,242,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,239,198,140,88,77,150,253,236,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,41,0,0,20,146,253,238,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,199,253,248,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,88,250,253,253,249,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,172,253,253,253,220,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,244,71,96,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,255,227,58,0,90,254,147,0,0,0,0,0,0,0,0,0,0,129,83,0,0,0,0,0,0,0,0,44,77,14,0,0,166,253,99,0,0,0,0,0,0,0,0,0,0,254,242,167,48,0,0,0,0,0,0,0,0,0,0,22,220,244,17,0,0,0,0,0,0,0,0,0,0,73,198,250,248,219,39,0,0,0,0,0,0,0,2,169,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,73,150,253,223,114,46,0,0,0,0,0,71,253,234,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,79,196,253,244,165,89,0,24,132,251,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,175,244,253,253,233,238,253,253,154,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,180,209,210,221,253,211,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,66,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,181,191,139,139,139,57,64,67,50,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,209,250,254,254,254,254,254,254,254,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,2,121,83,179,240,244,244,232,232,232,232,237,247,255,254,223,0,0,0,0,0,0,0,0,0,0,2,98,194,254,218,3,24,36,35,0,0,0,0,15,44,67,67,67,0,0,0,0,0,0,0,0,0,0,80,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,212,254,248,114,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,249,254,253,237,176,92,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,248,254,254,254,254,237,224,150,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,116,168,223,223,252,254,254,220,176,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,194,239,254,254,148,1,0,0,0,0,0,0,0,0,0,0,0,0,0,32,179,51,0,0,0,0,0,0,0,9,119,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,179,55,0,0,0,0,0,0,0,165,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,255,251,167,68,68,68,68,146,231,253,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,129,249,254,254,254,254,254,254,254,254,254,201,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,234,254,254,254,254,254,254,221,138,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,138,138,138,138,138,60,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,238,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,250,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,16,0,0,0,0,102,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,136,254,18,0,0,0,0,170,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,18,0,0,0,1,180,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,224,10,0,0,0,49,254,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,188,254,86,0,0,0,1,153,254,157,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,4,0,15,124,176,254,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,231,254,254,247,246,248,254,254,254,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,254,254,254,254,254,93,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,215,162,125,51,205,254,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,49,49,49,1,0,0,26,244,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,251,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,196,118,79,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,244,253,253,253,246,245,208,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,200,191,161,155,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,254,253,240,74,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,232,253,254,241,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,84,242,253,253,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,244,173,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,138,242,253,253,249,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,250,124,125,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,253,253,253,253,253,253,254,204,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,254,254,196,202,255,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,183,99,8,8,3,3,66,248,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,247,253,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,211,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,77,4,0,0,0,0,29,213,254,253,244,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,140,4,0,3,100,239,253,254,236,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,200,192,199,253,253,253,221,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,253,253,253,252,244,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,153,238,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,98,0,0,0,0,0,0,0,16,233,224,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,249,58,0,0,0,0,0,1,156,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,254,70,0,0,0,0,0,41,254,254,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,70,0,0,0,0,5,205,254,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,246,49,0,0,0,30,129,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,224,0,0,12,50,221,246,254,246,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,224,0,48,188,254,254,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,253,240,248,254,254,254,254,230,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,254,254,254,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,64,210,254,254,254,254,254,219,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,50,50,207,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,244,254,221,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,255,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,254,224,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,189,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,244,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,221,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,239,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,164,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,187,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,242,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,198,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,179,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,244,253,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,191,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,89,130,130,222,255,157,191,130,85,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,89,211,253,253,253,253,253,253,253,253,253,159,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,251,235,235,146,111,111,111,111,214,251,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,165,90,0,0,0,0,0,0,0,0,217,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,240,239,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,239,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,50,138,83,50,147,238,253,235,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,253,253,253,253,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,185,185,154,61,61,101,242,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,185,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,170,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,247,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,209,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,166,41,0,0,0,0,0,29,210,253,253,118,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,243,157,112,112,200,236,241,253,253,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,147,253,253,253,253,253,253,253,253,119,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,129,147,253,229,129,129,96,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,183,163,0,0,0,0,0,0,42,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,253,247,236,216,145,145,145,236,245,244,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,254,253,253,253,253,254,253,208,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,249,253,173,80,54,54,54,68,253,254,197,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,253,194,41,0,0,0,0,19,253,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,255,238,58,0,0,0,0,0,135,254,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,8,204,253,254,95,0,0,0,0,0,21,230,253,115,2,0,0,0,0,0,0,0,0,0,0,0,0,8,100,253,253,133,3,0,0,0,0,8,164,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,175,0,0,0,0,0,0,94,253,245,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,230,240,21,0,0,0,0,0,0,210,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,217,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,245,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,238,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,228,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,250,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,231,253,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,250,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,163,192,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,234,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,10,10,10,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,76,111,80,226,254,254,254,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,197,236,242,255,254,254,222,206,164,147,113,102,12,0,0,0,0,0,0,0,0,0,0,0,0,0,16,160,254,227,140,117,47,47,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,212,254,116,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,254,222,61,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,196,254,254,254,232,249,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,236,118,66,17,111,159,189,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,230,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,159,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,156,227,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,54,0,0,0,0,0,0,0,0,20,199,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,174,11,0,0,0,0,0,23,83,206,247,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,182,217,179,114,114,114,134,230,254,243,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,75,163,254,254,254,254,212,169,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,9,9,9,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,162,188,188,188,160,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,150,246,254,254,246,228,246,254,188,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,193,254,254,254,254,133,0,53,200,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,165,254,254,254,254,253,123,0,0,66,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,188,254,254,254,219,114,77,0,0,0,122,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,34,221,254,254,254,210,20,0,0,0,0,2,160,253,105,0,0,0,0,0,0,0,0,0,0,0,0,102,225,254,254,187,99,20,0,0,0,0,13,182,254,133,0,0,0,0,0,0,0,0,0,0,0,0,33,242,254,254,164,30,0,0,0,0,0,0,62,254,250,57,0,0,0,0,0,0,0,0,0,0,16,57,224,254,225,115,2,0,0,0,0,0,23,42,232,226,76,0,0,0,0,0,0,0,0,0,0,0,130,254,254,245,51,0,0,0,0,0,0,31,220,254,254,83,0,0,0,0,0,0,0,0,0,0,0,71,251,254,244,73,0,0,8,32,32,115,195,245,238,191,25,5,0,0,0,0,0,0,0,0,0,0,0,181,254,254,231,87,79,170,200,254,254,254,254,195,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,250,254,254,254,255,254,241,234,212,129,70,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,140,187,176,83,83,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,255,163,48,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,2,66,154,254,254,254,230,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,252,202,119,135,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,183,254,116,0,0,19,229,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,166,2,0,0,0,217,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,238,242,47,0,0,0,0,217,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,119,0,0,0,0,0,217,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,161,2,0,0,0,0,0,217,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,244,212,63,0,0,0,0,0,7,221,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,244,218,60,0,0,0,0,0,0,92,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,251,247,49,0,0,0,0,0,0,23,248,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,246,254,93,0,0,0,0,0,0,3,145,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,2,153,254,202,9,0,0,0,0,0,0,62,254,171,9,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,228,6,0,0,0,0,0,0,60,238,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,250,103,0,0,0,0,0,0,60,239,243,81,1,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,186,0,0,0,0,0,10,131,238,201,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,238,31,0,0,0,0,54,208,254,200,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,251,206,5,57,57,137,221,251,224,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,213,247,219,254,254,254,243,166,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,212,254,254,254,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,255,254,255,205,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,254,242,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,254,254,246,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,243,164,95,193,254,254,237,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,251,128,0,13,141,238,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,128,0,0,0,161,217,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,142,31,0,0,48,254,100,0,0,0,126,247,211,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,254,216,120,6,22,189,103,0,0,15,226,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,237,254,254,130,39,0,0,0,16,175,254,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,133,250,254,254,214,7,0,6,98,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,156,254,240,203,77,48,254,254,193,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,94,198,254,246,229,254,241,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,226,254,254,219,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,217,197,254,254,159,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,196,254,221,73,226,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,250,137,0,57,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,218,149,0,0,35,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,246,254,124,0,0,41,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,205,254,239,104,133,240,233,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,175,254,165,182,155,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,43,69,60,87,43,43,43,43,105,148,104,78,7,0,0,0,0,0,0,0,0,0,0,43,64,0,112,237,252,252,252,253,252,252,252,252,253,252,252,252,200,0,0,0,0,0,0,0,0,0,43,234,247,38,148,252,252,252,252,253,252,252,252,252,253,252,242,231,143,0,0,0,0,0,0,0,0,0,85,252,252,42,67,210,212,84,84,84,84,84,84,84,84,84,42,0,0,0,0,0,0,0,0,0,0,0,85,252,252,42,0,14,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,252,252,200,85,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,252,252,252,253,246,223,57,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,120,189,189,189,227,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,77,200,252,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,187,253,237,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,175,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,71,0,0,0,0,0,0,0,167,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,245,78,7,0,0,0,0,212,255,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,252,200,86,57,43,155,242,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,135,233,252,252,253,246,242,252,252,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,242,253,252,252,236,101,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,104,147,138,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,0,0,29,86,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,198,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,255,255,255,226,170,86,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,170,114,57,0,29,170,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,141,29,0,0,0,86,226,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,226,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,141,226,255,255,255,255,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,226,141,86,86,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,141,57,0,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,114,141,86,29,0,0,0,0,0,0,0,0,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,141,57,0,0,0,0,57,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,226,255,255,255,255,255,255,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,141,170,170,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,113,113,114,191,144,174,253,255,253,143,128,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,76,231,252,252,253,252,252,252,252,253,252,252,252,252,253,243,50,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,165,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,227,47,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,252,236,189,112,112,112,205,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,111,47,0,0,0,0,0,0,0,0,0,169,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,243,252,253,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,252,252,228,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,240,253,252,233,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,209,252,252,253,233,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,252,252,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,253,252,252,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,239,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,242,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,173,255,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,243,253,253,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,181,58,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,167,192,232,222,131,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,201,253,253,216,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,195,253,249,213,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,194,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,248,253,253,154,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,154,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,238,253,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,199,253,224,0,0,0,0,6,43,165,165,165,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,233,44,0,0,129,144,165,253,253,253,253,253,167,47,0,0,0,0,0,0,0,0,0,0,0,0,213,253,219,0,0,54,240,253,253,253,250,129,180,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,213,253,233,42,0,6,136,150,50,13,13,0,48,235,253,156,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,146,0,0,0,0,0,0,0,0,148,253,233,51,0,0,0,0,0,0,0,0,0,0,0,0,17,205,253,250,199,66,63,63,63,63,66,199,250,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,240,253,253,253,253,253,253,253,253,253,253,240,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,232,232,241,253,253,253,253,253,253,177,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,116,153,253,163,190,116,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,170,255,226,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,114,29,29,114,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,29,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,29,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,170,0,0,0,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,114,226,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,170,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,226,29,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,0,0,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,114,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,170,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,34,87,144,144,192,144,67,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,194,253,253,253,253,253,254,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,247,253,253,253,253,253,253,254,253,236,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,236,130,121,121,121,122,204,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,249,126,19,0,0,0,0,0,52,244,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,150,0,0,0,0,0,0,0,0,124,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,120,177,177,177,67,50,27,246,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,172,244,253,253,253,253,254,242,227,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,243,235,237,251,255,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,234,55,16,23,77,182,253,253,253,234,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,79,0,0,0,0,182,253,253,253,253,234,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,64,1,2,12,156,254,221,40,234,250,250,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,163,172,253,253,249,107,0,0,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,220,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,143,230,253,234,143,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,105,192,255,253,253,253,209,105,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,208,224,252,252,253,252,252,252,252,252,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,183,252,252,252,252,238,201,185,237,241,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,139,132,132,0,0,0,0,40,132,132,8,0,0,0,0,0,0,0,0,0,0,0,0,0,36,232,243,99,2,0,0,0,0,0,0,0,0,120,57,0,0,0,0,0,0,0,0,0,0,0,0,0,35,231,225,14,0,0,0,0,0,0,0,0,22,217,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,189,8,0,0,0,0,8,134,134,69,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,239,212,37,0,75,100,252,252,244,204,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,195,252,252,252,217,46,216,252,252,194,59,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,252,252,253,252,252,181,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,123,253,253,253,253,255,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,60,230,252,252,252,252,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,252,252,252,252,237,237,148,150,249,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,237,132,8,0,0,0,138,244,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,141,25,0,0,0,0,0,60,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,46,0,0,0,0,0,0,165,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,217,119,0,0,0,80,134,231,244,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,220,252,252,250,238,238,238,246,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,252,252,252,252,252,252,253,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,103,147,252,252,252,252,252,191,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,241,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,246,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,137,170,4,0,169,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,245,110,1,0,211,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,125,0,0,29,246,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,235,223,24,0,0,85,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,198,246,51,0,0,0,147,253,147,208,203,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,253,135,0,0,0,2,211,253,180,253,182,10,0,0,0,0,0,0,0,0,0,0,0,0,0,130,232,253,171,11,0,34,115,172,253,253,228,125,9,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,254,215,189,207,254,255,254,254,97,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,201,142,193,201,214,166,120,127,253,162,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,169,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,195,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,231,233,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,189,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,235,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,105,105,43,105,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,157,209,248,253,253,227,253,227,211,86,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,238,253,253,240,238,238,243,253,253,254,253,187,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,175,133,16,0,0,48,133,133,254,253,253,190,14,0,0,0,0,0,0,0,0,0,0,0,0,0,12,29,10,0,0,0,0,0,0,0,122,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,178,254,253,248,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,254,253,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,149,229,253,254,129,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,123,254,254,254,254,150,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,206,253,253,253,207,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,206,253,253,253,98,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,189,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,243,253,253,138,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,253,253,227,15,0,0,18,31,6,2,30,30,30,30,31,145,179,0,0,0,0,0,0,0,0,0,0,164,253,253,253,190,134,134,205,254,155,142,253,253,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,9,85,163,227,253,253,253,253,255,253,253,253,253,253,253,221,49,6,0,0,0,0,0,0,0,0,0,0,0,0,0,42,59,112,208,208,209,208,208,208,164,59,59,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,87,147,208,208,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,89,172,239,254,226,226,254,254,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,186,254,230,142,31,12,33,254,214,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,254,133,10,0,0,0,21,238,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,138,80,10,0,0,0,0,113,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,243,149,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,237,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,121,241,254,190,16,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,254,255,232,222,106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,32,37,23,23,135,230,254,201,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,230,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,11,0,0,0,0,0,0,0,0,5,220,251,42,0,0,0,0,0,0,0,0,0,0,0,0,0,16,234,38,0,0,0,0,0,0,0,0,0,164,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,38,0,0,0,0,0,0,0,0,0,174,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,38,0,0,0,0,0,0,0,0,40,237,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,233,222,40,0,0,0,0,0,0,10,185,231,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,252,176,109,62,0,6,121,231,240,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,166,254,254,254,254,209,216,239,171,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,23,79,163,247,247,176,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,246,255,121,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,253,253,196,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,245,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,233,253,253,172,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,232,253,253,208,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,243,253,253,236,53,0,2,17,17,17,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,232,253,253,234,98,0,21,168,253,253,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,48,233,253,253,234,57,142,200,221,253,253,253,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,7,177,253,253,253,227,216,253,253,253,253,253,253,253,253,198,0,0,0,0,0,0,0,0,0,0,0,11,168,253,253,253,253,253,253,253,239,194,136,86,154,253,253,74,0,0,0,0,0,0,0,0,0,0,3,170,253,253,253,253,253,253,253,245,74,0,0,67,207,253,253,37,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,253,253,253,193,62,0,0,85,216,253,250,121,2,0,0,0,0,0,0,0,0,0,20,196,253,253,253,253,253,249,120,17,6,91,173,250,253,253,120,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,253,253,64,104,188,215,253,253,253,183,107,1,0,0,0,0,0,0,0,0,0,0,36,223,253,253,253,253,253,253,250,253,253,253,253,227,60,2,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,253,253,253,253,253,253,187,112,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,37,37,37,72,145,145,145,138,37,37,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,141,241,254,228,104,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,216,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,234,253,252,186,68,128,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,241,115,6,0,4,178,252,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,101,0,0,0,0,57,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,151,0,0,0,0,0,131,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,224,19,0,0,0,0,60,234,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,227,43,0,0,0,0,0,191,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,228,31,0,0,0,23,179,254,247,100,0,0,19,29,29,29,29,29,16,0,0,0,0,0,0,0,0,146,171,19,0,0,63,234,252,253,208,144,169,169,225,252,252,253,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,111,234,252,252,253,252,252,252,253,252,252,252,206,142,56,56,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,252,253,252,214,139,140,65,28,28,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,69,150,253,255,242,105,0,0,88,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,139,253,253,253,253,253,175,0,25,231,217,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,168,253,253,224,174,230,253,175,3,179,253,198,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,250,67,14,0,24,243,100,90,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,239,221,79,0,0,0,0,78,94,241,253,237,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,191,0,0,0,0,26,137,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,100,0,0,13,76,209,253,253,252,140,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,114,0,13,215,253,253,253,234,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,228,218,112,221,253,253,252,223,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,253,253,253,253,207,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,186,253,253,253,253,134,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,242,253,253,253,250,45,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,237,253,253,253,253,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,129,15,74,251,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,251,253,128,22,0,44,241,217,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,128,2,0,0,0,120,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,67,0,0,0,17,190,232,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,246,253,151,30,85,109,227,253,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,241,253,253,253,253,253,253,250,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,203,253,253,253,204,125,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,22,18,8,13,22,22,22,57,127,127,127,66,22,20,0,0,0,0,0,0,0,0,0,0,126,169,169,225,252,239,197,217,252,252,253,252,252,252,252,253,252,245,142,11,0,0,0,0,0,0,0,0,253,252,252,252,252,236,147,147,147,147,147,112,42,42,42,42,121,200,252,174,0,0,0,0,0,0,0,0,255,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,236,0,0,0,0,0,0,0,0,253,252,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,112,0,0,0,0,0,0,0,0,245,217,112,212,21,0,0,0,0,0,0,0,0,0,0,0,8,226,247,38,0,0,0,0,0,0,0,0,111,237,252,252,42,0,0,0,0,0,0,0,0,0,0,0,112,252,162,0,0,0,0,0,0,0,0,0,0,67,244,252,42,0,0,0,0,0,0,0,0,0,0,18,216,190,14,0,0,0,0,0,0,0,0,0,0,0,9,80,0,0,0,0,0,0,0,0,0,0,18,210,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,239,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,249,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,192,215,214,214,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,109,247,253,254,253,253,226,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,253,253,253,254,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,238,253,253,253,193,238,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,213,180,60,0,91,236,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,0,0,0,0,175,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,158,199,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,164,254,255,254,254,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,217,253,253,253,254,253,253,253,253,207,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,254,253,253,253,253,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,254,253,253,253,253,254,251,99,3,0,0,0,13,40,24,0,0,0,0,0,0,0,0,254,253,253,253,253,254,253,253,253,253,254,253,253,146,23,61,142,213,253,230,0,0,0,0,0,0,0,0,172,254,254,254,254,255,249,165,38,218,255,254,254,254,254,255,254,254,254,231,0,0,0,0,0,0,0,0,9,167,253,253,253,241,103,0,0,53,254,253,253,253,253,254,253,253,167,24,0,0,0,0,0,0,0,0,0,6,78,78,78,30,0,0,0,0,119,253,253,253,253,254,209,78,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,102,184,213,176,95,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,3,168,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,207,0,0,0,0,0,0,105,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,251,193,0,0,0,0,0,25,246,249,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,130,0,0,0,0,0,120,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,215,12,0,0,0,0,20,239,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,217,254,114,0,0,0,0,0,139,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,248,37,0,0,0,0,4,252,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,219,245,26,0,0,0,0,84,254,225,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,165,3,0,0,13,221,255,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,254,231,150,112,195,254,242,45,0,0,24,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,254,254,254,254,233,71,71,71,117,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,19,127,230,254,254,254,254,254,254,239,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,245,170,170,130,90,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,195,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,186,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,206,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,151,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,239,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,128,128,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,128,0,0,191,255,255,255,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,253,255,253,253,253,255,128,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,252,253,252,252,252,253,252,247,134,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,71,113,215,215,217,174,175,236,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,108,108,211,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,211,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,227,252,252,159,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,181,253,252,252,148,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,109,109,255,253,253,253,255,159,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,253,180,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,201,252,253,252,252,252,253,252,180,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,108,108,108,128,252,253,252,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,238,253,253,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,149,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,160,252,253,210,31,0,0,0,0,0,0,0,0,0,0,94,109,109,0,0,0,0,0,0,16,109,110,233,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,217,252,252,217,217,217,134,218,217,222,252,253,252,252,252,159,25,0,0,0,0,0,0,0,0,0,0,0,62,92,215,252,252,252,252,253,252,252,252,253,252,226,132,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,108,108,108,253,210,108,190,108,108,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,50,0,0,0,0,0,123,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,151,0,0,0,0,0,163,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,151,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,50,0,0,0,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,50,0,0,0,0,41,243,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,50,0,0,0,0,51,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,50,0,0,0,0,51,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,50,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,172,0,0,0,0,92,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,82,0,0,0,214,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,243,162,123,203,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,254,253,254,253,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,151,151,151,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,130,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,239,148,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,148,26,0,0,0,40,247,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,185,144,3,0,0,6,210,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,173,242,0,0,0,8,108,253,121,13,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,196,222,110,0,0,0,34,253,253,83,56,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,165,0,0,0,0,139,253,201,79,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,98,0,0,0,0,254,253,61,154,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,212,14,0,0,0,83,255,253,225,203,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,246,134,111,111,111,173,254,253,161,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,254,254,254,254,251,192,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,163,201,187,198,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,25,225,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,219,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,220,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,236,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,187,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,244,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,115,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,41,147,233,237,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,66,128,210,255,206,96,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,115,198,253,254,239,169,62,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,189,253,249,205,143,37,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,209,250,179,119,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,247,191,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,111,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,207,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,155,254,197,102,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,227,186,194,254,173,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,1,42,219,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,89,0,0,0,88,230,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,216,50,0,0,120,224,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,120,245,219,175,224,165,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,161,188,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,201,222,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,227,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,214,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,113,53,0,0,0,17,222,253,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,236,26,0,0,105,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,234,253,240,29,0,15,228,253,236,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,230,253,253,151,0,0,122,253,253,140,23,24,9,0,0,0,0,0,0,0,0,0,0,0,0,0,112,231,253,253,190,27,0,35,254,253,253,228,241,241,144,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,222,159,159,229,255,254,254,254,254,249,91,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,254,253,253,192,163,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,243,247,251,253,253,253,253,254,195,112,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,69,84,149,253,253,181,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,248,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,244,253,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,214,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,151,235,178,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,162,222,254,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,237,254,240,254,254,254,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,254,174,44,254,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,242,16,3,145,249,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,232,255,178,12,15,218,243,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,234,254,227,147,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,207,254,254,254,144,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,254,254,254,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,244,223,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,237,250,41,20,170,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,172,0,0,1,134,254,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,235,207,10,0,0,0,89,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,136,0,0,0,0,78,253,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,88,0,0,0,0,0,240,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,227,182,0,0,0,0,0,240,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,234,56,0,0,0,61,250,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,239,155,32,71,163,254,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,222,254,254,254,254,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,150,234,195,193,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,51,156,255,176,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,133,241,254,254,254,254,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,199,254,254,254,247,194,130,246,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,216,254,254,230,110,33,0,5,235,254,233,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,254,250,87,0,0,0,22,240,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,250,109,0,0,0,0,126,254,254,238,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,58,50,0,0,0,0,17,213,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,184,254,254,159,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,81,122,204,254,254,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,122,231,254,254,254,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,229,254,254,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,245,212,159,138,248,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,6,0,0,180,254,201,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,238,13,0,0,0,0,0,0,0,0,0,0,0,0,53,205,196,87,0,0,0,0,0,0,0,0,217,254,209,6,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,239,115,16,0,0,0,35,10,73,251,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,12,233,254,254,254,204,154,167,238,246,152,197,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,254,254,254,254,254,254,254,254,254,254,142,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,159,254,254,254,254,254,254,254,254,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,40,161,254,254,254,239,127,42,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,129,245,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,215,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,245,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,217,194,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,215,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,135,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,160,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,217,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,132,170,170,255,253,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,56,182,254,209,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,151,250,191,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,180,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,234,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,214,242,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,235,225,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,47,47,47,47,47,47,47,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,253,253,253,254,253,232,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,34,240,253,254,253,253,253,254,236,152,69,0,0,0,0,0,0,0,0,0,0,0,0,0,81,237,254,60,0,9,127,93,110,184,118,93,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,243,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,207,254,253,200,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,254,253,238,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,254,254,254,186,104,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,160,236,207,232,253,253,254,131,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,126,29,0,25,46,113,203,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,13,0,0,0,0,0,19,236,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,132,0,0,0,0,0,0,0,206,237,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,139,0,0,0,0,0,0,26,197,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,206,0,0,0,0,0,9,108,249,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,240,109,93,93,93,168,209,254,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,155,254,254,255,254,254,254,254,241,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,73,173,254,253,253,219,148,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,46,46,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,238,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,222,234,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,233,246,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,247,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,150,254,171,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,197,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,89,244,129,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,177,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,178,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,239,249,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,196,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,178,254,243,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,255,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,152,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,158,144,67,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,82,228,253,253,254,253,146,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,237,253,70,167,253,253,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,61,239,253,253,33,2,117,240,253,223,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,251,198,188,12,0,0,35,223,253,146,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,235,253,117,0,24,0,0,0,0,46,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,250,21,0,0,0,0,0,0,2,121,253,185,5,0,0,0,0,0,0,0,0,0,0,0,0,18,245,253,145,0,0,0,0,0,0,0,0,22,220,253,99,0,0,0,0,0,0,0,0,0,0,0,0,133,253,212,14,0,0,0,0,0,0,0,0,0,199,253,180,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,151,253,209,0,0,0,0,0,0,0,0,0,0,0,67,254,254,88,0,0,0,0,0,0,0,0,0,0,0,233,255,66,0,0,0,0,0,0,0,0,0,0,96,253,238,27,0,0,0,0,0,0,0,0,0,0,0,232,253,66,0,0,0,0,0,0,0,0,0,0,177,253,231,0,0,0,0,0,0,0,0,0,0,0,118,250,236,40,0,0,0,0,0,0,0,0,0,0,177,253,126,0,0,0,0,0,0,0,0,0,0,5,204,253,151,0,0,0,0,0,0,0,0,0,0,0,177,253,145,0,0,0,0,0,0,0,0,0,5,147,253,222,35,0,0,0,0,0,0,0,0,0,0,0,91,253,249,69,0,0,0,0,0,0,0,0,110,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,191,12,1,0,0,0,7,89,165,243,253,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,163,88,45,141,211,253,253,250,136,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,253,253,253,253,253,253,254,199,132,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,105,143,244,253,253,253,129,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,47,47,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,157,197,206,253,253,236,197,197,150,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,253,253,253,253,253,248,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,236,87,80,170,211,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,124,2,0,19,124,235,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,99,181,181,103,5,0,0,0,218,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,220,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,240,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,253,253,244,40,0,0,0,0,0,0,0,0,0,0,101,192,192,121,180,125,89,89,55,0,0,11,181,253,253,253,118,0,0,0,0,0,0,0,0,0,38,216,253,253,253,253,253,253,253,253,248,239,160,192,253,253,253,175,6,0,0,0,0,0,0,0,0,0,182,253,253,196,175,198,221,253,253,253,253,253,253,253,253,253,253,142,0,0,0,0,0,0,0,0,0,0,255,253,178,7,0,14,36,46,220,253,253,253,253,253,253,253,253,252,162,32,0,0,0,0,0,0,0,0,227,253,242,171,171,195,253,253,253,253,253,253,253,217,112,133,186,244,253,80,0,0,0,0,0,0,0,0,103,251,253,253,253,253,253,253,253,253,245,141,61,17,0,0,0,31,36,7,0,0,0,0,0,0,0,0,0,73,192,196,196,196,196,196,151,93,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,255,155,146,108,38,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,253,253,253,207,142,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,82,85,163,248,251,253,253,225,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,128,210,252,227,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,247,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,130,77,8,0,0,0,153,253,192,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,197,253,253,253,198,128,30,15,217,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,253,193,156,162,253,253,229,171,253,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,231,4,0,1,80,204,252,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,61,0,0,0,0,0,192,253,253,211,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,160,0,0,0,0,121,251,229,150,205,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,228,58,40,141,230,237,123,0,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,156,246,253,253,253,253,228,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,105,182,246,123,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,249,77,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,252,229,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,44,192,252,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,78,209,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,253,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,214,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,252,226,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,253,247,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,165,192,252,253,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,198,248,252,252,252,253,252,164,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,245,252,252,252,252,252,249,252,252,241,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,252,252,239,113,56,186,252,252,252,175,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,252,239,74,0,0,18,109,216,252,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,199,70,0,0,0,0,0,17,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,150,234,254,223,139,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,244,253,150,129,212,253,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,89,254,187,32,0,0,11,115,234,233,68,213,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,191,11,0,0,0,0,0,57,243,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,237,41,0,0,0,0,0,0,0,176,254,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,217,0,0,0,0,0,0,0,42,238,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,223,6,0,0,0,0,0,0,140,254,249,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,139,0,0,0,0,11,135,244,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,181,254,202,181,182,202,255,254,255,191,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,78,212,253,254,253,254,253,181,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,11,110,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,249,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,243,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,109,158,215,254,254,255,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,196,241,254,254,254,254,254,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,254,254,254,247,162,249,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,195,101,44,4,0,4,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,159,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,101,0,0,0,40,87,177,182,182,182,107,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,101,55,149,242,249,254,254,254,254,254,254,251,230,74,0,0,0,0,0,0,0,0,0,0,0,0,221,254,228,247,254,254,254,240,234,234,169,191,242,240,254,251,90,3,0,0,0,0,0,0,0,0,0,0,221,254,254,254,254,236,128,23,0,0,0,0,29,22,91,235,254,59,0,0,0,0,0,0,0,0,0,0,112,254,254,231,104,11,0,0,0,0,0,0,0,0,0,52,254,215,0,0,0,0,0,0,0,0,0,0,6,119,86,25,0,0,0,0,0,0,0,0,0,0,0,5,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,203,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,38,242,254,48,0,0,0,0,0,0,0,0,0,0,0,128,180,11,0,0,0,0,0,0,0,0,0,76,246,254,207,20,0,0,0,0,0,0,0,0,0,0,0,9,235,188,53,0,0,0,0,0,0,22,155,246,254,220,9,0,0,0,0,0,0,0,0,0,0,0,0,0,93,239,234,140,21,5,5,11,102,221,254,252,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,254,254,254,254,254,222,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,129,252,254,254,254,254,254,153,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,201,254,254,212,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,158,241,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,196,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,189,223,118,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,219,33,179,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,239,113,0,48,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,248,35,0,53,254,250,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,239,0,0,92,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,240,16,11,224,254,235,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,194,254,236,255,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,148,254,134,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,229,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,165,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,241,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,255,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,240,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,205,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,190,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,229,215,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,184,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,219,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,230,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,85,0,0,0,32,139,145,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,41,0,112,192,239,253,253,215,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,241,239,251,253,253,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,245,253,253,253,253,160,72,72,202,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,236,253,253,236,147,25,1,0,16,217,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,184,14,0,0,0,52,175,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,251,250,252,162,115,115,115,216,245,253,246,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,115,223,253,253,253,253,244,196,99,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,131,14,96,253,168,253,170,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,220,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,135,225,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,254,234,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,209,254,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,211,254,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,223,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,126,254,248,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,248,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,247,254,100,0,0,0,0,0,0,0,3,29,43,66,3,0,0,0,0,0,0,0,0,0,0,0,18,215,254,158,2,0,0,0,0,0,13,98,207,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,97,254,222,22,0,0,0,0,0,0,162,254,217,129,55,236,244,10,0,0,0,0,0,0,0,0,0,22,248,254,101,0,0,0,0,0,0,126,253,133,8,0,0,219,237,9,0,0,0,0,0,0,0,0,0,49,254,224,13,0,0,0,0,0,101,253,156,2,0,0,14,230,185,0,0,0,0,0,0,0,0,0,0,134,254,149,0,0,0,0,0,56,240,208,7,0,0,4,180,253,51,0,0,0,0,0,0,0,0,0,9,235,240,27,0,0,0,0,0,122,254,103,0,0,47,195,251,130,0,0,0,0,0,0,0,0,0,0,23,254,208,0,0,0,0,0,0,55,249,90,21,166,237,240,106,0,0,0,0,0,0,0,0,0,0,0,94,254,137,0,0,0,0,0,0,8,170,227,236,253,152,46,0,0,0,0,0,0,0,0,0,0,0,0,24,254,215,28,0,0,38,57,118,208,254,254,151,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,254,242,231,231,246,254,254,222,118,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,155,215,255,231,173,117,58,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,162,225,199,172,138,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,192,254,254,254,254,254,223,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,183,254,180,68,66,71,218,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,245,14,0,0,0,107,249,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,82,0,0,0,14,226,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,242,20,0,0,37,166,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,209,6,0,46,244,254,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,243,254,158,148,235,254,254,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,254,254,254,225,93,139,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,206,254,176,119,5,11,231,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,232,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,221,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,216,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,233,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,255,220,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,0,0,0,0,0,0,0,0,0,55,247,76,0,0,0,0,0,0,0,0,0,0,0,0,0,17,212,234,50,0,0,0,0,0,0,0,0,173,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,204,0,0,0,0,0,0,0,8,232,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,250,124,0,0,0,0,0,0,0,100,255,254,12,0,0,0,0,0,0,0,0,0,0,0,0,16,216,254,134,0,0,0,0,0,0,0,0,100,255,254,12,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,87,0,0,0,0,0,0,0,0,119,254,254,12,0,0,0,0,0,0,0,0,0,0,0,4,168,254,208,30,0,0,0,0,0,0,0,0,224,254,254,12,0,0,0,0,0,0,0,0,0,0,3,127,254,248,75,0,0,0,0,0,0,0,0,65,245,255,232,10,0,0,0,0,0,0,0,0,0,0,13,254,254,223,0,0,0,0,0,0,0,0,0,122,254,254,54,0,0,0,0,0,0,0,0,0,0,0,105,254,254,193,0,0,0,0,0,0,0,0,0,218,254,228,14,0,0,0,0,0,0,0,0,0,0,5,226,254,202,24,0,0,0,0,0,0,0,0,67,246,254,148,0,0,0,0,0,0,0,0,0,0,0,44,254,249,75,0,0,0,0,0,0,0,0,0,88,254,254,112,0,0,0,0,0,0,0,0,0,0,0,131,254,236,0,0,0,0,0,0,0,0,64,82,202,254,254,98,82,82,2,0,0,0,0,0,0,0,0,131,254,251,212,197,88,170,212,212,212,212,245,254,254,254,254,254,254,254,6,0,0,0,0,0,0,0,0,22,211,254,254,254,254,254,254,254,254,254,254,254,254,254,218,161,161,161,4,0,0,0,0,0,0,0,0,0,23,154,213,254,254,254,235,154,125,64,57,102,254,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,24,24,24,20,0,0,0,0,194,254,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,214,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,115,227,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,255,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,153,131,131,131,131,131,131,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,254,251,252,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,149,172,79,135,254,214,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,68,0,0,154,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,221,254,220,27,0,10,212,254,197,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,247,109,0,0,94,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,183,0,0,46,236,254,197,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,80,26,0,0,69,254,230,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,113,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,238,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,254,159,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,180,254,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,186,254,232,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,254,231,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,250,254,207,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,255,255,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,189,254,255,254,210,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,217,253,254,184,176,176,242,253,180,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,246,184,100,15,1,0,0,22,166,240,240,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,1,0,0,0,0,0,0,0,22,222,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,221,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,250,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,31,43,162,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,73,187,245,254,254,254,254,167,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,190,254,242,188,75,189,254,246,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,220,250,142,31,0,22,226,235,70,223,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,215,251,100,0,0,22,175,252,102,0,37,224,223,33,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,131,0,2,55,205,252,124,0,0,0,101,254,194,29,0,0,0,0,0,0,0,0,0,0,0,0,154,254,159,139,192,254,235,109,0,0,0,0,6,144,246,50,0,0,0,0,0,0,0,0,0,0,0,0,23,213,254,254,207,123,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,91,181,254,255,201,91,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,38,216,253,253,253,253,253,253,225,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,232,146,174,253,253,253,253,239,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,237,253,227,140,46,0,15,56,110,242,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,245,129,29,0,0,0,0,0,0,172,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,190,0,0,0,0,0,0,0,17,188,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,253,253,230,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,216,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,250,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,172,246,253,250,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,243,253,253,238,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,182,253,253,223,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,160,0,0,2,42,42,42,174,205,205,205,205,99,0,0,0,0,0,0,0,0,0,0,0,197,253,253,180,12,0,128,135,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,94,246,253,253,236,222,222,252,253,253,253,253,253,253,202,195,195,89,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,253,253,253,238,106,106,106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,207,179,173,15,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,217,173,227,162,89,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,209,235,235,235,167,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,136,250,254,254,254,254,254,238,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,158,254,254,254,254,218,121,128,252,235,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,166,254,254,254,245,119,29,0,0,134,250,235,70,0,0,0,0,0,0,0,0,0,0,0,0,0,34,222,254,254,254,250,175,0,0,0,0,0,221,254,215,6,0,0,0,0,0,0,0,0,0,0,0,40,158,254,254,187,124,80,0,0,0,0,0,0,221,254,233,47,0,0,0,0,0,0,0,0,0,0,0,136,254,254,188,70,0,0,0,0,0,0,0,0,87,254,231,42,0,0,0,0,0,0,0,0,0,0,135,250,254,223,11,0,0,0,0,0,0,0,0,0,9,206,254,219,0,0,0,0,0,0,0,0,0,33,240,254,254,108,0,0,0,0,0,0,0,0,0,0,0,163,254,251,95,0,0,0,0,0,0,0,0,219,254,254,187,22,0,0,0,0,0,0,0,0,0,0,0,17,200,254,117,0,0,0,0,0,0,0,0,241,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,131,0,0,0,0,0,0,0,0,193,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,2,123,254,254,0,0,0,0,0,0,0,0,118,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,187,0,0,0,0,0,0,0,0,118,254,254,192,0,0,0,0,0,0,0,0,0,0,43,149,252,254,190,69,0,0,0,0,0,0,0,0,193,254,254,217,72,0,0,0,0,0,0,55,87,221,235,254,234,74,13,0,0,0,0,0,0,0,0,0,25,205,254,254,247,200,200,200,200,200,200,236,254,254,229,147,41,0,0,0,0,0,0,0,0,0,0,0,0,82,213,245,254,254,254,254,254,254,254,250,213,145,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,96,96,167,234,110,96,96,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,99,132,231,253,253,253,185,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,252,252,252,252,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,223,216,216,216,253,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,175,84,16,0,0,0,172,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,109,155,229,240,253,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,221,252,252,252,252,253,252,251,160,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,241,252,253,253,255,253,253,253,250,241,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,108,108,253,252,179,228,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,247,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,237,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,178,254,254,210,38,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,224,254,254,254,254,254,206,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,254,254,254,254,242,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,135,100,211,254,254,212,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,242,254,254,222,24,0,21,210,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,254,254,197,8,0,0,0,91,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,251,122,0,0,0,0,30,254,254,218,20,0,0,0,0,0,0,0,0,0,0,0,0,0,15,187,254,254,193,0,0,0,0,0,30,254,254,241,29,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,254,95,0,0,0,0,0,58,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,200,22,0,0,0,0,10,230,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,61,247,254,249,18,0,0,0,0,0,156,255,254,230,52,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,254,196,0,0,0,0,0,156,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,254,249,13,0,0,3,49,231,254,254,254,169,37,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,147,0,0,5,83,254,255,254,253,211,37,0,0,0,0,0,0,0,0,0,0,0,0,0,24,226,254,254,147,2,59,181,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,254,169,186,254,254,254,254,199,136,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,254,254,254,254,254,235,135,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,222,254,254,254,254,254,171,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,254,193,17,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,134,247,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,179,0,0,0,0,11,73,73,73,73,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,179,0,0,16,78,191,252,253,252,252,211,37,5,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,179,0,84,191,252,252,252,253,252,252,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,180,79,191,255,253,253,253,255,253,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,242,242,252,253,252,241,179,180,179,231,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,252,253,241,102,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,98,252,252,252,252,252,253,97,0,0,0,42,221,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,255,128,109,109,255,253,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,5,119,252,252,252,252,253,252,252,252,253,252,252,252,180,45,0,0,0,0,0,0,0,0,0,0,0,0,0,1,133,247,252,252,253,252,252,252,253,241,215,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,108,108,108,232,231,108,108,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,59,89,209,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,20,50,132,214,224,253,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,254,216,107,172,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,253,253,247,176,117,25,13,192,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,253,154,49,0,0,0,116,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,255,163,18,0,0,0,35,224,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,246,253,226,110,5,5,203,253,227,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,211,253,253,155,89,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,253,253,246,253,165,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,126,253,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,164,254,255,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,211,227,241,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,199,253,222,0,50,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,231,34,0,5,193,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,176,0,0,58,253,237,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,205,8,0,82,239,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,129,4,58,254,253,247,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,199,187,253,254,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,244,86,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,253,237,155,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,53,178,158,130,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,253,253,253,255,204,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,253,253,223,241,254,253,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,207,253,252,163,36,9,196,253,253,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,170,0,0,0,72,253,253,253,172,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,94,0,0,0,8,155,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,248,253,250,21,0,0,0,0,6,65,244,253,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,145,0,0,0,0,0,0,0,66,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,55,0,0,0,0,0,0,0,6,188,253,251,74,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,55,0,0,0,0,0,0,0,0,118,253,253,195,0,0,0,0,0,0,0,0,0,0,0,67,254,254,184,0,0,0,0,0,0,0,0,0,25,224,255,210,0,0,0,0,0,0,0,0,0,0,0,67,253,253,88,0,0,0,0,0,0,0,0,0,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,67,253,253,179,0,0,0,0,0,0,0,0,0,0,199,253,246,55,0,0,0,0,0,0,0,0,0,0,32,231,253,227,29,0,0,0,0,0,0,0,0,0,199,253,230,32,0,0,0,0,0,0,0,0,0,0,0,138,253,253,55,0,0,0,0,0,0,0,0,0,199,253,185,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,172,8,0,0,0,0,0,0,0,83,242,250,65,0,0,0,0,0,0,0,0,0,0,0,0,9,186,253,253,176,10,0,0,0,0,0,79,246,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,253,253,236,155,107,93,122,155,250,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,105,247,253,253,253,254,253,253,253,253,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,100,225,205,254,253,210,133,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,105,105,105,192,255,253,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,239,252,252,252,252,253,252,252,252,239,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,252,252,252,253,252,251,237,192,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,252,252,252,133,132,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,230,252,252,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,238,252,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,244,252,252,134,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,180,252,253,168,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,218,252,249,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,203,253,252,244,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,90,206,252,253,195,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,193,224,252,252,252,208,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,252,225,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,240,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,158,158,49,0,0,0,58,208,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,244,254,254,212,62,117,149,237,254,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,249,254,128,191,254,254,254,254,254,211,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,254,225,42,25,96,123,204,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,248,176,42,0,0,0,0,200,254,137,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,55,0,0,0,0,10,172,252,226,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,214,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,254,255,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,206,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,230,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,207,254,229,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,251,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,213,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,244,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,231,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,251,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,193,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,198,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,18,0,0,0,0,0,0,0,0,73,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,226,30,0,0,0,0,0,0,7,192,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,71,0,0,0,0,0,0,129,253,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,82,0,0,0,0,0,0,169,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,48,0,0,0,0,0,11,194,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,48,0,0,0,0,0,37,253,204,12,0,0,0,0,0,0,0,0,0,0,0,0,52,88,0,153,253,253,48,0,0,0,0,0,141,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,133,251,230,246,253,135,5,0,0,0,0,23,245,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,195,3,0,0,0,0,0,25,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,255,225,99,3,0,0,0,0,25,254,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,242,253,253,126,15,0,0,0,25,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,213,51,183,245,253,217,106,37,18,100,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,141,32,0,0,65,182,247,253,253,210,218,253,174,49,49,26,49,49,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,124,193,225,253,253,253,253,253,219,253,198,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,204,180,180,180,77,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,218,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,52,24,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,243,224,250,190,100,56,0,0,0,96,100,100,100,100,69,0,0,0,0,0,0,0,0,0,0,0,0,68,197,252,252,252,252,248,243,242,242,252,252,252,252,252,249,194,0,0,0,0,0,0,0,0,0,0,0,0,20,88,93,197,214,228,253,252,252,199,197,197,224,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,31,55,55,55,3,20,89,215,252,225,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,252,252,250,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,252,252,212,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,168,250,235,89,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,229,252,194,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,67,191,255,245,129,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,189,252,252,172,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,137,230,252,179,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,137,245,252,247,102,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,252,240,159,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,236,252,167,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,220,235,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,112,190,191,155,14,197,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,226,252,235,127,170,181,252,244,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,232,247,119,14,0,0,232,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,217,47,0,0,18,141,249,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,247,97,0,0,80,210,253,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,243,146,146,190,242,253,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,252,251,231,187,200,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,102,153,77,0,27,218,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,214,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,127,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,191,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,138,170,253,253,255,180,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,253,252,252,252,252,253,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,221,184,162,69,69,121,222,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,25,0,0,0,0,0,138,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,212,253,252,209,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,120,228,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,252,252,247,184,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,252,252,252,253,252,208,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,22,22,22,75,201,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,178,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,138,233,253,231,42,0,0,0,0,0,0,0,0,0,0,0,15,161,161,161,109,47,47,47,47,47,162,219,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,253,252,252,252,252,253,252,252,153,37,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,252,252,252,253,252,252,252,252,245,139,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,137,189,253,252,252,157,137,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,133,234,234,230,97,97,97,97,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,146,213,249,253,253,253,253,253,253,253,253,202,70,0,0,0,0,0,0,0,0,0,0,0,0,0,27,196,253,253,253,253,253,217,198,225,253,253,253,253,248,89,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,238,170,82,82,29,0,40,82,127,227,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,33,239,168,58,0,0,0,0,0,0,0,0,25,209,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,204,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,204,253,253,210,85,0,0,0,0,0,0,0,0,0,0,15,49,141,186,186,186,186,186,186,186,182,49,206,253,253,223,26,0,0,0,0,0,0,0,0,0,0,78,191,253,253,253,253,253,253,253,253,253,253,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,145,245,253,252,246,164,109,168,246,252,253,253,253,253,253,253,253,154,7,0,0,0,0,0,0,0,0,0,254,253,253,131,0,0,0,54,125,229,253,253,253,253,253,253,253,253,243,57,0,0,0,0,0,0,0,0,254,253,181,3,15,104,174,246,253,253,253,253,247,13,13,58,150,223,253,116,0,0,0,0,0,0,0,0,254,253,243,220,225,253,253,253,253,253,192,82,33,0,0,0,0,121,159,16,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,197,80,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,217,253,222,212,212,141,75,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,96,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,43,43,0,0,0,0,0,8,43,52,148,148,210,183,4,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,191,190,190,190,190,201,252,252,252,252,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,253,252,252,252,252,253,252,252,252,252,253,252,214,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,252,253,252,252,252,252,253,205,51,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,252,252,252,208,147,147,138,113,103,42,11,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,254,239,115,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,204,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,252,252,229,176,106,106,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,254,253,253,253,253,255,138,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,89,239,253,252,252,252,252,253,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,21,100,170,196,231,245,252,233,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,130,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,52,206,252,253,252,236,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,232,242,252,252,253,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,237,252,252,252,216,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,252,164,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,67,156,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,118,199,80,20,20,50,118,154,239,253,253,247,139,0,0,0,0,0,0,0,0,0,0,0,0,31,176,241,253,253,253,254,253,253,253,253,254,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,22,159,254,253,240,198,117,139,213,183,169,138,216,253,253,216,49,0,0,0,0,0,0,0,0,0,0,99,226,253,254,245,70,0,0,0,0,0,0,114,254,253,192,5,0,0,0,0,0,0,0,0,0,14,149,254,254,254,241,68,0,0,0,0,0,0,10,209,255,249,135,0,0,0,0,0,0,0,0,0,0,149,253,253,250,158,30,0,0,0,0,0,0,7,206,253,254,106,0,0,0,0,0,0,0,0,0,0,0,119,253,253,116,0,0,0,0,0,0,0,0,79,245,253,235,27,0,0,0,0,0,0,0,0,0,0,0,5,19,19,2,0,0,0,0,0,0,10,129,247,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,171,255,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,254,243,68,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,247,253,205,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,221,253,253,185,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,255,254,145,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,155,235,253,226,53,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,229,253,222,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,217,194,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,126,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,237,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,235,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,250,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,178,104,218,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,254,179,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,242,253,185,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,18,110,180,255,194,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,103,217,253,253,253,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,208,200,200,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,253,253,237,146,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,253,239,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,243,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,230,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,253,235,142,107,24,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,87,194,208,253,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,118,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,210,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,190,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,186,253,242,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,233,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,152,200,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,193,214,253,234,152,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,252,253,252,253,252,223,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,254,233,102,102,41,82,123,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,91,30,0,0,0,41,102,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,163,61,0,0,0,0,0,123,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,203,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,0,0,113,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,193,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,132,10,0,0,0,203,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,172,82,82,163,243,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,254,253,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,151,151,71,232,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,136,227,255,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,103,217,253,226,218,218,218,137,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,250,253,245,118,19,0,0,0,32,147,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,203,253,213,98,0,0,0,0,4,177,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,248,21,0,0,0,0,0,109,253,237,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,213,253,93,0,0,0,0,0,0,235,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,251,11,0,0,0,0,0,108,253,250,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,157,1,0,0,0,0,54,191,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,31,0,0,10,42,176,253,207,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,193,253,216,177,177,195,253,253,227,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,245,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,41,41,41,189,253,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,180,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,253,209,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,143,254,254,254,254,255,217,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,181,254,254,254,254,254,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,215,254,237,101,18,7,50,251,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,177,254,213,28,0,0,0,119,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,253,84,0,0,0,34,251,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,185,0,0,0,149,221,254,254,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,244,254,166,0,0,0,103,253,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,96,0,0,0,68,252,254,237,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,96,0,0,25,231,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,149,18,61,235,254,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,246,254,242,234,254,254,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,254,254,245,224,250,254,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,154,191,157,39,31,248,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,197,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,234,254,244,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,212,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,9,0,0,0,0,0,0,93,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,227,112,0,0,0,0,0,0,231,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,235,11,0,0,0,3,149,254,228,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,254,91,0,0,0,0,19,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,254,208,22,0,0,0,0,139,254,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,182,254,243,37,0,0,0,0,42,253,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,78,0,0,0,0,0,131,254,222,13,0,13,93,5,0,0,0,0,0,0,0,0,0,0,30,223,254,162,3,0,0,0,0,55,249,254,138,83,157,227,254,62,0,0,0,0,0,0,0,0,0,6,159,254,236,53,49,49,49,49,127,178,254,254,249,254,254,242,121,27,0,0,0,0,0,0,0,0,4,151,254,254,254,254,254,254,254,254,254,254,254,254,254,241,165,70,0,0,0,0,0,0,0,0,0,0,128,254,254,254,254,254,254,254,254,254,254,254,212,137,82,8,0,0,0,0,0,0,0,0,0,0,0,0,142,254,239,189,115,83,19,19,19,169,254,212,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,136,59,0,0,0,0,0,35,247,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,190,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,179,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,169,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,22,168,223,140,81,73,38,12,4,0,32,103,225,0,0,0,0,0,0,0,0,0,0,0,0,0,59,206,226,253,253,253,253,253,245,207,185,153,244,253,253,0,0,0,0,0,0,0,0,0,0,0,0,35,216,241,118,211,233,253,253,253,253,253,253,253,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,234,253,62,0,0,16,78,78,114,83,78,86,153,120,78,46,0,0,0,0,0,0,0,0,0,0,3,84,228,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,248,253,242,157,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,238,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,146,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,43,0,0,0,0,120,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,189,79,21,0,0,194,209,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,235,228,228,241,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,253,206,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,243,243,243,147,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,143,181,213,187,151,151,192,153,151,151,77,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,254,254,254,254,254,254,254,254,250,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,255,130,114,114,114,74,10,10,96,53,96,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,247,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,248,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,207,254,101,23,121,121,121,121,222,188,108,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,254,254,254,254,229,254,254,254,167,47,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,176,145,145,58,41,41,25,41,54,177,254,244,162,5,0,0,0,0,0,0,0,0,0,0,0,0,73,48,0,0,0,0,0,0,0,0,0,0,89,204,254,209,10,0,0,0,0,0,0,0,0,0,0,55,67,0,0,0,0,0,0,0,0,0,0,0,0,35,185,254,170,0,0,0,0,0,0,0,0,8,161,247,101,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,0,0,0,0,0,0,0,0,127,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,0,0,0,0,0,0,0,0,164,204,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,242,0,0,0,0,0,0,0,0,223,189,3,0,0,0,0,0,0,0,0,0,0,0,0,0,81,244,237,62,0,0,0,0,0,0,0,0,151,254,158,15,0,0,0,0,0,0,0,0,0,0,15,124,246,254,138,0,0,0,0,0,0,0,0,0,69,239,254,227,77,68,9,0,0,0,0,39,105,172,231,254,254,173,0,0,0,0,0,0,0,0,0,0,0,67,155,244,254,254,223,193,115,115,115,238,254,254,254,237,113,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,237,254,254,254,254,254,254,211,141,94,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,46,115,106,68,108,48,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,86,210,225,243,237,226,178,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,57,182,197,203,252,253,252,252,252,252,253,252,239,181,25,0,0,0,0,0,0,0,0,13,154,169,169,215,253,252,252,252,252,253,252,252,217,84,146,249,252,252,112,0,0,0,0,0,0,0,0,191,252,252,252,252,253,252,252,252,252,253,252,252,84,0,0,146,252,252,112,0,0,0,0,0,0,0,0,192,253,253,253,253,255,152,140,140,140,141,140,140,47,0,0,0,198,253,112,0,0,0,0,0,0,0,0,12,27,27,27,27,27,3,0,0,0,0,0,0,0,0,0,0,197,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,234,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,152,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,112,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,191,229,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,110,240,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,202,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,244,93,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,252,233,59,0,0,0,0,7,57,95,169,170,94,13,0,0,0,0,0,0,0,0,0,0,0,0,150,253,252,80,0,0,0,67,134,204,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,38,237,253,151,6,0,63,188,246,252,253,252,252,252,253,252,193,13,0,0,0,0,0,0,0,0,0,7,204,253,214,0,23,179,254,253,253,228,214,113,25,63,254,253,156,0,0,0,0,0,0,0,0,0,0,82,252,227,88,63,234,252,253,240,109,9,0,0,45,194,253,240,43,0,0,0,0,0,0,0,0,0,10,197,252,139,60,234,252,252,194,43,0,0,10,110,240,252,244,81,0,0,0,0,0,0,0,0,0,0,29,252,252,139,241,252,252,151,13,0,0,51,229,252,252,202,75,0,0,0,0,0,0,0,0,0,0,0,29,253,253,203,254,253,216,41,92,141,229,253,254,247,137,13,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,252,252,252,253,252,252,227,184,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,149,252,252,253,252,252,252,244,168,80,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,177,252,253,177,139,90,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,76,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,97,192,192,196,253,253,199,155,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,192,253,253,253,253,253,253,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,138,103,103,103,103,230,253,234,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,143,30,0,0,0,0,90,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,81,1,0,0,0,0,0,90,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,234,253,214,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,120,215,253,203,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,47,170,253,253,243,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,124,168,253,253,253,250,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,173,253,253,253,253,189,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,247,181,104,104,104,178,104,104,104,104,104,126,155,104,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,246,97,0,0,0,0,0,0,0,0,55,181,191,191,191,194,253,253,253,253,253,253,253,253,253,199,83,54,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,75,75,75,75,75,75,75,75,75,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,254,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,127,216,253,253,170,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,81,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,237,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,252,253,209,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,211,33,0,0,0,0,21,31,31,31,31,6,0,0,0,0,0,0,0,0,0,0,0,0,128,224,253,209,33,0,0,0,0,117,213,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,122,0,0,24,185,231,250,253,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,103,251,253,155,5,0,93,200,253,253,253,252,230,250,253,177,14,0,0,0,0,0,0,0,0,0,0,0,146,253,234,59,0,16,190,253,253,253,144,122,0,216,253,145,0,0,0,0,0,0,0,0,0,0,0,41,241,253,214,0,76,227,253,253,204,109,4,5,140,249,253,145,0,0,0,0,0,0,0,0,0,0,0,47,253,253,217,16,189,253,253,192,25,0,0,25,253,253,238,48,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,193,12,0,0,32,208,253,225,50,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,245,93,0,44,62,208,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,17,185,253,253,253,253,148,162,162,226,253,253,252,175,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,253,253,253,253,253,253,253,223,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,253,253,253,215,199,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,216,253,253,253,173,99,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,131,174,254,254,254,188,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,113,209,251,253,253,253,253,253,253,173,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,253,253,253,253,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,253,253,253,230,54,58,235,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,203,0,0,214,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,153,223,190,124,48,20,0,8,219,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,125,253,253,245,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,117,159,240,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,227,253,253,253,253,253,253,248,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,225,253,253,253,253,253,253,253,253,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,223,253,253,251,166,49,61,252,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,94,94,39,0,0,0,169,254,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,211,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,152,179,104,33,0,0,156,253,253,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,196,17,158,251,253,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,218,253,241,216,253,253,253,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,6,157,253,253,253,253,196,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,173,253,191,109,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,183,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,241,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,174,252,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,241,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,179,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,246,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,183,195,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,63,186,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,67,162,220,252,252,246,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,252,252,253,252,252,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,243,169,155,252,241,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,252,71,0,67,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,225,21,0,105,252,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,75,0,2,179,248,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,146,6,53,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,33,177,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,252,224,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,253,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,241,166,253,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,212,16,138,252,248,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,243,89,0,12,178,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,208,0,0,0,67,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,240,61,0,0,2,123,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,152,45,45,45,168,252,235,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,252,252,252,253,203,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,133,209,252,252,81,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,255,253,255,253,255,253,255,139,254,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,253,251,253,251,253,251,196,83,56,0,0,0,0,0,0,0,0,0,0,0,29,85,141,253,255,253,169,168,169,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,226,168,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,86,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,196,169,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,254,253,254,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,83,139,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,198,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,196,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,28,0,0,0,0,0,0,29,85,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,196,169,168,169,168,169,168,197,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,254,253,254,253,254,253,254,196,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,83,253,251,253,251,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,255,253,169,97,24,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,253,252,252,252,252,245,140,47,47,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,173,253,252,252,252,252,253,252,252,252,221,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,108,202,160,244,253,252,252,252,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,42,21,44,252,252,252,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,87,159,138,202,253,253,253,253,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,252,252,252,231,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,129,160,160,169,252,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,221,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,253,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,13,47,26,0,0,0,0,0,0,0,0,76,248,253,236,44,0,0,0,0,0,0,0,0,0,0,0,13,172,252,221,0,0,0,0,0,0,0,0,0,199,253,252,69,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,95,0,0,0,0,0,0,0,0,116,253,252,162,0,0,0,0,0,0,0,0,0,0,0,26,221,252,252,168,0,0,0,0,0,0,0,0,116,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,32,218,253,255,154,0,0,0,0,0,0,9,181,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,253,236,161,67,47,43,30,78,194,252,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,252,252,252,252,247,228,252,252,252,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,252,253,252,252,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,168,252,252,253,252,168,137,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,99,136,233,254,254,254,254,255,218,136,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,253,253,253,253,253,253,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,173,238,200,150,82,148,200,200,216,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,47,0,0,0,0,0,0,78,253,253,245,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,244,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,24,44,220,253,253,253,135,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,201,253,253,253,253,253,253,253,199,137,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,253,253,253,253,253,253,253,253,253,253,198,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,253,253,253,199,140,59,166,180,253,253,253,196,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,249,200,85,13,0,0,0,2,121,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,10,0,0,0,0,0,0,30,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,101,148,107,4,0,0,0,0,0,0,0,2,112,253,253,244,31,0,0,0,0,0,0,0,0,0,0,46,225,253,253,175,107,0,0,0,0,0,22,113,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,69,253,253,253,253,252,118,66,66,102,183,214,253,253,253,206,39,0,0,0,0,0,0,0,0,0,0,0,8,150,253,253,253,253,253,253,253,253,253,253,253,253,199,48,0,0,0,0,0,0,0,0,0,0,0,0,0,8,151,253,253,253,253,253,253,253,253,253,249,139,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,122,137,253,253,253,253,253,145,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,255,163,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,115,253,253,250,176,0,0,0,0,60,86,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,168,253,253,240,117,0,0,0,0,53,240,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,3,114,253,253,224,31,0,0,0,0,0,94,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,253,128,0,0,0,0,0,0,37,235,253,141,0,0,0,0,0,0,0,0,0,0,0,0,31,215,253,253,207,29,0,0,0,0,0,0,0,223,253,141,0,0,0,0,0,0,0,0,0,0,0,9,216,253,248,130,30,0,0,0,0,0,0,0,0,223,253,141,0,0,0,0,0,0,0,0,0,0,0,98,253,248,119,0,0,0,0,0,0,0,0,0,0,223,253,163,3,0,0,0,0,0,0,0,0,0,0,136,253,246,180,180,180,96,56,56,56,13,0,0,0,223,253,174,4,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,253,253,253,201,146,41,0,223,253,112,0,0,0,0,0,0,0,0,0,0,0,3,131,185,185,185,197,253,253,253,253,253,253,232,131,246,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,55,55,86,179,201,253,253,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,89,200,253,253,220,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,241,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,209,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,194,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,236,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,204,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,252,243,240,240,240,240,241,183,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,156,252,252,252,252,252,253,252,242,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,67,81,39,39,110,173,248,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,160,83,27,27,241,252,180,27,27,27,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,252,252,252,253,252,252,252,252,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,253,252,252,252,146,119,119,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,197,133,133,255,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,128,253,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,156,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,221,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,170,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,183,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,87,163,254,158,144,67,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,204,253,253,253,253,254,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,236,154,197,254,253,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,246,173,9,0,5,158,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,57,0,0,0,97,254,253,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,247,254,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,248,253,254,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,205,253,254,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,177,254,253,241,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,244,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,223,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,199,95,0,0,0,12,89,202,253,229,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,252,213,122,122,139,253,253,253,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,201,253,253,253,253,255,253,253,250,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,167,223,253,253,254,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,67,143,177,33,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,34,87,143,129,253,254,253,253,253,229,105,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,193,252,252,252,252,252,253,252,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,252,252,252,252,154,153,153,248,252,252,246,39,0,0,0,0,0,0,0,0,0,0,0,0,0,21,230,230,230,163,121,24,0,0,0,10,159,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,245,252,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,252,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,241,252,252,187,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,195,252,252,228,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,253,253,164,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,176,243,253,252,226,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,200,236,252,252,253,197,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,227,252,252,252,252,217,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,184,252,252,252,252,156,32,56,56,65,165,118,165,146,15,0,0,0,0,0,0,0,0,0,0,0,79,250,252,252,252,218,201,205,230,252,252,252,252,252,252,252,66,0,0,0,0,0,0,0,0,0,0,37,221,252,252,252,252,249,247,252,253,252,252,252,252,252,242,113,6,0,0,0,0,0,0,0,0,0,0,176,252,252,252,252,252,252,252,252,253,252,252,248,208,122,52,0,0,0,0,0,0,0,0,0,0,0,0,123,239,252,252,252,252,252,252,252,210,146,66,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,190,166,166,243,185,142,46,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,184,225,254,255,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,253,254,187,176,176,238,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,171,20,2,0,0,65,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,30,0,0,0,0,31,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,192,21,0,0,53,175,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,254,236,233,233,250,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,148,246,254,235,254,254,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,39,185,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,222,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,212,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,236,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,235,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,250,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,236,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,251,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,229,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,125,171,254,254,254,254,254,228,125,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,253,253,253,253,253,253,253,253,252,231,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,213,142,142,142,142,45,107,142,217,253,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,19,12,0,0,0,0,0,0,0,169,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,187,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,224,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,221,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,217,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,135,160,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,70,135,221,251,229,154,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,135,223,254,254,206,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,134,237,254,227,155,71,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,231,254,246,157,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,169,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,75,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,212,134,126,126,126,83,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,233,254,255,254,254,254,163,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,52,52,52,52,221,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,56,245,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,69,165,254,251,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,7,0,11,99,154,226,255,254,201,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,210,186,228,254,251,163,109,69,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,128,159,108,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,57,144,243,144,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,253,240,197,197,135,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,164,90,140,139,139,139,153,252,252,252,226,225,187,113,0,0,0,0,0,0,0,0,0,0,48,241,251,75,0,0,0,0,0,0,0,0,0,0,114,113,113,63,0,0,0,0,0,0,0,0,0,13,123,227,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,250,141,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,234,131,57,57,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,178,252,252,252,253,240,197,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,28,65,90,140,215,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,110,240,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,179,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,54,229,253,251,200,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,57,144,169,253,252,252,202,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,206,142,56,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,28,28,28,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,141,253,240,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,230,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,233,253,253,149,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,230,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,189,253,251,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,239,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,239,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,164,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,147,0,0,0,0,0,95,220,231,217,113,84,0,0,0,0,0,0,0,0,0,0,0,0,2,175,253,253,31,0,0,8,123,249,253,253,253,253,253,252,117,2,0,0,0,0,0,0,0,0,0,0,32,244,253,253,29,0,17,171,253,253,228,117,106,106,202,253,253,35,0,0,0,0,0,0,0,0,0,0,0,171,253,253,51,4,215,253,242,170,14,0,0,42,223,253,177,12,0,0,0,0,0,0,0,0,0,0,0,87,253,253,174,126,253,253,164,0,0,0,40,224,253,176,15,0,0,0,0,0,0,0,0,0,0,0,0,36,194,253,253,253,253,253,134,84,182,146,228,253,199,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,235,253,253,253,253,253,253,253,253,249,139,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,185,142,253,234,218,253,154,135,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,151,235,238,151,138,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,143,212,254,254,254,254,254,254,237,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,184,254,254,254,218,218,218,231,254,254,245,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,214,254,254,234,83,0,0,0,53,249,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,254,253,129,0,0,0,33,216,254,254,231,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,255,250,177,177,177,177,210,145,78,78,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,250,254,254,254,254,254,215,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,179,192,192,205,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,211,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,221,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,205,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,130,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,62,232,255,203,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,114,215,252,124,32,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,253,167,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,104,236,218,52,0,40,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,235,248,169,222,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,249,253,253,198,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,153,221,253,230,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,159,241,253,194,123,40,222,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,177,253,246,132,45,0,0,36,223,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,247,242,82,0,0,0,0,0,206,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,163,0,0,0,0,0,0,206,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,154,0,0,0,0,0,0,107,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,217,16,0,0,0,0,0,56,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,184,9,0,0,0,0,188,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,240,143,33,21,0,22,212,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,80,248,253,226,179,228,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,37,123,247,253,125,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,236,218,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,160,253,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,254,254,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,255,244,153,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,254,254,254,249,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,254,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,254,254,254,254,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,251,254,184,44,101,145,207,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,193,254,246,43,0,0,0,113,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,133,0,0,0,0,113,254,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,229,254,254,108,0,0,0,0,41,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,188,18,0,0,0,0,68,254,255,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,240,254,254,106,0,0,0,0,0,113,254,230,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,134,7,0,0,0,0,23,205,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,26,0,0,0,4,63,205,254,238,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,119,105,105,148,200,255,254,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,254,254,254,248,162,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,251,253,246,246,253,191,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,91,61,0,0,66,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,96,96,96,255,253,253,253,253,195,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,191,236,251,251,251,253,251,251,251,251,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,64,158,251,253,251,251,251,251,253,251,251,251,251,205,31,0,0,0,0,0,0,0,0,0,0,0,0,28,236,251,211,189,89,109,225,251,253,243,188,188,188,119,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,193,100,0,80,240,251,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,255,153,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,62,62,161,253,251,251,251,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,251,251,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,212,251,251,251,223,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,240,158,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,31,0,159,170,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,31,0,0,8,141,248,251,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,31,0,0,0,0,142,251,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,31,0,0,0,0,8,31,253,248,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,31,0,0,0,0,0,0,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,91,0,0,0,0,24,96,255,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,236,91,20,4,32,88,251,241,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,251,251,251,206,142,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,110,244,251,253,251,251,235,188,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,172,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,190,190,255,184,208,253,253,253,253,207,24,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,253,252,252,252,252,252,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,216,216,217,216,216,216,216,244,252,252,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,233,252,187,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,232,252,212,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,201,252,252,139,60,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,232,252,252,162,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,217,253,252,238,75,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,239,252,253,178,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,251,252,252,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,231,253,253,253,249,132,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,108,211,228,239,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,195,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,152,253,217,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,178,252,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,153,175,0,0,0,69,229,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,247,217,130,131,246,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,154,252,252,252,252,252,210,92,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,161,252,252,217,131,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,150,172,255,67,0,0,0,24,144,208,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,175,253,253,253,70,0,0,0,205,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,193,253,253,231,52,1,0,5,143,253,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,9,202,253,253,215,26,0,0,0,109,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,9,220,253,253,221,28,0,0,0,46,238,253,253,96,3,0,0,0,0,0,0,0,0,0,0,0,0,26,202,253,253,213,59,0,0,0,0,160,253,253,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,249,84,0,0,0,0,86,246,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,253,253,113,0,0,0,0,0,145,253,253,253,210,97,63,49,0,0,0,0,0,0,0,0,0,0,181,253,253,232,18,48,6,6,6,89,234,253,253,253,253,253,253,196,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,79,250,253,253,253,253,253,253,253,253,253,253,253,183,155,85,51,19,0,0,0,0,0,0,0,0,0,0,0,5,5,101,109,109,109,170,253,253,253,203,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,253,253,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,245,253,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,237,253,253,253,122,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,252,132,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,241,228,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,61,183,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,155,216,253,252,252,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,242,252,235,170,47,21,106,235,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,232,252,139,14,0,0,41,225,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,235,14,0,18,141,232,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,253,253,253,254,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,159,168,168,168,196,252,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,252,212,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,255,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,246,199,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,250,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,245,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,96,155,253,253,253,153,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,190,244,251,253,251,251,251,251,230,170,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,221,251,251,251,253,251,251,251,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,234,251,251,251,251,189,188,188,204,251,253,251,236,27,0,0,0,0,0,0,0,0,0,0,0,0,139,118,253,251,251,113,94,0,0,0,24,193,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,194,255,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,251,253,251,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,236,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,182,236,251,251,253,184,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,193,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,255,253,253,229,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,190,244,251,253,247,220,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,221,251,251,251,253,140,0,0,0,0,96,127,127,48,0,0,0,0,0,0,0,0,0,0,32,64,162,234,251,251,251,251,31,8,0,0,40,124,244,251,251,94,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,211,94,60,138,0,139,217,253,251,251,211,35,0,0,0,0,0,0,0,0,36,214,253,253,253,255,253,253,253,253,255,253,253,253,253,255,253,126,0,0,0,0,0,0,0,0,0,0,194,251,251,251,251,253,251,251,251,251,253,251,251,251,251,221,101,31,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,251,251,251,251,253,251,251,219,126,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,251,251,196,188,189,168,31,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,94,173,251,251,95,94,94,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,211,255,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,172,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,251,253,253,203,204,253,253,220,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,253,253,178,14,51,198,253,253,248,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,232,11,0,0,11,136,251,253,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,251,253,253,169,0,0,0,0,0,132,253,253,185,2,0,0,0,0,0,0,0,0,0,0,0,0,5,143,253,253,181,0,0,0,0,0,0,6,194,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,55,0,0,0,0,0,0,0,74,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,178,4,0,0,0,0,0,0,0,86,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,56,0,0,0,0,0,0,0,0,30,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,29,0,0,0,0,0,0,0,0,30,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,29,0,0,0,0,0,0,0,0,30,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,29,0,0,0,0,0,0,0,1,150,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,111,2,0,0,0,0,0,0,82,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,111,0,0,0,0,0,96,211,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,15,176,253,253,252,183,183,101,156,183,247,253,253,253,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,48,199,253,253,253,253,253,253,253,253,253,244,148,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,182,253,253,253,253,253,253,253,249,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,75,146,253,226,135,135,28,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,225,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,115,128,128,153,250,253,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,200,249,253,253,253,254,253,250,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,134,253,254,233,162,233,253,254,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,66,0,92,110,175,255,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,88,4,0,89,248,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,213,253,254,117,82,226,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,209,254,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,247,253,253,227,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,243,238,254,196,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,253,81,21,173,254,249,222,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,146,254,193,5,0,0,95,231,253,250,217,102,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,69,0,0,0,0,31,100,223,253,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,254,18,0,0,0,0,0,0,31,169,254,237,26,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,18,0,0,0,0,0,0,0,33,255,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,101,8,0,0,0,0,0,0,20,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,254,253,222,146,128,69,24,37,37,146,254,180,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,203,251,253,253,253,254,233,253,253,246,183,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,149,162,227,254,253,253,220,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,48,146,234,255,152,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,100,209,253,253,253,253,206,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,115,253,253,253,253,249,144,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,161,253,253,253,222,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,115,253,253,236,133,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,244,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,253,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,193,253,253,110,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,223,35,0,0,24,20,55,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,134,0,32,93,184,220,253,218,159,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,179,253,212,20,0,188,253,253,253,253,253,253,245,91,4,0,0,0,0,0,0,0,0,0,0,0,0,26,233,253,101,0,0,124,253,253,206,194,233,253,253,253,182,3,0,0,0,0,0,0,0,0,0,0,0,0,180,253,65,0,0,17,55,87,10,0,32,135,250,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,114,249,66,3,0,0,0,0,0,0,0,0,139,253,253,217,0,0,0,0,0,0,0,0,0,0,0,0,87,221,77,125,25,0,0,0,0,0,0,0,182,253,253,229,20,0,0,0,0,0,0,0,0,0,0,0,4,132,11,183,206,104,9,0,38,104,104,144,234,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,249,249,251,253,253,253,253,253,253,147,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,227,253,253,238,239,253,253,253,253,177,75,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,145,145,183,177,198,120,37,37,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,80,130,185,254,254,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,134,219,249,254,254,254,254,254,254,208,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,219,250,254,211,193,108,23,17,63,117,198,254,209,0,0,0,0,0,0,0,0,0,0,0,0,11,174,249,248,213,80,8,0,0,0,0,0,0,27,254,227,0,0,0,0,0,0,0,0,0,0,0,11,178,254,175,49,12,0,0,0,0,0,0,0,7,157,251,100,0,0,0,0,0,0,0,0,0,0,0,146,254,162,8,0,0,0,0,0,0,0,0,34,202,254,193,0,0,0,0,0,0,0,0,0,0,0,96,250,172,8,0,0,0,0,0,0,0,46,132,229,254,254,179,0,0,0,0,0,0,0,0,0,0,6,225,228,36,0,0,0,0,0,0,6,97,250,254,254,254,252,108,0,0,0,0,0,0,0,0,0,0,80,254,133,1,0,0,0,0,40,128,206,254,254,254,254,252,128,0,0,0,0,0,0,0,0,0,0,0,25,248,254,135,88,15,70,95,232,254,254,254,150,206,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,139,249,254,254,254,254,254,255,227,149,56,152,255,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,96,96,96,96,60,8,6,22,212,254,221,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,213,254,217,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,152,255,221,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,213,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,190,242,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,231,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,175,246,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,158,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,175,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,227,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,225,252,199,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,189,252,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,162,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,189,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,169,252,252,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,252,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,134,247,253,227,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,193,252,252,228,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,237,252,252,229,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,207,252,252,197,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,207,252,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,252,133,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,241,252,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,221,104,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,109,15,0,0,0,0,0,0,0,218,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,35,0,0,0,0,0,0,32,227,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,35,0,0,0,0,0,0,129,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,144,252,35,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,35,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,35,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,252,35,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,35,0,0,0,0,0,84,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,35,0,0,0,0,0,145,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,35,0,0,0,0,11,175,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,138,0,0,0,0,37,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,179,0,0,0,0,120,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,211,31,0,0,0,182,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,252,252,227,134,73,115,242,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,252,252,253,252,252,252,253,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,252,252,253,252,252,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,255,222,62,207,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,179,242,252,210,119,25,0,144,253,252,247,134,73,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,71,31,0,0,0,41,72,227,252,252,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,166,229,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,154,254,218,247,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,174,238,92,11,224,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,222,27,0,0,224,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,14,0,0,6,227,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,240,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,212,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,161,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,242,254,236,243,81,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,215,20,232,254,203,193,159,131,161,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,52,0,18,154,207,254,254,254,199,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,253,185,3,0,0,101,241,241,241,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,235,253,221,107,0,0,103,248,253,253,188,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,220,41,0,0,104,246,253,101,25,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,122,0,0,0,189,253,237,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,175,6,0,0,100,244,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,241,253,162,0,65,116,243,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,188,183,244,253,253,253,253,218,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,253,253,253,253,253,215,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,203,194,241,253,209,206,253,253,228,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,71,138,71,11,0,202,253,65,15,95,236,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,65,0,0,170,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,65,0,0,83,253,245,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,81,0,0,35,242,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,218,231,125,0,0,163,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,248,232,60,10,170,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,197,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,144,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,146,253,253,172,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,80,146,146,190,254,255,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,177,230,253,253,253,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,121,222,247,253,253,253,253,220,139,34,32,5,0,0,0,0,0,0,0,0,0,0,0,0,0,53,151,230,253,253,253,253,243,168,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,224,117,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,228,253,253,253,230,51,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,253,253,253,253,108,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,230,253,253,253,187,114,82,235,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,237,135,21,5,0,0,17,239,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,251,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,20,0,0,0,0,0,0,2,51,229,253,138,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,229,124,0,0,0,0,0,45,253,253,220,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,250,86,0,0,0,162,232,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,201,253,188,141,145,249,252,253,253,149,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,201,253,253,253,253,253,249,114,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,210,253,253,253,216,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,209,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,210,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,240,242,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,162,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,244,6,0,0,0,0,0,0,18,69,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,220,254,218,0,0,0,0,0,66,168,238,254,168,10,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,94,0,0,0,0,76,252,254,254,254,254,170,2,0,0,0,0,0,0,0,0,0,0,0,0,6,254,176,2,0,0,0,30,225,254,164,77,187,254,243,4,0,0,0,0,0,0,0,0,0,0,0,0,6,254,173,0,0,0,0,55,254,240,28,96,217,255,124,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,206,11,0,0,0,55,254,242,129,247,254,228,26,0,0,0,0,0,0,0,0,0,0,0,0,0,3,198,254,199,141,141,89,127,254,254,254,254,225,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,237,254,254,254,254,254,254,254,208,142,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,146,166,254,154,146,60,38,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,14,67,156,246,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,147,229,214,224,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,240,174,116,78,131,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,210,23,0,0,0,130,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,100,0,0,0,16,235,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,249,60,0,0,0,20,254,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,233,0,0,0,0,103,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,233,0,0,0,0,118,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,214,122,0,0,0,10,213,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,239,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,221,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,237,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,128,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,240,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,227,253,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,179,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,252,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,252,202,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,0,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,191,128,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,123,245,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,148,252,252,252,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,252,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,253,252,190,138,252,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,247,176,9,27,229,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,107,53,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,22,173,252,244,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,99,108,183,252,252,252,217,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,252,252,253,252,252,252,252,253,221,211,211,211,107,27,0,0,0,0,0,0,0,0,0,0,0,0,85,253,243,167,254,253,253,225,211,237,253,253,253,253,255,253,245,49,0,0,0,0,0,0,0,0,0,0,128,252,189,80,253,252,201,21,0,37,63,116,168,203,253,252,252,84,0,0,0,0,0,0,0,0,0,0,7,234,247,241,253,245,27,0,0,0,0,0,0,9,83,126,118,7,0,0,0,0,0,0,0,0,0,0,0,232,252,252,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,208,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,170,0,0,57,29,0,0,0,29,0,57,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,114,198,255,255,255,255,226,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,29,170,198,226,255,255,255,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,198,114,57,0,0,0,114,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,29,0,0,0,0,0,0,0,0,0,198,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,86,0,0,0,0,0,0,0,29,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,226,86,57,0,0,0,57,198,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,226,255,255,255,255,255,198,198,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,255,255,255,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,24,87,159,253,211,138,76,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,47,57,161,161,236,252,253,252,252,252,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,51,209,252,253,252,252,252,252,253,252,252,252,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,252,245,160,160,160,244,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,252,253,231,137,137,32,21,0,0,85,250,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,116,53,0,0,0,0,0,0,0,93,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,220,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,191,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,253,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,245,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,100,226,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,212,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,158,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,72,107,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,198,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,240,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,210,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,163,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,25,25,31,156,253,253,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,135,240,253,253,254,253,253,253,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,234,253,253,253,253,254,253,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,192,72,179,253,254,253,253,253,253,233,122,0,0,0,0,0,0,0,0,0,0,0,0,7,148,234,253,198,63,63,237,253,254,200,60,154,253,253,233,194,18,0,0,0,0,0,0,0,0,0,0,65,253,253,106,12,110,247,253,253,245,21,0,33,229,253,253,253,24,0,0,0,0,0,0,0,0,0,0,42,253,253,228,218,247,253,253,207,34,0,0,19,209,253,253,253,24,0,0,0,0,0,0,0,0,0,0,3,166,253,253,253,253,253,154,18,0,0,0,5,136,253,253,211,14,0,0,0,0,0,0,0,0,0,0,0,25,155,253,253,213,86,1,0,0,0,0,0,32,225,213,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,82,150,172,105,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,252,252,252,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,231,158,216,242,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,135,169,169,123,28,121,222,36,0,0,181,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,252,252,252,252,143,35,35,0,0,0,181,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,197,100,242,110,0,0,0,0,14,201,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,7,144,252,204,57,41,5,0,0,0,13,174,252,193,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,144,252,240,114,9,0,0,0,83,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,146,252,252,179,57,0,131,243,252,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,110,235,252,247,128,247,252,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,235,253,255,241,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,180,252,253,230,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,252,235,253,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,237,252,156,44,149,252,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,235,232,89,7,0,4,175,252,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,133,0,0,0,0,111,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,48,0,0,0,0,5,174,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,224,114,97,97,98,109,239,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,227,252,252,252,252,253,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,131,177,252,252,253,241,131,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,29,0,0,0,57,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,57,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,86,0,0,0,0,114,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,29,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,0,0,0,0,0,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,0,0,0,0,29,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,198,141,114,86,86,170,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,255,255,255,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,86,0,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,168,197,168,155,83,83,83,119,174,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,254,254,254,254,254,254,219,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,169,109,180,180,180,142,95,59,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,121,0,0,25,52,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,161,148,220,236,254,241,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,237,254,254,254,254,248,216,254,236,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,241,254,246,200,116,37,6,165,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,153,0,0,0,0,72,254,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,177,129,7,0,0,0,0,15,216,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,14,16,0,0,0,0,0,0,0,0,0,0,109,254,241,0,0,0,0,0,0,0,0,0,0,0,0,59,230,213,13,0,0,0,0,0,0,0,0,2,176,254,176,0,0,0,0,0,0,0,0,0,0,0,0,74,253,254,213,116,6,0,0,0,0,0,17,144,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,96,211,253,254,213,163,96,96,66,107,214,254,254,238,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,243,254,254,254,254,254,254,253,240,156,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,101,185,237,167,167,98,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,190,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,89,140,217,185,46,0,32,213,253,243,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,141,215,253,253,253,253,193,77,213,253,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,253,254,233,149,72,72,254,253,253,214,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,124,7,0,0,53,255,254,217,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,222,253,152,4,0,56,248,254,202,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,191,254,220,152,245,253,172,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,251,253,253,240,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,116,131,253,242,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,225,18,10,204,254,213,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,159,0,0,20,215,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,108,0,0,0,130,253,204,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,255,215,11,0,0,0,236,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,107,0,0,62,245,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,248,211,128,208,253,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,231,253,253,254,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,149,253,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,138,138,139,138,147,230,231,214,172,138,139,138,59,0,0,0,0,0,0,0,0,0,0,0,11,57,141,232,253,253,254,253,253,253,254,253,253,253,254,253,249,132,0,0,0,0,0,0,0,0,119,184,215,253,254,236,160,160,161,77,69,69,69,69,69,69,69,169,253,160,0,0,0,0,0,0,0,0,255,254,254,195,68,0,0,0,0,0,0,0,0,0,0,0,19,204,254,136,0,0,0,0,0,0,0,0,82,115,73,15,0,0,0,0,0,0,0,0,0,0,0,0,70,253,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,187,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,184,254,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,236,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,138,105,47,47,123,138,139,138,224,253,197,47,47,30,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,254,253,253,253,254,253,253,253,254,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,13,69,69,94,160,160,160,220,253,253,185,161,160,152,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,249,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,122,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,50,50,50,84,84,84,84,149,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,32,112,241,245,245,245,253,253,253,253,237,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,146,185,253,224,198,126,110,181,181,92,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,138,40,52,18,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,234,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,230,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,43,0,0,0,0,0,0,110,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,70,0,0,0,0,15,100,186,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,227,125,79,174,182,215,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,233,244,253,253,239,226,129,85,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,83,83,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,227,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,81,0,0,0,0,0,0,0,41,227,237,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,131,0,0,0,0,0,0,5,171,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,105,0,0,0,0,0,0,113,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,243,233,17,0,0,0,0,0,105,251,199,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,70,0,0,0,0,0,76,238,238,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,230,253,135,7,0,0,0,0,37,240,244,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,180,100,0,0,0,0,58,222,255,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,253,246,128,41,0,0,32,229,244,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,187,249,253,251,166,63,238,247,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,78,176,203,254,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,161,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,240,212,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,244,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,243,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,195,165,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,213,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,225,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,211,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,187,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,196,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,78,230,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,229,253,253,253,173,63,14,20,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,228,253,253,253,253,253,205,212,202,147,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,239,91,55,55,152,239,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,164,0,0,0,0,79,240,253,234,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,80,0,0,0,0,0,36,181,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,80,0,0,0,0,0,0,94,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,215,10,0,0,0,0,0,0,94,253,241,16,0,0,0,0,0,0,0,0,0,0,0,0,0,11,196,253,98,0,0,0,0,0,34,106,221,253,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,159,112,112,112,145,236,241,253,253,154,14,0,0,0,0,0,0,0,0,0,0,0,0,0,18,249,253,253,253,253,253,253,253,253,216,93,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,253,253,253,253,165,129,129,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,254,254,109,213,255,254,146,175,119,110,255,254,250,58,0,0,0,0,0,0,0,0,0,0,0,66,231,253,253,253,253,253,253,253,253,253,253,253,253,253,253,165,9,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,190,19,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,188,160,160,222,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,200,253,253,200,61,61,61,61,61,19,0,0,53,253,253,252,124,0,0,0,0,0,0,0,0,0,0,0,200,253,253,61,0,0,0,0,0,0,0,0,101,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,200,253,165,4,0,0,0,0,0,0,0,24,197,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,182,253,48,0,0,0,0,0,0,0,0,182,253,253,208,25,0,0,0,0,0,0,0,0,0,0,0,0,23,123,3,0,0,0,0,0,0,0,65,239,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,242,253,253,218,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,245,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,244,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,221,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,237,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,215,253,253,171,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,207,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,119,232,233,232,215,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,99,211,252,252,253,252,252,170,64,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,252,252,253,252,252,252,252,247,211,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,253,253,243,211,124,211,124,222,253,254,253,200,67,0,0,0,0,0,0,0,0,0,0,0,0,84,242,253,252,130,82,0,0,0,0,16,63,168,231,252,237,111,0,0,0,0,0,0,0,0,0,0,73,246,252,170,91,2,0,0,0,0,0,0,0,0,95,233,252,200,0,0,0,0,0,0,0,0,0,0,197,236,189,0,0,0,0,0,0,0,0,0,0,0,0,197,252,182,0,0,0,0,0,0,0,0,0,116,249,189,0,0,0,0,0,0,0,0,0,0,0,0,71,249,252,147,0,0,0,0,0,0,0,0,8,201,253,128,0,0,0,0,0,0,0,0,0,0,0,8,201,253,216,18,0,0,0,0,0,0,0,0,123,252,236,21,0,0,0,0,0,0,0,0,0,0,0,157,252,245,82,0,0,0,0,0,0,0,0,0,245,252,134,0,0,0,0,0,0,0,0,0,0,32,171,253,245,80,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,41,190,252,243,82,0,0,0,0,0,0,0,0,0,0,0,253,252,179,35,0,0,0,0,0,0,62,185,232,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,80,243,253,253,209,148,69,87,114,236,255,253,232,140,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,168,224,252,253,189,246,252,252,239,132,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,65,127,190,176,126,82,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,165,191,191,191,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,22,22,66,246,253,234,246,253,251,119,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,233,253,253,253,254,170,7,57,128,254,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,54,229,254,253,253,253,253,237,37,0,0,0,60,227,250,115,0,0,0,0,0,0,0,0,0,0,0,31,219,254,248,97,13,219,254,45,0,0,0,0,0,116,251,201,7,0,0,0,0,0,0,0,0,0,0,163,253,218,53,0,102,253,218,0,0,0,0,0,0,0,153,253,78,0,0,0,0,0,0,0,0,0,131,252,248,91,0,0,128,253,95,0,0,0,0,0,0,0,75,253,201,0,0,0,0,0,0,0,0,29,233,253,163,0,0,0,52,163,14,0,0,0,0,0,0,0,22,253,253,0,0,0,0,0,0,0,0,43,253,191,14,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,165,0,0,0,0,0,0,0,0,167,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,130,0,0,0,0,0,0,0,0,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,232,28,0,0,0,0,0,0,0,0,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,4,188,253,181,0,0,0,0,0,0,0,0,0,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,140,253,213,28,0,0,0,0,0,0,0,0,0,122,253,224,36,0,0,0,0,0,0,0,0,0,27,150,255,253,82,0,0,0,0,0,0,0,0,0,0,0,174,254,228,105,0,0,0,0,0,0,15,96,219,255,231,97,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,253,174,86,86,86,86,192,212,253,253,138,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,153,241,254,253,253,253,253,255,237,179,56,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,103,190,190,190,190,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,163,73,5,0,0,0,99,254,228,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,212,254,102,0,33,33,208,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,108,0,0,0,119,253,221,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,238,254,108,0,0,0,163,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,43,0,0,0,163,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,234,13,0,0,27,255,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,249,253,129,0,0,0,111,254,253,198,145,145,204,183,40,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,91,0,0,68,217,254,253,253,253,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,161,109,186,241,253,254,253,244,228,144,144,125,8,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,254,253,253,253,253,254,149,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,254,255,254,191,238,254,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,160,56,3,199,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,177,62,13,0,0,199,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,201,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,250,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,249,74,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,229,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,181,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,254,250,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,224,254,195,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,255,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,221,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,248,254,233,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,255,255,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,210,254,240,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,138,191,212,253,253,253,191,65,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,68,161,236,252,253,252,252,252,252,253,252,186,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,253,252,252,252,252,253,252,252,154,7,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,252,252,150,45,45,45,45,117,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,116,22,0,0,0,0,0,3,169,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,53,255,253,253,211,138,24,19,0,0,22,202,253,253,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,252,253,236,161,161,244,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,252,252,252,253,252,252,252,252,253,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,122,252,252,252,253,252,252,252,252,253,231,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,233,252,252,252,252,253,252,252,252,252,253,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,114,243,255,253,205,74,0,231,209,116,116,220,255,253,253,46,0,0,0,0,0,0,0,0,0,0,0,66,236,252,253,223,56,0,0,0,0,0,0,22,253,252,252,45,0,0,0,0,0,0,0,0,0,0,34,234,252,252,205,25,0,0,0,0,0,0,26,205,253,252,233,33,0,0,0,0,0,0,0,0,0,0,140,252,252,210,21,0,0,0,0,0,0,26,150,252,253,252,141,0,0,0,0,0,0,0,0,0,0,74,244,252,210,22,0,0,0,0,0,0,74,205,252,252,253,210,6,0,0,0,0,0,0,0,0,0,0,139,253,253,46,0,0,0,7,24,128,255,253,253,253,253,168,42,0,0,0,0,0,0,0,0,0,0,0,138,252,252,177,109,162,161,186,252,252,253,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,252,252,253,252,252,252,252,253,240,151,69,6,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,252,252,252,253,252,252,252,210,98,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,137,189,242,243,137,106,22,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,232,254,144,133,128,24,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,254,253,238,123,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,136,159,159,217,218,238,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,109,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,194,226,253,253,216,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,254,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,254,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,82,145,154,253,249,143,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,161,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,210,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,222,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,253,239,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,85,231,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,41,151,253,253,253,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,74,0,120,160,235,235,254,253,253,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,230,249,253,253,253,254,243,69,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,40,225,195,253,253,137,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,148,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,232,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,232,253,253,253,248,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,81,234,253,253,228,124,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,254,253,253,173,14,201,245,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,253,229,143,186,136,0,159,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,224,253,232,42,0,0,0,0,54,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,253,245,44,0,0,0,0,0,68,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,135,253,252,156,0,0,0,0,0,0,187,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,155,0,0,0,0,0,0,0,187,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,39,227,255,150,0,0,0,0,0,0,0,68,254,235,49,0,0,0,0,0,0,0,0,0,0,0,0,40,153,253,202,4,0,0,0,0,0,0,0,194,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,80,0,0,0,0,0,0,0,123,248,184,64,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,196,11,0,0,0,0,0,0,123,247,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,186,0,0,0,0,0,0,64,234,253,164,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,186,0,0,0,0,0,90,250,205,157,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,186,0,0,26,119,174,213,158,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,229,161,161,219,253,253,242,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,252,240,169,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,162,253,253,161,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,118,207,254,254,254,135,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,97,220,250,253,253,253,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,234,253,253,253,253,253,253,253,253,253,243,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,213,204,252,131,61,228,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,219,219,96,82,22,9,80,0,0,220,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,203,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,250,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,138,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,253,253,202,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,211,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,83,217,220,183,183,242,253,213,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,176,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,229,253,253,213,226,253,253,253,248,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,253,233,96,3,175,253,253,253,251,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,103,0,60,241,253,253,253,253,253,143,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,156,156,156,156,186,254,254,255,171,156,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,253,253,242,248,241,250,253,247,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,167,174,193,253,130,36,60,30,66,131,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,57,6,0,0,0,0,94,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,235,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,186,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,247,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,226,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,171,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,241,250,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,108,0,0,0,0,0,0,0,19,79,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,247,143,100,77,85,136,151,234,239,212,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,103,223,253,253,254,253,253,253,215,96,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,123,156,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,85,173,227,252,252,252,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,253,236,231,237,252,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,84,21,0,48,242,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,42,42,0,0,0,0,167,253,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,245,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,230,27,119,148,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,97,0,127,252,252,173,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,181,252,244,0,0,64,152,240,253,237,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,147,0,0,0,0,35,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,252,252,235,45,0,0,0,45,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,253,219,11,0,55,192,255,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,252,252,252,253,205,146,232,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,253,252,128,47,223,253,252,252,252,244,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,231,16,0,35,200,252,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,236,54,0,0,0,7,121,50,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,102,144,192,241,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,171,253,253,253,254,253,223,71,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,244,253,253,253,253,254,253,253,253,152,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,250,253,253,250,197,121,73,155,253,253,253,121,28,133,44,0,0,0,0,0,0,0,0,0,0,0,66,250,253,253,251,116,0,0,0,23,152,253,253,253,253,253,227,22,0,0,0,0,0,0,0,0,0,0,100,253,253,253,117,0,0,0,0,92,220,253,253,253,253,253,154,7,0,0,0,0,0,0,0,0,0,0,52,249,253,253,80,12,45,122,233,247,253,253,253,211,79,22,6,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,253,253,254,253,253,250,185,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,253,253,253,253,253,255,233,176,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,253,253,253,253,253,129,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,197,254,254,254,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,227,253,253,219,58,215,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,239,54,16,206,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,249,69,0,146,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,231,20,175,249,253,253,215,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,252,237,253,253,253,250,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,253,253,253,246,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,253,253,253,253,129,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,186,253,181,56,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,194,151,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,196,75,0,0,123,249,254,152,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,247,254,253,204,33,143,254,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,254,254,254,254,244,238,254,254,205,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,254,254,244,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,231,255,254,254,254,185,75,254,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,255,254,254,254,251,61,42,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,254,254,253,111,0,111,254,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,189,254,255,254,254,202,0,0,146,254,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,251,202,33,0,0,104,254,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,239,0,0,0,0,146,254,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,254,254,254,241,42,42,42,42,164,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,254,254,254,254,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,254,254,254,254,254,254,254,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,149,248,254,254,254,254,238,133,189,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,26,26,26,26,20,0,39,249,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,242,254,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,197,249,164,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,221,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,81,188,194,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,208,255,254,254,169,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,159,39,203,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,239,181,0,0,65,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,122,0,0,60,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,191,59,0,0,71,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,254,206,69,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,237,248,214,251,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,251,232,93,0,60,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,116,85,0,0,0,182,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,218,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,223,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,21,0,0,0,0,211,248,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,204,58,0,0,94,249,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,242,137,173,248,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,224,254,254,236,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,255,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,162,254,210,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,217,254,193,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,227,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,241,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,152,0,0,0,31,78,130,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,239,251,33,0,11,149,242,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,225,5,121,241,254,254,254,254,241,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,96,126,254,254,254,252,171,146,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,254,254,250,148,54,44,229,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,254,241,67,7,100,250,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,254,239,164,216,254,254,238,145,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,254,254,254,254,254,237,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,254,254,254,194,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,132,254,228,193,160,50,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,250,131,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,248,225,194,131,122,38,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,251,243,243,252,253,249,253,253,253,239,183,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,107,0,0,78,84,53,84,164,177,254,253,250,107,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,116,242,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,103,222,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,85,154,254,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,74,192,244,249,253,253,254,253,253,253,195,49,0,0,0,0,0,0,0,0,0,0,0,0,0,5,106,227,253,253,253,253,239,224,233,178,134,243,253,236,119,1,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,253,197,48,0,17,7,0,44,204,253,253,114,0,0,0,0,0,0,0,0,0,0,0,14,132,126,42,0,0,0,0,0,0,0,0,0,0,119,234,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,239,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,208,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,0,0,0,0,0,0,0,0,13,83,193,144,4,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,0,0,0,0,0,0,0,0,66,253,253,253,210,165,82,19,3,0,0,0,0,0,0,0,0,140,253,253,0,0,0,0,0,0,0,0,44,243,253,253,253,253,253,253,189,178,86,85,51,0,0,7,117,250,253,221,0,0,0,0,0,0,0,0,0,106,240,253,253,253,253,253,253,253,254,253,249,244,244,245,253,253,215,30,0,0,0,0,0,0,0,0,0,0,68,193,240,253,253,253,253,253,254,253,253,253,253,240,224,113,19,0,0,0,0,0,0,0,0,0,0,0,0,0,37,141,190,253,253,253,219,169,159,159,107,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,251,235,255,184,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,128,42,13,54,160,202,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,194,128,2,0,0,0,0,6,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,197,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,199,5,0,0,0,0,0,0,0,136,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,160,0,0,0,0,0,0,0,0,227,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,95,0,0,0,0,0,0,0,99,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,169,0,0,0,0,0,0,2,195,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,223,0,0,0,0,0,14,142,177,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,218,78,0,0,0,17,155,176,5,247,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,235,104,46,103,208,229,24,46,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,200,212,200,79,0,0,69,239,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,248,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,213,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,219,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,172,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,202,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,192,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,226,204,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,234,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,237,141,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,234,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,246,152,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,89,194,206,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,33,253,250,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,244,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,234,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,16,251,224,84,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,214,172,0,0,0,0,0,0,20,148,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,2,109,253,253,235,0,0,0,0,0,1,161,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,66,242,253,253,156,0,0,0,0,0,65,253,253,248,210,31,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,21,0,0,0,0,0,244,253,253,235,32,0,0,0,0,0,0,0,0,0,0,0,10,227,247,253,226,52,3,0,0,1,11,187,252,253,244,27,0,0,0,0,0,0,0,0,0,0,0,68,200,253,253,179,67,132,105,49,49,113,253,253,253,213,17,0,0,0,0,0,0,0,0,0,0,0,196,237,253,253,253,226,231,253,253,253,253,253,253,253,253,164,87,2,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,205,5,0,0,0,0,0,0,0,0,0,254,253,253,244,199,199,199,241,253,253,253,253,253,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,116,161,113,45,0,0,18,216,253,253,253,150,54,54,157,185,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,157,8,0,0,0,4,16,62,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,221,253,253,171,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,98,150,253,253,157,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,137,226,253,253,195,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,161,253,253,253,146,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,238,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,155,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,145,65,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,150,150,229,255,254,237,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,62,138,232,253,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,252,250,253,231,134,97,10,65,171,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,233,126,26,0,0,0,11,205,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,236,253,224,51,0,0,0,0,0,42,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,253,253,31,0,0,0,0,0,0,135,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,216,235,62,4,0,0,0,0,0,49,233,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,43,0,0,0,0,0,0,0,192,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,193,253,186,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,241,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,204,253,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,131,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,128,149,253,253,159,138,139,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,236,252,253,252,252,214,248,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,252,252,252,184,110,69,13,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,160,252,252,176,45,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,252,168,35,0,0,0,0,43,240,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,252,209,32,0,0,0,0,0,104,253,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,13,215,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,252,199,0,0,0,0,0,0,70,252,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,252,116,0,0,0,0,9,166,220,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,231,116,116,157,230,233,252,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,255,253,253,253,253,255,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,207,206,174,133,153,128,252,252,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,249,63,155,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,214,13,207,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,202,240,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,211,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,144,163,172,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,180,253,242,187,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,253,201,36,0,0,0,0,0,9,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,207,15,0,0,0,3,23,115,192,251,205,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,165,0,0,0,0,58,253,253,249,174,88,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,165,0,0,0,88,231,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,169,1,0,4,213,254,217,40,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,109,0,145,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,253,251,188,237,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,158,253,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,242,254,254,241,67,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,236,253,255,253,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,254,253,253,154,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,131,149,250,253,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,135,0,73,223,253,223,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,221,0,0,87,223,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,171,252,127,2,11,208,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,235,253,172,163,253,238,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,62,186,186,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,190,97,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,244,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,246,254,235,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,208,212,116,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,245,225,61,58,253,236,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,182,32,0,7,236,231,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,206,8,0,73,254,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,66,0,85,232,246,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,160,67,223,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,234,246,234,254,148,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,59,150,254,239,212,79,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,61,254,254,230,65,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,151,222,236,244,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,154,254,249,186,102,50,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,237,249,91,0,0,29,230,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,249,108,0,0,0,0,209,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,172,24,0,0,36,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,162,250,211,95,141,188,240,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,77,235,254,254,254,121,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,172,216,104,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,110,109,191,191,255,253,170,253,192,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,176,237,253,252,252,252,253,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,99,252,252,253,252,252,252,253,252,252,252,253,231,72,0,0,0,0,0,0,0,0,0,0,0,1,84,191,252,252,252,253,252,252,252,253,252,252,252,253,252,215,1,0,0,0,0,0,0,0,0,0,0,99,252,252,252,252,252,253,252,252,252,253,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,21,201,252,252,252,252,252,253,189,76,35,35,180,252,252,253,252,252,108,0,0,0,0,0,0,0,0,16,181,252,252,252,252,252,148,72,10,0,0,0,63,241,168,253,252,252,211,0,0,0,0,0,0,0,0,109,252,252,252,252,210,108,46,0,0,0,0,0,0,181,252,253,252,252,168,0,0,0,0,0,0,0,0,255,253,253,253,206,20,0,0,0,0,0,0,0,0,0,84,110,253,253,170,0,0,0,0,0,0,0,0,253,252,252,252,20,0,0,0,0,0,0,0,0,0,0,0,233,252,252,252,0,0,0,0,0,0,0,0,253,252,252,148,0,0,0,0,0,0,0,0,0,0,0,21,253,252,252,231,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,108,0,0,0,0,0,0,0,0,255,253,217,0,0,0,0,0,0,0,0,0,0,32,212,253,255,253,237,62,0,0,0,0,0,0,0,0,253,252,143,31,0,0,0,0,0,0,53,73,135,227,252,252,253,252,215,0,0,0,0,0,0,0,0,0,232,252,252,211,119,37,37,37,37,161,232,252,253,252,252,252,253,241,102,0,0,0,0,0,0,0,0,0,109,252,252,252,252,252,252,252,253,252,252,252,253,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,63,238,253,253,253,253,253,253,255,253,253,253,255,253,253,253,255,119,0,0,0,0,0,0,0,0,0,0,0,72,231,252,252,252,252,252,253,252,252,252,253,252,252,210,35,5,0,0,0,0,0,0,0,0,0,0,0,0,155,215,252,252,252,252,253,252,252,252,237,215,112,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,108,108,190,253,252,252,168,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,255,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,244,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,140,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,251,255,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,248,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,239,254,237,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,219,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,183,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,255,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,190,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,162,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,140,250,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,255,183,146,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,253,253,253,253,216,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,115,253,253,241,139,181,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,238,103,0,17,146,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,239,253,253,81,0,0,98,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,116,253,253,177,29,0,0,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,222,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,240,253,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,222,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,213,253,205,32,100,200,200,191,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,148,243,253,253,253,253,250,150,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,246,82,253,253,253,253,253,253,253,244,140,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,251,109,156,156,156,156,156,220,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,109,0,0,0,0,0,7,208,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,210,253,217,16,0,0,0,0,0,131,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,103,0,0,0,0,0,141,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,225,253,252,249,180,141,141,141,232,253,245,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,227,253,253,253,253,253,253,253,246,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,145,198,253,253,253,253,165,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,180,254,255,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,144,251,253,253,244,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,201,253,253,253,127,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,204,253,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,249,142,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,166,252,253,253,227,57,78,78,92,231,96,78,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,176,145,253,253,253,253,253,253,218,140,9,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,253,253,253,253,253,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,253,253,253,253,253,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,253,239,238,237,242,253,253,253,250,98,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,193,12,0,0,70,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,154,62,62,62,208,253,253,253,246,22,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,253,253,253,253,253,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,253,253,253,253,253,253,253,161,53,0,0,0,0,0,0,0,0,0,0,0,0,37,199,219,253,253,253,253,253,253,253,253,253,250,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,99,183,253,253,253,253,253,253,117,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,194,196,254,254,254,255,152,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,243,253,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,194,253,253,253,201,188,143,155,220,253,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,227,253,219,97,34,7,0,0,0,19,195,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,83,229,253,199,10,0,0,0,0,0,0,162,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,34,227,253,163,7,0,0,0,0,0,14,86,251,253,236,32,0,0,0,0,0,0,0,0,0,0,0,0,137,253,199,7,0,0,0,0,0,78,216,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,85,0,0,0,0,8,123,248,253,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,155,0,0,0,36,205,253,253,248,157,242,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,29,233,252,249,249,249,251,253,233,141,20,90,253,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,217,237,225,253,250,130,29,0,13,237,253,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,94,22,0,0,0,102,253,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,248,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,206,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,231,245,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,213,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,191,128,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,64,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,128,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,64,64,128,191,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,198,255,255,255,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,170,141,141,86,86,114,170,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,198,170,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,114,170,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,141,0,0,0,0,0,0,0,86,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,29,0,0,0,0,0,0,170,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,255,198,86,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,255,255,198,170,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,114,170,170,170,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,176,239,253,254,255,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,170,239,254,254,245,163,58,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,121,165,224,254,254,190,119,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,254,254,243,187,86,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,234,254,246,129,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,224,254,172,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,244,237,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,234,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,245,76,132,165,176,205,108,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,254,254,254,254,254,254,254,252,202,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,254,228,174,62,89,49,66,129,234,233,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,208,169,24,0,0,0,0,0,0,84,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,224,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,154,254,234,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,25,0,0,0,0,21,203,254,246,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,129,68,37,87,160,232,254,244,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,199,254,254,254,254,254,224,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,158,221,240,199,142,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,161,129,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,174,253,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,224,252,253,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,246,252,252,253,231,54,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,149,253,253,253,243,168,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,203,253,252,252,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,209,252,253,252,202,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,209,252,252,253,172,33,0,0,0,0,0,0,0,0,60,25,0,0,0,0,0,0,0,0,0,0,22,244,252,252,252,128,8,0,0,0,0,0,0,0,53,179,244,236,94,0,0,0,0,0,0,0,0,0,87,253,253,245,126,0,0,0,0,0,0,5,108,233,253,255,253,253,253,96,0,0,0,0,0,0,0,0,159,252,252,139,0,0,0,0,0,0,26,136,252,252,252,253,252,252,252,231,0,0,0,0,0,0,0,0,253,252,252,45,0,0,0,0,0,0,170,252,252,252,252,253,252,252,227,100,0,0,0,0,0,0,0,0,253,252,195,9,0,0,0,0,0,0,253,252,252,252,252,253,252,227,50,0,0,0,0,0,0,0,0,0,201,252,246,42,0,0,0,0,0,0,253,252,252,252,252,253,231,48,0,0,0,0,0,0,0,0,0,0,76,253,253,211,34,24,97,138,180,253,255,253,253,253,243,158,0,0,0,0,0,0,0,0,0,0,0,0,9,121,252,252,252,253,252,252,252,252,253,252,218,112,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,152,240,252,253,252,252,252,221,184,110,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,98,161,160,160,66,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,118,252,227,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,205,253,240,183,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,124,244,252,245,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,172,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,95,116,116,116,116,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,190,5,11,149,253,253,253,253,255,253,253,253,253,255,159,24,5,0,0,0,0,0,0,0,0,0,138,252,252,83,193,253,252,252,235,206,207,206,174,185,206,253,252,252,135,5,0,0,0,0,0,0,0,0,101,227,252,252,252,247,183,100,44,0,0,0,0,0,0,69,102,252,252,107,0,0,0,0,0,0,0,0,0,67,252,252,252,230,0,0,0,0,0,0,0,0,0,0,9,102,252,232,0,0,0,0,0,0,0,0,0,26,221,252,252,230,0,0,0,0,0,0,0,0,0,0,0,7,211,252,0,0,0,0,0,0,0,0,0,0,32,229,253,255,159,17,0,0,0,0,0,0,0,0,36,170,245,126,0,0,0,0,0,0,0,0,0,0,0,118,248,253,252,227,120,47,0,0,34,47,47,162,219,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,63,131,227,252,252,252,185,184,234,252,252,253,240,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,160,236,252,253,252,252,252,168,98,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,22,23,22,22,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,203,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,157,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,225,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,168,0,0,0,14,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,241,253,49,0,0,44,229,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,180,2,0,10,213,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,174,0,0,171,253,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,255,254,78,0,121,255,254,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,243,42,41,244,254,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,247,84,166,253,254,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,238,253,247,251,253,254,253,225,109,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,185,253,253,253,231,111,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,139,159,253,211,138,139,212,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,68,161,161,244,253,252,252,252,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,252,252,205,69,69,135,252,253,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,252,252,252,116,21,0,0,93,252,253,252,195,9,0,0,0,0,0,0,0,0,0,0,0,0,136,250,253,252,168,43,2,0,0,0,144,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,252,135,0,0,0,0,5,138,253,253,255,253,184,0,0,0,0,0,0,0,0,0,0,0,9,197,252,252,157,0,0,0,0,15,178,252,252,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,130,252,252,252,116,0,0,57,122,191,252,252,252,252,253,252,100,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,218,93,124,244,252,253,252,252,252,252,253,172,13,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,252,252,252,252,253,252,252,252,252,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,116,239,253,255,253,253,253,253,255,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,217,253,252,252,252,252,253,252,252,193,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,79,183,234,252,252,253,252,170,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,215,252,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,221,232,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,83,44,0,0,0,0,5,207,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,124,180,254,253,171,17,0,0,0,152,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,64,179,251,254,254,254,254,254,106,0,0,122,252,171,3,0,0,0,0,0,0,0,0,0,0,0,0,138,249,254,217,139,55,13,24,138,146,21,123,251,252,57,0,0,0,0,0,0,0,0,0,0,0,19,230,253,239,123,8,0,0,0,0,0,29,197,250,198,16,0,0,0,0,0,0,0,0,0,0,0,0,144,254,218,60,0,0,0,0,0,0,8,176,254,203,29,0,0,0,0,0,0,0,0,0,0,0,0,120,254,216,16,0,0,0,0,0,0,20,215,254,145,29,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,33,0,0,0,0,0,0,57,213,254,167,7,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,216,6,0,0,0,0,0,40,234,232,69,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,238,243,216,216,137,130,54,119,223,241,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,195,254,254,254,254,254,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,47,69,75,152,250,232,148,249,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,128,249,69,0,212,250,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,71,250,254,196,8,140,245,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,173,254,254,250,32,142,246,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,250,254,200,59,14,200,254,193,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,68,0,43,245,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,246,232,14,76,221,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,184,247,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,214,255,176,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,137,155,155,184,203,155,155,118,56,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,254,253,253,253,253,254,253,253,210,158,11,6,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,210,133,31,0,0,0,0,0,0,0,0,0,0,0,199,254,253,236,165,224,233,233,234,245,253,254,253,253,254,253,235,110,9,0,0,0,0,0,0,0,0,0,18,123,153,11,0,0,0,0,0,47,121,178,242,253,254,253,254,254,191,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,124,215,253,254,253,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,101,247,254,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,218,254,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,222,254,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,206,253,254,253,174,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,254,253,254,197,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,217,253,254,253,179,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,222,253,253,253,172,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,217,254,254,253,172,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,172,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,211,253,254,254,226,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,253,253,209,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,207,68,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,153,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,253,253,253,124,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,221,253,251,251,251,251,222,144,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,241,253,251,251,251,251,253,251,221,217,87,218,217,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,251,251,253,251,251,251,251,253,251,230,62,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,251,251,251,251,253,251,251,251,251,253,251,251,220,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,180,182,180,191,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,0,0,21,176,253,253,253,0,0,0,0,0,0,0,0,42,62,125,144,144,222,144,144,144,41,0,0,0,0,0,176,251,251,251,251,0,0,0,0,0,0,0,0,228,231,246,251,251,253,251,251,251,226,166,37,37,37,166,253,251,251,251,225,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,204,41,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,225,41,0,0,0,0,0,0,0,0,0,255,253,253,253,253,255,253,253,253,253,255,253,253,253,253,255,253,216,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,215,0,0,0,0,0,0,0,0,0,0,87,215,246,251,251,253,251,251,251,251,216,215,215,230,251,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,138,204,142,143,142,142,142,142,0,0,0,62,220,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,11,41,0,0,0,0,0,0,0,0,0,0,51,72,71,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,229,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,47,47,30,95,254,215,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,154,185,185,223,253,253,133,175,255,188,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,246,161,228,253,253,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,245,253,158,137,21,0,48,233,253,233,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,223,25,0,0,36,170,254,244,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,212,253,161,11,26,178,253,236,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,253,228,80,223,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,254,253,154,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,254,179,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,254,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,123,254,253,203,156,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,254,121,13,93,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,239,253,76,8,32,219,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,191,0,5,108,234,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,190,5,85,253,236,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,169,192,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,254,236,129,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,118,243,191,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,184,246,253,252,252,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,243,252,252,209,158,158,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,240,252,252,209,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,135,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,248,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,228,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,252,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,255,197,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,241,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,192,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,174,248,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,252,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,190,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,190,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,253,168,0,0,0,0,76,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,93,0,0,0,0,225,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,225,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,202,6,0,0,0,0,225,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,84,0,0,0,0,0,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,84,0,0,0,0,0,225,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,244,56,0,0,0,0,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,175,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,139,143,143,143,143,62,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,206,252,252,252,252,252,252,138,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,252,252,252,214,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,244,251,214,121,73,121,209,252,253,250,108,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,72,141,69,0,0,0,27,207,253,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,249,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,177,255,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,72,176,233,252,253,252,154,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,100,109,209,224,252,252,252,252,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,245,252,252,252,252,252,252,252,252,253,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,252,252,253,252,180,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,187,69,128,252,252,248,174,19,0,0,0,0,0,0,0,0,0,0,0,0,249,252,252,252,252,252,252,250,63,0,3,50,174,247,252,236,126,10,0,0,0,0,0,0,0,0,0,0,143,252,252,252,252,252,250,124,0,0,0,0,0,62,184,219,252,235,121,25,0,0,0,0,0,0,0,0,100,195,252,252,252,225,72,0,0,0,0,0,0,0,0,52,119,128,199,190,0,0,0,0,0,0,0,0,0,38,142,142,71,21,0,0,0,0,0,0,0,0,0,0,0,0,10,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,164,254,255,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,163,253,253,243,231,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,207,253,245,200,85,31,158,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,247,98,0,0,0,113,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,188,0,0,0,0,21,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,112,0,0,0,0,0,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,225,3,0,0,0,3,243,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,253,183,60,24,124,191,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,235,253,253,253,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,76,159,194,244,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,244,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,244,253,211,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,124,253,199,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,216,169,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,249,254,254,219,114,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,94,247,252,253,254,254,254,145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,112,144,220,155,203,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,254,154,6,14,14,0,133,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,227,32,0,0,0,0,32,232,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,161,252,79,0,0,0,0,0,0,207,232,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,244,0,0,0,0,0,0,0,124,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,237,0,0,0,0,0,0,0,99,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,135,0,0,0,0,0,0,0,78,252,203,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,135,0,0,0,0,0,0,0,0,245,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,135,0,0,0,0,0,0,0,0,245,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,135,0,0,0,0,0,0,0,0,245,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,135,0,0,0,0,0,0,0,80,253,201,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,239,0,0,0,0,0,0,0,110,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,211,251,95,0,0,0,0,0,16,219,236,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,225,24,0,0,0,9,185,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,226,254,214,89,26,26,191,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,197,254,254,238,239,254,254,155,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,121,199,254,254,245,74,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,24,0,0,0,1,16,16,66,116,175,104,164,234,65,0,0,0,0,0,0,0,0,0,0,0,0,70,255,161,22,52,112,145,254,254,254,254,208,238,149,20,0,0,0,0,0,0,0,0,0,0,0,0,47,231,255,254,239,254,254,255,238,150,207,127,15,36,9,0,0,0,0,0,0,0,0,0,0,0,0,32,196,254,255,254,254,254,194,161,72,6,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,250,174,110,25,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,202,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,207,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,106,245,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,15,0,0,0,10,221,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,30,0,0,0,0,207,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,175,18,0,0,0,57,240,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,58,0,0,52,218,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,242,200,48,98,240,254,215,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,254,251,155,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,121,244,179,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,251,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,255,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,111,225,254,243,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,151,167,113,137,202,230,254,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,254,254,254,254,247,247,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,237,221,169,169,118,10,32,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,32,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,201,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,137,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,182,242,254,254,239,197,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,254,254,252,231,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,216,236,254,200,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,111,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,215,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,230,226,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,101,101,120,255,254,240,101,101,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,208,253,253,253,253,253,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,235,107,151,253,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,137,91,160,141,0,2,179,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,235,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,243,253,253,215,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,146,244,208,68,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,190,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,235,86,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,194,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,182,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,189,8,0,0,0,0,0,0,0,0,99,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,148,62,25,30,0,0,31,62,72,216,248,245,0,0,0,0,0,0,0,0,0,0,0,0,0,5,247,253,253,253,197,206,162,162,206,253,253,253,251,144,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,248,253,253,253,253,253,253,253,253,205,96,45,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,99,99,150,234,99,99,99,99,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,43,131,167,254,254,254,210,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,165,248,253,253,240,168,168,225,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,111,234,232,179,127,82,17,0,0,169,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,226,227,71,0,0,0,0,0,0,6,191,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,156,25,0,0,0,0,0,0,0,154,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,238,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,186,253,126,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,149,253,234,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,255,232,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,229,237,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,237,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,165,248,232,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,149,253,243,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,187,254,232,51,0,0,0,0,0,0,0,0,0,59,22,0,0,0,0,0,0,0,0,0,0,0,9,205,253,219,28,0,0,0,0,0,0,0,0,125,212,143,14,0,0,0,0,0,0,0,0,0,0,15,193,254,174,0,0,0,0,0,0,15,52,219,254,213,71,0,0,0,0,0,0,0,0,0,0,0,0,121,253,170,11,0,0,0,0,72,104,212,253,232,125,27,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,99,22,128,128,136,233,250,251,197,118,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,254,253,253,237,145,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,148,253,253,148,147,50,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,254,254,215,188,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,253,253,253,253,222,104,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,165,214,240,214,244,253,253,253,253,187,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,27,14,35,133,222,240,254,253,185,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,142,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,248,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,85,19,17,0,0,57,173,184,248,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,242,253,242,242,239,239,249,253,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,253,254,253,240,124,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,223,242,253,233,235,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,38,49,29,31,133,148,240,253,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,236,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,163,0,0,0,0,0,0,0,0,0,0,37,163,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,163,0,0,0,0,0,0,0,0,0,0,143,252,89,0,0,0,0,0,0,0,0,0,0,0,23,216,254,154,0,0,0,0,0,0,0,0,0,0,124,253,235,127,0,0,0,0,0,0,0,0,0,23,204,253,197,19,0,0,0,0,0,0,0,0,0,0,5,199,253,252,234,183,134,134,134,37,22,35,126,240,254,253,120,0,0,0,0,0,0,0,0,0,0,0,0,32,222,253,253,253,253,253,253,253,228,253,253,253,254,190,38,0,0,0,0,0,0,0,0,0,0,0,0,0,6,142,222,253,253,253,254,253,253,253,253,253,164,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,66,153,248,253,253,173,130,54,54,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,163,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,197,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,235,253,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,222,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,170,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,169,0,0,0,0,0,0,19,205,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,237,169,0,0,0,0,0,0,40,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,225,248,42,0,0,0,0,0,40,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,254,45,0,0,0,0,0,40,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,224,29,0,0,0,0,0,40,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,218,254,198,15,0,0,0,0,0,108,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,228,31,0,0,0,0,0,40,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,169,0,0,0,0,0,0,40,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,191,46,34,0,0,0,0,40,254,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,235,223,190,93,127,60,157,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,249,254,254,254,254,254,254,254,254,254,254,249,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,192,208,246,254,255,254,245,217,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,85,85,85,67,16,198,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,148,237,193,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,248,253,253,254,197,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,206,170,246,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,174,0,0,148,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,246,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,248,121,86,72,0,0,0,0,50,86,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,251,233,233,233,233,246,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,120,195,253,253,254,253,253,253,253,254,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,147,166,253,253,253,253,174,42,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,169,255,175,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,180,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,253,206,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,253,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,214,254,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,78,171,237,254,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,209,194,253,254,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,149,127,253,254,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,79,97,253,254,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,255,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,254,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,180,253,254,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,254,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,132,253,254,253,242,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,242,254,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,237,254,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,254,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,254,250,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,109,223,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,19,204,254,186,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,97,247,237,253,253,253,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,70,232,253,138,100,220,253,254,144,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,182,240,151,26,214,253,253,254,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,187,254,180,0,0,85,127,59,195,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,194,4,0,0,0,0,0,40,190,253,245,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,222,63,0,0,0,0,0,0,0,25,207,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,85,234,118,0,0,0,0,0,0,0,0,0,74,228,235,50,0,0,0,0,0,0,0,0,0,0,0,0,116,254,93,0,0,0,0,0,0,0,0,0,0,127,254,115,0,0,0,0,0,0,0,0,0,0,0,0,116,253,9,0,0,0,0,0,0,0,0,0,0,9,203,198,0,0,0,0,0,0,0,0,0,0,0,0,191,177,0,0,0,0,0,0,0,0,0,0,0,0,195,206,0,0,0,0,0,0,0,0,0,0,0,0,140,160,0,0,0,0,0,0,0,0,0,0,0,0,161,206,0,0,0,0,0,0,0,0,0,0,0,0,174,254,0,0,0,0,0,0,0,0,0,0,0,0,221,207,0,0,0,0,0,0,0,0,0,0,0,0,124,253,68,0,0,0,0,0,0,0,0,0,0,85,254,206,0,0,0,0,0,0,0,0,0,0,0,0,116,253,191,3,0,0,0,0,0,0,0,0,19,199,254,164,0,0,0,0,0,0,0,0,0,0,0,0,49,253,254,124,0,0,0,0,0,0,0,0,182,253,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,254,211,95,26,0,0,0,70,204,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,249,253,253,239,230,197,230,254,253,232,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,181,253,254,253,253,253,254,223,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,69,161,245,219,185,103,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,93,131,192,226,219,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,25,137,212,254,254,254,254,254,254,217,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,151,254,254,254,254,254,254,254,254,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,206,254,254,254,254,254,254,254,248,236,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,254,254,254,234,223,134,75,69,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,251,217,137,32,0,0,0,36,228,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,93,202,78,0,0,0,0,0,0,151,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,254,239,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,170,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,198,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,100,239,254,254,238,99,75,136,75,75,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,112,254,254,254,254,254,254,254,254,254,254,233,49,0,0,0,0,0,0,0,0,0,0,0,0,9,88,173,254,254,254,254,254,254,254,254,254,254,254,254,136,0,0,0,0,0,0,0,0,0,0,0,53,170,254,254,254,254,254,254,254,254,254,254,254,254,254,167,87,0,0,0,0,0,0,0,0,0,0,61,241,254,254,254,254,254,254,254,179,154,94,51,30,80,103,3,0,0,0,0,0,0,0,0,0,0,3,186,255,255,255,254,236,200,60,24,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,254,254,183,57,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,243,60,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,193,245,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,134,255,180,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,233,253,253,253,194,0,27,124,134,189,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,239,71,28,206,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,248,253,253,243,68,53,233,253,253,193,29,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,253,253,250,62,1,120,253,253,251,10,0,27,155,204,17,0,0,0,0,0,0,0,0,0,0,4,128,253,253,253,170,0,109,253,253,253,141,0,3,174,253,253,35,0,0,0,0,0,0,0,0,0,0,111,253,253,253,186,4,0,160,253,253,253,67,27,171,253,253,253,35,0,0,0,0,0,0,0,0,0,0,154,253,253,253,221,65,71,225,253,253,253,184,216,253,253,253,234,27,0,0,0,0,0,0,0,0,0,0,154,253,253,253,253,253,253,253,253,253,253,253,253,253,253,167,40,0,0,0,0,0,0,0,0,0,0,0,42,223,253,253,253,253,253,253,253,253,253,253,253,253,169,12,0,0,0,0,0,0,0,0,0,0,0,0,0,41,172,253,253,253,253,253,253,253,253,253,195,72,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,5,182,253,253,253,153,24,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,246,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,205,11,85,166,166,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,199,242,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,253,253,249,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,111,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,166,253,253,154,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,254,213,87,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,155,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,244,125,136,248,253,161,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,169,0,0,119,248,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,21,0,0,0,118,250,250,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,237,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,231,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,255,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,243,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,177,253,218,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,174,253,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,202,253,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,207,253,188,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,253,228,55,0,0,0,0,0,0,17,85,85,85,53,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,150,137,218,218,218,219,218,218,224,253,178,188,110,0,0,0,0,0,0,0,0,0,0,0,23,244,253,253,253,253,253,253,253,254,190,144,121,24,6,8,4,0,0,0,0,0,0,0,0,0,0,0,2,161,253,224,132,132,28,11,11,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,224,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,225,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,248,253,229,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,249,253,232,30,0,0,0,0,43,83,189,172,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,162,0,0,0,0,70,234,253,253,253,196,22,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,162,0,0,0,12,201,253,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,37,241,253,162,0,0,0,86,253,253,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,221,25,0,47,233,253,253,253,253,253,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,238,253,128,27,91,253,253,253,253,253,250,214,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,251,253,253,253,253,253,253,253,250,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,244,253,253,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,117,153,252,253,253,228,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,226,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,152,200,133,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,253,253,169,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,254,159,99,249,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,247,211,5,0,90,228,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,235,0,0,0,123,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,234,0,0,0,62,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,216,0,0,0,16,240,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,156,0,0,0,19,249,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,49,0,0,0,74,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,0,0,0,0,98,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,253,0,0,0,0,158,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,250,229,0,0,0,73,254,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,169,0,0,0,132,255,221,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,97,0,0,28,225,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,97,0,0,101,253,237,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,73,0,25,232,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,19,56,212,254,224,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,175,254,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,220,253,254,244,111,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,223,169,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,255,154,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,253,249,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,226,253,197,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,211,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,243,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,228,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,213,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,231,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,156,253,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,200,55,0,0,0,0,66,81,81,81,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,237,253,86,0,0,0,100,211,245,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,221,13,19,121,217,245,226,235,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,216,0,50,253,253,193,22,205,253,253,118,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,216,0,50,253,253,213,142,249,253,163,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,232,38,105,253,253,253,253,253,118,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,246,250,253,253,253,161,35,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,97,253,253,253,253,162,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,117,244,201,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,162,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,236,254,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,254,254,254,254,254,231,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,92,254,254,254,254,242,171,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,230,254,254,254,254,222,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,230,254,254,254,254,175,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,190,254,254,254,254,215,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,75,230,254,254,254,254,254,254,150,57,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,147,254,254,254,254,254,254,254,254,254,254,146,6,0,0,0,0,0,0,0,0,0,0,0,0,0,39,178,254,254,254,254,254,254,254,254,254,254,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,10,231,254,254,254,254,254,254,254,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,254,254,254,254,254,254,233,113,173,201,254,254,234,54,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,254,254,237,167,76,32,0,0,15,43,229,254,142,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,254,171,30,0,0,0,0,0,0,0,82,246,183,5,0,0,0,0,0,0,0,0,0,0,89,254,254,254,254,87,50,0,0,0,0,0,0,0,137,252,155,2,0,0,0,0,0,0,0,0,0,0,13,254,254,254,254,239,242,231,231,231,231,231,231,231,252,255,142,0,0,0,0,0,0,0,0,0,0,0,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,1,91,254,254,254,254,254,254,254,254,254,254,254,254,254,153,7,0,0,0,0,0,0,0,0,0,0,0,0,1,79,69,209,254,254,254,254,254,156,130,130,130,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,148,148,218,253,193,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,199,253,252,252,252,252,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,246,252,253,252,252,252,252,253,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,252,252,252,253,252,185,84,154,253,252,237,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,252,252,252,253,182,4,0,106,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,225,253,243,211,212,140,0,0,45,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,107,47,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,252,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,183,253,253,253,255,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,199,253,252,252,252,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,246,252,253,252,252,252,252,253,252,242,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,246,252,252,253,252,252,252,252,253,252,252,231,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,252,252,252,253,252,252,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,253,165,254,253,253,253,174,62,199,253,253,253,255,218,156,190,0,0,0,0,0,0,0,0,0,0,155,252,252,252,253,252,252,169,11,0,21,123,252,252,253,252,252,210,14,0,0,0,0,0,0,0,0,0,128,252,252,252,253,245,126,7,0,0,0,11,152,249,253,252,252,252,42,0,0,0,0,0,0,0,0,0,64,247,252,252,199,56,0,0,0,0,0,0,0,115,253,252,252,252,42,0,0,0,0,0,0,0,0,0,0,38,42,42,18,0,0,0,0,0,0,0,0,0,165,252,252,155,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,128,129,129,66,49,49,49,49,49,43,40,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,254,254,254,254,254,254,250,249,237,149,7,0,0,0,0,0,0,0,0,0,0,0,0,41,183,230,181,236,255,254,254,254,254,254,254,254,254,231,161,0,0,0,0,0,0,0,0,0,0,4,128,249,201,10,0,6,47,46,8,32,9,8,8,8,8,5,5,0,0,0,0,0,0,0,0,0,20,220,246,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,237,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,211,203,177,150,91,41,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,154,202,202,202,128,148,202,208,184,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,116,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,213,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,72,47,0,0,0,6,9,176,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,211,241,182,182,182,233,254,251,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,124,156,240,254,254,254,241,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,48,126,48,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,96,215,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,202,214,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,178,128,0,0,0,0,0,106,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,173,0,0,0,0,25,224,198,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,225,35,0,0,0,9,190,239,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,193,237,97,0,0,0,6,181,243,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,175,237,63,0,0,0,0,128,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,254,128,0,0,0,0,118,247,172,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,173,242,253,254,246,198,158,110,164,249,183,52,179,75,0,0,0,0,0,0,0,0,0,0,0,0,66,234,254,225,85,55,149,238,238,253,255,254,254,254,189,25,0,0,0,0,0,0,0,0,0,0,0,0,61,253,147,28,0,0,0,0,73,249,247,83,63,63,4,0,0,0,0,0,0,0,0,0,0,0,0,0,8,117,9,0,0,0,0,9,173,238,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,149,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,102,253,163,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,232,183,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,178,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,250,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,188,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,163,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,115,196,254,249,154,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,143,209,243,253,253,253,253,253,205,79,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,253,253,253,253,253,253,253,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,240,253,246,214,133,72,40,214,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,89,50,0,0,0,11,227,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,47,0,0,0,0,27,253,253,244,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,216,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,162,243,253,253,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,229,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,251,250,253,253,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,134,56,23,229,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,57,0,0,0,0,0,0,75,242,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,248,223,134,61,0,35,157,246,253,253,163,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,218,189,252,253,253,253,229,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,253,253,253,254,253,253,253,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,144,187,253,253,253,212,92,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,90,136,169,254,254,254,254,254,254,254,255,254,254,254,254,254,160,83,0,0,0,0,0,0,0,0,0,7,193,229,218,218,218,218,151,100,100,100,100,100,100,100,128,253,253,152,0,0,0,0,0,0,0,0,0,0,67,65,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,237,253,224,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,253,221,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,249,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,249,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,253,194,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,249,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,250,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,198,253,248,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,83,253,242,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,184,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,254,254,255,254,254,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,118,223,253,253,253,253,253,253,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,225,251,253,222,142,113,62,253,148,12,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,167,40,0,0,173,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,238,253,220,28,0,0,171,246,235,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,231,253,199,17,0,58,245,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,183,253,222,148,158,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,181,253,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,51,212,253,253,253,220,72,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,208,165,253,253,199,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,240,238,83,14,99,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,181,253,188,0,0,46,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,164,0,0,46,253,224,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,205,19,0,0,133,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,164,0,8,128,226,211,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,253,51,41,179,253,225,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,94,177,253,249,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,197,253,250,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,253,253,248,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,158,158,158,226,200,164,255,238,195,131,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,254,254,254,254,254,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,162,162,155,133,108,67,67,67,71,223,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,241,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,239,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,248,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,214,229,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,249,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,247,187,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,209,230,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,254,128,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,153,254,206,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,122,254,214,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,244,89,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,144,144,240,144,62,34,34,34,19,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,253,253,253,253,255,253,220,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,175,175,154,154,228,253,254,253,253,250,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,8,127,255,253,253,251,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,254,253,207,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,187,253,204,136,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,200,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,240,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,200,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,225,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,227,225,25,32,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,158,131,250,237,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,44,159,217,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,247,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,218,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,181,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,234,253,215,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,121,162,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,107,170,251,252,252,252,252,250,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,192,226,226,241,252,253,202,252,252,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,68,223,252,252,252,252,252,39,19,39,65,224,252,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,252,245,108,53,0,0,0,150,252,252,220,20,0,0,0,0,0,0,0,0,0,0,0,0,70,242,252,252,222,59,0,0,0,0,0,178,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,252,194,67,0,0,0,0,17,90,240,252,194,67,0,0,0,0,0,0,0,0,0,0,0,0,0,83,205,190,24,0,0,0,0,0,121,252,252,209,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,247,252,248,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,255,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,183,253,252,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,102,252,253,163,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,168,252,252,110,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,155,252,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,179,252,150,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,222,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,134,248,254,190,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,203,237,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,248,226,29,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,220,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,238,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,219,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,254,215,150,110,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,254,254,254,254,224,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,232,194,219,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,232,254,191,48,0,17,63,237,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,48,0,0,0,0,215,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,179,2,0,0,1,113,250,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,138,0,0,0,37,254,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,70,0,0,41,224,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,174,91,128,228,254,233,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,241,254,254,254,254,214,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,227,254,217,134,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,255,126,51,0,0,24,0,59,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,239,221,184,233,221,251,245,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,254,254,254,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,108,4,4,4,4,4,47,254,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,105,0,0,0,0,0,7,209,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,73,0,0,0,0,0,0,202,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,66,0,0,0,0,0,0,202,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,69,0,0,0,0,0,20,225,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,74,0,0,0,0,0,44,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,37,0,0,0,0,0,44,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,247,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,128,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,128,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,64,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,191,191,255,255,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,64,128,64,128,128,128,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,191,128,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,64,64,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,116,0,0,0,0,0,0,0,59,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,241,16,0,0,0,0,0,0,104,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,253,19,0,0,0,0,0,31,224,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,180,2,0,0,0,0,0,113,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,245,70,0,0,0,0,0,16,217,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,255,114,0,0,0,0,0,0,159,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,226,21,0,0,0,0,0,112,250,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,240,253,236,175,145,79,18,0,44,229,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,253,253,253,238,235,243,253,253,132,40,37,0,0,0,0,0,0,0,0,0,0,0,0,0,18,238,253,254,253,253,253,253,254,253,253,253,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,98,121,195,195,204,254,255,254,254,254,254,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,254,251,165,121,114,76,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,217,253,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,210,253,253,131,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,239,254,207,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,253,216,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,182,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,171,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,0,0,0,0,0,217,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,193,36,0,0,0,6,221,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,141,0,0,0,40,249,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,141,0,0,0,38,247,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,242,254,141,0,0,0,39,248,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,87,7,9,23,46,224,254,137,46,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,237,222,224,235,254,254,254,254,254,232,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,254,254,254,254,254,254,254,254,254,182,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,178,254,254,254,254,254,224,226,254,254,78,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,25,25,25,25,25,12,86,254,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,200,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,83,0,0,68,245,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,45,0,0,0,170,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,191,97,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,235,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,202,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,236,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,202,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,177,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,221,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,132,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,217,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,252,210,70,0,0,0,0,135,244,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,136,253,215,26,0,0,0,0,58,247,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,134,253,247,88,0,0,0,0,4,181,253,180,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,249,94,0,0,0,0,0,104,253,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,223,249,138,0,0,0,0,0,6,227,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,155,0,0,0,0,0,0,115,253,177,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,242,44,0,0,0,0,0,38,244,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,163,0,0,0,0,0,0,167,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,124,29,99,99,102,202,202,253,253,213,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,251,250,253,253,218,237,253,253,253,236,250,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,208,165,165,98,10,78,253,239,87,37,62,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,8,0,0,0,0,108,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,186,253,77,28,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,164,4,137,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,155,98,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,197,166,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,191,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,189,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,169,254,137,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,229,198,234,223,40,0,40,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,180,208,21,0,49,231,222,30,191,243,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,88,0,0,0,31,225,214,253,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,214,11,0,0,0,0,185,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,140,0,0,0,0,0,153,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,121,0,0,0,0,84,238,253,253,207,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,217,254,18,0,0,0,82,231,234,219,253,233,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,254,18,0,2,84,234,223,72,25,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,115,46,167,253,228,37,0,44,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,255,254,254,248,148,33,0,0,110,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,102,108,36,0,0,0,0,109,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,218,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,214,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,180,95,142,222,222,222,222,222,209,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,235,254,254,254,254,254,254,254,254,254,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,254,252,197,197,197,197,248,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,216,254,250,225,134,45,37,0,0,0,0,34,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,251,254,254,104,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,216,254,254,254,254,220,212,123,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,252,254,254,254,254,254,254,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,95,177,206,206,239,254,254,251,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,240,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,78,150,50,0,0,0,0,0,0,0,0,24,242,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,239,254,178,1,0,0,0,0,0,0,0,6,148,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,85,0,0,0,0,0,0,0,3,180,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,213,11,0,0,0,0,0,32,128,254,254,234,17,0,0,0,0,0,0,0,0,0,0,0,0,39,222,254,254,189,103,39,83,135,153,241,254,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,254,254,254,254,254,254,254,254,254,254,249,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,254,254,254,254,254,251,187,170,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,109,184,221,221,177,125,70,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,126,252,255,254,169,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,237,253,253,253,253,253,221,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,73,191,253,253,253,253,253,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,195,253,253,253,253,222,182,190,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,226,164,37,5,163,253,253,224,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,253,253,151,20,0,48,224,253,253,226,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,215,10,42,125,237,253,253,227,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,236,253,253,253,253,253,253,252,160,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,235,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,250,253,253,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,174,247,253,253,253,217,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,194,253,253,253,200,85,22,160,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,206,83,10,0,0,78,253,243,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,252,253,249,85,0,0,0,0,2,214,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,96,0,0,0,0,0,10,218,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,47,0,0,0,0,12,165,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,253,196,52,0,0,42,164,253,253,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,231,201,201,234,253,253,183,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,124,235,253,253,253,253,253,176,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,135,193,253,234,108,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,189,103,0,0,0,0,0,0,13,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,183,24,0,0,0,0,0,55,205,212,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,128,0,0,0,0,0,28,239,153,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,244,128,0,0,0,0,0,202,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,128,0,0,0,0,52,253,190,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,128,0,0,0,0,181,240,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,250,153,0,0,0,13,230,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,227,10,0,0,128,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,110,0,0,185,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,247,206,38,2,215,244,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,190,53,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,141,247,254,254,192,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,221,254,254,211,149,130,64,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,150,137,198,189,195,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,234,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,43,37,101,101,101,101,101,147,254,254,254,254,255,217,101,101,18,0,0,0,0,0,0,0,0,0,202,242,223,220,253,253,253,253,253,253,253,253,253,253,253,253,253,253,177,19,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,198,253,253,162,160,160,160,160,160,114,7,7,7,7,7,7,108,253,253,253,0,0,0,0,0,0,0,0,24,61,61,2,0,0,0,0,0,0,0,0,0,0,0,0,7,231,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,156,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,190,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,215,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,226,253,223,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,233,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,207,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,15,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,240,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,230,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,245,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,255,253,196,0,0,0,101,222,253,174,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,195,0,0,85,234,252,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,253,252,86,7,135,253,252,252,252,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,253,252,55,123,252,253,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,169,252,253,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,222,207,253,255,253,253,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,252,252,252,253,252,252,252,204,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,165,253,252,252,252,252,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,225,249,252,252,252,253,252,252,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,252,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,176,174,222,38,0,0,101,113,113,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,101,240,253,252,252,234,146,147,249,252,252,237,163,57,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,253,252,252,252,252,253,252,252,252,252,253,233,153,0,0,0,0,0,0,0,0,0,0,0,151,234,252,252,253,252,252,252,252,253,252,252,252,252,253,252,233,72,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,223,0,0,0,0,0,0,0,0,0,114,253,253,253,253,255,253,253,253,253,255,253,253,253,253,255,253,253,237,50,0,0,0,0,0,0,0,0,113,252,252,252,252,253,176,27,27,106,206,252,252,252,252,253,252,252,252,237,0,0,0,0,0,0,0,0,113,252,252,252,252,253,58,0,0,0,25,180,239,252,252,56,231,252,252,252,0,0,0,0,0,0,0,0,207,252,252,252,252,253,27,0,0,0,0,0,66,177,145,0,225,252,252,252,0,0,0,0,0,0,0,0,253,252,252,252,252,253,27,0,0,0,0,0,0,0,0,0,225,252,252,252,0,0,0,0,0,0,0,0,255,253,253,253,253,255,27,0,0,0,0,0,0,0,0,0,226,253,253,112,0,0,0,0,0,0,0,0,253,252,252,252,252,253,27,0,0,0,0,0,0,0,48,226,249,252,252,112,0,0,0,0,0,0,0,0,253,252,252,252,252,253,203,88,57,57,57,57,88,197,227,253,252,252,252,112,0,0,0,0,0,0,0,0,159,252,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,233,37,0,0,0,0,0,0,0,0,50,237,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,145,0,0,0,0,0,0,0,0,0,0,226,253,253,253,255,253,253,253,253,255,253,253,253,253,255,253,196,0,0,0,0,0,0,0,0,0,0,0,100,252,252,252,253,252,252,252,252,253,252,252,252,252,215,121,21,0,0,0,0,0,0,0,0,0,0,0,19,177,252,252,253,252,252,252,252,253,252,239,195,118,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,99,223,225,233,230,223,223,225,99,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,18,118,244,254,255,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,111,177,253,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,217,253,253,253,253,253,228,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,253,253,253,253,253,136,43,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,176,5,12,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,178,229,110,0,12,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,11,11,4,9,2,0,15,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,237,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,248,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,228,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,137,231,231,231,231,231,156,140,238,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,205,253,253,253,253,253,253,253,253,253,253,253,251,235,185,130,130,130,70,0,0,0,0,0,0,0,0,205,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,254,253,243,118,223,253,253,253,253,242,206,246,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,254,253,239,183,241,253,253,253,212,90,0,59,70,76,188,188,188,188,188,46,0,0,0,0,0,0,0,0,254,253,253,253,253,253,213,105,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,164,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,228,135,39,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,158,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,76,150,242,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,114,153,176,222,234,253,253,253,250,96,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,236,253,253,253,253,253,249,210,121,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,211,253,201,172,172,147,65,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,188,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,217,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,181,56,17,72,125,125,125,97,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,168,253,253,253,253,253,253,253,253,253,216,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,136,167,194,161,161,161,161,250,253,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,0,0,0,0,85,247,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,242,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,132,0,0,0,0,0,0,0,0,0,0,80,125,66,17,0,0,0,0,0,0,0,0,0,0,66,253,253,183,0,0,0,0,0,0,0,0,0,123,242,253,253,222,160,104,104,9,0,0,0,0,0,56,188,253,253,93,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,249,249,210,150,177,229,251,253,253,194,2,0,0,0,0,0,0,0,0,0,44,75,171,253,253,253,253,253,253,253,253,253,253,253,253,253,195,4,0,0,0,0,0,0,0,0,0,0,0,0,1,37,119,145,166,253,253,253,253,253,253,253,195,118,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127,171,216,156,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,203,253,253,253,254,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,240,174,223,253,169,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,253,195,23,0,12,164,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,239,254,200,18,0,0,0,35,223,244,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,241,68,0,0,0,0,0,153,254,254,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,150,0,0,0,0,0,0,12,184,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,25,240,253,98,0,0,0,0,0,0,0,40,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,36,243,253,98,0,0,0,0,0,0,0,40,253,222,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,173,0,0,0,0,0,0,0,115,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,255,99,0,0,0,0,0,41,201,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,248,254,227,88,9,0,0,62,211,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,253,253,211,175,176,241,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,42,217,253,253,253,254,234,146,152,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,88,155,155,155,46,0,136,253,240,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,231,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,233,193,152,152,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,223,253,252,253,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,142,61,0,0,102,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,233,70,0,0,0,0,62,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,254,172,0,0,0,0,0,21,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,172,10,0,0,0,0,82,223,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,0,0,0,0,0,62,254,253,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,123,0,102,102,163,223,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,254,253,254,253,254,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,131,253,252,253,252,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,234,253,254,253,254,172,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,50,213,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,192,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,117,242,254,194,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,202,172,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,242,159,6,12,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,218,23,0,49,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,248,49,0,0,79,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,229,0,0,0,79,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,168,0,0,0,144,249,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,145,0,0,0,228,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,230,7,0,47,248,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,250,214,135,190,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,195,240,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,169,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,244,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,249,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,149,108,159,121,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,227,254,254,254,254,254,221,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,251,208,125,196,254,195,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,238,254,254,103,0,0,26,130,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,202,0,0,0,0,15,236,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,140,0,0,0,0,0,145,247,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,196,254,140,9,0,0,0,0,0,62,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,230,0,0,0,0,0,0,0,14,241,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,105,0,0,0,0,0,0,0,0,237,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,64,0,0,0,0,0,0,0,41,250,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,244,210,4,0,0,0,0,0,0,0,56,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,129,0,0,0,0,0,0,0,0,56,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,128,0,0,0,0,0,0,0,0,96,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,123,0,0,0,0,0,0,0,0,129,245,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,55,0,0,0,0,0,0,0,0,188,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,60,0,0,0,0,0,0,0,13,221,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,128,0,0,0,0,0,0,0,167,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,190,10,0,0,0,0,4,148,253,135,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,164,10,0,6,83,193,254,193,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,239,254,230,222,227,254,254,196,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,110,180,254,255,241,115,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,253,253,253,151,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,253,253,192,235,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,156,253,253,253,253,253,224,78,253,232,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,233,253,253,253,212,253,253,128,31,229,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,38,212,252,253,253,178,56,100,253,143,12,0,133,253,152,0,0,0,0,0,0,0,0,0,0,0,0,2,148,253,253,239,110,4,0,4,11,1,0,0,66,253,249,19,0,0,0,0,0,0,0,0,0,0,5,143,253,253,172,49,0,0,0,0,0,0,0,0,29,224,253,146,0,0,0,0,0,0,0,0,0,6,141,253,253,236,9,0,0,0,0,0,0,0,0,0,0,201,253,253,0,0,0,0,0,0,0,0,0,64,253,253,233,58,0,0,0,0,0,0,0,0,0,0,0,201,253,253,0,0,0,0,0,0,0,0,50,231,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,0,0,0,0,0,0,0,0,136,253,253,149,8,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,0,0,0,0,0,0,0,0,189,253,230,36,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,0,0,0,0,0,0,0,0,254,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,4,204,253,253,0,0,0,0,0,0,0,0,241,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,239,0,0,0,0,0,0,0,0,136,253,210,12,0,0,0,0,0,0,0,0,0,0,0,54,229,253,234,55,0,0,0,0,0,0,0,0,102,228,253,113,12,0,0,0,0,0,0,0,0,34,134,229,253,163,43,0,0,0,0,0,0,0,0,0,0,60,253,253,169,84,4,0,0,59,84,84,135,228,253,253,163,11,0,0,0,0,0,0,0,0,0,0,0,5,115,228,253,253,220,219,219,243,253,253,253,253,194,76,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,135,185,253,253,253,253,253,154,135,75,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,136,179,171,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,127,210,254,254,254,254,215,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,195,254,254,254,202,230,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,180,97,35,7,168,254,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,80,5,0,0,6,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,235,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,222,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,245,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,252,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,229,254,212,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,207,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,162,254,249,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,243,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,221,254,204,0,0,0,0,0,17,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,83,0,0,0,0,68,197,208,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,209,7,0,21,117,198,252,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,233,190,190,228,254,254,254,254,200,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,250,254,254,254,254,254,254,234,154,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,188,254,217,154,74,55,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,174,255,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,135,145,104,214,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,184,131,0,0,100,245,12,109,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,132,0,0,0,44,254,134,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,208,6,0,0,0,22,240,254,250,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,116,0,0,0,0,0,173,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,250,50,0,0,0,0,11,184,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,50,0,0,0,26,187,169,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,50,0,0,109,247,101,56,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,156,136,239,218,44,0,43,225,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,148,178,178,121,11,0,0,104,211,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,217,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,240,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,248,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,245,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,64,128,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,64,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,128,255,255,255,128,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,142,102,203,203,203,203,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,72,233,254,253,254,253,254,253,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,253,252,233,151,151,151,172,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,254,172,102,20,0,0,0,0,21,223,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,203,233,151,151,30,0,0,0,0,0,0,41,243,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,213,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,163,203,233,252,253,252,243,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,254,253,234,253,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,212,151,70,30,50,131,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,41,0,0,0,0,0,0,203,254,253,0,0,0,0,0,0,0,0,21,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,0,0,0,0,0,0,0,0,214,253,193,112,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,192,0,0,0,0,0,0,0,0,172,252,253,252,183,61,0,0,0,0,0,0,0,0,21,142,233,252,253,70,0,0,0,0,0,0,0,0,0,123,254,253,254,253,193,152,92,51,52,132,152,233,254,253,255,233,41,0,0,0,0,0,0,0,0,0,0,0,50,131,172,252,253,252,253,252,253,252,253,252,253,212,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,142,203,203,203,203,102,102,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,24,139,138,170,159,138,139,118,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,252,253,252,252,252,252,253,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,221,173,69,69,69,121,222,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,252,43,0,0,0,0,0,44,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,168,2,0,0,0,0,0,13,158,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,17,93,134,207,198,93,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,75,64,193,252,252,252,253,252,236,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,216,253,253,255,249,199,116,63,127,230,247,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,223,252,218,75,0,0,0,0,0,99,223,252,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,69,32,0,0,0,0,0,0,0,68,246,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,140,253,252,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,142,70,70,142,184,209,252,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,252,252,252,252,150,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,137,189,253,231,137,137,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,215,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,152,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,249,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,248,253,155,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,247,253,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,231,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,245,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,226,253,233,42,0,0,51,72,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,253,233,68,0,0,75,236,253,246,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,144,0,0,75,235,253,253,253,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,253,165,13,79,183,235,242,111,99,253,248,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,38,79,238,253,243,98,9,145,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,116,239,253,223,98,0,133,253,248,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,244,51,0,118,226,228,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,181,21,124,226,248,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,224,230,253,249,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,236,253,253,253,253,248,216,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,170,253,213,123,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,233,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,203,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,221,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,255,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,246,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,255,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,229,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,47,92,150,150,66,229,255,148,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,124,247,253,253,253,253,253,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,194,253,253,253,253,253,253,253,253,253,253,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,209,253,253,253,253,253,202,170,170,170,128,196,248,95,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,241,159,37,8,0,0,0,0,89,253,220,19,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,233,54,0,0,0,0,0,0,22,232,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,134,248,174,22,0,0,0,0,0,0,0,129,253,253,249,34,0,0,0,0,0,0,0,0,0,0,0,0,13,59,0,0,0,0,0,0,0,0,127,248,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,244,253,253,245,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,135,252,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,253,191,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,252,253,253,253,176,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,171,253,253,253,253,186,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,163,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,245,253,253,253,151,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,253,253,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,177,253,253,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,250,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,203,224,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,80,151,151,241,245,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,130,251,254,254,254,169,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,37,37,63,202,254,254,254,222,78,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,231,254,254,227,254,254,210,139,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,203,252,254,230,103,104,167,46,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,248,255,254,138,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,142,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,195,254,138,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,224,254,166,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,254,202,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,152,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,149,250,254,247,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,254,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,242,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,245,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,138,58,11,11,11,103,183,234,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,242,254,254,254,254,254,254,254,243,156,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,146,184,254,254,212,186,150,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,142,158,249,254,218,255,214,158,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,249,254,237,225,225,225,226,254,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,67,29,0,0,0,3,120,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,218,216,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,247,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,215,250,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,217,245,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,111,212,240,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,126,231,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,254,254,244,187,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,136,48,102,71,172,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,250,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,247,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,246,247,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,24,225,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,149,72,40,75,192,254,250,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,244,242,254,243,129,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,239,254,254,166,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,111,234,254,255,254,180,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,197,244,253,253,253,253,242,166,52,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,109,236,253,253,246,177,54,10,9,105,85,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,139,53,0,0,0,92,209,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,244,253,218,20,4,0,0,5,63,243,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,203,10,0,0,0,0,144,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,243,58,0,0,0,4,97,253,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,193,118,48,2,144,253,226,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,243,214,253,251,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,253,175,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,81,242,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,241,253,236,212,245,219,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,232,52,0,166,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,249,253,136,0,0,99,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,242,25,0,0,99,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,229,0,0,13,154,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,134,0,30,182,253,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,188,140,233,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,236,253,253,253,253,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,251,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,97,212,254,254,255,254,168,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,153,249,254,254,224,191,192,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,254,197,64,26,14,0,1,55,249,229,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,212,16,0,0,0,0,0,0,246,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,242,64,0,0,0,0,0,0,0,246,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,250,119,0,0,0,0,0,0,0,63,252,252,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,45,0,0,0,0,0,0,0,4,227,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,78,225,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,226,245,254,254,254,254,169,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,254,248,209,207,179,252,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,164,133,54,0,0,0,160,254,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,239,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,229,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,40,205,92,0,0,0,0,0,0,0,1,128,252,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,193,114,27,1,0,0,23,65,181,254,254,160,7,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,254,254,254,193,192,192,243,254,253,212,97,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,76,76,136,164,216,254,180,127,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,148,242,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,229,254,250,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,226,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,242,254,254,169,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,157,254,254,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,237,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,206,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,244,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,254,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,254,254,14,9,70,70,70,70,70,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,254,29,139,254,254,254,254,254,249,171,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,254,254,254,254,254,254,254,254,221,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,240,254,254,254,254,56,38,38,80,196,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,251,254,254,255,29,8,0,0,7,170,254,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,249,254,254,254,241,109,109,118,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,207,254,254,254,254,254,254,254,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,100,146,254,254,254,254,183,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,105,167,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,114,243,253,254,253,250,138,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,212,253,253,253,254,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,253,253,253,253,254,253,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,216,253,253,253,253,253,223,240,253,253,200,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,253,253,253,253,248,134,44,104,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,205,98,0,0,60,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,242,163,17,0,0,0,60,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,59,59,52,0,0,0,0,0,60,253,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,105,105,167,254,254,254,254,254,254,201,25,0,0,0,0,0,0,0,0,0,0,0,0,0,54,78,209,225,253,253,254,253,253,253,253,253,253,253,193,25,0,0,0,0,0,0,0,0,0,0,19,164,243,253,253,253,253,253,254,253,253,253,253,253,253,253,253,201,0,0,0,0,0,0,0,0,0,29,206,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,94,231,253,253,253,253,253,253,253,253,254,253,249,178,46,47,178,249,253,253,0,0,0,0,0,0,0,0,123,253,253,253,253,253,253,253,253,253,254,253,220,0,0,0,0,123,223,223,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,221,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,164,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,245,253,253,253,253,253,237,208,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,201,253,253,235,104,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,108,233,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,185,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,252,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,172,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,244,254,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,244,211,160,243,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,239,42,0,63,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,155,0,0,0,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,42,0,0,0,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,211,0,0,0,105,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,171,0,0,0,176,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,129,0,0,63,238,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,233,99,99,234,254,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,254,253,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,94,73,68,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,102,102,102,142,233,232,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,253,254,253,255,253,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,253,212,253,252,213,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,172,102,102,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,224,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,203,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,233,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,173,71,51,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,233,252,253,232,183,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,254,253,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,163,0,10,91,253,212,151,111,112,192,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,172,82,0,0,0,0,0,0,0,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,252,243,203,102,20,0,0,0,0,213,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,243,255,253,254,253,254,172,153,193,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,151,232,253,252,253,252,253,252,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,183,203,203,203,203,203,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,128,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,102,168,155,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,254,254,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,249,138,112,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,224,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,240,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,235,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,238,254,105,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,235,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,200,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,216,254,79,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,133,248,255,134,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,249,254,254,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,225,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,191,130,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,121,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,220,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,249,181,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,253,253,234,245,253,202,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,178,12,65,212,253,198,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,66,0,0,15,181,253,217,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,225,253,175,34,0,0,0,9,191,253,112,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,223,0,0,0,0,0,0,66,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,193,253,99,0,0,0,0,0,0,16,227,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,215,12,0,0,0,0,0,0,0,118,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,165,0,0,0,0,0,0,0,0,56,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,165,0,0,0,0,0,0,0,0,56,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,74,0,0,0,0,0,0,0,0,56,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,55,0,0,0,0,0,0,0,0,56,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,79,0,0,0,0,0,0,0,5,147,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,165,0,0,0,0,0,0,0,148,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,246,174,5,0,0,0,3,146,253,251,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,193,122,45,60,181,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,179,253,253,253,253,254,253,253,169,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,86,210,253,253,255,253,119,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127,237,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,153,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,160,233,60,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,207,244,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,240,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,233,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,240,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,193,1,0,75,44,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,247,114,75,153,242,254,171,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,242,245,252,254,106,134,247,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,253,155,15,13,212,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,254,198,0,0,136,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,118,0,27,218,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,254,180,73,212,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,219,255,254,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,197,255,253,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,226,168,169,168,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,253,169,0,0,0,0,0,29,85,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,168,0,0,0,0,0,85,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,253,255,139,57,0,29,197,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,251,225,168,197,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,254,253,254,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,84,0,169,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,253,251,196,28,57,224,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,0,0,85,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,138,0,0,85,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,85,85,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,157,254,254,254,254,254,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,248,252,253,253,193,253,253,253,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,253,253,253,227,43,12,32,142,153,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,170,116,15,0,0,0,0,27,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,93,25,5,0,0,0,0,0,81,231,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,196,253,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,241,253,253,253,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,240,253,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,203,253,253,253,246,105,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,239,253,253,253,211,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,206,253,253,243,108,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,239,253,253,215,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,160,202,253,253,253,219,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,22,38,160,245,253,253,253,242,114,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,211,249,253,253,253,253,226,91,0,0,0,0,0,0,17,150,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,253,67,27,6,0,19,27,114,156,100,246,83,12,0,0,0,0,0,0,0,0,0,0,161,252,253,253,253,253,253,253,173,150,224,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,105,231,245,253,253,253,253,253,253,253,253,253,253,253,253,239,51,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,247,252,253,253,253,253,253,253,253,253,247,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,123,123,220,159,123,123,123,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,71,254,254,255,149,13,13,13,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,232,252,252,252,252,252,252,252,252,252,99,25,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,78,252,252,252,252,252,252,252,252,252,252,252,87,7,0,0,0,0,0,0,0,0,0,0,0,3,49,78,252,252,252,252,252,252,252,252,252,252,252,252,252,47,0,0,0,0,0,0,0,0,0,0,0,13,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,96,9,0,0,0,0,0,0,0,0,0,0,83,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,34,0,0,0,0,0,0,0,0,0,0,254,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,108,8,0,0,0,0,0,0,0,0,0,255,252,252,252,252,252,252,252,252,252,201,155,216,252,252,252,252,252,22,0,0,0,0,0,0,0,0,0,255,252,252,252,252,252,252,252,252,252,119,0,90,216,252,252,252,252,122,5,0,0,0,0,0,0,0,0,254,252,252,252,252,252,252,252,252,252,119,0,0,89,218,252,252,252,252,10,0,0,0,0,0,0,0,0,254,252,252,252,252,214,119,119,119,119,57,0,0,0,182,252,252,252,252,10,0,0,0,0,0,0,0,0,254,252,252,252,252,179,0,0,0,0,0,0,0,0,182,252,252,252,252,10,0,0,0,0,0,0,0,0,254,252,252,252,252,179,0,0,0,0,0,0,0,107,226,252,252,252,252,10,0,0,0,0,0,0,0,0,255,252,252,252,252,179,0,0,0,0,0,99,169,225,252,252,252,252,98,4,0,0,0,0,0,0,0,0,254,252,252,252,252,232,182,182,182,182,182,222,252,252,252,252,252,252,22,0,0,0,0,0,0,0,0,0,254,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,85,6,0,0,0,0,0,0,0,0,0,255,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,34,0,0,0,0,0,0,0,0,0,0,35,56,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,223,19,0,0,0,0,0,0,0,0,0,0,3,56,252,252,252,252,252,252,252,252,252,252,252,252,252,65,22,2,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,252,252,252,252,252,252,252,78,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,132,132,132,132,132,132,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,226,253,253,253,253,253,253,246,198,198,198,121,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,173,227,253,253,253,253,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,46,46,46,46,20,38,46,46,46,46,46,231,253,253,209,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,242,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,217,239,253,253,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,160,239,253,253,253,253,145,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,235,253,253,253,253,219,137,9,0,0,27,38,38,38,0,0,0,0,0,0,0,0,0,0,0,0,59,226,253,253,253,253,253,120,104,104,104,104,209,253,253,253,0,0,0,0,0,0,0,0,0,0,0,51,216,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,25,195,241,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,132,253,253,253,253,253,253,253,253,253,253,253,253,253,253,172,139,139,139,0,0,0,0,0,0,0,0,0,132,253,253,253,253,253,253,253,253,253,253,253,132,241,172,22,0,0,0,0,0,0,0,0,0,0,0,0,103,238,196,196,242,170,8,148,8,8,8,8,3,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,107,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,192,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,59,177,252,253,228,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,165,253,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,159,252,202,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,156,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,227,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,246,119,57,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,199,252,252,253,177,169,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,252,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,254,253,254,253,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,131,252,253,252,253,172,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,213,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,92,254,253,254,253,203,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,163,203,253,252,253,252,253,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,253,254,253,254,253,203,122,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,252,253,212,131,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,156,255,171,156,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,185,250,253,254,253,253,247,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,253,253,222,175,100,174,137,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,216,34,0,0,0,31,225,235,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,41,0,0,0,0,0,195,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,254,235,15,0,0,0,0,10,209,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,163,253,241,62,0,0,0,0,40,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,226,253,196,18,0,0,25,180,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,96,25,92,240,247,213,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,208,231,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,254,255,219,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,150,253,253,253,204,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,253,222,253,213,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,254,250,116,27,221,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,254,83,0,0,120,254,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,61,0,0,0,150,255,254,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,106,0,0,0,0,178,253,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,236,168,79,79,153,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,213,254,253,253,253,253,254,204,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,238,253,253,253,133,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,205,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,251,253,173,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,200,253,228,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,240,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,193,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,239,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,243,238,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,242,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,253,174,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,174,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,240,204,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,241,238,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,222,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,184,253,180,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,198,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,199,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,236,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,240,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,16,0,0,0,0,57,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,127,0,0,0,0,32,248,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,227,127,0,0,0,0,0,240,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,127,0,0,0,0,0,240,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,119,0,0,0,0,0,240,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,249,41,0,0,0,0,0,240,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,188,0,0,0,0,0,10,243,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,168,0,0,0,0,0,57,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,211,128,128,128,57,57,101,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,253,253,253,253,254,253,253,253,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,82,97,113,113,113,113,183,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,70,0,113,171,254,254,254,254,224,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,251,248,253,253,253,253,253,253,253,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,251,253,253,253,253,54,19,19,200,253,253,250,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,83,246,253,253,89,0,28,218,253,253,161,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,184,253,199,131,231,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,86,240,253,253,253,233,75,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,247,253,253,233,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,240,172,72,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,224,253,253,253,253,253,243,175,66,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,171,194,240,253,253,253,253,253,247,179,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,71,71,161,236,253,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,161,236,253,249,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,237,253,248,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,133,42,0,0,0,0,0,133,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,78,0,0,0,0,3,112,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,199,20,10,20,20,112,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,221,253,253,197,253,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,215,253,253,253,253,253,253,240,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,123,213,233,123,123,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,136,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,223,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,250,222,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,249,250,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,226,242,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,60,238,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,149,222,18,0,0,0,33,190,248,102,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,179,240,86,0,0,0,18,205,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,162,225,29,0,0,0,19,203,247,127,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,109,0,0,0,19,189,254,179,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,107,242,155,11,0,0,7,159,254,185,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,134,51,114,134,139,238,254,181,134,134,134,210,18,0,0,0,0,0,0,0,0,0,0,0,0,245,254,254,254,254,254,254,254,254,254,254,208,172,181,124,3,0,0,0,0,0,0,0,0,0,0,0,0,141,196,164,113,139,173,254,254,155,29,29,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,194,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,229,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,223,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,206,222,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,243,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,191,192,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,185,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,254,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,254,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,158,253,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,249,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,253,211,112,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,242,253,255,109,27,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,247,255,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,121,247,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,194,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,62,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,218,26,0,0,161,119,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,224,254,192,0,0,0,212,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,136,254,254,174,0,0,0,212,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,245,56,0,0,14,219,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,174,0,0,0,82,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,228,254,243,58,0,0,0,82,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,228,254,254,217,19,16,32,63,124,254,254,228,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,211,208,224,254,254,254,254,228,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,177,254,254,254,254,254,254,254,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,225,254,254,254,235,173,197,254,254,179,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,43,43,43,33,0,75,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,165,254,254,254,254,254,254,245,124,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,161,224,253,253,253,253,253,253,253,253,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,78,226,253,253,253,229,188,188,188,192,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,39,222,253,251,161,40,22,0,0,0,8,206,253,253,254,117,0,0,0,0,0,0,0,0,0,0,0,0,164,253,231,80,0,0,0,0,0,0,0,22,234,253,243,46,0,0,0,0,0,0,0,0,0,0,0,2,175,251,80,0,0,0,0,0,0,0,2,125,251,253,128,0,0,0,0,0,0,0,0,0,0,0,0,11,253,233,0,0,0,0,0,0,0,78,189,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,5,204,194,0,0,0,0,0,24,162,248,253,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,164,249,99,0,0,90,171,229,253,253,248,93,231,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,252,249,249,253,253,253,172,42,4,0,224,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,248,248,248,248,172,51,10,0,0,31,236,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,241,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,234,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,231,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,246,246,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,243,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,40,130,130,130,237,255,203,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,127,253,253,253,253,253,253,253,253,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,253,253,253,253,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,247,228,228,189,105,171,253,253,242,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,159,99,75,0,0,0,54,239,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,112,253,253,238,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,50,50,50,214,253,253,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,196,253,253,253,253,253,208,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,235,88,183,253,253,151,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,143,148,40,0,18,124,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,253,199,9,0,0,0,0,0,0,0,0,0,0,0,5,94,39,0,0,0,0,0,0,0,0,0,88,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,56,199,236,196,0,0,0,0,0,0,0,32,152,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,250,230,230,169,230,138,26,0,193,253,253,212,14,0,0,0,0,0,0,0,0,0,0,0,0,1,150,253,253,253,253,253,253,253,146,209,250,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,85,207,253,253,253,253,253,253,253,253,155,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,27,153,253,253,253,217,90,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,24,76,149,253,253,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,186,252,252,253,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,252,222,208,202,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,236,252,252,210,25,17,13,173,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,137,0,0,0,93,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,245,126,0,0,0,93,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,206,206,79,0,0,0,0,166,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,224,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,215,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,253,245,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,26,118,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,240,221,253,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,252,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,244,252,252,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,233,255,253,253,253,253,255,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,252,214,227,253,252,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,252,45,32,222,252,252,252,189,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,235,128,9,0,36,160,202,119,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,190,113,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,34,101,143,143,255,176,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,203,252,252,252,252,253,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,157,237,252,248,153,120,44,44,146,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,250,230,143,19,0,0,0,0,9,215,251,218,29,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,235,20,0,0,0,0,0,32,155,252,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,193,58,81,89,89,136,230,252,252,252,252,210,56,0,0,0,0,0,0,0,0,0,0,0,0,64,250,252,252,245,251,252,252,252,253,252,252,247,252,252,242,143,0,0,0,0,0,0,0,0,0,0,0,0,125,251,252,252,252,252,252,252,248,131,99,56,99,219,252,235,60,0,0,0,0,0,0,0,0,0,0,0,65,245,252,252,177,66,66,161,106,0,0,0,0,52,203,252,232,24,0,0,0,0,0,0,0,0,0,78,228,252,156,33,3,0,0,0,0,0,0,0,0,0,122,252,252,176,0,0,0,0,0,0,0,0,19,220,240,153,0,0,0,0,0,0,0,0,0,0,0,0,5,198,253,253,0,0,0,0,0,0,0,0,111,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,0,0,0,0,0,0,0,0,143,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,0,0,0,0,0,0,0,0,249,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,243,0,0,0,0,0,0,0,0,229,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,119,0,0,0,0,0,0,0,0,143,252,231,47,0,0,0,0,0,0,0,0,0,0,0,0,96,231,252,33,0,0,0,0,0,0,0,0,91,252,252,183,47,0,0,0,0,0,0,0,0,1,36,159,241,226,98,3,0,0,0,0,0,0,0,0,13,186,252,252,231,68,45,37,20,39,45,74,154,163,252,252,159,39,0,0,0,0,0,0,0,0,0,0,0,18,220,252,252,252,252,241,216,244,253,252,252,246,175,89,6,0,0,0,0,0,0,0,0,0,0,0,0,0,27,90,166,252,252,185,224,252,191,142,51,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,63,182,254,255,255,254,203,121,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,86,205,244,254,254,254,227,152,161,220,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,183,254,254,224,144,67,67,5,0,0,11,103,24,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,254,242,109,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,250,254,167,70,0,0,0,0,0,0,11,88,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,236,20,0,0,0,0,0,0,0,175,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,229,0,0,0,0,0,0,0,154,252,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,240,47,8,0,0,11,98,181,250,254,213,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,254,209,178,178,221,254,254,254,250,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,141,222,254,254,238,205,190,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,48,128,61,21,209,254,229,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,241,254,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,161,254,242,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,221,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,247,248,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,177,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,180,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,121,244,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,245,254,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,247,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,238,254,156,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,144,254,207,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,213,254,221,9,0,0,0,0,0,0,85,96,96,25,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,249,99,1,0,0,0,0,49,217,254,254,254,216,6,0,0,0,0,0,0,0,0,0,0,0,0,220,254,222,0,0,0,0,1,92,247,254,250,147,198,254,91,0,0,0,0,0,0,0,0,0,0,0,42,242,225,52,0,0,0,0,131,254,254,147,11,0,175,254,47,0,0,0,0,0,0,0,0,0,0,1,155,254,185,4,0,0,0,94,247,254,230,13,0,11,182,249,9,0,0,0,0,0,0,0,0,0,0,7,219,254,80,0,0,0,0,211,254,238,29,0,0,180,254,164,0,0,0,0,0,0,0,0,0,0,0,50,254,197,10,0,0,16,196,254,252,60,0,7,124,246,237,84,0,0,0,0,0,0,0,0,0,0,0,82,254,163,0,0,0,29,237,254,178,0,5,128,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,136,254,151,11,0,0,225,254,208,26,99,221,254,254,88,9,0,0,0,0,0,0,0,0,0,0,0,0,7,219,254,181,55,91,245,254,242,217,254,254,194,116,19,0,0,0,0,0,0,0,0,0,0,0,0,0,1,35,217,254,251,254,254,254,254,254,226,125,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,154,166,254,254,254,254,171,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,222,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,226,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,220,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,247,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,212,187,254,222,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,218,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,214,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,255,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,215,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,224,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,230,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,13,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,25,134,196,150,252,185,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,234,252,252,252,253,252,252,234,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,189,252,252,252,252,252,253,252,252,252,252,188,55,0,0,0,0,0,0,0,0,0,0,0,0,0,55,229,252,252,252,252,252,252,253,252,252,252,252,252,228,55,0,0,0,0,0,0,0,0,0,0,0,7,184,252,252,252,252,252,252,252,253,252,252,252,252,252,252,229,18,0,0,0,0,0,0,0,0,0,5,158,252,252,252,252,224,200,252,252,253,244,111,224,252,252,252,252,157,4,0,0,0,0,0,0,0,0,13,252,252,252,252,143,24,60,243,252,243,32,0,47,225,252,252,252,252,11,0,0,0,0,0,0,0,0,122,252,252,252,252,60,0,0,130,247,131,0,0,0,72,252,252,252,252,121,0,0,0,0,0,0,0,0,248,252,252,252,136,3,0,0,0,11,6,0,0,0,3,104,230,252,252,131,0,0,0,0,0,0,0,0,255,253,253,228,35,0,0,0,0,0,0,0,0,0,0,0,206,253,253,253,0,0,0,0,0,0,0,0,253,252,252,204,0,0,0,0,0,0,0,0,0,0,0,7,209,252,252,183,0,0,0,0,0,0,0,0,253,252,252,211,11,0,0,0,0,0,0,0,0,0,9,156,252,252,252,131,0,0,0,0,0,0,0,0,230,252,252,252,152,0,0,0,0,0,0,0,0,33,189,252,252,252,252,109,0,0,0,0,0,0,0,0,47,252,252,252,235,89,61,61,61,3,3,61,135,194,252,252,252,252,88,4,0,0,0,0,0,0,0,0,9,187,252,252,252,252,252,252,252,195,197,252,252,252,252,252,228,133,6,0,0,0,0,0,0,0,0,0,0,5,134,252,252,252,252,252,252,252,253,252,252,252,252,187,54,0,0,0,0,0,0,0,0,0,0,0,0,0,6,116,225,252,252,252,252,252,253,252,192,132,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,116,143,143,34,23,24,23,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,216,253,28,0,0,0,26,141,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,252,252,28,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,252,224,19,0,0,29,234,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,234,252,253,202,19,0,0,0,185,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,176,38,0,0,0,57,253,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,252,202,38,0,0,0,0,131,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,29,234,253,252,224,19,0,0,0,0,10,197,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,51,234,252,253,227,43,0,0,0,0,0,128,252,252,252,226,88,0,0,0,0,0,0,0,0,0,0,0,170,253,253,255,253,253,253,254,253,253,253,254,253,253,253,254,228,31,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,253,252,252,252,253,252,252,252,253,214,19,0,0,0,0,0,0,0,0,0,0,131,252,252,253,196,168,168,168,168,234,252,253,252,186,68,56,43,0,0,0,0,0,0,0,0,0,0,0,7,28,28,28,9,0,0,0,26,222,252,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,254,222,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,113,193,254,253,254,213,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,253,252,253,252,223,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,244,203,123,203,203,243,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,212,81,0,0,0,0,122,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,255,253,224,40,0,0,0,0,0,0,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,61,0,0,0,0,0,0,82,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,192,0,0,0,0,0,0,51,193,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,213,30,0,0,0,0,21,142,233,252,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,131,51,51,72,112,214,253,254,253,244,203,41,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,252,253,252,253,252,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,254,253,244,162,113,233,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,91,112,111,40,0,51,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,192,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,92,31,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,253,151,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,192,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,164,215,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,197,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,216,97,58,58,58,102,154,248,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,254,254,186,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,75,72,72,92,88,72,48,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,24,0,0,12,61,180,211,247,180,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,249,144,2,89,218,254,241,126,91,235,214,132,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,215,171,254,237,93,23,0,0,0,88,238,176,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,251,254,150,14,0,0,0,0,0,0,92,238,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,231,41,0,0,0,0,0,0,0,0,59,237,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,220,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,245,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,215,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,31,0,0,0,0,0,0,0,0,0,93,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,243,111,4,2,0,0,0,0,0,0,104,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,187,243,225,198,164,134,68,68,68,119,234,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,184,233,223,254,254,254,254,255,201,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,4,62,62,142,190,158,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,123,246,253,253,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,199,253,253,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,200,253,243,109,170,253,174,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,207,253,244,177,38,218,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,253,253,177,3,170,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,253,207,23,120,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,251,248,252,253,253,199,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,253,253,253,247,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,234,235,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,149,205,205,82,100,235,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,161,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,244,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,235,254,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,254,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,250,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,215,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,236,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,237,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,100,0,0,0,1,44,111,111,84,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,227,7,0,0,15,159,254,254,254,254,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,254,167,0,0,14,229,254,224,69,19,86,254,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,167,0,16,218,254,198,17,0,0,73,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,254,104,0,111,254,240,34,0,0,3,160,243,74,0,0,0,0,0,0,0,0,0,0,0,0,0,9,250,254,158,49,250,254,68,0,0,22,156,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,201,169,254,190,4,0,4,178,254,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,244,254,254,254,157,68,145,225,254,196,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,193,252,254,254,254,239,154,72,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,237,254,181,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,200,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,245,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,250,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,168,0,0,0,0,0,0,104,209,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,250,136,47,16,47,91,203,250,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,243,254,254,230,254,254,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,225,254,254,254,254,254,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,113,113,43,29,47,239,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,182,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,20,95,215,214,214,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,86,199,253,253,254,253,253,226,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,77,201,253,253,253,222,154,34,91,253,245,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,222,65,14,0,0,18,238,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,254,241,142,0,0,0,0,0,0,235,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,241,233,142,0,0,0,0,0,0,0,234,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,25,240,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,254,156,201,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,20,111,154,215,232,253,253,253,254,236,233,180,46,0,0,0,0,0,0,0,0,0,0,0,43,116,176,211,253,253,253,254,253,228,174,100,78,12,0,31,0,0,0,0,0,0,0,0,0,0,79,204,244,253,244,213,213,250,253,254,234,111,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,83,244,253,253,215,45,0,99,248,253,193,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,145,45,23,82,163,254,254,208,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,226,214,229,254,253,253,167,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,254,247,107,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,102,184,198,117,95,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,156,154,116,71,56,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,240,253,253,253,253,253,253,221,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,92,91,188,188,188,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,209,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,205,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,249,62,0,13,31,30,10,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,238,253,227,123,184,213,253,253,207,212,153,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,142,253,253,253,253,230,172,114,114,114,222,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,253,253,201,83,25,0,0,0,0,126,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,253,248,59,2,0,0,0,0,0,14,229,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,102,0,0,0,0,0,0,0,150,253,187,4,0,0,0,0,0,0,0,0,0,0,0,0,0,25,94,94,9,0,0,0,0,0,0,34,222,248,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,241,234,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,243,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,239,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,87,51,6,35,243,253,145,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,199,155,253,253,140,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,219,111,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,205,181,99,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,123,254,254,254,166,106,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,209,248,253,253,253,253,253,254,243,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,51,222,253,253,253,253,253,253,253,254,253,248,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,146,133,133,133,133,133,254,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,249,108,4,0,0,0,0,0,29,214,253,253,200,22,0,0,0,0,0,0,0,0,0,0,0,0,254,246,122,0,0,0,0,0,0,0,0,97,243,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,254,193,0,0,0,0,0,0,0,0,0,0,164,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,217,37,0,0,0,0,0,0,0,0,0,0,23,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,15,253,253,228,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,60,60,50,0,0,0,15,253,253,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,131,253,253,237,164,165,129,118,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,254,253,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,129,56,178,254,253,253,253,253,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,32,6,119,254,253,253,253,253,253,134,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,211,156,253,254,253,253,253,253,253,253,211,32,0,0,0,0,0,0,0,0,0,0,0,0,0,57,227,253,253,253,253,255,178,66,14,173,253,253,253,243,240,0,0,0,0,0,0,0,0,0,0,0,0,0,60,208,208,208,208,147,11,0,0,18,59,138,251,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,104,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,72,245,235,178,158,144,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,227,253,253,253,253,253,254,233,177,71,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,253,253,253,192,154,154,154,223,253,253,225,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,185,4,0,0,0,66,250,253,253,250,89,0,0,0,0,0,0,0,0,0,0,0,0,68,238,253,253,253,131,0,0,0,0,0,73,198,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,45,0,0,0,0,0,0,5,146,253,251,117,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,206,11,0,0,0,0,0,0,0,5,146,252,250,60,0,0,0,0,0,0,0,0,0,0,177,253,253,200,22,0,0,0,0,0,0,0,0,0,0,213,253,133,0,0,0,0,0,0,0,0,0,11,200,253,237,23,0,0,0,0,0,0,0,0,0,0,0,122,253,233,107,0,0,0,0,0,0,0,0,34,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,143,0,0,0,0,0,0,0,0,97,254,254,232,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,33,0,0,0,0,0,0,0,0,173,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,122,253,233,24,0,0,0,0,0,0,0,0,120,253,253,231,0,0,0,0,0,0,0,0,0,0,0,35,173,253,176,0,0,0,0,0,0,0,0,0,16,213,253,233,8,0,0,0,0,0,0,0,0,0,0,89,253,253,70,0,0,0,0,0,0,0,0,0,0,153,253,253,172,12,0,0,0,0,0,0,0,0,37,173,253,253,90,0,0,0,0,0,0,0,0,0,0,67,253,253,253,172,89,74,0,0,0,0,0,8,196,253,253,253,176,0,0,0,0,0,0,0,0,0,0,6,109,253,253,253,253,250,232,88,75,122,213,234,253,253,248,223,44,0,0,0,0,0,0,0,0,0,0,0,0,95,171,244,253,253,253,253,255,253,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,176,176,233,253,254,253,253,213,104,66,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,143,143,220,119,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,137,163,215,254,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,178,249,253,254,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,231,253,237,151,127,121,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,198,50,0,0,55,253,245,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,201,49,0,0,0,87,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,234,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,222,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,218,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,230,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,240,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,18,131,118,144,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,123,0,0,0,0,0,0,123,120,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,250,83,0,0,0,0,0,31,104,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,149,6,0,0,0,16,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,47,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,23,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,110,0,0,0,0,0,0,0,77,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,87,0,0,0,0,0,0,20,206,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,107,0,0,0,0,0,69,211,254,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,214,18,0,0,0,22,120,214,254,220,203,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,191,0,0,0,54,210,255,239,158,12,78,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,152,0,0,25,208,254,198,58,0,52,231,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,134,0,59,156,254,168,15,0,42,186,248,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,184,141,243,254,177,16,18,106,232,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,254,231,163,234,254,249,169,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,242,254,254,254,254,254,252,166,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,242,168,79,115,103,79,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,125,240,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,126,209,250,254,140,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,128,237,249,254,254,180,59,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,239,254,235,202,146,62,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,233,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,243,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,243,235,69,109,132,49,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,221,254,254,254,247,251,255,131,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,175,79,22,55,224,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,175,122,0,0,0,0,55,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,250,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,105,243,217,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,134,254,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,133,254,235,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,103,61,202,254,207,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,254,250,141,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,211,181,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,194,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,251,221,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,251,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,228,251,113,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,156,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,181,253,223,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,62,0,28,32,191,190,190,150,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,62,64,236,251,253,251,251,251,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,229,236,251,251,253,204,220,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,251,251,95,23,48,232,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,253,205,19,0,0,32,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,220,51,32,32,158,251,251,231,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,251,251,253,251,251,219,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,229,196,251,251,251,253,243,109,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,59,12,94,232,251,95,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,151,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,146,207,232,109,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,254,232,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,165,247,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,236,222,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,217,253,124,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,210,254,254,48,0,0,0,0,0,2,94,162,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,33,218,253,200,21,0,0,0,0,26,161,253,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,0,0,0,0,2,161,253,253,253,253,200,14,0,0,0,0,0,0,0,0,0,0,0,17,222,253,213,20,0,0,0,24,174,253,213,213,253,239,79,0,0,0,0,0,0,0,0,0,0,0,0,7,184,253,193,0,0,0,79,216,254,155,173,253,181,52,0,0,0,0,0,0,0,0,0,0,0,0,0,7,185,253,193,0,0,28,208,253,254,225,253,216,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,175,253,242,49,29,149,253,253,254,253,241,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,133,207,253,253,253,254,186,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,253,133,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,35,219,253,253,253,143,75,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,213,254,254,254,122,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,253,253,253,253,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,189,89,214,253,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,144,13,0,147,253,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,253,254,64,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,182,253,253,254,253,253,186,138,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,253,254,253,253,253,253,156,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,169,107,107,226,244,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,120,114,0,0,0,0,38,225,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,129,228,72,0,0,0,0,0,0,201,253,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,80,0,0,0,0,0,30,227,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,211,17,0,0,0,0,29,207,253,200,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,199,0,0,0,0,0,135,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,236,83,15,0,22,175,249,253,176,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,246,253,194,161,210,255,253,229,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,242,253,253,253,255,184,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,133,253,253,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,152,254,213,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,223,253,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,254,253,254,213,102,183,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,212,91,10,0,0,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,233,123,0,0,0,0,0,0,21,52,92,153,152,21,0,0,0,0,0,0,0,0,0,0,0,51,252,253,151,0,0,0,0,62,142,203,223,253,252,253,252,61,0,0,0,0,0,0,0,0,0,0,0,41,243,254,213,21,0,11,132,254,253,254,253,244,203,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,203,102,213,252,253,252,192,111,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,253,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,252,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,254,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,172,50,131,252,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,82,0,21,203,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,130,0,0,0,20,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,244,40,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,40,0,0,0,0,41,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,253,0,0,0,0,72,233,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,142,102,102,183,253,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,255,253,254,253,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,172,252,253,252,131,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,38,137,137,137,137,248,137,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,157,254,254,254,254,241,219,237,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,201,83,83,52,0,43,83,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,203,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,229,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,202,86,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,255,160,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,91,46,41,41,190,254,204,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,215,255,195,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,123,254,193,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,194,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,228,197,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,221,155,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,65,151,226,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,231,204,128,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,101,224,248,182,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,172,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,126,254,249,145,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,214,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,213,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,210,254,147,0,0,5,49,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,88,47,156,235,225,242,149,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,255,208,187,246,254,175,67,76,249,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,134,97,126,45,1,0,0,180,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,255,134,0,0,0,0,0,0,135,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,246,33,0,0,0,0,0,11,236,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,181,0,0,0,0,0,0,121,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,181,0,0,0,0,0,90,248,254,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,241,181,0,0,0,0,0,174,254,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,244,31,0,0,3,134,254,214,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,237,211,161,120,181,254,204,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,199,254,254,254,214,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,141,168,190,121,121,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,212,249,252,252,252,252,253,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,235,252,252,252,252,252,252,253,252,242,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,248,252,252,252,252,252,252,252,253,252,252,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,252,252,252,209,185,115,218,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,252,184,66,24,0,29,148,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,239,107,21,0,0,31,215,253,252,252,239,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,190,63,0,0,0,102,213,252,253,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,24,213,252,252,253,252,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,253,255,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,213,252,252,253,252,252,252,249,141,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,213,252,253,252,252,252,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,39,103,206,252,252,252,252,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,232,252,252,252,252,205,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,54,118,186,245,252,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,253,252,252,252,252,252,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,158,252,253,252,252,252,252,252,226,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,246,252,253,252,252,248,238,140,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,119,253,252,202,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,28,86,85,86,85,141,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,168,197,196,253,251,253,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,253,255,253,254,253,254,253,254,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,253,251,253,251,84,83,84,196,253,83,0,0,0,0,0,0,0,0,0,0,0,0,141,253,255,196,169,56,0,0,0,0,0,0,85,253,254,84,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,83,0,0,0,0,0,0,0,0,85,251,253,83,0,0,0,0,0,0,0,0,0,0,0,169,255,253,169,0,0,0,0,0,0,0,0,0,141,253,254,84,0,0,0,0,0,0,0,0,0,0,0,168,253,251,168,0,0,0,0,0,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,169,254,253,169,0,0,0,0,0,0,0,0,0,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,168,253,251,168,0,0,0,0,0,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,169,254,253,226,56,0,0,0,0,0,0,0,57,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,56,139,251,168,0,0,0,0,0,0,0,0,168,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,108,108,108,108,213,241,241,156,185,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,228,241,254,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,173,215,212,176,173,173,173,74,39,39,51,253,0,0,0,0,0,0,0,0,0,0,0,0,54,201,63,0,0,28,25,3,0,0,0,0,0,0,14,253,0,0,0,0,0,0,0,0,0,0,0,89,205,253,80,0,0,0,0,0,0,0,0,0,0,0,4,66,0,0,0,0,0,0,0,0,0,18,160,241,253,245,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,193,253,253,246,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,228,134,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,134,242,254,254,255,255,254,247,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,55,174,253,253,253,253,247,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,26,26,121,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,67,0,0,0,8,175,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,232,187,187,187,194,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,247,253,253,253,253,253,232,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,226,232,235,226,148,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,198,114,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,141,170,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,114,0,29,141,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,141,0,0,0,29,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,86,86,86,198,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,114,170,226,255,255,255,255,255,255,255,255,141,198,86,86,0,0,0,0,0,0,0,0,0,0,57,198,255,255,255,170,86,57,57,57,198,255,141,86,0,0,57,57,0,0,0,0,0,0,0,0,0,170,255,255,141,86,0,0,0,0,0,57,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,29,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,141,0,0,0,0,0,0,0,86,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,29,0,0,0,0,29,141,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,198,170,114,170,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,198,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,96,134,153,96,96,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,171,190,191,236,251,251,251,253,251,141,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,251,251,253,251,251,220,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,243,188,50,31,91,236,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,133,251,95,82,0,0,0,0,91,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,32,214,251,251,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,111,251,253,243,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,158,205,251,251,253,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,255,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,220,220,220,220,221,220,236,251,251,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,67,228,253,209,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,159,197,0,0,0,0,0,0,0,158,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,24,194,255,221,0,0,0,0,0,48,96,194,255,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,224,32,12,32,191,190,221,251,251,253,207,31,0,0,0,0,0,0,0,0,0,0,0,0,0,32,204,253,251,251,173,251,253,251,251,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,213,251,251,251,251,253,251,251,251,211,129,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,114,251,251,251,253,132,94,94,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,206,254,255,157,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,176,235,214,94,193,229,162,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,232,225,63,0,0,171,240,239,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,196,229,36,0,0,0,91,213,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,242,43,0,0,0,7,206,251,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,129,5,0,0,22,201,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,238,24,0,0,58,199,253,231,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,144,156,162,237,145,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,138,222,234,127,18,90,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,214,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,207,174,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,242,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,212,199,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,228,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,224,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,232,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,108,193,147,147,189,209,181,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,114,143,254,254,254,254,254,254,254,226,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,251,209,140,115,32,153,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,128,103,37,0,0,0,17,246,254,193,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,234,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,250,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,254,142,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,250,253,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,222,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,254,221,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,244,254,217,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,112,222,254,192,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,215,254,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,251,254,254,228,35,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,219,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,254,254,183,104,104,104,104,104,159,165,165,165,212,212,212,182,60,0,0,0,0,0,0,0,0,99,253,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,146,0,0,0,0,0,0,0,0,193,254,254,254,254,254,254,254,254,254,254,188,184,184,214,184,184,253,235,59,0,0,0,0,0,0,0,0,101,254,252,146,146,146,100,63,38,38,38,3,0,0,16,0,0,37,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,248,248,248,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,131,243,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,245,154,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,193,77,64,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,192,78,12,8,183,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,13,0,0,64,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,235,253,251,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,184,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,66,15,0,0,0,11,157,253,253,209,27,0,0,0,0,0,0,0,0,0,0,0,0,0,54,173,189,242,253,204,159,17,11,89,253,253,208,28,0,0,0,0,0,0,0,0,0,0,0,0,23,173,246,253,253,253,253,253,253,202,195,253,253,207,29,0,0,0,0,0,0,0,0,0,0,0,0,82,210,253,253,253,253,253,253,253,253,253,253,253,207,30,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,238,214,104,156,253,253,253,253,253,253,182,40,16,0,0,0,0,0,0,0,0,0,0,0,97,251,253,132,89,80,163,237,253,253,229,244,253,253,253,236,37,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,245,227,127,25,70,187,227,227,136,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,246,190,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,191,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,117,117,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,111,150,167,255,254,223,142,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,161,221,253,253,253,253,253,253,253,188,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,170,252,253,238,196,114,12,10,10,42,240,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,253,253,173,38,0,0,0,0,0,0,152,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,91,7,0,0,0,0,0,80,130,220,129,3,0,0,0,0,0,0,0,0,0,0,0,0,56,233,253,173,10,0,0,0,0,0,134,249,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,231,10,0,0,0,0,7,135,246,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,227,0,0,0,27,84,200,253,253,253,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,239,110,110,134,230,253,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,240,253,253,253,253,253,243,161,251,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,146,183,166,155,152,41,0,249,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,0,0,249,253,236,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,251,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,218,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,201,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,240,253,235,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,229,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,104,159,247,219,168,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,204,222,252,254,254,254,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,9,161,168,135,188,251,254,227,146,67,67,96,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,236,178,95,3,0,0,0,61,254,254,29,0,0,0,0,0,0,0,0,0,0,0,53,179,249,254,220,127,26,0,0,0,0,0,0,144,254,197,5,0,0,0,0,0,0,0,0,0,0,54,236,254,254,225,33,0,0,0,0,0,0,0,0,231,254,154,0,0,0,0,0,0,0,0,0,0,0,126,254,254,163,33,0,0,0,0,0,0,0,0,70,254,253,72,0,0,0,0,0,0,0,0,0,0,0,32,68,43,7,0,0,0,0,0,0,0,0,0,117,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,217,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,251,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,197,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,175,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,224,185,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,118,118,177,254,254,254,255,176,118,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,201,253,253,253,253,253,253,253,253,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,19,40,40,40,40,40,40,44,214,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,131,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,183,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,169,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,182,253,230,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,240,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,251,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,237,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,248,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,42,208,253,242,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,243,253,197,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,119,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,67,102,171,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,38,132,220,254,228,163,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,190,254,245,195,77,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,207,85,0,0,0,0,0,0,0,74,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,248,166,10,0,0,0,0,32,134,128,157,91,3,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,136,2,0,8,44,114,186,219,129,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,241,25,0,84,207,255,178,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,184,169,252,211,44,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,138,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,224,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,206,225,91,162,244,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,247,85,0,7,157,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,129,0,0,0,29,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,214,175,6,0,0,0,29,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,85,0,0,0,0,81,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,246,16,0,0,0,26,216,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,244,0,0,0,0,89,244,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,82,0,0,104,250,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,227,229,129,164,243,184,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,159,177,211,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,254,218,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,252,247,163,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,214,253,252,252,252,244,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,210,252,252,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,51,217,252,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,252,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,201,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,185,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,245,252,251,178,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,253,252,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,237,253,253,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,127,252,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,232,216,127,171,127,127,171,169,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,253,252,252,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,235,253,252,252,226,235,236,182,244,147,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,164,248,241,157,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,184,249,254,254,254,254,247,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,210,254,254,192,134,208,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,235,190,54,0,101,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,27,223,254,254,217,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,211,82,0,0,143,254,254,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,241,226,31,95,244,254,246,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,181,171,254,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,254,228,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,254,254,217,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,254,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,241,255,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,241,21,157,254,243,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,236,0,74,254,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,239,55,177,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,254,254,254,248,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,180,254,254,254,250,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,143,163,163,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,100,226,254,196,254,254,198,254,254,173,105,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,253,253,254,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,218,217,217,224,253,226,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,170,205,205,101,84,84,0,0,0,17,205,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,240,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,246,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,255,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,161,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,221,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,253,224,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,243,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,114,148,25,148,78,139,122,193,148,183,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,127,224,252,123,252,226,252,252,253,252,236,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,205,221,198,214,224,152,180,199,252,253,252,251,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,21,0,0,0,0,0,92,217,252,243,237,212,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,141,232,252,252,79,76,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,210,253,253,199,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,224,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,199,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,229,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,255,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,252,252,184,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,83,82,242,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,161,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,36,167,166,0,0,0,0,0,0,0,0,0,215,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,245,122,25,0,0,0,0,0,8,78,201,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,226,173,85,85,85,173,201,252,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,180,252,252,253,252,252,252,252,253,252,251,205,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,252,253,252,252,252,252,216,215,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,129,104,226,199,147,59,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,224,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,177,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,228,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,189,254,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,239,68,0,0,0,0,0,0,56,117,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,182,254,150,0,0,0,0,0,0,93,242,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,244,0,0,0,0,0,0,105,236,249,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,160,0,0,0,0,0,92,235,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,36,0,0,0,4,103,247,254,199,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,27,0,0,58,183,254,254,146,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,155,114,201,250,255,254,158,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,254,254,254,254,198,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,122,195,232,254,254,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,195,254,206,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,245,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,235,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,198,248,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,55,180,253,139,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,84,252,252,252,253,236,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,252,195,79,69,186,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,185,29,0,0,50,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,232,90,0,0,0,0,0,19,24,24,97,138,44,13,0,0,0,0,0,0,0,0,0,0,0,0,168,253,231,37,0,0,0,30,130,236,252,253,252,252,235,113,0,0,0,0,0,0,0,0,0,0,0,0,84,253,231,69,0,32,185,228,252,252,189,122,69,69,44,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,252,130,76,228,253,252,153,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,252,246,238,252,180,22,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,47,253,252,252,202,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,136,252,247,227,252,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,209,252,252,188,46,221,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,252,200,63,5,137,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,222,253,128,0,0,123,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,252,140,8,0,0,142,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,227,252,132,70,70,142,234,252,168,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,161,252,252,252,253,252,252,176,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,221,252,252,243,189,54,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,150,234,254,167,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,129,254,254,254,254,78,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,138,194,227,150,150,181,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,190,63,0,0,25,242,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,180,246,220,36,0,0,0,0,236,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,141,254,186,38,0,0,0,8,111,250,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,162,31,0,0,0,13,189,254,254,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,221,31,0,0,0,61,201,254,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,241,254,60,0,28,110,192,241,254,254,254,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,200,188,251,254,254,219,254,254,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,250,254,254,191,143,60,91,255,249,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,28,28,1,0,99,244,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,239,254,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,254,235,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,236,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,118,252,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,149,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,247,93,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,176,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,176,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,56,232,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,147,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,253,253,253,253,227,113,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,182,253,253,253,223,173,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,145,253,253,253,240,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,184,253,253,253,240,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,253,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,240,101,17,49,162,186,186,186,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,230,253,253,215,48,51,102,240,253,253,253,253,228,14,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,218,163,239,253,253,253,253,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,16,233,253,253,253,253,253,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,253,253,253,253,253,185,166,196,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,230,127,8,0,132,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,154,100,136,223,248,253,253,212,11,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,253,253,253,253,253,253,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,2,102,253,253,253,253,253,253,253,253,253,253,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,102,253,253,253,253,253,253,253,253,213,193,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,147,253,253,226,129,129,129,90,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,131,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,215,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,216,254,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,120,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,227,30,0,0,0,30,38,38,38,38,4,0,0,0,0,0,0,0,0,0,0,0,0,0,34,219,254,248,114,0,10,44,138,236,254,254,254,254,176,168,29,0,0,0,0,0,0,0,0,0,0,3,165,254,254,192,0,10,96,254,254,254,254,254,254,254,255,254,217,28,0,0,0,0,0,0,0,0,0,41,254,254,248,73,0,78,254,254,254,254,254,254,254,254,254,254,254,157,0,0,0,0,0,0,0,0,36,223,254,254,193,0,63,233,254,254,254,254,164,68,68,68,145,254,254,224,0,0,0,0,0,0,0,0,131,254,254,254,99,11,192,254,254,254,236,89,12,0,0,0,107,254,254,130,0,0,0,0,0,0,0,0,131,254,254,247,79,102,254,254,254,199,71,0,0,0,0,0,143,254,254,130,0,0,0,0,0,0,0,0,131,254,254,136,103,254,254,239,85,13,0,0,0,0,0,81,250,254,254,29,0,0,0,0,0,0,0,0,131,254,254,234,254,254,254,162,0,0,0,0,0,0,0,204,254,254,214,65,0,0,0,0,0,0,0,0,177,254,254,254,254,241,161,51,0,0,0,0,0,0,35,236,254,213,25,0,0,0,0,0,0,0,0,0,145,254,254,254,254,250,77,0,0,0,0,30,100,100,218,254,254,82,0,0,0,0,0,0,0,0,0,0,13,148,255,255,255,254,87,53,104,200,201,238,254,254,254,254,210,22,0,0,0,0,0,0,0,0,0,0,0,22,254,254,254,254,243,246,249,254,254,254,254,254,254,155,22,0,0,0,0,0,0,0,0,0,0,0,0,1,91,254,254,254,254,254,254,254,254,254,158,94,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,79,130,112,6,91,69,69,97,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,155,175,254,155,71,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,254,254,254,254,254,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,165,165,230,254,254,254,254,254,254,254,201,66,5,0,0,0,0,0,0,0,0,0,0,0,0,0,60,247,254,254,254,251,234,195,153,134,179,248,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,33,171,244,254,254,200,73,0,0,0,0,0,54,234,254,20,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,246,123,7,0,0,0,0,0,0,0,225,182,2,0,0,0,0,0,0,0,0,0,0,0,53,225,254,248,81,0,0,0,0,0,0,0,6,52,235,174,0,0,0,0,0,0,0,0,0,0,0,0,155,254,244,80,0,0,0,0,0,0,0,0,87,249,254,120,0,0,0,0,0,0,0,0,0,0,0,0,155,254,152,0,0,0,0,0,0,0,0,23,230,254,198,18,0,0,0,0,0,0,0,0,0,0,0,0,46,246,90,0,0,0,0,0,0,0,23,214,254,241,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,53,0,0,0,0,0,0,21,206,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,177,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,167,254,254,221,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,211,254,254,223,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,208,254,254,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,209,254,254,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,170,254,254,239,71,36,22,36,36,22,36,67,135,135,5,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,254,254,254,254,229,254,254,229,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,254,254,254,254,254,254,254,254,254,254,255,254,245,43,0,0,0,0,0,0,0,0,0,0,0,5,84,245,215,254,254,254,254,254,254,254,254,254,241,154,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,26,146,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,132,114,123,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,210,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,254,250,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,233,254,254,234,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,254,247,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,151,254,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,255,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,210,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,226,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,166,254,241,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,97,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,204,162,162,68,47,47,68,162,162,162,152,38,0,0,0,0,0,0,0,0,0,0,0,0,0,19,69,174,255,253,253,253,253,255,253,253,253,253,255,241,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,46,77,161,161,161,161,77,46,151,254,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,168,254,158,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,234,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,156,253,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,228,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,195,228,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,203,250,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,250,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,164,247,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,216,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,139,246,74,0,0,0,0,0,0,5,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,161,0,0,0,0,0,0,0,17,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,204,169,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,251,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,224,237,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,255,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,229,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,150,253,255,254,223,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,232,253,253,253,253,225,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,253,253,201,219,253,160,0,0,17,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,231,253,236,130,2,163,116,19,0,85,217,211,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,106,0,0,9,0,0,0,129,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,98,0,0,0,0,0,75,229,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,146,0,0,0,71,194,250,253,253,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,253,214,13,62,141,248,253,253,237,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,221,253,253,253,252,189,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,253,253,192,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,200,253,253,253,237,119,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,115,239,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,190,253,253,253,217,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,216,253,253,220,51,112,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,218,253,245,104,9,0,110,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,192,253,247,82,0,0,6,163,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,142,0,0,5,156,253,253,227,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,253,239,124,115,115,208,253,253,200,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,149,207,253,157,149,149,82,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,101,175,254,254,255,217,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,66,200,216,253,253,253,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,182,253,253,253,253,181,107,107,107,142,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,250,253,242,160,114,7,4,0,0,0,2,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,239,253,216,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,250,253,177,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,245,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,125,246,253,230,69,0,0,22,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,238,131,131,216,129,37,131,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,22,240,253,253,229,82,165,160,166,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,108,249,253,253,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,209,253,187,90,219,253,250,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,251,253,160,5,0,44,238,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,235,63,0,0,61,241,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,172,253,83,0,0,27,235,253,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,61,0,153,173,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,142,109,245,253,253,220,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,246,199,45,0,0,0,0,0,0,0,24,10,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,201,87,0,0,0,0,0,0,0,0,0,109,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,108,108,108,108,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,228,108,0,0,205,236,253,253,253,243,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,249,82,39,208,219,173,67,39,39,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,106,0,121,189,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,222,79,0,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,122,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,248,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,192,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,134,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,22,0,0,0,0,0,0,0,121,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,251,156,11,0,0,0,0,0,0,121,76,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,85,40,0,0,0,3,54,220,230,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,230,253,253,232,174,174,174,178,253,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,142,249,253,253,253,239,238,226,94,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,107,107,107,50,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,76,248,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,114,127,232,194,13,153,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,92,217,254,254,252,226,138,13,80,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,195,254,253,209,97,75,0,0,0,23,235,225,19,0,0,0,0,0,0,0,0,0,0,0,0,0,83,241,253,245,93,13,0,0,0,0,0,0,169,253,28,0,0,0,0,0,0,0,0,0,0,0,0,26,244,253,203,75,0,0,0,0,0,0,0,0,169,253,28,0,0,0,0,0,0,0,0,0,0,0,64,205,254,194,13,0,0,0,0,0,0,0,0,0,170,254,28,0,0,0,0,0,0,0,0,0,0,19,195,254,215,19,0,0,0,0,0,0,0,0,0,0,169,234,22,0,0,0,0,0,0,0,0,0,0,123,253,245,81,0,0,0,0,0,0,0,0,0,0,23,235,130,0,0,0,0,0,0,0,0,0,0,0,198,253,176,0,0,0,0,0,0,0,0,0,0,0,79,253,56,0,0,0,0,0,0,0,0,0,0,70,254,242,51,0,0,0,0,0,0,0,0,0,0,0,205,248,50,0,0,0,0,0,0,0,0,0,19,226,253,140,0,0,0,0,0,0,0,0,0,0,0,76,254,122,0,0,0,0,0,0,0,0,0,0,29,253,253,140,0,0,0,0,0,0,0,0,0,0,67,210,194,19,0,0,0,0,0,0,0,0,0,0,29,253,253,140,0,0,0,0,0,0,0,0,0,0,147,253,63,0,0,0,0,0,0,0,0,0,0,0,29,254,254,141,0,0,0,0,0,0,0,0,4,54,220,75,0,0,0,0,0,0,0,0,0,0,0,0,10,197,253,216,57,45,0,0,0,0,45,108,180,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,235,253,254,241,198,198,135,160,241,215,156,56,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,191,255,253,253,253,254,228,140,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,139,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,252,232,236,129,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,38,141,215,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,157,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,85,93,93,25,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,85,210,250,253,252,236,94,0,0,0,0,0,0,0,0,0,24,253,253,161,0,0,0,0,0,0,3,66,253,253,243,231,245,253,161,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,118,252,240,164,50,5,178,252,160,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,85,253,240,81,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,15,219,252,194,9,0,0,0,0,157,253,206,0,0,43,212,252,252,119,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,230,253,102,0,43,178,253,252,136,4,0,0,0,0,0,0,0,0,0,0,43,247,253,201,11,0,0,0,231,255,128,170,253,253,242,95,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,193,17,0,0,157,253,252,252,252,231,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,252,253,209,153,164,215,253,252,252,195,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,244,253,252,252,252,252,245,160,77,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,148,252,252,252,147,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,195,254,254,254,254,254,255,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,191,253,253,253,253,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,190,253,253,253,253,240,191,242,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,187,253,253,253,253,253,200,0,211,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,66,253,253,253,253,241,209,44,23,218,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,253,182,0,0,131,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,217,253,253,244,111,37,0,0,131,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,165,0,0,0,22,182,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,240,45,0,0,0,53,253,253,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,168,253,216,45,0,0,0,0,53,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,147,0,0,0,0,0,53,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,252,253,227,5,0,0,0,0,0,53,253,243,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,124,0,0,0,0,0,0,156,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,164,253,142,5,0,0,0,0,0,32,233,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,130,0,0,0,0,0,37,203,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,147,36,36,36,36,151,222,253,245,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,202,253,253,253,253,253,253,253,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,253,253,248,235,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,173,253,253,253,253,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,78,96,253,253,253,137,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,47,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,207,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,139,247,171,68,0,0,66,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,193,224,253,253,253,236,64,0,62,253,253,207,16,0,0,0,0,0,0,0,0,0,0,0,0,107,139,247,253,253,253,253,253,253,84,0,62,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,139,250,253,253,253,253,253,253,253,253,84,0,42,222,253,253,193,0,0,0,0,0,0,0,0,0,6,121,251,253,253,253,230,222,82,68,143,180,23,0,0,162,253,246,87,0,0,0,0,0,0,0,0,0,127,253,253,253,253,129,33,0,0,0,0,0,0,0,0,162,253,199,0,0,0,0,0,0,0,0,0,186,248,253,253,218,22,2,0,0,0,0,0,0,0,0,197,245,253,106,0,0,0,0,0,0,0,0,0,115,253,253,253,107,0,0,0,0,0,0,0,0,0,0,216,253,253,199,0,0,0,0,0,0,0,0,0,254,253,253,208,31,0,0,0,0,0,0,0,0,83,124,234,253,253,124,0,0,0,0,0,0,0,0,0,160,253,253,174,37,0,0,0,0,0,0,0,62,99,253,253,251,183,33,0,0,0,0,0,0,0,0,0,255,253,253,16,0,0,0,0,0,5,30,169,243,253,253,240,136,0,0,0,0,0,0,0,0,0,0,0,184,253,253,203,99,0,0,15,116,157,253,253,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,247,216,216,220,253,253,253,253,236,182,38,29,0,0,0,0,0,0,0,0,0,0,0,0,37,215,253,253,253,253,253,253,253,253,248,245,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,207,253,253,253,253,253,197,145,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,45,45,45,45,45,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,61,187,248,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,222,116,84,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,143,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,231,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,121,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,213,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,135,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,161,4,0,0,0,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,200,6,0,78,162,207,218,135,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,216,31,16,163,251,190,126,130,210,208,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,68,30,233,154,40,0,0,0,80,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,154,0,15,149,10,0,0,0,4,190,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,45,0,0,0,0,0,4,47,172,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,15,0,0,0,45,78,168,254,207,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,233,163,143,163,252,255,226,135,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,140,175,234,254,209,149,66,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,63,26,162,245,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,114,80,89,138,198,243,242,214,254,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,254,253,253,253,254,240,187,71,46,46,182,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,245,244,160,128,40,0,0,0,68,240,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,55,0,71,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,160,0,0,0,68,119,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,136,19,87,170,254,255,182,0,0,0,0,0,0,0,0,0,0,0,0,81,72,17,0,22,47,72,235,253,236,237,253,248,173,56,11,0,0,0,0,0,0,0,0,0,0,0,22,228,253,225,207,228,253,254,253,253,253,254,232,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,220,253,254,253,253,253,254,253,210,128,69,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,93,93,93,51,60,254,224,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,64,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,128,191,255,255,191,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,64,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,191,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,64,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,220,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,254,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,234,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,151,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,251,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,249,73,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,231,0,0,96,196,196,223,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,231,16,178,245,255,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,254,241,192,254,254,254,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,254,245,142,243,254,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,206,25,0,232,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,227,27,15,147,247,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,247,254,254,243,102,178,254,254,215,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,254,254,254,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,250,254,254,254,254,254,162,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,254,218,36,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,202,73,73,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,231,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,230,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,251,253,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,255,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,230,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,253,253,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,190,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,206,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,210,14,0,0,0,0,0,0,48,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,101,0,0,0,0,0,0,0,190,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,170,0,0,0,0,0,0,0,166,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,47,0,0,0,0,0,0,80,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,253,122,2,0,0,0,0,0,6,206,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,252,199,21,0,0,0,0,0,0,91,252,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,18,0,0,0,0,0,0,18,239,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,191,0,0,0,0,0,0,0,145,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,226,36,0,0,0,0,0,100,247,231,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,245,252,242,232,232,232,232,233,247,251,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,190,237,221,189,189,253,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,21,0,45,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,208,86,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,122,190,255,242,132,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,123,237,252,252,253,252,252,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,156,252,252,252,252,253,252,252,252,155,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,155,252,252,252,252,229,141,84,101,236,252,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,252,229,140,38,0,0,27,229,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,228,112,0,0,0,0,71,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,70,0,0,0,0,61,234,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,190,7,0,0,0,160,237,252,252,252,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,245,131,109,218,229,253,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,218,252,252,252,252,252,253,252,252,252,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,251,253,253,242,249,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,108,108,5,132,252,252,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,222,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,252,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,252,226,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,244,253,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,232,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,141,255,253,253,153,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,253,252,252,252,244,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,252,253,252,252,252,253,240,159,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,178,28,28,178,253,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,78,0,0,0,176,254,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,252,252,53,0,13,144,243,253,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,228,198,209,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,252,253,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,235,253,254,253,253,253,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,133,97,196,109,159,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,79,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,245,245,230,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,191,227,253,253,250,197,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,44,98,244,253,236,107,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,242,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,243,253,127,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,218,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,255,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,196,254,130,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,246,253,164,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,201,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,78,0,0,0,0,0,0,12,93,147,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,181,106,106,106,153,192,192,219,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,203,253,253,254,253,253,253,253,253,252,177,94,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,78,78,79,78,78,78,78,78,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,222,254,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,197,248,254,253,253,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,248,253,253,230,164,222,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,253,245,169,20,0,133,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,240,61,0,0,40,243,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,159,0,53,73,176,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,231,184,248,254,253,253,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,212,253,253,240,191,231,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,67,106,35,0,216,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,248,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,230,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,211,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,202,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,198,226,226,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,255,226,198,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,170,29,0,0,0,86,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,57,0,0,0,170,198,0,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,0,0,29,255,255,0,0,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,114,0,0,0,86,226,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,86,170,198,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,226,198,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,86,29,0,114,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,14,36,43,123,148,218,253,255,253,253,102,0,0,0,0,0,0,0,0,0,0,0,8,85,173,191,190,195,211,242,253,252,252,252,252,253,252,252,153,0,0,0,0,0,0,0,0,0,0,43,226,252,252,253,252,252,238,231,232,231,134,126,187,253,252,233,42,0,0,0,0,0,0,0,0,0,0,64,247,252,226,172,163,92,28,0,0,0,0,70,239,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,135,121,24,0,0,0,0,0,0,0,62,239,252,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,192,252,251,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,187,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,187,252,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,239,252,167,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,218,252,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,247,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,246,183,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,190,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,227,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,245,231,237,252,250,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,243,82,0,21,154,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,167,0,0,0,18,209,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,107,0,0,0,0,43,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,141,0,0,0,0,43,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,106,0,0,0,0,52,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,106,203,185,150,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,175,254,253,253,253,253,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,252,253,252,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,223,91,21,167,252,253,252,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,226,35,0,0,91,252,225,120,247,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,59,0,0,107,239,252,167,0,144,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,60,0,68,245,253,174,0,0,9,187,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,226,103,237,252,205,11,0,0,0,64,252,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,252,253,252,233,51,0,0,0,0,6,152,253,123,2,0,0,0,0,0,0,0,0,0,0,0,0,0,21,172,190,153,42,0,0,0,0,0,0,0,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,173,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,84,0,0,0,0,0,0,0,0,0,0,0,0,0,56,16,0,0,0,0,0,0,0,0,0,0,0,79,202,20,0,0,0,0,2,29,29,70,126,176,222,222,251,193,0,0,0,0,0,0,0,0,0,0,0,0,217,232,96,128,159,188,192,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,254,254,254,254,254,254,254,202,197,197,112,28,0,0,0,0,0,0,0,0,0,0,0,236,254,254,249,232,247,230,225,134,118,38,38,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,254,254,100,6,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,150,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,218,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,254,200,178,178,178,88,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,254,254,254,254,254,254,254,243,175,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,224,254,254,254,254,254,242,245,254,254,254,254,217,152,2,0,0,0,0,0,0,0,0,0,0,0,0,20,232,254,178,131,82,118,14,27,136,240,254,254,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,27,81,1,0,0,0,0,0,0,21,210,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,240,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,135,201,253,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,17,151,93,68,10,0,0,0,0,65,220,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,254,231,194,74,78,161,253,254,254,219,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,158,158,158,158,158,158,158,158,158,158,158,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,175,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,253,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,239,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,249,124,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,216,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,184,0,0,0,0,0,0,0,44,67,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,219,13,0,0,0,115,162,210,200,200,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,249,103,0,0,0,107,254,253,253,253,253,253,239,9,0,0,0,0,0,0,0,0,0,0,0,0,100,253,174,0,0,0,0,135,254,253,116,88,88,107,244,99,0,0,0,0,0,0,0,0,0,0,0,0,100,253,145,19,0,0,0,221,254,153,10,0,59,146,253,99,0,0,0,0,0,0,0,0,0,0,0,0,52,249,253,159,11,5,0,221,254,219,122,180,246,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,249,198,155,241,255,253,253,253,220,137,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,154,253,253,253,253,253,254,253,189,244,114,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,71,196,253,253,253,254,224,25,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,244,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,255,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,249,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,244,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,230,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,97,175,240,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,77,191,246,150,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,173,254,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,114,233,241,103,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,225,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100,228,252,154,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,202,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,248,238,130,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,101,249,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,237,80,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,160,138,254,228,131,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,233,254,254,33,3,100,225,254,249,230,130,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,27,0,0,6,87,172,251,254,221,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,27,0,0,0,0,0,46,97,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,251,254,211,13,0,0,0,0,0,0,9,214,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,229,18,0,0,0,0,0,0,60,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,0,0,0,19,222,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,254,254,133,0,0,0,0,0,142,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,226,254,165,0,0,0,0,96,250,254,227,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,244,0,0,0,0,201,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,10,10,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,234,253,253,253,253,128,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,141,141,141,212,253,253,253,253,253,253,196,0,0,0,0,0,0,0,0,0,0,20,19,19,76,207,207,223,253,253,253,253,253,253,253,253,253,253,242,117,5,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,128,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,226,239,253,253,253,253,253,253,253,253,253,199,36,36,36,36,36,246,253,253,0,0,0,0,0,0,0,0,0,83,232,253,253,253,253,253,253,253,253,27,0,0,0,0,0,245,253,253,0,0,0,0,0,0,0,0,0,0,73,140,253,253,253,253,253,253,253,27,0,0,0,0,0,245,253,253,0,0,0,0,0,0,0,0,0,0,0,8,27,212,253,253,253,253,229,23,0,0,0,0,27,246,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,214,121,89,43,104,104,104,209,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,7,140,253,253,222,222,240,204,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,205,246,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,253,253,253,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,74,74,74,74,74,74,74,74,74,74,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,119,119,24,0,0,0,0,80,119,119,119,192,249,249,0,0,0,0,0,0,0,0,0,0,0,47,230,253,254,254,140,112,209,243,243,251,254,254,254,254,254,197,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,254,255,254,254,254,254,254,255,254,249,149,73,0,0,0,0,0,0,0,0,0,0,151,240,254,254,254,254,227,156,156,156,156,156,156,76,25,24,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,254,254,179,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,247,254,254,180,58,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,245,254,254,215,99,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,254,254,212,99,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,113,214,254,255,255,254,210,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,112,215,254,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,157,241,254,219,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,206,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,254,244,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,157,33,81,245,254,246,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,254,255,254,254,203,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,241,254,254,254,196,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,117,117,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,22,148,172,215,254,254,221,130,30,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,83,148,253,253,253,253,253,253,253,253,253,156,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,251,235,235,235,235,240,253,253,253,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,6,174,155,105,90,0,0,0,0,29,141,248,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,211,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,161,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,44,44,44,71,167,233,253,253,238,164,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,123,183,253,253,253,253,253,253,253,237,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,203,253,253,253,253,253,253,253,253,230,77,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,191,191,107,68,68,101,240,253,253,229,137,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,183,253,253,253,146,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,98,243,253,253,87,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,204,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,193,3,0,0,0,0,0,0,0,0,3,106,223,201,0,0,0,0,0,0,0,0,0,0,0,223,253,253,26,0,0,0,0,0,0,0,0,0,7,253,253,251,153,106,106,34,0,0,0,0,0,0,39,236,253,253,64,0,0,0,0,0,0,0,0,0,7,253,253,253,253,253,253,241,236,175,236,138,151,175,242,253,253,204,15,0,0,0,0,0,0,0,0,0,1,18,135,135,207,253,253,253,253,253,253,253,253,253,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,85,129,129,129,220,253,253,253,253,253,144,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,203,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,220,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,243,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,238,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,49,192,254,254,255,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,211,145,254,227,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,79,0,98,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,199,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,230,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,191,64,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,128,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,128,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,64,255,255,255,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,64,255,255,255,64,64,191,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,64,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,252,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,252,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,156,252,252,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,252,204,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,245,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,77,157,254,255,191,234,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,253,253,239,218,138,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,149,111,189,173,67,40,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,136,217,124,23,13,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,164,0,0,48,73,136,94,73,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,240,120,211,243,253,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,228,253,253,253,223,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,206,180,86,124,124,247,253,248,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,201,191,98,12,0,0,0,0,17,194,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,201,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,228,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,63,0,0,0,0,0,0,79,253,207,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,88,0,0,0,0,0,3,93,253,248,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,174,68,27,0,67,68,175,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,232,218,253,253,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,234,253,253,253,253,253,253,236,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,237,211,253,211,217,137,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,84,0,0,121,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,135,0,0,195,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,135,0,0,128,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,244,115,0,0,98,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,195,0,0,0,98,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,196,0,0,0,99,255,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,245,33,0,0,98,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,235,27,0,13,145,254,253,199,124,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,105,0,58,192,253,254,253,253,253,200,137,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,173,128,235,253,253,254,253,253,253,253,254,248,60,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,255,254,254,229,98,255,254,78,53,98,99,98,30,0,0,0,0,0,0,0,0,0,0,0,0,7,235,253,254,251,165,115,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,254,135,0,0,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,169,18,0,0,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,139,23,0,0,0,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,235,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,118,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,223,250,232,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,230,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,177,0,0,0,0,0,0,0,0,4,39,172,172,23,0,0,0,0,0,0,0,0,0,0,0,0,254,253,181,4,0,0,0,0,0,0,11,115,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,131,0,0,0,0,0,107,220,253,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,252,229,111,111,111,158,252,253,241,72,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,13,79,239,253,253,253,253,253,253,253,161,24,56,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,151,194,253,253,186,184,73,13,0,144,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,68,68,2,0,0,0,0,144,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,197,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,140,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,216,253,240,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,230,253,241,179,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,203,232,232,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,79,125,208,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,104,157,246,245,247,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,37,227,236,236,236,249,253,232,192,137,105,78,241,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,7,183,246,253,202,107,26,17,0,0,0,158,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,35,7,0,0,0,0,0,99,249,230,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,220,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,194,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,175,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,223,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,235,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,241,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,184,254,255,184,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,200,253,253,253,215,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,236,253,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,246,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,113,252,253,206,64,196,253,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,227,46,2,179,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,217,253,237,33,0,15,253,253,195,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,150,253,253,94,0,0,110,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,218,3,0,0,152,253,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,233,253,230,26,0,0,60,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,170,0,0,0,140,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,253,200,6,0,0,2,182,253,209,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,124,0,0,0,96,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,245,50,0,0,42,218,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,223,0,0,10,238,253,248,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,223,0,13,184,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,251,78,107,253,253,221,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,232,250,253,236,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,240,253,253,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,205,253,143,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,175,200,185,76,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,181,255,254,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,254,177,127,141,248,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,238,66,0,0,32,214,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,116,0,0,45,231,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,195,192,10,0,10,219,123,225,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,117,0,0,0,0,142,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,238,24,0,0,53,187,245,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,223,178,193,254,254,207,236,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,170,254,254,254,225,105,8,223,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,159,184,110,0,0,0,223,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,238,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,246,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,242,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,198,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,214,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,52,148,236,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,146,211,252,252,252,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,153,241,253,252,242,160,134,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,143,246,252,252,243,153,42,0,132,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,182,103,35,0,0,71,228,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,222,106,0,0,0,0,101,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,63,16,0,0,0,15,164,247,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,192,252,251,91,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,239,253,252,245,99,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,239,252,253,252,252,252,218,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,183,253,253,253,255,239,211,239,253,255,183,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,201,252,252,196,168,63,42,0,42,142,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,180,42,0,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,190,110,7,0,0,0,0,0,0,132,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,176,246,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,87,166,253,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,85,182,232,252,253,252,252,231,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,197,232,237,252,252,252,244,214,126,126,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,221,162,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,217,208,147,68,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,240,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,239,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,250,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,248,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,234,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,0,0,0,0,0,23,27,27,9,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,0,0,0,0,62,237,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,0,0,0,57,241,253,253,253,234,121,0,0,0,0,0,0,0,0,0,0,0,108,254,254,53,0,0,0,0,0,122,254,254,254,223,159,255,240,51,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,0,57,248,253,213,104,9,3,178,253,107,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,13,241,254,253,39,0,0,20,203,253,107,0,0,0,0,0,0,0,0,0,0,74,245,253,95,0,0,0,14,253,254,253,26,0,0,97,253,230,17,0,0,0,0,0,0,0,0,0,0,0,228,253,204,53,0,0,14,253,254,196,37,110,201,240,243,96,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,239,96,54,65,253,254,253,218,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,30,122,245,253,253,253,253,253,255,253,253,253,243,114,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,232,253,253,253,253,255,253,243,184,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,107,107,107,177,247,253,214,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,176,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,249,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,171,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,195,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,219,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,122,0,0,0,0,0,0,10,55,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,62,0,0,0,0,71,162,235,254,252,231,124,5,0,0,0,0,0,0,0,0,0,0,0,0,0,224,239,0,0,0,0,76,248,246,194,87,106,223,255,129,0,0,0,0,0,0,0,0,0,0,0,0,0,224,177,0,0,0,6,216,240,33,0,0,0,37,221,252,55,0,0,0,0,0,0,0,0,0,0,0,13,232,182,0,0,0,53,254,65,0,0,0,0,0,36,201,136,0,0,0,0,0,0,0,0,0,0,0,44,247,192,4,0,0,155,254,28,0,0,0,0,0,0,129,199,3,0,0,0,0,0,0,0,0,0,0,0,146,254,62,0,0,109,254,65,0,0,0,0,0,0,8,254,46,0,0,0,0,0,0,0,0,0,0,0,65,252,127,0,0,109,254,23,0,0,0,0,0,0,74,246,35,0,0,0,0,0,0,0,0,0,0,0,0,244,212,4,0,82,252,49,0,0,0,0,0,2,137,171,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,197,26,0,142,141,10,0,18,31,67,167,206,19,0,0,0,0,0,0,0,0,0,0,0,0,0,3,139,246,238,208,194,254,199,208,234,246,158,116,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,126,209,254,207,177,116,100,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,238,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,195,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,195,0,0,0,0,0,188,195,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,196,0,0,0,0,82,254,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,199,3,0,0,0,156,253,253,253,253,132,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,254,39,0,0,0,156,253,253,106,205,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,91,0,0,0,156,253,253,19,113,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,135,0,0,0,156,253,253,49,239,254,248,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,255,238,18,0,0,156,254,254,254,254,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,226,110,20,163,253,253,253,253,254,221,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,223,253,253,253,253,254,253,253,253,253,205,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,128,253,253,253,254,253,253,253,185,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,155,118,230,254,253,185,65,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,22,92,219,227,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,199,240,254,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,240,253,253,254,253,248,156,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,200,129,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,226,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,251,253,176,90,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,254,246,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,231,254,254,254,255,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,45,45,45,236,253,250,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,199,248,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,199,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,60,207,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,164,164,208,241,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,254,229,208,138,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,196,227,178,178,118,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,152,152,173,253,254,253,254,253,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,252,253,252,253,252,253,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,162,203,203,163,122,102,122,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,104,160,179,202,179,93,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,87,220,254,214,201,201,210,254,173,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,93,23,6,0,0,4,153,254,230,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,186,254,146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,242,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,217,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,249,197,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,218,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,218,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,244,254,130,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,137,229,254,172,8,0,9,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,114,231,254,254,108,8,0,6,106,246,3,0,0,0,0,0,0,0,0,0,0,0,0,0,17,63,127,252,254,254,254,170,149,175,175,250,254,219,2,0,0,0,0,0,0,0,0,0,0,0,0,41,240,254,254,254,254,254,255,255,254,254,255,206,177,22,0,0,0,0,0,0,0,0,0,0,0,0,0,34,233,237,178,178,178,178,144,103,103,45,26,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,110,234,255,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,76,116,220,253,253,253,236,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,252,206,139,217,241,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,245,253,253,240,79,0,0,109,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,253,253,224,66,0,0,0,45,240,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,191,253,253,177,40,0,0,0,0,0,160,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,222,35,0,0,0,0,0,0,170,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,247,253,253,46,0,0,0,0,0,0,0,211,246,58,0,0,0,0,0,0,0,0,0,0,0,0,3,193,253,250,118,2,0,0,0,0,0,0,60,250,251,71,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,181,0,0,0,0,0,0,0,0,89,253,221,0,0,0,0,0,0,0,0,0,0,0,0,44,232,253,205,21,0,0,0,0,0,0,0,10,202,253,97,0,0,0,0,0,0,0,0,0,0,0,0,124,253,246,77,0,0,0,0,0,0,0,9,185,253,253,5,0,0,0,0,0,0,0,0,0,0,0,51,243,253,101,0,0,0,0,0,0,0,15,180,253,253,160,2,0,0,0,0,0,0,0,0,0,0,0,76,253,237,40,0,0,0,0,0,0,18,217,253,253,159,8,0,0,0,0,0,0,0,0,0,0,0,0,133,253,141,0,0,0,0,0,0,10,139,253,253,158,4,0,0,0,0,0,0,0,0,0,0,0,0,0,184,248,0,0,0,0,0,0,42,180,253,253,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,248,0,0,0,0,36,111,238,253,245,150,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,33,19,38,161,251,253,253,202,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,201,253,221,253,253,253,253,185,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,253,233,109,37,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,76,147,199,255,218,136,29,18,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,242,253,253,253,253,253,253,253,253,242,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,194,253,253,227,133,82,82,82,82,189,202,253,238,171,171,49,0,0,0,0,0,0,0,0,0,0,27,233,253,228,78,33,0,0,0,0,0,0,3,65,141,200,230,55,0,0,0,0,0,0,0,0,0,0,78,253,253,124,0,0,0,0,0,0,0,0,0,0,0,12,32,0,0,0,0,0,0,0,0,0,0,0,154,253,190,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,184,2,0,0,0,0,0,0,0,0,1,6,84,125,125,17,0,0,0,0,0,0,0,0,0,0,0,160,253,122,14,0,0,0,0,0,0,75,147,253,253,236,191,16,0,0,0,0,0,0,0,0,0,0,0,45,212,246,214,102,38,0,10,42,141,245,251,212,134,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,219,253,246,177,195,253,253,199,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,250,253,253,253,253,209,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,193,158,232,253,235,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,251,251,75,9,0,18,123,191,252,217,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,198,66,0,0,0,0,0,3,182,253,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,7,147,253,133,0,0,0,0,0,0,0,5,192,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,29,0,0,0,0,0,0,0,8,217,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,115,0,0,0,0,0,0,29,129,253,241,52,0,0,0,0,0,0,0,0,0,0,0,0,0,36,232,253,231,201,201,127,84,84,182,224,253,244,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,235,253,253,253,253,253,253,253,253,201,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,67,135,135,210,253,253,154,83,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,120,5,0,0,0,0,0,0,0,9,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,213,108,49,25,25,25,71,106,230,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,242,254,254,254,254,254,254,254,254,254,251,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,229,40,67,177,208,254,215,205,205,235,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,156,0,0,0,3,32,7,0,16,232,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,249,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,233,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,231,254,161,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,243,56,0,0,0,164,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,246,254,122,0,0,0,0,197,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,240,30,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,153,254,198,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,226,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,190,227,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,227,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,228,245,253,225,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,214,234,253,253,253,232,74,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,175,253,254,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,145,229,253,253,254,253,205,87,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,211,253,253,253,254,236,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,180,253,253,253,253,164,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,229,253,253,253,175,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,254,228,0,0,122,254,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,153,253,253,236,130,63,178,248,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,239,253,253,213,96,242,253,254,253,253,189,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,253,253,226,99,253,253,254,253,253,185,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,243,253,253,253,253,253,253,254,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,222,253,253,253,253,253,253,254,253,155,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,226,253,253,253,253,253,253,255,179,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,253,253,253,253,242,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,212,250,253,253,253,175,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,211,239,120,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,254,160,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,250,253,253,253,253,253,226,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,253,162,142,142,142,222,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,35,19,4,0,0,0,183,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,210,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,244,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,253,174,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,214,253,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,181,253,240,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,253,242,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,241,253,191,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,243,253,253,61,20,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,70,245,253,253,253,253,253,168,143,143,143,143,60,94,143,193,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,253,253,253,253,253,253,253,249,167,0,0,0,0,0,0,0,0,0,0,0,0,241,253,203,123,123,123,123,156,253,159,123,123,123,123,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,128,64,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,191,128,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,191,255,191,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,191,255,191,64,0,0,64,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,255,255,191,128,0,0,0,0,0,0,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,64,0,0,0,0,0,0,0,0,0,64,255,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,174,226,174,139,55,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,109,69,74,158,230,229,120,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,130,2,0,0,0,30,195,145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,116,0,0,0,0,95,255,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,214,19,0,0,0,146,192,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,210,63,0,39,161,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,44,220,128,226,204,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,189,241,238,93,104,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,142,58,11,181,197,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,191,57,0,0,11,145,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,152,0,0,0,0,0,138,222,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,42,0,0,0,0,0,0,205,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,186,1,0,0,0,0,0,0,70,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,181,0,0,0,0,0,0,0,1,183,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,209,3,0,0,0,0,0,0,0,125,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,106,0,0,0,0,0,0,0,102,236,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,206,14,0,0,0,0,0,0,116,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,164,0,0,0,0,0,20,198,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,186,196,112,33,62,120,238,227,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,102,173,193,198,173,92,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,92,211,255,227,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,102,235,254,254,254,254,249,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,254,254,254,254,254,254,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,200,159,234,254,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,231,254,254,254,247,105,3,0,168,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,254,254,137,0,0,0,168,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,254,254,254,187,2,0,0,6,218,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,254,216,24,0,0,0,54,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,19,228,254,254,254,172,0,0,0,0,173,254,254,219,28,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,250,67,0,0,0,25,231,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,254,254,192,0,0,0,0,163,254,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,28,251,254,254,254,110,0,0,0,82,248,254,254,198,19,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,254,43,0,0,30,248,254,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,2,190,254,254,254,211,9,0,83,224,254,254,254,121,5,0,0,0,0,0,0,0,0,0,0,0,0,0,21,235,254,254,254,216,116,168,249,254,254,254,220,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,254,254,254,254,254,254,254,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,254,254,254,254,254,221,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,254,254,254,254,254,241,181,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,242,163,125,125,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,162,195,153,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,247,254,253,253,236,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,254,253,253,253,254,161,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,220,253,253,253,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,195,85,248,197,184,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,177,0,21,4,0,169,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,253,253,51,0,0,119,237,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,235,17,0,184,254,185,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,237,136,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,124,254,253,253,253,241,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,253,253,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,155,210,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,247,254,244,38,50,237,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,254,89,0,0,161,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,254,23,0,0,161,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,255,48,0,26,255,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,254,224,138,214,254,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,203,253,253,253,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,253,219,103,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,212,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,252,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,218,47,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,225,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,222,255,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,158,253,178,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,239,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,233,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,247,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,107,167,167,185,254,242,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,107,222,251,254,234,183,183,183,217,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,190,249,189,105,17,13,0,0,22,124,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,240,230,97,0,0,0,0,0,84,237,160,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,220,68,0,0,0,0,0,54,250,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,131,0,0,0,0,0,10,179,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,131,0,0,0,0,9,180,254,212,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,251,169,4,0,13,49,182,254,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,189,163,235,254,255,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,208,254,254,223,254,254,205,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,67,254,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,171,254,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,230,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,247,251,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,171,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,193,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,237,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,238,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,214,255,237,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,21,0,0,0,0,0,88,244,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,88,250,253,253,253,253,250,146,66,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,253,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,208,253,253,187,60,20,54,247,253,253,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,236,29,0,0,0,95,249,253,253,233,98,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,253,246,59,0,0,0,0,0,97,249,253,253,231,6,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,144,0,0,0,0,0,0,0,137,247,253,253,160,0,0,0,0,0,0,0,0,0,0,0,78,243,253,192,5,0,0,0,0,0,0,0,0,97,252,253,244,39,0,0,0,0,0,0,0,0,0,0,244,253,248,102,0,0,0,0,0,0,0,0,0,0,171,253,253,46,0,0,0,0,0,0,0,0,0,75,252,253,144,0,0,0,0,0,0,0,0,0,0,0,171,253,253,46,0,0,0,0,0,0,0,0,0,153,253,253,107,0,0,0,0,0,0,0,0,0,0,0,171,253,253,46,0,0,0,0,0,0,0,0,0,197,253,224,13,0,0,0,0,0,0,0,0,0,0,8,200,253,253,46,0,0,0,0,0,0,0,0,6,204,253,157,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,46,0,0,0,0,0,0,0,0,14,213,253,141,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,46,0,0,0,0,0,0,0,0,0,189,253,211,10,0,0,0,0,0,0,0,0,0,0,125,253,253,193,5,0,0,0,0,0,0,0,0,0,69,251,253,118,0,0,0,0,0,0,0,0,0,21,201,253,246,30,0,0,0,0,0,0,0,0,0,0,0,149,251,250,188,65,0,0,0,0,0,0,23,200,253,251,106,0,0,0,0,0,0,0,0,0,0,0,0,0,103,226,253,248,135,58,58,140,161,161,248,253,225,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,76,156,253,253,253,253,253,253,155,118,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,146,255,255,175,130,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,248,253,253,253,253,253,230,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,202,253,253,253,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,251,228,167,233,253,230,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,251,139,0,0,39,228,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,251,139,0,0,0,0,43,242,200,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,82,0,0,0,0,0,0,159,253,197,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,193,148,88,175,242,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,243,178,94,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,253,253,228,115,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,253,253,253,253,253,253,253,253,253,253,253,243,230,11,0,0,0,0,0,0,0,0,0,0,0,0,14,210,253,253,253,253,253,168,141,141,235,253,253,253,253,179,3,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,253,227,45,3,0,0,113,179,253,253,253,195,3,0,0,0,0,0,0,0,0,0,0,0,0,1,163,253,229,101,0,0,0,0,0,2,5,169,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,239,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,246,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,255,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,237,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,241,251,251,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,251,251,251,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,245,251,251,251,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,251,251,251,251,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,200,251,251,251,251,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,251,251,251,243,111,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,251,251,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,136,225,253,251,251,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,251,253,251,251,220,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,255,253,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,231,251,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,251,251,251,253,169,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,244,251,251,251,251,168,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,156,251,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,251,251,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,251,251,251,251,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,251,251,251,226,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,251,251,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,251,251,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,213,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,237,186,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,250,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,249,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,145,124,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,221,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,242,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,241,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,163,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,248,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,37,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,237,253,238,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,178,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,236,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,30,0,0,0,0,12,182,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,202,0,0,0,0,113,254,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,139,0,0,0,83,249,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,192,176,0,0,0,0,165,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,251,136,0,0,0,85,253,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,228,254,124,0,0,0,28,233,247,91,6,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,210,255,242,20,1,0,0,174,254,138,81,206,140,0,0,0,0,0,0,0,0,0,0,0,0,0,44,188,254,254,254,254,172,156,156,253,254,254,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,37,228,254,254,254,254,254,254,254,254,254,254,202,124,27,0,0,0,0,0,0,0,0,0,0,0,0,27,229,254,189,56,5,5,5,154,254,254,196,30,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,190,17,0,0,0,0,146,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,97,11,0,0,0,0,47,235,248,100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,243,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,114,250,222,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,251,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,111,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,237,220,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,24,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,212,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,175,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,188,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,197,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,201,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,190,100,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,208,254,189,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,252,253,253,253,158,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,159,254,253,253,253,253,217,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,184,253,254,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,228,181,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,202,241,254,216,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,254,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,148,253,254,253,189,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,254,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,253,254,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,228,0,210,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,231,223,37,0,94,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,180,253,99,0,0,55,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,218,12,0,0,165,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,233,49,0,0,85,248,253,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,234,45,0,0,85,255,254,243,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,248,181,0,8,100,248,254,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,217,128,177,253,253,243,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,253,253,251,202,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,136,254,253,207,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,180,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,253,232,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,209,254,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,201,253,253,216,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,153,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,229,254,254,239,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,208,253,254,244,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,253,253,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,203,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,104,255,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,253,189,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,202,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,255,174,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,184,142,248,243,167,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,185,251,225,156,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,207,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,104,249,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,182,254,241,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,219,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,208,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,244,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,231,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,251,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,244,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,123,182,250,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,159,219,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,164,254,255,254,254,254,178,134,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,200,241,253,245,234,233,233,233,248,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,228,123,48,0,0,0,0,98,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,152,254,242,43,0,0,0,0,0,0,16,254,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,121,0,0,0,0,0,0,0,98,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,19,201,254,255,39,0,0,0,0,0,0,0,196,255,211,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,151,6,0,0,0,0,0,0,19,222,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,222,0,0,0,0,0,0,0,0,107,253,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,6,57,12,0,0,0,0,0,0,0,0,227,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,241,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,253,231,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,239,253,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,191,128,191,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,64,191,255,255,255,255,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,64,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,192,255,253,244,105,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,216,252,253,252,252,252,169,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,88,88,89,215,252,252,252,171,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,139,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,157,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,241,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,245,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,174,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,60,200,208,208,209,86,36,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,174,252,252,252,252,253,252,199,252,252,250,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,252,252,252,252,252,253,252,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,243,99,29,29,29,209,252,252,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,222,0,0,0,18,123,252,252,252,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,238,63,0,0,149,253,252,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,241,252,244,238,238,246,253,230,66,14,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,252,252,252,234,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,121,252,252,252,163,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,252,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,210,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,247,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,250,180,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,252,185,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,181,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,129,254,255,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,231,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,66,228,253,253,253,253,232,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,253,253,253,93,0,0,0,0,0,54,3,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,136,159,253,253,253,93,0,0,0,0,64,220,144,73,0,0,0,0,0,0,0,0,0,0,10,202,253,253,46,16,158,234,163,17,0,0,0,53,228,253,253,130,0,0,0,0,0,0,0,0,0,0,132,253,253,253,109,0,0,0,0,0,13,85,85,241,253,253,234,87,0,0,0,0,0,0,0,0,0,0,132,253,253,253,245,151,151,151,151,151,166,253,253,253,253,253,196,0,0,0,0,0,0,0,0,0,0,0,19,184,253,253,253,253,253,253,253,253,253,253,253,253,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,6,186,253,253,253,253,253,253,253,253,253,253,253,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,28,93,224,253,253,133,193,93,93,93,93,242,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,27,27,7,17,0,0,0,0,236,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,248,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,243,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,236,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,228,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,242,234,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,228,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,235,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,229,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,220,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,219,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,223,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,44,28,0,0,0,0,40,194,254,242,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,162,0,0,0,0,101,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,162,0,0,0,76,246,254,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,238,254,162,0,0,19,205,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,126,0,0,181,254,254,175,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,105,250,254,251,50,0,37,230,254,222,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,254,130,0,14,224,254,254,203,55,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,249,254,254,248,112,132,206,254,254,254,254,254,44,0,0,0,0,0,0,0,0,0,0,0,0,13,149,251,254,254,254,254,254,254,254,254,254,252,233,233,58,0,0,0,0,0,0,0,0,0,0,0,77,207,254,254,254,254,254,254,254,254,254,254,118,77,0,0,0,0,0,0,0,0,0,0,0,0,0,120,241,254,254,254,254,236,156,57,180,254,246,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,254,227,146,68,8,0,40,251,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,128,79,0,0,0,0,0,234,255,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,201,254,140,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,233,244,171,58,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,176,160,26,26,57,233,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,119,0,0,0,0,11,207,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,186,160,5,0,0,0,0,0,176,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,42,0,0,0,0,0,0,217,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,211,0,0,0,0,0,0,0,217,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,129,0,0,0,0,0,0,0,218,249,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,109,0,0,0,0,0,0,73,248,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,233,78,0,0,0,0,0,42,234,202,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,253,57,0,0,0,0,84,228,160,5,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,171,58,37,110,161,187,63,0,0,255,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,99,191,191,171,57,0,0,0,0,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,255,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,238,223,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,186,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,213,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,234,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,193,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,248,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,218,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,247,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,219,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,201,142,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,249,187,81,109,185,142,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,88,0,0,16,230,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,230,213,22,0,0,121,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,255,117,0,37,158,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,255,211,163,234,215,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,150,208,188,104,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,181,9,0,0,0,0,0,0,72,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,92,0,0,0,0,0,0,207,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,0,0,0,207,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,0,0,0,207,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,92,0,0,0,0,0,0,208,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,92,0,0,0,0,0,19,220,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,185,0,0,0,0,0,70,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,248,230,188,116,127,230,236,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,255,253,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,164,219,252,252,253,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,69,69,69,102,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,253,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,217,252,253,247,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,231,252,252,141,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,252,252,247,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,231,252,252,239,70,0,0,37,103,154,154,149,37,0,0,0,0,0,0,0,0,0,0,0,0,0,7,163,252,252,252,141,0,11,154,241,252,252,252,252,222,20,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,252,166,9,97,225,252,252,252,252,252,252,252,161,0,0,0,0,0,0,0,0,0,0,0,14,245,253,253,233,49,148,253,255,253,253,253,253,253,253,253,161,0,0,0,0,0,0,0,0,0,0,0,176,252,252,252,55,122,252,252,253,252,252,189,115,77,189,241,49,0,0,0,0,0,0,0,0,0,0,0,209,252,252,136,13,236,252,252,197,125,44,2,0,79,240,208,0,0,0,0,0,0,0,0,0,0,0,64,251,252,190,3,127,252,246,134,5,0,0,12,95,227,252,208,0,0,0,0,0,0,0,0,0,0,0,67,252,252,88,0,231,252,175,0,8,56,146,211,252,252,250,115,0,0,0,0,0,0,0,0,0,0,0,152,252,252,173,31,239,252,236,198,206,252,252,252,252,252,154,0,0,0,0,0,0,0,0,0,0,0,0,121,250,252,248,239,252,252,252,252,253,252,252,252,245,117,11,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,252,252,252,252,253,252,252,220,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,211,252,252,252,252,252,252,253,232,84,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,105,229,252,252,252,252,239,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,255,254,254,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,240,253,253,253,253,254,217,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,248,241,253,254,253,248,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,163,24,204,254,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,31,0,17,91,240,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,245,253,157,4,0,0,0,209,253,253,231,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,237,56,0,0,0,0,130,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,246,253,223,0,0,0,0,0,4,169,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,223,0,0,0,0,0,0,164,253,253,246,92,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,223,0,0,0,0,0,0,77,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,224,0,0,0,0,0,0,16,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,223,0,0,0,0,0,0,15,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,223,0,0,0,0,0,0,15,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,223,0,0,0,0,0,0,15,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,245,250,145,4,0,0,0,0,60,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,32,0,0,0,25,175,253,253,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,211,112,0,56,233,253,253,213,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,130,253,253,251,239,247,253,248,163,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,208,251,253,253,254,242,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,105,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,192,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,192,253,139,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,234,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,233,253,253,225,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,146,233,253,249,135,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,249,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,229,42,0,0,64,122,177,254,254,219,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,199,0,0,140,247,254,253,253,253,253,251,203,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,199,65,179,242,253,254,253,169,159,184,253,249,133,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,245,241,253,253,253,111,39,4,0,11,197,253,226,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,253,253,207,53,0,0,0,100,201,240,253,191,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,253,253,137,54,54,111,187,243,253,253,125,25,0,0,0,0,0,0,0,0,0,0,0,0,30,205,253,253,253,253,253,253,255,253,253,253,221,184,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,253,253,253,253,253,255,253,243,114,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,230,107,184,240,177,107,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,255,146,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,234,253,253,169,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,162,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,193,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,168,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,219,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,201,253,198,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,254,185,223,235,203,145,126,55,94,145,145,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,254,253,253,253,253,254,253,253,253,253,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,235,247,253,253,253,246,254,253,253,253,253,248,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,72,72,72,46,72,111,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,215,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,236,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,241,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,224,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,232,254,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,249,253,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,245,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,241,253,247,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,221,201,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,192,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,251,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,249,254,254,241,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,254,186,156,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,161,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,246,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,219,254,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,236,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,192,254,238,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,52,0,35,47,47,47,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,254,202,17,65,233,254,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,102,137,234,254,254,254,254,243,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,232,254,254,204,254,255,248,201,121,246,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,249,201,80,0,0,170,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,109,0,0,0,3,175,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,208,24,0,0,0,47,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,45,0,0,0,0,47,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,208,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,210,247,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,241,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,229,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,244,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,205,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,244,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,229,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,240,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,254,254,254,254,255,215,137,38,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,253,253,253,253,253,253,253,253,253,227,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,251,215,135,32,32,32,102,139,149,248,252,250,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,26,0,0,0,0,0,0,0,0,206,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,215,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,210,235,253,253,230,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,253,253,191,117,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,138,107,54,141,210,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,247,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,204,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,15,0,0,0,0,0,0,0,0,131,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,134,0,0,0,0,0,0,0,0,163,253,227,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,234,125,0,0,0,0,0,0,126,252,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,250,253,166,141,118,33,134,212,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,253,253,253,216,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,58,145,245,253,253,253,228,104,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,186,153,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,249,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,241,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,255,231,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,216,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,248,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,206,251,251,251,222,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,37,115,217,228,251,251,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,253,251,251,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,221,251,251,251,253,251,251,251,251,253,210,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,255,253,253,221,180,182,222,253,253,253,255,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,63,221,253,251,230,61,0,0,62,231,251,251,253,251,138,0,0,0,0,0,0,0,0,0,0,0,0,6,129,251,253,127,30,0,0,0,0,217,251,251,253,251,220,21,0,0,0,0,0,0,0,0,0,0,0,115,251,251,143,61,0,0,0,0,0,217,251,251,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,217,251,251,0,0,0,0,0,0,0,61,71,71,253,251,251,142,0,0,0,0,0,0,0,0,0,0,145,253,253,201,0,0,0,0,0,0,0,0,0,0,255,253,253,143,0,0,0,0,0,0,0,0,0,42,206,251,251,71,0,0,0,0,0,0,0,0,0,0,253,251,251,142,0,0,0,0,0,0,0,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,0,0,253,251,251,142,0,0,0,0,0,0,0,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,0,79,253,251,235,82,0,0,0,0,0,0,0,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,0,180,253,251,215,0,0,0,0,0,0,0,0,0,0,73,253,253,253,72,0,0,0,0,0,0,0,11,150,253,255,253,35,0,0,0,0,0,0,0,0,0,0,31,107,231,251,174,145,62,0,0,0,145,144,160,251,251,253,168,15,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,231,217,217,217,253,251,251,251,251,164,15,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,251,251,251,251,253,251,235,142,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,71,200,253,251,122,251,251,201,71,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,253,253,209,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,117,241,251,251,251,251,251,251,253,188,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,210,251,251,251,251,251,251,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,251,251,251,251,251,251,251,253,251,238,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,199,251,251,251,251,251,251,251,251,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,251,251,251,251,251,251,251,251,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,251,251,243,111,37,37,142,246,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,196,173,107,0,0,0,0,194,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,35,0,0,0,0,0,0,194,253,251,251,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,251,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,255,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,117,189,251,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,239,251,251,251,253,251,128,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,244,251,251,251,251,198,18,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,98,240,251,251,251,251,251,251,120,0,0,0,0,61,98,98,98,98,0,0,0,0,0,0,0,0,37,200,251,251,251,251,251,251,251,251,156,155,155,155,155,214,251,251,251,251,0,0,0,0,0,0,0,0,224,251,251,251,251,251,251,251,251,251,253,251,251,251,251,251,251,251,251,251,0,0,0,0,0,0,0,0,192,251,251,251,251,251,251,251,251,251,253,251,251,251,251,251,251,251,251,251,0,0,0,0,0,0,0,0,27,178,251,251,251,251,251,251,251,251,253,251,251,251,251,251,251,251,251,251,0,0,0,0,0,0,0,0,0,27,57,87,175,57,207,57,57,57,57,57,57,87,251,251,251,251,251,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,254,255,244,160,161,160,87,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,254,254,254,254,254,254,245,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,217,254,136,56,56,56,105,223,244,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,233,160,160,185,170,122,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,254,254,255,254,254,245,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,189,56,56,70,153,250,243,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,150,123,13,0,0,0,0,169,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,116,0,0,0,0,0,0,0,0,41,244,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,5,207,140,4,0,0,0,0,0,0,0,0,158,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,7,225,254,144,0,0,0,0,0,0,0,0,173,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,222,253,213,95,30,0,0,9,61,214,253,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,131,207,254,236,182,182,222,254,254,238,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,215,254,254,255,254,180,131,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,158,191,182,255,187,158,153,63,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,254,254,254,254,254,254,254,254,236,141,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,254,254,254,193,67,72,224,254,254,182,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,63,172,254,254,254,252,231,148,21,120,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,249,149,201,252,254,228,186,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,219,15,0,123,237,254,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,239,254,195,36,31,82,223,254,254,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,240,235,237,254,254,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,172,229,254,254,254,223,254,254,227,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,14,50,14,9,114,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,250,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,239,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,200,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,200,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,181,254,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,118,147,214,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,153,79,109,175,205,254,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,248,254,253,253,253,253,254,253,253,201,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,253,254,253,253,253,215,155,147,58,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,254,241,150,98,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,140,247,247,180,61,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,239,254,253,172,136,136,77,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,253,253,253,253,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,99,98,98,197,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,168,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,247,253,237,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,98,45,0,83,222,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,148,134,255,254,213,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,253,254,145,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,253,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,161,213,198,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,37,128,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,137,253,254,225,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,204,10,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,93,241,254,240,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,241,254,220,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,245,254,216,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,240,40,0,0,0,0,0,0,0,0,0,0,0,48,53,53,41,0,0,0,0,0,0,0,0,0,151,254,225,14,0,0,0,0,0,0,0,98,100,197,203,249,254,254,243,160,0,0,0,0,0,0,0,0,211,254,175,0,0,0,0,0,63,167,250,254,254,254,254,254,254,254,254,195,0,0,0,0,0,0,0,0,176,254,246,159,7,0,0,22,203,254,254,204,129,62,62,114,166,206,254,229,0,0,0,0,0,0,0,0,96,254,254,254,230,64,81,207,254,227,120,21,0,30,64,135,135,231,200,120,0,0,0,0,0,0,0,0,14,111,219,254,254,254,254,254,254,240,182,212,182,250,254,254,254,216,39,0,0,0,0,0,0,0,0,0,0,0,29,163,236,255,254,254,254,254,254,254,159,129,129,36,26,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,83,83,83,171,254,254,243,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,36,36,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,113,233,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,142,102,233,252,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,21,52,51,214,253,254,253,254,253,254,253,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,252,253,252,253,252,192,232,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,244,162,41,0,41,0,51,233,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,112,151,40,0,0,0,0,0,233,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,142,0,62,102,62,102,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,132,253,254,253,254,253,254,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,163,223,253,252,253,252,253,252,233,151,151,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,224,162,102,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,252,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,212,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,147,228,204,147,147,147,78,39,131,64,59,39,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,254,254,254,254,254,254,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,205,253,254,254,254,254,254,254,254,254,254,254,246,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,149,169,211,211,230,211,215,254,254,254,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,6,65,65,212,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,237,254,254,165,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,236,254,254,203,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,249,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,254,248,48,15,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,226,254,254,210,112,213,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,254,254,254,215,139,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,245,254,254,252,196,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,129,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,173,213,254,172,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,212,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,233,123,162,62,20,163,243,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,111,0,0,0,0,102,223,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,123,0,0,0,0,82,203,182,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,130,0,0,0,0,0,0,0,102,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,50,0,0,0,0,0,0,0,203,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,50,0,0,0,0,0,0,62,223,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,131,21,0,0,0,72,152,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,223,203,203,203,253,171,213,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,254,253,254,192,102,20,173,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,112,111,50,30,0,0,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,141,166,253,153,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,82,169,243,253,252,252,252,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,178,252,252,252,253,252,252,252,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,252,252,252,253,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,255,253,253,128,0,0,86,253,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,252,253,252,252,28,0,0,85,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,253,252,148,6,0,0,85,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,252,190,115,6,0,0,0,134,252,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,113,113,0,0,0,0,0,57,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,241,252,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,117,141,192,166,253,253,254,253,178,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,179,252,252,252,253,252,252,252,253,252,252,252,170,144,38,0,0,0,0,0,0,0,0,0,0,19,172,246,253,252,252,252,253,252,252,252,253,252,252,252,253,252,234,22,0,0,0,0,0,0,0,0,0,107,252,252,253,252,252,252,253,252,252,252,253,252,252,252,253,252,127,3,0,0,0,0,0,0,0,0,29,253,253,253,254,253,253,253,254,209,113,63,51,0,89,113,114,88,0,0,0,0,0,0,0,0,0,0,104,252,252,252,253,252,252,252,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,253,252,224,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,252,252,140,115,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,240,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,167,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,255,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,183,146,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,118,208,252,118,118,118,227,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,254,254,254,254,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,254,231,44,178,178,133,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,164,131,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,254,254,251,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,254,237,223,254,254,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,48,39,46,225,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,148,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,254,204,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,99,0,0,0,0,103,243,254,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,221,41,132,221,246,255,207,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,254,254,225,254,254,254,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,196,254,254,254,254,254,243,187,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,205,254,254,254,234,185,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,247,117,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,220,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,218,254,99,0,0,0,0,94,226,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,244,15,0,0,0,0,170,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,175,254,143,0,0,0,0,0,170,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,27,0,0,0,0,0,170,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,4,0,0,0,0,4,228,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,170,1,0,0,0,0,5,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,249,149,52,0,0,0,172,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,186,240,254,248,129,45,26,184,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,217,251,254,236,242,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,101,140,162,254,207,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,206,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,107,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,231,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,221,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,209,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,217,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,177,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,27,0,0,0,37,230,242,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,121,0,0,0,118,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,245,69,0,0,7,201,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,251,129,0,0,0,79,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,213,30,0,0,0,164,254,128,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,254,71,0,0,0,74,246,228,30,0,9,178,0,0,0,0,0,0,0,0,0,0,0,0,0,45,201,254,254,130,41,5,0,136,254,137,0,24,134,144,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,187,142,226,254,206,126,231,254,189,151,241,238,39,0,0,0,0,0,0,0,0,0,0,0,0,0,93,152,25,0,14,108,192,251,254,254,237,165,110,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,128,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,244,192,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,244,239,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,254,253,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,233,252,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,253,62,223,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,252,253,252,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,254,172,152,253,11,213,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,233,30,152,252,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,0,0,41,243,173,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,0,0,0,122,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,0,41,132,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,142,223,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,253,203,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,162,253,252,253,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,130,91,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,213,41,0,51,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,0,10,212,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,214,10,0,0,51,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,212,142,142,213,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,255,253,254,253,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,131,213,252,233,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,229,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,246,253,165,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,196,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,233,253,202,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,238,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,216,253,253,166,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,245,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,248,253,253,192,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,191,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,208,112,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,231,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,150,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,168,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,237,88,9,9,9,9,100,110,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,254,254,254,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,237,254,254,254,254,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,249,254,172,137,67,67,67,67,233,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,82,14,0,0,0,0,0,226,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,229,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,239,204,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,238,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,158,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,220,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,225,254,239,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,193,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,212,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,161,22,0,0,0,0,0,27,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,236,14,0,0,0,0,27,212,254,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,211,254,215,0,0,0,0,0,82,254,248,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,200,254,253,91,0,0,0,0,52,233,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,125,253,254,202,11,0,0,0,0,128,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,254,146,169,169,126,65,38,203,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,224,253,253,254,253,253,253,253,254,236,253,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,254,248,212,115,107,107,238,254,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,232,125,53,0,0,0,0,184,253,202,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,16,0,0,0,0,0,63,255,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,254,170,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,62,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,174,253,254,253,245,174,165,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,221,252,252,253,252,252,252,252,243,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,252,252,252,253,252,252,252,252,253,246,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,128,84,84,111,242,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,121,138,42,42,0,0,0,0,211,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,252,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,255,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,31,202,252,253,182,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,152,169,197,252,252,252,253,252,210,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,221,252,253,252,252,252,252,253,252,252,252,235,194,27,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,253,254,253,253,253,253,255,253,253,253,253,255,253,147,32,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,201,63,63,63,63,123,252,252,253,252,252,210,14,0,0,0,0,0,0,0,0,0,137,252,252,252,253,201,19,0,0,0,0,2,21,109,245,252,251,205,21,0,0,0,0,0,0,0,0,0,190,252,252,252,199,21,0,0,0,0,0,0,0,0,111,189,129,0,0,0,0,0,0,0,0,0,0,0,102,252,226,103,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,18,18,71,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,254,254,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,65,186,254,254,254,254,254,225,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,199,84,65,218,247,198,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,248,254,240,137,11,0,0,24,127,254,190,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,238,254,194,68,0,0,0,0,0,4,71,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,254,190,58,0,0,0,0,0,0,0,48,254,251,34,0,0,0,0,0,0,0,0,0,0,0,6,196,254,244,10,0,0,0,0,0,0,0,0,48,254,254,35,0,0,0,0,0,0,0,0,0,0,0,128,254,240,68,0,0,0,0,0,0,0,0,0,48,254,241,29,0,0,0,0,0,0,0,0,0,0,26,230,254,165,0,0,0,0,0,0,0,0,0,0,76,254,171,0,0,0,0,0,0,0,0,0,0,0,72,254,254,74,0,0,0,0,0,0,0,0,0,0,166,254,80,0,0,0,0,0,0,0,0,0,0,0,154,254,194,8,0,0,0,0,0,0,0,0,0,70,240,254,53,0,0,0,0,0,0,0,0,0,0,0,154,254,183,0,0,0,0,0,0,0,0,0,0,148,254,225,30,0,0,0,0,0,0,0,0,0,0,0,154,254,183,0,0,0,0,0,0,0,0,0,18,253,254,128,0,0,0,0,0,0,0,0,0,0,0,0,154,254,169,0,0,0,0,0,0,0,0,14,201,255,227,30,0,0,0,0,0,0,0,0,0,0,0,0,154,254,142,0,0,0,0,0,0,0,85,205,254,227,113,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,235,65,0,0,0,0,16,157,243,254,221,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,236,202,89,150,202,214,254,223,119,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,60,229,254,254,254,254,254,254,176,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,115,135,247,135,117,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,85,137,137,228,200,147,137,124,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,125,100,154,250,254,254,254,254,254,254,254,254,254,97,8,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,254,249,201,201,201,102,190,201,207,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,224,126,59,0,0,0,0,0,0,22,230,254,171,0,0,0,0,0,0,0,0,0,0,0,0,172,254,223,41,0,0,0,0,0,0,0,0,25,238,254,171,0,0,0,0,0,0,0,0,0,0,0,0,172,254,244,26,0,0,0,0,0,0,0,0,30,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,168,253,254,195,9,0,0,0,0,0,0,9,195,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,197,11,0,0,0,0,22,198,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,206,254,254,191,35,0,0,36,236,254,250,135,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,77,134,228,242,96,96,242,254,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,254,254,254,220,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,255,254,255,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,245,254,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,253,223,124,219,254,197,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,254,217,0,0,33,217,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,251,39,0,0,0,33,240,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,253,118,25,0,0,0,232,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,158,251,254,221,120,120,202,250,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,254,254,254,197,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,28,135,219,254,254,146,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,213,236,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,254,254,247,173,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,218,254,254,254,254,254,237,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,254,254,204,123,114,181,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,244,254,226,71,3,0,0,78,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,207,254,241,46,0,0,0,0,36,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,189,254,254,97,0,0,0,0,0,36,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,247,19,0,0,0,0,0,103,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,242,254,186,249,57,0,0,0,0,0,124,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,254,175,19,91,52,0,0,0,0,0,153,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,231,18,0,0,0,0,0,0,0,29,240,237,21,0,0,0,0,0,0,0,0,0,0,0,0,18,235,254,79,0,0,0,0,0,0,0,0,129,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,191,3,0,0,0,0,0,0,0,0,183,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,44,0,0,0,0,0,0,0,0,97,250,173,6,0,0,0,0,0,0,0,0,0,0,0,0,0,237,244,29,0,0,0,0,0,0,0,11,190,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,208,5,0,0,0,0,0,0,10,179,254,220,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,53,0,0,0,0,0,54,183,254,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,243,121,36,24,106,166,255,254,222,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,254,254,254,254,254,249,190,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,178,254,254,187,79,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,202,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,104,253,232,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,123,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,211,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,253,135,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,232,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,254,162,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,253,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,234,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,197,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,195,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,212,253,211,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,213,253,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,255,253,150,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,158,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,24,24,24,45,170,201,201,139,118,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,253,252,252,252,252,253,252,252,177,161,151,17,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,252,253,252,233,183,183,190,252,252,252,252,253,188,19,0,0,0,0,0,0,0,0,0,0,0,9,154,252,210,46,45,33,0,0,5,45,45,45,98,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,7,117,75,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,218,252,253,106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,45,222,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,185,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,153,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,249,133,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,70,145,161,162,161,195,229,254,254,254,254,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,253,253,253,254,253,253,253,254,253,253,253,254,107,0,0,0,0,0,0,0,0,0,0,0,0,19,240,230,251,253,236,230,230,230,196,138,158,253,253,254,107,0,0,0,0,0,0,0,0,0,0,0,0,15,160,34,63,69,19,0,0,0,0,0,47,253,253,228,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,136,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,248,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,125,254,248,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,254,185,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,235,253,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,253,242,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,184,254,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,254,254,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,224,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,253,244,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,255,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,244,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,228,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,239,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,92,1,0,0,4,204,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,74,0,0,65,254,234,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,234,239,20,0,0,107,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,180,0,0,0,152,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,106,0,0,37,248,235,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,213,12,0,0,99,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,135,0,0,0,178,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,241,234,43,0,0,35,231,254,82,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,109,254,164,0,0,11,96,254,231,54,99,167,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,218,162,189,231,233,254,254,254,254,225,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,254,254,241,160,128,57,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,247,118,86,49,49,181,255,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,77,0,0,0,15,235,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,243,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,249,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,255,254,210,150,68,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,160,160,160,217,253,138,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,238,210,43,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,72,0,0,0,0,0,0,0,0,39,145,249,131,9,0,0,0,0,0,0,0,0,0,0,0,0,5,195,217,0,0,0,0,0,0,0,0,0,0,132,253,133,9,0,0,0,0,0,0,0,0,0,0,0,47,253,217,0,0,0,0,0,0,0,0,0,0,10,174,253,154,0,0,0,0,0,0,0,0,0,0,0,47,253,217,0,0,0,0,0,0,0,0,0,0,0,10,176,245,87,0,0,0,0,0,0,0,0,0,0,47,253,149,0,0,0,0,0,0,0,0,0,0,0,0,16,233,250,61,0,0,0,0,0,0,0,0,0,134,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,138,1,0,0,0,0,0,0,0,0,150,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,253,46,0,0,0,0,0,0,0,0,150,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,46,0,0,0,0,0,0,0,0,150,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,46,0,0,0,0,0,0,0,0,150,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,46,0,0,0,0,0,0,0,0,96,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,246,41,0,0,0,0,0,0,0,0,47,253,228,21,0,0,0,0,0,0,0,0,0,0,0,7,167,253,164,0,0,0,0,0,0,0,0,0,5,152,253,201,19,0,0,0,0,0,0,0,0,0,15,167,253,236,10,0,0,0,0,0,0,0,0,0,0,31,247,253,158,21,0,0,0,0,0,0,0,49,230,253,235,103,0,0,0,0,0,0,0,0,0,0,0,0,50,219,253,229,169,115,28,11,11,71,150,237,253,197,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,151,253,253,253,253,253,253,253,253,253,180,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,76,156,253,253,253,253,236,149,52,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,110,105,142,220,255,180,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,220,253,253,253,253,253,253,174,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,247,253,253,253,253,253,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,149,253,253,253,253,253,200,103,102,251,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,253,253,253,253,234,130,3,0,0,249,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,10,191,253,253,253,253,239,57,0,0,0,49,251,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,253,236,54,0,0,0,0,124,253,240,30,0,0,0,0,0,0,0,0,0,0,0,0,100,247,253,253,253,235,61,0,0,0,0,88,244,253,146,0,0,0,0,0,0,0,0,0,0,0,0,47,248,253,253,253,245,56,0,0,0,0,9,178,253,237,39,0,0,0,0,0,0,0,0,0,0,0,27,217,253,253,253,253,144,0,0,0,0,0,205,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,253,185,5,0,0,0,22,133,251,253,172,1,0,0,0,0,0,0,0,0,0,0,0,39,238,253,253,253,152,10,0,0,0,67,205,253,253,211,28,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,251,74,0,0,0,22,205,253,253,184,28,0,0,0,0,0,0,0,0,0,0,0,0,15,211,253,253,253,114,0,0,7,121,223,253,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,245,24,0,58,189,253,253,251,129,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,253,144,31,86,235,253,253,202,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,235,114,220,253,253,253,187,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,253,253,253,228,161,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,253,253,189,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,224,253,235,145,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,202,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,252,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,245,181,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,216,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,253,231,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,250,252,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,220,252,252,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,252,252,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,214,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,172,252,142,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,255,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,239,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,65,0,0,0,22,150,224,215,204,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,201,4,0,0,0,159,254,254,254,250,242,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,149,0,0,0,52,247,254,254,240,85,190,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,108,0,0,0,129,254,254,225,57,0,147,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,37,0,0,0,200,254,225,43,0,0,144,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,61,0,0,39,246,236,43,0,0,10,219,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,78,0,0,57,254,147,0,0,0,69,246,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,108,0,0,170,250,60,0,0,28,240,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,142,0,0,220,210,0,0,19,199,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,196,2,3,222,210,0,23,199,235,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,245,254,188,137,254,241,181,240,239,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,214,254,254,254,254,253,196,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,101,167,183,224,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,55,120,145,126,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,37,128,211,235,253,253,254,253,235,172,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,184,253,254,253,253,251,235,235,235,250,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,243,253,253,254,168,85,67,0,0,0,62,72,72,0,0,0,0,0,0,0,0,0,0,0,0,0,131,247,254,254,202,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,253,199,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,247,253,207,90,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,217,254,254,196,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,164,253,254,171,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,45,0,0,0,0,0,0,0,33,254,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,166,0,0,0,0,0,63,183,254,255,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,249,235,196,145,171,235,250,253,253,238,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,224,253,253,253,254,253,247,210,127,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,100,144,144,144,144,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,80,163,255,202,241,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,55,171,235,250,253,253,254,253,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,254,253,253,253,253,254,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,254,253,253,253,253,235,235,222,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,254,253,98,72,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,195,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,181,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,219,254,255,215,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,237,254,253,238,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,241,253,253,250,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,253,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,80,195,255,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,55,81,145,225,253,253,218,115,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,205,233,253,254,253,253,240,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,254,249,235,202,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,118,194,194,163,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,152,233,152,152,92,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,253,252,253,252,253,252,253,232,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,193,254,253,254,253,254,253,254,253,254,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,252,192,151,131,131,50,131,213,252,253,172,203,81,0,0,0,0,0,0,0,0,0,0,0,102,254,253,244,122,0,0,0,0,0,0,21,203,254,253,255,253,0,0,0,0,0,0,0,0,0,0,0,183,253,252,81,0,0,0,0,0,0,0,0,102,253,252,253,252,82,0,0,0,0,0,0,0,0,0,0,203,254,253,0,0,0,0,0,0,0,0,31,173,254,253,254,233,0,0,0,0,0,0,0,0,0,0,0,162,253,252,142,20,0,0,0,0,102,102,233,252,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,253,193,152,173,253,254,253,254,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,20,131,252,253,252,253,252,253,252,253,252,253,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,203,203,203,203,203,102,223,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,59,164,253,255,253,253,253,253,253,253,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,46,117,231,251,251,251,253,251,251,251,251,251,251,251,187,31,0,0,0,0,0,0,0,0,0,0,0,28,204,251,251,251,251,251,253,251,251,251,251,251,251,196,35,0,0,0,0,0,0,0,0,0,10,39,174,236,251,251,251,251,251,251,222,251,251,251,251,251,232,13,0,0,0,0,0,0,0,0,0,0,59,251,251,251,251,251,168,183,198,153,133,251,251,251,251,190,141,0,0,0,0,0,0,0,0,0,0,0,179,251,251,251,251,154,15,30,44,121,253,251,251,251,190,37,0,0,0,0,0,0,0,0,0,0,0,0,237,251,251,251,251,108,20,80,214,242,253,251,251,202,23,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,251,251,251,251,251,251,251,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,115,209,251,251,251,251,251,251,251,253,251,251,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,57,57,57,222,251,251,251,253,251,251,242,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,253,0,0,0,40,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,231,251,251,160,0,0,0,39,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,251,156,18,0,0,0,39,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,239,98,0,0,0,0,39,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,173,0,0,0,0,0,39,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,173,0,0,0,0,0,159,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,239,109,20,20,20,155,248,168,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,251,251,251,253,251,251,239,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,231,251,251,251,253,251,156,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,57,162,251,57,57,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,189,254,241,156,73,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,242,254,253,253,253,253,249,183,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,219,216,216,151,228,253,235,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,176,235,17,0,0,0,16,194,253,223,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,150,163,163,106,73,11,135,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,177,236,252,253,253,253,254,253,238,249,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,245,253,254,253,247,145,127,152,216,235,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,254,216,59,0,0,0,0,166,253,253,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,105,5,0,0,0,0,20,230,253,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,218,248,117,0,0,0,0,0,0,145,254,254,169,255,254,95,0,0,0,0,0,0,0,0,0,0,0,0,217,238,35,0,0,0,0,0,114,239,253,184,5,202,253,145,0,0,0,0,0,0,0,0,0,0,0,0,204,253,240,128,128,49,37,133,254,253,221,40,0,118,253,216,0,0,0,0,0,0,0,0,0,0,0,0,40,184,253,254,253,253,253,253,254,184,72,0,0,73,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,6,105,156,253,253,253,188,105,5,0,0,0,47,194,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,255,95,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,193,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,222,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,243,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,51,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,232,253,253,224,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,215,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,210,226,44,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,129,253,255,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,252,252,253,252,252,252,218,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,252,252,252,253,252,252,252,253,231,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,144,253,252,252,252,191,108,128,252,253,252,236,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,253,252,236,62,0,0,0,83,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,252,253,231,71,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,253,76,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,1,144,237,252,252,191,15,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,1,253,253,253,191,0,0,0,0,0,0,0,0,255,253,253,108,0,0,0,0,0,0,0,0,0,0,11,155,252,252,241,77,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,58,252,252,252,112,0,0,0,0,0,0,0,0,105,253,252,246,92,0,0,0,0,0,0,0,0,0,0,181,252,252,210,31,0,0,0,0,0,0,0,21,206,253,252,132,0,0,0,0,0,0,0,0,0,0,73,253,253,253,119,0,0,0,0,0,0,0,0,182,253,255,119,0,0,0,0,0,0,0,0,0,0,0,197,252,252,220,25,0,0,0,0,0,0,32,197,242,252,119,5,0,0,0,0,0,0,0,0,0,0,16,222,252,252,41,0,0,0,0,0,47,181,212,252,246,215,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,125,221,252,253,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,109,78,79,109,255,253,253,253,208,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,242,242,252,253,252,241,179,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,206,252,252,252,252,252,252,237,174,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,211,252,252,252,231,108,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,117,179,253,253,202,136,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,62,233,253,198,105,105,165,162,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,123,230,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,227,253,253,242,216,216,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,187,253,243,116,61,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,242,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,231,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,32,0,0,0,38,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,224,124,0,0,9,186,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,250,132,32,0,167,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,253,99,0,65,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,210,253,253,144,0,28,224,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,210,253,250,144,51,205,247,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,210,253,253,242,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,94,213,253,253,229,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,135,135,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,60,211,209,209,209,209,192,60,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,233,253,254,253,253,253,253,253,253,117,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,191,253,253,253,254,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,67,245,253,253,253,253,254,235,178,178,178,231,253,253,248,92,0,0,0,0,0,0,0,0,0,0,0,86,201,253,253,253,253,235,162,57,0,0,0,70,223,251,253,210,0,0,0,0,0,0,0,0,0,0,8,191,253,253,253,253,229,49,0,0,0,0,0,0,0,239,253,253,0,0,0,0,0,0,0,0,0,0,69,253,253,253,253,116,12,0,0,0,0,0,0,0,0,98,253,253,0,0,0,0,0,0,0,0,0,47,233,253,253,253,229,12,0,0,0,0,0,0,0,0,0,117,253,253,0,0,0,0,0,0,0,0,0,60,253,253,253,253,119,0,0,0,0,0,0,0,0,0,80,247,253,253,0,0,0,0,0,0,0,0,0,211,254,254,254,162,0,0,0,0,0,0,0,0,0,13,184,255,254,105,0,0,0,0,0,0,0,0,87,246,253,253,200,57,0,0,0,0,0,0,0,0,54,83,253,253,180,18,0,0,0,0,0,0,0,0,202,253,253,175,10,0,0,0,0,0,0,0,10,87,243,253,253,194,21,0,0,0,0,0,0,0,0,0,254,253,253,133,0,0,0,0,0,0,0,29,206,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,254,253,253,133,0,0,0,0,14,75,137,231,253,253,253,226,29,2,0,0,0,0,0,0,0,0,0,0,254,253,253,218,135,30,30,172,193,253,254,253,253,239,91,65,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,165,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,238,253,253,253,253,253,253,253,253,217,40,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,156,208,208,208,208,208,181,59,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,164,247,169,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,211,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,221,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,255,255,255,255,255,255,191,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,128,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,64,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,195,153,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,72,44,82,163,248,243,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,229,248,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,22,165,253,231,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,221,252,178,101,229,205,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,248,157,24,0,0,119,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,217,184,29,0,0,0,20,232,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,247,95,0,0,0,0,0,224,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,210,137,0,0,0,0,0,0,224,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,114,0,0,0,0,0,14,230,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,34,0,0,0,0,0,72,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,233,11,0,0,0,0,0,169,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,163,0,0,0,0,0,7,208,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,69,0,0,0,0,0,82,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,69,0,0,0,0,0,203,209,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,69,0,0,0,0,75,242,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,69,0,0,0,72,246,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,173,5,0,73,241,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,213,253,245,245,250,233,86,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,248,253,135,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,255,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,25,4,0,0,0,0,37,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,36,0,0,0,0,112,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,205,253,36,0,0,0,0,157,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,192,10,0,0,0,0,157,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,232,63,0,0,0,0,19,231,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,175,253,205,85,85,49,0,0,25,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,253,253,238,218,219,221,253,253,72,0,33,98,9,0,0,0,0,0,0,0,0,0,0,75,245,253,227,52,24,24,76,144,150,253,253,253,237,230,238,253,133,0,0,0,0,0,0,0,0,0,0,145,253,230,43,0,0,0,0,0,1,150,253,253,166,132,132,132,18,0,0,0,0,0,0,0,0,0,0,70,104,0,0,0,0,0,0,0,0,146,254,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,223,245,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,242,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,198,104,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,215,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,232,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,221,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,128,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,122,254,254,254,255,254,254,193,80,80,80,80,80,80,44,0,0,0,0,0,0,0,0,0,0,0,50,217,253,253,253,253,253,253,253,253,253,253,253,253,253,253,210,147,0,0,0,0,0,0,0,0,0,0,244,253,253,253,253,223,191,217,253,253,253,253,253,253,253,253,253,252,146,0,0,0,0,0,0,0,0,0,157,253,253,175,113,58,0,47,113,113,205,253,253,253,253,253,253,253,210,43,0,0,0,0,0,0,0,0,11,143,45,15,0,0,0,0,0,0,23,34,34,34,147,253,253,253,236,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,190,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,27,195,253,253,253,239,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,246,253,253,253,252,165,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,253,207,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,196,253,253,253,218,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,143,251,253,253,253,211,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,160,253,253,253,253,211,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,84,240,253,253,253,234,85,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,157,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,234,253,253,253,179,47,36,36,36,36,36,36,60,211,211,211,211,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,39,210,253,253,253,253,253,253,253,253,253,253,253,239,156,156,156,156,0,0,0,0,0,0,0,0,0,0,0,43,230,253,253,253,253,253,137,78,78,78,78,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,193,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,253,252,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,224,162,234,253,254,213,21,0,0,0,0,0,113,152,82,0,0,0,0,0,0,0,0,0,0,203,253,252,61,0,51,232,253,252,223,81,0,0,21,183,253,252,203,0,0,0,0,0,0,0,0,0,0,203,254,253,0,0,0,0,123,243,254,213,52,92,254,253,255,233,82,0,0,0,0,0,0,0,0,0,0,162,253,252,123,0,0,0,0,162,253,252,253,252,253,252,91,30,0,0,0,0,0,0,0,0,0,0,0,41,254,253,254,131,41,0,0,21,214,253,254,253,203,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,232,253,252,243,162,102,203,253,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,254,253,254,253,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,253,252,192,70,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,254,253,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,252,233,70,213,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,244,122,0,0,41,243,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,122,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,192,0,0,0,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,70,0,0,0,0,82,243,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,255,112,0,0,0,41,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,232,142,102,123,243,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,255,253,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,131,213,252,233,151,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,163,203,163,203,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,254,253,254,253,255,253,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,253,212,151,111,50,50,112,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,244,203,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,232,142,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,152,51,10,0,0,163,243,254,253,132,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,212,142,20,0,40,151,232,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,203,223,254,253,152,71,51,72,193,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,151,151,253,252,253,232,233,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,203,203,203,203,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,204,0,0,0,0,123,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,203,0,0,0,21,223,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,204,0,0,0,193,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,203,0,0,0,233,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,234,51,11,213,183,142,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,232,213,252,102,20,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,204,81,0,103,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,73,73,157,208,215,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,132,217,253,254,253,253,253,253,120,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,186,253,253,194,127,42,54,233,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,234,253,244,156,16,0,17,149,253,253,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,254,253,62,0,0,149,248,253,253,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,234,78,108,163,228,255,192,172,254,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,249,235,250,253,214,140,14,115,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,204,254,253,247,138,11,0,20,230,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,54,54,46,0,0,0,43,245,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,248,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,218,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,164,254,218,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,228,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,195,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,162,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,165,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,145,252,252,234,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,245,252,252,192,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,239,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,252,252,200,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,139,253,252,247,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,189,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,255,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,252,253,150,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,252,190,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,217,252,252,151,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,187,252,252,146,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,252,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,227,233,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,179,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,252,227,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,252,167,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,178,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,167,242,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,244,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,249,238,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,181,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,188,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,165,0,0,0,0,0,78,111,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,254,55,0,0,11,82,207,254,254,255,230,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,55,0,41,172,253,246,187,143,183,201,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,55,10,237,223,106,38,0,0,0,56,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,55,128,250,65,0,0,0,0,0,56,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,79,232,209,0,0,0,0,0,0,56,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,196,240,209,0,0,0,0,0,8,173,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,253,253,250,69,7,0,0,10,177,251,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,201,253,253,253,210,155,155,237,250,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,123,253,253,253,254,253,223,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,33,115,143,192,143,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,102,169,244,182,169,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,254,254,240,176,188,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,208,254,194,48,36,0,2,101,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,197,6,0,0,0,0,2,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,164,0,0,0,0,0,31,144,238,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,250,108,28,0,11,146,244,254,254,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,204,254,241,229,234,254,216,102,79,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,135,202,202,129,103,16,0,27,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,118,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,247,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,118,240,255,153,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,234,244,253,253,253,253,251,230,97,97,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,219,253,253,253,253,253,253,253,253,253,253,173,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,229,198,198,208,253,253,253,253,253,238,161,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,164,46,0,0,16,97,219,236,253,253,253,217,13,0,0,0,0,0,0,0,0,0,0,0,5,196,253,245,50,0,0,0,0,0,0,50,158,251,253,253,177,0,0,0,0,0,0,0,0,0,0,0,76,253,253,239,0,0,0,0,0,0,0,0,0,149,253,253,232,0,0,0,0,0,0,0,0,0,0,42,228,253,238,61,0,0,0,0,0,0,0,0,0,83,253,253,232,0,0,0,0,0,0,0,0,0,0,97,253,253,219,0,0,0,0,0,0,0,0,0,0,83,253,253,232,0,0,0,0,0,0,0,0,0,0,97,253,253,219,0,0,0,0,0,0,0,0,0,0,121,253,253,232,0,0,0,0,0,0,0,0,0,0,97,253,253,219,0,0,0,0,0,0,0,0,0,20,226,253,253,206,0,0,0,0,0,0,0,0,0,0,97,253,253,129,0,0,0,0,0,0,0,0,0,119,253,253,226,34,0,0,0,0,0,0,0,0,0,0,97,253,253,82,0,0,0,0,0,0,0,1,75,248,253,253,208,0,0,0,0,0,0,0,0,0,0,0,163,253,253,82,0,0,0,0,0,0,0,75,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,104,253,253,137,0,0,0,0,0,0,83,248,253,253,253,138,4,0,0,0,0,0,0,0,0,0,0,0,97,253,253,219,0,0,0,0,105,220,242,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,73,243,253,246,199,199,199,199,243,253,253,253,253,228,146,12,0,0,0,0,0,0,0,0,0,0,0,0,0,104,243,253,253,253,253,253,253,253,253,252,144,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,253,253,249,232,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,134,253,253,253,253,216,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,254,255,255,184,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,228,225,249,207,248,253,253,170,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,55,97,0,95,205,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,251,253,172,0,0,0,14,203,253,248,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,213,248,214,56,0,0,0,0,99,247,253,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,22,201,253,222,0,0,0,0,0,0,0,131,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,88,241,253,253,77,0,0,0,0,0,0,0,62,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,172,19,0,0,0,0,0,0,0,17,186,253,199,0,0,0,0,0,0,0,0,0,0,0,77,250,253,181,7,0,0,0,0,0,0,0,0,0,162,253,199,0,0,0,0,0,0,0,0,0,0,43,244,253,241,80,0,0,0,0,0,0,0,0,0,0,162,253,199,0,0,0,0,0,0,0,0,0,0,61,253,253,200,0,0,0,0,0,0,0,0,0,0,44,226,253,91,0,0,0,0,0,0,0,0,0,0,200,253,208,31,0,0,0,0,0,0,0,0,0,0,137,253,253,45,0,0,0,0,0,0,0,0,0,0,200,253,160,0,0,0,0,0,0,0,0,0,0,103,249,253,253,45,0,0,0,0,0,0,0,0,0,7,204,253,160,0,0,0,0,0,0,0,0,14,120,208,253,253,246,43,0,0,0,0,0,0,0,0,0,101,253,253,160,0,0,0,0,0,0,11,116,237,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,76,240,253,160,0,0,0,0,0,57,173,253,253,253,253,253,115,22,0,0,0,0,0,0,0,0,0,0,0,200,253,220,162,78,153,162,162,245,253,253,253,253,249,114,33,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,253,253,253,180,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,253,253,253,253,253,253,248,199,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,99,155,253,253,253,253,253,113,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,211,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,168,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,193,253,252,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,252,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,252,252,232,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,253,253,168,5,24,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,252,252,203,178,252,252,252,151,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,252,252,253,252,252,252,252,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,253,252,252,252,252,253,252,252,252,252,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,32,218,252,253,252,252,252,252,243,117,22,107,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,255,253,253,253,253,127,5,108,180,253,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,253,252,252,252,252,245,178,252,252,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,252,253,252,252,252,221,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,88,202,253,252,252,252,252,253,252,252,134,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,137,221,252,252,243,117,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,148,193,167,254,201,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,218,182,254,253,253,238,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,4,21,56,199,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,143,247,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,156,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,43,15,0,107,107,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,238,211,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,232,135,66,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,218,170,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,69,192,254,240,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,244,255,201,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,203,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,246,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,205,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,165,241,177,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,193,253,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,91,240,244,154,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,192,147,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,238,255,45,0,0,0,0,0,0,164,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,240,253,214,24,0,0,0,0,0,39,251,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,112,0,0,0,0,0,0,40,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,38,0,0,0,0,0,0,94,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,242,253,253,38,0,0,0,0,0,0,169,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,244,253,173,5,0,0,0,0,0,154,243,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,162,0,0,0,0,0,89,242,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,162,0,0,0,61,109,241,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,188,183,202,202,242,253,253,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,253,253,253,253,253,253,206,132,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,253,179,18,77,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,201,201,201,201,97,71,18,0,176,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,247,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,242,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,139,172,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,172,255,148,38,38,38,30,0,0,26,38,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,253,253,253,253,253,253,237,184,184,231,253,253,153,0,0,0,0,0,0,0,0,0,0,0,1,89,232,253,253,253,195,139,139,139,139,139,197,252,253,253,183,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,253,183,9,0,0,0,0,0,0,173,253,253,164,0,0,0,0,0,0,0,0,0,0,25,232,253,253,253,182,15,0,0,0,0,0,0,21,233,253,243,51,0,0,0,0,0,0,0,0,0,0,81,253,253,253,244,52,0,0,0,0,0,0,0,175,253,253,221,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,68,0,0,0,0,0,0,0,19,246,253,253,133,0,0,0,0,0,0,0,0,0,0,0,147,253,253,191,7,0,0,0,0,0,0,0,134,253,253,218,3,0,0,0,0,0,0,0,0,0,0,0,7,164,172,42,0,0,0,0,0,0,0,62,250,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,188,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,235,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,187,253,253,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,253,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,122,253,253,222,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,135,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,128,253,254,174,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,183,28,204,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,183,12,0,22,170,254,253,153,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,236,29,0,0,0,22,194,237,254,202,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,52,0,0,0,0,0,4,15,216,255,209,54,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,138,2,0,0,0,0,0,0,0,13,181,250,227,68,0,0,0,0,0,0,0,0,0,0,0,0,222,238,22,0,0,0,0,0,0,0,0,0,0,166,254,125,0,0,0,0,0,0,0,0,0,0,0,87,254,85,0,0,0,0,0,0,0,0,0,0,0,8,203,179,0,0,0,0,0,0,0,0,0,0,2,174,202,7,0,0,0,0,0,0,0,0,0,0,0,3,203,221,0,0,0,0,0,0,0,0,0,0,29,254,72,0,0,0,0,0,0,0,0,0,0,0,0,100,254,191,0,0,0,0,0,0,0,0,0,0,119,204,2,0,0,0,0,0,0,0,0,0,0,0,106,250,254,109,0,0,0,0,0,0,0,0,0,0,126,163,0,0,0,0,0,0,0,0,0,0,0,34,241,254,121,6,0,0,0,0,0,0,0,0,0,0,126,163,0,0,0,0,0,0,0,0,0,0,62,226,254,158,0,0,0,0,0,0,0,0,0,0,0,0,198,163,0,0,0,0,0,0,0,0,12,144,250,254,154,6,0,0,0,0,0,0,0,0,0,0,0,0,126,163,0,0,0,0,0,0,1,53,215,254,249,90,6,0,0,0,0,0,0,0,0,0,0,0,0,0,126,222,54,0,0,0,0,79,144,254,254,217,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,246,248,181,130,223,226,246,255,234,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,180,254,254,254,254,254,145,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,235,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,218,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,248,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,217,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,242,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,207,254,215,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,212,255,244,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,237,254,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,249,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,218,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,252,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,254,255,166,40,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,208,253,253,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,235,235,174,238,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,210,253,225,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,211,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,189,253,241,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,156,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,253,253,211,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,253,253,239,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,158,253,253,239,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,253,253,198,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,242,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,239,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,224,39,0,0,0,0,0,0,0,0,91,106,157,230,123,0,0,0,0,0,0,0,0,0,4,202,253,253,253,242,236,236,147,142,236,236,236,236,251,253,253,204,15,0,0,0,0,0,0,0,0,0,0,13,202,253,253,253,253,253,253,253,253,253,253,253,253,207,135,15,0,0,0,0,0,0,0,0,0,0,0,0,3,79,129,208,253,253,253,253,253,217,129,129,23,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,62,146,172,233,254,254,238,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,254,252,237,173,155,128,114,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,249,253,208,85,0,0,0,5,203,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,233,88,19,0,0,0,0,87,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,242,56,0,0,0,0,0,34,203,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,119,0,0,0,0,0,7,162,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,249,106,0,0,0,0,25,189,253,146,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,176,128,0,0,0,53,218,253,187,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,242,137,3,109,249,253,148,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,166,252,253,150,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,180,249,242,249,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,68,235,253,214,26,125,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,186,27,0,9,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,244,253,154,21,0,0,88,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,253,153,6,0,0,0,212,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,172,6,0,0,0,162,104,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,162,109,147,147,224,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,208,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,237,253,181,124,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,244,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,247,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,50,0,37,53,178,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,159,223,251,219,243,255,254,254,205,131,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,162,248,224,148,131,131,204,254,244,197,217,254,235,38,0,0,0,0,0,0,0,0,0,0,0,0,0,131,248,107,9,0,0,1,135,254,135,0,11,118,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,143,241,72,3,0,8,118,254,188,2,0,0,44,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,17,202,254,196,184,213,253,214,25,0,0,0,13,189,236,21,0,0,0,0,0,0,0,0,0,0,0,0,0,44,124,166,236,217,100,0,0,0,0,0,0,38,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,118,188,255,131,154,254,165,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,253,253,253,253,234,234,189,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,154,40,55,221,253,253,183,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,229,75,12,0,0,144,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,253,235,49,0,0,0,0,144,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,129,1,0,0,0,0,144,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,6,0,0,0,0,74,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,126,1,0,0,0,0,7,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,224,253,123,0,0,0,0,0,56,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,229,42,0,19,96,206,233,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,224,186,204,253,132,73,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,89,223,226,188,89,31,3,169,197,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,128,253,114,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,247,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,12,0,0,7,253,253,188,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,205,144,0,5,48,253,180,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,251,227,158,168,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,153,253,253,174,116,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,102,148,147,102,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,202,252,254,254,254,254,254,240,192,47,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,229,254,254,254,254,254,254,254,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,18,183,254,254,254,223,161,161,20,7,83,161,224,254,253,146,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,249,130,41,0,0,0,0,0,0,51,233,254,253,128,7,0,0,0,0,0,0,0,0,0,0,202,254,254,130,0,0,0,0,0,0,0,0,0,53,234,254,254,130,0,0,0,0,0,0,0,0,0,0,202,254,254,61,0,0,0,0,0,0,0,0,0,40,230,254,254,200,0,0,0,0,0,0,0,0,0,0,89,254,254,179,15,0,0,0,0,0,0,0,21,133,254,254,254,181,0,0,0,0,0,0,0,0,0,0,47,254,254,254,187,8,0,0,0,0,0,0,171,254,254,254,254,46,0,0,0,0,0,0,0,0,0,0,4,112,253,254,254,234,120,78,31,78,153,233,247,254,254,252,111,4,0,0,0,0,0,0,0,0,0,0,0,0,131,249,254,254,254,254,208,254,254,254,254,254,254,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,198,254,254,254,254,254,254,254,179,254,254,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,30,143,185,185,76,30,30,26,254,254,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,246,254,247,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,179,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,166,254,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,239,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,105,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,206,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,252,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,248,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,248,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,255,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,213,252,240,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,252,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,218,252,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,252,252,252,150,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,244,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,243,233,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,128,0,0,0,0,0,0,18,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,196,0,0,0,0,0,0,141,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,126,0,0,0,0,0,59,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,232,56,0,0,0,0,0,134,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,21,0,0,0,0,0,169,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,151,0,0,0,0,0,22,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,63,0,0,0,0,0,57,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,206,5,0,0,0,0,0,127,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,80,0,0,0,0,0,0,127,189,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,0,0,0,0,0,0,0,171,242,167,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,18,0,0,0,0,43,123,245,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,217,111,85,112,190,253,252,245,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,253,252,252,247,231,127,221,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,172,190,189,189,98,0,0,190,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,177,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,29,79,115,0,0,0,0,0,0,0,0,0,0,0,0,53,187,95,92,62,0,0,0,0,4,119,151,214,254,219,87,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,252,250,171,219,250,250,254,254,254,238,97,1,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,254,254,254,254,254,254,238,142,60,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,235,124,72,162,167,167,151,108,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,238,73,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,228,178,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,105,222,254,198,173,54,9,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,48,66,151,237,127,163,174,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,93,229,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,22,0,0,0,0,0,0,0,0,0,13,200,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,217,68,0,0,0,0,0,0,0,1,68,215,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,223,30,0,0,0,0,0,87,173,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,181,86,0,58,142,230,252,254,227,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,187,252,254,248,197,252,254,254,249,165,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,148,244,254,254,197,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,28,28,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,61,113,96,148,148,148,148,96,43,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,137,190,216,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,233,247,252,252,252,253,236,222,126,126,21,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,247,162,84,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,194,253,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,218,253,247,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,213,252,252,243,155,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,253,252,251,232,232,128,127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,252,253,252,252,252,252,253,252,210,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,42,86,42,42,42,42,42,147,226,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,168,242,252,226,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,43,123,148,218,253,255,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,190,190,190,242,253,252,252,252,252,253,189,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,252,252,252,253,236,222,126,126,21,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,221,162,84,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,198,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,0,0,29,170,170,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,86,0,0,198,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,0,0,86,255,255,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,141,255,226,198,226,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,29,0,0,255,255,0,0,29,226,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,86,170,0,0,0,29,255,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,86,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,114,0,0,0,0,0,0,0,0,0,114,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,198,29,0,0,0,0,0,0,0,170,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,170,170,170,114,170,170,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,255,255,255,255,255,255,255,255,198,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,114,170,226,170,170,141,57,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,229,154,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,100,254,255,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,225,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,254,254,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,254,71,0,0,0,16,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,254,58,0,0,17,118,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,230,39,0,0,91,254,250,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,239,254,254,182,0,0,85,241,254,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,182,19,170,240,254,243,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,201,182,254,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,254,254,254,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,254,254,254,194,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,119,222,255,254,245,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,236,254,216,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,216,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,34,34,82,144,221,211,134,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,255,253,253,253,203,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,250,253,253,253,254,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,204,253,253,253,137,59,40,221,253,253,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,99,253,253,244,117,12,0,0,35,247,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,170,0,0,0,0,0,205,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,5,129,253,253,238,9,0,0,0,0,0,31,250,253,248,48,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,131,0,0,0,0,0,0,0,166,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,131,0,0,0,0,0,0,0,166,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,131,0,0,0,0,0,0,0,166,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,254,132,0,0,0,0,0,0,0,167,254,253,87,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,103,0,0,0,0,0,0,0,166,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,17,245,253,253,22,0,0,0,0,0,0,0,166,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,31,0,0,0,0,0,0,22,250,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,131,0,0,0,0,0,0,120,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,170,0,0,0,0,0,35,247,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,252,145,8,0,7,41,222,253,251,204,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,132,253,253,253,223,155,211,253,253,250,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,152,247,253,253,253,254,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,162,220,191,143,114,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,91,195,234,226,160,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,212,254,254,238,227,254,252,128,129,212,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,254,224,102,33,17,197,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,197,32,0,0,0,16,159,254,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,4,145,253,220,29,0,0,0,0,0,16,194,254,248,54,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,249,52,0,0,0,0,0,0,2,132,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,165,0,0,0,0,0,0,0,19,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,11,218,254,47,0,0,0,0,0,0,11,176,254,199,15,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,9,0,0,0,0,0,0,104,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,9,0,0,0,0,0,57,249,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,128,0,0,0,35,109,254,255,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,247,145,132,157,240,254,254,254,237,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,216,253,254,254,254,249,167,188,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,178,178,120,41,3,194,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,245,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,185,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,113,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,151,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,160,254,254,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,204,252,252,164,56,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,252,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,229,252,252,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,233,37,0,0,0,0,0,0,19,85,185,185,66,0,0,0,0,0,0,0,0,0,0,0,51,246,252,253,145,0,0,0,0,0,0,76,231,252,252,253,246,50,0,0,0,0,0,0,0,0,0,0,57,253,253,239,38,0,0,0,0,23,179,254,253,253,253,254,253,56,0,0,0,0,0,0,0,0,0,0,57,252,252,225,0,0,0,7,82,234,252,253,240,196,246,253,252,56,0,0,0,0,0,0,0,0,0,0,57,252,252,235,66,0,0,154,252,252,252,190,152,197,246,206,93,13,0,0,0,0,0,0,0,0,0,0,57,252,252,253,246,225,225,253,252,252,252,253,252,252,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,126,238,254,253,253,253,254,253,253,253,254,253,231,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,203,252,252,252,253,252,252,227,134,84,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,56,143,253,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,214,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,37,37,37,7,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,14,84,182,188,193,254,254,254,124,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,22,91,130,193,254,254,204,125,201,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,255,254,255,173,22,0,98,254,255,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,245,198,75,31,2,0,117,245,254,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,36,0,0,0,0,78,246,254,222,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,243,254,225,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,254,220,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,242,254,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,254,219,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,242,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,209,254,232,83,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,254,224,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,244,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,176,255,191,150,150,150,96,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,247,253,253,253,253,253,253,253,253,203,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,253,253,253,253,253,239,253,253,253,253,219,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,252,107,67,40,145,215,253,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,253,152,0,0,0,10,232,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,73,0,0,0,119,253,253,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,198,5,0,0,86,246,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,191,0,0,0,171,253,253,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,251,187,0,0,128,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,170,107,0,0,54,234,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,234,253,253,183,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,253,253,247,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,171,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,188,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,245,253,253,237,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,214,253,253,240,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,211,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,251,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,229,253,253,220,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,208,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,222,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,206,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,185,253,253,253,216,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,198,253,253,253,213,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,254,251,104,0,6,13,134,133,133,133,133,99,13,2,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,222,47,128,192,253,254,253,253,253,253,253,253,115,14,0,0,0,0,0,0,0,0,0,8,212,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,144,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,253,253,253,254,253,246,205,240,253,253,253,165,3,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,253,253,72,72,62,12,199,253,253,253,227,9,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,253,218,0,42,91,205,253,253,253,253,110,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,253,231,207,233,253,253,253,253,253,134,5,0,0,0,0,0,0,0,0,0,25,212,253,253,253,253,253,253,253,253,254,253,253,253,253,225,116,5,0,0,0,0,0,0,0,0,0,0,0,83,212,253,253,253,253,253,253,253,254,253,253,232,116,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,11,99,167,253,149,132,132,132,63,11,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,110,109,212,253,192,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,253,242,114,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,253,252,252,252,253,252,246,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,160,252,253,252,252,252,253,210,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,232,252,252,253,158,159,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,155,253,252,252,210,119,5,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,252,253,179,71,31,0,0,11,175,253,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,63,175,252,252,191,15,0,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,63,171,253,253,191,0,0,0,0,0,0,0,84,255,253,72,0,0,0,0,0,0,0,0,0,0,0,73,237,252,252,179,15,0,0,0,0,0,0,11,155,253,231,51,0,0,0,0,0,0,0,0,0,0,73,232,252,252,241,61,0,0,0,0,0,0,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,217,252,252,189,77,0,0,0,0,0,0,0,0,120,252,191,77,0,0,0,0,0,0,0,0,0,0,0,218,253,253,83,0,0,0,0,0,0,0,47,233,253,253,145,0,0,0,0,0,0,0,0,0,0,0,94,247,241,97,0,0,0,0,0,0,0,42,233,252,252,210,20,0,0,0,0,0,0,0,0,0,0,0,212,252,215,0,0,0,0,0,0,73,181,221,253,220,195,31,0,0,0,0,0,0,0,0,0,0,0,0,170,252,215,0,0,0,0,0,145,237,252,168,108,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,109,109,212,253,255,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,180,252,252,252,252,252,252,222,138,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,92,215,252,252,226,215,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,108,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,224,170,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,243,250,249,112,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,87,22,47,181,254,246,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,148,116,0,4,57,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,210,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,114,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,239,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,242,199,88,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,205,255,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,246,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,247,170,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,245,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,175,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,180,177,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,156,171,216,156,112,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,222,253,253,253,254,253,241,125,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,174,159,78,78,123,229,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,194,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,250,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,240,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,249,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,239,254,57,0,0,0,138,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,186,3,0,5,111,241,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,199,79,79,194,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,254,250,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,155,223,253,177,155,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,213,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,249,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,241,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,210,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,255,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,206,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,197,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,192,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,240,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,128,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,0,191,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,128,64,128,64,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,64,0,0,128,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,191,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,191,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,237,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,250,253,93,0,0,0,0,0,0,0,0,0,0,0,10,56,8,0,0,0,0,0,0,0,0,0,24,202,253,171,12,0,0,0,0,0,0,0,0,0,0,0,131,253,120,0,0,0,0,0,0,0,0,0,120,253,238,46,0,0,0,0,0,0,0,0,0,0,0,69,245,216,26,0,0,0,0,0,0,0,0,40,224,253,54,0,0,0,0,0,0,0,0,0,0,0,16,236,253,156,0,0,0,0,0,0,0,0,0,144,253,253,10,0,0,0,0,0,0,0,0,0,0,0,123,253,187,17,0,0,0,0,0,0,0,0,0,240,253,210,6,0,0,0,0,0,0,0,0,0,0,49,247,253,99,0,0,0,0,0,0,0,0,0,0,144,255,254,196,144,106,34,13,0,0,0,0,0,0,167,254,255,114,0,0,0,0,0,0,0,0,0,0,58,204,253,253,253,253,253,207,96,67,67,67,67,77,227,253,253,180,0,0,0,0,0,0,0,0,0,0,0,12,44,202,253,253,253,253,253,253,254,253,253,253,253,219,53,17,0,0,0,0,0,0,0,0,0,0,0,0,0,6,10,10,64,140,231,231,232,231,250,253,224,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,225,246,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,190,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,191,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,223,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,253,146,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,48,2,0,0,0,0,63,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,245,254,9,0,0,0,0,111,254,250,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,9,0,0,0,13,216,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,254,182,4,0,0,0,94,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,241,254,227,11,0,0,0,0,142,254,245,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,106,0,0,0,0,25,236,254,178,0,43,95,4,0,0,0,0,0,0,0,0,0,0,0,63,254,254,219,62,0,0,0,0,127,254,254,198,84,237,255,212,10,0,0,0,0,0,0,0,0,0,0,132,254,254,254,252,226,226,226,226,244,254,254,254,254,254,254,254,37,0,0,0,0,0,0,0,0,0,0,44,227,254,254,254,254,254,254,254,254,254,254,254,254,254,254,223,22,0,0,0,0,0,0,0,0,0,0,0,35,147,178,184,200,178,186,254,254,254,219,85,85,85,85,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,0,29,254,254,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,254,194,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,240,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,71,152,184,247,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,152,240,254,254,254,249,224,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,105,166,254,254,254,254,254,182,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,208,254,254,255,254,216,108,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,183,97,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,198,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,251,247,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,251,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,247,211,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,224,125,184,231,215,146,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,254,254,254,254,250,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,219,177,150,217,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,14,53,6,0,0,8,227,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,129,62,0,0,0,0,0,0,216,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,235,147,34,2,0,6,74,235,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,254,254,204,198,220,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,175,252,254,254,254,254,254,254,191,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,171,254,254,254,206,143,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,239,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,222,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,189,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,239,253,253,215,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,159,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,141,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,246,253,253,231,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,214,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,190,253,253,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,191,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,189,253,253,253,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,190,253,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,253,195,32,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,230,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,237,253,253,212,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,221,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,253,253,224,99,13,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,251,252,239,231,252,252,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,46,14,96,182,244,252,216,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,233,252,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,141,232,252,232,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,79,193,230,252,252,231,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,126,205,205,250,253,252,252,195,139,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,183,244,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,252,158,143,143,144,206,252,214,109,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,131,98,11,2,0,0,0,145,252,252,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,197,253,253,251,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,134,247,253,252,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,134,193,252,252,161,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,193,252,252,208,89,94,252,245,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,164,252,232,145,7,29,219,246,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,164,252,197,62,0,32,216,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,166,252,203,12,0,79,225,252,203,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,112,97,194,230,252,160,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,241,252,252,252,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,104,252,252,252,154,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,18,190,150,253,253,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,134,196,253,252,252,252,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,134,239,252,252,253,231,216,193,133,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,10,135,193,252,252,252,252,141,36,0,0,141,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,27,194,252,252,252,229,140,72,0,0,0,12,198,252,252,70,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,231,139,37,0,0,0,0,28,204,252,252,228,25,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,139,0,0,0,0,0,0,77,252,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,10,193,252,154,9,0,0,0,0,0,125,239,252,252,190,24,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,72,0,0,0,0,53,230,242,252,252,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,252,244,149,121,167,241,246,253,252,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,241,250,253,253,253,253,253,255,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,200,228,228,238,252,253,252,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,249,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,252,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,252,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,244,252,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,216,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,252,102,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,195,252,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,255,202,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,137,189,234,253,253,253,253,246,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,149,47,193,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,253,253,253,59,0,66,251,253,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,234,253,253,253,224,30,0,0,249,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,251,155,86,0,0,0,182,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,253,253,155,0,0,0,0,0,130,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,253,253,249,34,0,0,0,0,0,130,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,211,0,0,0,0,0,0,95,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,85,0,0,0,0,0,0,12,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,11,0,0,0,0,0,0,120,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,149,1,0,0,0,0,0,0,191,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,147,0,0,0,0,0,0,14,249,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,167,2,0,0,0,0,18,139,253,253,244,57,0,0,0,0,0,0,0,0,0,0,0,0,0,40,237,253,253,128,7,66,66,66,191,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,252,206,253,253,253,253,253,253,191,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,253,253,253,253,253,253,253,253,149,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,122,190,201,253,253,162,135,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,250,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,223,254,153,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,196,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,255,236,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,233,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,142,253,238,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,246,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,194,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,234,252,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,231,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,126,254,119,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,181,155,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,69,154,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,111,169,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,241,230,160,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,159,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,246,253,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,176,244,252,109,219,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,147,0,109,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,98,0,0,0,185,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,252,187,17,0,0,0,67,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,245,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,116,0,0,0,0,34,212,253,211,138,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,116,0,0,0,22,253,252,240,223,252,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,0,26,205,247,162,50,25,121,253,188,19,0,0,0,0,0,0,0,0,0,0,0,0,44,236,252,116,0,0,187,252,188,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,231,42,116,248,147,11,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,255,232,222,253,75,0,0,0,9,76,255,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,252,252,172,8,0,0,34,174,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,196,184,174,142,234,252,252,205,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,219,252,252,252,253,252,252,252,168,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,137,232,252,253,252,168,43,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,195,159,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,245,254,254,244,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,254,242,146,92,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,254,254,255,254,254,254,251,251,251,176,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,154,104,38,38,67,134,95,102,120,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,230,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,248,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,177,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,226,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,207,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,3,0,0,0,0,83,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,69,0,0,0,0,8,228,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,241,70,42,4,0,0,70,254,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,236,116,0,49,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,111,194,253,252,226,232,254,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,158,226,254,207,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,57,213,239,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,91,254,243,230,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,221,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,246,77,114,172,138,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,174,29,254,222,229,245,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,31,12,101,22,32,222,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,242,223,0,0,0,0,0,54,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,138,0,0,0,0,0,0,165,242,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,54,0,0,0,0,0,0,90,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,255,8,0,0,0,0,0,0,90,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,8,0,0,0,0,0,0,90,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,8,0,0,0,0,0,0,111,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,8,0,0,0,0,0,0,170,248,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,8,0,0,0,0,0,28,251,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,14,0,0,0,0,0,141,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,99,0,0,0,0,97,251,212,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,251,210,14,0,0,27,241,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,193,33,41,188,254,170,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,250,254,244,242,254,194,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,149,208,242,140,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,18,118,136,197,255,254,169,175,152,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,111,224,253,253,253,253,253,253,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,23,207,253,253,253,237,200,200,87,149,253,253,253,207,14,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,208,154,45,0,0,79,253,253,235,143,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,245,61,0,0,34,141,252,253,195,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,241,44,0,83,217,253,253,191,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,241,70,125,224,253,251,126,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,241,253,253,253,253,189,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,244,121,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,250,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,181,247,253,253,253,212,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,183,246,253,149,107,218,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,197,253,253,49,12,12,203,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,203,253,217,27,1,0,13,208,253,157,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,253,168,0,0,0,27,210,253,198,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,243,53,0,0,0,87,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,239,132,0,0,33,170,253,208,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,207,253,239,201,97,222,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,35,183,253,253,253,253,244,152,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,138,253,253,195,133,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,92,158,234,246,237,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,62,206,254,254,232,232,254,252,203,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,210,255,254,220,96,17,17,75,223,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,232,254,198,98,26,0,0,0,0,135,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,177,254,199,15,0,0,0,0,0,0,118,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,237,107,16,0,0,0,0,0,0,12,220,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,72,179,57,0,0,0,0,0,0,0,0,100,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,64,239,247,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,239,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,80,6,35,243,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,191,246,249,254,246,247,241,129,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,140,244,254,232,212,254,254,254,251,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,84,240,254,207,80,35,146,254,241,133,242,238,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,235,83,9,51,204,254,217,32,26,221,254,113,0,0,0,0,0,0,0,0,0,0,0,0,47,174,249,178,53,4,109,227,254,134,32,0,0,131,254,197,0,0,0,0,0,0,0,0,0,0,0,18,168,247,160,21,69,159,254,201,110,0,0,0,0,93,254,236,21,0,0,0,0,0,0,0,0,0,0,173,249,123,36,213,254,246,224,17,0,0,0,0,0,29,239,236,21,0,0,0,0,0,0,0,0,0,0,157,138,105,157,157,157,57,0,0,0,0,0,0,0,28,157,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,173,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,253,254,213,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,253,252,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,131,0,0,0,0,31,51,173,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,91,0,0,21,183,233,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,254,253,254,151,72,152,254,253,224,162,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,253,232,253,252,233,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,253,254,253,254,253,254,233,142,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,204,243,253,252,253,252,253,252,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,255,253,255,253,224,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,212,151,70,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,103,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,106,133,133,191,191,134,133,59,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,145,166,253,235,229,229,229,229,230,243,253,158,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,171,194,96,23,0,0,0,0,0,56,194,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,176,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,137,253,218,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,183,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,162,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,233,59,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,108,222,253,253,180,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,108,216,253,225,124,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,211,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,160,239,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,86,160,238,253,253,225,123,5,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,0,38,98,213,221,253,253,188,156,64,24,0,0,0,0,0,0,0,0,0,0,0,0,0,34,241,143,202,230,239,253,253,197,132,24,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,155,195,218,92,116,22,11,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,202,254,254,254,255,254,255,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,118,251,253,253,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,211,146,146,146,146,146,146,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,248,253,242,215,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,195,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,253,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,167,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,224,253,236,72,0,0,26,82,230,230,230,192,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,187,0,0,6,194,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,240,253,251,145,83,88,253,253,253,253,253,253,249,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,252,245,113,174,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,164,0,42,253,253,195,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,65,213,228,244,223,65,19,25,168,253,247,96,0,0,0,0,0,0,0,0,0,0,0,8,116,101,0,0,0,0,0,90,0,0,100,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,149,253,193,0,0,0,0,0,14,47,205,241,253,246,127,6,0,0,0,0,0,0,0,0,0,0,0,48,218,253,56,0,0,0,0,0,167,253,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,101,58,58,58,207,222,252,253,253,231,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,38,211,253,253,253,253,253,253,253,253,248,106,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,210,253,253,253,253,253,253,181,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,111,253,253,253,104,89,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,192,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,246,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,244,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,168,0,0,0,0,0,0,103,226,246,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,168,0,0,0,0,0,109,251,254,254,233,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,168,0,0,0,0,11,230,193,117,227,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,95,0,0,0,0,125,254,115,0,78,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,168,0,0,0,0,207,254,37,0,73,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,168,0,0,0,0,207,254,19,0,73,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,151,0,0,0,27,233,254,35,0,126,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,254,112,0,0,0,49,254,254,39,48,237,220,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,168,0,0,0,49,254,254,83,133,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,181,2,0,0,49,254,254,205,250,174,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,124,5,4,34,237,254,254,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,205,254,254,248,227,254,254,254,201,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,254,254,254,248,142,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,178,130,62,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,245,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,252,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,231,221,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,236,54,127,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,107,0,128,253,104,0,0,0,0,0,25,29,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,106,0,206,252,147,0,0,78,155,190,183,203,9,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,9,8,234,252,244,189,232,251,252,252,214,84,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,64,127,252,252,252,253,252,252,210,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,252,253,252,252,252,252,253,217,138,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,255,253,253,253,218,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,95,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,210,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,244,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,210,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,122,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,101,177,253,255,224,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,204,252,252,252,253,252,222,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,243,252,192,72,44,58,222,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,206,245,125,4,0,0,0,176,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,183,5,0,0,0,0,105,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,184,252,21,0,0,0,0,15,218,248,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,45,2,0,0,0,0,0,209,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,67,46,0,53,229,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,186,230,252,239,114,186,252,213,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,206,252,242,244,252,252,253,218,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,233,103,83,252,252,253,201,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,252,78,4,165,252,252,253,252,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,154,251,147,55,175,252,244,98,99,249,252,241,88,3,1,79,37,0,0,0,0,0,0,0,0,0,0,176,252,244,175,252,250,189,26,0,0,98,245,252,252,137,54,252,175,0,0,0,0,0,0,0,0,0,11,199,252,252,252,225,120,0,0,0,0,0,98,182,252,252,252,252,94,0,0,0,0,0,0,0,0,0,5,186,252,194,119,21,0,0,0,0,0,0,0,3,105,180,252,166,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,156,254,254,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,125,253,249,243,165,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,208,253,195,53,0,6,173,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,231,227,97,14,0,0,0,37,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,215,228,41,0,0,0,0,0,0,217,174,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,174,238,44,0,0,0,0,0,0,0,224,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,190,0,0,0,0,0,0,6,113,246,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,69,0,0,0,0,0,0,86,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,224,15,0,0,0,0,0,60,229,253,254,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,187,50,50,50,50,130,215,135,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,178,253,253,253,253,253,249,126,11,106,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,94,94,94,94,56,0,0,70,254,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,226,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,211,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,237,253,189,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,232,252,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,253,252,241,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,252,252,252,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,253,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,160,252,253,252,148,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,252,253,148,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,252,252,252,175,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,252,252,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,237,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,252,252,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,96,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,252,189,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,180,254,254,198,243,133,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,233,253,253,253,231,253,253,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,231,253,253,220,159,5,169,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,253,253,211,19,0,0,9,189,253,233,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,163,10,0,0,0,0,157,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,163,12,0,0,0,0,0,65,253,253,201,14,0,0,0,0,0,0,0,0,0,0,0,0,0,30,238,253,60,0,0,0,0,0,0,7,144,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,230,37,0,0,0,0,0,0,0,49,253,253,201,14,0,0,0,0,0,0,0,0,0,0,0,0,157,253,140,0,0,0,0,0,0,0,0,5,188,253,253,88,0,0,0,0,0,0,0,0,0,0,0,24,249,253,72,0,0,0,0,0,0,0,0,0,66,253,253,156,0,0,0,0,0,0,0,0,0,0,0,25,254,206,0,0,0,0,0,0,0,0,0,0,67,254,254,157,0,0,0,0,0,0,0,0,0,0,0,25,253,233,42,0,0,0,0,0,0,0,0,0,182,253,253,145,0,0,0,0,0,0,0,0,0,0,0,25,253,230,38,0,0,0,0,0,0,0,0,31,226,253,241,31,0,0,0,0,0,0,0,0,0,0,0,25,253,253,95,0,0,0,0,0,0,0,0,49,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,19,230,253,193,0,0,0,0,0,0,0,38,155,253,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,239,46,0,0,0,0,0,7,185,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,253,182,16,0,0,0,10,210,253,253,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,184,98,98,213,221,253,253,211,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,222,253,253,253,253,253,254,253,185,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,104,231,253,253,253,191,121,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,148,236,254,253,253,253,209,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,190,247,252,252,253,252,252,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,153,253,252,252,252,190,65,56,38,126,223,232,127,11,0,0,0,0,0,0,0,0,0,0,0,0,6,190,252,253,169,93,119,14,0,0,0,0,106,253,252,47,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,191,37,0,0,0,0,0,0,0,18,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,45,0,0,0,0,0,0,0,0,0,166,253,127,0,0,0,0,0,0,0,0,0,0,0,0,232,252,173,0,0,0,0,0,0,0,0,0,0,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,223,247,91,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,42,63,0,0,0,0,0,0,0,0,0,0,0,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,250,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,182,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,101,135,232,232,233,232,232,232,232,216,127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,252,252,252,253,252,252,252,252,253,252,210,83,0,0,0,0,0,0,0,0,0,0,0,0,27,150,253,252,252,252,164,147,147,200,252,252,253,252,252,215,18,0,0,0,0,0,0,0,0,0,0,31,218,253,254,253,197,35,0,0,0,0,0,45,124,243,253,253,147,0,0,0,0,0,0,0,0,0,0,162,252,252,253,252,240,35,0,0,0,0,0,0,0,111,252,252,182,0,0,0,0,0,0,0,0,0,131,251,252,252,253,201,27,0,0,0,0,0,0,0,0,94,252,252,244,0,0,0,0,0,0,0,0,0,190,252,252,252,243,47,0,0,0,0,0,0,0,0,0,190,252,252,121,0,0,0,0,0,0,0,0,80,242,252,252,252,79,0,0,0,0,0,0,0,0,0,18,216,252,226,24,0,0,0,0,0,0,0,0,254,253,253,253,253,0,0,0,0,0,0,0,0,0,18,166,253,253,172,0,0,0,0,0,0,0,0,0,253,252,252,252,252,173,21,0,0,0,0,0,0,48,216,253,252,201,21,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,150,0,0,0,0,16,84,237,252,253,236,72,0,0,0,0,0,0,0,0,0,0,253,252,252,252,208,128,21,0,16,64,169,232,252,252,252,216,47,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,252,150,185,211,221,252,253,252,252,226,103,18,0,0,0,0,0,0,0,0,0,0,0,0,36,243,253,253,253,254,253,253,253,253,255,222,115,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,202,252,252,253,252,252,252,182,107,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,91,170,232,152,73,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,105,166,218,105,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,183,208,208,208,208,208,208,242,252,253,252,252,160,42,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,252,252,252,252,253,252,252,252,225,48,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,252,252,252,252,252,252,252,253,252,252,252,252,143,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,252,252,252,212,177,177,177,178,239,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,31,196,239,236,181,74,35,0,0,0,0,103,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,56,14,0,0,0,0,0,0,139,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,249,252,252,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,252,252,252,238,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,209,253,252,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,255,253,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,113,242,252,253,237,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,60,164,210,252,252,252,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,252,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,225,252,252,252,252,252,238,90,0,0,0,0,23,22,0,0,0,0,0,0,0,0,0,0,0,0,75,239,252,252,252,252,252,252,239,178,179,178,178,178,200,200,178,178,161,74,0,0,0,0,0,0,0,0,183,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,80,49,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,241,98,0,0,0,0,0,0,0,0,121,244,252,252,252,252,252,252,252,252,253,252,252,252,238,189,59,199,180,24,0,0,0,0,0,0,0,0,0,86,199,252,252,252,252,252,252,252,253,252,154,103,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,197,255,139,255,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,224,253,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,86,197,254,253,254,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,197,251,253,251,253,251,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,255,253,254,253,169,225,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,138,0,168,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,255,253,254,139,141,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,196,253,251,253,251,253,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,169,225,254,253,254,253,254,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,139,251,253,251,253,251,253,251,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,254,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,253,251,253,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,196,0,0,198,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,83,0,0,28,196,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,84,0,57,141,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,83,169,224,253,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,254,253,254,253,254,253,254,196,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,254,196,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,253,138,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,251,230,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,251,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,255,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,205,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,251,253,243,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,92,166,253,253,176,0,0,0,0,19,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,206,253,252,252,252,225,0,0,0,32,187,149,7,0,0,0,0,0,0,0,0,0,0,0,0,0,132,240,252,253,252,252,252,150,0,0,38,229,252,186,6,0,0,0,0,0,0,0,0,0,0,0,51,176,243,252,252,253,252,164,40,0,76,150,237,253,252,205,13,0,0,0,0,0,0,0,0,0,0,48,241,255,253,253,241,101,0,0,0,154,253,253,253,254,253,156,0,0,0,0,0,0,0,0,0,0,63,197,252,253,252,196,47,0,0,45,157,253,252,252,252,247,121,19,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,234,147,85,160,240,252,253,252,224,118,50,0,0,0,0,0,0,0,0,0,0,0,26,243,252,252,253,252,252,252,253,252,252,252,253,151,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,225,225,242,253,253,253,254,253,253,178,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,253,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,252,253,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,252,102,153,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,254,253,106,0,13,207,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,189,19,0,0,169,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,84,0,0,0,131,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,133,0,0,13,194,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,165,41,154,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,253,252,252,252,253,252,233,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,252,252,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,153,252,252,252,140,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,22,130,212,255,254,254,254,121,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,205,253,253,253,253,253,253,253,253,159,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,97,253,253,253,253,253,253,253,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,253,253,253,253,253,253,253,253,175,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,185,253,253,253,253,253,246,192,140,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,238,253,253,229,192,72,0,25,139,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,86,86,30,0,0,0,0,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,212,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,69,84,192,192,192,192,102,119,253,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,203,253,253,253,253,253,253,253,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,231,253,253,253,253,253,253,253,253,253,253,253,194,52,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,202,166,106,106,183,253,253,253,253,253,253,238,25,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,105,0,0,0,96,253,253,253,253,253,253,253,221,67,0,0,0,0,0,0,0,0,0,0,0,130,253,253,105,0,0,88,244,253,253,226,118,130,237,253,253,241,169,5,0,0,0,0,0,0,0,0,0,130,253,253,166,106,125,245,253,253,253,133,0,0,99,253,253,253,253,113,3,0,0,0,0,0,0,0,0,13,202,253,253,253,253,253,253,253,80,5,0,0,6,105,253,253,253,253,60,0,0,0,0,0,0,0,0,0,79,253,253,253,253,253,230,109,3,0,0,0,0,5,167,253,253,253,129,0,0,0,0,0,0,0,0,0,7,129,202,238,129,129,44,0,0,0,0,0,0,0,2,169,253,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,194,178,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,245,214,147,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,240,205,254,253,222,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,250,240,68,98,244,48,12,125,199,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,100,0,98,195,0,0,0,195,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,255,196,30,0,99,135,0,0,0,38,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,249,36,0,0,15,15,0,0,0,0,246,135,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,165,0,0,0,0,0,0,0,0,0,156,209,24,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,45,0,0,0,0,0,0,0,0,0,156,253,93,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,0,0,0,0,0,0,0,0,0,0,156,253,174,0,0,0,0,0,0,0,0,0,0,0,0,176,254,254,0,0,0,0,0,0,0,0,0,0,97,254,175,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,0,0,0,0,0,0,0,0,0,0,59,253,174,0,0,0,0,0,0,0,0,0,0,0,0,175,253,185,0,0,0,0,0,0,0,0,0,0,89,253,174,0,0,0,0,0,0,0,0,0,0,0,0,160,253,155,0,0,0,0,0,0,0,0,0,16,209,253,174,0,0,0,0,0,0,0,0,0,0,0,0,79,253,193,0,0,0,0,0,0,0,0,0,173,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,31,219,254,0,0,0,0,0,0,0,0,159,254,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,226,193,72,12,5,20,118,125,214,250,253,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,223,193,253,254,253,253,253,253,205,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,232,253,253,253,254,253,253,247,176,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,96,111,155,193,155,126,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,252,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,252,249,237,89,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,213,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,248,252,252,225,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,252,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,168,17,0,0,0,0,19,81,193,193,193,193,115,29,0,0,0,0,0,0,0,0,0,0,0,147,252,252,29,0,0,0,0,0,192,252,252,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,209,253,204,17,0,0,0,46,253,255,253,185,149,149,223,253,253,59,0,0,0,0,0,0,0,0,0,0,208,252,132,0,0,0,22,182,252,253,167,16,0,0,56,252,252,59,0,0,0,0,0,0,0,0,0,0,208,252,210,19,0,0,186,252,252,185,16,0,0,0,30,252,252,59,0,0,0,0,0,0,0,0,0,0,138,252,252,29,0,0,238,252,252,79,0,0,0,0,101,252,209,31,0,0,0,0,0,0,0,0,0,0,60,252,252,182,22,0,238,252,120,0,0,0,0,23,200,252,162,0,0,0,0,0,0,0,0,0,0,0,18,171,252,252,95,110,248,220,30,0,0,20,30,183,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,252,252,207,0,0,32,210,252,252,252,180,76,0,0,0,0,0,0,0,0,0,0,0,0,1,85,241,252,252,252,249,238,240,241,252,252,172,144,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,212,252,252,252,252,253,214,198,59,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,182,252,252,252,104,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,132,184,253,255,242,132,132,105,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,243,250,252,229,230,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,216,76,87,96,0,10,96,126,252,190,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,156,252,235,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,232,252,195,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,148,217,253,243,138,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,109,207,249,252,252,248,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,252,252,252,131,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,216,250,241,241,241,241,249,253,253,172,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,77,0,0,0,0,57,176,243,252,226,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,223,252,190,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,201,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,53,174,252,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,217,171,0,0,0,47,98,166,239,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,245,229,229,229,240,253,252,252,231,58,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,131,166,252,252,252,252,132,131,57,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,218,255,254,187,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,250,253,253,253,253,189,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,245,177,214,253,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,127,192,247,253,253,226,0,30,244,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,220,253,253,253,253,247,195,0,85,249,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,176,253,253,253,192,103,83,2,14,131,253,196,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,196,13,0,25,144,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,9,0,0,109,253,253,199,13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,129,32,128,246,253,251,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,231,253,253,233,111,253,253,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,234,253,253,216,253,244,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,180,253,253,253,232,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,252,237,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,245,253,253,253,253,170,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,253,146,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,112,242,253,253,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,111,244,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,183,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,149,253,253,253,253,255,107,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,252,252,252,252,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,252,252,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,252,252,252,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,137,137,137,232,252,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,255,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,252,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,177,252,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,74,0,0,0,0,0,0,0,47,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,148,76,24,24,24,76,149,253,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,209,252,252,253,252,252,252,252,253,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,253,252,252,252,252,253,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,88,244,253,252,252,252,252,253,252,185,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,137,137,168,252,147,128,22,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,92,176,236,254,254,248,175,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,70,177,244,253,227,178,136,136,181,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,196,254,226,152,93,12,0,0,0,98,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,232,229,92,11,0,0,0,0,0,25,218,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,14,212,225,36,0,0,0,0,0,0,5,188,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,235,39,0,0,0,0,0,0,31,197,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,214,0,0,0,0,0,0,47,214,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,226,12,0,0,0,0,49,224,253,144,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,175,2,0,10,128,248,211,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,253,104,100,222,253,205,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,253,254,226,152,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,195,253,253,193,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,255,251,216,186,188,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,243,233,91,0,67,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,48,0,0,0,187,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,250,229,0,0,0,25,248,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,122,0,0,5,140,241,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,145,0,31,172,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,167,232,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,247,254,229,79,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,200,255,118,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,30,111,200,253,253,254,121,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,210,253,253,254,253,253,254,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,54,246,254,254,254,241,228,206,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,135,254,253,254,253,221,30,0,22,234,253,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,253,253,253,242,145,15,0,0,0,225,253,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,240,67,0,0,0,0,0,152,253,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,249,141,18,0,0,0,0,0,0,126,253,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,101,0,0,0,0,0,0,0,0,162,253,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,253,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,5,1,0,1,113,254,253,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,61,132,174,254,254,178,136,150,253,254,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,125,253,253,253,254,253,253,254,253,253,254,249,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,253,253,253,253,253,253,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,225,254,254,245,229,248,254,254,254,254,254,254,134,98,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,253,201,50,13,213,253,253,253,253,253,191,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,232,207,237,254,254,254,245,167,20,5,20,2,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,254,254,254,254,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,203,254,254,254,254,254,150,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,222,253,253,159,78,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,236,254,255,185,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,111,177,253,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,217,253,253,237,156,82,90,253,238,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,176,45,0,0,12,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,230,253,178,14,0,0,0,12,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,193,55,0,0,0,0,62,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,237,242,5,0,0,0,0,56,190,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,5,0,0,0,0,9,181,253,237,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,251,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,150,241,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,119,253,253,166,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,129,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,231,245,253,130,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,188,253,246,131,2,5,12,18,130,130,100,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,192,253,237,83,7,66,187,253,253,253,253,246,96,0,0,0,0,0,0,0,0,0,0,0,0,0,69,237,253,251,98,166,186,253,253,232,206,192,88,66,0,0,0,0,0,0,0,0,0,0,0,0,0,39,236,253,253,253,253,253,253,233,89,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,246,170,143,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,211,150,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,223,156,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,200,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,103,218,254,224,111,36,36,50,154,145,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,254,254,254,254,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,254,254,254,254,254,254,254,254,254,238,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,248,254,198,165,110,110,205,254,254,254,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,183,11,0,0,0,13,250,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,125,58,0,0,0,3,59,252,254,251,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,254,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,201,255,254,246,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,255,254,255,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,246,254,254,212,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,202,254,254,251,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,250,254,254,206,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,245,254,254,227,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,187,254,254,248,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,251,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,220,254,204,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,240,247,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,248,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,128,210,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,215,253,253,253,253,253,243,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,243,188,227,253,253,248,137,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,251,200,35,0,99,233,246,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,223,0,0,0,0,0,74,242,253,236,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,247,221,13,0,0,0,0,113,253,253,236,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,223,51,4,0,0,0,0,15,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,145,0,0,0,0,0,0,7,207,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,235,26,0,0,0,0,0,0,169,254,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,251,234,111,149,149,173,210,252,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,253,253,253,253,253,253,253,253,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,184,214,230,253,253,253,253,253,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,24,39,39,39,39,58,253,253,249,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,227,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,253,253,217,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,197,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,122,205,253,253,251,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,73,173,254,255,208,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,196,254,249,245,245,253,167,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,151,254,234,50,0,0,221,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,206,51,0,0,0,147,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,233,51,0,0,0,0,225,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,128,0,0,0,0,50,247,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,219,221,13,0,0,0,0,147,254,168,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,141,0,0,0,0,79,247,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,245,213,8,0,0,47,191,254,226,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,141,42,151,246,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,254,239,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,112,227,213,162,94,254,243,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,7,0,129,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,250,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,240,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,78,79,141,166,253,253,254,178,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,252,253,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,252,252,214,168,93,56,94,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,241,139,103,15,0,0,0,113,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,241,151,0,0,0,0,0,60,241,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,47,0,0,0,0,7,82,234,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,241,252,164,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,241,251,200,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,227,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,209,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,184,0,0,0,0,0,0,16,29,117,191,254,84,0,0,0,0,0,0,0,0,0,0,0,0,19,231,234,28,0,26,57,57,144,169,216,252,252,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,57,243,247,197,197,222,253,252,252,252,244,168,130,56,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,203,252,252,252,253,227,139,90,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,32,32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,127,253,251,251,251,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,64,229,251,253,251,251,251,251,242,201,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,159,170,251,251,251,253,251,251,251,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,24,194,255,253,253,253,253,255,253,253,253,253,255,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,84,251,253,251,251,251,251,253,251,251,243,220,253,251,251,236,71,0,0,0,0,0,0,0,0,0,0,64,236,251,253,251,251,251,251,253,251,251,109,0,173,251,251,251,173,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,251,251,253,251,251,169,0,96,251,251,251,152,0,0,0,0,0,0,0,0,0,20,205,251,251,253,251,251,251,251,253,251,251,228,59,96,251,251,251,251,0,0,0,0,0,0,0,0,0,92,253,253,253,255,253,253,253,253,255,253,205,59,158,195,253,253,253,253,0,0,0,0,0,0,0,0,72,236,251,251,251,253,251,251,243,220,221,200,31,0,0,96,251,251,251,251,0,0,0,0,0,0,0,0,96,251,251,251,251,205,220,251,109,0,0,0,0,0,0,96,251,251,251,172,0,0,0,0,0,0,0,0,134,251,251,251,251,19,71,94,12,0,0,0,32,64,64,234,251,251,251,94,0,0,0,0,0,0,0,0,253,251,251,251,251,159,228,251,169,158,159,158,205,251,251,253,251,251,211,35,0,0,0,0,0,0,0,0,195,253,253,253,253,255,253,253,253,253,255,253,253,253,253,255,253,205,19,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,251,251,251,251,253,251,251,251,251,221,200,31,0,0,0,0,0,0,0,0,0,0,48,141,251,251,251,253,251,251,251,251,253,251,251,219,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,31,31,31,31,31,31,31,31,31,31,31,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,166,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,243,239,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,211,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,237,130,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,121,251,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,242,248,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,246,243,26,0,0,0,0,42,42,85,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,181,0,0,0,0,112,253,254,254,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,181,0,0,16,157,252,224,144,131,246,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,234,22,0,110,254,151,2,0,0,108,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,39,0,101,246,194,54,0,0,87,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,209,24,0,51,83,36,0,50,231,249,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,215,254,206,115,94,11,28,115,232,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,188,254,254,254,254,254,254,224,123,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,133,150,234,152,115,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,242,248,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,165,165,84,0,0,18,198,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,84,181,253,254,254,254,133,5,125,254,254,222,87,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,254,254,254,226,179,240,254,192,254,254,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,251,224,75,16,0,154,254,254,254,230,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,191,0,0,0,17,194,254,254,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,140,0,0,0,106,254,254,246,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,236,26,0,0,150,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,239,254,218,17,128,251,254,118,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,243,254,216,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,83,254,254,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,243,171,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,254,203,31,21,251,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,202,21,0,166,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,254,72,26,145,250,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,157,237,254,254,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,230,132,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,188,254,191,55,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,192,134,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,224,253,237,138,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,102,219,253,233,191,100,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,98,222,231,248,245,182,104,23,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,184,230,253,253,169,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,84,165,250,242,160,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,206,253,229,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,220,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,239,253,228,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,255,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,227,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,244,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,244,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,234,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,244,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,247,253,253,246,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,237,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,172,206,254,254,238,109,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,65,175,180,254,253,253,253,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,253,254,253,227,146,146,167,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,246,253,253,253,254,253,76,0,0,98,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,253,241,132,105,157,50,0,34,245,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,7,214,253,253,224,39,0,0,0,0,49,177,253,121,4,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,184,22,0,0,0,4,100,246,253,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,139,4,0,0,0,3,157,253,253,242,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,41,0,0,0,0,135,253,253,172,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,135,11,0,0,132,198,253,211,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,209,145,249,254,255,235,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,219,253,253,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,253,253,253,253,228,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,244,253,245,230,242,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,244,253,172,44,15,139,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,244,160,41,6,0,0,0,254,242,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,49,0,0,0,17,163,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,242,100,147,147,195,236,253,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,229,253,253,253,253,253,253,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,90,240,187,227,179,18,88,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,126,220,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,143,254,150,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,181,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,251,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,230,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,225,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,249,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,248,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,167,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,220,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,168,254,133,0,0,88,179,218,218,218,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,236,34,9,167,250,243,181,130,248,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,146,41,188,244,152,34,0,83,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,208,254,161,242,210,62,0,0,55,209,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,254,188,26,0,0,122,246,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,172,4,0,37,187,252,215,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,183,199,243,249,240,133,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,231,254,254,254,254,241,132,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,206,4,4,4,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,98,225,255,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,162,253,253,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,180,253,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,176,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,125,253,253,253,253,227,119,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,227,243,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,220,253,253,220,25,64,192,253,226,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,245,104,0,0,55,218,253,226,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,122,0,0,0,0,22,219,253,226,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,86,0,0,0,0,0,94,243,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,253,253,86,0,0,0,0,0,0,177,253,229,18,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,224,19,0,0,0,0,0,0,88,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,216,0,0,0,0,0,0,0,60,242,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,229,30,0,0,0,0,0,0,0,115,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,86,0,0,0,0,0,0,0,94,253,238,15,0,0,0,0,0,0,0,0,0,0,0,0,3,161,253,253,212,32,0,0,0,0,0,0,94,253,212,11,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,253,213,106,28,0,0,0,37,221,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,108,253,253,253,253,240,236,138,212,242,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,30,155,253,253,253,253,253,253,253,253,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,30,129,220,253,253,214,87,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,252,195,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,235,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,248,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,190,255,190,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,202,83,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,241,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,168,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,227,238,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,193,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,231,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,97,170,159,138,139,65,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,161,253,252,252,252,252,253,252,186,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,240,252,253,252,252,227,246,253,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,240,252,252,98,45,45,29,42,117,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,244,252,168,22,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,253,46,0,0,0,0,0,0,139,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,206,37,0,0,0,0,0,0,159,252,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,250,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,227,119,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,252,154,47,5,0,0,0,38,47,57,109,109,103,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,252,190,185,184,184,240,252,253,252,170,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,252,253,252,252,252,252,150,45,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,168,252,252,243,137,137,43,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,252,252,235,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,215,253,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,255,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,180,252,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,252,252,252,228,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,255,253,222,138,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,140,244,253,252,252,252,96,0,30,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,203,252,252,253,240,183,89,37,17,228,171,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,194,252,252,252,203,79,0,0,0,118,252,252,194,9,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,42,11,0,0,0,0,86,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,150,0,0,0,0,0,64,24,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,22,253,252,218,37,0,0,0,0,0,42,66,252,252,214,18,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,100,0,0,0,0,0,0,85,253,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,208,93,51,0,60,124,207,228,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,242,231,244,252,252,252,253,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,255,253,253,253,253,255,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,252,253,252,252,252,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,57,174,253,252,252,252,85,69,102,252,252,221,253,252,202,13,0,0,0,0,0,0,0,0,0,0,0,100,244,252,253,252,252,176,4,0,9,129,66,25,159,252,252,88,0,0,0,0,0,0,0,0,0,74,230,246,252,252,253,252,221,35,0,0,0,0,0,0,138,252,252,56,0,0,0,0,0,0,0,0,0,34,253,253,245,230,127,209,63,21,0,0,0,0,0,0,34,253,253,161,0,0,0,0,0,0,0,0,0,138,252,252,139,0,0,0,0,0,0,0,0,0,0,0,159,252,252,160,0,0,0,0,0,0,0,0,0,138,252,252,129,0,0,0,0,0,0,0,0,0,0,85,253,252,252,128,0,0,0,0,0,0,0,0,0,44,252,252,236,61,0,0,0,0,0,0,0,0,34,218,253,252,153,9,0,0,0,0,0,0,0,0,0,13,211,252,252,242,221,116,116,116,116,64,63,116,218,252,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,171,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,228,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,229,253,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,235,253,231,101,95,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,255,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,190,253,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,247,247,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,244,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,183,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,243,48,20,20,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,247,199,240,235,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,211,254,253,240,194,248,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,245,100,128,118,254,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,255,114,0,0,0,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,231,31,7,35,192,254,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,217,199,253,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,254,253,253,253,253,192,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,254,245,155,140,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,234,255,246,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,173,71,192,214,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,250,142,2,0,12,216,226,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,218,6,0,0,0,59,251,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,242,70,0,0,0,0,159,239,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,206,0,0,0,0,0,174,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,169,0,0,0,0,10,218,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,225,114,0,0,0,0,99,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,96,0,0,0,22,243,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,159,0,0,6,161,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,246,107,30,161,173,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,206,231,149,29,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,71,238,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,194,156,59,36,18,0,0,0,0,0,10,36,59,32,0,0,0,0,0,0,0,0,0,0,0,0,0,12,184,253,254,238,226,214,214,215,214,214,220,238,254,235,66,0,0,0,0,0,0,0,0,0,0,0,0,0,12,78,101,174,174,174,174,175,174,144,78,78,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,217,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,240,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,210,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,232,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,250,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,235,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,230,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,128,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,128,128,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,223,35,0,0,0,0,0,0,0,0,4,183,209,0,0,0,0,0,0,0,0,0,0,0,0,0,61,226,91,0,0,0,0,0,0,0,0,0,57,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,21,0,0,0,0,0,0,0,0,43,234,226,24,0,0,0,0,0,0,0,0,0,0,0,16,152,253,126,7,0,0,0,0,0,0,0,11,171,252,183,14,0,0,0,0,0,0,0,0,0,0,0,64,252,236,37,0,0,0,0,0,0,0,0,130,252,235,14,0,0,0,0,0,0,0,0,0,0,15,105,253,253,87,78,51,14,0,0,0,4,69,192,255,222,62,0,0,0,0,0,0,0,0,0,0,15,185,252,252,252,253,252,252,211,146,71,64,142,252,252,239,42,0,0,0,0,0,0,0,0,0,0,0,52,252,252,252,244,127,82,126,196,240,250,247,252,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,218,252,252,210,49,0,0,0,0,35,84,211,252,252,226,35,0,0,0,0,0,0,0,0,0,0,0,0,147,226,112,66,0,0,0,0,0,0,18,216,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,241,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,201,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,239,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,247,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,94,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,246,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,250,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,240,187,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,242,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,234,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,56,24,82,112,132,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,153,249,254,255,254,246,125,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,241,253,253,248,183,76,160,243,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,217,51,0,0,0,36,195,229,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,172,55,0,0,0,0,52,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,245,88,130,40,0,0,0,0,33,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,245,27,0,0,0,0,0,5,155,232,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,32,0,0,0,0,73,203,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,187,74,66,45,98,246,246,150,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,253,253,253,248,254,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,245,176,171,90,58,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,117,141,204,253,216,41,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,157,216,252,252,252,253,252,252,252,194,19,0,0,0,0,0,0,0,0,0,0,23,66,0,0,48,160,240,252,253,252,252,252,253,252,252,252,253,190,19,0,0,0,0,0,0,0,0,0,4,9,0,51,241,252,252,252,253,177,139,139,140,139,139,240,253,252,193,13,0,0,0,0,0,0,0,0,0,0,0,176,255,253,244,125,0,0,0,0,0,0,0,226,254,253,253,28,0,0,0,0,0,0,0,0,0,0,57,243,253,214,56,0,0,0,0,0,0,0,0,225,253,252,252,28,0,0,0,0,0,0,0,0,0,0,85,252,253,196,0,0,0,0,0,0,0,0,0,225,253,252,252,28,0,0,0,0,0,0,0,0,0,0,47,240,253,196,0,0,0,0,0,0,0,0,126,249,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,226,254,253,165,41,0,0,0,26,92,166,253,253,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,252,252,169,169,169,243,253,252,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,252,252,168,187,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,139,139,78,28,28,28,0,57,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,100,145,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,167,253,253,253,145,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,174,253,223,214,253,253,225,124,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,216,252,124,28,14,101,193,193,245,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,120,248,253,207,0,0,0,0,0,0,183,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,66,199,253,253,155,23,0,0,0,0,0,0,19,235,132,0,0,0,0,0,0,0,0,0,0,0,0,24,217,253,253,114,19,0,0,0,0,0,0,0,38,239,132,0,0,0,0,0,0,0,0,0,0,0,97,236,253,217,99,3,0,0,0,0,0,0,0,0,98,253,242,0,0,0,0,0,0,0,0,0,12,196,250,253,218,89,0,0,0,0,0,0,0,0,0,0,51,242,253,0,0,0,0,0,0,0,0,1,151,254,252,155,29,0,0,0,0,0,0,0,0,0,0,0,98,254,191,0,0,0,0,0,0,0,0,24,253,250,128,0,0,0,0,0,0,0,0,0,0,0,0,9,170,253,132,0,0,0,0,0,0,0,0,151,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,238,56,0,0,0,0,0,0,0,0,254,253,96,0,0,0,0,0,0,0,0,0,0,0,12,141,238,211,59,0,0,0,0,0,0,0,0,0,254,253,96,0,0,0,0,0,0,0,0,0,38,84,199,236,152,10,0,0,0,0,0,0,0,0,0,0,254,253,216,113,73,73,73,73,73,73,195,194,231,239,151,43,0,0,0,0,0,0,0,0,0,0,0,0,112,217,253,253,253,253,253,253,253,253,254,204,94,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,111,221,253,253,253,170,156,156,94,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,24,24,24,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,37,37,52,37,37,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,196,125,178,234,254,254,254,254,254,244,230,228,184,169,115,17,0,0,0,0,0,0,0,0,0,0,0,93,254,254,254,254,239,196,226,184,199,208,251,254,254,254,254,217,0,0,0,0,0,0,0,0,0,0,2,188,254,214,107,0,0,0,0,0,0,0,0,0,0,0,56,61,0,0,0,0,0,0,0,0,0,0,57,254,248,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,163,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,185,182,147,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,196,242,213,182,218,246,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,222,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,25,254,247,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,85,0,0,0,0,51,254,205,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,244,70,0,0,0,171,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,244,153,91,183,255,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,200,254,248,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,36,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,115,233,254,254,240,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,198,253,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,20,214,254,234,149,180,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,206,51,0,104,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,79,242,247,136,7,0,62,247,253,253,199,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,220,55,0,0,0,180,253,253,253,231,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,37,0,0,0,59,236,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,247,99,1,0,0,0,152,253,253,253,192,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,234,0,0,0,0,78,239,253,253,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,234,0,0,0,70,229,253,249,131,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,212,125,159,170,254,255,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,239,239,253,253,253,230,83,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,35,35,243,252,173,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,167,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,247,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,210,239,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,120,82,109,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,239,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,113,191,113,114,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,219,252,252,252,253,243,193,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,214,195,119,246,252,199,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,153,253,242,192,28,0,0,130,252,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,167,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,141,15,0,0,0,0,0,198,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,0,0,0,0,0,0,76,246,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,227,0,0,0,0,0,0,117,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,0,0,0,76,243,252,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,240,253,223,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,88,234,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,252,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,162,63,51,113,113,113,113,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,253,252,252,234,240,238,252,252,252,252,241,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,253,252,252,252,252,253,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,242,223,223,223,162,84,84,84,161,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,112,112,74,0,0,0,0,0,0,0,0,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,145,230,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,157,247,254,254,254,250,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,254,254,178,52,194,168,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,98,238,254,206,87,43,190,254,229,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,126,254,254,181,37,138,242,254,254,224,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,228,124,246,254,247,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,231,254,254,254,254,172,66,254,227,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,154,182,100,46,10,211,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,229,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,246,234,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,225,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,229,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,242,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,251,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,202,254,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,225,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,101,107,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,162,253,253,253,253,70,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,38,162,253,253,253,253,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,210,253,253,253,248,222,222,245,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,230,198,77,0,0,186,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,229,198,34,0,0,0,0,105,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,80,35,0,0,0,0,0,0,63,253,253,188,9,0,44,50,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,192,180,245,253,185,180,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,90,203,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,7,69,147,192,204,253,253,253,253,253,253,253,193,185,125,67,61,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,253,253,253,253,253,229,136,55,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,172,172,172,172,172,192,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,226,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,73,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,191,128,128,128,128,128,128,128,191,191,64,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,128,191,255,191,255,191,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,245,199,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,234,203,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,195,125,21,0,0,0,103,254,208,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,210,31,0,0,21,230,201,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,253,202,0,0,28,210,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,224,83,0,0,132,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,228,253,197,162,148,118,248,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,254,254,254,254,255,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,253,254,182,108,202,253,254,253,250,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,204,9,0,77,253,254,253,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,220,52,0,0,109,253,254,249,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,243,246,98,0,0,27,212,253,163,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,207,104,0,0,0,108,234,228,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,32,205,242,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,247,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,243,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,202,253,162,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,59,97,156,239,254,254,178,134,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,203,253,253,253,254,253,253,253,253,254,220,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,175,92,78,78,115,254,253,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,253,253,253,212,21,0,0,0,111,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,185,253,253,133,9,0,0,0,59,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,253,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,40,85,136,189,248,254,234,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,113,217,254,253,253,253,253,231,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,255,254,254,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,188,233,234,188,135,188,248,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,203,0,0,0,0,0,0,0,0,0,0,0,0,4,40,129,136,0,0,0,0,0,0,0,0,0,98,254,233,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,103,0,0,0,0,0,0,0,0,16,195,254,233,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,58,0,0,0,0,0,0,5,127,209,254,255,211,0,0,0,0,0,0,0,0,0,0,0,0,19,239,253,223,53,0,0,4,20,118,203,253,253,245,189,21,0,0,0,0,0,0,0,0,0,0,0,0,0,24,240,253,236,130,79,180,253,254,253,253,210,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,244,254,253,253,253,253,254,212,49,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,155,238,253,253,215,96,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,36,171,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,253,238,253,249,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,253,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,181,254,253,207,245,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,245,163,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,241,30,176,254,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,241,253,245,30,10,211,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,241,253,240,70,0,88,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,212,246,253,240,89,40,40,213,253,253,245,175,182,166,11,0,0,0,0,0,0,0,0,0,0,0,31,219,253,254,253,235,226,253,254,253,253,253,253,254,253,253,19,0,0,0,0,0,0,0,0,0,0,13,224,254,254,255,254,254,254,254,255,254,254,244,195,173,98,68,0,0,0,0,0,0,0,0,0,0,0,3,136,233,233,174,135,135,46,39,126,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,254,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,193,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,102,0,0,0,0,0,31,92,152,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,102,0,0,0,0,123,233,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,82,0,0,82,254,253,224,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,212,0,0,82,243,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,50,0,0,152,233,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,213,10,82,203,152,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,102,41,173,192,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,20,203,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,131,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,253,252,243,203,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,255,253,255,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,223,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,193,173,253,255,253,244,203,142,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,192,253,252,151,151,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,235,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,108,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,188,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,250,238,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,220,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,254,18,0,0,0,0,0,0,85,95,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,179,0,0,0,0,68,160,220,255,254,254,254,247,128,27,0,0,0,0,0,0,0,0,0,0,0,38,254,95,0,17,105,188,172,122,123,108,28,28,116,166,254,117,0,0,0,0,0,0,0,0,0,0,0,108,254,85,62,205,215,94,9,0,0,0,0,0,0,5,195,241,29,0,0,0,0,0,0,0,0,0,0,38,254,197,205,102,25,0,0,0,0,0,0,0,0,0,117,254,101,0,0,0,0,0,0,0,0,0,0,38,254,225,18,0,0,0,0,0,0,0,0,0,0,0,103,254,131,0,0,0,0,0,0,0,0,0,0,21,222,254,32,0,0,0,0,0,0,0,0,0,0,2,184,249,87,0,0,0,0,0,0,0,0,0,0,0,73,254,240,65,0,0,0,0,0,0,0,0,16,102,254,130,0,0,0,0,0,0,0,0,0,0,0,0,4,131,250,243,151,60,30,0,0,0,0,0,125,250,147,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,193,254,254,236,217,218,217,217,217,251,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,66,122,159,194,160,159,159,159,72,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,193,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,253,212,151,151,141,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,70,0,0,62,183,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,41,0,0,82,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,212,0,0,82,243,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,0,21,173,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,41,142,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,234,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,213,50,213,232,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,41,0,21,223,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,212,0,0,0,122,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,244,40,0,0,0,102,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,203,0,0,0,0,142,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,204,0,0,0,132,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,122,0,21,183,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,234,152,255,253,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,213,252,151,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,150,254,255,234,150,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,231,253,214,166,210,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,231,247,107,11,0,8,164,250,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,145,0,0,0,0,34,249,253,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,233,49,0,0,0,0,0,167,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,140,0,0,0,0,0,11,215,254,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,248,238,20,0,0,0,0,0,172,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,181,0,0,0,0,0,137,248,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,181,0,0,0,7,135,249,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,227,233,78,14,98,207,254,181,227,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,255,254,254,254,228,92,42,241,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,108,108,37,12,0,55,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,167,252,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,191,251,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,171,250,254,211,193,108,222,114,0,82,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,226,254,232,134,8,0,0,37,21,28,219,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,254,179,42,0,0,0,0,0,0,147,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,170,9,0,0,0,0,0,0,38,236,182,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,219,9,0,0,0,0,0,0,16,213,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,143,0,0,0,0,0,12,97,229,254,147,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,202,55,18,67,97,128,230,254,254,230,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,254,254,254,254,254,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,254,254,254,224,175,170,254,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,51,87,8,5,0,164,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,218,136,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,255,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,243,198,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,218,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,241,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,136,136,236,254,254,255,254,254,216,136,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,253,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,165,253,253,237,156,82,82,82,82,82,218,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,89,0,0,0,0,0,49,240,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,239,82,11,0,0,0,0,17,186,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,212,0,0,0,0,0,0,98,253,253,164,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,247,151,0,0,0,0,0,18,209,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,158,253,253,140,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,193,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,220,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,250,253,170,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,36,220,253,242,55,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0,0,95,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,253,236,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,233,253,232,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,164,253,229,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,218,217,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,73,73,73,155,233,252,215,0,0,0,0,0,0,0,0,0,0,0,0,21,0,32,37,16,37,161,98,221,253,252,252,252,253,252,215,0,0,0,0,0,0,0,0,0,1,125,144,206,144,237,252,190,253,252,252,252,253,252,252,252,253,252,236,62,0,0,0,0,0,0,0,0,109,252,252,252,252,252,252,252,253,252,252,252,253,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,109,252,252,252,252,252,252,252,253,252,252,252,222,179,76,35,253,252,252,108,0,0,0,0,0,0,0,0,109,252,252,252,252,241,215,215,217,215,195,71,41,0,0,0,253,252,226,31,0,0,0,0,0,0,0,0,109,252,252,252,108,77,0,0,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,208,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,94,136,210,210,120,111,16,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,254,254,254,254,254,186,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,249,234,234,234,249,254,254,215,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,222,95,0,0,0,58,146,254,254,251,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,14,0,0,0,0,0,4,62,189,254,216,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,145,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,247,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,116,206,215,215,215,118,114,16,218,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,254,254,254,254,254,254,254,213,139,71,71,58,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,236,239,239,254,254,254,254,254,254,254,254,254,249,98,0,0,0,0,0,0,0,0,0,0,0,89,254,254,167,97,28,75,148,254,254,254,254,254,254,254,254,225,0,0,0,0,0,0,0,0,0,0,0,10,199,254,254,251,235,196,243,254,254,203,120,120,120,120,198,80,0,0,0,0,0,0,0,0,0,0,0,0,19,201,254,254,254,254,254,254,214,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,83,204,209,209,209,146,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,166,199,254,255,229,145,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,251,253,253,253,254,253,253,212,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,225,155,105,105,131,208,253,253,229,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,185,32,0,0,0,0,8,77,220,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,86,0,0,0,0,0,0,0,56,247,224,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,43,0,0,0,0,0,0,0,0,219,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,113,0,0,0,0,0,0,0,0,219,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,223,82,0,0,0,0,0,0,4,221,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,195,253,246,147,33,3,0,0,0,89,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,238,253,253,253,199,175,175,175,245,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,157,235,254,254,255,254,254,254,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,75,183,183,183,102,48,135,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,241,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,181,252,253,179,0,0,63,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,179,0,63,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,252,253,179,11,175,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,179,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,97,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,35,37,253,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,222,222,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,252,252,253,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,253,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,56,179,119,35,190,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,213,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,171,228,253,251,251,251,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,142,251,251,251,253,156,188,251,251,0,96,63,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,234,251,251,251,211,31,8,16,169,228,223,244,236,165,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,251,94,0,0,0,0,158,253,251,251,188,0,0,0,0,0,0,0,0,0,0,12,174,253,253,255,253,205,19,0,0,0,0,24,194,255,253,253,129,0,0,0,0,0,0,0,0,0,0,52,251,251,251,241,101,31,0,0,0,4,32,186,251,253,227,62,8,0,0,0,0,0,0,0,0,0,48,221,251,251,251,79,0,0,0,0,0,112,251,251,251,253,140,0,0,0,0,0,0,0,0,0,0,0,96,251,251,235,89,0,0,0,0,40,223,244,251,251,251,31,8,0,0,0,0,0,0,0,0,0,0,0,96,251,251,228,158,159,158,158,158,217,253,251,251,251,152,0,0,0,0,0,0,0,0,0,0,0,0,0,60,230,253,253,253,255,253,253,253,253,255,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,251,251,251,253,251,251,251,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,126,156,172,126,126,126,126,204,253,251,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,0,0,0,0,158,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,233,251,251,58,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,220,251,251,251,128,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,188,244,251,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,94,95,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,10,52,51,52,51,52,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,213,212,253,252,253,252,253,232,203,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,255,253,255,253,203,203,214,253,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,91,50,50,50,0,0,10,50,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,103,102,204,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,213,152,152,214,253,254,253,255,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,253,252,253,252,253,252,253,252,253,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,163,203,183,102,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,145,195,195,161,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,235,253,236,237,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,207,254,215,96,29,36,236,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,103,6,0,0,104,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,212,253,122,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,185,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,104,255,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,166,253,254,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,240,253,254,253,215,174,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,103,161,245,253,253,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,229,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,245,244,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,215,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,224,253,169,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,128,245,254,169,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,55,214,254,244,123,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,205,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,211,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,157,216,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,252,253,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,113,150,225,229,252,252,240,163,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,141,255,253,253,253,255,253,253,253,255,253,165,16,0,0,0,0,0,0,0,0,0,0,0,0,57,150,252,252,253,240,196,246,253,252,208,196,228,252,252,128,0,0,0,0,0,0,0,0,0,0,0,176,253,252,252,127,56,43,29,234,253,208,13,0,31,81,168,118,0,0,0,0,0,0,0,0,0,26,150,249,241,115,28,3,0,26,210,252,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,216,253,241,51,0,0,0,16,128,253,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,115,0,0,0,26,216,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,168,130,6,0,0,0,126,168,168,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,176,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,171,245,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,230,254,245,138,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,241,253,216,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,92,7,217,253,220,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,255,109,46,91,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,213,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,215,253,213,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,208,253,248,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,146,254,254,228,195,86,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,63,198,254,253,253,200,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,178,235,253,240,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,118,0,0,110,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,223,10,0,160,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,229,254,135,140,245,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,247,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,188,162,91,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,49,134,214,232,131,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,169,254,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,150,254,254,246,163,170,254,254,236,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,254,254,132,10,76,234,254,254,215,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,245,226,70,2,54,247,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,247,70,0,88,248,254,220,157,237,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,233,0,91,235,254,240,96,3,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,236,98,253,254,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,255,214,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,223,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,255,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,250,254,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,248,254,240,165,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,209,254,240,76,40,254,217,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,252,111,0,49,254,235,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,246,254,118,0,3,173,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,244,25,0,131,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,216,254,160,37,199,252,250,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,251,254,161,236,254,250,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,254,254,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,220,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,248,156,70,2,0,0,0,12,119,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,132,4,0,0,0,0,0,147,219,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,185,9,0,0,0,0,0,42,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,95,0,0,0,0,0,0,95,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,161,3,0,0,0,0,0,129,231,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,153,4,0,0,0,0,178,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,251,175,118,82,99,109,236,197,179,224,224,224,224,224,187,112,0,0,0,0,0,0,0,0,0,0,0,0,56,171,206,206,206,206,247,217,121,121,112,34,34,34,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,247,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,240,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,176,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,159,254,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,101,253,254,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,169,240,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,228,163,254,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,239,253,242,37,112,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,234,53,0,150,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,249,104,0,0,169,253,120,0,7,19,51,49,0,0,0,0,0,0,0,0,0,0,0,0,0,79,232,254,102,0,0,0,254,253,145,162,207,254,253,242,39,0,0,0,0,0,0,0,0,0,0,0,50,234,254,228,99,176,254,254,255,254,254,254,254,255,254,146,20,0,0,0,0,0,0,0,0,0,0,32,199,253,253,254,253,253,253,253,254,253,206,159,108,83,18,3,0,0,0,0,0,0,0,0,0,0,0,55,253,253,240,254,219,203,127,204,254,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,144,73,35,54,4,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,228,255,150,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,248,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,176,92,73,73,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,245,253,253,253,254,212,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,130,36,68,101,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,249,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,248,254,24,28,127,145,120,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,187,235,253,253,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,254,242,156,73,87,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,195,37,0,0,66,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,124,0,0,0,0,182,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,248,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,168,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,243,207,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,222,254,204,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,216,242,254,202,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,164,253,240,159,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,109,109,183,253,244,156,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,253,254,168,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,150,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,154,154,99,154,154,226,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,234,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,253,253,201,164,134,47,148,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,213,39,29,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,249,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,152,253,253,253,160,90,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,253,200,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,205,176,176,176,246,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,41,15,0,0,0,231,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,253,253,247,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,0,0,27,88,148,148,222,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,178,194,132,144,243,253,253,253,253,253,253,232,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,228,127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,214,253,253,253,253,253,253,237,153,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,17,106,232,253,195,125,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,198,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,57,114,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,29,0,0,0,0,0,57,198,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,141,255,255,170,114,198,255,29,0,0,0,0,0,0,0,0,0,0,0,0,141,255,114,0,0,0,29,170,255,198,29,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,198,255,170,29,0,0,0,198,255,29,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,141,255,170,0,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,0,0,170,255,57,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,198,114,198,255,141,86,141,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,170,170,198,170,141,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,213,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,228,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,194,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,35,154,215,247,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,161,199,253,253,254,253,253,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,254,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,253,253,253,253,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,255,254,254,254,254,255,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,253,253,250,195,254,253,141,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,186,144,66,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,19,3,0,0,53,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,249,60,0,0,0,0,0,0,0,0,0,0,0,0,14,162,214,215,169,50,2,0,0,0,0,129,253,254,180,0,0,0,0,0,0,0,0,0,0,0,0,44,229,253,253,254,253,253,117,0,0,0,85,247,253,235,27,0,0,0,0,0,0,0,0,0,0,0,32,228,253,216,79,79,217,253,250,84,0,87,247,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,79,0,0,42,253,253,253,158,244,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,183,8,0,0,8,183,254,254,255,254,254,229,68,156,24,0,0,0,0,0,0,0,0,0,0,0,239,253,128,9,16,43,118,196,253,253,254,253,253,247,244,254,39,0,0,0,0,0,0,0,0,0,0,0,223,253,253,211,235,254,253,253,253,253,254,253,253,253,253,254,39,0,0,0,0,0,0,0,0,0,0,0,95,247,253,253,253,254,253,240,213,138,139,213,213,219,237,192,18,0,0,0,0,0,0,0,0,0,0,0,0,131,223,253,215,155,111,40,0,0,0,0,0,9,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,159,249,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,236,254,254,253,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,215,98,84,236,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,225,21,0,0,202,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,248,216,36,0,0,0,74,139,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,139,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,179,3,0,0,0,0,87,249,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,243,223,40,0,0,0,0,35,226,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,106,0,0,0,0,56,242,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,87,0,0,0,87,250,254,254,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,96,10,46,129,246,254,249,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,224,254,254,250,112,211,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,121,253,254,224,138,18,43,246,229,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,53,16,0,7,187,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,226,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,173,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,245,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,250,250,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,251,188,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,235,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,81,186,254,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,125,178,139,98,195,254,205,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,230,56,2,0,0,158,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,93,0,0,0,17,226,236,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,80,0,0,0,105,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,121,1,0,3,159,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,67,0,109,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,155,255,163,136,136,21,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,151,253,253,253,253,253,253,253,195,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,248,181,82,82,127,224,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,252,111,0,0,0,0,113,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,206,0,0,0,0,78,228,253,253,237,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,248,253,24,0,0,0,0,144,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,251,11,4,26,125,215,252,253,253,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,206,32,204,253,253,253,253,253,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,224,224,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,194,222,194,183,76,23,160,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,46,240,253,130,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,187,253,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,206,253,208,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,155,253,246,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,250,253,223,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,210,253,246,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,229,253,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,248,176,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,171,190,191,71,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,251,251,253,251,188,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,186,251,251,251,253,251,251,244,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,194,255,253,253,253,253,255,253,253,253,253,219,39,0,0,0,0,0,0,0,0,0,0,0,0,0,96,244,251,253,251,251,251,251,253,251,251,251,251,230,67,0,0,0,0,0,0,0,0,0,0,0,0,16,189,251,251,253,251,251,251,251,253,251,251,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,24,186,251,251,251,253,251,251,251,251,31,51,188,244,251,253,228,32,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,251,251,113,94,0,0,0,123,251,253,251,126,0,0,0,0,0,0,0,0,0,0,96,253,253,253,253,255,253,253,253,153,96,115,253,253,253,255,253,253,253,153,0,0,0,0,0,0,0,0,214,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,231,231,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,62,47,0,0,0,0,0,0,0,0,213,251,251,251,251,253,251,251,251,211,213,251,251,251,251,253,251,251,31,0,0,0,0,0,0,0,0,0,36,212,251,251,251,253,251,251,251,193,194,251,251,251,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,32,253,253,253,255,253,253,253,253,255,253,253,253,253,255,181,79,0,0,0,0,0,0,0,0,0,0,0,28,236,251,251,253,251,251,251,251,253,251,251,251,251,161,16,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,251,251,253,251,251,219,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,31,129,189,188,188,188,188,189,69,31,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,90,41,102,252,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,161,250,250,222,161,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,250,250,250,252,189,190,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,250,250,250,212,29,151,250,243,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,172,252,254,252,252,252,0,0,0,203,254,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,252,250,189,149,0,0,0,202,252,250,160,20,0,0,0,0,0,0,0,0,0,0,0,0,172,250,250,250,252,189,40,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,163,252,250,250,250,212,29,0,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,0,21,172,252,254,252,252,212,0,0,0,0,0,0,0,203,254,252,252,90,0,0,0,0,0,0,0,0,21,161,250,250,252,250,250,49,0,0,0,0,0,0,0,202,252,250,250,250,0,0,0,0,0,0,0,0,51,250,250,250,252,250,159,20,0,0,0,0,0,0,0,80,252,250,250,250,0,0,0,0,0,0,0,0,51,250,250,250,252,169,20,0,0,0,0,0,0,0,0,0,252,250,250,250,0,0,0,0,0,0,0,0,254,252,252,252,203,0,0,0,0,0,0,0,0,0,0,203,254,252,252,252,0,0,0,0,0,0,0,0,252,250,250,250,202,0,0,0,0,0,0,0,0,0,62,221,252,250,250,250,0,0,0,0,0,0,0,0,252,250,250,250,202,0,0,0,0,0,0,0,0,62,211,250,252,250,250,128,0,0,0,0,0,0,0,0,252,250,250,250,243,202,202,202,203,202,202,202,203,221,250,250,252,250,250,49,0,0,0,0,0,0,0,0,214,252,252,252,254,252,252,252,254,252,252,252,254,252,252,252,255,232,80,0,0,0,0,0,0,0,0,0,31,190,250,250,252,250,250,250,252,250,250,250,252,250,250,250,232,90,0,0,0,0,0,0,0,0,0,0,0,40,190,250,252,250,250,250,252,250,250,250,252,250,159,100,80,0,0,0,0,0,0,0,0,0,0,0,0,0,30,49,252,169,170,250,252,169,49,49,49,49,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,153,203,254,162,78,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,253,253,253,254,253,234,129,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,254,253,251,162,138,188,249,253,199,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,254,236,79,0,0,0,174,253,254,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,254,255,124,0,0,0,0,9,210,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,190,2,0,0,0,0,0,184,254,202,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,109,0,0,0,0,0,0,184,254,139,232,152,0,0,0,0,0,0,0,0,0,0,0,0,0,97,152,253,93,0,0,0,0,0,0,184,254,81,174,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,151,0,0,0,0,13,153,254,127,0,116,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,248,146,97,47,72,226,253,219,42,0,27,240,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,245,253,253,253,254,248,187,38,0,0,0,176,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,119,160,160,136,56,0,0,0,0,0,93,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,249,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,116,191,144,67,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,253,252,146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,196,106,106,179,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,3,211,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,250,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,250,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,81,248,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,159,187,245,187,241,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,240,252,252,253,252,252,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,253,255,253,240,238,253,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,155,252,252,253,206,66,56,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,44,92,44,13,0,4,180,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,44,0,0,0,0,0,0,0,0,0,165,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,240,82,0,0,0,0,0,0,0,56,234,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,245,126,12,3,0,0,0,53,238,252,248,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,199,252,252,252,179,107,59,154,236,252,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,178,252,252,252,252,253,252,252,246,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,86,142,224,252,253,252,161,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,34,34,139,216,254,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,221,253,253,253,239,187,138,228,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,248,241,154,154,97,34,0,0,27,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,152,251,186,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,178,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,211,94,122,60,12,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,232,253,253,253,253,254,253,253,149,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,206,142,66,66,95,206,253,186,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,253,147,13,0,0,0,0,13,245,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,255,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,240,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,181,253,193,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,180,253,207,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,108,236,250,199,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,93,8,0,0,0,46,155,228,253,229,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,156,78,78,164,248,253,253,186,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,253,244,143,143,239,143,61,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,245,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,121,0,0,0,0,98,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,2,0,0,0,181,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,216,254,54,0,0,12,244,247,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,226,19,0,0,50,250,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,240,253,101,0,0,0,146,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,213,254,162,0,0,0,2,207,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,78,0,0,0,48,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,241,254,254,188,23,0,0,163,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,254,254,191,0,8,211,239,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,243,214,255,254,192,150,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,241,64,4,112,249,254,254,254,210,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,88,56,0,0,0,90,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,241,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,241,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,110,180,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,253,253,253,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,141,253,253,164,213,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,143,253,237,92,11,113,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,239,71,0,34,217,249,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,212,0,0,95,253,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,248,253,99,0,0,153,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,240,42,6,116,236,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,230,7,146,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,246,190,253,253,181,243,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,245,253,253,253,103,105,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,158,158,76,10,95,253,243,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,226,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,25,0,0,0,0,0,0,0,0,7,125,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,227,51,0,0,0,0,0,0,0,0,14,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,109,0,0,0,0,0,0,0,0,71,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,61,0,0,0,0,0,0,0,0,90,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,133,249,253,51,0,0,0,0,0,0,0,0,131,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,137,7,0,0,0,0,0,0,0,0,143,253,206,0,0,0,0,0,0,0,0,0,0,0,0,128,249,181,7,0,0,0,0,0,0,0,0,0,143,248,19,0,0,0,0,0,0,0,0,0,0,0,127,249,253,61,0,0,0,0,0,0,0,0,0,7,177,247,0,0,0,0,0,0,0,0,0,0,0,193,250,253,143,8,0,0,0,0,0,0,0,0,0,20,253,247,0,0,0,0,0,0,0,0,0,0,65,244,253,144,8,0,0,0,0,0,0,0,0,0,0,54,253,247,0,0,0,0,0,0,0,0,0,93,252,253,253,145,59,103,159,189,155,156,189,189,189,106,53,150,250,189,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,253,217,253,253,253,253,253,253,253,246,224,146,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,240,207,207,207,216,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,234,253,216,214,214,214,104,84,60,0,0,0,16,84,193,253,220,37,0,0,0,0,0,0,0,0,0,0,45,91,5,0,0,0,0,0,0,0,0,0,0,26,221,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,235,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,123,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,141,186,216,254,217,171,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,250,233,234,242,253,217,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,174,107,66,0,0,50,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,244,253,185,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,255,254,213,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,88,244,254,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,247,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,99,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,204,254,255,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,39,61,144,253,232,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,228,253,201,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,194,255,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,175,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,169,253,253,78,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,216,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,191,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,253,251,141,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,229,251,253,223,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,159,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,236,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,162,253,251,251,57,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,234,253,255,241,158,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,221,251,251,241,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,244,251,235,89,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,217,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,194,255,253,205,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,225,251,253,247,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,169,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,56,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,127,227,244,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,93,204,253,246,205,124,42,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,221,254,174,96,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,183,179,247,187,85,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,233,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,8,0,0,0,0,0,179,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,83,3,0,0,0,53,242,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,250,197,29,0,0,111,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,229,248,129,52,237,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,118,202,254,195,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,55,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,85,85,85,21,43,85,85,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,232,242,252,252,253,237,242,252,252,250,232,232,232,232,233,118,22,22,4,0,0,0,0,0,0,0,0,145,189,136,84,84,84,84,84,84,84,84,128,84,84,84,84,163,221,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,217,252,0,0,0,0,0,0,0,0,0,0,0,11,43,36,0,0,0,0,0,0,0,0,0,0,32,192,216,62,0,0,0,0,0,0,0,0,0,143,190,206,252,243,190,137,64,0,0,0,0,0,0,68,237,210,82,0,0,0,0,0,0,0,0,0,0,16,21,21,21,127,205,242,247,188,0,0,0,41,127,241,152,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,170,252,152,16,112,225,226,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,235,253,221,249,199,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,255,222,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,162,242,244,252,214,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,218,231,136,92,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,246,191,54,0,152,252,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,243,79,0,0,101,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,153,0,0,64,239,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,233,42,0,145,247,171,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,0,0,84,84,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,71,244,254,255,244,239,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,245,221,234,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,227,229,105,25,48,197,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,186,10,0,0,145,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,224,243,67,0,0,110,225,253,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,255,222,0,0,5,180,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,225,32,102,205,254,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,254,253,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,178,253,197,41,209,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,16,2,75,249,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,255,232,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,251,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,237,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,241,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,99,253,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,234,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,173,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,63,168,255,163,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,115,254,254,232,234,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,225,254,226,110,17,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,243,148,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,200,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,210,250,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,203,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,9,4,44,134,67,139,87,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,188,5,102,254,254,254,254,254,252,111,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,62,254,254,131,86,86,187,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,200,251,153,2,0,0,4,133,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,233,142,0,0,1,5,75,242,197,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,235,254,171,68,68,150,254,254,185,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,240,254,254,254,254,231,151,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,201,254,162,116,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,121,236,254,254,254,255,160,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,203,254,196,103,73,70,39,191,237,115,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,221,6,0,0,0,0,5,112,243,169,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,174,0,0,0,0,0,0,0,69,162,167,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,90,0,0,0,0,0,0,0,0,5,246,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,75,0,0,0,0,0,0,0,0,0,135,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,190,0,0,0,0,0,0,0,0,0,26,218,22,44,77,0,0,0,0,0,0,0,0,0,0,0,23,212,228,15,0,0,0,0,0,0,0,0,0,22,172,252,253,61,0,0,0,0,0,0,0,0,0,0,0,87,254,224,36,0,0,0,0,0,0,0,0,88,254,254,208,5,0,0,0,0,0,0,0,0,0,0,0,24,170,254,239,105,1,0,0,0,0,0,0,172,254,185,34,0,0,0,0,0,0,0,0,0,0,0,0,0,7,94,232,254,210,127,43,106,121,185,199,252,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,24,236,236,252,254,254,252,204,109,248,212,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,149,128,118,0,169,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,196,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,192,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,120,161,229,255,203,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,172,237,253,253,253,254,253,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,228,253,254,253,234,230,205,243,253,202,116,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,222,253,253,254,119,13,0,119,247,253,253,228,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,169,0,0,0,51,221,254,254,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,253,164,6,0,0,81,222,254,253,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,211,253,54,0,0,123,245,253,254,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,205,0,151,247,253,253,254,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,254,254,254,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,254,253,223,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,166,253,253,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,254,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,254,169,60,239,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,254,253,164,6,0,214,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,254,206,9,0,0,138,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,228,40,0,0,0,138,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,185,0,0,0,19,237,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,197,47,55,138,237,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,213,254,253,253,253,254,253,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,161,245,253,253,195,111,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,95,58,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,109,247,253,254,105,109,86,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,145,253,253,253,254,253,253,253,238,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,254,253,253,253,253,240,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,199,195,135,53,0,53,135,255,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,122,68,3,0,0,0,0,0,0,254,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,159,254,234,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,201,254,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,129,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,123,250,253,247,101,0,0,0,0,0,25,40,70,136,32,0,0,0,0,0,0,0,0,0,0,0,0,173,254,253,253,229,98,99,98,165,195,195,231,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,40,254,255,254,254,254,254,255,254,254,254,254,255,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,21,226,254,253,253,253,253,254,253,253,245,253,234,225,135,211,99,0,0,0,0,0,0,0,0,0,0,0,0,165,254,253,228,186,222,175,100,107,48,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,19,19,13,3,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,105,123,254,201,105,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,230,253,253,253,253,253,253,236,86,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,222,253,253,253,253,253,253,253,254,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,217,133,133,176,253,253,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,204,214,46,0,0,11,143,222,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,26,35,9,0,0,0,0,149,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,247,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,253,254,242,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,254,254,213,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,171,253,253,253,217,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,173,7,0,0,0,0,0,0,0,0,27,18,0,0,0,0,0,0,0,0,0,0,0,2,135,253,253,253,174,7,18,0,0,20,30,75,179,179,195,52,0,0,0,0,0,0,0,0,0,0,0,8,182,253,253,253,253,162,205,135,134,212,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,78,243,253,253,253,253,253,255,253,253,253,253,242,163,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,253,253,254,253,250,208,164,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,122,253,253,253,253,255,129,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,244,171,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,227,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,193,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,234,20,0,0,0,0,0,70,86,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,192,254,114,0,0,0,0,17,197,252,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,226,20,0,0,0,0,76,254,241,225,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,0,0,0,48,107,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,255,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,178,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,238,250,43,0,0,0,0,0,0,0,34,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,140,0,0,0,0,0,0,0,0,76,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,92,0,0,0,0,0,0,0,0,76,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,18,0,0,0,0,0,0,0,0,76,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,225,12,0,0,0,0,0,0,0,0,76,236,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,247,96,0,0,0,0,0,0,0,0,0,61,226,163,48,0,0,0,0,0,0,0,0,0,0,0,24,253,253,251,128,2,0,0,0,0,0,0,7,213,253,253,144,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,253,9,0,0,0,0,0,0,48,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,253,44,0,0,0,0,0,0,16,222,253,253,161,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,122,1,0,0,0,0,0,0,44,249,253,253,130,0,0,0,0,0,0,0,0,0,0,3,201,253,253,230,14,0,0,0,0,0,0,0,130,253,253,253,124,0,0,0,0,0,0,0,0,0,0,38,253,253,253,109,0,0,0,0,0,0,0,0,235,253,253,234,25,0,0,0,0,0,0,0,0,0,0,115,253,253,253,47,0,0,0,0,0,0,3,85,245,253,253,140,0,0,0,0,0,0,0,0,0,0,8,228,253,253,253,181,188,126,112,29,29,25,31,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,253,253,253,253,253,254,243,238,253,253,253,221,6,0,0,0,0,0,0,0,0,0,0,49,222,254,254,254,254,254,254,254,254,255,254,254,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,29,125,215,215,180,215,215,229,229,240,253,253,253,253,243,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,36,119,247,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,201,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,235,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,64,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,151,151,151,194,151,151,124,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,254,254,254,254,206,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,254,254,254,254,254,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,67,67,104,158,67,83,254,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,251,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,161,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,194,254,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,100,202,203,203,219,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,174,251,254,254,254,254,254,254,254,201,16,0,0,0,0,0,0,0,0,0,0,0,0,0,10,89,180,233,254,254,254,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,58,190,254,254,254,254,235,223,254,254,254,245,79,86,120,50,0,0,0,0,0,0,0,0,0,0,0,133,236,254,254,254,235,89,44,120,253,254,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,13,183,254,254,252,234,142,55,63,194,254,254,247,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,254,88,0,0,45,225,254,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,254,254,222,219,219,242,254,254,246,82,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,254,254,254,254,228,94,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,104,184,254,255,205,150,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,59,132,132,133,122,13,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,59,232,252,252,252,253,252,252,252,89,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,191,252,252,252,252,252,253,252,252,252,252,225,59,6,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,238,106,84,84,84,84,152,211,252,252,252,252,134,5,0,0,0,0,0,0,0,0,0,0,0,27,229,252,180,0,0,0,0,0,0,11,95,235,252,252,252,110,0,0,0,0,0,0,0,0,0,0,54,201,252,235,128,0,0,0,0,0,0,0,0,146,252,252,252,227,9,0,0,0,0,0,0,0,0,0,145,252,252,151,0,0,0,0,0,0,0,0,0,12,163,252,252,252,110,0,0,0,0,0,0,0,0,57,237,252,234,45,0,0,0,0,0,0,0,0,0,0,73,252,252,252,235,0,0,0,0,0,0,0,0,132,252,252,204,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,252,0,0,0,0,0,0,0,0,248,252,252,204,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,252,0,0,0,0,0,0,0,0,255,253,236,44,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,127,0,0,0,0,0,0,0,0,253,252,249,76,0,0,0,0,0,0,0,0,0,0,0,85,252,252,242,10,0,0,0,0,0,0,0,0,253,252,221,12,0,0,0,0,0,0,0,0,0,0,55,230,252,252,143,0,0,0,0,0,0,0,0,0,253,252,252,107,0,0,0,0,0,0,0,0,0,10,194,252,252,252,63,0,0,0,0,0,0,0,0,0,224,252,252,238,52,0,0,0,0,0,0,0,9,155,252,252,252,154,7,0,0,0,0,0,0,0,0,0,41,252,252,252,181,52,0,0,0,0,0,54,201,252,252,252,153,9,0,0,0,0,0,0,0,0,0,0,3,165,252,252,252,239,205,159,85,200,206,232,252,252,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,32,169,252,252,252,252,252,252,252,253,252,252,252,154,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,221,252,252,252,252,252,253,252,184,143,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,46,131,131,131,131,127,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,102,102,102,40,102,102,55,223,185,102,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,202,231,254,254,254,222,254,254,208,237,254,254,253,182,28,0,0,0,0,0,0,0,0,0,0,0,86,252,254,254,254,254,254,254,254,254,254,254,187,108,108,62,0,0,0,0,0,0,0,0,0,0,0,46,252,254,254,254,254,254,206,247,189,161,161,58,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,254,233,70,61,30,56,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,254,191,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,254,241,222,86,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,158,235,236,254,254,254,254,234,172,32,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,48,195,254,254,254,254,254,254,221,132,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,22,135,177,200,254,254,254,254,245,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,91,243,254,254,254,152,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,254,254,254,157,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,16,63,178,254,254,254,168,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,254,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,63,209,244,254,254,254,254,200,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,65,177,254,254,254,255,254,254,171,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,254,155,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,236,254,254,254,236,181,46,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,189,254,254,169,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,242,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,187,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,196,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,179,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,199,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,244,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,113,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,245,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,177,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,216,251,164,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,255,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,254,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,234,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,142,254,217,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,225,254,175,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,246,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,233,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,228,254,194,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,229,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,237,254,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,255,216,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,88,244,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,184,233,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,59,59,112,156,179,216,223,104,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,118,192,224,253,253,253,253,254,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,253,253,253,254,253,253,253,253,254,216,144,167,137,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,244,213,146,26,19,19,10,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,103,45,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,46,245,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,217,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,224,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,226,254,253,253,19,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,253,253,199,217,196,195,128,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,255,254,254,254,254,255,254,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,248,254,251,233,233,158,136,135,203,244,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,116,72,0,0,0,0,0,0,136,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,249,36,0,0,0,0,0,0,0,0,0,0,0,0,83,98,45,0,0,0,0,0,0,0,0,0,40,253,254,39,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,178,97,32,0,0,0,0,0,0,159,254,241,30,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,254,235,184,103,20,43,118,185,250,253,195,0,0,0,0,0,0,0,0,0,0,0,0,127,253,168,129,235,254,253,253,253,253,254,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,5,19,6,0,15,117,217,253,253,253,254,253,253,231,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,126,155,193,254,170,88,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,145,254,255,223,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,11,93,220,249,243,243,251,220,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,135,253,252,165,49,0,0,84,246,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,238,253,214,92,0,0,0,0,88,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,242,178,3,0,0,0,0,8,162,243,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,193,253,112,0,0,0,0,0,0,88,253,220,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,158,4,0,0,0,0,0,124,246,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,218,237,71,0,0,0,0,26,130,249,253,194,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,147,0,0,0,19,136,232,253,227,110,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,228,50,144,149,249,253,253,245,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,204,253,253,253,253,253,253,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,94,94,94,177,253,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,244,234,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,249,227,86,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,246,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,208,253,154,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,253,169,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,182,253,231,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,174,252,222,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,218,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,134,255,255,255,255,206,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,222,253,253,253,253,253,253,205,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,239,134,111,217,251,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,247,201,23,0,0,0,150,253,152,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,24,0,0,0,0,115,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,134,167,167,54,15,90,243,253,179,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,191,253,253,253,228,201,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,253,253,253,253,253,230,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,253,253,178,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,179,233,217,253,253,217,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,25,49,49,96,253,185,8,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,88,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,11,235,90,0,0,0,0,0,0,0,0,0,88,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,13,253,224,88,0,0,0,0,0,0,0,32,152,253,165,3,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,250,230,208,106,106,106,106,142,237,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,253,253,253,253,253,253,253,253,253,253,253,212,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,96,253,253,253,253,253,253,253,253,253,170,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,24,129,153,192,253,253,156,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,87,211,174,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,233,253,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,235,253,253,237,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,237,102,15,211,202,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,145,0,0,191,253,243,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,171,0,0,0,86,254,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,127,0,0,0,165,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,127,0,9,40,222,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,211,169,205,254,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,254,253,253,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,233,244,212,107,218,255,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,47,0,0,191,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,233,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,237,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,218,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,141,191,204,253,216,141,29,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,70,225,252,252,253,252,252,252,253,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,159,253,252,224,168,156,81,168,205,253,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,139,128,28,19,0,0,0,0,13,153,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,253,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,126,231,252,252,241,122,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,54,229,253,254,253,253,253,254,253,253,203,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,252,253,252,208,145,146,208,252,252,244,144,13,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,214,156,56,13,0,0,13,94,205,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,40,139,52,15,0,0,0,0,0,0,0,13,203,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,0,0,0,0,23,197,110,85,38,0,0,0,0,0,0,0,0,0,0,38,229,252,224,19,0,0,0,0,0,0,0,0,29,252,252,252,238,125,0,0,0,0,0,0,0,0,38,225,253,252,68,0,0,0,0,0,0,0,0,0,0,76,150,238,255,253,128,29,13,0,0,13,41,166,253,253,251,150,25,0,0,0,0,0,0,0,0,0,0,0,0,88,253,252,252,252,207,169,169,206,253,252,252,227,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,253,252,252,252,253,252,186,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,28,116,139,190,215,252,151,128,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,236,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,253,174,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,218,253,246,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,253,247,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,241,253,233,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,242,253,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,250,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,170,253,253,148,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,183,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,168,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,193,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,255,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,247,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,248,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,229,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,246,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,254,254,135,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,236,253,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,251,111,40,225,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,93,237,247,119,0,0,53,212,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,132,0,0,0,0,199,240,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,99,253,217,36,0,0,0,0,199,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,218,33,0,0,0,0,0,199,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,125,0,0,0,0,0,45,229,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,240,253,173,5,0,0,0,0,0,0,199,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,253,223,45,0,0,0,0,0,0,0,199,253,96,0,0,0,0,0,0,0,0,0,0,0,0,11,151,253,253,43,0,0,0,0,0,0,0,61,239,253,96,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,154,2,0,0,0,0,0,0,0,172,253,253,96,0,0,0,0,0,0,0,0,0,0,0,3,194,253,161,0,0,0,0,0,0,0,0,59,239,253,230,41,0,0,0,0,0,0,0,0,0,0,0,143,253,253,103,0,0,0,0,0,0,0,61,176,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,213,253,239,61,0,0,0,0,0,12,108,247,253,253,138,4,0,0,0,0,0,0,0,0,0,0,0,32,226,253,219,0,0,0,0,23,83,176,253,253,253,136,8,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,246,118,63,63,111,214,253,253,253,223,135,8,0,0,0,0,0,0,0,0,0,0,0,0,0,29,225,253,253,253,253,253,253,253,253,226,133,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,246,232,131,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,220,253,253,253,119,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,150,150,234,254,255,102,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,253,253,253,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,210,31,10,46,245,251,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,252,66,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,184,0,0,0,0,143,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,232,253,41,0,0,0,0,135,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,144,5,0,0,0,0,135,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,11,0,0,0,0,0,0,160,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,53,139,156,73,44,0,239,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,253,253,253,253,245,202,251,223,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,190,250,253,253,236,212,212,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,176,165,95,0,0,92,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,214,250,150,83,0,0,0,0,42,253,253,249,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,235,108,234,27,0,0,0,148,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,211,38,21,104,251,238,50,218,234,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,142,253,253,253,253,253,253,242,46,0,154,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,108,182,182,226,243,243,76,0,0,79,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,248,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,70,200,218,247,200,200,93,47,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,253,253,159,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,253,253,253,239,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,207,253,253,253,253,253,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,190,253,236,115,241,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,14,13,0,39,114,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,206,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,246,253,253,253,253,243,194,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,253,253,253,253,204,177,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,129,129,239,253,253,253,253,253,146,49,0,0,0,0,0,0,0,0,0,0,41,45,11,32,0,0,0,0,0,0,26,39,183,226,228,253,253,141,0,0,0,0,0,0,0,0,77,169,218,222,182,199,9,0,0,0,0,0,0,0,0,51,59,244,253,253,0,0,0,0,0,0,0,0,255,253,253,253,253,177,116,102,0,0,0,0,0,0,0,0,75,174,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,248,216,216,216,140,105,216,216,216,240,253,253,253,0,0,0,0,0,0,0,0,247,251,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,248,0,0,0,0,0,0,0,0,0,116,145,250,253,253,253,253,253,253,253,253,253,253,253,253,253,253,230,57,0,0,0,0,0,0,0,0,0,0,0,44,162,115,190,238,225,199,204,253,253,253,228,245,218,199,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,48,0,10,99,99,99,54,85,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,125,0,0,0,0,41,227,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,246,44,0,0,0,86,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,221,29,0,0,0,200,240,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,248,148,0,0,0,64,251,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,248,62,0,0,0,161,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,245,184,0,0,0,39,249,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,139,0,0,10,157,253,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,250,186,38,13,129,254,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,248,248,234,247,251,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,78,78,25,166,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,255,254,181,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,253,215,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,217,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,245,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,231,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,228,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,245,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,220,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,254,231,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,235,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,193,254,254,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,176,254,254,222,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,68,254,254,222,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,220,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,251,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,246,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,222,254,249,0,0,0,0,0,0,40,78,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,105,0,0,0,0,81,148,235,255,206,27,0,0,0,0,0,0,0,0,0,0,0,0,0,49,249,254,207,6,0,19,196,232,251,254,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,152,15,131,207,254,251,243,134,130,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,254,254,206,74,0,0,11,242,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,44,242,254,254,254,250,132,27,0,0,0,0,71,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,243,254,254,175,0,0,0,0,0,34,143,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,250,202,202,111,183,202,229,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,243,254,254,254,254,254,254,254,254,254,166,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,138,254,254,254,254,210,135,135,67,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,51,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,161,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,231,252,250,250,49,0,0,0,0,0,62,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,128,10,0,82,202,202,203,221,221,202,163,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,254,232,80,41,92,252,252,252,254,252,252,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,149,62,221,252,250,250,169,150,149,210,250,222,61,0,0,0,0,0,0,0,0,0,0,0,62,211,250,252,210,211,250,252,189,100,20,0,0,151,250,252,149,0,0,0,0,0,0,0,0,0,0,0,102,250,250,252,250,250,250,212,29,0,0,0,0,151,250,252,149,0,0,0,0,0,0,0,0,0,0,0,103,252,252,254,252,252,252,163,0,0,0,0,0,152,252,254,150,0,0,0,0,0,0,0,0,0,0,0,102,250,250,252,250,250,250,0,0,0,0,0,0,151,250,252,149,0,0,0,0,0,0,0,0,0,0,0,40,190,250,252,250,250,128,0,0,0,0,0,0,151,250,252,149,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,250,49,0,0,0,0,0,0,151,250,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,252,252,252,254,252,252,252,254,252,252,252,244,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,250,250,250,252,250,250,250,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,160,250,250,252,250,250,250,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,49,49,212,49,170,250,252,169,49,49,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,247,255,240,112,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,164,84,176,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,245,140,3,7,89,244,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,242,29,0,28,253,248,248,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,128,0,0,101,253,182,248,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,69,0,0,101,253,184,180,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,246,4,0,0,126,253,139,218,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,51,0,0,177,253,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,69,0,0,177,253,175,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,92,0,0,177,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,244,51,47,231,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,253,253,254,230,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,108,130,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,245,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,125,125,125,125,192,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,254,254,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,254,254,254,165,110,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,234,254,254,165,42,4,0,0,22,106,193,236,155,98,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,39,0,0,0,105,235,254,254,254,254,253,150,0,0,0,0,0,0,0,0,0,0,0,0,226,254,254,174,5,0,27,193,247,254,254,254,254,254,254,253,103,0,0,0,0,0,0,0,0,0,0,101,253,254,254,193,13,27,201,254,254,254,239,149,39,39,49,96,18,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,216,224,254,254,236,149,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,254,254,254,254,254,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,206,254,254,254,254,254,254,241,170,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,65,200,254,254,254,254,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,240,215,254,254,242,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,92,20,119,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,72,0,51,244,254,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,182,0,0,184,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,251,254,227,36,0,184,254,254,225,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,254,140,20,189,254,254,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,245,254,254,254,254,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,222,250,254,254,254,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,124,191,124,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,24,66,138,255,253,253,253,201,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,151,162,219,252,252,252,253,252,240,227,248,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,252,252,227,215,122,69,50,32,146,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,161,160,77,29,21,0,0,0,34,218,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,249,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,249,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,252,102,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,218,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,231,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,255,198,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,170,170,170,255,255,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,170,198,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,198,114,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,225,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,251,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,255,219,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,247,254,255,254,239,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,161,254,254,123,204,254,235,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,199,0,27,228,254,170,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,225,254,250,44,0,0,83,242,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,172,254,254,141,0,0,0,0,155,254,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,204,19,0,0,0,0,15,226,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,254,61,0,0,0,0,0,0,131,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,143,0,0,0,0,0,0,0,61,241,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,244,38,0,0,0,0,0,0,0,0,211,253,59,0,0,0,0,0,0,0,0,0,0,0,0,58,252,254,86,0,0,0,0,0,0,0,0,0,128,254,142,0,0,0,0,0,0,0,0,0,0,0,0,158,254,229,20,0,0,0,0,0,0,0,0,0,141,254,148,0,0,0,0,0,0,0,0,0,0,0,0,237,254,210,0,0,0,0,0,0,0,0,0,8,218,254,103,0,0,0,0,0,0,0,0,0,0,0,0,152,254,179,0,0,0,0,0,0,0,0,0,129,254,189,11,0,0,0,0,0,0,0,0,0,0,0,0,56,251,229,20,0,0,0,0,0,0,77,162,247,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,161,106,39,21,106,106,190,250,254,244,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,234,254,254,254,254,254,254,254,245,166,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,121,175,254,254,254,197,141,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,191,83,0,0,0,77,121,121,122,121,121,121,156,254,255,255,176,57,0,0,0,0,0,0,0,0,116,253,253,249,241,241,241,249,253,253,254,253,253,253,253,253,253,253,253,120,0,0,0,0,0,0,0,0,13,242,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,253,120,0,0,0,0,0,0,0,0,0,38,189,253,211,194,173,173,173,173,174,173,124,39,39,197,253,253,199,19,0,0,0,0,0,0,0,0,0,0,20,53,25,14,0,0,0,0,0,0,0,0,0,187,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,236,253,233,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,237,253,247,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,173,253,253,250,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,219,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,241,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,235,254,253,181,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,147,253,254,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,254,145,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,175,253,253,171,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,133,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,211,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,112,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,95,186,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,213,254,253,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,248,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,239,254,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,194,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,222,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,77,108,139,150,235,191,137,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,219,246,254,254,254,254,254,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,249,254,254,237,254,246,194,153,206,254,248,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,247,196,219,60,40,33,0,0,4,243,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,14,0,0,0,0,0,8,177,237,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,122,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,184,254,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,146,254,254,201,65,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,172,253,254,254,238,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,245,254,254,254,254,252,158,45,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,236,176,82,236,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,208,211,31,0,0,25,93,242,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,215,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,251,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,188,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,182,254,254,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,189,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,109,244,254,254,254,167,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,178,249,254,254,254,254,166,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,181,255,139,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,105,0,0,0,0,0,0,0,0,20,184,110,0,0,0,0,0,0,0,0,0,0,0,0,76,200,116,253,134,0,0,0,0,0,0,0,0,15,217,241,4,0,0,0,0,0,0,0,0,0,0,0,31,57,18,215,199,0,0,0,0,0,0,0,0,0,173,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,243,0,0,0,0,0,0,0,0,0,138,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,21,219,243,0,0,0,0,0,0,0,0,0,66,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,222,0,0,0,0,0,0,0,0,0,66,253,221,0,0,0,0,0,0,0,0,0,0,0,0,2,186,253,134,0,0,0,0,0,0,0,0,0,66,253,246,58,0,0,0,0,0,0,0,0,0,0,0,6,253,253,134,0,0,0,0,0,0,0,0,0,66,253,253,75,0,0,0,0,0,0,0,0,0,0,0,6,253,253,65,0,0,0,0,0,28,55,55,49,66,253,253,75,0,0,0,0,0,0,0,0,0,0,0,6,253,189,6,0,0,85,161,200,228,253,253,248,214,253,253,75,0,0,0,0,0,0,0,0,0,0,0,6,253,249,141,151,238,252,253,253,233,160,124,113,77,253,253,75,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,253,199,125,86,6,0,0,0,22,225,253,75,0,0,0,0,0,0,0,0,0,0,0,2,48,128,156,135,48,4,0,0,0,0,0,0,0,211,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,234,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,230,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,255,184,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,247,253,182,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,171,253,253,140,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,251,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,219,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,244,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,243,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,253,253,215,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,201,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,251,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,253,252,165,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,201,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,186,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,242,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,231,253,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,255,220,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,255,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,247,255,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,134,254,254,254,255,145,3,0,8,20,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,177,254,211,136,112,193,253,84,112,218,253,222,99,0,0,0,0,0,0,0,0,0,0,0,0,0,28,188,253,153,9,0,0,20,253,241,253,213,170,226,253,185,32,0,0,0,0,0,0,0,0,0,0,0,141,253,229,6,0,0,0,20,253,235,127,6,0,11,163,254,190,12,0,0,0,0,0,0,0,0,0,14,236,249,66,0,0,0,0,128,221,36,0,0,0,0,0,188,254,75,0,0,0,0,0,0,0,0,0,80,253,134,0,0,0,0,0,101,91,0,0,0,0,0,0,5,208,221,9,0,0,0,0,0,0,0,0,116,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,62,0,0,0,0,0,0,0,0,200,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,169,0,0,0,0,0,0,0,0,255,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,0,0,0,0,0,0,0,0,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,0,0,0,0,0,0,0,0,254,235,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,0,0,0,0,0,0,0,0,230,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,0,0,0,0,0,0,0,0,170,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,218,248,0,0,0,0,0,0,0,0,98,253,204,21,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,127,0,0,0,0,0,0,0,0,21,222,253,157,0,0,0,0,0,0,0,0,0,0,0,0,29,226,253,19,0,0,0,0,0,0,0,0,0,124,253,253,175,18,0,0,0,0,0,0,0,0,0,0,170,253,127,2,0,0,0,0,0,0,0,0,0,0,61,240,255,181,32,2,0,0,0,0,0,10,62,218,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,60,242,253,253,199,112,40,40,40,94,204,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,128,244,253,254,253,253,253,254,253,203,69,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,92,175,175,175,175,145,37,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,94,94,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,248,244,184,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,56,239,253,242,243,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,206,61,84,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,253,233,47,0,143,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,195,253,253,31,0,0,156,228,158,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,189,253,240,73,5,0,1,158,237,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,232,253,253,103,0,0,0,6,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,206,202,202,202,161,253,253,186,99,154,202,151,169,202,202,160,0,0,0,0,0,0,0,0,213,244,253,253,253,253,253,253,253,253,253,253,253,253,236,236,253,253,253,236,0,0,0,0,0,0,0,0,0,48,62,62,62,62,62,62,144,253,253,186,62,105,37,45,189,253,234,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,241,10,0,0,0,0,4,15,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,227,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,240,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,93,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,149,187,157,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,199,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,37,212,254,254,201,150,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,175,254,254,254,237,130,2,30,245,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,241,57,0,0,89,254,182,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,255,254,116,0,0,0,161,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,41,0,0,37,247,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,41,0,0,68,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,241,254,173,3,43,235,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,130,131,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,220,254,254,254,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,231,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,228,254,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,207,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,190,254,226,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,186,254,44,206,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,43,182,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,55,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,248,254,254,254,191,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,190,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,149,253,253,253,148,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,244,253,252,252,252,252,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,252,253,252,252,252,252,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,240,252,252,253,252,252,252,252,253,252,188,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,252,252,252,253,178,137,137,242,253,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,253,253,253,253,168,0,0,0,53,244,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,252,252,252,210,42,0,0,0,0,65,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,240,183,141,6,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,112,0,0,0,0,0,0,0,0,5,177,252,160,0,0,0,0,0,0,0,0,0,0,0,32,228,252,232,8,0,0,0,0,0,0,0,0,0,161,252,160,0,0,0,0,0,0,0,0,0,0,0,185,253,253,53,0,0,0,0,0,0,0,0,0,24,253,253,161,0,0,0,0,0,0,0,0,0,0,30,228,252,252,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,130,252,252,168,0,0,0,0,0,0,0,0,0,0,138,252,252,160,0,0,0,0,0,0,0,0,0,0,161,252,252,96,0,0,0,0,0,0,0,0,0,136,253,252,252,66,0,0,0,0,0,0,0,0,0,0,161,252,252,75,0,0,0,0,0,0,0,32,157,250,253,252,189,4,0,0,0,0,0,0,0,0,0,0,151,253,253,253,128,24,24,15,11,34,159,253,253,253,255,253,69,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,253,252,252,219,203,253,252,252,252,252,249,132,25,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,253,252,252,252,252,253,252,252,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,9,129,236,252,253,252,252,252,252,253,252,252,176,56,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,189,253,252,252,252,252,190,117,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,249,248,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,234,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,189,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,255,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,234,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,212,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,251,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,63,154,164,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,237,254,254,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,224,254,254,254,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,254,254,254,254,236,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,217,254,254,254,254,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,230,254,254,254,238,205,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,237,54,167,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,29,0,207,254,251,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,245,254,173,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,242,254,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,92,142,87,138,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,221,254,254,254,254,254,131,16,0,0,0,0,0,0,47,145,18,0,0,0,0,0,0,0,0,0,128,248,254,254,254,254,254,254,14,0,0,0,0,0,6,79,246,173,6,0,0,0,0,0,0,0,0,25,235,254,254,254,254,254,254,254,146,23,0,0,0,4,116,254,254,87,0,0,0,0,0,0,0,0,0,63,254,254,254,254,231,128,254,254,254,249,164,164,164,224,254,254,237,21,0,0,0,0,0,0,0,0,0,31,99,246,254,226,110,6,80,232,254,254,254,254,254,254,255,188,21,0,0,0,0,0,0,0,0,0,0,0,0,46,62,10,0,0,0,20,81,163,254,254,254,227,143,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,207,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,168,244,254,201,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,230,254,254,254,172,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,184,254,254,239,97,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,187,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,220,254,248,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,241,0,0,0,40,150,187,187,187,56,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,241,0,13,151,238,254,255,254,254,254,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,241,7,190,254,254,254,254,251,248,254,254,134,3,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,254,254,254,231,130,56,0,174,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,4,140,254,254,254,254,254,217,38,0,0,0,6,223,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,254,254,254,254,254,188,0,0,0,0,221,189,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,254,254,254,172,0,2,63,63,110,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,215,254,254,254,254,200,180,182,254,254,241,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,234,243,254,254,254,254,254,254,235,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,165,254,254,254,251,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,109,110,233,232,109,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,242,252,253,252,241,179,176,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,252,252,237,215,102,84,253,231,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,168,62,0,0,1,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,236,62,0,0,16,191,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,30,0,0,0,161,252,253,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,232,252,237,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,252,252,238,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,252,252,253,231,78,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,108,108,170,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,37,212,252,246,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,233,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,217,253,252,252,252,119,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,226,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,108,191,108,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,155,175,214,155,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,78,252,254,254,254,254,252,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,230,130,92,230,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,81,0,0,109,251,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,159,0,0,0,186,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,233,254,250,102,0,0,0,116,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,214,0,0,0,0,43,254,248,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,254,199,0,0,0,0,7,208,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,240,254,115,0,0,0,0,0,170,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,16,0,0,0,0,0,170,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,186,3,0,0,0,0,0,170,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,169,0,0,0,0,0,0,170,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,169,0,0,0,0,0,7,208,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,169,0,0,0,0,0,16,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,169,0,0,0,0,0,65,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,196,5,0,0,0,0,147,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,165,9,0,0,33,236,254,231,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,205,75,73,168,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,234,254,253,253,254,254,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,192,254,254,231,110,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,236,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,232,252,239,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,234,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,172,0,0,0,0,29,175,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,252,84,0,0,0,8,197,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,242,42,0,0,0,128,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,231,0,0,0,22,237,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,249,140,18,18,199,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,209,166,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,98,246,252,252,253,252,236,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,175,252,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,252,243,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,196,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,192,252,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,243,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,139,170,254,254,245,118,24,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,213,253,253,236,207,254,253,253,220,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,216,184,152,44,0,69,69,172,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,245,253,166,93,68,0,0,0,0,13,122,253,219,34,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,254,253,247,189,11,0,0,0,9,180,254,218,32,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,169,63,116,116,11,0,0,0,0,0,245,254,132,0,0,0,0,0,0,0,0,0,0,0,0,185,253,179,0,0,0,0,0,0,0,0,0,0,65,253,184,0,0,0,0,0,0,0,0,0,0,0,0,185,253,54,0,0,0,0,0,0,0,0,0,0,7,186,235,34,0,0,0,0,0,0,0,0,0,0,17,210,253,23,0,0,0,0,0,0,0,0,0,0,0,162,253,140,0,0,0,0,0,0,0,0,0,0,47,253,253,23,0,0,0,0,0,0,0,0,0,0,0,162,253,161,0,0,0,0,0,0,0,0,0,0,163,216,21,0,0,0,0,0,0,0,0,0,0,0,0,163,254,161,0,0,0,0,0,0,0,0,0,0,162,184,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,161,0,0,0,0,0,0,0,0,0,0,162,203,13,0,0,0,0,0,0,0,0,0,0,0,0,162,253,129,0,0,0,0,0,0,0,0,0,0,162,253,88,0,0,0,0,0,0,0,0,0,0,0,0,162,253,46,0,0,0,0,0,0,0,0,0,0,36,222,245,21,0,0,0,0,0,0,0,0,0,0,22,245,190,4,0,0,0,0,0,0,0,0,0,0,0,64,250,254,11,0,0,0,0,0,0,0,0,0,203,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,118,249,141,38,0,0,0,0,0,0,17,47,254,203,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,223,241,153,45,0,0,0,51,189,253,248,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,120,186,237,208,209,208,241,253,211,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,118,243,254,253,222,96,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,120,144,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,240,152,94,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,253,253,246,244,244,244,244,244,244,244,221,26,0,0,0,0,0,0,0,0,0,0,0,96,248,253,131,134,240,253,253,253,253,253,253,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,103,253,246,28,0,17,42,164,227,227,241,253,253,253,253,253,181,0,0,0,0,0,0,0,0,0,0,11,206,253,151,0,0,0,0,0,0,0,97,181,210,181,181,115,14,0,0,0,0,0,0,0,0,0,0,134,253,253,88,16,16,16,16,10,7,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,253,253,253,253,253,219,202,166,112,63,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,252,248,248,248,248,248,248,248,253,253,208,82,1,0,0,0,0,0,0,0,0,0,0,0,0,55,131,191,70,0,0,0,0,0,0,0,93,172,227,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,221,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,200,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,93,0,0,0,0,0,0,0,0,0,0,61,46,0,0,0,0,0,0,0,0,0,0,10,111,246,253,250,65,0,0,0,0,0,0,0,0,0,187,240,9,0,0,0,0,0,0,0,9,21,100,226,253,253,253,99,0,0,0,0,0,0,0,0,0,0,255,185,31,0,0,48,68,68,113,171,203,253,253,253,253,248,116,12,0,0,0,0,0,0,0,0,0,0,250,253,234,218,218,243,253,253,253,253,253,253,253,248,211,43,0,0,0,0,0,0,0,0,0,0,0,0,75,241,253,253,253,253,253,253,229,196,196,95,93,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,46,46,100,149,149,82,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,57,67,85,85,86,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,253,233,240,252,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,252,252,252,252,253,177,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,253,252,227,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,141,140,140,140,140,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,215,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,255,253,133,76,113,114,113,113,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,234,252,252,252,253,252,231,243,252,253,252,252,218,38,0,0,0,0,0,0,0,0,0,0,0,38,135,253,252,252,252,252,253,252,252,252,252,253,252,252,252,221,0,0,0,0,0,0,0,0,0,26,7,169,252,253,252,252,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,63,240,165,215,252,253,252,252,252,252,253,252,252,252,252,253,204,112,112,189,0,0,0,0,0,0,0,0,255,253,253,253,253,255,253,253,253,253,255,253,253,240,140,141,15,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,242,167,168,167,58,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,214,252,245,195,196,148,55,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,250,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,95,169,137,31,0,0,0,0,0,0,60,237,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,232,174,46,0,0,0,0,0,0,158,253,205,11,0,0,0,0,0,0,0,0,0,0,0,0,12,206,253,99,0,0,0,0,0,0,0,41,243,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,188,14,0,0,0,0,0,0,4,197,253,208,22,0,0,0,0,0,0,0,0,0,0,0,0,114,251,253,57,0,0,0,0,0,0,0,87,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,8,228,253,206,10,0,0,0,0,0,0,5,203,253,184,24,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,209,101,18,0,70,0,0,60,118,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,254,254,254,254,254,254,255,254,254,234,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,105,215,250,236,215,215,215,145,156,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,31,0,0,0,0,177,253,242,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,241,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,211,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,85,155,254,254,255,254,194,136,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,237,253,253,253,253,235,124,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,248,181,82,44,82,134,252,253,253,253,150,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,59,0,0,0,0,0,63,174,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,182,253,253,188,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,244,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,227,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,253,253,139,6,0,0,0,0,0,0,0,0,0,0,0,0,32,154,231,231,231,231,148,113,71,51,240,253,253,224,30,0,0,0,0,0,0,0,0,0,0,0,19,155,250,253,253,253,253,253,253,253,252,251,253,253,231,46,0,0,0,0,0,0,0,0,0,0,0,3,117,253,253,243,224,224,224,242,253,253,253,253,253,253,253,226,55,5,0,0,0,0,0,0,0,0,0,74,253,253,240,79,0,0,0,83,253,253,253,253,253,253,253,253,253,130,4,0,0,0,0,0,0,0,0,18,253,253,200,12,0,33,131,195,253,253,253,253,189,196,253,253,253,253,103,0,0,0,0,0,0,0,0,12,221,253,253,211,201,227,253,253,253,253,222,63,1,7,75,192,253,253,135,0,0,0,0,0,0,0,0,0,52,253,253,253,253,253,253,253,230,117,22,0,0,0,0,9,128,200,27,0,0,0,0,0,0,0,0,0,3,42,168,253,253,251,135,61,13,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,63,128,211,255,254,203,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,126,222,254,254,238,225,225,240,164,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,176,254,236,157,67,30,0,0,134,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,245,254,213,50,0,0,0,0,0,99,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,216,254,155,12,0,0,0,0,0,0,126,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,183,39,0,0,0,0,81,51,0,108,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,141,0,18,53,136,245,253,244,33,5,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,172,195,225,254,252,240,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,227,118,82,201,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,107,66,10,10,132,254,176,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,249,244,81,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,248,245,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,245,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,186,254,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,254,221,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,209,254,196,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,205,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,238,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,13,88,156,254,162,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,145,145,145,151,253,253,253,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,25,66,157,235,253,253,253,254,253,248,217,243,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,106,226,253,253,253,253,253,149,142,84,72,10,195,253,196,12,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,207,193,146,72,4,0,0,0,49,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,9,60,60,14,0,0,0,0,0,0,0,84,253,232,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,242,230,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,232,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,243,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,203,251,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,244,246,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,248,160,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,247,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,114,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,109,130,79,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,144,159,23,94,253,253,147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,197,253,253,52,87,251,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,226,253,253,253,94,0,93,239,253,147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,177,253,253,253,228,38,0,0,90,243,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,185,253,253,253,206,18,0,0,0,0,218,253,208,0,0,0,0,0,0,0,0,0,0,0,0,6,62,224,253,253,253,242,88,0,0,0,0,0,112,253,253,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,253,241,89,0,0,0,0,0,0,112,253,253,0,0,0,0,0,0,0,0,0,0,5,69,225,253,253,253,186,56,0,0,0,0,0,0,24,204,253,253,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,186,20,0,0,0,0,0,0,0,136,253,253,223,0,0,0,0,0,0,0,0,0,10,227,253,253,253,208,59,0,0,0,0,0,0,26,118,248,253,253,96,0,0,0,0,0,0,0,0,0,110,253,253,253,224,19,0,0,0,0,0,0,0,129,253,253,253,218,4,0,0,0,0,0,0,0,0,45,231,253,253,228,42,0,0,0,0,0,24,81,184,246,253,253,218,32,0,0,0,0,0,0,0,0,0,234,253,253,245,86,0,0,0,0,22,121,223,253,253,253,253,174,33,0,0,0,0,0,0,0,0,0,0,254,253,246,84,0,0,0,65,121,226,253,253,253,253,219,51,4,0,0,0,0,0,0,0,0,0,0,0,254,253,251,162,147,178,223,244,253,253,253,253,253,219,37,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,222,109,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,171,109,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,239,135,135,112,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,28,28,48,28,48,10,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,198,250,231,231,254,231,254,128,212,70,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,179,254,254,254,255,254,254,254,254,251,253,248,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,228,67,152,67,67,67,110,67,150,253,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,83,125,21,0,0,0,0,0,0,0,0,37,223,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,247,254,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,215,254,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,235,254,178,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,254,153,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,254,202,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,230,254,254,81,0,0,0,0,0,0,0,18,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,156,6,0,0,0,7,21,21,13,74,254,0,0,0,0,0,0,0,0,0,0,0,0,0,20,232,254,254,204,172,172,172,172,197,254,254,221,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,254,254,254,254,254,254,254,254,254,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,137,224,254,253,197,219,198,241,200,197,197,169,140,131,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,46,46,0,18,1,35,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,29,29,29,117,241,255,178,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,131,234,252,253,252,252,252,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,229,252,252,252,253,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,252,252,252,253,252,252,252,253,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,254,253,194,113,63,188,235,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,95,225,252,252,247,121,19,0,0,0,85,252,253,214,19,0,0,0,0,0,0,0,0,0,0,0,0,38,229,252,252,252,137,0,0,0,0,0,172,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,252,151,13,0,0,0,0,26,222,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,10,179,254,253,244,75,0,0,0,0,0,7,204,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,214,56,0,0,0,0,0,0,131,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,253,158,0,0,0,0,0,0,10,197,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,7,203,252,253,184,0,0,0,0,0,0,29,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,239,38,0,0,0,0,0,13,154,253,253,241,51,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,150,0,0,0,0,0,0,188,253,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,150,0,0,0,0,0,104,246,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,250,125,0,0,0,76,222,252,253,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,254,203,66,141,254,253,253,253,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,190,252,253,252,252,252,253,252,252,202,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,253,252,252,252,253,252,186,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,252,202,128,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,242,252,252,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,235,252,235,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,214,252,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,229,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,238,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,205,252,143,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,201,252,190,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,223,31,0,0,0,0,0,0,0,0,87,121,81,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,193,0,0,0,0,0,0,7,88,213,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,106,252,192,0,0,0,0,0,88,206,252,247,199,149,252,155,0,0,0,0,0,0,0,0,0,0,0,0,157,252,192,0,0,0,0,93,253,252,212,78,0,73,252,155,0,0,0,0,0,0,0,0,0,0,0,0,157,252,192,0,0,0,73,248,228,134,32,0,12,164,252,132,0,0,0,0,0,0,0,0,0,0,0,0,157,252,106,0,0,99,211,194,35,0,0,41,164,235,94,10,0,0,0,0,0,0,0,0,0,0,0,0,123,252,181,52,25,227,169,3,0,42,130,193,235,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,224,252,239,221,252,180,85,206,232,252,195,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,179,252,252,252,252,252,253,252,175,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,89,252,252,252,252,196,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,103,11,11,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,108,232,254,255,255,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,253,253,253,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,246,253,253,249,192,139,139,151,212,19,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,7,215,253,251,187,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,3,181,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,217,253,233,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,232,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,198,253,253,187,196,145,229,233,189,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,122,193,253,253,253,253,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,253,253,253,253,253,253,253,253,253,253,132,1,0,0,0,0,0,0,0,0,0,0,0,0,0,97,243,253,253,253,253,253,253,253,223,124,66,16,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,224,232,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,253,253,235,120,38,236,253,245,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,243,253,252,91,0,75,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,178,253,243,0,23,204,253,230,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,196,64,201,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,240,253,253,252,253,251,151,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,133,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,171,247,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,56,132,132,33,0,0,0,0,2,137,254,251,74,0,0,0,0,0,0,0,0,0,0,0,0,0,46,214,254,253,251,238,118,27,0,0,84,254,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,194,78,60,53,201,66,0,12,183,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,165,0,0,0,9,5,0,91,254,211,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,245,157,0,0,0,0,12,211,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,248,147,35,0,0,160,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,222,254,248,85,127,251,210,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,162,253,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,240,254,254,170,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,241,205,231,255,212,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,165,8,77,225,254,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,251,36,0,0,30,168,254,243,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,169,0,0,0,0,4,113,248,247,138,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,16,0,0,0,0,0,0,96,254,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,254,9,0,0,0,0,0,0,9,174,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,238,254,9,0,0,0,0,0,0,0,79,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,168,30,0,0,0,0,0,11,179,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,162,253,236,217,158,171,217,217,224,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,240,254,254,254,254,254,254,169,66,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,197,254,254,158,144,116,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,253,253,253,253,254,253,253,170,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,253,253,253,253,253,254,253,253,253,225,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,253,253,253,254,253,253,253,253,250,136,0,0,0,0,0,0,0,0,0,0,0,0,0,66,250,253,253,253,200,88,88,88,88,179,251,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,206,22,0,0,0,0,0,205,253,253,246,35,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,128,0,0,0,0,0,0,21,211,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,22,0,0,0,0,0,0,0,166,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,22,0,0,0,0,0,0,0,166,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,118,0,0,0,0,0,0,0,166,253,253,228,29,0,0,0,0,0,0,0,0,0,0,0,101,254,254,254,22,0,0,0,0,0,0,23,254,254,254,254,66,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,99,0,0,0,0,0,0,128,253,253,253,242,49,0,0,0,0,0,0,0,0,0,0,27,227,253,253,253,131,0,0,0,0,0,0,243,253,253,253,209,0,0,0,0,0,0,0,0,0,0,0,61,250,253,253,253,238,0,0,0,0,0,62,249,253,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,250,65,0,0,0,44,238,253,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,46,207,253,253,253,185,0,0,0,106,253,253,253,222,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,250,232,184,233,247,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,253,253,253,253,253,255,253,253,253,200,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,179,253,253,253,253,254,253,253,169,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,86,162,253,253,192,114,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,193,148,148,148,148,131,43,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,252,253,252,252,252,252,253,252,221,163,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,232,231,231,231,231,250,247,252,252,244,110,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,63,84,154,215,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,183,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,112,216,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,101,181,252,252,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,64,108,183,252,252,236,101,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,185,232,252,252,253,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,253,255,253,253,253,209,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,231,210,168,168,125,168,168,224,252,243,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,11,0,0,0,0,0,14,21,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,139,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,43,0,0,0,64,213,252,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,189,127,127,233,247,252,252,244,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,253,252,221,162,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,252,208,147,68,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,237,212,148,148,148,148,148,148,145,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,161,254,253,253,253,253,253,253,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,81,165,238,35,59,122,200,209,148,209,209,206,38,0,0,0,0,0,0,0,0,0,0,0,0,0,17,178,253,239,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,211,253,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,253,253,249,192,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,234,248,245,253,253,198,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,41,9,115,198,253,229,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,229,255,229,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,9,0,0,0,0,0,79,254,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,137,10,0,0,0,0,0,45,245,254,238,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,47,0,0,7,44,81,219,253,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,213,161,137,216,253,253,253,241,134,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,231,253,253,253,253,253,233,193,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,82,148,148,106,61,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,253,253,0,0,0,0,0,0,0,0,0,76,117,225,225,226,178,66,57,85,86,85,85,101,225,226,234,252,252,252,0,0,0,0,0,0,0,0,120,246,252,252,252,253,252,239,234,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,253,252,252,252,252,253,204,221,252,252,190,112,112,112,112,174,252,252,252,252,0,0,0,0,0,0,0,0,141,241,253,240,140,0,0,0,16,140,0,0,0,0,0,176,253,253,253,112,0,0,0,0,0,0,0,0,0,100,252,249,100,0,0,0,0,0,0,0,0,0,0,253,252,252,252,112,0,0,0,0,0,0,0,0,0,19,100,230,25,0,0,0,0,0,0,0,0,0,111,253,252,252,245,87,0,0,0,0,0,0,0,0,0,0,19,74,0,0,0,0,0,0,0,0,0,35,215,253,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,252,253,223,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,240,252,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,245,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,237,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,219,253,255,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,224,252,252,228,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,252,252,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,213,252,252,160,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,244,252,241,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,74,0,0,0,0,0,0,48,208,164,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,74,0,0,0,0,7,51,221,252,252,84,7,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,74,0,0,0,0,174,252,252,195,238,252,181,7,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,205,0,27,189,223,253,234,177,128,232,252,212,10,0,0,0,0,0,0,0,0,0,0,0,0,14,236,252,225,110,204,252,252,161,56,2,135,252,248,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,252,252,252,252,172,0,32,141,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,252,252,252,155,151,241,252,209,119,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,76,231,252,252,252,253,252,249,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,155,252,252,191,103,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,130,203,255,255,172,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,86,253,253,253,253,253,230,136,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,235,235,235,237,253,253,253,226,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,245,253,253,225,52,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,193,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,210,253,253,139,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,213,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,60,0,19,210,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,81,195,244,144,217,253,253,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,160,237,253,253,253,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,253,253,253,253,253,253,253,253,253,184,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,239,253,195,79,112,253,253,253,253,253,253,253,186,15,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,166,181,245,253,253,253,176,176,253,253,253,233,121,10,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,231,54,5,5,54,141,235,253,253,186,8,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,236,115,10,0,0,0,0,0,53,236,253,253,188,119,3,0,0,0,0,0,0,0,0,130,253,253,253,162,5,0,0,0,0,0,0,0,0,5,115,129,129,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,229,255,186,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,232,253,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,232,253,202,86,236,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,202,19,104,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,241,34,85,254,241,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,215,123,222,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,219,253,244,80,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,241,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,189,254,227,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,251,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,141,229,253,242,66,7,0,4,29,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,253,252,252,252,253,214,137,32,128,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,196,80,56,56,19,44,169,253,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,28,9,0,0,0,0,76,237,253,252,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,190,0,0,0,0,0,0,89,76,154,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,165,0,0,0,0,0,0,19,94,253,240,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,224,19,0,0,0,0,0,19,140,252,244,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,168,0,0,0,0,0,63,194,252,202,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,247,153,13,0,0,126,255,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,196,252,88,13,144,243,253,189,84,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,247,209,252,252,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,252,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,179,253,253,255,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,57,107,253,252,252,227,253,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,209,252,252,253,196,80,31,203,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,252,128,9,0,0,153,246,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,203,29,10,0,0,92,253,216,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,234,252,252,253,196,131,107,216,252,145,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,196,252,253,252,252,252,253,227,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,153,252,252,252,128,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,57,0,29,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,57,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,170,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,29,0,29,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,0,0,0,0,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,0,0,0,0,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,86,29,86,141,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,255,255,170,170,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,204,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,235,237,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,228,255,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,125,0,0,0,0,41,185,253,212,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,244,184,20,0,0,21,145,253,240,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,141,254,216,72,0,0,6,152,253,238,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,136,238,253,195,12,0,0,0,170,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,176,254,254,221,73,125,130,130,228,255,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,254,253,253,253,253,254,202,63,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,244,234,216,216,127,75,80,253,253,217,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,27,0,0,0,4,168,253,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,246,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,247,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,245,61,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,203,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,0,26,255,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,248,21,0,0,0,0,0,142,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,99,0,0,0,0,19,240,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,48,0,0,0,0,24,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,236,17,0,0,0,0,116,254,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,216,253,101,0,0,0,0,0,166,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,93,0,0,0,0,38,245,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,25,0,0,0,0,47,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,103,0,0,0,0,0,164,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,164,6,0,0,0,0,64,251,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,254,253,215,140,116,65,24,24,120,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,253,253,253,254,253,253,253,254,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,236,184,184,151,151,184,216,254,254,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,48,17,0,0,0,0,0,11,190,254,253,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,254,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,249,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,172,92,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,192,253,252,253,232,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,234,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,253,183,20,0,0,0,0,31,51,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,223,253,171,0,0,0,0,62,183,233,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,255,253,254,131,31,92,153,233,244,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,252,253,172,233,252,253,171,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,253,254,253,254,213,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,213,252,192,111,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,121,255,253,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,247,252,253,207,145,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,243,252,252,97,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,240,252,205,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,243,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,233,133,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,246,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,121,252,252,252,241,183,107,107,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,26,33,158,253,252,252,252,245,226,135,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,39,39,151,193,252,252,213,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,67,210,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,89,200,252,232,28,0,0,0,0,0,0,0,0,0,0,74,110,0,0,0,0,0,0,0,20,97,173,240,252,252,245,189,0,0,0,0,0,0,0,0,0,0,0,191,218,48,27,27,119,160,160,160,204,252,252,252,231,127,78,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,252,252,252,252,252,252,253,246,119,106,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,119,231,252,252,252,167,119,119,120,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,69,155,251,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,210,190,110,111,149,110,159,223,253,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,238,253,253,253,253,253,253,253,253,205,77,0,0,0,0,0,0,0,0,0,0,0,0,10,120,106,0,0,27,54,133,196,233,233,233,202,121,9,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,194,253,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,242,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,222,105,105,105,90,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,232,253,253,253,253,253,218,140,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,79,108,138,138,233,250,253,235,115,199,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,253,253,249,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,26,26,98,125,201,253,253,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,144,185,253,253,253,253,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,225,253,240,253,226,253,253,254,253,182,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,228,253,203,253,253,253,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,246,253,254,253,253,253,229,95,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,80,146,123,153,82,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,120,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,193,253,253,222,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,149,237,253,253,236,180,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,199,253,254,236,119,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,254,210,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,251,248,139,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,125,254,248,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,254,151,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,185,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,241,242,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,96,0,0,0,0,68,127,176,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,182,0,0,0,72,120,254,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,64,22,47,139,235,253,253,254,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,61,212,253,254,253,253,236,237,219,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,253,253,219,161,77,69,53,136,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,254,188,25,0,38,112,229,254,254,214,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,253,226,138,198,243,253,253,254,177,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,251,253,253,254,248,230,196,80,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,236,253,195,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,82,159,177,187,187,58,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,177,234,253,254,253,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,138,250,253,253,253,254,184,236,253,253,219,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,207,253,252,231,149,25,11,4,9,69,207,253,249,152,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,194,0,0,0,0,0,0,0,166,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,118,251,253,145,5,0,0,0,0,0,0,8,196,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,210,253,203,5,0,0,0,0,0,0,53,181,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,45,122,237,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,239,102,7,0,58,127,255,253,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,13,245,253,253,224,221,245,253,254,253,210,105,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,229,254,254,254,254,225,237,144,19,23,255,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,77,77,77,77,10,34,0,0,100,253,191,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,246,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,251,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,222,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,134,217,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,118,235,253,249,250,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,253,240,137,60,214,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,239,253,195,23,0,55,250,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,217,254,245,48,0,0,59,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,241,30,0,0,0,23,207,193,149,231,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,245,68,0,0,0,0,35,217,253,250,241,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,155,0,0,0,13,116,224,253,198,73,165,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,208,40,47,166,237,237,192,71,6,7,204,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,253,254,253,253,200,58,0,0,0,77,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,98,196,113,30,0,0,0,0,0,235,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,200,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,249,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,178,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,83,39,125,157,187,255,231,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,250,251,250,253,253,253,253,253,252,164,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,253,253,159,142,142,109,80,107,162,253,239,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,213,35,3,0,0,0,0,0,4,176,251,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,25,16,0,0,0,0,0,0,0,24,213,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,182,243,194,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,86,86,86,86,86,86,116,223,253,176,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,218,253,253,253,253,253,253,253,237,85,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,248,253,253,253,253,253,198,198,243,112,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,175,188,144,58,58,14,14,85,233,194,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,236,227,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,192,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,107,8,0,0,0,0,34,239,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,174,226,45,0,0,0,0,0,97,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,58,0,0,0,0,0,0,163,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,221,114,20,5,0,0,24,216,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,232,253,253,253,171,143,143,160,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,229,253,253,253,253,253,253,252,247,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,159,253,253,253,253,166,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,125,125,232,254,254,254,254,255,254,238,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,253,253,253,253,253,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,253,253,253,253,253,253,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,189,253,253,253,170,149,149,149,221,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,25,25,25,5,0,0,0,176,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,253,253,244,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,228,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,237,253,253,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,236,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,253,253,253,135,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,246,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,213,253,253,247,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,250,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,226,36,29,85,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,101,137,247,187,74,169,251,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,119,0,43,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,235,14,0,130,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,254,253,21,0,0,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,242,253,189,5,0,0,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,246,252,197,14,0,6,198,253,252,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,252,252,45,0,0,21,225,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,121,0,0,0,54,246,253,137,4,0,0,0,80,115,185,62,0,0,0,0,0,0,0,0,61,253,253,216,18,43,43,25,96,253,255,253,200,218,253,255,253,253,253,218,0,0,0,0,0,0,0,0,183,252,252,237,190,253,252,226,252,252,253,252,252,252,252,204,168,168,98,11,0,0,0,0,0,0,0,0,200,252,252,252,252,253,252,251,245,252,253,78,21,21,21,9,0,0,0,0,0,0,0,0,0,0,0,0,111,189,189,189,145,84,84,82,190,252,216,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,217,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,243,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,253,202,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,110,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,198,232,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,223,21,0,0,0,0,0,0,0,0,0,0,0,0,0,89,188,65,0,0,0,0,0,0,0,0,145,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,89,248,236,43,0,0,0,0,0,0,0,0,172,254,197,0,0,0,0,0,0,0,0,0,0,0,0,24,240,234,54,0,0,0,0,0,0,0,0,0,172,254,197,0,0,0,0,0,0,0,0,0,0,0,24,207,254,175,0,0,0,0,0,0,0,0,0,19,245,254,197,0,0,0,0,0,0,0,0,0,0,0,209,254,212,27,0,0,0,0,0,0,0,0,0,21,254,254,128,0,0,0,0,0,0,0,0,0,0,43,249,254,169,4,0,0,0,0,0,0,0,0,0,64,254,254,94,0,0,0,0,0,0,0,0,0,29,233,254,254,254,226,150,40,0,0,0,0,0,0,0,86,254,248,36,0,0,0,0,0,0,0,0,0,48,254,240,155,206,255,254,242,116,79,0,0,0,0,63,228,254,244,0,0,0,0,0,0,0,0,0,0,1,86,51,0,13,109,203,254,254,254,250,250,250,250,252,254,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,62,107,166,200,254,254,254,227,209,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,15,15,15,11,126,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,200,255,238,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,239,254,254,243,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,248,98,74,251,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,251,254,203,22,0,124,254,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,231,254,215,22,0,8,237,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,247,78,0,5,173,254,254,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,254,165,53,126,245,254,254,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,254,254,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,231,254,254,254,254,254,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,202,205,205,233,254,254,211,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,219,254,230,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,251,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,246,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,212,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,251,122,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,107,177,255,254,199,255,171,45,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,221,253,253,253,253,253,253,253,253,170,154,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,253,253,253,253,253,253,253,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,228,132,65,65,65,65,101,209,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,231,164,0,0,0,0,0,0,51,243,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,19,0,0,0,0,0,0,95,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,152,187,247,253,253,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,142,212,253,253,253,253,253,253,210,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,253,253,253,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,253,253,253,147,192,229,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,253,194,77,6,0,113,253,238,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,158,85,41,10,0,0,0,5,179,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,14,0,0,0,0,0,0,32,217,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,204,146,15,0,0,0,8,217,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,204,93,66,66,184,253,253,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,253,253,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,111,253,253,253,253,253,253,253,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,37,218,253,253,253,248,66,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,177,241,183,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,228,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,238,252,252,253,218,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,194,252,252,252,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,166,252,252,252,252,164,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,166,252,252,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,252,252,243,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,236,252,252,252,250,155,8,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,240,252,252,252,252,239,133,196,253,139,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,253,253,253,253,253,255,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,252,252,252,252,252,252,252,252,253,252,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,252,252,252,252,252,252,252,253,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,252,252,253,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,252,252,253,252,252,172,0,0,0,0,0,106,0,0,0,0,0,0,0,0,129,249,252,252,252,252,252,252,252,252,253,252,252,172,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,131,248,252,252,252,252,252,252,252,253,214,162,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,252,252,252,236,225,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,106,140,238,147,106,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,249,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,248,252,252,213,108,226,226,228,226,226,226,226,226,226,226,144,0,0,0,0,0,0,0,0,0,0,91,248,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,250,101,0,0,0,0,0,0,0,0,0,79,245,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,248,88,0,0,0,0,0,0,0,0,0,0,198,252,252,252,243,198,122,66,66,66,66,66,66,94,235,246,118,0,0,0,0,0,0,0,0,0,0,0,30,225,252,252,212,0,0,0,0,0,0,0,0,0,55,71,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,214,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,252,239,133,133,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,253,253,253,253,253,255,253,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,224,252,252,252,252,253,252,252,242,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,26,111,158,158,204,252,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,129,252,252,242,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,145,252,252,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,54,54,131,186,219,252,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,160,173,173,231,252,252,252,252,253,252,252,176,17,0,0,0,0,0,0,0,0,0,0,0,0,0,13,192,252,252,252,252,252,252,252,252,240,225,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,251,252,252,252,249,238,238,161,106,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,146,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,70,128,161,203,254,254,254,254,186,162,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,224,253,254,253,253,253,254,253,253,253,254,249,146,13,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,254,253,234,230,230,162,196,230,230,251,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,253,161,77,13,0,0,0,0,0,0,129,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,164,251,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,24,40,191,240,254,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,209,254,253,253,253,254,253,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,253,254,244,206,206,254,253,251,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,137,80,38,0,0,46,96,224,253,149,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,234,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,128,245,254,254,255,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,172,138,138,139,222,230,247,254,253,253,253,216,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,253,253,254,253,253,253,254,253,192,104,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,111,228,254,253,253,185,161,111,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,158,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,50,136,234,253,253,199,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,120,137,117,233,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,53,52,0,8,158,253,253,195,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,52,0,0,0,174,246,168,9,97,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,72,0,129,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,238,104,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,253,253,235,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,235,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,158,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,201,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,181,253,253,154,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,204,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,202,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,253,230,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,117,133,133,198,243,133,156,254,162,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,159,253,253,253,254,253,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,254,253,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,149,93,253,253,253,242,113,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,236,253,253,198,9,42,253,253,218,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,253,253,225,17,0,168,253,191,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,116,0,99,254,245,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,180,5,0,167,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,144,144,39,0,100,252,243,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,249,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,238,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,215,253,157,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,179,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,172,242,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,180,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,253,252,200,221,253,180,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,252,253,179,20,144,253,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,191,15,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,252,252,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,238,253,253,0,0,16,191,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,73,115,222,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,252,253,252,252,231,232,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,253,210,108,46,109,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,238,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,73,73,73,10,0,125,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,252,253,190,181,221,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,108,108,148,252,168,108,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,64,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,64,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,128,128,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,64,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,126,49,129,130,167,255,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,240,253,253,253,239,232,217,107,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,173,67,41,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,247,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,210,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,251,253,253,111,9,10,16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,253,216,220,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,253,253,252,250,247,213,213,107,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,219,115,78,39,157,201,250,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,185,64,18,0,0,0,0,0,156,253,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,2,0,0,0,0,0,0,0,16,153,253,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,253,248,33,0,0,0,0,0,0,0,0,0,0,0,0,96,73,0,0,0,0,0,0,0,0,0,129,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,140,242,22,0,5,11,11,32,115,72,193,251,253,231,12,0,0,0,0,0,0,0,0,0,0,0,0,0,52,169,178,161,162,253,253,253,253,253,253,253,180,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,76,149,149,149,213,253,236,149,95,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,185,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,253,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,167,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,252,253,137,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,252,173,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,247,91,0,0,0,0,0,0,0,20,92,127,128,48,2,0,0,0,0,0,0,0,0,0,0,0,155,252,189,0,0,0,0,0,0,64,143,246,252,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,190,252,189,0,0,0,0,0,45,253,252,252,252,252,253,252,240,35,0,0,0,0,0,0,0,0,0,0,191,253,172,0,0,0,4,139,253,255,253,253,243,247,255,253,253,84,0,0,0,0,0,0,0,0,0,0,190,252,84,0,0,0,101,252,252,253,189,159,47,53,125,231,252,84,0,0,0,0,0,0,0,0,0,0,137,252,180,0,0,0,127,252,252,214,32,0,0,0,4,195,252,172,0,0,0,0,0,0,0,0,0,0,64,247,189,0,0,0,127,252,252,0,0,0,0,0,139,252,252,84,0,0,0,0,0,0,0,0,0,0,0,232,189,0,0,0,127,252,164,0,0,0,0,89,253,252,235,14,0,0,0,0,0,0,0,0,0,0,0,171,253,209,18,0,128,253,253,0,15,43,139,253,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,217,190,221,252,252,191,211,252,252,252,253,153,32,0,0,0,0,0,0,0,0,0,0,0,0,2,167,252,253,252,252,252,252,253,252,252,252,252,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,189,253,252,252,252,252,253,252,252,236,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,121,147,147,191,147,191,147,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,191,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,240,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,245,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,188,17,0,0,0,0,69,81,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,240,207,69,0,0,0,0,0,179,253,186,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,80,0,0,0,0,0,0,64,242,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,237,253,80,0,0,0,0,0,0,0,99,243,241,86,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,219,29,0,0,0,0,0,0,0,0,187,253,226,0,0,0,0,0,0,0,0,0,0,0,0,55,237,253,192,0,0,0,0,0,0,0,0,0,107,249,228,6,0,0,0,0,0,0,0,0,0,0,0,94,253,218,31,0,0,0,0,0,0,0,0,0,0,174,253,107,0,0,0,0,0,0,0,0,0,0,0,95,254,124,0,0,0,0,0,0,0,0,0,0,0,175,255,107,0,0,0,0,0,0,0,0,0,0,0,221,253,53,0,0,0,0,0,0,0,0,0,0,52,249,253,107,0,0,0,0,0,0,0,0,0,0,40,237,253,53,0,0,0,0,0,0,0,0,0,0,104,253,243,67,0,0,0,0,0,0,0,0,0,0,108,253,185,9,0,0,0,0,0,0,0,0,0,0,187,253,226,0,0,0,0,0,0,0,0,0,0,0,108,253,173,0,0,0,0,0,0,0,0,0,22,103,240,253,121,0,0,0,0,0,0,0,0,0,0,0,85,248,232,39,0,0,0,0,0,0,0,98,208,253,253,195,25,0,0,0,0,0,0,0,0,0,0,0,0,206,253,190,67,0,0,3,41,41,168,245,253,253,195,25,0,0,0,0,0,0,0,0,0,0,0,0,0,35,143,253,234,161,161,165,253,255,253,253,188,93,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,216,253,253,253,253,253,241,183,107,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,120,120,204,246,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,219,253,255,253,156,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,199,32,0,8,139,249,252,252,253,252,252,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,132,0,39,252,252,214,88,89,215,252,252,173,48,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,132,0,178,252,209,31,0,0,32,210,252,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,168,119,243,252,31,0,0,0,0,120,252,252,248,144,4,0,0,0,0,0,0,0,0,0,0,0,184,241,252,252,252,156,4,0,0,0,0,5,74,214,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,236,56,0,0,0,0,0,0,0,75,252,252,210,31,0,0,0,0,0,0,0,0,0,0,0,164,252,252,169,0,0,0,0,0,0,0,0,4,182,252,252,59,0,0,0,0,0,0,0,0,0,0,0,164,252,238,61,0,0,0,0,0,0,0,0,0,178,252,252,59,0,0,0,0,0,0,0,0,0,0,0,67,173,90,0,0,0,0,0,0,0,0,0,0,178,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,196,252,230,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,145,248,252,132,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,252,252,248,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,210,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,241,252,252,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,249,136,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,128,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,57,0,0,0,0,64,213,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,246,179,101,66,128,221,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,236,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,147,226,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,65,0,0,8,201,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,224,14,0,0,43,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,14,0,0,0,139,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,112,190,253,252,221,163,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,252,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,231,252,253,252,176,162,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,129,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,140,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,137,251,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,187,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,248,200,53,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,168,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,227,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,212,242,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,240,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,218,0,0,0,0,0,0,104,175,160,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,192,0,0,0,0,0,186,235,175,244,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,131,0,0,0,0,155,253,23,0,80,238,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,131,0,0,0,0,254,116,2,0,34,243,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,210,0,0,0,98,254,8,0,0,10,219,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,218,0,0,2,189,213,4,0,0,90,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,183,223,8,0,2,189,175,0,0,50,221,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,164,7,0,175,238,32,129,248,216,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,230,254,207,193,235,255,254,249,169,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,196,245,248,248,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,25,25,163,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,202,87,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,222,253,252,252,252,248,167,118,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,251,253,253,146,123,253,253,253,111,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,253,226,119,6,4,123,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,230,253,225,49,0,0,0,4,42,216,251,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,217,253,184,23,0,0,0,0,0,0,156,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,92,237,225,117,0,0,0,0,0,0,0,24,165,253,233,105,0,0,0,0,0,0,0,0,0,0,0,194,249,253,61,0,0,0,0,0,0,0,0,0,43,253,253,163,0,0,0,0,0,0,0,0,0,0,89,250,253,143,8,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,0,91,221,253,177,8,0,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,0,148,253,229,53,0,0,0,0,0,0,0,0,0,0,0,5,171,253,253,0,0,0,0,0,0,0,0,0,248,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,0,0,0,0,0,0,0,0,23,249,253,19,0,0,0,0,0,0,0,0,0,0,0,0,4,163,253,253,0,0,0,0,0,0,0,0,125,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,233,0,0,0,0,0,0,0,0,141,253,253,86,0,0,0,0,0,0,0,0,0,0,0,21,163,253,235,108,0,0,0,0,0,0,0,0,241,253,253,32,0,0,0,0,0,0,0,0,0,38,156,216,253,238,105,0,0,0,0,0,0,0,0,0,51,250,253,211,33,3,0,0,0,0,15,20,111,219,253,253,231,45,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,157,143,143,143,143,225,253,253,251,223,110,45,0,0,0,0,0,0,0,0,0,0,0,0,54,173,253,253,253,253,253,253,253,252,220,117,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,123,170,253,213,123,123,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,79,202,255,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,172,227,253,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,140,248,253,253,253,250,217,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,160,253,253,253,253,228,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,234,159,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,241,253,253,123,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,207,253,229,94,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,253,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,224,253,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,253,251,74,38,167,249,249,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,243,156,244,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,222,253,253,253,253,253,247,182,251,253,233,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,202,131,58,0,249,253,231,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,180,9,0,5,62,251,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,176,10,0,30,148,253,198,119,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,243,126,115,182,233,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,253,253,253,242,114,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,184,253,253,253,185,106,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,77,252,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,254,251,241,203,120,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,254,118,116,194,204,225,254,208,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,182,1,0,0,0,17,107,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,123,236,74,0,0,0,0,1,117,240,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,223,186,10,0,0,0,0,116,251,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,187,11,0,0,2,198,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,168,254,156,13,0,93,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,254,186,14,145,207,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,164,254,199,245,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,175,254,251,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,251,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,225,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,221,181,42,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,97,2,206,248,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,58,1,183,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,79,94,254,223,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,221,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,191,254,219,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,171,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,197,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,150,58,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,201,90,0,0,20,202,233,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,222,254,126,0,49,214,254,230,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,226,254,252,86,0,122,254,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,143,0,0,75,81,70,241,230,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,223,254,254,156,23,0,0,0,0,0,102,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,254,186,60,1,0,0,0,0,0,0,59,254,110,0,0,0,0,0,0,0,0,0,0,0,0,32,220,254,204,8,0,0,0,0,0,0,0,0,36,254,110,0,0,0,0,0,0,0,0,0,0,0,0,161,254,203,100,0,0,0,0,0,0,0,0,0,63,229,150,0,0,0,0,0,0,0,0,0,0,0,65,242,237,93,0,0,0,0,0,0,0,0,0,0,198,254,84,0,0,0,0,0,0,0,0,0,0,7,170,253,169,0,0,0,0,0,0,0,0,0,2,16,237,243,9,0,0,0,0,0,0,0,0,0,0,138,254,242,32,0,0,0,0,0,0,0,0,0,53,254,254,104,0,0,0,0,0,0,0,0,0,0,0,210,254,136,0,0,0,0,0,0,0,0,2,120,240,254,164,8,0,0,0,0,0,0,0,0,0,0,40,242,234,24,0,0,0,0,0,0,2,105,185,254,247,104,6,0,0,0,0,0,0,0,0,0,0,0,187,251,62,0,0,0,0,6,73,155,236,254,252,192,29,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,213,104,159,190,190,200,254,254,254,174,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,254,254,254,254,254,254,220,112,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,120,154,154,142,55,55,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,166,218,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,199,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,202,252,253,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,252,253,169,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,252,129,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,252,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,252,221,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,47,0,0,50,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,21,0,150,245,246,223,101,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,21,70,239,253,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,38,239,252,236,182,252,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,255,253,109,132,211,45,15,192,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,238,85,14,50,185,252,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,236,245,252,252,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,184,252,252,252,253,252,247,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,104,252,252,253,173,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,113,113,114,113,88,0,0,0,226,119,169,112,0,0,0,0,0,0,0,0,0,0,67,178,225,226,225,231,252,252,253,252,246,225,225,226,249,227,143,12,0,0,0,0,0,0,0,0,0,0,197,252,252,253,201,208,252,252,253,252,252,252,252,253,252,208,19,0,0,0,0,0,0,0,0,0,0,0,181,252,252,240,24,19,84,84,253,252,252,252,252,225,223,246,177,0,0,0,0,0,0,0,0,0,0,0,57,252,252,63,0,0,0,79,253,252,252,236,112,0,0,88,99,0,0,0,0,0,0,0,0,0,0,0,32,216,253,0,0,26,113,191,255,253,165,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,226,100,200,252,252,215,42,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,252,252,252,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,153,253,252,245,208,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,215,118,252,249,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,240,252,220,31,19,177,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,228,252,249,99,0,0,57,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,145,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,196,0,0,0,0,57,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,195,0,0,0,201,231,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,239,197,197,198,246,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,252,252,253,242,192,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,190,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,167,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,218,154,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,218,178,2,189,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,239,53,0,225,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,201,172,0,0,241,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,208,222,41,0,72,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,165,254,126,0,0,104,255,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,239,180,180,225,254,175,99,99,35,17,17,17,2,0,0,0,0,0,0,0,0,0,0,0,0,36,147,213,242,254,254,254,254,254,254,254,254,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,57,119,254,206,139,139,139,139,152,221,176,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,242,215,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,237,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,205,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,139,209,200,79,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,69,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,185,253,253,253,253,253,253,221,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,235,253,253,253,253,176,165,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,246,133,8,74,253,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,216,53,0,0,17,229,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,114,114,28,0,0,0,14,220,253,239,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,2,5,35,105,33,5,2,0,0,0,1,100,248,253,217,0,0,0,0,0,0,0,0,0,0,0,0,26,149,253,253,253,253,253,181,62,12,0,63,253,253,235,52,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,253,253,253,253,220,115,232,253,252,125,0,0,0,0,0,0,0,0,0,0,0,0,65,206,253,220,116,84,84,178,237,253,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,222,29,0,0,0,14,123,253,253,253,253,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,188,0,0,10,80,215,253,253,253,253,253,253,168,24,0,0,46,120,0,0,0,0,0,0,0,0,254,253,223,134,164,237,253,253,253,199,78,82,219,253,254,240,181,170,245,240,0,0,0,0,0,0,0,0,180,253,253,253,253,253,253,204,88,2,0,0,35,224,253,253,253,253,253,80,0,0,0,0,0,0,0,0,28,152,208,208,179,109,37,5,0,0,0,0,0,34,109,140,195,109,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,121,245,208,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,216,254,247,251,140,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,241,237,115,10,81,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,154,254,246,113,0,0,0,160,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,232,49,0,0,136,141,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,240,232,49,0,0,110,247,174,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,220,241,95,0,15,142,246,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,251,124,27,74,212,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,250,205,244,254,210,195,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,230,254,224,90,22,184,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,42,23,0,51,248,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,249,167,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,218,243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,231,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,134,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,168,0,0,0,87,113,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,168,0,0,0,99,231,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,168,0,0,0,0,51,180,239,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,98,0,0,0,0,0,16,231,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,236,37,0,0,0,0,0,0,126,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,150,0,0,0,0,0,0,0,0,212,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,131,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,9,0,0,0,0,0,0,0,0,9,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,182,0,0,0,0,0,0,0,0,0,0,183,224,14,0,0,0,0,0,0,0,0,0,0,0,0,232,252,59,0,0,0,0,0,0,0,0,0,0,148,252,109,0,0,0,0,0,0,0,0,0,0,0,0,233,253,42,0,0,0,0,0,0,0,0,0,0,148,253,188,0,0,0,0,0,0,0,0,0,0,0,0,232,252,156,0,0,0,0,0,0,0,0,0,0,148,252,196,0,0,0,0,0,0,0,0,0,0,0,0,232,252,155,0,0,0,0,0,0,0,0,0,0,148,252,118,0,0,0,0,0,0,0,0,0,0,0,0,161,252,217,0,0,0,0,0,0,0,0,0,0,218,252,21,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,45,0,0,0,0,0,0,0,0,132,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,124,0,0,0,0,0,0,0,55,236,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,6,154,252,243,83,0,0,0,0,0,87,232,252,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,206,253,246,179,127,127,128,162,251,252,146,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,183,252,252,252,252,253,252,247,162,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,121,244,252,252,191,147,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,251,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,255,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,218,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,246,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,195,175,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,215,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,164,251,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,255,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,229,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,237,254,255,251,95,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,252,225,230,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,115,234,218,63,0,12,110,254,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,254,53,0,0,0,1,169,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,192,4,0,0,0,18,241,250,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,116,0,0,0,175,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,156,254,234,68,0,119,252,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,254,246,144,250,254,150,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,249,254,254,254,185,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,254,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,229,254,215,110,248,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,228,254,211,29,0,235,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,229,254,219,28,0,3,236,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,213,59,0,5,163,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,247,254,88,0,0,81,254,247,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,217,254,174,10,2,78,243,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,144,112,192,254,219,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,220,254,254,254,254,203,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,227,254,210,91,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,121,121,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,128,240,240,240,241,245,252,252,242,240,240,226,102,0,0,0,0,0,0,0,0,0,0,0,0,0,110,232,252,252,252,252,253,252,252,252,252,252,252,252,250,156,0,0,0,0,0,0,0,0,0,0,0,111,244,252,252,252,252,209,173,248,252,252,252,252,252,252,252,209,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,231,53,25,0,240,227,143,53,53,53,67,108,25,0,0,0,0,0,0,0,0,0,0,0,98,241,252,252,245,110,26,0,119,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,210,41,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,121,243,252,252,252,253,109,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,191,252,252,253,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,126,252,253,252,208,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,255,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,247,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,201,45,0,0,0,0,0,0,0,0,0,240,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,253,168,34,0,0,0,0,34,54,54,118,249,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,223,173,173,173,173,223,252,252,253,252,252,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,226,251,252,252,252,252,252,252,252,252,253,252,192,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,154,238,238,238,238,247,252,252,247,112,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,119,119,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,158,254,254,218,29,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,217,253,253,247,253,216,70,179,150,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,115,253,253,249,204,57,213,253,129,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,212,82,0,0,75,253,202,253,195,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,253,248,70,0,0,0,29,224,253,253,166,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,120,253,248,119,0,0,0,0,48,236,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,216,0,0,0,0,67,193,253,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,131,0,0,39,174,234,253,213,143,246,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,206,180,180,196,253,253,173,15,0,217,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,253,240,191,98,15,0,0,217,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,5,134,227,243,185,160,48,0,0,0,0,0,217,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,47,0,0,0,0,0,0,0,0,121,253,230,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,231,253,212,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,28,0,32,145,249,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,248,210,206,241,253,253,212,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,113,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,190,129,129,32,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,251,255,254,148,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,240,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,234,234,204,16,0,0,53,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,247,253,253,253,31,0,0,53,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,249,29,0,0,59,253,253,253,253,212,69,16,15,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,199,37,89,82,220,253,253,253,253,253,253,253,250,61,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,237,253,253,253,253,253,253,253,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,253,253,253,253,253,141,98,168,109,0,0,0,0,0,0,0,0,0,0,0,83,165,253,253,253,166,155,70,215,253,253,253,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,5,5,1,0,0,156,253,253,253,235,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,230,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,191,253,253,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,132,233,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,164,254,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,253,253,253,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,229,253,219,142,171,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,240,121,13,0,66,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,24,0,0,66,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,113,253,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,245,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,243,235,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,213,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,191,253,237,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,175,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,128,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,225,253,222,143,47,14,37,143,198,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,224,252,253,253,253,253,161,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,224,253,226,123,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,255,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,252,253,252,226,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,253,220,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,252,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,253,252,246,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,252,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,171,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,231,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,231,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,170,212,254,201,254,254,175,199,172,112,102,93,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,254,254,254,254,254,254,254,254,254,223,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,147,147,95,121,147,173,66,97,113,65,79,202,239,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,213,254,230,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,213,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,92,245,254,254,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,173,254,254,254,189,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,227,254,254,254,254,195,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,156,225,238,238,253,254,254,254,246,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,222,254,254,254,254,254,254,248,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,246,174,164,164,164,247,244,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,220,215,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,158,30,0,0,0,0,0,128,254,254,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,154,11,0,0,53,185,253,255,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,147,254,234,177,230,251,254,254,254,249,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,213,254,254,254,254,254,254,178,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,214,254,254,176,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,254,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,171,252,253,252,252,246,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,236,252,252,253,183,153,248,219,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,251,252,246,134,10,3,0,78,245,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,234,252,243,89,0,0,0,0,0,118,145,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,248,88,0,0,0,0,0,8,196,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,207,252,135,0,0,0,0,0,5,81,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,252,237,18,0,0,0,0,0,119,252,252,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,164,0,0,0,0,44,107,241,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,241,220,153,144,220,239,252,252,252,156,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,189,253,253,253,253,253,255,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,77,177,138,186,244,253,252,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,253,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,230,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,188,252,252,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,205,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,153,158,158,158,83,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,117,244,254,254,254,254,254,232,133,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,92,92,223,254,254,183,67,67,83,200,254,254,252,126,11,0,0,0,0,0,0,0,0,0,0,7,127,251,254,254,254,249,98,2,0,0,0,2,32,187,241,254,144,0,0,0,0,0,0,0,0,0,0,111,254,254,254,254,219,51,0,0,0,0,0,0,0,0,142,254,236,30,0,0,0,0,0,0,0,0,22,205,254,151,254,254,36,0,0,0,0,0,0,0,0,0,2,188,254,95,0,0,0,0,0,0,0,0,120,254,165,3,46,9,1,0,0,0,0,0,0,0,0,0,0,71,254,157,0,0,0,0,0,0,0,0,158,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,157,0,0,0,0,0,0,0,0,158,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,225,0,0,0,0,0,0,0,0,249,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,0,0,0,0,0,0,0,0,255,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,175,0,0,0,0,0,0,0,0,225,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,157,0,0,0,0,0,0,0,0,158,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,21,247,248,95,0,0,0,0,0,0,0,0,158,254,67,0,0,0,0,0,0,0,0,0,0,0,0,2,179,254,180,0,0,0,0,0,0,0,0,0,158,254,94,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,97,0,0,0,0,0,0,0,0,0,158,254,162,0,0,0,0,0,0,0,0,0,0,0,53,243,254,178,3,0,0,0,0,0,0,0,0,0,83,253,233,81,5,0,0,0,0,0,0,0,21,105,234,254,175,21,0,0,0,0,0,0,0,0,0,0,0,133,254,254,245,163,143,112,163,163,163,163,247,254,254,218,76,0,0,0,0,0,0,0,0,0,0,0,0,4,99,239,254,254,254,254,254,254,254,254,254,223,125,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,108,157,157,157,157,157,152,62,62,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,222,146,0,114,253,222,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,147,249,233,148,0,75,243,252,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,165,253,252,164,0,0,0,225,252,246,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,178,252,253,179,19,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,204,15,0,0,0,0,226,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,252,204,15,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,198,25,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,4,153,253,252,214,28,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,118,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,57,253,253,255,106,0,0,0,0,0,0,0,0,114,253,253,162,0,0,0,0,0,0,0,0,0,0,0,182,252,252,215,18,0,0,0,0,0,0,0,126,238,252,252,84,0,0,0,0,0,0,0,0,0,0,98,240,252,220,31,0,0,0,0,0,0,0,54,227,253,252,208,19,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,54,224,252,253,226,96,0,0,0,0,0,0,0,0,0,0,63,240,252,236,50,0,0,0,0,0,0,48,227,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,114,253,253,225,0,0,0,0,0,63,176,253,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,38,85,85,101,240,253,252,252,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,246,197,222,252,252,252,252,253,233,164,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,252,252,253,252,252,252,236,225,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,252,253,252,220,112,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,46,200,254,255,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,128,254,254,230,209,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,171,254,234,88,11,16,229,215,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,221,36,0,0,0,142,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,240,51,0,0,0,23,188,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,198,254,176,0,0,0,0,91,254,227,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,241,30,0,0,0,6,178,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,186,0,0,0,7,159,254,246,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,127,0,31,79,200,254,246,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,248,209,245,254,254,254,208,42,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,254,254,254,254,254,254,254,254,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,212,254,231,136,121,121,121,138,215,254,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,254,220,36,0,0,0,0,0,8,115,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,220,35,0,0,0,0,0,0,0,63,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,12,247,254,70,0,0,0,0,0,0,0,0,63,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,234,5,0,0,0,0,0,0,0,0,134,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,233,0,0,0,0,0,0,0,16,137,252,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,253,206,122,41,12,76,118,158,234,254,254,165,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,52,254,254,254,250,247,254,254,254,254,235,79,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,96,180,254,254,254,184,170,126,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,203,254,255,254,220,133,133,133,133,128,13,13,13,10,0,5,2,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,227,145,181,160,145,145,0,0,0,0,0,0,0,0,97,165,217,217,226,243,217,248,253,253,254,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,21,60,0,73,84,84,90,193,102,205,240,253,253,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,233,253,253,253,146,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,213,253,253,253,144,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,97,235,253,253,188,71,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,221,253,253,235,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,236,254,253,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,236,253,254,184,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,151,254,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,148,253,253,243,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,230,253,253,188,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,136,230,253,236,95,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,176,253,253,236,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,132,115,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,73,99,130,163,163,228,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,73,145,145,145,164,238,253,253,254,253,253,253,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,77,229,242,254,219,216,216,216,191,127,94,88,101,69,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,39,87,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,181,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,170,255,212,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,192,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,226,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,220,12,19,32,109,109,84,19,19,19,19,7,0,0,0,0,0,0,0,0,0,0,0,0,0,20,230,253,253,228,253,253,253,253,254,253,253,253,253,207,129,46,0,0,0,0,0,0,0,0,0,0,0,0,124,212,254,208,181,168,91,91,92,7,79,91,91,182,249,241,35,0,0,0,0,0,0,0,0,0,0,0,0,8,18,7,0,0,0,0,0,0,0,0,0,0,151,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,167,249,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,207,254,233,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,119,234,254,208,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,20,0,0,0,0,16,194,253,210,133,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,243,146,37,50,128,128,228,232,126,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,254,253,253,251,235,119,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,227,254,253,175,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,244,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,240,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,239,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,248,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,244,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,255,230,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,246,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,251,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,250,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,245,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,176,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,204,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,225,211,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,156,241,214,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,240,254,254,254,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,244,241,137,23,61,141,54,140,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,254,72,0,0,0,9,210,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,240,67,3,0,0,0,163,254,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,128,0,0,0,0,103,250,234,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,241,20,0,0,0,74,250,248,78,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,194,0,0,0,42,235,247,91,149,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,251,135,0,0,58,225,254,100,17,228,219,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,225,130,147,249,247,97,8,75,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,186,251,254,204,49,0,0,189,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,47,7,0,0,41,245,233,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,212,251,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,214,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,217,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,198,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,105,255,253,253,182,105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,208,242,252,253,252,252,252,252,221,129,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,174,252,252,249,237,176,88,88,88,132,247,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,252,252,209,110,0,0,0,0,0,0,178,252,14,0,0,0,0,0,0,0,0,0,0,0,0,14,237,252,243,99,19,0,0,0,0,0,0,23,200,252,102,0,0,0,0,0,0,0,0,0,0,0,0,121,252,243,108,0,0,0,0,0,0,0,15,183,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,164,252,217,39,0,0,0,0,0,0,8,189,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,224,42,0,0,0,91,125,239,252,252,252,125,1,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,221,193,193,193,253,252,222,136,116,252,221,11,0,0,0,0,0,0,0,0,0,0,0,0,7,103,147,252,252,252,252,252,104,103,36,0,75,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,230,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,212,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,246,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,212,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,248,253,253,250,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,94,95,119,240,253,253,234,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,160,253,254,253,61,178,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,234,253,253,223,186,19,60,239,253,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,233,253,250,199,35,0,0,0,102,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,218,0,0,0,0,0,21,208,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,229,253,222,39,0,0,0,0,0,0,187,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,93,0,0,0,0,0,0,0,187,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,93,0,0,0,0,0,0,0,187,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,214,0,0,0,0,0,0,0,32,220,255,228,0,0,0,0,0,0,0,0,0,0,0,0,72,81,253,253,86,0,0,0,0,0,0,0,68,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,205,8,0,0,0,0,0,0,0,187,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,80,247,253,199,0,0,0,0,0,0,0,69,245,253,219,15,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,199,0,0,0,0,0,0,25,197,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,75,245,253,199,0,0,0,0,0,0,193,253,253,213,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,236,153,41,41,41,41,168,245,253,243,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,248,253,253,253,253,253,255,253,253,245,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,253,253,255,253,241,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,147,253,253,253,253,255,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,229,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,164,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,235,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,247,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,65,236,253,253,253,164,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,234,58,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,15,69,229,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,178,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,112,159,255,205,159,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,198,242,253,253,254,253,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,253,253,253,253,254,160,230,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,236,186,253,254,28,197,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,238,253,205,28,174,253,241,79,228,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,251,253,168,32,220,199,71,238,252,143,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,228,38,0,0,226,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,221,253,227,71,161,254,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,244,253,253,253,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,180,253,253,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,230,254,255,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,249,253,254,253,154,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,214,139,252,253,153,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,159,0,197,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,211,0,59,204,253,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,0,0,97,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,253,98,0,3,193,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,251,112,64,250,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,141,254,253,253,253,247,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,148,228,159,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,216,253,203,192,141,141,141,29,10,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,252,252,253,252,252,252,253,196,169,206,207,56,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,224,68,168,168,196,252,253,252,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,168,0,0,0,10,28,28,28,203,252,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,247,150,0,0,0,0,0,0,70,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,171,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,84,0,0,0,0,0,0,10,197,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,84,0,0,0,0,0,0,79,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,22,0,0,11,32,23,78,157,157,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,255,216,167,203,233,254,254,219,191,128,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,235,188,144,77,31,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,242,208,104,60,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,151,253,254,122,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,255,249,219,237,235,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,88,30,0,37,249,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,57,158,206,35,0,14,97,236,222,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,195,17,8,81,193,254,176,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,221,237,254,255,193,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,93,156,107,63,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,150,234,191,108,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,226,244,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,73,198,245,254,249,244,167,153,254,214,166,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,254,254,207,85,32,0,0,141,254,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,2,138,239,250,206,60,10,0,0,0,44,241,254,208,46,1,0,0,0,0,0,0,0,0,0,0,0,0,94,254,250,113,0,0,0,0,5,83,243,248,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,240,96,0,0,0,0,164,254,219,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,253,245,154,65,113,254,210,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,65,183,238,254,254,249,244,223,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,97,250,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,249,254,255,206,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,190,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,251,54,229,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,20,234,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,244,238,91,34,225,242,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,200,4,95,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,254,137,51,229,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,254,115,244,247,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,245,254,254,247,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,222,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,38,38,38,38,122,146,146,146,146,171,255,254,227,146,19,0,0,0,0,0,0,0,0,0,0,0,56,215,253,253,253,253,253,253,253,253,253,203,177,177,197,253,191,0,0,0,0,0,0,0,0,0,0,0,75,248,250,213,190,248,165,139,71,32,32,11,0,0,66,253,221,0,0,0,0,0,0,0,0,0,0,0,0,3,41,0,0,0,0,0,0,0,0,0,0,0,130,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,233,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,205,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,246,241,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,235,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,230,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,251,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,237,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,231,124,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,255,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,248,253,253,253,245,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,246,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,247,253,253,253,252,198,250,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,106,251,253,253,253,253,246,0,241,253,155,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,253,253,217,193,164,0,158,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,253,136,229,68,14,53,0,104,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,145,1,80,2,0,0,0,104,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,253,253,20,0,0,0,0,0,0,226,253,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,218,5,0,0,0,0,0,0,241,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,15,167,253,250,100,0,0,0,0,0,0,24,243,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,239,0,0,0,0,0,0,0,125,253,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,239,0,0,0,0,0,0,8,197,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,239,0,0,0,0,0,0,144,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,239,0,0,0,0,0,27,248,253,211,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,253,239,0,0,0,0,42,224,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,250,128,2,0,162,210,253,251,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,253,253,180,179,239,253,226,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,245,253,253,253,253,212,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,141,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,40,161,137,111,34,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,130,243,254,254,254,254,254,182,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,249,254,245,205,56,134,229,242,254,197,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,229,52,0,0,0,0,30,183,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,167,236,70,0,0,0,0,0,150,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,223,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,194,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,241,236,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,249,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,254,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,245,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,246,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,169,0,0,0,0,0,0,0,0,0,0,61,99,141,0,0,0,0,0,0,0,0,0,0,0,0,76,254,248,141,59,36,36,36,42,135,135,206,235,250,248,180,0,0,0,0,0,0,0,0,0,0,0,0,19,127,254,254,254,254,254,254,254,254,254,254,206,129,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,120,209,209,209,209,203,110,61,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,255,253,253,253,253,255,253,253,159,138,139,118,7,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,252,252,252,252,253,252,252,252,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,134,183,215,184,183,183,183,130,131,227,252,252,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,29,45,139,149,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,45,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,163,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,239,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,253,253,253,240,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,254,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,253,254,253,253,253,227,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,196,254,254,156,7,92,238,254,170,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,181,20,0,0,199,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,253,237,11,13,0,0,154,253,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,250,121,0,0,0,0,38,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,253,216,0,0,0,0,0,19,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,254,101,0,0,0,0,0,19,254,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,221,16,0,0,0,0,0,71,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,243,254,185,0,0,0,0,0,0,186,253,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,102,0,0,0,0,0,16,222,253,157,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,18,0,0,0,0,0,133,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,44,0,0,0,0,120,241,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,128,0,0,20,171,252,253,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,254,226,128,133,230,254,253,208,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,253,253,253,253,254,132,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,246,162,72,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,156,36,0,8,85,85,85,85,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,242,232,234,252,252,241,231,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,190,110,84,84,84,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,221,171,233,232,232,135,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,252,252,252,243,210,252,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,244,147,59,35,14,51,173,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,186,53,0,0,0,0,0,64,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,107,16,0,0,0,0,0,0,64,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,16,0,0,0,0,0,0,0,0,2,167,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,162,0,0,0,0,0,0,0,0,48,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,14,0,0,0,0,0,0,0,36,179,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,0,0,0,0,0,0,0,43,227,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,71,227,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,57,4,0,0,11,92,232,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,182,109,143,211,252,155,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,253,252,244,77,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,212,224,28,0,0,0,11,18,18,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,203,25,31,89,154,213,254,254,136,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,208,254,254,254,230,241,254,254,254,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,67,247,254,254,254,254,254,254,254,221,254,254,254,159,9,0,0,0,0,0,0,0,0,0,0,0,0,0,59,244,254,254,240,165,74,47,47,229,254,254,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,147,81,24,0,0,41,215,254,254,162,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,154,254,254,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,95,254,254,170,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,147,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,255,254,255,147,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,144,233,254,254,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,255,90,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,254,236,141,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,238,254,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,164,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,161,254,254,251,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,238,254,254,180,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,219,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,69,229,255,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,11,56,137,209,223,253,253,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,65,125,236,253,253,253,253,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,82,225,253,253,253,253,253,253,236,233,141,60,2,0,0,0,0,0,0,0,0,0,0,0,0,0,23,157,232,253,253,253,253,206,173,79,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,135,250,184,114,24,24,24,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,245,184,184,184,184,143,85,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,105,233,253,253,253,253,253,253,253,253,241,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,242,158,120,158,158,198,253,253,237,98,0,0,0,0,0,0,0,0,0,0,0,0,0,92,235,253,125,104,13,0,0,0,0,2,28,230,253,238,30,0,0,0,0,0,0,0,0,0,0,0,0,113,253,225,20,0,0,0,0,0,0,0,0,93,252,249,134,10,0,0,0,0,0,0,0,0,0,0,0,0,78,33,0,0,0,0,0,0,0,0,0,0,108,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,228,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,203,223,63,2,0,0,0,0,3,134,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,193,114,90,90,91,178,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,240,253,253,253,253,253,253,253,253,214,60,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,106,153,248,253,253,253,191,148,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,255,251,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,118,24,0,0,0,0,0,0,26,251,253,247,3,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,253,175,0,0,0,0,0,15,193,253,241,12,0,0,0,0,0,0,0,0,0,0,0,0,0,95,225,253,253,128,0,0,0,0,0,87,253,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,91,238,253,253,223,32,0,0,0,0,16,198,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,253,253,175,45,0,0,0,0,0,87,253,244,67,0,0,0,0,0,0,0,0,0,0,0,0,84,245,253,253,175,6,0,0,0,0,0,16,198,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,182,45,0,0,0,0,0,0,87,253,243,67,0,0,0,0,0,0,0,0,0,0,0,0,100,252,253,224,18,0,0,0,0,0,0,42,238,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,229,79,66,10,0,0,0,0,153,253,243,97,0,0,0,0,0,0,0,0,0,0,0,0,0,32,249,253,253,253,253,199,189,86,59,156,235,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,218,253,253,253,253,253,253,253,253,253,253,242,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,78,195,207,207,231,244,253,253,253,253,223,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,116,253,253,198,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,162,253,198,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,246,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,235,248,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,94,249,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,226,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,198,255,226,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,29,114,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,29,198,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,226,0,0,0,0,29,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,226,170,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,198,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,151,151,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,125,248,254,254,243,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,187,255,254,254,254,254,169,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,210,254,254,254,254,254,254,254,129,84,84,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,247,230,254,254,254,254,254,235,253,254,228,103,4,0,0,0,0,0,0,0,0,0,0,0,66,252,254,247,87,16,254,254,254,226,122,19,180,254,254,254,138,0,0,0,0,0,0,0,0,0,0,3,189,254,254,136,0,15,249,254,181,83,0,0,4,63,193,254,253,131,0,0,0,0,0,0,0,0,0,48,254,254,254,56,0,0,58,88,34,0,0,0,0,0,44,175,254,235,31,0,0,0,0,0,0,0,0,134,254,254,139,4,0,0,0,0,0,0,0,0,0,0,0,39,239,254,49,0,0,0,0,0,0,0,0,151,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,150,0,0,0,0,0,0,0,0,151,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,150,0,0,0,0,0,0,0,0,194,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,253,0,0,0,0,0,0,0,0,151,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,218,0,0,0,0,0,0,0,0,54,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,50,232,254,137,0,0,0,0,0,0,0,0,48,254,254,231,47,0,0,0,0,0,0,0,0,10,79,172,231,254,237,32,0,0,0,0,0,0,0,0,5,152,254,254,177,15,0,0,0,0,17,39,204,233,254,254,254,228,20,0,0,0,0,0,0,0,0,0,0,31,220,254,254,231,172,172,172,172,238,254,254,254,206,135,83,12,0,0,0,0,0,0,0,0,0,0,0,0,78,220,254,254,254,254,254,254,254,244,128,36,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,195,254,254,254,253,176,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,46,46,46,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,79,148,242,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,181,234,245,71,64,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,223,253,209,253,151,64,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,95,81,235,31,64,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,250,168,1,244,78,0,89,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,111,110,75,0,0,173,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,71,115,0,0,36,245,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,189,0,0,0,103,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,245,14,0,28,247,217,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,209,253,16,5,175,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,154,106,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,239,253,254,229,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,239,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,250,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,251,79,154,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,239,66,0,45,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,131,0,0,65,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,234,229,79,64,197,250,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,216,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,133,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,156,189,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,175,178,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,46,178,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,40,134,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,164,0,114,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,219,51,0,124,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,9,0,119,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,195,3,0,83,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,192,40,0,0,38,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,111,0,15,22,39,39,39,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,180,222,161,219,229,254,254,250,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,77,164,251,254,254,242,187,158,91,91,91,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,255,254,255,255,163,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,254,254,130,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,232,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,195,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,218,206,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,216,214,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,215,245,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,38,149,255,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,199,253,221,253,227,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,197,251,252,124,19,175,252,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,145,253,253,253,199,0,0,0,141,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,206,51,0,0,0,132,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,126,14,0,0,0,8,208,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,97,142,23,0,0,0,0,168,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,38,125,118,17,17,222,253,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,253,253,253,241,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,219,240,224,171,86,218,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,37,25,0,0,34,220,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,250,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,192,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,213,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,122,199,255,215,91,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,197,253,253,253,253,253,182,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,214,253,252,148,71,71,242,253,186,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,245,93,0,0,0,9,173,245,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,124,0,0,0,0,0,0,171,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,247,244,10,0,0,0,0,0,0,103,251,153,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,243,0,0,0,0,0,0,58,235,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,243,0,0,0,0,0,183,234,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,243,0,0,0,0,0,224,253,253,253,249,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,243,34,13,0,0,0,8,198,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,251,233,59,0,0,0,8,199,253,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,253,253,122,29,130,169,240,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,211,253,253,253,253,253,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,156,231,253,233,156,119,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,10,8,0,34,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,85,185,198,197,197,197,86,85,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,194,252,252,253,202,202,252,253,252,243,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,159,76,0,0,0,0,51,114,188,235,253,242,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,28,0,0,0,0,0,0,0,0,28,133,253,234,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,214,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,216,244,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,253,240,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,253,109,0,0,0,0,0,0,0,0,29,85,0,0,0,0,0,0,0,0,0,0,0,0,76,231,252,252,253,234,225,225,226,225,225,225,226,225,234,252,0,0,0,0,0,0,0,0,0,0,0,0,242,253,253,253,226,225,247,253,255,253,253,253,226,225,187,13,0,0,0,0,0,0,0,0,0,0,0,0,47,84,84,84,0,0,66,84,84,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,13,0,0,0,0,0,0,15,191,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,211,0,0,0,0,0,15,219,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,203,252,221,0,0,0,0,0,55,252,252,185,6,0,0,0,0,0,0,0,0,0,0,0,0,0,51,194,252,252,96,0,0,0,0,0,233,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,106,243,252,252,252,22,0,0,0,0,106,253,252,221,25,0,0,0,0,0,0,0,0,0,0,0,7,108,253,255,253,215,74,0,0,0,0,19,233,255,253,122,0,0,0,0,0,0,0,0,0,0,0,30,155,252,252,253,223,98,0,0,0,0,0,207,252,253,244,56,0,0,0,0,0,0,0,0,0,0,17,228,252,252,252,253,92,0,0,0,0,0,83,240,252,247,149,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,253,223,124,17,0,93,114,240,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,13,211,252,252,252,253,252,252,234,230,253,252,252,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,220,255,253,253,253,253,255,253,253,253,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,206,240,252,252,253,252,252,214,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,232,252,253,252,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,205,252,252,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,254,254,217,171,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,254,253,241,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,160,174,247,253,254,253,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,137,251,253,254,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,98,196,244,253,253,253,231,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,156,246,254,255,254,254,244,157,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,254,253,171,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,254,253,199,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,117,131,213,223,253,253,243,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,103,223,253,230,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,226,245,40,0,0,0,0,0,0,0,0,0,0,0,0,7,146,13,0,0,0,0,0,0,0,0,0,0,195,254,135,0,0,0,0,0,0,0,0,0,0,0,0,17,241,49,0,0,0,0,0,0,0,0,0,0,195,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,138,213,0,0,0,0,0,0,0,0,0,31,239,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,31,242,140,0,0,0,0,0,0,0,71,209,254,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,155,110,20,2,8,20,147,241,253,253,219,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,254,253,253,181,205,254,253,253,253,222,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,177,216,253,253,253,254,253,253,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,126,155,230,254,207,88,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,130,253,255,186,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,192,253,253,253,253,213,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,235,253,253,253,253,253,253,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,253,253,221,153,103,215,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,216,33,0,0,24,217,253,220,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,200,253,253,98,0,0,0,0,88,246,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,127,253,253,253,105,0,0,0,0,0,228,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,238,192,236,102,0,0,0,0,186,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,2,175,253,253,144,1,41,68,0,0,0,2,229,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,217,0,0,0,0,0,0,0,142,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,225,40,0,0,0,0,0,0,53,210,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,53,252,253,164,0,0,0,0,0,0,32,240,253,253,215,16,0,0,0,0,0,0,0,0,0,0,0,0,176,253,244,51,0,0,0,0,0,68,239,253,253,246,79,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,129,0,0,0,0,7,72,203,253,253,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,29,247,253,124,0,0,0,2,156,253,253,253,244,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,73,0,19,47,212,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,125,140,244,253,253,253,253,242,108,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,253,253,253,253,253,253,253,205,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,253,253,253,229,132,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,226,253,253,247,125,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,22,173,252,252,216,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,183,252,252,252,199,227,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,176,246,253,252,244,77,7,42,226,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,253,253,254,186,9,0,0,0,86,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,217,151,16,0,0,0,0,85,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,126,56,12,0,0,0,0,0,0,14,236,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,210,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,249,206,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,64,143,169,169,169,64,64,167,252,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,211,253,252,252,252,252,253,252,252,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,218,150,106,97,100,236,255,253,253,253,122,18,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,126,11,0,0,131,232,252,239,132,72,224,252,199,21,0,0,0,0,0,0,0,0,0,0,0,43,252,136,7,18,84,206,251,247,143,17,0,0,126,252,253,166,2,0,0,0,0,0,0,0,0,0,0,43,252,210,169,239,253,252,185,63,0,0,0,0,169,252,253,252,47,0,0,0,0,0,0,0,0,0,0,25,226,252,252,252,174,42,4,0,0,0,0,0,99,235,236,147,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,13,94,133,133,232,255,255,255,192,133,117,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,207,253,253,253,253,253,253,231,252,254,253,253,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,213,96,96,96,96,96,9,92,99,202,253,246,62,0,0,0,0,0,0,0,0,0,0,0,0,0,5,153,78,0,0,0,0,0,0,24,117,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,211,254,253,198,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,120,248,253,251,169,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,199,253,253,253,252,206,130,86,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,184,245,253,253,253,253,255,253,253,253,228,126,65,0,0,0,0,0,0,0,0,0,0,0,0,0,143,246,253,253,164,144,144,87,145,144,160,253,253,253,246,184,10,0,0,0,0,0,0,0,0,0,0,0,157,230,132,40,3,0,0,0,0,0,2,11,99,225,253,253,191,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,221,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,6,0,0,0,0,0,0,0,0,0,115,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,154,237,29,0,0,0,0,0,0,0,0,17,225,253,132,0,0,0,0,0,0,0,0,0,0,0,0,15,208,139,0,0,0,0,0,0,0,0,18,126,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,61,253,48,0,0,0,0,0,0,0,18,182,253,253,187,8,0,0,0,0,0,0,0,0,0,0,0,0,61,253,174,12,0,0,0,0,0,81,217,253,253,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,223,109,98,98,98,172,242,253,253,180,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,181,253,253,253,254,253,253,253,227,52,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,58,132,248,254,253,178,110,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,229,255,223,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,253,253,109,85,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,253,253,154,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,162,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,241,253,185,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,207,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,194,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,202,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,41,61,99,99,99,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,250,252,253,253,253,250,175,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,235,253,253,253,199,199,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,97,15,6,6,54,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,253,88,0,0,0,74,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,133,253,96,0,0,9,239,253,253,132,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,245,208,11,0,99,253,253,217,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,92,96,232,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,210,253,253,253,253,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,178,253,253,177,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,246,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,224,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,242,139,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,76,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,167,15,213,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,251,78,32,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,171,7,19,229,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,74,0,12,218,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,177,6,0,32,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,184,37,0,0,32,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,98,36,117,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,41,197,235,254,241,242,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,150,205,236,254,254,254,254,244,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,241,254,254,254,254,242,198,82,40,91,128,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,235,219,164,164,164,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,64,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,64,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,201,254,238,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,192,254,253,253,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,240,253,254,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,253,253,254,250,213,124,221,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,193,68,0,0,120,240,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,171,0,0,0,47,194,255,238,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,58,35,118,185,235,253,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,193,224,253,253,253,253,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,138,253,253,253,254,253,253,253,237,154,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,173,231,253,253,253,253,254,253,253,185,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,255,254,254,254,254,218,113,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,253,254,253,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,222,175,174,174,247,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,238,155,0,0,0,181,253,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,155,0,0,0,62,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,216,97,9,0,55,209,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,254,220,214,250,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,254,253,253,253,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,186,253,253,253,253,229,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,103,185,215,177,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,47,72,89,47,47,164,230,176,0,0,0,0,0,0,0,0,0,0,13,99,116,57,24,24,24,116,166,228,253,254,253,253,253,254,253,249,207,0,0,0,0,0,0,0,0,151,222,253,253,254,253,253,253,254,253,253,253,254,253,253,253,254,253,177,160,0,0,0,0,0,0,0,0,255,254,254,254,254,254,254,254,254,254,222,184,93,93,191,254,255,224,17,0,0,0,0,0,0,0,0,0,237,253,253,253,228,102,23,23,23,23,13,0,30,114,249,253,224,69,0,0,0,0,0,0,0,0,0,0,29,63,181,253,254,178,5,0,0,0,0,17,203,253,253,244,51,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,254,253,79,0,0,51,168,234,254,253,177,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,152,95,245,254,254,254,140,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,216,253,253,254,253,248,173,56,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,254,223,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,119,222,253,253,228,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,222,254,227,156,240,254,139,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,254,198,0,151,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,228,40,85,234,254,219,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,254,229,178,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,244,253,254,253,253,253,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,230,230,230,187,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,163,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,52,10,72,233,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,123,203,233,252,253,212,253,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,254,253,254,253,255,253,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,253,252,253,252,253,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,193,254,213,234,253,244,162,102,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,50,30,50,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,212,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,253,254,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,172,252,253,252,253,252,223,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,123,203,254,253,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,71,232,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,254,253,254,172,152,112,0,82,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,252,253,252,253,252,203,243,253,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,243,255,253,255,253,254,253,254,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,141,253,252,253,252,253,252,233,151,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,202,253,253,159,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,194,252,253,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,197,252,252,221,173,186,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,252,252,176,25,0,50,160,119,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,252,136,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,252,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,253,253,23,0,0,0,0,0,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,193,8,0,0,0,17,99,253,252,252,252,252,100,17,0,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,51,188,252,253,252,252,252,252,253,188,51,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,184,252,252,161,87,102,252,252,253,252,240,37,0,0,0,0,0,0,0,0,0,24,252,252,202,11,0,95,246,252,200,0,0,7,22,75,201,252,252,150,0,0,0,0,0,0,0,0,0,0,151,253,253,148,0,162,253,253,33,0,0,0,0,0,139,253,253,253,23,0,0,0,0,0,0,0,0,0,38,240,252,252,151,126,252,252,211,22,0,0,0,22,159,252,252,172,8,0,0,0,0,0,0,0,0,0,0,82,240,252,253,252,252,252,252,206,70,70,70,205,253,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,80,202,253,252,252,252,252,253,252,252,252,252,253,172,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,158,252,252,252,253,252,252,252,147,23,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,63,116,67,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,115,149,206,224,254,253,249,178,113,0,0,0,0,0,0,0,0,0,0,0,0,0,22,166,227,254,188,255,254,254,231,180,120,75,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,228,239,145,176,149,67,45,45,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,251,168,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,222,224,110,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,158,240,201,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,228,219,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,21,0,0,0,0,24,167,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,106,5,14,75,106,226,253,147,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,249,254,254,254,255,198,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,119,119,119,89,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,219,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,225,253,193,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,227,38,0,0,0,0,0,51,209,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,81,0,0,0,0,0,62,247,244,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,243,244,42,0,0,0,0,17,205,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,167,0,0,0,0,0,70,253,227,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,242,85,36,57,57,57,193,251,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,227,253,253,239,253,253,254,253,251,153,105,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,141,225,232,159,193,254,253,253,253,253,211,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,251,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,236,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,235,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,233,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,206,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,251,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,247,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,225,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,178,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,248,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,69,148,166,174,236,148,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,164,221,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,252,252,252,232,231,231,205,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,212,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,252,136,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,252,252,252,152,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,252,252,252,253,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,253,250,115,0,124,243,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,252,117,0,0,0,190,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,91,2,0,0,0,190,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,15,11,92,171,253,201,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,224,211,252,252,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,252,252,226,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,217,254,108,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,214,183,219,83,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,240,248,197,104,208,197,169,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,177,226,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,67,187,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,206,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,234,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,188,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,190,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,221,244,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,250,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,245,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,201,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,250,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,194,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,131,205,255,255,227,178,116,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,191,254,235,189,125,129,200,231,236,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,150,15,0,0,0,0,13,153,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,249,188,0,0,0,0,0,0,0,0,62,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,250,46,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,246,0,0,0,0,0,0,0,0,0,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,246,0,0,0,0,0,0,0,0,0,89,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,250,55,0,0,0,0,0,0,0,94,245,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,227,70,12,69,107,163,163,163,251,213,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,254,254,254,254,254,221,219,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,161,254,254,231,218,218,184,56,5,3,100,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,98,232,253,172,69,7,5,5,0,0,0,0,2,126,220,35,0,0,0,0,0,0,0,0,0,0,0,50,215,244,115,0,0,0,0,0,0,0,0,0,0,61,253,111,0,0,0,0,0,0,0,0,0,0,0,199,254,88,0,0,0,0,0,0,0,0,0,0,0,20,252,128,0,0,0,0,0,0,0,0,0,0,81,253,144,2,0,0,0,0,0,0,0,0,0,0,0,73,254,128,0,0,0,0,0,0,0,0,0,0,129,253,59,0,0,0,0,0,0,0,0,0,0,0,0,86,254,93,0,0,0,0,0,0,0,0,0,0,196,205,0,0,0,0,0,0,0,0,0,0,0,0,0,192,219,22,0,0,0,0,0,0,0,0,0,0,205,203,0,0,0,0,0,0,0,0,0,0,0,8,127,253,119,0,0,0,0,0,0,0,0,0,0,0,190,252,36,0,0,0,0,0,0,0,0,0,64,203,254,144,1,0,0,0,0,0,0,0,0,0,0,0,107,254,203,73,0,0,0,0,0,0,51,146,250,248,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,184,255,229,89,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,177,222,77,45,222,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,153,8,0,0,124,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,34,0,0,0,122,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,107,0,0,0,2,149,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,235,77,0,0,0,52,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,77,0,0,0,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,77,0,0,2,30,78,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,112,111,118,220,252,167,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,115,192,254,254,236,156,95,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,168,252,245,224,250,160,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,216,230,105,31,0,178,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,200,20,0,0,0,144,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,185,11,0,0,0,0,128,248,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,45,0,0,0,0,0,46,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,88,0,0,0,0,0,0,237,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,124,225,61,8,0,0,0,0,201,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,251,175,115,115,156,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,48,64,120,201,180,180,78,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,175,254,254,255,254,174,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,178,253,253,253,222,225,253,237,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,241,82,0,6,127,232,238,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,219,253,206,33,0,0,0,0,142,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,253,52,0,0,0,0,0,142,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,52,0,0,0,2,56,209,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,245,221,121,112,136,178,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,191,247,253,254,253,244,232,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,31,106,31,26,142,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,0,0,0,0,0,0,0,142,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,243,158,0,0,0,0,0,0,69,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,190,254,149,12,0,0,0,0,69,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,181,253,198,67,0,0,0,142,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,77,247,253,147,42,0,142,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,185,214,249,222,239,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,198,193,228,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,222,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,191,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,252,252,252,48,0,0,0,0,49,85,108,176,85,16,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,166,217,217,217,218,237,252,252,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,252,252,252,252,253,252,252,252,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,252,252,252,252,253,252,252,252,252,252,248,34,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,255,253,253,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,252,252,242,113,109,108,108,188,245,252,252,155,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,252,175,55,0,0,0,0,7,191,252,252,155,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,252,36,0,0,0,0,0,129,252,252,252,155,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,252,64,0,0,0,0,9,189,252,252,252,127,0,0,0,0,0,0,0,0,0,0,0,6,144,252,252,252,252,229,141,73,73,85,201,252,252,252,228,25,0,0,0,0,0,0,0,0,0,0,0,0,25,224,252,252,252,252,252,252,253,252,252,252,252,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,225,252,252,252,252,252,253,252,252,252,229,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,227,252,252,252,252,253,252,252,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,52,177,252,252,253,241,131,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,250,246,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,108,247,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,247,253,114,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,211,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,242,251,172,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,133,133,89,0,0,0,0,19,151,254,254,162,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,157,0,0,0,19,207,253,253,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,41,222,253,225,41,0,0,93,209,253,253,236,253,253,241,31,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,0,0,97,250,254,249,129,100,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,0,99,247,253,246,71,136,230,253,236,71,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,236,43,66,245,253,253,246,148,253,253,236,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,213,20,183,253,253,253,254,253,253,214,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,168,247,253,253,253,254,253,118,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,253,253,253,249,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,219,253,253,253,253,195,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,137,189,221,254,215,163,163,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,113,243,253,238,198,198,198,218,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,116,253,231,127,26,0,0,0,13,189,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,6,73,253,231,50,0,0,0,0,0,7,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,169,137,253,62,0,0,0,0,0,0,155,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,255,254,95,0,0,0,0,0,103,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,83,234,253,231,70,0,0,0,106,249,214,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,145,248,250,185,27,86,235,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,223,253,238,249,231,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,255,254,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,243,253,140,204,253,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,164,250,120,0,8,209,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,196,0,0,0,40,230,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,80,0,0,0,0,199,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,217,0,0,0,0,0,200,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,250,70,0,0,0,73,249,253,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,224,11,11,89,235,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,253,214,215,253,237,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,201,253,254,201,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,254,253,254,253,193,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,253,252,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,254,253,224,122,102,183,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,253,171,20,0,0,0,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,253,123,0,0,0,0,0,152,253,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,253,130,0,0,0,0,0,0,112,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,82,0,0,0,0,0,0,0,51,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,102,61,21,203,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,254,253,254,253,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,212,253,252,253,252,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,123,123,214,253,254,253,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,212,203,243,253,252,131,172,253,252,223,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,254,253,224,81,0,0,163,243,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,252,253,171,20,0,0,0,0,162,253,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,82,123,203,41,0,0,0,0,0,0,0,234,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,142,250,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,170,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,225,254,254,227,70,0,0,0,0,0,0,0,0,0,0,0,0,0,89,7,0,0,0,0,0,0,7,169,254,254,223,11,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,154,0,0,0,0,0,8,168,254,254,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,254,197,0,0,0,0,0,50,254,254,244,39,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,254,254,133,0,0,0,0,19,220,254,249,101,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,254,254,139,4,0,0,9,48,163,254,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,85,240,254,254,169,4,44,147,216,222,254,254,254,254,250,171,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,230,128,175,235,254,254,254,254,254,249,215,215,203,11,0,0,0,0,0,0,0,0,0,0,0,255,254,254,254,254,254,254,254,254,254,254,249,134,0,0,4,13,0,0,0,0,0,0,0,0,0,0,0,146,254,254,245,223,124,51,51,158,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,56,56,41,0,0,0,6,175,254,223,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,250,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,159,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,163,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,195,254,237,153,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,189,249,253,254,253,253,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,203,253,251,196,80,96,224,253,199,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,236,113,0,0,0,49,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,185,42,0,0,0,0,9,210,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,93,0,0,0,0,0,0,184,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,46,17,0,0,0,0,0,19,240,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,253,140,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,116,174,207,199,116,91,166,253,244,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,176,240,253,254,253,253,253,254,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,203,93,93,127,185,254,254,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,194,73,6,0,0,30,180,254,210,115,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,247,21,0,0,0,13,161,253,205,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,184,0,0,0,26,180,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,93,0,0,51,221,254,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,189,47,130,247,254,177,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,253,253,253,146,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,254,253,244,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,125,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,207,11,0,0,0,0,0,0,0,0,0,158,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,205,0,0,0,0,0,0,0,0,0,0,162,185,0,0,0,0,0,0,0,0,0,0,0,0,0,72,249,182,0,0,0,0,0,0,0,0,0,0,102,241,29,0,0,0,0,0,0,0,0,0,0,0,1,159,254,125,0,3,5,10,85,85,85,39,2,0,23,254,50,0,0,0,0,0,0,0,0,0,0,0,44,254,254,215,178,224,254,254,254,254,254,254,206,70,21,254,128,0,0,0,0,0,0,0,0,0,0,0,103,254,254,254,254,254,254,254,254,254,254,254,254,252,163,235,189,0,0,0,0,0,0,0,0,0,0,0,186,254,254,254,254,254,254,225,213,187,213,236,254,254,254,254,209,0,0,0,0,0,0,0,0,0,0,0,255,254,254,254,224,129,40,12,0,0,0,23,65,176,254,254,233,19,0,0,0,0,0,0,0,0,0,0,213,254,254,143,13,0,0,0,0,0,0,0,0,1,34,119,242,142,6,0,0,0,0,0,0,0,0,0,43,254,145,3,0,0,0,0,0,0,0,0,0,0,0,0,156,254,24,0,0,0,0,0,0,0,0,0,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,171,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,177,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,138,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,249,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,190,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,221,252,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,235,14,0,0,80,106,106,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,253,65,0,80,210,253,253,253,253,219,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,224,14,84,242,253,252,174,168,239,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,253,159,82,246,252,223,47,2,0,211,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,243,69,237,252,226,35,0,0,114,239,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,128,252,226,42,0,0,62,239,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,212,191,253,84,0,8,78,245,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,155,245,56,36,157,252,252,169,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,232,133,145,197,241,253,245,37,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,198,253,252,252,252,252,199,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,252,199,147,59,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,203,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,177,253,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,253,247,120,0,0,0,0,0,0,32,41,41,15,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,199,0,0,0,0,0,0,9,206,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,5,216,253,250,75,0,0,0,0,0,5,160,253,253,253,242,62,0,0,0,0,0,0,0,0,0,0,0,164,253,253,128,0,0,0,0,0,0,94,253,253,225,211,253,107,0,0,0,0,0,0,0,0,0,0,52,241,254,187,0,0,0,0,0,0,52,241,254,254,67,175,255,170,0,0,0,0,0,0,0,0,0,0,108,253,253,186,0,0,0,0,0,0,108,253,253,189,55,249,253,113,0,0,0,0,0,0,0,0,0,0,228,253,253,136,0,0,0,0,0,0,157,253,253,66,54,253,243,67,0,0,0,0,0,0,0,0,0,103,251,253,228,36,0,0,0,0,0,0,241,253,253,117,188,253,184,0,0,0,0,0,0,0,0,0,0,121,253,253,67,0,0,0,0,0,0,0,241,253,253,253,253,186,20,0,0,0,0,0,0,0,0,0,0,121,253,253,39,0,0,0,0,0,0,0,241,253,253,253,213,21,0,0,0,0,0,0,0,0,0,0,0,102,251,253,144,30,0,0,26,48,104,175,249,253,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,229,161,161,219,253,253,255,242,226,226,121,25,0,0,0,0,0,0,0,0,0,0,0,0,0,102,245,253,253,253,253,253,253,246,177,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,120,120,147,161,120,120,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,18,101,136,180,255,249,123,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,94,163,253,253,253,253,253,253,253,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,206,253,253,253,241,200,200,93,142,206,253,232,61,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,252,215,163,50,0,0,0,0,8,141,234,194,10,0,0,0,0,0,0,0,0,0,0,0,140,242,253,216,106,22,0,0,0,0,0,0,0,0,142,253,112,6,0,0,0,0,0,0,0,0,0,82,244,253,166,30,0,0,0,0,0,0,0,0,0,0,116,253,253,17,0,0,0,0,0,0,0,0,18,249,253,216,24,0,0,0,0,0,0,0,0,0,18,146,250,253,204,9,0,0,0,0,0,0,0,0,18,253,223,29,0,0,0,0,0,0,0,0,11,85,207,253,253,253,152,0,0,0,0,0,0,0,0,0,18,253,209,30,0,0,0,0,0,30,78,160,201,253,253,253,234,253,152,0,0,0,0,0,0,0,0,0,6,156,253,232,177,177,177,177,177,231,253,253,253,253,233,76,41,217,70,0,0,0,0,0,0,0,0,0,0,9,190,253,253,253,253,253,253,253,230,176,69,114,52,0,0,201,35,0,0,0,0,0,0,0,0,0,0,0,28,74,104,158,203,158,158,76,29,0,0,0,0,0,25,221,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,66,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,211,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,234,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,160,253,191,138,138,97,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,252,252,253,252,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,227,215,173,69,69,111,246,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,160,21,0,0,0,0,230,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,160,0,0,0,0,0,178,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,161,0,0,0,0,0,231,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,160,0,0,0,0,0,230,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,160,0,0,0,19,112,246,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,194,9,0,17,136,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,75,11,193,252,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,202,249,199,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,228,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,227,236,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,181,231,48,155,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,231,42,0,93,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,42,0,0,166,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,168,0,13,153,240,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,232,208,215,252,218,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,242,253,252,136,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,221,255,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,211,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,216,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,244,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,127,253,253,249,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,191,0,0,0,0,0,0,0,26,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,253,247,75,0,0,0,17,99,112,170,76,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,221,0,0,0,74,206,253,253,253,251,140,0,0,0,0,0,0,0,0,0,0,0,0,0,13,210,253,253,134,0,39,152,241,253,253,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,215,22,57,229,253,253,253,253,253,253,253,250,89,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,181,48,253,253,253,223,74,72,72,202,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,246,240,253,253,164,16,0,0,3,188,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,237,131,2,52,175,253,253,235,26,0,0,0,0,0,0,0,0,0,0,0,0,6,192,253,253,253,253,253,253,253,219,245,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,217,253,253,253,253,253,253,253,253,253,212,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,119,156,253,253,253,253,194,149,52,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,255,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,217,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,226,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,237,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,230,209,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,247,224,33,0,0,0,43,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,132,254,61,0,0,12,176,232,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,43,0,15,154,254,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,213,11,14,192,235,158,247,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,130,190,254,189,187,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,119,251,254,254,254,254,254,170,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,232,137,54,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,221,152,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,234,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,128,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,64,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,64,0,0,0,0,128,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,103,248,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,109,176,138,79,79,79,131,206,254,254,229,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,254,254,254,254,254,254,213,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,254,254,254,254,254,216,133,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,225,254,192,76,99,23,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,225,254,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,220,254,254,248,182,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,249,254,254,254,254,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,254,219,158,214,254,254,172,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,136,234,158,15,0,12,192,254,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,79,79,18,0,0,0,137,254,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,58,0,0,0,137,254,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,245,254,254,58,0,0,0,137,254,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,208,254,254,217,23,0,19,240,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,248,254,254,170,26,87,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,254,254,218,230,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,154,255,254,254,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,239,254,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,192,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,163,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,198,0,0,0,20,213,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,125,0,0,0,23,232,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,104,0,0,0,0,199,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,51,0,0,0,0,199,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,216,5,0,0,0,0,199,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,169,0,0,0,0,0,199,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,169,0,0,0,0,0,199,157,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,232,242,218,218,218,158,137,246,144,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,160,160,160,160,185,255,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,209,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,230,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,223,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,177,164,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,118,0,0,0,0,71,242,254,245,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,110,254,249,60,0,0,5,246,254,159,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,148,5,0,9,159,254,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,241,254,150,4,0,0,97,254,247,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,188,1,0,0,27,240,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,238,218,26,0,0,0,151,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,130,0,0,0,70,254,249,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,181,5,0,0,14,193,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,127,0,0,0,122,254,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,53,0,11,57,246,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,169,174,216,254,254,220,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,191,250,250,220,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,215,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,239,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,222,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,231,163,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,255,253,253,170,110,109,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,98,190,253,231,231,252,253,252,227,217,73,52,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,242,252,252,253,190,62,71,72,113,221,252,253,231,72,0,0,0,0,0,0,0,0,0,0,0,1,84,252,252,231,190,253,252,71,0,0,0,16,108,253,252,215,1,0,0,0,0,0,0,0,0,0,32,211,252,205,20,0,0,253,220,41,0,0,0,0,0,62,237,252,169,0,0,0,0,0,0,0,0,0,115,252,210,20,0,0,0,35,25,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,217,226,31,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,217,215,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,0,0,0,0,0,0,0,0,171,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,191,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,241,77,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,21,212,252,215,0,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,255,253,133,0,0,0,0,0,0,0,0,0,0,0,99,253,255,222,41,0,0,0,0,0,0,0,0,0,128,252,226,31,0,0,0,0,0,0,0,0,0,105,242,252,253,55,0,0,0,0,0,0,0,0,0,0,94,247,252,108,0,0,0,0,0,0,0,21,182,242,252,231,154,10,0,0,0,0,0,0,0,0,0,0,0,134,252,190,0,0,0,0,0,0,105,206,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,128,94,63,110,150,253,253,255,222,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,138,221,252,252,247,237,253,252,252,252,35,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,133,215,221,252,237,215,195,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,108,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,181,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,236,8,0,0,0,0,0,0,0,0,16,19,3,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,105,0,0,0,0,0,0,0,44,233,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,120,0,0,0,0,0,0,0,75,253,253,171,4,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,232,15,0,0,0,0,0,0,75,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,99,0,0,0,0,0,0,75,253,253,253,220,16,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,99,0,0,0,0,0,0,24,220,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,2,170,253,253,193,48,0,0,0,0,0,0,205,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,243,186,162,63,63,63,99,240,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,39,190,253,253,253,253,253,253,253,253,253,253,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,224,253,253,253,253,253,253,253,253,253,253,253,179,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,128,186,253,253,253,253,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,67,166,166,166,166,166,124,181,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,182,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,226,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,187,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,231,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,113,128,253,192,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,226,249,252,252,252,253,181,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,73,227,253,252,252,252,252,253,252,227,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,203,252,252,253,252,252,252,252,253,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,240,252,252,252,253,252,252,252,173,253,204,25,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,255,253,253,253,253,255,253,165,47,0,63,140,31,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,253,252,252,252,252,215,42,6,0,0,0,76,85,76,0,0,0,0,0,0,0,0,0,0,51,178,252,252,253,252,252,214,195,31,0,0,38,135,198,246,252,239,63,0,0,0,0,0,0,0,0,76,243,252,252,252,253,252,120,28,0,0,26,138,224,252,253,252,252,242,91,0,0,0,0,0,0,0,0,191,252,252,252,252,253,252,165,126,0,141,240,252,252,252,253,252,252,252,173,0,0,0,0,0,0,0,0,192,253,253,253,253,255,253,253,253,174,255,253,253,253,253,255,253,253,253,112,0,0,0,0,0,0,0,0,113,252,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,179,12,0,0,0,0,0,0,0,0,25,103,239,252,252,253,252,252,252,252,196,70,209,252,252,253,252,239,65,0,0,0,0,0,0,0,0,0,0,0,97,223,223,225,223,192,84,84,0,151,234,252,252,253,204,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,252,253,204,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,252,252,252,204,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,252,253,252,252,230,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,187,252,252,253,252,198,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,112,112,112,112,112,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,255,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,195,254,78,0,0,0,0,0,6,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,191,2,0,0,0,0,4,138,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,242,65,0,0,0,0,0,37,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,236,254,109,0,0,0,0,0,17,244,251,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,200,254,131,4,0,0,0,0,13,183,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,227,254,169,12,0,0,0,0,25,161,254,204,8,0,0,0,0,0,0,0,0,0,0,0,0,0,15,201,254,254,152,0,0,0,0,0,101,254,227,32,0,0,0,0,0,0,0,0,0,0,0,0,0,14,221,254,254,254,182,7,0,0,7,127,246,235,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,243,111,203,254,130,36,7,102,254,240,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,230,73,0,57,254,254,246,218,254,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,219,27,0,0,11,140,226,254,254,254,176,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,223,254,157,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,245,198,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,246,243,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,214,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,156,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,238,234,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,186,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,38,83,146,223,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,76,164,191,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,222,252,253,253,253,253,253,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,253,253,249,210,121,102,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,224,253,212,172,130,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,121,17,27,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,231,247,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,231,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,211,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,74,100,179,253,253,253,178,7,72,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,16,31,253,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,214,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,134,209,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,135,230,225,170,244,250,253,253,253,253,243,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,253,253,253,253,253,239,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,253,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,204,253,253,253,253,253,253,253,238,183,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,131,145,180,253,253,253,200,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,191,191,255,253,228,216,253,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,195,167,168,42,21,18,27,206,228,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,65,0,0,0,0,0,0,25,231,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,228,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,113,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,86,85,194,243,252,152,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,252,252,252,229,150,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,225,223,145,223,223,225,223,227,153,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,205,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,27,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,177,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,100,0,0,0,0,0,215,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,142,57,6,45,150,197,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,177,234,252,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,112,158,252,157,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,102,169,169,169,241,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,159,245,254,254,254,215,134,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,218,254,212,132,77,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,87,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,237,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,121,4,31,72,138,94,53,53,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,254,223,240,254,254,254,254,254,227,181,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,243,112,87,49,39,112,125,166,246,229,94,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,96,67,0,0,0,0,0,0,0,74,214,254,187,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,92,234,198,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,246,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,249,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,96,13,0,0,0,0,0,0,0,49,237,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,235,20,0,0,0,0,0,2,58,214,245,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,67,9,5,8,9,49,170,254,242,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,244,255,254,215,242,255,254,244,128,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,128,168,197,168,168,99,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,59,104,156,156,156,156,156,186,238,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,229,254,253,253,253,253,249,233,203,83,9,0,0,0,0,0,0,0,0,0,0,0,0,0,49,161,138,247,253,254,216,174,174,100,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,246,253,195,117,117,19,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,245,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,220,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,253,169,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,130,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,223,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,254,254,172,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,192,253,254,167,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,24,0,0,0,0,0,42,182,254,253,169,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,224,36,0,0,0,0,0,0,8,186,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,135,0,0,0,0,0,0,0,0,59,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,136,0,0,0,0,0,0,0,0,82,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,227,44,0,0,0,0,0,4,58,239,253,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,196,229,124,18,0,0,55,142,253,254,216,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,253,238,235,234,247,253,253,192,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,73,155,254,253,222,140,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,76,76,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,194,240,254,254,243,242,236,236,236,229,141,86,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,189,57,210,236,242,235,235,245,254,254,254,248,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,42,154,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,57,36,71,151,151,203,249,254,241,186,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,217,221,254,241,254,254,254,254,254,222,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,254,254,254,254,254,254,254,194,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,95,136,235,254,255,149,0,0,0,0,0,0,0,0,98,216,188,55,66,0,0,0,0,0,0,0,0,0,0,0,32,177,254,254,0,0,0,0,0,0,0,0,254,203,112,36,81,0,0,0,0,0,0,0,0,0,6,94,216,254,254,215,0,0,0,0,0,0,0,0,254,241,97,25,0,0,0,0,0,0,0,82,169,169,216,254,254,254,245,78,0,0,0,0,0,0,0,0,219,254,254,242,236,236,204,232,225,141,166,252,254,254,254,208,113,57,16,0,0,0,0,0,0,0,0,0,13,144,235,235,245,254,254,254,244,235,236,186,140,140,53,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,75,75,75,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,58,143,244,253,253,253,255,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,216,252,252,252,252,252,252,253,252,146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,245,252,252,252,205,134,44,44,119,252,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,220,231,134,10,6,0,0,0,2,131,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,4,0,0,0,0,0,0,0,176,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,244,252,248,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,45,45,64,154,240,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,230,252,252,252,252,252,253,252,227,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,251,252,252,252,252,252,252,253,252,252,249,148,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,233,138,111,111,111,201,252,253,176,18,0,0,0,0,0,0,0,0,0,0,0,0,0,74,186,186,138,86,30,0,0,0,0,0,83,229,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,231,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,247,62,0,0,0,0,0,0,0,0,0,0,0,0,0,15,165,36,0,0,0,0,0,0,0,0,0,89,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,55,0,0,0,0,0,0,0,0,0,127,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,236,78,10,0,0,7,12,12,118,193,248,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,252,252,235,154,154,210,252,252,252,252,237,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,154,252,252,252,252,252,253,252,252,252,202,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,119,195,252,252,252,239,171,161,132,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,115,196,254,254,254,245,124,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,50,105,203,253,253,253,245,243,252,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,215,187,89,14,0,96,253,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,200,40,74,14,0,0,0,0,73,253,223,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,202,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,170,253,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,212,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,40,123,243,253,227,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,248,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,202,204,253,253,184,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,237,253,220,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,234,254,192,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,234,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,70,160,130,49,0,0,0,0,0,0,125,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,32,213,253,219,57,2,0,0,0,0,0,0,37,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,135,247,106,7,0,0,0,0,0,0,0,0,96,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,164,244,67,4,0,0,0,0,0,0,3,129,244,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,196,118,76,0,0,2,91,178,253,254,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,3,146,253,253,253,252,245,244,245,253,253,253,155,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,54,127,169,253,253,175,191,153,88,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,170,198,255,255,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,255,255,255,255,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,226,198,226,198,170,170,86,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,198,170,170,141,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,255,255,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,255,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,226,57,0,0,0,0,29,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,170,0,0,0,0,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,29,57,0,0,0,0,0,0,0,0,0,57,141,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,29,170,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,226,141,86,86,170,170,255,255,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,255,255,255,255,255,255,255,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,255,255,255,255,255,255,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,86,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,114,167,255,191,154,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,243,254,254,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,204,167,51,26,135,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,201,246,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,156,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,231,198,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,211,224,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,114,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,197,254,254,253,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,250,254,229,171,254,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,58,13,63,254,179,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,230,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,206,254,152,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,254,180,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,161,80,0,0,30,183,254,213,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,219,254,200,117,141,216,254,208,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,251,254,254,254,254,210,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,199,224,227,113,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,139,167,205,253,253,253,253,255,253,253,196,120,34,18,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,252,252,252,252,253,252,252,252,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,252,252,252,252,197,179,252,252,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,52,121,121,34,10,10,10,10,5,3,10,10,63,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,203,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,195,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,252,110,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,194,13,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,231,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,0,0,0,0,0,0,39,252,236,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,229,29,0,0,0,0,0,42,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,245,188,22,0,0,0,0,30,244,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,254,42,0,0,0,0,42,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,42,0,0,0,0,76,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,42,0,0,0,4,173,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,222,3,0,0,3,163,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,220,0,2,62,207,254,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,229,46,120,254,254,254,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,248,254,251,254,254,231,135,215,254,242,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,254,237,80,3,204,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,90,173,160,48,0,16,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,254,248,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,224,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,229,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,254,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,159,253,254,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,128,56,204,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,254,128,5,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,242,221,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,184,9,0,0,0,0,0,0,0,12,90,190,67,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,32,0,0,0,0,0,0,70,206,254,254,250,86,0,0,0,0,0,0,0,0,0,0,0,0,243,254,254,32,0,0,0,0,0,137,235,254,216,232,254,111,0,0,0,0,0,0,0,0,0,0,0,0,243,254,254,32,0,0,0,0,70,235,254,219,72,63,254,137,0,0,0,0,0,0,0,0,0,0,0,0,219,254,254,32,0,0,0,12,202,254,222,26,0,27,254,241,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,32,0,0,0,66,254,254,121,0,0,27,254,241,0,0,0,0,0,0,0,0,0,0,0,0,40,243,254,128,5,0,0,66,254,227,38,0,0,44,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,52,0,0,66,254,222,30,0,4,167,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,254,220,43,4,66,254,233,128,20,118,255,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,237,254,254,166,173,254,254,254,254,254,240,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,230,254,254,254,254,254,254,254,250,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,231,254,254,254,254,254,166,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,231,138,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,186,252,252,0,0,0,0,0,112,196,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,252,252,0,0,0,0,38,230,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,204,252,252,252,148,0,0,0,10,155,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,35,198,252,252,252,88,4,0,0,0,78,252,252,252,70,0,0,0,0,0,0,0,0,0,0,0,0,11,164,252,252,252,143,6,0,0,0,11,193,252,252,187,9,0,0,0,0,0,0,0,0,0,0,0,0,77,252,252,252,183,7,0,0,0,0,134,252,252,228,54,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,190,24,0,0,0,5,109,239,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,245,229,229,229,229,231,252,252,252,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,212,252,252,252,252,252,252,253,252,252,229,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,250,253,253,253,253,255,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,148,228,119,246,253,252,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,243,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,253,236,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,252,244,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,252,206,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,235,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,232,254,254,254,228,125,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,253,253,253,253,253,253,229,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,236,253,253,164,142,142,165,253,253,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,180,4,0,0,4,110,149,149,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,45,0,0,22,92,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,45,25,119,224,253,227,195,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,149,221,253,253,253,253,253,208,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,228,253,253,253,253,199,181,194,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,235,154,15,0,11,88,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,65,65,46,0,0,0,0,40,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,5,0,0,0,114,224,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,238,128,10,54,150,224,253,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,197,253,253,253,251,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,253,253,253,252,220,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,149,123,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,165,231,254,4,0,0,0,0,0,0,0,0,39,118,165,108,0,0,0,0,0,0,0,0,0,16,128,247,254,254,254,142,0,0,0,0,0,0,0,86,235,254,254,164,0,0,0,0,0,0,0,0,0,112,254,254,254,254,254,182,0,0,0,0,0,0,127,242,254,254,254,147,0,0,0,0,0,0,0,0,65,238,254,254,254,240,156,30,0,0,0,0,1,155,252,254,254,254,234,39,0,0,0,0,0,0,0,0,116,254,254,250,184,33,0,0,0,0,0,2,121,254,254,254,254,195,54,0,0,0,0,0,0,0,0,0,165,254,254,183,0,0,0,0,0,0,2,121,254,254,254,254,155,13,0,0,0,0,0,0,0,0,0,0,226,254,254,68,0,0,0,0,0,0,123,254,254,254,254,187,11,0,0,0,0,0,0,0,0,0,0,0,255,254,205,1,0,0,0,0,0,54,238,254,254,254,186,10,0,0,0,0,0,0,0,0,0,0,0,0,171,254,233,96,0,0,0,0,14,224,254,254,254,186,10,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,249,223,223,223,223,230,254,254,254,188,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,241,254,254,254,254,254,254,254,254,254,234,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,195,251,254,254,254,254,254,254,251,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,71,79,254,254,254,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,179,254,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,254,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,254,254,238,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,246,254,250,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,240,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,91,174,246,254,254,254,202,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,183,254,246,177,59,56,56,216,175,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,235,254,131,16,0,0,0,0,132,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,235,196,50,2,0,0,0,0,0,5,140,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,244,104,0,0,0,0,0,0,0,0,132,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,188,0,0,0,0,0,0,0,0,79,218,250,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,232,113,85,151,144,38,0,7,127,251,254,141,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,247,254,254,254,241,161,207,254,166,180,247,243,217,210,57,1,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,254,162,149,66,0,0,51,94,159,166,254,191,63,0,0,0,0,0,0,0,0,0,0,132,254,235,84,0,0,0,0,0,0,0,0,0,0,8,127,252,255,90,0,0,0,0,0,0,0,0,0,146,238,82,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,208,0,0,0,0,0,0,0,0,56,248,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,176,0,0,0,0,0,0,0,0,160,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,245,46,0,0,0,0,0,0,0,0,178,254,63,0,0,0,0,0,0,0,0,0,0,0,0,46,208,253,155,0,0,0,0,0,0,0,0,0,212,254,63,0,0,0,0,0,0,0,0,0,0,13,125,245,247,178,21,0,0,0,0,0,0,0,0,0,160,254,220,60,0,0,0,0,0,0,0,45,124,229,254,177,50,0,0,0,0,0,0,0,0,0,0,0,6,93,199,251,228,151,151,151,151,221,246,220,218,134,86,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,65,183,225,225,225,225,155,131,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,105,158,211,254,254,255,254,229,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,192,227,254,254,254,252,225,240,254,254,249,102,0,0,0,0,0,0,0,0,0,0,0,0,0,32,184,242,254,254,254,191,162,84,0,36,67,152,254,194,0,0,0,0,0,0,0,0,0,0,0,0,95,224,254,254,213,124,4,2,0,0,0,0,23,146,254,157,0,0,0,0,0,0,0,0,0,0,0,104,248,254,219,91,12,0,0,0,0,0,0,13,151,254,238,47,0,0,0,0,0,0,0,0,0,0,99,252,254,158,30,0,0,0,0,0,0,0,25,175,254,254,119,0,0,0,0,0,0,0,0,0,0,48,251,254,219,30,0,0,0,0,0,0,0,26,215,254,254,168,1,0,0,0,0,0,0,0,0,0,53,232,254,220,37,0,0,0,0,0,0,0,35,209,254,254,198,16,0,0,0,0,0,0,0,0,0,0,129,254,254,33,0,0,0,0,0,0,5,111,248,254,254,241,39,0,0,0,0,0,0,0,0,0,0,0,213,254,149,1,0,0,0,0,34,103,187,254,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,254,254,78,9,15,15,15,138,239,240,161,78,239,254,249,40,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,223,254,254,254,211,81,5,0,82,248,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,36,126,210,210,165,115,59,10,0,0,8,217,254,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,220,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,251,253,154,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,216,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,129,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,204,194,174,242,255,255,146,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,252,232,139,68,68,89,173,246,242,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,239,17,0,0,0,0,0,66,183,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,61,0,0,0,0,0,0,0,102,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,230,194,4,0,0,0,0,0,0,0,102,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,52,0,0,0,0,0,0,0,0,150,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,20,0,0,0,0,0,0,0,64,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,20,0,0,0,0,0,10,91,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,64,0,0,0,5,97,218,254,195,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,239,97,41,76,194,254,254,164,227,227,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,210,254,254,254,245,142,61,8,17,199,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,149,254,217,66,0,0,0,0,18,199,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,244,30,0,0,0,0,0,0,114,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,78,0,0,0,0,0,0,0,116,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,236,243,0,0,0,0,0,0,0,9,215,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,133,0,0,0,0,0,0,0,93,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,23,0,0,0,0,0,0,47,222,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,8,0,0,0,0,0,42,202,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,8,0,0,0,0,40,202,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,8,0,0,0,111,219,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,91,119,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,110,146,224,228,234,151,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,169,169,218,247,240,191,131,70,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,235,137,137,82,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,178,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,201,161,4,0,5,64,85,131,162,161,206,187,127,43,3,0,0,0,0,0,0,0,0,0,0,0,10,202,184,14,78,184,228,230,222,152,116,69,69,69,104,187,205,52,6,0,0,0,0,0,0,0,0,0,127,199,42,199,245,157,74,13,0,0,0,0,0,0,0,0,46,185,136,5,0,0,0,0,0,0,0,0,247,181,228,173,61,0,0,0,0,0,0,0,0,0,0,0,0,13,225,117,0,0,0,0,0,0,0,0,255,235,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,183,0,0,0,0,0,0,0,0,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,201,0,0,0,0,0,0,0,0,233,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,234,55,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,93,245,72,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,109,225,203,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,83,203,225,85,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,93,201,225,113,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,205,225,109,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,46,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,152,152,82,0,0,0,0,0,51,193,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,252,203,0,0,0,0,41,233,252,233,151,0,0,0,0,0,0,0,0,0,0,0,0,11,92,254,253,254,233,82,0,0,0,92,233,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,212,91,30,0,0,0,82,233,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,50,0,0,0,0,92,253,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,213,10,0,0,0,0,253,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,234,30,0,0,11,173,254,253,224,102,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,253,212,142,20,92,252,253,252,162,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,254,253,254,253,254,253,254,253,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,151,232,253,252,253,252,253,252,253,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,253,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,255,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,252,192,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,253,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,186,223,35,0,0,0,0,47,156,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,239,253,253,179,35,0,0,44,228,253,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,253,253,223,79,161,229,253,253,235,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,253,253,253,254,253,253,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,253,118,111,230,254,253,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,249,60,0,0,14,224,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,188,0,0,0,59,253,253,212,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,106,0,0,0,156,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,19,3,0,0,53,254,253,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,171,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,244,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,211,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,155,179,165,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,250,244,253,225,151,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,53,0,82,233,254,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,216,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,166,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,6,2,0,0,0,0,0,0,180,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,208,254,254,182,27,0,0,0,0,16,227,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,229,139,155,251,212,68,0,0,0,195,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,46,197,204,8,0,0,141,253,218,54,0,75,245,254,53,0,0,0,0,0,0,0,0,0,0,0,0,1,174,235,52,0,0,0,0,147,250,224,131,245,252,88,3,0,0,0,0,0,0,0,0,0,0,0,0,42,254,134,0,0,0,0,0,0,134,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,148,0,0,0,0,0,21,165,254,254,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,152,249,161,45,0,15,128,228,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,146,254,250,245,247,254,246,168,70,214,224,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,84,166,254,160,78,44,0,0,31,154,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,129,149,40,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,65,156,236,254,254,254,213,102,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,66,230,254,243,217,217,217,250,255,254,109,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,254,254,221,88,0,0,0,77,156,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,51,227,254,254,127,20,0,0,0,0,0,34,135,252,154,0,0,0,0,0,0,0,0,0,0,0,6,72,228,254,243,110,20,0,0,0,0,0,0,0,80,251,166,0,0,0,0,0,0,0,0,0,0,5,142,254,254,213,94,0,0,0,0,0,0,0,0,0,113,254,130,0,0,0,0,0,0,0,0,0,0,114,254,254,226,21,0,0,0,0,0,0,0,0,0,0,207,254,130,0,0,0,0,0,0,0,0,0,108,231,254,230,47,0,0,0,0,0,0,0,0,0,30,188,251,254,32,0,0,0,0,0,0,0,0,45,232,254,194,43,0,0,0,0,0,0,0,0,28,128,225,254,219,116,1,0,0,0,0,0,0,0,0,192,254,254,217,88,88,88,88,88,45,88,88,188,227,254,254,254,39,0,0,0,0,0,0,0,0,0,0,70,254,254,254,254,254,254,254,254,237,254,254,254,254,254,254,118,3,0,0,0,0,0,0,0,0,0,0,16,37,154,154,216,254,254,254,254,254,254,254,223,51,30,30,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,24,107,148,148,148,54,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,110,224,254,172,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,221,253,254,253,253,230,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,110,249,253,180,75,20,216,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,249,133,8,0,0,88,247,248,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,220,253,175,0,0,0,0,0,167,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,231,11,0,0,0,47,152,107,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,226,0,0,0,0,227,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,228,5,0,0,61,251,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,219,253,158,3,0,116,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,196,175,254,253,180,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,208,254,254,255,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,17,253,254,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,215,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,212,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,205,162,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,232,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,163,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,102,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,110,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,254,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,254,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,169,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,254,184,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,255,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,255,223,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,255,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,239,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,223,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,255,191,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,255,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,255,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,239,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,39,41,147,147,147,147,64,46,147,147,147,75,39,97,147,147,133,28,0,0,0,0,0,0,0,0,0,179,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,205,12,0,0,0,0,0,0,0,0,160,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,179,0,0,0,0,0,0,0,0,128,254,254,254,254,254,254,254,254,254,220,230,240,254,254,254,254,254,254,164,0,0,0,0,0,0,0,0,10,97,173,154,65,65,131,208,173,104,14,28,43,152,116,65,223,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,28,230,254,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,238,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,236,254,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,220,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,212,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,224,254,254,254,189,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,124,254,254,254,246,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,254,254,254,195,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,238,254,254,201,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,243,254,254,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,251,255,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,245,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,47,146,28,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,254,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,197,254,253,254,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,224,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,226,56,0,0,85,85,85,85,57,0,0,0,0,0,0,0,0,0,0,0,0,0,169,224,253,251,253,251,56,0,169,168,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,254,139,254,253,254,253,254,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,253,251,253,251,253,251,253,251,253,251,253,83,0,0,0,0,0,0,0,0,29,85,254,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,226,56,0,0,0,0,0,0,0,0,28,196,253,251,253,251,253,251,253,251,253,251,196,196,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,254,253,254,253,254,253,254,253,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,253,251,253,251,253,251,253,251,253,251,84,28,0,0,0,0,0,0,0,0,0,0,29,197,254,253,254,253,254,253,254,253,254,253,254,196,169,168,0,0,0,0,0,0,0,0,0,0,0,0,28,83,253,251,253,251,253,251,253,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,225,254,253,254,253,226,168,169,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,196,83,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,248,246,165,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,242,132,252,251,225,174,174,174,174,202,248,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,219,0,69,122,144,195,195,195,244,254,153,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,238,87,0,0,0,0,0,0,11,205,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,15,0,0,0,0,0,0,45,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,200,2,0,0,0,0,0,0,217,121,5,49,132,214,151,0,0,0,0,0,0,0,0,0,0,0,12,249,106,0,0,0,0,0,0,80,254,160,212,194,111,51,0,0,0,0,0,0,0,0,0,0,0,0,47,212,20,0,0,1,17,123,205,250,244,137,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,165,143,117,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,185,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,243,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,251,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,236,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,212,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,209,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,249,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,243,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,250,222,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,215,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,239,244,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,230,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,249,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,232,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,197,254,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,197,255,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,197,254,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,255,253,255,196,0,0,0,0,0,57,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,84,28,0,0,57,56,169,224,253,251,169,168,169,56,0,0,0,0,0,0,0,0,0,169,255,253,226,56,0,57,85,197,254,253,254,253,254,253,254,253,254,253,0,0,0,0,0,0,0,0,57,224,253,251,56,0,170,224,253,251,253,251,253,251,253,251,253,251,253,251,0,0,0,0,0,0,0,0,254,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,169,56,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,253,251,253,251,253,251,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,114,198,253,254,253,254,253,254,196,169,168,169,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,83,84,83,84,83,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,139,216,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,207,253,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,240,253,253,188,116,23,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,117,250,253,253,117,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,0,0,0,0,0,0,76,242,254,239,107,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,239,253,204,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,150,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,242,253,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,229,29,0,0,0,0,42,144,144,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,209,0,0,53,177,177,250,253,253,250,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,209,0,0,187,253,253,253,253,253,253,226,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,209,17,215,254,253,235,126,121,167,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,238,231,253,247,169,15,0,0,113,253,224,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,253,96,0,0,86,161,242,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,219,122,213,253,253,250,136,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,241,253,253,253,255,253,253,253,224,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,254,233,176,119,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,220,95,33,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,101,130,170,255,163,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,253,253,253,253,253,253,30,6,13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,101,219,253,253,253,253,253,253,253,47,177,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,92,164,253,253,253,253,253,253,253,253,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,3,105,215,253,253,253,246,222,246,253,253,253,253,253,253,185,5,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,247,131,80,128,231,253,253,253,253,253,168,52,0,0,0,0,0,0,0,0,0,0,0,30,216,253,253,229,72,30,150,253,253,253,253,253,253,166,8,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,223,72,228,253,253,253,253,253,253,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,253,253,253,235,95,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,253,253,253,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,71,185,227,253,253,253,253,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,200,179,235,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,154,234,253,253,173,15,0,192,253,253,194,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,240,145,14,0,0,150,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,238,253,253,216,0,0,0,0,44,233,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,253,107,0,0,0,0,0,199,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,159,88,0,0,0,29,221,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,150,253,253,253,250,236,236,236,241,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,253,253,155,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,82,147,253,253,253,253,253,217,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,119,94,0,0,0,0,0,141,249,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,246,254,202,0,0,0,0,77,249,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,251,254,254,202,0,0,0,0,151,254,248,9,0,0,0,0,0,0,0,0,0,0,0,0,0,36,142,237,254,229,59,20,0,0,13,179,244,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,154,234,254,254,228,54,0,0,0,0,101,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,38,207,231,254,254,143,28,0,0,0,0,145,221,254,194,37,0,0,0,0,0,0,0,0,0,0,0,78,223,254,254,254,143,8,0,0,0,0,79,240,254,254,104,0,0,0,0,0,0,0,0,0,0,0,137,253,254,254,138,52,8,0,0,0,0,80,239,254,228,52,21,0,0,0,0,0,0,0,0,0,0,0,190,253,254,254,152,66,66,66,66,32,163,238,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,254,254,254,254,254,254,254,221,254,254,254,128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,196,202,202,248,254,254,254,254,254,244,178,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,93,231,254,255,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,179,254,254,254,195,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,242,254,254,254,200,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,244,254,254,248,130,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,248,200,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,0,0,0,0,48,160,197,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,141,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,0,0,0,0,141,253,253,128,0,0,0,0,0,0,111,16,0,0,0,0,0,0,0,0,22,234,252,252,0,0,0,0,141,252,252,28,0,0,0,0,0,26,222,28,0,0,0,0,0,0,0,0,23,234,252,252,0,0,0,0,141,252,252,28,0,0,0,0,0,45,240,116,0,0,0,0,0,0,0,0,128,252,252,202,0,0,0,0,91,252,252,128,0,0,0,0,0,57,252,139,0,0,0,0,0,0,0,0,141,253,253,128,0,0,0,0,26,244,253,253,0,0,0,0,41,216,253,140,0,0,0,0,0,0,0,0,141,252,252,103,0,0,0,0,0,169,252,252,0,13,57,157,253,252,252,115,0,0,0,0,0,0,0,0,141,252,252,139,0,0,0,0,0,169,252,252,147,209,252,252,253,233,118,19,0,0,0,0,0,0,0,0,141,252,252,40,0,26,113,113,126,243,252,252,253,252,252,252,190,109,0,0,0,0,0,0,0,0,0,0,141,253,253,253,255,253,253,253,254,253,253,253,254,247,187,163,0,0,0,0,0,0,0,0,0,0,0,0,60,208,252,252,253,252,252,252,253,252,252,252,159,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,143,168,168,168,130,56,56,100,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,252,238,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,215,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,67,67,67,32,0,20,67,67,67,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,198,232,254,254,254,239,226,234,254,254,254,227,216,98,0,0,0,0,0,0,0,0,0,0,0,0,18,165,254,254,242,150,245,246,254,254,254,254,254,254,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,38,85,85,75,0,0,13,85,113,126,118,226,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,111,107,191,254,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,205,254,254,254,254,254,216,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,110,246,254,254,254,216,169,78,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,251,254,254,254,254,254,243,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,201,226,225,151,194,252,254,175,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,255,212,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,215,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,209,230,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,190,254,197,0,0,0,0,0,0,0,0,0,0,13,48,48,16,0,0,0,0,0,0,0,43,51,204,246,254,254,57,0,0,0,0,0,0,0,0,0,0,185,254,254,223,207,165,114,114,124,207,208,249,254,254,254,254,142,2,0,0,0,0,0,0,0,0,0,0,100,244,254,254,254,254,254,254,254,254,254,254,254,254,254,209,22,0,0,0,0,0,0,0,0,0,0,0,0,106,199,254,254,254,254,254,254,254,254,254,254,216,93,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,37,90,138,194,222,225,190,131,131,58,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,166,254,215,254,254,254,254,249,154,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,244,167,242,252,253,253,253,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,89,89,5,0,0,72,89,99,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,113,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,207,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,152,245,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,85,179,184,225,253,253,248,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,253,253,238,253,253,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,158,158,158,100,36,83,202,253,215,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,237,253,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,39,0,0,0,0,0,0,0,0,72,250,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,173,8,0,0,0,0,0,0,11,229,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,236,162,41,9,0,0,46,220,253,254,127,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,210,253,253,204,130,131,230,253,253,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,109,246,254,253,253,253,251,142,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,130,213,253,230,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,229,22,38,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,200,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,246,241,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,191,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,253,156,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,227,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,187,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,220,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,251,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,253,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,163,0,0,0,0,0,114,134,134,42,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,254,254,254,228,0,64,122,248,254,254,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,252,241,247,254,253,253,253,253,253,251,89,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,253,254,253,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,253,253,253,253,216,46,119,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,253,28,0,129,253,253,253,186,20,0,0,0,0,0,0,0,0,0,0,0,0,25,224,253,253,253,253,253,253,125,111,247,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,253,253,253,255,253,253,253,243,184,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,253,253,253,253,253,255,253,243,114,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,205,249,253,253,253,255,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,191,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,110,236,255,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,224,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,179,253,253,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,253,182,117,252,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,158,0,249,248,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,221,37,0,249,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,249,62,0,0,249,225,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,112,34,0,0,0,249,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,60,60,46,0,0,140,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,119,195,197,253,253,240,195,195,248,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,253,253,253,253,253,253,253,253,253,253,216,78,0,0,0,0,0,0,0,0,0,0,0,0,0,16,197,253,253,253,253,253,253,253,253,253,253,253,253,249,117,0,0,0,0,0,0,0,0,0,0,0,0,42,253,211,82,55,10,72,124,159,253,253,253,253,253,253,252,57,0,0,0,0,0,0,0,0,0,0,3,165,222,27,0,0,0,0,39,222,253,253,253,114,241,253,253,219,21,0,0,0,0,0,0,0,0,0,18,253,210,12,0,0,2,114,221,253,253,236,153,2,52,174,253,253,112,0,0,0,0,0,0,0,0,0,18,253,253,168,66,66,180,253,253,253,253,128,0,0,0,48,253,253,123,0,0,0,0,0,0,0,0,0,18,253,253,253,253,253,253,253,253,253,153,9,0,0,0,48,253,253,35,0,0,0,0,0,0,0,0,0,3,121,253,253,253,253,253,253,217,35,8,0,0,0,0,29,226,173,21,0,0,0,0,0,0,0,0,0,0,3,17,106,232,253,251,69,14,0,0,0,0,0,0,0,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,195,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,163,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,220,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,236,127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,211,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,208,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,250,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,226,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,246,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,242,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,217,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,187,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,94,158,237,255,149,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,207,254,254,254,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,254,254,202,202,254,254,251,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,254,249,98,2,8,165,228,254,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,254,108,0,0,0,0,38,220,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,43,0,0,0,0,0,106,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,43,0,31,162,17,26,229,239,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,218,211,235,254,124,175,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,173,254,254,254,254,254,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,162,209,254,254,254,155,94,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,196,254,242,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,254,233,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,250,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,250,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,132,89,0,0,0,0,0,0,0,0,136,253,149,13,0,0,0,0,0,0,0,0,0,0,0,0,28,222,252,167,0,0,0,0,0,0,0,6,199,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,167,0,0,0,0,0,0,7,145,252,252,192,9,0,0,0,0,0,0,0,0,0,0,0,7,185,252,252,144,0,0,0,0,0,0,72,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,12,168,252,252,200,14,0,0,0,0,0,27,229,252,252,134,10,0,0,0,0,0,0,0,0,0,0,0,54,230,252,252,88,0,0,0,0,0,0,128,252,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,124,85,85,49,0,5,97,234,252,252,228,32,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,252,252,252,237,217,162,252,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,252,252,252,252,252,253,252,252,231,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,7,87,212,252,252,252,252,252,252,253,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,248,245,84,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,164,246,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,252,212,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,223,252,252,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,252,252,252,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,200,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,113,128,253,255,253,253,237,113,114,113,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,234,252,252,252,253,252,252,252,252,253,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,54,197,253,252,239,180,55,56,55,165,202,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,54,224,252,240,176,65,0,0,0,0,0,10,177,253,252,180,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,140,253,252,55,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,0,0,0,0,0,0,0,0,13,191,255,253,56,0,0,0,0,0,0,0,0,0,0,0,57,233,252,173,0,0,0,0,0,0,0,0,154,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,111,0,0,0,0,0,19,166,234,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,216,169,169,169,169,169,196,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,253,252,252,252,252,253,252,141,205,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,140,192,253,228,203,140,79,0,0,169,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,27,21,15,0,0,0,51,243,252,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,255,107,24,24,24,24,45,86,138,191,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,78,236,252,253,252,252,252,252,253,252,252,235,153,0,0,0,0,0,0,0,0,0,0,0,57,122,191,252,252,252,252,253,252,252,252,252,247,183,100,44,0,0,0,0,0,0,0,0,0,0,17,176,244,252,253,252,252,252,252,253,252,185,160,56,42,0,0,0,0,0,0,0,0,0,0,0,0,22,234,252,252,252,253,252,252,252,252,75,22,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,253,255,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,252,253,252,240,112,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,252,252,252,253,172,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,211,252,252,200,75,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,188,255,207,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,237,195,155,181,232,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,55,0,0,17,89,195,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,221,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,209,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,33,25,0,0,80,241,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,208,254,241,105,42,5,162,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,206,96,123,146,236,214,242,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,29,0,0,0,21,191,254,206,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,159,0,0,0,0,0,91,239,40,151,148,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,213,0,0,0,0,0,220,187,0,8,16,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,208,27,0,0,0,0,196,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,219,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,217,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,253,247,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,226,254,250,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,254,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,241,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,253,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,38,38,38,38,139,171,254,254,255,254,241,117,6,0,0,0,0,0,0,0,0,0,0,0,64,184,187,253,253,253,253,253,253,203,177,177,177,241,253,232,26,0,0,0,0,0,0,0,0,0,0,3,192,248,248,181,139,139,139,55,32,11,0,1,80,230,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,236,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,189,251,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,221,242,243,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,73,233,219,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,224,253,145,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,245,60,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,241,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,246,219,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,236,248,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,246,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,199,242,119,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,208,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,245,253,185,63,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,16,19,33,139,253,228,64,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,179,208,71,106,214,221,253,249,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,116,240,253,253,249,145,109,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,153,254,255,237,150,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,142,211,253,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,247,253,204,27,10,10,87,245,227,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,88,0,0,0,65,237,230,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,93,124,43,0,0,11,242,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,186,253,162,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,189,253,178,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,130,239,253,253,109,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,206,251,253,253,223,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,98,208,253,241,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,253,206,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,121,13,0,0,0,0,167,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,154,230,214,21,0,0,12,135,252,247,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,215,29,0,0,27,217,253,245,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,139,11,98,178,232,252,164,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,253,253,242,196,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,76,198,253,164,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,235,255,254,221,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,156,135,166,252,221,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,116,3,0,4,12,107,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,45,0,0,0,0,0,0,18,119,228,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,32,0,0,0,0,0,0,93,239,173,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,32,0,0,0,0,0,89,226,76,33,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,32,0,0,0,0,49,241,167,0,33,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,32,0,0,0,19,181,253,78,0,70,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,66,0,0,0,100,253,113,18,0,163,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,183,40,19,163,239,240,55,0,0,163,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,208,253,230,204,253,240,88,0,0,0,163,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,191,246,253,217,87,0,0,0,8,179,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,84,17,0,0,0,0,60,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,219,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,222,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,212,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,229,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,212,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,245,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,220,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,213,253,253,239,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,253,253,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,241,253,253,241,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,241,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,221,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,195,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,240,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,209,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,251,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,105,105,106,105,114,253,253,235,105,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,252,252,253,252,252,252,252,252,252,158,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,252,252,252,252,252,252,252,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,252,252,252,252,252,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,169,177,177,209,190,177,177,243,252,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,13,2,30,227,252,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,134,134,141,252,252,252,252,252,228,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,238,246,253,252,252,252,252,252,252,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,240,252,252,253,252,252,252,252,252,252,156,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,252,252,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,253,253,255,253,253,253,253,253,174,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,184,192,192,193,192,105,220,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,4,104,8,0,0,0,0,0,0,0,0,0,120,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,60,252,189,14,0,0,0,0,0,0,0,8,182,252,252,252,14,0,0,0,0,0,0,0,0,0,0,93,230,252,252,182,66,0,0,0,0,0,62,173,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,243,178,38,30,30,92,239,252,252,252,252,156,4,0,0,0,0,0,0,0,0,0,0,49,149,252,252,252,252,252,252,252,252,253,252,252,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,4,116,252,252,252,252,252,252,252,253,252,252,252,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,246,252,252,252,252,252,253,252,252,230,75,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,121,252,252,252,252,253,216,103,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,93,73,0,0,0,0,0,18,58,142,206,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,184,64,64,79,142,192,234,253,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,250,253,253,254,253,253,253,253,254,253,253,208,75,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,254,254,255,249,246,193,158,129,80,30,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,180,93,63,44,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,147,254,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,254,253,253,245,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,251,253,254,243,213,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,100,158,50,0,55,242,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,245,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,161,253,238,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,146,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,15,0,0,41,253,253,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,254,179,230,254,211,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,221,227,253,253,254,239,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,92,127,127,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,67,173,177,177,177,177,177,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,211,240,253,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,5,23,124,152,243,252,255,248,231,126,121,121,117,10,10,2,0,0,0,0,0,0,0,0,0,0,22,66,185,253,253,253,253,253,209,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,202,253,253,253,211,145,89,242,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,180,253,252,170,45,11,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,207,253,235,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,239,188,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,125,201,253,253,238,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,149,252,235,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,210,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,216,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,236,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,27,0,0,0,70,216,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,161,122,131,232,249,253,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,253,253,208,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,95,176,166,66,66,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,113,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,231,209,85,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,246,252,252,252,229,150,57,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,230,252,252,253,252,252,196,169,29,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,252,253,252,252,252,252,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,166,253,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,177,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,79,252,252,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,222,113,113,114,113,113,113,113,114,113,113,207,174,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,252,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,31,222,252,252,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,38,84,84,84,84,225,223,223,223,223,225,223,223,223,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,87,138,191,97,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,140,244,253,252,252,252,211,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,203,252,252,253,252,252,252,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,236,252,252,252,211,252,252,252,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,252,252,157,85,13,65,252,252,252,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,255,218,84,0,0,13,212,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,253,92,0,0,22,118,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,188,101,184,215,253,252,252,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,252,252,252,200,137,211,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,179,157,116,116,11,0,162,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,244,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,137,189,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,191,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,149,238,253,253,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,114,247,253,253,253,253,253,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,147,240,253,253,253,194,120,117,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,203,253,239,149,69,6,0,121,253,224,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,78,33,0,0,0,45,229,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,238,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,245,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,6,117,242,253,194,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,156,234,253,253,253,253,177,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,109,109,109,109,245,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,244,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,151,253,125,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,4,140,228,61,0,0,0,0,0,0,49,241,253,217,8,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,229,22,0,0,0,0,0,14,182,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,248,108,11,11,11,37,115,185,253,235,104,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,194,253,253,253,253,253,253,253,253,208,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,104,226,253,253,253,253,209,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,230,24,0,0,0,0,0,0,0,0,0,0,0,0,111,153,29,0,0,0,0,0,0,0,0,0,14,196,133,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,53,0,0,0,0,0,0,0,0,0,68,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,53,0,0,0,0,0,0,0,0,0,76,231,20,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,88,0,0,0,0,0,0,0,0,32,226,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,82,0,0,0,0,0,0,0,0,81,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,53,0,0,0,0,0,0,0,0,81,254,145,199,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,53,0,0,0,0,0,0,0,0,81,254,248,252,46,0,0,0,0,0,0,0,0,0,0,0,0,228,254,53,0,0,0,0,0,0,0,0,81,254,255,219,6,0,0,0,0,0,0,0,0,0,0,0,0,228,250,47,0,0,0,0,0,0,14,129,224,254,218,50,0,0,0,0,0,0,0,0,0,0,0,0,0,228,219,0,0,0,0,0,16,134,221,254,254,250,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,219,5,5,67,95,178,246,254,212,129,223,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,254,254,254,254,183,90,0,4,227,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,254,205,157,98,46,1,0,0,5,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,22,6,0,0,0,0,0,0,5,254,187,100,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,241,245,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,207,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,230,149,48,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,222,254,254,209,138,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,31,197,239,251,177,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,104,250,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,141,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,173,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,131,246,252,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,155,194,246,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,190,217,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,247,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,97,2,0,1,32,226,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,205,173,161,163,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,199,254,255,190,67,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,116,254,254,221,95,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,253,253,253,253,253,59,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,213,253,253,249,174,240,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,248,118,0,62,248,253,217,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,188,0,0,0,114,247,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,247,68,0,0,0,0,205,253,219,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,220,253,210,0,0,0,0,0,183,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,125,0,0,0,0,0,81,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,86,0,0,0,0,0,24,223,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,86,0,0,0,0,0,0,211,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,86,0,0,0,0,0,0,211,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,183,0,0,0,0,0,0,211,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,245,65,0,0,0,0,0,211,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,224,211,56,0,0,28,225,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,253,68,0,0,81,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,234,127,8,0,0,129,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,253,224,31,0,0,32,225,253,214,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,241,144,145,241,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,253,253,253,253,253,253,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,30,129,159,253,253,153,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,118,189,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,238,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,245,254,254,215,44,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,247,117,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,242,254,220,0,0,0,0,0,0,0,0,0,15,35,35,105,0,0,0,0,0,0,0,0,0,0,0,98,254,254,137,0,0,0,0,0,0,0,1,14,187,254,251,127,0,0,0,0,0,0,0,0,0,0,0,98,254,226,40,0,0,0,0,0,0,0,7,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,98,254,223,36,0,0,0,0,31,137,249,249,254,254,158,31,0,0,0,0,0,0,0,0,0,0,0,0,63,240,254,218,86,0,0,81,134,254,254,254,254,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,238,254,252,207,207,250,254,254,247,181,48,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,254,254,254,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,254,254,254,255,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,251,187,110,149,254,243,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,248,64,0,0,70,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,184,0,0,0,70,254,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,223,0,0,0,70,254,255,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,252,98,0,56,190,254,248,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,174,254,216,180,247,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,254,254,254,254,213,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,254,130,117,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,245,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,147,254,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,228,253,254,240,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,239,253,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,180,247,254,253,253,168,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,141,232,253,253,254,253,242,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,159,254,253,253,253,254,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,87,237,254,254,216,174,254,254,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,253,236,148,27,216,253,241,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,197,230,145,29,0,97,253,253,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,253,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,236,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,184,254,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,70,19,0,0,49,254,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,169,139,138,224,253,254,232,230,230,206,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,230,253,253,254,253,253,253,254,253,253,253,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,160,194,254,253,253,253,161,143,69,69,161,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,173,228,228,228,228,228,158,75,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,232,254,254,254,254,254,254,254,254,241,159,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,199,53,53,53,131,142,180,240,254,254,242,28,0,0,8,0,0,0,0,0,0,0,0,0,0,0,22,222,78,0,0,0,0,5,85,212,254,254,233,22,0,0,55,0,0,0,0,0,0,0,0,0,0,0,0,104,133,85,85,85,132,212,254,254,254,201,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,254,254,254,254,254,254,254,200,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,254,233,254,254,254,254,175,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,81,31,31,20,31,110,167,254,254,205,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,114,220,254,156,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,213,254,225,13,0,0,0,0,0,0,0,0,0,0,0,0,5,5,1,0,0,0,0,0,0,0,1,23,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,58,0,0,0,0,0,0,0,77,233,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,255,232,41,0,0,0,0,0,39,161,252,254,229,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,242,157,143,143,143,199,245,254,254,250,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,249,254,254,254,254,254,254,217,114,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,181,219,169,137,137,86,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,157,241,254,254,255,202,118,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,253,253,253,253,254,253,253,233,145,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,230,254,253,176,127,127,127,178,248,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,254,171,8,0,0,0,4,220,253,253,238,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,108,0,0,0,0,120,253,253,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,255,215,11,0,0,0,204,254,183,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,166,254,253,55,0,0,120,252,245,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,253,209,8,27,241,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,253,68,186,254,249,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,243,254,254,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,225,253,253,136,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,249,253,206,248,254,202,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,240,35,181,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,255,254,133,0,0,228,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,36,0,0,163,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,253,177,128,192,241,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,254,184,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,247,253,253,188,105,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,214,253,253,205,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,213,253,253,230,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,213,253,253,230,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,232,253,253,229,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,213,253,253,229,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,229,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,249,253,154,10,0,0,0,0,13,59,59,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,32,0,0,0,41,150,197,253,253,244,169,49,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,185,10,0,38,150,236,253,253,253,253,253,253,247,77,0,0,0,0,0,0,0,0,0,0,0,0,241,253,68,15,84,239,253,253,253,253,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,241,253,25,175,253,253,253,253,246,221,130,111,242,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,241,253,166,241,253,253,232,193,75,0,19,114,219,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,67,20,50,150,222,253,253,251,223,45,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,253,253,253,253,253,253,253,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,253,253,253,253,253,253,253,252,247,162,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,219,123,123,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,205,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,101,242,248,111,0,0,30,38,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,149,253,253,236,104,198,197,240,253,222,148,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,209,253,253,253,253,253,254,253,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,7,125,247,253,253,253,253,253,218,206,123,39,123,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,253,208,140,60,12,0,0,1,158,253,251,69,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,205,127,22,0,0,0,0,0,108,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,106,193,103,11,0,0,0,0,0,0,44,230,253,242,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,244,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,246,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,255,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,254,219,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,245,253,251,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,247,253,247,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,175,207,244,253,253,247,207,207,207,207,207,207,207,207,186,66,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,224,0,0,0,0,0,0,0,0,0,0,9,209,253,253,253,234,196,196,196,172,172,103,103,121,196,236,240,139,0,0,0,0,0,0,0,0,0,0,38,253,253,247,106,25,0,0,0,0,0,0,0,0,0,26,29,0,0,0,0,0,0,0,0,0,0,0,24,232,225,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,245,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,212,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,245,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,148,183,191,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,242,253,252,252,211,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,180,246,252,253,252,252,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,232,252,252,252,216,110,93,189,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,236,252,252,252,121,18,0,0,0,0,168,140,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,253,254,253,223,35,0,0,0,13,148,236,254,253,83,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,153,32,0,0,0,100,195,252,252,253,252,170,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,161,5,0,6,22,189,247,252,252,252,253,252,161,0,0,0,0,0,0,0,0,0,0,0,22,237,252,252,142,99,169,190,252,253,252,252,252,252,253,196,7,0,0,0,0,0,0,0,0,0,0,0,50,147,217,252,253,252,252,252,252,253,252,252,252,252,147,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,254,253,253,253,253,255,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,107,98,116,63,177,253,252,252,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,242,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,195,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,235,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,254,144,133,128,13,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,154,229,241,254,253,238,145,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,237,253,253,253,230,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,107,214,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,201,253,254,253,253,253,253,233,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,217,253,253,210,60,77,229,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,222,253,253,115,23,0,0,169,253,194,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,56,2,0,0,0,169,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,114,3,0,0,0,16,206,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,222,253,36,0,0,0,0,37,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,250,34,0,0,0,0,101,255,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,0,157,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,226,253,168,0,0,0,0,0,157,253,245,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,205,253,168,0,0,0,0,17,222,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,3,137,253,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,168,0,0,0,48,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,197,12,0,0,174,253,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,119,98,213,254,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,253,249,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,110,178,253,195,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,249,253,226,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,251,253,134,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,250,253,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,223,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,249,253,137,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,240,253,227,28,0,0,0,0,52,72,72,72,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,128,0,0,0,51,163,237,253,253,253,204,61,0,0,0,0,0,0,0,0,0,0,0,0,28,244,253,180,8,0,19,163,239,253,253,212,194,232,253,238,26,0,0,0,0,0,0,0,0,0,0,0,118,253,253,155,0,18,181,253,253,184,71,22,0,63,233,253,136,0,0,0,0,0,0,0,0,0,0,0,118,253,253,155,0,175,253,253,184,20,0,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,118,253,253,68,82,241,253,222,49,0,0,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,118,253,253,110,222,253,203,19,0,0,0,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,118,253,253,216,241,253,95,0,0,0,0,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,109,252,253,253,253,203,19,0,0,0,0,0,0,30,214,252,154,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,216,104,14,3,0,0,0,23,214,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,253,253,253,253,253,60,7,7,31,155,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,240,253,253,253,253,190,253,253,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,204,253,253,203,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,243,253,240,196,221,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,252,194,43,0,76,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,252,202,13,0,0,0,153,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,244,25,0,0,0,0,141,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,93,0,0,0,0,0,141,252,187,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,38,229,252,252,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,202,6,0,0,0,0,213,253,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,228,31,0,0,0,0,51,104,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,252,81,0,0,0,45,107,253,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,234,197,198,197,240,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,252,252,253,252,214,90,153,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,141,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,178,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,215,164,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,57,121,121,121,121,121,185,128,241,254,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,247,253,253,253,253,253,254,253,253,253,253,253,251,89,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,253,254,253,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,185,253,196,39,39,125,173,173,111,39,39,39,209,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,20,165,67,0,0,0,0,0,0,0,0,22,215,253,243,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,241,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,181,253,253,219,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,214,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,253,218,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,254,219,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,220,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,242,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,254,254,254,216,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,67,115,221,253,253,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,253,253,254,253,253,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,244,169,165,253,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,107,239,167,0,76,235,253,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,7,12,180,253,253,253,222,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,156,236,253,253,252,145,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,113,228,253,254,253,205,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,254,253,253,248,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,242,253,253,253,254,253,253,253,246,183,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,164,236,246,240,174,230,192,254,254,254,201,77,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,57,44,0,21,44,87,230,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,130,202,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,220,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,199,253,253,119,0,0,0,0,0,0,0,0,51,27,0,0,0,0,0,0,0,0,0,0,74,99,199,242,253,238,83,7,0,0,0,0,0,0,0,0,101,239,140,122,122,122,122,122,122,122,137,232,250,253,253,253,243,151,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,255,253,253,253,253,180,9,0,0,0,0,0,0,0,0,0,0,0,81,230,253,253,253,253,253,253,253,253,254,199,132,114,66,14,0,0,0,0,0,0,0,0,0,0,0,0,0,23,76,143,143,230,253,186,143,47,129,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,86,213,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,104,254,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,251,150,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,214,254,232,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,93,0,0,0,0,0,91,193,193,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,93,0,0,0,19,169,243,254,254,234,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,254,93,0,0,0,103,254,254,254,254,254,235,154,6,0,0,0,0,0,0,0,0,0,0,0,0,13,218,254,209,30,0,0,187,254,254,144,116,254,254,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,209,30,49,245,254,190,7,133,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,234,231,254,254,246,224,249,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,114,254,254,255,254,254,254,254,254,254,254,213,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,161,254,254,254,254,254,254,254,213,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,101,165,254,254,254,254,250,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,39,130,231,254,209,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,70,136,162,161,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,89,172,231,243,253,253,254,253,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,254,253,242,230,230,242,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,195,111,38,0,26,180,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,93,93,0,0,0,51,187,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,97,247,254,227,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,24,83,174,253,253,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,142,240,253,254,253,253,253,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,228,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,219,90,23,23,15,169,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,137,62,13,0,0,0,0,170,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,224,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,157,245,253,197,4,0,0,0,0,0,0,0,0,0,0,60,42,0,0,0,0,0,0,0,0,9,159,229,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,255,254,136,45,0,13,70,70,162,178,254,254,254,254,222,84,0,0,0,0,0,0,0,0,0,0,0,0,237,253,253,245,231,235,253,253,254,253,253,253,182,64,13,0,0,0,0,0,0,0,0,0,0,0,0,0,55,154,230,246,254,253,253,253,230,230,145,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,69,69,69,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,236,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,174,251,251,219,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,181,253,251,251,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,255,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,251,253,223,15,0,0,0,0,32,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,120,205,251,251,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,161,0,0,60,255,253,253,253,253,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,62,16,171,228,253,251,251,223,220,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,205,47,189,251,251,253,235,126,15,80,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,182,186,251,251,251,129,27,0,0,158,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,211,94,0,0,0,0,158,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,255,253,253,189,0,0,0,0,0,100,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,251,251,196,12,0,0,0,68,190,241,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,251,251,251,173,128,127,127,236,251,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,196,251,251,251,253,251,251,196,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,173,152,251,253,132,94,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,170,192,47,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,252,253,232,226,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,120,253,252,252,231,217,132,241,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,108,0,0,181,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,252,253,220,143,62,0,0,37,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,252,252,222,45,0,0,0,0,37,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,41,0,0,0,0,0,37,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,168,0,0,0,0,0,0,37,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,171,253,217,0,0,0,0,0,0,0,37,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,252,91,0,0,0,0,0,0,0,78,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,252,200,20,0,0,0,0,0,0,11,191,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,97,0,0,0,0,0,0,0,155,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,206,20,0,0,0,0,0,0,171,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,143,0,0,0,0,0,11,155,253,148,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,221,129,0,0,0,0,140,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,179,0,0,0,42,221,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,98,0,63,255,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,242,134,237,253,252,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,252,252,252,217,91,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,232,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,232,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,67,143,158,224,235,186,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,239,173,241,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,108,252,139,13,209,252,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,0,0,104,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,222,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,111,158,177,220,220,221,243,252,252,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,201,253,253,253,253,253,253,255,253,253,253,229,31,0,0,0,0,0,0,0,0,0,0,0,0,9,143,239,252,252,252,252,212,152,230,253,252,252,252,252,192,44,0,0,0,0,0,0,0,0,0,0,0,168,252,252,252,187,67,44,17,108,247,253,252,252,166,252,252,227,39,0,0,0,0,0,0,0,0,0,0,244,252,252,185,26,23,124,199,250,252,253,237,96,2,35,214,252,204,0,0,0,0,0,0,0,0,0,0,120,252,252,252,252,252,252,252,252,252,183,27,0,0,0,31,239,237,67,0,0,0,0,0,0,0,0,0,8,131,237,252,252,252,252,252,225,117,0,0,0,0,0,0,193,252,236,26,0,0,0,0,0,0,0,0,0,0,61,131,203,154,79,21,15,0,0,0,0,0,0,0,122,252,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,100,224,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,43,43,61,148,156,253,209,131,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,252,252,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,251,252,252,214,126,29,21,21,147,252,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,232,252,252,252,0,0,0,0,0,43,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,190,42,174,0,0,0,0,0,87,252,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,53,0,194,0,0,0,29,175,255,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,52,232,252,222,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,234,252,190,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,64,134,169,218,252,221,119,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,252,252,252,253,252,179,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,148,253,253,225,124,124,225,253,156,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,163,37,63,63,21,0,0,57,246,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,202,94,0,0,0,0,0,0,0,127,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,183,14,0,0,0,0,0,0,0,22,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,84,0,0,0,0,0,0,0,0,153,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,84,0,0,0,0,0,0,8,78,245,243,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,237,84,0,0,0,0,0,36,157,252,245,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,161,127,66,22,119,197,241,253,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,172,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,191,253,217,147,121,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,141,204,178,141,41,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,207,94,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,194,56,56,156,253,252,234,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,63,0,0,0,91,165,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,244,25,0,0,0,0,0,0,38,213,254,178,44,0,0,0,0,0,0,0,0,0,0,0,0,101,253,240,81,0,0,0,0,0,0,0,0,0,178,252,168,0,0,0,0,0,0,0,0,0,0,0,29,234,253,196,0,0,0,0,0,0,0,0,0,0,44,224,196,10,0,0,0,0,0,0,0,0,0,0,134,252,241,59,0,0,0,0,0,0,0,0,0,0,0,169,252,28,0,0,0,0,0,0,0,0,0,70,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,169,253,203,0,0,0,0,0,0,0,0,19,225,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,202,0,0,0,0,0,0,0,0,66,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,214,0,0,0,0,0,0,0,0,141,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,139,0,0,0,0,0,0,0,0,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,16,179,253,78,0,0,0,0,0,0,0,0,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,233,22,0,0,0,0,0,0,0,0,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,126,229,252,80,0,0,0,0,0,0,0,0,0,253,252,106,0,0,0,0,0,0,0,0,0,0,0,126,249,253,202,6,0,0,0,0,0,0,0,0,0,129,253,253,103,13,0,0,0,4,29,29,29,41,166,253,241,151,0,0,0,0,0,0,0,0,0,0,0,10,171,252,252,207,169,169,169,179,252,252,252,253,240,196,59,0,0,0,0,0,0,0,0,0,0,0,0,0,13,143,243,253,252,252,252,253,252,252,177,106,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,140,139,139,139,78,28,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,194,255,233,96,96,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,251,212,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,251,251,253,157,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,251,253,204,188,244,251,253,251,156,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,253,161,0,123,251,253,251,251,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,150,48,0,0,195,253,253,213,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,31,0,0,96,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,251,235,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,210,251,253,243,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,159,158,79,0,0,0,120,205,251,251,253,121,0,0,0,0,0,0,0,0,0,0,0,36,115,253,253,253,255,253,253,253,253,255,253,253,253,253,255,233,96,72,0,0,0,0,0,0,0,0,0,115,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,236,190,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,188,126,126,173,251,188,126,126,0,0,0,0,0,0,0,0,114,251,251,251,251,253,251,251,251,251,189,69,15,0,0,12,31,15,0,0,0,0,0,0,0,0,0,0,36,212,251,251,251,253,251,251,113,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,254,156,74,59,59,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,211,253,253,254,253,253,253,238,215,214,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,254,253,253,253,253,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,253,247,229,254,234,213,213,213,254,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,253,101,23,58,31,0,0,0,58,58,18,0,0,0,0,0,0,0,0,0,0,0,0,0,10,171,255,254,235,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,243,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,247,175,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,244,254,253,253,227,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,178,253,253,253,230,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,213,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,237,253,222,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,0,0,234,253,213,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,248,159,0,0,0,234,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,0,0,31,241,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,242,254,23,0,79,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,207,80,196,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,254,253,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,254,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,216,253,222,103,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,181,249,185,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,112,253,192,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,229,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,253,155,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,248,42,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9,184,254,173,0,0,0,0,0,0,0,0,43,127,210,50,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,23,0,0,0,0,0,0,45,170,254,254,254,237,29,0,0,0,0,0,0,0,0,0,0,0,116,253,173,2,0,0,0,0,5,147,245,227,107,23,120,253,96,0,0,0,0,0,0,0,0,0,0,0,191,253,84,0,0,0,0,0,99,253,214,46,0,0,112,253,129,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,0,0,182,219,25,0,0,0,229,253,46,0,0,0,0,0,0,0,0,0,0,47,254,254,0,0,0,0,0,0,68,0,0,0,41,195,255,173,17,0,0,0,0,0,0,0,0,0,0,38,228,253,172,55,47,30,17,26,89,138,139,189,241,253,182,11,0,0,0,0,0,0,0,0,0,0,0,0,72,238,254,253,253,236,225,232,253,253,254,215,129,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,160,236,253,254,253,211,160,136,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,188,250,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,243,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,242,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,201,206,0,0,0,0,0,0,0,39,95,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,207,0,0,0,0,0,18,129,254,254,255,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,192,0,0,0,0,50,199,248,139,28,28,212,158,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,113,0,0,0,5,170,227,93,0,0,0,207,165,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,113,0,0,0,123,254,126,0,0,0,15,221,75,0,0,0,0,0,0,0,0,0,0,0,0,0,8,238,200,0,0,50,231,201,7,0,0,32,190,225,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,244,38,0,151,241,54,0,0,57,238,250,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,144,0,217,159,0,0,90,237,228,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,243,245,253,204,151,246,244,155,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,245,254,254,243,201,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,128,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,130,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,248,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,231,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,204,248,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,59,0,0,0,0,62,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,228,29,0,38,130,232,248,248,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,245,205,0,30,184,253,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,117,76,220,253,253,203,85,173,237,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,247,251,253,248,187,12,0,98,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,214,64,0,0,0,171,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,129,0,38,158,211,245,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,251,249,251,253,253,185,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,253,253,253,253,253,253,135,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,145,228,246,191,145,44,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,224,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,253,253,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,206,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,225,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,221,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,208,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,253,253,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,223,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,78,146,171,255,243,146,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,175,228,253,253,253,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,253,249,250,252,253,249,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,223,226,210,154,102,20,44,98,246,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,23,0,0,0,0,0,21,225,253,236,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,81,234,253,252,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,194,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,87,127,195,234,253,253,231,124,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,234,253,253,253,253,253,253,220,35,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,253,253,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,54,54,54,54,126,161,250,253,253,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,132,253,253,207,16,0,0,0,0,0,0,0,0,0,18,60,24,0,0,0,0,0,0,0,0,0,0,0,102,253,253,157,0,0,0,0,0,0,0,0,0,0,123,253,225,171,94,0,0,0,0,0,0,0,0,0,66,253,253,117,0,0,0,0,0,0,0,0,0,37,247,253,253,253,244,22,0,0,0,0,0,0,64,135,212,253,224,40,0,0,0,0,0,0,0,0,0,13,178,253,253,253,253,217,43,0,0,0,43,173,238,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,239,158,172,211,233,253,253,253,253,212,39,0,0,0,0,0,0,0,0,0,0,0,34,208,253,253,253,253,253,253,253,253,253,253,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,2,181,253,253,253,253,253,253,253,253,253,226,183,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,72,145,145,228,200,145,145,145,145,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,255,254,222,178,254,254,236,158,158,70,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,200,225,225,225,225,225,225,230,254,254,254,228,130,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,67,67,155,235,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,239,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,147,253,254,128,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,159,254,243,119,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,221,254,229,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,135,250,254,254,184,144,140,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,251,249,239,239,243,254,254,240,155,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,55,0,0,25,81,160,254,254,220,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,19,179,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,246,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,155,246,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,3,84,166,228,254,250,111,13,0,0,0,0,0,0,0,0,0,0,0,0,8,138,197,163,130,68,112,163,214,254,254,254,196,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,253,254,254,254,254,254,247,214,125,35,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,157,157,157,194,157,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,138,222,211,86,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,222,252,202,183,246,253,188,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,113,238,203,87,13,0,135,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,246,252,200,11,0,0,189,240,243,137,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,192,11,0,0,0,208,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,187,17,0,0,0,0,118,248,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,122,253,208,50,0,0,0,0,0,0,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,245,58,0,0,0,0,0,0,76,248,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,73,0,0,0,0,0,0,0,93,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,108,253,0,0,0,0,0,0,0,0,0,231,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,178,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,106,0,0,0,0,0,0,0,0,57,236,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,184,210,12,0,0,0,0,0,0,0,0,207,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,22,0,0,0,0,0,0,0,32,228,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,137,0,0,0,0,0,0,26,222,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,202,211,0,0,0,0,0,57,178,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,123,70,70,70,174,253,252,252,227,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,150,253,252,252,252,252,253,252,185,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,211,252,252,147,137,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,216,254,242,235,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,140,254,184,38,75,237,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,116,2,0,0,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,239,229,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,194,3,0,0,0,0,0,46,83,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,114,0,0,0,10,91,144,241,254,251,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,244,41,0,0,42,211,254,245,187,184,244,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,201,0,0,43,230,240,100,26,0,0,51,247,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,134,0,30,228,241,26,0,0,0,0,0,195,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,134,0,94,254,94,0,0,0,0,0,58,250,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,134,0,149,235,0,0,0,0,0,3,160,229,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,234,52,238,184,0,0,0,0,7,156,244,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,233,254,141,5,1,0,4,157,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,205,254,254,254,254,169,164,226,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,255,255,255,255,254,231,168,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,82,165,187,158,80,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,118,132,254,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,97,97,97,220,239,253,253,253,253,253,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,23,180,219,253,253,253,253,253,253,245,177,214,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,60,210,253,250,198,198,198,87,61,55,0,125,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,82,77,0,0,0,0,0,0,0,125,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,201,253,249,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,192,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,189,253,152,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,66,230,250,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,230,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,252,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,249,253,148,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,227,253,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,168,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,124,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,237,253,253,193,69,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,252,252,252,253,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,252,252,252,235,253,252,251,135,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,252,252,139,14,84,184,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,253,252,235,14,0,0,14,138,217,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,218,253,254,253,65,0,0,0,0,0,71,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,224,169,169,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,252,253,252,252,252,252,212,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,254,253,232,167,229,255,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,239,168,40,0,27,63,170,252,184,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,211,0,0,0,0,0,7,172,252,191,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,239,42,0,0,0,0,0,7,127,252,187,16,0,0,0,0,0,0,0,0,0,0,0,0,0,13,217,252,236,37,0,0,0,0,0,0,11,218,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,63,0,0,0,0,0,0,0,212,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,203,253,170,43,0,0,0,0,0,48,242,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,245,252,189,127,39,22,57,135,237,252,253,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,163,247,252,252,253,252,252,252,252,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,217,252,253,252,244,147,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,254,253,82,123,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,252,41,243,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,254,233,123,0,214,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,70,0,0,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,233,193,151,41,182,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,233,50,92,50,0,102,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,233,0,0,0,0,0,203,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,213,30,0,0,0,0,41,243,253,111,0,0,21,102,103,20,0,0,0,0,0,0,0,0,113,233,254,233,41,0,0,0,0,0,92,253,254,213,152,193,255,253,255,253,0,0,0,0,0,0,0,0,253,252,253,151,82,0,102,102,203,203,253,252,253,252,253,252,253,252,253,171,0,0,0,0,0,0,0,0,254,253,254,253,254,253,254,253,254,253,254,253,244,203,102,102,41,0,0,0,0,0,0,0,0,0,0,0,71,232,253,252,253,252,233,151,50,50,172,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,41,0,0,0,0,62,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,133,144,253,230,132,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,252,252,252,252,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,252,252,252,252,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,247,204,236,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,72,65,0,169,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,233,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,234,252,252,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,103,237,252,252,229,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,218,240,253,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,253,252,160,11,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,255,253,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,251,253,252,252,231,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,92,96,168,252,252,229,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,188,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,141,230,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,99,0,0,0,77,200,208,252,252,252,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,244,126,97,142,249,252,253,252,252,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,252,252,252,252,253,242,69,81,23,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,160,252,252,252,252,194,132,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,13,13,13,13,120,136,136,136,136,9,0,0,0,0,0,0,0,0,0,0,2,19,95,125,101,143,221,253,253,253,253,253,253,253,253,253,253,199,0,0,0,0,0,0,0,0,1,92,156,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,241,0,0,0,0,0,0,0,0,158,253,253,253,253,253,253,253,246,222,222,186,137,119,99,220,253,253,253,129,0,0,0,0,0,0,0,0,254,253,251,216,140,93,93,93,72,0,0,0,0,0,0,118,253,253,253,51,0,0,0,0,0,0,0,0,87,86,80,0,0,0,0,0,0,0,0,0,0,0,62,243,253,253,175,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,185,253,253,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,184,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,184,253,253,253,227,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,253,226,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,241,253,253,226,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,243,253,253,181,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,193,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,182,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,186,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,135,103,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,64,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,64,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,96,180,245,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,169,253,254,254,254,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,201,254,217,109,95,134,238,244,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,172,19,0,0,0,117,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,201,20,0,0,0,0,113,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,67,0,0,0,0,0,113,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,204,13,0,0,0,0,0,113,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,13,0,0,0,0,0,0,113,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,217,190,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,242,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,229,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,21,0,29,212,254,192,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,72,190,242,195,225,254,203,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,166,254,254,254,254,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,167,254,254,254,254,254,254,254,117,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,254,254,255,204,130,236,255,181,87,9,6,43,28,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,252,203,49,0,68,160,254,254,254,225,153,23,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,234,74,0,0,0,0,12,112,112,82,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,162,102,203,203,203,203,203,122,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,253,254,253,254,253,254,253,234,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,171,151,111,50,50,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,151,0,0,0,0,0,0,254,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,232,0,0,0,0,0,0,112,70,213,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,173,31,0,0,0,0,0,82,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,232,142,102,102,142,203,243,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,254,253,254,253,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,91,151,232,192,151,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,152,173,253,193,233,234,152,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,253,252,253,252,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,214,253,254,213,102,102,0,0,51,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,252,91,10,0,0,0,0,92,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,213,142,20,0,0,0,0,0,82,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,91,10,0,0,0,0,0,82,163,243,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,214,253,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,213,252,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,254,253,254,253,254,233,203,243,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,253,252,253,212,91,30,0,40,131,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,203,203,122,41,0,0,0,0,0,0,142,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,71,0,0,0,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,111,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,233,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,153,71,52,51,52,51,113,152,214,253,254,253,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,253,252,253,252,253,252,253,171,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,255,253,255,253,254,253,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,151,151,151,253,171,253,171,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,194,255,235,136,136,136,29,18,18,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,253,188,69,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,123,182,182,182,182,182,247,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,194,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,214,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,26,125,215,252,253,253,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,137,204,253,253,253,253,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,230,253,253,253,253,253,238,212,102,217,253,253,223,42,0,0,0,0,0,0,0,0,0,0,0,13,147,239,253,253,253,253,212,158,48,0,0,30,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,252,165,59,18,0,0,0,0,30,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,73,253,253,213,100,0,0,0,0,0,0,0,129,253,253,183,6,0,0,0,0,0,0,0,0,0,0,0,5,112,100,14,0,0,0,0,0,0,0,64,244,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,57,183,251,253,253,159,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,58,180,253,253,253,250,201,30,0,0,0,0,0,0,0,0,0,0,0,0,46,166,166,166,166,166,166,180,253,253,253,253,229,182,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,253,253,253,253,253,253,253,253,253,253,194,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,253,253,253,253,253,253,253,253,253,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,35,35,76,195,253,253,253,253,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,17,28,135,162,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,232,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,234,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,189,18,0,0,9,220,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,30,0,0,90,254,170,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,246,253,30,0,0,169,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,180,2,0,57,252,233,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,230,253,60,0,0,130,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,170,253,253,117,31,27,248,249,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,245,255,254,254,254,254,255,254,249,123,39,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,247,193,193,221,253,254,253,253,253,253,228,128,0,0,0,0,0,0,0,0,0,0,0,0,0,9,217,242,123,0,0,7,116,254,232,120,177,238,239,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,8,229,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,227,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,243,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,86,110,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,253,229,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,253,250,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,213,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,248,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,217,253,253,137,0,0,0,0,0,0,0,0,0,43,159,174,174,33,0,0,0,0,0,0,0,0,0,7,253,253,236,29,0,0,0,0,0,0,0,0,20,225,253,253,253,219,120,0,0,0,0,0,0,0,0,98,253,253,228,0,0,0,0,0,0,0,0,20,188,253,253,253,253,253,253,0,0,0,0,0,0,0,0,164,253,253,134,0,0,0,0,0,0,0,0,175,253,253,226,73,240,253,253,0,0,0,0,0,0,0,0,255,253,253,141,0,0,0,0,0,0,0,59,243,253,253,57,0,199,253,253,0,0,0,0,0,0,0,0,215,253,253,228,0,0,0,0,0,0,0,115,253,253,138,6,0,212,253,214,0,0,0,0,0,0,0,0,130,253,253,228,0,0,0,0,0,0,0,199,253,253,37,0,37,242,253,26,0,0,0,0,0,0,0,0,130,253,253,238,37,0,0,0,0,0,0,199,253,253,37,37,221,253,152,1,0,0,0,0,0,0,0,0,21,253,253,253,220,37,0,0,0,0,0,199,253,253,228,235,253,253,26,0,0,0,0,0,0,0,0,0,1,96,253,253,253,238,230,144,106,106,106,221,253,253,253,253,253,101,2,0,0,0,0,0,0,0,0,0,0,1,88,207,253,253,253,253,253,253,253,253,253,253,253,253,40,2,0,0,0,0,0,0,0,0,0,0,0,0,0,7,88,210,253,253,253,253,253,253,216,234,210,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,94,129,96,5,4,5,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,101,166,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,89,200,200,245,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,156,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,112,247,252,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,22,204,253,253,253,253,253,253,227,214,224,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,130,38,0,146,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,93,248,253,253,175,154,14,2,0,110,251,253,253,235,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,68,68,6,0,0,0,12,216,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,138,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,251,111,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,136,177,177,177,177,244,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,124,167,253,253,253,253,253,253,253,253,147,47,0,0,0,0,0,0,0,0,0,0,0,0,13,70,127,246,253,253,253,253,253,253,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,244,237,249,253,253,253,253,253,253,253,233,71,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,115,39,216,253,253,253,253,253,253,253,253,249,67,0,0,0,0,0,0,0,0,0,0,124,245,253,253,253,233,228,253,253,253,195,38,80,233,253,253,253,237,39,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,106,28,0,0,164,249,253,253,253,139,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,240,145,13,0,0,0,0,116,253,253,253,45,0,0,0,0,0,0,0,0,0,107,209,253,253,253,223,147,40,0,0,0,0,0,0,21,83,199,133,8,0,0,0,0,0,0,0,0,0,0,19,99,99,99,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,208,255,254,254,152,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,197,242,253,253,253,253,253,215,197,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,208,252,253,253,215,114,127,217,250,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,146,29,0,0,26,237,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,251,253,251,60,4,0,10,95,240,253,253,180,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,248,0,0,59,203,253,253,253,176,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,239,253,249,10,99,239,253,253,242,135,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,218,253,253,253,207,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,250,133,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,22,0,0,0,29,214,253,253,253,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,75,219,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,253,248,187,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,85,4,215,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,235,253,201,9,0,181,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,187,3,0,118,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,208,253,253,128,70,240,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,251,241,253,253,205,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,253,242,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,119,241,253,164,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,159,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,123,186,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,81,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,237,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,253,253,209,208,208,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,254,253,253,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,116,116,117,137,248,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,51,0,0,0,3,119,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,113,0,0,0,98,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,82,0,117,223,241,152,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,184,77,239,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,137,131,229,253,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,96,148,148,148,69,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,85,191,237,252,252,252,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,162,232,246,252,232,152,126,126,126,144,247,242,174,0,0,0,0,0,0,0,0,0,0,0,0,70,169,253,252,221,162,84,0,0,0,0,0,29,232,252,231,28,0,0,0,0,0,0,0,0,0,0,0,169,252,253,217,29,0,0,0,0,0,0,0,7,113,252,252,218,0,0,0,0,0,0,0,0,0,0,128,253,253,0,0,0,0,0,0,0,0,0,0,61,227,253,243,79,0,0,0,0,0,0,0,0,0,0,92,252,252,36,0,0,0,0,0,0,0,22,128,253,252,252,189,0,0,0,0,0,0,0,0,0,0,0,110,252,252,62,0,0,0,0,13,101,180,237,252,253,245,126,16,0,0,0,0,0,0,0,0,0,0,0,7,170,252,187,43,0,16,108,218,252,252,252,252,154,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,159,203,221,252,253,252,244,121,42,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,253,253,253,253,230,131,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,112,242,253,252,252,231,124,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,234,252,252,236,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,252,236,189,14,84,239,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,252,244,66,0,0,0,232,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,170,0,0,0,0,189,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,91,0,0,0,64,239,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,247,172,22,66,233,247,252,207,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,252,252,252,253,231,136,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,147,147,147,86,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,19,24,24,24,55,44,76,139,138,170,253,253,255,232,107,5,0,0,0,0,0,0,0,0,0,0,120,196,215,252,253,252,252,252,252,253,252,252,252,252,253,252,240,37,0,0,0,0,0,0,0,0,0,0,129,252,252,252,253,252,252,252,252,190,208,202,252,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,30,128,215,116,56,160,128,98,45,5,17,70,252,252,253,214,33,0,0,0,0,0,0,0,0,0,0,0,0,0,19,55,0,0,0,0,0,0,0,122,252,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,253,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,7,8,11,0,0,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,233,201,202,206,191,191,243,218,155,138,191,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,253,253,254,253,253,253,253,254,253,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,237,102,85,84,93,190,145,85,84,181,190,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,228,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,232,0,0,0,65,14,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,243,198,233,234,248,237,240,233,234,233,128,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,254,253,248,190,216,255,253,253,232,126,65,16,0,0,0,0,0,0,0,0,0,0,0,254,253,253,182,59,42,42,38,0,18,42,78,156,253,253,254,222,106,0,0,0,0,0,0,0,0,0,0,63,107,9,0,0,0,0,0,0,0,0,0,0,27,107,168,244,254,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,247,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,121,0,0,0,0,0,0,0,0,0,0,31,123,7,0,0,0,0,0,0,0,0,29,7,123,254,251,212,35,0,0,0,0,0,0,0,0,0,0,128,253,201,174,121,191,121,129,147,191,191,233,201,254,253,197,0,0,0,0,0,0,0,0,0,0,0,0,28,188,232,246,253,253,253,253,254,253,253,253,245,215,91,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,120,145,190,190,190,190,190,120,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,236,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,212,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,251,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,231,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,164,190,163,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,215,253,252,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,143,211,252,252,253,252,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,219,252,252,252,252,147,226,252,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,218,253,254,253,223,80,0,8,201,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,213,252,252,239,89,32,0,0,78,252,201,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,247,252,221,126,17,0,0,0,0,245,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,16,152,253,252,212,63,0,0,0,0,0,71,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,9,186,252,253,217,29,0,0,0,0,0,27,211,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,194,27,0,0,0,0,0,0,126,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,64,239,252,217,0,0,0,0,0,0,0,96,232,252,97,0,0,0,0,0,0,0,0,0,0,0,0,4,195,252,221,29,0,0,0,0,0,0,52,234,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,247,98,0,0,0,0,0,0,55,232,252,210,14,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,143,0,0,0,0,0,0,45,236,252,244,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,127,0,0,0,0,48,174,253,255,222,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,221,163,128,146,190,247,252,252,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,252,252,252,253,252,252,212,82,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,180,189,189,190,110,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,162,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,231,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,94,244,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,88,234,253,252,222,172,172,143,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,157,252,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,231,252,252,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,231,252,252,252,252,253,252,223,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,233,252,252,252,252,252,253,252,242,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,246,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,252,252,252,252,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,120,252,252,252,252,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,252,252,252,252,253,241,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,187,121,252,253,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,214,252,241,68,14,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,212,20,190,252,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,218,133,252,252,253,214,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,226,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,252,252,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,252,238,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,59,194,253,253,253,253,253,253,253,255,253,253,253,253,132,59,41,0,0,0,0,0,0,0,0,0,0,59,251,251,251,251,251,251,251,251,251,253,251,251,251,251,251,251,209,117,27,0,0,0,0,0,0,0,0,194,251,251,251,251,251,251,251,251,251,253,251,251,251,251,251,251,251,251,57,0,0,0,0,0,0,0,0,253,251,251,251,251,226,212,212,212,212,18,18,18,48,227,251,251,251,251,237,0,0,0,0,0,0,0,0,253,251,251,160,153,59,0,0,0,0,0,0,0,16,156,251,251,251,198,153,0,0,0,0,0,0,0,0,97,96,96,7,0,0,0,0,0,0,0,0,0,39,251,251,251,251,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,219,251,251,251,184,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,251,251,251,245,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,216,251,251,251,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,220,251,251,251,251,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,230,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,251,251,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,175,234,253,251,251,223,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,251,253,251,251,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,145,251,251,253,251,251,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,251,253,251,142,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,140,245,251,251,251,233,141,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,145,251,251,251,208,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,208,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,251,251,86,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,232,254,150,1,7,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,253,253,243,10,145,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,239,66,0,237,253,240,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,129,230,253,253,133,0,0,111,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,146,253,253,253,106,10,0,0,13,253,253,170,0,0,50,38,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,198,12,63,73,73,139,253,253,219,73,73,220,184,7,0,0,0,0,0,0,0,0,0,0,25,253,253,253,240,206,247,253,253,254,253,253,253,253,253,253,221,16,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,254,253,253,253,230,156,156,39,0,0,0,0,0,0,0,0,0,0,0,3,99,165,253,170,144,144,144,144,150,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,3,0,0,0,0,7,202,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,255,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,189,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,240,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,217,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,197,255,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,238,194,76,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,230,159,4,0,35,0,0,21,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,158,0,0,0,0,0,21,205,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,53,0,0,0,0,0,156,187,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,172,0,0,0,0,0,101,213,45,242,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,149,0,0,0,0,43,232,60,0,224,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,178,3,0,0,31,235,60,0,0,224,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,241,126,46,81,221,97,0,0,0,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,219,254,218,69,0,0,0,27,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,233,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,34,82,144,173,254,148,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,67,168,224,253,224,196,253,253,253,237,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,205,154,72,25,6,44,44,202,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,83,6,0,0,0,0,0,0,142,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,250,193,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,244,246,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,185,247,205,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,156,253,254,145,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,179,228,253,253,255,130,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,232,253,253,253,253,254,253,241,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,111,44,0,0,15,197,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,194,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,220,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,118,250,238,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,29,0,0,33,45,168,253,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,231,188,188,237,253,244,99,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,220,143,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,140,224,255,214,158,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,156,252,254,254,249,248,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,242,254,254,179,162,63,129,188,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,211,254,182,82,1,0,0,0,40,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,202,254,182,12,0,0,0,0,54,241,248,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,215,12,0,0,0,0,0,106,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,254,89,0,0,0,0,0,0,126,254,246,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,16,0,0,0,0,0,88,245,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,241,254,189,76,0,0,67,147,248,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,240,254,253,240,240,251,254,254,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,239,239,239,239,161,143,204,254,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,246,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,196,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,184,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,113,176,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,194,243,252,215,167,52,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,215,252,252,252,166,104,197,227,197,198,197,122,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,207,252,252,252,252,253,252,252,249,223,162,84,19,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,252,252,252,253,204,112,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,152,140,140,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,252,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,245,118,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,233,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,252,252,198,72,57,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,227,252,253,252,252,196,91,29,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,253,252,252,252,252,253,152,140,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,140,153,253,255,253,253,253,253,192,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,27,90,167,233,252,252,253,243,225,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,57,57,57,178,205,252,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,237,252,252,252,252,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,112,221,236,112,112,237,141,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,40,167,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,40,165,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,164,253,253,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,176,253,253,253,247,228,189,18,10,25,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,218,253,253,253,200,72,10,131,155,191,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,222,93,34,71,188,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,220,253,246,109,31,156,253,253,253,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,125,35,230,253,253,253,237,204,158,80,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,144,194,253,253,253,173,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,253,253,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,145,253,253,253,253,253,237,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,181,253,253,253,253,253,201,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,191,253,237,172,232,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,204,20,209,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,116,189,253,253,189,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,194,253,215,108,253,253,226,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,249,246,253,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,142,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,171,105,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,134,169,169,169,169,99,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,252,252,86,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,154,253,218,212,243,253,253,104,0,0,0,0,0,0,0,0,169,60,0,0,0,0,0,0,0,0,0,0,6,63,11,0,83,246,252,182,0,0,0,0,0,0,0,131,232,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,98,0,0,0,9,84,206,251,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,252,252,90,64,64,134,204,253,252,221,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,219,252,252,252,252,253,137,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,253,253,253,255,253,253,243,211,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,155,190,227,252,252,252,252,239,168,71,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,206,242,252,252,253,252,251,160,38,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,252,252,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,236,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,214,140,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,63,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,240,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,184,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,214,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,241,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,245,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,251,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,250,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,221,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,255,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,250,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,241,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,232,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,135,220,255,226,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,254,254,254,254,248,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,240,248,201,65,56,202,254,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,248,96,0,0,0,48,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,135,0,0,16,43,2,191,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,179,153,170,239,248,3,182,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,254,254,254,204,95,7,229,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,157,157,144,102,9,0,90,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,240,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,215,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,182,238,238,161,77,49,243,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,240,253,254,254,254,254,254,252,254,223,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,227,254,186,101,78,162,243,254,254,254,254,163,5,10,3,0,0,0,0,0,0,0,0,0,0,0,0,83,254,227,11,0,0,4,113,254,254,254,254,254,208,223,98,0,0,0,0,0,0,0,0,0,0,0,0,198,254,128,0,0,3,120,254,254,208,78,198,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,198,254,61,0,57,170,254,254,207,24,0,13,94,178,143,5,0,0,0,0,0,0,0,0,0,0,0,0,150,254,241,230,253,254,246,133,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,159,244,254,252,142,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,106,190,203,255,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,112,237,254,249,183,98,219,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,173,45,0,0,233,231,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,252,251,161,9,0,13,124,253,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,251,254,122,0,0,0,29,226,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,178,6,0,0,0,19,211,254,248,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,10,0,1,5,64,188,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,180,178,186,254,254,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,243,254,254,251,161,167,254,221,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,105,77,47,0,92,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,222,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,196,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,235,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,179,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,221,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,245,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,173,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,218,255,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,106,247,254,222,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,251,254,190,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,237,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,182,254,254,92,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,182,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,180,254,254,134,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,186,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,247,254,171,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,250,254,208,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,249,254,250,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,183,254,249,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,248,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,235,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,255,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,52,148,193,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,173,202,253,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,102,180,247,253,246,253,243,167,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,175,253,248,163,84,50,211,246,226,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,254,138,38,0,0,0,146,253,227,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,107,0,0,0,0,0,86,255,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,141,0,0,0,0,0,57,247,238,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,206,251,119,2,0,0,0,0,233,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,157,253,176,99,11,0,0,207,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,78,201,253,219,133,81,180,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,107,89,36,119,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,243,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,115,201,122,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,163,254,254,254,254,218,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,225,233,108,47,52,184,254,218,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,187,225,42,0,0,0,8,185,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,233,70,0,0,0,0,0,64,236,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,85,7,0,0,0,0,0,0,174,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,243,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,204,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,235,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,251,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,15,0,22,232,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,219,222,248,193,222,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,254,254,254,254,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,251,213,129,190,255,254,254,253,227,97,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,237,254,127,0,33,196,254,154,114,221,246,227,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,147,3,7,180,254,179,10,0,0,35,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,242,27,29,213,254,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,218,135,56,79,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,251,246,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,95,51,254,254,243,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,153,184,254,239,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,186,254,254,220,43,243,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,62,105,15,31,235,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,212,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,255,243,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,250,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,249,22,135,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,248,204,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,156,191,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,208,228,206,252,231,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,68,231,252,68,72,252,252,225,164,164,23,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,189,252,252,252,253,252,252,252,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,23,183,252,252,252,252,253,252,247,177,177,221,217,252,220,31,0,0,0,0,0,0,0,0,0,0,0,0,93,252,252,252,252,234,74,74,69,0,0,44,134,252,252,103,0,0,0,0,0,0,0,0,0,0,0,64,238,252,252,252,252,103,0,0,0,0,0,0,134,252,252,103,0,0,0,0,0,0,0,0,0,0,6,166,252,252,204,22,14,6,0,0,0,0,0,0,134,252,236,67,0,0,0,0,0,0,0,0,0,0,42,252,252,246,97,0,0,0,0,0,0,0,0,23,224,252,207,0,0,0,0,0,0,0,0,0,0,36,216,252,252,133,0,0,0,0,0,0,0,0,0,119,252,252,207,0,0,0,0,0,0,0,0,0,0,122,253,253,178,0,0,0,0,0,0,0,0,0,31,210,253,216,35,0,0,0,0,0,0,0,0,0,0,208,252,252,142,0,0,0,0,0,0,0,0,29,204,252,252,40,0,0,0,0,0,0,0,0,0,0,68,236,252,244,27,0,0,0,0,0,0,4,24,205,252,232,88,5,0,0,0,0,0,0,0,0,0,0,105,252,244,70,0,0,0,0,0,0,0,130,252,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,105,252,237,0,0,0,0,0,0,45,224,247,252,252,185,52,0,0,0,0,0,0,0,0,0,0,0,0,210,252,237,0,0,0,0,29,144,222,253,252,250,151,9,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,237,0,0,16,134,245,252,252,253,220,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,251,238,238,240,252,252,252,252,163,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,192,252,252,252,252,252,252,217,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,199,252,252,252,252,111,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,250,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,221,229,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,20,0,0,0,0,0,0,0,0,22,152,224,196,24,0,0,0,0,0,0,0,0,0,0,0,0,245,254,20,0,0,0,0,0,0,0,84,213,254,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,245,254,20,0,0,0,0,0,0,81,245,241,145,52,187,140,0,0,0,0,0,0,0,0,0,0,0,0,245,254,20,0,0,0,0,0,21,211,254,137,0,21,254,140,0,0,0,0,0,0,0,0,0,0,0,0,245,254,20,0,0,0,0,0,182,254,184,3,0,21,254,100,0,0,0,0,0,0,0,0,0,0,0,0,142,254,80,0,0,0,0,30,233,213,28,0,0,81,254,36,0,0,0,0,0,0,0,0,0,0,0,0,141,254,125,0,0,0,0,89,254,109,0,0,0,204,231,24,0,0,0,0,0,0,0,0,0,0,0,0,86,254,180,0,0,0,5,249,254,54,0,4,138,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,236,24,0,0,6,254,224,3,28,142,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,206,253,237,89,21,112,254,163,81,213,252,159,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,254,254,254,254,254,254,231,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,109,189,247,254,254,246,125,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,254,139,160,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,214,171,133,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,206,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,184,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,243,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,243,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,182,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,244,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,181,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,246,248,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,133,0,10,127,121,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,87,29,177,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,92,200,254,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,250,254,248,254,155,233,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,254,114,125,252,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,218,254,242,82,235,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,252,254,152,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,242,143,101,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,170,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,123,206,245,244,164,215,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,108,232,253,244,146,38,0,142,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,209,254,236,119,44,0,0,0,127,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,210,17,0,0,0,0,83,254,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,185,9,0,0,0,0,60,224,253,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,249,186,9,0,0,0,0,197,251,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,127,0,0,34,151,247,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,235,229,99,7,204,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,249,199,253,115,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,136,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,204,253,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,182,253,254,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,190,251,196,178,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,236,79,102,229,219,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,207,66,229,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,254,232,232,236,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,254,253,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,202,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,183,253,253,238,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,168,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,235,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,190,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,65,0,0,0,0,0,0,0,0,0,29,142,142,112,24,4,0,0,0,0,0,0,0,0,0,254,253,245,54,0,0,0,0,0,0,0,16,95,252,253,253,253,253,126,3,0,0,0,0,0,0,0,0,227,253,200,0,0,0,0,0,0,0,19,187,253,253,253,253,253,253,253,100,0,0,0,0,0,0,0,0,136,253,200,0,0,0,0,0,0,19,186,253,253,250,176,100,144,237,253,135,0,0,0,0,0,0,0,0,136,253,200,0,0,0,0,0,16,187,253,253,211,97,0,0,0,102,253,234,0,0,0,0,0,0,0,0,136,253,249,59,0,0,0,11,191,253,253,115,13,0,0,0,0,135,253,145,0,0,0,0,0,0,0,0,76,253,253,180,0,0,4,197,253,253,208,20,0,0,0,0,70,252,253,135,0,0,0,0,0,0,0,0,16,242,253,224,28,0,20,253,253,219,25,0,0,0,0,20,192,253,242,64,0,0,0,0,0,0,0,0,0,154,253,253,69,0,125,253,253,117,0,0,0,25,117,223,253,253,76,0,0,0,0,0,0,0,0,0,0,60,232,253,229,133,157,253,253,122,15,25,66,217,253,253,237,149,10,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,213,221,253,253,253,199,72,0,0,0,0,0,0,0,0,0,0,0,0,0,8,151,253,253,253,253,253,253,253,253,253,249,153,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,185,253,253,253,253,253,209,135,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,121,121,219,253,253,253,253,255,253,204,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,163,251,252,252,252,252,252,252,252,253,252,252,248,204,28,0,0,0,0,0,0,0,0,0,0,0,0,76,247,252,252,252,252,237,158,158,158,159,247,252,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,197,222,172,172,74,33,0,0,0,0,37,160,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,23,33,0,0,0,0,0,39,67,68,124,247,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,54,145,186,224,252,253,252,252,252,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,194,252,252,252,252,252,253,252,252,252,196,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,252,252,232,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,250,238,161,106,107,106,106,229,252,252,158,5,0,0,0,0,0,0,0,0,0,0,0,0,0,38,154,153,100,0,0,0,0,0,0,101,224,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,239,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,218,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,250,107,0,0,0,0,0,0,0,0,0,0,0,0,0,60,26,0,0,0,0,0,0,0,0,0,61,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,89,238,184,0,0,0,0,0,0,0,0,0,76,252,252,119,0,0,0,0,0,0,0,0,0,0,0,60,238,252,141,0,0,0,0,0,0,0,15,54,190,252,252,119,0,0,0,0,0,0,0,0,0,0,0,81,252,252,239,159,41,41,41,41,90,173,194,252,252,252,252,119,0,0,0,0,0,0,0,0,0,0,0,72,246,252,252,252,252,252,253,252,252,252,252,252,252,249,218,44,0,0,0,0,0,0,0,0,0,0,0,0,84,204,248,252,252,252,253,252,252,252,248,238,147,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,119,196,252,120,119,119,119,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,159,6,0,0,0,4,63,63,104,159,144,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,221,254,129,206,222,222,224,254,254,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,254,254,254,254,254,254,169,236,254,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,169,24,20,4,4,4,4,86,234,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,168,0,0,0,0,0,8,224,254,184,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,99,0,0,0,0,0,146,254,215,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,192,30,0,0,0,0,35,252,245,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,211,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,250,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,239,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,245,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,213,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,231,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,156,163,254,254,254,232,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,254,253,253,242,233,246,250,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,217,253,235,180,253,49,0,89,253,229,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,253,237,15,20,165,2,0,59,253,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,185,36,0,20,78,0,0,97,245,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,235,53,0,0,0,0,0,0,217,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,174,0,0,0,0,0,4,132,249,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,144,0,0,79,12,0,137,222,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,172,100,174,254,237,234,251,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,253,253,253,254,253,253,237,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,231,255,231,254,254,254,241,113,60,242,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,235,253,151,168,253,242,158,30,0,0,151,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,222,71,241,228,43,0,0,0,0,136,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,19,247,253,80,209,253,123,0,0,0,0,0,41,244,195,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,222,186,254,200,18,0,0,0,0,0,0,195,195,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,254,241,68,0,0,0,0,0,0,0,196,196,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,113,0,0,0,0,0,0,0,0,195,195,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,30,0,0,0,0,0,0,0,58,235,165,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,177,0,0,0,0,0,0,0,0,151,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,135,53,0,0,0,0,0,99,248,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,237,255,213,102,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,254,254,212,85,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,120,75,75,159,248,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,229,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,246,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,119,246,247,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,77,133,229,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,209,243,254,254,254,254,254,211,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,248,168,111,84,196,248,244,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,121,121,78,0,0,0,0,123,248,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,246,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,239,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,251,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,111,234,238,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,11,113,227,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,250,244,254,254,239,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,241,159,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,243,119,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,253,242,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,173,254,254,254,236,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,208,254,254,254,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,235,254,254,254,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,237,254,254,254,254,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,242,254,254,254,254,254,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,239,254,254,254,254,254,254,249,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,254,246,123,15,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,254,254,254,254,186,59,0,12,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,245,167,18,0,0,96,255,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,177,0,0,0,0,131,254,218,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,134,15,0,0,0,0,231,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,250,254,252,63,0,0,0,0,0,250,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,243,0,0,0,0,5,173,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,61,0,0,0,23,169,254,254,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,11,0,0,34,207,254,254,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,72,37,86,233,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,253,231,254,254,254,223,119,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,236,254,254,254,254,254,176,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,185,254,254,235,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,122,147,170,169,147,147,147,43,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,254,254,254,254,254,237,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,201,254,254,249,249,249,249,249,202,249,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,242,228,228,118,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,254,254,254,254,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,254,254,254,174,144,176,254,254,165,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,137,238,217,46,2,0,8,180,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,236,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,249,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,115,0,0,0,0,0,0,30,230,254,195,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,244,0,0,0,0,0,0,0,207,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,244,0,0,0,0,0,0,0,207,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,218,249,64,0,0,0,0,0,0,103,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,239,41,0,0,0,0,0,172,254,210,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,244,254,222,152,0,0,0,95,247,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,242,254,254,227,181,250,253,254,251,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,159,249,254,254,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,146,185,245,146,58,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,128,251,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,141,241,242,47,10,179,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,187,252,252,209,41,172,252,222,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,229,252,252,77,25,95,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,227,103,3,76,243,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,226,88,0,0,204,253,244,25,0,7,66,28,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,194,57,57,82,253,252,187,157,170,187,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,228,253,252,252,252,253,252,224,118,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,240,253,252,252,252,253,252,252,202,140,65,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,207,253,253,226,113,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,252,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,227,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,28,0,0,10,29,141,141,191,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,53,0,38,172,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,228,48,197,252,252,253,252,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,241,252,252,252,253,227,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,253,253,254,253,253,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,252,253,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,252,224,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,228,252,140,65,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,240,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,214,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,47,60,0,0,0,0,94,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,234,45,0,0,46,234,253,253,253,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,220,253,253,152,0,0,93,253,253,253,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,253,253,253,197,0,12,208,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,130,253,253,253,253,197,0,69,253,253,253,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,242,94,0,96,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,253,253,253,253,113,0,0,192,253,253,232,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,211,165,69,209,253,253,190,69,9,0,0,0,0,0,0,0,0,0,0,0,0,2,171,253,253,253,253,253,253,253,253,253,253,253,253,253,205,199,51,0,0,0,0,0,0,0,0,0,0,7,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,177,4,0,0,0,0,0,0,0,0,0,2,156,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,20,114,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,179,2,0,0,0,0,0,0,0,0,0,0,3,30,107,154,154,154,224,253,253,224,154,203,154,154,154,246,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,210,253,225,44,0,12,0,0,0,23,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,168,254,139,78,92,236,193,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,159,5,0,0,132,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,194,20,0,0,0,30,250,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,235,163,23,0,0,0,0,0,167,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,221,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,251,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,140,200,170,124,238,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,168,246,254,254,233,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,202,249,149,21,7,33,254,254,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,136,233,74,0,0,0,147,247,103,178,244,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,97,0,0,0,62,255,189,0,19,202,226,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,194,3,0,0,4,228,244,40,0,0,54,213,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,215,0,0,56,207,244,89,0,0,0,0,17,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,247,166,157,241,242,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,228,167,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,255,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,191,243,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,242,249,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,215,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,237,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,245,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,227,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,158,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,251,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,222,255,197,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,219,254,248,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,245,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,238,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,202,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,159,143,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,233,164,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,165,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,252,209,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,35,0,99,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,210,233,0,177,247,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,254,233,0,207,240,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,214,36,235,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,225,38,60,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,131,252,229,87,0,65,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,135,254,251,116,0,0,168,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,72,0,0,0,168,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,230,46,2,0,0,2,174,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,252,116,0,0,0,0,22,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,166,254,157,0,0,0,0,0,22,254,254,122,93,56,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,196,64,22,22,92,130,187,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,5,205,254,254,254,254,254,254,254,254,254,254,139,87,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,83,161,254,254,254,192,118,113,254,175,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,10,10,4,0,127,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,255,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,243,255,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,69,69,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,128,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,64,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,191,255,255,191,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,128,255,255,255,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,128,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,18,18,18,18,18,18,18,18,18,18,18,18,18,18,2,0,0,0,0,0,0,0,0,3,36,36,125,189,253,253,253,253,253,253,253,253,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,124,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,203,182,182,182,182,182,229,253,253,253,165,0,0,0,0,0,0,0,0,158,253,193,131,47,47,47,47,47,14,0,0,0,0,52,196,253,253,218,33,0,0,0,0,0,0,0,0,24,130,10,0,0,0,0,0,0,0,0,0,0,61,241,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,59,246,253,253,253,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,110,253,253,253,249,199,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,161,253,253,253,248,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,195,253,253,253,223,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,143,232,253,253,253,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,253,253,129,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,217,252,253,253,227,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,229,253,253,252,222,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,197,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,43,66,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,151,140,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,60,152,152,104,3,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,60,0,0,0,0,0,0,32,216,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,68,179,252,9,0,0,0,0,0,134,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,189,252,252,252,149,0,0,0,0,15,189,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,252,252,207,17,0,0,0,0,74,252,252,59,0,0,0,0,0,0,0,0,0,0,0,20,30,162,230,252,252,252,121,31,6,0,0,53,230,252,170,17,0,0,0,0,0,0,0,0,0,0,32,210,252,252,252,252,252,252,252,253,154,127,0,75,252,252,14,0,0,0,0,0,0,0,0,0,0,38,216,252,252,252,252,252,252,252,252,253,252,251,238,242,252,252,99,21,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,59,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,59,0,0,0,0,0,0,0,0,0,106,253,253,253,253,241,149,186,253,191,255,253,253,253,253,253,253,253,59,0,0,0,0,0,0,0,0,0,18,79,96,44,44,39,0,16,44,18,69,226,252,252,199,192,192,139,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,251,166,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,234,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,252,102,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,225,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,193,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,207,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,245,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,246,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,255,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,229,254,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,194,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,191,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,130,148,254,255,254,254,254,121,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,92,253,253,253,253,253,253,253,253,253,159,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,180,235,158,111,111,111,111,202,240,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,231,253,241,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,231,253,240,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,230,253,253,230,174,71,50,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,78,230,253,253,253,253,253,253,253,188,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,78,196,253,253,253,253,206,191,191,191,244,253,141,35,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,205,94,15,0,0,0,99,245,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,45,224,253,204,94,16,0,0,0,0,0,0,187,253,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,30,49,17,0,0,0,0,0,0,0,0,139,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,234,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,157,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,250,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,151,250,253,253,152,10,0,0,0,0,0,0,0,0,0,0,0,130,242,242,242,242,242,242,242,242,242,251,253,253,253,101,2,0,0,0,0,0,0,0,0,0,0,0,0,3,15,129,205,253,253,253,253,253,253,253,214,129,23,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,252,252,228,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,246,75,0,0,0,0,57,163,226,225,225,130,85,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,13,187,252,253,252,252,252,252,198,53,0,0,0,0,0,0,0,0,0,0,0,253,252,252,99,0,0,0,73,252,252,162,84,84,180,252,253,224,137,10,0,0,0,0,0,0,0,0,0,174,252,252,223,0,0,0,197,252,252,0,0,0,13,112,253,252,252,84,0,0,0,0,0,0,0,0,0,0,226,253,253,174,63,0,198,253,253,114,12,0,0,0,0,163,253,237,50,0,0,0,0,0,0,0,0,0,100,252,252,252,241,225,246,252,252,253,181,85,76,0,0,85,252,252,112,0,0,0,0,0,0,0,0,0,19,87,233,252,253,252,252,252,252,253,252,252,246,197,198,215,252,252,112,0,0,0,0,0,0,0,0,0,0,0,56,84,225,233,252,252,252,253,252,252,252,252,253,252,252,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,112,205,252,253,252,252,252,252,253,204,112,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,40,63,63,116,199,228,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,162,171,222,222,224,254,242,254,254,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,254,254,254,254,254,254,254,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,202,173,101,101,9,4,4,141,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,251,254,168,0,0,0,0,0,0,140,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,168,0,0,0,0,0,0,140,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,168,0,0,0,0,0,0,140,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,245,119,0,0,0,0,0,0,97,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,41,0,0,0,0,0,0,0,44,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,205,254,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,250,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,176,255,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,255,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,255,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,251,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,243,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,238,253,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,147,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,174,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,253,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,235,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,248,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,238,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,243,253,251,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,247,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,255,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,174,253,249,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,203,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,230,253,243,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,240,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,194,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,194,253,253,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,238,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,161,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,237,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,191,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,236,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,173,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,215,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,218,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,120,254,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,47,130,138,172,206,159,253,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,40,191,240,254,253,253,253,254,253,253,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,34,204,253,253,253,195,160,85,69,254,253,253,253,228,15,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,241,176,59,0,0,0,93,254,241,241,254,160,0,0,0,0,0,0,0,0,0,0,0,0,43,249,253,199,27,0,0,0,0,0,42,148,119,232,253,9,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,17,0,0,0,0,0,0,0,0,89,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,68,0,0,0,0,0,0,0,0,206,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,254,178,161,136,57,0,0,95,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,73,206,220,253,253,253,254,249,230,230,245,253,200,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,46,122,137,138,137,232,253,254,253,253,253,208,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,240,253,203,86,160,228,254,240,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,245,254,195,34,0,0,60,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,254,253,164,15,0,0,0,110,254,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,108,195,219,247,128,9,0,0,0,11,215,254,89,0,0,0,0,0,0,0,0,0,0,0,0,9,159,254,253,253,185,84,0,0,0,0,0,57,253,228,15,0,0,0,0,0,0,0,0,0,0,0,55,203,254,255,140,17,0,0,0,0,0,0,30,237,254,102,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,254,99,30,47,47,47,47,47,106,226,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,42,215,253,254,253,236,253,254,253,253,253,254,248,179,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,69,128,160,169,253,254,253,211,160,136,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,154,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,152,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,187,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,208,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,210,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,230,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,172,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,217,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,195,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,216,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,244,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,210,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,235,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,206,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,206,249,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,207,253,253,229,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,253,236,151,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,207,253,164,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,138,253,208,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,253,217,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,210,255,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,209,253,177,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,210,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,255,248,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,242,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,129,247,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,236,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,225,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,233,253,175,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,198,27,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,253,224,185,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,250,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,211,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,187,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,221,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,109,0,0,0,15,96,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,21,0,0,68,211,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,122,2,6,110,245,252,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,63,6,155,252,253,205,136,196,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,63,153,252,252,174,11,0,169,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,86,0,0,31,218,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,205,11,0,64,213,205,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,221,127,189,247,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,211,252,252,252,253,252,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,147,252,252,253,94,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,113,113,113,114,238,253,253,174,114,113,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,147,234,252,252,252,253,252,252,252,252,253,252,199,28,0,0,0,0,0,0,0,0,0,0,0,13,73,227,253,252,252,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,26,156,252,252,253,252,252,252,252,225,239,223,242,252,240,249,245,74,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,252,220,112,112,0,63,0,75,112,63,146,195,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,181,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,177,252,252,253,252,177,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,252,253,252,252,242,169,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,189,253,252,252,252,252,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,241,253,253,253,255,128,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,233,252,252,253,252,199,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,233,252,253,252,252,199,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,223,253,252,252,252,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,47,0,0,0,0,0,0,112,237,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,50,0,0,0,0,0,0,226,253,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,237,226,225,116,85,85,147,249,252,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,44,202,252,253,252,252,252,252,253,252,252,252,252,196,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,161,225,249,252,252,252,253,252,245,223,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,142,252,252,253,127,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,146,101,51,89,216,255,254,255,166,192,146,190,194,60,0,0,0,0,0,0,0,0,0,0,0,83,184,206,253,253,230,248,253,253,253,253,253,253,253,253,253,234,27,0,0,0,0,0,0,0,0,0,0,160,253,253,198,139,103,85,139,55,32,104,99,135,139,184,248,218,21,0,0,0,0,0,0,0,0,0,0,114,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,27,5,4,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,241,253,253,167,198,190,206,88,134,157,131,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,253,253,253,253,253,253,253,253,231,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,239,237,200,129,198,237,239,253,253,234,81,0,0,0,0,0,0,0,0,0,0,0,0,25,228,229,181,92,10,0,0,0,0,0,8,92,200,253,202,10,0,0,0,0,0,0,0,0,0,0,0,8,54,30,0,0,0,0,0,0,0,0,0,0,21,246,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,159,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,58,91,0,0,0,0,0,0,0,0,0,163,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,3,175,240,22,0,0,0,0,82,60,128,211,252,253,212,3,0,0,0,0,0,0,0,0,0,0,0,0,52,240,253,250,182,141,240,249,253,191,253,253,253,203,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,231,94,253,253,253,253,253,221,253,226,126,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,53,11,253,253,246,214,168,90,37,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,83,192,152,170,131,131,70,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,254,254,254,254,254,254,254,121,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,254,251,236,249,254,254,254,254,43,63,143,31,2,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,220,87,0,108,254,254,235,190,82,240,254,255,92,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,93,0,0,50,223,190,22,0,212,254,254,255,142,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,111,0,0,0,0,0,0,71,239,254,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,217,0,0,0,0,0,50,238,254,254,254,163,6,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,224,17,0,0,0,0,100,254,254,254,235,20,0,0,0,0,0,0,0,0,0,0,0,0,0,15,231,254,254,175,0,0,0,49,239,254,254,234,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,230,254,243,59,0,0,160,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,114,0,51,210,254,254,154,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,227,254,244,138,240,254,254,154,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,254,254,254,194,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,140,254,254,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,254,244,178,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,230,254,254,254,254,254,254,229,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,255,254,198,24,92,254,254,200,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,219,254,250,237,242,254,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,254,254,254,254,211,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,130,191,166,153,130,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,146,146,139,108,146,146,146,146,204,255,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,60,246,253,253,253,253,253,253,253,192,177,177,177,118,51,0,0,0,0,0,0,0,0,0,0,0,0,20,205,249,94,139,139,117,32,32,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,169,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,227,227,239,227,188,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,215,253,251,205,205,151,166,205,250,189,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,123,0,0,0,0,0,119,253,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,237,251,168,3,0,0,0,0,0,2,93,223,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,120,0,0,0,0,0,0,0,0,0,77,251,202,10,0,0,0,0,0,0,0,0,0,0,0,0,72,112,0,0,0,0,0,0,0,0,0,0,0,119,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,247,247,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,212,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,227,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,11,0,0,0,0,0,0,0,40,183,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,101,0,0,0,0,0,31,105,184,250,165,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,246,71,71,170,179,179,249,253,226,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,93,253,253,253,253,253,198,120,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,226,47,0,0,0,0,0,152,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,224,253,220,0,0,0,6,91,237,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,0,0,0,66,253,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,253,234,0,0,62,244,253,253,243,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,235,253,253,178,12,0,68,238,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,180,14,0,12,204,253,253,253,145,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,246,253,243,52,0,5,188,253,253,243,108,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,245,253,253,65,0,14,184,254,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,22,14,131,253,255,253,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,224,227,253,253,254,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,254,254,254,254,254,237,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,187,187,239,253,253,253,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,200,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,235,253,250,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,238,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,73,119,163,130,0,0,0,0,0,0,0,0,0,0,8,55,16,0,51,55,32,0,36,55,68,184,235,241,253,253,253,181,0,0,0,0,0,0,0,0,11,140,222,253,227,218,250,253,237,217,241,253,253,250,216,159,153,253,244,36,0,0,0,0,0,0,0,0,150,253,250,235,235,144,144,144,183,235,177,144,144,69,0,0,55,253,235,0,0,0,0,0,0,0,0,0,254,233,75,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,169,0,0,0,0,0,0,0,0,0,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,54,0,0,0,0,0,0,0,0,0,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,219,4,0,0,0,0,0,0,0,0,0,176,198,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,171,0,0,0,0,0,0,0,0,0,0,163,198,0,0,0,0,0,0,0,0,0,0,0,0,72,254,249,85,0,0,0,0,0,0,0,0,0,0,130,198,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,27,7,0,0,0,0,0,0,0,0,0,0,0,0,118,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,222,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,249,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,162,72,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,212,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,252,252,219,161,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,215,253,252,252,252,252,247,163,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,252,253,252,252,252,252,253,252,188,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,136,246,252,252,253,252,252,252,252,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,106,74,146,188,11,128,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,235,153,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,100,246,253,252,252,128,0,0,0,0,0,0,7,186,252,185,7,0,0,0,0,0,0,0,0,0,0,100,244,252,253,252,101,9,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,0,0,0,0,43,246,252,252,253,157,6,0,0,0,0,0,0,0,22,244,252,252,22,0,0,0,0,0,0,0,0,3,170,253,253,243,158,0,0,0,0,0,0,0,0,0,87,253,253,203,11,0,0,0,0,0,0,0,0,97,252,252,252,117,0,0,0,0,0,0,0,0,0,0,138,252,252,87,0,0,0,0,0,0,0,0,0,138,252,252,227,16,0,0,0,0,0,0,0,0,0,0,138,252,252,45,0,0,0,0,0,0,0,0,0,138,252,252,66,0,0,0,0,0,0,0,0,0,0,43,233,252,252,45,0,0,0,0,0,0,0,0,0,138,252,252,98,0,0,0,0,0,0,0,0,0,43,230,253,252,221,25,0,0,0,0,0,0,0,0,0,128,253,253,253,201,76,9,0,0,0,0,15,138,253,253,255,228,32,0,0,0,0,0,0,0,0,0,0,9,173,252,252,252,253,194,161,161,161,162,219,252,252,252,228,117,0,0,0,0,0,0,0,0,0,0,0,0,13,171,252,252,253,252,252,252,252,253,252,252,252,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,88,202,253,252,252,252,252,253,252,227,160,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,33,137,221,210,137,137,117,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,121,121,121,121,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,219,249,252,252,252,252,245,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,249,252,252,252,252,252,252,252,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,252,252,252,252,252,252,252,252,253,235,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,252,252,252,209,119,252,253,252,156,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,246,252,252,252,215,73,4,164,253,252,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,169,79,79,25,0,0,133,253,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,133,133,190,252,252,214,133,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,148,253,253,253,253,255,253,253,253,253,225,102,0,0,0,0,0,0,0,0,0,0,0,0,0,145,240,249,252,252,252,252,252,253,252,252,252,252,252,250,240,240,240,0,0,0,0,0,0,0,0,0,90,236,252,252,252,252,242,163,252,253,252,252,173,233,252,252,252,252,252,0,0,0,0,0,0,0,0,39,244,252,252,252,192,151,35,56,252,253,252,61,6,31,137,227,252,248,172,0,0,0,0,0,0,0,0,155,252,252,231,80,14,0,57,230,252,253,224,19,0,0,0,36,53,50,0,0,0,0,0,0,0,0,0,253,252,183,45,0,12,145,228,252,252,164,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,223,131,146,190,252,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,252,252,252,252,252,252,252,229,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,250,252,252,249,238,154,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,119,119,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,255,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,242,253,187,0,0,0,0,2,92,180,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,178,253,253,187,0,0,0,0,95,253,253,177,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,187,0,0,0,0,189,253,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,187,0,0,0,49,220,253,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,187,0,0,0,99,253,253,253,227,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,187,0,0,0,99,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,204,66,66,66,138,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,253,253,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,253,253,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,253,253,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,154,237,253,253,253,157,157,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,228,80,65,2,3,152,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,218,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,105,178,89,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,164,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,168,246,253,247,115,154,99,72,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,174,250,253,253,253,253,253,211,202,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,246,216,17,28,29,29,29,29,73,147,251,250,203,80,0,0,0,0,0,0,0,0,0,0,0,0,37,250,218,29,0,0,0,0,0,0,0,0,11,94,248,251,204,23,1,0,0,0,0,0,0,0,0,10,210,253,117,0,0,0,0,0,0,0,0,0,0,0,21,203,253,253,28,0,0,0,0,0,0,0,0,38,253,220,24,0,0,0,0,0,0,0,0,0,0,0,0,25,146,253,154,0,0,0,0,0,0,0,0,164,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,0,0,0,0,0,0,0,0,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,0,0,0,0,0,0,0,0,255,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,25,202,253,110,0,0,0,0,0,0,0,0,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,110,2,0,0,0,0,0,0,0,0,249,253,82,0,0,0,0,0,0,0,0,0,0,0,21,130,219,166,1,0,0,0,0,0,0,0,0,0,123,253,157,22,0,0,0,0,0,0,10,30,30,91,209,248,138,22,0,0,0,0,0,0,0,0,0,0,18,253,253,229,125,48,48,48,67,166,192,253,253,253,212,72,0,0,0,0,0,0,0,0,0,0,0,0,5,151,253,253,253,253,253,253,253,253,253,198,188,73,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,53,53,94,170,170,170,170,88,53,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,178,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,254,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,164,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,43,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,85,85,137,190,242,253,205,137,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,119,197,241,253,252,252,252,252,253,252,252,212,30,0,0,0,0,0,0,0,0,0,0,0,0,0,126,232,252,252,252,243,189,189,189,101,190,189,247,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,146,42,42,35,0,0,0,0,0,0,188,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,234,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,232,221,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,80,0,0,0,0,0,0,236,217,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,123,201,253,253,255,253,245,148,192,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,128,201,252,252,252,252,253,252,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,237,252,253,236,222,126,126,191,252,252,252,252,198,6,0,0,0,0,0,0,0,0,0,0,0,0,22,237,252,252,128,21,0,0,0,139,252,194,231,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,173,252,226,103,0,0,0,27,150,191,68,4,81,252,253,239,17,0,0,0,0,0,0,0,0,0,0,123,253,179,80,0,0,0,84,199,167,0,0,0,0,45,237,253,200,67,0,0,0,0,0,0,0,0,0,253,252,126,0,0,15,164,170,47,0,0,0,0,0,0,113,252,252,237,190,0,0,0,0,0,0,0,0,245,252,93,48,127,207,126,19,0,0,0,0,0,0,0,4,100,82,126,126,0,0,0,0,0,0,0,0,122,252,252,236,189,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,42,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,189,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,105,211,254,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,96,209,230,253,253,253,253,245,86,0,0,0,0,0,0,0,0,0,0,0,0,0,11,15,15,130,164,254,253,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,57,120,214,253,253,253,253,254,253,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,226,224,224,238,253,253,253,253,253,253,179,178,81,29,29,100,253,253,240,73,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,225,109,74,0,0,0,0,0,179,253,253,208,0,0,0,0,0,0,0,0,0,120,230,245,119,119,119,119,7,0,0,0,0,0,0,40,219,253,253,128,0,0,0,0,0,0,0,0,0,0,12,13,0,0,0,0,0,0,0,0,0,0,0,217,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,184,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,206,253,253,245,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,244,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,1,1,1,32,135,176,217,244,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,253,202,191,233,253,228,154,93,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,217,150,129,171,57,47,67,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,192,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,187,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,197,187,73,94,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,207,208,125,234,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,119,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,16,0,0,0,0,0,0,0,0,0,135,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,88,0,0,0,0,0,0,0,0,42,238,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,212,32,0,0,0,0,0,0,42,171,202,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,212,249,155,52,11,73,73,156,238,202,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,135,228,254,254,255,254,228,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,36,36,109,67,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,131,254,222,229,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,139,252,254,254,182,83,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,244,254,246,204,121,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,204,254,210,49,0,0,0,0,0,0,15,12,12,117,90,63,0,0,0,0,0,0,0,0,0,0,20,205,254,188,0,20,26,65,182,182,149,182,206,228,229,189,182,61,0,0,0,0,0,0,0,0,0,0,121,254,254,228,235,250,228,249,175,92,59,92,52,0,59,7,0,0,0,0,0,0,0,0,0,0,0,0,24,233,254,149,13,17,12,17,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,246,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,177,226,167,187,30,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,143,254,223,207,182,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,98,149,203,235,163,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,90,246,190,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,243,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,219,221,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,255,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,55,226,254,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,70,37,6,3,57,196,254,254,179,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,176,254,207,204,234,248,237,157,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,156,176,254,188,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,167,254,254,254,254,254,254,254,254,255,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,92,52,117,253,253,253,253,253,253,253,253,253,234,88,2,0,0,0,0,0,0,0,0,0,0,0,0,5,241,209,23,249,252,250,248,162,139,69,32,32,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,27,20,68,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,234,238,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,195,235,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,244,166,88,17,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,230,253,253,253,172,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,218,253,253,253,211,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,53,177,236,253,252,166,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,194,250,253,220,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,120,235,237,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,249,247,41,0,0,0,0,0,0,0,0,0,0,0,0,0,2,27,0,0,0,0,0,14,42,62,136,204,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,6,228,130,60,104,186,211,220,238,251,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,3,197,253,252,253,253,253,253,253,253,253,253,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,178,253,253,253,253,253,253,253,253,196,171,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,150,253,170,93,107,145,145,74,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,235,51,0,0,0,0,0,0,33,147,237,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,247,254,167,0,0,0,0,0,0,136,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,253,72,0,0,0,0,0,0,138,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,205,0,0,0,0,0,0,17,246,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,33,238,254,205,0,0,0,0,0,0,133,254,254,221,3,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,205,0,0,0,0,0,0,207,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,4,216,254,254,236,75,149,134,50,105,158,236,254,227,110,3,0,0,0,0,0,0,0,0,0,0,0,0,4,219,254,254,254,254,254,254,254,254,254,254,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,246,254,254,254,254,254,254,254,254,254,254,204,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,92,92,92,92,131,205,254,254,254,217,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,218,254,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,255,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,245,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,248,229,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,105,210,253,253,253,253,255,253,253,253,253,253,174,6,0,0,0,0,0,0,0,0,0,0,0,0,4,150,252,252,252,252,252,252,253,252,252,252,252,252,252,211,49,0,0,0,0,0,0,0,0,0,0,0,15,237,250,252,252,237,237,237,238,237,237,237,237,247,252,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,118,132,132,8,0,0,0,0,0,0,106,213,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,75,232,252,252,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,183,252,252,252,252,57,0,0,0,0,0,0,0,0,0,0,0,0,88,134,134,134,134,134,134,134,134,162,252,252,252,236,118,7,0,0,0,0,0,0,0,0,0,0,0,57,247,252,252,252,252,252,252,252,253,252,252,252,225,143,0,0,0,0,0,0,0,0,0,0,0,0,0,50,209,252,252,252,252,252,252,252,253,252,252,181,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,252,252,252,252,253,252,252,181,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,159,252,244,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,231,252,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,247,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,82,30,21,0,0,0,0,0,210,252,252,167,9,0,0,0,0,0,0,0,0,0,0,0,0,0,56,231,252,252,217,134,63,128,134,134,253,252,164,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,244,251,252,252,253,230,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,94,207,228,252,252,252,252,252,252,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,103,103,182,252,252,163,104,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,97,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,255,253,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,252,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,252,185,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,138,253,253,255,253,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,252,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,255,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,252,252,252,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,158,168,179,200,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,55,233,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,219,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,122,253,252,252,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,203,252,253,252,252,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,215,252,252,243,64,22,211,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,232,53,0,0,43,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,172,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,153,9,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,252,69,0,220,0,74,116,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,255,218,32,0,127,255,253,253,253,201,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,81,244,253,252,252,252,252,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,236,25,83,240,252,215,110,100,240,252,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,230,0,184,252,210,21,0,0,80,244,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,251,84,184,252,137,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,255,159,181,253,253,74,15,55,180,253,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,252,127,194,206,245,219,252,252,252,218,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,252,196,184,253,252,252,252,189,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,252,253,252,227,66,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,221,252,252,190,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,0,0,0,0,0,0,46,238,97,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,212,234,50,0,0,0,0,0,154,254,254,206,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,204,0,0,0,0,0,212,254,254,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,254,254,204,0,0,0,0,0,212,254,254,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,128,0,0,0,0,10,217,254,254,189,7,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,227,30,0,0,0,0,82,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,211,0,0,0,0,0,82,254,254,254,166,25,0,0,0,0,0,0,0,0,0,0,0,0,13,222,254,254,186,0,0,0,0,0,82,254,254,254,255,219,33,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,114,0,40,57,57,94,204,254,254,254,254,254,109,0,0,0,0,0,0,0,0,0,0,0,143,254,254,254,243,187,235,254,254,254,254,254,254,254,228,77,3,0,0,0,0,0,0,0,0,0,0,4,173,254,254,254,254,254,254,254,254,254,254,254,254,179,36,0,0,0,0,0,0,0,0,0,0,0,2,145,254,254,254,254,254,254,201,179,146,55,216,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,254,254,203,152,49,15,0,0,0,206,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,254,186,16,0,0,0,0,0,0,206,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,245,63,0,0,0,0,0,0,0,206,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,4,159,254,229,0,0,0,0,0,0,0,0,206,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,2,24,22,0,0,0,0,0,0,0,0,206,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,172,255,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,125,212,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,230,249,249,249,249,253,255,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,254,254,254,254,237,143,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,219,149,113,19,19,19,19,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,200,132,223,223,223,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,254,254,247,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,191,109,194,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,217,154,11,0,60,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,29,11,0,0,14,200,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,219,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,255,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,101,22,0,0,0,56,229,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,178,19,0,41,230,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,222,151,177,254,250,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,254,254,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,163,254,254,255,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,164,254,255,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,247,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,232,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,248,227,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,160,220,255,212,67,67,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,180,254,254,254,254,254,254,231,128,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,207,254,254,254,254,246,250,254,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,254,179,95,19,57,120,159,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,248,254,220,43,0,0,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,228,38,0,0,0,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,223,254,130,0,0,0,0,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,235,45,0,0,0,0,0,0,0,169,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,169,0,0,0,0,0,0,0,51,247,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,29,242,254,133,0,0,0,0,0,0,0,141,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,250,56,0,0,0,0,0,0,73,248,254,201,4,0,0,0,0,0,0,0,0,0,0,0,0,2,182,254,221,0,0,0,0,0,0,19,213,254,195,46,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,254,140,0,0,0,0,0,19,200,254,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,113,0,0,0,0,20,203,254,203,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,47,0,0,23,48,206,254,178,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,47,0,33,216,254,250,102,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,47,29,220,254,254,116,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,211,248,254,247,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,213,254,254,254,247,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,212,254,222,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,73,197,254,255,248,146,146,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,152,253,253,253,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,249,155,251,253,251,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,241,253,253,228,102,24,0,89,244,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,193,46,0,0,0,0,200,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,246,253,253,65,0,0,0,0,0,200,253,222,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,227,25,0,0,0,0,0,200,253,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,225,22,38,0,0,0,19,218,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,219,253,253,238,242,233,108,0,55,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,210,253,253,253,220,131,0,78,253,249,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,54,54,54,21,0,13,234,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,175,253,246,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,56,98,164,242,253,230,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,170,249,249,253,253,253,253,253,246,244,244,156,135,62,28,28,20,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,231,26,0,0,0,0,0,0,0,0,0,184,253,253,253,253,253,253,165,187,188,253,253,253,253,253,253,253,253,37,0,0,0,0,0,0,0,0,0,184,253,253,253,253,212,30,1,2,2,5,5,5,5,79,113,219,144,17,0,0,0,0,0,0,0,0,0,154,253,253,253,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,180,253,219,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,72,182,255,254,254,232,170,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,202,121,127,187,236,254,184,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,223,37,2,0,0,0,5,112,216,252,148,137,71,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,83,0,0,0,0,0,0,0,20,127,251,254,233,70,0,0,0,0,0,0,0,0,0,0,0,0,214,229,3,0,0,0,0,0,0,0,0,0,121,254,254,219,15,0,0,0,0,0,0,0,0,0,0,0,199,228,0,0,0,0,0,0,0,0,0,0,18,243,254,254,172,0,0,0,0,0,0,0,0,0,0,0,95,252,90,0,0,0,0,0,0,0,0,0,0,157,254,254,251,42,0,0,0,0,0,0,0,0,0,0,36,251,204,20,0,0,0,0,0,0,0,0,0,74,254,240,246,122,0,0,0,0,0,0,0,0,0,0,0,116,254,208,57,1,0,0,0,0,0,0,0,39,248,254,254,117,0,0,0,0,0,0,0,0,0,0,0,8,126,252,254,165,56,5,0,0,0,10,87,127,249,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,168,227,254,221,154,218,218,226,254,254,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,72,150,161,224,224,184,123,40,236,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,246,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,237,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,246,190,255,253,133,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,198,247,252,252,253,252,252,171,204,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,252,253,252,252,252,252,148,164,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,221,252,252,252,252,253,252,252,252,252,252,252,213,34,0,0,0,0,0,0,0,0,0,0,0,0,99,241,252,252,252,252,252,253,252,252,252,252,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,20,221,252,252,252,252,242,66,66,122,198,244,252,252,252,252,210,0,0,0,0,0,0,0,0,0,0,0,94,252,252,252,252,226,130,0,0,0,0,122,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,252,93,0,0,0,0,0,30,134,252,252,252,106,0,0,0,0,0,0,0,0,0,0,70,241,252,252,252,229,39,0,0,0,0,0,0,67,252,252,252,183,0,0,0,0,0,0,0,0,0,0,240,252,252,252,252,212,0,0,0,0,0,0,0,137,252,252,252,238,0,0,0,0,0,0,0,0,0,0,241,253,253,253,95,42,0,0,0,0,0,0,0,201,253,253,253,240,0,0,0,0,0,0,0,0,0,51,245,252,252,252,192,0,0,0,0,0,0,0,77,249,252,252,252,182,0,0,0,0,0,0,0,0,0,121,252,252,252,252,198,0,0,0,0,0,0,85,214,252,252,252,252,106,0,0,0,0,0,0,0,0,0,83,248,252,252,252,198,0,0,0,0,39,136,248,252,252,252,218,39,17,0,0,0,0,0,0,0,0,0,0,240,252,252,252,241,200,200,193,67,226,252,252,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,252,252,252,252,252,252,253,252,252,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,90,248,252,252,252,252,252,252,252,253,252,252,252,231,124,67,0,0,0,0,0,0,0,0,0,0,0,0,0,132,225,246,252,252,252,252,252,253,252,181,187,44,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,241,243,246,246,252,253,245,190,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,38,63,77,181,120,56,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,32,0,0,0,0,0,221,251,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,170,204,19,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,205,19,0,0,0,0,223,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,214,247,110,0,0,12,32,32,225,251,253,224,16,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,220,0,0,80,174,251,251,251,251,253,251,188,16,0,0,0,0,0,0,0,0,0,0,0,32,210,251,253,248,221,221,240,253,251,251,251,251,253,251,219,23,0,0,0,0,0,0,0,0,0,0,20,205,251,251,253,251,251,251,251,253,251,251,251,251,253,132,47,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,255,253,205,158,59,0,0,0,223,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,241,101,31,0,0,0,0,0,221,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,172,79,0,0,0,0,0,0,0,221,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,4,31,31,12,0,0,0,0,0,0,0,0,221,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,225,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,244,251,169,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,85,129,192,191,191,164,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,57,226,253,253,254,237,232,246,245,63,88,233,87,0,0,0,0,0,0,0,0,0,0,0,0,17,109,219,253,248,190,102,85,21,0,57,226,212,191,253,232,28,0,0,0,0,0,0,0,0,0,0,98,187,253,237,113,38,0,0,0,0,0,27,229,124,191,253,253,86,0,0,0,0,0,0,0,0,25,184,254,254,174,45,0,0,0,0,0,0,0,27,62,36,244,254,254,87,0,0,0,0,0,0,0,0,158,253,246,98,11,0,0,0,0,0,0,0,0,0,0,33,238,253,253,78,0,0,0,0,0,0,0,0,254,253,38,0,0,0,0,0,0,0,0,0,0,0,0,4,28,237,253,50,0,0,0,0,0,0,0,0,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,42,0,0,0,0,0,0,0,0,166,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,42,0,0,0,0,0,0,0,0,88,255,254,113,7,0,0,0,0,0,0,0,0,0,0,43,254,255,254,42,0,0,0,0,0,0,0,0,11,171,253,253,157,0,0,0,0,0,0,0,0,0,36,202,253,253,253,42,0,0,0,0,0,0,0,0,0,7,171,238,253,172,48,2,0,0,0,0,11,93,224,251,232,252,253,42,0,0,0,0,0,0,0,0,0,0,0,22,128,254,253,176,99,64,82,169,212,253,227,159,0,233,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,78,245,253,253,255,253,253,182,86,0,0,233,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,0,0,0,0,0,234,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,190,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,229,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,42,0,0,0,0,0,0,0,38,222,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,0,0,0,0,63,251,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,253,0,0,0,0,0,0,0,0,0,230,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,0,0,0,0,0,0,0,0,0,231,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,0,0,0,0,0,214,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,0,0,0,0,0,138,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,0,0,0,0,0,105,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,60,0,0,0,0,0,0,0,0,47,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,93,0,0,0,0,0,0,0,0,47,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,101,0,0,0,0,0,0,0,15,66,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,235,184,176,93,93,110,184,184,229,219,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,255,254,254,254,254,254,222,151,93,9,208,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,23,23,99,115,115,64,13,0,0,0,191,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,244,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,202,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,158,250,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,221,253,245,82,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,105,229,254,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,61,181,253,253,254,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,89,194,253,253,253,215,254,253,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,195,65,22,166,254,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,209,61,0,0,221,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,245,230,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,211,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,243,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,224,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,218,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,219,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,167,166,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,182,241,125,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,184,235,254,253,253,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,248,250,184,127,42,190,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,249,244,89,0,19,71,233,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,253,62,0,0,221,233,240,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,255,83,0,0,0,0,0,186,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,186,2,0,0,0,0,103,250,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,91,0,0,0,0,11,193,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,46,0,0,15,51,183,223,198,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,233,97,168,238,253,228,70,128,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,124,255,254,254,222,117,33,0,128,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,108,95,10,0,0,0,128,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,213,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,238,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,16,0,0,0,0,0,0,0,114,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,190,0,0,0,0,0,0,16,200,245,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,176,0,0,0,0,0,46,196,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,110,243,240,35,0,0,0,0,47,193,254,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,240,35,0,0,0,0,173,253,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,254,36,0,0,0,0,0,135,254,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,158,254,221,16,0,0,0,0,86,249,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,76,0,0,0,0,0,205,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,241,253,196,15,19,4,0,0,82,245,245,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,243,253,253,233,222,253,196,181,124,216,253,144,66,130,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,254,254,255,254,254,254,254,255,254,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,216,225,128,108,166,30,18,18,134,254,253,225,222,233,72,0,0,0,0,0,0,0,0,0,0,0,0,0,21,18,0,0,0,0,0,0,136,254,253,81,16,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,238,254,132,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,219,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,250,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,246,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,189,215,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,230,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,250,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,252,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,134,252,252,106,0,0,6,14,14,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,238,50,0,134,183,252,252,220,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,226,253,253,163,0,64,255,253,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,214,5,139,246,253,252,252,252,252,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,113,64,144,241,252,253,212,110,56,224,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,178,34,238,252,252,173,29,0,193,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,93,41,252,252,252,68,124,200,244,252,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,175,155,252,252,252,253,252,252,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,234,252,252,252,252,252,252,190,175,252,252,185,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,241,106,93,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,252,252,252,252,247,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,119,217,231,119,119,119,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,147,255,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,151,248,252,253,253,253,239,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,219,251,253,170,142,96,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,219,250,253,170,116,5,0,46,253,253,175,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,253,177,25,5,0,0,0,163,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,173,21,0,0,0,22,185,244,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,51,0,0,0,100,224,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,101,79,79,182,243,253,253,253,180,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,253,233,148,99,253,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,188,188,188,147,42,17,176,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,235,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,249,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,251,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,209,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,234,71,51,51,152,233,254,253,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,253,252,253,252,253,252,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,223,254,213,203,203,142,102,102,122,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,50,10,0,0,0,0,0,142,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,142,233,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,254,253,254,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,252,253,252,192,192,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,254,253,244,162,0,0,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,253,252,81,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,253,244,40,0,0,0,0,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,171,40,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,31,0,0,0,0,0,0,72,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,232,183,61,0,0,21,142,233,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,255,253,255,253,255,253,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,151,151,213,252,253,212,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,253,253,253,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,252,252,253,252,247,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,179,71,71,72,206,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,108,15,0,0,0,73,252,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,206,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,242,252,253,148,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,175,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,144,0,0,0,0,0,6,37,37,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,144,0,0,0,0,0,120,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,211,31,0,110,150,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,253,252,227,217,253,252,252,210,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,92,236,253,252,252,252,253,241,195,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,108,232,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,209,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,201,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,233,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,243,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,233,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,253,237,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,212,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,253,233,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,175,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,198,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,180,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,230,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,245,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,238,253,253,201,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,204,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,13,122,132,255,253,253,253,195,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,117,232,252,252,252,253,252,252,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,118,225,252,252,252,252,252,252,237,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,17,221,252,252,252,252,234,248,148,80,88,252,252,241,48,0,0,0,0,0,0,0,0,0,0,0,0,0,19,229,252,252,235,94,45,65,4,38,222,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,180,151,43,0,0,0,0,167,252,252,238,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,200,253,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,142,232,252,253,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,201,237,252,252,252,253,252,252,248,200,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,252,252,252,253,252,252,252,252,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,249,131,121,0,70,138,249,253,253,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,108,108,67,0,0,0,0,0,96,245,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,216,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,129,193,158,14,0,0,0,0,0,0,72,235,252,252,178,6,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,214,102,49,0,45,97,205,237,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,252,252,237,217,237,252,252,252,252,252,133,5,0,0,0,0,0,0,0,0,0,0,0,0,0,97,221,252,252,252,252,252,253,252,252,252,226,110,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,110,235,252,252,190,131,131,51,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,134,145,179,214,254,254,254,150,82,1,0,0,0,0,0,0,0,0,0,0,0,0,0,19,25,71,192,253,254,253,253,253,253,253,253,232,177,5,0,0,0,0,0,0,0,0,0,0,0,25,124,231,236,253,253,253,218,205,96,184,253,150,96,14,0,0,0,0,0,0,0,0,0,0,0,5,125,226,253,253,174,158,84,84,0,0,0,129,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,218,25,0,0,0,0,0,38,190,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,205,147,7,0,0,54,231,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,39,168,168,229,253,253,253,210,91,149,233,253,253,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,71,156,193,253,253,254,253,253,188,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,123,253,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,236,253,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,163,254,254,185,249,254,208,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,118,233,253,253,230,0,76,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,146,253,253,253,168,5,0,25,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,226,253,253,253,165,8,0,0,106,253,244,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,226,253,253,253,163,10,0,0,125,223,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,148,253,253,236,146,12,0,0,70,254,246,163,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,152,0,29,86,195,251,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,228,218,230,253,253,253,94,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,253,253,253,253,206,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,93,253,253,253,253,155,28,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,122,248,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,186,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,249,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,252,252,253,230,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,253,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,252,253,252,226,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,248,253,252,221,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,75,189,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,167,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,251,118,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,233,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,255,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,235,254,126,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,186,253,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,215,109,192,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,35,14,11,204,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,207,253,249,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,207,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,167,168,222,253,234,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,159,240,242,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,252,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,0,0,0,0,0,0,169,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,79,0,0,0,0,0,0,0,5,193,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,174,3,0,0,0,0,0,0,65,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,95,0,0,0,0,0,19,198,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,232,51,0,0,0,17,202,253,244,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,232,82,0,89,197,253,248,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,150,241,252,245,253,253,225,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,209,253,253,173,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,121,121,128,183,255,127,121,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,240,134,208,252,252,252,252,253,252,252,199,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,252,252,253,252,252,252,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,240,252,207,39,39,39,39,103,172,244,252,252,195,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,53,161,88,74,0,0,0,0,47,123,158,235,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,200,252,93,0,0,0,0,0,0,0,186,220,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,252,245,78,0,0,0,0,0,0,46,231,231,114,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,252,128,0,0,0,0,0,0,0,60,245,203,140,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,249,75,0,0,0,0,0,0,0,0,186,252,93,0,0,0,0,0,0,0,0,0,0,0,0,50,234,252,198,0,0,0,0,0,0,0,0,36,221,252,93,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,66,0,0,0,0,0,0,0,0,130,253,234,49,0,0,0,0,0,0,0,0,0,0,0,0,220,252,224,38,0,0,0,0,0,0,0,34,222,252,212,0,0,0,0,0,0,0,0,0,0,0,0,40,236,252,185,0,0,0,0,0,0,0,0,129,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,73,0,0,0,0,0,0,0,30,225,252,164,13,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,53,0,0,0,0,0,0,64,206,252,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,81,0,0,0,0,0,90,249,252,235,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,231,67,0,0,22,22,211,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,232,160,160,208,208,253,241,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,218,249,252,252,252,252,252,247,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,217,252,252,252,181,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,124,232,217,133,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,228,240,177,168,248,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,216,222,28,0,0,134,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,242,57,0,0,0,45,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,152,0,0,0,0,53,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,32,0,0,0,0,112,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,3,0,99,101,0,149,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,79,0,99,248,161,237,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,225,57,14,182,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,188,249,208,234,254,241,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,147,125,133,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,186,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,92,92,92,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,22,182,236,254,254,254,234,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,220,254,254,254,254,254,221,108,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,237,254,254,254,254,254,254,158,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,125,251,254,254,254,198,231,254,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,210,254,254,253,205,189,22,33,151,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,209,111,0,0,0,0,60,146,254,221,50,0,0,0,0,0,0,0,0,0,0,0,0,113,236,254,254,152,18,0,0,0,0,0,0,165,254,254,132,0,0,0,0,0,0,0,0,0,0,67,157,204,254,254,214,98,3,0,0,0,0,0,0,160,254,254,152,0,0,0,0,0,0,0,0,0,60,86,218,254,238,172,20,0,0,0,0,0,0,0,44,233,254,254,196,0,0,0,0,0,0,0,0,3,184,254,254,250,198,0,0,0,0,0,0,0,0,7,136,254,254,254,196,0,0,0,0,0,0,0,0,92,254,254,254,130,0,0,0,0,0,0,0,0,46,225,254,254,254,254,90,0,0,0,0,0,0,0,0,198,254,254,123,34,0,0,0,0,0,0,0,142,219,254,254,254,254,92,23,0,0,0,0,0,0,0,0,166,254,206,122,0,0,0,0,0,0,80,116,219,254,254,254,254,187,99,0,0,0,0,0,0,0,0,0,149,254,234,185,42,42,42,42,143,206,239,254,254,254,255,254,181,20,0,0,0,0,0,0,0,0,0,0,170,254,254,254,254,254,254,254,254,254,254,254,254,254,254,186,16,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,254,254,254,254,254,254,254,254,254,228,63,16,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,254,254,254,254,163,154,153,106,106,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,15,15,143,180,148,15,15,108,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,141,141,141,154,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,179,252,252,252,253,252,252,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,215,252,253,252,252,252,106,56,56,56,156,19,0,0,0,0,0,0,0,0,0,0,0,0,176,225,229,252,252,252,241,139,103,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,255,234,137,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,215,110,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,252,252,240,51,0,89,113,63,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,247,253,254,253,253,253,254,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,209,253,252,252,252,247,121,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,123,222,253,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,253,252,252,252,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,253,251,75,0,151,254,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,75,0,0,0,228,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,252,127,0,0,0,0,178,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,214,15,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,178,4,0,0,10,179,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,178,57,131,197,252,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,224,252,252,253,252,252,252,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,153,252,253,252,252,202,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,96,134,253,255,233,96,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,158,251,251,251,253,251,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,251,251,251,251,173,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,240,253,251,219,50,31,134,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,240,251,253,132,47,0,0,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,159,0,0,0,0,255,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,71,32,32,32,32,253,251,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,251,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,204,251,253,251,251,251,251,253,223,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,94,95,94,94,133,251,253,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,255,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,112,244,251,241,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,244,251,235,89,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,217,253,251,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,234,253,255,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,190,51,32,32,151,221,251,251,161,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,253,251,251,251,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,253,251,219,148,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,251,251,253,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,242,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,243,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,241,253,210,142,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,155,0,0,0,0,0,0,0,0,0,0,11,99,43,0,0,0,0,0,0,0,0,0,0,0,118,253,253,155,0,0,0,0,0,0,0,0,0,59,175,253,224,0,0,0,0,0,0,0,0,0,0,0,79,249,253,239,168,86,59,0,0,0,18,86,172,240,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,100,248,253,253,253,239,209,209,209,218,253,253,253,253,197,20,0,0,0,0,0,0,0,0,0,0,0,0,0,48,168,207,253,253,253,253,253,253,253,253,244,101,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,58,165,188,238,253,253,241,168,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,209,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,192,253,253,188,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,238,253,243,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,239,253,209,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,220,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,128,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,237,209,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,148,172,235,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,230,253,253,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,151,251,254,251,247,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,222,253,253,202,77,137,235,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,253,173,16,0,0,115,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,239,73,0,0,0,115,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,134,0,0,0,0,44,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,214,26,0,0,0,33,253,216,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,183,253,253,216,24,0,0,160,253,199,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,253,253,188,0,8,215,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,243,254,255,190,212,254,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,254,253,253,230,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,220,254,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,231,253,254,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,168,253,241,159,49,194,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,220,253,203,61,0,18,194,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,139,14,0,64,206,253,239,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,253,90,66,66,213,254,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,239,253,253,253,253,253,225,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,213,253,253,202,119,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,96,194,255,233,96,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,142,251,251,253,247,220,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,251,251,126,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,96,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,251,251,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,228,253,248,221,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,159,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,238,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,246,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,250,241,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,225,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,253,238,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,255,253,145,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,221,254,224,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,254,237,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,147,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,248,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,211,253,244,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,245,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,246,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,199,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,238,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,230,253,253,230,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,253,253,251,158,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,217,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,201,253,222,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,251,243,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,36,53,0,0,0,0,0,0,0,0,0,224,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,29,214,231,53,0,0,0,0,0,8,30,102,245,253,237,12,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,169,134,134,134,134,135,163,253,253,253,237,56,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,253,253,253,253,253,255,253,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,129,248,253,253,253,253,253,254,253,253,253,169,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,104,183,253,253,253,255,253,155,104,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,53,143,191,255,253,253,253,181,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,105,213,252,252,252,253,252,252,252,252,226,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,252,252,192,153,196,92,44,44,157,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,192,230,77,4,0,5,0,0,0,1,121,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,222,252,245,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,150,252,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,89,221,252,252,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,93,168,252,252,248,136,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,144,207,252,253,252,252,237,78,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,250,252,252,252,253,252,252,252,252,227,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,211,201,111,111,111,139,220,223,253,253,253,167,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,77,186,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,192,252,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,252,235,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,217,252,252,136,0,0,0,0,0,0,0,0,0,16,198,231,173,47,0,0,0,0,0,0,0,5,79,236,252,252,226,34,0,0,0,0,0,0,0,0,0,28,239,252,252,231,154,154,154,73,45,45,74,193,252,252,252,159,39,0,0,0,0,0,0,0,0,0,0,0,46,66,211,252,252,252,252,252,252,253,252,252,252,235,89,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,105,229,156,252,252,204,143,219,209,132,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,254,254,197,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,249,253,251,131,131,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,248,253,207,49,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,248,253,110,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,169,9,0,0,0,0,0,0,0,31,66,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,238,29,0,0,0,0,0,0,7,93,246,219,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,130,135,106,106,45,18,73,171,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,253,249,247,250,253,254,253,253,248,183,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,78,43,27,184,253,254,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,230,254,255,226,254,205,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,227,253,228,96,8,98,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,251,65,0,0,5,229,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,248,243,79,0,0,0,0,197,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,190,0,0,0,0,0,227,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,160,0,0,0,0,51,248,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,243,32,0,0,0,101,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,228,209,132,106,129,228,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,223,253,254,253,253,233,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,226,254,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,189,255,254,171,45,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,182,253,250,224,253,253,126,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,149,14,110,241,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,249,29,0,0,195,253,225,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,223,253,150,0,0,0,154,253,253,202,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,24,0,0,0,9,73,244,253,237,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,11,0,0,0,0,0,10,243,253,229,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,193,5,0,0,0,0,0,0,6,194,253,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,147,0,0,0,0,0,0,0,0,128,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,147,0,0,0,0,0,0,0,0,9,192,253,53,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,147,0,0,0,0,0,0,0,0,0,166,253,53,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,48,0,0,0,0,0,0,0,0,25,239,253,53,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,29,0,0,0,0,0,0,0,0,137,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,1,190,253,90,0,0,0,0,0,0,0,1,153,253,189,1,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,196,5,0,0,0,0,0,0,26,253,248,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,167,2,0,0,0,0,0,0,208,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,11,0,0,0,0,25,118,252,215,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,253,143,0,0,0,26,146,253,249,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,242,253,208,121,219,229,253,209,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,137,253,253,253,217,135,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,34,121,144,211,254,254,241,116,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,253,253,253,253,254,253,146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,253,253,249,154,154,154,254,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,197,68,0,0,0,148,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,193,19,0,0,0,0,96,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,113,57,0,0,0,0,0,144,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,245,253,249,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,241,254,253,171,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,179,228,253,253,255,253,253,181,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,247,253,253,253,253,254,253,253,253,208,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,215,111,111,112,111,202,253,255,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,77,77,30,0,0,0,0,0,185,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,181,253,247,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,166,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,214,0,0,0,0,0,0,0,166,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,248,103,12,12,5,5,0,21,208,253,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,253,198,198,155,250,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,170,253,253,253,254,253,253,253,253,226,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,52,143,143,158,253,253,147,119,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,128,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,128,255,255,191,128,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,255,255,191,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,64,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,64,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,254,254,254,254,254,254,255,254,254,175,151,68,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,253,253,226,207,254,209,207,246,253,252,205,62,0,0,0,0,0,0,0,0,0,0,0,5,69,26,17,17,17,47,11,6,17,7,6,15,108,242,253,246,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,231,253,250,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,204,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,246,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,242,253,253,228,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,247,253,253,126,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,253,253,201,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,245,254,253,152,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,243,253,254,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,242,253,253,231,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,148,253,253,253,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,149,253,253,209,148,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,206,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,36,36,36,114,154,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,172,172,172,241,254,254,254,254,254,228,126,29,0,0,0,0,0,0,0,0,0,0,0,0,0,114,190,226,254,254,254,254,254,254,254,254,254,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,92,249,165,222,254,227,165,165,105,47,69,165,236,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,19,29,20,0,0,0,0,0,59,249,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,96,230,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,208,254,254,191,7,0,0,0,0,0,0,0,0,0,0,0,0,0,26,60,60,22,0,0,0,0,9,178,228,254,235,63,0,0,0,0,0,0,0,0,0,0,0,0,58,120,221,254,254,218,168,54,0,0,85,254,254,254,135,0,0,0,0,0,0,0,0,0,0,0,14,176,244,254,254,254,254,254,255,242,214,214,254,254,237,74,9,0,0,0,0,0,0,0,0,0,0,0,89,254,254,162,141,84,90,213,254,254,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,15,206,252,121,1,0,0,0,4,97,227,254,254,254,254,173,131,128,17,0,0,0,0,0,0,0,0,0,137,254,207,8,0,0,0,17,105,223,254,254,254,254,241,254,247,96,0,0,0,0,0,0,0,0,0,0,214,254,254,189,166,166,166,216,254,254,182,89,89,89,47,89,66,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,254,254,254,254,213,161,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,183,254,254,254,254,253,105,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,35,35,35,35,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,232,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,245,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,168,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,208,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,60,0,0,0,3,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,217,254,147,14,0,0,47,199,215,195,125,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,245,254,95,0,0,23,214,254,254,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,15,0,1,69,254,246,122,70,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,225,254,221,9,0,152,254,231,61,0,128,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,249,14,50,237,254,192,7,5,133,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,169,79,212,254,249,0,0,71,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,245,241,254,254,250,49,131,194,254,223,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,230,254,254,254,254,254,223,204,242,254,254,198,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,136,254,254,205,205,252,254,126,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,254,254,254,254,254,249,98,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,112,224,254,254,254,254,186,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,149,192,235,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,109,191,255,253,253,253,255,128,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,252,253,252,252,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,37,222,252,252,217,215,221,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,168,0,0,16,190,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,215,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,215,0,0,0,32,237,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,241,98,0,0,58,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,252,145,144,221,252,253,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,176,253,253,255,253,253,253,255,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,179,221,253,231,179,179,253,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,72,51,0,0,149,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,222,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,237,215,195,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,175,255,245,101,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,127,200,237,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,159,253,253,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,93,240,253,253,253,253,253,253,253,253,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,253,253,253,253,253,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,253,253,253,253,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,213,253,253,253,253,128,181,253,253,201,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,249,142,6,48,143,222,80,169,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,142,0,0,0,0,0,16,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,175,6,0,0,0,0,0,16,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,103,251,253,253,154,0,0,0,0,0,0,124,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,14,0,0,0,0,0,34,210,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,14,0,0,0,0,34,214,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,14,0,0,5,30,210,253,253,253,249,86,0,0,0,0,0,0,0,0,0,0,0,0,0,80,250,253,253,85,0,61,157,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,241,216,235,253,253,253,253,249,191,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,253,253,253,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,227,253,253,253,253,253,253,253,157,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,253,201,45,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,99,244,253,253,113,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,88,214,254,162,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,35,207,253,253,253,217,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,106,253,253,253,253,253,253,170,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,146,254,253,253,221,129,225,253,235,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,254,253,253,141,18,211,253,226,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,248,253,254,253,132,20,0,159,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,247,253,253,210,157,18,0,0,114,253,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,247,253,253,253,64,0,0,0,30,222,253,193,9,0,0,0,0,0,0,0,0,0,0,0,0,0,56,237,253,253,206,87,12,0,0,0,56,248,253,114,3,0,0,0,0,0,0,0,0,0,0,0,0,0,90,225,253,207,76,0,0,0,0,0,90,225,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,254,208,13,0,0,0,0,0,120,254,250,34,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,198,10,0,0,0,0,86,171,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,6,79,253,253,224,77,0,0,0,0,6,136,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,19,213,253,253,106,0,0,0,0,0,60,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,218,25,0,0,59,67,182,226,253,239,101,14,0,0,0,0,0,0,0,0,0,0,0,0,7,128,253,253,253,205,194,136,251,254,253,253,239,166,29,0,0,0,0,0,0,0,0,0,0,0,0,0,17,180,253,253,253,253,253,253,253,254,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,253,253,253,253,253,253,253,254,253,222,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,177,253,253,253,253,253,253,249,144,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,161,160,231,253,201,75,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,185,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,254,204,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,181,4,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,43,228,248,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,222,38,0,0,0,122,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,254,117,0,0,0,199,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,206,24,0,0,53,249,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,200,254,67,0,0,0,126,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,159,4,0,0,0,199,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,79,0,0,0,50,247,237,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,227,208,160,122,189,254,225,35,35,99,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,254,254,254,254,254,254,254,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,136,192,228,228,242,254,254,233,218,142,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,188,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,222,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,255,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,197,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,247,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,194,252,252,209,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,240,252,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,235,252,252,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,208,252,252,248,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,252,252,250,88,0,0,0,0,13,14,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,252,212,0,0,0,64,133,240,252,252,164,113,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,228,42,0,0,64,255,253,253,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,102,251,252,252,142,0,0,139,246,253,252,252,252,252,252,252,251,101,0,0,0,0,0,0,0,0,0,0,226,252,252,227,42,0,74,241,252,253,252,252,252,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,197,252,252,143,0,0,160,252,252,253,252,222,197,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,23,232,252,53,0,32,233,252,252,253,252,233,216,252,252,252,245,78,0,0,0,0,0,0,0,0,0,0,0,226,252,200,186,197,252,252,252,253,252,252,252,252,212,198,108,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,252,252,252,252,253,252,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,252,252,252,252,252,253,252,252,229,120,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,147,249,252,252,252,251,238,176,161,119,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,119,210,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,213,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,162,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,251,253,251,235,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,143,248,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,251,251,251,181,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,228,251,251,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,235,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,193,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,212,213,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,183,20,0,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,255,253,193,112,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,252,253,252,243,203,203,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,255,253,255,253,255,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,50,131,151,151,151,151,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,208,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,207,254,254,217,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,251,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,245,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,255,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,254,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,191,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,10,10,10,66,104,104,138,104,104,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,194,253,253,253,253,253,253,254,253,253,253,237,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,253,214,206,116,112,112,88,18,92,112,225,251,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,9,0,0,0,0,0,0,0,6,184,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,200,253,208,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,57,175,244,251,253,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,95,213,247,253,246,210,130,103,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,241,253,253,253,253,177,95,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,254,254,254,255,254,254,254,254,254,222,104,35,0,0,0,0,0,0,0,0,0,0,0,0,0,16,105,122,122,122,122,122,122,122,122,138,215,242,253,229,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,204,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,48,114,242,253,200,0,0,0,0,0,0,0,0,137,207,207,207,189,113,113,113,103,19,79,113,117,207,215,253,253,253,191,54,0,0,0,0,0,0,0,0,222,177,171,253,253,253,253,253,253,253,232,181,253,253,253,183,168,78,11,0,0,0,0,0,0,0,0,0,6,1,1,9,9,9,75,103,103,103,42,2,9,9,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,247,252,103,0,0,0,0,80,191,111,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,221,252,252,112,39,127,135,232,241,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,252,253,252,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,252,252,252,253,173,147,217,252,253,94,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,253,223,106,18,0,0,13,218,253,237,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,216,253,252,82,0,0,0,0,145,252,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,252,236,131,19,0,0,0,36,188,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,252,199,21,0,0,0,0,22,237,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,62,0,0,0,0,0,128,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,236,0,0,0,0,0,0,191,253,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,141,37,0,0,0,0,0,32,237,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,167,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,211,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,255,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,239,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,211,252,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,216,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,182,208,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,106,189,241,245,232,214,130,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,200,248,213,180,230,231,243,254,254,91,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,241,254,118,0,0,0,0,38,111,229,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,246,248,118,0,0,0,0,0,0,0,0,230,254,71,0,0,0,0,0,0,0,0,0,0,0,0,51,246,211,71,0,0,0,0,0,0,0,0,0,145,254,138,0,0,0,0,0,0,0,0,0,0,0,0,51,114,21,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,47,47,47,13,0,0,0,0,213,228,21,0,0,0,0,0,0,0,0,0,0,0,0,9,49,116,192,225,254,254,254,220,209,125,40,158,255,165,0,0,0,0,0,0,0,0,0,0,0,0,51,210,254,254,177,161,161,178,254,254,254,254,254,254,229,40,0,0,0,0,0,0,0,0,0,0,0,164,254,229,127,9,0,0,0,0,0,0,26,181,254,254,230,40,0,0,0,0,0,0,0,0,0,0,81,252,199,15,0,0,0,0,0,0,0,0,55,235,254,220,254,224,42,0,0,0,0,0,0,0,0,0,204,254,46,0,0,0,0,0,0,0,3,91,238,249,113,13,204,254,191,83,0,0,0,0,0,0,0,0,221,254,46,0,0,0,0,0,0,51,175,254,254,107,0,0,45,212,254,220,0,0,0,0,0,0,0,0,85,248,136,19,0,0,7,70,188,254,248,151,34,0,0,0,0,51,127,59,0,0,0,0,0,0,0,0,0,214,254,237,232,231,233,254,254,194,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,214,230,231,230,188,138,80,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,211,254,255,183,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,163,254,253,234,246,253,233,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,254,253,21,128,243,254,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,253,192,147,12,0,124,254,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,238,254,192,0,0,0,0,0,193,254,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,186,253,170,37,0,0,0,0,0,69,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,243,42,0,0,0,0,0,0,43,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,27,219,253,134,0,0,0,0,0,0,0,32,238,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,218,12,0,0,0,0,0,0,0,0,191,253,84,0,0,0,0,0,0,0,0,0,0,0,0,56,237,248,97,0,0,0,0,0,0,0,0,0,192,251,71,0,0,0,0,0,0,0,0,0,0,0,8,198,253,176,0,0,0,0,0,0,0,0,0,33,238,232,0,0,0,0,0,0,0,0,0,0,0,0,31,253,245,53,0,0,0,0,0,0,0,0,0,52,253,82,0,0,0,0,0,0,0,0,0,0,0,0,198,253,147,0,0,0,0,0,0,0,0,0,27,219,253,21,0,0,0,0,0,0,0,0,0,0,0,0,233,253,104,0,0,0,0,0,0,0,0,0,150,255,138,4,0,0,0,0,0,0,0,0,0,0,0,0,234,244,35,0,0,0,0,0,0,0,49,219,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,211,14,0,0,0,0,36,104,191,248,253,218,27,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,253,192,128,128,136,233,242,255,253,225,100,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,254,253,253,253,253,217,154,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,218,253,254,218,147,147,59,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,168,214,128,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,253,245,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,95,175,188,141,209,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,178,246,108,0,73,185,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,130,0,0,160,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,251,112,23,0,0,194,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,251,104,0,0,0,0,194,225,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,103,0,0,0,0,53,245,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,239,103,1,0,0,0,0,171,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,251,149,13,0,0,0,0,0,182,218,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,226,210,17,0,0,0,0,0,113,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,114,246,95,0,0,0,0,0,91,218,207,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,136,253,106,0,0,0,0,0,21,171,223,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,189,20,0,0,0,0,9,218,223,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,242,55,0,0,0,0,30,128,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,185,205,0,0,0,0,119,222,251,112,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,205,0,0,29,131,249,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,247,218,160,230,253,165,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,212,253,253,253,217,144,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,253,160,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,76,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,191,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,252,235,92,0,6,37,123,157,59,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,252,252,51,3,49,135,252,252,252,252,220,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,174,4,99,252,252,252,238,192,192,244,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,224,45,0,225,252,190,60,46,0,0,217,252,166,0,0,0,0,0,0,0,0,0,0,0,0,90,241,252,116,0,138,253,134,18,0,0,0,0,41,233,252,0,0,0,0,0,0,0,0,0,0,0,0,181,252,220,22,94,251,253,153,0,0,0,0,0,0,229,252,0,0,0,0,0,0,0,0,0,0,0,96,246,252,116,0,62,195,253,176,0,0,0,0,0,0,229,252,0,0,0,0,0,0,0,0,0,0,18,209,252,183,3,0,0,6,11,5,0,0,0,0,0,0,229,252,0,0,0,0,0,0,0,0,0,2,105,253,216,29,0,0,0,0,0,0,0,0,0,0,0,103,253,184,0,0,0,0,0,0,0,0,0,94,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,217,242,10,0,0,0,0,0,0,0,0,8,211,252,205,27,0,0,0,0,0,0,0,0,0,0,11,77,225,124,0,0,0,0,0,0,0,0,0,117,252,228,28,0,0,0,0,0,0,0,0,0,0,12,164,236,69,0,0,0,0,0,0,0,0,0,0,253,252,129,0,0,0,0,0,0,0,0,0,9,61,164,171,48,0,0,0,0,0,0,0,0,0,0,0,253,234,23,0,0,0,0,0,0,0,73,85,201,252,114,14,0,0,0,0,0,0,0,0,0,0,0,0,253,248,78,0,0,0,0,0,89,205,253,252,199,88,14,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,213,97,97,97,194,217,232,252,253,128,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,252,252,252,252,252,205,143,24,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,92,252,252,252,217,131,131,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,255,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,234,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,195,253,198,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,195,253,250,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,234,253,236,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,228,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,172,253,253,192,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,233,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,214,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,220,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,253,253,205,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,240,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,199,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,19,105,106,105,105,174,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,165,208,234,216,252,253,252,252,252,252,246,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,242,252,252,252,252,252,253,252,252,252,252,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,188,132,132,132,133,160,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,243,83,0,0,0,0,60,252,252,229,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,118,108,0,0,0,0,0,165,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,249,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,230,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,243,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,192,255,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,253,213,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,221,252,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,252,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,161,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,197,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,191,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,191,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,253,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,234,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,158,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,254,224,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,190,254,254,167,8,0,0,5,37,130,211,194,14,0,0,0,0,0,0,0,0,0,0,0,0,0,9,132,254,254,254,254,201,188,188,196,254,254,254,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,37,223,242,203,180,254,254,254,254,254,254,254,237,91,0,0,0,0,0,0,0,0,0,0,0,0,0,24,240,255,134,0,34,78,78,78,139,254,254,249,59,0,0,0,0,0,0,0,0,0,0,0,0,0,61,164,254,254,86,0,0,0,0,112,209,254,222,83,0,0,0,0,0,0,0,0,0,0,0,0,0,24,133,254,248,162,11,0,0,13,63,215,254,221,160,9,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,253,181,0,0,0,0,12,213,254,251,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,198,94,0,0,0,0,2,176,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,138,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,254,221,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,197,254,236,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,254,250,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,247,254,198,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,103,248,254,222,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,227,254,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,249,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,74,255,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,203,118,0,0,0,0,0,81,244,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,252,234,33,0,0,0,0,155,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,252,45,0,0,0,57,244,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,252,221,25,0,0,0,174,252,252,75,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,255,207,0,0,0,3,118,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,253,185,0,0,0,24,252,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,252,243,50,0,0,0,191,252,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,252,253,202,93,93,144,253,252,252,218,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,253,252,252,252,252,253,252,168,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,193,253,253,253,255,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,135,252,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,234,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,212,252,208,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,205,253,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,245,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,251,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,71,102,27,0,0,0,0,0,97,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,237,254,254,171,6,0,0,0,16,229,248,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,248,252,170,114,206,16,0,0,0,45,254,251,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,230,0,0,10,3,0,0,7,199,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,187,0,0,0,0,0,61,216,254,215,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,227,0,0,0,0,103,235,254,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,245,0,6,73,187,248,254,227,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,248,97,206,254,254,249,184,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,233,254,254,254,229,144,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,158,254,255,254,149,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,254,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,234,254,232,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,242,244,117,32,233,230,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,198,254,194,0,27,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,228,33,0,27,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,198,254,123,0,4,141,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,242,254,99,0,78,254,246,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,239,184,242,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,121,254,254,241,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,148,233,217,172,104,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,204,253,253,219,245,253,213,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,254,236,221,81,32,149,250,194,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,195,253,136,17,0,0,0,0,221,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,147,0,0,0,0,0,0,221,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,74,0,0,0,0,0,0,221,219,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,8,0,0,0,0,0,133,249,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,8,0,0,0,9,171,249,198,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,58,0,0,63,221,253,199,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,142,138,196,251,242,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,254,255,246,177,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,143,246,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,253,239,126,250,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,148,253,190,32,0,182,202,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,216,33,0,0,150,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,244,216,33,0,0,0,99,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,214,246,75,0,0,0,60,239,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,146,0,34,111,168,244,232,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,246,238,246,253,234,129,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,150,208,253,211,127,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,45,95,178,254,254,255,203,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,72,189,232,245,254,244,131,115,115,241,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,66,199,254,253,251,230,245,223,17,0,7,232,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,186,253,196,0,69,131,0,0,136,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,247,84,128,224,17,0,0,17,17,0,221,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,13,235,145,0,161,206,0,0,0,0,5,147,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,179,0,80,221,34,0,0,38,161,253,180,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,246,50,0,0,0,0,119,247,253,185,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,161,0,13,112,229,254,190,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,244,245,164,235,248,173,56,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,253,254,223,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,151,247,253,253,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,236,134,51,127,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,249,219,50,0,0,9,203,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,251,63,0,0,0,0,86,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,0,0,0,0,0,70,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,237,45,0,0,0,0,187,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,244,245,114,47,89,172,254,227,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,238,254,253,253,244,180,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,220,202,119,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,68,158,197,237,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,119,160,234,254,176,111,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,101,165,227,246,233,198,96,33,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,255,160,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,190,254,254,83,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,254,254,254,224,169,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,146,129,75,75,86,219,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,196,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,197,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,245,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,233,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,230,54,0,0,2,19,55,207,247,152,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,245,201,201,206,254,254,203,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,100,211,229,229,229,174,58,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,17,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,107,240,253,205,107,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,55,197,208,253,253,253,253,253,231,181,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,178,253,253,253,253,253,253,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,18,169,253,253,253,253,253,253,253,237,203,203,240,253,246,213,59,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,253,253,253,253,171,0,0,85,177,253,253,227,139,9,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,112,16,0,0,0,11,156,221,253,253,77,24,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,212,38,0,0,0,0,0,0,51,234,253,253,190,0,0,0,0,0,0,0,0,254,253,253,253,253,253,118,5,0,0,0,0,0,0,0,0,222,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,249,107,37,0,0,0,0,0,0,0,0,90,243,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,129,0,0,0,0,0,0,0,0,0,81,179,253,253,253,253,0,0,0,0,0,0,0,0,238,253,253,228,33,0,0,0,0,0,0,0,19,100,241,253,253,253,246,122,0,0,0,0,0,0,0,0,91,253,253,235,60,0,0,0,0,0,4,116,218,253,253,253,253,253,105,0,0,0,0,0,0,0,0,0,76,241,253,253,230,173,42,190,205,205,207,253,253,253,253,253,244,117,3,0,0,0,0,0,0,0,0,0,0,96,253,253,253,253,253,253,253,253,253,253,253,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,3,101,203,253,253,253,253,253,253,253,253,253,253,179,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,177,157,253,253,253,253,253,253,142,106,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,15,15,15,15,15,15,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,132,249,255,212,165,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,245,254,195,191,221,254,249,184,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,200,254,203,6,0,13,133,240,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,254,206,9,0,0,0,108,254,220,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,54,0,0,0,0,94,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,254,156,1,0,0,0,0,128,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,247,25,0,0,0,0,43,231,254,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,245,0,71,72,9,46,231,254,203,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,204,253,237,253,254,239,245,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,254,254,254,254,232,171,169,205,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,151,244,253,192,133,133,118,24,0,83,254,179,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,138,0,0,0,0,0,0,2,145,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,204,19,0,0,0,0,0,0,0,0,244,254,132,0,0,0,0,0,0,0,0,0,0,0,0,42,245,254,83,0,0,0,0,0,0,0,0,0,97,254,240,33,0,0,0,0,0,0,0,0,0,0,0,63,254,254,53,0,0,0,0,0,0,0,0,0,26,240,254,134,0,0,0,0,0,0,0,0,0,0,0,63,254,254,53,0,0,0,0,0,0,0,0,0,0,150,254,219,0,0,0,0,0,0,0,0,0,0,0,31,240,254,53,0,0,0,0,0,0,0,0,0,11,192,254,227,0,0,0,0,0,0,0,0,0,0,0,0,177,254,176,50,0,0,0,0,13,27,92,144,218,254,249,171,0,0,0,0,0,0,0,0,0,0,0,0,12,181,251,251,192,167,134,181,221,254,254,249,217,151,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,113,254,254,233,164,164,133,101,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,191,127,146,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,99,162,161,161,236,252,203,161,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,70,153,209,252,253,252,252,252,252,253,252,234,142,7,0,0,0,0,0,0,0,0,0,0,0,34,144,212,252,252,252,252,253,252,252,252,252,253,252,252,176,4,0,0,0,0,0,0,0,0,0,0,32,218,252,253,252,252,252,252,243,137,106,22,22,201,252,252,202,11,0,0,0,0,0,0,0,0,0,0,174,253,253,255,249,146,74,0,0,0,0,51,191,255,253,215,21,0,0,0,0,0,0,0,0,0,0,0,57,206,206,144,75,0,0,0,0,0,34,122,252,253,244,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,132,184,234,252,252,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,93,187,228,253,252,252,252,252,253,223,56,0,0,0,0,0,0,0,0,0,0,0,0,0,43,116,231,244,252,252,252,253,252,252,252,252,253,252,121,0,0,0,0,0,0,0,0,0,0,0,15,108,233,253,255,253,253,253,253,221,116,32,0,0,244,253,253,46,0,0,0,0,0,0,0,0,0,15,219,252,252,252,253,252,252,214,102,0,0,0,0,0,118,252,252,67,0,0,0,0,0,0,0,0,0,108,252,252,252,252,253,187,69,13,0,0,0,0,0,32,191,252,233,64,0,0,0,0,0,0,0,0,0,88,219,252,218,160,46,17,0,0,0,0,0,0,0,116,253,252,130,0,0,0,0,0,0,0,0,0,0,0,15,22,14,0,0,0,0,0,0,0,0,0,189,240,253,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,170,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,50,0,0,0,0,38,47,162,219,252,252,157,42,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,227,184,185,184,184,240,252,253,252,202,89,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,252,252,253,252,252,252,252,203,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,179,252,253,252,221,137,85,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,213,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,208,254,225,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,230,28,161,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,221,254,107,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,238,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,220,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,225,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,239,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,179,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,10,185,254,164,0,0,0,0,0,0,10,123,170,226,236,236,195,68,5,10,0,0,0,0,0,0,0,0,15,232,254,85,0,0,0,0,0,8,178,254,254,254,254,254,254,241,35,15,0,0,0,0,0,0,0,0,25,236,254,85,0,0,0,0,37,208,254,242,178,178,178,184,254,254,37,0,0,0,0,0,0,0,0,0,37,241,254,85,0,0,0,11,217,254,225,71,0,0,0,37,254,222,17,0,0,0,0,0,0,0,0,0,67,254,247,22,0,0,0,176,254,240,53,0,0,0,29,211,254,148,0,0,0,0,0,0,0,0,0,0,20,234,254,85,0,0,0,245,254,66,0,0,4,114,221,247,137,3,0,0,0,0,0,0,0,0,0,0,0,170,254,192,5,0,83,253,243,119,57,106,225,254,225,61,0,0,0,0,0,0,0,0,0,0,0,0,0,83,237,254,202,129,229,254,254,254,255,249,187,104,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,187,254,254,254,254,243,159,135,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,18,118,189,254,255,100,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,154,154,177,253,253,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,158,250,253,253,253,253,253,253,253,222,178,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,232,182,182,67,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,245,253,253,245,91,47,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,251,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,210,253,253,236,106,62,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,216,253,253,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,94,94,94,168,241,225,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,236,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,60,0,74,205,185,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,248,201,238,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,209,253,253,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,170,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,238,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,188,253,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,73,227,253,154,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,165,252,252,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,219,252,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,169,253,252,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,252,252,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,215,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,252,138,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,252,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,149,156,255,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,58,140,217,253,253,253,254,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,253,254,253,253,253,253,254,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,254,253,253,253,222,214,232,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,38,196,45,235,253,253,254,170,155,65,14,0,27,58,5,0,0,0,0,0,0,0,0,0,0,0,0,62,254,255,254,254,207,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,183,253,254,228,39,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,254,110,40,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,253,253,221,195,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,255,254,254,254,254,255,201,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,91,173,234,233,195,236,253,254,253,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,115,254,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,116,0,0,0,0,0,0,111,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,244,45,0,0,0,0,0,59,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,254,178,0,0,0,0,23,141,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,175,253,253,253,155,118,118,170,229,254,253,247,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,229,253,253,254,253,253,253,253,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,235,253,254,253,253,253,253,229,161,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,155,254,207,155,193,118,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,141,253,255,139,141,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,254,253,254,253,169,168,198,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,197,251,253,251,253,138,0,0,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,255,253,169,56,0,0,0,57,85,197,198,28,0,0,0,0,0,0,0,0,0,0,0,0,57,168,253,251,196,83,0,0,0,0,169,224,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,139,0,0,0,0,29,197,254,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,114,0,0,0,197,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,198,197,254,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,196,253,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,226,168,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,225,56,84,196,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,114,0,0,169,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,0,0,57,224,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,169,0,29,85,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,225,168,197,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,196,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,196,83,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,235,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,164,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,242,254,238,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,218,254,235,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,254,244,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,205,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,191,254,254,146,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,254,253,168,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,195,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,254,254,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,173,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,220,254,196,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,0,0,0,0,0,38,110,207,123,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,0,0,0,82,208,248,254,254,251,5,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,83,0,0,0,42,151,250,254,254,254,255,254,5,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,253,144,104,111,239,254,254,254,254,254,254,212,3,0,0,0,0,0,0,0,0,0,0,0,0,1,94,254,254,254,254,254,254,254,254,254,254,225,86,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,76,129,254,254,254,254,254,254,254,227,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,105,183,254,254,254,245,121,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,73,150,253,255,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,206,251,251,251,253,251,236,144,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,228,251,251,251,251,253,251,251,251,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,170,251,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,251,251,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,255,253,253,221,180,73,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,42,206,251,251,251,253,251,127,61,0,73,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,27,228,251,251,251,251,253,127,5,0,27,228,251,251,251,96,0,0,0,0,0,0,0,0,0,0,16,109,211,253,251,251,251,251,143,61,0,47,211,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,251,251,122,0,0,0,109,251,253,251,251,173,20,0,0,0,0,0,0,0,0,0,42,228,253,253,255,253,253,253,72,0,0,89,253,253,255,253,216,0,0,0,0,0,0,0,0,0,0,42,206,251,251,251,253,251,251,251,71,42,144,236,251,251,253,251,215,0,0,0,0,0,0,0,0,0,0,99,251,251,251,251,164,138,246,251,226,228,251,251,251,251,253,230,55,0,0,0,0,0,0,0,0,0,0,253,251,251,251,173,0,0,138,251,251,253,251,251,251,251,221,61,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,71,0,0,166,251,251,253,251,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,143,0,73,176,253,253,253,255,253,253,221,51,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,205,144,253,251,251,251,251,253,251,230,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,159,251,251,251,253,251,251,251,251,242,112,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,236,251,251,253,251,251,251,173,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,251,251,253,251,96,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,80,219,254,255,254,138,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,158,240,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,246,191,236,253,253,199,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,113,113,113,101,0,184,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,253,253,241,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,177,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,253,253,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,177,253,253,253,216,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,168,9,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,253,253,253,207,88,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,253,253,253,253,253,235,167,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,8,8,8,124,182,182,246,253,222,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,181,253,206,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,253,239,33,0,0,0,0,0,0,0,0,0,42,131,131,131,18,0,0,0,0,0,0,0,0,0,0,211,253,253,156,0,0,0,0,0,0,0,0,0,80,253,253,253,216,211,192,36,36,36,36,26,0,32,127,246,253,250,134,0,0,0,0,0,0,0,0,0,80,253,253,253,253,253,253,253,253,253,253,214,115,239,253,253,253,156,0,0,0,0,0,0,0,0,0,0,19,60,103,235,250,253,253,253,253,253,253,253,253,253,253,253,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,156,233,253,253,253,253,253,253,253,253,172,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,78,78,78,193,131,149,78,78,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,215,253,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,255,254,201,174,254,254,214,125,125,125,125,191,144,254,241,125,125,125,61,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,190,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,247,0,0,0,0,0,0,0,0,83,149,149,149,149,149,149,149,149,203,149,149,149,149,65,19,157,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,11,190,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,251,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,186,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,253,253,209,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,230,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,248,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,228,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,253,253,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,230,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,225,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,123,38,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,117,255,179,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,254,253,238,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,253,196,144,224,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,138,253,248,52,0,49,244,240,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,253,253,164,0,0,0,111,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,240,29,0,0,0,93,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,197,0,0,0,0,95,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,245,249,85,0,0,0,0,169,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,222,0,0,0,0,0,169,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,128,0,0,0,0,0,192,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,248,21,0,0,0,0,28,250,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,245,0,0,0,0,0,130,253,234,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,224,0,0,0,0,0,167,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,168,0,0,0,0,74,252,238,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,168,0,0,0,23,206,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,168,0,0,0,161,253,236,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,171,0,2,102,254,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,237,249,108,162,253,254,224,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,253,179,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,199,176,83,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,255,201,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,219,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,250,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,245,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,249,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,249,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,226,219,131,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,133,254,251,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,179,129,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,188,254,254,119,21,25,25,25,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,224,254,254,254,225,236,254,254,254,165,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,254,254,254,254,225,217,248,254,221,217,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,245,120,87,19,0,72,87,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,211,193,160,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,192,254,254,254,254,238,160,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,49,77,193,254,254,254,214,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,77,193,254,254,239,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,137,239,254,191,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,229,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,107,201,231,250,254,254,113,3,0,0,0,0,0,0,0,0,0,0,0,0,6,182,237,160,113,195,237,241,254,254,254,254,254,113,3,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,254,254,254,254,254,254,254,222,136,136,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,76,142,255,255,172,130,42,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,37,10,0,0,0,0,0,39,247,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,240,91,0,0,0,0,0,88,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,193,49,0,0,0,0,0,172,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,238,0,0,0,0,0,3,203,255,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,237,0,0,0,0,0,9,254,223,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,250,127,0,0,0,0,0,40,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,68,0,0,0,0,0,90,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,244,199,0,0,0,0,0,0,90,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,255,123,16,0,0,0,0,0,157,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,232,254,254,235,157,55,0,0,62,243,236,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,185,98,182,254,252,239,239,254,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,102,2,0,1,13,85,152,120,136,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,248,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,250,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,80,167,167,249,255,163,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,194,249,254,254,254,254,254,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,244,254,209,131,106,189,250,254,254,167,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,186,230,26,7,0,0,0,237,254,254,246,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,232,11,0,0,0,107,251,254,246,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,145,0,0,0,37,242,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,111,254,238,8,0,9,211,254,199,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,172,254,203,18,213,254,249,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,252,254,254,254,251,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,197,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,255,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,254,205,254,252,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,230,254,216,6,159,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,178,254,230,15,0,58,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,107,0,0,43,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,224,9,0,0,74,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,218,0,0,4,193,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,245,115,85,171,254,216,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,238,254,254,254,254,248,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,178,254,248,163,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,242,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,211,252,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,253,199,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,252,218,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,252,167,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,236,252,143,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,255,253,165,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,246,252,253,252,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,243,110,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,217,208,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,141,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,187,252,252,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,253,252,252,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,253,151,28,28,40,215,243,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,154,253,244,225,51,0,0,0,0,169,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,214,81,0,0,0,0,0,7,187,233,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,244,56,0,0,0,0,0,0,154,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,75,0,0,0,0,76,113,213,253,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,203,29,29,117,141,254,253,253,253,214,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,168,168,234,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,252,241,139,52,28,0,0,197,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,253,194,113,0,0,0,0,4,128,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,206,247,121,19,0,0,0,0,0,179,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,132,215,252,50,0,0,0,0,0,67,134,253,252,148,6,0,0,0,0,0,0,0,0,0,0,0,0,13,206,252,102,0,0,0,0,63,188,246,252,253,177,31,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,156,0,0,19,117,191,254,253,253,228,114,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,149,57,120,225,252,252,253,214,109,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,253,252,252,252,156,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,252,252,241,139,103,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,163,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,215,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,246,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,121,0,0,0,0,29,85,85,85,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,27,0,0,0,120,215,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,178,9,0,19,169,253,252,252,252,252,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,140,0,0,107,252,253,252,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,0,38,222,253,253,79,147,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,163,140,252,252,173,226,249,233,74,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,253,252,252,252,252,253,233,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,253,252,252,252,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,112,142,252,252,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,159,216,248,92,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,182,250,254,248,250,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,237,254,211,94,53,70,254,217,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,234,44,3,0,0,1,122,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,25,0,0,0,0,0,83,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,220,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,40,163,254,254,205,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,204,254,254,254,254,254,202,126,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,254,254,254,254,254,209,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,180,143,101,48,48,48,114,196,246,241,141,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,167,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,225,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,241,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,217,254,29,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,36,249,255,29,0,0,0,0,0,0,0,0,0,0,23,219,4,0,0,0,0,0,0,0,0,0,0,2,152,254,200,7,0,0,0,0,0,0,0,0,0,0,29,254,67,0,0,0,0,0,0,0,0,0,29,157,254,251,33,0,0,0,0,0,0,0,0,0,0,0,15,220,216,45,0,0,0,0,0,0,0,85,218,254,249,108,0,0,0,0,0,0,0,0,0,0,0,0,0,118,158,152,64,0,0,0,0,157,193,250,251,158,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,194,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,222,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,200,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,241,113,0,0,0,0,0,65,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,234,17,0,0,0,0,24,238,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,227,0,0,0,0,0,62,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,245,68,0,0,0,0,62,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,215,244,125,47,0,0,86,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,121,215,248,238,237,247,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,87,114,114,244,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,245,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,251,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,2,20,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,145,236,181,253,211,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,230,253,254,253,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,253,185,208,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,254,173,15,0,137,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,247,253,227,99,0,0,7,221,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,216,107,36,0,0,7,169,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,10,0,0,0,0,126,253,231,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,235,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,144,234,234,196,115,40,107,237,237,95,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,253,254,253,253,253,193,99,15,0,0,0,0,0,0,53,135,0,0,0,0,0,0,0,0,255,254,163,246,254,255,254,254,254,254,255,254,254,254,254,255,254,254,254,231,0,0,0,0,0,0,0,0,201,253,238,253,253,254,153,135,226,195,196,235,253,242,233,234,188,135,121,24,0,0,0,0,0,0,0,0,41,180,253,253,192,116,12,0,0,0,0,6,78,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,19,19,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,255,198,170,170,170,226,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,226,86,0,0,0,0,86,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,0,0,0,0,0,29,226,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,0,0,0,0,0,114,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,86,198,255,226,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,170,170,170,255,255,170,86,0,57,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,198,114,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,86,29,0,0,0,0,0,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,172,233,217,105,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,123,254,253,253,253,228,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,170,253,253,196,113,122,220,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,222,253,253,55,0,16,233,217,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,241,80,0,0,100,242,220,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,248,253,42,0,0,11,230,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,211,253,132,2,0,0,79,245,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,240,238,45,0,0,48,222,253,209,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,169,0,70,179,249,253,246,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,251,245,252,253,254,253,183,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,235,245,222,190,255,243,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,220,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,216,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,186,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,246,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,38,38,38,38,22,38,38,38,142,146,236,255,137,0,0,0,0,0,0,0,0,0,0,0,2,95,184,246,253,253,253,253,224,253,253,253,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,83,209,253,252,197,139,139,146,202,162,139,115,74,36,32,170,253,134,0,0,0,0,0,0,0,0,0,0,184,253,246,97,0,0,0,0,0,0,0,0,0,0,58,236,248,63,0,0,0,0,0,0,0,0,0,0,79,172,97,0,0,0,0,0,0,0,0,0,0,0,173,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,223,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,244,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,212,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,243,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,251,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,237,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,249,253,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,204,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,227,253,208,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,214,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,141,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,86,0,0,114,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,226,86,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,141,0,0,0,0,0,86,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,29,141,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,86,114,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,0,86,255,255,141,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,57,114,255,255,114,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,226,255,255,86,0,0,0,141,255,255,57,29,114,141,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,141,0,0,0,0,0,0,198,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,86,57,0,0,0,0,0,0,0,0,198,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,25,91,91,91,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,100,130,180,190,254,254,254,254,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,13,44,107,184,252,254,254,254,254,254,254,240,235,254,219,0,0,0,0,0,0,0,0,0,0,4,44,181,226,254,254,254,243,221,215,139,128,57,57,26,66,220,68,0,0,0,0,0,0,0,0,0,0,105,254,254,254,218,191,107,33,0,0,0,0,0,0,0,34,67,0,0,0,0,0,0,0,0,0,0,0,126,227,254,244,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,254,247,156,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,146,164,180,253,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,244,208,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,134,0,0,0,0,0,66,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,211,0,0,0,0,0,66,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,237,0,0,0,0,0,66,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,15,0,0,0,0,182,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,228,111,66,66,112,244,211,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,185,254,254,254,254,254,235,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,8,8,8,8,8,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,228,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,185,228,252,252,136,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,253,252,227,66,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,218,252,253,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,252,252,252,245,161,129,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,252,252,253,252,252,227,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,252,253,252,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,252,221,43,128,128,22,54,179,252,241,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,255,253,69,0,0,0,0,0,0,231,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,223,25,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,253,123,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,253,92,0,0,0,0,0,0,119,248,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,143,0,0,0,0,0,64,248,252,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,232,38,0,0,0,89,222,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,252,154,47,47,110,219,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,252,252,253,252,252,195,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,160,227,252,252,253,235,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,189,137,137,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,245,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,239,253,149,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,167,253,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,234,253,237,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,228,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,90,250,253,229,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,171,253,253,187,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,133,253,253,241,72,0,0,0,16,28,84,165,131,9,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,139,0,6,34,144,206,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,253,6,112,229,253,253,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,241,252,253,253,253,197,203,248,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,253,253,92,34,18,100,245,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,58,238,253,253,253,253,253,253,214,199,201,253,253,253,171,16,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,253,253,253,253,253,253,253,253,172,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,253,253,253,253,253,253,253,241,232,102,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,246,116,116,116,116,116,116,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,170,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,252,238,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,159,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,255,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,190,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,47,73,150,193,234,255,176,193,150,150,150,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,213,253,253,253,253,253,253,253,253,253,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,236,149,29,114,71,67,241,217,142,164,242,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,134,0,0,0,0,145,165,0,0,0,171,250,63,0,0,0,0,0,0,0,0,0,0,0,0,0,83,235,244,165,21,0,0,12,128,55,0,3,95,247,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,101,0,0,0,0,0,0,165,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,248,253,159,31,0,0,0,76,250,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,113,0,22,160,229,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,130,253,238,170,227,253,250,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,235,146,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,208,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,49,214,253,220,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,100,210,253,232,120,13,215,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,146,253,253,213,11,0,0,160,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,169,9,0,0,16,218,241,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,232,40,0,0,1,26,212,237,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,253,54,0,0,0,33,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,198,253,157,8,10,11,157,253,249,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,227,242,253,253,197,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,149,203,253,253,185,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,232,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,187,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,174,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,158,252,137,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,250,253,170,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,253,223,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,249,253,137,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,218,253,225,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,32,0,0,0,14,53,53,143,183,183,183,172,50,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,32,16,87,176,196,253,253,253,253,253,253,253,249,171,0,0,0,0,0,0,0,0,0,0,0,241,253,253,180,198,253,253,253,244,214,124,104,214,214,217,253,248,20,0,0,0,0,0,0,0,0,0,16,243,253,253,253,253,253,227,120,70,0,0,0,0,0,10,197,253,123,0,0,0,0,0,0,0,0,13,199,253,253,253,253,201,97,20,0,0,0,0,0,0,3,112,253,253,111,0,0,0,0,0,0,0,0,201,253,245,252,253,253,175,20,4,0,0,0,0,4,104,161,253,253,237,0,0,0,0,0,0,0,0,0,248,240,68,102,232,253,253,253,165,143,143,143,143,160,253,253,252,233,51,0,0,0,0,0,0,0,0,0,57,3,0,0,45,230,252,253,253,253,253,253,253,253,249,233,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,163,253,253,253,253,230,123,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,156,201,254,254,178,37,59,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,50,170,244,254,253,253,253,253,239,253,241,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,167,253,253,253,254,253,253,253,253,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,68,239,253,253,253,237,192,117,117,243,253,254,253,210,16,0,0,0,0,0,0,0,0,0,0,0,0,106,239,254,253,253,185,36,0,0,31,241,253,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,255,249,98,0,0,0,35,224,254,254,255,254,78,0,0,0,0,0,0,0,0,0,0,0,25,241,253,253,241,65,0,0,0,43,217,253,253,253,254,228,12,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,30,0,0,0,99,254,253,253,253,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,162,0,0,58,189,248,254,253,253,253,253,254,121,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,230,99,180,235,253,253,254,253,253,253,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,254,255,254,254,254,254,218,103,224,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,63,209,253,253,254,253,253,234,121,30,28,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,186,253,254,186,107,6,0,0,118,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,19,3,0,0,0,0,170,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,250,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,185,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,42,145,145,145,106,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,37,158,167,253,253,253,253,253,217,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,14,147,169,246,253,254,253,253,253,253,218,191,223,253,70,0,0,0,0,0,0,0,0,0,0,0,0,73,202,253,253,253,253,252,134,193,193,193,158,14,98,253,99,0,0,0,0,0,0,0,0,0,0,11,154,236,253,253,225,180,180,57,0,0,0,0,0,0,98,253,225,0,0,0,0,0,0,0,0,0,9,167,253,233,168,71,30,0,0,0,0,0,0,0,0,0,19,235,253,0,0,0,0,0,0,0,0,0,71,253,211,27,0,0,0,0,0,0,0,0,0,0,0,0,84,250,207,0,0,0,0,0,0,0,0,6,192,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,81,0,0,0,0,0,0,0,0,71,253,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,11,0,0,0,0,0,0,0,0,134,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,41,236,249,11,0,0,0,0,0,0,0,0,133,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,221,144,0,0,0,0,0,0,0,0,0,151,229,0,0,0,0,0,0,0,0,0,0,0,0,0,11,167,253,128,0,0,0,0,0,0,0,0,0,254,245,88,0,0,0,0,0,0,0,0,0,0,0,64,194,253,188,8,0,0,0,0,0,0,0,0,0,254,253,243,101,18,0,0,0,0,0,0,0,38,142,233,253,233,62,0,0,0,0,0,0,0,0,0,0,162,253,253,253,211,194,96,120,194,79,74,142,231,253,236,180,63,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,253,253,254,253,253,237,128,0,0,0,0,0,0,0,0,0,0,0,0,0,19,115,175,135,253,253,253,253,253,253,254,244,156,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,5,111,110,24,128,144,87,24,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,147,249,230,147,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,160,249,254,254,254,254,254,235,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,212,229,254,252,179,140,48,166,253,254,205,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,254,227,128,53,0,0,0,0,141,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,138,65,25,0,0,0,0,0,0,99,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,99,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,242,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,204,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,60,60,60,31,13,146,249,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,163,222,254,254,254,231,217,254,254,164,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,231,254,254,242,232,254,254,254,254,245,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,254,254,171,102,148,254,254,255,254,254,201,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,254,223,250,254,254,248,151,233,254,254,238,97,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,254,254,253,222,138,60,0,4,165,254,254,254,176,141,141,56,0,0,0,0,0,0,0,0,0,12,76,125,119,76,72,0,0,0,0,0,7,147,241,254,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,157,254,254,180,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,255,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,226,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,189,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,230,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,247,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,142,253,253,242,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,239,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,156,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,17,17,28,99,115,180,180,248,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,76,159,233,253,253,253,253,253,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,71,186,248,253,253,254,253,253,253,253,253,253,223,170,41,0,0,0,0,0,0,0,0,0,0,0,19,121,245,253,253,253,253,254,253,253,221,212,128,49,5,0,0,0,0,0,0,0,0,0,0,0,0,5,168,253,253,253,208,204,177,123,64,41,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,247,253,253,114,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,137,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,236,163,163,137,163,163,83,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,254,254,254,255,254,185,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,215,249,253,253,253,253,253,253,254,253,253,243,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,105,146,165,188,146,226,246,253,253,253,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,24,68,78,17,0,0,19,0,0,42,209,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,87,239,253,253,216,60,0,0,0,0,0,59,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,232,141,131,131,131,187,241,253,253,245,33,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,253,253,253,253,253,254,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,12,137,194,253,253,253,253,253,253,253,254,253,225,114,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,16,122,241,253,253,253,253,150,40,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,207,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,141,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,238,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,207,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,170,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,197,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,238,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,241,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,255,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,235,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,207,255,187,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,237,253,253,253,189,97,97,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,199,246,253,253,253,253,253,253,253,247,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,252,253,253,253,253,253,253,253,253,253,253,237,26,0,0,0,0,0,0,0,0,0,0,0,0,5,122,253,253,253,253,253,253,252,151,82,137,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,253,253,253,244,158,0,0,83,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,29,214,253,253,253,253,253,228,43,0,0,0,83,253,253,242,57,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,253,253,223,42,0,0,0,0,142,253,253,253,114,0,0,0,0,0,0,0,0,0,0,27,214,253,253,253,253,253,136,0,0,0,0,0,220,253,253,242,53,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,253,69,9,0,0,0,0,85,247,253,253,253,116,0,0,0,0,0,0,0,0,0,71,242,253,253,253,253,232,22,0,0,0,0,0,129,253,253,253,253,116,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,143,0,0,0,0,0,14,242,253,253,253,225,41,0,0,0,0,0,0,0,0,4,234,253,253,253,253,253,143,0,0,0,0,8,197,253,253,253,230,41,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,197,13,0,0,81,197,253,253,253,253,144,0,0,0,0,0,0,0,0,0,0,118,253,253,253,183,155,253,253,27,0,76,201,253,253,253,253,64,4,0,0,0,0,0,0,0,0,0,0,118,253,253,253,82,2,34,34,78,121,244,253,253,253,253,136,8,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,198,63,63,122,248,253,253,253,253,223,135,8,0,0,0,0,0,0,0,0,0,0,0,0,99,250,253,253,253,253,253,253,253,253,223,197,75,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,253,253,246,195,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,253,253,253,119,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,128,212,254,254,255,226,141,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,125,216,254,254,254,254,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,150,254,254,205,84,116,153,223,254,254,248,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,162,23,0,0,0,17,168,254,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,254,147,1,0,0,0,0,0,81,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,244,21,0,0,0,0,0,0,81,254,233,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,95,0,0,0,0,0,0,62,170,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,213,72,2,0,0,0,75,253,254,186,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,242,254,254,237,185,179,147,224,254,254,220,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,209,240,238,228,209,198,127,176,120,249,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,29,19,0,0,0,0,10,247,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,189,254,202,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,234,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,107,223,235,131,0,0,0,24,87,254,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,162,0,0,0,57,253,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,7,136,254,253,253,253,181,0,0,68,241,253,254,197,21,0,0,0,0,0,0,0,0,0,0,0,0,0,79,232,254,253,253,207,46,0,72,217,253,253,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,255,254,133,0,0,21,209,254,254,254,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,34,249,253,254,66,3,0,0,176,253,253,253,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,204,9,0,0,92,254,253,253,211,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,59,0,0,47,212,254,253,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,149,7,14,193,253,254,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,255,169,241,254,254,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,183,253,254,253,253,253,253,179,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,217,254,253,253,253,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,253,253,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,255,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,254,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,245,253,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,216,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,162,227,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,39,144,179,237,188,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,96,214,254,254,197,222,254,205,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,108,240,247,195,59,15,1,7,81,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,211,71,0,0,0,0,0,0,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,179,19,0,0,0,0,0,0,89,237,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,234,14,0,0,0,0,0,24,153,254,203,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,102,0,0,0,0,8,96,238,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,232,5,0,0,3,60,242,246,253,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,46,85,120,188,227,126,79,246,210,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,245,254,254,249,143,21,0,170,249,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,85,111,49,0,0,84,255,213,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,206,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,204,253,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,143,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,250,192,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,246,241,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,224,250,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,198,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,161,216,188,171,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,155,181,253,254,255,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,254,231,143,123,12,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,251,254,227,120,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,231,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,144,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,254,187,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,135,0,0,0,17,170,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,230,33,0,19,103,214,254,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,135,0,19,182,254,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,89,167,208,254,254,242,206,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,254,254,241,171,57,74,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,208,248,254,218,88,0,0,86,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,85,17,0,0,0,47,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,236,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,170,170,170,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,198,255,255,255,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,170,141,86,57,86,114,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,86,0,0,0,0,0,0,57,226,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,0,0,0,0,0,29,141,198,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,29,0,0,0,29,114,255,255,226,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,57,170,255,255,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,226,29,86,170,255,255,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,170,255,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,114,29,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,226,29,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,0,0,0,0,86,226,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,29,0,0,0,0,0,170,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,29,0,0,0,0,0,57,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,114,86,86,141,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,255,255,255,255,198,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,114,170,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,220,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,135,247,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,254,254,170,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,255,254,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,125,254,212,232,239,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,255,205,22,226,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,244,25,41,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,176,0,72,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,112,0,182,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,249,229,62,211,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,213,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,150,254,254,218,122,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,214,197,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,66,22,216,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,216,214,0,0,216,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,204,0,61,251,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,119,41,225,241,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,111,225,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,240,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,177,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,229,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,216,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,240,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,229,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,233,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,139,0,0,126,225,214,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,244,25,16,216,253,241,229,253,78,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,142,26,179,240,109,47,10,196,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,84,210,244,81,0,0,60,234,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,240,252,175,0,0,0,241,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,140,0,19,117,241,254,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,165,120,225,252,252,209,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,253,252,224,118,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,139,228,252,241,139,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,121,121,190,255,253,253,253,253,225,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,200,252,252,252,253,252,252,252,252,229,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,245,252,252,247,158,159,158,89,89,53,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,252,252,187,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,185,20,0,0,0,0,130,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,221,252,241,63,0,0,0,0,0,198,231,81,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,241,97,0,0,0,0,0,0,79,246,252,165,34,0,0,0,0,0,0,0,0,0,0,0,0,12,229,252,185,0,0,0,0,0,0,0,0,78,219,252,237,59,0,0,0,0,0,0,0,0,0,0,0,107,252,252,108,0,0,0,0,0,0,0,0,0,84,207,252,169,0,0,0,0,0,0,0,0,0,0,0,107,252,252,53,0,0,0,0,0,0,0,0,0,0,54,252,239,56,0,0,0,0,0,0,0,0,0,0,241,253,215,28,0,0,0,0,0,0,0,0,0,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,240,252,116,0,0,0,0,0,0,0,0,0,0,0,54,252,252,106,0,0,0,0,0,0,0,0,0,0,240,252,39,0,0,0,0,0,0,0,0,0,0,0,54,252,252,106,0,0,0,0,0,0,0,0,0,0,240,252,39,0,0,0,0,0,0,0,0,0,0,0,96,252,187,17,0,0,0,0,0,0,0,0,0,0,240,252,75,0,0,0,0,0,0,0,0,0,0,89,238,252,93,0,0,0,0,0,0,0,0,0,0,0,240,252,172,0,0,0,0,0,0,0,0,20,96,238,241,177,24,0,0,0,0,0,0,0,0,0,0,0,148,252,227,58,0,0,0,0,0,20,97,202,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,252,227,160,139,41,160,160,204,252,252,243,190,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,222,252,252,252,252,252,252,253,239,189,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,154,252,252,252,252,252,120,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,240,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,248,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,249,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,255,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,255,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,255,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,217,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,74,156,232,156,156,156,231,194,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,211,253,253,254,253,253,253,253,254,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,254,253,228,174,235,254,253,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,154,34,13,0,15,254,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,223,200,80,0,0,0,0,0,178,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,239,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,159,254,253,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,255,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,243,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,199,253,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,15,0,0,0,0,10,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,207,253,253,253,99,135,128,195,195,209,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,255,254,254,254,254,255,254,254,254,254,255,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,34,222,254,253,253,253,253,254,253,253,253,253,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,253,253,180,174,78,78,78,78,182,254,216,144,6,0,0,0,0,0,0,0,0,0,0,0,31,241,253,254,174,49,2,0,0,0,0,0,8,19,10,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,253,133,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,255,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,14,0,0,0,0,0,3,208,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,167,239,64,0,0,0,0,70,254,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,151,0,0,0,0,78,254,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,254,226,19,0,0,0,5,194,254,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,174,253,253,151,0,0,0,0,67,253,241,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,192,4,0,0,0,0,187,253,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,40,225,253,253,104,40,41,138,139,202,251,253,242,70,3,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,254,254,254,254,254,254,254,254,254,253,254,253,146,62,0,0,0,0,0,0,0,0,0,0,0,11,253,254,253,253,253,253,235,203,244,254,253,240,126,203,223,167,4,0,0,0,0,0,0,0,0,0,0,2,114,149,148,137,49,49,31,0,204,254,253,141,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,216,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,180,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,239,254,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,31,0,0,0,0,0,0,169,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,192,0,0,0,0,0,0,170,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,99,0,0,0,0,0,0,169,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,222,99,0,0,0,0,0,0,170,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,15,0,0,0,0,0,0,169,224,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,209,186,6,0,0,0,0,0,0,169,230,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,38,0,0,0,0,0,0,0,169,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,230,15,0,0,0,33,85,94,55,211,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,235,184,222,217,245,224,153,155,203,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,154,154,154,138,54,0,0,0,163,255,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,209,179,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,235,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,105,3,0,0,0,0,0,0,3,129,215,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,188,252,21,0,0,0,0,0,0,23,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,21,0,0,0,0,0,0,14,218,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,158,1,0,0,0,0,0,0,0,165,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,137,249,216,19,0,0,0,0,0,0,0,5,184,252,155,0,0,0,0,0,0,0,0,0,0,0,0,24,224,252,111,0,0,0,0,0,0,0,0,23,252,252,241,0,0,0,0,0,0,0,0,0,0,0,2,123,252,179,8,0,0,0,0,0,0,0,0,22,248,252,241,0,0,0,0,0,0,0,0,0,0,0,53,252,252,121,0,0,0,0,0,0,0,0,0,0,165,252,241,0,0,0,0,0,0,0,0,0,0,0,129,252,252,87,0,0,0,0,0,0,0,54,78,44,192,252,249,107,0,0,0,0,0,0,0,0,0,0,253,252,252,126,220,220,220,220,220,220,221,243,252,238,252,252,252,247,106,49,0,0,0,0,0,0,0,0,255,253,253,250,220,220,220,220,220,220,221,143,158,216,228,253,253,253,253,253,0,0,0,0,0,0,0,0,91,186,186,170,0,0,0,0,0,0,0,0,0,0,56,252,252,193,77,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,233,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,249,183,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,252,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,161,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,86,124,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,37,22,3,27,37,80,127,118,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,227,191,236,254,254,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,16,112,251,254,254,254,254,254,254,254,249,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,160,223,254,255,254,255,254,202,211,181,177,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,238,254,254,254,208,118,31,31,9,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,237,253,254,254,198,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,99,162,223,254,180,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,85,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,204,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,159,7,0,0,0,0,0,0,0,0,66,198,254,169,5,0,0,0,0,0,0,0,0,0,0,0,0,0,181,198,167,53,0,0,37,79,79,142,240,254,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,250,255,246,229,229,241,254,254,254,246,216,51,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,192,254,254,255,254,254,254,213,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,36,131,140,140,140,96,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,209,255,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,189,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,252,221,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,241,223,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,219,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,184,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,216,243,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,0,0,0,5,171,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,204,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,227,232,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,236,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,246,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,216,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,92,179,188,169,195,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,124,207,254,216,197,197,171,101,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,248,254,90,38,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,119,251,254,254,135,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,182,246,250,255,204,196,106,158,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,216,131,43,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,222,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,245,84,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,223,254,167,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,110,255,251,152,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,71,235,219,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,55,0,0,0,0,9,83,135,226,250,243,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,122,102,159,188,134,209,254,254,252,239,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,246,254,239,193,206,187,107,91,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,29,22,3,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,97,177,211,130,48,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,183,254,254,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,252,218,175,225,254,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,205,0,0,14,182,254,231,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,254,134,0,0,0,49,252,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,255,92,0,0,0,0,178,254,200,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,254,141,0,0,0,0,104,254,254,169,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,243,22,0,0,0,68,239,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,254,202,22,6,6,126,245,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,248,254,254,254,254,254,254,254,206,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,180,254,254,216,171,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,45,3,35,244,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,225,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,162,212,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,180,247,254,227,164,81,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,249,251,162,46,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,209,254,202,79,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,254,127,9,0,0,0,0,32,170,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,248,106,0,0,0,0,0,93,195,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,240,40,0,0,0,0,108,219,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,228,0,0,0,102,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,229,78,187,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,140,240,254,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,184,254,185,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,254,160,25,225,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,236,0,0,207,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,249,225,29,0,47,245,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,236,54,0,0,206,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,182,0,0,95,245,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,254,64,5,147,254,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,94,195,253,205,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,160,161,211,244,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,214,51,0,0,0,0,0,0,0,0,0,0,51,51,21,41,21,0,0,0,0,0,0,0,0,0,92,192,253,212,203,203,123,203,82,0,62,102,123,203,253,252,223,243,203,61,0,0,0,0,0,0,0,0,0,41,254,253,254,253,254,253,234,193,254,253,254,253,254,253,254,253,203,0,0,0,0,0,0,0,0,0,0,0,91,252,253,252,253,252,253,252,253,252,253,252,253,252,253,252,223,20,0,0,0,0,0,0,0,0,0,0,21,142,163,203,203,203,234,213,203,203,203,203,102,102,132,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,10,0,0,0,0,0,0,51,252,253,91,0,0,0,0,0,0,0,0,0,0,31,10,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,50,0,0,0,0,0,0,0,0,0,41,193,10,0,0,0,0,0,0,0,0,0,0,0,0,132,252,213,10,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,20,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,128,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,64,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,128,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,111,191,254,255,254,254,110,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,197,244,253,253,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,109,234,217,217,153,73,10,46,230,253,253,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,62,213,253,204,0,0,0,0,0,0,169,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,15,194,253,176,11,0,0,0,0,0,0,239,253,253,219,26,0,0,0,0,0,0,0,0,0,0,0,0,170,253,205,24,0,0,0,0,0,12,110,249,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,124,0,0,0,0,0,7,98,253,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,198,19,0,0,0,13,137,253,253,228,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,195,103,74,112,221,253,253,248,50,224,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,253,253,253,253,253,190,0,32,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,205,253,253,253,253,233,115,22,0,32,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,54,109,109,44,0,0,0,32,253,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,91,153,238,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,70,156,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,254,253,253,253,253,208,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,254,253,253,232,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,240,210,99,49,18,214,245,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,28,0,0,0,17,230,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,134,248,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,212,248,253,253,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,253,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,255,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,240,97,170,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,0,15,229,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,123,96,0,0,0,0,0,12,224,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,245,253,180,0,0,0,0,0,110,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,114,0,0,0,0,79,245,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,240,253,221,36,41,66,150,246,253,154,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,244,247,253,254,253,214,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,161,253,253,253,253,254,189,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,121,122,248,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,192,253,254,253,253,243,206,108,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,253,253,254,253,253,253,253,253,214,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,179,220,253,253,253,216,173,173,173,237,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,22,187,253,253,253,253,253,28,0,0,0,95,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,253,253,253,154,0,0,0,0,68,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,249,135,38,0,0,0,0,89,253,253,226,0,0,0,0,0,0,0,0,0,0,0,12,147,239,253,253,249,131,0,0,0,0,0,23,206,253,253,241,57,0,0,0,0,0,0,0,0,0,0,185,253,253,253,253,213,0,0,0,0,0,0,214,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,253,142,0,0,0,0,0,50,235,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,171,254,254,254,229,42,0,0,0,0,52,241,254,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,143,0,0,0,0,0,164,253,253,253,230,46,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,66,0,0,0,0,109,252,253,253,228,55,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,253,66,0,0,47,38,234,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,235,49,0,0,147,225,254,253,253,196,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,186,0,9,68,226,253,254,253,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,232,146,75,253,253,253,255,179,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,250,253,253,253,253,253,253,253,228,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,253,253,245,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,253,232,120,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,63,128,211,255,227,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,97,222,254,205,128,128,128,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,236,85,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,244,55,0,0,0,76,196,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,132,0,0,0,125,248,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,202,2,0,11,173,251,254,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,157,0,14,209,252,247,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,105,76,231,238,100,229,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,246,251,254,61,160,254,194,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,239,219,143,113,29,227,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,172,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,141,253,246,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,207,254,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,192,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,253,150,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,159,222,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,187,58,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,240,50,0,0,0,0,0,68,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,206,0,0,0,0,0,0,187,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,102,0,0,0,0,0,0,207,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,92,0,0,0,0,0,0,208,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,249,75,0,0,0,0,0,0,207,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,0,0,0,0,0,0,0,176,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,0,0,0,0,0,0,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,135,0,0,0,0,0,0,9,232,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,222,138,138,139,138,138,180,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,236,252,252,252,253,244,206,223,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,69,111,79,69,56,0,93,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,206,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,250,108,0,0,79,167,215,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,238,205,0,49,174,252,199,211,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,104,182,254,219,60,0,88,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,186,235,229,251,166,9,0,0,40,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,217,60,0,0,0,0,82,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,241,115,8,0,0,0,0,0,165,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,43,0,0,0,0,0,0,14,236,213,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,244,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,237,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,248,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,223,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,178,253,255,178,141,141,141,141,141,141,79,104,141,141,29,10,0,0,0,0,0,0,0,0,0,0,0,131,196,246,253,252,252,252,253,252,252,252,253,252,252,252,253,196,38,0,0,0,0,0,0,0,0,0,0,0,0,50,69,168,168,168,168,93,143,168,168,168,168,205,253,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,234,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,177,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,121,241,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,108,178,248,253,213,146,228,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,181,253,253,254,37,17,30,220,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,109,241,245,173,103,40,36,130,227,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,191,0,0,32,217,253,232,186,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,253,125,25,0,29,220,253,205,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,80,0,3,153,254,236,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,80,0,28,253,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,223,253,159,28,209,253,177,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,253,253,247,178,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,254,102,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,241,253,253,211,254,253,168,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,243,25,117,250,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,240,0,0,213,253,232,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,241,253,240,0,0,34,236,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,248,161,27,154,244,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,192,253,253,255,253,253,242,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,253,255,253,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,225,253,255,224,143,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,252,253,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,252,253,252,252,220,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,185,10,39,220,252,198,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,198,252,252,33,0,0,35,222,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,237,164,21,0,0,0,132,252,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,224,252,151,0,0,0,0,0,79,248,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,241,0,0,0,0,0,0,0,165,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,192,252,159,0,0,0,0,0,0,7,192,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,252,84,0,0,0,0,0,0,23,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,242,19,0,0,0,0,0,0,85,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,164,0,0,0,0,0,0,0,161,252,191,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,73,0,0,0,0,0,0,40,246,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,55,0,0,0,0,0,6,209,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,55,0,0,0,0,8,155,252,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,55,0,0,0,0,72,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,108,0,0,4,60,244,252,109,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,218,54,112,184,252,248,131,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,226,252,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,180,252,252,170,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,249,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,90,3,0,0,0,0,166,253,253,196,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,36,0,0,0,0,217,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,254,127,0,0,0,62,241,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,253,42,0,0,0,145,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,193,5,0,0,11,225,253,250,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,254,37,0,0,0,80,253,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,218,253,254,18,0,0,33,195,253,253,248,181,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,255,189,254,254,254,255,254,254,254,254,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,254,253,253,253,253,254,253,253,253,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,19,180,253,254,253,253,253,253,254,253,221,127,127,127,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,119,144,144,144,152,253,254,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,169,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,141,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,170,198,255,255,255,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,170,170,86,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,114,0,0,0,114,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,57,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,0,0,0,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,86,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,255,255,255,255,203,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,201,117,117,165,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,131,101,109,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,216,253,192,51,243,207,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,107,253,240,71,0,236,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,106,253,253,139,0,70,247,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,253,253,169,12,0,130,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,198,253,253,235,33,0,0,230,253,169,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,253,253,253,142,0,0,0,230,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,165,253,253,235,148,12,0,0,110,248,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,166,253,253,253,88,0,0,0,28,232,253,165,3,0,0,0,0,0,0,0,0,0,0,44,150,205,205,212,253,253,235,82,12,0,0,0,132,253,180,36,0,0,0,0,0,0,0,0,0,0,4,147,166,166,220,253,253,236,129,0,0,0,0,73,230,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,98,0,0,0,28,132,247,253,168,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,242,253,236,49,0,0,0,124,253,253,217,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,210,21,106,106,200,248,253,217,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,250,239,253,253,253,253,163,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,207,253,253,253,253,253,130,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,147,253,229,129,38,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,255,224,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,188,225,83,170,196,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,223,45,0,32,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,210,159,0,0,30,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,44,0,0,100,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,209,0,0,0,104,254,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,39,0,0,0,149,233,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,63,0,0,0,177,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,128,0,0,0,177,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,115,0,0,0,231,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,156,0,0,61,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,209,0,5,178,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,246,144,133,236,174,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,214,251,221,51,104,251,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,104,254,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,141,156,156,194,194,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,239,253,253,253,253,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,172,253,235,167,78,93,174,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,253,237,90,0,0,0,0,201,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,237,58,0,0,0,0,0,156,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,235,53,0,0,0,19,5,0,156,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,253,92,0,0,0,17,226,217,49,148,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,239,24,0,0,0,20,253,253,58,18,115,24,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,91,0,0,0,0,2,117,250,163,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,39,0,0,0,0,0,0,196,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,218,15,0,0,0,0,0,0,77,254,255,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,113,0,0,0,0,0,0,0,21,226,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,25,240,253,68,0,0,0,0,0,0,0,0,195,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,0,0,0,0,0,0,0,0,0,195,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,76,0,0,0,0,0,0,0,0,195,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,209,9,0,0,0,0,0,0,10,209,196,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,254,137,36,0,0,0,2,20,168,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,254,253,199,124,79,79,167,253,253,185,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,117,217,253,253,253,254,253,240,109,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,126,208,253,193,147,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,81,158,187,255,255,254,203,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,86,168,231,254,252,225,225,221,192,251,239,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,235,254,254,189,108,63,0,0,0,61,239,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,254,141,20,2,0,0,0,10,137,252,254,229,36,0,0,0,0,0,0,0,0,0,0,0,0,9,250,251,92,2,0,0,0,0,17,172,254,210,83,23,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,160,0,0,0,0,0,44,231,254,181,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,231,15,0,0,0,31,213,254,188,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,122,1,0,38,230,247,110,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,125,20,173,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,105,240,254,243,254,190,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,254,254,154,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,254,137,145,235,247,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,198,254,171,9,0,105,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,42,0,0,112,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,125,1,0,58,238,246,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,250,233,16,0,56,237,234,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,109,0,122,238,232,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,246,254,157,226,233,169,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,167,254,254,184,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,136,247,180,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,121,241,254,233,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,170,254,237,108,7,202,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,234,82,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,251,85,0,0,0,0,2,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,163,0,0,0,0,0,132,247,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,251,29,0,0,0,0,2,249,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,255,169,0,0,0,0,5,166,254,235,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,169,0,0,5,72,172,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,251,236,122,122,194,254,254,254,235,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,254,254,254,221,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,109,109,45,129,254,235,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,207,254,178,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,225,254,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,199,254,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,151,253,253,255,218,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,103,28,150,252,252,253,252,249,138,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,225,252,197,232,237,237,238,240,252,252,129,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,32,210,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,158,252,181,14,0,0,0,0,0,19,134,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,74,0,0,0,0,0,0,0,35,127,243,100,2,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,74,0,0,0,0,0,0,0,0,75,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,15,252,225,48,0,0,0,0,0,0,0,0,75,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,15,252,177,0,0,0,0,0,0,0,0,22,194,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,15,252,177,0,0,0,0,0,0,0,0,120,252,252,172,6,0,0,0,0,0,0,0,0,0,0,0,0,16,253,178,0,0,0,0,0,0,0,7,174,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,221,44,0,0,0,0,0,15,159,252,252,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,177,0,0,0,0,0,0,69,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,212,35,0,0,0,0,121,229,252,252,216,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,118,0,0,58,75,253,252,252,216,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,157,252,243,178,38,200,252,253,252,250,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,252,252,252,252,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,252,252,252,252,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,231,252,252,252,234,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,244,225,103,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,64,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,128,64,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,128,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,128,128,191,255,255,255,255,191,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,64,128,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,64,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,162,225,223,120,92,46,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,208,251,211,254,252,253,254,193,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,242,59,39,104,44,107,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,250,241,63,0,0,0,0,51,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,242,81,0,0,0,0,0,71,254,242,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,252,198,1,0,0,0,0,34,183,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,178,94,18,0,11,185,254,165,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,228,253,254,247,182,207,254,149,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,138,204,254,254,254,248,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,233,243,226,254,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,253,76,124,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,167,243,61,0,0,142,254,245,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,214,33,0,0,0,83,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,242,63,0,0,0,0,28,254,251,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,183,0,0,0,0,28,186,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,237,11,0,0,0,0,97,254,213,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,251,226,0,0,0,0,86,251,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,255,179,0,0,0,85,248,213,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,231,248,138,113,216,241,220,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,234,185,163,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,39,39,78,147,219,214,193,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,77,128,185,209,254,254,254,254,254,254,254,237,31,0,0,0,0,0,0,0,0,0,0,0,0,2,57,228,254,254,254,253,249,249,202,147,140,140,250,254,43,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,222,114,103,68,0,0,0,0,0,17,246,243,36,0,0,0,0,0,0,0,0,0,0,0,0,52,173,109,17,0,0,0,0,0,0,0,20,194,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,77,234,254,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,193,254,254,254,191,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,247,188,254,254,211,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,168,91,19,5,63,243,254,237,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,237,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,193,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,17,25,0,0,0,0,0,0,0,0,0,70,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,1,159,76,0,0,0,0,0,0,0,0,65,199,248,93,1,0,0,0,0,0,0,0,0,0,0,0,0,6,254,229,18,0,0,0,0,0,0,44,219,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,213,254,165,40,0,0,0,82,159,240,254,141,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,246,254,252,250,250,250,254,254,247,133,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,247,254,254,254,254,254,179,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,213,254,201,123,38,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,161,229,255,169,120,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,235,223,115,115,207,253,236,114,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,253,137,0,0,9,54,171,237,194,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,185,38,0,0,0,0,0,19,203,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,185,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,224,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,216,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,241,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,115,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,140,116,24,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,169,253,253,254,240,184,151,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,93,119,184,184,235,254,237,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,140,232,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,195,68,0,0,0,0,0,0,26,153,254,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,43,249,119,0,0,0,0,0,43,89,214,254,194,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,186,116,116,116,149,208,249,242,196,46,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,152,253,254,253,253,185,161,111,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,116,230,254,255,254,254,175,91,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,197,253,226,183,124,99,177,246,253,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,193,246,149,11,0,0,0,0,34,180,242,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,11,178,253,160,0,0,0,0,0,0,0,0,83,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,162,7,0,0,0,0,0,0,0,0,29,139,30,0,0,0,0,0,0,0,0,0,0,0,0,9,216,232,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,249,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,201,0,0,0,0,0,0,136,166,248,175,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,200,0,0,0,0,6,218,254,233,183,246,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,93,0,0,0,61,253,159,13,0,34,181,202,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,209,0,0,0,175,253,70,0,0,0,53,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,232,23,0,0,184,253,0,0,0,0,59,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,248,98,0,0,184,253,43,0,0,0,131,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,246,51,0,115,253,105,10,0,73,216,185,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,214,216,38,60,247,254,107,150,247,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,251,248,184,231,254,253,253,178,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,171,253,253,254,198,84,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,68,182,237,180,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,240,254,254,254,255,198,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,235,176,123,120,252,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,122,26,0,0,39,250,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,246,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,17,0,95,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,123,176,246,250,247,246,251,223,71,51,0,0,49,10,71,71,101,71,0,0,0,0,0,0,0,0,0,204,254,254,200,222,254,254,254,254,254,249,237,219,237,239,254,254,254,254,0,0,0,0,0,0,0,0,90,253,171,35,4,171,254,171,90,114,114,114,134,201,219,201,140,134,80,26,0,0,0,0,0,0,0,0,167,241,26,25,90,233,170,9,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,209,217,124,226,254,182,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,239,136,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,148,128,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,122,248,255,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,220,252,252,229,239,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,166,252,236,158,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,235,252,70,107,181,182,112,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,153,9,163,180,253,252,244,193,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,239,193,9,0,0,0,48,117,180,252,218,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,201,252,76,0,0,0,0,0,0,23,174,252,242,87,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,226,34,0,0,0,0,0,0,0,5,135,252,204,16,0,0,0,0,0,0,0,0,0,0,0,0,37,252,134,0,0,0,0,0,0,0,0,0,3,195,252,36,0,0,0,0,0,0,0,0,0,0,0,0,37,253,72,0,0,0,0,0,0,0,0,0,0,194,253,41,0,0,0,0,0,0,0,0,0,0,0,0,48,252,72,0,0,0,0,0,0,0,0,0,0,193,252,155,0,0,0,0,0,0,0,0,0,0,0,0,82,252,72,0,0,0,0,0,0,0,0,0,0,193,252,155,0,0,0,0,0,0,0,0,0,0,0,0,37,252,72,0,0,0,0,0,0,0,0,0,12,204,252,75,0,0,0,0,0,0,0,0,0,0,0,0,37,252,101,0,0,0,0,0,0,0,0,0,147,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,26,228,209,17,0,0,0,0,0,0,11,96,235,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,157,0,0,0,0,0,9,109,252,252,193,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,144,242,177,60,0,0,103,220,252,252,183,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,89,252,243,229,229,253,252,236,121,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,52,131,241,252,253,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,132,254,254,254,255,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,97,208,248,253,253,253,253,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,84,213,231,253,253,253,204,177,111,40,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,204,161,61,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,159,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,176,253,246,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,123,88,90,201,227,227,227,227,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,229,252,253,253,253,253,253,253,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,214,205,205,206,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,229,253,239,226,103,17,0,0,7,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,109,53,0,0,0,0,0,11,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,248,253,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,109,242,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,115,253,253,251,191,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,179,179,245,253,253,249,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,243,253,253,253,238,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,175,130,116,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,211,250,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,244,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,254,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,183,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,187,0,0,0,0,35,162,214,214,139,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,98,0,0,0,99,224,253,253,253,253,236,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,150,0,0,90,248,244,206,117,131,244,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,240,30,0,212,253,157,0,0,0,195,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,122,49,246,193,0,0,0,0,196,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,218,254,250,226,253,155,0,0,0,87,244,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,253,253,253,185,79,86,175,247,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,202,253,253,253,254,253,253,231,138,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,126,208,253,254,245,126,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,69,93,0,36,48,122,160,213,208,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,192,112,241,254,254,254,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,173,254,254,254,254,235,186,140,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,231,254,254,254,207,93,32,26,210,254,217,63,0,0,0,0,0,0,0,0,0,0,0,0,0,25,130,232,254,254,207,84,9,0,27,211,254,248,41,0,0,0,0,0,0,0,0,0,0,0,0,0,59,217,255,254,254,176,0,0,0,56,212,254,249,91,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,254,254,254,145,18,0,0,76,222,254,250,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,103,0,0,13,104,253,254,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,241,116,5,0,5,139,254,254,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,13,182,254,254,246,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,180,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,254,254,207,68,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,236,254,254,171,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,142,253,254,253,155,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,250,254,242,57,3,0,0,0,0,12,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,254,254,158,0,0,0,0,14,68,218,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,236,219,219,219,219,226,254,254,254,250,63,0,0,0,0,0,0,0,0,0,0,0,0,0,18,219,254,254,254,254,254,254,254,254,254,254,254,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,104,227,254,254,254,254,254,233,150,150,108,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,218,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,240,253,82,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,200,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,0,0,0,0,4,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,0,0,44,156,184,219,151,55,33,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,6,162,243,254,254,254,254,254,189,2,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,45,185,254,254,234,135,16,131,248,254,61,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,113,254,254,122,6,0,0,0,174,254,114,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,196,254,234,33,0,0,0,0,174,254,114,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,142,21,221,254,188,0,0,0,0,3,182,243,9,0,0,0,0,0,0,0,0,0,0,0,0,2,184,254,246,25,196,254,120,0,0,0,0,129,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,228,245,254,222,104,7,25,192,253,228,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,148,251,254,254,254,254,254,204,251,254,211,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,228,254,254,254,254,254,238,142,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,183,254,254,254,152,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,136,29,18,32,115,18,18,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,141,253,253,253,253,253,253,253,253,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,125,253,253,253,253,253,253,253,253,253,221,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,253,253,253,253,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,159,253,253,226,66,47,47,61,142,47,140,164,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,250,198,72,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,253,253,253,253,81,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,160,212,212,244,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,76,210,253,244,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,253,193,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,133,0,0,0,0,0,0,0,0,0,0,0,7,5,0,0,0,0,0,0,0,0,0,0,117,249,253,253,128,0,0,0,0,0,0,0,0,0,0,0,150,189,48,0,0,0,0,0,0,7,122,148,244,253,253,226,30,0,0,0,0,0,0,0,0,0,0,0,255,253,194,78,48,48,48,59,166,186,253,253,253,253,248,113,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,220,112,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,253,253,253,253,253,253,253,183,170,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,167,253,253,253,253,253,253,253,230,152,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,97,135,135,135,78,73,17,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,131,215,254,254,254,137,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,242,254,253,253,253,253,254,243,177,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,146,36,36,36,36,95,218,253,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,91,0,0,0,0,0,12,80,249,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,181,39,0,0,0,0,0,0,134,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,255,182,37,0,0,0,0,0,19,254,228,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,182,253,231,51,0,0,0,41,185,253,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,179,253,231,82,0,106,235,250,216,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,147,253,233,167,177,237,102,0,54,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,149,253,254,207,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,215,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,233,215,253,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,149,37,231,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,67,0,70,250,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,235,0,0,0,121,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,98,0,0,27,238,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,214,55,4,0,116,253,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,148,253,254,220,139,148,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,119,241,253,253,253,253,222,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,92,162,168,188,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,250,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,231,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,22,0,0,0,0,210,253,234,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,249,137,0,0,0,0,171,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,192,253,108,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,99,0,0,0,0,100,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,99,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,244,13,0,0,0,0,100,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,254,132,0,0,0,0,0,101,255,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,217,110,67,67,67,67,140,253,253,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,253,253,253,254,253,253,253,253,180,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,35,121,121,121,121,121,122,121,173,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,246,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,201,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,139,194,149,48,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,214,177,254,254,254,233,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,234,255,74,78,202,240,225,237,209,128,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,254,231,21,0,2,40,14,99,234,254,174,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,252,78,0,0,0,0,0,0,16,89,247,177,9,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,127,0,0,0,0,0,0,0,0,0,111,254,113,0,0,0,0,0,0,0,0,0,0,0,0,6,233,254,20,0,0,0,0,0,0,0,0,0,10,232,246,38,0,0,0,0,0,0,0,0,0,0,0,95,254,234,15,0,0,0,0,0,0,0,0,0,0,135,254,140,0,0,0,0,0,0,0,0,0,0,0,95,254,127,0,0,0,0,0,0,0,0,0,0,0,4,185,232,41,0,0,0,0,0,0,0,0,0,0,158,254,67,0,0,0,0,0,0,0,0,0,0,0,0,151,254,94,0,0,0,0,0,0,0,0,0,0,198,254,67,0,0,0,0,0,0,0,0,0,0,0,0,68,254,94,0,0,0,0,0,0,0,0,0,0,138,254,127,0,0,0,0,0,0,0,0,0,0,0,0,68,254,111,0,0,0,0,0,0,0,0,0,0,95,254,200,7,0,0,0,0,0,0,0,0,0,0,0,17,228,119,0,0,0,0,0,0,0,0,0,0,83,253,254,20,0,0,0,0,0,0,0,0,0,0,0,120,247,44,0,0,0,0,0,0,0,0,0,0,0,213,254,95,0,0,0,0,0,0,0,0,0,0,48,231,212,0,0,0,0,0,0,0,0,0,0,0,0,90,254,231,39,0,0,0,0,0,0,0,0,7,221,240,86,0,0,0,0,0,0,0,0,0,0,0,0,27,237,254,197,77,0,0,0,0,0,24,124,197,249,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,254,252,193,113,11,94,174,231,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,165,224,254,254,254,254,222,197,141,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,72,152,254,171,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,220,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,208,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,215,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,235,17,0,22,162,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,210,0,0,165,246,242,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,210,0,57,244,92,211,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,210,0,172,198,2,211,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,240,23,252,111,0,168,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,92,254,111,0,211,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,175,254,111,11,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,237,254,111,123,254,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,254,254,135,224,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,229,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,129,202,180,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,192,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,231,254,250,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,155,252,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,227,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,254,254,254,228,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,254,254,254,184,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,254,254,213,24,0,0,0,38,51,73,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,231,59,0,0,0,147,226,237,254,247,197,120,63,0,0,0,0,0,0,0,0,0,0,0,216,254,254,254,162,0,0,0,0,190,254,254,254,254,254,254,241,0,0,0,0,0,0,0,0,0,0,0,249,254,254,254,69,0,0,0,0,190,254,254,254,254,254,254,241,0,0,0,0,0,0,0,0,0,0,0,249,254,254,186,10,0,0,0,46,235,254,254,254,254,255,254,241,0,0,0,0,0,0,0,0,0,0,0,249,254,254,171,5,0,0,0,56,245,254,254,254,254,254,254,241,0,0,0,0,0,0,0,0,0,0,0,232,254,254,254,128,33,6,0,0,190,254,254,254,254,254,254,243,16,0,0,0,0,0,0,0,0,0,0,107,253,254,254,254,254,174,157,157,230,254,254,254,254,255,254,253,105,0,0,0,0,0,0,0,0,0,0,0,165,254,254,254,254,254,254,254,254,254,254,254,254,255,254,241,0,0,0,0,0,0,0,0,0,0,0,0,49,237,254,254,254,254,254,254,254,254,254,254,254,246,241,161,0,0,0,0,0,0,0,0,0,0,0,0,0,49,117,234,254,254,254,254,254,254,254,253,231,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,124,124,160,254,254,254,163,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,235,255,240,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,124,251,254,254,254,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,194,254,254,254,184,254,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,203,254,168,73,25,232,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,38,8,0,6,124,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,128,0,0,0,0,0,0,0,0,0,0,0,0,33,53,53,53,9,0,0,0,0,0,0,0,23,230,254,85,0,0,0,0,0,0,0,0,0,0,21,150,237,254,254,254,204,14,0,0,0,0,0,41,136,254,248,79,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,254,229,108,0,0,0,4,195,254,254,233,20,0,0,0,0,0,0,0,0,0,0,179,254,166,65,14,127,227,254,251,121,49,137,221,254,254,251,85,2,0,0,0,0,0,0,0,0,0,0,142,254,181,14,0,0,28,196,254,254,254,254,254,254,246,126,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,246,173,173,209,254,254,254,254,254,221,177,47,0,0,0,0,0,0,0,0,0,0,0,0,0,14,149,236,254,254,254,254,254,254,254,254,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,148,180,244,237,148,148,70,189,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,214,250,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,237,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,215,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,214,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,161,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,109,129,253,255,253,253,170,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,232,252,252,252,253,252,252,252,238,175,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,252,252,241,215,132,217,132,215,215,253,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,252,97,0,0,0,0,0,0,170,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,252,252,82,0,0,0,0,0,0,0,0,217,231,109,110,15,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,21,73,73,218,247,252,252,253,222,217,93,0,0,0,0,0,0,0,0,31,206,252,252,181,129,0,0,0,176,252,252,253,252,252,252,217,215,195,31,0,0,0,0,0,0,0,0,0,31,211,252,252,221,144,62,63,237,252,252,253,128,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,144,238,253,253,255,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,252,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,252,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,191,232,252,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,0,42,222,253,255,253,149,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,128,0,0,46,179,211,252,252,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,128,0,0,0,0,94,215,241,252,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,84,0,0,0,0,0,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,192,15,0,0,0,0,182,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,149,252,253,222,217,217,156,73,201,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,154,232,252,252,252,253,252,252,252,237,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,108,211,252,253,252,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,173,214,253,142,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,163,203,253,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,253,203,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,152,152,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,252,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,0,0,0,82,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,0,0,0,0,123,223,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,193,233,255,253,255,253,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,151,232,253,212,131,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,244,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,213,253,195,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,170,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,208,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,235,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,153,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,244,253,219,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,184,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,250,253,251,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,197,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,195,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,224,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,158,164,131,34,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,254,254,254,254,254,217,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,115,254,242,236,236,250,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,80,0,0,114,237,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,228,31,0,0,0,75,254,221,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,239,51,0,10,38,102,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,195,168,189,254,254,254,254,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,254,254,254,242,242,254,254,254,190,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,74,74,74,56,57,154,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,244,254,144,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,185,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,247,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,255,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,213,152,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,100,191,130,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,64,0,0,0,0,0,191,191,64,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,191,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,191,128,128,128,191,255,255,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,128,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,191,255,255,255,255,191,64,0,128,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,128,255,191,64,0,0,0,0,0,64,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,232,38,0,0,0,0,0,0,11,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,223,25,0,0,0,0,0,0,189,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,174,0,0,0,0,0,0,0,230,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,245,58,0,0,0,0,0,0,0,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,230,0,0,0,0,0,0,0,43,240,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,168,0,0,0,0,0,0,0,51,243,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,95,0,0,0,0,0,0,0,93,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,0,0,0,0,0,0,0,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,0,0,0,0,0,0,0,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,0,0,0,43,116,116,116,116,165,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,191,159,253,253,253,255,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,248,253,252,252,235,206,92,92,92,223,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,122,69,69,44,0,0,0,51,240,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,173,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,232,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,174,2,0,0,0,0,0,0,62,171,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,141,0,0,0,0,0,0,43,239,253,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,63,0,0,0,0,0,0,64,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,254,63,0,0,0,0,0,0,0,0,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,222,16,0,0,0,0,0,0,0,0,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,106,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,0,0,0,0,0,0,0,0,0,0,165,252,126,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,0,0,0,0,0,0,32,43,43,7,210,253,127,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,191,146,190,190,190,191,237,252,252,200,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,19,210,252,253,252,242,231,231,232,152,126,126,126,253,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,83,189,128,84,42,0,0,0,0,0,0,0,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,191,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,241,163,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,125,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,228,178,105,105,58,21,21,68,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,246,254,254,254,254,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,71,58,104,141,141,141,64,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,229,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,232,139,110,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,254,232,247,254,187,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,98,19,31,152,248,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,247,148,0,0,0,0,176,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,186,34,0,0,0,0,52,248,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,199,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,20,0,0,0,0,0,0,0,0,34,238,144,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,192,125,44,0,0,0,0,0,40,196,237,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,255,251,237,163,163,163,178,251,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,38,124,208,254,254,186,171,154,42,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,38,94,171,254,243,146,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,160,253,253,253,253,253,253,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,197,251,253,253,253,253,253,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,253,253,218,215,253,253,226,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,188,253,253,253,224,163,65,13,7,193,253,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,160,243,236,112,17,0,0,0,2,177,253,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,36,216,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,93,191,223,200,200,235,253,253,253,216,3,0,0,0,0,0,0,0,0,0,0,0,0,0,4,57,227,241,253,253,253,253,253,253,253,253,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,30,182,253,253,253,253,253,253,253,253,253,253,253,253,253,192,18,0,0,0,0,0,0,0,0,0,0,104,227,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,0,152,251,253,253,253,253,253,253,253,253,253,253,210,77,68,146,237,253,251,94,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,211,28,0,0,0,33,186,234,118,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,132,21,0,0,0,0,0,0,30,7,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,170,44,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,253,250,162,75,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,224,253,188,145,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,111,190,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,111,254,248,250,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,147,251,240,99,39,62,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,74,214,238,140,32,8,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,214,31,0,0,0,15,199,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,194,15,0,0,0,17,135,245,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,239,0,0,0,0,42,218,248,240,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,27,39,118,177,255,233,68,79,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,240,248,254,254,251,82,0,64,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,209,75,15,0,0,138,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,223,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,246,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,248,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,114,113,222,174,253,114,75,0,0,0,0,0,0,0,0,0,0,0,0,76,85,85,85,226,225,225,225,240,253,252,252,252,252,253,243,175,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,239,66,0,0,0,0,0,0,0,0,0,0,200,230,249,223,225,223,223,129,84,84,84,84,84,177,253,252,245,74,0,0,0,0,0,0,0,0,0,0,0,25,99,0,0,0,0,0,0,0,0,0,0,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,253,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,224,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,252,245,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,190,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,148,201,253,253,254,253,209,183,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,204,231,252,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,240,178,56,21,9,16,136,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,153,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,250,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,227,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,119,249,253,201,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,143,211,252,252,216,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,212,106,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,253,253,255,253,253,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,63,89,168,253,252,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,136,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,227,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,71,0,0,22,85,253,252,201,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,250,153,135,237,252,250,231,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,252,252,252,226,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,226,199,121,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,225,133,133,133,82,13,13,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,187,253,253,253,253,253,253,253,254,243,145,145,145,145,145,100,3,0,0,0,0,0,0,0,0,0,0,0,14,96,183,217,234,231,253,253,254,253,253,253,253,253,253,239,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,33,84,84,148,147,205,205,216,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,243,253,180,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,250,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,163,255,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,218,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,216,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,239,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,253,218,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,70,70,112,229,255,237,29,0,0,0,0,0,0,0,0,0,0,0,22,114,139,138,138,138,164,230,230,247,254,253,248,190,254,227,21,0,0,0,0,0,0,0,0,0,0,30,212,253,254,253,242,230,230,230,154,137,80,46,42,101,254,164,0,0,0,0,0,0,0,0,0,0,0,89,128,128,69,69,38,0,0,0,0,0,0,0,0,184,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,249,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,173,253,254,213,152,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,252,253,252,253,252,183,20,0,0,0,0,0,0,0,0,0,0,0,0,31,132,132,51,72,233,244,203,102,102,62,102,214,253,255,112,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,253,252,122,0,0,0,0,0,51,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,254,253,82,0,62,102,0,0,0,0,0,0,41,243,255,253,0,0,0,0,0,0,0,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,122,253,252,0,0,0,0,0,0,0,0,0,0,0,0,254,253,173,10,0,0,0,0,0,0,0,0,0,123,254,253,0,0,0,0,0,0,0,0,0,0,0,0,131,252,253,131,0,0,0,0,0,0,0,0,21,223,253,171,0,0,0,0,0,0,0,0,0,0,0,0,21,142,254,253,173,31,0,0,0,0,0,0,72,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,253,232,123,0,0,0,0,123,233,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,234,112,11,92,214,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,172,253,252,213,252,253,252,172,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,51,173,254,253,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,163,243,253,252,253,252,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,224,122,102,162,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,233,111,20,0,0,61,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,82,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,142,20,0,82,163,243,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,255,253,254,253,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,151,232,253,252,192,151,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,149,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,246,205,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,205,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,170,253,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,248,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,252,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,185,6,0,0,0,0,0,0,0,0,0,32,132,184,184,118,0,0,0,0,0,0,0,0,0,62,236,227,50,0,0,0,0,0,0,0,0,0,119,228,253,252,252,236,61,0,0,0,0,0,0,0,0,191,252,183,0,0,0,0,0,0,0,0,22,199,248,200,137,137,168,252,137,0,0,0,0,0,0,0,0,255,253,184,0,0,0,0,0,0,0,13,212,253,150,0,3,97,222,253,128,0,0,0,0,0,0,0,0,180,252,227,67,5,0,0,0,0,0,24,252,208,34,47,170,252,240,164,8,0,0,0,0,0,0,0,0,48,227,252,252,190,174,70,70,70,70,138,252,234,209,252,253,187,50,0,0,0,0,0,0,0,0,0,0,0,103,227,252,252,253,252,252,252,252,253,252,252,218,160,46,17,0,0,0,0,0,0,0,0,0,0,0,0,0,17,22,128,201,231,221,252,147,137,211,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,108,139,139,139,65,108,139,139,203,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,22,171,253,253,253,253,254,253,253,253,253,254,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,100,216,254,253,253,253,253,254,253,253,253,253,254,253,234,33,0,0,0,0,0,0,0,0,0,0,0,100,245,253,246,161,161,119,46,46,46,46,80,243,254,236,65,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,74,0,0,0,0,0,0,32,219,253,244,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,63,0,0,0,0,0,0,36,170,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,253,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,254,158,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,234,254,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,253,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,156,253,228,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,192,253,85,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,181,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,216,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,253,169,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,219,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,211,255,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,168,253,242,95,14,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,254,241,65,0,9,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,177,53,0,0,165,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,237,254,34,0,0,77,250,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,219,146,218,250,254,230,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,187,246,225,184,179,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,15,0,197,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,232,248,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,220,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,176,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,223,250,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,235,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,189,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,171,128,109,109,110,109,94,0,47,109,109,191,255,128,94,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,252,252,253,252,247,217,233,252,252,252,253,252,215,0,0,0,0,0,0,0,0,0,0,11,37,120,252,252,252,252,253,252,252,252,253,252,252,252,253,252,241,78,0,0,0,0,0,0,0,0,0,73,252,252,252,252,252,252,253,252,252,252,253,252,252,252,253,252,231,46,0,0,0,0,0,0,0,0,0,217,252,252,252,252,252,252,253,252,252,252,253,252,252,252,206,143,41,0,0,0,0,0,0,0,0,0,94,247,252,252,252,252,252,252,253,231,179,179,180,138,35,35,20,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,220,195,71,72,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,253,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,252,252,252,252,232,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,92,215,252,252,252,252,222,139,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,232,252,252,253,252,236,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,255,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,35,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,181,37,5,6,37,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,252,159,160,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,253,253,255,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,252,252,252,253,252,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,221,252,252,252,252,252,237,174,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,108,169,252,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,130,168,176,151,77,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,233,254,254,254,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,130,253,254,240,116,78,108,200,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,182,41,0,0,0,21,159,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,254,143,8,0,0,0,0,0,10,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,245,241,11,0,0,0,3,16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,170,0,0,0,25,137,254,172,93,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,253,47,0,0,25,209,254,254,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,181,0,0,0,156,254,229,99,112,240,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,181,0,0,3,195,254,129,0,0,182,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,181,0,0,83,254,157,2,0,0,81,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,181,0,0,214,254,155,0,0,0,157,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,220,29,26,230,254,58,0,0,30,221,231,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,166,0,214,217,15,0,0,210,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,255,247,100,217,249,63,39,161,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,234,254,254,254,254,254,254,254,246,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,189,254,254,254,254,253,208,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,94,96,209,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,170,230,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,188,254,235,151,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,218,254,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,185,248,253,254,215,89,174,101,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,253,235,87,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,220,253,250,113,23,0,0,0,0,114,192,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,208,253,240,92,0,0,0,0,21,162,247,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,249,113,0,0,0,27,135,231,253,253,176,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,220,18,24,109,192,254,253,253,253,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,253,253,248,253,253,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,153,238,253,253,219,135,110,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,255,254,213,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,248,254,212,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,219,253,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,203,0,0,163,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,203,0,0,203,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,214,10,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,213,10,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,183,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,212,20,0,0,203,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,224,61,0,0,0,203,254,71,0,21,113,30,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,243,203,183,142,203,243,253,232,203,223,253,50,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,253,254,253,254,253,254,253,254,253,254,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,252,253,252,253,252,253,252,253,252,253,212,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,203,123,122,183,102,102,223,254,233,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,194,255,122,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,249,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,254,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,254,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,254,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,193,253,254,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,159,253,254,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,184,254,255,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,254,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,254,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,254,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,254,246,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,242,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,186,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,249,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,249,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,120,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,169,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,203,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,209,252,215,110,171,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,252,210,21,60,188,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,168,12,127,244,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,107,181,255,239,199,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,158,252,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,194,252,134,192,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,189,4,116,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,122,9,128,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,90,93,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,234,209,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,158,252,168,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,107,157,157,71,129,189,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,253,253,253,253,253,253,253,232,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,254,253,253,253,253,207,193,146,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,248,253,216,180,163,60,60,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,230,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,98,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,238,253,253,254,251,213,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,122,132,254,253,253,251,155,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,255,254,181,0,0,0,0,0,0,0,0,0,0,0,0,140,11,0,0,0,0,0,0,0,0,0,0,16,205,253,180,0,0,0,0,0,0,0,0,0,0,0,0,254,198,78,0,0,0,0,0,0,0,0,0,6,182,253,163,0,0,0,0,0,0,0,0,0,0,0,0,148,233,241,146,37,0,0,0,0,0,0,0,60,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,111,230,253,236,90,12,0,0,0,0,47,226,253,181,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,194,253,253,205,194,194,194,195,228,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,134,233,253,253,253,253,254,253,241,88,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,133,156,156,156,36,36,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,253,255,253,98,73,73,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,251,251,253,251,251,251,251,222,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,217,246,251,251,253,251,251,251,251,253,231,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,251,251,251,251,253,188,142,189,251,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,79,231,253,251,251,251,251,253,107,0,109,251,253,251,241,103,0,0,0,0,0,0,0,0,0,0,0,37,253,253,255,253,164,0,0,0,0,0,0,0,255,253,253,143,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,168,15,0,0,0,0,0,0,0,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,63,251,251,242,92,0,0,0,0,0,0,0,27,253,251,246,123,0,0,0,0,0,0,0,0,0,0,0,217,251,251,180,0,0,0,0,0,0,0,47,211,253,251,215,0,0,0,0,0,0,0,0,0,0,0,105,241,251,251,180,0,0,0,0,0,0,0,109,251,253,251,215,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,0,0,0,0,0,0,0,0,110,253,255,253,164,0,0,0,0,0,0,0,0,0,0,42,206,251,251,251,0,0,0,0,0,0,0,21,190,251,253,251,35,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,0,0,0,0,0,0,125,221,251,251,242,112,5,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,0,0,0,0,0,110,190,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,0,0,0,0,130,253,251,251,251,251,51,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,73,73,99,253,253,255,253,253,221,51,0,0,0,0,0,0,0,0,0,0,0,0,0,31,189,251,251,251,253,251,251,251,251,253,251,230,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,195,251,251,253,251,251,251,251,253,230,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,189,251,253,251,251,251,173,143,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,71,201,174,96,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,54,150,150,172,255,237,150,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,213,253,253,253,253,253,253,253,188,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,253,253,246,217,180,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,236,253,253,248,145,67,53,0,11,174,253,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,219,253,186,19,0,0,0,0,0,7,240,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,181,0,0,0,0,0,12,110,249,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,245,83,0,0,0,7,139,253,253,249,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,242,22,0,0,125,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,187,253,227,82,133,245,214,41,67,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,192,253,253,253,193,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,219,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,230,253,252,130,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,241,253,248,226,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,225,91,235,253,202,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,205,253,13,19,94,248,243,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,189,17,0,154,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,253,190,60,54,243,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,227,253,253,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,186,253,221,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,233,163,0,0,0,0,0,0,0,214,253,163,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,243,40,0,0,0,0,0,82,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,244,40,0,0,0,0,11,213,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,203,0,0,0,0,0,51,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,203,0,0,0,0,0,113,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,203,0,0,0,0,0,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,233,41,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,192,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,254,253,254,253,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,151,253,252,253,252,253,252,253,252,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,102,142,254,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,196,115,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,254,254,203,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,228,254,254,249,99,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,118,247,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,213,254,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,254,215,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,16,69,92,61,61,28,0,0,0,0,0,17,232,204,8,0,0,0,0,0,0,0,0,0,0,0,0,1,155,254,254,254,254,233,178,54,0,0,0,155,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,249,184,184,184,223,254,238,168,27,38,227,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,145,0,0,0,17,107,193,254,236,239,254,81,0,0,0,10,0,0,0,0,0,0,0,0,0,0,111,254,134,0,0,0,0,0,15,148,254,254,254,139,24,0,29,104,0,0,0,0,0,0,0,0,0,0,111,254,190,11,0,0,0,0,55,184,254,225,229,254,241,156,242,96,0,0,0,0,0,0,0,0,0,0,32,223,254,210,100,91,91,167,253,253,102,10,18,153,193,242,164,6,0,0,0,0,0,0,0,0,0,0,0,32,199,254,254,254,254,254,208,68,0,0,0,0,3,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,124,245,221,154,118,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,42,226,214,133,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,178,253,253,253,253,207,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,217,253,253,253,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,113,218,253,253,253,239,164,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,95,254,253,253,253,210,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,179,253,254,253,243,180,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,247,253,253,254,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,230,253,253,253,249,77,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,138,248,253,253,253,201,82,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,253,253,253,201,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,214,254,254,254,254,139,0,0,0,0,0,38,168,254,254,88,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,128,10,0,0,0,4,106,223,253,253,253,144,0,0,0,0,0,0,0,0,0,0,91,217,253,253,243,119,14,0,0,8,157,171,253,253,253,253,253,69,0,0,0,0,0,0,0,0,0,0,145,253,253,253,157,0,0,21,49,174,253,253,253,253,253,237,101,8,0,0,0,0,0,0,0,0,0,9,223,253,253,253,60,21,61,201,253,254,253,253,253,253,236,71,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,208,214,253,253,253,254,253,253,253,166,116,14,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,253,253,253,253,253,253,254,253,253,235,156,64,7,0,0,0,0,0,0,0,0,0,0,0,18,202,253,253,253,253,164,238,253,253,254,243,144,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,70,11,11,11,3,10,122,132,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,224,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,223,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,253,232,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,233,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,234,253,253,155,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,229,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,250,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,218,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,129,0,0,0,29,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,129,64,132,231,238,234,231,231,231,153,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,251,251,253,253,253,253,253,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,7,197,253,253,253,253,253,253,253,228,184,251,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,252,206,206,178,88,54,139,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,249,66,66,66,156,242,253,253,253,188,20,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,144,253,253,253,253,253,253,253,253,249,102,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,182,253,253,253,253,253,253,209,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,132,253,198,253,127,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,69,148,210,253,236,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,164,221,252,252,253,252,252,163,0,146,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,245,252,252,252,235,170,126,233,194,153,253,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,231,136,84,14,0,0,42,170,252,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,253,203,53,0,0,0,0,0,64,252,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,253,236,32,0,0,0,13,218,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,218,252,252,237,32,0,0,136,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,252,252,191,66,136,251,247,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,186,252,252,253,252,247,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,138,252,253,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,253,255,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,252,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,213,252,247,55,38,221,233,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,252,238,63,0,0,120,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,217,91,0,0,0,85,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,230,97,0,0,0,8,157,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,157,252,236,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,252,252,180,127,127,153,232,253,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,252,243,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,113,235,253,252,252,226,147,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,138,223,255,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,218,254,174,109,181,240,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,249,231,62,0,0,31,227,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,244,225,50,0,0,0,0,135,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,101,0,0,0,0,0,167,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,239,26,0,0,0,0,24,235,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,147,0,0,0,0,0,140,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,161,6,0,0,37,109,249,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,162,181,200,254,250,245,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,125,241,254,221,163,63,160,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,251,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,47,73,21,27,0,0,6,106,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,247,253,240,242,235,235,237,253,238,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,242,138,197,216,217,216,216,177,127,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,248,254,29,16,55,55,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,254,227,227,253,253,231,198,82,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,248,150,144,144,144,170,245,253,165,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,162,52,0,0,0,0,0,42,162,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,134,249,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,39,0,0,0,0,0,0,0,124,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,195,255,115,0,0,0,0,0,0,103,254,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,8,204,253,50,2,0,0,0,0,0,106,249,233,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,213,253,69,16,0,0,27,63,179,248,237,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,248,254,222,199,199,238,254,242,176,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,130,247,220,253,188,105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,74,97,97,87,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,104,234,254,254,254,254,222,184,116,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,174,90,67,67,76,150,217,251,243,73,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,114,0,0,0,0,0,0,0,52,175,251,155,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,229,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,237,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,42,39,0,0,0,0,0,0,120,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,204,254,251,178,93,10,0,0,39,223,166,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,205,204,88,106,226,254,187,43,9,182,245,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,114,0,0,23,153,243,239,227,254,114,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,143,249,26,0,0,0,0,146,254,254,254,104,0,0,0,0,0,0,111,177,0,0,0,0,0,0,0,0,68,254,178,114,43,99,184,249,224,164,244,250,185,38,0,0,18,167,187,10,0,0,0,0,0,0,0,0,1,111,254,254,248,254,203,138,11,0,60,148,246,243,186,150,235,213,40,0,0,0,0,0,0,0,0,0,0,1,48,100,100,64,4,0,0,0,0,0,60,146,224,254,164,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,226,154,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,198,155,45,0,0,0,0,136,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,197,252,252,225,0,0,0,85,248,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,252,196,0,0,0,206,252,252,235,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,214,252,252,231,22,0,0,0,226,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,127,0,0,0,108,245,252,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,240,252,243,121,29,0,0,83,248,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,198,0,0,0,0,134,252,252,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,201,12,0,0,8,253,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,161,252,252,233,120,8,196,253,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,222,253,253,253,253,255,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,104,213,252,252,253,252,252,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,253,252,252,222,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,253,120,39,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,233,252,252,158,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,155,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,252,243,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,238,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,173,220,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,244,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,254,230,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,218,254,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,137,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,180,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,254,239,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,233,254,218,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,237,254,255,145,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,236,114,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,113,254,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,242,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,242,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,211,254,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,250,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,223,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,225,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,253,38,0,0,0,0,0,13,72,89,189,30,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,182,9,0,0,17,96,196,206,253,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,88,250,253,253,131,0,19,96,206,253,253,253,253,253,253,248,83,0,0,0,0,0,0,0,0,0,0,0,118,253,253,233,25,18,115,253,253,253,215,111,71,71,183,253,204,0,0,0,0,0,0,0,0,0,0,0,118,253,253,155,0,175,253,253,218,111,22,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,118,253,253,170,67,241,253,185,19,0,0,0,0,6,171,253,240,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,207,253,203,19,0,0,0,0,6,128,253,253,223,0,0,0,0,0,0,0,0,0,0,0,45,232,253,253,253,253,175,0,0,7,27,50,171,253,253,241,42,0,0,0,0,0,0,0,0,0,0,0,0,103,252,253,253,253,221,150,150,174,253,253,253,253,228,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,253,253,253,253,253,253,253,253,251,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,249,253,253,253,253,253,248,156,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,123,123,159,152,123,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,216,176,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,240,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,208,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,235,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,228,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,242,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,230,141,244,152,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,254,254,254,254,212,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,254,254,245,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,85,85,85,137,190,190,191,190,190,142,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,32,117,237,252,253,252,252,252,252,253,252,252,247,232,0,0,0,0,0,0,0,0,0,0,0,43,204,253,189,211,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,9,186,252,253,252,252,252,252,253,252,252,252,252,253,252,252,252,164,0,0,0,0,0,0,0,0,8,123,201,253,253,254,253,253,253,253,254,253,253,253,253,247,211,202,62,18,0,0,0,0,0,0,0,0,201,252,252,252,252,253,252,252,252,252,253,252,174,98,63,53,0,0,0,0,0,0,0,0,0,0,0,0,245,252,252,252,252,253,252,197,214,232,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,252,243,189,51,35,115,183,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,164,35,0,0,0,0,60,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,245,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,0,0,62,106,158,239,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,253,253,253,253,255,253,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,252,252,252,253,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,231,253,252,252,252,244,214,91,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,84,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,70,197,184,208,253,167,41,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,180,252,253,252,252,252,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,252,252,234,146,96,119,224,252,252,125,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,237,252,252,229,98,0,0,0,20,212,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,226,101,0,0,0,12,90,235,252,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,228,180,45,0,0,0,11,164,252,252,228,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,32,0,0,0,0,0,134,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,217,239,252,229,64,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,252,236,63,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,246,253,241,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,255,242,58,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,252,252,180,59,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,102,219,252,252,252,144,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,158,236,252,252,184,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,206,252,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,207,252,155,0,0,0,0,0,0,0,0,0,0,0,9,85,85,65,0,0,0,0,0,0,0,53,108,205,241,252,155,0,0,0,0,0,0,0,0,0,0,0,25,252,252,244,126,97,97,97,97,160,217,239,252,252,252,220,39,0,0,0,0,0,0,0,0,0,0,0,14,159,252,252,252,252,252,252,252,253,252,252,252,252,169,38,0,0,0,0,0,0,0,0,0,0,0,0,0,2,35,160,252,252,252,252,252,248,131,131,51,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,193,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,233,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,225,254,227,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,254,219,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,249,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,218,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,254,198,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,233,108,0,0,0,0,45,205,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,248,253,253,250,225,132,131,205,244,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,251,248,253,254,253,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,133,41,84,178,163,153,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,86,0,0,0,21,221,253,191,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,236,253,183,2,0,0,0,156,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,102,0,0,0,23,234,253,227,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,114,147,3,0,0,0,142,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,255,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,254,233,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,253,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,200,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,242,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,214,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,145,34,12,185,241,242,241,241,198,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,156,253,214,111,253,253,254,253,253,253,233,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,155,253,253,253,253,40,39,39,82,237,217,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,155,253,253,253,107,0,0,0,95,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,253,253,64,0,0,0,18,204,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,215,253,217,9,0,0,0,187,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,163,254,109,17,0,8,194,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,214,35,147,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,242,253,213,180,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,164,172,241,160,32,17,9,206,219,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,179,253,206,103,0,0,0,0,88,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,240,253,126,22,0,0,0,0,0,68,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,232,44,0,0,0,0,0,0,68,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,187,253,119,17,0,0,0,0,0,89,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,184,243,199,91,27,27,27,140,234,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,240,253,255,253,253,253,253,215,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,120,183,253,253,211,120,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,164,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,199,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,254,183,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,254,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,172,253,235,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,237,118,0,0,68,98,135,173,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,131,0,0,80,254,254,254,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,253,179,3,0,13,165,253,242,203,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,254,209,24,13,79,224,253,168,36,128,235,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,244,78,0,107,253,254,129,6,90,248,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,157,0,99,248,253,96,9,31,219,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,134,104,224,254,96,0,58,224,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,253,254,253,253,253,185,140,247,253,182,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,253,253,253,253,254,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,87,244,254,253,253,253,253,229,124,19,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,119,193,223,237,118,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,170,170,198,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,141,170,255,255,255,141,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,170,29,0,0,0,0,86,170,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,198,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,170,114,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,29,0,0,141,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,86,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,226,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,170,57,29,226,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,57,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,57,0,0,0,0,170,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,57,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,86,0,0,0,0,0,29,226,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,29,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,57,0,0,0,57,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,170,226,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,198,114,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,94,196,155,0,0,0,10,147,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,247,100,4,0,0,0,12,228,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,244,45,0,0,0,0,0,0,200,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,112,0,0,0,0,0,0,0,200,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,120,0,0,0,0,0,0,11,225,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,231,15,0,0,0,0,0,24,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,169,205,143,12,0,0,0,50,254,106,136,162,162,157,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,211,240,185,185,185,213,254,226,171,111,69,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,123,123,123,175,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,234,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,199,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,177,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,102,176,120,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,204,254,254,254,251,202,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,254,254,254,254,254,254,228,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,249,254,254,254,254,254,254,254,254,246,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,254,254,254,84,73,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,248,254,254,254,254,254,30,8,179,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,254,254,254,247,94,2,0,117,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,12,160,254,254,254,238,176,63,0,0,0,117,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,254,123,0,0,0,0,9,188,254,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,254,254,179,11,0,0,0,0,16,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,14,249,254,254,247,63,0,0,0,0,0,30,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,169,0,0,0,0,0,0,171,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,13,177,254,254,254,127,0,0,0,0,0,199,245,254,157,11,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,246,14,0,0,5,30,171,245,254,168,13,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,179,7,0,61,158,254,254,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,254,125,217,237,254,254,254,157,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,251,254,254,254,254,254,255,254,249,171,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,254,221,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,196,242,254,254,248,120,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,169,100,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,94,158,158,187,202,235,254,255,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,207,254,254,254,254,254,252,225,174,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,254,179,133,67,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,91,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,215,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,172,17,128,182,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,254,178,247,254,254,252,201,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,254,254,254,196,167,245,254,198,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,227,118,15,0,73,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,206,38,0,0,0,44,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,183,24,0,0,0,0,44,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,81,3,0,0,0,0,0,44,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,201,15,0,0,0,0,0,0,0,44,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,242,30,0,0,0,0,0,0,0,124,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,102,0,0,0,0,0,0,52,247,254,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,188,11,0,0,0,0,17,140,254,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,180,44,0,0,3,149,254,254,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,229,254,235,120,68,209,254,254,242,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,244,254,254,254,254,252,154,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,119,201,223,104,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,192,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,211,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,160,56,0,0,0,92,252,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,252,172,0,0,0,171,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,253,253,190,0,0,68,245,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,252,252,189,0,0,190,252,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,249,253,252,251,86,0,22,221,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,190,252,253,252,160,0,0,69,252,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,253,252,38,0,0,192,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,254,253,253,253,165,255,253,253,253,165,148,148,30,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,253,252,252,252,252,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,117,237,252,253,252,252,252,252,253,252,252,252,252,253,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,21,128,190,189,247,252,252,253,252,252,252,252,253,169,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,95,252,253,252,244,77,42,42,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,235,253,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,104,178,253,192,66,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,148,56,178,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,151,6,0,4,178,243,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,226,38,0,0,0,0,185,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,252,252,38,0,0,0,0,0,66,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,151,150,0,0,0,0,0,0,0,0,0,255,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,91,0,0,0,0,0,0,0,0,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,139,0,0,0,0,0,0,0,0,253,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,139,0,0,0,0,0,0,0,0,153,252,168,0,0,0,0,0,0,0,0,0,0,0,38,213,241,215,252,190,0,0,0,0,0,0,0,0,26,244,216,16,0,0,0,0,0,0,0,0,4,54,229,253,51,57,253,253,0,0,0,0,0,0,0,0,0,169,252,128,0,0,0,0,0,0,0,51,179,252,233,145,0,19,215,252,0,0,0,0,0,0,0,0,0,131,252,252,198,122,57,38,86,160,197,246,244,142,37,0,0,0,197,252,0,0,0,0,0,0,0,0,0,7,153,252,253,252,243,237,253,252,214,90,25,0,0,0,0,0,197,252,0,0,0,0,0,0,0,0,0,0,0,101,176,225,225,225,163,88,0,0,0,0,0,0,0,0,198,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,215,0,0,0,0,0,0,0,0,197,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,242,230,24,0,0,0,0,0,1,113,251,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,214,0,0,0,0,0,0,51,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,228,254,206,0,0,0,0,0,0,172,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,254,254,46,0,0,0,0,0,49,245,254,201,20,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,177,2,0,0,0,0,0,122,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,244,74,0,0,0,0,0,45,232,254,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,52,239,254,169,0,0,0,0,0,0,131,254,231,10,0,0,0,0,0,0,0,0,0,0,0,0,0,4,199,254,254,48,0,0,0,0,0,23,230,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,254,251,250,250,213,150,112,214,254,213,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,254,254,254,254,254,254,254,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,233,254,254,254,254,254,254,254,254,254,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,40,40,79,113,124,117,162,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,238,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,200,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,254,236,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,193,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,243,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,246,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,248,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,250,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,186,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,248,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,248,234,7,0,0,0,2,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,232,0,0,0,0,22,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,143,0,0,0,0,111,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,65,0,0,0,0,128,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,225,14,0,0,0,0,128,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,176,2,0,0,31,163,243,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,79,64,152,219,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,254,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,200,254,254,237,151,112,255,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,63,37,0,85,253,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,183,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,83,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,196,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,253,241,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,210,253,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,219,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,213,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,217,250,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,111,0,0,0,0,0,0,16,63,159,186,186,186,186,74,35,0,0,0,0,0,0,0,0,0,0,254,253,111,0,0,0,0,0,77,207,253,253,253,253,253,253,253,226,134,2,0,0,0,0,0,0,0,0,254,253,208,0,0,0,0,136,237,253,253,253,253,253,253,253,253,253,253,139,0,0,0,0,0,0,0,0,254,253,235,0,0,0,75,238,253,253,253,190,172,172,202,253,253,253,253,214,0,0,0,0,0,0,0,0,254,253,241,36,0,32,239,253,234,136,43,10,0,0,16,43,191,253,253,233,0,0,0,0,0,0,0,0,254,253,253,220,37,144,253,235,126,0,0,0,0,0,0,37,160,253,253,147,0,0,0,0,0,0,0,0,206,253,253,253,235,242,253,155,0,0,0,0,32,100,145,235,253,253,253,20,0,0,0,0,0,0,0,0,16,205,253,253,253,253,253,213,106,136,230,230,237,253,253,253,253,253,95,1,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,253,253,253,253,253,253,253,207,87,1,0,0,0,0,0,0,0,0,0,0,7,91,253,253,253,253,253,253,253,253,253,253,253,152,87,7,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,129,129,129,190,129,129,96,5,5,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,85,85,86,85,85,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,104,240,252,252,253,252,252,246,197,57,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,207,252,252,252,252,253,252,252,252,252,253,130,7,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,252,252,252,253,173,252,252,252,253,252,133,0,0,0,0,0,0,0,0,0,0,0,0,89,207,253,255,253,253,178,140,0,0,32,140,140,255,253,253,84,0,0,0,0,0,0,0,0,0,0,123,246,252,252,253,252,252,234,225,86,85,85,76,0,27,181,252,209,0,0,0,0,0,0,0,0,0,120,246,252,252,252,253,252,252,252,252,253,252,252,223,0,0,66,239,246,88,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,236,225,223,114,74,0,0,0,197,252,112,0,0,0,0,0,0,0,0,174,252,252,252,252,253,252,252,157,50,0,0,0,0,0,0,0,119,252,112,0,0,0,0,0,0,0,0,63,241,253,253,253,255,152,31,0,0,0,0,0,0,0,0,0,120,253,174,0,0,0,0,0,0,0,0,0,100,252,252,252,106,3,0,0,0,0,0,0,0,0,0,76,246,252,204,0,0,0,0,0,0,0,0,0,19,209,252,220,0,0,0,0,0,0,0,0,0,0,0,117,252,252,112,0,0,0,0,0,0,0,0,0,0,181,252,205,16,0,0,0,0,0,0,0,0,16,169,243,252,233,37,0,0,0,0,0,0,0,0,0,0,57,252,252,203,15,0,0,0,0,0,0,95,203,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,170,253,255,253,253,159,113,114,159,253,253,253,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,34,214,253,252,252,252,252,253,252,252,252,252,215,121,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,196,246,252,252,252,253,252,252,214,118,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,84,84,84,84,84,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,163,226,225,246,249,225,86,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,236,162,84,84,84,161,253,224,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,50,0,0,0,0,0,253,252,227,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,228,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,252,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,57,57,25,0,0,0,7,165,253,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,205,169,122,29,131,252,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,215,31,0,79,255,253,253,253,253,255,206,113,38,0,0,101,113,101,0,0,0,0,0,0,0,0,0,253,195,19,0,0,128,252,252,252,252,253,252,252,234,225,226,249,252,249,225,0,0,0,0,0,0,0,0,196,246,209,197,197,222,252,252,245,195,196,246,252,252,252,253,252,252,214,118,0,0,0,0,0,0,0,0,0,122,230,252,252,253,252,245,121,0,0,75,115,223,223,225,176,84,28,0,0,0,0,0,0,0,0,0,0,0,25,112,112,112,112,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,51,51,152,193,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,254,253,254,253,254,253,224,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,252,233,151,50,50,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,213,254,253,183,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,254,213,152,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,252,253,252,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,244,203,203,203,214,253,254,131,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,151,40,0,0,0,10,50,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,113,213,21,0,0,0,0,0,0,0,0,0,72,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,20,0,0,0,0,0,0,62,102,193,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,255,253,153,152,92,92,153,152,254,253,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,92,232,253,252,253,252,253,252,253,252,253,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,253,254,253,254,253,254,253,224,162,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,151,151,151,213,212,151,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,210,253,253,253,253,255,218,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,252,252,252,252,252,253,252,249,208,77,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,252,240,237,238,240,252,252,252,171,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,132,132,132,31,0,0,32,210,252,252,252,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,99,199,252,252,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,240,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,60,60,61,60,72,252,252,252,197,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8,60,164,164,195,252,252,253,252,252,252,252,252,126,1,0,0,0,0,0,0,0,0,0,0,0,0,8,182,252,252,252,252,252,252,253,252,252,252,252,252,252,85,0,0,0,0,0,0,0,0,0,0,0,18,173,252,252,252,252,252,252,252,253,252,252,252,252,252,252,241,183,0,0,0,0,0,0,0,0,0,75,196,252,252,252,252,252,252,252,252,253,227,222,222,222,222,222,232,189,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,252,252,252,252,119,21,0,0,0,0,0,42,28,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,252,252,236,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,246,207,154,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,181,103,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,254,98,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,186,253,253,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,155,253,253,253,253,253,253,246,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,253,239,157,102,187,251,253,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,182,43,0,0,0,123,253,253,208,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,243,253,244,52,0,0,0,0,3,124,247,253,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,68,0,0,0,0,0,0,0,38,247,253,170,22,0,0,0,0,0,0,0,0,0,0,0,96,246,253,191,7,0,0,0,0,0,0,0,0,68,226,253,196,0,0,0,0,0,0,0,0,0,0,3,188,253,232,42,0,0,0,0,0,0,0,0,0,0,162,251,237,37,0,0,0,0,0,0,0,0,0,62,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,188,253,144,0,0,0,0,0,0,0,0,0,146,253,249,22,0,0,0,0,0,0,0,0,0,0,0,0,104,253,239,30,0,0,0,0,0,0,0,0,202,253,239,0,0,0,0,0,0,0,0,0,0,0,0,0,7,240,253,47,0,0,0,0,0,0,0,0,254,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,145,0,0,0,0,0,0,0,0,254,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,145,0,0,0,0,0,0,0,0,254,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,67,247,253,133,0,0,0,0,0,0,0,0,254,253,167,0,0,0,0,0,0,0,0,0,0,0,7,139,240,253,235,28,0,0,0,0,0,0,0,0,254,253,253,146,26,0,0,0,0,0,0,0,69,104,211,253,253,240,63,0,0,0,0,0,0,0,0,0,84,245,253,253,250,249,249,212,194,249,249,249,252,253,253,253,240,54,0,0,0,0,0,0,0,0,0,0,0,55,201,253,253,253,253,253,253,253,253,253,253,226,183,110,45,0,0,0,0,0,0,0,0,0,0,0,0,0,17,56,145,150,253,216,191,214,168,90,37,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,171,45,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,242,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,255,184,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,232,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,198,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,201,253,253,181,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,215,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,220,253,253,162,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,232,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,191,253,246,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,248,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,193,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,166,253,245,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,235,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,168,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,168,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,145,253,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,112,112,216,243,252,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,254,254,254,254,254,254,254,164,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,254,254,229,156,62,25,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,71,32,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,250,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,39,0,58,73,140,167,203,203,186,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,205,197,243,254,254,254,254,254,254,249,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,254,207,195,98,65,155,235,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,254,166,71,15,0,0,0,0,48,189,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,196,94,12,0,0,0,0,0,0,0,164,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,225,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,101,22,0,0,0,0,0,0,6,134,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,162,0,0,0,0,0,47,175,254,254,225,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,170,3,0,16,20,118,226,254,254,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,161,144,232,254,254,254,254,225,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,250,254,254,254,254,254,253,156,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,124,231,254,254,156,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,242,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,242,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,205,20,0,0,0,81,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,45,0,0,25,212,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,253,45,0,0,59,253,225,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,249,253,92,0,0,59,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,226,253,175,0,0,9,193,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,199,116,209,112,204,253,246,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,224,253,253,253,253,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,194,91,65,95,206,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,241,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,247,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,125,168,147,229,154,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,254,254,254,255,220,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,173,254,254,254,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,133,149,149,83,231,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,248,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,216,254,237,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,196,254,254,218,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,254,195,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,215,254,254,254,254,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,195,195,238,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,199,254,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,20,20,129,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,254,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,249,254,254,254,250,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,191,124,124,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,202,0,40,150,235,251,251,251,180,21,0,0,0,0,0,0,0,0,0,0,0,0,0,22,4,0,116,254,133,120,238,218,181,181,181,237,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,0,230,254,250,254,181,21,0,0,0,10,193,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,239,254,254,204,16,0,0,0,0,0,190,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,242,33,30,0,0,0,0,0,190,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,191,198,41,0,0,0,0,0,0,0,190,247,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,247,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,242,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,239,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,247,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,128,128,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,5,0,0,0,0,0,102,151,247,126,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,211,132,116,83,199,207,240,191,199,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,245,253,253,254,219,210,228,254,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,25,93,34,34,0,93,254,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,211,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,70,112,229,254,237,229,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,245,253,253,253,254,253,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,253,253,253,254,215,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,160,161,77,69,135,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,220,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,36,133,168,254,254,254,254,244,0,0,0,0,0,0,116,13,0,0,0,0,0,0,0,0,0,0,3,116,253,253,253,234,183,160,229,104,0,0,0,0,0,119,183,10,0,0,0,0,0,0,0,0,0,0,42,253,253,198,96,18,0,0,0,0,0,0,0,9,129,235,139,0,0,0,0,0,0,0,0,0,0,0,65,253,253,152,0,0,0,0,0,0,0,0,33,98,253,173,12,0,0,0,0,0,0,0,0,0,0,0,25,253,253,236,43,0,0,0,0,0,6,61,190,253,172,14,0,0,0,0,0,0,0,0,0,0,0,0,18,226,253,253,208,37,0,0,0,0,60,253,253,207,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,225,253,253,174,12,0,0,109,233,253,196,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,145,253,253,223,67,93,238,253,175,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,117,233,253,243,252,254,179,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,236,253,253,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,254,254,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,210,253,253,253,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,156,253,253,168,212,254,232,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,165,8,0,231,253,201,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,65,0,0,133,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,156,0,0,41,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,235,60,0,13,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,238,103,106,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,58,233,253,253,253,254,253,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,178,253,195,249,121,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,85,141,253,255,253,254,253,254,139,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,253,251,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,254,253,254,253,254,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,254,253,169,168,114,0,0,114,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,196,83,0,0,0,0,0,0,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,197,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,197,254,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,254,253,114,0,0,0,0,0,85,85,85,197,254,253,0,0,0,0,0,0,0,0,0,0,197,251,253,251,253,251,57,168,169,168,169,168,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,253,251,253,251,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,254,253,254,253,254,253,169,168,114,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,251,253,251,253,251,253,138,84,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,121,213,255,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,220,251,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,150,251,253,253,253,253,203,248,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,151,234,253,253,253,189,144,39,19,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,254,253,179,53,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,54,138,191,253,254,104,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,180,253,253,253,253,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,133,229,253,250,219,93,94,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,247,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,230,254,254,254,254,254,192,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,112,146,157,253,253,254,248,241,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,26,26,254,253,253,245,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,110,232,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,111,247,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,41,41,5,0,0,0,28,41,48,174,255,253,253,211,25,0,0,0,0,0,0,0,0,0,0,0,0,0,240,253,170,161,161,161,224,253,253,253,255,253,203,97,20,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,253,253,253,253,253,253,255,191,107,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,120,233,253,253,253,253,253,182,121,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,112,156,156,156,194,156,156,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,58,178,214,241,253,253,254,253,253,253,253,245,123,0,0,0,0,0,0,0,0,0,0,0,0,0,25,180,253,254,253,253,180,174,175,100,174,186,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,11,210,253,253,229,124,19,2,0,0,0,0,129,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,215,23,0,0,0,0,0,0,31,219,253,208,9,0,0,0,0,0,0,0,0,0,0,0,0,0,99,249,58,0,50,41,0,0,0,5,194,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,31,132,247,241,162,118,0,111,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,153,226,253,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,199,213,235,253,254,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,193,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,253,253,253,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,161,247,253,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,253,78,128,253,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,253,78,9,170,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,255,254,155,5,99,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,253,164,57,254,253,190,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,241,253,253,253,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,241,253,253,254,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,111,193,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,243,84,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,215,201,243,253,234,145,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,128,197,251,249,246,244,243,247,253,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,159,53,22,0,0,41,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,139,18,1,0,0,0,0,10,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,230,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,246,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,254,199,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,176,254,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,245,253,251,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,165,247,253,253,148,141,93,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,144,232,253,253,253,253,253,254,253,251,207,103,61,82,8,0,0,0,0,0,0,0,0,0,0,0,90,236,253,253,253,253,202,133,168,169,243,253,253,253,253,253,190,112,0,0,0,0,0,0,0,0,0,0,225,253,253,221,147,9,4,0,0,0,8,9,72,200,253,253,217,55,0,0,0,0,0,0,0,0,0,25,235,253,206,23,0,0,0,0,0,0,0,0,0,7,37,69,53,14,0,0,0,0,0,0,0,0,0,0,155,141,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,92,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,222,251,254,254,252,251,187,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,244,247,230,194,230,230,240,254,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,104,0,0,0,0,30,193,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,0,0,0,0,0,76,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,214,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,15,121,245,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,78,157,173,189,254,254,254,254,254,181,135,78,68,0,0,0,0,0,0,0,0,0,0,0,0,65,185,249,254,254,254,254,254,254,254,253,240,254,254,254,252,236,0,0,0,0,0,0,0,0,0,20,177,254,246,245,152,193,189,254,254,179,60,51,35,53,53,78,100,53,0,0,0,0,0,0,0,0,42,243,254,161,75,73,165,240,254,213,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,255,254,232,251,254,246,209,89,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,254,252,167,121,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,91,91,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,226,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,255,255,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,255,255,255,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,29,0,0,0,57,226,255,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,57,198,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,114,0,0,0,0,0,0,0,141,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,57,0,0,0,0,0,0,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,114,0,0,0,0,141,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,226,114,0,0,226,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,255,114,170,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,198,114,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,29,0,86,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,29,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,226,226,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,219,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,194,254,179,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,164,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,206,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,233,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,66,6,0,0,0,0,0,11,211,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,253,107,0,0,0,0,0,22,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,174,11,0,0,0,0,0,66,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,0,0,0,0,0,0,0,22,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,36,0,0,0,0,0,0,22,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,158,0,0,0,0,0,0,31,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,222,64,6,0,0,0,0,57,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,253,252,214,140,62,45,0,66,252,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,167,254,253,253,253,253,255,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,125,203,168,224,252,253,252,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,14,21,21,21,136,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,244,66,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,252,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,191,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,121,244,204,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,198,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,239,253,253,226,155,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,253,161,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,234,90,0,0,233,254,173,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,244,33,0,149,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,214,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,169,253,229,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,251,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,173,253,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,35,114,254,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,199,56,0,91,254,239,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,223,12,0,4,171,253,217,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,241,253,142,128,128,207,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,217,253,253,253,254,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,213,253,228,199,173,134,50,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,89,170,254,254,254,192,154,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,183,253,253,250,243,243,250,253,253,195,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,253,253,202,56,0,0,57,95,206,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,166,21,0,0,0,0,0,10,84,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,253,245,159,31,30,30,31,30,125,229,198,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,245,253,253,253,253,253,253,253,253,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,147,213,213,213,213,223,253,253,253,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,197,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,178,253,240,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,251,253,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,234,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,187,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,253,240,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,239,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,242,255,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,224,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,244,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,253,217,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,248,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,253,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,228,253,230,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,7,34,130,130,130,130,173,255,206,13,0,0,0,0,0,0,0,0,0,0,0,0,7,83,76,136,154,253,253,253,253,253,253,253,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,1,145,253,253,253,253,253,253,240,235,235,249,253,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,253,237,146,105,31,0,0,126,253,253,253,183,10,0,0,0,0,0,0,0,0,0,0,0,3,182,253,235,146,36,0,0,0,0,0,75,253,253,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,50,93,38,0,0,0,0,0,0,0,153,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,17,0,0,0,0,0,67,235,253,238,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,220,204,174,92,50,50,81,234,253,253,123,32,0,46,50,27,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,253,253,253,253,253,226,180,246,253,219,4,0,0,0,0,0,0,0,0,0,0,48,191,191,191,202,253,253,253,253,253,253,253,253,253,253,253,136,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,61,61,169,253,253,231,82,107,76,61,61,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,242,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,196,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,220,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,220,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,214,251,251,251,212,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,253,251,251,251,251,206,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,221,248,251,253,204,188,244,251,253,229,221,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,228,251,251,251,193,23,0,221,251,253,251,251,228,59,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,229,158,0,0,128,253,253,255,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,68,228,253,251,235,66,0,0,0,127,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,221,251,253,235,63,0,0,0,0,127,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,112,248,251,253,180,0,0,0,0,0,16,225,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,120,205,251,251,193,23,0,0,0,0,0,80,240,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,191,253,253,253,0,0,0,0,0,0,12,174,253,253,219,230,253,253,253,0,0,0,0,0,0,0,0,72,236,251,251,231,0,4,32,32,32,12,158,251,251,231,39,190,251,251,251,0,0,0,0,0,0,0,0,96,251,251,251,94,0,16,126,156,251,96,251,251,219,47,48,221,251,251,172,0,0,0,0,0,0,0,0,134,251,251,196,12,0,0,0,8,31,12,31,31,23,40,134,251,251,235,70,0,0,0,0,0,0,0,0,253,251,251,188,0,0,0,0,0,0,0,0,0,40,217,253,251,251,89,0,0,0,0,0,0,0,0,0,255,253,253,213,36,0,0,0,0,0,0,72,174,253,253,255,241,79,0,0,0,0,0,0,0,0,0,0,233,251,251,251,212,191,170,32,171,190,191,236,251,251,251,241,93,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,251,251,251,251,253,251,251,251,172,79,0,0,0,0,0,0,0,0,0,0,0,0,12,157,251,251,251,253,251,251,251,251,253,251,219,148,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,94,232,251,253,251,251,251,251,193,94,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,213,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,237,254,179,0,0,0,0,2,89,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,208,254,194,179,0,0,0,0,71,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,153,254,183,15,48,0,0,0,0,154,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,248,34,0,0,0,0,0,14,243,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,107,0,0,0,0,0,0,45,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,251,188,2,0,0,0,0,0,0,128,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,246,54,0,0,0,0,0,0,0,231,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,173,0,0,0,0,0,0,0,62,251,239,11,0,0,0,0,0,0,0,0,0,0,0,0,0,64,237,247,37,0,0,0,0,0,0,0,193,255,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,224,179,0,0,0,0,0,0,0,0,194,249,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,185,110,9,42,44,95,116,147,166,238,254,216,189,120,0,0,0,0,0,0,0,0,0,0,0,0,149,233,254,254,232,253,254,255,255,254,254,254,251,254,220,88,0,0,0,0,0,0,0,0,0,0,0,0,35,181,230,223,254,220,204,247,163,204,214,254,65,96,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,8,21,7,0,18,0,0,200,171,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,249,229,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,244,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,230,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,218,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,79,154,203,141,141,141,41,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,252,253,252,252,252,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,224,168,168,118,130,106,235,134,47,134,135,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,153,252,240,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,203,13,0,0,0,29,253,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,196,252,252,194,19,0,0,128,252,252,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,234,252,253,215,44,76,253,252,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,240,253,252,181,249,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,253,252,252,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,241,139,177,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,190,0,0,185,253,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,196,47,0,0,85,252,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,80,0,0,0,172,252,238,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,202,6,0,0,26,222,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,255,253,128,29,4,179,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,252,252,179,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,28,28,178,203,177,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,163,190,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,183,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,165,254,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,254,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,215,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,254,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,255,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,215,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,134,237,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,215,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,252,153,0,0,0,0,63,171,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,231,51,0,0,0,32,237,253,221,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,179,0,0,0,0,37,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,252,179,0,0,0,0,37,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,180,0,0,0,0,37,253,255,170,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,200,21,0,0,0,78,252,253,252,241,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,252,252,201,181,182,181,232,252,253,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,252,252,252,252,253,252,252,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,144,144,207,208,144,160,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,206,73,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,211,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,147,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,234,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,214,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,251,210,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,250,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,243,212,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,193,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,193,0,0,0,0,0,0,77,209,239,208,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,193,0,0,0,0,0,51,233,254,254,254,250,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,193,0,0,0,0,50,234,234,51,16,186,254,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,210,193,0,0,0,13,219,252,81,0,0,41,233,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,210,217,8,0,0,110,254,143,0,0,0,0,194,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,92,0,0,110,254,121,0,0,0,0,168,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,217,58,0,110,254,121,0,0,0,4,204,232,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,240,107,116,254,138,0,18,60,172,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,208,254,254,254,249,230,237,254,254,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,98,173,211,254,233,173,94,35,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,255,254,174,101,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,240,253,253,253,253,253,248,200,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,156,7,152,160,160,245,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,88,0,0,101,248,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,52,0,102,198,253,253,185,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,81,249,253,253,179,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,31,199,253,253,244,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,123,246,253,253,216,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,238,231,96,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,233,253,253,253,253,253,248,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,129,167,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,30,105,245,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,62,137,249,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,8,88,190,253,253,253,252,175,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,245,253,253,253,253,253,223,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,250,253,253,253,248,199,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,113,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,141,204,253,253,253,255,178,141,141,141,116,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,253,252,252,252,253,252,252,252,253,252,187,44,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,253,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,44,228,252,190,139,139,139,140,139,177,252,253,252,252,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,63,0,0,0,0,0,0,0,0,29,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,224,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,229,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,196,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,252,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,96,236,254,230,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,78,221,253,253,253,253,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,229,254,253,253,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,81,243,251,253,252,231,188,63,35,215,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,196,253,253,212,150,77,0,0,0,13,173,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,250,98,14,0,0,0,0,8,125,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,205,211,30,0,0,0,0,0,5,129,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,244,88,0,0,0,0,45,74,193,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,117,0,0,0,58,174,255,253,253,253,253,188,6,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,232,96,54,130,245,253,254,253,253,253,229,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,254,254,254,254,254,254,237,144,19,148,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,195,253,204,138,34,0,70,245,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,116,67,6,44,12,0,0,0,191,197,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,233,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,138,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,247,244,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,233,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,231,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,255,254,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,226,254,109,40,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,219,10,0,1,23,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,175,0,0,71,254,166,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,235,49,0,0,125,254,202,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,196,0,0,0,184,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,221,254,113,0,0,11,225,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,217,19,0,0,18,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,172,0,6,43,162,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,216,254,99,102,165,254,254,254,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,230,254,254,251,254,251,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,233,254,254,236,127,46,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,98,98,13,0,32,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,241,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,201,76,76,132,58,36,105,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,19,123,186,252,252,253,252,252,252,252,252,165,88,25,0,0,0,0,0,0,0,0,0,0,0,98,175,80,201,252,252,252,235,219,252,252,252,252,252,252,252,211,25,0,0,0,0,0,0,0,0,0,17,221,252,212,252,252,210,95,44,4,84,188,252,252,252,172,148,208,107,0,0,0,0,0,0,0,0,3,79,252,252,252,171,72,10,0,0,0,18,225,252,252,171,14,28,7,0,0,0,0,0,0,0,0,0,13,252,252,238,151,14,0,0,0,0,0,25,252,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,13,252,252,163,0,0,0,0,0,41,41,123,252,252,232,40,0,0,0,0,0,0,0,0,0,0,0,0,117,252,221,12,0,0,0,38,9,224,235,237,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,216,0,0,0,37,163,231,251,253,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,195,252,233,40,0,0,85,252,252,252,253,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,230,132,41,94,253,253,253,255,253,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,242,252,252,252,252,252,252,252,252,253,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,170,240,252,252,182,96,238,252,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,84,16,0,229,252,253,247,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,245,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,237,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,18,62,65,65,107,141,65,65,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,21,89,214,229,252,253,253,253,253,253,253,214,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,253,253,253,193,178,183,253,253,253,158,19,0,0,0,0,0,0,0,0,0,0,0,0,153,253,245,212,124,124,48,24,5,0,2,24,34,216,253,116,0,0,0,0,0,0,0,0,0,0,0,0,18,109,49,0,0,0,0,0,0,0,0,0,0,179,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,249,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,194,247,253,203,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,136,251,253,249,133,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,17,105,121,204,204,205,253,253,250,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,224,253,253,253,253,253,253,253,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,140,214,248,253,253,253,253,253,253,253,253,251,148,20,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,253,253,185,144,200,253,253,202,21,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,121,30,1,0,7,81,235,254,201,59,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,181,102,5,0,0,0,0,0,21,124,230,214,144,3,0,0,0,0,0,0,0,0,0,254,253,253,229,90,2,0,0,0,0,0,0,0,0,0,85,216,253,235,181,0,0,0,0,0,0,0,0,164,163,100,34,0,0,0,0,0,0,0,0,0,0,0,0,9,64,64,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,96,60,72,96,96,96,96,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,151,190,205,251,230,236,251,251,251,253,205,190,51,32,0,0,0,0,0,0,0,0,0,0,0,0,0,174,251,251,251,251,253,251,188,126,126,253,251,251,251,251,128,111,0,0,0,0,0,0,0,0,0,0,0,253,251,219,188,188,31,31,15,0,0,31,31,31,70,188,31,75,64,48,0,0,0,0,0,0,0,0,0,253,251,204,19,0,0,0,0,0,0,0,0,0,0,0,60,228,251,228,158,0,0,0,0,0,0,0,0,96,253,253,213,36,0,0,0,0,0,0,0,48,134,253,255,253,253,169,158,0,0,0,0,0,0,0,0,84,224,251,251,212,32,8,0,0,0,32,151,221,251,251,221,220,140,8,0,0,0,0,0,0,0,0,0,0,16,188,251,251,253,157,63,32,127,253,251,251,219,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,169,228,253,251,236,229,251,229,168,31,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,251,251,251,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,253,253,96,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,72,228,253,227,140,201,240,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,126,31,0,0,79,253,236,127,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,251,113,0,0,0,0,0,91,236,251,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,94,0,0,0,0,0,0,190,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,153,96,84,0,0,0,96,214,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,251,251,253,244,190,190,190,253,251,235,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,156,251,253,251,251,251,251,253,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,31,31,31,110,188,188,129,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,29,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,187,252,252,244,169,82,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,253,252,252,252,253,252,252,203,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,246,252,253,252,252,252,253,252,252,252,175,38,0,0,0,0,0,0,0,0,0,0,0,0,0,126,204,253,253,253,255,253,244,125,126,225,247,253,255,203,7,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,252,202,253,240,81,0,0,0,104,246,253,252,149,7,0,0,0,0,0,0,0,0,0,45,240,252,253,233,130,6,253,158,0,0,0,0,0,100,253,252,252,28,0,0,0,0,0,0,0,0,0,107,252,252,253,145,0,0,28,9,0,0,0,0,0,0,153,252,252,78,0,0,0,0,0,0,0,0,4,179,253,253,163,0,0,0,0,0,0,0,0,0,0,0,129,253,253,203,0,0,0,0,0,0,0,0,104,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,0,0,0,0,0,0,0,0,141,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,0,0,0,0,0,0,0,0,141,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,0,0,0,0,0,0,0,0,204,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,78,0,0,0,0,0,0,0,0,253,252,252,115,0,0,0,0,0,0,0,0,0,0,19,157,253,252,233,22,0,0,0,0,0,0,0,0,165,252,252,116,0,0,0,0,0,0,0,0,48,110,215,252,253,233,62,0,0,0,0,0,0,0,0,0,141,252,252,240,51,0,0,0,0,0,38,113,241,252,252,252,178,22,0,0,0,0,0,0,0,0,0,0,141,253,253,253,254,228,178,253,254,253,253,253,254,247,225,75,0,0,0,0,0,0,0,0,0,0,0,0,47,196,252,252,253,252,252,252,253,252,252,252,184,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,143,243,253,252,252,252,244,168,168,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,28,28,28,28,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,255,254,238,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,253,253,253,253,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,215,251,253,253,196,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,229,123,9,55,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,249,253,253,144,0,0,40,253,253,241,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,138,249,253,253,149,8,0,0,5,174,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,186,38,9,0,0,0,0,163,253,253,251,99,0,0,0,0,0,0,0,0,0,0,0,0,127,249,253,227,122,0,0,0,0,0,0,163,253,253,246,57,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,65,0,0,0,0,0,0,0,59,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,120,249,253,182,9,0,0,0,0,0,0,0,133,253,253,250,87,0,0,0,0,0,0,0,0,0,0,28,244,253,180,41,0,0,0,0,0,0,0,10,184,253,253,240,0,0,0,0,0,0,0,0,0,0,0,118,253,253,155,0,0,0,0,0,0,0,0,40,253,253,253,213,0,0,0,0,0,0,0,0,0,0,0,118,253,253,65,0,0,0,0,0,0,0,0,130,253,253,250,91,0,0,0,0,0,0,0,0,0,0,0,205,253,199,13,0,0,0,0,0,0,0,51,226,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,42,0,0,0,0,0,0,7,186,253,253,236,37,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,155,0,0,0,0,0,7,140,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,213,104,3,0,0,16,74,253,253,253,156,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,252,253,253,160,143,143,228,253,253,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,247,252,253,253,253,253,253,253,249,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,123,230,253,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,137,137,137,137,192,220,164,137,137,137,137,60,5,0,0,0,0,0,0,0,0,0,0,0,0,0,33,229,254,239,219,239,249,244,254,254,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,194,48,0,47,69,58,83,83,83,88,232,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,14,65,42,0,0,0,0,0,0,0,0,0,148,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,193,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,209,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,216,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,248,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,248,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,204,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,206,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,223,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,198,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,136,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,219,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,50,0,0,0,0,0,0,0,41,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,244,40,0,0,0,0,11,173,254,253,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,203,0,0,0,0,0,173,252,233,151,71,232,123,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,203,0,0,0,0,21,254,213,0,0,0,102,234,30,0,0,0,0,0,0,0,0,0,0,0,0,132,252,162,0,0,0,0,183,253,50,0,0,0,102,253,50,0,0,0,0,0,0,0,0,0,0,0,0,52,253,102,0,0,0,31,233,203,0,0,0,0,123,244,40,0,0,0,0,0,0,0,0,0,0,0,0,132,252,61,0,0,0,51,252,122,0,0,0,21,223,162,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,51,253,0,0,0,0,72,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,183,0,0,0,51,252,82,0,0,41,233,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,50,0,0,21,203,193,71,21,163,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,212,142,61,0,20,213,252,223,243,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,254,253,254,253,244,162,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,151,192,253,171,151,111,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,146,160,220,254,181,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,242,254,254,254,254,254,245,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,209,254,254,254,252,249,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,237,132,85,63,98,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,13,225,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,8,220,254,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,237,36,182,254,254,187,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,209,254,177,254,254,154,23,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,254,212,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,254,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,188,138,254,208,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,86,29,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,228,184,2,6,193,254,219,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,197,35,0,60,255,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,248,210,248,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,254,254,254,254,254,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,226,254,254,254,230,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,56,145,83,111,155,253,254,254,254,254,245,186,241,120,2,0,0,0,0,0,0,0,0,0,0,0,33,160,253,253,253,253,250,249,250,253,253,253,253,253,253,250,9,0,0,0,0,0,0,0,0,0,0,7,222,253,234,99,161,133,56,53,54,89,89,89,89,89,89,58,0,0,0,0,0,0,0,0,0,0,0,11,253,236,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,223,232,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,231,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,240,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,69,0,47,13,140,121,159,94,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,220,214,244,175,242,205,248,249,248,113,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,135,123,145,200,36,34,20,51,61,130,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,0,0,0,0,0,13,217,236,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,232,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,91,236,253,221,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,114,218,253,245,132,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,46,118,145,145,164,252,253,251,208,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,153,169,253,194,234,191,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,18,76,136,136,164,254,255,254,194,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,125,189,253,253,253,253,253,253,253,253,253,242,77,10,0,0,0,0,0,0,0,0,0,0,0,4,70,189,253,253,253,253,248,200,172,82,82,82,145,253,253,150,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,253,190,70,59,0,0,0,0,0,46,253,253,237,40,0,0,0,0,0,0,0,0,0,0,115,253,253,187,68,6,0,0,0,0,0,0,0,172,253,253,200,10,0,0,0,0,0,0,0,0,0,0,32,253,156,8,0,0,0,0,0,0,0,0,149,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,1,11,4,0,0,0,0,0,0,0,2,106,242,253,253,148,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,149,253,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,53,160,225,253,253,253,226,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,120,253,253,253,253,253,253,214,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,253,253,247,119,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,249,253,253,187,68,41,41,102,170,253,243,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,130,23,7,0,0,0,0,17,214,253,246,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,253,202,9,0,0,0,0,0,0,0,0,0,21,124,8,0,0,0,0,0,0,0,0,0,0,0,20,192,253,253,17,0,0,0,0,0,0,0,0,0,29,238,154,31,0,0,0,0,0,0,0,0,3,62,223,253,253,253,17,0,0,0,0,0,0,0,0,0,0,171,253,229,133,34,0,0,0,20,66,66,184,253,253,253,253,150,5,0,0,0,0,0,0,0,0,0,0,61,232,253,253,228,201,201,201,217,253,253,253,253,253,253,149,8,0,0,0,0,0,0,0,0,0,0,0,0,26,76,242,253,253,253,253,253,253,253,253,242,152,68,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,188,253,253,253,253,154,135,75,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,253,253,192,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,234,252,252,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,253,252,252,252,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,178,252,253,252,252,249,239,253,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,252,252,223,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,255,253,228,47,141,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,252,253,223,52,0,15,206,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,231,252,252,220,133,37,0,0,0,113,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,217,37,0,0,0,0,0,113,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,220,37,0,0,0,0,0,0,113,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,133,0,0,0,0,0,0,0,114,253,196,0,0,0,0,0,0,0,0,0,0,0,0,19,181,252,253,129,6,0,0,0,0,0,0,0,238,252,195,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,253,27,0,0,0,0,0,0,0,111,253,252,195,0,0,0,0,0,0,0,0,0,0,0,10,203,252,252,178,9,0,0,0,0,0,0,35,215,253,252,180,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,63,0,0,0,0,0,0,32,215,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,0,0,0,0,0,0,101,222,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,163,9,0,10,85,147,249,252,252,252,106,3,0,0,0,0,0,0,0,0,0,0,0,0,19,209,252,252,253,203,197,203,252,253,252,252,245,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,253,252,252,252,252,253,226,192,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,252,253,252,252,252,173,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,59,0,0,0,0,53,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,252,195,79,63,128,216,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,190,254,254,254,254,254,254,254,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,254,254,241,190,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,129,53,53,53,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,214,254,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,254,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,254,254,251,174,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,253,210,210,236,254,229,218,102,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,116,66,0,0,26,138,238,254,254,197,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,96,218,254,216,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,223,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,237,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,198,46,0,0,0,0,0,0,81,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,247,254,80,0,0,0,0,0,0,81,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,249,254,130,1,0,0,0,0,53,192,254,230,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,218,254,168,20,14,57,141,237,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,198,254,254,254,254,254,254,226,141,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,48,158,138,0,0,0,1,172,241,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,140,254,251,157,0,0,0,88,254,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,215,254,209,48,0,0,0,44,239,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,251,254,210,12,0,0,0,0,146,254,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,251,254,252,71,61,61,29,0,68,254,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,251,254,254,254,254,254,254,244,214,210,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,236,250,250,250,250,250,250,253,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,254,242,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,211,254,212,244,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,223,25,131,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,246,244,74,0,90,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,254,155,0,0,90,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,242,33,0,0,165,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,185,0,0,3,199,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,209,252,71,0,0,84,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,226,0,0,29,227,243,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,226,0,10,175,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,241,56,124,254,237,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,234,254,247,254,237,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,255,169,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,200,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,192,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,245,252,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,226,243,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,255,42,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,67,23,0,0,0,0,0,0,177,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,160,252,87,0,0,0,0,0,0,177,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,87,0,0,0,0,0,0,85,230,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,22,189,252,252,87,0,0,0,0,0,0,0,210,252,233,108,0,0,0,0,0,0,0,0,0,0,0,0,34,252,252,252,87,0,0,0,0,0,0,0,210,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,34,252,252,252,87,0,0,0,0,0,0,0,210,252,252,245,121,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,87,0,0,0,0,0,0,0,210,252,252,252,130,0,0,0,0,0,0,0,0,0,0,0,255,252,252,252,87,0,0,0,0,0,0,0,210,252,252,252,168,30,0,0,0,0,0,0,0,0,0,0,255,252,252,252,87,0,0,0,0,0,0,78,229,252,252,252,252,165,111,14,0,0,0,0,0,0,0,0,254,252,252,252,181,144,144,144,144,144,144,220,252,252,252,252,252,252,252,157,0,0,0,0,0,0,0,0,100,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,98,0,0,0,0,0,0,0,0,34,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,151,43,43,6,0,0,0,0,0,0,0,0,2,68,239,252,252,252,251,230,230,230,230,230,249,252,252,245,120,0,0,0,0,0,0,0,0,0,0,0,0,0,78,197,197,197,188,0,0,0,0,39,219,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,233,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,221,236,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,238,195,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,220,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,220,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,221,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,239,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,224,0,0,0,82,146,213,138,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,241,230,11,0,124,248,139,220,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,189,66,233,214,5,155,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,240,254,244,254,233,142,239,202,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,102,200,254,222,147,63,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,242,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,197,253,255,253,253,211,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,135,240,247,252,252,253,150,241,252,242,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,233,252,252,192,158,89,26,2,23,138,233,246,205,35,0,0,0,0,0,0,0,0,0,0,0,0,122,246,252,192,81,15,0,0,0,0,0,0,31,196,252,205,0,0,0,0,0,0,0,0,0,0,0,29,233,252,199,14,0,0,0,0,0,0,0,0,158,238,206,222,84,0,0,0,0,0,0,0,0,0,0,85,246,252,185,0,0,0,0,0,0,0,20,96,238,252,79,42,28,0,0,0,0,0,0,0,0,0,0,0,205,252,196,32,0,0,0,0,0,17,119,252,252,215,25,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,252,232,69,27,27,27,91,199,252,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,249,252,252,252,252,252,253,245,252,252,206,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,217,252,252,245,119,120,113,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,176,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,243,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,187,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,238,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,255,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,203,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,193,249,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,250,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,214,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,231,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,246,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,236,168,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,182,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,13,13,9,0,0,70,134,133,76,156,254,162,89,0,0,0,0,0,0,0,0,0,0,0,2,95,212,253,253,253,217,145,145,249,254,253,253,253,253,253,217,100,3,0,0,0,0,0,0,0,0,0,13,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,13,253,253,253,253,253,253,253,253,253,254,249,235,253,253,253,253,253,217,8,0,0,0,0,0,0,0,0,4,84,230,253,253,207,193,146,72,72,72,65,45,164,253,253,253,253,175,4,0,0,0,0,0,0,0,0,0,0,38,60,60,14,0,0,0,0,0,0,0,84,253,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,238,253,253,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,165,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,249,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,255,254,254,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,161,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,253,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,132,207,230,104,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,232,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,224,17,0,0,0,0,0,0,13,70,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,123,0,0,0,0,0,17,106,226,253,245,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,73,0,0,0,0,28,224,254,253,253,253,241,27,0,0,0,0,0,0,0,0,0,0,0,0,0,184,203,6,0,0,0,17,199,253,254,151,69,135,254,115,0,0,0,0,0,0,0,0,0,0,0,0,24,254,127,0,0,0,0,130,254,228,68,0,0,0,255,115,0,0,0,0,0,0,0,0,0,0,0,0,74,253,93,0,0,0,38,243,215,15,0,0,0,68,254,115,0,0,0,0,0,0,0,0,0,0,0,0,116,253,93,0,0,0,70,253,96,0,0,0,36,240,254,115,0,0,0,0,0,0,0,0,0,0,0,0,49,253,93,0,0,0,70,253,79,0,26,176,240,253,195,40,0,0,0,0,0,0,0,0,0,0,0,0,9,210,204,7,0,0,0,231,245,161,255,254,254,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,216,138,138,231,251,253,253,254,253,215,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,203,253,253,253,254,253,253,236,171,121,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,135,253,253,254,168,152,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,193,202,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,251,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,188,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,254,249,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,254,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,207,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,254,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,138,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,197,254,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,187,254,254,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,254,254,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,229,131,249,254,242,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,227,144,43,0,128,249,254,230,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,254,191,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,254,254,254,186,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,84,84,84,61,94,255,254,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,177,254,254,254,240,240,254,254,254,254,162,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,254,254,254,254,254,254,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,246,254,254,254,254,254,254,254,254,254,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,117,117,117,117,117,131,175,117,117,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,139,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,237,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,216,253,195,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,199,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,253,199,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,220,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,238,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,129,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,129,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,252,253,196,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,210,253,252,252,252,253,227,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,202,28,128,253,252,143,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,255,253,143,175,255,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,209,84,19,38,97,208,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,25,0,0,0,0,38,234,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,102,0,0,0,0,0,0,147,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,194,13,0,0,0,0,0,0,0,226,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,252,56,0,0,0,0,0,0,0,0,200,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,233,37,0,0,0,0,0,0,0,0,113,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,213,225,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,251,75,0,0,0,0,0,0,0,0,0,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,82,243,150,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,197,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,147,252,225,0,0,0,0,0,0,0,0,101,246,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,254,146,0,0,0,0,0,13,104,247,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,234,82,7,7,57,144,206,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,252,252,203,204,252,252,214,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,228,252,253,177,103,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,166,253,253,253,165,87,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,252,252,252,252,253,231,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,252,252,252,253,252,251,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,205,189,189,215,253,252,252,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,42,11,0,0,62,42,200,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,252,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,132,246,253,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,78,245,253,253,255,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,227,252,252,252,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,253,252,252,252,235,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,252,253,252,212,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,253,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,106,0,0,0,0,0,29,85,85,50,0,64,190,63,0,0,0,0,0,0,0,0,0,0,94,252,252,252,242,197,127,153,188,233,239,252,252,244,233,239,252,180,0,0,0,0,0,0,0,0,0,0,190,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,238,63,0,0,0,0,0,0,0,0,0,0,190,252,252,252,253,252,252,252,252,253,252,252,252,252,253,173,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,255,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,196,83,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,85,85,141,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,226,225,254,253,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,225,224,253,251,253,251,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,169,168,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,251,253,138,0,0,139,251,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,168,0,0,0,0,0,114,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,157,254,71,0,0,0,77,125,125,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,253,253,249,181,248,248,251,253,253,180,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,245,253,253,253,253,253,253,253,253,253,253,193,70,0,0,0,0,0,0,0,0,0,0,0,0,0,206,250,253,253,253,253,253,253,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,91,216,250,253,253,225,122,25,25,43,143,253,253,246,155,85,0,0,0,0,0,0,0,0,0,0,0,211,251,253,253,253,253,68,0,0,0,114,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,86,145,251,253,253,253,181,61,8,0,20,112,222,253,253,201,89,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,137,7,0,0,0,100,253,253,253,226,17,0,0,0,0,0,0,0,0,0,0,0,0,161,253,222,128,51,7,0,0,21,106,240,253,253,205,91,0,0,0,0,0,0,0,0,0,0,0,0,0,58,58,33,0,0,0,0,0,173,253,253,253,150,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,100,240,253,253,211,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,187,253,253,253,184,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,121,253,253,253,184,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,123,253,253,253,185,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,84,246,253,253,187,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,246,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,193,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,71,141,255,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,253,253,253,230,187,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,54,54,69,222,253,230,200,131,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,130,253,242,217,239,149,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,227,248,47,39,136,185,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,225,248,208,33,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,151,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,122,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,253,214,47,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,243,253,253,246,177,95,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,163,250,253,253,253,172,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,52,218,253,253,175,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,106,228,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,198,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,242,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,227,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,131,227,253,233,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,201,147,253,253,234,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,251,125,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,177,254,141,227,254,254,254,176,191,192,121,121,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,253,253,253,253,196,254,253,253,243,241,120,0,0,0,0,0,0,0,0,0,0,0,0,90,249,253,61,26,26,26,26,104,76,26,26,146,189,253,248,72,0,0,0,0,0,0,0,0,0,0,0,0,94,124,6,0,0,0,0,0,0,0,0,30,135,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,194,220,253,253,239,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,54,254,253,253,236,164,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,220,253,254,215,93,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,253,253,94,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,253,148,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,133,253,253,254,203,134,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,134,134,185,254,254,219,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,132,237,253,251,241,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,62,159,224,250,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,251,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,0,0,0,0,35,41,139,228,253,223,38,0,0,0,0,0,0,0,0,0,0,0,0,0,168,139,27,12,0,27,84,161,239,253,253,253,236,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,249,253,191,147,255,253,253,253,243,240,147,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,133,253,253,255,196,120,120,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,179,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,252,253,252,185,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,236,112,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,245,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,245,252,252,141,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,246,253,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,253,247,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,215,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,136,251,252,190,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,236,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,244,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,171,252,239,132,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,252,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,206,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,245,245,168,141,141,141,141,141,141,58,37,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,171,217,254,254,254,254,254,254,254,254,254,231,188,188,94,62,0,0,0,0,0,0,0,0,0,0,0,0,0,11,20,74,125,125,125,125,125,125,184,228,242,254,254,249,235,145,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,78,128,201,254,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,225,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,241,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,235,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,254,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,234,55,21,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,157,248,254,224,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,140,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,228,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,239,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,203,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,248,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,242,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,185,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,123,0,0,22,125,166,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,91,0,70,241,180,208,247,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,238,22,43,246,147,0,3,77,234,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,205,0,69,252,8,0,0,0,142,241,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,240,204,0,180,180,0,0,0,0,44,230,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,204,0,230,180,0,0,0,0,0,124,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,204,0,230,180,0,0,0,0,0,160,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,204,0,217,180,0,0,0,0,67,244,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,204,0,79,180,0,0,0,21,168,176,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,227,216,8,66,196,2,0,28,187,228,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,102,24,244,125,151,239,191,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,205,250,242,254,254,255,220,62,85,156,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,134,171,171,171,172,169,194,161,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,180,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,116,63,0,0,0,0,116,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,216,253,190,0,0,0,9,233,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,228,252,117,0,0,0,114,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,186,252,252,22,0,0,0,207,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,252,252,134,4,0,0,0,207,252,245,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,252,221,120,11,0,0,64,248,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,255,253,253,253,253,255,253,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,252,253,252,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,111,183,69,69,69,111,183,184,196,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,155,118,101,109,145,73,151,130,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,216,254,254,254,254,254,254,254,169,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,44,114,114,114,139,249,254,159,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,227,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,63,5,0,11,224,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,232,254,217,141,119,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,237,159,239,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,62,0,36,190,254,230,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,227,254,237,254,167,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,233,54,84,237,219,193,193,193,150,193,189,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,192,0,0,12,177,234,251,223,223,223,87,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,192,0,0,0,0,26,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,250,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,45,138,233,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,47,253,252,252,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,70,153,209,252,253,252,252,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,252,253,252,252,252,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,252,252,252,252,137,137,137,232,252,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,230,199,116,11,0,0,7,108,253,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,91,234,252,252,215,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,93,93,93,233,252,252,252,200,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,244,252,252,252,253,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,253,255,253,253,253,253,244,118,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,164,153,112,92,92,164,206,244,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,152,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,253,252,173,0,0,0,0,0,0,0,0,0,0,0,0,91,180,148,22,0,0,0,0,0,0,102,233,253,255,228,32,0,0,0,0,0,0,0,0,0,0,0,9,103,252,252,245,140,34,0,0,26,68,228,252,252,228,117,0,0,0,0,0,0,0,0,0,0,0,0,34,202,252,252,253,252,234,184,184,222,252,252,252,200,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,252,253,252,252,176,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,137,253,252,252,252,252,253,157,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,197,47,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,245,253,254,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,254,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,239,210,254,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,245,253,96,134,254,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,199,254,181,25,17,254,253,240,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,215,253,228,15,0,0,254,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,254,228,0,0,0,0,254,254,254,69,0,0,7,45,0,0,0,0,0,0,0,0,0,0,0,17,204,253,223,73,0,0,0,0,254,253,253,169,198,230,228,98,0,0,0,0,0,0,0,0,0,0,53,199,254,198,25,0,7,24,99,182,254,253,253,244,205,121,42,0,0,0,0,0,0,0,0,0,0,51,199,253,254,157,184,184,204,253,253,253,254,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,104,245,254,254,255,254,254,254,236,184,142,59,162,254,239,25,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,236,207,190,107,23,17,0,0,0,161,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,29,79,46,29,0,0,0,0,0,0,0,0,161,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,232,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,201,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,244,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,164,253,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,253,252,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,245,252,253,252,194,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,241,186,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,245,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,245,252,252,199,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,217,24,0,11,45,45,45,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,222,252,252,207,0,149,173,252,252,252,239,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,255,253,253,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,252,252,252,253,252,252,252,252,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,10,86,242,252,252,252,252,252,247,237,140,88,233,252,252,153,0,0,0,0,0,0,0,0,0,0,0,29,205,252,252,252,252,252,230,132,79,0,0,0,223,252,252,14,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,128,24,0,0,0,0,106,248,252,252,14,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,129,7,0,13,30,127,213,252,252,236,12,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,252,161,134,183,252,252,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,252,252,252,253,252,252,252,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,14,67,207,220,252,252,252,252,252,253,252,222,207,75,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,103,182,252,252,252,253,216,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,197,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,251,172,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,224,243,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,246,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,88,88,156,246,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,114,114,200,245,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,245,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,219,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,232,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,241,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,223,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,137,247,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,229,245,243,136,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,255,213,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,243,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,249,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,225,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,168,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,249,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,249,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,238,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,253,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,190,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,196,253,253,231,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,222,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,246,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,156,253,253,255,253,253,253,165,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,237,252,252,252,253,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,231,231,160,38,21,21,40,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,252,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,157,253,243,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,183,252,252,237,102,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,127,223,253,252,252,252,252,242,153,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,216,153,84,154,215,253,252,202,21,0,0,0,0,43,11,0,0,0,0,0,0,0,0,0,0,100,252,164,18,0,0,0,18,122,252,252,225,35,0,0,107,141,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,224,253,122,105,227,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,253,189,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,85,252,252,161,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,197,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,236,252,252,252,252,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,236,212,76,245,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,217,41,185,252,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,252,112,192,252,251,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,191,112,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,117,0,0,0,0,2,31,97,233,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,238,152,134,144,187,212,254,254,254,240,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,254,254,254,254,254,254,251,217,133,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,254,254,249,209,160,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,91,69,52,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,102,22,61,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,198,245,254,245,156,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,254,254,254,254,255,205,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,227,179,201,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,234,216,71,0,0,0,202,254,244,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,101,254,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,250,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,220,188,158,98,0,0,0,13,149,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,237,54,22,61,105,206,254,250,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,250,245,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,195,254,254,254,254,254,254,254,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,118,188,232,254,218,157,52,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,131,131,223,194,158,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,254,254,254,254,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,236,147,141,236,241,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,226,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,238,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,237,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,57,87,237,254,254,165,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,200,254,254,254,254,215,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,254,254,254,254,233,193,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,199,179,179,203,254,254,233,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,49,49,13,0,0,16,92,203,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,229,254,142,0,0,0,0,0,0,0,0,0,0,0,5,94,85,0,0,0,0,0,0,0,0,0,0,127,250,254,36,0,0,0,0,0,0,0,0,0,0,0,13,254,229,0,0,0,0,0,0,0,0,0,84,232,254,254,18,0,0,0,0,0,0,0,0,0,0,0,13,254,252,215,39,0,0,0,0,0,0,126,251,254,254,158,2,0,0,0,0,0,0,0,0,0,0,0,7,205,254,254,243,154,36,0,28,113,210,251,254,254,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,16,147,254,254,254,247,243,246,254,254,254,214,30,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,21,130,212,255,254,254,254,156,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,64,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,191,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,128,128,128,128,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,62,187,255,161,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,173,254,230,162,241,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,238,142,11,0,142,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,216,239,74,0,0,0,142,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,151,240,73,0,0,0,0,176,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,251,143,0,0,0,0,32,237,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,215,0,0,0,0,59,227,247,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,141,0,0,6,92,246,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,158,38,78,198,254,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,209,254,254,247,198,109,242,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,125,114,35,0,104,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,248,211,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,227,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,149,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,214,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,234,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,243,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,155,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,34,158,254,240,142,118,111,14,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,230,254,254,254,254,254,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,242,245,234,145,134,148,242,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,80,44,0,0,0,0,91,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,174,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,156,249,254,154,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,41,104,140,207,247,254,254,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,230,254,254,254,254,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,251,254,204,159,105,95,91,247,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,50,49,0,0,0,0,16,198,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,213,249,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,167,245,80,0,0,0,0,0,0,0,0,0,0,38,208,168,0,0,0,0,0,0,0,0,0,0,84,177,254,160,0,0,0,0,0,0,0,0,0,0,0,155,254,189,0,0,0,0,0,0,0,0,19,165,230,247,143,6,0,0,0,0,0,0,0,0,0,0,0,195,254,250,188,106,36,36,36,36,55,216,240,254,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,61,239,254,254,254,254,254,254,254,254,254,254,172,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,209,209,227,215,254,247,226,228,168,47,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,7,55,46,21,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,107,154,249,254,254,254,231,154,154,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,209,240,253,253,244,243,145,145,243,252,253,253,222,60,0,0,0,0,0,0,0,0,0,0,0,0,0,139,197,159,89,89,5,0,0,0,0,76,89,209,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,9,5,0,0,0,0,0,0,0,0,0,0,172,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,103,244,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,137,253,253,130,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,228,253,253,129,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,239,239,251,253,248,88,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,4,4,4,98,253,253,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,77,242,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,241,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,191,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,187,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,26,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,51,0,0,0,0,0,0,0,170,253,168,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,232,46,0,0,0,0,6,118,246,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,181,246,245,185,145,168,245,253,249,107,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,230,253,253,253,248,153,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,125,125,125,158,158,125,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,235,254,254,254,255,254,254,254,229,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,240,254,254,254,254,254,254,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,244,254,254,254,254,225,149,149,171,181,129,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,254,66,18,0,0,6,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,191,254,254,254,45,74,126,223,223,223,135,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,223,247,254,254,254,254,254,250,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,254,254,254,254,254,254,254,236,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,247,254,254,254,234,182,85,79,233,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,231,189,81,42,0,0,0,41,189,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,42,0,0,0,0,0,0,0,170,254,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,255,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,6,0,0,0,0,0,0,170,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,197,123,0,0,0,0,0,6,181,254,251,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,169,0,0,0,0,19,135,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,220,43,20,20,118,226,254,254,235,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,254,254,254,254,254,254,254,246,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,254,254,253,224,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,231,254,254,156,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,92,158,254,221,130,231,151,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,253,253,253,253,253,150,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,216,253,253,253,253,253,253,253,253,253,207,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,253,253,253,253,253,253,253,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,19,120,253,253,253,253,253,253,244,123,151,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,12,215,253,253,253,253,253,253,253,226,31,75,248,253,253,213,8,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,220,114,210,210,210,41,15,223,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,58,253,253,253,220,104,0,0,0,0,0,88,253,253,253,253,12,0,0,0,0,0,0,0,0,0,0,9,185,253,253,253,86,0,0,0,0,0,0,88,253,253,253,174,4,0,0,0,0,0,0,0,0,0,0,13,253,253,253,195,23,0,0,0,0,0,90,209,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,13,253,253,230,23,0,0,0,0,0,21,218,253,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,13,253,253,222,0,0,0,0,0,54,215,253,253,253,253,170,4,0,0,0,0,0,0,0,0,0,0,0,53,253,253,123,0,0,0,0,60,188,253,253,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,99,0,0,0,20,209,253,253,253,253,253,128,4,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,143,0,0,19,189,253,253,253,253,253,219,19,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,234,100,121,229,253,253,253,253,253,176,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,253,253,168,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,150,253,253,253,253,253,253,253,223,141,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,224,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,79,144,253,253,229,102,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,177,211,151,109,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,254,254,254,254,245,198,185,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,254,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,214,254,254,131,67,67,67,169,234,254,234,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,91,7,0,0,0,0,16,187,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,204,10,0,0,0,0,42,152,218,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,101,16,12,7,38,160,242,254,254,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,233,204,254,254,254,254,254,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,255,254,254,254,254,254,254,170,119,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,239,254,254,254,244,202,84,0,115,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,52,52,52,41,0,0,0,32,254,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,184,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,202,240,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,224,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,218,252,253,220,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,252,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,246,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,232,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,242,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,66,67,10,0,0,0,0,0,0,123,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,101,229,246,246,228,226,150,113,63,63,113,222,252,241,47,0,0,0,0,0,0,0,0,0,0,0,0,0,176,255,253,253,241,254,253,253,253,254,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,139,84,47,84,84,84,184,197,234,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,231,19,0,0,0,0,0,0,0,169,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,225,0,0,0,0,0,0,0,26,243,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,226,0,0,0,0,0,0,0,41,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,200,0,0,0,0,0,0,0,166,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,38,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,165,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,127,254,255,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,252,170,246,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,166,243,225,67,0,234,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,124,241,245,149,10,0,0,234,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,200,254,230,46,0,0,0,81,248,167,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,97,240,242,149,32,0,0,0,6,211,217,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,254,250,94,0,0,0,0,0,124,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,193,94,0,0,0,0,0,37,221,166,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,240,22,0,0,0,0,0,8,182,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,73,11,0,0,0,0,0,132,254,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,248,211,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,248,211,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,248,211,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,248,211,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,229,229,229,249,211,55,0,0,0,0,0,0,0,19,71,0,0,0,0,0,0,0,0,0,0,0,112,227,214,254,254,254,192,12,0,0,0,0,0,0,0,174,126,0,0,0,0,0,0,0,0,0,0,110,222,112,173,254,222,215,254,199,49,0,0,0,0,0,118,253,68,0,0,0,0,0,0,0,0,0,2,198,190,196,254,161,26,17,171,254,233,73,0,0,143,208,249,130,1,0,0,0,0,0,0,0,0,0,3,229,254,248,106,2,0,0,4,130,254,252,246,246,253,254,128,7,0,0,0,0,0,0,0,0,0,0,0,91,166,54,0,0,0,0,0,1,117,214,254,234,95,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,128,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,118,199,254,195,118,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,205,253,253,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,195,188,249,216,253,253,242,187,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,15,9,58,32,61,233,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,203,253,185,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,49,5,0,49,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,253,174,46,49,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,253,253,253,186,54,237,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,189,250,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,176,175,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,217,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,54,125,57,54,109,253,253,219,32,0,99,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,75,168,253,217,179,169,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,233,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,133,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,201,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,249,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,243,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,253,243,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,110,253,252,180,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,253,80,0,0,0,0,0,0,27,106,107,71,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,132,0,0,0,0,8,123,245,253,253,255,253,191,14,0,0,0,0,0,0,0,0,0,0,29,239,252,217,0,0,0,0,36,201,252,252,252,252,183,252,252,163,0,0,0,0,0,0,0,0,0,0,182,252,247,91,0,0,0,32,223,253,252,180,126,38,4,186,252,189,0,0,0,0,0,0,0,0,0,0,190,252,189,0,0,0,0,91,252,253,169,7,0,0,0,85,252,189,0,0,0,0,0,0,0,0,0,0,190,252,242,35,0,0,18,239,252,174,11,0,0,0,0,173,252,189,0,0,0,0,0,0,0,0,0,0,85,253,253,104,0,0,9,204,253,212,0,0,0,36,210,253,232,70,0,0,0,0,0,0,0,0,0,0,21,237,252,226,36,0,0,90,252,140,64,137,190,242,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,242,232,188,237,252,233,247,252,252,252,232,117,2,0,0,0,0,0,0,0,0,0,0,0,0,7,170,252,253,252,252,252,252,253,252,252,210,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,42,253,252,252,252,208,147,68,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,29,136,219,254,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,240,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,171,250,253,253,253,176,52,0,0,0,10,15,57,125,4,0,0,0,0,0,0,0,0,0,0,49,123,253,253,253,247,182,154,15,0,0,0,9,160,207,210,253,17,0,0,0,0,0,0,0,0,0,71,238,253,253,174,52,42,0,0,0,0,0,0,30,253,253,253,218,11,0,0,0,0,0,0,0,0,16,242,253,253,174,4,0,0,0,0,0,0,0,61,228,253,253,169,34,0,0,0,0,0,0,0,0,0,18,253,253,253,250,137,64,0,0,0,0,0,3,188,253,253,133,3,0,0,0,0,0,0,0,0,0,0,17,233,253,253,253,253,196,22,0,0,0,0,179,253,251,152,31,0,0,0,0,0,0,0,0,0,0,0,0,14,174,243,253,253,253,245,86,13,69,160,245,226,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,194,247,253,253,253,200,236,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,250,253,253,253,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,253,233,199,95,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,253,253,253,253,253,253,237,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,185,253,251,76,5,148,241,248,253,253,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,251,132,0,0,0,0,60,241,253,253,244,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,230,0,0,0,0,0,0,148,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,230,0,0,0,0,0,70,224,253,206,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,230,0,0,0,32,84,250,244,170,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,249,250,219,219,219,232,253,249,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,146,253,253,253,209,243,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,232,142,102,102,102,102,142,203,203,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,254,253,254,253,254,253,255,233,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,253,252,151,151,91,50,50,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,193,254,253,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,203,253,252,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,193,254,253,244,122,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,253,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,50,50,50,131,253,252,203,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,173,253,152,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,151,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,233,0,0,0,0,0,0,0,0,132,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,41,0,0,0,0,0,0,0,31,232,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,41,0,0,0,0,0,0,21,92,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,232,142,20,0,0,0,0,0,142,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,255,213,132,51,153,152,214,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,253,252,253,252,253,252,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,214,253,203,203,183,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,64,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,191,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,128,0,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,191,255,255,128,64,0,0,0,0,0,0,128,255,255,255,64,64,64,128,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,128,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,0,0,0,0,0,64,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,128,128,128,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,128,128,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,247,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,216,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,136,119,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,88,244,246,53,35,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,88,0,6,200,242,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,254,187,5,0,0,112,251,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,223,12,0,0,0,107,242,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,218,247,89,59,59,60,59,195,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,254,254,254,254,254,254,254,254,254,254,193,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,254,254,254,254,223,176,175,230,254,254,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,95,118,72,19,19,12,0,0,176,254,201,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,255,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,250,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,204,236,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,252,180,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,192,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,245,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,249,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,250,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,128,249,253,134,0,0,20,19,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,118,199,253,253,253,249,244,244,246,246,248,172,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,253,253,253,253,253,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,253,253,253,242,233,253,253,244,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,243,204,176,78,78,78,46,152,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,96,26,10,3,0,0,36,165,253,253,185,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,223,253,253,253,186,141,166,134,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,102,181,249,253,253,253,253,253,253,253,253,250,142,61,0,0,0,0,0,0,0,0,0,0,0,0,44,188,253,253,253,253,253,253,253,253,253,253,253,253,253,205,19,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,251,155,155,96,129,155,155,244,253,253,133,0,0,0,0,0,0,0,0,0,0,0,140,253,253,224,163,83,5,0,0,0,0,0,0,64,240,253,196,0,0,0,0,0,0,0,0,0,0,0,140,253,120,19,0,0,0,0,0,0,0,0,0,0,135,253,240,35,0,0,0,0,0,0,0,0,0,0,9,15,2,0,0,0,0,0,0,0,0,0,0,0,53,239,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,230,253,212,13,0,0,0,0,0,0,0,0,0,0,18,125,125,125,76,21,4,0,0,0,0,12,96,231,253,253,145,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,182,68,68,128,171,215,253,253,253,219,30,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,253,253,253,253,253,253,253,246,92,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,253,253,253,253,253,253,151,30,0,0,0,0,0,0,0,0,0,0,0,0,0,7,46,152,253,253,253,253,253,253,194,149,137,46,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,164,219,137,137,192,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,164,254,254,254,254,254,254,225,46,154,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,208,254,254,217,201,201,201,140,79,185,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,234,254,248,164,20,0,0,0,0,30,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,254,254,189,0,0,0,0,0,0,128,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,23,204,254,254,94,13,0,0,0,0,0,0,148,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,94,1,0,0,0,0,0,0,70,250,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,40,0,0,0,0,8,24,77,200,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,215,160,160,160,160,189,254,254,254,235,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,77,239,254,254,254,254,254,255,254,255,200,134,62,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,44,101,177,177,220,254,236,177,78,6,0,66,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,41,32,0,0,0,0,148,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,245,254,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,255,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,194,185,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,221,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,251,131,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,254,255,158,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,181,254,254,255,254,157,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,218,254,239,254,254,126,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,218,56,225,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,201,254,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,213,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,171,247,201,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,206,254,183,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,141,243,254,118,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,112,252,231,74,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,241,119,28,10,26,27,27,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,178,241,254,206,187,215,247,246,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,254,254,254,254,180,41,178,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,166,236,223,254,193,136,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,254,254,224,125,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,248,253,253,253,253,253,253,253,253,253,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,253,210,142,237,253,253,253,253,253,253,251,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,153,28,12,0,16,19,19,19,19,134,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,2,0,0,0,0,0,0,0,23,197,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,126,229,253,253,219,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,215,226,253,253,253,253,247,215,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,235,253,253,253,253,253,253,253,253,249,199,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,196,148,51,51,51,72,191,253,253,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,58,12,0,0,0,0,0,8,145,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,176,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,247,0,0,0,0,0,0,0,0,0,0,0,0,91,169,109,0,0,0,0,0,0,0,0,0,5,166,253,247,0,0,0,0,0,0,0,0,0,0,0,0,235,253,145,0,0,0,0,0,0,0,0,0,111,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,235,253,32,0,0,0,0,0,0,0,5,44,216,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,235,253,116,14,0,0,0,5,20,20,124,253,253,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,216,143,143,143,169,253,253,253,253,245,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,234,249,253,253,253,253,253,253,253,249,247,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,166,253,253,253,253,253,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,152,152,233,173,172,92,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,123,203,253,252,253,252,253,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,255,253,254,253,254,253,254,253,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,252,253,252,253,252,253,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,234,253,255,253,142,61,0,0,62,223,254,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,130,0,0,0,0,0,81,253,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,163,203,193,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,253,254,253,254,253,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,253,252,253,252,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,253,254,253,254,253,254,253,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,252,50,212,253,252,253,252,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,254,131,72,233,254,253,254,253,255,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,252,253,252,253,252,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,255,253,255,253,255,253,255,233,123,41,163,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,253,252,253,252,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,255,253,255,172,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,213,171,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,253,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,254,213,214,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,252,91,10,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,203,20,31,31,51,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,20,123,233,232,213,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,173,253,254,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,252,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,244,243,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,151,151,40,203,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,105,106,227,253,182,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,113,242,252,253,252,213,192,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,141,252,252,243,238,201,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,160,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,183,252,172,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,213,252,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,210,252,215,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,223,252,252,46,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,217,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,210,255,218,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,249,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,249,252,210,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,90,151,249,252,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,252,253,252,249,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,227,255,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,127,253,243,218,218,248,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,217,253,216,85,0,0,249,150,171,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,246,253,189,20,0,0,0,249,253,240,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,227,251,99,18,0,0,0,0,249,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,213,253,93,0,0,0,0,0,149,253,177,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,94,1,0,0,0,0,91,252,245,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,50,1,0,0,0,8,165,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,226,253,161,42,16,0,151,253,163,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,181,251,253,186,88,236,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,219,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,245,253,253,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,199,226,41,196,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,226,39,0,195,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,245,112,0,12,206,191,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,83,0,90,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,247,0,33,238,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,163,225,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,132,253,234,108,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,22,130,130,215,254,254,254,218,130,27,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,251,235,235,174,235,201,147,241,253,213,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,105,90,0,0,0,0,0,0,34,228,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,174,83,50,50,90,240,235,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,169,253,253,253,253,253,183,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,92,185,185,185,185,244,229,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,230,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,165,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,213,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,228,253,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,8,96,0,0,0,0,0,0,29,142,249,253,214,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,151,160,41,0,0,80,142,241,253,253,215,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,207,246,242,242,250,253,253,253,119,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,129,211,253,253,162,129,32,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,192,253,201,78,115,164,198,218,133,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,207,254,254,254,254,254,254,254,254,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,236,254,220,173,59,51,99,99,99,128,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,236,254,206,23,0,0,0,0,0,0,118,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,85,236,254,222,66,0,0,0,0,0,0,83,248,232,69,0,0,0,0,0,0,0,0,0,0,0,0,56,236,254,205,53,0,0,0,0,0,0,84,247,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,69,0,0,0,0,0,0,45,186,233,109,9,0,0,0,0,0,0,0,0,0,0,0,0,37,246,254,130,4,42,8,0,80,203,182,170,150,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,203,216,249,177,172,247,254,254,254,238,73,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,254,254,254,254,254,254,254,235,215,232,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,49,234,254,254,234,219,219,219,146,91,25,0,21,205,254,96,0,0,0,0,0,0,0,0,0,0,0,0,203,254,235,92,22,0,0,0,0,0,0,0,0,194,254,154,0,0,0,0,0,0,0,0,0,0,0,74,253,254,90,0,0,0,0,0,0,0,0,0,12,200,254,154,0,0,0,0,0,0,0,0,0,0,0,168,254,247,12,0,0,0,0,0,0,11,63,147,220,254,254,154,0,0,0,0,0,0,0,0,0,0,0,174,254,174,0,0,0,0,10,63,133,207,254,254,254,240,172,63,0,0,0,0,0,0,0,0,0,0,0,255,254,103,13,13,34,147,223,249,254,252,241,172,88,17,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,254,254,254,230,83,168,171,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,254,251,170,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,82,82,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,58,0,0,0,0,0,97,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,129,219,9,0,0,0,0,0,104,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,183,0,0,0,0,0,0,156,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,102,0,0,0,0,0,0,119,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,19,0,0,0,0,0,0,156,248,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,175,0,0,0,0,0,0,0,120,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,239,243,57,0,0,0,0,0,0,0,156,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,165,0,0,0,0,0,0,0,0,156,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,244,78,0,0,0,0,0,0,0,0,156,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,157,0,0,0,0,0,0,0,0,0,156,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,76,0,0,0,0,0,0,0,0,0,255,238,18,0,0,0,0,0,0,0,0,0,0,0,0,112,250,207,0,0,0,0,0,0,0,14,73,154,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,145,253,147,79,79,79,79,116,176,175,229,253,253,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,67,250,253,254,253,253,253,253,229,213,241,164,169,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,230,254,207,185,162,155,23,0,41,5,98,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,36,165,165,165,165,197,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,182,186,254,254,254,254,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,109,86,254,254,254,254,254,241,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,90,211,246,254,254,254,254,238,189,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,180,238,254,254,254,254,231,169,99,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,245,254,254,254,254,254,254,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,254,254,254,236,159,219,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,194,171,105,67,4,63,216,254,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,217,254,251,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,68,0,0,0,0,0,0,92,220,254,214,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,134,4,0,0,0,24,162,254,244,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,241,254,143,81,81,114,250,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,255,254,254,254,254,254,116,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,90,242,254,254,254,169,128,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,10,10,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,112,52,51,52,51,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,253,252,243,203,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,203,203,162,102,102,214,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,213,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,142,183,102,102,102,132,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,253,254,253,254,253,254,253,254,213,51,10,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,171,50,50,50,50,71,192,253,252,253,252,253,212,123,0,0,0,0,0,0,0,0,0,0,0,173,233,41,0,0,0,0,0,11,213,254,131,0,82,203,243,254,213,82,0,0,0,0,0,0,0,0,0,253,151,0,0,0,0,0,0,213,252,131,10,0,0,0,40,172,252,243,81,0,0,0,0,0,0,0,0,254,91,0,0,0,21,173,253,224,81,0,0,0,0,0,0,0,123,254,253,0,0,0,0,0,0,0,0,253,172,102,102,203,223,253,171,20,0,0,0,0,0,0,0,0,0,112,111,0,0,0,0,0,0,0,0,234,253,255,253,244,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,151,151,111,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,157,255,195,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,217,253,253,246,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,160,249,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,228,253,253,253,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,198,250,253,253,253,253,253,247,131,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,253,253,253,253,253,253,174,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,238,253,253,159,31,48,56,31,105,235,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,253,253,252,74,0,0,0,0,0,52,208,250,61,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,247,144,100,0,0,0,0,0,0,0,68,253,180,0,0,0,0,0,0,0,0,0,0,0,0,73,246,253,217,0,0,0,0,0,0,0,0,0,68,253,196,0,0,0,0,0,0,0,0,0,0,0,0,187,253,225,40,0,0,0,0,0,0,0,0,0,68,253,196,0,0,0,0,0,0,0,0,0,0,0,113,252,253,122,0,0,0,0,0,0,0,0,0,0,68,253,196,0,0,0,0,0,0,0,0,0,0,0,244,253,197,19,0,0,0,0,0,0,0,0,0,0,104,253,118,0,0,0,0,0,0,0,0,0,0,89,253,253,69,0,0,0,0,0,0,0,0,0,0,76,249,244,6,0,0,0,0,0,0,0,0,0,0,168,253,228,14,0,0,0,0,0,0,0,0,0,56,207,253,136,0,0,0,0,0,0,0,0,0,0,0,197,253,77,0,0,0,0,0,0,0,0,8,131,246,252,177,4,0,0,0,0,0,0,0,0,0,0,0,170,253,159,6,0,0,0,0,0,27,85,200,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,253,168,42,17,115,115,178,232,253,253,248,136,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,253,253,253,253,253,244,160,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,123,245,253,253,253,209,128,89,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,223,202,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,217,254,162,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,223,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,248,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,244,254,141,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,196,255,238,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,250,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,248,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,186,254,231,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,235,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,166,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,248,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,252,229,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,229,253,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,234,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,102,243,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,240,254,254,235,47,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,254,254,225,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,254,254,254,254,254,254,248,117,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,251,254,234,74,75,216,226,231,254,254,216,194,35,0,0,0,0,0,0,0,0,0,0,0,0,0,107,203,254,254,123,0,0,0,32,45,116,116,116,116,21,0,0,0,0,0,0,0,0,0,0,0,0,32,214,254,254,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,254,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,203,254,254,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,222,254,254,254,254,220,78,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,227,231,244,254,254,254,137,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,248,254,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,194,254,254,252,225,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,164,253,254,254,231,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,220,254,254,246,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,217,137,6,47,254,254,254,237,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,211,255,124,17,100,236,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,202,254,254,254,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,187,238,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,175,254,254,183,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,93,169,176,249,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,134,253,254,254,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,210,95,29,8,105,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,186,24,0,0,0,100,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,105,4,0,0,0,5,198,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,247,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,251,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,212,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,54,122,106,6,0,5,120,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,168,216,254,254,254,176,5,149,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,180,254,210,124,74,192,245,207,254,222,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,249,130,5,0,0,56,254,254,221,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,179,0,0,4,83,224,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,132,0,33,163,254,252,248,254,167,0,0,0,10,13,0,0,0,0,0,0,0,0,0,0,0,0,23,246,235,182,249,254,250,141,52,239,245,103,9,53,236,241,0,0,0,0,0,0,0,0,0,0,0,0,0,74,249,254,253,231,46,0,0,121,254,254,254,254,255,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,146,63,0,0,0,0,0,79,208,254,247,132,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,226,253,253,253,251,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,208,253,241,109,192,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,71,0,22,220,189,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,159,2,0,48,226,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,220,217,6,0,0,159,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,213,0,0,2,191,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,220,26,40,162,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,231,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,71,251,253,253,233,141,230,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,148,148,49,0,214,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,191,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,246,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,222,253,248,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,234,230,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,202,255,171,45,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,253,126,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,250,237,82,164,241,253,179,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,141,0,0,140,209,253,185,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,248,253,112,0,0,0,62,245,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,112,0,0,0,0,79,251,237,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,183,251,253,192,57,0,0,0,0,0,132,251,207,2,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,119,0,0,0,0,0,0,0,148,253,136,0,0,0,0,0,0,0,0,0,0,0,0,23,223,253,234,253,86,0,0,0,0,0,0,0,74,253,229,33,0,0,0,0,0,0,0,0,0,0,0,19,215,253,128,126,154,0,0,0,0,0,0,0,9,110,253,135,0,0,0,0,0,0,0,0,0,0,0,72,253,232,33,0,0,0,0,0,0,0,0,0,0,34,232,196,11,0,0,0,0,0,0,0,0,0,7,191,253,182,0,0,0,0,0,0,0,0,0,0,0,0,183,253,134,0,0,0,0,0,0,0,0,0,18,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,183,253,152,0,0,0,0,0,0,0,0,0,18,253,253,65,0,0,0,0,0,0,0,0,0,0,0,25,219,253,37,0,0,0,0,0,0,0,0,0,18,253,253,133,0,0,0,0,0,0,0,0,0,0,0,117,253,244,31,0,0,0,0,0,0,0,0,0,15,235,253,195,31,0,0,0,0,0,0,0,0,0,42,223,253,170,0,0,0,0,0,0,0,0,0,0,0,60,232,253,229,79,34,0,0,0,0,0,0,125,224,253,237,72,0,0,0,0,0,0,0,0,0,0,0,0,116,232,253,253,228,201,127,84,84,128,201,252,253,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,188,253,253,253,253,253,253,253,253,253,181,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,122,193,253,253,253,253,253,145,75,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,126,91,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,192,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,191,254,254,205,86,46,0,0,0,26,58,112,150,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,254,254,254,247,217,217,217,233,254,254,254,244,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,246,197,254,254,254,254,217,168,146,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,28,252,254,230,3,9,9,9,9,5,0,101,254,239,171,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,250,60,0,0,0,0,0,0,183,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,254,139,0,0,0,0,0,0,236,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,229,254,254,200,4,0,0,0,0,164,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,254,162,0,0,0,0,12,239,236,48,0,0,0,10,15,10,0,0,0,0,0,0,0,0,0,29,254,254,254,72,0,0,0,0,44,254,241,133,27,71,152,226,254,224,0,0,0,0,0,0,0,0,0,14,218,254,225,33,0,0,0,0,112,254,254,254,242,253,254,254,216,174,0,0,0,0,0,0,0,0,0,0,39,53,28,0,3,2,4,10,189,254,254,254,254,231,146,53,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,144,183,196,254,254,254,254,197,119,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,240,254,254,254,254,254,254,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,153,153,146,57,57,143,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,125,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,188,215,254,254,174,131,40,154,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,249,253,253,253,253,253,253,236,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,253,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,205,56,133,95,175,246,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,242,42,0,0,0,0,92,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,197,135,129,105,0,72,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,220,220,19,191,253,253,235,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,165,243,253,248,214,203,253,214,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,99,135,158,158,158,126,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,246,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,220,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,239,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,74,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,255,255,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,160,240,249,204,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,102,254,223,57,0,201,232,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,239,40,0,0,117,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,245,49,0,0,0,77,254,199,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,140,0,0,0,0,177,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,248,3,0,0,0,0,130,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,235,164,0,0,0,0,5,165,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,54,0,0,0,0,109,254,213,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,59,0,0,59,100,248,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,221,240,209,159,229,254,254,189,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,188,254,254,223,244,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,16,16,84,239,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,216,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,242,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,157,247,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,13,13,88,133,133,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,249,254,253,253,253,253,171,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,245,253,254,232,141,96,96,199,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,242,253,230,142,36,0,0,0,154,213,61,158,89,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,253,161,0,0,0,0,0,136,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,135,3,0,0,0,49,102,239,253,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,64,0,0,49,160,238,253,253,253,253,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,186,155,219,238,253,253,253,179,116,36,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,233,253,253,253,254,253,253,180,58,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,229,253,253,253,249,132,57,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,71,254,254,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,69,253,253,245,250,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,171,253,253,253,168,143,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,127,253,253,242,170,72,128,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,242,89,0,24,228,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,243,89,0,56,114,245,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,246,206,206,242,253,253,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,225,156,53,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,144,212,232,144,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,66,191,141,66,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,107,216,252,252,252,253,252,252,252,157,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,244,168,80,56,56,56,56,193,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,252,151,25,0,0,0,0,0,0,13,40,165,243,75,0,0,0,0,0,0,0,0,0,0,0,0,0,108,206,13,0,0,0,0,0,0,0,0,0,7,204,153,0,0,0,0,0,0,0,0,0,0,0,0,0,19,56,0,0,0,0,0,0,0,0,0,0,82,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,214,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,254,247,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,82,234,252,209,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,117,252,252,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,150,237,241,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,253,241,163,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,216,252,252,65,57,82,119,69,57,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,123,246,253,252,252,203,253,252,252,252,253,215,159,47,0,0,0,0,0,0,0,0,0,0,0,0,13,194,252,252,253,252,252,252,190,139,139,139,140,165,252,240,151,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,255,247,137,13,0,0,0,0,0,0,0,151,242,178,44,0,0,0,0,0,0,0,0,0,253,252,252,252,184,65,0,0,0,0,0,0,0,0,0,0,60,234,187,7,0,0,0,0,0,0,0,0,253,252,224,118,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,153,0,0,0,0,0,0,0,0,153,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,154,71,113,241,252,222,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,253,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,252,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,206,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,190,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,73,73,125,252,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,252,253,231,181,181,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,252,252,252,253,252,252,252,207,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,253,253,191,145,176,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,252,252,253,252,220,15,0,10,56,179,180,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,226,252,252,253,179,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,211,252,108,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,158,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,97,0,0,0,0,0,0,0,0,0,49,21,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,135,2,0,0,0,0,0,0,32,137,250,252,249,128,29,0,0,0,0,0,0,0,0,0,0,207,254,248,49,0,0,0,0,0,2,119,237,254,254,254,254,254,222,30,0,0,0,0,0,0,0,0,22,232,254,163,0,0,0,0,0,0,117,254,254,250,140,86,169,254,254,62,0,0,0,0,0,0,0,0,120,254,254,101,0,0,0,0,0,0,206,254,245,85,0,0,2,180,254,211,0,0,0,0,0,0,0,0,238,254,254,57,0,0,0,0,0,4,210,254,130,0,0,0,0,68,254,254,0,0,0,0,0,0,0,0,254,254,224,3,0,0,0,0,0,15,220,254,115,0,0,0,0,68,254,254,0,0,0,0,0,0,0,0,255,254,162,0,0,0,0,0,0,0,206,254,115,0,0,0,1,139,254,235,0,0,0,0,0,0,0,0,254,254,127,0,0,0,0,0,0,0,206,254,158,3,0,0,47,254,254,116,0,0,0,0,0,0,0,0,254,254,162,0,0,0,0,0,0,0,141,254,254,52,0,12,183,254,243,43,0,0,0,0,0,0,0,0,238,254,162,0,0,0,0,0,0,0,22,254,254,122,13,112,254,254,79,0,0,0,0,0,0,0,0,0,158,254,235,7,0,0,0,0,0,0,13,223,254,252,180,254,253,156,6,0,0,0,0,0,0,0,0,0,78,244,254,128,0,0,0,0,0,0,43,231,226,254,254,243,141,0,0,0,0,0,0,0,0,0,0,0,0,155,254,248,104,11,0,0,0,0,17,120,238,254,243,74,0,0,0,0,0,0,0,0,0,0,0,0,0,7,200,254,254,213,105,94,73,120,221,254,254,248,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,164,254,254,254,254,254,254,254,254,217,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,74,156,227,254,254,234,178,59,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,62,62,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,237,203,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,254,254,223,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,172,254,254,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,254,254,123,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,245,254,254,210,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,187,254,254,254,189,160,160,160,160,146,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,255,254,255,254,254,255,240,78,20,9,0,0,0,0,0,0,0,0,0,0,0,0,22,195,254,254,254,254,254,254,254,254,254,254,254,209,36,8,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,254,254,254,255,181,159,159,164,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,102,249,254,254,254,191,123,23,6,0,0,2,158,254,254,53,0,0,0,0,0,0,0,0,0,0,0,36,253,254,254,249,127,3,0,0,0,0,6,134,253,254,251,50,0,0,0,0,0,0,0,0,0,0,0,36,254,254,254,160,2,0,0,0,0,26,185,254,255,249,112,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,254,254,169,53,8,48,139,240,254,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,254,254,253,129,196,254,254,254,254,251,120,25,0,0,0,0,0,0,0,0,0,0,0,0,0,8,133,233,254,254,254,254,254,254,254,254,217,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,236,254,254,254,254,254,224,110,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,135,249,254,179,135,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,18,46,136,136,244,255,241,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,94,163,253,253,253,253,238,218,204,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,253,237,200,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,246,253,247,108,65,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,250,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,249,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,231,213,213,123,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,253,190,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,72,124,209,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,219,253,206,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,226,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,209,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,139,190,235,235,247,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,253,192,144,222,254,241,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,214,11,7,207,254,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,255,109,0,167,254,255,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,223,126,249,253,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,162,254,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,239,253,232,151,254,249,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,72,16,181,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,228,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,254,56,0,0,0,0,0,8,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,207,253,178,3,0,0,0,0,0,82,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,246,85,0,0,0,0,0,24,213,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,230,253,98,0,0,0,0,0,0,152,253,202,0,0,0,0,0,0,0,0,0,0,16,86,130,163,73,209,254,254,72,0,0,0,0,0,99,254,243,71,0,0,0,0,0,0,0,0,0,16,129,253,253,253,254,253,253,240,60,20,0,0,4,120,247,253,164,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,254,253,253,253,253,231,217,217,220,253,254,212,31,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,254,236,235,242,253,254,253,253,253,246,151,23,0,0,0,0,0,0,0,0,0,0,0,21,156,162,227,162,105,5,0,31,72,163,194,162,155,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,165,200,254,255,203,149,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,247,226,191,130,158,191,246,252,228,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,151,15,0,0,0,0,39,164,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,5,130,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,239,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,248,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,240,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,229,243,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,196,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,248,92,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,195,250,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,247,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,152,0,0,0,0,0,0,0,0,0,0,15,113,203,0,0,0,0,0,0,0,0,0,0,0,0,189,221,5,0,0,0,0,0,0,0,0,0,34,190,245,85,0,0,0,0,0,0,0,0,0,0,0,32,241,127,0,0,0,0,0,0,5,47,129,189,240,181,74,0,0,0,0,0,0,0,0,0,0,0,0,63,254,90,0,1,27,27,79,132,211,254,244,167,83,22,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,245,192,194,254,254,254,242,166,82,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,88,172,219,164,164,82,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,226,225,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,255,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,255,244,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,254,201,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,135,220,255,226,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,69,218,254,254,254,254,214,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,254,254,221,193,241,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,227,254,254,153,5,0,88,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,206,113,5,0,0,2,171,219,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,248,239,8,4,0,0,0,0,125,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,73,254,156,0,0,0,0,0,59,229,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,187,36,0,73,250,0,0,0,0,0,0,150,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,198,206,14,73,250,0,0,0,0,0,25,116,174,254,168,4,0,0,0,0,0,0,0,0,0,0,0,0,104,132,17,39,248,50,0,0,0,11,91,201,239,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,233,51,0,62,215,254,254,254,194,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,242,226,249,254,254,254,189,10,211,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,52,210,254,254,254,230,148,33,0,156,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,230,119,8,0,0,2,206,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,225,12,0,0,0,0,91,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,239,213,0,0,0,0,3,157,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,213,0,0,0,2,138,254,192,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,239,222,9,15,57,140,254,236,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,234,236,254,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,143,254,254,229,144,35,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,186,254,255,254,254,254,214,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,130,240,254,254,237,225,225,230,254,254,222,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,247,131,29,0,0,12,144,254,254,225,33,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,200,57,0,0,0,0,142,195,254,254,231,70,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,236,23,0,0,0,0,17,237,254,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,254,72,0,0,0,0,0,115,247,254,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,254,72,0,0,0,0,4,83,246,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,86,1,0,0,30,159,254,254,254,254,229,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,160,126,178,221,254,254,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,254,254,254,254,254,227,81,236,254,240,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,80,143,143,143,89,27,69,250,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,228,254,251,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,92,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,235,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,208,254,248,124,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,233,254,229,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,29,29,29,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,57,57,157,179,252,252,252,253,252,187,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,253,252,252,252,253,252,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,252,252,253,252,252,202,203,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,225,187,113,51,0,0,13,154,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,95,206,253,252,208,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,85,147,234,252,252,253,196,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,114,188,246,252,253,252,252,151,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,254,253,253,253,254,172,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,247,196,215,227,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,56,50,0,19,31,56,149,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,13,57,7,0,0,0,0,0,0,0,0,0,82,252,139,0,0,0,0,0,0,0,0,0,0,0,0,48,172,252,78,0,0,0,0,0,0,0,38,98,234,224,43,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,178,114,113,113,113,114,113,150,237,253,252,205,13,0,0,0,0,0,0,0,0,0,0,0,0,117,216,253,253,255,253,253,253,254,253,253,253,254,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,10,109,215,252,253,252,252,252,253,252,252,202,197,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,56,56,56,56,106,168,93,56,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,43,43,254,252,252,252,252,254,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,168,250,250,252,250,250,250,250,252,250,250,250,250,71,0,0,0,0,0,0,0,0,0,0,0,0,22,168,250,250,250,252,250,250,250,250,252,250,250,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,43,250,250,250,250,252,194,83,83,83,83,83,167,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,43,250,250,250,250,41,27,0,0,0,0,71,230,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,71,210,210,34,0,0,0,0,0,43,113,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,250,250,250,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,127,230,252,250,250,165,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,168,210,250,250,252,250,250,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,250,250,250,250,252,250,250,223,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,210,210,210,210,255,252,252,252,252,219,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,166,208,250,250,252,194,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,125,125,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,209,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,83,0,0,0,0,0,0,0,0,0,0,0,22,43,43,0,0,0,0,0,0,0,22,43,43,255,252,252,83,0,0,0,0,0,0,0,0,0,0,0,84,223,250,86,85,85,85,85,86,85,168,250,250,252,250,208,55,0,0,0,0,0,0,0,0,0,0,0,0,84,230,252,250,250,250,250,252,250,250,250,250,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,250,250,250,250,252,250,250,250,250,224,83,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,111,250,250,250,252,250,250,250,74,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,219,161,112,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,254,254,232,226,209,167,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,70,196,245,246,254,254,254,242,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,243,254,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,104,249,200,78,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,234,254,209,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,147,249,197,114,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,113,243,223,180,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,123,225,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,254,254,255,209,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,122,122,122,201,254,254,254,227,177,128,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,168,249,254,254,254,254,237,180,62,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,85,144,217,254,254,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,206,238,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,254,120,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,134,237,254,157,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,92,213,254,251,197,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,172,254,237,211,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127,227,208,125,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,95,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,186,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,251,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,227,255,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,65,210,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,243,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,206,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,215,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,193,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,245,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,208,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,206,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,235,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,241,231,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,210,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,254,221,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,207,254,214,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,221,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,161,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,222,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,243,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,111,254,246,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,167,255,249,138,120,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,160,244,181,182,139,110,213,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,254,253,254,253,254,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,255,254,254,254,254,254,254,254,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,67,36,57,67,233,254,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,233,253,238,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,234,254,187,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,248,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,253,228,134,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,202,254,254,191,213,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,57,181,243,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,166,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,234,254,249,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,197,248,254,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,120,244,254,254,218,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,186,228,254,253,243,98,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,234,181,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,191,37,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,195,231,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,213,254,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,169,222,227,138,249,146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,129,244,222,108,30,64,232,233,77,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,254,192,20,0,0,0,0,201,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,206,254,184,9,0,0,0,0,0,69,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,187,254,175,29,0,0,0,0,0,0,96,244,23,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,254,175,10,0,0,0,0,0,0,44,231,126,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,250,139,10,0,0,0,0,0,0,45,230,206,4,0,0,0,0,0,0,0,0,0,0,0,0,6,126,254,193,18,0,0,0,0,0,0,21,171,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,85,244,242,42,0,0,0,0,0,0,0,193,251,110,2,0,0,0,0,0,0,0,0,0,0,0,0,3,186,254,114,0,0,0,0,0,0,0,111,251,158,8,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,207,29,0,0,0,0,0,0,111,251,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,197,251,52,0,0,0,0,0,11,174,251,155,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,115,0,0,0,0,0,52,208,242,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,222,247,29,0,0,0,0,95,236,242,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,140,0,0,0,56,203,251,219,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,75,5,110,222,252,245,100,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,190,224,254,247,165,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,254,221,110,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,125,90,36,125,125,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,142,224,255,254,251,226,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,237,254,254,254,254,171,143,143,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,254,191,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,238,254,254,228,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,228,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,217,254,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,58,205,254,254,207,197,197,197,197,197,110,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,254,254,254,254,254,254,254,246,177,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,186,247,238,202,202,202,202,202,237,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,54,0,0,0,0,0,52,101,255,249,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,255,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,16,0,34,218,255,233,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,228,144,218,254,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,234,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,77,192,137,54,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,254,254,177,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,232,254,254,254,254,254,224,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,243,254,254,254,254,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,250,47,122,228,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,143,0,0,178,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,199,11,0,0,68,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,189,13,0,0,4,185,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,77,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,254,232,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,195,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,184,254,232,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,223,254,254,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,164,254,254,252,132,0,10,5,0,91,148,148,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,157,48,76,193,180,166,253,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,126,237,254,254,254,222,254,254,254,254,254,254,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,254,254,254,254,254,254,254,254,239,210,60,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,254,254,254,254,254,224,153,246,202,153,70,17,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,254,254,196,135,61,101,95,0,16,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,253,253,253,253,255,242,116,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,211,252,252,252,252,252,252,229,229,242,252,252,175,104,0,0,0,0,0,0,0,0,0,0,0,0,2,160,252,245,216,124,205,252,184,5,0,55,96,176,242,225,157,22,0,0,0,0,0,0,0,0,0,0,13,252,245,108,0,0,69,245,143,0,0,0,0,0,60,189,252,134,5,0,0,0,0,0,0,0,0,0,99,252,216,0,0,0,0,217,143,0,0,0,0,0,0,21,189,252,110,0,0,0,0,0,0,0,0,0,167,252,124,0,0,0,0,155,45,0,0,0,0,0,0,0,20,225,227,9,0,0,0,0,0,0,0,0,253,252,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,110,0,0,0,0,0,0,0,0,253,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,177,0,0,0,0,0,0,0,0,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,0,0,0,0,0,0,0,0,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,0,0,0,0,0,0,0,0,255,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,132,0,0,0,0,0,0,0,0,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,121,0,0,0,0,0,0,0,0,236,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,236,10,0,0,0,0,0,0,0,0,110,252,223,16,0,0,0,0,0,0,0,0,0,0,0,14,174,252,121,0,0,0,0,0,0,0,0,0,4,175,252,170,0,0,0,0,0,0,0,0,0,0,0,102,252,154,7,0,0,0,0,0,0,0,0,0,0,111,252,241,90,0,0,0,0,0,0,0,0,49,159,238,228,25,0,0,0,0,0,0,0,0,0,0,0,5,134,252,241,89,0,0,0,0,0,49,102,237,252,193,32,0,0,0,0,0,0,0,0,0,0,0,0,0,6,134,252,242,217,171,97,97,218,237,252,252,154,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,227,252,252,252,252,253,252,167,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,131,131,131,131,132,63,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,228,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,198,187,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,158,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,242,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,226,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,154,0,0,0,0,21,113,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,244,112,0,0,20,96,232,254,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,112,0,93,232,254,254,239,223,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,102,111,248,254,250,171,28,6,185,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,247,89,190,254,250,76,0,0,0,146,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,239,205,254,250,76,0,0,0,10,170,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,195,254,171,0,0,0,3,123,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,153,33,0,0,7,130,254,234,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,150,5,0,51,171,254,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,214,177,242,255,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,202,254,212,98,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,179,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,235,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,225,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,13,124,192,134,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,180,109,110,180,169,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,171,9,0,0,10,97,115,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,90,205,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,52,0,0,0,0,0,0,0,0,14,203,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,194,165,0,0,0,0,0,0,0,0,0,183,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,193,0,0,0,0,0,0,0,0,0,183,241,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,193,0,0,0,0,0,0,0,0,19,210,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,0,0,0,0,0,0,0,0,49,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,190,0,0,0,0,0,0,71,139,246,254,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,221,35,8,64,76,193,249,226,206,197,103,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,249,235,200,220,230,58,47,4,127,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,18,47,0,0,0,0,32,242,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,255,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,199,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,132,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,230,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,197,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,178,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,222,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,171,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,215,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,228,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,226,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,244,222,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,241,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,194,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,125,25,0,0,90,125,211,255,241,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,235,253,249,248,248,252,253,253,253,253,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,253,253,253,253,245,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,158,253,253,253,84,38,210,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,207,253,253,141,193,253,253,243,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,156,253,253,253,253,194,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,195,253,253,238,82,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,244,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,244,253,253,216,253,220,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,245,253,201,88,28,199,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,245,253,235,40,0,0,183,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,253,236,72,0,0,0,183,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,145,0,0,0,0,183,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,247,253,192,13,0,0,0,0,183,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,78,0,0,0,0,38,228,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,193,12,0,0,0,7,146,253,225,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,155,0,0,0,16,147,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,211,143,143,143,231,253,250,146,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,253,253,253,253,214,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,240,253,253,253,149,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,253,252,253,192,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,253,254,213,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,253,212,50,10,131,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,233,123,0,0,0,152,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,233,50,0,0,0,0,233,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,163,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,163,243,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,132,51,173,253,254,253,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,253,252,253,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,254,253,254,253,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,151,151,172,252,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,212,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,245,254,254,254,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,245,253,253,253,254,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,253,254,223,137,71,203,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,228,40,0,0,70,253,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,241,254,60,0,0,0,51,248,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,48,9,0,0,0,55,243,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,237,253,242,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,254,253,246,184,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,254,254,254,254,254,211,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,254,210,206,206,207,249,253,245,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,113,46,4,0,0,0,59,190,253,216,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,249,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,128,99,0,0,0,64,187,254,255,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,249,230,230,231,251,253,253,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,253,253,253,254,253,234,128,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,220,253,177,160,69,69,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,255,253,253,159,138,24,24,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,185,153,232,252,252,252,252,253,252,154,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,69,152,208,252,253,252,252,227,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,45,169,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,118,191,255,253,253,234,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,110,161,186,252,252,253,223,123,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,70,236,253,252,252,252,189,122,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,188,252,252,253,235,128,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,252,252,75,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,146,249,253,181,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,253,236,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,252,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,181,255,253,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,47,174,252,253,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,70,70,112,184,191,252,252,252,189,122,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,252,252,253,252,185,66,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,200,137,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,190,251,239,234,159,224,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,238,173,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,240,4,0,0,0,0,0,0,20,179,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,239,0,0,0,0,0,0,3,175,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,239,0,0,0,0,0,0,118,236,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,239,0,0,0,0,0,66,221,31,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,121,0,0,0,54,217,117,0,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,242,120,80,154,240,80,3,20,243,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,144,159,134,25,0,0,69,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,227,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,238,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,245,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,5,0,0,0,0,0,66,250,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,194,204,117,0,0,0,0,100,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,209,0,0,0,0,105,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,190,0,0,0,0,210,253,253,199,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,193,253,253,99,0,0,0,21,223,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,249,56,0,0,0,67,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,254,254,245,34,9,0,0,178,254,254,254,55,15,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,253,253,197,177,178,230,253,253,253,193,210,69,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,253,253,253,253,254,253,253,253,253,253,201,17,0,0,0,0,0,0,0,0,0,0,0,0,52,121,121,159,231,235,253,253,254,253,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,88,136,254,253,253,249,198,112,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,255,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,210,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,150,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,217,253,252,241,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,252,253,241,102,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,191,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,252,189,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,241,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,232,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,169,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,145,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,127,128,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,223,250,252,223,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,224,250,250,250,252,250,125,0,0,0,0,0,141,34,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,254,252,126,0,0,0,15,148,252,252,219,43,21,0,0,0,0,0,0,0,0,0,0,113,250,250,250,250,167,166,83,0,0,0,85,250,250,250,252,250,166,28,0,0,0,0,0,0,0,0,0,252,250,250,250,144,0,0,0,0,0,0,42,188,250,250,252,250,250,167,21,0,0,0,0,0,0,0,0,252,250,250,250,41,0,0,0,0,0,0,0,127,250,250,252,250,250,250,41,0,0,0,0,0,0,0,0,252,250,250,250,217,0,0,0,0,0,0,0,127,250,250,252,250,250,250,217,0,0,0,0,0,0,0,0,219,252,252,252,252,219,43,43,14,0,0,0,0,170,252,255,252,252,252,252,0,0,0,0,0,0,0,0,43,250,250,250,250,252,250,250,138,85,71,29,85,196,250,252,250,250,250,250,0,0,0,0,0,0,0,0,21,166,250,250,250,252,250,250,250,250,231,168,250,250,250,252,250,250,250,144,0,0,0,0,0,0,0,0,0,28,167,250,250,252,250,250,250,250,252,250,250,250,250,252,250,250,250,41,0,0,0,0,0,0,0,0,0,0,21,41,41,252,250,250,250,250,252,250,250,250,250,217,41,41,41,7,0,0,0,0,0,0,0,0,0,0,0,0,0,36,210,210,70,177,219,238,210,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,162,197,232,233,232,232,232,144,110,6,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,126,232,252,252,252,227,226,252,236,242,253,189,41,0,0,0,0,0,0,0,0,0,0,0,80,158,0,177,253,252,244,103,59,25,24,86,31,79,147,226,214,0,0,0,0,0,0,0,0,0,0,0,191,109,64,253,247,131,9,0,0,0,0,0,0,0,0,173,253,227,25,0,0,0,0,0,0,0,0,32,173,5,99,252,97,0,0,0,0,0,0,0,0,0,0,57,246,252,200,0,0,0,0,0,0,0,0,192,246,63,111,231,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,0,0,0,0,0,0,0,0,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,0,0,0,0,0,0,0,0,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,0,0,0,0,0,0,0,0,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,253,236,0,0,0,0,0,0,0,0,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,112,0,0,0,0,0,0,0,0,253,252,189,42,0,0,0,0,0,0,0,0,0,0,0,0,137,252,221,21,0,0,0,0,0,0,0,0,102,237,252,170,37,0,0,0,0,0,0,0,0,0,0,64,206,247,141,0,0,0,0,0,0,0,0,0,0,67,244,252,235,132,0,0,0,0,0,0,0,27,150,253,252,99,0,0,0,0,0,0,0,0,0,0,0,0,54,142,253,255,253,200,148,148,148,148,148,218,253,230,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,63,168,231,252,252,252,253,252,252,252,182,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,21,21,21,127,126,118,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,97,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,213,221,253,252,213,157,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,56,233,253,253,253,253,253,253,233,85,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,253,253,253,253,253,253,253,253,253,253,217,13,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,253,253,248,202,103,103,180,239,239,251,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,93,0,0,0,0,0,0,149,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,188,251,253,196,84,1,0,0,0,0,0,0,2,201,253,253,114,0,0,0,0,0,0,0,0,0,0,117,247,253,248,80,0,0,0,0,0,0,0,0,0,151,253,253,239,0,0,0,0,0,0,0,0,0,79,246,253,244,100,0,0,0,0,0,0,0,0,0,0,100,253,253,253,0,0,0,0,0,0,0,0,0,97,253,253,192,0,0,0,0,0,0,0,0,0,20,94,239,253,253,253,0,0,0,0,0,0,0,0,0,186,253,202,29,0,0,0,0,0,0,0,1,28,194,253,253,253,253,163,0,0,0,0,0,0,0,0,71,245,253,61,0,0,0,0,0,0,0,20,147,253,253,253,253,248,160,50,0,0,0,0,0,0,0,0,254,253,216,31,0,0,0,0,0,0,92,208,253,253,253,253,155,39,0,0,0,0,0,0,0,0,0,0,254,253,122,0,0,0,0,0,0,66,250,253,253,253,253,119,3,0,0,0,0,0,0,0,0,0,0,0,254,253,184,20,57,91,220,220,97,204,253,253,251,170,40,5,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,212,236,253,253,253,253,253,253,213,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,250,253,253,253,253,253,235,212,174,75,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,96,96,96,96,96,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,95,0,0,0,0,0,0,255,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,213,0,0,0,0,4,132,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,213,0,0,0,0,107,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,253,146,0,0,0,0,189,253,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,154,5,0,0,0,31,241,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,231,255,211,0,0,0,0,0,176,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,221,253,241,88,0,0,0,0,2,181,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,68,0,0,0,0,0,20,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,235,215,0,0,0,0,0,0,126,253,253,155,0,4,12,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,196,195,128,83,76,99,229,253,253,230,196,110,18,0,0,0,0,0,0,0,0,0,0,0,0,0,16,218,255,254,254,254,254,255,254,254,254,231,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,196,233,239,253,253,254,253,253,174,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,78,78,186,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,165,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,255,219,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,222,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,255,254,240,101,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,250,253,253,253,253,253,206,191,47,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,253,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,215,253,253,253,253,253,253,253,253,253,253,251,145,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,253,253,253,253,253,253,253,253,253,253,253,253,246,23,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,240,115,237,253,253,253,253,204,25,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,178,0,55,225,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,128,252,253,253,253,253,253,84,21,0,0,169,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,77,250,253,253,253,237,123,11,0,0,0,90,253,253,253,253,227,52,0,0,0,0,0,0,0,0,0,15,179,253,253,253,253,222,0,0,0,0,0,16,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,61,253,253,253,253,245,108,0,0,0,0,0,30,253,253,253,253,215,30,0,0,0,0,0,0,0,0,50,226,253,253,253,253,94,0,0,0,0,0,0,169,253,253,253,253,199,0,0,0,0,0,0,0,0,0,101,253,253,253,253,253,14,0,0,0,0,0,20,192,253,253,253,253,199,0,0,0,0,0,0,0,0,0,110,253,253,253,253,160,5,0,0,0,0,8,174,253,253,253,253,253,199,0,0,0,0,0,0,0,0,0,255,253,253,253,253,115,0,0,0,0,0,124,253,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,217,253,253,253,253,148,62,62,62,203,216,234,253,253,253,253,251,126,7,0,0,0,0,0,0,0,0,0,101,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,241,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,253,253,253,253,253,253,253,253,253,253,253,227,53,0,0,0,0,0,0,0,0,0,0,0,18,177,253,253,253,253,253,253,253,253,253,253,253,217,128,34,0,0,0,0,0,0,0,0,0,0,0,0,0,19,99,249,253,253,253,253,173,99,99,99,99,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,137,254,254,254,156,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,125,253,253,253,249,246,253,191,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,173,253,253,252,127,49,25,209,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,76,0,0,0,39,253,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,190,16,0,0,0,26,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,223,186,12,0,0,0,0,26,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,233,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,248,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,94,159,159,159,119,61,60,189,254,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,250,253,253,253,253,253,253,253,253,252,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,18,196,253,253,253,187,183,125,127,253,253,253,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,253,229,57,2,0,0,104,254,253,253,254,244,80,7,0,0,0,0,0,0,0,0,0,0,0,8,228,253,253,93,0,0,0,99,239,253,249,108,201,253,253,96,0,0,0,0,0,0,0,0,0,0,0,11,253,254,184,2,12,51,172,253,253,231,88,0,20,200,254,211,5,0,0,0,0,0,0,0,0,0,0,11,253,253,235,150,211,253,253,253,214,24,0,0,0,21,156,199,6,0,0,0,0,0,0,0,0,0,0,1,150,254,253,253,253,253,254,150,25,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,14,140,222,253,253,143,54,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,226,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,254,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,216,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,245,247,84,0,0,0,0,45,70,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,145,0,0,9,89,172,245,253,243,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,248,58,0,41,174,253,253,254,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,139,0,34,229,253,253,253,254,168,236,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,115,15,195,254,254,247,118,0,0,149,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,115,125,253,254,160,21,0,0,0,166,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,177,228,253,188,21,0,0,15,157,245,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,253,253,219,25,0,9,93,229,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,254,254,152,162,212,254,254,254,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,253,253,253,254,253,253,253,254,194,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,253,253,254,248,230,196,46,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,152,236,219,161,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,135,216,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,217,212,244,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,235,219,162,5,54,238,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,239,254,204,21,0,0,146,246,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,181,125,0,0,0,91,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,186,7,11,0,0,0,11,220,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,117,0,0,0,0,0,0,195,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,224,24,0,0,0,0,0,0,195,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,238,182,0,0,0,0,0,0,5,206,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,112,0,0,0,0,0,0,27,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,112,0,0,0,0,0,0,99,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,42,0,0,0,0,0,0,113,244,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,206,6,0,0,0,0,0,4,188,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,194,0,0,0,0,0,0,99,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,194,0,0,0,0,0,23,205,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,194,0,0,0,0,9,160,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,218,10,0,0,22,176,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,61,2,55,206,253,134,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,237,193,254,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,246,254,209,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,255,228,141,91,29,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,197,252,253,252,252,252,253,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,168,187,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,243,252,102,0,7,28,128,140,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,240,81,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,196,0,0,0,0,0,76,147,209,209,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,246,187,113,63,138,225,249,253,252,252,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,253,253,253,254,253,253,253,163,144,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,197,196,215,252,253,240,158,84,0,19,215,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,56,56,43,0,0,0,0,197,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,0,0,0,0,0,0,95,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,243,25,0,0,0,0,126,243,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,153,29,54,141,191,254,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,253,252,252,252,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,252,252,252,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,128,203,227,139,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,66,126,184,189,154,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,47,196,253,254,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,173,253,253,253,251,220,244,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,253,253,237,91,30,10,136,253,134,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,254,253,198,22,0,0,0,128,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,255,197,15,0,0,0,27,239,254,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,254,87,22,32,57,117,218,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,254,253,238,253,253,254,253,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,180,254,253,253,253,253,230,179,137,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,21,105,173,105,70,10,0,73,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,207,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,195,254,250,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,238,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,125,125,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,119,119,142,249,249,250,255,254,254,181,0,0,0,0,0,0,0,0,0,0,0,47,112,226,131,152,243,246,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,106,166,236,244,254,254,254,254,254,254,254,254,181,149,149,149,212,254,254,254,0,0,0,0,0,0,0,0,205,254,254,254,254,254,254,173,156,55,25,25,8,0,0,11,191,254,254,136,0,0,0,0,0,0,0,0,16,160,162,42,32,32,32,6,0,0,0,0,0,0,0,74,254,254,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,240,254,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,254,250,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,93,236,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,255,249,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,235,254,254,204,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,235,254,254,204,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,235,254,255,203,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,235,254,254,203,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,236,254,254,204,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,237,254,248,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,239,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,207,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,248,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,69,0,0,0,0,0,0,0,226,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,242,98,0,0,0,0,0,0,226,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,244,252,198,0,0,0,0,0,0,226,252,238,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,252,198,0,0,0,0,0,0,226,252,238,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,234,252,198,0,0,0,0,0,0,226,252,231,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,198,0,0,0,0,0,0,226,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,230,126,14,14,14,8,6,228,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,197,183,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,253,253,253,253,253,255,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,13,104,145,207,252,253,252,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,26,26,26,110,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,244,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,53,0,0,0,0,0,0,0,208,253,255,196,0,0,0,0,0,0,0,0,0,0,0,0,9,197,252,252,0,0,0,0,0,0,0,45,236,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,168,0,0,0,0,0,0,0,153,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,252,189,0,0,0,0,0,0,17,209,252,252,199,42,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,189,0,0,0,0,0,0,99,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,11,0,0,0,0,13,212,253,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,17,188,252,252,203,88,47,47,26,118,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,252,253,252,252,252,221,253,252,252,252,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,202,253,252,252,252,252,253,252,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,137,168,252,252,253,252,252,64,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,253,247,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,235,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,174,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,128,128,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,128,0,64,64,128,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,198,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,15,0,0,0,0,0,0,73,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,167,217,15,0,0,0,0,7,192,243,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,165,253,235,19,0,0,0,0,49,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,253,156,0,0,0,0,0,135,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,211,229,54,0,0,0,0,11,194,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,128,0,0,0,0,0,78,253,233,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,243,225,30,0,0,0,0,0,157,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,128,0,0,0,0,0,11,199,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,250,224,32,0,0,0,0,0,83,253,207,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,196,3,0,0,0,0,7,203,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,245,253,171,47,4,0,0,13,253,253,135,6,118,145,21,0,0,0,0,0,0,0,0,0,0,0,0,0,145,243,253,253,171,157,100,106,253,253,189,180,253,200,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,176,244,253,253,253,254,253,253,253,253,216,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,176,193,193,254,253,216,193,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,215,215,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,232,254,225,249,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,182,14,66,67,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,225,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,255,228,214,214,214,214,177,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,242,202,202,202,211,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,52,39,0,0,0,9,165,235,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,232,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,9,0,0,42,217,254,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,78,7,58,241,254,171,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,211,222,254,254,126,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,156,254,165,46,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,218,158,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,241,247,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,238,251,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,67,0,0,0,0,0,0,0,0,20,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,67,0,0,0,0,0,8,85,197,232,242,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,67,0,0,0,1,48,193,254,253,220,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,67,0,0,0,133,254,249,172,58,128,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,179,22,0,89,254,246,80,0,0,244,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,254,180,1,159,254,204,0,0,18,248,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,244,254,188,252,216,19,0,1,140,254,213,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,230,106,27,95,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,92,244,254,254,254,254,254,250,100,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,96,165,176,254,188,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,117,141,141,66,29,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,252,253,252,252,215,157,57,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,253,252,252,252,253,252,234,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,253,252,164,139,203,252,252,252,226,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,150,238,254,253,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,252,164,0,0,0,0,0,0,0,0,0,0,0,101,114,113,150,225,226,200,113,13,0,0,0,0,179,252,214,28,0,0,0,0,0,0,0,0,0,95,229,253,254,253,253,253,254,253,253,253,254,178,91,191,254,253,156,0,0,0,0,0,0,0,0,0,19,225,252,252,253,214,196,221,253,252,252,252,253,252,252,252,253,189,19,0,0,0,0,0,0,0,0,0,154,252,252,177,56,19,0,25,56,75,228,252,253,252,252,252,253,84,0,0,0,0,0,0,0,0,0,0,253,252,177,54,0,0,38,113,126,231,252,252,253,252,252,252,253,133,0,0,0,0,0,0,0,0,0,0,255,253,253,253,254,253,253,253,254,253,253,253,226,150,113,213,254,228,94,0,0,0,0,0,0,0,0,0,228,252,252,252,253,252,252,252,253,227,208,96,0,0,0,0,228,252,224,44,0,0,0,0,0,0,0,0,44,168,168,168,168,168,168,168,156,31,13,0,0,0,0,0,44,224,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,221,59,0,0,0,0,0,0,0,103,189,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,230,253,175,0,0,0,0,0,0,21,230,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,181,0,0,0,0,0,0,95,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,249,253,142,0,0,0,0,0,43,245,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,91,0,0,0,0,0,55,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,234,254,92,0,0,0,0,0,145,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,91,0,0,0,0,42,239,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,91,0,0,0,0,119,253,221,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,134,90,109,84,51,234,253,219,4,7,6,38,16,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,254,253,253,253,253,254,253,253,196,207,202,253,132,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,255,254,254,254,254,255,254,243,207,181,53,197,165,0,0,0,0,0,0,0,0,0,0,0,0,9,24,108,83,18,18,18,186,254,241,41,7,0,0,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,217,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,245,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,182,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,195,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,151,246,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,35,0,0,0,0,0,0,0,0,0,0,117,144,36,0,0,0,0,0,0,0,0,0,0,0,29,233,195,4,0,0,0,0,0,0,0,0,2,125,252,254,214,20,0,0,0,0,0,0,0,0,0,0,56,254,189,0,0,0,0,0,0,0,0,0,122,254,246,130,215,194,37,0,0,0,0,0,0,0,0,0,150,254,189,0,0,0,0,0,0,0,0,10,222,254,135,0,81,254,126,0,0,0,0,0,0,0,0,0,155,254,152,0,0,0,0,0,0,0,0,98,254,228,42,0,9,168,226,21,0,0,0,0,0,0,0,0,155,254,90,0,0,0,0,0,0,0,5,253,254,86,0,0,0,73,253,55,0,0,0,0,0,0,0,0,155,254,90,0,0,0,0,0,0,0,89,254,240,17,0,0,0,73,253,55,0,0,0,0,0,0,0,0,155,254,90,0,0,0,0,0,0,12,217,254,116,0,0,0,0,91,254,55,0,0,0,0,0,0,0,0,155,254,90,0,0,0,0,0,0,51,254,254,40,0,0,0,0,91,234,30,0,0,0,0,0,0,0,0,155,254,156,0,0,0,0,0,0,145,254,214,13,0,0,0,0,119,209,0,0,0,0,0,0,0,0,0,155,254,189,0,0,0,0,0,47,252,254,145,0,0,0,0,18,222,170,0,0,0,0,0,0,0,0,0,85,254,235,25,0,0,0,0,96,254,253,65,0,0,0,0,36,254,178,0,0,0,0,0,0,0,0,0,5,200,254,180,0,0,0,0,148,254,249,0,0,0,0,12,184,254,17,0,0,0,0,0,0,0,0,0,0,75,254,249,161,9,0,0,195,254,174,0,0,0,9,142,254,187,6,0,0,0,0,0,0,0,0,0,0,1,100,248,254,195,73,46,206,254,150,46,7,58,235,254,146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,95,223,254,254,254,254,254,233,254,209,237,245,123,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,222,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,249,225,226,100,85,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,197,253,252,252,252,252,253,252,252,246,197,135,38,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,242,145,242,252,253,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,89,0,75,112,174,127,112,205,252,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,90,0,0,0,0,0,0,29,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,195,19,0,0,0,0,0,154,252,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,13,155,252,253,252,177,51,0,0,0,13,187,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,252,252,242,91,16,0,150,252,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,174,252,252,252,252,203,140,227,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,178,253,253,253,255,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,252,252,253,252,252,249,225,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,77,252,253,252,252,252,252,166,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,252,253,242,230,252,252,253,177,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,89,57,252,252,253,204,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,106,120,253,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,252,253,228,246,252,252,253,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,220,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,245,208,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,252,190,112,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,190,255,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,247,252,253,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,243,252,252,253,202,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,252,252,139,39,19,39,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,248,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,191,27,27,153,111,27,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,252,252,253,252,252,252,168,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,252,252,253,252,252,252,252,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,146,253,253,197,133,241,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,13,7,0,156,252,252,201,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,236,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,223,252,252,153,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,67,18,0,0,0,36,226,252,252,231,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,203,59,0,39,221,253,252,232,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,252,198,173,219,252,253,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,134,252,252,252,252,252,253,100,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,207,252,252,252,245,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,119,203,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,105,176,122,105,105,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,148,211,246,253,253,253,253,253,238,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,157,233,253,254,253,253,253,253,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,36,135,253,253,253,253,254,253,246,133,133,133,197,210,31,0,0,0,0,0,0,0,0,0,0,0,0,36,128,253,253,253,253,253,223,55,27,0,0,0,16,19,0,0,0,0,0,0,0,0,0,0,0,0,2,135,253,253,253,253,230,134,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,253,253,126,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,242,84,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,180,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,254,254,175,105,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,180,253,253,253,253,253,220,209,61,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,167,226,253,253,253,253,253,254,180,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,133,197,253,253,253,254,253,245,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,82,191,253,254,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,30,9,16,30,70,253,254,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,191,253,169,198,253,253,253,254,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,248,253,253,253,253,253,253,253,255,253,186,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,226,253,253,253,253,253,209,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,201,182,43,104,104,104,104,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,215,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,248,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,149,253,254,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,232,16,0,17,97,180,134,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,253,253,112,0,85,248,253,253,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,254,230,25,106,255,254,254,254,254,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,197,90,253,254,253,128,222,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,217,254,253,202,245,253,254,116,95,245,253,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,254,253,253,253,253,151,41,233,253,253,151,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,253,253,253,253,182,248,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,254,254,254,254,255,254,254,216,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,254,253,253,253,253,254,253,193,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,254,253,253,253,253,217,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,80,239,253,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,240,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,214,253,102,0,11,31,41,0,0,21,21,41,51,51,51,31,0,0,0,0,0,0,0,0,0,0,21,122,253,252,223,203,213,232,243,203,203,223,223,243,253,252,253,192,0,0,0,0,0,0,0,0,0,0,51,253,163,142,203,203,203,203,203,203,203,203,183,102,102,142,255,253,0,0,0,0,0,0,0,0,0,0,31,232,183,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,41,0,0,0,0,0,0,0,0,0,0,203,203,0,0,0,0,0,0,0,0,0,0,0,0,62,255,253,0,0,0,0,0,0,0,0,0,0,41,243,203,0,0,0,0,0,0,0,0,0,0,0,0,102,253,171,0,0,0,0,0,0,0,0,0,0,0,203,254,50,0,0,0,0,0,0,0,0,0,0,11,213,254,91,0,0,0,0,0,0,0,0,0,0,0,122,151,30,0,0,0,0,0,0,0,0,0,0,51,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,102,102,20,0,0,152,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,234,253,254,253,254,213,254,253,234,152,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,91,151,232,253,252,253,252,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,163,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,188,255,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,97,190,245,253,253,253,248,208,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,247,253,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,225,124,198,213,253,247,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,211,82,40,0,0,60,244,253,203,35,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,138,33,0,0,0,0,0,75,200,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,61,0,0,0,0,0,0,0,95,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,143,35,0,0,0,0,0,0,0,1,147,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,79,144,144,144,44,3,86,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,253,253,169,197,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,208,150,234,253,253,253,253,248,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,210,22,0,65,186,253,253,253,253,242,186,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,225,39,0,17,173,253,253,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,221,179,199,253,253,252,144,75,75,193,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,176,253,253,253,253,251,151,0,0,0,24,192,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,175,253,141,116,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,235,255,217,125,125,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,236,253,253,253,253,253,249,224,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,253,253,253,253,253,251,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,127,19,19,19,46,149,149,146,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,192,72,109,135,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,212,172,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,235,194,194,238,253,253,190,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,201,201,72,0,0,84,212,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,216,253,226,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,184,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,68,253,253,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,0,11,192,253,253,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,217,137,227,253,253,249,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,230,253,253,223,123,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,226,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,238,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,105,130,253,255,218,105,105,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,231,252,252,252,253,252,252,252,213,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,190,252,252,252,252,252,253,252,252,252,252,241,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,252,252,252,133,160,181,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,14,237,252,252,252,128,29,29,0,7,21,177,243,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,156,4,0,0,0,0,0,0,223,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,236,56,0,0,0,0,0,0,0,144,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,68,252,252,82,0,0,0,0,0,0,0,0,4,182,252,162,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,74,0,0,0,0,0,0,0,0,0,178,252,231,45,0,0,0,0,0,0,0,0,0,0,0,164,252,252,74,0,0,0,0,0,0,0,0,0,178,252,252,59,0,0,0,0,0,0,0,0,0,0,25,201,253,253,223,0,0,0,0,0,0,0,0,45,223,253,253,59,0,0,0,0,0,0,0,0,0,0,60,252,252,252,222,0,0,0,0,0,0,0,0,0,178,252,252,59,0,0,0,0,0,0,0,0,0,0,57,246,252,252,222,0,0,0,0,0,0,0,0,49,226,252,193,21,0,0,0,0,0,0,0,0,0,0,0,94,252,252,222,0,0,0,0,0,0,0,0,75,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,11,212,252,231,35,0,0,0,0,0,0,0,206,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,133,2,0,0,0,0,0,15,227,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,140,31,0,0,0,88,189,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,7,172,252,252,252,241,238,240,238,247,252,252,252,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,252,252,252,253,252,252,252,238,189,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,103,244,252,252,253,252,154,103,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,200,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,237,254,221,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,231,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,232,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,217,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,254,212,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,215,254,254,116,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,163,254,185,58,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,128,95,229,229,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,254,253,253,253,254,249,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,161,253,254,253,244,253,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,197,253,253,228,143,61,253,254,185,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,247,151,0,13,187,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,227,105,0,0,147,253,253,140,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,247,154,0,0,57,249,253,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,0,136,253,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,253,84,80,106,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,254,244,199,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,119,160,160,69,69,152,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,253,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,187,253,234,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,254,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,236,56,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,234,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,49,85,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,37,82,145,203,244,255,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,124,227,254,254,254,254,254,254,233,203,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,224,205,254,254,254,254,240,179,116,53,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,232,254,254,215,146,102,70,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,233,254,217,105,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,197,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,233,254,254,162,102,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,254,254,254,254,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,119,119,123,186,236,234,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,43,0,0,0,0,0,0,132,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,240,139,85,72,45,85,175,254,242,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,254,254,254,254,254,241,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,123,203,203,254,220,203,149,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,178,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,254,210,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,253,222,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,189,254,244,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,240,253,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,254,195,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,253,145,0,0,0,0,9,24,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,253,46,0,0,0,51,209,254,253,188,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,182,0,0,0,114,237,254,254,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,115,0,17,198,251,248,173,56,165,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,190,3,174,254,248,108,0,0,9,215,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,240,157,253,254,139,0,0,0,0,207,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,229,254,254,254,210,9,0,0,70,170,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,249,253,253,248,230,163,230,254,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,224,253,254,253,253,253,254,215,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,228,254,151,111,128,69,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,100,63,130,159,195,130,152,159,223,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,157,233,254,254,254,254,254,254,254,254,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,227,254,254,254,254,254,168,122,67,67,145,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,255,254,235,104,20,4,1,0,0,10,213,211,11,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,240,175,25,0,0,0,0,0,0,134,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,109,29,0,0,0,0,0,0,0,89,249,215,25,0,2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,245,82,0,0,5,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,254,124,0,0,0,5,240,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,169,6,0,0,0,0,21,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,254,228,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,106,254,252,63,0,0,0,0,0,0,30,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,112,0,0,0,0,0,0,2,160,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,244,254,209,7,0,0,0,0,0,0,5,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,246,65,0,0,0,0,0,0,0,5,219,17,0,0,0,0,0,0,0,0,0,0,0,0,0,44,230,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,246,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,199,4,0,0,0,0,0,0,0,0,0,2,25,0,0,0,0,0,0,0,0,0,0,0,0,0,203,242,46,0,0,0,0,0,0,0,0,0,0,5,176,0,0,0,0,0,0,0,0,0,0,0,0,0,177,157,0,0,0,0,0,0,0,0,0,0,0,5,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,155,240,255,238,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,237,254,254,254,254,254,210,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,237,254,235,90,90,231,254,254,187,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,237,254,254,73,0,0,138,254,254,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,254,50,0,0,52,213,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,106,171,29,0,0,0,221,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,217,225,14,183,39,5,45,184,246,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,145,0,47,204,181,254,254,254,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,244,233,72,13,110,239,254,254,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,248,223,245,247,197,194,254,244,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,50,134,142,125,50,0,133,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,249,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,237,170,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,54,54,54,54,54,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,225,189,175,72,72,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,194,251,253,253,253,253,253,253,253,253,253,253,199,13,0,0,0,0,0,0,0,0,0,0,0,23,139,248,253,253,253,253,253,203,213,194,248,159,253,253,253,182,7,0,0,0,0,0,0,0,0,0,21,151,253,253,251,245,195,173,47,6,7,5,11,2,11,184,253,253,185,0,0,0,0,0,0,0,0,2,163,253,253,245,78,0,0,0,0,0,0,0,0,0,0,29,213,253,135,0,0,0,0,0,0,0,0,113,253,253,242,83,0,0,0,0,0,0,0,0,0,0,0,0,103,253,190,0,0,0,0,0,0,0,0,255,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,46,238,253,135,0,0,0,0,0,0,0,0,254,253,212,15,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,135,0,0,0,0,0,0,0,0,199,253,225,30,0,0,0,0,0,0,0,0,0,0,12,95,209,253,216,85,0,0,0,0,0,0,0,0,202,253,249,198,21,0,0,0,0,0,0,0,0,64,233,253,253,253,45,0,0,0,0,0,0,0,0,0,67,202,253,253,152,130,73,12,12,12,12,57,183,251,253,253,250,164,1,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,253,253,253,253,253,253,253,253,212,79,0,0,0,0,0,0,0,0,0,0,0,0,13,168,241,253,253,253,253,253,253,253,253,232,200,88,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,70,120,188,188,188,188,188,188,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,126,255,241,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,217,239,134,226,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,214,241,124,0,50,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,227,239,61,0,0,8,211,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,217,241,93,0,0,0,27,238,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,101,0,0,0,0,89,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,222,16,0,0,42,165,251,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,153,6,76,160,229,254,254,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,223,208,254,254,223,126,83,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,182,130,52,0,37,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,46,0,0,0,0,37,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,196,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,228,251,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,195,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,152,233,254,213,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,254,253,244,203,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,252,253,171,81,41,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,254,213,41,0,51,233,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,233,30,0,82,233,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,233,254,233,0,41,132,253,254,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,151,203,243,253,252,253,252,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,214,253,254,253,254,253,254,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,252,253,252,253,212,172,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,254,253,203,122,41,0,113,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,50,50,0,0,0,0,193,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,255,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,161,255,218,89,0,3,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,136,219,253,253,253,172,5,162,253,205,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,174,253,253,249,140,147,160,157,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,170,253,253,236,112,0,0,48,236,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,4,167,253,253,208,29,0,0,10,163,253,253,253,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,226,29,0,0,11,161,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,4,167,253,253,210,0,0,11,101,253,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,6,182,253,253,210,10,50,160,253,253,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,241,194,253,253,253,253,253,253,253,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,229,253,253,253,253,253,206,94,218,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,195,253,253,205,154,15,57,242,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,55,55,16,0,0,172,253,253,180,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,216,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,219,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,218,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,120,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,191,255,255,128,64,255,255,64,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,191,255,255,64,64,191,255,128,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,255,255,191,0,128,255,255,64,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,128,255,255,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,255,255,128,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,64,0,0,0,0,0,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,128,128,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,128,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,64,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,64,255,255,255,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,191,255,255,255,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,0,0,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,235,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,182,0,0,0,75,253,252,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,249,0,0,0,144,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,249,0,0,10,206,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,249,0,0,60,254,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,249,0,0,60,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,249,0,0,105,254,210,99,96,110,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,232,232,248,254,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,229,243,243,250,254,254,144,124,119,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,227,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,214,255,254,255,254,254,203,124,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,231,177,114,114,114,114,207,242,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,26,0,0,0,0,0,0,137,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,29,151,238,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,63,63,80,196,253,253,253,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,213,214,253,253,253,253,253,253,200,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,155,155,195,193,237,189,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,4,2,30,242,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,235,209,13,0,0,0,0,0,0,0,0,0,0,0,0,187,205,82,10,0,0,0,0,0,0,0,0,0,130,253,36,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,174,42,0,0,0,0,0,0,0,0,125,253,36,0,0,0,0,0,0,0,0,0,0,0,0,44,239,253,253,235,100,4,0,0,0,0,0,0,125,220,18,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,253,253,253,182,68,14,0,0,0,21,201,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,214,253,253,253,253,225,218,175,175,229,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,145,253,253,253,253,253,253,253,253,217,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,72,152,253,253,253,253,198,118,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,88,133,105,106,93,13,13,71,71,94,254,173,133,133,31,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,254,253,253,253,253,253,217,32,0,0,0,0,0,0,0,0,0,0,0,21,240,253,253,253,253,253,253,253,254,253,253,253,253,253,253,170,4,0,0,0,0,0,0,0,0,0,0,0,53,84,84,84,141,84,84,84,85,84,84,84,84,213,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,253,184,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,174,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,184,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,202,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,245,253,253,222,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,254,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,203,253,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,253,213,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,244,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,252,124,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,120,248,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,247,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,192,113,113,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,226,225,225,225,225,163,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,195,222,252,252,252,252,253,252,252,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,84,84,99,223,237,252,252,252,236,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,253,252,76,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,131,246,252,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,253,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,99,182,254,254,221,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,216,254,253,245,241,253,249,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,240,165,36,31,35,204,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,162,0,0,0,0,52,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,192,46,0,0,0,0,0,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,59,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,243,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,222,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,234,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,63,128,222,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,218,254,253,253,253,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,193,253,189,253,253,253,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,105,131,254,230,103,254,255,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,219,240,92,247,241,73,2,50,254,253,225,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,253,243,137,0,0,0,62,218,253,250,152,14,21,115,73,0,0,0,0,0,0,0,0,0,0,145,253,253,246,104,0,0,0,0,0,12,177,249,253,219,230,250,102,0,0,0,0,0,0,0,0,0,0,145,253,207,46,0,0,0,0,0,0,0,0,96,227,254,201,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,48,221,163,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,196,254,253,253,204,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,214,253,241,77,174,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,253,195,9,0,4,186,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,71,0,0,0,109,253,185,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,154,7,0,0,0,5,146,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,5,12,4,0,232,253,66,0,0,0,0,0,54,251,248,48,0,0,0,0,0,0,0,0,0,0,0,0,100,253,155,16,236,246,54,0,0,0,0,0,0,131,253,119,0,0,0,0,0,0,0,0,0,0,0,0,100,253,117,89,253,209,0,0,0,0,0,0,0,23,238,209,0,0,0,0,0,0,0,0,0,0,0,0,196,253,88,12,235,228,29,0,0,0,0,0,0,0,232,248,58,0,0,0,0,0,0,0,0,0,0,67,254,254,88,0,219,254,66,0,0,0,0,0,0,0,233,255,66,0,0,0,0,0,0,0,0,0,0,67,253,253,88,0,93,253,163,9,0,0,0,0,0,0,232,242,49,0,0,0,0,0,0,0,0,0,0,41,236,253,88,0,7,215,253,125,0,0,0,0,0,0,232,165,0,0,0,0,0,0,0,0,0,0,0,0,200,253,194,0,0,26,209,249,68,0,0,0,0,8,234,99,0,0,0,0,0,0,0,0,0,0,0,0,78,251,234,36,0,0,27,136,243,75,0,0,13,173,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,141,0,0,0,0,70,122,0,0,95,253,250,65,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,246,179,55,3,0,0,0,0,79,246,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,225,253,253,180,107,45,45,136,250,253,180,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,170,253,253,253,254,253,253,247,152,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,52,143,239,254,253,210,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,86,151,255,254,254,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,83,148,253,253,245,241,244,253,253,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,202,253,251,219,111,38,0,25,206,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,228,219,95,0,0,0,0,0,63,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,198,253,240,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,198,253,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,236,253,204,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,171,253,235,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,235,47,0,71,94,132,217,217,217,217,162,5,0,0,0,0,0,0,0,0,0,0,0,0,0,137,242,253,162,187,223,246,253,253,253,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,8,118,244,253,253,253,253,253,225,148,148,148,103,24,136,148,19,0,0,0,0,0,0,0,0,0,0,6,123,253,253,253,234,141,54,18,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,239,118,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,188,129,57,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,211,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,246,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,208,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,252,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,147,255,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,254,255,189,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,233,151,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,237,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,192,254,255,122,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,181,253,253,253,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,198,247,253,253,251,159,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,141,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,237,253,253,253,194,112,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,83,234,253,253,253,208,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,253,199,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,234,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,154,253,253,253,228,154,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,253,253,253,157,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,253,253,253,253,125,38,38,38,38,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,253,253,253,253,253,253,191,104,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,253,253,253,253,253,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,253,253,253,235,235,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,253,253,155,88,160,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,253,253,189,179,226,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,81,253,253,253,253,253,253,253,253,253,215,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,199,253,253,253,253,253,253,253,202,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,79,253,253,253,253,253,84,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,243,255,254,255,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,213,161,173,190,238,243,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,87,4,0,2,2,57,238,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,93,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,238,241,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,205,239,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,27,0,0,0,0,0,5,190,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,208,242,138,5,0,0,0,41,254,236,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,227,225,254,173,4,0,4,160,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,244,91,14,187,254,174,11,42,254,234,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,210,7,0,31,234,254,209,175,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,89,0,0,53,239,254,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,216,45,0,24,230,254,254,170,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,237,177,243,253,236,234,254,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,167,244,237,110,0,12,82,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,242,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,247,112,25,2,3,9,9,9,9,64,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,194,254,254,245,191,205,254,254,254,254,254,213,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,142,245,254,254,254,251,243,243,191,212,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,94,122,67,55,22,22,5,183,227,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,220,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,163,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,207,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,249,227,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,249,244,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,232,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,226,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,221,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,255,160,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,167,104,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,70,108,191,235,128,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,242,254,254,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,197,253,254,254,254,252,252,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,194,254,254,250,205,121,17,101,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,168,254,254,214,58,0,0,10,215,254,222,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,211,254,254,189,34,0,0,81,135,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,195,254,140,11,0,0,0,244,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,68,0,0,0,0,118,203,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,95,0,0,0,0,0,95,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,144,0,0,0,0,19,221,254,234,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,216,254,228,43,0,0,0,199,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,166,20,50,176,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,147,254,254,254,254,254,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,236,254,254,254,254,170,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,113,159,126,19,45,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,187,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,171,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,118,165,255,254,240,118,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,159,234,244,253,253,253,253,253,253,244,178,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,253,253,253,253,253,253,253,253,253,253,253,173,17,0,0,0,0,0,0,0,0,0,0,0,0,0,76,241,228,198,198,138,61,61,61,61,139,225,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,25,64,45,0,0,0,0,0,0,0,0,125,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,201,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,210,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,192,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,182,253,253,217,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,198,253,252,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,211,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,183,253,253,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,230,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,243,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,170,253,253,148,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,223,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,184,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,182,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,136,162,161,237,220,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,72,189,241,253,254,253,253,253,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,74,224,254,253,253,253,254,253,244,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,189,253,253,254,253,253,253,195,77,86,228,228,15,0,0,0,0,0,0,0,0,0,0,0,0,0,85,221,254,254,228,185,167,93,25,0,0,166,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,254,227,156,15,0,0,0,0,0,93,249,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,214,29,0,0,0,0,0,0,41,224,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,93,0,0,0,0,0,0,34,229,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,195,40,0,0,0,0,41,229,255,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,254,241,188,138,139,189,241,253,254,143,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,163,242,253,253,254,253,253,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,152,219,254,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,254,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,254,206,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,236,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,24,118,138,202,253,201,117,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,178,252,252,252,253,252,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,252,252,253,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,209,116,21,0,0,47,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,255,253,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,252,253,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,252,253,134,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,252,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,252,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,252,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,213,242,56,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,242,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,179,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,243,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,185,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,233,7,0,0,8,84,232,232,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,160,0,0,38,171,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,38,0,0,148,252,252,252,208,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,168,0,0,124,255,253,253,243,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,89,43,112,242,253,252,201,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,237,242,252,252,241,117,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,145,210,252,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,138,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,213,254,254,219,254,254,161,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,223,216,216,234,254,254,249,184,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,56,11,0,0,27,56,116,199,251,237,180,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,200,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,118,207,238,250,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,96,179,227,254,254,197,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,151,244,254,254,219,183,65,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,247,144,62,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,239,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,254,219,102,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,206,254,254,180,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,175,253,231,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,189,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,202,254,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,234,255,241,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,106,113,169,252,254,173,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,219,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,236,254,141,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,96,96,194,255,233,96,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,197,251,251,251,253,251,251,236,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,127,174,251,251,251,251,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,251,253,251,251,235,89,31,31,31,31,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,172,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,255,253,173,96,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,220,253,251,251,251,212,191,170,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,251,251,251,251,253,251,251,141,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,149,188,204,251,253,251,251,251,251,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,94,95,114,251,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,236,251,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,221,139,0,0,0,0,0,167,236,251,251,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,251,158,0,0,0,0,60,228,251,251,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,159,0,0,0,159,255,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,170,32,112,190,228,253,247,140,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,251,251,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,251,253,251,251,251,211,31,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,253,251,251,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,29,54,141,191,255,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,57,144,206,253,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,134,204,252,252,252,253,252,252,252,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,126,225,246,252,253,252,252,151,78,28,203,252,241,59,0,0,0,0,0,0,0,0,0,0,0,45,141,191,255,253,253,228,214,88,0,0,4,128,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,82,196,221,197,171,84,9,0,0,0,0,54,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,178,252,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,164,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,151,151,151,192,196,151,194,151,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,166,248,254,254,254,254,254,254,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,195,254,254,254,254,254,254,254,254,254,254,233,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,254,219,171,171,112,67,165,231,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,88,249,254,254,225,56,12,0,0,0,0,70,219,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,255,137,74,74,74,114,177,177,218,254,254,234,25,0,0,0,0,0,0,0,0,0,0,0,0,35,250,254,254,254,254,254,254,254,254,254,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,15,215,254,254,254,254,254,254,254,254,254,254,254,254,210,13,0,0,0,0,0,0,0,0,0,0,0,0,0,65,198,249,249,249,249,249,249,146,145,248,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,242,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,234,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,234,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,212,151,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,234,71,153,152,153,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,151,151,253,232,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,204,20,0,0,21,162,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,20,0,0,0,0,20,213,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,0,0,0,0,0,0,92,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,0,0,0,0,0,0,51,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,0,0,0,0,0,0,0,142,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,171,0,0,0,0,0,0,0,61,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,0,0,0,0,0,0,0,0,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,0,0,0,0,0,0,0,0,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,0,0,0,0,0,0,0,0,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,0,0,0,0,0,0,0,41,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,62,0,0,0,0,0,0,123,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,183,0,0,0,0,0,41,243,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,204,0,0,0,0,0,72,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,243,81,0,0,0,123,233,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,153,152,214,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,151,151,233,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,109,109,110,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,94,217,218,247,252,252,253,222,114,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,99,242,252,252,253,220,215,215,217,226,252,211,37,5,0,0,0,0,0,0,0,0,0,0,0,1,21,206,252,252,252,252,191,15,0,0,0,31,128,252,253,119,1,0,0,0,0,0,0,0,0,0,0,73,252,252,252,158,123,0,0,0,0,0,0,0,0,83,191,252,71,0,0,0,0,0,0,0,0,0,32,207,252,252,118,5,0,0,0,0,0,0,0,0,0,0,109,252,71,0,0,0,0,0,0,0,0,0,212,252,252,148,0,0,0,0,0,0,0,0,0,0,0,21,129,210,52,0,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,62,170,252,215,0,0,0,0,0,0,0,0,0,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,63,238,253,108,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,148,0,0,0,0,0,0,0,0,253,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,79,242,252,148,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,231,46,0,0,0,0,0,0,0,0,255,253,232,47,0,0,0,0,0,0,0,0,0,0,16,191,255,253,154,0,0,0,0,0,0,0,0,0,98,242,252,108,0,0,0,0,0,0,0,0,0,63,222,252,253,148,10,0,0,0,0,0,0,0,0,0,0,62,201,211,119,5,0,0,0,0,0,0,16,181,252,252,237,30,0,0,0,0,0,0,0,0,0,0,0,0,98,252,252,119,0,0,0,0,21,144,191,252,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,170,110,150,253,253,255,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,35,159,231,252,253,252,252,210,180,55,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,71,133,174,71,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,111,236,254,254,167,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,115,188,253,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,210,242,253,254,253,214,106,175,253,228,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,244,169,44,55,0,27,225,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,222,198,117,50,8,17,0,0,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,8,17,0,0,20,218,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,253,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,159,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,174,189,188,214,253,253,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,253,253,253,205,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,159,222,173,234,255,254,129,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,67,15,0,0,0,0,0,0,31,140,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,127,233,253,219,62,0,0,0,0,0,0,14,219,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,244,52,0,0,0,0,0,0,31,225,239,9,0,0,0,0,0,0,0,0,0,0,0,0,186,253,229,100,88,35,0,0,0,0,0,0,0,199,253,99,0,0,0,0,0,0,0,0,0,0,0,0,65,250,253,172,8,0,0,0,0,0,0,0,0,199,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,181,55,8,0,0,0,0,16,146,249,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,9,180,253,253,253,223,155,45,45,88,206,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,66,167,223,253,253,254,253,253,253,253,154,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,115,191,254,253,253,195,71,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,29,86,170,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,226,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,141,86,0,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,226,114,0,0,0,86,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,255,255,141,0,0,0,0,57,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,226,29,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,141,0,0,0,0,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,29,0,0,0,0,0,0,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,191,128,128,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,128,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,64,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,30,82,41,42,181,147,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,102,158,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,174,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,247,254,243,115,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,171,157,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,233,11,178,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,231,0,175,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,164,0,60,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,254,94,0,60,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,194,60,50,88,254,255,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,111,217,254,254,254,245,237,254,254,254,219,78,27,37,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,254,254,255,254,255,254,254,254,228,233,144,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,254,254,254,254,254,254,254,196,155,180,87,40,0,0,0,0,0,0,0,0,0,0,0,0,29,124,124,124,66,5,5,5,9,217,254,124,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,247,254,245,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,249,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,254,254,254,241,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,253,253,254,253,223,120,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,253,253,253,253,253,254,253,253,253,201,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,10,10,10,25,213,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,217,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,152,189,253,246,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,36,122,122,122,155,242,254,253,201,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,253,253,253,253,253,253,254,253,128,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,254,253,253,209,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,181,143,143,95,143,143,158,253,253,253,232,134,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,111,154,239,254,254,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,116,232,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,211,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,12,12,89,213,243,253,253,190,9,0,0,0,0,0,0,0,0,0,0,0,0,0,4,93,84,155,172,253,253,255,253,253,253,253,219,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,154,253,253,253,253,253,254,253,253,169,66,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,71,191,143,176,205,192,114,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,79,154,203,253,253,255,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,169,234,252,253,252,233,196,184,84,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,252,190,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,128,254,253,231,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,247,196,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,252,235,85,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,252,231,175,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,225,225,226,225,247,253,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,209,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,215,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,229,252,252,202,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,165,41,41,141,229,253,254,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,252,252,252,253,214,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,224,252,252,253,252,252,252,156,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,252,253,252,164,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,144,240,193,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,254,171,67,77,105,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,253,253,253,254,253,253,253,253,238,205,100,70,0,0,0,0,0,0,0,0,0,0,0,0,0,15,151,253,253,253,253,254,253,253,253,253,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,5,185,253,253,253,229,229,184,88,88,88,160,198,249,253,152,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,250,145,31,31,0,0,0,0,0,0,104,145,14,0,0,0,0,0,0,0,0,0,0,0,48,248,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,201,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,242,154,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,253,239,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,183,221,237,254,255,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,184,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,246,253,253,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,132,141,161,242,253,253,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,227,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,232,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,188,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,186,147,71,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,255,175,48,0,0,0,0,0,0,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,248,253,233,43,0,0,0,0,0,154,210,89,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,80,0,0,0,0,0,150,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,80,0,0,0,0,0,211,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,80,0,0,0,0,10,216,253,192,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,247,68,0,0,0,0,81,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,217,14,0,0,0,13,171,253,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,223,25,0,0,38,170,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,219,18,13,147,236,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,207,201,253,236,148,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,228,253,253,253,253,91,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,209,55,14,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,70,88,38,0,0,75,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,235,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,46,173,155,137,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,103,218,254,254,254,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,96,172,213,254,254,254,254,254,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,178,254,254,254,254,254,254,254,254,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,254,254,254,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,249,29,29,113,147,147,95,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,254,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,144,142,142,142,142,142,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,254,254,254,254,254,213,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,254,254,254,254,254,255,254,255,254,251,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,254,206,177,201,254,254,254,248,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,249,41,15,0,13,86,201,254,254,228,104,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,193,0,0,0,0,0,63,252,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,182,0,0,0,0,0,0,73,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,254,254,95,0,0,0,0,0,0,12,255,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,252,155,48,15,0,0,44,168,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,190,254,254,254,254,205,184,184,248,254,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,254,254,254,254,254,254,254,254,254,178,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,94,210,254,254,254,254,254,254,243,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,17,101,135,191,135,19,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,128,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,0,64,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,64,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,128,128,64,0,0,128,128,191,191,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,191,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,192,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,83,0,0,0,0,0,22,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,168,0,0,0,0,0,22,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,141,0,0,0,0,0,22,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,236,37,0,0,0,0,0,22,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,212,0,0,0,0,0,0,9,204,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,176,0,0,0,0,0,0,0,169,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,106,0,0,0,0,0,0,0,169,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,132,0,0,0,0,0,0,0,169,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,229,27,0,0,0,0,0,0,169,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,218,51,14,0,0,0,0,169,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,252,211,146,85,85,85,197,252,217,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,238,252,252,252,253,252,252,252,252,214,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,84,172,190,189,189,161,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,218,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,209,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,231,255,208,156,66,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,245,196,242,253,253,223,155,72,20,20,20,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,155,0,44,229,253,253,254,253,253,253,253,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,10,21,13,34,117,177,213,241,253,253,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,84,0,0,0,0,0,41,88,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,210,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,194,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,114,255,254,235,15,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,233,0,0,0,0,0,55,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,244,107,18,0,0,46,111,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,226,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,170,198,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,198,29,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,29,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,29,0,170,0,114,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,141,57,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,255,255,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,170,198,226,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,226,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,86,29,0,0,114,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,86,255,170,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,141,0,0,0,0,86,170,29,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,114,0,0,0,0,170,0,86,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,0,0,0,0,29,0,114,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,57,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,57,0,29,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,198,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,170,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,82,87,144,178,158,82,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,253,253,253,253,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,253,253,253,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,231,178,121,154,251,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,254,210,122,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,253,253,202,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,255,253,253,253,211,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,143,220,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,234,255,216,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,78,218,250,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,210,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,133,118,239,254,255,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,176,126,209,253,253,253,253,253,253,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,245,253,253,253,253,253,253,253,236,246,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,73,230,253,253,253,253,253,237,171,50,58,199,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,212,178,120,16,0,5,163,253,253,243,46,0,0,0,0,0,0,0,0,0,0,0,0,34,237,253,253,243,62,0,0,0,8,161,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,18,229,253,198,46,0,0,0,71,201,253,253,253,227,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,116,7,0,0,69,238,251,253,253,253,240,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,253,253,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,253,253,253,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,249,247,87,95,148,240,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,0,0,63,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,18,0,0,0,0,0,0,0,0,45,227,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,232,128,54,0,0,0,0,19,126,229,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,247,219,134,134,215,239,253,253,254,197,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,253,253,253,253,253,253,253,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,146,232,253,253,253,253,253,253,251,181,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,54,125,253,253,253,191,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,88,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,253,104,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,207,95,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,254,205,152,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,254,253,253,240,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,158,243,253,253,254,253,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,100,168,214,253,253,253,253,240,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,105,217,253,253,253,184,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,126,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,82,122,122,23,0,0,0,0,0,0,26,219,253,253,36,0,0,0,0,0,0,0,0,0,0,1,94,254,254,254,254,254,208,133,18,13,82,151,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,241,31,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,253,204,56,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,253,253,253,254,253,253,253,253,198,61,9,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,253,253,216,222,253,253,253,253,253,156,42,0,0,0,0,0,0,0,0,0,31,168,209,225,233,168,168,168,117,48,23,28,123,185,253,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,17,24,27,0,0,0,0,0,0,0,0,7,123,231,253,253,186,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,144,238,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,122,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,106,163,182,254,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,253,254,253,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,254,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,123,245,253,207,176,253,253,238,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,175,21,106,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,144,27,222,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,141,216,254,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,251,253,253,214,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,227,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,254,228,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,200,245,222,253,254,249,209,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,250,216,22,191,254,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,249,151,0,0,106,238,253,236,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,216,0,0,0,55,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,255,254,230,20,0,0,81,254,242,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,234,253,237,51,0,0,229,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,144,14,121,250,247,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,200,253,191,160,254,223,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,207,253,253,169,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,153,203,220,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,237,253,253,253,180,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,253,254,240,238,238,254,244,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,161,40,25,25,120,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,103,0,0,0,0,128,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,215,6,0,0,0,85,245,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,179,0,0,0,3,174,254,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,238,25,0,0,57,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,241,128,0,13,187,254,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,232,139,193,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,245,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,255,216,216,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,64,61,240,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,212,253,155,4,0,101,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,219,25,0,0,0,220,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,241,186,0,0,0,0,162,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,240,81,21,0,0,178,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,245,228,132,149,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,152,202,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,255,234,125,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,222,252,253,253,253,253,253,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,222,253,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,250,253,253,253,175,149,149,165,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,253,253,188,25,7,0,18,189,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,184,23,0,0,19,188,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,225,50,0,0,20,187,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,249,253,128,0,0,61,186,253,253,253,243,95,19,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,180,8,0,58,242,253,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,185,66,106,212,253,253,253,253,243,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,253,253,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,222,253,253,253,253,253,213,240,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,225,253,253,175,78,18,189,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,84,84,15,0,44,232,253,223,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,186,253,246,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,123,224,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,255,253,169,0,0,0,0,0,0,0,0,57,85,28,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,168,0,0,0,0,0,0,0,0,168,253,83,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,196,0,0,0,0,0,0,0,169,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,83,0,0,0,0,0,0,57,224,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,84,0,0,0,0,0,57,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,28,0,0,0,0,0,168,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,0,0,0,0,0,0,29,197,254,253,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,138,0,0,0,0,0,0,197,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,86,253,254,253,254,253,198,28,0,0,0,169,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,196,169,56,57,224,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,57,168,169,168,198,253,254,253,254,253,254,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,83,139,251,253,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,17,153,238,254,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,17,17,123,180,232,253,253,253,253,253,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,60,175,224,253,253,253,254,253,253,253,253,253,253,156,10,0,0,0,0,0,0,0,0,0,0,0,4,108,242,253,253,253,253,253,254,253,253,227,180,123,57,6,0,0,0,0,0,0,0,0,0,0,0,3,141,253,253,253,253,253,241,212,130,99,49,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,211,104,41,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,204,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,194,253,249,213,129,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,218,253,253,253,244,187,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,171,213,253,253,253,253,161,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,129,163,246,255,163,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,195,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,254,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,13,0,0,0,0,29,201,253,254,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,187,13,0,0,96,232,253,253,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,194,224,187,229,250,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,194,253,253,253,253,231,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,129,240,208,98,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,75,101,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,84,168,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,140,172,217,241,247,254,254,254,190,84,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,241,254,255,254,254,251,212,127,34,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,217,254,237,142,124,85,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,213,96,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,243,226,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,255,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,244,199,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,40,74,170,250,254,219,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,246,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,232,254,254,158,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,46,23,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,105,105,106,238,255,175,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,61,61,61,175,209,229,253,253,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,1,87,191,253,253,253,253,253,248,238,247,245,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,29,128,253,253,253,253,139,133,133,79,0,79,121,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,43,182,253,231,72,29,2,0,0,0,0,0,121,253,253,133,2,0,0,0,0,0,0,0,0,0,0,0,0,5,74,52,0,0,0,0,0,0,0,11,214,253,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,223,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,238,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,230,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,148,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,226,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,232,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,244,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,218,255,254,254,215,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,254,254,254,220,191,242,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,254,161,9,2,197,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,243,97,0,82,227,244,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,117,67,0,0,141,220,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,178,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,88,52,0,0,0,0,0,0,92,240,254,61,0,0,0,0,0,0,0,0,0,0,0,0,68,215,254,254,254,254,255,194,110,3,0,63,243,254,143,0,0,0,0,0,0,0,0,0,0,0,0,123,250,254,254,254,254,254,254,254,254,246,164,241,254,195,2,0,0,0,0,0,0,0,0,0,0,0,47,245,254,254,185,93,17,17,20,105,203,254,254,254,243,39,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,170,4,0,0,0,2,84,246,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,39,234,200,4,0,0,35,117,221,254,254,254,213,249,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,243,211,180,211,245,254,254,254,231,110,3,228,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,197,254,254,254,254,243,160,52,18,0,0,228,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,110,148,107,61,36,0,0,0,0,5,230,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,245,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,152,152,254,172,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,183,233,252,253,252,151,232,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,193,112,153,193,254,253,203,122,82,0,0,203,203,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,253,252,151,70,0,0,0,0,21,223,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,102,102,41,0,0,0,0,0,0,21,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,173,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,253,130,0,82,123,203,204,203,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,234,152,254,253,254,233,204,243,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,252,151,111,50,30,21,223,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,61,0,0,0,0,0,0,72,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,172,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,228,0,0,0,0,0,0,0,140,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,249,111,0,0,0,0,0,0,32,238,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,235,146,11,0,0,0,0,0,0,100,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,179,12,0,0,0,0,0,0,0,216,237,31,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,201,23,0,0,0,0,0,0,0,27,242,184,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,234,45,0,0,0,0,0,0,0,0,157,254,69,0,0,0,0,0,0,0,0,0,0,0,0,8,166,253,78,0,0,0,0,0,0,0,0,0,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,95,253,129,0,0,0,0,0,0,21,37,43,159,254,253,165,0,0,0,0,0,0,0,0,0,0,0,50,245,246,46,12,19,64,109,109,167,230,253,253,253,254,100,8,0,0,0,0,0,0,0,0,0,0,0,145,253,253,201,228,253,253,253,253,254,253,175,201,253,202,5,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,255,254,217,181,117,66,0,11,215,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,18,18,18,18,9,0,0,0,0,108,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,248,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,204,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,196,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,253,253,253,251,150,112,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,253,172,52,188,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,138,6,0,66,253,253,250,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,249,253,137,7,0,0,7,138,253,253,250,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,237,253,225,30,0,0,0,0,7,182,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,61,0,0,0,0,0,0,30,179,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,180,8,0,0,0,0,0,0,0,127,253,213,32,0,0,0,0,0,0,0,0,0,0,0,0,86,249,253,162,0,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,162,0,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,135,0,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,32,0,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,120,0,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,173,5,0,0,0,0,0,0,6,62,253,251,96,0,0,0,0,0,0,0,0,0,0,0,0,43,242,253,253,128,5,0,0,0,0,0,121,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,251,253,253,128,15,0,0,5,111,219,251,220,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,253,253,222,143,114,130,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,249,253,253,253,253,253,252,159,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,163,253,253,253,226,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,13,13,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,146,145,145,145,145,228,253,253,207,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,157,203,254,253,253,253,253,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,48,80,0,0,0,218,253,253,254,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,47,226,240,52,0,62,243,253,253,254,253,253,253,253,253,204,193,140,72,0,0,0,0,0,0,0,0,4,176,253,253,72,0,85,253,253,253,216,180,180,157,60,60,12,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,113,0,126,253,217,111,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,245,218,247,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,253,253,249,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,122,202,242,252,254,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,109,233,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,233,253,244,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,119,61,61,61,149,248,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,253,253,253,251,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,253,253,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,202,253,253,253,253,253,253,198,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,217,253,253,253,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,141,116,13,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,125,254,254,254,254,100,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,121,254,254,254,254,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,254,254,254,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,254,254,254,254,254,116,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,126,254,254,254,219,181,223,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,127,254,254,254,217,88,0,147,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,254,144,0,0,147,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,138,254,254,254,254,144,0,0,147,254,254,254,143,21,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,254,144,0,0,147,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,203,69,0,0,147,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,156,0,0,0,147,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,156,0,0,0,147,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,222,98,0,0,147,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,11,107,254,254,254,254,144,0,0,147,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,254,229,102,0,147,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,97,254,254,254,254,232,208,235,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,98,254,254,254,254,254,254,254,254,254,86,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,254,254,254,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,93,254,254,254,254,254,254,254,79,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,255,232,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,250,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,218,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,239,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,209,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,232,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,231,253,253,147,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,161,253,253,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,224,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,243,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,253,253,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,253,229,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,230,253,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,253,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,213,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,243,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,254,253,193,233,254,253,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,252,253,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,203,61,173,253,254,253,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,10,50,91,50,213,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,81,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,64,255,255,255,255,255,255,191,128,64,0,0,0,0,0,0,0,0,255,255,255,128,0,0,128,128,128,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,128,64,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,128,128,0,64,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,64,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,172,252,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,161,250,250,232,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,250,250,250,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,202,241,252,250,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,92,252,252,252,254,232,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,232,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,231,252,250,250,250,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,202,231,250,252,250,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,252,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,252,250,250,250,150,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,250,128,0,0,0,0,0,0,0,0,153,151,60,0,0,0,0,0,0,0,0,0,0,82,231,250,252,250,128,10,0,0,0,0,0,0,123,202,252,250,221,40,0,0,0,0,0,0,0,0,92,252,252,252,244,121,0,0,0,0,31,51,254,252,252,252,254,252,252,49,0,0,0,0,0,0,0,0,252,250,250,250,202,0,0,0,102,102,191,250,252,250,250,250,252,250,250,49,0,0,0,0,0,0,0,0,252,250,250,250,202,0,0,123,252,250,250,250,252,250,250,250,252,250,250,49,0,0,0,0,0,0,0,0,252,250,250,250,202,82,202,241,252,250,250,250,252,250,250,250,252,250,128,10,0,0,0,0,0,0,0,0,254,252,252,252,255,252,252,252,254,252,252,252,254,252,252,252,244,121,0,0,0,0,0,0,0,0,0,0,252,250,250,250,252,250,250,250,252,250,250,250,252,250,250,169,121,0,0,0,0,0,0,0,0,0,0,0,130,250,250,250,252,250,250,250,252,250,250,250,252,189,100,20,0,0,0,0,0,0,0,0,0,0,0,0,10,49,170,250,252,250,250,250,252,250,250,250,49,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,10,0,0,0,0,0,0,0,0,0,124,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,116,0,0,0,0,0,0,0,0,69,251,54,0,0,0,0,0,0,0,0,0,0,0,0,0,44,208,139,44,0,0,0,0,0,0,0,0,154,191,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,194,10,0,0,0,0,0,0,0,0,70,251,135,0,0,0,0,0,0,0,0,0,0,0,0,19,205,216,51,0,0,0,0,0,0,0,0,28,172,220,5,0,0,0,0,0,0,0,0,0,0,0,0,174,217,50,0,0,0,0,0,0,0,0,86,222,255,106,0,0,0,0,0,0,0,0,0,0,0,0,18,248,80,0,0,0,0,0,0,0,8,165,186,221,190,7,0,0,0,0,0,0,0,0,0,0,0,0,154,254,13,0,0,0,0,0,0,26,161,124,58,248,133,0,0,0,0,0,0,0,0,0,0,0,0,0,164,204,4,0,0,0,0,42,122,199,91,0,128,243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,141,44,44,122,177,249,188,34,0,16,227,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,235,254,254,246,198,84,21,0,0,103,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,47,47,37,0,0,0,0,29,212,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,191,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,241,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,110,150,253,253,255,253,253,253,110,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,253,252,252,252,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,237,215,215,132,133,215,221,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,62,0,0,0,0,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,155,253,252,241,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,232,252,253,241,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,237,252,252,191,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,255,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,115,222,252,253,189,76,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,252,252,252,217,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,206,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,253,253,217,0,0,0,0,0,0,0,79,109,63,94,129,108,0,0,0,0,0,0,0,0,109,252,252,252,252,252,247,217,218,217,217,217,218,217,242,252,238,247,252,108,0,0,0,0,0,0,0,0,109,252,252,252,252,252,252,252,253,252,252,252,253,252,252,252,253,220,215,92,0,0,0,0,0,0,0,0,47,108,211,252,252,252,252,252,253,252,252,252,108,108,108,108,108,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,255,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,203,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,237,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,106,146,246,255,255,254,255,166,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,176,253,253,253,253,253,253,253,253,234,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,177,253,253,249,202,225,139,139,211,248,253,229,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,206,24,0,0,0,0,0,0,88,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,245,25,0,0,0,0,0,54,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,199,250,94,0,0,0,3,11,113,208,243,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,188,6,0,17,49,139,253,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,201,195,215,253,253,253,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,203,253,253,253,253,253,253,241,245,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,222,248,253,253,250,176,20,61,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,99,179,182,105,0,0,22,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0,132,253,162,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,244,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,253,247,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,209,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,160,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,192,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,155,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,236,112,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,55,138,191,255,180,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,136,252,252,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,153,69,169,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,235,77,9,0,138,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,243,60,0,0,0,138,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,116,0,0,0,0,149,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,88,38,22,0,74,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,121,253,240,215,184,215,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,160,160,183,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,170,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,235,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,210,250,190,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,222,253,232,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,219,252,235,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,184,253,252,170,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,252,245,87,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,210,137,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,140,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,247,227,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,244,189,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,195,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,121,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,251,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,213,249,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,169,254,201,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,237,152,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,175,41,161,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,244,53,0,7,218,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,225,0,0,0,214,194,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,251,47,0,0,10,219,155,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,74,0,0,78,254,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,142,0,0,109,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,251,238,84,166,242,223,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,202,235,135,100,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,174,186,187,186,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,158,254,254,254,255,254,237,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,183,249,196,196,147,136,130,58,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,59,83,215,244,221,75,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,217,253,248,138,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,254,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,196,254,136,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,99,203,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,217,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,18,0,0,0,0,0,0,0,0,65,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,124,6,0,0,0,0,0,0,0,197,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,202,136,108,59,59,65,114,136,235,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,169,253,253,254,253,253,247,254,253,168,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,204,235,234,234,162,103,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,149,180,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,130,194,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,132,228,252,252,252,215,110,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,124,207,248,253,252,227,66,45,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,179,244,252,252,252,137,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,255,253,215,116,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,236,253,187,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,255,253,253,253,148,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,252,253,244,240,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,215,215,215,98,50,69,236,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,0,230,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,185,111,172,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,211,252,252,252,168,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,13,96,168,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,192,255,253,253,182,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,252,253,252,252,252,169,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,187,252,252,253,252,252,252,252,84,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,204,160,252,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,169,252,238,90,17,42,225,252,252,252,236,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,212,30,31,23,57,236,252,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,252,253,224,47,120,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,204,252,252,252,252,253,252,88,7,172,252,252,194,21,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,252,252,252,252,234,207,73,0,75,252,252,252,59,0,0,0,0,0,0,0,0,0,0,0,9,149,240,252,252,252,225,103,61,0,0,0,75,252,252,252,146,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,154,35,0,0,0,0,0,75,253,253,253,208,0,0,0,0,0,0,0,0,0,0,85,236,252,252,252,140,3,0,0,0,0,0,0,110,252,252,230,70,0,0,0,0,0,0,0,0,0,0,208,252,252,252,250,111,0,0,0,0,0,1,86,242,252,252,153,0,0,0,0,0,0,0,0,0,0,50,229,252,252,252,222,0,0,0,0,0,29,128,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,90,0,0,0,0,0,104,252,252,252,252,132,2,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,95,14,29,30,30,179,239,252,252,252,125,35,0,0,0,0,0,0,0,0,0,0,0,49,228,252,252,252,252,189,245,252,252,253,252,252,252,212,35,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,252,252,252,252,252,252,252,253,252,246,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,236,252,252,252,252,252,252,252,208,171,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,252,252,137,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,115,197,192,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,84,205,244,254,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,211,254,254,254,242,189,127,14,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,244,254,254,251,197,29,0,0,61,234,210,89,2,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,254,200,112,0,0,0,18,196,254,254,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,231,15,0,0,0,17,236,254,254,230,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,124,254,254,204,44,0,17,194,254,254,197,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,183,251,254,247,203,202,254,254,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,229,254,254,254,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,201,254,254,254,254,122,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,254,254,210,254,254,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,229,254,254,118,4,208,254,254,159,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,174,1,0,33,231,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,159,0,0,0,39,170,254,228,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,251,65,0,0,0,0,9,219,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,214,0,0,0,0,0,0,126,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,251,109,0,0,0,0,52,233,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,137,250,230,170,91,91,135,233,254,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,254,254,254,254,232,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,55,133,137,254,203,94,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,42,0,0,0,0,0,0,112,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,233,44,0,0,0,0,59,250,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,168,0,0,0,0,0,58,250,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,9,0,0,0,0,78,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,249,171,2,0,0,0,0,78,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,72,0,0,0,0,0,78,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,240,30,0,0,0,0,0,170,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,230,0,0,0,0,0,2,180,251,65,0,0,91,42,0,0,0,0,0,0,0,0,0,0,0,0,0,185,230,0,0,0,0,0,15,254,211,0,24,133,237,91,0,0,0,0,0,0,0,0,0,0,0,0,87,254,139,0,0,0,34,49,133,254,236,221,245,254,177,5,0,0,0,0,0,0,0,0,0,0,0,0,92,254,135,48,131,207,240,254,254,254,247,240,213,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,224,254,254,254,200,177,211,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,181,250,178,95,19,6,0,164,183,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,48,0,0,0,0,39,245,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,194,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,85,81,172,200,232,147,45,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,180,254,254,254,254,254,254,254,183,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,252,249,165,41,55,140,243,254,187,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,135,0,0,0,0,0,9,203,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,234,216,0,0,0,0,0,0,133,254,248,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,129,0,0,0,0,0,0,60,254,254,220,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,204,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,254,241,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,163,163,210,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,227,254,254,254,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,254,253,207,221,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,250,254,254,89,0,99,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,48,48,3,0,99,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,184,254,255,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,100,0,0,0,0,0,0,150,254,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,254,229,141,89,33,73,244,253,254,251,120,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,217,254,254,254,254,254,254,254,227,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,146,199,254,215,146,74,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,224,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,172,124,19,19,19,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,141,253,253,253,253,253,212,98,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,56,225,253,253,244,222,222,249,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,135,253,253,244,182,65,0,0,79,216,253,213,26,0,0,0,0,0,0,0,0,0,0,0,0,0,6,135,253,253,244,158,0,0,0,0,0,34,216,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,25,235,253,253,113,0,0,0,0,0,0,0,85,250,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,176,74,22,0,0,0,0,0,0,0,76,248,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,253,100,0,0,0,0,0,0,0,0,0,0,0,0,48,81,81,163,180,81,62,0,0,0,0,0,139,253,218,8,40,0,0,0,0,0,0,0,0,0,5,157,236,253,253,253,253,253,243,211,114,60,0,121,248,253,77,144,189,0,0,0,0,0,0,0,0,52,219,253,244,160,160,176,189,226,253,253,253,242,217,248,253,253,236,210,21,0,0,0,0,0,0,0,0,179,253,188,27,0,0,6,10,22,61,229,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,254,253,111,0,0,0,0,0,76,136,248,253,253,217,186,253,253,207,19,0,0,0,0,0,0,0,0,0,200,253,243,163,112,191,236,236,248,253,253,220,103,12,7,18,18,10,0,0,0,0,0,0,0,0,0,0,9,199,253,253,253,253,253,253,169,135,103,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,5,5,5,5,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,113,144,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,164,254,254,224,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,162,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,254,250,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,255,254,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,160,254,255,254,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,254,254,192,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,206,254,254,254,249,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,254,254,207,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,225,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,231,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,109,200,210,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,171,253,232,109,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,176,237,253,252,252,252,238,217,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,253,241,221,252,253,252,241,181,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,217,252,252,253,97,16,108,253,252,252,252,144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,124,221,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,252,252,128,0,0,0,0,0,0,57,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,27,221,252,252,205,31,0,0,0,0,0,0,11,175,253,231,52,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,71,0,0,0,0,0,0,0,0,62,253,252,71,0,0,0,0,0,0,0,0,0,0,73,253,253,253,119,0,0,0,0,0,0,0,0,0,0,255,253,72,0,0,0,0,0,0,0,0,0,0,197,252,252,220,25,0,0,0,0,0,0,0,0,0,0,253,252,195,0,0,0,0,0,0,0,0,0,0,217,252,252,143,0,0,0,0,0,0,0,0,0,0,105,253,252,195,0,0,0,0,0,0,0,0,0,0,217,252,252,143,0,0,0,0,0,0,0,0,0,21,206,253,252,71,0,0,0,0,0,0,0,0,0,0,218,253,253,0,0,0,0,0,0,0,0,0,0,99,253,255,253,72,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,187,242,252,253,148,10,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,21,99,242,252,252,154,10,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,105,206,253,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,191,109,109,109,171,253,253,253,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,252,252,252,252,253,252,252,252,180,55,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,241,252,252,252,252,252,253,241,215,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,108,169,252,252,168,108,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,120,145,145,145,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,128,233,253,254,253,253,250,152,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,237,169,235,177,144,144,223,253,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,11,0,0,0,0,0,38,227,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,199,0,0,0,0,0,0,58,137,0,0,0,0,0,0,0,0,0,0,0,0,0,16,55,28,11,222,254,198,0,0,0,36,139,223,245,133,0,0,0,0,0,0,0,0,0,0,77,128,192,228,253,235,220,253,254,226,128,198,217,241,253,208,53,0,0,0,0,0,0,0,0,0,64,199,245,253,253,254,253,253,253,253,254,253,253,253,253,216,125,8,0,0,0,0,0,0,0,0,0,0,195,253,253,142,72,72,240,253,253,220,163,162,162,129,98,26,0,0,0,0,0,0,0,0,0,0,0,0,255,254,133,0,53,157,254,254,222,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,160,151,248,254,253,212,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,250,253,253,253,243,145,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,144,144,80,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,141,155,206,255,160,155,96,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,248,253,253,253,253,253,253,253,162,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,89,89,89,89,89,89,196,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,236,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,19,128,215,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,190,226,237,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,223,253,253,231,139,68,3,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,159,158,159,252,253,240,159,186,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,85,178,253,253,201,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,179,253,253,238,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,94,212,253,190,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,220,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,3,175,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,22,0,0,0,0,0,0,0,128,253,158,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,123,0,0,0,0,0,8,201,248,187,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,232,46,0,0,0,22,178,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,249,168,145,186,247,227,43,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,54,203,253,253,252,130,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,217,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,248,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,248,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,240,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,160,0,0,36,68,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,146,0,109,254,255,254,187,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,119,12,230,168,31,105,221,225,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,80,129,245,20,0,0,42,232,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,80,199,201,0,0,0,0,91,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,146,248,121,0,0,0,0,81,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,207,235,107,0,0,0,0,63,240,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,252,107,0,0,0,5,193,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,253,107,0,0,65,205,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,209,147,197,251,213,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,144,243,236,155,110,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,185,254,198,254,254,255,225,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,242,230,229,229,229,246,253,165,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,168,51,0,0,0,0,98,227,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,158,8,0,0,0,0,0,0,25,222,221,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,160,239,253,225,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,97,206,238,253,253,184,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,184,64,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,253,151,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,253,253,251,213,122,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,122,122,208,242,252,104,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,250,154,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,242,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,102,239,253,225,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,154,213,253,253,253,184,47,0,0,0,0,0,0,0,0,0,0,0,0,0,66,51,98,98,201,218,218,254,253,239,156,128,36,7,0,0,0,0,0,0,0,0,0,0,0,231,230,230,246,242,253,253,253,253,253,254,191,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,202,253,195,166,132,132,132,132,17,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,90,102,198,94,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,154,253,254,254,254,254,164,108,15,0,26,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,237,104,95,66,168,192,248,80,135,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,215,17,0,0,0,0,2,13,32,252,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,251,228,102,29,0,0,0,0,0,105,254,234,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,230,254,224,129,9,0,0,32,250,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,126,230,254,216,128,48,132,254,240,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,107,218,254,250,249,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,123,247,254,254,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,254,210,197,244,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,249,44,5,149,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,247,254,179,0,0,22,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,237,43,0,0,22,254,247,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,215,0,0,0,61,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,179,0,0,12,200,254,245,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,129,0,3,130,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,133,2,72,254,254,248,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,243,192,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,255,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,134,244,159,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,253,186,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,253,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,152,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,86,131,131,131,131,131,131,131,131,131,131,131,13,0,0,0,0,0,0,0,0,0,0,7,19,137,206,254,254,254,254,254,254,254,254,254,254,254,254,255,203,80,7,0,0,0,0,0,0,0,0,140,254,254,254,254,254,251,236,236,205,112,112,112,112,112,160,244,254,254,130,0,0,0,0,0,0,0,0,170,254,242,240,153,105,87,0,0,0,0,0,0,0,0,0,44,232,254,203,0,0,0,0,0,0,0,0,3,99,51,41,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,234,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,135,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,199,254,227,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,247,254,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,254,174,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,202,254,133,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,202,254,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,203,254,183,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,203,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,129,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,131,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,100,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,63,152,163,191,109,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,217,248,254,254,254,254,254,227,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,235,254,249,163,111,67,67,168,254,211,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,220,254,254,249,126,5,0,0,1,140,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,254,254,247,17,0,0,0,102,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,254,227,77,72,50,0,0,0,0,102,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,254,123,6,0,0,0,0,0,0,0,102,254,201,0,0,0,0,0,0,0,0,0,0,0,0,5,204,254,166,8,0,0,0,0,0,0,0,0,102,254,131,0,0,0,0,0,0,0,0,0,0,0,0,90,254,227,35,0,0,0,0,0,0,0,0,0,169,254,190,0,0,0,0,0,0,0,0,0,0,0,0,246,254,77,0,0,0,0,0,0,0,0,0,92,251,254,70,0,0,0,0,0,0,0,0,0,0,0,117,254,229,14,0,0,0,0,0,0,0,0,5,178,254,152,6,0,0,0,0,0,0,0,0,0,0,20,233,254,69,0,0,0,0,0,0,0,0,0,138,254,184,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,38,0,0,0,0,0,0,0,0,116,248,248,91,0,0,0,0,0,0,0,0,0,0,0,3,167,254,208,8,0,0,0,0,0,0,0,79,244,254,172,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,133,0,0,0,0,0,0,0,79,248,254,179,8,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,50,0,0,0,0,0,41,140,247,254,184,41,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,4,0,0,0,5,104,230,254,254,181,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,208,254,108,68,68,125,239,254,254,251,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,233,254,254,254,254,254,244,166,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,178,254,254,234,151,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,136,9,0,0,0,23,215,237,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,171,0,0,0,0,110,254,233,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,251,77,0,0,0,52,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,201,0,0,0,6,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,132,0,0,0,91,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,204,23,0,0,4,226,254,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,89,2,0,0,65,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,177,167,167,185,254,254,188,167,167,167,97,9,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,255,254,254,254,254,254,254,254,254,254,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,30,241,254,254,254,254,254,254,254,254,254,254,254,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,38,52,125,155,155,239,254,254,254,179,155,155,155,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,158,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,237,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,210,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,254,199,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,43,185,254,255,227,150,3,75,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,253,253,253,237,238,253,253,206,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,221,100,65,2,3,156,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,114,0,0,0,0,9,213,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,228,253,128,0,0,0,0,0,41,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,253,225,29,0,0,0,0,136,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,234,95,2,0,52,245,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,109,245,253,253,230,230,246,253,253,216,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,145,224,253,251,147,213,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,8,0,188,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,181,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,177,177,177,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,124,210,250,253,253,253,249,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,192,253,253,180,121,121,178,254,193,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,132,238,253,217,112,8,0,0,111,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,158,19,0,0,0,0,149,254,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,250,108,1,0,0,0,0,0,221,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,120,0,0,0,0,0,0,67,241,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,54,0,0,0,0,0,33,237,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,184,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,158,34,139,254,255,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,247,253,253,253,254,253,253,253,253,227,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,220,253,253,253,253,254,227,154,58,175,253,252,82,0,44,0,0,0,0,0,0,0,0,0,0,0,22,207,253,253,253,237,134,107,8,0,0,3,88,242,247,237,177,0,0,0,0,0,0,0,0,0,0,66,212,253,253,227,179,23,0,0,0,0,0,0,0,47,198,90,0,0,0,0,0,0,0,0,0,0,92,220,253,253,184,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,247,253,238,108,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,240,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,231,250,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,215,248,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,129,6,0,93,241,235,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,77,16,194,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,150,254,225,33,139,254,163,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,73,46,192,254,156,112,112,138,193,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,231,254,254,254,254,254,254,254,254,254,254,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,115,208,247,254,246,211,211,122,75,19,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,214,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,238,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,202,220,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,222,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,191,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,64,0,64,64,128,128,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,128,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,128,0,64,128,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,191,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,208,230,132,41,13,13,13,13,13,6,0,3,13,13,111,237,143,6,0,0,0,0,0,0,0,0,0,145,252,252,252,252,252,252,252,252,253,190,145,165,252,252,252,252,252,11,0,0,0,0,0,0,0,0,8,211,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,167,5,0,0,0,0,0,0,0,0,13,252,252,220,84,175,204,204,204,227,205,204,204,213,252,252,252,234,19,0,0,0,0,0,0,0,0,0,13,252,252,204,0,0,0,0,0,35,0,0,0,78,252,252,191,45,0,0,0,0,0,0,0,0,0,0,9,221,252,169,0,0,0,0,0,0,0,0,121,233,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,39,93,16,0,0,0,0,0,0,0,9,189,252,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,169,252,252,229,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,252,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,253,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,247,253,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,252,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,184,252,252,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,252,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,241,252,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,252,252,252,55,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,216,40,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,138,243,191,118,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,25,19,219,168,131,227,252,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,202,25,80,35,51,126,227,252,232,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,69,0,0,13,61,246,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,79,0,22,87,159,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,227,161,244,253,252,252,235,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,252,252,215,183,100,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,252,252,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,239,237,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,92,25,223,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,92,0,99,246,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,234,17,0,0,230,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,241,42,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,255,92,0,0,231,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,92,0,17,234,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,209,131,209,252,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,252,252,252,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,252,252,147,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,182,144,148,254,254,206,144,221,211,134,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,253,253,254,253,253,253,203,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,154,154,154,197,154,154,211,184,154,249,253,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,6,4,0,185,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,223,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,235,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,217,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,250,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,244,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,239,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,254,192,0,0,0,0,0,0,51,193,193,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,70,0,0,0,0,0,82,233,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,11,173,255,253,102,0,0,0,0,0,0,102,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,61,0,0,0,0,0,21,203,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,233,0,0,0,0,0,0,72,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,232,0,0,0,0,0,0,193,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,253,173,92,41,0,0,123,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,252,253,252,243,203,203,243,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,183,254,233,254,253,254,253,254,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,71,172,252,253,252,233,151,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,232,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,226,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,255,198,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,114,170,226,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,226,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,170,0,0,0,0,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,57,198,255,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,226,141,57,114,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,170,86,0,0,0,0,198,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,0,0,0,0,29,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,86,170,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,255,226,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,239,253,190,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,244,253,253,253,252,171,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,208,253,253,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,234,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,42,184,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,211,76,7,177,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,198,253,244,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,244,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,32,0,0,0,0,0,157,186,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,247,247,52,0,0,0,20,244,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,72,0,0,0,81,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,242,254,254,31,0,0,0,94,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,249,28,0,0,0,170,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,190,254,254,158,0,0,0,0,170,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,230,12,0,0,0,0,170,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,183,0,0,0,0,3,224,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,251,254,254,111,0,0,0,0,26,254,254,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,254,105,51,45,40,0,141,254,254,226,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,254,254,254,254,254,249,125,192,254,254,207,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,219,254,254,254,254,254,254,214,225,254,254,236,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,71,132,249,250,250,196,23,210,254,254,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,237,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,220,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,203,254,166,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,147,237,181,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,132,185,185,222,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,234,254,254,254,254,254,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,254,254,254,254,254,254,226,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,211,99,65,251,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,204,244,234,135,47,13,0,0,250,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,215,254,250,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,186,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,230,254,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,170,239,239,245,254,254,254,159,5,0,0,0,0,0,0,0,0,0,0,0,0,36,95,168,168,168,211,254,254,254,254,254,254,254,186,2,0,0,0,0,0,0,0,0,0,0,0,0,181,235,254,254,254,254,254,254,254,254,254,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,49,245,253,254,254,254,254,254,254,254,254,254,254,254,231,254,251,63,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,254,254,254,255,254,254,239,147,12,171,254,196,20,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,254,254,254,254,254,201,70,0,0,11,219,254,166,0,0,0,0,0,0,0,0,0,133,254,254,254,254,254,254,254,252,199,74,3,0,0,0,0,48,238,253,97,0,0,0,0,0,0,0,0,28,235,254,254,254,254,254,200,80,0,0,0,0,0,0,0,0,141,254,116,0,0,0,0,0,0,0,0,0,27,134,254,220,141,38,9,0,0,0,0,0,0,0,0,0,21,84,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,231,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,252,243,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,145,252,199,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,229,252,200,48,0,0,0,0,0,113,169,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,230,252,252,88,0,0,0,0,4,85,230,218,21,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,252,252,232,40,0,0,0,0,53,252,252,195,48,0,0,0,0,0,0,0,0,0,0,0,0,0,13,252,252,252,145,0,0,0,0,47,237,252,175,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,252,252,229,90,0,0,0,0,172,253,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,252,252,252,249,149,121,17,161,252,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,248,253,253,253,253,253,253,253,253,255,229,0,0,0,0,0,0,64,6,0,0,0,0,0,0,0,0,0,76,252,252,252,252,252,252,252,252,235,98,0,0,0,0,0,0,229,11,0,0,0,0,0,0,0,0,0,10,96,153,125,244,252,252,252,252,104,0,0,0,0,0,0,0,229,11,0,0,0,0,0,0,0,0,0,0,0,0,12,204,252,252,252,148,0,0,0,0,0,0,0,0,76,4,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,252,145,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,252,228,76,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,143,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,205,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,228,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,253,229,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,197,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,193,5,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,171,200,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,226,253,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,119,202,254,223,197,142,79,79,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,116,234,253,253,253,253,208,251,253,253,251,160,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,204,155,41,17,6,17,17,35,160,253,227,15,0,0,0,0,0,0,0,0,0,0,0,0,74,250,244,86,6,0,0,0,0,0,0,0,20,132,253,61,0,0,0,0,0,0,0,0,0,0,0,0,133,253,133,0,0,0,0,0,0,0,0,0,0,5,65,9,0,0,0,0,0,0,0,0,0,0,0,0,11,232,215,33,0,0,0,0,0,0,0,38,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,185,33,0,0,0,0,0,28,221,244,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,253,226,156,103,12,12,73,201,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,199,248,253,253,229,230,253,253,253,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,165,229,253,254,253,253,216,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,255,254,186,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,250,254,185,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,248,253,159,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,217,253,174,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,168,253,203,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,232,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,211,250,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,238,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,57,57,86,197,255,253,255,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,197,251,225,224,253,251,253,251,253,251,225,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,255,253,254,253,254,253,254,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,253,251,253,251,253,251,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,169,255,253,255,253,255,253,254,196,169,168,198,253,254,253,254,139,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,253,251,196,28,0,0,28,196,253,251,253,251,114,0,0,0,0,0,0,0,0,0,86,253,255,253,255,253,226,56,0,0,0,0,0,0,254,253,254,253,169,0,0,0,0,0,0,0,0,0,197,251,253,251,253,251,168,0,0,0,0,0,0,0,253,251,253,251,225,56,0,0,0,0,0,0,0,0,255,253,254,253,254,253,114,0,0,0,0,0,0,0,85,253,254,253,254,84,0,0,0,0,0,0,0,0,253,251,253,251,253,251,0,0,0,0,0,0,0,0,85,251,253,251,253,196,0,0,0,0,0,0,0,0,255,253,254,253,254,253,0,0,0,0,0,0,0,0,85,253,254,253,254,253,0,0,0,0,0,0,0,0,253,251,253,251,253,251,0,0,0,0,0,0,0,0,85,251,253,251,253,251,0,0,0,0,0,0,0,0,198,253,254,253,254,253,0,0,0,0,0,0,0,0,85,253,254,253,254,253,0,0,0,0,0,0,0,0,85,251,253,251,253,251,0,0,0,0,0,0,0,0,85,251,253,251,253,251,0,0,0,0,0,0,0,0,57,225,254,253,254,253,198,85,0,0,29,85,85,197,254,253,254,253,254,84,0,0,0,0,0,0,0,0,0,56,253,251,253,251,253,251,169,168,197,251,253,251,253,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,85,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,28,83,253,251,253,251,253,251,253,251,253,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,198,196,254,253,254,253,226,168,169,168,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,84,83,84,83,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,216,255,254,229,59,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,114,248,253,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,187,253,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,251,140,222,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,247,253,253,76,0,120,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,251,123,3,31,214,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,205,17,148,219,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,242,215,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,201,186,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,250,130,20,22,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,161,161,59,0,0,22,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,233,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,206,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,246,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,165,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,51,107,107,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,156,226,247,238,252,252,237,226,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,252,252,252,252,252,252,235,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,252,252,252,252,252,252,253,230,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,198,198,198,198,198,115,143,227,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,181,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,146,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,252,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,202,252,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,211,253,253,253,255,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,107,208,252,252,252,252,253,150,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,214,252,252,252,252,252,252,253,185,45,94,94,94,94,35,50,0,0,0,0,0,0,0,0,0,39,81,214,252,252,252,252,252,252,252,253,252,231,252,252,252,252,227,227,38,0,0,0,0,0,0,0,0,190,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,252,224,0,0,0,0,0,0,0,0,121,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,221,198,0,0,0,0,0,0,0,0,121,252,252,252,252,252,252,252,252,252,253,252,216,212,212,212,121,79,33,0,0,0,0,0,0,0,0,0,108,251,252,252,245,225,225,225,218,93,93,93,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,106,106,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,251,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,250,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,249,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,194,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,195,249,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,112,246,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,236,207,41,107,35,0,27,188,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,52,0,0,0,0,123,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,175,51,6,0,67,254,206,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,216,254,254,214,166,238,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,218,254,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,102,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,254,236,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,184,226,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,227,219,0,171,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,70,0,191,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,16,4,207,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,214,6,16,254,224,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,195,254,57,0,106,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,233,18,55,255,240,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,166,87,246,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,238,250,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,214,254,139,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,47,134,150,234,152,73,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,94,188,253,253,234,196,238,82,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,147,245,253,253,230,128,8,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,220,253,245,170,79,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,224,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,167,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,191,253,225,155,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,99,223,253,242,164,84,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,151,238,253,253,251,134,53,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,51,120,197,253,253,203,125,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,26,109,217,253,251,175,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,62,117,228,248,164,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,215,253,243,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,100,243,237,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,139,0,0,0,0,0,0,0,0,75,91,31,0,0,0,0,0,0,0,0,0,0,0,0,6,96,242,187,49,0,0,0,0,0,0,0,0,7,197,229,184,115,42,10,0,0,0,5,28,115,115,115,211,253,245,51,0,0,0,0,0,0,0,0,0,0,0,52,169,226,253,248,161,161,161,197,253,253,253,253,202,196,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,76,149,175,253,253,253,151,149,95,46,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,255,173,47,47,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,253,253,253,188,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,253,253,253,253,253,251,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,189,236,170,170,170,170,230,248,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,16,0,0,0,0,182,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,232,253,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,198,252,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,103,252,253,253,253,214,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,110,196,221,253,253,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,253,253,253,253,253,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,253,215,155,77,64,225,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,212,125,45,3,0,0,0,3,212,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,183,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,135,228,246,253,248,96,0,0,0,0,0,0,0,0,0,0,0,0,10,18,0,48,68,68,68,68,109,185,253,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,130,227,218,243,253,253,253,253,253,253,253,253,250,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,253,253,253,199,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,46,100,149,149,175,253,189,149,132,46,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,217,217,134,73,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,252,252,252,253,231,160,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,253,252,252,252,253,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,211,252,253,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,144,252,252,253,252,252,210,253,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,212,252,252,231,154,113,195,31,149,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,108,0,0,0,0,109,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,222,41,0,0,0,0,0,255,253,253,108,0,0,0,0,0,0,0,0,42,0,0,0,32,207,252,252,253,55,0,0,0,0,0,84,253,252,252,108,0,0,0,0,0,0,0,0,41,0,0,21,211,252,252,231,72,10,0,0,0,0,47,181,253,241,112,31,0,0,0,0,0,0,0,0,0,0,21,206,252,252,231,46,0,0,0,0,0,42,221,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,222,41,0,0,0,0,0,110,253,253,253,208,20,0,0,0,0,0,0,0,0,0,0,0,21,201,252,252,179,0,0,0,0,53,155,233,252,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,76,0,0,16,161,232,252,253,252,226,132,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,159,144,144,191,252,252,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,222,253,253,253,253,253,255,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,169,179,252,252,252,252,253,252,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,215,215,215,215,154,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,228,193,163,85,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,55,133,196,214,252,252,252,229,197,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,84,161,225,249,233,153,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,253,233,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,252,240,71,0,0,0,0,0,7,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,63,0,0,0,0,0,126,165,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,253,240,63,0,38,113,128,253,255,215,140,47,0,0,0,0,0,0,0,0,0,0,0,0,57,163,238,252,252,154,163,226,234,252,252,204,168,33,0,0,0,0,0,0,0,0,0,0,0,0,51,166,234,252,253,252,252,252,252,253,252,208,102,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,252,230,223,223,84,84,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,173,112,112,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,167,34,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,253,253,187,178,177,133,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,253,255,253,253,231,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,228,253,253,253,234,184,126,102,248,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,227,130,88,12,0,0,0,147,253,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,131,0,0,0,0,0,0,15,223,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,48,239,253,253,79,0,0,0,0,0,0,0,166,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,238,18,0,0,0,0,0,0,0,146,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,131,0,0,0,0,0,0,0,0,39,237,242,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,199,242,0,0,0,0,0,0,0,0,0,0,0,0,0,101,255,254,55,0,0,0,0,0,0,0,0,0,90,245,13,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,55,0,0,0,0,0,0,0,0,0,89,253,99,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,89,253,99,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,89,253,156,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,113,253,136,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,172,8,0,0,0,0,0,0,0,130,242,245,22,0,0,0,0,0,0,0,0,0,0,0,0,9,239,253,253,132,55,8,0,0,0,10,175,246,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,223,155,155,155,237,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,90,237,253,253,253,253,254,253,253,213,104,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,86,143,225,253,255,224,143,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,238,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,236,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,36,0,0,43,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,14,0,43,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,250,13,0,47,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,247,197,0,0,114,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,130,0,0,114,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,127,0,0,152,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,238,230,254,255,254,244,211,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,239,223,168,129,230,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,240,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,198,171,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,177,216,253,253,253,224,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,121,143,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,203,253,244,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,230,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,244,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,148,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,125,125,159,253,169,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,241,247,253,253,253,253,253,249,104,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,225,253,253,253,253,253,253,253,253,253,222,101,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,221,252,253,253,253,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,246,148,252,253,242,212,123,79,212,229,231,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,186,70,0,0,0,0,39,44,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,134,253,253,119,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,119,177,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,61,61,94,178,249,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,147,254,254,254,254,254,192,109,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,172,249,176,169,169,137,89,23,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,121,255,234,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,95,254,202,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,255,254,204,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,251,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,178,126,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,162,158,77,0,90,70,5,79,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,55,160,238,24,0,3,71,232,212,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,116,36,241,214,182,206,254,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,224,235,254,254,254,254,242,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,129,196,210,161,77,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,170,255,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,206,253,215,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,199,253,221,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,167,253,142,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,238,218,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,191,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,193,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,246,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,249,109,0,0,0,0,0,0,0,0,13,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,226,227,0,0,0,0,0,0,0,0,138,211,240,65,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,227,0,0,0,0,0,0,48,214,253,253,253,250,34,0,0,0,0,0,0,0,0,0,0,0,0,37,253,227,0,0,0,0,16,119,252,158,72,96,243,205,11,0,0,0,0,0,0,0,0,0,0,0,0,19,221,240,47,0,0,12,194,253,115,7,76,207,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,230,21,0,179,240,145,13,146,249,233,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,240,253,216,140,248,246,218,224,253,188,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,213,253,253,253,253,253,180,93,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,95,149,237,211,46,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,80,245,228,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,191,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,162,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,245,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,27,14,0,0,0,0,0,89,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,177,255,218,133,0,0,0,0,161,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,234,254,244,239,95,0,0,0,37,247,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,212,27,0,0,0,0,0,42,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,37,0,0,0,0,0,0,129,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,237,16,0,0,0,0,0,0,146,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,238,16,0,0,0,0,0,0,187,218,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,37,0,0,0,0,0,0,250,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,223,121,47,0,0,0,71,252,233,108,166,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,196,252,254,248,240,240,240,252,254,254,212,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,231,254,254,254,254,254,254,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,118,129,129,129,229,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,243,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,84,128,188,188,188,188,188,188,188,188,188,188,69,0,0,0,0,0,0,0,0,0,0,0,0,0,8,126,254,254,254,254,254,254,254,254,254,254,254,254,193,0,0,0,0,0,0,0,0,0,0,0,54,169,199,255,207,179,78,78,180,181,127,78,78,78,78,78,46,0,0,0,0,0,0,0,0,0,45,135,247,254,244,190,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,244,90,63,63,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,245,249,254,255,254,254,218,89,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,202,227,254,254,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,144,254,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,93,0,0,0,0,0,80,254,246,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,160,0,0,0,0,6,197,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,211,121,9,0,0,128,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,214,254,201,87,79,234,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,143,254,254,255,254,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,117,187,187,180,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,214,47,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,252,252,196,184,174,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,140,67,160,160,202,253,244,124,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,11,0,0,0,11,44,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,0,0,0,0,0,0,22,216,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,0,0,0,0,0,0,0,163,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,0,0,0,0,0,0,0,19,188,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,95,0,0,0,0,0,0,0,59,244,218,34,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,11,0,0,0,0,0,0,0,0,178,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,11,0,0,0,0,0,0,0,0,116,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,95,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,252,116,0,0,0,0,0,0,0,0,0,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,157,0,0,0,0,0,0,0,0,0,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,241,42,0,0,0,0,0,0,0,0,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,154,0,0,0,0,0,0,9,128,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,236,129,9,0,0,0,13,122,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,196,131,81,184,203,252,252,215,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,252,252,252,253,252,252,252,168,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,22,117,189,243,137,137,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,154,210,254,254,253,80,0,65,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,249,253,228,143,163,243,239,131,239,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,246,155,5,0,0,0,120,244,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,176,0,0,0,0,0,0,128,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,124,0,0,0,0,0,0,115,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,139,9,0,0,0,0,0,115,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,130,5,0,0,0,0,148,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,151,250,253,225,139,139,139,202,251,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,190,253,253,253,253,253,253,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,81,104,104,42,98,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,254,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,254,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,220,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,64,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,191,255,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,64,255,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,64,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,179,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,7,48,130,229,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,219,254,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,245,254,254,243,195,171,90,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,121,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,218,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,254,176,80,60,140,78,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,254,254,254,254,254,254,254,159,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,254,254,254,254,254,254,254,185,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,254,252,249,151,151,251,254,254,220,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,125,194,161,43,0,0,0,23,143,254,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,235,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,246,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,248,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,190,190,118,129,128,190,190,205,254,254,254,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,254,254,254,254,254,254,254,254,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,55,145,154,194,192,254,254,254,170,88,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,123,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,236,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,147,242,232,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,182,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,125,4,0,0,0,0,0,0,27,110,110,167,63,0,0,0,0,0,0,0,0,0,0,0,35,250,253,184,3,0,0,0,0,0,76,202,245,253,253,253,249,184,0,0,0,0,0,0,0,0,0,19,209,254,254,118,0,0,0,0,0,89,254,255,252,207,122,230,254,254,0,0,0,0,0,0,0,0,0,145,253,253,207,26,0,0,0,0,31,207,250,206,83,0,0,42,240,253,0,0,0,0,0,0,0,0,25,212,253,246,62,0,0,0,16,95,254,250,128,0,0,0,0,0,197,252,0,0,0,0,0,0,0,0,214,253,246,108,0,0,0,19,195,253,252,128,0,0,0,0,0,42,107,244,0,0,0,0,0,0,0,0,254,253,217,0,0,0,0,184,253,253,69,0,0,0,0,18,159,243,253,195,0,0,0,0,0,0,0,0,254,253,227,59,0,0,100,245,253,126,0,0,0,0,53,182,253,253,135,3,0,0,0,0,0,0,0,0,214,253,253,244,206,148,244,253,164,3,0,0,71,206,240,253,253,77,5,0,0,0,0,0,0,0,0,0,19,115,253,253,253,253,253,253,238,160,104,218,240,253,253,179,58,5,0,0,0,0,0,0,0,0,0,0,0,3,41,144,222,253,253,253,253,253,254,253,238,144,58,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,52,132,132,132,132,121,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,249,255,222,129,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,254,253,253,183,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,254,245,253,253,204,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,247,44,173,246,244,138,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,253,253,101,0,0,118,253,237,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,141,0,0,0,16,228,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,238,253,126,12,0,0,0,0,204,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,253,193,7,0,0,0,0,0,157,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,236,22,0,0,0,0,0,0,123,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,218,253,117,0,0,0,0,0,0,0,123,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,252,58,0,0,0,0,0,0,0,100,254,215,8,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,220,11,0,0,0,0,0,0,11,194,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,253,135,0,0,0,0,0,0,0,33,240,248,124,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,41,0,0,0,0,0,0,4,159,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,80,0,0,0,0,0,0,17,235,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,235,253,80,0,0,0,0,0,4,148,253,245,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,222,253,130,0,0,0,0,61,199,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,248,184,147,147,227,254,253,246,140,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,239,253,253,253,253,253,254,195,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,187,253,205,171,171,61,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,222,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,250,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,134,112,175,254,156,117,56,68,27,25,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,255,254,253,249,249,254,254,254,254,243,225,188,126,128,116,72,8,2,0,0,0,0,0,0,0,0,7,116,231,254,153,0,0,45,49,61,87,104,110,135,179,197,158,202,195,132,0,0,0,0,0,0,0,0,0,0,20,69,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,130,253,255,253,244,105,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,252,252,253,252,252,252,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,210,252,252,252,253,252,252,252,252,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,252,253,252,252,252,252,252,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,243,252,252,168,29,29,29,29,99,243,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,252,252,170,17,0,0,0,0,0,206,252,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,180,7,0,0,0,0,0,0,75,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,6,166,252,241,76,0,0,0,0,0,0,0,31,208,252,162,0,0,0,0,0,0,0,0,0,0,0,0,129,252,252,108,0,0,0,0,0,0,0,0,75,252,252,162,0,0,0,0,0,0,0,0,0,0,0,36,216,252,252,74,0,0,0,0,0,0,0,0,162,252,252,162,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,74,0,0,0,0,0,0,0,0,224,253,253,163,0,0,0,0,0,0,0,0,0,0,0,60,252,252,234,56,0,0,0,0,0,0,0,0,223,252,252,162,0,0,0,0,0,0,0,0,0,0,0,60,252,252,181,5,0,0,0,0,0,0,0,78,242,252,252,66,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,74,0,0,0,0,0,0,8,182,252,252,188,8,0,0,0,0,0,0,0,0,0,0,0,7,173,252,252,74,0,0,0,0,0,0,147,252,252,243,83,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,182,30,2,0,0,0,61,226,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,181,252,252,252,140,134,134,134,231,252,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,241,252,252,252,252,252,253,252,252,252,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,212,252,252,252,252,253,252,222,207,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,103,103,217,252,191,103,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,169,255,205,136,136,136,136,136,136,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,183,253,253,253,253,253,253,253,253,253,253,141,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,253,253,253,253,253,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,253,253,242,232,253,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,164,164,164,107,47,39,33,74,234,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,206,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,191,243,250,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,174,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,253,236,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,253,253,203,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,168,70,102,59,95,176,176,216,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,66,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,212,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,56,148,148,145,27,0,0,0,0,0,21,209,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,10,201,253,253,253,245,146,48,48,48,101,211,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,40,237,253,253,253,253,253,253,253,253,253,253,253,253,237,72,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,253,253,253,253,253,253,253,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,188,253,253,253,253,253,253,253,253,253,242,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,122,135,201,253,253,253,253,201,185,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,234,152,51,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,252,253,232,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,21,102,163,243,254,213,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,213,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,203,203,123,0,0,0,92,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,213,203,243,254,172,0,0,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,212,91,10,0,40,213,252,123,123,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,244,81,0,0,0,0,132,253,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,122,0,0,0,0,0,10,212,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,102,0,0,0,0,0,51,233,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,142,0,0,0,0,41,233,252,213,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,112,0,0,113,233,254,172,21,162,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,232,142,102,253,252,91,10,0,20,172,252,243,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,203,203,102,20,0,0,0,0,0,123,234,253,234,152,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,131,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,13,13,117,133,133,198,254,254,173,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,253,253,254,253,253,253,227,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,253,253,254,253,253,253,253,226,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,209,205,85,84,84,117,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,192,72,7,0,0,0,0,14,173,253,229,26,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,253,168,0,0,0,0,0,0,0,96,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,168,0,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,65,0,0,0,0,0,0,42,243,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,48,0,0,0,0,0,0,49,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,184,3,0,0,0,0,0,0,164,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,118,0,0,0,0,0,0,101,255,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,16,131,229,54,0,0,0,0,0,0,157,253,253,246,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,222,253,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,223,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,216,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,178,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,225,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,220,254,177,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,225,254,206,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,211,254,235,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,254,254,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,202,254,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,164,254,194,2,0,0,28,128,150,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,252,72,0,54,178,233,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,214,0,89,238,254,250,212,191,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,254,250,225,254,244,166,43,19,166,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,254,254,207,63,0,114,201,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,233,120,17,77,198,252,254,204,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,244,190,203,254,254,214,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,254,236,146,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,156,254,254,217,134,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,136,85,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,73,197,253,252,252,252,221,135,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,156,252,252,253,242,223,242,252,253,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,190,74,0,75,112,174,252,165,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,112,0,0,0,0,0,192,253,222,101,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,252,252,102,12,0,0,0,0,0,113,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,7,165,253,252,176,19,0,0,0,0,0,0,113,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,195,19,0,0,0,0,0,0,0,113,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,214,31,0,0,0,0,0,0,0,113,252,252,161,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,168,0,0,0,0,0,0,0,0,192,253,196,0,0,0,0,0,0,0,0,0,0,0,48,212,252,252,152,18,0,0,0,0,0,0,0,0,191,252,118,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,7,57,222,233,74,0,0,0,0,0,0,0,0,0,0,0,57,234,252,252,47,0,0,0,0,0,0,54,178,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,173,0,0,0,0,0,0,48,227,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,63,241,253,225,0,0,0,0,0,0,176,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,223,0,0,0,0,57,163,253,252,233,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,252,230,57,120,197,197,234,252,228,195,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,130,246,252,252,253,252,252,252,236,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,205,252,253,252,220,112,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,94,139,168,234,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,78,125,209,250,253,254,218,167,104,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,246,253,254,239,164,95,52,38,5,8,177,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,99,78,13,10,0,0,0,0,0,50,254,249,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,213,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,240,248,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,247,227,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,163,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,225,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,218,248,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,235,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,214,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,246,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,235,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,219,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,212,254,254,255,226,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,207,253,254,224,191,214,254,250,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,217,254,254,163,30,0,10,55,200,229,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,220,254,244,83,5,0,0,0,0,72,251,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,254,246,104,0,0,0,0,0,0,0,232,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,253,101,0,0,0,0,0,0,0,53,248,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,215,0,0,0,0,0,0,0,0,218,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,14,225,254,99,0,0,0,0,0,0,0,80,253,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,67,0,0,0,0,0,0,0,102,254,241,27,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,67,0,0,0,0,0,0,67,244,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,249,254,152,10,0,0,0,15,107,241,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,214,109,108,154,224,254,254,254,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,181,254,254,254,254,254,254,250,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,88,173,173,230,173,131,97,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,9,146,254,204,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,250,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,253,205,182,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,254,226,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,202,254,225,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,236,253,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,203,252,245,79,0,0,0,51,93,93,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,73,0,0,95,220,243,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,75,3,118,253,253,253,231,230,199,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,252,172,51,118,252,218,164,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,202,112,246,215,162,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,235,64,80,56,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,236,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,236,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,95,0,0,0,3,117,252,252,242,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,0,0,0,0,5,191,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,236,44,0,0,57,178,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,119,70,174,253,252,252,195,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,252,252,253,193,77,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,221,210,137,75,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,38,38,110,146,204,255,164,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,160,253,253,253,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,197,251,253,253,253,248,160,200,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,185,229,210,125,94,0,0,135,253,236,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,67,219,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,37,228,252,141,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,113,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,87,156,241,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,192,249,253,253,248,191,237,250,231,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,250,199,81,0,0,116,228,230,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,161,125,50,0,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,247,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,214,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,2,27,0,0,0,0,0,0,0,0,0,53,212,209,14,0,0,0,0,0,0,0,0,0,0,0,0,0,96,228,130,99,0,0,0,0,0,0,25,225,242,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,229,217,18,0,26,98,250,241,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,195,253,253,207,96,78,179,238,247,183,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,119,196,253,253,253,184,106,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,141,204,228,141,141,141,141,141,141,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,187,252,252,253,252,252,252,253,252,252,252,207,56,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,252,252,214,168,168,168,168,168,168,196,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,252,139,0,0,0,0,0,0,47,240,253,84,0,0,0,0,0,0,0,0,0,0,0,0,10,229,255,247,100,0,0,0,0,0,0,0,86,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,66,246,253,121,0,0,0,0,0,0,0,0,160,252,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,187,244,56,0,0,0,0,0,0,0,45,240,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,25,0,0,0,0,0,0,0,0,157,252,252,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,209,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,125,154,254,255,254,254,174,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,249,253,253,253,253,253,253,253,253,241,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,142,142,142,142,142,142,142,211,253,253,243,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,104,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,157,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,180,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,230,253,214,28,0,0,0,0,0,0,0,0,0,0,0,0,23,59,9,0,0,0,0,0,0,10,76,229,253,250,90,0,0,0,0,0,0,0,0,0,0,25,110,116,210,253,193,116,146,12,0,0,10,150,253,253,249,124,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,253,214,245,253,194,146,46,150,253,253,248,125,0,0,0,0,0,0,0,0,0,0,0,84,251,253,96,84,84,13,122,253,253,253,253,253,253,248,125,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,169,46,33,143,191,253,253,253,253,253,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,253,253,253,247,246,253,253,191,60,0,0,0,0,0,0,0,0,0,0,0,0,0,102,228,234,241,253,247,234,234,132,80,75,207,253,253,189,140,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,110,74,0,0,0,0,0,77,199,253,253,253,184,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,133,251,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,255,254,240,118,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,253,253,253,253,253,253,244,234,234,234,211,37,0,0,0,0,0,0,0,0,0,0,0,0,0,71,237,253,253,253,253,253,253,253,253,253,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,12,189,253,253,253,155,61,161,198,198,198,198,198,198,198,75,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,209,151,151,151,151,151,151,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,253,253,253,253,253,253,253,253,146,28,0,0,0,0,0,0,0,0,0,0,0,0,0,33,219,253,253,253,253,253,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,173,164,164,164,166,253,253,253,247,204,34,0,0,0,0,0,0,0,0,0,0,0,56,237,253,249,184,50,5,0,0,0,2,115,212,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,82,112,64,0,0,0,0,0,0,0,0,28,229,253,253,236,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,116,0,0,0,0,0,0,0,0,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,194,0,0,0,0,0,0,0,0,184,204,20,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,0,0,0,0,0,0,0,0,254,253,201,81,0,0,0,0,0,0,0,0,0,0,0,79,250,253,253,197,0,0,0,0,0,0,0,0,135,253,253,246,127,83,41,0,0,0,0,0,0,41,83,213,253,253,253,116,0,0,0,0,0,0,0,0,25,181,243,253,253,253,225,139,63,63,163,199,199,226,253,253,253,253,203,25,0,0,0,0,0,0,0,0,0,0,104,221,253,253,253,253,253,253,253,253,253,253,253,253,243,189,28,0,0,0,0,0,0,0,0,0,0,0,0,21,114,232,232,253,253,253,253,253,253,243,232,187,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,116,116,116,116,116,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,122,254,254,254,254,254,255,255,199,121,38,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,202,253,253,253,253,253,253,253,253,253,253,253,175,25,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,252,248,248,248,211,94,139,139,195,249,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,7,196,252,128,0,0,0,0,0,0,0,0,50,245,253,199,8,0,0,0,0,0,0,0,0,0,0,0,38,253,167,0,0,0,0,0,0,0,0,0,0,206,253,253,43,0,0,0,0,0,0,0,0,0,0,0,21,218,88,0,0,0,0,0,0,0,0,6,109,249,253,251,41,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,79,206,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,156,241,253,253,253,113,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,253,253,129,51,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,242,253,253,253,253,253,177,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,109,183,253,253,253,253,233,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,16,27,212,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,110,238,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,28,113,135,161,247,253,253,253,224,35,0,0,0,0,0,0,0,0,0,0,0,0,0,21,70,173,173,178,253,253,253,253,253,253,209,144,36,0,0,0,0,0,0,0,0,0,0,0,0,3,122,225,253,253,253,253,253,172,150,150,150,47,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,238,221,184,113,44,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,244,241,103,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,205,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,209,186,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,229,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,254,222,152,108,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,249,213,250,189,201,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,250,163,61,114,0,3,174,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,214,251,30,0,0,0,0,40,218,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,249,106,0,0,0,0,0,0,100,245,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,214,181,0,0,0,0,0,0,0,15,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,123,0,0,0,0,0,0,0,0,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,244,24,0,0,0,0,0,0,0,0,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,249,129,0,0,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,20,0,0,0,0,0,0,0,0,0,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,188,0,0,0,0,0,0,0,0,0,15,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,173,0,0,0,0,0,0,0,0,0,80,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,30,241,173,0,0,0,0,0,0,0,0,0,179,239,4,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,174,0,0,0,0,0,0,0,0,24,244,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,233,45,0,0,0,0,0,0,6,162,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,201,27,0,0,0,3,58,200,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,180,254,239,182,142,142,225,253,253,152,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,100,183,253,253,253,224,164,80,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,86,130,130,130,161,254,254,254,254,254,254,254,254,76,0,0,0,0,0,0,0,0,0,10,136,202,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,199,3,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,253,253,253,253,238,235,241,253,253,253,187,3,0,0,0,0,0,0,0,0,130,253,253,239,228,210,126,143,105,105,105,105,20,0,94,253,253,253,63,0,0,0,0,0,0,0,0,0,115,224,227,41,0,0,0,0,0,0,0,0,0,11,173,253,253,185,5,0,0,0,0,0,0,0,0,0,0,5,41,0,0,0,0,0,0,0,0,0,0,88,253,253,238,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,240,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,228,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,241,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,243,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,253,253,138,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,221,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,72,137,254,164,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,235,104,1,4,232,253,253,253,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,40,121,253,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,235,246,246,196,196,250,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,237,253,238,97,48,16,0,155,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,245,253,71,13,12,19,83,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,226,213,212,228,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,185,253,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,248,131,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,213,253,253,249,253,253,245,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,131,2,119,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,135,10,0,3,205,253,243,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,48,0,0,0,20,227,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,113,0,0,0,0,117,253,251,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,226,19,0,0,0,10,220,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,239,215,134,134,220,253,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,229,253,253,253,253,253,253,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,228,254,253,253,253,253,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,130,213,253,253,208,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,193,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,251,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,250,234,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,233,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,168,253,237,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,194,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,249,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,226,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,234,250,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,223,231,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,160,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,219,251,253,253,146,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,212,249,253,225,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,225,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,249,253,225,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,245,253,253,143,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,228,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,253,126,0,0,0,0,0,0,0,11,59,59,23,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,232,20,0,0,0,0,0,0,65,195,253,253,210,172,23,0,0,0,0,0,0,0,0,0,0,125,253,253,149,0,0,0,0,0,46,176,232,253,253,253,253,253,135,21,0,0,0,0,0,0,0,0,0,125,253,253,149,0,0,0,0,12,161,253,253,246,214,214,218,253,253,136,0,0,0,0,0,0,0,0,0,125,253,253,149,0,0,0,0,156,253,253,253,191,0,5,56,253,253,247,0,0,0,0,0,0,0,0,0,125,253,253,159,17,0,0,0,202,253,253,253,78,0,47,253,253,253,166,0,0,0,0,0,0,0,0,0,51,250,253,253,213,36,20,20,206,253,253,253,181,150,216,253,253,235,48,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,253,253,253,253,253,253,253,253,252,230,48,0,0,0,0,0,0,0,0,0,0,0,54,241,249,253,253,253,253,253,253,253,253,253,253,165,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,123,190,166,253,253,253,223,123,123,123,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,240,43,0,0,0,0,0,0,0,0,0,169,169,169,44,0,0,0,0,0,0,0,0,0,0,85,214,69,130,0,0,0,0,0,0,0,0,29,185,253,252,252,139,0,0,0,0,0,0,0,0,0,0,185,240,0,0,0,0,0,0,0,0,0,26,172,240,253,252,252,139,0,0,0,0,0,0,0,0,0,57,253,253,0,0,0,0,0,0,0,0,41,253,178,166,254,253,253,140,0,0,0,0,0,0,0,0,0,82,252,252,26,0,0,0,0,0,0,76,216,252,252,139,134,196,252,139,0,0,0,0,0,0,0,0,23,234,252,252,63,0,0,0,0,0,67,222,253,252,252,103,0,169,252,139,0,0,0,0,0,0,0,0,29,252,252,252,63,0,0,0,0,0,185,252,253,252,177,3,63,206,252,139,0,0,0,0,0,0,0,0,29,253,253,203,0,0,0,0,0,120,253,253,254,253,216,241,254,253,253,128,0,0,0,0,0,0,0,0,104,252,252,252,51,0,0,0,0,119,252,252,253,252,252,252,253,252,170,9,0,0,0,0,0,0,0,0,104,252,252,252,225,19,19,38,98,234,252,252,253,252,252,252,244,168,37,0,0,0,0,0,0,0,0,0,29,252,252,252,250,231,231,237,253,252,252,252,253,252,252,202,125,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,254,253,253,253,254,253,253,253,254,247,100,0,0,0,0,0,0,0,0,0,0,0,0,0,10,171,252,252,253,252,252,252,253,252,252,252,197,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,143,243,253,252,252,252,253,170,56,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,103,177,228,202,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,64,128,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,128,128,128,191,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,235,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,219,252,240,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,245,252,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,252,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,253,252,88,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,235,252,253,143,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,227,252,233,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,156,252,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,252,252,63,78,111,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,255,253,253,244,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,252,252,252,253,252,252,252,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,252,252,197,153,192,252,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,252,63,0,4,195,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,252,252,252,87,0,46,245,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,252,198,164,69,0,62,224,252,194,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,146,4,12,136,246,252,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,192,136,252,253,252,235,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,236,252,252,252,252,253,169,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,174,252,252,252,204,81,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,253,255,253,253,159,138,76,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,253,252,252,252,252,253,252,227,161,57,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,189,184,183,202,252,252,253,252,252,252,252,206,57,0,0,0,0,0,0,0,0,0,0,0,0,0,159,119,4,0,0,13,45,98,161,177,252,252,252,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,0,5,22,158,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,243,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,13,0,0,5,68,186,252,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,202,90,174,191,252,252,252,252,247,162,19,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,253,252,252,252,252,253,252,252,252,210,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,232,253,252,252,252,252,253,252,252,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,116,116,220,255,253,253,211,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,236,252,252,211,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,234,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,187,113,0,0,0,0,0,0,0,65,236,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,85,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,96,0,0,0,0,0,0,5,138,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,151,47,47,47,47,110,178,252,252,252,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,253,252,252,252,252,253,252,252,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,88,160,253,252,252,252,252,253,252,252,218,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,96,168,252,252,253,231,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,88,197,197,198,72,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,252,252,252,253,252,155,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,252,252,252,253,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,128,253,255,253,253,253,253,255,253,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,200,252,252,253,252,252,242,167,90,243,252,252,112,0,0,0,0,0,0,0,0,0,0,0,38,135,198,246,252,252,252,228,148,55,49,0,0,193,252,252,142,0,0,0,0,0,0,0,0,0,10,60,224,252,253,252,230,223,145,47,0,0,0,0,0,101,252,252,236,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,133,0,0,0,0,0,0,0,0,225,252,252,189,0,0,0,0,0,0,0,0,0,226,253,253,253,255,106,0,0,0,0,0,0,0,0,51,238,253,253,112,0,0,0,0,0,0,0,0,101,249,252,252,252,168,18,0,0,0,0,0,0,0,48,238,252,252,226,12,0,0,0,0,0,0,0,0,222,252,252,230,55,0,0,0,0,0,0,51,88,197,227,253,252,208,49,0,0,0,0,0,0,0,0,0,237,252,252,148,13,0,0,0,19,107,169,243,252,252,252,253,242,96,0,0,0,0,0,0,0,0,0,0,191,252,252,252,189,141,140,140,215,252,253,252,252,252,252,190,74,0,0,0,0,0,0,0,0,0,0,0,141,241,253,253,253,255,253,253,253,253,255,253,253,178,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,252,253,252,252,252,204,168,121,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,87,195,195,196,195,164,55,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,39,69,158,158,158,222,255,253,158,65,0,0,0,0,0,0,0,0,0,0,0,0,0,3,29,178,184,244,241,254,234,225,225,225,225,236,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,212,162,108,67,22,0,0,0,0,135,254,149,0,0,0,0,0,0,0,0,0,0,0,0,79,239,212,84,3,0,0,0,0,0,0,0,154,253,238,60,0,0,0,0,0,0,0,0,0,0,0,0,250,242,38,0,0,0,0,0,0,0,23,184,250,242,99,0,0,0,0,0,0,0,0,0,0,0,0,0,71,65,0,0,0,0,0,0,0,133,239,254,193,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,119,246,231,110,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,196,254,186,49,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,113,250,254,254,196,193,206,178,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,230,254,254,233,205,205,169,205,231,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,216,113,48,27,0,0,0,0,57,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,207,9,0,0,0,0,0,0,0,0,0,0,0,0,43,44,13,0,0,0,0,0,0,0,0,0,0,180,254,28,0,0,0,0,0,0,0,0,0,0,2,45,251,191,15,0,0,0,0,0,0,0,0,0,0,141,254,28,0,0,0,0,0,0,0,0,0,0,29,254,161,13,0,0,0,0,0,0,0,0,0,0,39,213,234,20,0,0,0,0,0,0,0,0,0,0,130,254,4,0,0,0,0,0,0,0,0,0,0,11,189,254,172,0,0,0,0,0,0,0,0,0,0,0,183,254,44,0,0,0,0,0,0,0,0,1,45,180,254,210,21,0,0,0,0,0,0,0,0,0,0,0,100,254,233,25,0,0,0,0,0,0,46,172,254,254,178,21,0,0,0,0,0,0,0,0,0,0,0,0,15,170,254,230,193,129,210,226,226,226,245,254,223,97,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,84,157,157,250,254,254,254,254,254,76,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,117,253,255,253,236,213,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,253,252,252,252,252,221,145,41,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,134,239,252,217,96,96,113,216,242,252,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,179,4,0,0,0,0,60,84,84,187,117,0,0,0,0,0,0,0,0,0,0,0,0,0,73,235,252,252,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,198,193,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,108,239,252,252,252,252,252,251,136,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,190,36,93,93,150,253,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,47,115,17,0,0,0,0,149,252,249,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,92,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,193,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,190,7,0,0,0,0,0,0,0,0,0,0,0,3,21,0,0,0,0,0,0,0,0,0,0,0,0,181,252,128,0,0,0,0,0,0,0,0,0,0,0,10,174,52,0,0,0,0,0,0,0,0,0,0,12,198,252,167,0,0,0,0,0,0,0,0,0,0,0,0,145,226,59,0,0,0,0,0,0,0,0,11,164,252,231,62,0,0,0,0,0,0,0,0,0,0,0,0,39,220,243,205,89,0,0,0,0,0,49,109,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,220,252,242,217,114,97,97,98,186,252,252,183,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,135,252,252,252,252,252,253,252,252,179,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,131,177,252,252,253,183,115,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,134,214,255,237,150,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,142,234,253,253,253,253,253,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,215,253,253,223,196,114,221,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,160,248,253,248,145,11,0,0,42,253,253,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,10,237,253,251,168,19,0,0,0,0,4,144,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,126,0,0,0,0,0,0,0,64,249,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,174,3,0,0,0,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,33,88,23,0,0,0,0,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,53,112,190,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,186,234,253,253,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,115,152,252,253,253,253,253,253,253,253,245,107,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,249,253,253,253,179,102,62,93,253,253,253,253,237,27,0,0,0,0,0,0,0,0,0,0,0,12,191,253,253,245,167,15,3,0,13,153,253,253,231,250,253,194,63,0,0,0,0,0,0,0,0,0,15,185,253,253,253,149,0,0,0,0,130,253,253,199,21,154,253,253,214,15,0,0,0,0,0,0,0,0,47,253,253,253,128,8,0,0,9,107,248,253,246,24,0,21,204,253,167,24,0,0,0,0,0,0,0,0,16,215,253,253,20,0,5,68,190,253,253,242,79,0,0,0,22,79,0,0,0,0,0,0,0,0,0,0,0,146,253,253,221,218,220,253,253,253,249,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,253,253,253,253,242,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,226,253,253,253,253,166,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,70,131,177,145,131,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,37,137,137,131,167,254,204,238,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,12,35,179,41,143,222,254,254,185,209,254,98,227,255,142,0,0,0,0,0,0,0,0,0,0,0,0,12,209,233,254,254,254,254,254,174,193,144,229,118,252,255,142,0,0,0,0,0,0,0,0,0,0,0,0,81,214,13,99,99,124,196,99,24,0,0,0,12,228,255,142,0,0,0,0,0,0,0,0,0,0,0,0,7,39,0,0,0,0,0,0,0,0,0,0,94,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,243,254,234,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,221,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,185,254,254,230,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,229,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,229,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,244,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,132,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,194,254,254,225,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,225,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,236,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,224,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,225,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,218,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,24,76,139,212,253,253,201,76,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,252,252,253,252,252,252,252,253,173,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,252,252,189,184,162,69,69,69,222,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,153,45,4,0,0,0,0,0,138,252,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,210,6,0,0,0,0,0,0,0,86,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,42,0,0,0,0,0,0,0,0,34,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,9,24,139,138,138,97,13,0,0,0,0,179,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,34,174,252,253,252,252,252,211,43,0,0,17,234,253,185,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,221,184,183,183,208,252,247,99,19,188,252,205,25,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,17,192,253,244,220,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,11,253,252,252,252,147,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,148,0,0,0,9,76,255,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,223,252,162,88,130,194,252,253,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,246,253,252,252,252,252,173,90,234,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,161,160,160,119,45,0,0,90,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,179,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,119,233,254,254,139,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,254,221,157,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,246,131,191,213,213,208,253,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,232,13,0,40,40,8,171,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,76,0,0,0,0,107,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,190,0,0,0,0,221,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,243,41,0,0,74,249,162,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,111,253,223,0,12,245,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,250,94,230,250,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,255,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,253,254,169,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,201,181,253,105,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,248,44,8,246,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,245,168,0,0,58,244,246,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,156,0,0,0,236,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,97,0,0,0,206,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,162,0,0,5,237,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,251,250,124,125,203,253,212,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,254,253,201,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,48,145,226,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,116,198,230,254,254,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,132,141,190,245,253,254,254,254,254,254,254,255,129,0,0,0,0,0,0,0,0,0,0,0,0,0,27,237,254,254,254,254,254,254,254,254,254,254,254,205,22,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,254,254,254,254,243,228,145,199,254,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,173,181,175,78,45,0,0,176,254,254,232,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,234,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,236,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,235,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,196,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,207,254,254,161,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,238,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,164,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,240,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,115,241,254,255,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,237,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,200,96,73,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,246,253,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,230,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,235,60,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,227,253,253,253,181,116,42,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,87,194,236,253,253,253,119,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,200,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,41,190,253,249,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,196,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,248,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,160,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,113,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,253,246,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,45,84,174,245,253,211,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,222,237,253,253,216,101,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,201,234,135,44,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,203,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,229,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,65,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,241,253,253,253,120,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,182,253,253,252,175,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,228,253,253,249,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,171,253,253,249,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,249,26,0,0,0,29,78,78,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,203,0,0,23,186,228,253,253,249,191,27,0,0,0,0,0,0,0,0,0,0,0,0,0,24,218,253,253,77,0,19,201,253,253,253,253,253,253,237,48,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,248,11,13,206,253,253,253,243,186,248,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,78,18,158,253,253,244,125,10,21,209,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,107,125,253,253,253,135,26,48,208,253,253,188,19,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,224,162,253,253,253,253,221,253,253,253,241,52,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,253,253,253,253,253,253,253,253,253,205,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,131,242,253,253,253,253,253,253,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,135,201,253,253,217,135,83,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,11,0,0,0,0,0,145,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,109,0,0,0,0,0,176,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,88,0,0,0,0,0,217,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,36,0,0,0,0,0,218,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,233,16,0,0,0,0,0,217,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,208,0,0,0,0,0,0,218,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,207,63,0,0,0,0,11,228,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,192,254,254,254,140,6,0,0,37,254,21,32,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,191,36,119,254,202,63,0,58,253,42,176,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,78,0,0,84,218,254,212,192,254,239,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,222,5,0,0,0,11,88,149,254,232,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,192,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,249,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,121,32,0,0,0,0,0,0,0,0,0,0,0,13,51,0,0,0,0,0,0,0,0,0,0,0,0,137,253,193,0,0,0,0,0,0,0,0,0,0,74,193,233,0,0,0,0,0,0,0,0,0,0,0,35,229,253,248,72,0,0,0,0,0,0,0,0,20,203,253,252,108,0,0,0,0,0,0,0,0,0,0,207,253,253,225,38,0,0,0,0,0,0,0,0,167,253,253,253,233,0,0,0,0,0,0,0,0,0,57,241,253,253,105,17,0,0,0,0,0,0,0,125,240,253,253,246,84,0,0,0,0,0,0,0,0,26,181,247,253,203,18,0,0,0,0,0,0,0,18,177,253,253,253,215,31,0,0,0,0,0,0,0,0,142,253,253,253,222,44,13,26,41,19,0,0,15,179,253,253,253,228,90,0,0,0,0,0,0,0,0,0,169,253,253,253,229,180,189,219,253,204,161,91,195,253,253,253,253,177,0,0,0,0,0,0,0,0,0,0,185,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,114,120,190,120,147,161,204,253,253,254,253,253,253,253,253,232,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,249,254,254,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,145,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,158,252,253,253,143,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,253,253,154,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,159,254,253,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,94,253,255,253,182,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,255,242,177,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,240,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,106,193,240,124,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,182,57,187,254,243,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,254,225,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,187,254,229,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,135,254,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,248,254,244,164,86,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,242,254,254,254,247,163,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,107,182,254,254,254,234,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,16,128,247,254,230,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,202,254,232,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,186,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,180,254,255,187,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,182,254,254,186,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,177,121,117,243,254,254,168,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,236,254,254,254,239,144,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,194,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,58,91,0,0,0,0,0,0,161,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,242,254,251,115,0,0,0,0,59,240,238,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,254,204,237,177,0,0,0,61,238,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,250,103,4,114,157,0,3,117,241,254,194,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,246,147,0,4,131,14,44,213,254,254,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,43,0,116,48,85,219,254,254,165,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,43,34,165,243,249,254,230,83,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,186,254,214,239,254,254,244,133,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,130,254,254,254,254,210,135,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,115,202,254,254,254,217,143,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,215,254,254,254,254,208,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,188,102,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,120,33,96,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,212,231,254,219,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,238,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,125,125,103,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,191,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,255,255,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,64,255,255,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,106,182,250,125,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,163,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,253,175,158,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,23,81,252,242,134,3,7,210,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,242,254,253,253,49,0,0,12,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,239,253,216,253,175,3,0,0,50,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,253,51,12,146,81,0,0,48,233,253,211,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,33,0,0,0,4,69,232,253,246,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,33,0,0,31,189,253,253,245,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,33,0,107,234,253,253,215,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,158,207,255,254,237,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,255,253,155,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,138,231,253,253,253,198,126,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,66,239,246,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,194,253,253,217,198,200,253,253,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,111,19,0,194,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,166,2,3,50,185,253,216,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,240,253,159,128,253,253,253,210,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,176,253,253,253,253,253,187,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,201,253,253,152,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,59,209,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,251,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,251,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,137,251,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,226,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,224,251,251,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,251,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,238,253,251,116,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,255,225,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,216,251,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,239,251,251,243,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,251,251,251,194,46,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,251,230,200,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,245,251,251,251,203,37,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,251,251,251,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,251,251,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,251,145,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,103,198,198,175,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,54,141,196,252,254,254,254,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,106,214,254,254,254,254,248,171,125,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,130,235,254,254,254,245,216,125,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,254,254,210,141,78,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,176,90,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,228,244,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,239,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,224,254,152,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,250,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,63,0,0,0,0,71,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,199,4,0,0,0,5,192,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,245,115,6,0,0,19,131,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,194,172,172,245,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,250,254,254,254,254,254,205,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,94,189,197,148,94,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,226,200,200,200,65,47,47,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,253,253,253,253,253,253,227,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,26,160,160,160,160,186,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,70,214,224,251,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,204,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,231,250,253,220,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,228,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,238,253,253,253,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,70,177,238,253,253,253,236,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,16,161,169,213,253,253,253,253,252,237,86,0,0,0,0,0,0,0,0,0,0,0,0,46,116,116,116,220,253,253,253,253,253,253,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,253,253,253,253,253,253,253,253,253,253,253,241,62,47,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,231,162,162,162,162,0,0,0,0,0,0,0,0,189,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,80,199,199,199,199,199,199,199,120,186,199,199,214,253,253,253,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,99,99,136,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,232,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,243,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,210,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,197,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,74,0,0,0,24,82,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,209,5,0,0,63,236,254,244,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,224,254,188,0,0,93,247,254,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,74,0,50,247,254,173,136,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,228,16,7,206,254,185,10,154,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,198,0,48,254,237,43,35,243,237,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,130,0,153,254,207,16,207,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,46,23,235,254,96,141,254,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,26,53,254,240,109,254,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,60,53,254,254,254,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,146,89,254,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,255,254,254,196,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,246,254,238,153,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,54,178,253,255,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,157,179,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,215,252,253,252,186,118,56,100,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,243,252,252,178,28,6,0,0,107,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,255,253,244,75,0,0,0,0,0,76,35,29,29,10,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,189,56,0,0,0,0,0,32,131,197,252,253,159,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,140,85,85,85,85,123,197,229,252,252,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,147,252,253,252,252,252,253,252,252,252,253,252,252,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,101,226,225,225,225,226,225,187,113,204,253,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,123,246,253,233,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,241,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,252,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,90,161,255,254,205,133,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,197,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,192,82,82,131,226,253,182,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,193,21,0,0,0,36,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,19,0,0,0,0,4,214,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,197,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,247,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,246,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,217,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,251,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,253,241,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,186,172,66,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,53,178,253,253,253,253,241,201,157,84,84,152,201,201,108,185,201,0,0,0,0,0,0,0,0,0,0,0,0,13,85,152,162,253,253,253,253,253,253,253,253,253,253,213,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,45,135,135,187,253,184,135,135,135,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,101,172,255,149,18,18,18,18,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,253,253,253,253,253,221,108,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,223,253,253,253,253,253,253,253,253,253,185,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,183,253,253,253,253,253,253,253,253,253,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,185,185,198,253,253,253,253,253,253,129,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,161,253,253,253,253,253,218,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,143,243,246,253,253,253,253,253,133,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,101,253,253,253,253,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,235,253,253,253,253,253,253,253,253,229,66,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,253,253,253,253,253,253,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,176,176,86,59,59,64,176,191,217,253,183,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,46,229,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,125,0,0,0,0,0,0,0,0,0,8,4,0,0,0,0,0,0,0,0,0,0,0,2,35,217,253,249,74,0,0,0,0,0,0,0,0,3,111,157,8,0,0,0,0,0,0,0,0,0,21,160,253,253,253,211,10,0,0,0,0,0,0,0,0,96,253,253,100,9,0,0,0,0,34,48,92,166,211,253,253,253,216,104,6,0,0,0,0,0,0,0,0,51,253,253,253,196,183,183,183,183,232,253,253,253,253,253,253,206,39,0,0,0,0,0,0,0,0,0,0,12,221,253,253,253,253,253,253,253,253,253,253,253,253,205,94,15,0,0,0,0,0,0,0,0,0,0,0,0,21,115,228,253,253,253,253,253,253,253,253,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,114,135,135,135,210,170,190,135,83,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,241,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,224,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,158,254,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,249,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,255,254,240,101,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,207,253,253,253,253,206,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,196,107,151,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,2,124,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,253,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,248,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,139,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,230,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,219,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,253,170,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,187,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,233,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,228,253,203,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,138,250,246,120,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,183,201,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,214,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,238,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,138,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,244,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,197,253,186,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,178,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,246,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,252,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,204,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,209,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,181,252,249,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,223,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,191,255,253,253,253,192,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,155,217,217,242,252,253,252,252,252,253,242,217,217,42,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,246,215,72,195,221,252,253,252,252,252,222,46,0,0,0,0,0,0,0,0,0,0,0,125,221,252,252,128,92,0,0,0,16,108,170,168,252,252,253,221,41,0,0,0,0,0,0,0,0,0,47,232,252,252,82,0,0,0,0,0,0,0,0,73,252,252,253,252,215,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,10,119,35,253,252,247,93,0,0,0,0,0,0,0,0,109,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,108,0,0,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,110,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,63,238,253,108,0,0,0,0,0,0,0,0,109,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,108,0,0,0,0,0,0,0,0,109,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,79,242,252,108,0,0,0,0,0,0,0,0,109,252,236,62,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,110,253,253,108,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,108,0,0,0,0,0,0,0,0,109,252,252,148,0,0,0,0,0,0,0,0,0,0,11,175,253,252,179,15,0,0,0,0,0,0,0,0,94,247,252,252,37,26,0,0,0,0,0,0,0,0,140,252,253,179,20,0,0,0,0,0,0,0,0,0,0,134,252,252,252,221,41,0,0,0,0,0,0,125,221,252,191,15,0,0,0,0,0,0,0,0,0,0,0,42,222,253,253,253,253,253,110,109,129,253,255,253,253,191,84,0,0,0,0,0,0,0,0,0,0,0,0,0,46,179,252,252,252,252,253,252,252,252,222,179,179,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,133,215,241,252,253,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,108,253,252,148,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,40,130,231,255,255,255,91,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,132,253,253,253,253,247,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,44,221,253,253,253,253,211,172,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,253,253,253,253,253,253,253,202,253,243,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,253,253,253,253,253,241,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,217,253,253,253,253,253,253,253,253,171,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,253,253,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,150,253,253,253,253,237,158,74,228,253,171,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,206,75,0,0,187,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,205,154,15,0,0,0,187,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,137,154,16,0,0,0,0,0,217,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,220,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,248,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,66,211,100,37,0,0,0,0,0,0,72,248,253,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,220,88,0,0,0,0,83,213,253,214,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,250,150,112,112,145,249,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,35,253,253,253,253,253,253,253,253,253,113,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,85,211,253,253,253,253,156,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,128,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,6,174,167,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,189,0,0,0,0,0,0,18,254,206,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,248,47,0,0,0,0,0,36,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,57,0,0,0,0,0,121,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,237,38,0,0,0,0,25,243,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,108,0,0,0,0,0,35,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,53,0,0,0,0,0,122,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,53,0,0,0,0,0,178,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,234,23,0,0,0,0,0,211,237,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,228,225,10,0,0,0,0,24,234,237,33,15,28,177,245,59,0,0,0,0,0,0,0,0,0,0,0,0,217,254,220,144,122,96,116,144,254,251,242,225,238,254,238,90,0,0,0,0,0,0,0,0,0,0,0,0,98,245,254,254,254,254,254,254,254,254,254,237,150,128,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,71,137,160,160,160,210,254,175,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,233,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,195,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,231,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,196,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,178,255,255,135,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,245,253,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,247,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,239,253,253,239,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,104,231,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,205,246,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,114,233,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,253,242,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,244,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,176,253,253,133,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,173,253,255,253,236,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,241,228,243,231,145,53,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,177,46,0,77,216,242,242,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,184,252,131,0,0,0,0,60,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,213,252,221,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,241,252,252,232,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,252,252,235,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,81,64,143,242,252,252,218,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,252,233,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,213,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,246,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,250,250,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,137,230,252,206,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,150,252,252,102,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,249,194,154,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,66,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,138,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,159,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,245,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,158,254,255,215,137,13,0,0,10,38,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,227,253,253,253,253,253,182,47,53,202,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,237,253,253,251,249,253,253,253,241,239,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,239,61,22,141,251,253,253,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,33,237,253,253,86,0,0,0,169,253,253,253,253,220,3,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,59,0,0,0,3,80,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,25,215,253,253,223,23,0,0,0,0,127,253,253,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,167,0,0,0,0,0,168,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,243,8,0,0,0,0,11,210,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,173,0,0,0,0,0,45,253,253,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,96,0,0,0,0,0,216,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,124,89,2,0,0,0,0,8,240,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,230,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,251,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,238,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,176,253,188,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,72,72,86,189,104,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,172,207,246,253,253,253,253,253,238,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,225,243,178,147,48,29,29,29,29,59,181,242,121,0,0,0,0,0,0,0,0,0,0,0,0,3,161,248,253,101,4,0,0,0,0,0,0,0,43,236,190,0,0,0,0,0,0,0,0,0,0,0,51,181,253,253,229,42,0,0,0,0,0,0,0,0,0,219,135,0,0,0,0,0,0,0,0,0,6,67,230,253,236,209,42,0,0,0,0,0,0,0,0,0,53,241,135,0,0,0,0,0,0,0,0,5,141,253,253,233,58,0,0,0,0,0,0,0,0,0,0,0,111,253,135,0,0,0,0,0,0,0,0,145,253,253,232,60,0,0,0,0,0,0,0,0,0,0,0,51,241,253,100,0,0,0,0,0,0,0,0,255,253,208,30,0,0,0,0,0,0,0,0,0,0,0,18,191,253,216,11,0,0,0,0,0,0,0,0,254,253,200,0,0,0,0,0,0,0,0,0,0,0,14,194,253,253,45,0,0,0,0,0,0,0,0,0,188,253,252,215,34,7,0,0,0,0,0,0,6,79,249,253,214,85,1,0,0,0,0,0,0,0,0,0,8,195,253,253,253,209,93,82,30,30,122,148,195,253,253,156,30,0,0,0,0,0,0,0,0,0,0,0,0,54,168,219,253,253,253,253,253,253,253,253,232,200,88,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,70,126,183,188,188,188,188,89,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,175,215,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,218,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,52,235,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,251,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,232,254,251,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,209,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,225,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,254,41,0,39,159,203,203,203,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,201,18,112,252,254,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,254,88,4,231,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,254,151,79,254,254,254,254,254,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,254,254,254,254,254,254,254,166,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,254,254,254,254,254,254,254,222,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,113,191,254,254,254,228,169,83,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,175,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,149,231,194,156,156,156,156,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,217,253,253,253,254,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,228,123,78,78,78,131,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,111,0,0,0,19,142,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,23,207,253,237,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,251,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,235,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,240,195,195,180,135,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,255,254,254,254,254,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,39,39,84,135,135,135,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,219,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,104,224,254,254,135,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,95,224,253,253,234,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,161,175,217,253,254,247,144,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,151,234,254,253,253,247,213,95,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,237,155,155,155,88,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,204,253,216,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,243,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,252,206,224,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,252,102,13,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,255,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,253,139,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,252,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,214,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,244,81,29,85,198,197,197,197,85,85,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,125,0,185,252,253,252,252,252,253,252,231,125,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,114,0,126,225,163,113,113,113,226,231,253,253,242,110,0,0,0,0,0,0,0,0,0,0,0,19,215,252,138,0,0,0,0,0,0,0,0,19,122,246,253,196,0,0,0,0,0,0,0,0,0,0,0,0,110,252,225,0,0,0,0,0,0,0,0,0,0,50,253,215,19,0,0,0,0,0,0,0,0,0,0,0,10,228,250,125,0,0,0,0,0,0,0,0,0,51,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,151,254,228,104,4,0,0,0,0,4,54,141,241,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,178,108,57,57,157,179,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,224,252,252,253,252,252,252,253,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,116,240,253,252,252,151,140,115,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,129,162,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,247,233,167,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,171,254,191,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,133,13,0,0,0,0,0,0,0,0,0,0,0,0,34,28,0,0,0,0,0,0,0,0,0,82,247,191,0,0,0,0,0,0,0,0,0,0,0,0,25,181,254,246,63,0,0,0,0,0,0,0,0,179,252,49,0,0,0,0,0,0,0,0,0,0,0,62,226,248,184,221,200,0,0,0,0,0,0,0,0,202,190,0,0,0,0,0,0,0,0,0,0,7,59,212,211,36,0,202,254,0,0,0,0,0,0,0,0,244,126,0,0,0,0,0,0,0,0,0,4,120,254,176,9,0,0,202,212,0,0,0,0,0,0,0,0,251,129,0,0,0,0,0,0,0,0,0,121,254,177,6,0,0,48,237,124,0,0,0,0,0,0,0,0,179,242,17,0,0,0,0,0,0,0,143,252,174,8,0,8,87,235,219,14,0,0,0,0,0,0,0,0,116,254,176,61,0,0,0,0,0,77,250,198,8,0,26,147,254,157,33,0,0,0,0,0,0,0,0,0,1,146,247,254,208,124,96,55,20,147,254,133,127,171,248,226,48,1,0,0,0,0,0,0,0,0,0,0,0,0,36,141,209,237,254,254,254,254,254,254,247,188,105,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,63,107,107,49,30,30,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,56,127,155,121,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,117,223,254,254,254,254,247,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,149,254,254,254,208,189,212,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,254,239,107,114,10,0,55,251,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,237,59,0,0,0,11,178,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,254,132,0,0,0,22,179,254,150,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,216,0,0,0,42,205,254,189,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,149,0,0,12,224,242,69,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,149,0,50,212,245,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,211,174,249,177,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,209,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,2,89,247,249,248,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,21,171,254,172,53,150,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,203,254,169,2,0,150,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,233,21,0,0,150,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,244,229,24,6,73,206,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,233,200,254,254,176,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,122,209,252,220,150,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,15,43,69,192,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,190,191,190,190,190,190,217,211,252,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,253,252,244,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,189,243,153,136,189,189,84,84,49,170,252,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,108,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,243,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,233,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,118,138,139,86,138,44,24,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,22,104,228,252,252,253,252,252,252,252,245,161,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,216,228,252,252,252,253,240,234,252,252,253,252,202,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,185,119,45,46,37,33,45,45,98,135,252,236,113,0,0,0,0,0,0,0,0,0,0,0,0,0,23,75,6,0,0,0,0,0,0,0,11,193,252,252,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,193,253,252,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,101,240,252,253,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,252,252,252,253,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,243,252,252,252,252,253,178,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,180,253,255,253,253,253,243,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,197,252,252,253,252,252,172,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,228,252,252,252,253,240,100,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,144,253,252,252,252,252,150,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,252,253,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,222,253,253,255,249,199,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,252,252,252,228,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,252,189,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,227,119,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,29,0,0,0,0,0,226,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,141,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,57,0,0,0,114,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,86,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,226,29,0,0,0,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,114,0,0,0,198,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,170,86,86,141,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,255,255,255,255,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,255,255,255,255,255,255,255,226,114,86,86,0,0,0,0,0,0,0,0,0,0,86,255,255,198,114,0,170,255,255,198,114,141,226,255,255,255,255,255,86,0,0,0,0,0,0,0,0,0,86,255,141,0,0,29,255,255,226,29,0,0,0,114,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,86,0,0,0,0,0,57,141,170,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,244,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,244,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,226,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,252,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,255,216,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,204,252,245,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,244,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,252,228,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,248,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,249,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,247,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,250,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,95,229,222,211,182,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,32,0,0,33,207,254,216,124,201,254,234,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,110,244,254,188,31,53,249,254,208,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,138,254,188,103,4,15,148,254,246,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,199,255,207,30,0,29,177,254,246,158,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,198,47,1,38,172,254,254,236,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,240,254,138,63,65,214,254,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,203,255,238,254,254,254,254,254,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,239,254,220,202,138,223,254,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,52,18,0,21,223,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,225,237,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,242,144,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,166,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,214,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,214,206,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,188,224,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,189,198,86,0,0,13,49,92,101,175,160,160,255,217,98,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,221,21,0,153,226,248,253,253,253,253,253,253,251,116,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,194,98,185,253,253,253,253,253,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,99,252,253,253,253,253,199,199,208,253,196,253,253,253,253,253,253,184,17,0,0,0,0,0,0,0,0,0,101,253,253,159,84,214,214,95,112,74,24,61,61,61,61,108,253,253,162,0,0,0,0,0,0,0,0,0,185,253,253,7,0,0,0,0,0,0,0,0,0,0,0,62,253,253,229,55,0,0,0,0,0,0,0,0,254,253,253,7,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,99,0,0,0,0,0,0,0,0,254,253,253,7,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,99,0,0,0,0,0,0,0,0,255,253,253,7,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,99,0,0,0,0,0,0,0,0,114,253,253,54,0,0,0,0,0,0,0,0,0,0,0,25,197,253,253,99,0,0,0,0,0,0,0,0,101,253,253,169,6,0,0,0,0,0,0,0,0,0,0,62,253,253,253,99,0,0,0,0,0,0,0,0,52,152,253,253,135,0,0,0,0,0,0,0,0,0,0,32,208,253,253,174,0,0,0,0,0,0,0,0,0,47,253,253,248,102,0,0,0,0,0,0,0,0,32,108,242,253,253,253,0,0,0,0,0,0,0,0,0,44,246,253,253,207,119,5,0,0,0,0,5,16,125,253,253,253,250,143,0,0,0,0,0,0,0,0,0,0,80,250,253,253,253,83,116,116,35,0,140,253,253,253,249,187,128,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,230,253,253,227,216,249,253,253,253,114,16,7,0,0,0,0,0,0,0,0,0,0,0,0,34,208,249,253,253,253,253,253,253,253,253,253,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,253,253,253,253,253,253,253,203,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,232,199,199,204,227,214,250,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,10,51,28,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,253,244,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,234,253,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,231,252,253,252,252,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,166,252,252,253,252,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,120,252,252,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,217,252,252,252,74,30,84,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,252,252,0,0,15,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,248,252,252,69,14,0,0,156,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,236,48,0,0,0,164,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,252,252,162,0,0,0,0,164,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,236,253,253,14,0,0,0,0,16,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,140,3,0,0,0,0,12,220,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,120,252,241,77,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,252,252,118,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,118,0,0,0,0,0,5,158,252,243,83,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,118,0,0,0,0,43,183,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,118,0,104,55,0,139,252,252,132,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,189,252,244,238,248,244,240,228,162,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,212,252,252,252,252,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,103,244,252,252,191,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,148,254,255,254,254,160,95,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,253,253,253,253,253,253,253,120,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,156,253,251,152,111,111,111,210,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,243,235,90,0,0,0,0,29,221,253,124,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,87,0,0,0,0,0,0,123,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,237,253,253,181,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,148,61,61,192,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,179,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,244,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,9,88,32,0,0,0,0,0,0,0,0,0,223,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,93,0,0,0,0,0,0,0,0,81,249,214,12,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,216,83,0,0,0,0,0,0,0,142,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,253,249,205,83,0,0,0,0,191,250,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,249,236,141,148,236,250,253,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,33,158,253,253,253,253,253,253,210,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,97,190,129,129,129,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,160,255,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,141,248,254,254,254,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,254,254,254,254,226,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,254,254,182,82,52,235,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,220,254,249,107,12,0,2,180,254,234,121,121,121,95,3,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,131,0,0,17,132,254,254,254,254,254,254,254,177,21,0,0,0,0,0,0,0,0,0,0,0,150,254,235,11,5,121,205,254,254,254,254,254,254,231,141,93,3,0,0,0,0,0,0,0,0,0,0,0,226,254,206,116,198,254,254,254,254,243,194,112,43,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,254,254,254,254,187,107,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,232,254,254,254,189,92,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,247,254,254,196,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,254,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,249,254,254,239,236,238,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,253,89,73,254,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,198,254,254,138,0,18,225,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,223,18,0,43,234,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,86,14,170,230,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,199,240,254,254,254,201,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,249,254,254,254,254,254,231,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,221,102,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,199,254,254,254,255,228,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,236,253,253,253,253,253,253,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,189,253,253,253,253,253,253,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,220,128,61,61,187,253,253,251,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,219,246,219,89,0,0,0,23,207,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,242,113,0,0,0,0,0,0,186,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,20,0,0,0,0,0,0,36,220,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,224,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,171,227,227,236,253,253,253,247,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,213,253,253,253,253,253,253,246,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,253,253,240,105,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,239,92,89,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,250,253,240,7,0,0,0,0,12,104,104,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,244,83,142,220,220,220,224,253,253,222,220,186,70,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,253,253,253,253,253,253,253,253,253,253,253,244,75,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,253,223,212,212,212,212,248,253,246,80,0,0,0,0,0,0,0,0,0,0,0,213,253,253,252,232,173,96,96,26,0,0,0,0,83,96,80,0,0,0,0,0,0,0,0,0,0,0,0,213,253,159,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,130,253,255,253,156,55,0,75,105,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,208,208,224,252,252,253,252,252,231,208,239,252,158,14,0,0,0,0,0,0,0,0,0,0,0,19,164,242,252,252,252,252,243,244,252,252,252,252,252,252,193,21,0,0,0,0,0,0,0,0,0,0,29,205,252,252,252,252,139,132,55,55,132,210,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,69,199,252,252,199,177,98,0,0,0,0,76,252,252,252,212,115,0,0,0,0,0,0,0,0,0,0,0,208,252,252,181,22,0,0,0,0,0,61,226,252,252,230,35,0,0,0,0,0,0,0,0,0,0,0,0,129,252,252,29,0,0,0,0,0,0,208,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,4,14,14,2,0,0,0,0,0,99,249,252,252,41,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,192,252,243,103,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,255,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,253,237,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,231,252,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,220,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,252,252,222,54,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,196,252,252,172,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,207,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,199,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,128,64,255,255,255,191,64,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,255,255,64,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,255,191,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,64,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,128,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,226,250,167,224,252,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,157,237,252,180,6,186,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,88,234,253,252,61,27,0,186,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,157,252,252,221,59,6,22,103,238,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,231,252,249,198,35,0,0,109,252,241,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,146,231,252,212,75,0,0,0,86,240,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,252,246,204,34,0,0,0,26,229,252,195,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,191,0,0,0,0,70,247,252,198,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,164,113,0,8,133,190,252,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,253,253,253,255,253,253,211,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,179,252,252,252,252,252,252,253,252,252,252,249,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,26,165,210,252,190,26,26,26,26,168,252,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,242,252,117,17,0,0,0,0,81,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,25,179,241,238,164,20,0,0,0,0,0,116,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,170,0,0,0,0,0,23,103,242,252,114,21,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,185,21,0,0,24,41,104,206,252,252,185,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,179,160,160,160,213,252,253,252,228,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,252,252,252,252,252,245,240,112,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,161,252,153,119,119,119,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,255,253,253,159,113,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,234,252,252,252,253,252,252,252,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,197,253,252,252,252,252,253,252,252,245,227,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,242,246,252,252,253,226,114,74,47,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,89,197,252,252,112,12,0,0,0,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,192,12,198,253,253,63,0,0,13,191,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,253,152,53,167,89,15,0,0,76,252,253,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,233,88,19,0,0,0,45,187,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,252,177,0,0,10,203,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,239,63,63,178,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,178,253,253,253,255,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,252,252,253,252,186,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,233,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,178,252,253,252,187,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,240,63,114,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,223,0,50,237,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,246,197,222,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,193,242,252,253,252,230,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,190,112,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,196,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,253,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,248,241,154,102,249,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,200,251,244,58,0,206,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,236,112,8,85,238,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,249,253,90,39,159,253,253,253,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,192,253,234,209,242,253,165,40,244,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,215,87,0,0,243,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,237,253,240,94,9,0,0,75,251,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,138,27,0,0,0,0,100,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,214,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,216,97,59,59,59,97,156,156,156,156,156,134,32,0,0,0,0,0,0,0,0,0,0,0,0,17,241,253,253,254,253,253,253,253,254,253,253,253,253,254,235,111,0,0,0,0,0,0,0,0,0,0,0,14,229,253,253,254,253,253,253,253,254,253,253,253,253,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,254,253,253,231,213,214,130,146,250,253,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,18,111,193,155,80,88,27,0,0,0,0,234,253,254,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,253,253,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,254,253,253,234,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,253,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,236,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,90,0,0,0,0,30,250,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,222,0,0,0,0,62,254,205,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,221,0,0,0,0,170,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,181,0,0,0,0,190,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,142,0,0,0,34,245,226,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,247,249,48,0,0,0,145,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,165,16,3,0,0,175,254,72,0,0,0,117,127,0,0,0,0,0,0,0,0,0,0,0,0,36,245,253,254,253,202,190,116,234,253,73,32,32,117,237,117,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,236,205,214,253,253,254,253,253,253,253,251,160,9,0,0,0,0,0,0,0,0,0,0,0,0,31,180,91,20,0,6,51,111,254,253,176,169,111,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,255,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,191,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,128,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,64,128,64,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,64,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,191,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,170,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,246,126,77,91,91,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,241,159,221,254,254,254,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,229,252,183,25,0,6,43,75,75,22,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,54,241,235,96,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,243,255,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,44,0,0,0,0,225,254,254,201,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,238,130,4,0,0,52,75,82,243,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,217,254,226,118,35,0,0,0,115,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,180,254,255,238,199,164,178,176,225,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,58,153,246,254,254,254,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,54,75,75,82,110,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,172,173,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,234,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,233,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,113,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,91,233,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,213,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,123,243,253,130,172,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,254,192,224,40,51,131,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,233,50,20,0,10,10,50,172,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,192,0,0,0,0,0,0,0,0,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,111,0,0,0,0,0,0,0,0,71,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,234,213,82,0,0,0,0,0,0,82,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,212,243,122,0,0,0,0,123,243,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,20,0,0,0,163,203,223,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,20,0,0,41,243,122,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,113,152,254,253,254,253,193,152,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,253,252,253,252,253,252,243,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,254,253,203,102,102,102,203,243,255,253,123,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,252,253,252,61,0,0,0,0,81,213,252,243,81,0,0,0,0,0,0,0,0,0,0,11,213,254,253,254,253,203,20,0,0,0,0,0,0,21,223,254,151,0,0,0,0,0,0,0,0,0,0,92,252,253,252,253,171,20,0,0,0,0,0,0,0,0,122,253,111,0,0,0,0,0,0,0,0,0,0,152,253,254,253,183,20,0,0,0,0,0,0,0,0,0,163,254,253,0,0,0,0,0,0,0,0,0,0,152,252,253,212,0,0,0,0,0,0,0,0,0,0,21,223,253,252,0,0,0,0,0,0,0,0,0,82,254,253,224,20,0,0,0,0,0,0,0,0,0,0,72,253,254,91,0,0,0,0,0,0,0,0,0,203,253,252,203,0,0,0,0,0,0,0,0,0,0,82,233,252,172,10,0,0,0,0,0,0,0,0,113,253,254,253,254,50,0,0,0,0,0,0,0,41,214,253,254,172,0,0,0,0,0,0,0,0,0,0,233,252,233,70,50,10,0,0,0,0,21,142,203,243,253,252,131,10,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,11,51,113,152,214,253,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,223,122,102,142,213,252,253,252,253,252,151,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,255,253,255,253,254,213,203,203,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,232,253,252,253,171,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,31,158,254,254,254,254,212,130,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,156,253,253,253,253,253,253,253,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,213,253,253,253,240,235,235,241,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,213,253,253,236,140,28,0,8,98,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,12,165,253,253,227,31,0,8,65,184,253,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,235,89,26,65,184,253,253,253,253,253,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,196,226,253,253,253,253,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,253,253,217,110,155,253,253,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,253,253,253,215,110,20,77,237,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,68,68,68,22,0,16,207,253,253,159,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,207,253,253,231,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,195,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,239,253,231,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,201,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,181,253,253,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,231,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,202,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,208,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,188,172,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,188,254,254,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,185,208,81,60,247,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,205,49,0,0,101,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,234,80,0,0,0,53,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,235,51,0,0,0,0,53,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,166,0,0,0,0,0,53,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,237,57,0,0,0,0,0,53,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,212,139,0,0,0,0,0,0,53,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,110,0,0,0,0,0,0,53,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,244,36,0,0,0,0,0,0,53,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,164,0,0,0,0,0,0,0,53,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,131,0,0,0,0,0,0,0,53,220,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,131,0,0,0,0,0,0,0,53,244,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,161,0,0,0,0,0,0,0,35,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,173,0,0,0,0,0,0,0,137,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,222,6,0,0,0,0,0,37,240,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,97,18,17,43,106,190,229,213,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,234,254,254,251,232,255,224,157,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,254,220,166,109,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,151,255,254,238,125,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,248,248,181,248,249,253,253,253,253,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,252,253,253,253,253,253,253,253,253,253,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,251,253,253,253,253,253,253,178,221,253,253,162,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,244,253,127,25,25,25,25,34,216,253,236,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,32,5,0,0,0,0,94,244,253,241,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,139,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,201,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,206,253,241,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,237,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,238,253,253,217,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,214,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,169,253,253,233,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,212,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,239,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,145,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,125,209,255,216,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,238,254,190,176,237,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,216,125,2,0,198,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,166,252,217,62,0,0,0,117,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,201,20,0,0,0,0,113,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,238,220,59,0,0,0,0,0,83,208,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,112,0,0,0,0,0,0,160,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,112,0,0,0,0,0,74,247,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,186,32,0,0,0,12,187,198,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,177,254,186,85,73,116,68,13,156,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,110,215,248,254,208,68,29,226,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,47,8,0,117,254,236,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,207,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,83,185,255,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,164,233,254,254,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,161,252,254,254,246,186,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,145,232,254,254,221,106,11,9,123,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,224,254,254,221,118,25,0,16,217,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,156,24,0,0,8,168,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,254,81,4,0,0,27,167,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,241,76,4,0,9,66,222,254,254,170,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,74,0,0,9,200,254,254,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,139,82,196,223,254,254,254,254,143,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,254,254,254,254,254,254,254,115,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,213,219,219,250,254,254,248,108,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,228,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,249,111,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,248,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,241,254,227,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,251,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,209,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,246,232,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,148,227,200,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,137,206,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,96,74,48,127,128,127,180,232,232,253,252,252,252,252,253,252,180,7,0,0,0,0,0,0,0,0,0,0,99,221,252,252,253,252,252,252,252,216,189,136,84,84,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,21,68,147,147,112,42,42,42,18,0,0,27,150,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,244,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,231,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,253,210,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,191,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,244,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,72,0,0,0,48,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,179,0,0,0,108,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,111,0,0,0,128,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,91,0,0,0,171,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,238,22,0,0,20,235,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,206,0,0,0,112,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,145,0,0,0,122,253,237,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,239,253,175,6,0,3,202,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,253,253,181,142,101,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,249,65,159,243,253,254,253,253,188,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,75,0,0,20,85,255,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,249,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,240,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,225,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,219,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,255,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,241,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,240,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,206,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,127,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,196,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,209,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,180,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,147,247,186,147,147,147,147,147,147,147,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,254,254,254,254,254,254,254,214,178,134,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,215,140,71,32,32,32,32,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,182,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,254,208,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,203,254,179,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,197,254,207,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,203,254,211,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,119,254,170,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,168,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,30,27,0,0,0,0,0,0,0,0,0,0,28,255,178,2,0,0,0,0,0,0,0,0,0,0,0,0,20,82,71,0,0,0,0,0,0,0,0,0,28,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,20,112,156,141,58,17,0,0,0,8,33,149,254,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,142,238,218,179,179,179,197,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,91,146,232,254,254,254,196,72,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,146,146,112,89,126,38,137,146,146,192,218,254,254,255,210,82,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,231,23,0,0,0,0,0,0,0,0,0,0,56,235,248,248,248,248,248,248,178,139,130,32,32,32,137,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,233,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,246,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,253,221,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,147,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,248,253,230,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,222,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,232,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,197,5,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,79,79,116,166,196,255,254,254,235,151,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,207,253,253,253,253,204,183,183,152,197,253,222,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,176,105,35,17,17,6,0,0,0,4,221,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,237,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,216,232,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,182,233,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,249,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,241,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,248,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,102,185,240,157,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,185,239,254,254,254,254,245,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,237,254,249,209,150,164,248,254,243,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,254,188,44,0,0,0,41,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,153,11,0,36,0,0,45,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,245,42,0,66,242,208,207,243,254,250,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,235,0,0,47,232,254,254,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,246,45,0,0,132,254,254,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,196,123,133,230,254,254,254,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,236,254,254,254,254,254,254,250,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,95,129,164,95,196,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,224,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,225,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,200,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,243,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,66,185,254,254,254,254,254,187,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,228,253,254,253,253,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,134,251,253,253,254,244,247,246,243,166,119,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,154,10,35,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,151,249,253,253,202,43,0,0,0,0,114,235,168,5,0,0,0,0,0,0,0,0,0,0,0,0,1,124,253,253,246,157,7,0,0,0,8,110,249,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,253,136,0,0,0,0,13,153,253,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,227,58,0,0,0,15,121,253,253,253,253,181,4,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,175,0,0,0,21,191,253,253,253,253,146,11,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,175,0,56,139,236,254,253,253,253,200,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,212,191,254,254,254,255,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,209,253,253,253,253,253,253,254,253,237,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,126,243,243,252,253,253,254,251,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,254,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,252,253,253,241,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,194,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,204,253,253,253,215,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,190,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,204,253,186,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,163,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,181,221,247,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,168,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,59,123,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,249,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,173,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,255,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,111,187,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,158,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,210,234,224,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,186,253,203,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,80,235,253,253,107,56,56,56,34,5,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,199,253,253,253,253,253,253,254,253,232,204,218,160,137,89,23,0,0,0,0,0,0,0,0,0,0,115,241,253,253,253,253,253,253,253,254,253,253,253,253,253,248,113,6,0,0,0,0,0,0,0,0,0,0,165,246,253,253,253,253,253,240,209,162,161,165,109,185,137,151,0,0,0,0,0,0,0,0,0,0,0,0,112,242,253,253,220,182,156,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,235,147,71,19,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,157,231,255,209,21,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,76,225,253,253,247,247,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,15,180,253,253,253,253,81,179,253,253,150,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,233,223,253,247,248,253,166,238,253,253,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,220,253,253,230,102,138,253,253,253,253,225,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,218,25,0,199,253,253,253,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,197,0,46,235,253,238,164,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,236,114,134,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,203,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,192,103,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,253,253,200,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,205,236,253,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,164,253,253,253,253,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,253,253,253,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,253,253,253,253,253,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,253,253,253,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,15,129,205,253,253,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,67,67,22,0,0,0,0,8,67,67,67,67,67,5,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,235,226,226,226,226,229,254,254,254,254,254,158,7,0,0,0,0,0,0,0,0,0,0,0,0,36,154,251,254,254,254,254,244,244,244,245,244,244,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,85,120,85,85,3,0,0,0,0,4,197,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,232,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,219,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,219,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,226,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,230,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,251,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,239,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,57,226,255,226,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,170,86,29,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,86,0,0,0,170,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,86,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,57,226,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,29,0,57,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,198,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,114,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,86,86,141,226,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,141,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,255,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,75,164,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,44,149,253,253,253,253,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,202,253,253,253,253,253,209,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,120,200,251,253,253,248,250,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,244,205,58,162,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,213,89,0,0,162,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,40,48,11,0,0,0,162,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,153,221,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,253,241,113,93,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,253,253,253,253,253,250,238,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,206,253,253,253,253,253,238,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,210,253,253,87,48,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,123,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,243,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,229,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,169,212,68,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,198,238,95,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,118,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,217,117,0,0,0,0,0,34,217,227,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,135,0,0,0,0,0,113,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,216,193,11,0,0,0,0,73,241,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,223,224,27,0,0,0,0,25,195,246,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,221,218,22,0,0,0,0,5,198,247,98,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,136,252,70,0,0,0,0,3,159,254,182,11,51,39,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,173,0,51,57,57,80,156,254,254,254,248,197,32,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,247,241,253,254,254,254,254,232,153,100,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,83,146,108,108,108,52,218,237,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,222,199,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,161,242,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,207,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,230,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,192,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,239,255,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,230,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,224,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,135,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,204,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,229,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,196,226,125,152,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,234,151,62,205,221,248,178,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,192,118,0,0,0,13,128,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,188,0,0,0,0,0,68,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,70,226,34,0,0,0,0,0,133,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,153,0,0,0,0,0,0,157,236,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,230,4,0,0,0,0,0,0,245,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,250,149,0,0,0,0,0,0,0,246,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,234,38,0,0,0,0,0,0,0,246,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,156,0,0,0,0,0,0,0,39,250,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,243,156,0,0,0,0,0,0,0,81,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,156,0,0,0,0,0,0,0,81,230,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,156,0,0,0,0,0,0,2,167,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,156,0,0,0,0,0,0,5,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,155,243,46,0,0,0,0,0,5,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,139,1,0,0,0,0,51,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,254,156,12,0,0,28,199,246,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,213,254,198,104,177,241,248,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,248,254,254,116,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,222,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,172,54,0,0,0,0,0,100,249,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,250,254,163,77,37,37,116,239,252,252,162,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,254,254,254,254,254,254,254,254,208,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,254,193,125,169,228,228,243,254,254,214,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,254,255,92,0,0,0,0,62,237,242,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,247,253,179,17,0,0,0,7,135,247,171,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,213,32,0,0,0,13,137,254,207,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,145,114,0,0,0,0,76,234,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,217,254,123,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,178,254,207,26,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,216,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,198,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,179,254,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,247,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,245,254,174,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,195,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,225,157,255,224,101,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,123,252,252,252,253,252,252,212,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,201,252,252,252,252,253,252,252,252,243,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,168,252,252,248,230,182,154,10,102,237,252,249,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,250,115,0,0,0,0,0,56,233,252,206,22,0,0,0,0,0,0,0,0,0,0,0,0,35,246,252,252,117,0,0,0,0,0,0,0,79,252,252,99,0,0,0,0,0,0,0,0,0,0,0,32,221,252,252,166,2,0,0,0,0,0,0,0,5,146,251,220,32,0,0,0,0,0,0,0,0,0,0,67,252,252,199,22,0,0,0,0,0,0,0,0,0,0,231,252,66,0,0,0,0,0,0,0,0,0,0,67,252,252,88,0,0,0,0,0,0,0,0,0,0,0,231,252,147,0,0,0,0,0,0,0,0,0,0,115,252,252,88,0,0,0,0,0,0,0,0,0,0,0,231,252,175,0,0,0,0,0,0,0,0,0,5,187,253,241,39,0,0,0,0,0,0,0,0,0,0,51,244,253,66,0,0,0,0,0,0,0,0,0,10,199,252,230,0,0,0,0,0,0,0,0,0,0,15,179,252,241,49,0,0,0,0,0,0,0,0,0,0,176,252,187,0,0,0,0,0,0,0,0,0,0,146,252,252,118,0,0,0,0,0,0,0,0,0,0,0,176,252,121,0,0,0,0,0,0,0,0,0,136,249,252,237,47,0,0,0,0,0,0,0,0,0,0,0,105,252,144,0,0,0,0,0,0,0,39,146,249,252,233,55,0,0,0,0,0,0,0,0,0,0,0,0,67,252,230,0,0,0,0,0,78,104,236,252,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,250,88,12,12,31,155,250,253,252,252,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,252,252,252,252,252,253,241,118,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,245,252,252,252,252,252,219,161,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,166,252,247,142,142,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,216,241,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,137,152,185,246,254,254,254,244,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,254,254,254,254,244,159,116,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,219,112,40,68,74,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,202,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,219,254,196,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,238,254,254,181,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,254,254,246,203,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,146,215,136,223,243,254,215,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,241,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,235,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,7,0,0,0,0,0,83,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,27,0,0,0,0,16,202,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,27,0,0,0,14,195,254,254,224,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,162,41,27,94,194,254,254,250,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,254,254,254,254,254,242,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,209,254,254,193,109,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,92,180,218,253,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,216,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,39,219,253,253,253,236,183,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,253,153,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,150,226,253,234,203,129,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,248,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,156,251,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,102,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,83,226,253,189,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,248,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,219,253,234,70,0,0,0,0,0,0,0,17,99,77,0,0,0,0,0,0,0,0,0,0,0,0,13,216,253,253,187,0,0,0,9,31,189,189,189,199,253,238,79,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,40,0,0,72,160,253,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,173,0,54,235,253,253,253,253,253,253,253,253,201,10,0,0,0,0,0,0,0,0,0,0,17,253,253,253,229,131,163,253,253,253,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,13,195,240,253,253,253,253,253,253,253,253,253,253,253,253,202,82,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,253,253,253,253,253,253,253,253,253,176,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,179,241,253,253,253,253,253,253,253,219,179,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,253,189,89,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,105,192,255,253,253,182,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,78,208,249,252,252,253,252,252,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,164,164,242,252,244,148,237,148,89,88,194,252,225,48,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,146,132,63,0,0,0,0,0,164,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,208,207,146,4,0,0,0,0,0,31,110,242,252,229,52,0,0,0,0,0,0,0,0,0,0,0,0,0,103,199,55,0,0,0,0,6,30,210,252,252,252,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,118,63,0,0,0,0,45,252,253,252,164,118,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,119,252,216,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,125,248,252,252,80,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,252,252,253,166,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,149,186,253,253,255,253,253,182,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,44,44,193,241,252,252,169,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,194,252,252,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,189,252,252,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,182,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,200,252,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,217,252,252,59,0,0,0,0,0,0,0,0,0,0,22,99,167,133,150,238,238,238,238,240,238,238,238,242,252,252,167,4,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,136,0,0,0,0,0,0,0,0,0,0,0,25,103,103,103,103,103,103,103,103,104,226,154,103,103,103,103,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,157,170,31,56,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,240,235,254,228,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,254,254,254,254,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,244,234,234,242,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,231,95,0,0,30,222,254,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,3,0,0,0,54,249,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,241,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,172,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,156,251,254,254,254,254,207,123,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,253,253,254,254,254,220,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,194,194,118,58,58,157,245,254,254,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,216,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,230,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,184,102,36,36,55,137,235,252,254,254,198,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,254,254,254,254,254,254,254,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,254,254,254,254,254,254,252,209,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,128,170,254,195,154,92,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,5,0,37,160,194,254,254,203,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,134,253,253,253,250,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,160,253,253,241,205,209,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,146,24,0,2,178,222,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,247,249,105,3,0,0,0,136,253,31,100,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,154,0,0,0,0,11,214,239,106,244,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,90,0,0,0,0,130,253,253,253,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,250,231,128,113,68,152,239,253,253,253,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,253,253,253,253,254,245,150,66,170,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,173,173,149,90,14,0,0,158,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,178,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,246,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,240,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,247,253,153,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,174,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,238,253,188,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,251,253,195,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,246,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,250,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,233,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,29,29,66,28,0,0,10,179,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,144,253,252,252,215,170,82,28,209,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,252,252,252,253,240,72,210,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,246,252,178,28,28,28,253,151,91,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,179,253,178,0,0,0,0,166,91,229,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,196,252,103,0,0,0,0,16,215,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,228,38,0,0,0,204,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,226,38,38,213,253,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,255,203,253,253,214,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,184,253,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,184,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,159,252,253,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,114,194,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,225,233,96,0,131,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,80,0,13,206,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,102,6,0,13,206,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,251,75,0,0,104,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,244,144,95,169,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,253,252,252,252,244,93,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,253,252,202,102,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,142,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,209,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,253,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,170,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,190,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,238,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,251,232,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,234,254,56,0,0,21,51,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,186,3,0,84,226,254,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,169,10,98,253,253,194,222,228,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,85,47,254,252,78,0,24,216,241,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,70,168,254,110,0,0,0,104,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,200,247,198,3,0,0,0,71,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,242,41,0,0,0,0,71,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,254,220,9,0,0,0,22,207,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,134,0,38,153,219,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,254,251,245,249,254,210,82,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,170,254,254,173,92,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,244,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,136,136,186,199,254,254,254,254,255,254,254,254,177,51,4,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,222,218,218,218,218,127,100,100,100,168,224,253,174,21,0,0,0,0,0,0,0,0,0,0,50,82,82,82,10,0,0,0,0,0,0,0,0,0,26,221,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,191,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,250,219,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,158,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,205,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,250,203,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,225,160,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,137,244,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,195,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,220,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,238,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,116,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,208,255,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,203,254,243,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,254,147,123,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,244,254,232,251,251,254,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,202,254,226,84,238,254,254,233,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,235,28,0,59,205,254,241,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,254,125,0,0,0,4,38,166,250,245,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,247,9,0,0,0,0,0,8,124,254,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,30,251,254,101,0,0,0,0,0,0,0,7,226,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,231,4,0,0,0,0,0,0,0,0,64,249,251,52,0,0,0,0,0,0,0,0,0,0,0,0,92,254,229,0,0,0,0,0,0,0,0,0,0,230,254,91,0,0,0,0,0,0,0,0,0,0,0,0,92,254,229,0,0,0,0,0,0,0,0,0,0,165,254,91,0,0,0,0,0,0,0,0,0,0,0,0,92,254,177,0,0,0,0,0,0,0,0,0,0,187,254,91,0,0,0,0,0,0,0,0,0,0,0,0,92,254,210,0,0,0,0,0,0,0,0,0,3,231,254,91,0,0,0,0,0,0,0,0,0,0,0,0,92,254,236,21,0,0,0,0,0,0,0,3,124,254,223,31,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,123,0,0,0,0,0,0,23,175,254,248,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,234,47,0,0,0,1,34,200,254,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,218,254,235,120,68,68,150,254,254,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,231,254,254,254,254,254,243,203,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,154,237,254,254,212,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,54,141,191,255,253,165,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,252,253,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,253,233,168,68,56,81,196,252,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,241,59,0,0,0,0,10,228,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,51,0,0,0,0,0,0,226,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,240,177,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,103,0,0,0,0,0,0,67,246,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,3,0,0,0,0,0,0,134,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,141,141,178,253,204,178,141,191,254,228,53,4,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,243,253,252,252,252,253,252,252,252,253,252,252,178,108,57,38,0,0,0,0,0,0,0,0,0,10,172,252,214,156,56,56,56,106,187,252,252,206,168,196,252,253,252,234,22,0,0,0,0,0,0,0,0,128,252,177,15,0,0,0,0,176,243,252,102,13,0,10,28,28,53,139,66,0,0,0,0,0,0,0,0,141,253,56,0,0,0,10,179,254,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,149,7,57,82,197,252,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,187,252,203,253,252,252,252,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,177,252,253,227,139,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,66,177,254,254,255,254,177,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,210,253,253,253,225,216,235,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,149,149,128,56,15,3,171,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,246,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,247,246,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,200,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,242,253,254,242,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,250,225,196,212,253,252,216,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,33,0,10,65,236,253,149,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,240,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,246,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,34,0,0,0,0,0,0,152,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,106,0,0,0,0,0,70,228,237,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,208,218,48,0,0,57,71,230,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,244,216,216,254,253,252,161,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,131,180,253,253,254,169,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,193,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,252,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,254,253,254,172,82,0,254,112,113,213,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,252,91,10,0,0,253,192,193,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,253,82,0,0,0,0,21,254,253,254,233,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,171,0,0,0,0,0,142,253,252,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,0,0,0,0,72,253,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,232,0,0,0,123,233,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,214,10,132,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,212,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,131,173,253,234,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,213,10,10,172,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,41,0,0,41,193,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,0,0,0,0,152,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,21,0,0,21,214,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,102,123,223,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,255,253,255,253,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,172,252,233,151,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,234,254,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,137,206,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,166,12,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,88,254,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,230,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,242,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,220,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,127,205,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,231,254,214,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,85,253,253,165,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,174,254,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,225,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,203,252,150,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,218,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,225,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,251,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,251,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,244,0,0,18,154,153,130,59,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,244,0,47,202,254,254,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,244,82,243,248,133,48,58,221,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,249,209,254,133,0,0,0,157,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,221,164,50,0,0,0,60,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,246,128,9,0,0,0,60,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,62,254,254,197,72,33,43,214,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,208,254,254,254,254,254,197,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,91,169,254,199,74,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,142,254,254,254,192,121,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,142,244,253,253,253,253,254,253,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,253,253,253,210,199,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,253,253,253,118,47,103,21,74,245,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,158,158,53,20,0,0,0,121,248,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,118,250,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,216,254,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,158,253,254,253,253,224,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,248,253,254,247,240,251,225,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,182,121,69,0,143,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,239,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,222,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,68,32,0,0,3,19,20,168,245,253,186,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,199,212,161,161,165,204,206,253,253,188,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,253,253,255,240,120,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,133,253,253,191,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,57,0,0,0,0,77,118,184,254,255,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,245,243,234,234,234,234,246,253,253,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,17,174,253,253,253,253,253,253,253,253,253,253,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,199,198,198,98,61,61,155,253,253,240,59,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,235,5,0,0,0,0,0,125,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,53,229,253,252,117,0,0,0,0,0,12,201,253,249,107,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,168,0,0,0,0,0,15,200,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,253,238,58,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,219,0,0,0,0,0,0,151,253,253,217,22,0,0,0,0,0,0,0,0,0,0,0,0,0,71,184,184,85,0,0,0,0,0,14,189,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,230,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,193,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,233,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,249,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,174,96,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,190,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,226,254,254,193,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,202,254,254,204,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,182,254,254,213,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,254,254,155,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,200,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,228,234,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,250,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,235,8,0,0,15,22,22,7,0,0,0,0,0,0,0,0,0,0,0,2,60,60,60,60,60,67,168,236,254,197,168,168,227,254,254,194,25,0,0,0,0,0,0,0,0,0,62,208,254,254,254,254,254,254,254,254,254,254,254,254,254,254,200,81,7,0,0,0,0,0,0,0,0,21,218,254,254,254,254,254,254,254,254,254,241,202,160,123,45,10,5,0,0,0,0,0,0,0,0,0,0,39,254,254,197,81,81,148,189,249,255,191,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,226,254,193,0,0,20,140,251,232,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,250,250,251,254,245,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,155,254,254,254,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,146,146,243,166,38,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,251,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,239,251,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,140,253,93,230,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,228,45,233,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,240,40,57,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,248,108,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,184,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,134,0,22,47,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,210,49,199,228,253,254,194,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,128,70,151,144,160,161,245,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,69,0,0,0,0,0,172,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,240,31,0,0,0,0,0,138,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,154,0,0,0,0,0,7,216,242,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,137,0,0,0,0,0,136,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,32,136,255,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,192,30,13,114,241,253,182,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,192,253,236,221,253,234,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,186,253,228,143,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,243,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,209,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,248,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,57,126,126,174,254,233,45,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,134,233,254,254,254,254,254,254,249,227,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,254,254,254,254,254,254,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,250,254,220,95,102,254,254,180,56,94,200,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,248,44,23,214,254,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,193,0,94,254,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,193,75,246,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,236,222,254,217,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,248,254,254,235,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,235,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,198,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,186,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,227,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,253,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,253,253,152,3,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,129,76,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,211,253,253,253,196,173,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,240,253,253,240,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,234,253,253,237,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,160,253,253,236,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,223,253,253,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,233,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,255,222,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,250,254,254,152,0,0,0,0,0,0,0,0,11,23,11,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,254,130,0,0,0,0,0,0,0,26,204,239,161,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,234,45,0,0,0,0,0,0,0,73,254,254,253,50,0,0,0,0,0,0,0,0,0,0,3,193,254,254,158,0,0,0,0,0,0,0,0,118,254,254,254,169,0,0,0,0,0,0,0,0,0,0,29,254,254,245,47,0,0,0,0,0,0,0,0,168,254,254,254,187,0,0,0,0,0,0,0,0,0,0,178,254,254,173,0,0,0,0,0,0,0,0,10,251,254,254,254,32,0,0,0,0,0,0,0,0,0,0,221,254,254,127,0,0,0,0,0,0,0,0,98,254,254,251,77,5,0,0,0,0,0,0,0,0,0,44,244,254,254,38,0,0,0,0,0,0,0,14,218,254,254,218,0,0,0,0,0,0,0,0,0,0,0,63,254,254,199,2,0,0,0,0,0,0,33,192,254,254,254,134,0,0,0,0,0,0,0,0,0,0,0,63,254,254,124,0,0,0,0,0,0,54,208,254,254,254,237,33,0,0,0,0,0,0,0,0,0,0,0,63,254,254,213,12,0,0,0,54,168,239,254,254,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,29,236,254,254,156,139,139,146,248,254,254,254,254,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,254,254,254,254,254,254,246,250,254,254,196,5,0,0,0,0,0,0,0,0,0,0,0,0,0,10,182,254,254,254,254,254,230,128,16,173,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,82,164,215,195,113,16,0,28,246,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,254,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,223,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,173,194,96,96,96,96,134,153,96,96,174,213,194,255,253,253,91,0,0,0,0,0,0,0,0,0,0,170,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,188,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,188,0,0,0,0,0,0,0,0,0,0,4,31,169,188,189,188,188,188,89,31,31,31,31,31,31,197,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,228,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,228,253,251,156,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,236,251,253,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,158,251,251,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,228,251,251,251,95,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,72,228,253,251,251,85,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,251,251,229,168,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,170,251,251,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,229,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,170,253,251,235,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,229,69,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,156,156,156,224,254,254,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,237,234,233,203,135,135,136,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,157,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,92,0,53,118,72,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,78,58,235,254,253,169,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,209,237,147,19,27,196,212,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,238,253,110,14,0,0,48,245,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,68,0,0,0,0,0,137,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,23,0,0,0,0,0,0,0,0,174,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,155,0,0,0,0,0,0,0,79,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,229,200,53,0,0,0,0,0,62,196,234,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,235,236,130,55,13,79,138,241,228,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,223,253,247,237,253,254,174,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,66,185,162,155,96,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,246,148,148,43,43,43,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,160,190,253,254,253,253,211,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,128,128,62,24,83,127,179,246,253,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,187,254,253,253,253,183,65,64,6,83,243,254,190,14,0,0,0,0,0,0,0,0,0,0,0,0,9,205,253,254,218,147,218,253,254,253,21,0,80,210,253,110,0,0,0,0,0,0,0,0,0,0,0,0,145,254,237,133,0,0,0,45,45,0,0,0,0,43,254,246,50,0,0,0,0,0,0,0,0,0,0,100,248,253,113,0,0,0,0,0,0,0,0,0,0,11,171,253,84,0,0,0,0,0,0,0,0,0,40,248,253,141,4,0,0,0,0,0,0,0,0,0,0,0,78,252,137,0,0,0,0,0,0,0,0,0,43,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,233,190,0,0,0,0,0,0,0,0,0,43,253,236,14,0,0,0,0,0,0,0,0,0,0,0,0,0,233,190,0,0,0,0,0,0,0,0,0,43,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,104,255,85,0,0,0,0,0,0,0,0,0,43,253,127,0,0,0,0,0,0,0,0,0,0,0,0,15,212,246,56,0,0,0,0,0,0,0,0,0,43,253,179,0,0,0,0,0,0,0,0,0,0,0,0,105,253,126,0,0,0,0,0,0,0,0,0,0,43,253,232,0,0,0,0,0,0,0,0,0,0,0,98,254,232,16,0,0,0,0,0,0,0,0,0,0,25,227,241,36,0,0,0,0,0,0,0,0,0,72,229,237,54,0,0,0,0,0,0,0,0,0,0,0,0,129,254,103,0,0,0,0,0,0,0,0,102,254,237,133,0,0,0,0,0,0,0,0,0,0,0,0,0,21,238,238,67,0,0,0,0,0,50,165,248,232,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,245,111,22,22,93,171,246,253,225,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,155,243,254,253,253,253,253,217,111,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,166,218,245,182,59,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,211,253,253,183,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,240,249,252,252,252,252,247,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,188,168,252,252,253,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,136,39,13,5,51,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,220,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,114,246,253,252,247,240,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,180,252,252,253,252,252,252,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,240,252,252,252,253,252,252,252,252,244,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,252,245,224,252,253,224,115,206,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,243,155,224,252,253,47,0,21,101,170,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,208,252,239,223,252,252,149,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,219,252,252,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,250,231,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,147,160,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,216,253,253,255,228,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,157,253,252,252,252,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,252,252,252,253,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,253,252,214,139,140,215,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,214,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,130,234,127,76,0,0,0,10,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,228,250,225,225,225,229,234,137,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,150,238,254,234,225,225,254,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,84,28,0,0,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,239,254,176,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,194,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,255,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,252,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,66,190,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,61,95,208,208,208,191,60,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,129,216,253,252,252,252,252,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,120,244,252,252,253,252,252,252,252,252,252,204,28,0,0,0,0,0,0,0,0,0,0,0,0,36,206,243,252,252,252,252,178,177,168,29,29,55,252,252,190,0,0,0,0,0,0,0,0,0,0,8,127,213,252,252,252,241,195,74,0,0,0,0,0,30,252,252,239,74,0,0,0,0,0,0,0,0,0,60,252,252,252,236,118,76,0,0,0,0,0,0,0,30,252,252,252,103,0,0,0,0,0,0,0,0,38,216,252,252,225,56,0,0,0,0,0,0,0,0,0,2,93,247,252,244,0,0,0,0,0,0,0,0,219,252,252,160,41,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,0,0,0,0,0,0,0,0,253,252,243,55,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,163,0,0,0,0,0,0,0,0,255,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,253,104,0,0,0,0,0,0,0,0,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,252,103,0,0,0,0,0,0,0,0,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,2,141,252,252,103,0,0,0,0,0,0,0,0,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,103,0,0,0,0,0,0,0,0,91,239,250,153,75,22,0,0,0,0,0,0,0,0,67,183,252,252,238,73,0,0,0,0,0,0,0,0,0,103,252,252,252,200,178,126,30,30,31,30,127,178,243,252,252,252,189,0,0,0,0,0,0,0,0,0,0,28,126,252,252,252,252,252,252,252,253,252,252,252,252,252,252,125,28,0,0,0,0,0,0,0,0,0,0,0,1,14,58,162,210,252,252,252,253,252,252,252,172,144,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,59,59,59,59,59,59,59,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,255,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,250,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,203,253,202,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,251,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,208,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,239,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,164,2,0,0,23,95,194,213,213,199,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,244,10,0,91,236,253,253,253,253,253,227,32,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,198,6,144,252,253,253,248,253,247,248,253,219,27,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,159,8,253,253,253,139,57,106,52,134,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,117,253,253,192,21,0,0,0,30,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,253,253,107,0,0,0,4,142,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,253,253,253,253,241,201,201,201,204,253,238,209,36,0,0,0,0,0,0,0,0,0,0,0,0,0,115,188,253,253,253,253,253,253,253,253,253,194,69,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,122,137,253,253,253,198,209,135,19,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,99,175,73,73,73,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,145,206,251,251,251,253,251,236,144,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,115,241,253,251,246,215,215,253,251,251,251,226,27,0,0,0,0,0,0,0,0,0,0,0,0,0,63,231,251,251,253,188,123,0,0,143,142,236,251,251,212,47,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,122,72,30,0,0,0,0,0,87,251,251,253,210,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,253,255,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,210,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,190,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,230,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,241,251,251,201,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,251,246,137,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,201,71,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,113,255,253,253,237,113,255,206,222,253,253,192,75,0,0,0,0,0,0,0,0,0,0,0,0,29,194,243,252,253,252,252,252,252,253,252,252,252,252,253,195,19,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,252,214,195,253,252,208,233,252,253,252,209,66,0,0,0,0,0,0,0,0,0,0,85,252,252,252,84,84,84,28,0,84,84,19,56,161,253,252,245,74,0,0,0,0,0,0,0,0,0,0,163,252,252,252,0,0,0,0,0,0,0,0,0,0,112,112,87,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,63,0,0,0,0,0,0,89,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,241,72,0,0,0,86,85,215,252,252,226,72,0,0,0,0,0,0,0,0,0,0,0,0,19,87,233,252,253,233,197,197,197,253,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,223,253,252,252,252,252,253,252,252,252,252,253,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,112,221,252,252,253,252,141,128,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,63,0,0,0,29,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,167,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,118,118,118,208,177,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,235,244,254,254,254,254,254,245,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,254,254,254,254,254,238,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,214,205,254,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,82,82,82,82,22,47,254,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,219,254,254,249,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,155,254,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,159,250,254,254,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,254,254,187,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,254,254,254,153,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,223,215,206,211,254,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,17,0,25,243,254,254,226,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,51,57,0,0,0,0,64,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,223,237,239,98,84,110,221,240,254,254,209,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,237,254,254,254,254,254,254,254,254,254,254,51,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,254,254,254,254,254,254,253,233,215,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,254,254,254,254,254,243,161,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,117,124,183,176,254,254,228,54,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,13,183,200,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,139,234,136,0,0,0,0,0,0,153,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,5,183,252,246,55,0,0,0,0,0,49,226,252,193,21,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,162,0,0,0,0,0,0,145,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,36,215,252,252,119,0,0,0,0,0,0,223,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,14,0,0,0,0,0,0,223,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,236,118,7,0,0,0,0,0,0,223,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,6,166,252,169,0,0,0,0,0,0,0,0,223,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,42,252,252,105,45,45,45,45,46,168,193,193,245,252,252,14,0,0,0,0,0,0,0,0,0,0,0,36,216,252,252,252,252,252,252,252,253,252,252,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,253,253,253,253,255,253,253,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,183,252,252,252,252,220,192,192,192,193,157,53,220,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,109,237,237,237,131,42,0,0,0,0,0,0,120,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,188,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,189,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,241,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,24,24,76,24,118,243,244,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,130,194,252,253,252,252,252,252,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,26,122,191,252,252,252,252,253,252,252,252,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,252,252,252,252,161,160,185,252,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,253,178,106,22,22,0,22,205,252,252,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,255,103,0,0,0,0,47,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,253,236,118,0,0,0,120,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,215,253,252,234,142,7,49,228,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,252,252,252,211,180,252,252,218,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,199,249,253,255,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,252,252,219,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,252,253,252,252,252,221,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,192,119,227,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,63,0,48,232,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,190,0,5,138,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,158,110,178,252,252,231,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,253,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,253,235,128,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,180,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,148,253,253,163,0,0,0,0,0,0,0,0,0,0,0,50,208,208,208,208,129,60,147,147,122,208,208,229,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,42,225,252,252,252,252,252,252,252,253,252,252,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,48,74,205,204,74,74,74,74,74,74,189,252,252,252,236,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,210,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,216,252,252,252,241,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,219,252,252,252,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,253,252,252,252,207,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,255,253,253,204,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,242,252,253,252,239,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,95,247,252,252,253,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,252,253,153,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,206,243,252,252,252,252,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,252,246,222,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,189,252,252,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,252,27,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,228,252,252,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,146,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,152,254,253,254,253,193,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,253,252,253,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,244,162,41,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,212,40,0,0,0,0,0,131,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,254,172,0,0,0,0,0,0,0,0,52,31,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,252,203,122,102,102,102,102,123,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,253,254,253,254,253,254,253,254,253,254,213,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,212,151,151,151,151,213,212,151,151,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,121,118,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,253,253,253,248,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,100,253,253,253,253,253,246,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,250,128,121,247,253,253,247,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,237,132,0,0,147,203,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,66,249,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,215,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,21,49,9,10,182,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,115,208,203,253,181,182,253,253,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,112,159,253,253,253,253,253,253,253,253,200,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,253,253,253,253,253,200,17,0,0,0,0,0,0,0,0,0,0,0,0,0,92,251,253,253,248,150,150,242,253,253,253,253,253,253,242,108,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,242,161,0,36,235,253,253,253,253,253,253,253,245,184,0,0,0,0,0,0,0,0,0,0,0,97,253,253,152,70,199,223,253,253,241,102,58,125,184,211,204,160,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,253,253,253,182,61,0,0,0,0,25,16,0,0,0,0,0,0,0,0,0,0,0,0,37,211,248,253,252,232,173,96,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,198,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,125,22,0,0,0,0,0,138,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,193,254,58,0,0,0,0,0,78,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,254,58,0,0,0,0,0,55,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,58,0,0,0,0,0,50,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,58,0,0,0,0,0,0,226,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,243,32,0,0,0,0,0,0,226,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,189,0,0,0,32,109,193,205,249,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,163,42,109,193,246,254,219,139,199,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,248,208,139,55,6,0,142,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,37,37,33,0,0,0,0,0,142,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,240,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,228,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,114,113,113,113,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,194,228,252,253,252,252,252,237,226,225,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,200,252,252,252,253,252,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,245,129,84,84,84,84,84,177,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,204,87,0,0,0,0,0,95,203,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,253,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,147,234,252,252,252,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,253,252,252,252,252,198,197,197,103,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,252,252,252,252,253,252,252,252,252,169,44,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,174,204,221,173,252,253,252,252,252,252,253,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,140,203,255,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,90,243,252,249,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,176,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,38,0,76,117,225,240,253,252,233,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,156,221,198,246,252,252,252,253,201,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,180,252,253,252,252,249,223,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,112,112,112,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,112,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,154,254,180,254,254,198,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,226,253,253,253,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,212,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,253,253,253,202,33,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,247,77,26,253,239,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,167,120,9,150,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,207,23,0,165,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,164,30,211,251,253,199,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,121,209,253,253,198,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,193,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,192,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,253,253,193,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,209,253,253,202,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,189,183,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,176,68,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,42,224,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,224,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,236,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,243,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,214,254,131,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,227,254,254,254,83,3,187,179,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,209,254,254,253,205,143,157,254,254,228,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,254,254,223,53,9,82,254,187,172,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,226,35,0,0,116,137,10,25,212,254,39,0,0,0,0,0,0,0,0,0,0,0,0,3,128,252,254,250,102,0,0,0,11,8,0,0,85,254,205,7,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,141,0,0,0,0,0,0,0,0,36,254,254,55,0,0,0,0,0,0,0,0,0,0,36,234,254,254,192,12,0,0,0,0,0,0,0,0,8,204,254,55,0,0,0,0,0,0,0,0,0,0,103,254,254,243,44,0,0,0,0,0,0,0,0,0,36,254,254,131,0,0,0,0,0,0,0,0,0,70,253,254,254,145,0,0,0,0,0,0,0,0,0,0,36,254,254,154,0,0,0,0,0,0,0,0,0,113,254,254,221,15,0,0,0,0,0,0,0,0,0,0,157,254,254,152,0,0,0,0,0,0,0,0,35,238,254,250,61,0,0,0,0,0,0,0,0,0,0,51,247,254,254,55,0,0,0,0,0,0,0,0,140,254,254,228,0,0,0,0,0,0,0,0,0,0,18,159,254,254,210,9,0,0,0,0,0,0,0,0,155,254,254,107,0,0,0,0,0,0,0,0,0,20,200,254,254,254,43,0,0,0,0,0,0,0,0,0,155,254,222,18,0,0,0,0,0,0,0,0,67,200,254,254,251,158,2,0,0,0,0,0,0,0,0,0,155,254,189,0,0,0,0,0,0,0,67,180,243,254,254,254,188,0,0,0,0,0,0,0,0,0,0,0,103,254,250,60,0,0,0,34,113,194,251,254,254,254,237,118,9,0,0,0,0,0,0,0,0,0,0,0,14,221,254,249,190,190,190,251,254,254,254,254,254,194,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,239,254,254,254,254,254,254,254,218,146,64,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,102,154,245,254,239,154,96,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,165,141,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,128,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,233,168,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,253,203,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,240,252,244,169,131,57,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,156,253,252,252,252,247,172,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,139,228,252,253,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,255,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,252,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,214,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,241,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,227,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,241,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,2,0,0,0,0,0,0,0,0,0,0,0,0,1,16,26,0,0,2,8,8,9,9,83,93,141,224,254,178,32,0,0,0,0,0,0,0,0,0,0,0,16,233,223,180,180,191,242,242,254,254,254,254,254,255,254,254,170,0,0,0,0,0,0,0,0,0,0,0,67,250,254,254,254,254,254,254,254,254,254,254,254,254,238,156,26,0,0,0,0,0,0,0,0,0,0,0,35,215,254,254,238,206,165,150,150,150,150,150,150,72,4,0,0,0,0,0,0,0,0,0,0,0,0,5,166,254,254,243,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,239,254,216,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,197,254,248,68,34,45,50,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,254,254,254,254,254,254,200,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,240,254,254,254,254,254,254,254,254,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,172,254,251,208,172,125,125,186,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,37,35,0,0,0,0,78,254,230,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,135,16,0,0,0,0,46,143,240,233,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,114,0,0,0,10,133,238,254,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,222,62,0,0,68,249,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,213,62,68,250,254,245,50,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,155,254,254,248,251,254,222,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,134,254,254,254,211,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,74,175,104,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,255,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,194,252,196,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,144,43,0,0,0,0,0,17,209,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,252,116,0,0,0,0,0,99,252,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,116,0,0,0,0,3,170,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,42,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,252,221,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,43,0,0,0,0,0,24,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,24,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,44,0,0,0,0,0,24,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,162,140,47,47,47,118,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,171,252,252,253,252,252,252,252,253,252,252,154,70,70,70,153,33,0,0,0,0,0,0,0,0,0,0,0,13,45,150,211,252,252,252,252,253,252,252,252,252,253,252,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,22,22,22,75,201,252,252,252,147,137,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,165,212,118,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,92,216,251,253,253,253,243,222,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,253,253,253,224,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,182,175,175,239,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,179,181,128,5,0,0,209,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,220,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,59,224,253,253,253,238,189,189,189,189,109,59,56,0,0,0,0,0,0,0,0,0,0,0,25,53,173,210,253,253,253,253,253,253,253,253,253,253,253,253,250,183,116,0,0,0,0,0,0,0,0,111,212,253,253,253,253,253,253,253,253,253,253,245,238,253,253,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,253,220,214,214,114,84,84,69,57,84,84,84,91,214,147,0,0,0,0,0,0,0,0,222,253,239,237,221,107,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,55,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,150,225,254,254,187,254,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,253,253,253,253,253,253,253,253,253,253,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,253,253,253,173,142,142,214,253,253,247,60,0,0,0,0,0,0,0,0,0,0,0,9,182,213,35,19,19,19,19,19,6,0,0,163,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,65,29,0,0,0,0,0,0,0,0,86,244,253,235,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,244,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,240,253,186,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,239,253,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,239,253,241,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,239,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,239,253,253,188,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,253,253,189,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,198,253,253,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,84,242,253,253,190,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,191,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,246,253,253,193,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,253,253,195,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,247,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,199,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,132,105,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,220,132,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,254,254,195,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,223,254,254,254,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,29,182,254,254,162,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,80,226,226,226,195,132,87,38,88,251,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,248,254,254,254,254,254,254,254,254,254,254,254,188,17,6,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,254,254,254,254,254,254,254,254,254,254,254,216,169,169,169,72,0,0,0,0,0,0,0,0,254,254,254,240,206,199,143,234,254,254,254,254,254,254,254,254,254,254,254,247,0,0,0,0,0,0,0,0,254,254,254,102,0,9,51,197,254,254,254,254,239,247,254,254,254,254,254,247,0,0,0,0,0,0,0,0,223,254,254,204,179,212,254,254,254,254,255,129,17,50,75,110,141,133,124,47,0,0,0,0,0,0,0,0,55,247,254,254,254,254,254,254,254,254,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,247,254,254,254,254,247,215,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,128,159,159,128,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,191,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,197,204,252,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,253,252,205,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,251,244,253,253,192,66,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,252,75,82,215,252,253,252,224,119,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,224,118,0,0,19,106,168,224,252,252,223,66,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,205,113,0,0,0,0,0,19,28,28,28,9,0,0,0,0,0,0,0,0,0,0,0,0,0,214,255,253,253,253,242,66,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,197,145,196,221,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,178,252,196,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,225,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,233,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,171,253,149,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,99,252,253,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,154,71,71,154,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,168,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,215,0,109,252,149,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,253,252,91,0,78,200,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,253,179,20,0,0,63,241,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,35,0,0,0,0,181,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,84,0,0,0,0,0,182,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,252,128,0,0,0,0,0,0,181,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,1,211,252,246,92,0,0,0,0,0,0,181,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,132,0,0,0,0,0,0,42,221,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,222,41,0,0,0,0,0,0,135,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,252,179,0,0,0,0,0,0,94,247,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,179,0,0,0,0,0,21,129,252,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,179,0,0,0,0,21,206,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,180,0,0,0,32,212,253,255,222,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,252,242,196,73,135,227,252,252,159,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,231,252,252,252,253,252,246,132,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,148,252,252,253,210,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,162,205,205,78,9,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,123,252,252,252,243,196,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,201,252,252,252,166,167,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,251,163,39,2,2,39,230,237,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,241,0,0,0,0,0,161,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,171,245,35,0,0,0,0,209,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,237,201,3,0,0,8,211,252,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,85,20,21,223,252,252,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,146,232,216,197,252,252,246,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,252,253,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,253,255,216,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,246,252,252,252,253,203,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,252,252,252,209,167,252,235,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,252,121,6,34,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,252,252,66,0,34,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,218,14,126,158,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,210,174,250,253,252,248,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,252,252,252,253,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,236,252,252,252,219,114,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,147,233,109,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,52,68,83,126,128,199,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,127,231,250,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,68,237,254,254,254,250,222,184,135,133,63,63,0,0,0,0,0,0,0,0,0,0,0,0,1,62,128,238,254,253,208,126,42,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,254,209,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,239,254,254,210,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,89,0,0,0,3,96,198,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,242,160,120,59,50,130,191,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,254,253,252,254,254,210,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,125,153,177,198,198,131,91,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,255,245,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,220,243,78,185,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,75,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,247,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,250,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,214,217,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,218,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,186,235,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,124,98,62,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,238,254,253,220,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,215,146,156,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,241,245,64,0,51,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,253,168,0,0,82,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,155,0,0,163,249,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,254,105,0,72,252,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,230,250,245,248,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,226,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,149,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,230,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,232,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,217,39,0,0,0,0,0,0,0,0,36,35,0,0,0,0,0,0,0,0,0,0,0,0,0,18,191,253,178,0,0,0,0,0,0,0,0,107,233,233,145,4,0,0,0,0,0,0,0,0,0,0,0,78,253,253,178,0,0,0,0,0,0,0,0,121,253,253,237,12,0,0,0,0,0,0,0,0,0,0,0,209,253,253,99,0,0,0,0,0,0,0,0,121,253,237,56,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,29,0,0,0,0,0,0,0,6,167,253,170,0,0,0,0,0,0,0,0,0,0,0,0,81,243,250,137,7,0,0,0,0,0,0,0,42,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,106,253,238,0,0,0,0,0,0,0,0,0,164,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,106,254,246,56,0,0,0,0,0,0,0,61,254,255,223,44,0,0,63,0,0,0,0,0,0,0,0,0,19,217,253,161,43,0,0,0,0,0,0,60,253,253,196,78,210,210,198,0,0,0,0,0,0,0,0,0,0,201,253,253,227,164,86,16,15,15,165,185,253,253,253,253,253,239,108,0,0,0,0,0,0,0,0,0,0,32,211,253,253,253,253,253,253,253,255,253,253,253,253,253,189,8,0,0,0,0,0,0,0,0,0,0,0,0,28,178,200,253,253,253,253,253,254,253,253,253,186,72,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,74,74,215,223,134,74,117,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,69,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,201,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,252,235,128,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,162,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,250,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,201,0,0,0,0,10,121,203,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,201,0,0,0,63,197,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,210,8,0,27,232,254,254,237,248,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,83,35,206,254,218,59,117,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,206,254,207,167,254,217,28,0,106,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,93,0,0,106,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,248,254,254,254,88,5,73,220,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,217,254,254,254,254,219,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,231,254,254,254,254,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,152,163,254,201,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,67,186,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,186,253,253,247,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,94,235,254,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,235,253,254,253,253,201,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,248,253,254,207,126,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,149,254,254,208,232,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,186,253,253,234,54,62,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,192,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,38,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,254,254,255,208,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,236,253,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,254,253,229,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,147,253,254,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,142,235,253,253,254,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,228,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,181,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,236,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,105,105,25,0,0,0,0,0,32,211,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,193,25,0,0,4,60,206,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,227,253,253,253,201,165,77,170,253,253,253,245,13,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,253,189,176,253,253,254,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,253,182,14,11,56,178,179,178,182,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,182,22,0,0,0,0,0,0,15,253,253,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,8,119,14,0,0,0,0,0,0,0,15,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,226,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,180,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,154,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,238,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,246,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,236,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,252,252,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,255,253,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,252,252,252,253,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,253,252,252,252,253,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,255,253,175,207,255,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,242,252,252,222,138,10,62,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,47,221,253,252,246,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,207,144,221,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,253,253,253,255,222,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,253,252,252,252,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,180,252,253,252,252,252,154,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,231,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,109,191,253,253,149,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,247,252,252,252,252,252,232,156,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,253,149,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,253,252,236,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,143,143,62,62,143,221,252,253,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,119,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,227,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,108,0,0,0,0,0,32,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,155,253,252,252,108,0,0,11,155,218,227,227,217,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,252,253,252,252,128,182,181,191,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,253,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,1,171,253,253,253,255,253,253,253,255,253,253,253,255,253,253,253,0,0,0,0,0,0,0,0,0,0,32,217,252,252,252,252,253,252,252,252,253,252,252,210,253,252,241,97,0,0,0,0,0,0,0,0,0,0,140,252,252,252,252,252,253,252,252,252,237,91,71,31,133,215,102,0,0,0,0,0,0,0,0,0,0,125,221,252,252,252,252,252,253,252,148,108,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,253,253,253,253,145,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,252,200,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,215,91,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,226,141,29,0,29,0,0,29,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,86,0,0,0,0,0,0,29,170,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,29,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,226,29,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,86,226,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,170,0,0,0,0,29,198,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,57,0,0,86,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,198,29,198,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,141,57,114,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,0,0,57,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,29,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,114,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,226,170,226,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,226,226,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,72,245,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,194,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,253,253,205,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,228,253,253,197,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,253,193,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,197,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,245,253,244,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,227,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,208,253,255,170,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,225,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,240,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,228,253,250,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,251,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,235,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,245,253,238,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,229,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,12,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,89,201,154,220,182,116,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,13,214,254,254,254,254,254,254,175,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,235,205,244,254,254,255,254,254,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,208,237,254,254,254,215,110,151,69,165,165,207,11,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,254,254,254,172,104,16,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,2,90,253,254,251,229,103,99,126,178,67,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,144,254,254,240,50,0,28,223,254,254,254,189,121,18,0,0,0,0,0,0,0,0,0,0,0,0,23,180,254,254,254,55,0,0,28,100,138,105,157,254,254,230,53,0,0,0,0,0,0,0,0,0,0,0,36,254,255,192,77,4,0,0,0,0,0,0,4,131,193,254,230,108,0,0,0,0,0,0,0,0,0,6,158,254,163,38,0,0,0,0,0,0,0,0,0,0,166,254,254,184,42,0,0,0,0,0,0,0,0,119,254,254,65,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,180,0,0,0,0,0,0,0,0,137,254,206,6,0,0,0,0,0,0,0,0,0,0,0,5,190,254,254,254,0,0,0,0,0,0,0,0,142,254,201,0,0,0,0,0,0,0,0,0,0,0,21,153,253,254,254,138,0,0,0,0,0,0,0,0,186,254,207,8,0,0,0,0,0,0,0,12,83,148,210,254,254,254,243,65,0,0,0,0,0,0,0,0,112,236,254,100,9,0,46,48,48,48,139,199,254,254,254,254,254,178,54,0,0,0,0,0,0,0,0,0,0,125,254,254,197,184,252,254,254,254,254,254,254,254,216,167,71,15,0,0,0,0,0,0,0,0,0,0,0,8,96,254,254,254,254,254,254,254,254,140,53,53,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,124,153,243,157,210,191,126,35,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,1,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,255,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,250,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,215,253,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,215,253,253,213,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,214,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,230,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,170,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,57,141,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,29,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,198,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,114,86,198,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,255,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,198,255,141,114,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,29,0,141,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,114,0,0,0,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,114,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,86,198,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,198,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,34,161,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,95,217,253,253,253,119,0,0,0,60,136,136,13,0,0,0,0,0,0,0,0,0,0,0,0,2,34,213,253,253,253,253,248,202,24,0,0,223,253,253,202,3,0,0,0,0,0,0,0,0,0,0,15,109,253,253,253,212,105,105,77,0,0,0,0,211,253,253,253,5,0,0,0,0,0,0,0,0,0,23,210,253,253,233,140,31,0,0,0,0,0,0,0,175,253,253,166,2,0,0,0,0,0,0,0,0,4,211,253,253,233,34,0,0,0,0,0,0,12,80,161,242,253,253,12,0,0,0,0,0,0,0,0,0,89,253,253,241,93,0,0,0,0,0,34,81,195,253,253,253,253,179,4,0,0,0,0,0,0,0,0,0,107,253,253,253,204,95,50,75,174,174,234,253,253,253,253,253,253,57,0,0,0,0,0,0,0,0,0,0,2,143,253,253,253,253,253,253,253,253,253,253,208,174,236,253,178,6,0,0,0,0,0,0,0,0,0,0,0,4,137,228,253,253,253,253,253,253,253,198,13,178,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,77,185,104,61,61,61,61,44,22,222,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,139,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,220,253,224,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,197,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,197,253,253,211,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,214,253,253,253,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,204,253,253,253,163,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,223,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,128,235,235,235,235,235,235,235,220,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,254,254,254,254,254,253,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,199,199,192,61,122,199,214,254,254,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,190,254,254,254,221,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,254,254,185,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,213,254,254,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,119,246,254,247,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,166,253,254,247,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,254,254,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,254,254,200,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,245,254,254,254,13,0,0,0,0,0,0,0,0,26,31,0,0,0,0,0,0,0,0,0,0,0,77,209,254,254,254,183,144,221,221,221,221,221,221,221,221,229,231,210,84,0,0,0,0,0,0,0,0,93,250,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,193,254,254,254,254,254,254,254,254,254,254,254,254,234,213,213,223,254,251,138,0,0,0,0,0,0,0,0,45,223,234,234,234,234,234,158,110,96,96,96,96,49,0,0,24,96,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,111,236,196,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,253,253,189,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,182,248,254,253,80,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,245,253,253,218,44,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,246,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,242,253,253,154,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,204,122,108,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,253,254,253,172,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,245,66,66,162,187,253,253,209,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,242,253,194,0,0,0,5,62,235,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,70,0,0,0,0,0,0,182,230,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,192,253,70,0,0,0,0,0,0,85,253,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,114,0,0,0,0,0,40,228,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,131,0,0,0,0,45,228,253,253,158,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,204,0,0,0,8,194,253,253,241,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,246,35,0,39,207,253,253,246,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,150,253,106,45,227,254,253,249,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,241,253,253,253,255,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,244,99,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,210,253,205,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,175,190,205,180,175,140,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,195,142,142,142,99,222,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,241,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,244,115,95,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,184,169,242,215,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,188,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,83,167,248,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,64,64,138,235,254,202,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,194,239,239,240,174,174,174,91,16,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,111,144,250,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,221,253,253,253,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,57,182,248,254,253,253,201,154,188,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,205,243,244,249,253,253,254,219,78,5,0,4,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,253,253,223,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,253,253,253,128,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,253,91,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,171,225,253,253,253,253,184,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,189,253,253,254,236,97,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,191,254,253,253,164,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,230,254,254,206,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,194,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,153,253,238,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,158,0,0,0,0,0,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,165,0,0,0,0,0,0,0,205,253,195,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,196,8,0,0,0,0,24,180,251,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,176,12,12,12,89,238,253,253,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,253,253,253,255,253,253,250,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,247,253,253,253,254,253,223,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,210,253,205,143,66,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,70,143,235,253,191,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,135,229,254,253,253,253,253,250,208,208,208,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,163,253,253,254,253,253,253,253,254,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,66,213,254,254,128,192,254,216,116,116,53,0,32,116,116,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,209,92,8,114,186,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,232,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,232,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,182,254,254,159,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,113,241,253,253,163,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,136,253,254,241,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,46,118,253,241,174,11,0,0,0,0,0,0,0,0,0,0,0,0,0,128,231,147,21,0,0,0,0,0,0,3,118,253,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,212,87,11,0,7,24,24,139,213,254,246,74,0,0,0,0,0,0,0,0,0,0,0,0,0,114,237,253,253,253,204,162,187,253,253,254,245,175,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,69,163,247,255,253,253,253,190,69,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,46,46,46,46,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,203,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,252,244,169,169,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,229,252,252,252,253,252,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,225,253,252,252,252,253,252,252,252,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,229,253,251,244,231,125,0,0,0,163,255,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,227,75,56,19,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,186,43,0,0,0,0,0,0,0,25,253,252,56,0,0,0,0,0,0,0,0,0,0,0,38,225,253,227,31,0,0,0,0,0,0,0,0,0,253,252,56,0,0,0,0,0,0,0,0,0,0,7,204,253,239,38,0,0,0,0,0,0,0,0,0,0,141,253,69,0,0,0,0,0,0,0,0,0,0,82,252,252,125,0,0,0,0,0,0,0,0,0,0,0,141,252,187,7,0,0,0,0,0,0,0,0,10,197,252,164,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,0,0,0,0,29,252,252,90,0,0,0,0,0,0,0,0,0,0,0,51,241,252,252,28,0,0,0,0,0,0,0,0,29,253,253,28,0,0,0,0,0,0,0,0,0,0,0,114,254,253,194,13,0,0,0,0,0,0,0,0,104,252,196,9,0,0,0,0,0,0,0,0,0,0,19,194,253,252,56,0,0,0,0,0,0,0,0,0,141,252,80,0,0,0,0,0,0,0,0,0,0,19,191,252,253,170,13,0,0,0,0,0,0,0,0,0,141,252,56,0,0,0,0,0,0,0,0,0,126,231,252,252,178,9,0,0,0,0,0,0,0,0,0,0,79,253,128,4,0,0,0,13,92,141,178,253,254,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,178,108,57,95,206,253,252,252,252,253,252,170,9,0,0,0,0,0,0,0,0,0,0,0,0,7,149,252,252,253,252,252,252,253,252,252,214,156,56,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,190,253,252,252,252,241,139,52,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,38,149,255,255,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,76,129,228,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,187,253,253,253,249,239,213,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,102,102,102,102,22,4,139,253,219,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,253,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,243,253,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,234,253,192,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,247,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,249,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,238,125,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,195,158,132,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,222,198,198,198,198,198,198,198,198,198,23,6,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,253,253,253,253,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,253,253,253,253,253,194,112,112,62,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,136,60,170,46,46,46,46,46,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,233,217,217,217,217,217,217,217,217,91,29,29,9,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,140,74,0,0,0,0,0,0,0,0,0,0,135,253,253,253,253,253,253,253,253,253,151,236,253,253,253,253,253,232,83,0,0,0,0,0,0,0,0,0,7,126,215,215,110,27,27,27,27,27,10,24,27,153,215,232,253,253,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,222,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,27,44,0,0,0,0,0,0,0,32,48,131,248,253,253,217,0,0,0,0,0,0,0,0,0,0,0,0,141,242,114,46,0,0,72,114,114,207,253,253,253,253,198,36,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,209,179,179,226,253,253,253,253,253,253,212,38,0,0,0,0,0,0,0,0,0,0,0,0,0,5,162,215,253,253,253,253,253,253,253,242,196,63,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,130,144,207,208,234,130,130,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,41,41,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,104,254,254,254,220,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,199,236,148,131,206,240,222,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,85,0,0,0,142,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,177,44,0,0,0,59,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,199,17,0,0,0,0,0,254,148,0,119,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,64,0,0,0,0,0,85,254,98,72,247,254,23,0,0,0,0,0,0,0,0,0,0,0,0,3,191,254,23,0,0,0,0,0,134,247,50,212,253,146,4,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,23,0,0,0,0,51,234,142,180,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,210,254,23,0,0,0,114,237,195,153,254,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,99,9,34,198,251,253,245,254,244,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,245,253,215,240,254,253,253,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,254,202,119,203,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,93,93,93,9,7,204,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,190,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,140,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,169,228,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,163,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,164,252,253,253,253,251,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,241,253,253,253,253,253,253,236,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,254,253,253,253,253,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,231,253,254,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,75,229,253,253,254,253,155,153,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,235,86,23,220,253,195,199,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,253,253,252,226,49,0,179,230,226,65,182,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,252,156,0,0,0,96,17,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,155,0,0,0,0,0,0,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,0,45,163,254,254,235,49,0,0,0,0,0,0,0,188,255,255,107,0,0,0,0,0,0,0,0,0,0,0,150,253,253,230,53,0,0,0,0,0,0,0,29,215,253,228,6,0,0,0,0,0,0,0,0,0,0,40,237,253,253,199,0,0,0,0,0,0,0,30,207,253,238,72,0,0,0,0,0,0,0,0,0,0,0,220,253,253,253,157,0,0,0,0,0,0,30,206,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,66,0,0,0,0,0,64,207,253,253,175,45,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,203,18,0,0,3,54,188,250,253,253,211,52,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,197,11,7,41,123,253,255,253,253,176,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,185,175,253,253,253,255,228,107,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,253,253,253,253,253,252,240,107,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,239,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,56,58,155,240,216,206,124,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,84,205,227,254,254,254,254,254,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,254,242,148,90,90,90,170,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,150,251,254,180,97,28,0,0,2,88,226,248,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,128,5,0,0,0,0,85,254,247,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,254,86,7,0,0,0,0,8,131,254,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,243,254,25,0,0,0,17,88,202,254,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,190,140,140,140,242,254,254,223,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,254,254,254,254,215,135,25,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,74,195,204,204,167,46,3,0,16,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,245,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,240,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,172,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,193,254,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,208,254,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,213,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,182,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,196,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,169,254,211,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,254,197,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,111,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,146,146,229,255,231,61,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,179,253,253,253,253,253,253,188,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,249,139,139,41,55,139,149,246,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,178,0,0,0,0,0,13,217,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,219,82,119,91,82,121,195,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,253,253,253,253,253,253,253,149,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,248,253,253,253,253,253,253,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,183,253,253,198,128,59,59,217,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,21,21,8,0,0,0,107,240,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,247,202,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,235,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,170,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,38,139,218,254,254,255,254,241,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,76,129,199,253,253,253,253,245,177,131,164,21,0,0,0,0,0,0,0,0,0,0,0,0,0,37,119,228,253,253,253,253,248,176,139,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,232,187,102,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,253,238,90,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,243,250,187,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,238,253,203,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,232,253,250,162,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,163,253,253,235,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,71,236,253,252,145,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,189,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,195,253,236,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,112,17,0,0,0,152,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,217,11,0,0,162,250,253,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,124,68,145,249,252,253,246,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,253,253,253,212,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,180,253,253,202,145,62,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,63,111,152,152,217,242,179,160,138,57,0,0,0,0,0,0,0,0,0,0,0,0,0,7,58,142,228,245,255,255,254,255,255,254,255,255,255,252,224,59,0,0,0,0,0,0,0,0,0,0,82,207,254,254,254,232,166,129,87,40,40,40,40,72,131,222,254,209,0,0,0,0,0,0,0,0,0,50,249,254,237,166,113,20,0,0,0,0,0,0,0,0,0,67,254,223,0,0,0,0,0,0,0,0,0,17,129,67,14,0,0,0,0,0,0,0,0,0,0,0,2,153,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,244,254,123,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,235,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,201,254,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,233,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,250,254,158,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,221,254,205,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,241,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,30,156,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,156,253,249,200,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,151,253,213,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,204,254,214,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,212,253,159,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,200,253,184,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,217,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,247,216,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,220,254,58,59,133,133,134,133,117,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,253,242,243,253,253,253,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,222,107,51,51,96,114,224,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,155,61,5,0,0,0,0,17,205,229,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,230,76,0,0,0,0,12,199,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,233,253,96,37,0,0,0,0,0,84,253,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,89,0,0,0,0,0,13,198,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,241,172,56,0,52,166,223,235,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,117,233,253,243,230,243,253,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,161,253,253,191,121,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,47,134,214,255,237,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,146,253,253,253,253,253,128,0,68,94,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,215,253,253,223,153,210,198,3,0,182,253,219,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,248,145,11,0,67,73,0,11,205,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,253,185,0,0,0,0,5,63,230,253,253,247,175,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,164,0,0,0,29,187,253,253,253,218,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,230,253,239,12,1,101,235,253,253,245,163,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,232,168,253,253,243,155,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,101,253,253,253,253,211,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,242,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,186,253,253,253,253,234,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,251,119,52,237,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,249,253,202,0,0,60,199,253,232,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,222,253,215,21,0,0,0,87,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,245,83,0,0,0,0,0,249,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,126,0,0,0,0,0,90,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,248,253,48,0,0,0,0,42,182,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,253,235,188,115,115,201,240,253,253,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,238,253,253,253,253,253,253,253,180,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,141,179,253,253,253,189,67,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,99,131,107,216,131,131,131,18,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,96,137,163,254,254,254,254,254,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,115,254,254,254,254,254,254,254,254,254,254,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,89,214,254,254,237,229,199,199,131,214,254,254,254,255,208,7,0,0,0,0,0,0,0,0,0,0,0,3,162,254,235,141,31,0,0,0,0,82,254,254,254,255,254,12,0,0,0,0,0,0,0,0,0,0,0,38,254,235,34,0,0,0,0,11,135,191,254,254,254,254,183,5,0,0,0,0,0,0,0,0,0,0,3,162,254,223,0,0,0,0,33,161,254,254,254,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,13,254,254,229,50,42,0,64,233,254,254,254,254,254,254,182,6,0,0,0,0,0,0,0,0,0,0,0,13,254,254,254,254,242,120,233,254,254,254,254,254,254,96,44,0,0,0,0,0,0,0,0,0,0,0,0,10,227,254,254,254,254,254,254,254,254,254,163,254,232,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,254,254,254,254,204,92,62,187,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,68,189,254,254,203,152,15,0,0,206,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,49,49,16,0,0,0,0,206,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,246,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,216,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,105,105,255,253,253,253,253,253,253,200,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,208,249,252,252,253,252,252,252,252,252,252,252,181,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,252,246,248,252,253,239,237,237,105,108,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,40,217,188,86,103,132,133,23,0,0,0,30,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,14,0,0,0,0,0,0,0,0,74,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,248,252,167,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,240,252,172,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,159,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,42,164,164,236,252,252,252,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,120,244,252,252,253,252,252,252,252,252,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,227,252,252,252,252,253,252,247,177,243,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,20,101,243,252,252,252,252,252,253,244,121,0,206,252,252,120,0,0,0,0,0,0,0,0,0,0,0,32,210,252,252,252,252,252,252,252,197,90,0,0,35,213,252,162,0,0,0,0,0,0,0,0,0,0,38,216,252,252,252,252,252,252,252,199,8,0,0,0,0,178,252,247,109,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,228,207,93,24,0,0,0,0,0,65,252,252,207,0,0,0,0,0,0,0,0,0,43,226,252,252,163,146,49,0,0,0,0,0,0,0,0,13,182,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,225,254,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,248,252,253,253,253,252,160,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,225,251,253,253,253,253,253,253,253,246,241,164,49,0,0,0,0,0,0,0,0,0,0,0,0,0,98,242,253,253,253,253,253,253,253,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,253,132,25,25,56,226,235,155,155,216,253,252,155,0,0,0,0,0,0,0,0,0,0,0,211,251,253,220,119,6,0,0,0,23,26,0,0,43,253,253,247,0,0,0,0,0,0,0,0,0,0,40,245,253,220,41,0,0,0,0,0,0,0,0,0,4,165,253,247,0,0,0,0,0,0,0,0,0,0,225,253,253,116,0,0,0,0,0,0,0,0,0,0,0,43,253,249,39,0,0,0,0,0,0,0,0,0,248,253,170,5,0,0,0,0,0,0,0,0,0,0,0,20,253,253,123,0,0,0,0,0,0,0,0,97,252,253,149,0,0,0,0,0,0,0,0,0,0,0,0,54,253,248,28,0,0,0,0,0,0,0,0,125,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,150,253,247,0,0,0,0,0,0,0,0,0,99,252,253,149,0,0,0,0,0,0,0,0,0,0,0,6,171,253,247,0,0,0,0,0,0,0,0,0,23,249,253,149,0,0,0,0,0,0,0,0,0,0,0,27,253,253,247,0,0,0,0,0,0,0,0,0,41,250,253,219,17,0,0,0,0,0,0,0,0,0,0,114,253,253,159,0,0,0,0,0,0,0,0,0,0,231,253,253,110,0,0,0,0,0,0,0,0,0,38,219,253,228,42,0,0,0,0,0,0,0,0,0,0,106,252,253,216,20,0,0,0,0,0,0,0,0,163,253,251,99,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,163,33,0,0,0,0,15,20,108,216,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,49,236,253,253,216,143,143,143,143,223,253,253,253,232,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,234,252,253,253,253,253,253,253,252,247,162,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,234,253,253,253,253,159,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,229,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,0,0,0,0,0,13,248,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,216,0,0,0,0,0,74,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,244,191,0,0,0,0,0,147,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,80,0,0,0,0,34,243,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,159,2,0,0,0,0,94,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,213,248,36,0,0,0,0,5,181,245,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,150,14,14,14,14,0,44,253,162,11,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,254,253,253,253,253,201,223,253,222,242,214,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,151,134,133,133,133,133,201,251,254,254,194,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,207,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,243,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,56,56,139,221,254,254,254,219,6,0,0,0,0,0,0,0,0,0,0,0,33,63,8,10,83,165,209,218,253,253,253,253,253,253,253,253,9,0,0,0,0,0,0,0,0,0,0,7,222,253,227,245,253,253,253,253,201,188,143,89,106,253,253,230,7,0,0,0,0,0,0,0,0,0,0,6,198,243,240,233,233,139,58,34,7,0,0,0,120,253,237,48,0,0,0,0,0,0,0,0,0,0,0,0,0,38,25,0,0,0,0,0,0,0,0,118,244,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,246,253,169,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,228,253,162,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,206,253,242,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,248,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,162,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,232,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,253,225,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,253,190,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,250,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,237,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,248,253,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,206,253,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,235,253,155,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,170,198,255,255,226,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,226,170,170,114,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,170,170,170,170,255,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,86,57,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,170,198,255,255,226,170,170,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,170,198,255,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,237,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,247,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,211,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,243,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,239,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,212,255,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,213,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,208,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,255,183,253,140,121,121,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,212,240,240,240,246,246,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,133,248,252,202,252,252,252,252,253,252,252,252,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,161,239,172,172,102,110,39,39,39,165,252,246,78,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,104,44,0,0,0,0,0,0,0,14,53,53,20,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,96,41,41,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,213,252,252,252,252,203,203,161,104,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,252,252,252,252,253,252,213,105,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,252,252,252,252,253,252,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,158,234,146,183,197,191,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,2,6,7,6,139,241,252,252,249,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,217,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,244,252,252,220,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,14,0,0,32,54,187,186,245,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,193,173,173,219,252,253,252,252,252,252,243,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,245,252,252,252,252,253,252,252,252,245,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,241,252,252,252,253,246,238,238,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,132,252,252,120,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,159,253,253,253,255,253,253,159,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,178,225,253,252,252,252,252,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,233,195,118,195,56,199,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,84,84,84,56,0,0,0,13,181,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,252,253,176,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,104,209,252,252,196,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,169,169,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,255,253,253,253,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,27,27,27,27,27,122,214,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,203,253,167,0,0,0,0,0,0,0,0,0,0,0,51,238,143,113,113,0,0,0,0,0,0,0,120,253,253,255,106,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,252,226,24,0,0,0,38,131,246,252,252,27,3,0,0,0,0,0,0,0,0,0,0,0,88,246,252,252,252,253,155,57,150,197,222,252,252,214,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,246,252,252,253,252,252,252,252,253,226,114,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,112,189,253,252,252,252,173,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,215,253,252,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,231,252,252,168,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,57,200,252,245,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,133,0,0,0,0,26,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,253,176,6,10,85,85,210,231,234,225,226,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,60,252,253,252,252,252,252,253,233,197,66,0,0,0,0,0,0,0,0,0,0,0,38,224,252,240,127,169,224,252,253,226,223,223,223,237,252,252,84,0,0,0,0,0,0,0,0,0,0,0,135,252,252,140,163,252,252,252,112,12,0,0,0,50,237,252,84,0,0,0,0,0,0,0,0,0,0,0,198,253,253,63,163,253,253,253,63,0,0,0,0,51,238,253,84,0,0,0,0,0,0,0,0,0,0,48,227,252,252,241,234,252,252,252,15,0,0,57,85,238,252,201,9,0,0,0,0,0,0,0,0,0,0,48,196,252,252,253,252,252,252,252,198,197,197,234,252,253,186,43,0,0,0,0,0,0,0,0,0,0,0,0,19,177,239,253,252,252,252,252,253,252,252,252,252,225,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,252,252,253,252,220,112,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,182,242,241,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,144,253,252,252,252,145,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,252,253,252,252,252,253,210,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,134,227,252,252,119,35,35,119,211,252,247,217,42,0,0,0,0,0,0,0,0,0,0,0,0,0,47,181,252,241,195,71,0,0,0,0,31,113,221,252,222,46,0,0,0,0,0,0,0,0,0,0,0,42,221,252,252,97,0,0,0,0,0,0,0,0,37,252,253,221,41,0,0,0,0,0,0,0,0,0,0,218,253,191,83,0,0,0,0,0,0,0,0,0,0,84,192,253,133,0,0,0,0,0,0,0,0,0,32,227,220,15,0,0,0,0,0,0,0,0,0,0,0,0,78,242,247,93,0,0,0,0,0,0,0,0,109,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,211,0,0,0,0,0,0,0,0,191,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,0,0,0,0,0,0,0,0,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,191,0,0,0,0,0,0,0,0,211,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,241,77,0,0,0,0,0,0,0,0,109,252,92,0,0,0,0,0,0,0,0,0,0,0,0,21,212,252,195,0,0,0,0,0,0,0,0,0,109,252,215,0,0,0,0,0,0,0,0,0,0,0,105,206,253,210,31,0,0,0,0,0,0,0,0,0,63,238,253,170,62,0,0,0,0,0,0,63,110,233,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,72,190,252,237,217,114,73,73,115,217,237,253,189,158,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,71,133,215,215,215,154,195,215,215,72,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,230,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,255,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,228,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,183,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,154,250,254,211,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,215,253,253,130,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,228,254,244,124,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,253,246,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,154,250,254,246,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,125,253,253,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,87,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,202,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,197,28,0,0,8,112,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,246,253,189,42,0,0,36,180,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,187,254,232,51,0,0,0,84,247,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,168,0,0,0,36,243,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,205,254,231,27,0,0,0,167,254,255,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,198,253,176,0,0,0,116,254,253,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,183,253,221,27,0,6,171,254,253,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,253,240,134,32,91,253,254,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,254,253,233,240,253,254,253,253,227,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,212,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,117,251,251,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,226,253,255,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,253,188,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,211,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,238,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,251,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,251,251,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,251,251,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,160,57,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,132,254,253,254,253,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,253,252,233,151,50,131,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,233,254,253,244,203,41,0,0,102,254,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,130,40,0,0,0,0,102,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,253,82,0,0,0,0,0,0,123,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,171,0,0,0,0,0,0,21,223,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,213,0,0,0,0,0,0,173,253,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,252,142,142,203,203,183,142,253,252,233,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,254,253,254,253,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,252,253,252,253,252,253,252,203,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,254,192,0,0,0,0,173,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,233,91,0,0,0,0,10,212,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,142,0,0,0,0,0,0,102,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,102,0,0,0,0,0,0,183,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,0,0,0,0,0,0,11,213,254,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,252,0,0,0,0,0,0,132,252,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,255,253,203,0,0,0,0,21,214,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,172,252,243,81,0,0,62,203,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,214,253,153,152,254,253,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,151,232,233,151,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,57,0,0,57,226,255,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,114,226,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,114,255,226,114,57,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,255,198,29,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,141,29,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,170,141,0,0,0,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,198,29,0,0,0,0,57,141,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,198,170,198,226,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,170,170,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,202,253,253,253,253,244,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,253,252,252,252,252,253,236,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,252,252,252,253,252,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,98,161,87,45,45,45,117,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,169,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,212,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,159,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,205,253,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,203,252,253,235,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,246,252,252,253,227,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,255,253,253,211,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,227,223,210,253,252,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,25,6,69,90,202,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,173,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,232,251,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,24,160,253,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,47,162,219,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,209,252,253,252,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,210,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,200,157,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,178,254,254,195,161,86,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,253,253,253,254,253,253,203,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,253,253,253,254,253,253,253,225,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,253,210,160,161,177,253,253,254,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,254,80,0,0,0,43,210,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,96,0,0,0,0,17,203,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,245,253,232,174,91,24,13,17,237,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,254,253,221,234,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,254,254,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,193,253,253,254,253,253,253,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,254,253,253,253,254,253,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,254,202,160,160,186,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,171,0,0,0,0,0,0,172,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,88,0,0,0,0,0,0,63,228,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,96,0,0,0,0,0,0,0,132,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,253,246,151,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,254,254,237,161,95,70,45,153,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,173,253,253,254,253,253,253,254,245,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,122,171,237,253,253,253,254,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,69,144,160,220,253,253,185,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,38,137,216,255,245,121,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,197,253,253,253,253,253,253,227,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,226,253,253,253,250,248,253,253,253,253,176,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,239,111,37,0,173,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,237,253,253,86,0,0,0,84,253,253,253,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,196,253,253,159,1,0,4,228,253,253,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,42,0,114,253,253,235,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,253,253,218,87,218,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,247,253,253,253,253,252,140,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,241,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,110,250,253,253,253,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,250,232,253,253,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,195,31,210,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,253,244,23,0,97,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,226,15,0,93,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,188,253,253,109,0,136,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,241,253,253,249,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,181,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,121,245,253,214,136,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0,0,0,0,0,0,0,0,214,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,10,0,0,0,0,0,0,0,0,249,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,68,0,0,0,0,0,0,0,0,245,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,194,11,0,0,0,0,0,0,0,179,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,210,139,0,0,0,0,0,0,0,180,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,229,115,0,0,0,0,0,0,115,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,220,151,20,0,0,0,0,111,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,125,229,195,148,84,51,119,196,84,84,152,157,200,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,62,145,193,193,222,255,152,124,74,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,255,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,158,82,0,0,0,0,0,0,0,228,253,253,210,38,0,0,0,0,0,0,0,0,0,0,0,0,58,246,253,160,13,0,0,0,0,0,0,228,253,253,146,4,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,52,0,0,0,0,0,0,228,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,52,0,0,0,0,0,0,228,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,193,27,0,0,0,0,0,0,228,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,17,239,253,253,130,0,0,0,0,0,0,0,228,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,181,95,0,0,0,0,0,0,228,253,253,138,0,0,0,0,0,0,0,0,0,0,0,3,161,253,253,253,253,246,184,184,124,9,9,9,229,253,253,138,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,214,40,0,0,0,0,0,0,0,0,0,0,63,182,182,182,31,8,147,110,135,182,182,202,253,253,253,253,253,247,246,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,104,238,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,253,233,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,152,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,87,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,246,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,78,223,173,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,15,108,180,253,255,253,253,211,86,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,151,245,219,252,252,252,253,252,252,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,240,252,253,252,252,252,252,253,252,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,253,252,252,252,252,161,87,77,236,252,230,0,0,0,0,0,0,0,0,0,0,0,0,11,203,252,252,252,253,252,168,137,32,0,0,0,155,252,230,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,243,106,0,0,0,0,0,0,81,253,253,181,86,170,253,23,0,0,0,0,0,0,0,0,19,236,252,252,158,0,0,0,0,0,0,0,120,185,123,212,252,252,235,18,0,0,0,0,0,0,0,0,0,129,252,252,252,85,0,0,0,0,0,0,19,112,215,253,252,252,77,0,0,0,0,0,0,0,0,0,0,47,252,252,252,218,76,0,0,0,0,60,188,252,252,253,252,101,9,0,0,0,0,0,0,0,0,0,0,5,137,252,252,253,248,115,43,116,231,244,252,252,252,243,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,255,253,253,253,253,255,253,253,253,180,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,252,252,252,253,252,240,164,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,153,184,246,253,252,252,252,252,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,236,252,252,252,253,252,252,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,180,22,22,211,252,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,148,24,24,138,253,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,173,252,252,252,253,252,252,252,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,252,253,252,252,252,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,215,252,253,252,252,252,252,150,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,85,148,252,116,137,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,205,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,132,163,170,48,71,254,240,239,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,56,129,250,225,0,161,85,231,209,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,229,254,197,0,0,0,135,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,250,254,222,23,0,0,0,11,189,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,226,254,209,40,0,0,0,0,0,14,239,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,254,209,22,0,0,0,0,0,0,0,204,241,25,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,204,22,0,0,0,0,0,0,0,0,40,243,75,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,32,0,0,0,0,0,0,0,0,0,0,197,196,5,0,0,0,0,0,0,0,0,0,0,0,29,239,254,18,0,0,0,0,0,0,0,0,0,0,79,254,79,0,0,0,0,0,0,0,0,0,0,0,38,254,254,19,0,0,0,0,0,0,0,0,0,0,19,255,104,0,0,0,0,0,0,0,0,0,0,0,38,254,254,18,0,0,0,0,0,0,0,0,0,0,19,254,103,0,0,0,0,0,0,0,0,0,0,0,9,210,254,18,0,0,0,0,0,0,0,0,0,0,19,254,141,0,0,0,0,0,0,0,0,0,0,0,0,135,254,110,0,0,0,0,0,0,0,0,0,0,19,254,169,0,0,0,0,0,0,0,0,0,0,0,0,17,254,233,26,0,0,0,0,0,0,0,0,0,37,254,103,0,0,0,0,0,0,0,0,0,0,0,0,2,143,254,209,34,0,0,0,0,0,0,0,0,121,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,23,209,254,169,35,0,0,0,0,0,0,48,223,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,226,254,227,106,57,0,0,0,38,236,249,100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,197,225,249,254,218,217,217,241,248,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,194,254,254,250,159,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,200,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,181,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,249,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,222,198,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,231,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,173,0,0,0,0,0,63,73,73,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,222,254,89,0,0,0,81,229,250,253,253,242,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,217,9,0,3,133,254,225,127,135,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,212,25,10,90,253,222,92,12,101,253,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,227,254,253,217,212,253,233,222,227,253,188,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,149,223,254,254,254,208,181,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,52,253,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,230,201,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,207,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,92,252,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,141,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,249,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,254,207,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,226,254,254,225,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,143,249,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,132,152,193,234,152,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,171,213,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,224,81,0,0,51,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,20,0,0,0,92,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,253,192,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,233,254,253,244,203,254,253,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,252,192,70,40,0,50,91,213,252,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,183,20,0,0,0,0,0,0,21,203,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,0,0,0,0,0,0,0,0,0,20,213,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,82,0,0,0,0,0,0,0,0,0,0,62,163,0,0,0,0,0,0,0,0,0,0,0,0,21,254,233,0,0,0,0,0,0,0,0,0,0,0,102,203,0,0,0,0,0,0,0,0,0,0,0,21,203,253,70,0,0,0,0,0,0,0,0,0,0,0,102,214,10,0,0,0,0,0,0,0,0,11,92,214,253,82,0,0,0,0,0,0,0,0,0,0,0,0,102,253,212,102,102,62,102,0,82,123,203,213,252,233,70,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,223,255,253,254,253,254,253,254,253,224,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,112,151,253,171,151,151,50,50,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,145,255,245,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,237,253,253,254,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,236,254,253,253,254,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,254,252,206,232,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,253,253,206,90,0,126,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,247,253,188,46,0,0,126,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,69,14,0,0,0,126,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,254,252,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,116,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,183,215,215,245,215,214,215,215,232,253,254,241,201,116,98,4,0,0,0,0,0,0,0,0,0,3,96,242,253,253,253,253,253,253,253,253,253,253,254,253,254,253,254,82,0,0,0,0,0,0,0,0,0,20,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,153,0,0,0,0,0,0,0,0,18,194,253,254,230,123,74,133,253,253,253,253,180,74,74,74,74,148,205,67,0,0,0,0,0,0,0,0,56,254,254,229,45,18,108,239,254,254,239,94,3,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,91,254,254,137,158,222,254,254,254,200,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,254,254,254,254,213,109,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,147,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,247,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,120,254,253,245,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,248,99,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,242,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,237,31,0,0,0,75,193,109,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,216,0,0,0,20,230,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,127,0,0,21,209,254,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,253,42,0,0,176,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,245,31,0,46,254,253,227,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,202,3,7,187,254,253,111,253,253,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,36,0,181,254,253,194,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,36,0,33,228,254,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,139,0,0,163,253,253,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,248,146,128,241,253,163,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,226,253,253,253,248,130,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,162,188,188,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,149,254,178,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,254,94,67,67,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,254,235,253,253,244,124,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,253,253,245,253,253,253,253,253,249,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,253,253,50,203,253,253,253,253,222,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,249,253,253,215,0,38,55,158,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,144,253,253,216,26,0,0,0,32,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,176,0,0,0,0,23,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,94,0,0,0,0,105,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,253,253,166,9,0,0,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,254,100,0,0,0,0,14,197,255,204,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,246,30,0,0,0,0,100,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,253,253,108,0,0,0,0,27,208,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,22,0,0,0,28,213,253,251,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,234,17,0,0,25,216,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,165,0,0,62,223,254,253,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,169,7,99,239,253,254,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,210,253,253,253,195,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,230,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,196,253,253,253,186,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,159,244,254,255,157,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,246,254,198,191,195,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,236,254,73,4,0,2,125,245,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,136,3,0,0,0,5,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,198,254,4,0,0,0,0,76,254,192,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,4,0,0,0,0,28,254,204,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,4,0,0,0,0,65,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,254,106,5,0,60,147,253,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,238,237,251,250,132,234,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,31,119,151,120,109,29,0,169,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,230,229,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,36,0,0,0,0,4,198,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,242,130,9,0,0,140,254,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,139,253,136,4,76,243,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,199,243,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,210,254,243,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,105,105,157,253,253,255,253,253,182,105,31,0,0,0,0,0,0,0,0,0,0,0,0,25,95,208,208,247,252,252,252,252,252,193,192,195,252,252,221,129,39,0,0,0,0,0,0,0,0,0,0,114,252,252,252,247,237,237,148,123,88,0,0,6,88,132,247,252,220,47,0,0,0,0,0,0,0,0,0,182,252,252,195,94,0,0,0,0,0,0,0,0,0,0,95,196,252,228,49,0,0,0,0,0,0,0,0,74,239,252,238,26,0,0,0,0,0,0,0,0,0,0,0,16,240,252,235,0,0,0,0,0,0,0,0,0,96,241,252,143,9,0,0,0,0,0,0,0,0,0,0,0,220,252,252,0,0,0,0,0,0,0,0,0,0,164,252,252,74,0,0,0,0,0,0,0,0,0,0,0,90,252,252,0,0,0,0,0,0,0,0,0,0,9,85,162,48,0,0,0,0,0,0,0,0,0,0,0,90,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,245,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,189,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,243,252,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,243,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,195,252,181,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,233,136,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,115,155,155,240,228,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,84,165,244,254,254,244,245,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,171,88,0,16,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,251,254,180,58,1,0,0,16,254,228,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,221,9,0,0,0,48,164,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,254,254,122,7,0,3,208,254,254,178,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,254,254,132,0,112,254,254,130,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,160,252,249,201,252,245,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,251,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,187,254,253,254,200,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,171,89,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,244,236,33,51,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,147,0,51,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,26,0,51,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,238,228,10,0,51,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,181,2,0,104,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,254,50,72,228,254,209,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,250,249,254,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,254,254,195,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,213,217,12,0,0,0,0,0,0,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,21,0,0,0,0,0,0,98,196,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,21,0,0,0,0,0,15,209,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,21,0,0,0,0,0,200,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,247,253,226,15,0,0,0,0,108,251,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,2,181,253,251,68,0,0,0,0,0,206,253,253,156,1,0,0,0,0,0,0,0,0,0,0,0,0,2,130,253,253,184,0,0,0,0,0,12,215,253,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,250,64,0,0,0,0,8,172,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,77,242,253,253,136,0,0,0,0,0,82,253,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,25,228,253,253,178,10,11,13,0,0,60,248,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,214,200,210,213,200,200,220,253,253,253,225,154,200,140,138,53,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,238,132,0,0,0,0,0,0,0,0,229,253,227,129,86,86,86,86,86,193,253,253,253,205,194,147,194,88,26,0,0,0,0,0,0,0,0,0,91,124,27,0,0,0,0,0,0,162,253,253,205,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,250,253,242,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,244,253,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,161,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,212,175,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,211,254,254,69,0,0,0,8,84,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,69,0,0,0,135,254,250,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,69,0,0,63,246,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,72,0,3,199,254,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,178,0,120,254,254,254,254,243,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,234,254,248,161,250,254,230,198,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,249,254,254,254,255,114,100,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,210,191,154,47,0,70,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,250,254,241,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,254,237,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,239,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,235,235,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,114,114,114,114,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,199,253,253,253,253,253,158,81,44,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,146,210,253,253,253,253,253,253,253,253,253,180,82,14,0,0,0,0,0,0,0,0,0,0,0,0,8,212,253,253,253,175,98,27,27,112,134,206,247,253,253,98,5,0,0,0,0,0,0,0,0,0,0,8,197,253,253,253,175,0,0,0,0,0,0,0,38,109,238,253,200,68,0,0,0,0,0,0,0,0,0,38,253,253,216,253,134,0,0,0,0,0,0,0,0,0,41,221,253,237,112,0,0,0,0,0,0,0,0,144,253,241,12,102,23,0,0,0,0,0,0,0,0,0,0,18,189,253,245,0,0,0,0,0,0,0,0,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,205,253,0,0,0,0,0,0,0,0,254,253,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,238,253,0,0,0,0,0,0,0,0,152,253,253,155,15,0,0,0,0,0,0,0,0,0,0,0,0,28,221,253,0,0,0,0,0,0,0,0,75,253,253,253,191,58,0,0,0,0,0,0,0,0,0,0,0,141,253,182,0,0,0,0,0,0,0,0,8,48,186,253,253,251,206,123,8,0,0,0,0,0,0,0,40,230,253,145,0,0,0,0,0,0,0,0,0,0,5,29,199,251,253,253,237,135,50,28,28,28,131,135,230,253,246,38,0,0,0,0,0,0,0,0,0,0,0,0,0,73,160,253,253,253,253,253,253,253,253,253,253,203,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,80,150,216,253,253,253,253,242,150,107,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,5,5,5,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,183,12,0,0,38,105,105,167,254,254,254,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,60,253,253,214,209,209,225,253,253,254,253,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,21,186,238,238,249,253,253,250,238,239,238,238,238,251,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,133,133,110,0,0,0,0,0,224,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,191,253,237,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,217,253,209,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,246,253,225,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,162,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,254,221,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,255,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,192,18,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,235,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,233,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,247,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,245,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,208,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,242,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,39,0,0,0,0,37,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,232,18,0,0,28,167,250,239,142,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,238,24,0,7,183,253,205,230,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,99,0,105,251,108,0,37,231,236,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,194,0,175,178,0,0,0,124,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,240,244,59,242,136,0,0,0,40,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,193,254,136,0,0,0,112,217,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,254,255,193,3,13,128,236,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,254,253,204,231,254,223,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,225,254,253,253,253,207,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,181,253,193,49,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,191,254,255,254,142,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,193,253,225,181,221,253,143,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,236,223,70,15,0,9,132,250,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,168,3,0,0,0,0,0,169,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,92,0,0,0,0,0,23,216,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,174,8,0,0,0,3,149,212,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,169,0,0,0,170,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,187,251,153,15,61,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,253,190,240,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,204,253,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,255,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,145,77,249,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,192,221,0,0,187,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,236,92,0,0,69,250,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,179,0,0,0,38,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,239,103,0,0,0,7,207,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,103,0,0,0,0,197,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,236,206,30,0,0,79,242,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,235,216,217,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,204,253,159,111,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,123,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,214,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,185,253,239,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,253,247,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,130,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,245,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,135,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,195,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,80,0,0,0,0,18,56,56,56,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,227,253,221,22,0,0,0,55,207,201,183,253,141,5,0,0,0,0,0,0,0,0,0,0,0,0,6,177,253,243,93,0,0,0,19,183,253,202,245,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,216,0,0,0,0,165,253,253,228,206,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,116,0,0,0,90,242,253,253,133,205,222,61,4,0,0,0,0,0,0,0,0,0,0,0,0,143,253,227,16,0,0,47,242,253,253,253,253,253,237,20,0,0,0,0,0,0,0,0,0,0,0,0,11,238,253,222,0,17,48,128,253,253,253,253,253,219,112,4,0,0,0,0,0,0,0,0,0,0,0,0,2,156,253,250,223,229,239,253,253,253,253,253,128,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,253,253,253,186,24,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,30,141,141,141,141,221,253,253,248,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,212,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,97,223,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,109,227,254,191,0,67,67,174,160,47,5,67,136,10,0,0,0,0,0,0,0,0,0,0,0,34,160,252,254,254,254,251,191,254,254,254,254,228,193,254,254,156,0,0,0,0,0,0,0,0,0,0,65,241,254,254,254,254,254,254,254,254,254,254,254,254,254,254,251,92,0,0,0,0,0,0,0,0,0,0,62,237,254,211,178,178,178,178,178,154,85,88,229,254,254,254,107,0,0,0,0,0,0,0,0,0,0,0,15,109,50,8,0,0,0,0,0,0,0,44,248,254,250,109,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,254,250,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,208,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,188,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,133,254,249,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,171,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,255,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,242,254,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,209,254,242,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,207,254,237,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,145,250,252,136,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,185,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,233,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,246,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,160,253,253,237,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,234,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,240,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,215,253,248,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,237,253,253,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,133,140,196,179,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,238,253,253,254,253,253,233,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,129,235,253,253,236,218,238,253,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,155,253,253,253,157,44,0,49,189,253,253,194,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,233,89,7,0,0,0,45,164,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,11,194,253,232,63,0,0,0,0,0,0,49,253,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,140,0,0,0,0,0,0,0,49,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,60,0,0,0,0,0,0,0,49,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,0,0,0,0,0,0,68,136,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,0,0,0,0,0,12,203,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,35,250,254,128,3,0,0,0,0,12,196,250,254,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,118,0,0,0,0,0,16,178,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,42,243,253,221,157,48,37,37,49,217,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,242,253,253,253,253,254,253,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,170,216,253,253,254,218,118,107,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,60,60,60,26,0,35,233,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,225,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,245,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,226,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,252,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,252,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,248,253,252,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,255,216,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,252,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,226,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,248,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,252,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,165,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,252,161,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,180,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,133,253,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,168,253,214,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,216,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,241,253,143,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,186,254,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,234,254,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,248,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,217,253,232,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,152,254,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,254,132,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,136,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,163,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,220,163,67,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,250,253,253,253,254,253,218,152,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,251,253,253,253,253,254,253,253,253,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,229,88,88,88,194,234,223,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,171,42,0,0,0,0,128,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,246,211,131,131,50,3,0,0,0,0,29,222,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,145,0,0,0,0,0,0,0,0,0,74,250,99,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,55,0,0,0,0,0,0,0,0,0,66,248,99,0,0,0,0,0,0,0,0,0,0,0,0,0,243,205,7,0,0,0,0,0,0,0,0,0,89,244,13,0,0,0,0,0,0,0,0,0,0,0,0,0,244,199,0,0,0,0,0,0,0,0,0,0,152,118,0,0,0,0,0,0,0,0,0,0,0,0,0,27,246,198,0,0,0,0,0,0,0,0,0,39,237,22,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,198,0,0,0,0,0,0,0,0,0,100,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,198,0,0,0,0,0,0,0,0,80,250,207,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,210,12,0,0,0,0,0,0,22,207,241,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,55,0,0,0,0,0,24,202,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,159,1,0,0,5,89,238,253,175,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,163,88,127,198,255,242,165,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,253,253,253,253,253,244,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,120,244,253,171,95,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,248,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,254,251,236,204,237,236,178,88,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,238,217,218,238,254,254,241,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,193,254,250,144,31,0,0,31,54,133,254,239,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,166,0,0,0,0,0,0,19,254,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,208,7,0,0,0,0,0,0,168,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,141,46,0,0,0,0,0,0,0,200,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,208,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,255,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,223,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,246,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,245,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,247,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,68,155,155,155,195,155,155,71,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,105,223,254,254,254,254,245,249,254,254,225,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,153,254,254,247,156,90,90,2,37,114,219,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,253,205,40,0,0,0,0,0,0,116,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,179,127,0,0,0,0,0,0,0,0,184,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,154,251,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,241,254,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,217,249,254,167,11,41,41,41,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,254,254,253,195,199,254,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,254,254,254,254,254,254,254,210,240,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,221,254,254,174,149,149,126,50,50,6,178,254,201,4,0,0,0,0,0,0,0,0,0,0,0,0,0,58,249,254,142,22,0,0,0,0,0,0,30,242,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,40,3,0,0,0,0,0,0,0,0,235,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,241,230,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,255,164,0,0,0,0,0,0,0,0,0,0,0,0,53,81,57,0,0,0,0,0,0,0,0,0,0,180,254,164,0,0,0,0,0,0,0,0,0,0,0,0,165,254,249,90,0,0,0,0,0,0,0,0,169,249,208,38,0,0,0,0,0,0,0,0,0,0,0,0,107,242,254,247,88,0,0,0,0,0,6,157,247,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,223,254,251,151,69,1,19,46,136,254,250,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,156,254,254,254,201,223,254,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,128,255,255,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,64,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,191,191,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,191,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,177,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,179,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,147,252,252,171,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,252,252,213,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,242,252,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,255,235,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,231,252,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,252,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,241,252,229,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,182,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,186,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,213,252,252,100,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,252,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,252,205,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,252,206,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,141,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,249,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,235,248,253,253,175,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,199,247,253,253,238,138,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,231,253,253,253,237,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,247,253,253,253,236,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,247,253,253,253,164,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,253,164,13,15,72,72,72,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,248,253,253,233,169,79,96,208,253,253,253,247,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,233,156,207,253,253,253,253,253,253,253,238,26,0,0,0,0,0,0,0,0,0,0,0,0,23,239,253,253,162,241,253,253,253,215,201,209,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,253,253,253,218,111,22,0,12,167,253,253,240,0,0,0,0,0,0,0,0,0,0,0,19,243,253,253,253,253,253,242,49,0,0,0,0,11,188,253,249,78,0,0,0,0,0,0,0,0,0,0,103,252,253,253,253,253,203,65,0,0,0,0,0,5,169,253,253,117,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,108,0,0,0,0,5,47,169,253,253,245,45,0,0,0,0,0,0,0,0,0,0,0,103,252,253,253,253,221,150,117,20,47,169,253,253,253,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,253,253,253,253,253,253,253,253,253,253,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,247,252,253,253,253,253,253,253,249,162,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,123,227,253,223,123,123,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,228,255,211,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,249,254,254,254,254,150,29,95,89,126,62,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,254,254,254,254,254,254,254,254,254,254,179,56,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,254,254,254,254,254,254,254,254,254,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,254,254,254,254,254,254,254,254,254,254,249,9,0,0,0,0,0,0,0,0,0,0,0,0,26,251,254,254,254,254,254,254,254,254,254,254,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,254,254,254,254,254,254,254,254,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,10,125,207,141,95,43,61,61,107,254,254,254,254,244,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,170,254,254,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,137,254,254,254,254,217,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,241,254,254,254,254,225,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,254,254,254,254,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,254,254,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,254,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,244,254,254,254,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,242,254,254,254,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,254,254,118,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,129,248,248,93,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,78,157,230,150,41,0,0,0,0,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,196,254,165,57,56,20,95,95,95,192,215,195,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,240,42,19,106,186,247,254,254,254,254,254,255,252,108,0,0,0,0,0,0,0,0,0,0,0,0,27,237,75,0,154,254,254,254,188,171,134,67,67,67,159,252,103,0,0,0,0,0,0,0,0,0,0,0,101,177,2,38,238,160,37,20,4,0,0,0,0,0,6,168,197,0,0,0,0,0,0,0,0,0,0,27,248,99,0,53,86,0,0,0,0,0,0,0,0,0,0,115,197,0,0,0,0,0,0,0,0,0,0,95,222,8,0,0,0,0,0,0,0,0,0,0,0,0,0,115,197,0,0,0,0,0,0,0,0,0,0,95,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,197,0,0,0,0,0,0,0,0,0,0,181,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,197,0,0,0,0,0,0,0,0,0,0,198,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,197,0,0,0,0,0,0,0,0,0,0,157,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,197,0,0,0,0,0,0,0,0,0,0,95,173,0,0,0,0,0,0,0,0,0,0,0,0,0,39,236,123,0,0,0,0,0,0,0,0,0,0,95,218,0,0,0,0,0,0,0,0,0,0,0,0,0,147,244,0,0,0,0,0,0,0,0,0,0,0,95,237,36,0,0,0,0,0,0,0,0,0,0,0,24,216,146,0,0,0,0,0,0,0,0,0,0,0,27,248,167,7,0,0,0,0,0,0,0,0,0,0,200,234,55,0,0,0,0,0,0,0,0,0,0,0,0,185,254,82,7,0,0,0,0,0,0,0,3,128,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,27,237,254,125,36,0,0,0,0,0,24,133,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,233,254,231,115,73,51,94,132,231,253,169,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,165,224,254,254,254,254,254,198,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,150,152,233,150,91,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,200,225,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,210,254,254,251,221,136,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,255,235,205,254,255,255,231,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,221,254,143,0,39,124,183,254,245,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,245,38,0,0,0,10,172,254,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,166,0,0,0,0,0,31,249,254,153,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,142,0,0,0,0,0,0,78,254,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,142,0,0,0,0,0,0,7,184,254,205,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,91,0,0,0,0,0,0,0,11,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,53,0,0,0,0,0,0,0,1,120,253,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,53,0,0,0,0,0,0,0,0,0,246,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,123,0,0,0,0,0,0,0,0,0,202,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,175,0,0,0,0,0,0,0,0,0,43,247,204,18,0,0,0,0,0,0,0,0,0,0,0,0,50,254,232,0,0,0,0,0,0,0,0,0,0,173,254,49,0,0,0,0,0,0,0,0,0,0,0,0,37,244,246,65,0,0,0,0,0,0,0,0,0,143,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,238,0,0,0,0,0,0,0,0,0,162,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,253,128,1,0,0,0,0,0,0,49,244,248,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,150,27,0,0,0,0,19,199,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,131,254,254,240,177,104,141,193,234,254,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,106,253,254,254,254,254,254,226,110,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,112,156,255,216,186,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,162,226,253,253,254,253,253,247,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,253,253,253,253,254,253,253,253,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,248,254,253,253,231,176,117,117,196,253,253,159,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,207,88,27,0,0,0,18,238,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,19,239,254,158,15,0,0,0,0,0,0,137,254,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,253,98,0,0,0,0,0,0,44,228,253,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,183,12,0,0,0,79,161,229,253,253,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,254,237,234,234,234,254,253,253,253,253,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,230,254,253,253,253,253,254,253,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,196,245,254,254,254,255,254,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,39,39,39,39,220,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,255,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,234,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,253,238,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,244,239,83,244,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,213,253,94,0,78,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,170,0,0,0,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,217,243,36,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,166,0,0,0,0,0,0,73,182,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,145,0,0,0,0,21,176,248,139,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,145,0,0,0,68,244,249,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,145,0,0,63,244,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,244,36,27,233,249,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,170,192,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,255,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,181,42,238,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,243,63,217,238,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,255,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,99,191,253,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,107,130,130,240,254,139,6,0,0,0,0,0,0,0,0,0,0,0,0,2,13,13,13,13,13,104,168,253,253,253,253,253,253,253,85,1,0,0,0,0,0,0,0,0,0,0,2,103,253,253,253,253,253,253,253,253,253,253,253,253,253,253,245,5,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,253,253,253,253,253,245,250,253,253,253,135,0,0,0,0,0,0,0,0,0,0,23,210,253,253,253,253,253,253,230,189,99,99,76,222,253,253,253,60,0,0,0,0,0,0,0,0,0,1,154,253,253,253,253,229,131,93,25,0,0,0,106,253,253,253,253,12,0,0,0,0,0,0,0,0,0,7,253,253,253,248,191,30,0,0,0,0,0,0,211,253,253,253,179,4,0,0,0,0,0,0,0,0,0,7,253,253,253,222,0,0,0,0,0,0,0,80,240,253,253,253,57,0,0,0,0,0,0,0,0,0,0,5,227,253,253,134,0,0,0,0,0,0,0,205,253,253,253,178,6,0,0,0,0,0,0,0,0,0,0,0,107,253,143,27,0,0,0,0,0,0,55,240,253,253,229,51,0,0,0,0,0,0,0,0,0,0,0,0,3,61,26,0,0,0,0,0,0,19,183,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,253,138,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,253,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,247,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,124,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,220,253,120,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,77,124,176,255,190,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,202,164,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,95,26,5,2,93,254,247,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,200,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,158,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,204,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,249,186,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,251,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,208,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,80,242,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,244,254,162,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,89,173,246,254,254,254,252,197,54,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,203,254,254,242,161,125,125,165,254,254,220,119,6,0,0,0,0,0,0,0,0,0,0,0,0,0,23,232,254,254,205,36,0,0,0,4,50,137,224,251,148,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,252,202,20,0,0,0,0,0,0,0,0,138,65,0,0,0,0,0,0,0,0,0,0,0,0,0,15,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,251,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,253,253,175,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,249,253,253,144,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,217,253,253,190,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,227,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,227,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,235,227,54,60,176,202,172,72,72,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,232,196,243,253,253,253,253,253,244,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,253,253,253,253,253,245,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,248,253,253,209,160,71,71,71,71,95,236,253,246,75,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,189,12,0,0,0,0,0,0,52,167,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,37,137,249,176,6,0,0,0,0,0,0,0,33,253,247,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,123,0,0,0,0,0,0,0,33,253,241,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,221,28,0,0,0,0,0,5,123,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,253,168,41,0,0,5,20,124,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,225,253,222,143,143,166,253,253,253,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,224,252,253,253,253,252,247,247,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,123,220,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,255,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,69,0,0,0,0,0,0,0,102,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,222,23,0,0,0,0,0,0,125,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,207,11,0,0,0,0,0,0,125,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,251,138,0,0,0,0,0,0,0,178,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,125,249,63,0,0,0,0,0,0,55,246,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,182,0,0,0,0,0,0,0,79,253,215,19,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,31,0,0,0,0,0,0,0,146,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,18,156,243,149,23,4,3,6,6,6,6,74,242,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,253,229,198,253,253,253,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,253,253,253,253,253,253,253,253,223,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,243,249,212,214,226,169,148,68,5,109,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,56,0,4,22,0,0,0,0,192,230,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,225,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,166,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,190,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,204,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,252,214,104,120,237,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,244,243,75,0,0,19,224,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,199,23,0,0,3,128,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,106,0,0,0,100,254,184,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,14,0,0,94,241,224,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,33,177,14,0,50,242,225,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,239,186,40,8,46,234,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,248,70,44,209,250,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,245,113,251,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,227,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,240,209,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,232,96,58,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,214,7,0,238,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,204,0,0,238,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,247,29,0,193,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,243,169,7,109,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,218,238,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,254,200,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,92,214,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,152,252,253,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,172,0,0,0,0,0,123,142,61,62,102,234,253,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,0,0,0,0,0,0,0,0,0,0,193,252,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,151,0,0,0,0,0,0,0,0,72,193,255,112,0,0,0,0,0,0,0,0,0,0,0,0,173,212,71,50,0,0,0,0,0,0,0,82,253,252,213,30,0,0,0,0,0,0,0,0,0,0,0,0,152,253,62,0,0,0,0,0,0,82,214,253,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,82,163,243,253,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,62,0,31,92,214,253,254,233,183,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,223,203,233,252,253,252,151,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,254,253,163,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,253,252,253,252,131,50,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,224,162,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,232,151,70,20,0,172,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,112,0,0,0,0,41,243,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,192,0,0,0,0,0,162,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,82,0,0,0,0,102,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,232,243,122,41,41,123,223,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,193,233,255,253,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,151,253,252,192,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,59,127,171,254,255,254,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,28,118,207,214,224,253,253,250,233,254,253,247,18,0,0,0,0,0,0,0,0,0,0,0,0,58,175,194,253,253,253,253,254,186,144,66,31,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,254,250,213,213,101,19,3,0,22,219,254,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,84,193,119,106,0,0,0,0,0,0,77,253,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,246,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,5,43,125,226,253,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,193,254,253,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,254,253,253,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,238,253,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,98,120,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,45,0,0,0,0,0,76,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,81,0,0,0,0,196,255,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,162,20,103,147,214,244,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,254,253,253,253,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,254,253,225,213,138,95,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,253,215,155,111,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,252,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,247,176,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,252,199,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,143,246,236,66,0,0,0,0,27,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,252,145,0,0,0,9,176,228,229,131,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,223,35,0,8,123,245,253,253,255,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,22,199,253,252,47,0,0,78,252,245,168,80,81,231,252,84,0,0,0,0,0,0,0,0,0,0,0,0,160,252,250,117,2,0,9,201,245,36,0,0,31,221,252,84,0,0,0,0,0,0,0,0,0,0,0,41,225,252,211,0,0,0,132,243,82,0,0,27,218,252,212,28,0,0,0,0,0,0,0,0,0,0,0,171,252,252,79,0,0,0,211,211,0,9,132,228,253,173,29,0,0,0,0,0,0,0,0,0,0,0,0,233,253,147,0,0,0,64,253,219,78,245,253,236,89,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,252,68,0,0,8,127,252,253,252,252,126,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,242,252,104,39,127,226,252,252,250,196,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,252,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,147,235,253,217,147,77,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,237,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,253,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,245,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,42,0,0,0,0,0,0,64,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,9,0,0,0,0,0,152,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,127,0,0,0,0,4,183,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,91,0,0,0,0,101,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,162,253,252,21,0,0,0,0,127,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,196,7,0,0,0,0,153,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,80,0,0,0,0,0,232,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,254,138,43,43,43,43,78,245,253,165,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,252,252,252,253,252,252,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,202,252,253,252,252,252,252,253,252,252,252,252,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,128,190,145,189,189,145,253,252,252,210,189,190,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,253,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,64,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,128,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,128,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,128,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,187,255,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,198,253,253,253,253,249,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,142,250,253,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,195,253,253,253,206,92,67,200,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,248,105,9,0,4,136,243,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,236,136,62,0,0,26,96,222,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,23,0,4,10,135,234,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,63,124,197,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,144,253,253,253,253,250,164,253,225,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,232,171,98,24,25,217,245,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,179,213,129,32,0,0,0,48,203,149,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,2,0,0,0,0,0,125,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,222,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,182,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,18,201,71,0,0,0,0,0,0,0,0,130,246,184,19,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,76,0,0,0,0,0,0,39,146,249,233,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,250,117,6,0,0,5,49,194,253,253,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,210,161,161,199,235,253,234,154,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,253,253,253,253,253,253,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,152,193,254,213,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,142,213,252,253,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,153,233,254,253,244,203,142,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,192,70,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,232,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,254,253,234,152,51,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,112,151,213,252,253,232,183,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,142,203,243,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,213,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,72,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,161,0,0,0,0,0,41,233,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,151,0,0,0,41,113,233,255,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,111,0,82,163,243,253,252,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,253,255,253,255,213,142,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,192,151,151,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,153,196,254,203,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,204,243,253,253,253,253,241,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,229,253,253,215,147,151,244,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,247,218,58,14,0,0,82,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,80,0,0,0,0,0,5,196,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,119,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,57,105,105,68,3,0,0,13,237,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,198,55,0,39,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,234,138,154,250,253,237,152,177,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,58,0,0,65,156,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,217,13,0,0,0,6,161,254,253,246,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,178,0,0,0,0,67,210,235,210,253,207,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,178,0,0,6,112,244,239,128,21,242,254,209,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,235,100,90,194,253,236,97,0,0,43,196,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,253,253,253,182,49,0,0,0,0,5,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,193,153,99,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,125,168,254,254,254,254,254,164,125,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,253,253,253,253,253,253,253,253,253,253,248,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,253,253,253,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,253,253,253,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,220,48,25,25,25,52,173,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,149,162,41,0,0,0,0,0,93,253,253,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,242,253,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,241,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,206,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,244,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,205,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,248,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,202,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,220,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,18,128,255,210,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,156,253,253,253,253,253,253,150,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,244,253,253,253,253,253,253,253,253,192,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,207,253,253,253,242,182,92,65,172,219,220,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,111,106,253,253,192,39,0,0,0,0,24,145,201,25,0,0,0,0,0,0,0,0,0,0,0,0,0,31,226,240,253,94,13,0,0,0,0,0,0,148,253,202,22,0,0,0,0,0,0,0,0,0,0,0,0,0,129,249,198,6,0,0,0,0,0,0,0,148,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,13,0,0,0,0,0,0,0,0,148,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,165,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,238,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,250,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,220,253,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,165,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,158,252,253,253,253,177,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,30,20,27,30,97,165,253,253,253,253,246,44,0,0,0,0,0,0,0,0,0,0,0,0,0,112,166,184,253,223,243,253,253,253,253,253,253,253,249,97,48,36,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,235,183,136,66,0,0,0,0,0,0,0,0,216,253,253,253,253,253,253,253,253,253,253,253,215,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,197,133,35,35,35,19,35,35,57,152,98,106,145,0,0,0,0,0,0,0,0,9,89,215,253,212,135,22,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,179,53,10,0,5,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,243,253,253,227,145,181,212,145,145,140,36,128,25,112,145,145,145,36,2,0,0,0,0,0,0,0,0,0,67,217,241,253,253,253,253,253,253,254,253,253,253,253,253,253,253,253,11,0,0,0,0,0,0,0,0,0,0,0,57,113,205,164,188,205,205,206,228,212,221,205,205,244,253,232,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,11,24,0,82,240,230,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,183,253,225,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,185,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,188,253,253,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,195,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,250,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,209,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,245,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,210,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,173,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,173,253,191,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,187,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,189,254,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,145,244,163,251,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,180,210,103,0,163,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,216,67,0,0,139,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,222,157,94,0,0,0,55,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,157,245,168,51,0,0,0,0,47,240,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,229,253,236,19,0,0,0,0,0,80,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,255,254,237,70,70,91,57,70,19,78,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,253,236,253,254,249,249,253,237,245,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,46,138,121,63,79,171,137,171,171,71,126,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,232,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,212,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,203,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,243,253,215,110,10,0,0,0,38,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,252,252,228,226,225,225,237,253,252,252,252,214,38,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,234,247,253,254,253,253,253,254,253,253,253,254,197,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,84,66,84,84,84,84,109,253,252,252,252,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,187,231,19,0,0,0,0,67,210,253,252,224,118,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,25,0,0,0,0,26,222,252,241,115,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,190,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,164,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,64,128,128,64,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,64,128,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,64,128,255,255,191,0,64,128,128,128,255,191,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,191,255,255,255,191,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,64,255,255,64,128,255,255,255,128,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,64,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,128,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,64,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,64,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,64,128,255,255,255,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,64,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,128,64,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,175,255,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,229,112,240,24,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,240,90,0,186,52,108,248,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,237,25,0,0,76,247,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,171,0,0,0,204,254,226,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,46,0,0,0,178,246,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,237,26,0,42,130,247,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,233,21,86,246,254,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,213,246,254,254,233,250,241,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,254,245,139,30,133,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,245,232,139,110,33,0,0,161,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,245,220,36,0,0,0,0,0,229,240,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,247,53,0,0,0,0,0,115,251,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,131,0,0,0,0,0,13,232,239,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,247,210,6,0,0,0,0,0,150,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,96,0,0,0,0,0,102,240,175,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,86,0,0,0,0,172,251,174,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,240,95,16,101,227,252,145,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,190,254,254,248,252,241,62,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,96,170,198,130,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,55,180,253,255,232,138,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,47,162,219,252,252,252,253,252,252,219,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,252,253,252,252,227,183,131,183,234,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,203,139,45,29,0,0,0,142,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,252,200,11,0,0,0,0,0,0,70,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,146,0,0,0,0,0,0,0,5,191,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,155,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,252,192,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,255,253,253,253,253,181,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,249,206,206,206,227,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,32,222,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,252,240,37,0,0,0,0,0,0,0,0,0,0,0,0,136,21,0,0,0,0,0,0,0,0,0,0,24,252,221,25,0,0,0,0,0,0,0,0,0,0,0,81,253,201,11,0,0,0,0,0,0,0,0,11,202,253,173,0,0,0,0,0,0,0,0,0,0,0,0,99,244,252,203,140,47,47,26,22,0,13,47,193,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,253,252,252,252,221,216,184,203,252,252,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,161,219,252,252,252,253,252,252,252,252,150,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,22,117,137,201,178,137,137,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,179,255,171,150,150,150,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,178,175,253,253,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,253,253,253,253,253,251,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,253,253,139,130,170,170,233,253,228,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,252,134,4,0,0,0,192,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,208,0,0,0,0,0,192,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,62,16,0,0,0,0,3,196,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,246,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,233,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,222,253,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,190,253,186,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,183,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,218,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,241,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,154,164,239,239,239,239,184,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,239,184,159,120,80,80,165,255,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,246,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,41,76,81,36,195,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,122,250,255,254,254,254,254,181,102,32,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,142,245,227,131,76,139,254,192,151,225,254,254,227,157,73,12,0,0,0,0,0,0,0,0,0,0,0,220,226,111,14,60,175,206,86,4,0,12,32,47,155,230,255,230,143,8,0,0,0,0,0,0,0,0,0,255,187,174,239,253,140,4,0,0,0,0,0,0,0,10,71,154,239,220,110,0,0,0,0,0,0,0,0,239,239,199,90,5,0,0,0,0,0,0,0,0,0,0,0,0,15,149,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,197,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,172,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,255,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,214,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,253,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,247,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,240,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,43,148,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,85,252,250,250,250,250,224,85,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,210,250,252,250,250,250,250,252,250,188,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,250,250,252,250,250,250,250,252,250,250,195,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,230,250,250,252,250,250,250,250,252,250,250,250,217,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,177,0,0,0,0,219,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,113,250,250,250,250,0,0,0,0,0,28,194,250,250,250,224,56,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,0,0,0,0,0,0,85,250,250,250,252,208,63,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,0,0,0,0,0,0,28,167,250,250,252,250,125,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,0,0,0,0,0,0,0,127,250,250,252,250,125,0,0,0,0,0,0,0,0,0,0,254,252,252,252,252,43,28,0,0,0,0,0,128,252,252,255,182,21,0,0,0,0,0,0,0,0,0,0,182,250,250,250,250,252,194,42,0,0,0,0,127,250,250,252,250,125,57,14,0,0,0,0,0,0,0,0,43,250,250,250,250,252,250,125,0,0,0,0,127,250,250,252,250,188,210,146,0,0,0,0,0,0,0,0,14,138,250,250,250,252,250,209,56,0,0,0,127,250,250,252,250,250,250,110,0,0,0,0,0,0,0,0,0,14,146,250,250,252,250,144,14,0,0,0,21,41,217,252,250,250,250,41,0,0,0,0,0,0,0,0,0,0,0,141,246,254,252,252,252,76,43,113,146,183,252,255,252,252,224,34,0,0,0,0,0,0,0,0,0,0,0,0,210,252,250,250,250,250,252,250,250,250,250,252,250,208,55,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,250,250,250,250,252,250,250,250,250,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,83,167,250,250,252,250,250,250,250,83,83,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,41,217,252,250,144,41,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,254,172,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,252,223,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,244,162,62,203,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,212,81,0,0,20,213,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,203,61,0,0,0,0,92,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,0,0,0,0,0,51,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,199,254,254,206,118,118,118,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,253,253,253,253,166,97,97,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,127,253,253,253,253,253,253,253,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,61,195,198,198,238,253,253,253,253,253,205,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,82,82,148,251,253,253,196,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,241,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,130,130,130,35,0,75,190,253,253,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,250,253,253,253,249,248,251,253,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,210,253,253,253,253,253,253,253,253,253,149,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,249,253,253,253,253,253,253,253,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,191,205,205,205,206,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,155,237,253,232,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,105,30,0,0,0,0,0,0,0,0,0,0,170,253,253,232,47,0,0,0,0,0,0,0,0,0,0,222,251,214,34,0,0,0,0,0,0,0,0,51,246,253,253,236,57,0,0,0,0,0,0,0,0,0,0,189,253,253,212,34,0,0,0,0,0,0,51,236,253,253,253,167,0,0,0,0,0,0,0,0,0,0,0,21,222,253,253,221,199,66,63,63,89,199,230,253,253,253,238,57,0,0,0,0,0,0,0,0,0,0,0,0,104,221,253,253,253,253,253,253,253,253,253,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,188,234,253,253,253,253,253,253,253,253,233,114,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,116,239,216,216,238,116,116,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,117,176,128,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,219,242,245,214,232,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,155,232,87,30,24,230,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,218,61,0,0,0,133,251,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,250,100,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,223,159,0,0,0,0,0,0,0,94,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,117,0,0,0,0,0,0,34,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,69,0,0,0,0,0,7,154,175,8,0,0,0,0,0,0,0,0,75,188,255,206,177,140,56,69,231,209,48,0,0,0,0,0,81,254,141,0,0,0,0,0,0,0,0,0,176,242,157,133,158,254,254,254,254,107,6,0,0,0,10,88,237,211,27,0,0,0,0,0,0,0,0,0,112,240,254,218,231,254,204,195,254,254,221,215,216,215,224,254,220,21,0,0,0,0,0,0,0,0,0,0,0,15,86,98,92,19,3,0,19,80,139,175,176,175,175,104,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,198,128,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,225,252,253,189,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,185,249,252,252,253,252,249,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,254,253,253,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,210,189,137,63,98,210,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,47,11,6,4,0,0,28,245,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,229,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,148,201,253,253,255,174,148,78,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,216,253,252,252,252,252,253,252,252,252,200,0,0,0,22,85,0,0,0,0,0,0,0,0,0,0,2,167,252,253,252,252,252,252,253,252,252,252,252,145,197,180,237,252,0,0,0,0,0,0,0,0,0,0,48,252,252,253,205,221,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,127,252,252,191,160,223,252,252,236,68,95,217,252,253,252,252,252,164,0,0,0,0,0,0,0,0,0,0,66,253,253,254,253,253,253,253,212,0,0,27,194,255,253,253,243,79,0,0,0,0,0,0,0,0,0,0,6,89,203,253,252,252,252,252,131,0,0,0,0,81,168,175,153,0,0,0,0,0,0,0,0,0,0,0,0,0,9,83,126,214,196,231,53,0,0,0,0,0,0,2,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,102,169,214,211,198,169,129,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,129,246,254,254,254,254,254,254,254,253,177,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,254,254,254,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,254,216,138,24,13,13,54,146,254,254,244,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,228,167,16,0,0,0,0,0,2,151,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,9,0,0,0,0,0,0,0,113,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,173,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,192,254,254,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,134,88,23,25,104,237,254,254,250,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,234,236,254,254,254,250,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,254,254,254,254,254,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,254,254,254,174,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,178,224,178,137,137,212,254,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,138,254,254,251,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,212,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,154,55,0,0,0,0,26,143,241,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,244,254,216,139,145,156,186,242,254,254,254,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,255,254,254,254,255,254,254,211,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,254,255,254,254,254,252,210,126,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,184,254,176,168,168,125,82,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,101,180,207,208,254,255,151,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,47,47,164,200,250,253,253,253,253,253,253,253,229,58,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,253,253,253,253,253,253,253,253,253,253,227,53,0,0,0,0,0,0,0,0,0,0,0,99,252,253,253,253,253,165,160,160,114,7,82,186,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,247,130,4,0,0,0,0,0,17,189,253,253,245,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,236,63,0,0,0,0,0,0,0,169,253,253,245,0,0,0,0,0,0,0,0,0,0,0,67,235,253,253,253,245,94,85,86,60,0,0,0,169,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,83,240,253,253,253,253,253,253,232,185,185,185,231,253,253,246,18,0,0,0,0,0,0,0,0,0,0,0,0,71,250,253,253,253,253,253,253,253,253,253,253,253,253,253,201,24,0,0,0,0,0,0,0,0,0,0,0,0,22,46,176,249,253,253,253,253,253,253,253,253,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,76,76,123,136,230,187,76,157,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,149,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,249,253,253,184,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,245,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,64,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,191,255,191,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,191,255,128,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,255,128,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,64,191,191,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,128,255,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,128,0,64,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,255,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,225,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,212,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,249,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,177,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,101,147,255,179,194,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,165,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,240,107,107,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,244,253,253,178,6,46,229,237,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,156,253,248,214,56,0,124,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,222,0,0,0,124,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,170,0,0,0,124,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,68,0,0,3,139,253,251,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,68,0,0,24,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,218,78,78,187,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,242,253,253,253,253,253,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,246,253,253,253,253,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,30,110,136,50,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,142,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,238,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,247,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,193,99,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,138,138,97,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,161,253,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,209,252,253,252,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,215,252,252,252,192,45,154,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,243,252,252,252,252,11,0,70,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,24,160,253,255,253,253,245,73,0,0,81,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,36,178,252,252,231,196,141,208,58,0,0,9,197,252,231,0,0,0,0,0,0,0,0,0,0,0,0,168,222,252,252,153,37,0,65,81,0,0,0,130,252,252,106,0,0,0,0,0,0,0,0,0,0,0,76,248,253,252,153,9,0,0,0,0,0,0,19,236,252,252,22,0,0,0,0,0,0,0,0,0,0,64,238,252,253,157,6,0,0,0,0,0,0,0,181,252,252,168,2,0,0,0,0,0,0,0,0,0,5,138,253,253,106,0,0,0,0,0,0,0,9,76,255,253,215,21,0,0,0,0,0,0,0,0,0,0,120,252,252,157,0,0,0,0,0,0,0,13,174,252,253,244,98,0,0,0,0,0,0,0,0,0,0,7,186,252,227,16,0,0,0,0,0,7,91,203,252,252,247,98,0,0,0,0,0,0,0,0,0,0,0,160,252,227,50,0,0,0,0,0,43,108,252,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,253,252,130,0,0,0,0,0,95,230,253,252,252,210,85,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,69,0,0,24,45,170,253,253,255,253,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,186,161,161,253,252,252,252,252,249,132,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,252,252,252,253,252,252,252,189,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,253,235,128,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,137,137,23,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,252,229,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,229,253,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,199,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,0,29,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,29,198,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,170,170,226,29,29,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,86,255,57,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,198,198,255,0,0,114,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,255,255,57,170,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,255,255,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,170,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,121,190,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,198,247,252,252,253,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,211,252,252,252,252,253,252,180,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,217,252,252,206,53,218,252,252,165,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,232,28,0,32,144,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,252,245,120,0,0,0,34,234,252,196,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,212,0,0,0,0,0,142,252,252,155,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,205,0,0,0,0,0,40,229,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,79,0,0,0,0,0,0,142,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,80,0,0,0,0,0,0,81,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,201,4,0,0,0,0,0,0,4,202,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,252,198,0,0,0,0,0,0,0,0,200,252,248,83,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,198,0,0,0,0,0,0,0,0,200,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,241,98,0,0,0,0,0,0,99,241,252,220,20,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,212,0,0,0,0,23,103,242,252,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,244,252,239,159,41,41,41,200,252,252,252,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,245,252,252,252,252,253,252,252,252,209,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,248,252,252,252,253,252,252,198,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,252,252,253,252,132,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,118,253,253,201,139,65,24,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,194,252,252,252,253,252,252,252,169,162,161,161,161,57,47,47,47,9,0,0,0,0,0,0,0,0,0,0,65,234,101,69,131,183,183,240,252,253,252,252,252,252,253,252,252,154,7,0,0,0,0,0,0,0,0,0,0,65,29,0,0,0,0,37,45,46,45,45,45,150,161,177,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,34,130,225,255,255,151,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,136,217,253,253,253,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,213,253,253,249,235,201,147,241,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,109,253,253,249,143,82,0,0,0,42,233,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,249,124,0,0,0,0,0,42,233,217,107,3,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,249,124,0,0,0,0,29,134,191,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,227,44,44,44,71,167,233,253,253,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,253,253,253,240,204,104,123,246,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,6,146,232,253,244,197,197,107,54,0,0,62,243,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,68,56,0,0,0,0,0,0,88,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,236,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,140,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,245,250,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,203,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,172,67,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,245,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,249,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,180,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,236,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,255,253,253,170,110,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,252,252,252,253,252,252,252,253,222,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,58,221,253,252,252,252,253,252,252,252,253,252,221,16,0,0,0,0,0,0,0,0,0,0,0,0,1,155,252,252,253,252,252,252,253,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,1,170,252,252,252,253,252,252,252,144,20,0,83,253,252,252,252,0,0,0,0,0,0,0,0,0,0,11,155,252,252,252,252,253,252,252,210,0,0,0,0,128,252,252,252,0,0,0,0,0,0,0,0,0,11,150,252,252,252,252,252,253,252,246,92,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,73,252,252,252,252,231,108,253,252,236,62,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,135,253,253,253,222,41,0,110,253,253,253,0,0,0,63,255,253,253,191,0,0,0,0,0,0,0,0,32,227,252,252,252,55,0,0,15,159,231,210,0,0,11,175,253,252,241,77,0,0,0,0,0,0,0,0,212,252,252,252,174,10,0,0,0,0,51,31,0,11,68,252,253,252,215,0,0,0,0,0,0,0,0,0,253,252,252,252,62,0,0,0,0,0,0,0,0,73,252,252,253,252,132,0,0,0,0,0,0,0,0,0,255,253,253,253,0,0,0,0,0,0,0,0,110,233,253,253,255,119,0,0,0,0,0,0,0,0,0,0,253,252,252,128,0,0,0,0,0,0,73,217,253,252,252,252,119,5,0,0,0,0,0,0,0,0,0,0,253,252,252,211,0,0,6,37,99,181,232,252,253,252,246,132,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,144,144,160,252,253,252,252,252,253,210,92,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,253,253,255,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,180,252,252,252,252,252,252,253,231,76,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,175,215,252,252,246,215,154,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,108,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,64,68,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,51,52,97,124,204,254,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,169,238,253,254,253,253,253,238,210,147,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,193,155,223,168,146,65,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,255,254,222,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,251,253,184,107,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,247,79,9,98,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,244,65,0,0,205,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,4,0,0,0,0,0,0,38,227,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,165,59,0,0,0,3,89,227,230,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,216,251,220,152,197,222,253,246,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,73,190,253,253,253,181,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,101,227,255,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,103,217,253,253,253,253,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,168,253,253,241,200,156,134,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,208,85,0,0,0,249,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,248,253,192,18,0,0,0,0,152,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,198,13,0,0,0,0,0,130,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,230,253,72,0,0,0,0,0,59,246,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,249,253,11,0,0,6,24,124,243,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,164,105,160,182,253,253,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,126,251,253,253,253,253,253,227,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,176,176,176,176,77,33,249,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,249,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,138,184,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,118,253,117,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,235,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,128,0,0,0,0,0,0,0,0,19,112,17,0,0,0,0,0,0,0,0,0,0,0,0,136,253,252,252,45,0,0,0,0,0,0,0,17,136,252,117,0,0,0,0,0,0,0,0,0,0,0,43,240,253,252,136,4,0,0,0,0,0,0,0,151,252,252,137,0,0,0,0,0,0,0,0,0,0,7,160,253,255,196,0,0,0,0,0,0,0,0,97,253,253,245,21,0,0,0,0,0,0,0,0,0,0,91,252,252,165,33,0,0,0,0,0,0,0,22,253,252,240,79,0,0,0,0,0,0,0,0,0,0,13,203,252,252,84,0,0,0,0,0,0,0,26,205,253,252,100,0,0,0,0,0,0,0,0,0,0,0,140,252,252,157,0,0,68,17,43,145,166,82,203,252,253,120,13,0,0,0,0,0,0,0,0,0,0,22,244,252,252,242,168,189,246,234,240,253,252,242,252,252,180,8,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,253,255,253,253,253,253,233,212,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,252,252,253,244,206,206,153,86,252,252,235,153,0,0,0,0,0,0,0,0,0,0,0,0,0,38,69,100,183,79,69,56,0,0,32,222,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,250,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,186,252,252,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,221,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,158,252,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,255,184,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,241,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,253,253,211,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,251,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,219,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,253,202,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,253,253,215,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,251,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,218,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,240,253,253,248,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,166,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,169,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,240,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,183,108,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,125,155,229,125,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,255,254,254,254,231,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,252,254,254,254,254,254,254,230,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,254,254,254,173,120,46,223,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,254,254,134,99,99,207,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,254,254,254,254,254,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,254,254,254,254,254,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,93,176,176,176,176,176,233,254,254,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,204,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,244,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,203,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,199,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,206,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,248,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,219,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,132,155,236,232,155,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,123,210,252,254,254,254,254,254,242,113,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,227,254,254,254,254,216,189,189,219,254,254,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,210,254,254,240,140,58,14,0,0,37,254,254,254,117,6,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,204,22,0,0,0,0,18,196,254,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,125,0,0,0,0,15,199,254,254,254,254,225,32,0,0,0,0,0,0,0,0,0,0,0,0,71,243,254,197,0,0,0,51,194,254,254,254,246,99,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,253,207,140,178,249,254,254,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,225,254,254,254,254,254,254,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,155,204,204,204,145,225,254,254,213,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,245,254,248,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,252,254,251,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,254,242,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,254,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,237,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,254,140,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,161,221,254,136,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,222,249,253,224,232,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,125,254,248,187,71,17,138,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,228,64,0,0,26,97,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,228,0,0,0,0,19,204,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,223,40,0,0,0,0,153,253,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,248,92,0,0,0,0,51,237,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,206,0,0,0,0,9,209,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,207,0,0,0,13,187,254,254,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,249,188,138,139,226,253,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,188,249,253,254,240,240,253,247,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,69,69,31,182,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,227,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,56,61,116,155,154,168,255,219,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,111,169,171,253,253,253,253,253,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,249,253,253,253,253,253,253,253,253,253,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,237,233,184,173,121,70,38,8,0,0,0,0,0,0,0,0,0,0,0,0,0,9,205,253,225,159,79,79,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,238,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,191,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,204,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,207,253,178,56,50,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,253,244,163,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,39,39,39,157,251,244,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,237,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,189,253,248,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,184,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,92,75,122,134,134,207,237,253,253,196,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,216,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,254,253,253,253,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,98,179,253,253,202,121,94,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,128,191,212,169,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,128,228,252,253,252,252,219,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,56,167,252,253,252,252,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,174,232,218,244,253,231,70,121,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,252,252,108,178,253,252,205,165,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,255,249,230,230,126,255,253,253,253,253,244,65,7,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,249,168,0,0,0,103,185,188,252,252,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,199,0,0,0,0,0,0,19,69,121,222,252,234,33,0,0,0,0,0,0,0,0,0,0,0,68,224,252,116,0,0,0,0,0,0,0,0,0,25,177,252,215,19,0,0,0,0,0,0,0,0,0,43,246,252,252,116,0,0,0,0,0,0,0,0,0,0,57,252,252,22,0,0,0,0,0,0,0,0,13,212,253,253,180,0,0,0,0,0,0,0,0,0,0,0,110,253,253,137,0,0,0,0,0,0,0,0,45,252,252,193,8,0,0,0,0,0,0,0,0,0,0,57,219,252,252,117,0,0,0,0,0,0,0,0,138,252,252,77,0,0,0,0,0,0,0,0,0,0,64,253,252,252,153,6,0,0,0,0,0,0,0,0,138,252,195,9,0,0,0,0,0,0,0,0,0,34,238,253,252,195,9,0,0,0,0,0,0,0,0,0,86,252,183,0,0,0,0,0,0,0,0,0,116,238,252,253,106,16,0,0,0,0,0,0,0,0,0,0,11,193,180,5,0,0,0,0,0,0,24,212,253,245,241,242,135,0,0,0,0,0,0,0,0,0,0,0,0,17,94,177,36,0,0,0,38,47,212,252,221,67,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,221,132,184,184,240,252,253,252,233,111,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,252,253,252,252,252,210,161,202,64,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,179,253,231,137,189,22,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,64,91,125,225,211,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,143,180,180,227,254,253,253,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,172,243,253,253,253,253,229,170,138,142,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,245,220,143,59,0,0,0,108,253,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,176,48,0,0,0,0,0,12,224,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,83,7,0,0,0,0,0,0,136,253,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,245,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,248,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,245,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,222,254,241,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,194,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,221,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,189,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,184,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,166,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,215,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,226,253,253,144,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,136,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,194,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,239,239,124,0,66,248,253,253,101,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,83,235,253,253,233,31,186,253,253,245,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,133,214,253,253,253,193,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,195,243,253,196,97,2,177,253,253,248,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,24,108,253,253,253,198,177,177,230,253,253,239,24,24,9,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,253,253,253,253,253,253,253,253,170,71,0,0,0,0,0,0,0,0,0,0,131,229,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,240,40,0,0,0,0,0,0,0,0,0,254,253,253,253,241,246,253,253,253,239,223,84,126,237,238,237,238,172,15,0,0,0,0,0,0,0,0,0,255,253,253,211,51,191,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,131,38,47,185,253,253,245,191,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,98,253,253,250,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,234,233,199,115,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,99,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,191,255,255,128,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,128,191,64,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,128,128,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,64,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,164,249,236,167,95,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,254,254,254,254,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,254,239,114,105,186,254,204,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,171,238,177,26,0,0,4,207,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,154,254,142,3,0,0,0,0,171,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,211,0,0,0,0,0,5,209,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,247,34,0,0,0,0,0,144,254,230,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,252,167,0,0,0,11,67,181,241,227,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,243,27,0,31,97,219,254,234,147,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,248,49,119,200,254,254,127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,248,230,254,231,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,234,254,251,153,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,230,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,150,241,246,131,220,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,231,121,0,132,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,228,64,0,0,78,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,161,0,0,0,27,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,124,18,30,145,218,247,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,247,254,254,254,254,241,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,214,254,211,157,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,165,253,200,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,61,0,0,0,29,230,252,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,205,252,252,252,97,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,205,252,252,252,188,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,225,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,174,252,252,213,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,212,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,224,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,252,249,136,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,219,253,255,228,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,216,252,252,228,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,210,252,252,154,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,135,252,252,230,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,225,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,243,252,236,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,195,252,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,255,255,255,226,170,170,86,114,170,170,198,170,226,141,0,0,0,0,0,0,0,0,0,0,170,226,57,29,57,141,170,198,255,255,170,226,170,141,86,29,0,0,0,0,0,0,0,0,0,0,0,0,226,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,141,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,86,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,29,0,0,0,0,141,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,29,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,141,86,114,226,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,235,254,254,254,156,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,66,186,253,253,253,253,253,253,240,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,167,253,253,253,253,253,224,232,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,165,253,253,253,242,153,72,20,137,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,198,253,253,242,141,33,0,0,114,253,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,243,71,0,0,68,229,250,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,243,74,0,32,85,221,253,253,253,245,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,252,206,234,245,253,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,253,253,253,253,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,249,253,246,203,116,234,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,49,42,0,94,253,253,245,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,143,253,253,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,253,253,154,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,230,253,246,95,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,255,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,250,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,232,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,205,0,0,0,0,0,77,174,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,93,0,0,0,0,0,214,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,251,88,0,0,0,0,0,214,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,229,253,213,0,0,0,0,0,0,214,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,255,214,64,0,0,0,0,0,215,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,251,247,241,241,242,241,241,251,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,206,253,253,253,253,253,254,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,39,39,39,39,39,40,39,39,220,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,250,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,57,67,0,0,0,0,0,0,0,0,0,0,0,0,0,38,132,132,132,132,98,181,188,132,63,132,198,236,250,169,0,0,0,0,0,0,0,0,0,0,0,0,37,243,254,254,254,254,254,254,254,254,254,254,254,223,70,36,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,254,254,254,254,223,200,183,136,85,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,200,113,113,113,113,54,18,11,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,58,142,7,67,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,178,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,239,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,161,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,243,254,182,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,254,212,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,70,216,251,254,244,226,66,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,157,251,254,254,177,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,192,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,115,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,193,32,0,0,0,14,40,199,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,223,179,179,179,232,254,254,222,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,254,254,254,254,254,195,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,122,169,225,225,225,159,111,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,81,0,0,32,105,105,105,105,105,106,105,105,105,105,105,50,0,0,0,0,0,0,0,0,0,0,0,140,243,109,0,199,253,253,253,253,253,254,253,253,253,253,253,230,209,84,0,0,0,0,0,0,0,0,0,157,253,248,94,226,251,238,238,238,238,239,238,238,238,238,240,245,252,237,164,0,0,0,0,0,0,0,0,105,253,253,253,146,118,0,0,0,0,0,0,0,0,0,16,63,168,253,253,0,0,0,0,0,0,0,0,74,240,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,0,0,0,0,0,0,0,0,0,192,253,253,231,53,0,0,0,0,0,0,0,0,0,0,96,249,253,253,0,0,0,0,0,0,0,0,0,29,206,253,253,153,0,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,0,164,253,253,223,0,0,0,0,0,0,0,0,0,11,177,253,253,112,0,0,0,0,0,0,0,0,0,0,47,229,253,246,92,0,0,0,0,0,0,0,0,145,253,253,218,24,0,0,0,0,0,0,0,0,0,0,0,120,253,253,198,8,0,0,0,0,0,0,0,179,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,14,0,0,0,0,0,0,76,254,254,255,59,0,0,0,0,0,0,0,0,0,0,0,0,92,246,246,114,3,0,0,0,0,0,0,111,253,253,178,11,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,0,0,0,0,0,0,0,8,226,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,253,189,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,175,253,253,249,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,156,208,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,125,191,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,241,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,247,253,153,239,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,103,2,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,213,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,12,0,0,0,0,0,0,0,0,48,66,86,196,182,61,0,0,0,0,0,0,0,0,0,0,0,224,253,43,0,0,0,0,0,0,16,90,235,253,253,253,253,248,113,0,0,0,0,0,0,0,0,0,0,125,253,165,4,0,0,0,0,0,93,253,242,177,71,71,156,253,250,84,0,0,0,0,0,0,0,0,0,125,253,253,42,0,0,0,0,0,196,253,111,0,0,0,8,181,253,139,0,0,0,0,0,0,0,0,0,106,252,253,149,0,0,0,0,38,225,253,71,0,0,0,0,63,253,159,0,0,0,0,0,0,0,0,0,0,164,253,216,46,5,0,0,47,233,246,62,0,0,0,4,118,253,117,0,0,0,0,0,0,0,0,0,0,45,232,253,253,122,18,0,86,253,194,0,0,0,34,166,253,245,62,156,0,0,0,0,0,0,0,0,0,0,46,232,253,253,219,150,232,253,229,150,150,150,216,253,253,248,202,104,0,0,0,0,0,0,0,0,0,0,0,46,160,240,251,253,253,253,253,253,253,253,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,156,142,117,215,253,253,253,253,253,247,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,149,253,253,236,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,122,200,232,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,229,83,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,99,32,157,252,208,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,148,0,0,113,254,215,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,236,238,0,0,13,218,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,228,228,231,254,125,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,254,254,216,252,222,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,54,56,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,164,212,191,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,167,79,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,128,40,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,59,26,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,59,100,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,59,17,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,163,28,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,167,126,255,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,215,167,216,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,183,241,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,154,208,255,221,137,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,93,208,253,254,246,195,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,240,184,100,23,2,62,254,247,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,220,254,182,0,0,0,0,3,212,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,182,0,0,0,0,0,169,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,250,254,182,0,0,0,0,0,169,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,87,169,59,0,0,0,0,0,109,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,239,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,236,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,230,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,36,0,0,0,0,0,0,0,0,0,0,0,12,59,11,0,0,0,0,0,0,0,0,0,0,62,251,158,0,0,0,0,0,0,0,0,0,0,0,0,126,254,101,0,0,0,0,0,0,0,0,0,0,73,254,57,0,0,0,0,0,0,0,0,0,0,0,0,126,254,101,0,0,0,0,0,0,0,0,0,3,183,246,46,0,0,0,0,0,0,0,0,0,0,0,0,126,254,101,0,0,0,0,0,0,0,0,0,10,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,101,0,0,0,0,0,0,36,83,69,41,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,166,8,35,49,49,116,199,247,254,252,247,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,214,241,254,254,254,254,254,250,187,232,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,254,254,254,254,254,200,159,82,57,30,238,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,115,115,115,115,35,6,0,0,0,44,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,250,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,246,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,241,251,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,118,118,184,254,255,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,234,237,253,253,253,253,253,219,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,249,253,253,253,253,253,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,213,198,120,61,139,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,82,82,22,0,1,35,198,253,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,253,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,200,253,253,210,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,158,248,248,251,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,227,253,253,253,253,253,253,253,113,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,79,253,253,253,253,253,253,253,219,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,152,253,253,253,253,253,253,253,220,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,253,228,188,89,181,253,253,161,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,12,0,0,28,253,253,250,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,138,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,81,0,0,0,0,0,0,49,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,216,27,0,0,0,0,105,226,253,253,145,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,223,253,217,118,63,63,111,243,253,246,191,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,202,253,253,253,253,253,253,253,253,218,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,237,253,253,253,253,253,253,137,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,209,253,253,253,204,116,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,186,224,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,205,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,233,254,216,66,66,66,66,66,66,95,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,247,254,254,254,254,254,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,205,124,185,198,198,198,160,105,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,244,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,246,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,247,254,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,227,54,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,155,252,254,254,207,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,223,252,254,254,194,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,195,252,254,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,255,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,242,255,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,87,191,138,233,201,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,193,253,252,252,252,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,184,240,252,253,240,183,208,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,215,252,252,210,98,37,68,203,252,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,243,252,252,64,12,0,43,246,210,242,253,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,255,218,32,0,0,0,0,53,0,0,244,253,69,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,218,33,0,0,0,0,0,0,0,22,212,252,69,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,146,0,0,0,0,0,0,0,100,215,253,187,19,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,249,186,93,93,9,0,0,151,244,252,203,58,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,189,253,252,252,252,232,231,230,246,252,147,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,116,116,218,253,255,253,253,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,249,214,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,101,240,252,115,13,202,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,116,0,0,184,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,244,252,116,2,0,22,215,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,181,255,249,115,0,0,3,170,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,252,249,117,0,0,0,24,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,178,0,0,57,122,191,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,252,249,207,207,244,252,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,253,252,252,252,252,137,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,21,202,254,255,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,182,253,253,237,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,249,82,63,237,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,253,159,0,0,73,237,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,33,0,0,0,36,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,246,253,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,207,253,210,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,177,253,176,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,65,0,0,0,0,0,0,74,139,213,213,144,78,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,65,0,0,0,64,187,231,248,253,253,253,253,249,145,24,0,0,0,0,0,0,0,0,0,0,136,253,253,70,0,61,244,251,253,253,244,241,241,242,253,253,253,211,24,0,0,0,0,0,0,0,0,0,68,253,253,224,148,241,253,253,215,106,25,0,0,5,120,243,253,253,152,0,0,0,0,0,0,0,0,0,7,166,253,253,253,253,252,139,33,0,0,0,0,0,0,89,253,253,218,11,0,0,0,0,0,0,0,0,0,36,253,253,253,253,252,118,66,66,15,0,0,34,80,196,253,253,180,5,0,0,0,0,0,0,0,0,0,8,78,232,253,253,253,253,253,253,213,201,201,228,253,253,253,226,103,0,0,0,0,0,0,0,0,0,0,0,0,26,166,253,253,253,253,253,253,253,253,253,253,253,180,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,122,190,135,154,253,198,198,253,137,122,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,109,160,91,241,254,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,77,160,252,254,254,254,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,254,254,254,254,254,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,240,178,178,143,215,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,113,113,57,0,0,0,210,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,247,254,254,180,110,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,248,254,254,254,254,254,231,161,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,248,254,254,254,254,254,254,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,254,254,254,214,205,234,254,244,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,254,183,101,8,0,48,212,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,235,191,98,0,0,0,0,0,48,254,255,108,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,1,0,0,0,0,0,0,6,142,226,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,114,103,19,0,0,0,0,4,72,254,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,251,254,254,180,96,86,86,151,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,232,254,254,254,254,254,254,254,203,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,69,201,244,254,254,254,227,148,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,163,180,97,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,77,77,150,165,165,225,255,254,254,255,218,49,0,0,0,0,0,0,0,0,0,0,13,138,121,155,241,249,254,254,254,254,254,254,254,254,254,203,124,31,0,0,0,0,0,0,0,0,0,35,224,254,254,254,254,254,254,254,254,233,204,145,116,97,26,5,0,0,0,0,0,0,0,0,0,0,38,188,254,254,254,252,218,218,134,114,40,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,230,72,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,235,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,227,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,184,254,254,251,154,45,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,182,238,254,254,254,154,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,154,249,254,254,220,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,190,254,254,241,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,248,254,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,235,254,238,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,25,0,0,0,0,0,0,35,229,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,181,86,9,0,0,0,0,0,178,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,240,215,205,205,118,117,195,245,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,223,254,254,254,254,254,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,144,254,254,254,254,180,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,38,38,142,146,146,146,176,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,76,145,184,220,253,253,253,253,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,2,57,114,208,253,253,253,253,253,251,236,139,50,32,32,5,0,0,0,0,0,0,0,0,0,0,0,8,157,253,253,253,253,253,253,231,185,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,157,253,253,253,253,253,201,87,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,253,250,136,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,146,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,253,253,253,253,208,195,220,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,209,253,253,253,253,253,253,253,253,237,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,171,161,116,167,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,232,106,16,2,0,0,17,253,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,203,11,0,0,0,0,0,17,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,136,0,0,0,0,0,0,17,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,70,0,0,0,0,0,10,180,253,253,175,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,70,0,0,0,0,0,115,253,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,70,0,0,0,5,170,244,253,253,87,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,218,93,52,141,238,253,253,253,140,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,253,253,253,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,145,145,145,145,145,145,109,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,252,52,0,0,0,0,0,0,0,0,147,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,177,3,0,0,0,0,0,0,0,51,253,221,25,0,0,0,0,0,0,0,0,0,0,0,0,13,255,253,56,0,0,0,0,0,0,0,10,179,254,209,25,0,0,0,0,0,0,0,0,0,0,0,0,138,253,189,19,0,0,0,0,0,0,0,85,252,159,28,0,0,0,0,0,0,0,0,0,0,0,0,29,234,253,84,0,0,0,0,0,0,0,0,123,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,178,9,0,0,0,0,0,0,0,101,246,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,51,0,0,0,0,0,0,0,41,216,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,0,0,0,0,0,0,19,107,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,214,0,0,0,76,85,160,215,252,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,240,114,138,225,249,253,252,214,190,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,210,253,254,253,244,225,114,38,0,176,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,84,84,56,0,0,0,57,243,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,254,160,125,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,249,253,253,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,253,253,253,253,253,231,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,253,253,253,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,235,253,253,253,253,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,253,253,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,209,247,253,253,253,253,253,253,253,231,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,248,253,253,253,253,253,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,253,253,253,253,253,253,247,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,248,253,253,253,253,253,184,71,104,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,238,167,78,78,20,0,46,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,202,253,181,7,0,0,0,0,46,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,138,7,0,0,24,139,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,176,156,156,226,253,253,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,232,253,253,253,253,253,253,253,253,251,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,252,253,253,253,253,253,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,123,159,152,123,123,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,223,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127,220,254,208,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,217,132,188,251,254,151,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,149,217,27,1,0,92,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,217,29,0,0,0,4,116,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,46,0,0,0,0,0,39,255,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,187,1,0,0,0,0,5,161,144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,234,81,0,0,0,0,0,121,202,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,205,2,0,0,0,0,96,236,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,235,127,63,36,26,102,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,235,254,254,254,245,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,108,201,254,254,254,242,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,243,135,14,58,231,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,226,92,0,0,0,97,241,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,131,0,0,0,0,57,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,112,0,0,0,0,57,225,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,238,20,0,0,1,117,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,206,25,21,116,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,244,254,244,243,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,180,254,216,93,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,7,96,223,222,131,131,131,25,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,198,254,254,254,246,251,254,254,254,254,254,103,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,112,172,172,33,82,112,112,112,231,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,216,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,242,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,237,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,78,236,254,254,238,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,50,50,138,233,254,254,254,170,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,192,254,254,254,254,254,254,254,150,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,232,254,254,254,239,192,210,254,254,151,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,62,147,98,47,0,19,217,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,224,82,0,0,0,0,0,0,206,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,193,255,93,0,0,0,0,0,32,226,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,243,154,36,80,85,31,215,254,254,167,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,209,254,254,247,251,252,246,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,130,154,166,221,254,254,215,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,22,130,130,130,219,254,254,254,215,130,24,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,148,253,253,253,253,253,253,253,253,253,253,253,207,86,1,0,0,0,0,0,0,0,0,0,0,0,0,143,253,251,246,229,196,146,141,235,235,235,250,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,130,226,92,85,128,0,0,0,0,0,0,88,232,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,8,41,0,0,0,0,0,0,0,0,0,11,222,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,172,253,253,168,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,187,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,238,253,235,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,211,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,174,253,233,88,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,239,253,158,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,241,253,154,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,242,253,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,245,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,214,253,223,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,225,255,255,254,188,136,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,253,253,253,253,230,154,55,36,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,231,200,200,234,253,253,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,233,253,253,114,0,0,41,92,182,242,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,222,19,0,0,0,0,0,84,245,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,202,12,3,107,107,107,107,17,26,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,213,253,253,194,182,253,253,253,253,244,135,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,237,237,253,253,248,142,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,253,252,212,137,29,29,193,230,253,253,170,12,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,228,189,0,0,0,0,0,34,139,253,253,168,13,0,0,0,0,0,0,0,0,0,0,0,0,13,92,122,47,0,0,0,0,0,0,0,9,221,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,1,0,0,0,0,0,0,0,148,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,241,11,0,0,0,0,0,0,7,209,253,246,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,248,166,21,0,0,0,0,0,112,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,203,66,50,0,55,173,252,253,241,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,241,201,245,253,253,244,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,150,253,253,253,253,253,253,249,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,135,162,253,154,135,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,0,0,0,10,18,18,49,175,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127,183,63,135,154,205,253,253,253,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,23,57,179,253,253,253,253,253,253,253,253,253,253,253,203,0,0,0,0,0,0,0,0,0,0,0,0,100,216,253,253,253,253,253,253,253,253,253,253,253,253,178,5,0,0,0,0,0,0,0,0,0,0,44,207,245,253,253,253,253,253,253,253,253,253,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,253,253,186,120,29,168,253,253,253,253,253,218,34,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,248,63,4,0,38,172,253,253,253,172,99,8,0,0,0,0,0,0,0,0,0,0,0,0,54,253,234,180,57,0,0,45,176,253,253,252,160,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,94,18,0,0,0,46,225,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,71,225,253,253,253,174,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,253,253,180,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,233,253,253,253,188,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,227,253,253,253,174,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,101,231,253,253,247,147,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,225,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,193,253,253,253,226,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,183,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,228,47,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,180,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,227,238,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,200,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,232,35,0,0,0,0,0,27,202,253,148,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,211,253,37,0,0,0,0,6,219,253,141,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,232,24,0,0,0,0,141,253,173,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,196,253,122,2,0,0,23,154,250,148,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,57,230,251,127,2,0,0,8,166,252,196,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,169,253,253,241,95,95,95,60,135,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,254,254,254,254,254,254,254,255,254,250,187,136,0,0,0,0,0,0,0,0,0,0,0,0,0,191,247,176,87,122,122,122,122,234,253,244,215,215,215,106,0,0,0,0,0,0,0,0,0,0,0,0,0,15,48,0,0,0,0,0,45,245,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,184,244,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,220,242,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,210,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,213,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,216,253,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,243,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,255,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,201,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,248,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,248,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,226,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,250,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,214,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,248,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,180,253,253,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,83,0,0,0,0,0,0,7,115,91,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,208,9,0,0,0,0,0,0,152,253,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,196,0,0,0,0,0,0,71,246,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,235,253,245,87,14,0,0,0,17,211,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,254,253,229,160,79,0,147,253,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,253,253,253,253,235,250,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,230,254,253,253,253,253,254,253,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,142,195,195,218,255,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,239,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,247,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,92,92,97,192,92,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,17,49,182,201,254,254,254,254,254,221,155,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,127,254,254,254,254,254,254,254,254,254,254,254,178,14,0,0,0,0,0,0,0,0,0,0,0,0,13,222,254,254,254,254,246,221,221,221,157,73,236,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,254,230,130,97,0,0,0,0,0,60,150,254,225,52,0,0,0,0,0,0,0,0,0,0,0,17,254,254,254,205,0,0,0,0,0,0,0,0,42,254,254,106,0,0,0,0,0,0,0,0,0,0,0,8,173,254,254,232,140,105,0,0,0,0,0,64,159,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,10,160,254,254,254,248,231,178,67,130,231,242,201,223,239,79,0,0,0,0,0,0,0,0,0,0,0,0,0,13,98,128,254,254,254,254,254,254,254,183,19,51,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,178,254,254,254,254,254,251,221,83,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,246,247,254,254,254,146,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,222,150,0,16,155,171,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,156,0,0,0,0,38,243,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,7,0,0,0,0,19,188,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,7,0,0,0,0,69,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,7,0,0,0,61,231,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,151,0,0,44,147,255,254,204,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,220,149,149,228,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,226,254,254,254,254,221,153,15,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,143,254,254,238,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,245,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,218,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,19,0,0,0,61,137,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,19,0,0,37,240,230,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,19,0,16,206,199,49,196,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,31,0,88,226,46,22,222,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,220,157,11,226,134,0,133,244,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,117,229,33,150,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,229,255,254,254,248,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,218,223,94,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,93,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,253,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,156,253,253,193,69,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,252,252,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,252,247,249,253,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,244,84,115,227,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,128,0,60,252,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,200,7,0,191,253,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,205,252,252,156,0,111,252,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,181,252,252,66,12,234,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,231,252,154,69,237,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,229,198,252,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,183,253,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,221,252,252,253,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,247,252,252,235,236,252,252,238,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,252,210,14,14,211,252,173,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,199,66,0,0,67,244,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,253,191,14,0,0,0,128,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,184,85,0,0,127,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,252,216,162,242,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,184,252,252,252,253,252,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,138,173,252,253,252,235,42,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,139,171,254,254,255,164,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,184,239,253,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,220,253,253,253,253,253,253,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,201,210,210,154,102,102,119,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,244,253,159,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,55,55,55,20,0,0,36,131,253,216,73,0,0,0,0,0,0,0,0,0,0,0,0,0,84,200,200,225,253,253,253,219,161,93,199,253,232,17,0,0,0,0,0,0,0,0,0,0,0,0,4,132,252,253,246,233,244,253,244,253,253,253,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,153,59,4,50,86,53,214,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,161,20,0,0,0,0,146,253,253,253,253,253,248,131,17,0,0,0,0,0,0,0,0,0,0,0,146,253,198,28,28,125,202,244,253,253,244,171,72,206,252,253,201,14,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,253,253,253,249,165,52,0,0,0,142,253,253,195,20,0,0,0,0,0,0,0,0,0,7,151,253,253,253,249,150,114,40,0,0,0,0,0,5,186,253,253,165,0,0,0,0,0,0,0,0,0,0,2,100,48,5,5,0,0,0,0,0,0,0,0,0,31,216,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,220,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,145,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,7,7,7,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,165,253,253,253,253,253,207,86,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,143,61,19,131,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,2,38,213,253,253,253,253,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,232,195,99,192,126,99,151,253,253,253,210,37,1,0,0,0,0,0,0,0,0,0,0,37,253,253,235,144,68,0,0,0,0,0,32,137,249,253,253,253,5,0,0,0,0,0,0,0,0,0,24,162,253,253,229,72,0,0,0,0,0,0,0,0,141,253,253,195,3,0,0,0,0,0,0,0,0,2,159,253,253,253,192,0,0,0,0,0,0,0,0,0,100,253,253,253,5,0,0,0,0,0,0,0,0,7,253,253,253,253,93,0,0,0,0,0,0,0,0,0,51,242,253,253,5,0,0,0,0,0,0,0,0,128,253,253,253,253,93,0,0,0,0,0,0,0,0,0,100,253,253,253,36,0,0,0,0,0,0,0,0,254,253,253,253,230,23,0,0,0,0,0,0,0,0,0,100,253,253,253,162,0,0,0,0,0,0,0,0,218,253,253,253,247,73,0,0,0,0,0,0,0,0,0,100,253,253,253,217,0,0,0,0,0,0,0,0,91,253,253,253,253,93,0,0,0,0,0,0,0,0,0,139,253,253,253,90,0,0,0,0,0,0,0,0,7,253,253,253,253,134,0,0,0,0,0,0,0,0,78,248,253,253,253,5,0,0,0,0,0,0,0,0,1,153,253,253,253,248,135,30,0,0,0,0,0,78,213,253,253,253,253,5,0,0,0,0,0,0,0,0,0,84,161,253,253,253,253,233,135,100,100,197,223,248,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,253,253,253,253,253,253,253,253,253,253,207,91,1,0,0,0,0,0,0,0,0,0,0,2,30,210,253,253,253,253,253,253,253,253,253,253,253,152,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,30,135,135,135,135,135,135,135,135,75,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,249,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,254,155,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,253,255,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,254,242,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,192,255,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,197,255,242,145,236,212,169,130,130,130,95,107,130,85,116,70,76,7,1,0,0,0,0,0,0,0,0,125,248,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,12,0,0,0,0,0,0,0,0,0,60,111,111,111,111,111,111,138,235,235,235,241,238,241,253,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,18,48,239,253,242,170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,240,253,219,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,86,44,44,44,11,0,75,239,253,236,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,224,253,253,253,253,193,174,238,253,253,173,50,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,206,253,253,253,253,253,253,253,253,253,253,253,221,180,31,0,0,0,0,0,0,0,0,0,0,0,0,0,10,68,128,155,237,253,253,253,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,253,253,198,142,61,61,61,61,61,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,175,253,253,158,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,98,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,240,253,159,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,241,253,205,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,234,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,245,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,247,253,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,249,253,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,107,189,255,254,254,254,254,254,198,192,130,11,0,0,0,0,0,0,0,0,0,0,0,0,0,12,157,252,254,254,226,183,128,40,33,33,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,170,67,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,101,44,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,118,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,97,249,254,146,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,252,132,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,237,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,211,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,217,244,133,206,116,106,15,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,101,177,231,254,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,21,0,0,0,13,73,123,254,250,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,227,22,0,0,0,0,0,3,111,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,231,132,0,0,0,0,0,0,0,0,235,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,101,0,0,0,0,0,0,0,70,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,175,3,0,0,0,0,0,12,214,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,236,254,211,95,54,0,0,83,168,254,200,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,226,254,254,248,226,226,252,252,191,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,71,190,254,254,254,235,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,238,253,237,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,101,225,253,252,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,209,252,252,196,148,87,233,252,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,170,243,252,217,84,0,0,0,169,252,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,204,112,37,0,0,0,0,91,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,147,143,207,253,141,15,0,0,0,0,0,0,29,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,149,167,167,89,0,0,0,0,0,0,0,0,154,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,156,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,140,141,240,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,253,253,253,253,192,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,252,186,177,252,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,13,57,135,57,38,45,234,252,253,186,12,60,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,73,187,252,252,253,224,94,252,252,162,56,0,169,252,253,177,22,0,0,0,0,0,0,0,0,0,0,0,146,252,252,252,253,204,50,205,252,79,0,32,215,252,253,252,227,47,0,0,0,0,0,0,0,0,0,0,86,253,253,253,255,90,0,0,0,0,0,0,169,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,243,97,0,0,0,0,67,196,252,253,42,0,0,0,0,0,0,0,0,0,0,0,0,66,208,252,252,253,252,239,103,57,57,182,240,252,252,56,6,0,0,0,0,0,0,0,0,0,0,0,0,0,19,177,223,225,249,252,252,252,253,252,245,208,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,221,252,252,253,204,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,182,255,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,240,253,193,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,15,0,0,0,0,0,97,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,176,204,0,0,0,0,60,236,253,253,191,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,234,45,0,0,10,211,253,253,177,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,253,246,63,0,11,161,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,23,130,253,253,204,0,11,161,253,253,238,164,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,194,253,253,253,179,0,147,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,223,253,253,195,24,68,234,253,253,235,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,137,253,253,253,86,13,198,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,253,131,165,253,253,253,253,182,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,253,253,253,253,253,233,179,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,178,253,253,253,253,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,43,43,74,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,154,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,245,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,231,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,203,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,190,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,254,160,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,239,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,235,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,220,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,220,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,222,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,246,230,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,203,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,22,0,0,0,0,0,0,100,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,250,168,2,0,0,0,0,0,100,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,46,0,0,0,0,0,100,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,131,0,0,0,0,0,57,249,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,128,0,0,0,0,0,100,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,247,253,253,41,0,0,0,0,0,100,253,220,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,248,253,154,34,0,0,0,0,0,100,253,239,188,131,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,253,228,116,0,0,0,0,0,105,249,253,215,136,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,254,22,0,0,0,0,0,101,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,251,253,253,99,0,0,0,0,18,188,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,233,162,176,100,148,140,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,253,253,255,253,253,253,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,253,253,253,253,253,254,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,141,117,219,253,253,204,227,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,22,22,10,177,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,224,253,253,208,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,230,253,253,236,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,143,249,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,181,8,0,0,0,0,0,0,0,168,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,167,0,0,0,0,0,0,32,245,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,221,0,0,0,0,0,0,109,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,171,0,0,0,0,0,55,237,253,214,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,244,255,142,0,0,0,0,17,199,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,118,0,0,0,0,122,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,251,66,0,0,0,0,190,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,238,0,0,0,0,59,245,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,168,80,149,158,244,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,243,255,254,254,254,254,255,254,246,193,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,224,253,253,253,253,254,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,47,72,124,253,254,197,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,239,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,244,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,225,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,244,253,253,186,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,188,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,238,168,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,201,254,255,208,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,253,253,254,253,253,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,138,211,253,253,253,254,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,253,253,253,253,229,232,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,239,254,253,253,253,253,60,118,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,254,254,244,83,0,118,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,249,235,141,33,0,0,118,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,60,6,24,0,0,0,185,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,220,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,74,194,255,254,254,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,200,226,253,253,254,253,253,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,153,254,253,253,253,253,254,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,137,244,253,254,253,253,253,253,254,253,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,23,207,253,253,253,231,147,88,245,253,254,245,223,253,253,240,30,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,171,90,112,254,254,254,255,76,61,249,254,255,201,41,0,0,0,0,0,0,0,0,0,0,148,253,253,237,126,224,253,253,253,237,76,6,0,143,253,254,253,241,62,0,0,0,0,0,0,0,0,0,41,241,253,253,253,254,253,228,123,18,0,0,0,28,205,254,253,253,211,41,0,0,0,0,0,0,0,0,0,144,241,253,253,214,168,43,0,0,0,0,0,0,8,223,253,253,253,148,0,0,0,0,0,0,0,0,0,0,71,140,58,0,0,0,0,0,0,0,0,0,0,14,148,253,200,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,86,210,225,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,88,203,252,253,252,252,215,197,198,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,181,252,252,252,253,252,252,252,252,253,224,53,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,252,252,252,253,252,252,252,252,253,252,227,47,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,165,126,0,255,253,253,253,253,255,253,253,146,0,0,0,0,0,0,0,0,0,0,76,231,252,252,168,42,6,0,0,206,252,233,89,167,253,252,252,249,146,0,0,0,0,0,0,0,0,26,200,252,252,220,0,0,0,0,0,25,55,43,0,0,196,246,252,252,252,0,0,0,0,0,0,0,0,128,252,252,217,37,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,252,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,32,198,246,252,252,141,0,0,0,0,0,0,0,0,253,252,252,103,13,0,0,0,0,0,0,0,7,123,215,253,252,252,217,37,0,0,0,0,0,0,0,0,253,252,252,252,189,141,94,0,0,0,141,140,165,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,63,241,253,253,253,255,253,253,253,253,255,253,253,253,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,253,252,252,252,252,253,252,252,252,252,168,33,0,0,0,0,0,0,0,0,0,0,0,0,19,87,233,252,253,252,252,252,252,253,252,208,180,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,161,225,223,223,223,223,84,84,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,244,254,254,254,255,181,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,253,253,253,183,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,247,253,253,199,221,253,253,253,247,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,219,113,15,55,224,253,253,253,253,221,140,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,100,26,0,0,0,27,107,210,253,253,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,45,202,239,253,253,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,253,253,253,222,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,253,253,253,253,253,171,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,235,253,253,253,253,253,253,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,87,87,87,87,87,87,121,253,253,253,247,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,99,192,253,253,250,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,230,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,115,39,0,0,0,0,115,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,241,213,193,193,193,193,243,253,252,168,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,156,250,253,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,78,78,78,78,78,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,128,255,128,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,64,64,0,64,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,0,0,0,0,0,0,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,191,255,128,64,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,128,64,64,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,255,255,255,255,255,191,0,64,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,64,128,128,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,255,255,255,255,255,191,191,255,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,64,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,64,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,128,128,128,128,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,253,254,253,254,253,254,139,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,196,83,84,196,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,255,196,0,0,0,0,85,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,196,28,0,0,0,0,28,83,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,169,0,0,0,0,0,0,0,85,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,56,0,0,0,0,0,0,0,28,196,253,251,168,0,0,0,0,0,0,0,0,0,29,197,254,253,226,56,0,0,0,0,0,0,0,0,0,114,254,253,169,0,0,0,0,0,0,0,0,0,85,251,253,251,168,0,0,0,0,0,0,0,0,0,0,114,253,251,168,0,0,0,0,0,0,0,0,0,86,253,254,253,114,0,0,0,0,0,0,0,0,0,85,253,254,253,114,0,0,0,0,0,0,0,0,0,85,251,253,138,0,0,0,0,0,0,0,0,0,0,197,251,253,251,0,0,0,0,0,0,0,0,0,0,86,253,254,84,0,0,0,0,0,0,0,0,141,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,85,251,253,196,0,0,0,0,0,0,57,168,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,86,253,254,253,85,28,0,57,141,253,254,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,196,169,224,253,251,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,254,253,254,253,254,253,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,251,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,228,142,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,175,254,228,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,17,165,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,194,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,120,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,106,182,254,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,255,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,166,109,157,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,237,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,37,0,0,13,240,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,186,12,0,0,71,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,157,0,0,0,110,247,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,249,127,12,33,228,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,113,248,230,206,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,109,224,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,131,214,247,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,143,248,251,129,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,214,251,235,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,240,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,193,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,221,251,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,221,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,251,251,156,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,251,172,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,251,181,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,211,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,56,95,95,56,29,0,0,0,158,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,82,210,254,254,254,254,254,223,111,125,210,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,254,253,230,254,254,254,254,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,6,84,245,254,239,77,73,22,35,96,254,254,254,204,58,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,128,19,0,0,0,35,125,247,179,87,20,0,0,0,0,0,0,0,0,0,0,0,0,0,34,216,227,91,2,0,0,0,19,171,246,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,125,0,0,0,0,71,229,221,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,125,0,0,0,99,232,245,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,121,153,0,16,132,214,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,217,206,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,172,254,254,254,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,157,254,254,254,171,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,243,185,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,243,254,219,112,34,238,152,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,138,15,0,16,140,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,212,254,248,55,0,0,0,95,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,253,166,27,0,0,0,197,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,254,222,157,55,91,227,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,172,254,254,254,254,254,251,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,55,63,184,254,254,254,254,235,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,79,162,254,255,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,167,231,254,254,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,209,254,254,254,254,250,188,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,253,254,181,101,35,4,4,29,136,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,229,254,226,67,2,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,75,243,254,114,12,0,0,0,0,0,0,0,0,37,209,21,0,0,0,0,0,0,0,0,0,0,0,54,249,239,73,1,0,0,0,0,0,0,0,0,9,205,254,121,0,0,0,0,0,0,0,0,0,0,0,171,249,104,0,0,0,0,0,0,0,0,0,0,162,254,254,81,0,0,0,0,0,0,0,0,0,0,52,234,196,0,0,0,0,0,0,0,0,0,4,145,247,254,139,9,0,0,0,0,0,0,0,0,0,0,107,254,229,58,0,0,0,0,0,0,0,9,128,254,254,176,5,0,0,0,0,0,0,0,0,0,0,0,17,225,254,249,206,206,163,111,38,111,176,214,254,254,226,33,0,0,0,0,0,0,0,0,0,0,0,0,0,95,194,254,254,254,254,254,254,254,254,254,254,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,28,115,115,194,210,174,168,209,254,248,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,206,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,187,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,213,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,245,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,245,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,144,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,222,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,101,240,253,252,252,218,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,252,252,253,252,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,181,252,252,252,253,252,252,252,252,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,252,253,252,252,252,252,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,253,253,190,79,0,57,253,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,252,252,242,74,0,0,6,130,252,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,45,234,252,253,252,239,96,0,0,0,0,22,227,253,252,87,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,242,96,0,0,0,0,0,0,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,48,227,252,252,253,89,0,0,0,0,0,0,0,63,253,252,195,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,204,15,0,0,0,0,0,0,0,0,192,253,253,84,0,0,0,0,0,0,0,0,0,38,234,252,252,252,94,0,0,0,0,0,0,0,0,0,113,252,252,130,0,0,0,0,0,0,0,0,0,113,252,252,252,141,0,0,0,0,0,0,0,0,0,0,113,252,252,246,88,0,0,0,0,0,0,0,0,207,252,252,249,99,0,0,0,0,0,0,0,0,0,0,113,252,252,252,112,0,0,0,0,0,0,0,0,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,112,0,0,0,0,0,0,0,0,114,253,253,237,50,0,0,0,0,0,0,0,0,13,191,255,253,253,162,0,0,0,0,0,0,0,0,0,75,243,252,252,237,226,100,163,85,85,226,225,225,228,252,253,252,233,56,0,0,0,0,0,0,0,0,0,0,175,239,252,252,253,252,252,252,252,253,252,252,252,252,253,233,74,0,0,0,0,0,0,0,0,0,0,0,0,97,242,252,253,252,252,252,252,253,252,252,252,252,225,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,112,112,237,252,252,252,253,204,221,157,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,225,210,254,254,121,118,229,153,118,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,253,253,253,253,234,104,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,144,188,253,253,253,253,253,253,253,253,253,253,173,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,61,61,61,61,61,61,61,65,225,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,226,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,229,253,231,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,215,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,145,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,197,253,248,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,251,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,216,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,179,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,208,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,242,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,85,44,0,0,0,0,0,0,0,0,0,177,174,0,0,0,0,0,0,0,0,0,0,0,0,5,116,207,240,223,115,0,0,0,0,0,0,0,0,177,91,0,0,0,0,0,0,0,0,0,0,0,25,172,205,97,27,24,235,0,0,0,0,0,0,0,0,224,54,0,0,0,0,0,0,0,0,0,0,0,209,206,22,0,0,0,231,0,0,0,0,0,0,0,0,255,54,0,0,0,0,0,0,0,0,0,0,86,203,19,0,0,0,85,223,0,0,0,0,0,0,0,0,254,54,0,0,0,0,0,0,0,0,0,23,238,47,0,0,0,0,145,116,0,0,0,0,0,0,0,0,254,54,0,0,0,0,0,0,0,0,0,135,171,1,0,0,0,72,248,55,0,0,0,0,0,0,0,0,202,86,0,0,0,0,0,0,0,0,0,200,79,0,0,0,31,184,144,1,0,0,0,0,0,0,0,0,142,228,14,0,0,0,0,0,0,0,18,240,31,0,0,29,183,149,11,0,0,0,0,0,0,0,0,0,22,224,175,60,0,0,0,0,0,0,24,253,31,0,40,151,93,0,0,0,0,0,0,0,0,0,0,0,0,50,159,245,191,43,6,7,7,6,10,204,196,187,167,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,116,230,231,236,241,232,242,185,125,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,45,34,46,46,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,174,253,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,147,209,208,211,252,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,156,231,252,253,252,252,252,252,252,126,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,252,253,252,252,252,252,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,212,177,234,207,29,29,29,29,73,186,252,241,197,31,0,0,0,0,0,0,0,0,0,0,0,0,132,183,35,11,200,103,0,0,0,0,0,9,168,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,103,0,0,0,0,0,0,134,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,231,103,0,0,0,0,0,0,134,252,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,217,133,8,0,0,0,0,134,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,131,0,0,45,149,125,103,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,255,253,253,253,253,191,119,0,0,0,0,0,0,0,0,0,0,0,0,0,4,60,7,61,129,113,216,252,253,252,252,252,154,18,21,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,173,224,237,237,123,88,238,249,252,244,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,205,252,216,118,0,0,0,0,0,110,139,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,238,29,20,0,0,0,0,0,0,0,11,164,128,22,0,0,0,0,0,0,0,0,0,0,0,0,75,239,238,30,4,0,0,0,0,0,0,0,2,30,96,91,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,108,0,0,0,0,0,0,0,15,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,6,49,220,252,248,210,48,90,90,90,91,90,100,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,128,246,222,134,252,252,252,253,252,252,252,238,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,91,55,155,225,103,104,103,103,103,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,201,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,246,248,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,194,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,239,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,230,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,213,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,218,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,252,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,244,245,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,199,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,57,212,255,238,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,102,211,252,204,239,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,211,248,175,80,0,213,235,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,83,212,238,59,0,0,31,242,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,218,211,59,0,0,0,49,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,37,0,0,0,0,126,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,239,65,46,46,46,46,46,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,62,173,247,254,254,254,254,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,254,244,199,199,199,199,199,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,113,199,244,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,217,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,163,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,206,176,25,100,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,206,57,247,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,247,253,143,83,251,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,250,233,59,9,160,250,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,218,178,12,0,67,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,218,14,0,0,67,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,155,0,0,2,170,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,242,82,0,0,101,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,241,0,0,0,177,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,222,251,153,111,158,253,252,118,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,223,253,253,253,253,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,186,186,206,252,230,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,238,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,243,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,230,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,249,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,171,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,241,254,133,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,212,253,253,253,137,118,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,40,86,243,253,253,253,253,204,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,254,253,253,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,209,253,254,253,253,253,253,253,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,168,227,253,253,250,142,38,71,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,97,81,253,253,192,135,0,0,40,253,253,253,198,36,0,0,0,0,0,0,0,0,0,0,0,0,0,99,97,205,116,116,27,0,0,0,40,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,99,217,73,0,0,0,0,0,0,40,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,254,254,117,0,0,0,0,0,0,0,0,0,0,0,83,118,73,0,0,0,0,0,0,0,0,40,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,176,253,154,0,0,0,0,0,0,0,0,40,253,253,253,198,35,0,0,0,0,0,0,0,0,0,0,110,247,246,130,0,0,0,0,0,0,0,0,70,253,253,249,147,0,0,0,0,0,0,0,0,0,0,0,118,253,229,61,0,0,0,0,0,0,46,99,242,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,215,156,156,156,156,156,158,201,253,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,109,247,253,253,253,253,253,253,253,254,253,253,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,122,247,253,253,253,253,253,253,254,253,253,253,253,204,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,168,253,253,253,253,253,254,253,253,231,116,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,57,73,253,253,253,254,253,117,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,123,148,148,148,87,43,43,43,43,43,43,43,43,43,148,148,201,227,25,0,0,0,0,0,0,0,0,43,252,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,231,28,0,0,0,0,0,0,0,0,22,47,29,126,170,170,126,170,126,126,127,126,179,205,126,127,221,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,182,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,217,94,14,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,123,28,0,0,0,0,0,53,121,185,185,185,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,247,254,94,0,6,78,115,172,245,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,254,233,152,248,254,254,254,254,254,254,254,236,0,0,0,0,0,0,0,0,0,0,0,0,27,237,254,254,254,254,254,254,254,254,246,173,83,79,230,112,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,209,194,252,204,33,27,27,24,0,0,0,19,4,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,59,48,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,173,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,228,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,149,254,254,205,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,190,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,254,237,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,107,29,0,0,13,28,65,245,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,169,66,146,212,254,254,254,255,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,254,254,254,254,254,254,254,254,217,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,254,254,254,248,222,123,91,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,184,184,184,184,87,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,152,255,253,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,255,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,253,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,92,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,214,253,254,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,233,252,253,252,253,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,233,183,102,0,0,193,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,151,91,30,0,0,0,0,193,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,233,254,253,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,233,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,255,172,132,10,0,41,214,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,131,203,243,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,253,255,253,254,253,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,252,253,212,131,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,189,239,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,232,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,250,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,215,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,251,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,245,159,0,0,0,5,46,130,175,245,205,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,90,0,0,18,176,254,240,157,73,242,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,15,0,64,223,224,147,27,0,0,239,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,80,0,108,198,17,0,0,0,0,239,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,80,0,3,7,0,0,0,0,0,239,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,159,0,0,0,0,0,0,0,0,239,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,231,93,0,0,0,0,0,0,83,250,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,200,248,128,6,0,0,0,54,223,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,178,254,226,173,143,153,248,218,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,56,139,224,255,244,134,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,141,0,0,0,0,0,0,0,0,29,216,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,227,0,0,0,0,0,0,0,26,216,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,252,103,0,0,0,0,0,0,29,210,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,177,3,0,0,0,0,0,0,185,252,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,13,255,253,168,0,0,0,0,0,0,45,229,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,252,142,0,0,0,0,0,45,225,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,233,37,0,0,0,0,38,229,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,253,145,0,0,0,0,89,225,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,254,253,216,191,204,253,253,253,254,159,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,253,252,252,252,184,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,139,140,90,103,128,253,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,254,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,240,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,252,252,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,224,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,139,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,128,228,245,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,77,241,253,254,73,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,253,254,253,253,190,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,255,254,254,254,254,156,91,104,238,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,201,254,241,153,69,18,0,0,106,249,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,191,34,0,0,0,0,0,217,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,0,0,0,0,0,0,56,245,238,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,181,186,227,66,0,0,0,0,53,248,240,61,0,0,0,0,0,0,0,0,0,0,0,11,73,106,255,254,254,254,254,255,134,0,6,73,189,254,165,0,0,0,0,0,0,0,0,0,0,0,0,108,253,233,173,56,18,18,18,254,249,105,90,253,254,130,3,0,0,0,0,0,0,0,0,0,0,0,125,248,224,23,0,0,0,0,0,208,253,248,245,253,69,3,0,0,0,0,0,0,0,0,0,0,0,38,224,185,31,0,0,0,0,2,19,234,253,253,225,54,0,0,0,0,0,0,0,0,0,0,0,0,0,195,233,49,0,0,0,20,91,134,253,254,253,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,98,73,73,163,247,254,254,202,112,247,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,238,198,185,102,5,21,240,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,36,36,36,36,26,0,0,0,0,11,238,248,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,140,131,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,150,232,109,109,109,109,109,171,128,109,109,110,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,252,252,252,253,252,252,252,253,180,73,31,0,0,0,0,0,0,0,0,0,0,0,0,31,195,215,215,215,215,215,236,253,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,108,108,108,108,253,252,252,190,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,252,252,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,140,221,253,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,237,252,252,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,129,253,255,253,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,217,227,252,252,253,252,252,252,253,242,217,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,252,252,253,220,215,215,253,252,252,252,182,25,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,148,108,108,15,0,0,108,148,252,252,253,159,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,207,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,16,37,11,0,0,0,0,0,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,1,191,252,71,0,0,0,0,0,0,0,21,206,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,1,253,253,133,0,0,0,0,0,110,150,253,253,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,1,98,242,247,217,156,115,217,217,253,252,252,252,253,148,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,241,252,253,252,252,252,253,252,252,231,72,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,190,253,252,252,252,253,210,108,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,222,254,254,254,221,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,222,254,241,153,115,218,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,245,253,159,34,0,0,91,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,233,253,142,0,0,0,0,20,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,216,253,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,217,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,179,254,199,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,124,0,0,6,137,222,221,208,163,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,211,253,91,0,60,217,253,254,233,253,253,247,152,4,0,0,0,0,0,0,0,0,0,0,0,0,0,6,207,253,104,86,235,253,162,36,23,36,75,204,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,212,243,253,128,16,0,0,0,0,85,254,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,254,253,194,16,0,0,0,0,0,0,189,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,255,254,127,0,0,0,0,0,0,0,222,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,2,115,254,253,198,70,20,0,0,0,0,105,254,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,250,230,69,37,82,166,243,191,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,138,231,253,253,254,253,253,253,246,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,143,227,254,201,162,91,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,125,125,151,232,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,169,249,249,249,251,255,254,254,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,254,254,254,254,254,254,171,166,254,237,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,214,149,149,110,19,19,5,31,127,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,25,0,0,27,86,120,216,123,86,86,86,33,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,214,210,210,224,254,254,254,254,254,254,254,227,127,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,254,254,254,254,254,199,182,182,182,193,254,254,251,196,34,0,0,0,0,0,0,0,0,0,0,215,254,254,254,231,189,81,58,14,0,0,0,9,75,229,254,254,117,0,0,0,0,0,0,0,0,0,0,91,195,195,145,42,0,0,0,0,0,0,0,0,0,60,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,16,40,6,0,0,0,0,0,0,0,0,115,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,39,0,0,0,0,0,0,6,50,220,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,52,0,0,0,0,0,5,129,254,255,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,220,111,20,20,20,47,169,254,254,255,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,254,254,254,254,254,254,254,254,253,160,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,254,254,254,254,254,253,228,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,124,191,124,124,124,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,255,235,136,136,93,18,18,74,40,136,98,65,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,253,253,253,253,251,231,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,67,189,10,120,138,128,146,109,182,119,38,87,182,143,65,5,0,0,0,0,0,0,0,0,0,0,0,0,185,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,248,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,253,253,253,199,131,44,126,136,98,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,217,253,253,253,253,252,145,168,64,195,238,208,25,18,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,233,194,80,0,0,0,59,48,177,134,133,0,0,0,0,0,0,0,0,0,0,0,0,0,5,176,253,108,38,0,0,0,0,0,0,0,0,130,247,104,0,0,0,0,0,0,0,0,0,0,0,0,0,25,41,11,0,0,0,0,0,0,0,0,0,21,165,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,90,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,224,241,52,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,206,0,0,33,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,101,145,219,253,242,69,0,33,217,159,0,0,0,0,0,0,0,0,230,135,212,119,119,119,119,119,138,241,253,253,253,253,168,0,0,6,111,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,80,195,254,254,255,254,254,175,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,161,253,253,253,253,253,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,62,201,244,253,253,253,253,253,253,253,253,225,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,248,113,113,113,113,113,113,113,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,218,135,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,167,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,59,9,9,70,184,135,9,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,253,253,253,253,253,218,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,239,253,201,182,182,182,224,253,249,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,104,29,0,0,0,62,134,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,225,29,0,0,0,0,0,0,0,0,0,0,0,0,83,100,0,0,0,0,0,0,0,0,0,0,26,190,253,138,0,0,0,0,0,0,0,0,0,0,0,0,158,242,211,53,0,0,0,0,0,0,0,0,69,233,248,120,0,0,0,0,0,0,0,0,0,0,0,0,87,246,253,229,59,0,0,0,0,0,32,115,239,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,245,253,224,193,193,193,193,193,210,253,249,235,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,173,253,253,253,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,78,217,253,253,253,253,204,78,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,149,194,255,171,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,253,237,234,235,253,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,195,18,0,6,108,247,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,26,0,0,64,166,251,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,19,0,61,207,253,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,111,134,255,181,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,181,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,247,253,253,159,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,125,230,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,205,8,114,232,201,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,243,57,0,0,156,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,233,0,0,0,89,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,233,0,0,0,149,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,195,0,0,0,156,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,23,217,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,233,0,4,185,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,239,24,137,253,235,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,240,251,222,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,148,253,200,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,115,217,217,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,140,181,253,252,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,217,252,252,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,170,252,252,189,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,179,76,15,0,0,181,252,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,156,160,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,63,237,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,237,62,0,0,0,0,110,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,21,94,217,253,252,215,0,0,0,0,42,233,252,241,97,0,0,0,0,0,0,0,0,0,0,0,21,99,201,252,252,253,252,241,98,37,78,181,221,253,252,195,0,0,0,0,0,0,0,0,0,0,42,144,206,252,252,252,252,253,252,252,252,253,252,252,252,253,252,71,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,253,255,253,253,253,255,253,253,253,145,20,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,148,35,35,35,35,138,179,180,138,35,35,0,0,0,0,0,0,0,0,0,0,0,0,133,215,215,215,153,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,128,0,0,0,26,95,245,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,206,172,214,239,254,253,248,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,253,237,248,230,230,254,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,151,19,56,0,0,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,171,0,0,0,0,60,255,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,137,0,0,0,13,180,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,137,0,0,0,74,253,222,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,104,0,0,34,240,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,0,0,0,106,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,248,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,247,190,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,236,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,60,136,136,136,211,254,254,255,202,136,123,18,18,10,3,0,0,0,0,0,0,0,0,0,0,22,136,253,253,253,253,253,253,253,253,253,253,253,253,253,253,207,113,83,0,0,0,0,0,0,0,0,62,221,253,253,253,231,200,133,82,82,82,82,82,88,206,218,200,200,200,107,0,0,0,0,0,0,0,0,254,253,253,253,99,38,0,0,0,0,0,0,0,4,147,211,86,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,47,0,0,0,0,0,0,0,0,150,253,253,188,0,0,0,0,0,0,0,0,0,0,0,24,211,253,253,230,76,0,0,0,0,0,0,149,253,253,183,110,0,0,0,0,0,0,0,0,0,0,0,0,24,154,249,253,199,11,0,0,0,2,150,252,253,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,208,251,251,142,68,24,149,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,253,253,253,253,182,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,253,203,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,253,253,253,253,238,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,227,253,253,163,51,228,253,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,209,253,253,164,2,0,40,233,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,147,253,253,234,0,0,0,0,213,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,233,50,0,0,0,51,239,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,147,0,0,42,93,205,253,141,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,231,201,201,234,253,253,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,253,253,230,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,106,135,240,251,135,61,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,178,253,253,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,171,253,227,217,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,69,253,244,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,245,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,246,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,251,250,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,98,239,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,229,253,143,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,226,254,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,171,253,242,253,104,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,208,51,200,233,253,204,89,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,253,100,0,0,37,199,231,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,210,17,0,0,0,0,44,227,191,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,101,0,0,0,0,0,10,228,225,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,190,20,0,0,0,0,13,253,229,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,133,98,60,42,98,221,253,118,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,105,222,253,253,244,240,253,254,122,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,132,231,253,201,132,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,34,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,115,67,67,120,224,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,246,253,253,253,253,253,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,179,227,217,198,105,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,19,0,136,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,50,242,253,216,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,45,93,45,39,0,37,55,176,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,253,246,188,242,253,253,253,250,109,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,253,254,253,253,253,253,166,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,111,193,221,222,230,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,238,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,89,70,0,0,0,0,0,104,237,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,75,199,250,253,249,232,179,122,204,232,254,253,253,175,8,0,0,0,0,0,0,0,0,0,0,0,0,0,210,209,209,252,253,253,253,253,253,253,255,253,126,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,66,66,167,176,176,128,66,66,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,182,254,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,204,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,228,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,171,1,0,0,0,0,0,0,71,151,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,254,89,0,0,0,0,0,2,57,244,254,164,1,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,240,20,0,0,0,0,0,45,254,254,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,6,223,254,82,0,0,0,0,0,10,178,254,254,230,255,104,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,47,0,0,0,0,0,87,254,254,148,119,254,103,0,0,0,0,0,0,0,0,0,0,0,0,104,254,234,28,0,0,0,0,3,206,254,219,11,117,254,103,0,0,0,0,0,0,0,0,0,0,0,0,104,254,178,0,0,0,0,0,67,254,251,60,0,207,254,103,0,0,0,0,0,0,0,0,0,0,0,0,156,254,113,0,0,0,0,0,119,254,191,0,97,233,254,51,0,0,0,0,0,0,0,0,0,0,0,0,198,254,113,0,0,0,0,0,167,254,92,114,244,254,177,2,0,0,0,0,0,0,0,0,0,0,0,0,131,254,194,48,0,0,0,64,254,254,254,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,250,245,245,245,251,254,254,254,254,254,165,31,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,234,254,254,254,254,254,254,254,253,197,79,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,142,159,159,149,101,149,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,4,0,1,73,234,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,99,0,68,248,218,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,241,37,35,186,115,108,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,225,19,184,135,0,108,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,188,115,174,0,0,108,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,244,225,20,0,0,108,227,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,219,254,90,0,0,0,152,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,173,2,0,0,10,227,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,238,49,0,0,0,12,233,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,0,0,0,0,97,255,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,238,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,236,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,241,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,255,253,253,253,253,76,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,89,244,253,252,252,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,252,253,208,183,208,252,253,219,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,252,252,252,161,58,0,17,181,253,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,252,252,200,0,0,0,0,178,253,231,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,137,0,5,55,180,253,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,252,252,211,26,84,252,252,252,228,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,222,252,252,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,252,253,252,252,218,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,243,252,252,252,252,253,252,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,233,255,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,163,252,253,252,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,232,252,215,123,221,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,156,252,252,74,9,144,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,147,0,0,184,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,201,53,5,138,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,162,178,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,171,252,252,253,252,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,194,252,253,252,252,252,157,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,253,252,252,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,255,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,214,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,172,252,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,252,252,227,0,0,45,157,57,57,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,224,43,10,160,240,252,253,252,209,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,252,118,0,128,252,252,252,253,252,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,254,197,0,76,254,253,253,253,254,253,253,253,254,97,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,196,0,225,253,252,252,151,84,159,215,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,110,252,253,240,147,246,253,252,186,6,0,0,85,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,47,240,253,252,252,252,253,202,19,0,0,26,210,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,253,253,253,254,228,141,141,204,253,253,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,252,252,252,253,252,252,252,253,252,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,224,252,252,253,252,252,252,253,252,252,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,139,139,203,252,252,252,140,115,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,32,47,131,216,255,234,100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,170,254,254,252,245,171,212,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,214,254,252,183,60,0,0,63,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,61,215,254,228,102,0,0,0,0,59,252,229,8,0,0,0,0,0,0,0,0,0,0,0,0,0,2,68,254,251,156,13,0,0,0,0,0,6,235,183,0,0,0,0,0,0,0,0,0,0,0,0,0,14,145,254,243,102,0,0,0,0,0,0,0,63,254,183,0,0,0,0,0,0,0,0,0,0,0,0,1,169,254,235,73,0,0,0,0,0,0,0,0,63,254,183,0,0,0,0,0,0,0,0,0,0,0,0,2,144,215,54,0,0,0,0,0,0,0,0,0,102,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,74,46,16,193,198,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,146,235,254,254,254,229,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,128,247,254,227,129,132,247,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,180,254,216,73,15,0,64,250,254,254,202,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,182,247,144,14,0,0,48,230,240,71,135,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,4,161,248,87,0,0,0,69,230,254,128,0,26,220,225,51,0,0,0,0,0,0,0,0,0,0,0,0,36,254,209,0,0,0,110,251,254,132,3,0,0,32,150,74,0,0,0,0,0,0,0,0,0,0,0,0,97,254,70,0,34,152,251,241,122,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,214,226,249,254,242,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,103,254,254,244,132,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,66,66,119,201,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,191,229,253,253,253,253,253,205,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,218,254,253,253,250,245,253,253,251,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,234,120,250,90,48,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,188,38,138,0,118,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,217,27,11,76,243,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,152,70,228,253,253,193,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,214,254,223,209,253,253,164,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,253,253,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,253,253,162,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,170,255,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,215,253,254,253,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,230,238,80,56,231,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,158,253,236,57,0,20,233,246,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,245,253,188,87,0,0,153,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,249,185,14,0,0,14,236,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,216,253,139,0,0,0,52,234,254,209,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,225,15,47,88,171,248,253,218,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,246,253,219,246,253,253,239,154,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,221,104,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,253,206,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,251,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,237,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,253,234,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,250,253,210,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,94,0,40,136,76,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,186,252,236,167,18,47,224,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,218,253,253,149,0,122,222,253,253,253,224,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,253,253,250,28,45,224,253,253,253,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,76,90,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,129,46,231,253,253,238,194,253,211,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,246,99,157,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,253,253,253,253,251,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,217,253,253,253,253,253,253,253,247,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,177,232,232,251,253,253,253,238,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,163,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,70,38,70,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,212,252,232,252,117,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,201,231,230,237,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,219,218,153,153,0,0,70,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,170,218,19,0,0,0,0,70,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,253,164,0,0,0,0,0,164,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,252,75,8,0,0,0,0,22,215,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,245,21,0,0,0,0,0,3,118,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,108,0,0,0,0,0,22,118,252,252,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,128,0,0,0,0,0,146,253,252,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,88,0,0,43,0,119,248,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,244,126,231,240,230,248,252,243,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,253,255,253,201,253,243,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,253,223,123,227,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,69,56,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,110,194,229,145,79,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,200,253,254,253,253,253,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,201,253,253,213,191,227,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,235,9,0,37,172,253,225,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,246,253,236,136,0,0,0,26,235,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,244,51,0,0,0,0,26,235,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,237,8,0,0,0,7,164,253,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,253,135,0,0,42,171,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,223,33,94,251,253,253,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,226,254,253,253,186,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,212,254,254,255,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,231,253,253,253,254,107,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,214,253,253,253,253,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,176,56,237,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,248,253,139,9,0,100,254,219,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,181,9,0,0,15,241,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,216,75,18,27,27,205,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,232,253,253,254,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,190,248,253,253,253,253,254,226,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,118,202,253,222,138,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,219,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,102,238,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,66,239,254,254,251,131,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,189,254,254,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,254,254,254,254,253,149,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,238,254,254,254,254,254,254,254,254,254,162,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,248,254,254,254,156,116,238,254,254,254,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,14,178,254,254,254,35,5,0,13,14,125,254,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,12,160,254,254,254,254,22,0,0,0,0,103,250,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,254,186,11,0,0,0,0,0,217,255,254,46,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,198,86,0,0,0,0,0,0,123,254,254,46,0,0,0,0,0,0,0,0,0,0,0,14,202,254,254,247,63,0,0,0,0,0,0,82,243,254,245,41,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,169,0,0,0,0,0,0,0,117,254,254,146,0,0,0,0,0,0,0,0,0,0,0,13,177,254,254,254,33,0,0,0,0,0,20,70,154,254,205,17,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,246,14,0,0,0,2,16,176,254,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,116,0,0,0,107,129,254,254,254,254,226,50,0,0,0,0,0,0,0,0,0,0,0,0,7,163,254,254,234,71,63,142,251,254,254,254,254,226,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,251,254,254,254,254,255,254,254,254,252,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,254,254,254,254,254,254,245,146,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,242,254,254,215,200,59,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,169,100,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,105,254,255,251,254,204,118,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,201,85,47,148,254,253,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,239,106,15,0,0,171,242,246,5,146,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,61,0,0,0,0,26,175,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,213,4,0,0,0,0,56,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,190,3,0,0,0,0,176,81,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,165,0,0,15,143,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,90,2,153,171,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,208,197,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,181,237,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,193,117,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,226,34,110,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,244,61,0,110,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,181,0,2,172,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,246,110,0,27,205,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,20,0,98,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,108,47,207,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,224,210,144,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,158,172,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,72,193,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,213,254,253,203,122,102,203,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,233,70,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,233,244,162,41,0,0,0,0,41,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,81,0,0,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,91,0,0,0,0,0,0,0,0,193,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,213,10,0,0,0,0,0,0,0,123,233,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,142,0,0,0,0,0,0,0,92,233,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,41,233,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,123,0,0,0,0,0,51,233,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,243,81,0,0,21,102,233,252,233,232,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,152,152,214,253,254,233,41,102,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,151,232,253,252,253,252,172,30,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,142,183,102,0,0,0,102,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,153,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,71,134,203,254,254,225,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,71,192,253,254,253,253,253,253,222,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,129,189,253,253,253,254,253,253,253,253,253,221,22,0,18,0,0,0,0,0,0,0,0,0,0,7,49,195,253,253,253,253,253,254,253,246,214,253,253,253,36,0,144,0,0,0,0,0,0,0,0,0,6,89,253,253,253,253,253,253,253,254,247,108,14,173,253,253,36,0,242,0,0,0,0,0,0,0,0,45,199,253,253,253,253,253,253,253,184,175,54,0,0,15,208,253,36,0,242,0,0,0,0,0,0,0,0,146,168,168,145,195,253,253,253,125,3,0,0,0,0,0,194,253,36,0,202,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,124,4,0,0,0,0,0,24,217,253,36,0,17,0,0,0,0,0,0,0,0,0,0,0,21,212,253,253,36,0,0,0,0,0,0,171,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,115,2,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,181,0,0,0,0,0,0,0,0,183,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,21,218,253,169,0,0,0,0,0,0,0,28,223,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,60,0,0,0,0,0,0,6,136,253,253,94,0,0,151,0,0,0,0,0,0,0,0,0,0,37,253,253,60,0,0,0,0,0,0,60,253,253,204,16,0,0,242,0,0,0,0,0,0,0,0,0,0,37,253,253,60,0,0,0,0,0,47,226,253,253,94,0,0,0,242,0,0,0,0,0,0,0,0,0,0,37,253,253,152,0,0,0,0,74,176,253,253,172,14,0,0,0,242,0,0,0,0,0,0,0,0,0,0,7,185,253,240,206,206,206,206,254,253,253,253,72,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,253,253,254,253,253,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,253,253,253,253,253,254,253,220,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,173,253,253,253,132,63,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,89,155,255,224,130,130,91,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,253,253,253,213,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,250,228,143,105,105,105,141,249,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,99,84,0,0,0,0,0,0,205,253,253,166,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,74,236,253,253,172,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,75,191,253,253,253,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,75,191,253,253,253,253,236,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,253,253,168,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,231,253,253,253,253,156,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,253,253,204,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,149,253,253,253,253,253,253,234,199,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,49,49,139,172,196,253,253,253,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,170,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,233,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,100,224,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,206,253,253,253,253,112,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,112,200,249,253,253,253,215,97,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,253,253,158,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,253,159,32,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,21,147,254,255,254,210,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,182,253,253,253,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,142,238,253,253,223,200,237,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,203,253,253,223,125,29,12,199,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,235,253,228,124,27,0,9,171,253,253,209,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,46,147,51,0,0,0,24,253,253,253,253,227,164,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,247,247,247,247,253,253,252,165,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,228,253,253,173,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,113,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,164,253,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,253,183,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,17,0,0,0,0,0,0,0,0,0,0,9,46,24,0,0,0,0,0,0,0,0,0,0,0,128,253,253,17,0,0,0,0,0,0,0,0,0,5,181,245,41,0,0,0,0,0,0,0,0,0,0,6,192,253,242,15,0,0,0,0,0,0,0,0,0,36,253,160,0,0,0,0,0,0,0,0,0,3,62,182,253,253,130,0,0,0,0,0,0,0,0,0,0,36,253,95,0,0,0,0,0,0,0,25,66,129,253,253,253,163,10,0,0,0,0,0,0,0,0,0,0,36,253,239,105,84,4,8,84,84,120,221,253,253,253,199,85,11,0,0,0,0,0,0,0,0,0,0,0,5,183,253,253,253,220,222,253,253,253,253,253,201,139,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,176,253,253,253,253,253,217,135,28,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,202,255,255,254,205,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,241,231,74,32,44,237,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,195,219,29,0,0,0,185,203,81,137,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,45,0,0,0,3,227,235,239,198,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,191,3,0,0,0,74,254,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,61,0,0,0,2,205,254,254,196,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,225,38,0,0,0,78,241,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,236,160,0,0,0,31,209,254,254,248,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,239,180,0,55,179,241,233,157,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,251,253,234,117,44,214,236,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,103,128,79,16,0,119,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,244,190,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,231,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,233,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,249,236,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,148,218,253,148,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,32,237,252,252,252,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,84,232,249,237,252,233,160,179,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,252,243,153,7,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,208,79,0,0,27,167,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,129,0,0,4,183,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,246,252,121,0,0,136,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,200,62,52,242,252,155,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,231,252,239,232,252,210,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,253,252,146,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,218,253,255,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,121,247,252,252,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,192,252,251,160,134,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,253,252,134,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,252,253,137,4,0,150,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,150,0,0,55,236,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,217,27,0,52,232,252,222,63,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,200,145,232,242,252,252,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,252,253,252,252,210,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,235,209,173,138,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,170,255,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,251,253,244,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,239,253,138,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,176,253,253,192,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,156,253,253,190,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,208,253,253,228,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,202,253,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,206,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,138,248,253,253,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,248,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,205,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,245,253,220,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,218,253,167,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,112,163,255,254,254,215,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,147,253,253,254,253,253,253,247,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,250,216,127,127,204,245,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,250,153,0,0,0,0,193,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,184,0,0,0,0,0,109,253,92,175,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,254,36,0,0,0,0,0,167,254,255,238,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,202,3,0,0,0,71,223,249,253,192,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,27,186,250,253,224,87,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,241,44,116,238,254,249,156,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,136,253,253,228,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,254,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,245,121,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,204,254,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,170,253,254,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,221,253,229,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,163,73,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,253,111,73,253,245,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,162,196,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,253,253,254,249,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,201,253,163,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,147,221,211,87,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,148,241,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,173,254,254,252,249,254,254,214,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,233,254,254,177,48,0,212,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,254,128,13,0,28,230,254,206,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,80,9,0,0,110,250,253,91,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,208,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,145,236,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,114,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,237,254,189,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,236,254,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,228,254,246,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,60,60,5,62,236,254,240,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,163,207,250,254,254,210,237,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,218,254,254,254,254,254,254,254,254,254,252,203,79,9,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,254,196,230,254,254,255,254,254,255,254,254,199,84,2,0,0,0,0,0,0,0,0,0,0,32,243,254,254,129,159,238,254,254,165,43,52,151,235,254,254,125,1,0,0,0,0,0,0,0,0,0,0,34,232,254,254,253,254,254,229,69,2,0,0,0,4,63,114,19,0,0,0,0,0,0,0,0,0,0,0,0,44,241,254,254,251,184,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,181,236,192,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,253,252,206,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,182,162,235,255,254,224,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,173,249,254,252,214,175,189,251,247,80,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,209,254,241,156,55,0,0,0,92,244,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,1,66,220,254,183,30,0,0,0,0,0,7,219,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,254,116,3,0,0,0,0,0,0,18,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,4,201,254,134,4,0,0,0,0,0,0,0,137,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,10,194,241,14,0,0,0,0,0,0,0,0,213,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,114,253,151,0,0,0,0,0,0,0,13,169,253,254,229,18,0,0,0,0,0,0,0,0,0,0,0,0,178,254,197,94,89,42,57,69,130,140,217,254,254,203,31,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,254,253,253,254,254,254,254,254,246,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,144,234,252,254,254,251,250,249,191,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,68,68,12,0,0,56,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,250,123,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,181,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,196,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,147,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,142,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,226,249,122,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,247,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,216,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,243,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,254,255,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,224,253,141,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,239,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,219,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,223,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,95,161,161,161,195,161,203,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,239,254,253,253,253,254,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,236,253,253,254,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,169,19,144,128,220,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,254,253,253,245,231,180,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,253,254,253,253,253,254,253,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,254,253,253,253,254,253,253,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,185,42,34,0,93,142,241,254,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,198,48,9,0,0,0,0,0,74,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,199,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,255,203,153,45,0,0,0,51,153,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,90,254,253,253,245,231,230,230,247,254,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,167,253,253,254,253,253,210,163,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,169,219,195,211,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,128,128,128,64,128,0,0,0,0,0,0,0,0,0,0,0,128,128,0,128,255,255,255,191,0,0,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,64,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,0,64,64,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,64,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,64,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,255,255,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,193,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,168,254,254,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,183,254,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,254,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,254,254,160,237,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,247,6,228,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,124,0,228,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,181,3,0,228,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,215,254,103,0,0,228,254,133,106,228,228,228,109,69,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,143,70,129,250,254,254,254,254,254,254,254,209,21,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,254,254,254,254,254,219,206,202,68,125,248,254,102,0,0,0,0,0,0,0,0,0,0,0,0,68,248,254,254,254,254,254,255,68,0,0,0,0,221,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,84,110,110,110,110,239,254,68,0,0,0,0,221,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,68,0,0,0,0,221,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,68,0,0,0,0,221,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,68,0,0,0,91,250,200,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,68,0,2,130,222,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,68,5,123,254,254,173,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,184,169,254,254,178,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,229,254,254,251,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,97,156,231,224,254,254,255,246,156,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,253,253,253,253,254,253,253,217,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,253,253,253,253,254,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,153,214,130,117,117,117,117,161,241,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,200,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,199,253,222,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,246,253,253,216,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,217,254,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,255,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,228,253,254,251,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,152,254,213,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,253,252,253,252,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,203,122,102,203,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,70,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,41,0,0,0,0,0,51,92,152,193,244,40,0,0,0,0,0,0,0,0,0,0,102,183,203,243,253,252,163,122,163,203,123,203,253,252,253,252,162,0,0,0,0,0,0,0,0,0,11,132,255,253,255,253,254,253,254,253,254,253,254,253,254,253,203,61,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,212,131,91,71,151,172,252,253,171,151,70,20,0,0,0,0,0,0,0,0,0,0,0,51,253,255,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,233,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,198,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,86,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,226,57,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,86,0,0,0,141,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,141,0,0,0,29,226,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,0,0,0,0,141,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,57,0,0,0,0,226,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,0,0,0,0,57,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,57,0,0,0,86,226,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,57,170,255,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,114,226,255,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,86,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,255,254,255,208,254,255,248,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,253,253,215,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,188,249,253,253,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,102,107,218,253,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,49,49,54,217,253,253,253,138,28,49,49,49,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,253,253,253,253,253,228,253,253,253,238,117,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,253,253,253,253,253,253,253,253,253,245,157,0,0,0,0,0,0,0,0,0,0,0,0,41,165,253,253,253,253,253,219,199,227,253,253,253,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,10,88,244,253,253,201,20,0,28,54,54,112,161,72,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,245,253,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,170,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,235,253,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,212,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,61,182,255,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,52,183,253,253,253,151,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,103,217,253,253,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,253,253,231,133,133,204,252,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,222,117,13,0,0,0,234,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,161,67,15,0,0,0,0,124,252,243,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,233,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,167,252,253,218,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,119,244,253,253,186,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,127,209,251,253,253,253,112,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,204,251,253,253,253,253,253,253,151,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,218,152,94,104,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,172,144,63,16,0,0,3,137,253,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,17,14,0,0,0,0,0,0,0,0,2,128,254,214,10,0,0,0,0,0,0,0,0,0,0,0,0,8,228,204,0,0,0,0,0,0,0,0,47,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,158,11,0,0,0,0,0,0,46,228,253,250,64,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,209,100,90,90,91,149,189,230,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100,247,253,253,253,253,253,253,253,253,227,82,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,153,205,253,253,253,155,153,92,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,255,254,186,156,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,254,254,254,254,212,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,158,158,158,234,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,208,254,224,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,78,222,254,249,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,254,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,187,254,254,254,168,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,214,254,254,240,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,172,254,254,245,122,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,54,173,254,254,155,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,123,246,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,208,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,72,15,0,49,200,254,254,218,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,244,187,248,254,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,191,254,254,254,254,254,122,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,64,254,240,155,43,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,144,144,144,72,34,34,102,62,34,34,34,34,34,26,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,253,254,253,253,253,237,177,177,110,67,9,0,0,0,0,0,0,0,0,25,73,154,154,219,253,253,253,179,197,254,253,253,253,253,253,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,10,3,5,11,10,10,69,121,121,127,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,209,252,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,219,253,253,207,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,253,253,177,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,215,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,139,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,209,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,253,148,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,255,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,143,58,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,244,66,62,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,176,235,254,227,222,222,214,126,126,126,126,126,49,29,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,254,254,254,254,254,254,254,254,254,254,254,254,203,188,21,0,0,0,0,0,0,0,0,0,0,0,0,4,50,68,61,101,168,197,197,214,201,218,235,255,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,3,15,25,71,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,144,254,253,115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,138,254,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,196,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,210,254,253,151,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,210,254,230,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,250,254,231,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,95,249,254,230,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,254,254,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,171,254,254,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,171,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,246,254,211,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,233,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,209,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,152,152,233,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,252,253,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,102,102,214,253,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,254,192,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,253,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,131,131,151,232,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,40,0,0,0,0,0,0,173,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,131,21,0,0,0,72,233,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,223,122,123,203,253,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,254,253,254,253,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,112,192,253,171,91,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,183,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,239,220,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,248,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,244,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,37,0,79,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,229,0,13,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,122,2,198,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,227,110,177,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,248,242,183,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,125,192,125,125,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,153,254,254,254,254,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,254,254,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,224,254,254,254,236,149,66,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,234,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,249,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,248,254,254,254,165,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,247,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,254,238,190,190,166,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,254,254,254,254,254,254,244,100,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,247,254,254,254,254,255,254,254,254,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,254,254,254,254,254,254,254,254,254,254,246,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,254,254,254,254,254,254,254,254,251,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,254,254,254,254,254,254,254,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,254,254,254,254,254,254,254,251,218,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,230,254,254,254,254,254,230,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,164,217,157,254,160,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,153,238,217,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,166,254,244,176,238,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,254,180,53,0,199,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,239,254,151,17,0,0,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,244,241,69,3,0,0,0,7,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,241,37,0,0,0,0,8,198,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,130,0,0,0,0,8,168,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,61,0,0,0,44,138,220,224,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,251,247,144,134,208,242,195,36,199,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,203,211,211,167,47,0,41,246,221,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,243,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,242,242,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,226,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,245,248,74,0,0,0,0,0,32,109,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,230,0,0,0,0,0,4,177,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,188,0,0,0,0,0,150,253,215,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,253,112,0,0,0,0,0,249,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,109,0,0,0,0,56,251,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,233,253,247,0,0,0,0,0,113,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,173,0,0,0,0,60,201,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,47,0,0,0,0,95,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,209,253,253,11,0,0,0,0,95,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,120,2,0,0,0,0,194,253,241,56,95,95,20,0,0,0,0,0,0,0,0,0,0,0,33,246,253,172,3,0,0,19,113,148,250,253,252,244,253,253,235,32,0,0,0,0,0,0,0,0,0,0,42,253,253,252,249,249,249,249,253,253,253,253,253,246,219,124,30,1,0,0,0,0,0,0,0,0,0,0,154,253,253,253,253,253,253,253,253,253,253,253,163,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,206,228,228,206,206,139,88,88,215,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,33,0,0,0,0,16,210,253,224,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,226,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,177,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,114,249,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,146,254,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,200,254,254,254,245,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,254,80,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,220,254,231,98,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,209,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,246,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,202,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,127,0,0,0,0,0,8,78,130,89,22,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,192,7,0,0,0,13,177,254,254,254,254,168,36,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,69,0,0,7,178,254,254,254,254,254,254,191,2,0,0,0,0,0,0,0,0,0,0,0,0,5,244,254,245,64,0,17,254,254,241,234,254,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,239,91,22,254,191,40,19,81,145,255,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,124,244,254,254,218,254,116,9,104,60,120,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,254,253,251,254,253,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,110,254,254,254,254,254,254,254,254,254,226,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,38,144,254,254,254,254,254,196,146,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,197,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,224,19,19,19,19,111,143,107,19,19,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,253,253,253,253,253,164,101,3,0,0,0,0,0,0,0,0,0,0,0,0,0,126,225,253,253,253,253,253,253,253,253,253,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,108,216,216,131,93,93,93,93,143,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,171,253,253,166,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,81,174,236,253,212,98,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,81,196,253,253,253,168,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,253,159,63,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,185,185,202,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,55,152,202,253,233,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,179,253,234,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,27,0,0,0,0,0,77,197,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,205,183,0,0,0,0,0,37,220,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,197,0,0,0,0,89,221,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,249,144,112,209,236,250,253,253,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,177,253,253,253,253,253,253,210,87,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,121,253,253,253,153,26,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,28,131,131,131,226,158,92,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,254,254,254,254,254,214,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,214,254,251,236,144,144,250,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,229,147,85,0,0,0,127,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,72,235,254,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,96,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,156,254,254,254,215,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,231,254,254,254,254,254,193,135,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,254,254,254,254,254,179,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,186,235,254,169,159,241,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,55,14,0,45,124,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,206,254,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,169,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,100,144,0,0,0,27,198,249,254,124,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,234,254,229,34,0,109,237,254,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,242,237,250,254,254,179,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,254,254,254,254,220,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,21,130,212,255,254,163,97,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,127,127,106,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,78,114,189,197,225,202,161,161,191,251,159,0,0,0,0,0,0,0,0,0,0,0,0,0,27,84,153,215,254,232,156,94,23,0,0,0,83,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,228,129,47,7,0,0,0,0,0,0,139,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,62,122,23,0,0,0,0,0,0,0,0,24,242,173,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,38,173,255,149,37,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,207,244,255,254,255,254,255,247,171,71,2,0,0,0,0,0,0,0,0,0,0,0,0,0,10,136,241,254,231,177,254,235,76,68,73,139,212,254,169,19,0,0,0,0,0,0,0,0,0,0,0,36,216,254,229,75,59,208,253,103,0,0,0,0,3,47,179,176,0,0,0,0,0,0,0,0,0,0,0,158,254,248,134,103,215,247,100,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,46,250,254,254,229,145,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,54,54,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,254,182,154,118,56,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,203,253,253,253,253,253,253,253,235,209,126,44,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,253,253,220,210,253,253,253,253,253,253,253,160,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,46,12,34,35,54,175,233,243,253,253,253,194,6,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,201,21,0,0,0,0,0,36,145,245,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,7,211,253,253,163,31,0,0,0,0,0,0,134,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,243,147,2,0,0,0,57,168,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,2,113,234,253,253,253,240,157,40,92,249,253,253,205,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,131,211,253,253,253,253,253,253,254,155,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,199,253,253,253,253,253,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,223,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,248,253,253,227,118,244,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,243,253,248,121,23,0,214,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,242,76,0,0,0,214,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,251,253,126,0,0,0,6,218,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,75,0,0,0,130,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,172,22,7,118,246,253,244,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,253,253,230,202,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,254,253,253,253,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,209,253,253,252,130,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,4,55,236,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,107,197,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,236,189,252,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,108,253,63,127,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,252,174,11,127,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,174,0,0,189,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,247,169,11,0,64,247,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,145,247,180,7,0,0,137,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,204,253,196,42,0,0,0,190,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,186,252,253,239,211,211,211,212,242,252,225,211,150,71,0,0,0,0,0,0,0,0,0,0,0,0,0,107,239,253,237,239,229,229,229,237,253,253,253,253,255,222,17,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,37,42,27,27,27,37,205,245,98,63,63,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,221,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,246,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,64,128,255,255,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,255,255,255,64,64,128,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,191,255,255,64,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,128,255,255,64,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,255,255,191,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,64,191,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,64,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,1,0,57,251,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,235,151,20,179,229,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,191,144,254,154,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,244,254,65,148,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,217,221,113,1,148,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,233,254,110,0,61,243,162,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,84,251,253,157,21,0,133,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,251,122,0,0,0,194,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,147,251,220,79,0,0,0,53,252,241,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,183,254,197,86,0,0,0,0,27,251,206,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,210,254,254,47,0,0,0,0,0,149,254,220,119,78,16,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,235,138,16,51,96,139,251,254,255,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,30,226,254,254,254,252,236,244,254,254,254,254,254,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,124,182,243,243,243,243,253,254,254,173,124,38,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,233,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,233,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,223,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,223,254,71,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,247,217,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,152,254,172,92,31,0,0,0,0,0,0,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,252,253,232,183,61,0,0,0,0,233,30,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,254,253,254,253,254,253,132,10,0,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,252,253,252,253,252,253,91,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,253,254,253,254,253,254,253,254,253,21,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,253,252,253,252,253,252,253,252,102,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,254,253,254,253,254,253,254,253,102,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,131,50,213,252,253,252,253,252,102,0,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,253,254,253,82,0,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,253,252,253,212,0,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,254,253,244,40,0,0,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,253,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,253,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,254,253,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,197,245,213,97,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,155,242,254,254,254,254,254,250,153,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,149,254,254,223,153,101,69,116,149,238,182,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,254,138,15,0,0,0,0,0,115,241,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,200,17,0,0,0,0,0,0,0,57,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,67,0,0,0,0,0,0,0,0,3,60,99,99,24,0,0,0,0,0,0,0,0,0,0,0,0,185,254,67,0,0,0,0,0,0,0,28,161,254,254,176,20,0,0,0,0,0,0,0,0,0,0,0,0,69,254,92,0,0,0,0,0,0,3,222,254,157,80,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,205,208,0,0,0,0,0,115,181,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,242,87,0,0,0,107,248,254,240,100,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,230,66,3,0,163,254,241,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,247,201,197,245,209,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,196,254,254,241,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,200,254,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,168,254,254,239,246,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,216,254,254,179,244,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,254,254,254,242,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,240,254,254,254,254,254,254,168,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,254,254,245,184,68,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,205,254,215,162,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,195,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,232,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,170,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,250,253,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,244,253,248,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,239,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,212,253,253,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,227,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,233,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,216,238,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,4,55,130,185,255,130,0,0,0,0,0,0,0,0,0,0,0,2,28,136,47,0,3,13,13,13,114,234,210,240,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,96,253,253,180,143,167,253,253,253,253,253,253,237,252,253,253,121,0,0,0,0,0,0,0,0,0,0,24,210,253,253,253,253,253,247,228,228,189,105,105,13,230,253,253,5,0,0,0,0,0,0,0,0,0,8,210,253,253,253,253,232,134,75,0,0,0,0,0,137,244,253,166,2,0,0,0,0,0,0,0,0,1,109,253,253,249,198,93,29,0,0,0,0,0,0,0,223,253,253,12,0,0,0,0,0,0,0,0,0,89,253,253,249,124,0,0,0,0,0,0,0,0,0,62,243,253,179,4,0,0,0,0,0,0,0,0,0,130,253,253,143,0,0,0,0,0,0,0,0,0,18,185,253,233,54,0,0,0,0,0,0,0,0,0,0,102,197,188,31,0,0,0,0,0,0,0,0,0,88,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,188,253,229,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,243,228,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,243,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,192,253,226,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,245,253,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,253,225,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,224,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,222,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,229,203,79,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,196,82,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,196,80,56,119,224,252,228,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,84,0,0,0,19,203,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,226,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,208,57,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,110,197,197,185,160,197,246,253,252,252,228,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,29,252,252,252,253,252,252,252,253,227,139,90,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,226,225,225,175,101,76,113,238,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,0,0,0,0,0,0,19,231,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,0,0,0,0,0,85,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,191,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,64,128,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,255,255,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,128,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,64,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,255,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,195,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,122,246,253,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,123,253,253,185,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,253,253,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,223,253,240,85,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,242,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,176,242,253,238,91,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,213,253,253,253,147,66,66,66,66,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,224,253,253,253,253,253,253,253,253,253,215,189,87,0,0,0,0,0,0,0,0,0,0,0,0,0,98,244,253,253,253,253,253,253,253,253,253,253,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,163,246,253,253,253,253,241,207,114,144,164,207,128,158,253,251,86,0,0,0,0,0,0,0,0,0,0,95,247,253,253,253,221,110,63,0,0,0,0,6,53,176,253,253,123,0,0,0,0,0,0,0,0,0,76,249,253,253,253,115,16,0,9,33,33,33,121,175,253,253,253,252,108,0,0,0,0,0,0,0,0,0,198,253,253,253,253,171,156,156,181,253,253,253,253,253,253,253,238,154,0,0,0,0,0,0,0,0,0,74,251,253,253,253,253,253,253,253,253,253,253,253,253,253,251,234,45,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,253,253,253,253,253,253,253,253,228,136,0,0,0,0,0,0,0,0,0,0,0,0,174,250,253,253,253,253,253,253,253,253,253,253,252,247,233,108,0,0,0,0,0,0,0,0,0,0,0,0,0,54,176,253,253,209,230,253,253,223,123,190,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,255,255,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,94,246,253,252,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,251,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,240,253,250,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,229,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,97,0,0,0,0,57,131,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,97,0,0,21,183,251,253,253,237,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,247,253,200,0,14,122,253,240,201,160,241,251,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,238,41,152,253,253,50,0,0,135,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,184,241,253,216,10,0,40,230,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,154,253,253,253,253,212,141,212,251,250,120,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,142,237,253,253,253,253,253,226,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,44,145,184,151,120,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,103,246,255,254,246,102,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,226,254,254,254,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,248,254,249,162,101,103,132,229,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,198,254,231,58,0,0,0,0,26,245,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,95,0,0,0,0,3,137,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,22,0,0,0,30,139,254,243,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,251,254,209,158,158,169,244,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,145,254,254,254,254,254,254,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,193,254,254,254,254,254,254,254,254,251,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,254,216,143,122,183,252,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,254,254,188,67,10,0,0,0,70,240,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,173,184,8,0,0,0,0,0,0,94,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,238,10,28,11,0,0,0,0,0,0,49,246,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,242,21,0,0,0,0,0,0,0,22,219,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,114,0,0,0,0,0,0,30,209,254,242,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,240,230,114,15,15,15,57,140,233,254,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,254,254,254,254,254,215,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,218,254,254,254,254,254,246,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,116,244,207,161,120,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,118,208,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,240,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,250,254,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127,253,254,239,98,187,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,193,60,0,166,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,254,248,81,0,0,84,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,254,254,73,0,0,0,14,124,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,254,119,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,225,254,226,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,244,104,0,0,48,49,87,187,112,109,49,105,67,49,15,0,0,0,0,0,0,0,0,0,0,0,187,254,199,0,25,166,253,254,255,254,255,254,254,254,254,254,169,11,0,0,0,0,0,0,0,0,0,0,235,254,199,19,204,248,248,199,110,110,110,110,110,165,248,253,254,96,0,0,0,0,0,0,0,0,0,0,235,254,199,0,0,0,0,0,0,0,0,0,0,0,0,133,254,96,0,0,0,0,0,0,0,0,0,0,235,254,199,0,0,0,0,0,0,0,0,0,0,0,34,216,254,96,0,0,0,0,0,0,0,0,0,0,116,254,217,27,0,0,0,0,0,0,0,0,0,80,214,254,173,13,0,0,0,0,0,0,0,0,0,0,21,223,254,199,63,31,0,0,0,0,7,67,200,252,254,171,16,0,0,0,0,0,0,0,0,0,0,0,0,179,245,254,254,216,180,180,180,180,188,254,254,238,93,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,237,243,254,254,254,254,254,241,230,96,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,54,117,117,240,142,117,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,210,253,230,154,97,33,80,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,253,253,253,253,223,222,159,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,253,141,249,253,211,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,203,245,164,82,47,47,26,152,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,26,0,0,0,0,0,130,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,208,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,251,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,193,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,95,250,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,236,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,250,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,231,203,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,130,130,130,213,214,234,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,148,241,253,253,253,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,253,253,253,222,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,195,170,170,246,188,187,84,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,211,202,244,133,11,0,0,32,24,139,35,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,147,119,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,173,253,254,253,152,152,152,152,214,253,152,152,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,252,253,252,253,252,253,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,142,102,102,102,102,102,102,102,102,102,234,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,0,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,128,191,255,191,191,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,0,0,0,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,0,0,0,128,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,0,128,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,0,64,191,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,255,253,253,140,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,252,252,253,252,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,82,26,26,152,242,252,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,252,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,118,214,252,252,174,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,215,253,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,253,252,252,252,74,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,246,253,252,252,252,252,145,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,171,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,132,252,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,219,252,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,68,59,0,0,0,0,0,0,0,0,81,224,252,191,49,0,0,0,0,0,0,0,0,0,0,0,0,0,213,80,0,0,0,0,0,0,0,75,244,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,20,221,186,35,0,0,0,0,0,51,128,252,252,241,63,0,0,0,0,0,0,0,0,0,0,0,0,0,79,246,231,145,41,41,41,111,174,248,252,252,241,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,252,252,252,252,253,252,252,243,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,242,252,252,252,252,252,253,252,190,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,147,252,252,252,252,190,119,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,37,11,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,79,154,253,112,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,167,110,175,158,207,247,251,248,230,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,248,255,254,254,217,181,105,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,247,168,54,124,103,48,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,212,199,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,199,220,106,121,184,230,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,198,254,218,252,253,253,254,244,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,255,253,181,96,32,81,240,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,235,124,55,0,0,0,3,211,215,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,118,6,0,9,0,0,0,25,2,3,208,184,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,195,129,110,110,143,221,236,24,29,226,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,242,253,253,253,254,253,253,170,135,234,227,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,173,244,254,255,248,245,254,254,193,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,166,230,229,229,148,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,172,255,254,255,254,254,195,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,244,234,160,160,160,160,189,253,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,250,133,8,0,0,0,0,3,73,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,204,28,0,0,0,0,0,0,21,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,75,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,204,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,131,252,210,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,229,220,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,230,213,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,182,253,178,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,210,253,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,156,244,214,62,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,66,135,135,233,253,180,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,243,160,135,233,242,238,145,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,152,41,0,0,0,36,104,240,240,93,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,154,251,165,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,178,225,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,121,197,180,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,119,202,221,228,163,163,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,245,253,249,198,238,249,253,251,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,199,81,33,0,26,33,49,213,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,4,0,0,0,0,0,0,38,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,234,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,55,55,139,231,249,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,253,253,172,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,205,253,235,251,253,253,149,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,72,0,67,149,233,253,233,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,207,255,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,249,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,127,0,0,0,0,0,0,0,0,0,0,0,0,10,4,0,0,0,0,0,0,0,0,0,0,0,73,253,127,0,0,0,0,0,0,0,0,0,0,0,0,128,151,0,0,0,0,0,0,0,0,0,0,0,73,253,127,0,0,0,0,0,0,0,0,0,0,0,0,192,254,156,53,0,0,0,0,0,0,0,0,0,163,254,36,0,0,0,0,0,0,0,0,0,0,0,0,68,222,253,223,94,8,0,0,0,0,0,0,72,247,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,22,204,254,253,209,128,128,69,121,128,128,217,243,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,113,196,244,253,253,254,253,253,253,240,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,111,162,228,194,162,155,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,254,253,254,213,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,253,252,253,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,172,41,0,21,102,234,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,10,0,0,0,0,71,252,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,72,152,254,253,254,213,173,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,253,252,253,252,253,252,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,183,102,102,102,102,203,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,130,0,0,0,0,21,203,233,192,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,62,254,172,41,0,0,0,0,0,173,253,123,0,92,253,234,51,0,0,0,0,0,0,0,0,0,0,0,102,253,50,0,0,0,0,21,183,253,130,0,0,10,131,253,192,0,0,0,0,0,0,0,0,0,0,51,253,203,0,0,0,0,21,214,253,123,0,0,0,0,0,123,243,132,10,0,0,0,0,0,0,0,0,51,252,203,0,0,41,163,223,233,70,0,0,0,0,0,0,0,40,112,30,0,0,0,0,0,0,0,0,41,203,255,213,214,253,224,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,232,192,70,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,83,160,168,168,212,212,128,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,132,246,253,254,254,254,254,254,254,254,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,247,254,254,254,254,212,180,122,136,108,215,254,253,172,19,0,0,0,0,0,0,0,0,0,0,0,0,255,254,132,99,179,86,6,0,0,0,0,18,175,254,254,199,0,0,0,0,0,0,0,0,0,0,0,0,17,17,1,0,0,0,0,0,0,0,0,0,2,180,254,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,239,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,227,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,52,9,0,52,208,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,220,226,254,226,220,247,254,254,228,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,254,254,254,254,254,254,254,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,205,248,254,254,254,223,219,254,254,218,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,47,106,47,10,5,152,254,254,217,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,182,254,254,232,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,162,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,223,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,234,254,186,0,0,0,0,0,0,0,0,34,96,96,72,9,1,0,0,0,0,0,0,0,0,0,48,234,254,253,79,0,0,0,0,0,0,0,0,228,254,254,254,254,183,177,101,91,62,91,91,91,158,177,234,254,253,128,0,0,0,0,0,0,0,0,0,138,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,34,34,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,67,96,176,176,176,203,252,252,229,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,119,209,247,253,252,252,157,153,231,252,252,252,161,0,0,0,0,0,0,0,0,0,93,132,180,204,242,251,239,196,121,107,10,10,1,29,227,252,252,212,20,0,0,0,0,0,0,0,0,46,226,252,252,252,209,144,34,0,0,0,0,0,54,146,252,252,219,89,0,0,0,0,0,0,0,0,0,141,226,252,111,55,12,0,0,0,0,0,0,127,250,252,252,157,22,0,0,0,0,0,0,0,0,0,0,0,15,21,1,0,0,0,0,0,0,0,8,154,252,252,248,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,189,252,252,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,252,252,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,255,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,100,209,253,252,197,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,217,252,252,253,149,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,252,252,252,241,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,198,252,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,224,252,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,252,252,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,236,252,205,94,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,33,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,96,96,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,236,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,236,235,89,114,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,228,251,188,0,96,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,189,0,96,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,251,69,0,96,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,188,15,0,96,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,223,15,0,0,96,251,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,217,253,121,0,0,0,96,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,100,0,0,124,253,255,253,253,253,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,191,170,112,244,251,253,251,251,223,220,221,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,204,126,126,126,156,251,253,251,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,8,31,213,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,143,153,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,115,187,252,252,252,252,229,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,209,241,252,253,252,213,153,82,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,132,219,251,248,230,230,121,92,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,121,252,252,149,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,233,78,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,230,242,55,0,0,0,0,0,0,0,0,0,0,4,65,188,149,16,0,0,0,0,0,0,0,0,0,176,252,96,0,0,0,0,0,0,0,0,0,43,117,188,252,252,252,33,0,0,0,0,0,0,0,0,25,233,179,3,0,0,0,0,0,0,11,78,168,250,252,252,249,175,94,9,0,0,0,0,0,0,0,0,129,252,196,101,0,0,0,20,111,206,225,252,252,252,252,214,88,0,0,0,0,0,0,0,0,0,0,0,29,243,253,253,253,253,253,253,253,253,255,253,253,250,148,24,0,0,0,0,0,0,0,0,0,0,0,0,0,54,120,192,252,252,192,186,186,91,176,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,44,44,4,0,0,44,235,226,111,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,250,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,230,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,165,252,252,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,244,252,186,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,220,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,247,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,190,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,165,253,106,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,209,252,252,218,76,0,34,9,93,166,207,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,252,252,252,253,248,230,238,232,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,205,21,53,179,230,247,253,253,255,249,146,21,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,244,56,0,0,0,0,111,252,252,249,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,246,247,98,0,0,0,0,66,203,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,135,0,0,0,0,9,194,252,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,85,11,0,0,0,53,233,252,221,43,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,255,218,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,236,252,218,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,233,255,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,239,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,252,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,200,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,64,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,64,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,128,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,64,191,255,255,255,255,191,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,64,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,191,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,110,109,129,253,110,109,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,197,217,237,253,252,252,252,253,252,247,134,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,211,252,252,252,253,252,246,215,217,247,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,231,108,108,108,92,0,1,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,252,252,71,0,0,0,0,63,171,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,252,252,71,0,0,0,11,175,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,180,37,37,78,191,252,217,163,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,252,252,252,252,253,252,252,168,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,176,253,253,255,253,154,0,0,218,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,35,35,35,35,10,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,246,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,41,0,0,0,0,0,0,0,21,142,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,0,0,0,0,0,0,0,0,72,253,255,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,41,0,0,0,0,0,0,41,233,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,11,173,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,132,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,102,0,0,0,0,0,214,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,20,0,0,0,0,123,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,0,0,0,0,72,233,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,212,0,0,0,41,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,131,21,41,72,193,254,253,254,131,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,212,223,243,253,252,253,252,253,252,243,162,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,254,253,254,253,254,253,254,213,203,223,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,253,252,253,252,253,252,172,10,0,20,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,233,142,102,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,30,0,0,0,142,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,233,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,218,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,248,252,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,251,253,253,253,253,214,0,12,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,105,215,250,253,253,253,253,253,160,0,27,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,253,253,253,253,253,253,253,253,151,0,27,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,227,128,32,144,253,84,12,175,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,253,183,54,0,0,35,78,26,174,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,35,241,253,253,183,8,0,0,0,17,103,216,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,80,248,253,253,236,36,0,0,54,176,253,253,253,253,200,23,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,165,103,196,239,253,253,253,245,188,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,247,253,253,253,253,253,253,253,253,214,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,253,253,253,253,253,253,253,217,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,198,253,253,253,253,253,253,243,180,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,253,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,225,220,247,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,206,32,9,207,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,253,219,182,253,253,218,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,253,253,253,253,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,240,253,253,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,244,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,169,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,158,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,252,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,183,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,183,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,158,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,252,218,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,245,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,255,237,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,221,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,211,253,253,253,198,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,221,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,253,253,142,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,230,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,218,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,253,243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,228,253,209,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,233,86,20,81,182,182,182,182,182,108,79,26,0,0,0,0,0,0,0,0,0,0,0,0,0,4,178,252,253,252,235,253,253,253,253,253,253,253,253,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,253,253,253,253,253,253,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,253,253,253,253,251,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,236,253,239,196,231,253,253,253,253,253,225,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,192,114,0,29,46,46,46,46,46,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,255,202,97,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,223,102,186,253,210,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,80,0,5,82,213,237,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,195,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,221,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,228,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,133,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,241,168,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,242,132,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,242,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,63,231,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,179,249,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,189,251,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,189,238,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,219,236,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,182,235,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,222,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,226,234,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,253,252,252,252,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,138,224,252,253,252,230,227,252,253,252,155,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,55,29,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,141,0,0,0,79,255,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,242,89,15,0,0,0,0,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,7,135,253,252,239,173,0,0,0,0,0,0,143,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,44,252,253,252,180,0,0,0,0,0,0,0,38,234,252,242,75,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,55,0,0,0,0,0,0,0,0,225,252,252,189,0,0,0,0,0,0,0,0,0,0,57,253,253,255,106,0,0,0,0,0,0,0,0,0,226,253,253,253,0,0,0,0,0,0,0,0,0,0,182,252,252,152,3,0,0,0,0,0,0,0,0,101,249,252,252,204,0,0,0,0,0,0,0,0,0,0,197,252,252,31,0,0,0,0,0,0,0,0,32,222,252,252,252,112,0,0,0,0,0,0,0,0,0,0,197,252,252,16,0,0,0,0,0,0,23,123,215,253,252,252,233,37,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,126,227,252,252,253,252,252,223,0,0,0,0,0,0,0,0,0,79,0,135,253,253,255,206,113,128,253,255,253,253,253,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,252,252,252,252,253,252,252,252,252,215,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,53,227,253,252,252,252,252,253,252,252,245,195,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,225,145,223,242,252,237,252,198,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,112,50,112,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,164,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,244,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,238,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,245,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,216,72,0,0,0,19,201,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,254,211,0,0,0,26,236,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,227,0,0,0,62,254,250,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,250,98,0,0,22,216,254,200,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,94,239,250,175,0,0,0,48,247,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,179,0,0,0,0,149,254,225,15,0,7,148,28,0,0,0,0,0,0,0,0,0,0,0,81,254,254,254,176,0,0,0,22,243,254,224,80,80,152,254,139,0,0,0,0,0,0,0,0,0,0,138,250,254,254,254,253,246,246,247,248,254,254,254,254,254,224,177,3,0,0,0,0,0,0,0,0,0,94,247,254,228,147,220,254,254,254,254,254,254,254,185,105,105,31,0,0,0,0,0,0,0,0,0,0,90,244,254,224,45,0,12,26,26,44,224,254,241,44,4,0,0,0,0,0,0,0,0,0,0,0,0,0,78,210,210,64,0,0,0,0,2,56,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,227,254,254,171,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,217,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,213,254,255,249,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,172,225,176,115,93,93,93,53,9,9,53,93,93,72,1,0,0,0,0,0,0,0,0,0,0,0,0,0,55,162,242,251,254,254,254,254,254,254,254,254,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,71,135,154,127,154,154,83,75,236,224,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,74,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,19,26,91,110,110,110,110,126,247,254,150,186,192,168,141,70,0,0,0,0,0,0,0,0,0,0,12,96,239,254,254,251,225,225,225,250,254,209,115,65,58,3,0,0,0,0,0,0,0,0,0,0,0,4,141,192,104,54,54,47,0,0,48,247,162,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,0,0,0,0,0,0,0,197,247,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,234,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,218,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,245,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,216,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,190,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,254,254,254,235,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,67,221,253,253,253,253,253,230,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,236,253,253,253,253,219,158,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,138,252,254,253,253,253,215,31,12,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,253,253,254,253,232,140,31,0,84,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,253,204,136,33,0,0,0,209,253,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,89,131,36,10,0,0,0,0,43,242,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,239,253,138,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,142,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,162,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,100,115,210,246,253,207,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,137,243,251,253,255,253,253,253,227,133,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,80,196,253,253,253,253,254,253,253,253,253,253,168,22,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,253,176,253,253,253,254,191,74,113,184,253,253,137,0,0,0,0,0,0,0,0,0,0,2,118,241,252,145,25,168,253,253,249,166,7,0,0,29,170,252,250,161,0,0,0,0,0,0,0,0,0,53,253,253,144,0,109,253,253,220,70,0,0,0,0,0,0,145,253,223,40,0,0,0,0,0,0,0,0,144,253,253,132,150,239,250,109,17,0,0,0,0,0,0,0,8,223,253,143,0,0,0,0,0,0,0,0,33,220,253,253,253,166,40,0,0,0,0,0,0,0,0,0,0,40,143,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,121,172,172,172,252,253,172,172,172,107,48,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,177,254,254,254,254,254,254,254,254,254,254,254,195,47,0,0,0,0,0,0,0,0,0,0,0,0,3,155,254,254,254,254,239,229,177,229,229,229,249,254,254,194,2,0,0,0,0,0,0,0,0,0,0,0,89,254,254,183,68,57,22,0,0,0,0,0,46,57,128,160,14,0,0,0,0,0,0,0,0,0,0,0,107,254,254,75,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,254,232,192,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,224,254,254,254,254,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,67,107,154,250,254,246,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,172,254,237,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,175,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,206,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,112,0,0,0,0,0,0,0,170,254,250,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,250,91,0,0,0,0,0,86,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,228,74,10,0,15,109,240,255,245,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,254,234,230,236,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,240,254,254,254,254,254,93,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,158,243,254,176,66,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,240,253,252,252,248,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,253,163,242,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,168,252,252,39,2,35,177,252,244,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,248,115,0,0,0,17,211,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,252,140,0,0,0,0,0,102,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,155,252,212,33,0,0,0,0,13,166,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,248,83,0,0,0,0,0,95,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,205,0,0,0,7,140,146,236,252,143,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,224,38,0,0,0,190,252,252,252,146,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,136,0,0,14,253,255,253,253,211,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,188,4,0,68,185,252,202,190,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,66,70,185,243,252,202,14,11,229,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,221,242,252,243,165,19,0,0,226,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,202,94,47,0,0,0,0,226,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,66,66,17,0,0,0,0,0,0,226,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,181,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,255,253,253,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,199,253,224,166,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,202,252,232,40,135,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,70,0,232,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,249,226,59,0,0,232,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,166,253,253,156,43,43,43,237,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,216,253,252,252,252,252,253,252,252,252,226,129,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,252,244,247,231,241,247,252,252,252,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,84,84,49,63,0,35,63,239,252,226,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,230,131,84,177,159,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,247,253,253,253,253,245,144,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,78,78,78,147,243,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,225,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,252,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,59,89,110,152,89,89,89,89,144,253,249,136,89,0,0,0,0,0,0,0,0,0,0,18,66,145,239,245,248,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,61,218,253,245,146,72,72,72,72,72,174,235,253,253,247,175,175,152,72,0,0,0,0,0,0,0,0,126,225,242,199,116,0,0,0,0,0,9,81,222,253,247,128,0,0,0,0,0,0,0,0,0,0,0,0,255,229,41,0,0,0,0,0,2,89,203,253,253,205,57,0,0,0,0,0,0,0,0,0,0,0,0,0,36,23,0,0,0,0,0,0,1,36,36,36,36,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,3,0,0,0,0,0,100,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,99,0,0,0,0,0,100,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,222,0,0,0,0,0,17,240,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,203,247,52,0,0,0,0,0,136,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,245,34,0,0,0,0,0,109,209,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,241,0,0,0,0,0,0,23,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,236,0,0,0,0,0,0,23,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,131,0,0,0,6,45,45,111,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,236,221,187,187,187,197,252,252,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,252,252,252,253,252,252,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,253,253,253,255,230,177,233,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,252,252,172,23,0,132,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,86,44,44,0,0,0,132,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,219,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,193,173,253,254,151,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,253,252,253,232,183,203,203,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,254,253,123,183,254,253,254,253,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,171,0,20,112,192,253,252,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,0,0,0,62,254,253,254,233,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,252,142,20,0,183,253,252,151,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,254,91,132,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,203,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,253,254,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,171,112,232,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,183,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,212,20,0,0,203,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,213,0,0,0,102,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,41,0,0,102,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,173,10,0,163,234,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,212,163,243,233,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,255,253,255,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,151,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,173,253,254,172,92,253,102,61,153,112,52,31,0,0,0,0,0,0,0,0,82,0,0,0,0,0,92,252,253,252,253,252,192,192,203,243,253,252,192,131,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,254,233,203,20,0,0,0,123,255,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,253,252,253,70,20,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,233,41,0,0,0,0,0,11,173,255,253,102,0,0,0,0,0,0,0,0,0,0,0,163,243,253,252,213,30,0,0,0,0,0,41,173,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,254,253,254,172,0,0,0,0,0,41,173,253,254,253,244,122,0,0,0,0,0,0,0,0,0,0,0,82,253,252,131,10,0,0,0,82,163,243,253,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,234,152,152,152,254,253,254,253,244,223,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,253,252,253,252,253,252,233,151,122,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,253,254,253,254,233,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,252,192,151,151,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,29,136,164,254,255,254,249,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,86,156,253,253,253,253,253,253,253,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,179,253,253,253,253,216,109,82,189,252,253,123,15,0,0,0,0,0,0,0,0,0,0,0,0,0,40,207,253,253,187,213,108,20,0,0,32,250,253,253,207,189,26,0,0,0,0,0,0,0,0,0,0,0,54,253,253,125,4,21,0,0,0,75,217,253,253,253,253,224,23,0,0,0,0,0,0,0,0,0,0,0,158,253,174,4,0,0,0,103,225,249,253,248,147,70,29,20,0,0,0,0,0,0,0,0,0,0,0,0,169,253,250,31,1,18,199,250,253,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,206,144,253,253,253,246,130,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,253,253,253,253,253,244,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,253,253,253,141,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,169,253,253,253,253,253,217,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,213,161,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,161,27,1,100,253,248,195,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,251,121,1,0,0,1,156,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,200,0,0,0,0,0,18,209,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,210,12,0,0,0,0,0,177,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,168,12,0,0,0,42,197,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,169,49,80,95,234,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,253,253,239,252,253,253,253,176,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,50,232,253,253,253,234,108,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,118,193,118,118,118,118,118,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,254,254,254,254,254,254,248,235,133,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,213,254,254,254,254,254,254,254,254,228,214,214,84,77,35,64,0,0,0,0,0,0,0,0,0,0,29,61,28,61,61,61,61,196,219,254,254,254,254,254,254,254,221,245,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,82,82,172,220,237,254,254,254,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,103,235,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,107,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,254,251,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,91,191,228,228,228,239,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,254,254,254,254,254,254,254,200,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,68,169,232,206,230,254,254,243,109,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,5,209,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,221,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,181,254,254,217,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,254,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,117,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,92,179,42,0,0,0,0,6,215,253,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,252,84,0,0,0,0,134,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,244,49,0,0,0,9,204,252,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,254,253,152,0,0,0,0,39,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,253,153,5,0,0,0,0,162,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,246,252,206,5,0,0,0,0,8,234,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,106,0,0,0,0,0,85,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,18,0,0,0,0,0,173,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,253,237,148,148,148,148,166,253,253,253,209,166,253,100,0,0,0,0,0,0,0,0,0,0,0,21,237,252,252,253,252,252,252,252,253,252,252,252,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,252,252,252,253,252,252,247,240,232,196,72,0,0,0,0,0,0,0,0,0,0,0,0,86,189,189,200,252,247,231,252,253,252,212,63,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,38,28,129,253,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,255,253,236,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,253,252,201,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,128,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,128,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,64,128,191,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,219,253,255,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,224,252,252,253,252,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,249,148,89,88,88,165,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,136,0,0,0,0,120,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,59,0,0,0,49,158,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,252,195,178,31,153,226,252,252,230,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,189,252,252,252,253,252,252,252,132,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,194,252,252,253,252,252,139,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,253,252,252,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,246,252,252,253,252,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,173,61,0,148,253,253,209,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,213,252,177,10,0,0,11,143,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,244,65,0,0,0,0,15,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,118,0,0,0,0,0,15,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,248,225,14,0,0,0,0,0,7,173,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,248,222,0,0,0,0,0,61,183,252,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,238,63,0,0,0,134,231,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,252,165,90,116,238,253,252,193,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,203,252,252,252,252,252,253,179,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,252,252,252,163,104,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,221,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,250,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,209,254,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,254,221,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,249,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,224,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,236,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,249,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,253,230,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,186,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,125,174,187,255,255,217,125,125,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,253,253,253,253,253,253,222,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,253,253,253,253,253,253,253,251,221,40,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,253,218,235,253,253,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,77,251,253,213,106,25,17,21,62,155,228,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,99,19,36,206,222,115,92,126,245,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,217,253,253,253,253,253,253,253,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,246,253,253,253,253,253,253,253,253,253,208,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,253,253,253,253,248,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,211,253,253,253,253,253,253,253,253,253,253,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,175,128,91,65,65,92,194,234,253,253,253,210,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,188,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,236,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,27,0,0,0,0,0,0,0,0,156,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,223,124,7,0,0,0,0,6,117,219,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,48,237,253,253,176,124,27,27,27,62,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,253,253,253,253,253,253,253,253,253,253,253,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,253,253,253,253,253,253,253,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,247,252,253,253,253,253,253,253,249,169,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,123,220,253,253,166,123,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,129,253,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,247,252,252,253,180,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,253,252,252,252,253,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,252,252,252,253,252,215,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,118,0,83,253,252,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,35,35,5,0,0,128,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,227,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,231,252,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,255,211,109,47,0,0,182,253,255,119,0,0,0,0,0,0,0,0,0,0,0,63,242,210,179,200,210,252,253,252,252,232,218,217,242,252,253,119,0,0,0,0,0,0,0,0,0,0,0,63,241,211,21,21,31,71,217,215,221,252,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,181,252,205,104,0,0,0,0,16,190,253,252,252,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,170,255,128,129,253,255,253,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,26,179,210,252,252,252,253,252,252,252,253,231,190,252,253,200,21,0,0,0,0,0,0,0,0,0,0,0,0,0,31,71,71,154,217,215,215,215,154,51,11,154,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,92,152,152,193,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,233,252,253,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,152,254,233,142,102,0,0,41,243,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,233,212,131,30,0,0,0,0,0,203,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,102,244,203,82,0,0,0,0,0,0,0,0,203,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,20,122,0,0,0,0,0,0,0,0,0,21,223,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,232,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,160,130,130,27,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,253,165,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,240,204,111,213,253,253,253,210,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,31,0,0,31,144,249,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,216,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,131,161,191,253,253,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,71,231,253,253,253,217,164,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,72,228,253,253,253,239,104,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,211,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,253,253,253,109,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,146,233,253,253,169,69,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,233,253,253,253,105,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,234,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,208,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,187,245,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,231,253,253,253,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,106,191,246,253,253,222,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,112,188,247,253,253,253,253,135,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,230,109,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,174,129,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,111,150,167,255,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,142,234,253,253,253,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,253,253,253,253,247,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,244,253,253,253,253,253,253,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,192,227,163,207,232,253,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,247,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,37,160,241,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,63,151,253,253,253,253,253,234,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,215,253,253,253,253,253,253,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,224,253,253,253,253,253,253,253,189,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,223,253,253,253,253,253,253,253,253,185,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,251,212,212,212,228,253,253,253,241,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,58,0,0,0,99,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,253,253,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,226,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,150,249,253,253,253,201,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,140,210,253,253,253,253,198,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,251,253,253,253,253,247,120,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,253,205,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,204,125,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,8,0,0,0,0,51,255,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,94,50,40,26,0,0,0,33,221,253,25,0,0,0,0,0,0,0,0,0,0,0,0,7,118,140,174,149,217,116,0,0,0,0,6,154,221,82,1,0,0,0,0,0,0,0,0,0,0,0,0,124,253,219,226,84,0,0,0,0,0,0,119,224,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,86,12,14,0,0,0,0,0,6,149,230,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,192,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,165,250,115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,239,201,0,0,0,0,0,0,1,76,198,124,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,215,16,0,0,0,0,7,85,122,253,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,99,247,109,0,0,0,0,0,72,253,253,227,155,217,128,0,0,0,0,0,0,0,0,0,0,0,0,0,176,136,2,0,0,0,41,181,252,160,56,37,11,252,91,0,0,0,0,0,0,0,0,0,0,0,0,20,235,99,0,0,0,0,181,253,194,18,0,0,90,253,46,0,0,0,0,0,0,0,0,0,0,0,0,95,245,27,0,0,0,94,253,116,7,0,0,49,231,187,3,0,0,0,0,0,0,0,0,0,0,0,0,234,181,0,0,0,0,69,158,18,0,0,122,230,250,65,0,0,0,0,0,0,0,0,0,0,0,0,0,234,181,0,0,0,5,136,4,0,12,128,251,248,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,230,76,0,2,148,181,68,104,215,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,251,218,219,253,253,253,253,253,246,99,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,181,253,253,253,253,253,253,234,183,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,95,218,253,253,253,194,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,210,106,106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,60,211,246,253,253,253,253,253,159,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,233,253,254,253,253,253,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,254,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,254,235,169,29,29,188,253,253,248,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,223,223,162,57,0,0,9,188,253,253,248,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,253,253,232,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,206,253,253,210,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,107,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,198,253,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,176,254,254,254,217,35,0,0,0,0,0,0,0,0,0,0,0,0,0,54,78,209,209,209,122,61,60,160,253,253,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,108,164,243,253,253,253,253,253,254,253,253,253,253,233,89,5,0,0,0,0,0,0,0,0,0,0,0,29,206,253,253,253,253,253,253,253,254,253,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,231,72,29,197,253,253,254,253,253,253,186,9,0,0,0,0,0,0,0,0,0,0,0,0,75,240,253,253,99,48,179,206,253,253,255,253,253,253,187,9,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,253,253,254,253,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,253,200,164,184,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,229,155,59,24,0,148,253,253,253,246,194,11,0,0,0,0,0,0,0,0,0,0,43,104,201,253,209,104,49,0,0,0,0,25,113,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,163,241,254,202,255,182,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,132,235,238,146,108,69,5,44,128,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,250,151,58,0,0,0,0,0,0,0,0,0,24,49,0,0,0,0,0,0,0,0,0,0,0,0,56,245,125,0,0,0,0,0,0,0,0,0,0,0,156,179,0,0,0,0,0,0,0,0,0,0,0,0,235,227,16,0,0,0,0,0,0,0,0,0,0,0,73,218,13,0,0,0,0,0,0,0,0,0,0,0,236,185,0,0,0,0,0,0,0,0,0,0,0,0,99,254,36,0,0,0,0,0,0,0,0,0,0,0,183,250,89,0,0,0,0,0,0,0,0,0,0,20,215,253,36,0,0,0,0,0,0,0,0,0,0,0,40,222,244,36,0,0,0,0,0,0,0,6,115,230,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,40,230,214,141,57,19,51,19,45,109,162,251,137,143,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,57,136,254,253,253,253,253,254,253,175,86,0,73,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,91,91,91,92,7,0,0,0,73,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,250,144,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,249,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,172,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,191,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,94,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,185,206,15,0,0,0,64,111,186,231,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,183,91,128,228,228,243,254,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,254,254,254,254,254,209,185,118,207,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,207,206,94,68,24,0,0,28,230,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,52,226,254,169,2,0,0,0,0,0,0,0,206,254,213,0,0,0,0,0,0,0,0,0,0,0,0,3,195,254,243,53,0,0,0,0,0,0,0,0,162,254,213,0,0,0,0,0,0,0,0,0,0,0,0,77,254,238,53,0,0,0,0,0,0,0,0,0,221,254,213,0,0,0,0,0,0,0,0,0,0,0,0,208,254,163,0,0,0,0,0,0,0,0,0,0,90,254,213,0,0,0,0,0,0,0,0,0,0,0,0,70,67,11,0,0,0,0,0,0,0,0,0,0,84,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,191,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,162,254,156,25,0,0,0,0,0,0,0,0,0,0,0,0,0,5,112,145,106,25,25,25,25,25,42,218,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,253,253,254,253,253,253,253,253,241,77,0,0,0,0,0,0,0,0,0,0,0,0,7,186,253,253,253,253,253,253,254,253,253,253,242,170,56,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,204,193,193,77,135,227,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,253,198,12,0,0,0,4,176,253,124,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,140,0,0,0,0,111,253,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,201,9,0,0,0,0,238,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,232,110,0,0,0,0,162,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,11,9,0,0,0,0,0,242,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,243,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,225,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,120,244,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,170,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,244,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,141,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,254,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,253,183,128,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,180,253,185,8,20,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,185,14,0,20,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,254,95,0,0,80,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,171,10,0,0,118,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,247,54,0,0,0,118,253,91,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,218,0,0,0,16,103,253,253,238,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,135,0,0,0,23,5,88,155,230,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,84,0,0,0,0,17,147,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,209,79,48,79,102,211,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,238,253,253,245,253,244,216,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,140,155,155,155,45,58,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,247,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,45,3,0,21,255,232,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,224,253,57,0,202,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,133,0,249,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,160,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,76,253,237,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,180,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,111,253,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,160,243,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,106,238,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,251,253,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,241,253,251,173,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,237,253,227,80,64,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,44,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,203,6,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,253,105,10,197,253,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,238,253,226,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,145,254,255,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,25,83,254,253,253,253,253,222,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,177,253,253,254,253,248,241,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,238,253,253,253,206,135,72,169,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,213,201,222,77,0,0,56,230,253,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,9,29,0,0,54,231,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,181,253,253,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,137,218,218,218,254,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,248,253,253,253,253,254,253,253,253,237,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,253,254,184,149,253,253,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,242,242,242,190,122,0,0,0,0,183,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,230,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,27,182,182,182,141,9,0,0,0,0,9,155,253,253,192,10,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,253,202,141,73,74,73,99,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,253,253,254,253,253,253,253,194,9,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,224,190,132,190,253,253,254,253,253,253,155,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,253,253,242,253,253,254,253,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,35,219,253,253,253,253,253,249,132,57,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,121,175,102,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,165,202,252,254,254,254,217,127,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,254,254,254,254,254,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,254,186,161,161,161,161,242,144,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,241,58,0,0,0,0,97,218,227,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,169,0,0,0,0,0,0,8,179,226,51,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,254,208,18,0,0,0,0,0,0,0,117,254,92,0,0,0,0,0,0,0,0,0,0,0,0,35,226,254,250,102,0,0,0,0,0,0,0,0,117,254,205,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,135,0,0,0,0,0,0,0,0,0,57,235,251,76,0,0,0,0,0,0,0,0,0,0,0,47,254,254,61,0,0,0,0,0,0,0,0,0,0,76,254,146,0,0,0,0,0,0,0,0,0,0,0,47,254,254,61,0,0,0,0,0,0,0,0,0,0,63,254,146,0,0,0,0,0,0,0,0,0,0,0,47,254,254,61,0,0,0,0,0,0,0,0,0,0,63,254,146,0,0,0,0,0,0,0,0,0,0,0,47,254,254,61,0,0,0,0,0,0,0,0,0,0,63,254,146,0,0,0,0,0,0,0,0,0,0,0,47,254,254,71,0,0,0,0,0,0,0,0,0,0,72,254,137,0,0,0,0,0,0,0,0,0,0,0,47,254,254,216,0,0,0,0,0,0,0,0,0,54,234,247,0,0,0,0,0,0,0,0,0,0,0,0,7,128,253,249,99,0,0,0,0,0,0,18,72,234,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,254,204,17,3,0,8,8,84,188,254,254,248,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,148,109,242,254,254,254,254,205,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,171,254,254,254,254,254,254,254,240,191,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,100,151,254,255,254,240,100,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,77,150,126,47,111,150,150,229,254,254,255,254,250,117,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,253,253,253,253,253,253,253,253,241,117,0,0,0,0,0,0,0,0,0,0,0,12,237,253,253,245,217,217,217,217,217,162,114,117,220,253,253,134,0,0,0,0,0,0,0,0,0,0,0,22,67,67,67,51,0,0,0,0,0,0,0,90,253,253,235,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,101,241,253,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,186,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,16,118,209,253,253,252,98,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,184,253,253,253,246,159,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,100,230,253,253,253,212,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,202,253,253,253,213,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,253,253,253,253,253,203,166,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,253,253,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,92,123,139,62,62,62,250,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,72,252,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,73,0,0,0,0,0,0,2,115,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,151,0,0,0,0,2,47,170,253,253,253,238,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,189,105,0,0,20,122,253,253,253,253,198,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,248,218,218,228,253,253,253,251,120,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,241,253,253,253,253,253,216,110,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,164,253,253,181,59,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,236,254,255,185,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,36,55,177,253,253,253,253,253,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,230,202,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,253,253,253,198,83,36,12,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,245,145,47,11,0,0,150,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,26,0,0,0,90,159,253,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,98,233,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,142,142,168,253,253,253,247,112,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,253,253,235,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,205,194,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,41,15,38,187,253,235,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,217,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,237,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,103,48,6,0,0,0,12,165,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,191,181,66,66,164,253,253,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,68,235,253,253,253,253,253,253,169,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,122,193,253,253,253,162,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,141,0,0,0,0,0,0,0,0,216,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,57,150,252,252,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,10,85,123,197,253,252,252,252,0,0,0,0,0,0,0,0,203,252,243,225,226,150,113,113,114,188,175,225,229,252,252,252,253,252,252,202,0,0,0,0,0,0,0,0,13,194,253,253,255,253,253,253,254,253,253,253,214,63,76,13,254,253,194,13,0,0,0,0,0,0,0,0,0,19,122,145,222,196,215,202,184,84,84,84,0,0,19,144,253,214,19,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,19,6,0,0,0,0,0,0,85,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,29,16,13,13,10,4,4,179,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,215,207,206,197,178,179,252,252,252,169,119,131,32,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,252,252,252,253,252,252,252,253,252,252,228,0,0,0,0,0,0,0,0,0,0,0,0,16,139,139,40,28,28,65,240,253,227,103,28,28,103,139,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,224,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,70,164,185,0,0,0,0,0,0,0,0,0,0,0,0,0,62,208,208,166,93,94,76,26,93,93,156,216,253,177,56,0,0,0,0,0,0,0,0,0,0,0,0,158,244,253,253,253,253,254,249,237,253,253,254,179,54,4,0,0,0,0,0,0,0,0,0,0,0,0,104,254,243,116,200,178,231,232,157,200,189,116,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,241,253,32,45,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,241,253,253,209,237,241,166,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,253,138,137,222,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,248,136,11,0,0,186,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,207,98,0,0,0,0,185,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,194,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,98,254,206,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,47,47,194,250,186,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,184,184,131,131,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,216,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,252,28,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,253,233,109,191,223,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,241,59,85,252,253,246,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,114,0,0,226,255,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,252,38,0,0,75,146,234,252,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,127,0,0,0,0,0,82,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,206,13,0,0,0,0,0,26,223,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,142,0,0,0,0,0,0,0,197,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,56,0,0,0,0,0,0,19,215,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,202,6,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,197,0,0,0,0,0,0,4,179,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,104,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,38,229,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,221,25,0,0,0,38,225,253,227,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,216,16,29,128,253,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,178,253,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,187,252,252,253,252,186,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,240,190,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,183,105,105,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,220,253,253,253,253,230,209,183,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,29,29,29,118,135,178,249,253,253,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,211,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,174,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,229,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,251,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,131,253,253,215,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,216,253,213,37,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,214,253,253,134,2,18,18,31,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,253,253,141,205,205,254,155,134,134,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,253,253,253,253,253,255,253,253,253,241,239,239,239,197,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,7,104,147,253,253,253,253,253,255,217,104,104,104,104,104,104,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,96,219,255,254,171,150,115,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,236,253,253,253,253,253,253,253,247,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,105,253,253,236,217,215,50,10,10,125,236,251,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,170,245,99,36,0,0,0,0,0,0,135,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,18,0,0,0,0,0,0,0,56,238,245,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,235,245,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,57,239,248,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,144,253,253,187,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,250,248,251,253,202,35,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,38,0,74,220,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,119,253,249,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,111,249,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,119,0,0,0,0,0,0,228,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,182,177,36,0,0,0,0,0,0,24,236,173,11,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,187,0,0,0,0,0,0,37,236,235,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,204,44,0,0,0,0,0,88,215,233,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,245,138,0,0,1,11,11,88,241,217,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,227,161,161,163,242,114,195,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,119,241,185,147,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,242,254,254,254,254,254,157,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,135,239,253,253,253,253,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,253,253,253,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,186,19,194,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,223,45,0,189,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,61,0,0,189,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,45,0,0,189,253,238,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,183,8,0,95,242,253,245,122,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,168,23,109,242,253,253,253,253,230,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,234,213,253,253,253,253,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,216,253,253,253,253,240,194,194,234,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,71,221,253,253,101,0,0,169,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,253,184,20,0,0,169,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,221,253,205,19,0,0,31,226,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,98,0,0,0,130,253,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,51,0,0,33,224,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,62,0,15,135,253,250,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,251,253,222,143,225,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,249,253,253,253,248,156,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,159,152,123,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,111,195,255,171,149,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,242,254,211,191,227,254,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,167,26,9,0,16,129,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,173,9,0,0,0,0,23,232,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,118,0,0,0,0,0,0,170,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,248,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,211,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,50,18,1,65,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,49,195,252,254,159,186,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,210,58,200,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,208,24,0,3,250,254,252,160,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,206,11,0,0,97,253,121,167,254,252,168,84,54,43,47,49,0,0,0,0,0,0,0,0,0,0,0,197,128,0,0,51,215,178,3,7,46,130,213,226,254,246,249,250,219,97,0,0,0,0,0,0,0,0,72,251,116,0,61,201,215,51,0,0,0,0,0,16,49,130,61,121,71,15,0,0,0,0,0,0,0,0,98,254,171,147,241,245,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,213,254,254,214,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,234,253,255,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,221,251,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,253,251,188,127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,244,251,251,251,253,251,251,251,232,223,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,253,253,255,181,158,182,253,255,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,68,228,253,251,251,251,251,161,16,0,64,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,251,172,0,0,0,32,204,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,32,229,251,253,251,251,196,12,0,0,0,16,181,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,89,0,0,0,0,64,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,128,253,253,255,253,126,0,0,0,0,0,124,253,255,253,253,31,0,0,0,0,0,0,0,0,0,0,4,142,251,251,253,207,31,0,0,0,0,96,244,251,253,251,156,8,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,62,0,0,0,0,16,189,251,251,253,235,63,0,0,0,0,0,0,0,0,0,0,0,24,220,251,251,253,62,0,0,0,84,225,251,251,251,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,62,0,0,0,194,251,251,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,253,255,122,0,24,194,255,253,253,253,193,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,220,253,244,190,205,251,253,251,235,180,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,251,251,251,251,253,204,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,114,251,251,251,193,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,158,243,255,254,255,254,187,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,254,227,190,238,254,236,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,239,31,8,6,2,27,238,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,246,238,60,0,0,0,0,19,232,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,196,22,0,0,0,0,0,104,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,0,0,0,0,0,41,232,254,163,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,254,220,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,69,138,214,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,144,250,254,254,254,254,254,189,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,245,165,125,53,80,228,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,81,34,0,0,0,0,89,254,235,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,244,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,241,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,0,0,0,0,0,0,12,220,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,188,195,1,0,0,2,9,50,172,254,243,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,254,184,177,177,190,254,254,254,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,240,254,254,254,254,211,226,167,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,178,254,237,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192,251,238,227,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,194,254,196,54,76,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,182,10,0,76,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,251,236,7,0,0,128,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,83,0,0,0,60,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,225,0,0,0,0,17,161,241,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,225,0,0,0,65,228,220,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,225,0,0,99,239,197,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,66,127,244,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,233,254,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,238,254,230,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,241,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,240,231,171,254,230,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,195,254,55,8,254,237,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,132,254,150,11,161,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,182,17,147,251,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,240,106,222,254,232,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,254,162,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,73,163,215,254,215,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,74,223,249,253,160,108,121,241,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,108,128,241,232,216,216,184,13,0,0,61,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,157,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,201,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,18,0,0,0,0,12,55,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,217,254,31,0,3,102,186,225,253,250,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,108,29,184,253,235,150,67,139,233,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,192,230,246,98,0,0,0,44,253,207,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,255,254,243,71,0,0,0,0,0,156,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,81,0,0,0,0,0,0,91,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,36,5,0,0,0,0,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,232,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,234,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,191,250,249,166,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,76,192,241,253,234,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,19,45,193,207,253,253,183,93,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,254,253,175,124,72,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,161,161,161,162,88,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,252,252,252,253,231,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,153,45,150,253,252,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,6,0,0,148,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,245,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,240,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,215,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,24,24,66,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,130,236,252,253,252,252,252,158,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,252,227,215,253,252,252,252,252,206,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,195,29,21,201,252,252,252,252,253,244,124,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,130,0,158,253,252,252,116,75,201,252,252,234,126,53,0,0,0,0,0,0,0,0,0,0,0,0,244,253,169,233,253,255,249,115,0,0,0,74,146,239,253,244,118,17,0,0,0,0,0,0,0,0,0,0,159,252,252,252,231,196,75,0,0,0,0,0,0,34,217,253,252,227,50,0,0,0,0,0,0,0,0,0,184,215,183,141,37,0,0,0,0,0,0,0,0,0,32,79,227,252,227,131,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,77,160,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,247,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,184,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,178,253,253,146,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,178,253,253,185,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,229,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,112,233,253,253,253,185,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,186,254,248,246,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,112,234,253,251,92,182,253,188,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,192,253,253,253,229,223,253,253,212,163,118,88,88,27,0,0,0,0,0,0,0,0,0,0,0,71,169,254,254,254,254,254,255,254,254,254,254,254,254,254,254,193,0,0,0,0,0,0,0,0,0,93,209,252,253,253,253,248,183,183,229,253,236,105,96,96,134,183,234,253,0,0,0,0,0,0,0,0,207,252,253,253,200,108,17,16,0,43,248,253,111,0,0,0,0,0,16,74,0,0,0,0,0,0,0,0,187,220,149,35,4,0,0,0,2,191,254,220,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,13,0,0,0,0,0,0,70,253,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,217,253,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,216,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,179,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,213,254,224,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,219,245,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,116,235,254,254,254,170,103,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,189,254,254,254,254,177,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,143,249,254,254,208,146,251,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,87,205,254,254,250,133,60,17,224,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,166,254,254,254,186,107,0,0,65,232,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,254,254,232,107,5,0,0,0,88,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,243,254,175,8,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,157,241,254,130,13,0,0,0,48,119,201,189,93,16,0,0,0,0,0,0,0,0,0,0,0,0,7,213,254,254,254,97,0,0,0,142,247,254,254,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,210,190,33,0,0,0,201,254,254,254,254,186,15,0,0,0,0,0,0,0,0,0,0,0,15,165,254,177,13,0,0,0,0,21,222,254,254,217,53,16,0,0,0,0,0,0,0,0,0,0,0,0,34,225,242,138,0,0,0,0,14,100,232,254,236,182,5,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,113,0,0,0,0,23,158,255,254,221,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,76,0,0,0,86,227,254,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,204,141,176,250,253,254,238,175,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,235,254,254,254,254,254,163,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,254,220,95,38,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,8,0,0,0,0,0,0,0,78,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,181,0,0,0,0,0,0,46,228,124,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,214,0,0,0,0,0,0,129,240,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,236,224,7,0,0,0,0,5,199,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,153,0,0,0,0,0,94,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,221,223,44,0,0,0,0,13,207,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,165,0,0,0,0,0,128,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,223,254,121,0,0,0,0,0,188,247,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,214,22,0,0,0,0,62,253,154,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,230,248,76,0,0,0,0,25,222,243,62,9,27,27,27,34,77,27,0,0,0,0,0,0,0,0,21,234,253,191,81,113,175,214,214,224,254,253,218,226,253,254,253,253,253,176,0,0,0,0,0,0,0,0,138,253,253,253,253,254,253,253,253,253,254,207,186,183,120,121,120,120,120,53,0,0,0,0,0,0,0,0,156,254,213,113,67,18,0,0,129,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,13,23,0,0,0,0,15,217,243,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,245,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,193,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,56,55,0,0,71,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,44,127,244,254,254,79,0,71,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,166,254,254,254,254,253,71,0,135,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,254,254,251,197,76,34,0,16,210,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,200,254,254,107,0,0,0,0,116,254,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,225,54,1,0,43,226,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,254,254,254,128,19,192,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,254,254,254,243,254,254,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,76,195,254,254,254,205,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,251,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,200,254,254,254,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,164,195,254,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,254,226,27,112,252,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,171,254,228,37,0,0,188,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,251,105,0,0,0,116,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,214,0,0,0,0,147,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,220,9,0,1,123,252,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,254,205,92,172,254,254,230,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,254,254,228,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,164,254,254,213,92,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,110,136,244,255,227,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,224,253,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,128,253,253,237,200,93,88,231,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,216,253,253,203,72,0,0,9,227,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,245,164,50,0,0,0,109,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,250,251,78,0,0,0,0,98,237,227,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,251,253,131,0,0,0,0,5,231,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,11,0,4,24,60,236,253,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,106,53,175,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,215,253,253,253,253,253,253,253,227,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,163,176,165,71,218,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,90,253,251,115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,246,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,251,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,143,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,198,218,224,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,79,250,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,254,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,235,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,224,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,235,0,0,0,0,0,0,74,95,95,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,176,0,0,0,0,91,244,254,254,255,247,107,0,0,0,0,0,0,0,0,0,0,0,0,0,5,168,254,57,0,0,0,168,255,254,238,216,188,254,213,5,0,0,0,0,0,0,0,0,0,0,0,0,10,254,252,45,0,0,65,239,254,235,89,0,48,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,7,229,220,14,0,74,228,254,207,51,0,0,48,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,186,16,247,254,183,7,0,2,111,232,254,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,250,223,254,230,12,5,69,188,254,250,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,245,144,199,254,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,184,254,254,254,254,254,254,192,75,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,162,253,254,254,255,179,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,243,159,101,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,29,0,0,0,0,29,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,57,0,0,0,29,141,226,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,141,0,0,0,86,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,0,86,255,255,226,57,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,86,0,0,0,170,226,141,29,0,0,114,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,86,0,0,29,226,141,0,0,86,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,198,86,0,29,255,170,114,170,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,255,255,255,255,255,226,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,226,255,226,170,170,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,131,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,253,231,137,85,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,232,238,252,252,244,128,48,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,111,189,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,192,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,85,85,137,206,252,253,110,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,228,253,252,252,252,252,30,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,190,189,189,205,252,142,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,235,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,226,242,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,212,28,0,0,0,0,0,0,0,0,0,18,141,211,140,18,0,0,0,0,0,0,0,0,0,0,148,252,170,0,0,0,0,0,0,0,0,0,0,105,227,253,253,253,254,218,148,148,148,43,43,43,14,80,210,253,147,43,25,0,0,0,0,0,0,0,0,209,252,210,141,63,81,196,252,252,252,253,252,252,211,242,253,252,252,252,191,0,0,0,0,0,0,0,0,144,247,225,22,22,0,7,21,21,65,122,252,252,252,252,214,126,118,21,12,0,0,0,0,0,0,0,0,0,163,252,252,252,169,169,169,169,169,253,252,247,162,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,95,173,252,253,252,252,252,252,147,112,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,166,231,231,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,248,137,217,250,103,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,134,55,186,115,239,161,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,251,44,2,52,0,58,238,193,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,246,0,0,0,0,57,195,254,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,180,0,0,0,0,71,246,254,254,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,95,0,0,0,0,0,126,254,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,15,0,0,0,0,0,19,172,246,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,224,222,8,0,0,0,0,0,0,0,152,246,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,145,0,0,0,0,0,0,0,0,0,145,251,42,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,62,0,0,0,0,0,0,0,0,0,19,244,69,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,38,0,0,0,0,0,0,0,0,0,63,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,247,220,5,0,0,0,0,0,0,0,0,0,207,246,0,0,0,0,0,0,0,0,0,0,0,0,0,52,251,187,0,0,0,0,0,0,0,0,0,118,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,104,0,0,0,0,0,0,0,0,83,239,214,8,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,62,0,0,0,0,0,0,0,100,239,195,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,90,0,0,0,0,0,36,136,252,192,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,239,243,78,2,0,16,102,234,239,111,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,241,254,211,208,232,254,186,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,184,254,254,190,84,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,241,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,241,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,213,213,213,234,253,252,237,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,238,252,252,252,252,253,252,252,235,200,200,168,0,0,0,0,0,0,0,0,0,0,0,187,186,186,186,238,252,252,252,252,252,253,252,252,252,252,252,241,167,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,252,160,161,252,252,252,252,252,252,243,164,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,159,44,44,159,252,252,252,252,252,252,238,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,151,106,45,0,0,45,159,252,252,252,252,252,246,146,0,0,0,0,0,0,0,0,253,252,252,252,252,153,38,0,0,0,0,0,45,119,154,252,252,252,252,252,0,0,0,0,0,0,0,0,255,253,253,253,253,154,38,0,0,0,0,0,0,0,68,253,253,253,253,253,0,0,0,0,0,0,0,0,253,252,252,252,252,252,152,39,0,0,0,46,107,107,145,252,252,252,252,252,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,151,94,94,94,160,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,173,248,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,248,172,0,0,0,0,0,0,0,0,0,240,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,245,175,0,0,0,0,0,0,0,0,0,0,189,198,244,252,252,252,252,252,252,253,252,252,252,252,252,243,177,0,0,0,0,0,0,0,0,0,0,0,0,0,179,244,252,252,252,252,252,253,252,237,212,212,212,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,225,225,225,225,225,226,225,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,166,207,207,155,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,252,241,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,253,253,253,253,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,252,218,244,252,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,184,175,120,240,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,122,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,200,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,243,255,253,253,234,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,103,252,252,253,252,218,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,155,252,252,252,253,252,119,44,0,38,70,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,253,252,252,236,207,233,252,219,207,207,208,207,207,207,155,0,0,0,0,0,0,0,0,243,252,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,252,95,0,0,0,0,0,0,0,0,231,245,253,253,253,255,249,230,230,230,221,116,116,116,116,116,116,63,116,11,0,0,0,0,0,0,0,0,0,80,206,112,92,92,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,125,141,254,177,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,118,212,249,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,148,244,253,253,253,253,253,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,241,253,253,253,178,126,19,103,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,212,249,253,253,177,58,7,18,119,244,253,246,68,0,0,0,0,0,0,0,0,0,0,0,0,0,138,234,253,253,178,58,8,0,67,188,253,253,230,29,0,0,0,0,0,0,0,0,0,0,0,0,0,138,250,253,253,137,7,0,22,85,206,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,71,33,79,116,220,253,253,253,253,186,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,209,219,253,253,253,253,253,253,185,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,253,253,253,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,249,253,253,233,194,241,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,71,71,47,57,239,253,253,122,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,200,253,253,189,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,253,253,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,244,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,241,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,243,253,253,197,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,189,253,253,205,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,247,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,244,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,241,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,193,76,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,217,192,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,218,124,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,133,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,243,253,253,253,253,253,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,47,167,253,253,253,253,253,253,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,168,253,253,253,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,47,181,209,253,253,248,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,189,253,253,253,253,191,144,89,7,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,131,253,253,253,253,253,253,253,253,253,253,221,125,47,0,0,0,0,0,0,0,0,0,0,0,73,241,242,253,253,253,253,253,253,253,253,253,253,253,253,253,234,104,0,0,0,0,0,0,0,0,0,0,195,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,208,0,0,0,0,0,0,0,0,0,24,223,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,237,25,0,0,0,0,0,0,0,0,0,97,253,253,253,253,253,253,253,253,253,253,230,212,212,212,212,137,194,0,0,0,0,0,0,0,0,0,0,37,228,253,253,253,253,233,184,96,96,96,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,116,116,116,116,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,114,0,0,0,0,57,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,57,0,0,0,141,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,29,0,0,0,198,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,57,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,57,0,0,0,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,0,198,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,86,0,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,29,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,57,0,0,29,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,86,141,170,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,170,170,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,229,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,209,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,145,0,0,0,0,0,76,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,226,18,0,0,0,0,27,238,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,199,0,0,0,0,0,0,200,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,238,59,0,0,0,0,0,200,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,241,93,21,0,0,0,201,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,77,242,241,121,4,0,200,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,101,241,220,140,227,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,158,238,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,255,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,234,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,170,170,226,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,255,255,255,255,255,255,198,29,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,226,255,255,141,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,86,0,0,0,86,255,255,57,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,141,255,255,29,0,0,0,114,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,170,255,114,0,0,57,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,29,226,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,226,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,255,255,255,255,170,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,255,255,255,170,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,226,198,255,170,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,114,0,86,255,198,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,141,0,0,86,255,170,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,57,255,170,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,226,255,170,0,0,0,114,255,170,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,29,114,255,255,114,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,57,255,255,198,170,255,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,255,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,226,170,141,86,0,0,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,148,192,254,218,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,221,252,182,168,231,247,163,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,242,56,4,0,16,172,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,231,0,0,0,0,22,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,231,0,0,0,0,22,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,200,7,0,0,39,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,77,0,64,221,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,128,252,244,128,213,251,91,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,253,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,255,253,236,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,252,94,63,170,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,189,239,233,56,4,0,43,233,247,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,231,51,0,0,0,0,57,252,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,124,0,0,0,0,0,13,173,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,230,27,0,0,0,0,0,0,27,167,193,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,225,21,0,0,0,0,0,0,0,106,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,202,119,66,22,39,83,30,162,241,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,128,200,252,252,252,252,253,252,252,252,155,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,51,147,191,236,147,50,42,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,231,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,218,253,248,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,251,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,249,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,241,33,54,156,97,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,186,253,191,45,234,253,253,179,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,201,175,253,253,253,253,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,253,219,81,232,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,253,57,0,95,253,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,216,15,0,163,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,206,21,140,247,253,247,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,253,253,253,253,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,253,253,253,253,253,253,188,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,244,118,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,218,253,253,170,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,111,236,254,254,190,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,163,221,253,253,131,77,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,242,253,254,227,111,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,253,253,179,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,176,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,228,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,132,248,254,155,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,255,253,228,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,197,254,245,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,242,253,203,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,249,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,181,253,241,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,180,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,194,194,21,79,122,218,245,253,249,79,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,253,253,253,229,180,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,250,176,176,80,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,167,215,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,92,152,233,254,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,233,252,233,151,151,232,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,142,61,0,0,51,233,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,90,0,0,0,0,193,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,123,0,0,0,0,0,254,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,0,0,0,0,0,123,253,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,102,0,0,0,72,253,203,223,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,203,61,0,82,233,212,20,203,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,254,253,254,253,203,20,11,213,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,151,151,111,20,0,51,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,226,254,173,159,255,254,254,254,201,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,220,253,253,253,239,122,38,28,91,138,244,162,2,0,0,0,0,0,0,0,0,0,0,0,0,0,70,221,252,211,253,189,35,0,0,0,0,0,130,253,121,0,0,0,0,0,0,0,0,0,0,0,0,3,194,253,171,85,215,13,0,0,0,0,0,0,14,231,196,0,0,0,0,0,0,0,0,0,0,0,0,10,253,209,28,38,122,0,0,0,0,0,0,0,28,220,196,0,0,0,0,0,0,0,0,0,0,0,0,87,253,112,0,0,0,0,0,0,0,0,0,4,158,253,120,0,0,0,0,0,0,0,0,0,0,0,0,169,253,112,0,0,0,0,0,0,0,0,0,114,253,224,34,0,0,0,0,0,0,0,0,0,0,0,0,197,253,77,0,0,0,0,0,0,0,0,101,242,157,6,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,112,0,0,0,0,0,0,40,160,240,132,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,112,0,0,0,0,0,25,235,253,190,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,236,114,0,0,0,25,255,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,167,244,194,76,59,235,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,87,246,253,253,121,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,254,129,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,226,18,43,126,207,79,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,224,0,0,0,23,215,192,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,224,0,0,0,0,103,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,231,36,0,0,6,216,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,239,123,171,217,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,134,184,169,155,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,87,118,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,47,89,150,253,252,186,120,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,172,252,252,252,253,252,252,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,210,137,23,22,190,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,219,252,235,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,248,253,252,101,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,146,248,252,243,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,24,24,87,212,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,68,228,252,252,253,252,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,174,253,252,252,252,252,253,252,252,252,252,247,99,0,0,0,0,0,0,0,0,0,0,0,0,17,124,244,252,253,252,252,252,252,253,193,160,160,244,253,223,25,0,0,0,0,0,0,0,0,0,0,0,151,252,252,252,253,252,252,252,252,23,8,0,0,73,201,252,152,21,0,0,0,0,0,0,0,0,0,76,212,253,253,253,255,253,253,140,11,0,0,0,0,0,74,230,199,21,0,0,0,0,0,0,0,0,0,159,252,252,252,252,253,223,123,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,252,252,173,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,176,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,57,155,239,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,210,235,253,251,248,253,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,137,249,254,190,187,68,179,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,250,120,1,11,143,248,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,246,254,116,0,15,188,254,253,253,215,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,220,77,107,193,253,254,253,253,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,253,254,253,253,254,187,253,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,213,213,137,114,34,24,133,253,169,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,224,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,192,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,235,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,192,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,186,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,156,247,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,199,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,31,127,127,233,247,252,247,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,206,252,252,252,253,252,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,243,253,225,211,212,211,170,253,253,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,63,21,0,0,0,6,89,239,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,192,111,0,0,0,0,64,253,255,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,252,210,85,0,0,16,206,252,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,171,127,226,252,252,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,239,252,252,253,252,252,252,226,115,0,0,0,0,0,0,0,16,126,0,0,0,0,0,0,0,0,0,0,47,217,252,253,252,252,252,235,194,71,0,0,0,0,0,9,142,191,0,0,0,0,0,0,0,0,0,0,0,0,89,175,253,253,253,253,255,253,253,253,253,255,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,11,63,159,189,252,253,252,252,252,252,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,65,127,205,231,231,231,232,231,178,56,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,214,254,255,142,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,159,240,249,201,239,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,196,254,252,64,0,77,252,215,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,251,89,0,0,0,225,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,220,254,121,0,0,0,30,237,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,239,29,0,0,0,165,254,233,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,156,0,0,0,70,217,254,196,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,137,0,17,119,246,254,216,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,176,0,137,254,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,192,237,111,246,254,254,211,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,245,232,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,147,80,247,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,170,254,254,172,6,0,203,227,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,233,30,0,0,137,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,227,254,225,204,0,0,0,63,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,116,14,0,0,0,55,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,54,0,0,0,0,78,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,235,254,140,15,0,0,40,199,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,248,246,246,250,254,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,68,152,210,254,254,237,152,13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,191,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,197,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,140,47,47,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,252,227,184,185,111,70,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,252,252,252,253,252,252,215,103,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,232,22,22,65,137,137,137,221,252,252,231,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,244,61,0,0,0,0,0,0,43,178,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,214,13,0,0,0,0,0,17,193,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,222,252,202,142,70,70,70,101,209,252,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,252,252,252,252,253,252,252,252,252,140,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,137,179,252,253,252,221,137,32,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,198,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,0,29,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,226,29,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,198,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,57,57,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,0,0,0,0,0,0,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,141,0,0,0,0,0,0,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,141,0,0,0,0,0,0,141,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,141,0,0,0,0,0,0,114,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,0,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,0,0,0,0,0,0,170,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,0,0,0,0,0,0,170,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,0,0,0,0,0,57,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,170,0,0,0,0,141,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,114,0,0,114,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,195,229,161,161,161,162,161,153,104,104,70,70,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,253,253,253,254,253,253,253,254,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,105,230,230,230,187,137,138,137,137,137,138,154,230,246,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,169,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,118,30,0,0,0,71,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,220,18,0,0,0,71,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,214,0,0,0,0,131,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,214,0,0,0,0,137,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,214,0,0,0,0,136,253,79,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,214,0,0,0,0,136,253,119,59,126,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,238,180,156,187,210,244,253,254,253,168,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,254,255,251,245,254,181,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,136,118,83,59,49,136,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,243,101,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,218,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,165,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,253,253,253,249,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,160,253,253,253,253,253,89,0,0,0,0,0,13,70,0,0,0,0,0,0,0,0,0,0,0,0,12,157,253,253,253,155,99,98,22,0,0,0,0,48,202,248,119,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,86,9,0,0,0,0,0,0,30,162,253,253,234,0,0,0,0,0,0,0,0,0,0,0,130,253,253,175,3,0,0,0,0,0,7,70,240,253,253,252,110,0,0,0,0,0,0,0,0,0,0,0,56,253,253,123,0,0,0,0,15,130,190,253,253,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,250,114,12,30,136,248,253,253,253,217,110,6,3,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,230,234,253,253,253,253,217,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,75,253,253,253,253,253,253,253,214,118,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,151,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,253,253,253,241,226,226,246,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,155,253,253,249,175,62,0,0,186,253,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,236,53,0,0,0,0,186,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,231,55,0,0,0,0,122,250,253,247,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,153,0,0,0,0,123,247,253,244,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,235,46,0,0,33,196,248,253,241,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,190,42,42,124,217,253,253,242,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,253,253,253,253,253,186,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,243,253,253,234,116,116,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,239,255,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,254,254,254,245,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,245,120,33,198,254,214,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,128,253,254,231,22,0,18,242,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,241,247,40,0,0,169,254,224,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,251,40,47,0,0,0,102,253,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,254,92,0,0,0,0,0,0,246,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,4,0,0,0,0,0,0,220,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,234,3,0,0,0,0,0,0,208,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,122,0,0,0,0,0,0,43,250,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,244,253,70,0,0,0,0,0,1,164,254,247,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,245,0,0,0,0,0,0,49,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,245,0,0,0,0,0,48,234,254,171,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,245,0,0,0,0,10,214,254,171,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,190,0,0,0,60,184,254,171,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,155,0,0,154,251,254,174,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,232,0,122,251,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,252,205,253,254,249,142,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,246,254,254,254,246,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,167,254,140,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,32,59,46,58,156,246,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,229,235,253,245,247,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,254,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,235,253,253,237,214,130,117,26,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,110,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,128,12,20,58,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,253,185,178,253,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,253,253,253,253,254,244,234,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,253,253,253,253,254,253,253,244,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,254,254,199,195,158,195,236,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,234,188,106,3,0,0,0,27,143,248,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,217,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,104,23,0,0,0,0,0,58,224,254,254,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,7,235,253,230,131,118,132,214,178,247,253,253,253,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,253,253,253,253,254,253,253,253,222,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,212,253,254,253,253,253,253,254,250,213,161,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,96,155,200,222,155,155,133,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,121,121,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,108,220,241,241,243,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,25,94,94,94,172,228,229,252,253,253,228,159,159,159,82,13,0,0,0,0,0,0,0,0,0,0,0,111,225,253,253,253,249,173,174,173,124,39,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,245,253,253,207,172,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,203,66,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,193,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,255,233,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,225,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,250,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,144,253,223,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,175,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,105,27,27,27,127,224,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,252,240,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,120,120,120,120,120,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,11,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,0,0,51,66,66,66,66,93,165,228,254,254,209,0,0,0,0,0,0,0,0,0,0,0,6,60,119,235,48,130,247,254,254,254,254,254,254,254,254,254,209,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,209,0,0,0,0,0,0,0,0,0,0,14,176,254,254,251,224,253,254,254,254,224,224,224,224,246,254,254,245,161,0,0,0,0,0,0,0,0,19,198,254,254,254,234,24,160,201,171,127,0,0,0,0,180,156,70,57,0,0,0,0,0,0,0,0,0,205,254,254,254,254,254,244,185,69,17,0,0,0,0,0,10,7,0,0,0,0,0,0,0,0,0,0,0,218,254,254,254,254,254,254,254,254,220,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,70,105,105,105,105,121,223,254,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,210,254,219,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,16,16,16,14,0,0,0,66,254,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,254,254,254,245,170,170,94,146,254,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,254,254,254,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,254,254,254,254,254,254,254,212,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,184,250,254,254,254,254,254,248,178,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,191,254,254,240,164,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,10,10,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,157,255,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,123,206,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,45,213,254,250,244,209,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,242,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,125,251,254,183,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,132,254,244,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,232,254,220,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,244,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,169,0,43,132,132,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,235,128,245,254,254,225,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,240,254,254,245,178,254,254,250,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,51,0,90,243,254,178,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,248,254,156,0,13,113,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,225,0,0,70,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,242,151,151,239,254,237,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,254,254,255,254,253,151,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,255,204,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,34,121,245,187,144,144,144,144,144,144,144,144,144,144,144,19,0,0,0,0,0,0,0,0,0,47,111,184,253,253,253,253,253,253,254,253,253,253,253,253,253,253,253,33,0,0,0,0,0,0,0,0,72,240,253,253,253,253,253,192,154,154,92,190,253,253,253,253,253,192,72,6,0,0,0,0,0,0,0,0,144,253,253,232,97,10,10,4,7,71,244,250,253,251,231,144,68,4,0,0,0,0,0,0,0,0,0,0,65,198,107,42,0,0,0,54,193,253,254,253,207,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,253,253,55,55,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,233,253,250,98,0,3,12,12,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,232,253,253,223,155,155,181,253,253,189,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,164,253,253,253,253,253,254,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,205,143,66,33,100,253,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,254,171,111,77,0,0,0,0,10,190,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,77,7,0,0,0,0,0,0,0,17,215,253,240,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,66,0,0,0,0,0,0,0,0,0,0,0,46,27,0,0,0,0,0,0,0,0,0,5,80,235,253,200,23,0,0,0,0,0,0,0,0,0,0,92,244,207,0,0,0,0,0,0,0,0,35,151,253,253,250,65,0,0,0,0,0,0,0,0,0,0,0,172,253,242,43,0,0,2,12,12,123,199,241,253,253,250,135,0,0,0,0,0,0,0,0,0,0,0,0,55,246,253,189,155,155,172,253,253,255,253,253,253,224,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,253,253,253,253,177,99,66,66,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,215,253,249,143,61,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,18,88,131,153,134,171,220,255,255,201,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,148,213,254,254,254,254,249,190,196,84,79,79,53,0,0,0,0,0,0,0,0,0,0,0,0,0,42,193,254,254,247,241,197,113,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,254,246,130,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,233,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,239,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,130,254,220,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,185,53,42,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,254,254,221,213,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,126,203,203,203,227,254,248,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,147,254,248,133,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,64,0,0,0,0,0,5,138,244,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,212,137,0,0,0,0,0,0,0,165,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,246,6,0,0,0,0,0,0,0,179,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,250,46,0,0,0,0,0,0,63,251,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,214,99,76,44,59,87,158,205,254,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,229,254,254,254,250,252,254,254,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,87,141,155,254,217,170,170,129,45,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,198,222,197,197,198,197,197,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,253,252,252,252,253,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,216,241,253,163,57,253,128,255,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,214,47,84,88,57,252,153,253,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,130,0,0,38,95,214,40,231,56,56,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,113,101,225,138,243,252,28,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,254,253,253,253,41,216,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,252,252,252,253,252,187,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,246,253,252,252,202,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,28,53,103,78,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,16,104,141,116,0,0,0,0,0,7,16,229,254,247,187,13,0,0,0,0,0,0,0,0,0,0,0,0,166,252,170,9,0,0,0,0,70,187,215,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,122,10,0,57,85,185,253,252,252,177,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,228,226,243,252,252,253,227,139,15,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,254,253,253,178,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,196,196,221,253,240,158,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,56,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,251,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,197,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,209,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,241,254,125,156,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,225,34,2,189,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,210,249,101,0,0,70,253,247,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,141,0,0,0,17,192,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,59,0,0,0,0,60,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,14,0,0,0,0,16,253,248,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,233,237,12,0,0,0,0,16,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,168,0,0,0,0,0,16,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,168,0,0,0,0,0,16,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,168,0,0,0,0,0,21,253,187,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,103,0,0,0,0,0,142,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,232,165,2,0,0,0,54,249,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,14,0,0,34,160,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,68,0,21,164,254,246,92,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,229,202,55,226,253,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,251,250,254,233,109,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,193,134,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,130,250,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,182,249,203,202,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,213,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,225,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,233,7,0,0,0,0,0,0,26,186,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,202,56,0,0,0,0,0,0,107,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,169,201,0,0,0,0,0,14,190,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,179,250,153,15,0,0,0,62,254,241,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,154,57,15,110,233,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,231,254,254,254,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,128,177,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,224,236,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,220,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,181,242,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,216,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,148,253,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,250,254,254,158,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,139,249,254,254,156,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,231,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,249,254,230,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,249,254,230,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,249,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,254,155,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,254,155,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,32,0,0,0,0,0,11,53,53,53,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,254,254,32,0,0,0,70,177,193,254,254,254,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,243,254,254,32,0,13,144,235,254,254,254,254,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,49,12,169,254,254,247,128,91,91,196,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,254,219,190,254,254,214,75,0,0,0,83,255,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,254,254,254,254,122,0,0,0,0,33,255,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,254,254,254,226,144,118,105,144,158,254,243,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,161,248,253,254,254,254,254,254,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,157,254,254,254,254,170,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,82,255,176,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,222,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,166,241,252,253,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,252,169,73,172,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,236,252,252,156,0,0,100,235,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,192,7,0,0,65,249,193,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,224,252,226,44,0,0,0,0,238,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,250,82,0,0,0,0,0,132,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,192,252,208,0,0,0,0,0,0,99,252,191,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,252,84,0,0,0,0,0,0,23,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,242,19,0,0,0,0,0,0,23,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,164,0,0,0,0,0,0,0,52,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,164,0,0,0,0,0,0,0,132,252,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,172,2,0,0,0,0,0,0,190,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,46,0,0,0,0,0,66,249,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,222,252,226,78,0,0,0,0,137,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,252,239,198,122,122,198,249,242,131,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,224,252,252,252,252,253,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,169,219,252,252,253,252,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,224,252,253,175,190,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,81,160,160,195,202,255,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,132,153,226,226,254,254,254,254,254,225,241,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,226,254,254,249,244,245,160,150,87,56,15,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,228,88,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,232,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,140,0,34,68,221,176,161,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,140,84,239,254,254,254,254,252,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,224,234,254,197,66,66,115,233,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,254,114,0,0,0,0,43,233,237,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,164,1,0,0,0,0,0,155,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,197,17,0,0,0,0,0,0,17,240,222,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,120,16,0,0,0,0,0,0,0,0,172,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,58,47,0,0,0,0,0,0,0,0,0,0,194,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,104,223,99,0,0,0,0,0,0,0,15,145,250,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,240,96,0,0,0,32,110,64,216,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,235,254,253,245,189,161,248,254,250,254,254,204,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,219,248,254,254,254,254,254,228,222,104,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,191,254,254,183,66,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,99,111,111,146,210,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,13,42,150,225,254,254,254,206,252,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,199,227,242,238,167,125,35,35,9,51,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,253,155,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,249,249,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,251,254,164,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,254,254,232,176,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,249,204,204,223,254,251,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,220,53,0,0,19,69,232,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,212,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,100,9,0,0,0,0,0,0,0,3,207,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,206,133,25,0,0,45,51,0,37,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,203,254,255,241,235,235,240,112,115,243,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,90,207,254,254,254,244,214,237,162,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,39,110,110,110,110,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,128,168,240,255,244,168,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,241,254,254,254,254,254,254,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,244,254,254,176,124,95,45,235,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,254,198,24,2,0,0,165,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,198,18,0,0,0,43,233,254,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,247,254,33,0,0,0,10,211,254,247,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,250,254,64,0,0,0,107,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,228,52,45,67,234,254,237,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,243,254,247,249,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,211,254,254,254,254,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,43,226,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,225,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,220,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,234,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,238,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,233,254,215,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,240,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,255,254,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,200,247,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,139,251,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,58,224,253,253,253,242,207,169,253,253,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,253,100,16,253,253,253,194,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,235,253,253,253,245,94,2,16,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,222,253,253,253,244,108,0,0,128,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,97,0,0,37,213,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,29,211,253,253,253,133,2,0,0,70,253,253,253,246,13,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,217,37,0,0,0,177,253,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,211,35,0,0,0,61,238,253,253,223,47,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,253,253,168,0,0,0,63,238,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,65,0,0,62,228,253,253,253,246,86,0,0,0,0,0,0,0,0,0,0,0,0,0,22,195,253,253,253,14,15,116,241,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,218,220,253,253,253,253,253,202,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,185,253,253,253,253,253,253,253,253,253,204,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,253,253,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,240,253,253,253,225,199,91,45,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,201,193,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,85,255,253,255,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,168,253,251,253,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,197,254,253,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,197,255,253,254,253,169,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,0,0,0,0,0,114,169,168,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,254,253,254,253,254,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,253,251,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,114,198,253,254,253,254,253,254,196,169,168,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,83,84,83,84,83,84,28,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,197,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,254,253,254,253,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,168,197,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,57,85,85,29,85,254,253,254,253,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,224,253,251,197,251,253,251,253,251,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,254,253,169,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,196,253,251,253,138,84,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,132,130,213,254,252,252,252,214,51,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,252,250,250,250,252,250,250,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,250,250,250,252,250,250,250,252,250,250,250,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,252,250,250,250,252,250,250,250,243,121,0,0,0,0,0,0,0,0,0,0,0,0,152,252,254,252,222,40,0,0,0,163,0,82,232,252,254,171,20,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,100,0,0,0,0,0,0,0,151,250,252,250,100,0,0,0,0,0,0,0,0,0,0,62,211,250,252,250,100,0,0,0,0,0,0,0,60,221,252,250,100,0,0,0,0,0,0,0,0,0,0,102,250,250,252,169,20,0,0,0,0,0,0,0,0,40,252,250,100,0,0,0,0,0,0,0,0,0,0,103,252,252,203,0,0,0,0,0,0,0,0,0,0,0,254,252,252,49,0,0,0,0,0,0,0,0,0,102,250,250,121,0,0,0,0,0,0,0,0,0,0,0,252,250,189,29,0,0,0,0,0,0,0,0,0,102,250,250,0,0,0,0,0,0,0,0,0,0,0,0,252,250,100,0,0,0,0,0,0,0,0,0,41,221,250,250,0,0,0,0,0,0,0,0,0,0,0,0,252,250,100,0,0,0,0,0,0,0,0,0,51,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,254,252,100,0,0,0,0,0,0,0,0,0,31,190,250,250,82,0,0,0,0,0,0,0,0,0,0,82,252,250,100,0,0,0,0,0,0,0,0,0,0,102,250,250,202,0,0,0,0,0,0,0,0,62,151,231,252,250,100,0,0,0,0,0,0,0,0,0,0,102,250,250,243,121,0,0,0,0,0,0,41,221,250,250,252,169,20,0,0,0,0,0,0,0,0,0,0,82,202,243,255,252,252,90,52,51,172,252,254,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,252,250,250,250,252,250,250,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,250,250,250,252,250,250,250,252,189,100,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,130,250,250,252,250,250,250,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,172,172,198,219,254,254,255,254,254,254,174,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,253,254,253,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,213,186,146,146,97,65,65,71,128,239,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,242,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,161,253,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,160,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,253,253,154,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,253,129,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,253,152,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,249,254,254,206,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,105,222,253,204,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,247,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,59,0,0,0,0,0,133,253,192,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,187,0,0,0,0,0,33,229,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,213,253,145,0,0,0,0,0,33,230,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,213,46,0,0,0,25,172,253,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,223,253,246,149,122,179,239,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,214,253,253,254,253,253,219,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,163,253,254,221,136,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,0,0,26,162,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,243,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,235,253,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,243,253,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,255,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,255,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,250,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,204,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,237,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,232,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,255,254,254,254,254,255,176,129,63,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,254,254,254,254,254,254,254,254,224,126,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,129,139,74,96,122,162,162,212,254,254,204,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,144,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,239,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,160,254,254,246,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,229,254,254,230,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,228,254,254,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,254,254,251,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,248,254,254,211,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,254,254,244,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,249,254,254,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,254,254,152,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,141,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,230,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,217,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,243,191,104,48,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,197,254,254,254,254,191,170,121,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,183,5,18,85,133,212,236,255,254,246,236,183,141,75,2,0,0,0,0,0,0,0,0,0,0,0,132,254,102,0,0,0,0,6,30,47,61,144,235,238,254,254,188,24,0,0,0,0,0,0,0,0,0,0,132,254,85,0,0,0,0,0,0,0,0,0,0,14,124,254,254,131,0,0,0,0,0,0,0,0,0,0,132,248,35,0,0,0,0,0,0,0,0,0,0,0,40,254,241,67,0,0,0,0,0,0,0,0,0,0,142,251,63,0,0,0,0,0,0,0,0,0,0,6,199,254,107,0,0,0,0,0,0,0,0,0,0,0,226,244,0,0,0,0,0,0,0,0,0,0,0,152,254,222,6,0,0,0,0,0,0,0,0,0,0,0,227,245,0,0,0,0,0,0,0,0,0,0,20,241,254,75,0,0,0,0,0,0,0,0,0,0,0,0,163,181,0,0,0,0,0,0,0,0,0,2,137,254,223,9,0,0,0,0,0,0,0,0,0,0,0,0,9,13,0,0,0,0,0,0,0,0,0,13,254,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,250,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,246,250,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,240,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,241,254,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,216,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,231,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,180,253,225,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,145,253,251,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,226,253,230,45,0,0,0,0,0,0,3,14,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,93,0,0,0,0,0,0,107,159,253,241,57,0,0,0,0,0,0,0,0,0,0,0,0,144,254,229,42,0,0,0,0,0,109,234,254,254,255,255,255,121,0,0,0,0,0,0,0,0,0,0,90,251,253,143,0,0,0,0,52,164,252,253,253,174,220,253,253,247,0,0,0,0,0,0,0,0,0,40,224,253,193,7,0,0,0,0,121,253,253,223,54,27,203,253,198,89,0,0,0,0,0,0,0,0,0,220,253,228,57,0,0,0,5,81,234,253,131,27,22,188,253,245,73,0,0,0,0,0,0,0,0,0,96,251,253,137,0,0,0,0,14,253,254,168,6,57,187,253,221,47,0,0,0,0,0,0,0,0,0,0,220,253,253,39,0,0,0,0,113,253,254,225,187,243,253,213,98,0,0,0,0,0,0,0,0,0,0,0,255,253,253,61,0,0,0,26,164,253,255,253,253,240,177,21,0,0,0,0,0,0,0,0,0,0,0,0,240,253,253,224,55,127,161,219,253,253,255,228,107,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,252,253,253,253,253,253,252,240,177,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,120,225,225,120,120,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,29,136,219,255,210,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,156,253,253,253,253,253,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,244,253,253,253,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,207,253,253,252,182,108,65,177,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,179,253,253,253,110,0,0,0,78,253,253,246,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,159,2,0,0,0,78,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,253,253,207,20,0,0,0,0,80,253,253,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,230,141,21,0,0,0,0,6,201,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,130,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,238,253,253,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,181,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,252,249,72,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,134,249,253,253,253,253,253,253,253,192,71,30,7,0,0,0,0,0,0,0,0,0,0,0,0,0,36,175,253,253,253,246,150,206,246,253,253,253,253,253,145,7,0,0,0,0,0,0,0,0,0,0,0,70,236,253,253,253,206,59,0,0,104,217,253,253,253,253,253,90,0,0,0,0,0,0,0,0,0,0,29,236,253,253,253,213,76,0,0,0,0,24,168,219,253,193,170,24,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,27,0,0,0,0,0,0,0,21,35,10,0,0,0,0,0,0,0,0,0,0,0,0,19,215,220,94,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,63,136,252,255,254,254,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,184,253,253,253,253,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,12,142,75,6,27,65,171,229,253,253,253,201,145,235,253,253,35,0,0,0,0,0,0,0,0,0,0,0,142,253,253,196,221,253,253,253,253,193,75,2,0,166,253,253,35,0,0,0,0,0,0,0,0,0,0,30,238,253,253,253,253,253,239,206,74,8,0,0,25,237,253,224,23,0,0,0,0,0,0,0,0,0,0,21,219,253,253,208,144,29,24,14,0,0,0,0,30,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,8,11,11,7,0,0,0,0,0,0,0,0,88,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,158,253,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,251,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,233,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,245,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,128,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,214,0,0,0,4,22,23,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,88,0,0,26,128,234,234,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,252,214,0,0,29,210,253,252,252,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,185,252,228,53,228,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,244,25,29,216,253,228,51,7,204,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,252,142,76,216,252,170,9,0,131,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,84,210,253,233,37,0,23,234,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,227,215,252,241,59,0,0,128,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,253,253,241,104,29,117,241,254,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,252,115,128,252,252,252,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,186,95,253,252,252,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,252,68,163,253,227,103,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,13,13,13,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,65,145,242,252,253,252,252,180,145,111,25,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,230,252,252,252,252,253,252,252,252,252,252,252,170,48,2,0,0,0,0,0,0,0,0,0,0,7,72,229,252,252,252,252,252,253,252,252,252,252,252,252,252,252,92,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,200,140,72,253,252,243,192,192,209,252,252,252,189,0,0,0,0,0,0,0,0,0,7,156,252,252,231,139,9,0,0,161,252,226,24,0,17,60,163,128,31,0,0,0,0,0,0,0,0,0,123,252,252,232,62,0,0,0,0,93,252,252,197,24,0,0,0,0,0,0,0,0,0,0,0,0,0,11,237,252,252,89,0,0,0,0,0,8,211,252,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,208,7,0,0,0,0,0,0,25,211,252,247,163,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,89,0,0,0,0,0,0,0,0,42,252,252,214,23,0,0,0,0,0,0,0,0,0,0,0,255,253,217,0,0,0,0,0,0,0,0,0,18,204,253,253,116,2,0,0,0,0,0,0,0,0,0,0,253,252,216,0,0,0,0,0,0,0,0,0,0,44,245,252,252,36,0,0,0,0,0,0,0,0,0,0,253,252,221,12,0,0,0,0,0,0,0,0,0,0,181,252,252,53,0,0,0,0,0,0,0,0,0,0,172,252,252,173,49,35,0,0,0,0,0,0,0,0,101,252,252,220,16,0,0,0,0,0,0,0,0,0,105,252,252,252,252,232,140,61,61,61,0,0,0,0,90,252,252,252,23,0,0,0,0,0,0,0,0,0,3,170,252,252,252,252,252,252,252,252,194,193,193,193,235,252,252,224,17,0,0,0,0,0,0,0,0,0,0,28,134,252,252,252,252,252,252,252,253,252,252,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,23,155,202,155,188,206,252,252,253,252,252,252,252,178,116,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,8,12,76,143,144,143,143,143,58,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,229,255,165,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,231,251,253,253,253,253,234,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,158,234,253,253,233,192,253,253,253,181,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,157,253,253,253,155,45,12,82,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,86,9,0,0,9,160,253,253,137,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,175,3,0,0,0,0,3,176,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,246,60,0,0,0,0,0,0,125,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,239,0,0,0,0,0,0,0,3,241,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,239,0,0,0,0,0,0,0,0,241,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,62,242,253,239,0,0,0,0,0,0,0,0,203,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,239,0,0,0,0,0,0,0,0,104,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,68,247,253,241,28,16,0,0,0,0,0,0,193,253,232,49,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,146,1,0,0,0,0,0,241,253,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,253,253,27,0,0,0,0,0,241,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,119,178,28,0,0,51,246,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,253,253,253,253,231,46,0,0,125,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,253,201,63,63,66,226,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,156,212,230,253,253,253,253,253,253,236,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,226,253,253,253,253,176,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,153,152,116,116,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,34,139,144,144,197,235,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,148,177,178,197,253,253,253,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,254,253,253,201,154,67,53,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,227,44,10,5,0,0,1,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,138,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,198,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,239,253,253,220,255,207,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,234,61,19,206,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,44,0,0,144,255,211,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,216,253,164,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,209,254,230,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,99,239,253,248,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,24,45,131,202,253,253,215,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,188,222,253,253,253,220,66,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,186,253,253,166,42,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,173,253,254,253,193,152,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,233,252,253,171,151,151,253,252,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,253,224,102,0,0,0,0,0,163,254,233,173,31,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,130,40,0,0,0,0,0,41,243,253,70,172,151,0,0,0,0,0,0,0,0,0,0,0,0,214,253,102,0,0,0,0,0,31,92,214,253,203,20,0,82,0,0,0,0,0,0,0,0,0,0,0,0,253,252,162,102,62,102,102,183,233,252,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,254,253,254,253,254,253,224,223,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,50,50,151,151,50,50,20,183,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,216,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,179,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,246,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,253,253,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,253,201,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,241,254,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,237,253,255,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,192,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,203,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,235,253,244,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,173,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,200,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,113,113,113,113,114,238,222,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,85,101,225,238,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,13,57,135,198,246,252,252,252,253,252,252,252,252,253,252,239,65,0,0,0,0,0,0,0,0,0,0,151,187,252,252,253,252,252,252,236,225,99,84,84,177,253,252,180,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,204,112,112,50,0,0,0,0,140,253,204,25,0,0,0,0,0,0,0,0,0,0,0,163,165,140,63,0,0,0,0,0,0,0,0,0,141,255,106,0,0,0,0,0,0,0,0,0,0,0,0,9,6,0,0,0,0,0,0,0,0,0,0,73,240,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,242,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,228,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,196,13,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,246,228,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,252,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,220,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,255,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,242,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,250,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,244,240,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,116,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,254,254,254,254,254,254,254,254,119,110,254,254,255,189,18,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,177,19,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,74,185,253,253,253,253,253,253,253,253,253,253,253,253,253,253,213,128,3,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,253,253,253,253,253,253,224,35,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,253,253,130,115,115,115,42,0,0,0,0,0,0,0,0,0,0,0,62,232,253,253,253,253,122,14,14,14,14,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,189,166,31,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,167,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,220,253,253,253,253,253,253,253,253,242,96,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,234,253,253,253,253,253,253,253,253,253,193,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,129,129,246,253,253,253,253,253,253,253,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,30,110,183,232,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,228,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,3,0,0,0,85,116,241,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,12,172,217,216,216,216,243,253,253,253,253,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,17,185,253,253,253,253,253,253,253,253,253,253,252,175,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,195,240,253,253,253,253,253,215,199,63,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,99,150,253,173,99,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,148,60,43,11,0,11,43,43,43,96,148,148,193,228,189,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,254,206,191,206,253,254,253,253,253,253,254,253,239,29,0,0,0,0,0,0,0,0,0,0,0,73,238,253,254,253,253,253,253,254,253,253,253,253,254,253,243,42,0,0,0,0,0,0,0,0,0,0,0,0,64,200,146,111,93,190,190,128,128,151,253,253,254,232,129,0,0,0,0,0,0,0,0,0,0,0,0,0,11,7,0,0,0,0,0,0,0,189,253,253,219,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,158,255,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,232,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,111,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,232,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,253,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,246,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,141,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,254,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,219,254,248,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,253,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,237,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,236,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,175,254,237,214,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,233,194,53,19,177,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,233,159,4,0,0,26,239,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,225,8,0,0,0,0,151,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,84,0,0,0,0,0,90,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,45,0,0,0,0,0,38,241,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,45,0,0,0,0,0,117,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,49,0,0,0,0,0,99,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,154,0,0,0,0,0,164,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,246,35,0,0,0,0,208,227,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,248,130,30,31,131,250,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,204,253,247,225,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,13,134,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,248,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,197,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,153,255,255,255,226,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,237,254,216,148,148,245,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,237,250,89,9,0,0,96,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,208,251,106,0,0,0,0,9,250,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,147,0,0,0,0,0,99,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,208,251,31,0,0,0,0,0,218,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,171,0,0,0,0,2,105,253,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,113,0,0,0,9,179,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,89,26,110,110,211,254,254,250,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,220,238,254,254,203,189,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,195,201,196,121,57,18,232,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,210,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,241,252,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,225,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,237,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,242,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,233,215,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,225,252,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,198,246,252,252,220,56,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,169,215,253,252,245,129,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,165,252,252,253,127,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,222,253,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,252,204,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,253,252,230,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,168,0,0,63,176,253,253,253,253,192,113,88,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,190,74,129,225,240,253,252,252,252,252,253,252,246,122,0,0,0,0,0,0,0,0,0,0,48,197,252,252,253,233,209,252,252,253,233,195,202,252,253,252,252,230,25,0,0,0,0,0,0,0,0,0,57,234,252,252,253,252,252,154,223,84,56,0,10,99,253,252,252,236,50,0,0,0,0,0,0,0,0,63,178,252,252,252,253,127,112,37,0,0,0,0,95,203,253,252,252,157,50,0,0,0,0,0,0,0,0,51,159,253,253,253,204,15,0,0,0,51,113,144,253,253,255,253,165,47,0,0,0,0,0,0,0,0,0,50,158,252,252,252,241,100,117,225,225,238,252,252,252,252,168,167,37,0,0,0,0,0,0,0,0,0,0,25,122,252,252,252,253,252,252,252,252,253,252,252,245,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,215,252,252,253,252,252,252,252,253,226,114,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,128,173,174,252,173,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,186,254,255,226,140,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,244,239,160,155,185,254,239,89,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,168,7,0,0,3,97,218,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,8,0,0,0,0,0,32,228,231,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,228,218,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,252,246,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,249,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,249,246,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,250,246,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,209,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,248,195,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,247,147,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,248,189,15,0,0,0,0,0,0,0,0,30,45,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,254,41,0,0,0,0,64,26,66,104,161,242,248,22,0,0,0,0,0,0,0,0,0,0,0,0,18,237,254,198,201,238,238,238,254,244,254,254,218,164,80,2,0,0,0,0,0,0,0,0,0,0,0,0,0,81,185,254,208,171,171,171,172,139,90,26,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,159,254,100,0,0,0,0,0,0,0,0,137,235,52,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,147,0,0,0,0,0,0,0,24,238,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,249,60,0,0,0,0,0,0,0,180,253,236,59,0,0,0,0,0,0,0,0,0,0,0,0,128,250,253,175,0,0,0,0,0,0,0,30,228,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,22,0,0,0,0,0,0,5,147,253,251,78,0,0,0,0,0,0,0,0,0,0,0,0,118,251,253,222,14,0,0,0,0,0,0,23,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,251,110,0,0,0,0,0,0,0,23,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,12,218,253,198,0,0,0,0,0,0,0,0,90,253,253,65,0,0,0,0,0,0,0,0,0,0,0,11,172,253,253,215,78,78,145,188,188,189,188,188,222,253,253,140,65,0,0,0,0,0,0,0,0,0,0,34,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,228,29,0,0,0,0,0,0,0,0,0,34,254,254,254,254,254,254,254,254,254,237,221,249,254,254,228,221,202,29,0,0,0,0,0,0,0,0,0,11,106,187,187,187,138,86,77,77,77,34,76,240,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,207,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,250,253,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,219,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,255,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,186,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,105,246,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,252,222,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,121,252,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,243,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,248,252,252,222,0,0,0,0,0,18,54,154,154,149,18,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,50,0,0,0,0,54,194,252,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,29,228,252,252,252,21,0,0,0,173,243,252,252,252,252,252,247,106,0,0,0,0,0,0,0,0,0,0,81,253,253,246,96,0,6,67,239,255,253,253,253,253,253,253,253,161,0,0,0,0,0,0,0,0,0,0,176,252,252,197,0,3,147,252,252,253,252,252,218,162,214,252,221,20,0,0,0,0,0,0,0,0,0,0,176,252,252,197,0,146,252,252,252,253,252,127,21,22,219,252,118,0,0,0,0,0,0,0,0,0,0,0,176,252,252,197,56,242,252,252,252,121,44,2,22,206,252,189,47,0,0,0,0,0,0,0,0,0,0,0,152,252,252,233,234,252,252,252,228,0,0,90,211,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,252,192,31,51,165,243,252,252,183,86,0,0,0,0,0,0,0,0,0,0,0,0,6,208,252,252,252,252,185,217,231,244,252,252,252,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,227,252,252,252,252,252,252,253,252,252,200,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,252,252,252,252,243,209,84,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,105,229,199,95,109,33,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,123,157,228,193,149,148,96,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,253,254,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,243,232,232,246,253,253,248,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,154,42,0,0,50,120,248,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,189,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,214,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,111,145,248,253,248,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,254,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,107,107,200,255,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,69,4,0,0,0,0,145,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,151,121,86,15,121,248,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,238,253,253,221,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,145,222,253,253,254,253,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,147,192,148,147,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,196,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,254,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,224,255,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,191,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,78,161,162,195,153,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,253,253,254,253,253,245,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,242,162,105,154,240,253,254,161,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,119,38,0,0,0,40,228,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,127,0,0,0,0,0,0,34,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,76,0,0,0,0,0,0,0,169,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,137,0,0,0,0,0,0,0,0,161,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,248,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,153,254,254,254,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,243,253,253,254,253,253,253,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,157,254,223,96,46,52,236,253,253,254,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,81,0,0,170,253,244,194,254,253,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,255,254,245,229,254,241,67,0,151,248,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,223,207,232,253,236,148,27,0,0,0,197,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,25,46,29,0,0,0,0,0,9,96,246,241,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,228,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,101,227,255,254,254,254,254,224,136,34,2,0,0,0,0,0,0,0,0,0,0,0,0,30,86,154,154,217,253,253,253,253,253,253,253,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,49,238,253,253,253,253,253,253,253,253,226,200,235,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,253,253,253,253,227,129,32,0,166,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,197,206,128,29,0,5,103,237,253,253,253,39,0,0,0,0,0,0,0,0,0,0,0,8,212,253,248,29,11,14,0,0,0,167,253,253,253,253,115,2,0,0,0,0,0,0,0,0,0,0,0,0,9,61,16,0,0,0,0,50,177,253,253,253,252,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,52,142,236,253,253,253,249,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,160,160,219,253,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,253,253,253,239,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,253,253,253,253,238,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,161,253,253,231,187,174,158,207,253,253,253,201,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,23,23,18,7,4,0,18,206,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,253,253,244,31,0,0,0,0,0,0,0,0,0,4,48,103,35,0,0,0,0,0,0,0,18,101,211,253,253,253,148,0,0,0,0,0,0,0,0,0,0,49,253,253,234,142,66,66,66,66,93,183,209,253,253,253,253,206,15,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,253,253,253,253,253,253,253,177,39,0,0,0,0,0,0,0,0,0,0,0,27,214,253,253,253,253,253,253,253,253,253,253,253,201,84,12,0,0,0,0,0,0,0,0,0,0,0,0,0,11,42,135,176,253,253,253,253,253,253,154,83,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,204,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,187,253,253,225,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,242,178,223,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,112,0,60,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,69,4,0,50,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,136,253,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,60,136,178,253,253,253,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,23,144,214,243,253,253,253,253,253,253,253,234,113,2,0,0,0,0,0,0,0,0,0,0,0,0,74,191,253,253,253,253,253,253,253,253,253,253,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,28,220,253,254,253,253,253,240,238,253,253,254,232,228,251,253,207,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,130,74,94,207,253,253,253,39,0,154,253,243,77,0,0,0,0,0,0,0,0,0,0,56,253,253,198,55,49,134,239,253,253,237,57,3,0,10,171,254,247,153,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,253,253,253,236,57,0,0,0,0,80,254,253,99,0,0,0,0,0,0,0,0,0,56,253,253,254,253,253,253,253,182,49,0,0,0,0,0,3,200,253,9,0,0,0,0,0,0,0,0,0,12,179,253,253,253,242,153,99,13,0,0,0,0,0,0,0,8,54,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,158,57,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,158,168,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,215,253,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,152,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,195,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,184,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,56,131,154,196,254,254,254,255,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,242,253,253,253,253,253,253,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,218,214,188,188,188,192,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,34,16,14,0,0,5,74,253,253,239,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,156,253,253,207,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,171,253,252,196,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,224,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,150,250,253,253,253,236,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,187,253,253,253,253,253,253,253,191,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,253,178,104,104,104,191,253,253,251,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,122,94,12,0,0,0,3,116,242,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,241,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,230,22,0,0,0,0,0,0,0,0,0,0,0,0,0,69,96,23,0,0,0,0,0,0,0,7,227,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,47,244,253,223,0,0,0,0,0,0,5,167,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,253,223,0,0,0,0,15,59,181,253,254,242,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,246,118,90,91,188,216,253,253,253,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,222,253,253,253,253,253,253,243,203,82,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,153,226,253,253,253,171,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,227,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,156,253,189,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,232,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,128,251,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,223,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,227,31,31,31,31,31,31,17,0,86,229,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,253,253,254,253,253,254,222,184,246,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,213,234,253,253,223,213,213,213,216,253,254,162,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,60,60,14,0,0,0,16,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,239,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,225,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,219,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,253,231,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,220,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,225,255,242,80,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,158,158,207,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,62,177,252,253,253,253,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,127,113,113,176,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,146,0,7,138,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,133,130,13,0,121,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,51,51,2,0,0,0,211,253,253,243,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,228,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,220,253,253,234,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,237,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,167,167,167,217,253,253,253,177,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,246,246,251,253,253,253,253,253,253,170,4,0,0,0,0,0,0,0,0,0,0,0,0,0,37,149,167,253,253,253,253,253,253,253,253,253,175,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,247,222,253,253,253,253,253,253,148,9,0,0,0,0,0,0,0,0,0,0,0,0,42,131,245,253,230,122,214,182,253,253,253,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,245,211,244,253,253,253,253,228,253,253,253,72,20,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,213,138,43,206,253,253,253,190,107,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,245,229,40,0,0,36,234,253,253,253,247,109,0,0,0,0,0,0,0,0,0,187,253,253,253,253,253,243,92,0,0,0,0,0,161,253,253,253,168,0,0,0,0,0,0,0,0,0,0,25,187,253,253,222,78,70,0,0,0,0,0,0,17,78,78,78,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,196,252,241,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,165,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,203,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,252,252,226,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,227,253,252,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,178,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,204,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,252,204,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,253,252,252,198,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,252,253,252,230,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,252,152,18,0,0,0,0,0,0,0,0,0,0,0,10,38,0,0,0,0,0,0,0,0,89,246,252,252,252,31,0,0,0,0,0,0,0,0,0,0,0,0,7,25,0,0,0,0,0,0,0,0,113,252,252,249,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,165,255,228,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,243,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,249,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,249,253,253,216,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,214,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,253,204,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,249,248,248,169,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,253,253,253,253,240,97,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,194,253,253,253,253,253,253,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,253,218,205,232,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,253,119,24,0,129,253,253,179,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,198,21,0,0,7,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,132,14,0,0,0,75,253,253,213,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,6,0,0,0,68,189,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,6,0,23,109,242,253,253,219,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,253,253,141,111,214,253,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,253,253,253,252,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,249,217,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,124,253,253,253,141,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,156,253,100,28,0,0,0,0,0,0,80,230,147,34,9,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,208,0,0,0,0,0,0,85,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,19,237,252,252,165,0,0,0,0,0,62,237,252,252,216,12,0,0,0,0,0,0,0,0,0,0,0,0,80,252,252,242,4,0,0,0,0,0,132,252,252,251,95,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,241,0,0,0,0,0,46,206,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,203,0,0,0,0,0,209,252,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,31,0,0,0,16,150,249,252,252,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,18,244,252,252,21,0,0,0,72,252,252,252,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,252,187,6,0,0,82,253,252,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,164,0,0,34,220,253,252,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,150,0,40,225,253,255,253,253,241,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,55,37,223,252,252,253,252,252,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,170,230,252,252,252,253,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,249,252,252,252,252,252,202,129,253,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,250,130,23,182,253,252,163,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,244,252,221,110,0,0,220,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,21,14,0,0,71,250,253,249,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,243,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,191,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,159,253,253,253,244,118,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,252,252,253,252,227,120,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,240,183,183,183,253,252,252,252,221,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,206,0,0,0,46,119,227,252,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,18,0,95,220,231,230,110,179,252,253,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,118,253,253,253,221,116,32,0,158,255,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,212,252,252,214,102,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,240,151,13,0,0,0,0,0,0,169,252,234,33,0,0,0,0,0,0,0,0,0,0,0,0,119,248,245,79,0,0,0,0,0,0,0,0,138,252,252,45,0,0,0,0,0,0,0,0,0,0,0,64,248,252,126,0,0,0,0,0,0,0,0,0,243,252,221,25,0,0,0,0,0,0,0,0,0,0,0,70,253,180,0,0,0,0,0,0,0,0,0,64,255,253,184,0,0,0,0,0,0,0,0,0,0,0,0,142,252,22,0,0,0,0,0,0,0,0,17,193,253,244,98,0,0,0,0,0,0,0,0,0,0,0,0,184,252,22,0,0,0,0,0,0,0,0,124,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,38,240,252,22,0,0,0,0,0,0,0,100,244,252,245,58,0,0,0,0,0,0,0,0,0,0,0,0,26,221,252,22,0,0,0,0,0,0,22,215,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,148,0,0,0,0,0,34,212,253,245,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,74,0,0,0,95,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,252,216,111,153,184,246,253,252,118,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,244,253,252,252,252,252,245,87,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,252,252,210,137,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,132,214,213,92,92,51,51,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,163,203,253,252,253,252,253,252,253,252,223,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,253,255,253,244,223,203,203,254,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,112,151,213,90,40,20,0,0,50,131,213,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,213,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,253,132,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,233,252,253,252,253,232,142,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,254,253,203,243,254,253,254,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,212,91,50,0,40,50,91,213,252,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,192,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,41,0,0,0,52,92,214,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,243,203,203,203,253,252,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,255,253,255,253,255,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,91,172,252,151,232,192,70,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,152,193,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,243,253,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,132,253,254,253,254,253,254,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,162,253,252,253,252,253,212,131,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,223,203,122,142,102,0,0,0,102,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,0,82,0,0,0,0,0,102,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,234,92,0,0,0,102,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,151,0,0,0,102,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,254,151,0,0,0,123,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,233,50,0,0,0,203,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,253,102,0,0,0,0,203,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,253,212,61,0,0,0,41,243,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,244,40,0,0,0,0,214,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,162,0,0,0,0,41,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,253,0,0,0,0,51,233,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,0,0,0,41,193,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,253,254,172,214,253,254,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,253,252,253,252,253,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,234,253,254,253,254,253,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,213,232,253,252,151,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,89,164,200,209,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,74,146,231,252,254,254,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,120,204,248,254,254,254,197,77,42,138,254,152,127,96,23,0,0,0,0,0,0,0,0,0,0,63,170,241,254,254,196,143,103,61,4,0,0,150,254,254,254,254,184,0,0,0,0,0,0,0,0,0,171,253,254,238,143,59,3,0,0,0,0,0,0,2,78,254,254,253,106,0,0,0,0,0,0,0,0,200,253,237,116,25,0,0,0,0,0,0,0,0,53,208,247,254,181,51,0,0,0,0,0,0,0,0,0,255,254,28,0,0,0,0,0,0,0,8,123,207,247,254,215,76,9,0,0,0,0,0,0,0,0,0,0,238,254,137,39,0,0,0,0,9,122,211,254,232,138,54,9,0,0,0,0,0,0,0,0,0,0,0,0,54,237,254,243,164,80,34,9,170,254,247,140,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,151,225,254,254,244,220,254,219,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,47,76,245,254,254,215,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,209,153,249,246,121,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,242,229,17,0,62,217,254,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,161,0,0,0,10,152,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,112,0,0,0,0,122,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,167,16,0,12,27,173,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,214,181,243,254,254,200,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,210,249,249,207,123,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,200,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,237,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,245,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,248,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,122,253,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,174,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,255,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,232,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,248,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,217,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,236,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,244,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,230,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,242,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,165,253,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,210,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,128,0,0,0,0,0,0,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,64,128,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,64,255,255,255,191,128,128,128,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,201,243,116,7,7,7,5,5,7,7,7,7,7,56,131,77,1,0,0,0,0,0,0,0,0,0,0,13,254,254,254,254,254,254,229,223,254,254,254,254,254,254,254,249,11,0,0,0,0,0,0,0,0,0,0,12,245,238,243,245,248,254,254,254,240,236,236,242,254,254,255,73,0,0,0,0,0,0,0,0,0,0,0,0,52,11,41,52,70,105,105,105,26,0,8,165,254,245,177,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,176,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,193,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,241,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,149,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,251,254,222,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,182,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,101,0,114,113,113,113,113,51,113,113,207,253,255,253,253,84,0,0,0,0,0,0,0,0,0,0,76,246,249,225,253,252,252,252,252,238,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,163,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,76,223,129,161,225,223,223,223,223,225,223,223,242,252,253,252,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,200,252,252,252,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,252,249,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,243,252,253,176,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,240,252,252,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,181,252,252,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,252,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,233,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,217,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,231,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,249,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,237,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,230,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,222,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,244,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,234,229,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,127,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,196,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,241,253,253,253,79,124,108,79,79,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,115,246,253,253,253,253,254,253,253,253,253,242,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,253,237,155,155,155,155,155,193,254,248,135,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,241,150,30,0,0,0,0,0,0,0,59,254,254,42,0,0,0,0,0,0,0,0,0,0,8,154,233,195,68,0,0,0,0,0,0,0,0,0,112,253,253,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,231,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,171,255,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,183,253,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,24,0,0,0,7,169,253,253,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,13,55,136,235,243,240,219,136,137,221,253,253,185,8,0,0,0,0,0,0,0,0,0,0,0,0,0,53,213,253,177,155,238,253,253,253,254,253,253,110,14,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,235,90,0,0,0,71,246,254,255,254,254,148,14,0,0,0,0,0,0,0,0,0,0,0,0,0,104,243,57,0,16,80,162,241,253,253,174,218,247,253,185,53,0,0,0,0,0,0,0,0,0,0,0,0,156,239,79,130,235,254,253,253,210,100,0,0,84,247,253,236,168,79,36,0,0,0,0,0,0,0,0,0,104,253,253,247,213,154,109,19,9,0,0,0,0,71,191,254,253,253,206,0,0,0,0,0,0,0,0,0,14,58,58,49,0,0,0,0,0,0,0,0,0,0,0,81,200,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,226,145,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,226,254,169,0,0,0,0,0,0,68,95,95,95,136,56,0,0,0,0,0,0,0,0,0,0,0,0,0,120,255,252,159,245,245,245,245,245,252,255,254,238,218,214,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,254,254,254,220,220,254,213,171,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,145,125,165,109,12,12,63,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,231,250,181,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,223,220,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,189,198,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,242,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,237,186,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,79,206,238,251,195,115,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,113,195,190,254,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,43,0,0,0,0,5,68,157,254,228,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,241,219,142,115,115,209,254,254,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,94,193,239,254,254,254,240,152,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,150,121,131,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,250,255,254,255,180,91,91,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,225,253,253,253,253,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,144,253,253,253,253,253,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,65,228,253,253,242,109,56,56,56,216,253,203,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,177,88,0,0,0,0,126,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,60,233,253,226,193,16,0,0,0,0,0,34,229,253,134,3,0,0,0,0,0,0,0,0,0,0,0,60,228,253,253,114,111,54,0,0,0,0,0,0,131,253,253,15,0,0,0,0,0,0,0,0,0,0,5,144,253,253,240,85,49,113,2,0,0,0,0,0,131,253,253,15,0,0,0,0,0,0,0,0,0,0,17,253,253,177,79,0,0,60,3,0,0,0,0,0,131,253,253,15,0,0,0,0,0,0,0,0,0,0,176,253,253,129,0,0,0,0,0,0,0,0,0,0,131,253,253,15,0,0,0,0,0,0,0,0,0,0,180,253,230,42,0,0,0,0,0,0,0,0,0,29,214,253,152,5,0,0,0,0,0,0,0,0,0,0,180,253,220,0,0,0,0,0,0,0,0,0,0,42,253,253,106,0,0,0,0,0,0,0,0,0,0,0,180,253,223,13,0,0,0,0,0,0,0,0,0,163,253,247,96,0,0,0,0,0,0,0,0,0,0,0,107,253,253,129,0,0,0,0,0,0,0,0,0,205,253,121,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,149,34,0,0,0,0,0,0,5,116,244,253,32,0,0,0,0,0,0,0,0,0,0,0,0,8,177,253,253,229,59,0,0,0,0,0,111,253,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,83,203,253,253,145,58,23,0,2,58,203,253,244,111,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,106,230,253,253,188,148,151,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,220,253,253,253,253,253,246,179,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,89,89,142,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,193,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,139,0,0,0,0,0,0,0,0,127,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,245,214,0,0,0,0,0,0,0,0,235,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,82,247,254,77,0,0,0,0,0,0,0,56,249,254,41,0,0,0,0,0,0,0,0,0,0,0,0,34,216,254,165,2,0,0,0,0,0,0,13,209,254,208,5,0,0,0,0,0,0,0,0,0,0,0,22,232,254,199,19,0,0,0,0,0,0,0,26,254,254,92,0,0,0,0,0,0,0,0,0,0,0,6,209,254,243,66,0,0,0,0,0,0,0,0,81,254,249,55,0,0,0,0,0,0,0,0,0,0,0,48,254,254,207,96,64,0,0,0,0,0,0,27,213,254,182,0,0,0,0,0,0,0,0,0,0,0,0,52,254,254,254,254,253,235,150,150,70,51,8,91,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,2,50,144,249,210,249,254,254,254,254,254,173,238,254,221,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,131,194,155,131,104,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,243,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,250,248,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,227,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,246,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,233,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,141,0,0,0,0,0,44,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,192,218,0,0,0,0,0,121,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,157,0,0,0,0,0,131,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,254,148,0,0,0,0,0,131,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,204,17,0,0,0,0,0,131,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,203,253,83,0,0,0,0,0,0,165,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,243,254,166,0,0,0,0,0,0,19,231,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,215,130,80,80,28,0,0,53,255,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,81,165,237,254,254,249,221,158,178,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,20,105,132,192,228,254,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,182,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,232,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,235,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,55,138,243,255,253,253,253,253,139,118,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,178,252,252,252,249,206,240,252,252,253,252,227,120,5,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,170,69,69,63,0,50,69,121,190,252,252,252,190,32,0,0,0,0,0,0,0,0,0,0,0,0,138,214,13,0,0,0,0,0,0,0,5,119,185,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,13,18,0,0,0,0,0,0,0,0,0,0,7,211,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,45,170,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,170,252,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,184,184,246,253,252,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,253,252,252,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,107,137,137,137,211,252,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,210,251,255,159,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,252,154,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,252,236,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,108,138,34,0,0,0,0,0,0,57,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,43,0,0,0,0,5,178,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,234,252,252,247,184,184,184,184,191,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,139,244,253,252,252,252,252,253,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,137,137,137,179,252,137,117,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,254,218,148,78,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,253,252,252,252,156,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,252,252,252,224,92,2,15,13,84,162,169,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,172,210,252,252,252,253,252,52,190,217,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,188,252,252,194,14,95,217,252,253,252,235,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,9,204,253,254,174,12,38,156,254,253,253,253,253,212,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,252,151,206,200,253,252,252,252,137,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,161,253,252,252,252,252,253,252,180,56,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,252,252,252,252,243,110,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,252,252,208,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,254,253,253,253,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,252,253,252,217,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,252,252,250,117,21,210,252,215,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,211,0,0,142,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,211,0,0,11,174,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,253,237,55,0,0,107,255,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,231,51,22,155,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,118,253,252,242,237,252,250,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,205,247,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,11,223,147,147,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,79,141,166,253,153,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,172,252,253,252,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,234,252,252,253,252,252,252,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,252,252,253,202,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,190,0,57,253,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,252,233,59,0,19,215,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,93,37,0,0,0,197,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,253,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,254,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,131,234,252,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,253,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,138,234,252,253,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,253,253,254,253,253,253,254,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,252,252,253,252,252,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,252,253,252,252,252,253,252,252,252,253,252,234,147,198,172,19,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,253,252,214,240,253,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,169,253,253,254,253,253,253,254,209,25,101,254,253,253,253,254,253,168,0,0,0,0,0,0,0,0,0,0,144,252,252,253,252,252,227,134,28,0,0,253,252,252,252,253,252,168,0,0,0,0,0,0,0,0,0,0,13,143,168,168,168,130,31,0,0,0,0,128,252,252,252,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,178,252,252,190,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,183,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,252,252,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,245,134,202,252,206,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,134,239,243,82,0,48,242,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,124,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,107,0,0,0,150,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,168,80,27,0,0,0,106,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,85,14,0,0,0,143,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,101,239,252,252,236,110,22,31,246,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,252,194,205,252,253,252,217,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,246,253,137,4,11,86,253,252,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,107,0,0,0,18,210,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,27,0,0,57,199,253,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,233,153,135,246,252,250,238,252,247,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,252,253,252,252,252,199,115,64,247,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,147,147,138,42,7,0,0,188,226,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,136,227,255,202,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,163,253,253,253,253,253,197,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,250,253,253,253,253,253,253,253,136,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,246,253,253,242,182,92,134,253,253,253,241,104,15,0,0,0,0,0,0,0,0,0,0,0,0,0,100,245,253,253,203,137,0,0,136,253,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,23,216,253,253,198,13,0,0,0,158,253,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,251,16,0,0,0,0,213,253,253,253,253,219,27,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,147,0,0,0,0,0,213,253,253,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,164,41,0,27,42,132,238,253,253,248,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,252,177,225,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,168,253,253,253,253,253,253,253,253,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,82,198,253,253,238,158,104,238,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,26,75,19,0,0,213,253,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,127,185,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,200,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,235,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,251,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,204,253,223,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,64,0,0,0,0,0,0,0,0,3,129,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,242,236,38,0,0,0,0,0,0,0,100,252,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,55,0,0,0,0,0,0,0,224,252,252,61,17,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,55,0,0,0,0,0,0,96,252,247,106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,66,249,252,55,0,0,0,0,0,0,171,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,209,12,0,0,0,0,0,24,224,252,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,144,0,0,0,0,0,2,123,252,237,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,88,0,0,0,0,0,53,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,88,0,0,0,0,0,177,252,252,39,0,0,38,64,0,0,0,0,0,0,0,0,0,0,0,0,209,252,207,24,0,0,0,144,253,252,118,11,111,197,236,160,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,215,143,143,143,239,255,253,205,253,253,242,215,43,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,252,185,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,116,188,252,252,252,252,253,183,111,44,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,11,119,252,252,154,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,215,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,7,0,0,0,0,0,41,253,216,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,252,149,7,0,0,0,0,191,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,252,65,0,0,0,89,229,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,249,253,252,252,90,0,0,0,163,253,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,29,216,253,253,255,253,253,78,0,7,104,253,255,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,252,253,252,170,9,0,44,240,252,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,176,253,252,252,252,206,142,13,0,0,132,240,252,253,208,13,0,0,0,0,0,0,0,0,0,0,51,225,249,253,252,252,252,126,88,0,0,26,243,252,252,253,96,0,0,0,0,0,0,0,0,0,0,41,253,253,253,254,253,253,253,254,228,141,41,154,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,166,252,252,252,253,252,252,252,253,252,252,252,253,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,106,81,168,205,253,252,252,252,253,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,103,252,252,102,0,0,0,13,53,252,252,252,253,252,214,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,253,253,254,222,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,252,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,241,252,252,102,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,200,253,252,121,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,246,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,190,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,164,255,222,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,156,239,254,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,187,187,217,254,254,254,254,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,232,249,196,117,236,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,38,24,35,0,130,254,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,218,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,235,254,235,211,158,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,203,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,32,110,138,214,254,254,251,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,55,249,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,223,254,234,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,208,254,233,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,39,94,176,237,254,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,97,254,254,251,220,136,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,23,179,254,254,172,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,235,234,169,28,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,208,126,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,59,54,0,106,239,255,253,118,5,23,59,59,59,27,0,0,0,0,0,0,0,0,0,0,0,82,117,168,251,231,0,0,194,253,251,251,127,168,251,251,251,115,0,0,0,0,0,0,0,0,0,0,82,228,251,251,251,231,0,0,59,118,169,198,251,251,251,251,196,35,0,0,0,0,0,0,0,0,0,55,241,251,245,136,18,17,0,0,0,5,28,186,251,251,226,47,13,0,0,0,0,0,0,0,0,0,0,59,251,251,227,60,0,0,0,0,0,99,168,251,251,213,59,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,251,153,0,0,0,0,121,253,251,251,226,59,0,0,0,0,0,0,0,0,0,0,0,0,0,54,240,251,251,161,8,0,7,126,242,253,251,237,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,251,251,251,143,78,131,251,251,253,214,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,209,251,251,251,251,251,251,251,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,237,251,251,251,251,251,251,207,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,230,253,253,253,253,209,59,59,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,233,251,251,251,253,251,251,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,251,253,251,251,251,221,175,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,159,245,212,107,168,213,230,251,251,251,251,221,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,251,231,0,0,0,0,72,153,244,251,251,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,251,243,108,0,0,0,0,109,244,251,251,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,251,251,239,214,64,65,214,239,251,251,251,234,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,221,251,251,251,251,253,251,251,251,251,202,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,231,251,251,251,253,251,251,229,115,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,117,251,251,253,160,57,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,185,255,253,178,52,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,241,252,252,146,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,246,50,113,240,252,144,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,244,252,160,0,0,56,181,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,242,252,252,121,0,0,0,46,238,228,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,218,252,252,252,121,0,0,0,0,101,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,241,252,220,167,248,81,0,0,0,0,49,236,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,110,0,34,0,0,0,0,0,0,205,155,0,0,0,0,0,0,0,0,0,0,0,0,0,44,246,252,124,4,0,0,0,0,0,0,0,0,205,155,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,48,0,0,0,0,0,0,0,0,0,205,155,0,0,0,0,0,0,0,0,0,0,0,0,20,213,253,180,0,0,0,0,0,0,0,0,0,0,206,156,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,111,0,0,0,0,0,0,0,0,0,7,209,144,0,0,0,0,0,0,0,0,0,0,0,0,112,252,214,23,0,0,0,0,0,0,0,0,0,90,240,31,0,0,0,0,0,0,0,0,0,0,0,0,77,252,232,40,0,0,0,0,0,0,0,0,64,233,144,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,238,46,0,0,0,0,0,0,0,64,232,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,26,228,238,46,0,0,0,0,0,0,46,193,235,145,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,157,0,0,0,0,45,97,234,236,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,242,177,97,148,217,237,252,238,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,221,252,252,252,252,252,253,178,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,166,252,252,252,136,69,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,107,107,107,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,230,252,252,252,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,116,242,252,252,252,252,253,235,213,213,178,81,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,252,252,252,252,253,252,252,252,252,252,216,109,0,0,0,0,0,0,0,0,0,0,0,23,173,242,252,252,215,115,143,198,199,198,198,215,252,252,252,245,177,0,0,0,0,0,0,0,0,0,0,107,252,252,252,243,67,0,0,0,0,0,0,26,79,186,252,252,241,19,0,0,0,0,0,0,0,0,0,191,252,252,245,108,0,0,0,0,0,0,0,0,0,20,118,252,252,203,0,0,0,0,0,0,0,0,70,247,252,252,108,0,0,0,0,0,0,0,0,0,0,0,38,247,252,252,0,0,0,0,0,0,0,0,190,252,252,209,25,0,0,0,0,0,0,0,0,0,0,0,22,208,252,252,0,0,0,0,0,0,0,0,255,253,253,110,0,0,0,0,0,0,0,0,0,0,0,26,211,253,253,120,0,0,0,0,0,0,0,0,253,252,252,39,0,0,0,0,0,0,0,0,0,0,29,137,252,252,246,69,0,0,0,0,0,0,0,0,253,252,252,39,0,0,0,0,0,0,0,0,0,30,206,252,252,252,189,0,0,0,0,0,0,0,0,0,211,252,252,107,17,0,0,0,0,0,0,77,129,225,252,252,252,187,17,0,0,0,0,0,0,0,0,0,89,249,252,252,211,200,200,200,200,200,201,249,252,252,252,238,164,20,0,0,0,0,0,0,0,0,0,0,0,212,252,252,252,252,252,252,252,252,253,252,252,252,209,87,0,0,0,0,0,0,0,0,0,0,0,0,0,34,213,252,252,252,252,252,252,252,253,235,212,100,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,205,225,225,225,225,225,154,93,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,195,198,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,11,11,24,201,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,165,170,254,254,254,254,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,115,121,219,248,254,254,254,254,254,254,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,120,202,254,254,254,253,179,179,230,254,254,254,254,223,17,0,0,0,0,0,0,0,0,0,0,0,0,159,252,244,209,125,26,24,0,77,247,254,254,227,224,67,0,0,0,0,0,0,0,0,0,0,0,0,8,206,254,130,0,0,0,2,154,244,254,254,124,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,191,254,143,3,0,44,182,249,254,243,117,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,245,254,92,74,229,254,254,174,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,132,254,252,254,254,254,181,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,227,254,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,254,216,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,184,251,254,246,245,235,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,197,254,254,203,44,58,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,244,254,254,220,36,0,11,211,242,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,170,8,0,0,0,211,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,254,183,6,0,0,6,111,254,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,224,122,181,190,200,254,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,229,254,254,254,254,254,247,209,150,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,154,241,215,254,221,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,195,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,231,251,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,240,230,242,253,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,185,0,38,152,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,239,25,0,0,116,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,243,128,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,223,25,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,81,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,23,0,0,0,13,187,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,23,0,0,13,151,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,23,0,51,187,253,236,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,140,101,234,254,185,36,253,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,254,203,160,9,24,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,107,107,6,0,0,3,190,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,249,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,215,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,202,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,118,118,248,255,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,236,253,253,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,125,213,242,253,253,253,253,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,127,252,253,253,253,253,222,131,139,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,220,253,253,222,219,192,82,35,0,123,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,248,253,240,25,0,0,0,0,7,241,253,250,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,123,3,0,0,0,0,75,190,253,210,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,192,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,182,253,253,113,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,69,69,181,241,253,251,118,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,134,253,253,253,253,253,253,251,119,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,208,115,229,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,191,246,246,124,80,0,12,191,253,153,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,189,253,211,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,224,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,178,156,0,0,0,0,0,17,173,253,251,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,237,58,0,0,0,15,173,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,96,21,21,81,192,253,253,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,253,253,253,253,227,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,198,255,255,231,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,25,232,224,177,229,245,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,194,253,57,0,0,0,170,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,84,238,253,209,9,0,0,0,89,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,184,7,0,0,0,0,135,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,229,54,0,0,0,7,91,234,236,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,71,0,0,0,45,102,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,225,218,218,218,238,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,149,150,253,253,232,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,132,86,11,1,71,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,255,251,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,244,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,195,253,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,228,253,218,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,132,247,253,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,211,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,213,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,55,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,37,37,56,128,133,217,218,250,253,250,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,132,253,254,253,253,238,202,144,144,144,144,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,179,253,220,195,111,72,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,209,254,241,73,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,209,253,253,253,253,242,100,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,199,127,88,101,208,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,119,4,0,0,0,61,245,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,160,10,0,0,0,0,0,0,0,106,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,191,0,0,0,0,0,0,33,170,201,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,189,137,73,73,73,170,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,181,253,253,254,253,253,253,253,173,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,36,101,185,216,216,145,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,21,0,0,0,0,0,0,0,72,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,102,0,0,0,0,0,0,0,152,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,82,0,0,0,0,0,0,0,152,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,243,40,0,0,0,0,0,0,193,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,50,0,0,0,0,0,0,152,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,0,0,152,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,50,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,151,30,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,82,0,0,0,0,0,0,0,152,253,234,152,41,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,243,203,203,203,203,203,203,203,233,252,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,21,183,254,253,254,253,254,253,254,253,254,253,203,102,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,111,112,151,151,111,50,50,213,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,130,251,251,235,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,251,253,242,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,179,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,233,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,128,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,253,187,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,207,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,234,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,229,250,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,82,217,254,253,143,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,110,160,226,253,253,235,99,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,182,181,168,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,248,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,217,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,255,182,119,163,163,106,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,253,253,253,254,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,253,234,145,158,241,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,54,27,0,0,130,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,195,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,120,51,0,0,0,60,224,253,238,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,253,205,37,95,179,248,253,240,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,251,253,253,253,254,253,253,199,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,207,253,253,254,201,149,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,180,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,170,253,253,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,188,253,253,253,198,77,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,130,247,253,253,253,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,156,254,253,253,253,192,97,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,81,235,253,254,253,253,249,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,254,253,198,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,235,253,253,253,254,189,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,231,253,253,253,253,58,31,0,0,0,0,167,196,196,45,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,254,254,209,0,0,0,10,134,255,254,254,254,254,0,0,0,0,0,0,0,0,0,0,83,243,253,253,253,216,135,31,0,55,118,138,253,253,253,253,253,253,0,0,0,0,0,0,0,0,42,176,229,253,253,253,253,174,0,0,177,212,253,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,59,253,253,253,253,253,204,13,22,191,254,253,253,253,253,253,253,253,253,57,0,0,0,0,0,0,0,0,134,253,253,253,253,253,121,99,182,253,254,253,253,253,253,253,253,222,154,35,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,255,253,253,253,253,253,240,67,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,249,233,233,64,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,253,253,253,253,253,253,254,253,198,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,116,116,243,253,253,253,253,253,253,117,116,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,57,57,57,57,57,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,114,159,143,113,113,255,206,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,181,252,253,252,252,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,104,240,252,252,253,252,208,195,118,119,195,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,252,225,99,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,236,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,228,47,0,0,0,0,92,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,70,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,253,186,12,0,0,0,0,45,234,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,151,0,0,0,0,0,150,252,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,197,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,141,0,0,0,0,51,159,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,48,159,252,252,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,166,57,57,150,227,253,252,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,252,253,252,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,253,252,252,252,252,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,203,255,253,253,240,203,255,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,27,27,27,24,140,253,252,233,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,253,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,83,172,199,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,215,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,248,254,131,193,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,148,21,45,254,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,237,243,14,0,2,194,238,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,120,0,0,0,180,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,107,0,0,0,180,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,151,53,0,0,0,180,247,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,202,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,147,165,54,86,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,254,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,227,254,154,155,255,254,123,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,220,21,16,254,254,254,122,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,188,0,128,253,80,102,196,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,235,248,55,214,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,249,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,185,230,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,149,191,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,94,199,254,254,247,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,219,254,246,147,116,197,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,254,172,68,0,0,107,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,254,122,3,0,0,0,29,135,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,163,4,0,0,0,0,5,208,247,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,227,25,0,0,0,0,41,156,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,233,103,28,0,64,177,247,254,254,195,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,245,238,253,255,225,111,200,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,217,227,203,171,143,29,0,197,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,218,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,67,136,220,205,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,254,254,254,253,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,254,254,247,250,247,254,115,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,235,85,22,53,22,197,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,248,254,121,0,0,0,41,216,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,207,7,0,0,3,202,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,197,0,0,23,180,254,254,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,231,71,92,213,254,254,188,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,254,254,254,210,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,254,254,255,254,248,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,157,255,254,230,0,15,219,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,231,254,254,225,42,0,0,198,207,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,254,223,43,0,0,0,122,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,197,3,0,0,0,0,10,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,151,0,0,0,0,0,63,254,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,117,0,0,0,0,0,146,254,217,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,169,0,0,0,0,76,216,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,170,251,168,57,57,176,253,254,125,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,101,253,254,254,255,249,114,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,122,218,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,248,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,215,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,224,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,83,0,0,0,0,14,234,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,247,116,0,0,0,79,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,234,253,139,0,0,0,88,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,133,0,0,7,202,253,206,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,59,9,9,124,254,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,179,253,253,253,253,253,253,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,221,254,254,254,254,254,254,254,254,255,254,202,118,79,79,79,25,82,227,0,0,0,0,0,0,0,0,251,253,253,253,216,111,96,96,155,253,254,253,253,253,253,253,253,247,253,228,0,0,0,0,0,0,0,0,232,253,195,126,9,0,0,5,195,253,207,105,126,191,191,191,191,191,158,69,0,0,0,0,0,0,0,0,17,26,2,0,0,0,0,97,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,219,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,129,109,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,66,141,141,216,253,253,255,253,178,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,252,252,253,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,252,252,177,168,168,130,56,78,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,151,128,28,28,3,0,0,0,0,79,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,206,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,160,215,252,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,163,241,252,252,252,253,246,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,254,234,187,163,242,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,202,134,28,0,0,60,234,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,56,6,0,0,0,0,0,82,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,7,203,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,184,0,0,0,0,0,0,0,0,86,253,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,109,0,0,0,0,0,0,0,0,85,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,215,19,0,0,0,0,0,0,0,85,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,156,0,0,0,0,0,0,0,134,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,103,0,0,0,0,0,32,229,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,252,252,108,19,0,0,7,150,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,253,215,159,134,204,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,252,253,252,252,252,253,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,254,233,241,254,231,160,157,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,254,254,254,254,254,254,254,254,235,209,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,231,244,244,244,244,244,245,253,254,254,254,222,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,88,200,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,109,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,238,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,134,237,254,218,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,186,251,254,254,254,183,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,157,214,248,254,254,254,254,254,167,81,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,254,254,254,254,254,254,254,254,176,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,254,230,165,95,95,157,250,254,255,198,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,149,122,77,18,0,0,0,0,26,146,242,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,247,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,86,232,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,86,172,240,254,254,254,128,0,0,0,0,0,0,0,0,0,30,57,57,57,133,117,151,196,210,246,245,249,254,254,254,254,254,149,3,0,0,0,0,0,0,0,0,182,236,254,254,254,254,254,254,254,254,254,254,254,254,254,251,194,76,6,0,0,0,0,0,0,0,0,0,66,149,163,254,254,254,254,254,254,254,230,194,159,159,72,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,255,253,210,143,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,176,199,252,253,252,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,230,252,252,252,154,153,235,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,227,252,243,202,24,0,35,232,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,240,221,59,78,104,32,155,252,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,221,127,252,252,230,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,170,74,165,251,253,252,200,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,244,253,252,155,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,216,252,253,252,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,111,210,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,223,252,146,0,147,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,222,20,0,67,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,118,0,0,67,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,236,243,51,0,0,67,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,208,0,0,0,153,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,249,149,26,89,246,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,252,253,252,216,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,222,252,252,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,142,190,128,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,144,144,144,144,145,144,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,37,192,217,217,253,251,251,251,251,253,251,246,217,87,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,79,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,232,77,0,0,0,0,0,0,0,0,0,0,0,255,253,190,180,180,0,0,0,0,0,130,105,243,253,253,255,149,10,0,0,0,0,0,0,0,0,0,0,108,107,15,0,0,0,0,0,0,0,0,0,113,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,73,73,73,73,73,73,99,253,253,255,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,176,251,251,251,251,253,251,251,251,251,253,251,159,83,0,0,0,0,0,0,0,0,0,0,0,6,115,241,253,251,251,251,251,253,251,251,251,251,253,251,251,236,217,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,251,122,0,0,0,0,0,0,0,0,0,0,37,253,253,255,253,253,253,253,255,253,242,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,169,251,253,251,251,251,251,253,168,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,35,87,215,215,215,86,35,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,255,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,236,251,251,253,251,236,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,251,251,251,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,251,251,251,251,175,251,251,189,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,122,73,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,253,253,253,72,73,253,242,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,188,30,31,189,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,142,0,0,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,142,0,0,63,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,142,0,53,221,251,251,251,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,253,143,0,255,253,253,253,253,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,210,253,251,251,142,0,253,251,251,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,251,251,236,87,253,251,251,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,251,251,251,251,253,251,251,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,255,253,253,253,253,234,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,253,251,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,138,246,251,251,253,251,251,251,225,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,251,253,251,251,204,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,147,71,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,121,204,253,253,255,253,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,212,242,252,252,252,252,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,235,252,252,252,252,252,252,253,252,217,25,0,0,65,35,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,252,239,172,95,39,103,172,38,26,81,178,240,205,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,224,65,0,0,0,0,0,110,216,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,207,103,23,0,26,180,245,252,252,252,243,177,0,0,0,0,0,0,0,0,0,0,0,0,121,246,252,252,252,252,199,41,141,252,252,252,241,184,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,219,252,252,252,252,252,253,252,252,187,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,106,197,247,252,252,253,252,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,253,252,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,255,253,253,253,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,247,252,252,146,190,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,244,252,247,89,0,11,229,252,252,233,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,196,0,0,0,35,177,252,252,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,252,245,78,0,0,0,0,81,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,127,0,0,0,0,0,81,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,114,0,0,0,0,37,178,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,245,252,242,160,160,161,160,243,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,252,252,253,252,252,252,248,140,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,119,203,252,252,253,252,252,139,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,60,113,208,234,253,252,249,208,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,252,253,252,252,252,42,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,252,252,133,132,139,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,194,90,0,0,60,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,188,23,30,31,66,226,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,217,252,210,155,252,253,252,252,252,212,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,252,252,252,252,253,252,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,252,252,225,208,244,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,103,244,225,43,0,208,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,235,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,244,239,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,201,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,220,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,234,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,96,255,221,0,0,0,0,0,0,0,0,0,0,0,12,8,0,0,0,0,0,0,0,0,0,0,16,186,251,253,244,190,43,0,0,0,0,0,0,0,0,0,96,62,0,0,0,0,0,0,0,0,0,96,189,251,251,253,251,251,109,0,0,0,0,0,0,0,0,0,12,8,0,0,0,0,0,0,0,40,124,244,251,251,251,253,243,188,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,251,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,134,253,255,253,253,253,253,159,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,223,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,251,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,225,251,251,251,253,85,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,158,253,251,251,251,251,193,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,253,253,253,95,96,96,96,96,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,251,253,251,251,243,102,253,251,251,251,212,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,220,205,253,251,251,251,251,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,112,248,251,253,251,251,251,251,253,251,251,251,251,253,228,32,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,251,251,253,251,251,251,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,80,242,253,255,253,253,253,253,255,253,253,253,253,255,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,251,251,253,251,251,251,251,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,251,251,253,251,251,251,251,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,251,253,251,251,251,251,253,251,251,196,188,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,253,251,251,251,251,253,132,94,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,187,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,180,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,203,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,56,169,236,247,254,249,59,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,231,253,253,253,253,254,253,142,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,255,254,254,222,51,0,125,222,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,208,164,83,17,0,0,125,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,214,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,248,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,232,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,149,100,47,0,0,0,0,0,15,230,253,225,17,0,0,0,0,0,0,0,0,0,0,0,0,0,107,239,253,254,235,106,44,0,0,48,217,253,233,35,0,0,0,0,0,0,0,0,0,0,0,0,0,62,238,254,179,153,226,254,254,214,144,226,254,246,90,31,17,0,0,0,0,0,0,0,0,0,0,0,0,125,253,79,5,0,10,63,221,253,254,253,253,253,230,232,46,0,0,0,0,0,0,0,0,0,0,0,0,121,209,3,0,0,35,112,231,253,254,218,241,253,237,106,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,192,169,169,240,253,253,245,131,6,11,14,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,254,253,253,186,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,36,133,226,254,104,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,145,161,253,253,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,209,253,231,136,96,96,206,253,212,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,204,254,249,78,0,0,0,86,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,236,253,254,200,0,0,0,0,86,253,227,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,217,253,253,210,26,0,0,0,0,86,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,155,23,0,0,0,0,0,86,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,156,105,19,0,0,0,0,0,0,189,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,226,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,8,0,0,0,0,0,0,38,226,250,34,0,0,0,0,0,0,0,0,0,0,0,0,0,40,145,145,233,212,145,88,25,83,25,48,223,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,41,222,253,253,253,253,253,253,254,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,3,61,222,253,218,205,164,130,205,228,254,253,253,253,253,253,144,7,0,0,0,0,0,0,0,0,0,0,13,253,253,189,21,0,0,0,0,122,254,253,253,253,253,253,253,192,46,0,0,0,0,0,0,0,0,0,106,253,243,60,0,0,0,0,67,217,254,253,132,60,89,236,253,253,144,0,0,0,0,0,0,0,0,0,133,253,159,0,0,0,29,86,238,253,250,157,18,0,0,72,237,253,144,0,0,0,0,0,0,0,0,0,133,253,248,195,98,190,230,253,253,207,92,0,0,0,0,0,29,36,21,0,0,0,0,0,0,0,0,0,82,253,253,253,253,253,253,211,144,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,202,253,253,253,160,92,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,45,139,139,128,87,192,139,139,139,245,139,87,44,24,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,212,254,253,253,253,253,254,253,253,253,253,163,141,34,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,254,253,253,253,253,254,253,253,222,222,254,253,203,13,0,0,0,0,0,0,0,0,0,254,253,228,161,161,46,46,46,46,46,46,46,46,25,25,65,253,253,88,0,0,0,0,0,0,0,0,0,149,179,48,0,0,0,0,0,0,0,0,0,0,0,0,13,212,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,150,254,254,193,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,22,34,68,245,254,253,209,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,216,235,222,253,254,135,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,234,253,253,253,253,140,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,138,137,190,180,200,11,75,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,137,147,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,145,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,228,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,75,0,0,0,0,0,0,0,0,0,0,0,62,77,24,24,7,0,0,0,0,0,0,0,0,36,170,212,13,0,0,0,0,0,0,0,0,0,0,0,166,253,254,253,186,162,57,43,0,0,17,47,58,220,253,173,8,0,0,0,0,0,0,0,0,0,0,20,221,253,255,253,253,253,253,248,185,185,157,253,255,253,171,13,0,0,0,0,0,0,0,0,0,0,0,45,194,253,254,253,253,253,253,254,253,253,253,253,246,88,13,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,149,253,253,253,253,244,137,137,43,23,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,123,201,253,253,254,209,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,245,168,168,183,252,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,252,82,0,0,4,21,181,221,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,196,7,0,0,0,0,57,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,124,0,0,0,0,0,4,182,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,63,0,0,0,0,0,0,64,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,253,63,0,0,0,0,0,0,64,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,223,32,0,0,0,0,0,0,64,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,35,0,0,0,0,0,0,0,64,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,43,114,148,148,104,96,139,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,191,237,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,119,241,253,201,126,56,21,38,91,181,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,128,21,0,0,0,0,0,197,252,252,187,16,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,121,0,0,0,0,0,0,116,249,226,191,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,233,190,0,0,0,0,0,0,43,227,223,35,45,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,232,189,0,0,0,0,0,0,227,252,91,0,0,174,252,21,0,0,0,0,0,0,0,0,0,0,0,0,170,221,127,22,22,22,119,232,253,166,2,0,0,96,252,109,0,0,0,0,0,0,0,0,0,0,0,0,7,111,215,253,252,252,252,252,172,21,0,0,0,14,84,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,252,199,147,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,227,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,244,246,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,110,251,244,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,253,129,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,246,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,216,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,244,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,243,0,0,0,5,111,236,91,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,253,165,0,0,0,139,253,253,253,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,40,0,0,92,254,253,171,249,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,168,1,0,0,217,255,131,2,234,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,165,0,0,0,221,233,27,0,205,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,196,8,0,100,247,48,0,0,243,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,250,253,26,0,188,253,59,0,102,247,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,201,45,199,253,242,155,237,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,253,253,253,253,254,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,253,253,253,254,176,100,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,107,255,254,255,191,111,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,253,253,244,161,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,147,249,253,253,253,253,253,253,253,253,232,109,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,253,180,170,172,253,253,253,253,253,253,170,27,0,0,0,0,0,0,0,0,0,0,0,0,10,237,253,253,186,3,0,1,63,143,232,253,253,253,253,185,4,0,0,0,0,0,0,0,0,0,0,0,94,253,253,186,129,0,0,0,0,0,13,114,249,253,253,253,137,0,0,0,0,0,0,0,0,0,0,3,188,253,214,11,0,0,0,0,0,0,0,0,182,249,253,253,248,44,0,0,0,0,0,0,0,0,0,47,253,253,103,0,0,0,0,0,0,0,0,0,0,95,247,253,253,160,0,0,0,0,0,0,0,0,0,47,253,253,67,0,0,0,0,0,0,0,0,0,0,0,141,253,253,197,1,0,0,0,0,0,0,0,0,47,253,253,67,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,46,0,0,0,0,0,0,0,0,88,253,253,67,0,0,0,0,0,0,0,0,0,0,0,5,188,253,253,46,0,0,0,0,0,0,0,0,49,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,171,253,244,39,0,0,0,0,0,0,0,0,90,253,253,233,15,0,0,0,0,0,0,0,0,0,0,8,200,253,196,0,0,0,0,0,0,0,0,0,47,253,253,253,133,10,0,0,0,0,0,0,0,0,0,77,253,253,141,0,0,0,0,0,0,0,0,0,14,181,253,253,253,151,0,0,0,0,0,0,0,0,0,156,253,246,27,0,0,0,0,0,0,0,0,0,0,10,236,253,253,246,179,57,12,0,0,0,0,0,122,251,253,235,0,0,0,0,0,0,0,0,0,0,0,0,61,236,253,253,253,253,218,150,68,68,68,124,230,253,235,103,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,253,253,253,253,253,253,253,253,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,165,200,253,253,253,253,253,253,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,135,253,253,253,253,198,118,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,113,146,43,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,85,252,250,250,250,250,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,252,250,250,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,250,250,250,250,252,250,250,250,250,239,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,250,250,250,74,217,41,146,250,250,252,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,252,252,83,0,0,0,0,141,246,254,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,250,250,83,0,0,0,0,0,210,252,250,166,28,0,0,0,0,0,0,0,0,0,0,0,0,85,230,252,250,187,41,0,0,0,0,0,210,252,250,250,83,0,0,0,0,0,0,0,0,0,0,0,0,168,250,252,250,125,0,0,0,0,0,0,210,252,250,250,83,0,0,0,0,0,0,0,0,0,0,0,107,237,250,252,179,20,0,0,0,0,0,0,210,252,250,250,83,0,0,0,0,0,0,0,0,0,0,15,148,252,252,254,167,0,0,0,0,0,0,0,212,255,252,252,83,0,0,0,0,0,0,0,0,0,0,85,250,250,250,252,166,0,0,0,0,0,0,0,210,252,250,208,55,0,0,0,0,0,0,0,0,0,0,85,250,250,250,252,166,0,0,0,0,0,0,85,230,252,250,125,0,0,0,0,0,0,0,0,0,0,0,85,250,250,250,252,166,0,0,0,0,0,0,168,250,252,250,125,0,0,0,0,0,0,0,0,0,0,0,85,250,250,250,252,166,0,0,0,0,0,107,237,250,252,179,20,0,0,0,0,0,0,0,0,0,0,0,71,231,252,252,254,182,43,43,43,43,113,252,252,252,255,167,0,0,0,0,0,0,0,0,0,0,0,0,0,127,250,250,252,250,250,250,250,252,250,250,250,250,238,111,0,0,0,0,0,0,0,0,0,0,0,0,0,63,209,250,252,250,250,250,250,252,250,250,250,250,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,223,252,250,250,250,250,252,250,250,250,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,250,250,250,250,252,250,144,41,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,239,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,249,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,231,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,220,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,76,76,76,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,239,134,89,61,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,253,253,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,27,27,27,27,78,134,171,248,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,176,253,245,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,245,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,101,135,66,55,13,0,55,253,253,232,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,233,253,253,253,253,213,200,212,253,253,253,123,53,69,0,12,93,93,0,0,0,0,0,0,0,0,36,243,253,253,253,253,253,253,253,253,253,253,253,253,247,250,238,240,253,244,0,0,0,0,0,0,0,0,110,253,253,218,159,91,194,240,253,253,253,253,253,253,253,253,253,253,211,65,0,0,0,0,0,0,0,0,146,253,161,20,0,0,82,242,253,253,253,162,156,156,156,156,66,95,15,0,0,0,0,0,0,0,0,0,239,188,21,0,0,172,250,253,245,96,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,215,84,173,245,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,253,253,253,253,174,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,145,249,253,253,224,154,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,75,75,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,30,111,100,99,13,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,25,89,207,253,253,253,253,253,115,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,130,253,254,253,253,253,253,253,253,253,160,2,0,0,0,0,0,0,0,0,0,0,0,0,0,14,49,185,253,253,254,253,253,244,205,242,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,253,253,254,218,118,58,0,55,190,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,53,211,253,253,253,253,175,26,0,0,0,0,86,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,213,0,0,0,0,0,25,199,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,114,19,0,0,0,0,0,73,253,253,211,7,0,0,0,0,0,0,0,0,0,0,0,97,247,253,253,159,14,0,0,0,0,0,0,183,253,253,144,0,0,0,0,0,0,0,0,0,0,70,138,250,253,253,115,2,0,0,0,0,0,0,174,251,253,207,18,0,0,0,0,0,0,0,0,0,7,203,254,254,252,116,0,0,0,0,0,0,2,36,220,254,254,36,0,0,0,0,0,0,0,0,0,0,82,253,253,249,117,0,0,0,0,0,0,3,116,253,253,246,130,15,0,0,0,0,0,0,0,0,0,0,209,253,231,78,0,0,0,0,0,0,2,116,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,254,253,217,0,0,0,0,0,0,0,117,253,253,253,189,20,0,0,0,0,0,0,0,0,0,0,0,0,254,253,243,158,18,0,0,0,0,117,254,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,128,218,253,253,182,73,73,177,194,251,254,253,225,60,17,0,0,0,0,0,0,0,0,0,0,0,0,0,3,45,253,253,253,253,253,253,253,253,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,217,253,253,253,253,253,253,253,254,198,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,253,253,253,253,253,149,139,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,11,11,11,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,167,254,255,204,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,147,251,254,254,254,254,202,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,222,254,254,217,116,84,242,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,126,231,254,254,120,11,0,0,157,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,94,254,254,254,250,116,12,0,0,0,143,254,248,49,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,254,252,76,0,0,0,0,0,77,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,25,237,254,254,254,74,0,0,0,0,0,0,54,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,254,102,1,0,0,0,0,0,0,111,254,246,45,0,0,0,0,0,0,0,0,0,0,0,29,231,254,254,184,2,0,0,0,0,0,0,0,143,254,227,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,246,10,0,0,0,0,0,0,0,0,158,254,180,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,128,0,0,0,0,0,0,0,0,43,242,254,127,0,0,0,0,0,0,0,0,0,0,0,27,239,254,236,15,0,0,0,0,0,0,0,0,194,254,237,28,0,0,0,0,0,0,0,0,0,0,0,63,254,254,167,0,0,0,0,0,0,0,0,123,251,254,147,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,142,0,0,0,0,0,0,0,32,226,254,208,24,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,142,0,0,0,0,0,0,35,224,254,236,51,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,80,0,0,0,0,0,56,221,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,142,0,0,0,24,166,248,254,253,95,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,217,30,117,204,233,254,250,189,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,193,254,254,254,254,254,251,161,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,163,254,254,254,165,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,247,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,167,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,230,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,131,214,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,68,83,168,152,180,84,90,46,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,95,218,254,254,254,254,254,254,254,254,210,207,97,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,251,247,234,162,105,67,67,67,90,150,150,101,0,0,0,0,0,0,0,0,0,0,0,0,7,196,254,240,125,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,114,128,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,233,224,210,128,70,99,144,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,254,250,243,254,247,246,158,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,80,121,111,156,202,254,254,246,164,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,57,178,254,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,227,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,115,54,0,0,0,0,0,0,0,0,0,12,192,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,226,46,0,0,0,0,0,0,0,32,63,156,254,200,11,0,0,0,0,0,0,0,0,0,0,0,0,0,206,238,92,19,0,0,0,0,122,174,254,254,200,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,231,254,243,232,218,239,239,251,254,218,68,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,69,124,157,125,179,179,179,97,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,128,64,128,128,64,64,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,191,128,128,128,128,191,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,67,159,247,142,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,29,29,37,126,126,131,222,240,254,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,21,143,254,254,254,254,254,254,254,254,254,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,254,254,254,254,254,254,245,197,133,86,1,0,0,0,0,0,0,0,0,0,0,0,0,0,9,149,254,254,240,230,230,212,128,38,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,189,14,54,85,149,149,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,222,254,254,254,254,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,254,254,254,254,254,254,254,254,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,192,206,206,162,111,111,74,190,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,197,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,124,236,236,137,17,0,0,0,0,44,254,249,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,244,80,2,0,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,230,0,0,0,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,234,11,0,0,0,0,0,56,192,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,213,49,5,5,60,143,236,254,254,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,254,254,254,254,254,254,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,145,237,254,254,254,254,254,254,244,168,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,191,254,254,254,236,152,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,159,138,76,24,24,24,24,34,138,138,138,243,255,253,222,25,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,45,0,0,0,0,0,0,0,0,0,0,34,234,252,252,253,252,252,252,252,253,252,252,252,252,253,252,233,33,0,0,0,0,0,0,0,0,0,0,9,154,252,252,253,252,252,252,252,253,252,227,194,252,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,7,22,75,137,137,137,137,137,75,22,16,93,252,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,252,134,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,236,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,210,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,121,121,121,247,253,253,218,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,198,241,252,252,253,252,252,252,252,249,219,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,252,252,252,202,159,158,158,158,233,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,172,81,39,39,19,0,0,0,0,88,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,211,252,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,252,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,180,252,245,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,185,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,190,252,252,139,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,190,255,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,185,252,253,95,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,185,229,252,202,97,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,116,221,252,243,165,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,196,252,252,206,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,197,252,238,170,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,164,0,0,0,0,22,41,41,41,41,41,41,41,41,38,0,0,0,0,0,0,0,0,0,13,241,252,252,179,160,160,160,160,208,253,252,252,252,252,252,252,252,247,76,0,0,0,0,0,0,0,0,121,252,252,252,252,252,252,252,252,252,253,252,252,252,241,238,238,240,251,113,0,0,0,0,0,0,0,0,57,245,252,252,252,252,252,252,174,119,120,119,119,119,25,0,0,13,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,32,0,0,15,43,43,87,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,173,191,190,221,237,190,191,211,252,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,214,253,252,244,252,252,253,245,231,231,231,127,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,231,58,154,189,190,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,254,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,132,0,0,36,191,190,190,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,253,63,11,119,241,253,252,252,247,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,189,211,252,252,216,189,221,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,226,103,18,0,39,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,254,253,223,35,0,0,0,39,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,252,91,0,0,0,0,127,252,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,126,127,47,2,0,0,0,52,234,252,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,11,206,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,106,212,228,106,0,0,175,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,254,253,127,11,87,255,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,217,116,171,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,253,252,252,252,252,250,73,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,128,253,252,252,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,226,252,226,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,194,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,118,235,215,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,236,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,235,253,247,244,254,251,166,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,118,49,45,81,238,253,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,255,151,0,0,0,0,8,183,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,249,36,0,0,0,0,0,42,244,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,165,0,0,0,0,0,0,0,166,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,8,0,0,0,0,0,0,0,84,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,0,0,0,0,0,0,0,0,24,230,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,0,0,0,0,0,0,0,0,0,196,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,0,0,0,0,0,0,0,0,0,195,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,0,0,0,0,0,0,0,0,0,195,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,0,0,0,0,0,0,0,0,0,195,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,114,0,0,0,0,0,0,0,0,195,208,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,232,24,0,0,0,0,0,0,25,231,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,151,254,213,44,0,0,0,0,0,167,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,229,111,0,0,0,85,247,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,184,241,250,234,212,182,247,247,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,148,230,254,253,185,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,141,216,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,169,169,243,253,252,252,252,144,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,172,197,253,233,168,68,56,112,228,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,243,252,202,128,22,0,0,63,206,252,102,28,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,168,0,0,0,0,13,254,247,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,234,224,169,57,57,57,144,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,234,252,253,252,252,252,253,190,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,28,140,215,252,252,253,252,252,252,226,225,187,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,176,113,113,213,226,244,253,253,254,253,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,38,0,0,0,0,56,122,196,222,234,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,0,0,0,0,0,0,0,0,25,131,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,0,0,0,0,0,0,0,0,0,7,203,252,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,0,0,0,0,0,0,0,0,0,7,204,253,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,0,0,0,0,0,0,0,0,10,172,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,252,0,0,0,0,0,0,0,0,79,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,129,22,0,0,0,0,10,79,254,234,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,159,253,234,131,57,57,131,197,252,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,178,252,252,252,253,252,224,168,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,139,139,140,115,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,171,253,232,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,197,217,237,253,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,252,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,252,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,189,191,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,179,179,179,77,233,252,252,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,252,253,189,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,181,252,231,154,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,191,253,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,252,252,231,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,201,252,252,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,252,179,0,84,145,104,0,0,0,0,0,0,0,125,41,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,255,253,253,253,255,253,253,253,255,253,253,108,0,0,0,0,0,0,0,0,211,252,252,252,252,252,252,252,253,252,252,252,253,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,94,215,215,215,252,252,252,252,253,252,246,215,232,252,252,252,154,154,71,31,0,0,0,0,0,0,0,0,0,0,0,1,108,108,211,168,108,108,92,0,47,108,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,150,219,255,191,111,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,236,253,253,253,253,253,181,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,251,149,116,217,246,253,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,240,253,85,0,0,0,94,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,186,3,0,0,0,0,153,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,181,0,0,0,0,69,221,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,215,15,0,0,46,235,253,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,249,253,125,0,0,40,109,88,22,0,45,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,245,84,1,0,0,0,0,74,242,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,142,253,253,169,53,11,0,76,248,253,249,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,189,253,253,253,213,202,241,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,73,153,212,212,246,212,191,221,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,135,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,221,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,83,112,158,168,212,254,255,254,254,181,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,247,254,254,254,254,214,176,176,146,176,235,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,158,95,95,18,8,4,0,0,0,0,111,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,0,0,0,0,0,0,0,85,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,250,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,208,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,243,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,188,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,241,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,190,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,199,151,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,250,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,236,175,28,155,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,197,219,7,0,61,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,247,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,238,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,237,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,248,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,11,0,31,44,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,217,48,214,246,254,250,180,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,240,235,212,124,61,61,205,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,172,4,0,0,0,17,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,11,0,0,0,0,28,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,11,0,0,0,17,209,214,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,255,88,0,0,59,197,249,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,215,105,134,242,218,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,134,252,254,254,191,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,132,132,133,144,253,172,132,132,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,252,252,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,96,96,96,96,96,200,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,233,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,239,234,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,242,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,252,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,247,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,252,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,184,252,229,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,226,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,241,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,213,252,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,220,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,160,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,13,88,132,161,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,17,0,11,25,150,252,252,252,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,230,220,157,198,252,253,252,230,223,252,252,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,33,189,252,252,252,252,252,199,84,39,145,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,252,145,72,0,0,123,252,252,235,36,0,0,0,0,0,0,0,0,0,0,0,0,0,121,233,252,252,228,76,6,0,0,7,184,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,228,54,0,0,0,0,123,252,252,162,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,116,155,54,0,0,0,0,11,237,252,210,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,236,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,255,235,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,140,243,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,252,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,241,252,133,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,179,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,221,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,94,104,104,104,27,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,253,253,253,253,172,89,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,39,18,18,106,153,221,253,253,253,211,128,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,11,0,0,0,0,16,47,137,234,254,253,213,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,181,253,253,131,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,86,234,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,29,4,0,53,233,250,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,95,150,219,253,254,195,188,126,147,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,239,188,188,255,254,254,254,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,231,253,160,25,0,0,28,28,101,184,250,253,212,33,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,238,17,0,0,0,0,0,11,131,249,253,253,240,71,0,0,0,0,0,0,0,0,0,0,0,0,76,253,239,23,0,0,28,76,159,234,253,239,170,116,250,243,44,0,0,0,0,0,0,0,0,0,0,0,6,219,253,240,200,235,241,254,253,233,178,57,0,0,209,253,169,0,0,0,0,0,0,0,0,0,0,0,0,44,182,234,234,250,239,210,92,28,0,0,0,0,57,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,20,0,0,0,0,0,0,0,17,217,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,118,210,254,254,254,206,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,250,253,253,253,253,253,253,248,234,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,250,253,253,243,170,40,40,89,198,253,249,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,107,53,0,0,0,0,17,172,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,202,20,0,0,0,0,0,19,67,253,246,0,0,0,28,57,161,16,0,0,0,0,0,0,0,0,254,253,181,4,0,0,0,0,49,197,226,253,246,0,6,133,232,253,253,116,0,0,0,0,0,0,0,0,254,253,253,61,0,0,0,0,0,34,218,239,120,0,104,253,253,253,242,57,0,0,0,0,0,0,0,0,144,245,253,249,229,105,0,0,0,0,5,5,3,111,243,253,226,121,6,0,0,0,0,0,0,0,0,0,0,77,190,253,253,252,227,227,104,66,0,74,228,253,217,164,49,0,0,0,0,0,0,0,0,0,0,0,0,0,15,151,194,253,253,253,253,240,206,237,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,68,138,226,253,253,253,253,253,253,226,67,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,89,223,253,253,253,253,253,253,184,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,233,253,159,187,246,249,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,230,46,0,0,53,237,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,238,253,149,0,0,0,0,90,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,193,9,0,0,0,34,213,253,240,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,77,0,0,0,0,212,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,251,253,192,179,164,121,179,249,253,243,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,253,253,253,253,253,233,232,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,239,178,253,253,253,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,192,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,119,7,0,0,0,0,0,0,0,52,242,252,50,0,0,0,0,0,0,0,0,0,0,0,0,27,126,232,252,154,0,0,0,0,0,0,11,206,252,252,42,0,0,0,0,0,0,0,0,0,0,0,71,211,253,252,244,111,0,0,0,0,0,0,130,252,252,226,24,0,0,0,0,0,0,0,0,0,0,101,253,253,254,186,9,0,0,0,0,0,0,0,166,253,253,128,0,0,0,0,0,0,0,0,0,0,64,247,252,252,142,16,0,0,0,0,0,0,0,80,253,252,245,56,0,0,0,0,0,0,0,0,0,22,213,252,252,146,9,0,0,0,0,0,0,0,6,206,253,252,222,0,0,0,0,0,0,0,0,0,0,87,252,252,236,31,0,0,0,0,0,0,0,41,190,252,253,252,126,0,0,0,0,0,0,0,0,0,0,43,252,252,101,0,0,0,0,0,0,18,106,223,252,252,253,217,29,0,0,0,0,0,0,0,0,0,0,43,253,253,113,43,43,43,43,114,192,255,253,253,253,253,255,107,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,253,252,252,252,252,253,224,201,252,252,222,16,0,0,0,0,0,0,0,0,0,0,0,4,135,251,252,252,253,252,252,238,187,109,21,234,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,154,145,190,215,92,28,0,0,112,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,36,242,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,210,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,253,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,235,218,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,191,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,252,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,254,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,196,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,210,252,241,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,216,253,253,101,0,10,79,141,141,141,141,29,10,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,233,145,0,38,172,252,253,252,252,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,104,222,253,252,130,0,98,234,252,177,168,168,196,252,253,221,25,0,0,0,0,0,0,0,0,0,0,101,246,252,253,102,44,163,253,252,127,3,0,0,85,252,253,96,0,0,0,0,0,0,0,0,0,0,0,169,253,253,101,45,178,253,239,125,10,29,41,216,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,169,225,252,252,207,169,197,252,253,252,233,145,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,253,252,252,252,253,252,252,252,253,196,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,139,253,252,252,252,253,177,139,90,28,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,105,236,147,49,0,62,0,0,25,105,105,148,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,228,208,234,208,209,218,252,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,4,118,252,247,148,245,252,252,252,247,249,251,244,238,219,88,5,0,0,0,0,0,0,0,0,0,0,0,60,252,252,177,0,71,132,132,132,79,110,125,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,173,252,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,74,0,16,72,193,194,158,45,45,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,178,149,185,252,252,253,252,252,252,160,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,253,253,253,253,255,253,253,253,253,235,105,6,0,0,0,0,0,0,0,0,0,0,0,0,12,220,252,252,252,230,165,44,44,44,53,192,245,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,113,237,237,157,57,0,0,0,0,0,0,79,204,252,220,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,162,230,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,64,95,0,0,0,0,0,0,0,88,189,252,252,252,252,59,0,0,0,0,0,0,0,0,0,0,0,9,197,248,238,159,90,90,90,91,125,247,252,252,252,252,115,4,0,0,0,0,0,0,0,0,0,0,0,0,99,246,252,252,252,252,252,253,252,252,252,238,102,59,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,208,252,252,252,252,253,252,154,103,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,255,253,253,253,255,211,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,252,253,252,252,252,253,252,247,217,73,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,201,252,252,253,252,252,252,253,252,252,252,253,66,32,0,0,0,0,0,0,0,0,0,0,0,0,1,191,252,252,252,253,252,252,252,253,252,252,252,253,252,236,62,0,0,0,0,0,0,0,0,0,0,0,63,252,252,252,252,206,20,0,0,62,174,252,252,253,252,236,62,0,0,0,0,0,0,0,0,0,0,0,20,252,252,252,252,144,0,0,0,0,10,56,221,253,252,247,134,0,0,0,0,0,0,0,0,0,0,0,21,252,252,252,252,125,0,0,0,0,0,0,144,253,252,252,231,0,0,0,0,0,0,0,0,0,0,0,62,252,252,252,252,145,20,0,0,0,0,0,62,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,1,253,253,253,253,255,253,232,109,63,0,16,109,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,1,179,242,252,252,253,252,252,252,238,217,222,252,253,252,231,88,0,0,0,0,0,0,0,0,0,0,0,0,0,103,221,252,253,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,252,252,253,252,252,252,253,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,144,207,255,253,253,253,255,253,175,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,237,253,252,252,252,180,55,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,37,37,161,232,252,253,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,63,144,144,144,144,144,221,252,253,252,252,252,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,255,253,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,253,252,252,252,222,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,113,215,236,231,241,215,215,217,215,112,71,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,47,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,54,193,148,47,47,47,47,47,79,100,47,136,150,109,0,0,0,0,0,0,0,0,0,0,0,104,203,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,172,253,253,236,217,217,196,114,173,174,217,217,208,114,114,114,71,0,0,0,0,0,0,0,0,0,0,0,84,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,133,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,233,235,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,193,53,53,53,53,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,253,222,162,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,81,161,212,169,212,230,253,253,173,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,101,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,231,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,226,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,5,0,0,0,0,2,90,223,253,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,84,0,0,7,68,164,253,253,218,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,160,191,222,253,253,251,196,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,194,253,253,253,253,197,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,104,116,46,46,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,114,148,210,253,253,156,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,190,221,252,182,168,231,252,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,236,222,56,4,0,16,21,175,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,225,21,0,0,0,0,0,59,190,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,124,0,0,0,0,0,0,232,226,147,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,124,0,0,0,0,8,157,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,225,21,0,0,0,157,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,161,253,202,127,127,171,250,247,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,200,252,252,252,252,115,190,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,138,121,42,0,190,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,118,118,118,165,254,254,255,254,254,180,210,89,0,0,0,0,0,0,0,0,0,0,0,0,37,212,234,247,253,253,253,253,253,253,253,253,253,253,253,248,69,0,0,0,0,0,0,0,0,0,0,0,68,241,253,253,249,177,177,177,177,177,88,40,108,177,243,253,202,29,0,0,0,0,0,0,0,0,0,0,0,52,61,61,58,0,0,0,0,0,0,0,0,0,116,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,251,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,237,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,243,253,208,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,138,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,213,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,230,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,186,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,137,253,255,254,169,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,246,254,254,254,254,254,238,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,248,254,254,236,254,254,254,254,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,248,250,149,40,86,254,187,175,254,254,241,105,16,0,0,0,0,0,0,0,0,0,0,0,0,0,36,220,254,122,0,0,15,105,68,7,161,254,254,254,224,36,0,0,0,0,0,0,0,0,0,0,0,0,155,254,192,14,0,0,0,0,0,0,18,254,254,250,254,206,22,0,0,0,0,0,0,0,0,0,0,26,245,254,68,0,0,0,0,0,0,0,6,175,254,58,239,254,208,21,0,0,0,0,0,0,0,0,0,132,254,205,1,0,0,0,0,0,0,0,0,94,254,9,23,206,254,87,0,0,0,0,0,0,0,0,0,165,254,122,0,0,0,0,0,0,0,0,0,74,186,4,0,38,243,234,0,0,0,0,0,0,0,0,0,165,254,116,0,0,0,0,0,0,0,0,0,1,11,0,0,0,205,252,67,0,0,0,0,0,0,0,0,165,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,76,0,0,0,0,0,0,0,0,165,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,76,0,0,0,0,0,0,0,0,165,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,76,0,0,0,0,0,0,0,0,165,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,245,25,0,0,0,0,0,0,0,0,141,254,252,117,0,0,0,0,0,0,0,0,0,0,0,0,120,254,217,0,0,0,0,0,0,0,0,0,7,192,254,251,123,14,0,0,0,0,0,0,0,0,0,50,238,254,70,0,0,0,0,0,0,0,0,0,0,21,186,254,254,193,69,29,0,0,0,0,0,0,63,231,254,185,9,0,0,0,0,0,0,0,0,0,0,0,27,168,248,254,254,240,205,205,131,117,118,205,252,254,226,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,185,245,254,254,254,254,254,254,254,241,158,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,101,164,164,207,222,221,105,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,89,138,47,114,123,138,198,243,251,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,224,253,253,254,253,253,253,254,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,170,253,253,253,254,253,253,185,161,143,69,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,229,229,82,9,93,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,241,253,157,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,199,253,244,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,245,161,70,70,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,253,253,254,253,226,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,245,253,253,253,254,253,253,253,183,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,160,152,69,69,69,86,253,254,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,159,255,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,102,254,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,83,199,224,99,0,0,0,0,9,30,191,240,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,228,34,0,0,0,25,105,253,253,254,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,195,78,70,70,70,237,254,254,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,131,244,253,254,253,253,253,254,253,253,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,79,245,253,253,253,247,230,154,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,69,69,69,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,109,161,202,255,254,255,191,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,253,254,253,202,180,233,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,145,125,73,11,0,0,110,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,243,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,244,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,244,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,234,254,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,253,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,135,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,181,78,0,0,0,0,0,0,120,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,212,21,0,0,0,0,0,223,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,171,16,0,0,27,171,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,150,253,254,202,73,115,213,253,191,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,176,255,254,255,254,254,181,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,180,223,160,78,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,141,255,254,231,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,210,151,20,20,119,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,235,97,0,0,0,64,227,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,92,0,0,0,0,144,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,232,91,0,0,0,0,172,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,12,0,0,0,2,215,250,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,191,0,0,0,0,45,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,125,0,0,0,0,207,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,124,0,0,0,0,127,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,160,0,0,0,95,249,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,220,48,17,123,232,91,213,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,214,233,194,30,0,213,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,67,8,0,0,117,244,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,147,254,254,183,118,240,254,254,255,251,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,223,240,253,253,253,253,253,253,253,253,253,253,244,64,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,253,253,185,239,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,246,198,128,61,7,102,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,38,133,104,82,71,0,0,0,0,88,253,253,253,236,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,63,234,253,252,236,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,111,247,253,253,253,238,111,111,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,109,228,253,253,253,253,253,253,253,253,242,182,68,0,0,0,0,0,0,0,0,0,0,0,0,0,62,216,253,253,253,253,253,253,253,253,253,253,253,253,242,99,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,206,82,68,68,68,68,68,218,253,253,220,19,0,0,0,0,0,0,0,0,0,0,0,68,226,226,143,89,2,0,0,0,0,0,0,36,217,253,253,187,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,148,250,253,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,83,245,253,253,253,187,0,0,0,0,0,0,0,0,0,0,110,199,199,199,199,128,63,63,63,89,199,201,253,253,253,238,169,21,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,253,253,253,253,253,253,253,253,240,86,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,253,253,253,253,253,253,241,232,176,65,0,0,0,0,0,0,0,0,0,0,0,0,0,45,116,220,253,178,182,250,253,253,152,116,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,93,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,167,132,132,132,98,132,146,226,234,211,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,204,181,223,200,254,254,254,254,251,105,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,16,0,0,41,120,226,254,251,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,213,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,141,250,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,0,214,197,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,109,245,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,226,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,255,244,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,218,231,199,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,65,73,223,215,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,197,3,0,67,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,233,133,0,0,0,154,246,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,169,0,0,0,18,184,245,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,238,169,0,0,0,0,101,254,176,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,251,168,57,92,82,201,254,90,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,254,255,235,93,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,66,212,254,218,219,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,132,173,253,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,252,253,252,253,232,0,0,62,102,82,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,253,183,102,102,102,173,253,0,0,153,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,233,70,0,0,0,0,31,111,0,123,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,142,0,0,0,0,0,0,41,173,253,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,252,183,0,0,0,0,41,123,243,253,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,213,21,0,113,233,254,253,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,252,223,203,253,252,233,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,253,254,253,254,192,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,252,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,244,223,224,243,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,212,141,122,20,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,192,41,0,0,203,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,111,0,0,0,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,142,0,0,0,11,213,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,130,20,0,0,0,92,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,50,0,0,0,41,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,131,62,102,163,243,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,255,253,255,253,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,151,232,253,252,233,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,155,255,255,254,254,168,98,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,162,246,254,254,254,203,200,247,254,202,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,212,254,254,254,204,57,1,0,20,175,253,219,26,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,254,254,254,125,0,0,0,0,0,0,112,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,214,246,93,3,0,0,0,0,0,0,22,238,231,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,173,80,0,0,0,0,0,0,0,0,2,225,231,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,105,0,0,0,0,0,0,0,0,0,134,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,27,230,213,17,0,0,0,0,0,0,0,12,208,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,154,18,11,88,88,88,30,12,114,234,225,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,219,231,254,254,254,254,254,254,151,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,254,254,254,254,254,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,171,250,243,175,159,87,87,87,87,130,247,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,15,197,244,162,17,0,0,0,0,0,0,0,75,244,215,2,0,0,0,0,0,0,0,0,0,0,0,0,189,246,76,0,0,0,0,0,0,0,0,0,104,246,254,4,0,0,0,0,0,0,0,0,0,0,0,0,232,149,0,0,0,0,0,0,0,0,0,0,56,187,254,4,0,0,0,0,0,0,0,0,0,0,0,0,182,184,0,0,0,0,0,0,0,0,0,0,0,135,254,4,0,0,0,0,0,0,0,0,0,0,0,0,59,250,85,0,0,0,0,0,0,0,0,0,0,197,168,1,0,0,0,0,0,0,0,0,0,0,0,0,1,153,235,56,0,0,0,0,0,0,0,0,85,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,166,252,145,62,3,0,0,0,23,136,252,165,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,77,233,254,229,216,171,228,240,254,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,23,128,252,106,191,252,252,255,252,189,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,46,103,250,250,250,250,250,250,250,252,250,250,175,25,0,0,0,0,0,0,0,0,0,0,0,0,0,87,250,250,250,250,250,250,250,250,250,252,250,250,250,135,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,250,250,250,250,252,250,250,250,177,42,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,250,250,250,250,252,250,250,250,250,113,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,187,188,250,250,250,250,252,250,250,250,250,188,50,0,0,0,0,0,0,0,0,0,0,0,91,90,90,148,209,210,250,250,250,250,252,250,250,250,250,250,192,160,160,14,0,0,0,0,0,0,0,0,0,0,0,92,250,250,250,250,250,250,252,250,250,250,250,250,250,250,250,21,0,0,0,0,0,0,0,0,0,0,0,92,250,250,250,250,250,250,252,250,250,250,250,250,250,250,250,210,0,0,0,0,0,0,0,0,0,0,0,92,250,250,250,250,250,250,252,250,250,250,250,250,250,250,250,40,0,0,0,0,0,0,0,0,0,0,0,0,106,229,229,246,252,252,255,252,252,252,252,252,252,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,204,204,210,250,250,250,250,250,250,250,250,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,206,181,181,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,136,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,63,250,250,145,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,170,255,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,46,228,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,193,253,253,253,253,126,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,225,253,253,253,243,120,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,253,123,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,226,253,253,253,206,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,182,253,253,253,240,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,75,194,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,253,253,253,253,238,159,69,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,253,253,253,253,253,253,209,96,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,253,253,166,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,220,253,253,253,191,188,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,74,9,37,206,253,253,253,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,217,253,253,123,0,0,199,253,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,248,138,200,248,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,173,253,253,253,253,253,253,253,253,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,73,183,253,253,253,253,253,210,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,97,129,226,153,87,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,224,140,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,221,60,119,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,254,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,254,173,218,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,127,22,122,237,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,247,247,51,0,0,22,240,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,149,0,0,0,17,239,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,240,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,188,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,208,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,228,40,7,5,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,215,254,254,254,254,220,33,0,0,5,126,195,7,0,0,0,0,0,0,0,0,0,0,0,0,0,27,214,254,254,250,144,220,254,219,101,65,187,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,27,214,254,254,225,82,0,114,237,254,254,254,254,254,188,5,0,0,0,0,0,0,0,0,0,0,0,27,214,254,254,212,80,0,0,0,66,233,254,254,254,114,56,0,0,0,0,0,0,0,0,0,0,0,2,160,254,254,212,32,0,0,0,0,0,100,254,254,240,21,0,0,0,0,0,0,0,0,0,0,0,0,5,181,250,134,32,0,0,0,0,0,13,214,254,238,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,73,0,0,0,0,0,0,0,100,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,239,254,235,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,238,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,208,254,254,99,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,212,254,254,196,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,199,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,241,254,224,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,242,254,234,70,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,184,254,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,208,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,255,255,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,47,126,206,254,255,156,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,94,181,197,242,253,253,253,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,12,90,213,252,253,253,253,253,253,253,253,253,253,244,165,0,0,0,0,0,0,0,0,0,0,0,0,123,181,253,253,253,253,253,253,253,253,253,253,228,120,49,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,253,253,253,253,248,227,126,124,26,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,249,181,136,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,192,105,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,227,202,202,202,200,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,253,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,230,253,253,253,253,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,222,222,222,222,222,241,253,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,186,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,212,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,98,176,253,253,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,218,236,253,253,253,253,253,249,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,253,253,253,218,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,123,108,192,241,228,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,101,171,254,255,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,200,215,253,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,221,253,253,253,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,247,252,253,253,253,253,253,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,204,253,253,253,253,253,242,217,253,253,253,253,240,76,0,0,0,0,0,0,0,0,0,0,0,0,22,201,253,253,253,253,240,115,83,7,177,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,88,241,253,253,253,253,175,59,0,0,0,7,166,253,253,202,6,0,0,0,0,0,0,0,0,0,0,18,206,253,253,253,230,142,6,0,0,0,0,0,81,253,253,199,0,0,0,0,0,0,0,0,0,0,25,202,253,253,253,253,68,0,0,0,0,0,0,0,216,253,253,199,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,128,6,0,0,0,0,0,0,107,250,253,253,59,0,0,0,0,0,0,0,0,0,0,61,253,253,253,155,5,0,0,0,0,0,0,2,128,253,253,253,45,0,0,0,0,0,0,0,0,0,50,226,253,253,253,115,0,0,0,0,0,0,0,16,253,253,253,253,45,0,0,0,0,0,0,0,0,0,101,253,253,253,219,14,0,0,0,0,0,0,62,225,253,253,253,157,6,0,0,0,0,0,0,0,0,0,194,253,253,253,121,0,0,0,0,0,16,169,192,253,253,253,238,48,0,0,0,0,0,0,0,0,0,0,101,253,253,253,214,0,0,0,0,107,128,253,253,253,253,154,50,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,247,131,62,174,216,250,253,253,253,249,121,6,0,0,0,0,0,0,0,0,0,0,0,0,37,219,253,253,253,253,253,253,253,253,253,253,204,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,253,253,253,253,253,253,200,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,134,252,253,253,253,253,253,203,91,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,140,99,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,255,108,0,0,0,0,10,137,220,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,191,254,254,155,18,29,29,93,217,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,254,254,228,254,254,254,254,252,137,33,0,0,0,0,0,0,0,0,0,0,0,0,0,6,159,253,249,196,250,254,254,254,254,254,186,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,249,104,0,36,116,142,254,253,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,243,254,100,0,0,0,44,231,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,91,105,4,0,0,11,176,254,228,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,248,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,249,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,212,254,172,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,200,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,250,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,239,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,194,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,240,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,230,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,191,128,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,191,64,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,128,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,64,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,183,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,246,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,189,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,249,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,229,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,134,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,234,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,121,255,106,0,0,0,0,0,0,0,0,0,0,77,164,193,186,171,164,193,164,164,164,164,164,231,250,253,254,254,163,0,0,0,0,0,0,0,0,0,0,248,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,138,0,0,0,0,0,0,0,0,0,0,203,254,254,254,254,254,240,197,254,254,221,184,176,141,254,254,251,56,0,0,0,0,0,0,0,0,0,0,6,71,103,103,103,103,24,4,32,31,9,0,0,44,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,227,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,254,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,243,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,251,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,243,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,214,254,231,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,242,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,94,146,234,254,255,164,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,145,239,253,253,253,253,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,89,229,253,253,248,222,139,140,219,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,202,102,7,0,0,23,240,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,238,135,111,23,0,0,0,0,90,233,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,22,0,0,0,0,0,0,51,248,253,249,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,121,235,253,220,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,244,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,147,233,252,253,253,90,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,246,253,253,253,253,253,253,230,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,141,54,54,141,210,253,120,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,16,16,4,0,0,0,20,212,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,184,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,185,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,216,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,104,150,26,0,0,0,9,104,207,253,253,168,21,0,0,0,0,0,0,0,0,0,0,0,0,20,249,252,249,144,141,134,56,141,243,253,253,236,120,1,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,253,253,253,253,253,253,253,247,183,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,145,180,253,253,253,253,230,145,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,191,203,246,254,254,215,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,161,252,254,254,190,183,183,239,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,189,254,235,53,17,2,0,0,53,212,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,156,18,0,0,0,0,0,19,223,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,155,11,0,0,0,0,0,19,67,108,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,212,216,36,36,2,0,0,46,202,240,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,237,254,255,203,141,171,247,254,233,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,179,206,212,247,254,254,227,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,243,254,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,164,254,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,116,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,248,254,191,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,214,254,238,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,170,252,210,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,79,243,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,148,199,254,252,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,196,245,238,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,118,19,26,118,118,118,118,118,118,118,132,255,187,248,135,118,118,108,0,0,0,0,0,0,0,0,0,192,253,162,238,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,234,0,0,0,0,0,0,0,0,83,206,230,235,253,253,253,253,253,253,253,204,177,214,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,24,43,47,61,61,61,61,61,61,61,22,0,30,61,61,212,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,236,253,250,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,240,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,247,253,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,253,253,226,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,228,253,253,224,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,225,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,230,253,230,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,45,224,252,242,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,215,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,213,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,249,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,116,104,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,164,217,255,212,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,218,250,254,254,254,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,239,252,174,53,95,26,86,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,230,62,0,0,0,0,32,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,80,0,0,0,0,0,32,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,240,248,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,208,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,235,254,243,89,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,254,254,254,254,253,223,114,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,221,222,207,175,222,223,254,254,144,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,86,244,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,239,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,238,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,69,0,0,0,1,128,252,245,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,243,190,117,123,206,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,237,254,254,254,254,249,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,123,196,164,163,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,163,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,225,226,225,225,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,255,253,253,253,242,116,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,253,252,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,116,139,140,139,139,240,253,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,222,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,188,246,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,191,254,253,253,253,254,253,178,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,234,252,253,252,252,252,253,252,252,215,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,204,252,252,252,253,252,252,252,253,252,252,252,247,66,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,252,252,252,253,252,164,139,140,215,252,252,253,184,0,0,0,0,0,0,0,0,0,0,0,70,253,253,254,253,253,228,101,0,0,0,0,26,160,253,254,253,56,0,0,0,0,0,0,0,0,0,0,144,252,252,253,240,158,9,0,0,0,0,0,0,85,252,253,252,56,0,0,0,0,0,0,0,0,0,0,38,196,214,168,81,0,0,0,0,0,0,0,0,19,193,253,208,13,0,0,0,0,0,0,0,0,0,0,0,10,15,0,0,0,0,0,0,0,0,0,0,0,63,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,70,104,221,254,245,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,80,198,251,253,253,254,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,253,254,240,230,137,94,245,253,253,241,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,169,31,51,209,254,253,253,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,136,0,55,237,254,254,254,254,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,244,89,6,51,196,211,219,254,253,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,3,174,254,164,19,24,49,166,245,253,254,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,215,240,253,254,253,244,194,254,253,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,185,255,254,254,203,127,42,7,170,254,241,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,115,98,23,6,0,0,157,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,245,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,244,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,254,228,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,218,85,47,127,145,88,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,248,253,194,24,172,248,253,253,254,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,237,253,232,16,68,251,244,235,248,254,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,80,0,0,67,36,40,207,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,54,0,0,0,37,215,254,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,54,0,16,107,231,253,253,192,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,131,27,196,253,253,237,120,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,230,238,254,253,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,240,253,253,253,254,117,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,238,254,216,237,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,253,228,12,217,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,66,0,218,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,0,12,225,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,128,186,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,249,253,254,253,253,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,227,254,253,162,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,207,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,25,3,0,0,0,0,0,176,236,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,115,0,0,0,0,20,241,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,244,36,0,0,0,0,25,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,154,0,0,0,0,0,25,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,115,0,0,0,0,0,70,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,115,0,0,0,0,0,107,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,164,0,0,0,0,0,107,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,215,8,0,0,0,0,160,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,255,233,148,38,9,73,233,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,137,241,254,254,255,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,65,65,66,138,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,192,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,211,247,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,246,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,72,152,152,152,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,223,253,252,253,252,253,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,193,254,253,254,213,234,253,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,252,253,50,30,172,172,252,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,255,253,183,102,123,0,0,0,0,123,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,171,0,0,0,0,0,0,0,0,172,252,243,81,0,0,0,0,0,0,0,0,0,0,11,173,254,253,244,81,0,0,0,0,0,0,0,0,0,203,255,213,21,0,0,0,0,0,0,0,0,0,132,252,253,252,122,0,0,0,0,0,0,0,0,0,0,122,253,252,183,0,0,0,0,0,0,0,0,0,193,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,193,253,234,30,0,0,0,0,0,0,0,0,152,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,172,0,0,0,0,0,0,0,0,92,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,92,253,255,253,0,0,0,0,0,0,0,0,51,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,10,131,253,252,0,0,0,0,0,0,0,0,41,243,254,253,254,71,0,0,0,0,0,0,0,0,0,0,0,183,255,192,0,0,0,0,0,0,0,0,0,162,253,252,253,192,0,0,0,0,0,0,0,0,0,0,0,142,253,111,0,0,0,0,0,0,0,0,0,0,123,203,254,253,163,0,0,0,0,0,0,0,72,233,214,233,163,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,243,81,0,0,0,0,62,102,253,252,172,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,255,253,113,71,52,132,255,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,252,253,252,253,252,253,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,255,233,142,142,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,50,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,239,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,242,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,207,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,255,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,246,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,219,254,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,193,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,66,236,254,255,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,141,253,253,253,232,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,103,247,251,222,189,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,201,253,253,119,112,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,167,250,234,130,30,91,83,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,72,244,253,243,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,179,253,253,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,154,240,248,98,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,253,248,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,164,253,243,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,247,253,178,6,0,20,45,91,22,22,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,253,174,42,168,168,246,253,253,253,253,142,28,0,0,0,0,0,0,0,0,0,0,0,0,0,15,190,253,176,120,228,253,220,156,133,48,104,220,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,251,101,251,252,138,7,0,0,0,0,168,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,174,151,253,168,0,0,0,0,0,43,226,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,184,151,253,45,0,0,0,67,142,233,253,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,252,253,199,141,224,249,252,253,253,232,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,204,253,253,253,253,253,253,253,253,198,128,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,86,210,253,249,145,145,93,37,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,255,206,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,252,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,209,252,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,215,63,216,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,231,252,252,215,112,0,169,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,200,252,252,220,31,0,0,169,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,252,217,37,0,0,0,169,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,220,37,0,0,0,32,215,252,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,228,47,0,0,0,26,207,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,178,253,252,148,0,0,0,0,25,205,252,241,103,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,253,154,12,0,0,0,19,178,252,252,196,21,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,106,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,27,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,27,0,0,0,114,238,253,240,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,74,0,57,163,253,252,233,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,233,252,253,233,197,234,252,253,186,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,253,252,252,252,252,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,174,252,252,236,112,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,85,136,136,136,197,234,234,181,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,135,231,253,253,253,253,254,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,156,209,254,255,254,254,244,195,196,195,195,142,60,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,253,253,249,233,247,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,253,253,213,73,92,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,114,117,243,253,254,206,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,230,254,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,209,254,223,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,65,118,85,0,0,0,0,0,0,55,250,253,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,222,12,0,0,0,0,0,0,0,177,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,130,40,40,40,40,55,136,159,250,253,216,27,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,254,253,253,253,253,254,253,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,236,254,254,255,254,254,254,254,241,150,98,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,135,211,234,225,135,121,39,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,255,193,80,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,158,234,253,253,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,237,251,253,246,144,78,78,78,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,143,187,253,253,253,143,140,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,251,253,245,230,230,253,253,253,253,253,253,223,128,8,0,0,0,0,0,0,0,0,0,0,0,0,39,204,253,253,209,124,253,253,248,130,211,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,209,25,191,226,97,0,34,100,226,250,253,246,202,48,0,0,0,0,0,0,0,0,0,0,80,253,253,253,209,0,0,0,0,0,0,0,0,133,202,253,253,133,0,0,0,0,0,0,0,0,0,0,80,253,253,253,209,0,0,0,0,0,0,0,0,0,36,222,253,248,115,0,0,0,0,0,0,0,0,0,80,253,253,253,209,0,0,0,0,0,0,0,0,0,0,149,253,253,156,0,0,0,0,0,0,0,0,0,80,253,253,253,209,0,0,0,0,0,0,0,0,0,0,36,253,253,220,52,0,0,0,0,0,0,0,0,80,253,253,253,221,37,0,0,0,0,0,0,0,0,0,36,253,253,253,78,0,0,0,0,0,0,0,0,33,197,253,253,253,130,0,0,0,0,0,0,0,0,0,138,253,253,196,32,0,0,0,0,0,0,0,0,0,16,202,253,253,241,83,0,0,0,0,0,0,0,0,211,253,249,124,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,240,131,36,0,0,0,0,0,69,233,253,144,0,0,0,0,0,0,0,0,0,0,0,0,11,43,225,253,253,253,216,36,12,0,0,0,114,247,237,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,161,115,115,115,55,116,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,235,237,253,253,253,253,253,253,253,212,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,253,253,253,253,253,165,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,78,78,193,83,78,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,254,171,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,201,149,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,114,0,204,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,51,0,169,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,230,13,0,169,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,212,0,0,170,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,29,0,169,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,169,0,204,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,226,181,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,167,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,187,249,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,240,207,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,2,0,65,237,212,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,7,64,231,237,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,76,231,234,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,237,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,213,255,141,68,251,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,244,254,243,244,239,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,242,254,183,123,254,254,246,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,245,254,116,112,234,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,227,252,254,254,217,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,216,231,254,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,135,95,13,188,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,243,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,192,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,250,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,148,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,247,248,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,194,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,211,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,255,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,214,171,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,252,252,238,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,253,241,221,252,253,231,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,97,16,190,253,252,252,190,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,144,0,79,191,253,252,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,93,197,242,252,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,68,252,253,252,252,252,253,179,92,236,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,253,252,252,252,108,15,0,144,253,221,41,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,255,222,125,0,0,0,0,145,255,253,133,0,0,0,0,0,0,0,0,0,0,21,94,237,252,252,241,179,35,25,0,0,0,0,0,20,253,252,215,0,0,0,0,0,0,0,0,0,0,73,252,252,252,220,102,0,0,0,0,0,0,0,0,0,149,252,215,0,0,0,0,0,0,0,0,0,0,73,252,252,252,35,0,0,0,0,0,0,0,0,0,0,109,252,215,0,0,0,0,0,0,0,0,0,0,218,253,253,206,20,0,0,0,0,0,0,0,0,0,0,110,253,217,0,0,0,0,0,0,0,0,0,0,217,252,252,143,0,0,0,0,0,0,0,0,0,0,42,233,252,215,0,0,0,0,0,0,0,0,0,0,114,252,252,221,25,0,0,0,0,0,0,0,0,0,144,253,252,195,0,0,0,0,0,0,0,0,0,0,73,252,252,252,159,125,0,0,0,0,0,0,0,21,206,253,252,71,0,0,0,0,0,0,0,0,0,0,42,222,253,253,253,253,170,63,0,0,0,0,135,253,253,255,119,0,0,0,0,0,0,0,0,0,0,0,0,46,221,252,252,252,252,238,217,217,217,218,247,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,41,71,195,241,252,253,252,252,252,253,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,108,253,252,252,252,253,128,108,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,233,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,159,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,190,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,170,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,174,253,254,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,253,253,254,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,185,253,228,245,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,224,101,235,185,114,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,241,245,113,230,50,47,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,253,101,76,163,146,0,47,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,219,0,68,117,0,0,47,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,254,69,68,0,0,0,0,0,208,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,69,0,0,0,0,0,0,207,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,251,63,0,0,0,0,0,0,207,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,162,0,0,0,0,0,0,34,240,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,46,0,0,0,0,0,0,47,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,227,21,0,0,0,0,0,0,97,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,211,5,0,0,0,0,0,32,224,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,253,46,0,0,0,0,0,170,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,129,0,0,0,32,170,255,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,249,251,163,47,130,190,253,199,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,249,253,254,253,253,168,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,228,254,202,119,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,148,192,122,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,94,190,216,253,252,252,252,226,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,57,239,252,252,252,253,252,252,252,252,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,186,253,252,252,210,189,172,84,84,84,225,253,189,6,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,253,217,94,14,0,0,0,0,27,228,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,132,0,0,0,0,0,0,4,183,253,254,253,21,0,0,0,0,0,0,0,0,0,0,0,64,247,252,137,0,0,0,0,0,0,29,187,252,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,85,252,141,4,0,0,0,0,9,39,213,252,252,252,253,217,12,0,0,0,0,0,0,0,0,0,0,0,85,252,127,11,0,0,6,64,186,253,252,252,139,128,253,252,21,0,0,0,0,0,0,0,0,0,0,0,85,252,252,218,212,211,215,252,252,253,252,59,14,45,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,254,253,253,253,236,194,27,0,0,107,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,41,168,168,183,189,71,63,37,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,0,0,0,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,255,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,199,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,117,141,141,141,141,191,255,253,253,253,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,253,252,252,252,253,252,252,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,171,252,253,252,252,252,216,252,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,140,65,28,28,16,178,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,252,202,85,85,85,47,0,0,0,0,0,0,0,0,0,0,0,0,0,76,113,113,114,113,113,213,253,252,252,252,253,252,252,240,226,125,0,0,0,0,0,0,0,0,0,0,242,253,253,253,254,253,253,253,254,253,253,253,254,253,253,253,254,253,178,4,0,0,0,0,0,0,0,0,66,252,252,252,253,252,252,252,253,252,233,196,197,196,215,252,253,252,252,53,0,0,0,0,0,0,0,0,7,187,252,252,253,252,252,252,244,93,37,0,0,0,19,56,56,56,94,43,0,0,0,0,0,0,0,0,0,19,65,40,153,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,244,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,196,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,241,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,229,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,215,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,101,0,0,0,0,0,0,114,50,113,128,253,255,206,25,0,0,0,0,0,0,0,0,0,0,0,0,57,249,146,86,85,117,225,225,253,237,252,252,252,253,252,103,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,253,252,252,252,252,253,252,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,253,252,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,253,252,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,253,253,253,253,255,253,253,253,253,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,38,167,167,168,167,167,167,89,27,149,252,252,252,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,252,252,252,253,186,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,207,252,252,252,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,252,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,253,252,233,151,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,252,253,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,169,243,252,252,252,253,179,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,252,252,252,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,253,252,233,74,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,177,253,179,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,247,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,220,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,249,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,247,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,246,222,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,172,237,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,219,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,228,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,247,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,235,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,205,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,227,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,234,151,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,216,254,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,199,6,51,252,132,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,0,0,182,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,38,248,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,197,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,143,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,166,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,130,0,0,0,0,89,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,232,10,0,0,74,242,100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,174,79,146,243,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,185,255,253,208,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,243,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,206,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,199,253,161,79,58,58,58,90,157,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,133,171,254,254,254,254,180,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,168,236,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,254,246,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,210,27,141,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,220,169,16,56,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,214,23,22,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,236,234,29,0,10,217,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,228,254,219,0,0,0,190,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,228,254,254,172,0,0,0,114,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,189,254,185,192,79,0,0,0,104,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,215,32,0,0,0,0,0,147,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,249,246,73,0,0,0,0,0,32,243,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,243,254,120,0,0,0,0,0,0,109,254,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,9,192,254,169,6,0,0,0,0,0,23,204,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,247,42,0,0,0,0,0,0,122,254,202,15,0,0,0,0,0,0,0,0,0,0,0,0,0,7,222,254,128,0,0,0,0,0,0,68,241,237,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,227,35,0,0,0,0,9,129,241,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,159,0,8,13,13,102,219,254,243,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,213,96,213,254,254,254,249,163,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,254,254,254,254,251,176,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,219,233,167,121,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,48,146,146,204,255,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,209,253,253,253,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,242,253,253,248,160,139,66,32,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,245,253,238,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,253,178,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,150,253,192,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,247,157,157,157,86,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,179,253,253,253,253,253,253,231,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,166,237,168,129,129,129,223,251,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,247,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,212,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,192,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,217,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,9,134,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,93,208,73,0,0,0,0,10,93,253,253,169,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,144,0,0,0,0,42,180,253,253,159,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,65,0,0,0,102,238,253,253,185,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,169,141,161,249,253,253,253,158,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,253,253,253,208,143,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,163,253,253,253,216,93,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,239,121,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,252,245,241,114,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,47,168,252,252,253,252,229,184,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,117,214,253,252,252,252,242,185,81,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,53,179,245,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,231,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,174,173,202,252,252,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,112,165,252,253,252,252,252,252,232,204,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,252,252,252,253,252,245,241,133,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,252,190,119,56,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,156,252,252,253,247,190,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,33,208,253,252,252,188,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,103,248,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,26,54,17,0,0,0,26,242,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,160,240,210,252,79,26,41,111,211,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,252,252,252,188,218,252,252,253,252,242,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,250,252,252,252,252,252,252,253,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,119,119,210,252,252,181,120,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,74,198,197,73,136,218,218,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,223,254,253,253,253,254,253,248,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,126,223,253,254,253,253,253,254,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,110,172,253,253,253,145,175,253,253,254,159,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,254,253,243,97,0,11,191,253,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,79,233,253,254,222,103,0,16,79,233,253,239,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,254,35,0,0,47,233,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,16,110,172,254,254,254,0,0,0,0,110,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,222,35,0,0,0,126,234,253,138,15,0,0,0,0,0,0,0,0,0,0,0,0,0,11,151,253,253,243,103,0,0,0,27,223,254,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,63,176,253,253,190,77,0,0,0,126,161,253,254,128,31,0,0,0,0,0,0,0,0,0,0,0,0,0,63,239,254,254,145,0,0,0,0,219,254,254,193,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,253,253,103,21,73,156,219,248,243,180,36,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,169,16,182,253,253,254,201,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,192,253,253,253,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,255,254,254,254,254,254,192,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,243,253,253,253,253,180,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,176,217,72,72,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,64,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,64,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,64,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,228,254,254,254,231,125,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,252,253,253,253,253,253,253,233,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,253,253,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,253,253,133,19,19,19,128,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,223,32,0,0,21,193,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,203,19,0,0,166,253,253,241,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,226,253,253,51,22,182,243,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,218,220,253,253,239,155,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,223,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,113,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,243,253,253,253,253,175,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,217,243,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,253,221,44,109,253,253,215,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,198,16,0,24,195,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,177,5,0,0,59,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,61,20,20,141,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,235,253,253,253,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,253,253,253,252,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,123,230,253,253,223,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,170,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,227,252,252,237,217,217,217,73,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,246,215,231,252,252,252,253,149,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,232,132,0,47,148,252,252,253,252,215,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,94,237,253,252,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,181,201,252,252,253,241,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,252,252,252,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,110,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,179,252,252,252,252,253,222,114,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,133,215,241,252,253,252,252,211,182,181,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,108,108,232,252,252,253,252,236,144,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,144,192,253,253,253,255,128,31,0,0,0,0,0,0,0,0,0,0,0,0,42,134,217,217,217,42,0,0,0,15,77,190,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,27,221,252,252,252,231,41,0,0,0,0,0,11,71,232,252,241,98,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,108,0,0,0,0,0,0,0,0,191,252,252,252,0,0,0,0,0,0,0,0,0,0,21,144,253,253,253,253,255,128,109,109,110,233,253,253,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,1,98,200,252,252,253,252,252,252,253,252,252,252,253,252,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,21,175,215,217,247,252,252,253,241,215,215,154,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,108,108,108,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,203,0,0,0,0,0,0,0,5,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,185,0,0,0,0,0,0,64,195,238,138,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,209,0,0,0,0,0,85,250,201,87,199,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,210,0,0,0,0,58,255,156,0,0,31,216,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,251,42,0,0,0,88,254,72,0,0,0,155,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,65,0,0,0,88,254,8,0,0,0,123,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,246,130,0,0,0,88,183,1,0,0,0,123,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,145,0,0,0,43,243,68,0,0,8,205,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,223,8,0,0,0,101,119,88,9,56,248,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,130,0,0,0,0,0,0,24,186,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,243,156,41,0,0,5,70,192,175,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,248,250,184,184,203,251,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,141,165,196,141,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,240,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,216,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,139,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,137,3,0,0,0,35,135,83,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,78,0,32,146,178,254,246,248,254,93,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,254,199,15,61,225,254,183,114,0,12,193,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,249,50,63,224,254,171,19,0,0,0,139,254,24,0,0,0,0,0,0,0,0,0,0,0,0,46,241,254,140,0,185,254,163,0,0,0,0,30,232,254,24,0,0,0,0,0,0,0,0,0,0,0,0,105,254,180,24,127,249,204,36,0,0,31,116,229,246,70,5,0,0,0,0,0,0,0,0,0,0,0,0,189,254,146,42,238,254,128,50,106,163,243,254,147,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,248,238,254,254,254,254,255,254,211,69,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,151,254,254,254,254,213,161,107,48,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,238,254,254,118,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,222,195,72,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,0,21,203,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,102,0,0,0,51,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,212,20,0,0,0,213,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,224,61,0,0,0,142,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,130,40,0,0,0,82,223,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,203,20,0,0,0,0,234,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,142,0,0,0,0,82,233,130,0,0,21,102,41,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,91,41,21,31,233,254,172,173,253,224,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,243,223,213,252,253,252,233,151,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,233,254,253,254,253,254,253,224,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,30,112,232,253,252,253,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,232,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,152,152,173,172,152,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,213,252,253,252,253,252,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,254,253,254,253,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,253,252,253,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,254,233,203,203,203,243,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,192,50,0,0,0,162,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,183,20,0,0,0,21,132,253,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,203,253,252,253,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,253,254,253,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,252,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,254,253,254,253,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,252,253,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,213,102,61,102,183,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,253,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,131,0,0,0,21,254,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,252,142,102,123,223,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,255,253,255,253,255,253,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,253,252,253,252,253,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,253,255,253,203,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,252,192,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,184,254,214,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,253,253,225,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,254,247,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,249,253,200,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,235,253,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,234,254,220,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,253,134,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,226,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,247,253,80,0,24,93,128,177,186,166,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,104,158,237,253,253,254,253,253,253,233,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,224,253,253,253,203,174,173,238,253,253,248,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,255,254,254,254,125,0,0,0,70,243,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,201,254,253,253,253,139,0,0,0,48,244,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,174,253,253,253,174,128,128,166,247,253,251,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,221,253,253,254,253,253,253,233,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,95,169,179,193,159,95,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,48,143,235,253,253,215,138,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,100,209,253,252,252,252,252,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,217,252,252,253,252,252,252,252,252,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,252,250,230,139,63,10,10,10,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,198,252,252,228,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,252,252,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,245,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,247,220,220,221,191,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,253,255,253,253,186,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,209,252,252,252,252,253,252,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,48,153,153,106,58,179,252,252,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,1,0,0,0,0,0,0,0,67,252,252,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,44,199,159,20,0,0,0,0,0,8,155,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,217,82,0,0,0,0,111,252,252,252,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,252,252,245,130,122,122,217,253,252,252,189,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,251,252,252,252,252,252,252,253,252,235,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,226,252,252,252,252,252,253,198,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,142,243,252,219,142,81,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,251,251,31,0,0,0,0,0,0,0,24,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,251,31,0,0,0,0,0,0,0,190,188,16,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,219,23,0,0,0,0,0,0,84,244,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,126,0,0,0,0,0,0,0,96,251,172,12,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,233,48,84,96,255,233,96,12,0,96,253,126,0,0,0,0,0,0,0,0,0,0,0,0,16,186,251,253,251,220,244,251,253,251,251,157,12,96,251,126,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,251,251,253,251,251,251,173,96,251,126,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,196,188,31,149,220,251,251,234,251,126,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,132,94,12,0,0,0,48,232,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,159,39,0,0,0,0,0,0,64,253,255,253,205,19,0,0,0,0,0,0,0,0,0,72,236,251,251,132,0,0,0,0,0,0,0,0,56,240,253,251,141,4,0,0,0,0,0,0,0,0,0,96,251,251,219,47,0,0,0,0,0,0,0,0,0,158,253,251,251,31,0,0,0,0,0,0,0,0,0,12,51,109,23,0,0,0,0,0,0,0,0,0,0,119,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,236,251,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,172,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,57,57,57,57,57,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,135,85,172,197,198,209,252,252,253,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,101,234,252,253,252,252,252,253,252,252,252,253,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,82,229,253,255,234,225,225,114,88,0,0,16,216,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,19,84,84,84,28,0,0,0,0,0,0,54,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,154,253,254,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,57,187,252,252,253,171,57,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,98,197,215,252,253,252,252,252,253,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,76,200,237,253,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,23,179,254,253,253,253,254,253,253,253,254,222,76,0,0,0,38,113,0,0,0,0,0,0,0,0,7,82,234,252,222,196,158,84,203,252,252,252,209,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,214,76,0,67,185,253,252,252,177,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,214,128,126,225,246,252,253,177,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,254,253,244,125,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,202,134,84,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,56,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,51,51,51,51,172,252,254,171,51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,161,250,250,252,250,250,250,252,250,250,250,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,250,250,250,252,250,250,250,252,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,123,241,252,250,250,250,252,250,250,250,252,250,250,250,243,121,0,0,0,0,0,0,0,0,0,0,0,103,252,252,255,252,252,212,163,0,0,0,41,222,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,102,250,250,252,250,189,29,0,0,0,0,21,161,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,250,252,189,40,0,0,0,0,0,172,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,250,252,231,80,0,0,0,123,202,252,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,252,254,252,252,252,254,252,252,252,254,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,61,210,250,252,250,250,250,252,250,250,250,252,250,250,250,82,0,0,0,0,0,0,0,0,0,0,0,0,0,60,221,252,250,250,250,252,250,250,128,130,250,250,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,49,130,250,88,49,49,49,10,213,250,250,250,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,159,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,169,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,147,81,0,0,0,0,51,147,251,108,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,92,0,0,0,10,205,254,254,254,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,122,0,0,0,10,203,253,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,167,0,0,0,9,35,84,211,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,233,51,0,0,0,0,0,7,159,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,84,0,0,0,0,0,2,166,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,173,254,197,0,0,0,0,0,11,205,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,244,32,0,0,0,34,145,236,219,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,172,254,171,27,2,42,175,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,182,171,254,254,249,172,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,246,254,254,254,233,121,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,219,254,254,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,209,254,254,225,207,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,148,254,254,221,80,11,211,254,223,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,203,254,249,98,7,0,0,143,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,246,25,0,0,0,81,248,255,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,254,207,104,157,212,246,254,254,129,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,241,254,254,254,254,254,254,254,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,254,254,254,254,182,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,146,166,254,154,146,146,44,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,55,180,201,128,19,49,191,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,252,252,253,236,228,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,233,89,69,79,196,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,235,64,0,0,0,9,196,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,206,0,0,0,0,22,215,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,92,0,0,0,24,159,253,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,249,75,0,38,99,212,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,237,91,184,240,252,253,252,118,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,134,248,253,252,252,252,168,150,45,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,205,252,252,253,231,137,43,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,128,255,253,247,239,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,236,252,207,132,67,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,197,252,227,79,0,0,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,185,50,0,0,0,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,210,6,0,0,0,0,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,207,0,0,0,0,0,7,160,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,236,44,0,0,0,30,103,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,202,142,122,185,228,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,227,252,252,253,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,117,137,137,137,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,141,141,178,153,242,141,178,253,192,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,57,194,253,252,252,252,253,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,253,252,252,252,253,240,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,202,28,28,28,128,203,252,252,252,241,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,206,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,113,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,129,16,19,26,141,141,53,79,204,178,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,215,224,243,253,252,252,202,222,208,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,252,252,252,253,233,130,6,25,57,164,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,139,140,139,139,139,28,22,0,0,0,7,153,228,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,101,51,0,0,0,0,0,0,0,0,0,0,225,241,47,0,0,0,0,0,0,0,0,0,0,0,0,98,253,255,178,141,41,29,29,29,16,13,7,154,253,214,0,0,0,0,0,0,0,0,0,0,0,0,13,209,252,253,252,252,252,253,252,252,215,207,187,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,38,196,252,253,252,252,252,253,252,252,252,253,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,253,252,252,252,203,252,252,252,241,139,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,224,251,251,251,32,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,188,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,240,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,174,253,253,255,221,48,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,171,190,253,251,251,251,251,253,244,221,197,91,0,0,0,0,0,0,0,0,0,0,0,0,0,128,142,251,251,251,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,32,202,221,253,251,251,251,251,253,251,251,251,251,253,211,251,196,188,0,0,0,0,0,0,0,0,0,120,205,251,251,253,251,251,251,251,253,251,251,251,152,95,35,94,12,0,0,0,0,0,0,0,0,0,36,214,253,253,253,255,253,253,253,253,255,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,251,251,251,251,241,101,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,251,251,251,251,253,251,251,251,172,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,243,188,50,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,212,251,251,251,95,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,255,253,253,253,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,181,252,253,252,252,252,253,242,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,242,252,231,217,91,71,71,232,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,231,46,0,0,0,0,47,232,236,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,71,0,0,0,0,0,0,217,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,71,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,231,252,180,16,0,0,0,0,0,217,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,148,252,190,0,0,0,0,0,217,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,144,0,0,0,0,110,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,226,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,227,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,128,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,94,220,254,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,58,253,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,243,119,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,218,253,244,119,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,196,253,253,199,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,222,254,253,225,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,233,253,255,186,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,175,253,253,255,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,185,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,232,255,255,255,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,148,253,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,253,253,253,157,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,184,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,194,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,213,224,40,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,70,76,132,150,253,167,41,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,191,252,253,238,228,228,228,235,125,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,71,157,239,236,216,96,41,0,0,0,56,103,14,0,0,0,0,0,0,0,0,0,0,0,0,0,10,98,252,252,164,48,0,0,0,0,0,64,233,71,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,252,235,94,10,0,0,0,0,0,64,232,252,228,26,0,0,0,0,0,0,0,0,0,0,0,0,71,252,206,43,0,0,0,0,0,0,11,193,252,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,157,252,212,61,0,0,0,0,0,49,166,252,252,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,40,220,252,242,177,97,97,97,218,237,252,252,229,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,52,143,232,252,252,252,253,252,252,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,11,11,11,138,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,253,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,242,253,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,187,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,164,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,120,243,252,216,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,154,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,146,194,255,254,254,254,254,135,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,163,242,253,253,156,122,122,122,180,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,253,253,164,80,0,0,0,0,34,235,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,168,84,13,0,0,0,0,0,141,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,251,183,6,0,0,0,0,0,0,95,238,225,40,0,0,0,0,0,0,0,0,0,0,0,0,0,8,237,253,64,0,0,0,0,0,0,92,237,225,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,193,219,14,0,0,0,0,0,125,236,227,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,234,49,0,0,0,21,175,252,170,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,251,152,9,7,85,230,236,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,110,127,253,218,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,168,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,177,246,236,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,247,171,0,71,242,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,88,0,0,77,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,214,9,0,0,27,248,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,206,0,0,0,10,209,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,251,45,0,0,50,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,251,181,123,178,234,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,162,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,121,121,121,213,254,176,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,253,253,253,253,253,253,247,178,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,253,253,253,253,254,229,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,173,60,39,39,39,54,173,173,254,253,239,102,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,214,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,186,245,236,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,7,57,0,0,95,254,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,46,108,220,241,241,247,241,242,247,242,241,246,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,253,253,253,253,253,253,253,254,253,253,253,253,248,135,35,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,240,173,177,253,254,253,253,253,253,253,253,228,207,81,0,0,0,0,0,0,0,0,131,251,253,253,200,88,45,43,147,253,254,253,228,186,186,200,253,253,253,218,0,0,0,0,0,0,0,0,254,253,253,182,103,159,145,229,253,253,254,202,55,0,0,14,66,66,66,31,0,0,0,0,0,0,0,0,255,253,253,211,253,253,253,253,253,232,150,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,222,93,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,249,240,140,107,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,120,120,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,255,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,237,253,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,169,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,199,253,253,188,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,236,253,253,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,175,253,253,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,249,253,230,34,0,0,0,13,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,238,79,0,13,42,149,208,242,160,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,182,253,253,146,0,42,173,253,253,253,253,253,203,13,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,213,26,13,200,253,253,253,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,129,20,220,253,253,218,158,104,214,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,49,248,253,253,22,77,253,253,130,15,0,0,41,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,149,1,142,253,223,29,0,0,0,36,253,214,26,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,159,2,142,253,194,0,0,0,21,209,248,62,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,59,215,253,205,26,48,101,211,248,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,207,253,253,253,253,253,253,221,253,253,220,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,199,253,253,253,253,253,253,253,178,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,139,152,209,253,253,253,114,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,150,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,154,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,235,253,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,148,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,158,253,253,253,253,152,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,167,253,253,253,249,149,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,147,253,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,253,241,98,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,230,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,229,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,102,242,253,253,229,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,189,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,236,250,253,253,191,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,155,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,237,253,253,253,253,145,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,253,189,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,253,211,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,239,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,128,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,128,128,128,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,191,64,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,236,236,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,142,254,254,254,237,209,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,139,223,249,254,254,233,162,162,177,250,223,145,88,0,0,0,0,0,0,0,0,0,0,0,0,0,80,218,254,254,228,132,39,30,0,0,6,56,222,254,253,143,0,0,0,0,0,0,0,0,0,0,37,136,251,254,226,132,31,0,0,0,0,0,0,0,28,128,254,253,102,0,0,0,0,0,0,0,0,0,155,254,254,176,33,0,0,0,0,0,0,0,0,0,0,4,129,254,228,0,0,0,0,0,0,0,0,33,251,254,139,36,0,0,0,0,0,0,0,0,0,0,0,0,3,164,255,0,0,0,0,0,0,0,0,155,254,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,4,165,254,0,0,0,0,0,0,0,0,229,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,5,130,254,254,0,0,0,0,0,0,0,0,103,254,143,0,0,0,0,0,0,0,0,0,0,0,0,29,129,254,226,78,0,0,0,0,0,0,0,0,0,249,218,13,0,0,0,0,0,0,0,0,0,7,57,222,254,232,99,0,0,0,0,0,0,0,0,0,0,165,254,170,114,33,5,0,0,0,0,24,125,178,254,251,211,40,0,0,0,0,0,0,0,0,0,0,0,46,154,253,254,254,172,50,27,128,157,227,254,250,211,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,154,235,235,235,235,235,235,235,211,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,206,113,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,252,252,218,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,253,252,252,252,252,135,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,162,84,84,196,252,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,79,0,0,75,189,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,141,0,0,0,0,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,177,252,178,85,85,101,225,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,253,252,252,252,252,253,201,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,29,156,252,252,253,252,252,252,236,225,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,191,252,252,252,252,253,252,252,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,253,253,253,253,255,253,165,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,252,186,167,167,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,253,154,12,0,0,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,178,9,0,4,29,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,63,0,0,29,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,240,63,0,0,0,92,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,249,100,0,29,38,196,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,221,198,215,221,252,252,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,227,252,253,252,252,233,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,190,237,141,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,14,91,154,239,254,255,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,44,180,254,252,227,171,254,231,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,229,254,243,141,59,0,136,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,64,0,0,90,243,194,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,82,0,0,12,209,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,230,6,0,0,84,254,134,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,214,254,72,0,47,224,217,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,246,69,223,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,249,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,186,254,253,244,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,215,254,184,140,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,254,156,2,91,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,174,246,126,4,0,138,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,144,254,143,0,0,14,227,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,212,16,0,0,140,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,104,0,15,185,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,208,51,112,202,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,206,233,254,211,106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,190,254,211,55,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,218,227,252,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,58,221,253,252,252,231,133,247,241,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,63,175,252,252,253,252,148,46,0,217,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,253,252,252,252,144,20,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,63,181,252,253,252,200,97,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,1,99,242,252,252,217,91,20,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,84,252,252,231,108,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,37,253,253,222,41,0,0,0,0,0,0,0,0,0,0,218,253,253,0,0,0,0,0,0,0,0,0,21,181,252,252,138,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,94,252,252,236,30,0,0,0,0,0,0,0,0,0,0,0,217,252,231,0,0,0,0,0,0,0,0,0,217,252,252,143,0,0,0,0,0,0,0,0,0,0,0,63,237,252,108,0,0,0,0,0,0,0,0,110,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,108,0,0,0,0,0,0,0,0,233,252,252,108,0,0,0,0,0,0,0,0,0,0,11,155,253,252,220,15,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,37,78,191,252,253,220,102,0,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,21,144,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,128,109,191,192,150,253,253,255,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,15,180,252,252,252,252,252,252,253,252,252,252,253,189,158,15,0,0,0,0,0,0,0,0,0,0,0,0,0,21,92,215,215,247,252,252,217,215,215,132,72,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,207,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,223,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,229,254,253,179,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,253,254,230,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,133,253,253,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,253,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,220,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,220,254,254,177,0,0,0,64,39,156,155,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,217,253,253,242,62,0,52,235,247,245,253,253,153,40,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,177,5,94,241,253,253,253,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,30,227,253,253,232,95,160,253,254,253,253,185,237,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,253,254,253,143,9,130,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,253,253,253,229,165,61,167,240,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,80,247,253,253,253,253,253,253,217,207,253,253,253,253,133,29,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,255,253,253,253,246,128,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,243,253,253,253,253,253,255,253,248,197,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,253,253,253,253,183,126,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,105,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,60,148,254,253,216,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,188,253,253,254,253,253,211,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,253,254,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,184,253,253,169,29,91,240,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,184,253,253,189,17,0,0,209,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,191,253,253,253,84,0,0,0,209,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,225,14,1,0,0,0,209,253,253,205,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,208,208,96,0,0,0,0,0,209,253,253,195,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,238,252,167,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,75,75,102,224,254,253,242,75,75,75,36,0,0,0,0,0,0,0,0,0,0,0,0,8,39,179,179,232,253,253,253,253,255,253,253,253,253,253,214,180,65,13,0,0,0,0,0,0,0,0,56,163,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,253,183,0,0,0,0,0,0,0,0,247,253,253,210,163,145,14,240,253,253,217,40,14,14,146,227,253,253,253,253,0,0,0,0,0,0,0,0,209,208,208,110,0,50,194,250,253,138,35,0,0,0,0,65,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,74,104,104,104,43,0,0,0,0,0,13,104,104,104,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,240,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,246,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,255,123,0,45,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,28,0,0,0,0,0,29,245,214,20,0,143,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,206,0,0,0,0,6,182,254,90,0,0,56,9,0,0,0,0,0,0,0,0,3,12,0,0,0,3,148,206,0,0,0,0,128,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,0,0,0,150,246,80,0,0,0,73,248,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,255,147,0,0,0,5,181,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,150,255,199,0,0,0,0,101,255,192,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,199,0,0,0,0,35,235,250,61,0,0,0,0,0,28,7,0,0,0,0,0,0,0,0,0,16,230,222,8,0,0,0,0,134,255,142,9,113,103,0,0,0,128,16,0,0,0,0,0,0,0,0,0,32,254,206,4,0,0,0,76,252,250,127,189,238,72,0,0,0,143,16,0,0,0,0,0,0,0,0,0,12,199,254,239,239,239,239,247,254,255,254,199,47,0,0,0,0,143,16,0,0,0,0,0,0,0,0,0,0,0,90,184,239,229,232,255,195,105,45,0,0,0,0,0,0,115,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,208,196,24,0,0,0,0,0,0,0,0,18,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,245,40,0,0,0,0,0,0,0,0,0,143,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,186,0,0,0,0,0,0,0,0,0,0,143,16,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,23,0,0,0,0,0,0,0,0,0,0,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,54,186,254,254,197,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,142,254,254,249,237,249,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,229,126,47,0,104,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,209,254,148,0,0,0,19,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,230,17,0,0,0,91,254,191,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,204,0,0,0,0,73,239,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,204,0,0,0,0,0,110,254,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,204,233,77,7,0,0,24,138,254,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,218,254,240,238,238,244,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,90,164,171,171,145,114,98,234,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,201,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,249,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,66,66,96,117,128,185,249,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,228,247,254,254,255,254,254,254,242,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,161,246,176,145,90,90,90,53,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,201,255,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,200,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,221,69,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,236,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,64,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,247,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,201,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,202,232,38,0,0,24,138,138,138,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,244,56,0,147,212,252,252,252,211,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,219,19,68,246,253,240,130,240,252,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,162,187,252,253,164,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,252,246,248,252,180,8,64,248,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,253,253,55,76,138,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,252,170,252,252,252,178,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,202,252,252,253,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,44,236,252,253,252,227,119,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,128,190,117,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,96,96,96,134,253,255,253,253,253,253,255,233,96,12,0,0,0,0,0,0,0,0,0,0,0,0,68,228,253,251,251,251,251,253,251,251,251,251,253,251,251,197,71,0,0,0,0,0,0,0,0,0,16,127,236,251,205,126,188,251,251,126,126,126,126,204,253,251,251,140,47,0,0,0,0,0,0,0,0,0,32,251,251,251,119,0,16,31,31,0,0,0,0,19,31,31,31,4,0,0,0,0,0,0,0,0,0,0,32,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,229,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,236,251,236,190,32,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,157,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,197,251,251,251,253,251,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,94,133,251,253,251,251,228,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,230,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,236,251,212,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,185,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,127,189,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,251,251,251,211,129,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,212,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,125,125,171,254,254,254,254,157,125,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,253,253,253,253,253,253,253,250,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,248,253,253,253,253,253,253,253,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,246,253,253,253,221,178,199,253,253,253,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,25,25,25,18,8,38,220,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,230,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,85,192,246,253,253,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,141,253,253,253,253,253,253,253,253,231,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,253,253,253,253,208,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,203,91,58,82,188,230,253,209,29,0,0,0,0,0,0,0,0,0,0,0,0,0,79,247,253,253,164,65,15,0,0,0,0,66,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,30,188,228,157,13,0,0,0,0,0,0,33,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,33,253,253,242,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,11,27,140,156,50,13,27,21,6,27,47,169,253,253,245,45,0,0,0,0,0,0,0,0,0,0,0,66,192,253,253,253,253,200,253,229,171,253,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,253,253,253,253,253,253,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,109,247,185,253,253,253,253,253,253,253,253,253,252,247,169,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,139,123,190,227,253,253,253,253,166,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,158,90,80,0,0,15,80,80,85,158,158,203,163,0,0,0,0,0,0,0,0,0,0,0,0,10,130,254,254,254,254,255,254,254,254,254,255,254,249,254,194,0,0,0,0,0,0,0,0,0,0,66,156,229,254,229,108,187,221,222,221,221,201,142,63,63,44,63,24,0,0,0,0,0,0,0,0,0,106,244,253,253,206,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,242,152,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,31,95,144,229,253,226,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,226,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,185,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,108,88,93,128,40,0,0,79,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,233,253,228,153,142,207,239,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,243,209,253,253,254,253,253,253,153,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,238,238,238,184,158,95,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,161,254,254,254,220,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,241,253,241,206,211,253,222,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,249,253,202,67,0,21,246,254,211,90,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,168,19,0,0,0,50,161,245,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,241,34,0,0,0,0,0,0,231,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,232,25,0,0,0,0,0,130,251,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,245,253,88,0,0,0,11,149,254,253,149,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,221,84,0,17,140,253,254,119,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,254,220,104,136,254,228,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,160,253,254,253,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,122,254,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,160,68,241,220,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,42,0,191,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,228,244,0,0,149,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,160,0,0,182,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,136,0,30,237,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,203,30,185,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,253,237,253,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,194,254,236,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,85,234,210,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,133,236,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,240,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,229,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,196,246,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,196,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,243,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,69,0,0,0,0,0,15,166,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,155,0,0,0,0,0,47,191,227,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,204,13,0,0,0,0,0,199,245,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,241,161,0,0,0,0,0,133,255,186,0,0,0,81,146,114,13,0,0,0,0,0,0,0,0,0,0,2,220,195,58,3,0,0,65,246,239,23,37,93,151,239,254,247,43,0,0,0,0,0,0,0,0,0,0,0,102,253,254,202,169,136,210,254,249,204,254,228,215,173,135,36,0,0,0,0,0,0,0,0,0,0,0,0,0,66,150,192,250,254,254,235,192,131,71,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,221,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,197,251,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,67,97,171,182,254,254,255,210,99,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,232,254,254,254,254,254,254,254,254,254,236,52,4,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,254,236,158,229,254,254,254,188,248,254,254,188,7,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,207,38,0,44,234,254,254,43,56,242,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,175,254,240,39,0,0,0,204,254,254,121,0,106,244,254,235,9,0,0,0,0,0,0,0,0,0,0,1,183,254,153,0,0,0,0,204,254,254,121,0,0,229,254,254,56,0,0,0,0,0,0,0,0,0,0,1,193,254,127,0,0,0,0,204,254,254,175,0,0,155,254,254,237,6,0,0,0,0,0,0,0,0,0,0,175,254,164,0,0,0,0,204,254,254,121,0,0,14,238,254,254,19,0,0,0,0,0,0,0,0,0,0,175,254,239,10,0,0,0,204,254,254,81,0,0,0,234,254,254,142,1,0,0,0,0,0,0,0,0,0,134,254,254,80,0,0,6,212,254,231,19,0,0,0,165,254,254,254,4,0,0,0,0,0,0,0,0,0,18,216,254,223,12,0,92,254,254,96,0,0,0,0,108,254,254,254,4,0,0,0,0,0,0,0,0,0,0,92,254,254,190,133,228,254,215,20,0,0,0,0,67,254,254,254,4,0,0,0,0,0,0,0,0,0,0,6,198,254,254,254,254,197,32,0,0,0,0,0,67,254,254,254,4,0,0,0,0,0,0,0,0,0,0,0,17,113,113,113,74,6,0,0,0,0,0,0,67,254,254,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,239,254,228,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,252,254,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,179,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,226,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,159,253,159,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,163,253,252,252,252,237,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,253,252,252,252,252,229,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,178,252,225,223,223,129,84,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,140,79,0,135,252,252,0,0,0,0,0,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,32,216,253,79,0,198,240,63,0,0,0,0,0,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,153,112,0,0,131,71,0,0,0,0,0,0,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,0,0,0,0,0,0,0,0,0,0,253,186,12,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,0,0,0,0,0,0,0,0,0,16,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,0,0,0,0,0,0,0,0,0,140,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,0,0,0,0,0,0,0,0,13,191,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,0,0,0,0,0,0,0,0,76,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,0,0,0,169,252,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,0,0,54,224,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,0,48,227,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,0,0,0,0,0,114,238,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,48,0,0,73,225,253,252,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,229,197,197,234,252,253,186,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,252,252,252,236,84,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,252,252,157,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,246,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,232,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,221,212,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,238,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,238,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,240,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,239,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,213,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,231,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,112,235,238,194,138,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,95,120,245,254,254,216,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,255,254,222,93,10,6,95,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,249,103,11,0,0,0,89,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,214,0,0,0,0,22,216,251,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,160,254,249,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,108,221,254,254,224,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,104,224,254,251,166,163,254,220,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,208,38,0,34,242,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,201,52,9,0,0,18,218,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,3,0,0,0,0,0,193,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,240,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,212,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,49,252,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,229,0,0,14,140,254,167,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,239,11,56,186,254,214,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,254,168,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,187,254,207,46,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,91,167,172,173,178,254,254,188,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,210,254,254,254,254,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,188,95,66,65,65,211,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,152,22,0,0,0,33,223,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,62,220,254,180,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,242,254,221,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,109,193,254,254,142,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,244,254,254,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,246,254,254,232,127,129,254,252,164,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,171,171,98,11,0,1,72,233,254,194,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,216,255,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,223,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,220,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,169,254,205,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,207,254,203,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,243,254,148,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,204,253,254,123,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,246,250,254,230,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,151,236,242,168,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,147,228,246,254,208,205,246,237,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,112,215,234,254,241,157,41,3,0,166,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,255,254,243,185,33,0,0,0,0,122,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,223,76,34,0,0,0,0,0,16,203,248,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,241,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,155,243,254,254,252,251,251,200,116,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,150,248,254,254,247,196,196,196,232,254,254,200,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,240,226,189,105,27,0,0,0,19,82,173,254,201,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,17,0,0,0,0,0,0,0,0,7,183,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,250,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,194,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,194,0,0,0,0,0,0,0,0,0,0,190,221,38,0,0,0,0,0,0,0,0,0,0,0,35,184,254,141,0,0,0,0,0,0,0,0,0,0,159,254,245,163,54,20,0,0,0,0,0,0,0,81,200,254,192,7,0,0,0,0,0,0,0,0,0,0,7,192,254,254,254,232,199,130,88,41,74,130,153,239,254,140,21,0,0,0,0,0,0,0,0,0,0,0,0,7,57,141,228,235,254,254,254,254,254,254,254,239,105,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,62,78,151,151,151,151,97,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,64,0,0,0,0,0,0,0,0,0,128,191,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,0,128,128,128,128,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,255,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,191,128,255,255,255,191,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,66,141,141,141,141,241,255,253,216,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,170,225,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,252,216,252,224,168,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,252,77,28,16,28,19,0,253,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,3,170,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,2,31,156,80,0,0,0,0,0,0,5,168,253,248,68,0,0,0,0,0,0,0,0,0,0,0,0,2,109,253,250,74,0,0,0,0,0,0,103,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,11,159,253,250,128,0,0,0,0,0,0,64,238,253,231,16,0,0,0,0,0,0,0,0,0,0,0,2,109,253,253,201,0,0,0,0,0,0,10,216,253,241,21,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,215,34,0,0,0,0,0,11,167,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,99,0,0,0,0,0,0,75,253,253,253,178,167,148,6,0,0,0,0,0,0,0,0,0,0,136,253,253,128,50,50,50,50,50,84,197,253,253,253,253,208,54,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,253,253,253,253,253,233,148,7,0,0,0,0,0,0,0,0,0,0,0,0,43,196,253,253,253,253,253,253,253,253,253,233,88,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,61,122,80,185,100,104,253,253,233,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,192,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,205,231,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,59,92,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,234,184,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,177,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,244,253,149,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,199,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,185,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,252,168,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,152,233,254,253,132,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,253,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,253,254,253,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,253,252,253,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,254,253,163,20,51,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,253,212,20,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,163,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,252,0,0,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,183,0,0,0,0,0,51,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,20,0,0,0,0,0,132,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,151,0,0,0,0,0,21,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,192,50,0,0,0,0,0,102,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,172,0,0,0,0,0,0,0,163,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,50,0,0,0,0,0,0,82,243,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,50,0,0,0,0,0,82,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,123,243,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,91,52,51,132,253,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,252,253,252,253,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,255,253,254,253,254,253,142,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,151,232,253,252,172,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,146,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,145,145,5,0,0,0,0,108,223,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,89,215,253,251,62,0,0,0,2,212,253,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,26,215,253,253,221,65,0,0,0,0,66,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,27,208,253,253,248,90,0,0,0,0,0,66,253,253,201,10,0,0,0,0,0,0,0,0,0,0,0,44,236,253,253,245,42,0,0,0,0,0,25,234,253,253,87,0,0,0,0,0,0,0,0,0,0,0,22,171,253,253,202,23,0,0,0,0,0,0,48,253,253,247,61,0,0,0,0,0,0,0,0,0,0,0,197,253,253,208,23,0,0,0,0,0,0,34,222,253,253,137,0,0,0,0,0,0,0,0,0,0,26,157,251,253,206,23,17,17,17,17,56,125,125,174,253,253,253,60,0,0,0,0,0,0,0,0,0,0,169,253,253,253,185,166,253,253,253,253,253,253,253,253,253,253,231,4,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,230,50,0,0,0,0,0,0,0,0,0,0,0,48,232,232,232,232,232,232,195,124,124,85,25,163,253,253,160,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,224,253,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,143,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,246,253,148,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,245,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,220,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,123,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,43,43,43,43,43,148,252,252,254,182,43,14,0,0,0,0,0,0,0,0,0,0,29,85,85,85,113,250,250,250,250,252,250,250,250,250,252,250,250,138,14,0,0,0,0,0,0,0,0,22,168,250,250,250,252,250,250,250,250,252,250,250,250,250,252,208,125,125,20,0,0,0,0,0,0,0,0,183,250,250,250,250,252,250,250,250,250,252,250,250,250,110,83,55,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,252,250,250,250,250,252,250,144,41,7,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,254,252,252,252,252,247,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,194,250,250,250,252,250,250,250,179,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,125,209,250,252,250,250,250,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,250,252,250,250,250,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,217,252,250,250,250,250,212,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,252,252,252,252,255,252,252,112,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,252,250,250,250,250,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,144,252,250,250,250,250,231,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,250,250,250,41,112,250,250,250,250,252,223,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,250,250,250,41,7,111,250,250,250,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,255,182,43,183,252,255,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,250,250,252,250,250,250,250,252,250,250,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,125,209,250,252,250,250,250,250,252,250,250,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,223,252,250,250,250,250,252,250,165,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,41,41,41,41,217,252,179,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,132,152,152,152,152,153,71,92,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,252,253,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,152,254,213,203,203,183,102,102,102,142,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,213,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,233,70,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,233,112,102,102,102,20,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,254,253,254,253,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,252,192,151,213,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,183,102,0,0,0,0,132,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,0,0,0,0,0,0,0,0,102,183,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,173,51,51,51,51,132,152,233,254,253,224,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,252,253,252,253,252,253,252,253,171,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,255,253,255,253,203,203,142,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,88,125,182,255,255,169,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,254,254,254,254,238,130,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,254,252,161,75,161,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,237,79,0,0,43,251,254,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,252,103,0,0,0,0,182,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,230,254,229,0,0,0,0,0,133,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,229,0,0,0,0,0,143,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,232,8,0,0,0,48,246,254,254,220,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,182,254,196,33,0,20,189,254,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,209,254,248,209,216,254,254,254,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,134,244,254,254,254,213,194,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,77,121,51,18,94,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,223,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,247,254,194,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,231,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,249,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,210,232,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,148,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,248,254,253,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,254,245,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,246,254,255,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,167,253,253,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,173,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,148,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,154,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,121,134,254,183,122,191,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,254,253,249,198,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,247,238,159,159,209,254,253,253,253,197,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,100,0,0,21,40,39,189,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,80,0,0,0,0,0,20,187,253,242,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,171,21,0,0,0,0,0,0,21,214,253,221,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,229,253,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,108,108,51,0,103,157,251,253,202,4,0,0,0,0,0,0,0,0,0,0,0,0,0,35,136,228,228,232,253,253,240,229,252,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,35,215,253,253,236,173,173,173,215,254,253,253,253,253,228,189,122,0,0,0,0,0,0,0,0,0,0,0,108,253,253,200,42,0,0,0,28,85,247,253,154,53,42,37,47,0,0,0,0,0,0,0,0,0,0,0,108,253,253,88,0,0,0,3,125,220,253,184,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,74,0,0,26,123,253,255,215,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,229,161,161,219,253,253,242,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,253,253,253,253,252,169,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,253,253,168,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,38,137,216,255,199,146,59,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,173,197,253,253,253,253,253,253,253,205,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,249,253,253,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,249,253,101,103,184,253,253,253,241,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,247,219,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,228,253,253,253,253,253,220,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,149,253,253,253,253,253,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,194,253,253,253,253,253,253,232,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,253,253,253,253,253,253,253,199,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,231,253,250,194,194,224,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,48,45,0,0,43,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,173,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,211,211,165,226,253,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,154,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,121,245,253,253,142,37,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,54,136,189,254,255,254,164,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,47,154,224,253,253,253,235,218,196,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,54,168,253,253,253,212,200,93,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,242,253,253,253,208,100,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,190,253,253,253,137,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,226,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,94,14,129,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,247,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,164,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,243,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,249,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,185,253,220,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,244,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,188,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,222,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,159,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,255,153,118,118,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,234,251,253,253,253,253,244,178,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,160,253,253,253,253,239,177,221,253,253,173,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,157,253,253,253,155,61,50,0,35,155,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,238,23,0,0,0,0,40,226,253,233,51,0,0,0,0,0,0,0,0,0,0,0,0,53,229,253,253,246,61,0,0,0,0,0,0,42,233,253,159,6,0,0,0,0,0,0,0,0,0,0,0,213,253,253,246,60,0,0,0,0,0,0,0,0,149,253,253,96,0,0,0,0,0,0,0,0,0,0,42,231,253,253,105,0,0,0,0,0,0,0,0,0,47,230,253,96,0,0,0,0,0,0,0,0,0,0,145,253,253,241,66,0,0,0,0,0,0,0,0,0,0,199,253,96,0,0,0,0,0,0,0,0,0,96,250,253,253,219,0,0,0,0,0,0,0,0,0,0,0,88,253,132,0,0,0,0,0,0,0,0,0,118,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,63,253,232,0,0,0,0,0,0,0,0,0,118,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,63,253,232,0,0,0,0,0,0,0,0,0,118,253,253,253,82,0,0,0,0,0,0,0,0,0,0,3,142,253,232,0,0,0,0,0,0,0,0,0,118,253,253,253,82,0,0,0,0,0,0,0,0,0,0,150,253,253,165,0,0,0,0,0,0,0,0,0,70,245,253,253,82,0,0,0,0,0,0,0,0,0,99,234,253,236,57,0,0,0,0,0,0,0,0,0,0,189,253,253,212,34,0,0,0,0,0,9,87,220,252,253,233,69,0,0,0,0,0,0,0,0,0,0,0,73,243,253,253,221,199,66,63,63,163,205,253,253,253,199,70,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,253,253,253,253,253,253,253,253,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,199,232,245,253,253,253,253,249,232,154,96,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,116,116,190,116,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,211,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,193,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,249,254,250,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,247,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,248,254,254,203,61,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,173,253,254,254,203,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,206,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,205,254,254,208,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,206,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,246,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,219,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,244,33,0,0,0,137,187,183,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,233,254,150,0,0,0,38,223,255,254,211,110,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,103,0,0,0,0,81,200,254,254,254,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,238,53,0,0,0,0,0,15,133,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,253,98,0,0,0,0,0,0,1,13,69,241,185,0,0,0,0,0,0,0,0,0,0,0,0,0,52,235,254,147,0,0,0,0,0,0,0,0,0,221,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,252,200,66,63,46,46,63,63,130,200,247,226,41,0,0,0,0,0,0,0,0,0,0,0,0,0,88,241,254,254,254,254,234,235,254,254,254,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,234,244,254,254,254,254,254,254,254,246,189,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,176,206,154,153,117,117,117,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,245,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,245,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,254,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,248,253,253,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,215,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,251,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,231,254,254,196,15,0,0,0,32,34,34,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,253,253,222,20,0,9,67,158,250,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,165,0,44,168,253,253,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,248,47,51,234,254,253,245,253,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,22,159,253,253,170,54,231,253,254,239,94,246,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,227,232,253,253,254,171,202,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,253,253,254,244,253,253,251,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,253,253,253,253,253,253,255,253,253,250,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,254,253,223,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,230,253,253,253,253,192,114,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,235,90,4,34,62,108,154,167,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,175,250,254,232,219,254,254,254,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,254,254,254,233,179,176,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,158,111,48,48,9,0,112,254,176,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,33,2,0,0,0,0,54,252,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,236,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,244,251,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,222,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,182,254,216,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,123,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,254,198,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,255,202,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,239,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,242,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,216,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,248,254,203,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,253,254,253,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,203,102,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,111,191,255,176,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,182,253,253,253,253,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,246,253,246,177,130,217,217,88,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,252,94,0,0,0,24,235,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,216,253,236,53,0,0,0,0,180,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,243,27,0,0,0,12,151,249,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,146,0,0,0,47,184,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,163,63,63,127,200,253,206,250,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,251,171,10,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,170,247,253,252,180,60,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,51,50,0,0,0,0,239,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,241,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,186,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,18,18,131,136,155,254,254,255,254,194,136,59,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,152,253,253,253,253,253,253,243,218,250,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,18,185,253,253,252,189,82,82,57,0,182,252,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,161,182,123,0,0,0,0,0,0,215,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,231,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,231,253,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,220,253,253,248,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,213,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,181,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,165,253,253,253,240,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,192,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,184,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,111,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,237,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,244,0,0,0,0,0,3,24,108,234,254,245,61,0,0,0,0,0,0,0,0,0,0,0,0,30,229,253,137,0,0,0,0,22,119,253,253,253,253,254,237,65,0,0,0,0,0,0,0,0,0,0,0,47,253,253,107,0,0,0,100,216,254,253,234,141,69,254,253,184,0,0,0,0,0,0,0,0,0,0,0,30,228,253,65,0,17,125,245,253,246,139,33,0,0,56,220,209,17,0,0,0,0,0,0,0,0,0,0,0,185,253,243,0,100,253,253,200,74,0,0,0,0,0,162,253,46,0,0,0,0,0,0,0,0,0,0,0,70,254,254,128,100,254,235,74,0,0,0,0,0,0,163,254,46,0,0,0,0,0,0,0,0,0,0,0,26,203,253,246,97,92,17,0,0,0,0,0,0,58,220,209,17,0,0,0,0,0,0,0,0,0,0,0,0,25,237,255,241,185,91,38,70,70,19,58,70,255,209,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,212,253,253,253,233,254,253,220,245,253,99,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,44,169,253,253,254,253,253,211,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,222,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,109,167,249,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,59,92,111,181,238,253,254,253,253,246,72,0,0,0,0,0,0,0,0,0,0,0,0,0,73,215,254,254,254,255,254,254,254,254,255,212,104,20,0,0,0,0,0,0,0,0,0,0,0,0,4,152,247,253,253,253,253,238,198,198,128,43,50,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,254,212,94,120,36,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,227,254,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,170,254,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,101,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,250,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,0,0,0,0,0,217,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,108,0,0,0,0,72,243,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,150,73,73,106,189,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,254,253,212,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,210,235,253,253,217,145,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,48,147,147,205,228,147,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,146,210,254,254,254,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,90,230,254,254,254,252,250,249,253,254,223,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,172,254,254,254,180,103,59,20,0,174,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,142,248,254,254,254,179,14,0,0,0,9,200,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,40,248,254,252,244,190,49,0,0,0,0,79,254,254,221,8,0,0,0,0,0,0,0,0,0,0,0,0,44,254,252,166,0,0,0,0,0,0,0,203,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,11,168,124,0,0,0,0,0,0,0,113,252,254,219,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0,0,0,0,0,2,68,251,254,222,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,225,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,228,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,115,251,254,240,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,202,254,254,214,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,254,254,254,221,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,129,251,254,254,254,254,254,197,6,0,0,0,133,99,0,0,0,0,0,0,0,0,0,0,0,0,12,207,254,254,254,194,120,190,254,255,76,35,66,156,253,156,0,0,0,0,0,0,0,0,0,0,0,5,219,254,254,235,115,4,0,93,254,254,238,235,254,254,183,13,0,0,0,0,0,0,0,0,0,0,57,237,254,254,174,45,0,0,0,2,162,243,254,254,246,131,4,0,0,0,0,0,0,0,0,0,0,27,234,254,254,167,8,0,0,0,0,0,0,50,163,126,56,0,0,0,0,0,0,0,0,0,0,0,0,39,254,252,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,152,233,254,213,132,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,252,253,252,253,232,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,213,41,0,132,253,255,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,252,233,30,0,0,10,91,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,254,233,0,0,0,0,0,0,255,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,233,91,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,123,0,0,0,0,0,0,0,234,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,171,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,244,40,0,0,0,0,0,0,0,0,153,253,102,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,203,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,31,193,254,233,41,0,0,0,0,0,0,0,0,0,173,253,102,0,0,0,0,0,0,0,0,0,0,0,92,252,253,70,0,0,0,0,0,0,0,0,0,0,253,252,61,0,0,0,0,0,0,0,0,0,0,0,173,253,224,20,0,0,0,0,0,0,0,0,0,21,254,233,0,0,0,0,0,0,0,0,0,0,0,41,253,252,203,0,0,0,0,0,0,0,0,0,0,142,253,111,0,0,0,0,0,0,0,0,0,0,0,102,254,253,142,0,0,0,0,0,0,0,0,0,72,253,254,50,0,0,0,0,0,0,0,0,0,0,0,102,253,252,102,0,0,0,0,0,0,0,0,41,233,252,131,10,0,0,0,0,0,0,0,0,0,0,0,82,255,253,163,0,0,0,0,0,0,0,31,173,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,243,40,0,0,0,0,0,41,193,252,213,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,213,52,31,52,51,153,233,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,253,252,253,232,253,252,253,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,141,241,255,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,233,168,68,69,136,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,241,59,0,0,0,107,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,114,0,0,13,104,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,177,38,0,19,194,253,252,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,139,0,57,191,252,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,90,76,243,252,252,178,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,254,253,253,190,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,252,206,118,234,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,63,0,22,128,238,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,244,125,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,93,0,0,0,0,38,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,233,37,0,0,0,0,0,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,196,0,0,0,0,0,101,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,203,7,0,4,29,66,191,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,187,169,179,252,252,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,252,253,252,252,214,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,202,164,90,140,65,28,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,143,108,67,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,106,254,254,158,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,213,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,232,254,254,223,229,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,237,254,254,215,67,118,245,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,254,254,193,23,5,190,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,222,28,0,10,197,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,251,254,247,89,0,0,92,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,134,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,224,254,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,138,25,50,127,174,181,160,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,254,181,223,247,255,254,254,254,248,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,254,254,252,244,209,254,254,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,245,143,63,0,4,169,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,254,254,152,65,0,0,0,0,94,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,254,9,0,0,0,0,22,238,254,245,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,241,254,254,76,0,0,23,134,237,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,254,248,245,245,248,254,254,254,183,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,221,254,254,254,254,255,254,228,104,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,131,250,254,254,230,145,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,108,254,254,247,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,128,225,226,240,253,241,222,253,243,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,76,248,253,249,250,253,203,40,48,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,143,53,53,153,19,0,48,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,226,253,204,17,0,0,0,0,0,100,253,205,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,61,0,0,0,0,0,41,226,244,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,9,0,0,0,0,35,197,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,242,253,86,0,0,0,30,171,253,225,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,244,32,0,43,190,253,244,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,152,164,229,253,214,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,254,255,205,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,45,207,253,253,204,122,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,90,253,253,253,253,197,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,212,84,122,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,244,45,0,4,219,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,164,0,0,0,216,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,143,0,0,19,228,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,251,126,57,170,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,128,251,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,232,79,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,242,255,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,241,254,242,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,242,254,243,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,140,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,234,254,243,30,0,88,211,237,184,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,188,0,100,248,254,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,46,128,248,254,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,236,254,227,72,248,254,221,82,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,210,211,254,248,54,144,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,254,254,254,75,82,244,254,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,254,254,239,167,244,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,254,254,254,254,254,251,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,254,254,254,254,254,236,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,254,254,251,151,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,229,138,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,84,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,215,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,138,255,253,253,211,191,139,118,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,253,252,252,252,252,253,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,215,183,183,208,252,253,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,21,0,0,17,45,159,252,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,22,0,0,0,0,106,243,252,252,157,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,24,160,253,255,253,236,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,47,110,219,252,252,252,253,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,70,153,209,252,253,252,252,252,252,253,240,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,253,252,227,160,160,253,252,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,221,137,32,137,64,16,0,0,148,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,170,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,248,253,252,153,9,0,0,0,0,0,0,0,0,0,0,0,32,210,126,168,116,32,0,0,0,22,146,248,252,253,210,6,0,0,0,0,0,0,0,0,0,0,13,159,253,253,253,255,253,222,97,24,139,212,253,253,253,189,42,0,0,0,0,0,0,0,0,0,0,0,97,252,252,252,252,253,252,252,252,252,253,252,252,252,157,84,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,253,252,252,252,252,253,252,202,69,6,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,252,252,253,252,252,252,252,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,221,252,252,190,137,54,22,75,23,22,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,113,38,141,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,234,252,218,178,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,252,252,252,253,155,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,44,215,253,252,252,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,157,189,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,255,215,110,0,0,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,210,246,252,252,215,33,0,0,0,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,144,252,252,252,220,31,0,0,0,0,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,4,153,253,252,252,249,99,0,0,0,0,95,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,252,145,0,0,0,0,0,63,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,196,0,0,0,0,0,0,63,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,129,21,0,0,0,0,0,0,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,228,21,0,0,0,0,0,0,7,165,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,126,0,0,0,0,0,0,7,131,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,0,126,165,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,114,75,26,113,113,176,253,253,253,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,243,231,252,252,253,252,252,252,252,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,253,252,252,252,252,253,252,252,252,220,56,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,239,253,252,252,252,252,253,252,198,84,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,174,252,252,252,252,112,112,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,96,255,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,186,251,253,251,251,236,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,94,94,94,253,251,251,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,194,255,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,112,205,251,253,251,156,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,251,251,253,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,202,221,223,244,251,251,251,169,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,251,251,253,251,251,251,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,255,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,141,220,220,221,224,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,88,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,158,253,251,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,12,96,234,253,255,253,253,253,253,255,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,12,158,251,251,251,253,251,251,251,251,253,251,251,243,121,39,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,251,251,251,251,253,251,188,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,236,251,251,251,253,251,251,251,211,189,69,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,173,251,251,253,132,94,94,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,77,77,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,181,242,245,254,254,235,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,204,254,254,190,116,211,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,168,246,254,254,110,4,0,117,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,158,254,253,230,115,2,0,4,160,245,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,250,165,0,0,0,0,79,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,143,42,0,0,0,0,19,231,245,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,142,254,186,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,105,251,179,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,52,122,75,14,83,254,235,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,169,213,254,254,247,221,254,189,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,133,234,188,104,103,136,254,254,254,175,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,247,76,0,0,19,204,254,254,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,207,177,58,0,23,125,211,243,103,21,212,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,17,205,225,71,0,75,212,254,242,103,0,0,13,254,249,20,0,0,0,0,0,0,0,0,0,0,0,0,153,254,107,54,201,245,241,101,28,0,0,0,3,153,253,68,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,254,233,190,33,0,0,0,0,0,0,0,220,100,0,0,0,0,0,0,0,0,0,0,0,0,147,241,192,108,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,179,95,0,0,0,0,0,0,0,0,0,0,45,192,66,0,0,0,0,0,0,0,0,0,0,0,138,254,253,225,120,26,0,0,0,0,0,0,0,19,226,253,28,0,0,0,0,0,0,0,0,0,0,0,226,255,253,253,253,224,198,110,86,86,86,123,198,154,253,253,66,0,0,0,0,0,0,0,0,0,0,127,250,242,65,116,241,254,253,253,253,254,253,253,253,254,253,253,40,0,0,0,0,0,0,0,0,0,26,224,254,227,0,0,0,13,114,114,114,102,0,51,0,26,245,179,4,0,0,0,0,0,0,0,0,0,64,235,253,126,0,0,0,0,0,0,0,0,0,0,0,19,226,122,9,0,0,0,0,0,0,0,0,23,235,253,215,0,0,0,0,0,0,0,0,0,0,0,0,154,253,56,0,0,0,0,0,0,0,0,0,16,216,253,191,0,0,0,0,0,0,0,0,0,0,0,51,254,228,31,0,0,0,0,0,0,0,0,0,80,254,245,25,0,0,0,0,0,0,0,0,0,0,10,129,252,126,0,0,0,0,0,0,0,0,0,0,29,253,93,0,0,0,0,0,0,0,0,0,0,0,160,253,201,0,0,0,0,0,0,0,0,0,0,0,7,56,13,0,0,0,0,0,0,0,0,0,0,26,223,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,247,203,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,253,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,250,242,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,230,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,225,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,68,151,226,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,248,254,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,58,164,251,253,255,252,127,218,50,0,0,0,0,0,0,0,0,0,0,0,0,0,18,45,157,121,175,233,254,254,244,230,164,37,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,254,254,254,254,195,184,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,254,250,201,93,9,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,254,243,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,117,253,254,195,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,168,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,254,251,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,218,90,76,78,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,130,239,223,212,211,245,188,140,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,34,20,5,53,119,237,254,171,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,233,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,15,75,158,116,102,158,202,254,217,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,210,196,219,254,254,254,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,208,221,184,237,243,233,239,125,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,41,24,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,80,195,255,169,86,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,225,253,253,254,253,253,194,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,73,81,107,62,62,178,248,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,217,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,253,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,43,128,241,253,253,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,207,253,253,254,253,253,253,233,84,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,254,117,85,233,253,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,104,181,117,0,0,0,7,207,255,234,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,13,0,0,0,0,0,46,232,254,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,189,173,0,0,0,0,0,11,183,254,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,248,192,47,0,0,0,16,107,225,253,253,134,2,0,0,0,0,0,0,0,0,0,0,0,0,0,77,245,253,50,37,50,128,192,228,253,253,250,151,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,249,253,254,253,253,253,253,254,249,189,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,194,254,253,253,253,220,136,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,89,172,191,254,254,201,118,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,248,254,254,254,254,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,194,121,55,65,116,147,212,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,11,0,0,0,0,0,21,186,248,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,195,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,143,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,254,242,227,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,254,254,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,56,146,237,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,60,119,0,0,0,0,0,80,244,230,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,145,0,0,0,4,119,245,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,61,0,19,61,200,254,254,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,158,148,235,254,254,247,140,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,254,255,225,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,196,254,254,200,117,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,9,83,140,225,252,172,104,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,218,253,253,253,253,254,253,253,94,0,0,0,5,7,0,0,0,0,0,0,0,0,0,0,0,0,94,240,253,253,253,238,175,147,153,253,244,123,60,0,66,98,0,0,0,0,0,0,0,0,0,0,0,57,240,253,253,108,57,22,0,0,54,253,253,253,77,0,66,98,0,0,0,0,0,0,0,0,0,0,0,172,253,253,173,7,0,0,0,2,176,253,253,253,159,0,13,19,0,0,0,0,0,0,0,0,0,0,9,222,253,232,33,0,0,0,0,135,253,253,253,253,54,0,13,19,0,0,0,0,0,0,0,0,0,0,89,253,253,140,0,0,0,0,135,254,253,253,253,153,6,0,66,98,0,0,0,0,0,0,0,0,0,0,99,253,253,83,0,0,39,192,252,254,253,253,234,21,0,0,66,98,0,0,0,0,0,0,0,0,0,0,99,253,253,109,90,174,246,253,253,254,253,253,94,0,0,0,5,83,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,253,253,253,253,254,253,202,2,0,0,0,64,98,0,0,0,0,0,0,0,0,0,0,0,96,228,254,254,247,171,166,254,255,248,42,0,0,0,0,66,98,0,0,0,0,0,0,0,0,0,0,0,0,10,73,73,10,5,215,253,254,146,0,0,0,0,0,66,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,205,19,0,0,0,0,0,17,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,248,253,242,19,0,0,0,0,0,0,9,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,253,131,0,0,0,0,0,0,0,66,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,74,0,0,0,0,0,0,0,66,98,0,0,0,0,0,0,0,0,0,0,0,0,0,100,248,253,253,143,1,0,0,0,0,0,0,0,30,44,0,0,0,0,0,0,0,0,0,0,0,0,78,248,253,253,193,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,212,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,237,210,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,212,243,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,145,0,0,0,0,7,115,131,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,236,253,241,39,0,0,0,7,159,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,237,227,142,124,0,0,0,3,194,253,219,112,34,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,249,103,0,0,0,0,7,194,253,244,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,157,0,0,0,0,0,156,253,240,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,228,253,106,29,85,85,54,47,245,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,249,247,253,253,249,247,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,202,253,253,243,231,253,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,65,65,44,15,86,253,254,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,255,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,87,238,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,253,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,190,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,246,247,60,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,224,0,5,227,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,224,0,66,253,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,231,127,247,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,253,253,254,164,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,218,101,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,164,246,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,235,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,235,253,253,253,201,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,238,253,253,253,180,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,235,253,253,247,153,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,253,253,249,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,200,253,253,246,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,238,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,200,253,253,253,237,77,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,225,253,253,253,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,210,253,253,253,214,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,182,253,253,253,238,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,178,253,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,252,164,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,107,250,253,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,253,252,213,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,241,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,243,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,230,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,231,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,210,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,80,80,153,250,80,80,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,254,254,254,254,228,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,254,254,254,254,254,245,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,114,114,114,114,114,206,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,106,243,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,254,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,185,254,254,254,224,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,70,70,70,230,219,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,207,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,243,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,237,254,254,225,24,0,0,0,0,0,0,0,0,0,0,0,0,0,28,52,0,0,0,0,0,40,116,153,254,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,221,194,194,194,194,194,215,254,254,254,214,61,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,211,254,254,254,254,254,254,254,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,231,254,254,254,254,254,254,205,78,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,73,73,10,0,0,0,0,11,42,53,73,73,73,42,0,0,0,0,0,0,0,0,0,73,251,251,251,251,253,251,159,144,144,145,144,160,205,221,253,251,251,205,144,0,0,0,0,0,0,0,0,192,215,215,215,241,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,103,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,72,174,251,251,251,201,71,71,71,71,72,174,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,176,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,251,230,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,251,236,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,236,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,142,236,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,71,20,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,139,174,253,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,201,252,252,252,252,239,132,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,119,241,253,252,252,252,190,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,243,189,176,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,185,249,252,208,35,0,215,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,154,62,25,183,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,122,21,0,114,252,252,169,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,40,48,171,253,252,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,252,252,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,252,252,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,131,253,253,253,236,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,169,37,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,252,171,7,0,200,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,253,252,21,0,0,148,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,137,4,0,0,236,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,212,0,0,0,124,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,167,0,78,155,242,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,245,252,250,188,251,252,252,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,253,252,252,252,226,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,209,252,155,147,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,231,156,0,0,0,0,0,0,125,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,155,0,0,0,0,0,28,222,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,201,252,155,0,0,0,0,0,124,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,155,0,0,0,0,7,185,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,155,0,0,0,0,28,232,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,122,0,0,0,0,18,209,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,252,224,24,0,0,0,0,30,237,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,208,252,122,0,0,0,0,0,37,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,186,5,0,0,0,0,0,37,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,123,0,47,121,121,58,0,151,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,253,161,173,253,253,253,255,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,252,252,252,253,252,252,252,252,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,32,240,252,252,223,170,96,96,96,111,252,252,252,252,208,17,0,0,0,0,0,0,0,0,0,0,0,0,0,159,204,169,16,0,0,0,0,8,188,252,252,215,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,157,252,209,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,194,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,255,229,105,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,239,253,253,253,205,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,242,253,253,253,253,253,204,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,250,220,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,248,253,253,117,16,183,253,253,183,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,247,253,253,205,9,0,11,245,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,217,253,253,243,43,0,0,0,244,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,253,253,253,162,0,0,0,0,160,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,253,253,253,232,8,0,0,0,0,83,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,198,47,0,0,0,0,0,28,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,44,232,253,253,253,82,0,0,0,0,0,0,28,253,253,233,28,0,0,0,0,0,0,0,0,0,0,0,124,253,253,248,57,4,0,0,0,0,0,0,74,253,253,253,75,0,0,0,0,0,0,0,0,0,0,18,229,253,253,145,0,0,0,0,0,0,0,0,28,253,253,246,58,0,0,0,0,0,0,0,0,0,0,164,253,253,253,27,0,0,0,0,0,0,0,0,28,253,253,221,0,0,0,0,0,0,0,0,0,0,0,184,253,253,175,2,0,0,0,0,0,0,0,0,51,253,253,221,0,0,0,0,0,0,0,0,0,0,0,184,253,253,193,7,0,0,0,0,0,0,0,53,246,253,253,147,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,164,84,80,53,0,0,53,128,245,253,253,212,21,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,253,253,252,251,249,249,251,253,253,253,203,21,0,0,0,0,0,0,0,0,0,0,0,0,0,36,195,253,253,253,253,253,253,253,253,253,226,171,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,72,145,145,228,246,168,214,145,120,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,255,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,243,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,244,75,0,0,0,13,104,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,142,0,0,0,45,194,253,252,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,233,37,0,10,160,240,252,194,56,143,243,253,171,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,96,0,51,229,252,252,102,13,0,0,125,253,196,0,0,0,0,0,0,0,0,0,0,0,0,98,253,239,38,23,179,254,209,25,0,0,0,0,114,254,184,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,13,209,252,234,28,0,0,0,0,19,194,247,65,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,144,252,252,100,0,0,0,0,0,172,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,250,243,252,151,0,0,0,0,13,188,246,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,253,28,0,7,29,79,254,253,231,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,253,252,252,178,169,187,252,252,247,171,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,252,252,252,253,252,252,214,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,252,252,252,241,139,52,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,86,129,129,129,129,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,225,254,254,220,210,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,200,119,60,9,27,249,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,2,0,0,1,153,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,150,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,231,244,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,238,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,232,169,92,145,144,106,90,90,64,35,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,139,235,254,254,254,254,254,254,254,254,254,225,182,142,58,21,8,0,0,0,0,0,0,0,0,0,0,0,0,34,84,140,85,60,73,140,140,140,140,198,236,254,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,48,48,74,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,146,246,255,255,254,203,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,227,253,253,253,253,253,253,227,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,214,139,139,94,198,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,219,13,0,0,148,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,102,0,104,250,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,208,253,227,58,248,253,225,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,219,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,233,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,249,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,249,253,195,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,248,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,102,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,233,254,253,255,253,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,252,192,151,172,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,203,81,0,0,0,41,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,233,111,0,0,0,0,0,0,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,233,41,0,0,0,0,0,0,0,214,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,151,0,0,0,0,0,0,0,41,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,20,0,0,0,0,0,0,0,163,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,212,0,0,0,0,0,0,0,0,0,0,0,0,31,51,51,132,152,152,92,51,21,0,0,0,0,123,244,81,0,0,0,0,0,0,0,0,0,0,82,203,233,252,253,252,253,252,253,252,203,61,0,0,123,243,122,0,0,0,0,0,0,0,0,0,0,0,234,253,254,233,102,20,0,0,102,102,214,253,92,213,254,131,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,232,183,102,102,20,0,0,132,252,253,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,223,255,253,254,253,254,253,244,203,173,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,50,131,213,252,192,151,81,0,10,131,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,170,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,177,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,195,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,159,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,163,238,252,252,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,156,252,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,234,252,252,240,249,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,252,140,146,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,240,63,0,48,203,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,225,253,252,252,99,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,253,252,176,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,224,252,253,242,49,19,29,92,169,169,169,169,108,3,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,89,111,215,252,253,252,252,252,252,253,152,31,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,255,253,253,253,253,255,253,253,253,253,255,253,222,38,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,252,252,204,106,27,136,167,167,253,252,252,209,0,0,0,0,0,0,0,0,0,0,194,252,252,252,253,252,252,230,25,0,0,0,0,0,119,246,252,223,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,242,230,223,0,0,0,0,0,0,76,243,252,223,0,0,0,0,0,0,0,0,0,63,240,252,252,252,253,89,25,99,0,0,0,0,0,0,191,252,252,223,0,0,0,0,0,0,0,0,0,0,163,253,253,253,141,0,0,0,0,0,0,89,128,253,255,253,228,47,0,0,0,0,0,0,0,0,0,0,85,252,252,252,241,100,85,76,48,85,210,246,252,252,253,252,70,0,0,0,0,0,0,0,0,0,0,0,19,209,252,252,253,252,252,246,227,253,252,252,252,252,133,55,12,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,253,252,245,208,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,190,112,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,96,255,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,88,251,253,251,251,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,251,251,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,251,251,251,229,168,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,228,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,253,253,229,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,228,253,251,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,235,126,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,219,39,0,24,96,96,96,96,96,96,96,84,0,0,0,0,0,0,0,0,0,0,0,0,52,251,251,251,158,4,32,186,251,253,251,251,251,251,253,244,111,4,0,0,0,0,0,0,0,0,0,0,190,251,251,251,79,32,251,251,251,253,251,251,251,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,190,251,251,251,64,186,251,251,251,253,251,251,251,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,190,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,172,12,0,0,0,0,0,0,0,0,0,0,32,253,253,253,255,253,253,253,253,255,253,253,253,253,255,241,79,0,0,0,0,0,0,0,0,0,0,0,8,157,251,251,253,251,251,251,251,253,251,251,251,251,161,54,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,251,253,251,251,251,251,253,251,251,251,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,188,253,251,251,251,251,253,204,188,148,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,114,251,251,251,95,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,230,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,19,0,0,0,0,3,57,141,249,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,254,107,17,0,0,51,174,253,254,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,254,254,254,254,254,254,254,254,228,255,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,253,253,148,115,190,206,207,190,73,116,254,227,63,0,0,0,0,0,0,0,0,0,0,0,0,9,187,253,242,71,0,0,0,0,0,0,70,240,247,87,0,0,0,0,0,0,0,0,0,0,0,0,9,151,254,236,113,0,0,0,0,0,0,68,240,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,236,50,0,0,0,0,0,0,0,198,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,110,249,236,118,0,0,0,0,0,0,0,164,251,223,31,0,0,0,0,0,0,0,0,0,0,0,0,100,249,251,113,0,0,0,0,0,0,3,157,254,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,195,236,113,0,0,0,0,0,0,17,174,253,195,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,9,0,0,0,0,0,0,0,164,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,251,232,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,182,247,179,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,224,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,223,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,129,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,176,0,0,0,0,0,0,0,0,0,0,0,0,0,39,59,0,0,0,0,0,0,0,0,0,0,0,202,236,0,0,0,0,0,0,0,0,0,0,0,0,0,140,251,41,0,0,0,0,0,0,0,0,0,9,214,236,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,44,0,0,0,0,0,0,0,0,0,36,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,228,231,21,0,0,0,0,0,0,0,0,0,97,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,228,210,0,0,0,0,0,0,0,0,0,0,211,254,107,0,0,0,0,0,0,0,0,0,0,0,0,28,240,210,0,0,0,0,0,0,8,79,193,202,245,254,61,0,0,0,0,0,0,0,0,0,0,0,0,68,254,173,0,0,0,1,18,163,210,254,254,254,254,237,36,0,0,0,0,0,0,0,0,0,0,0,3,183,254,97,52,67,97,103,254,255,254,248,196,241,254,107,0,0,0,0,0,0,0,0,0,0,0,0,22,212,254,254,254,254,254,254,254,254,144,33,0,219,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,43,192,254,254,254,249,175,145,0,0,0,35,243,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,8,8,8,0,0,0,0,0,78,254,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,245,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,251,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,217,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,238,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,252,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,139,223,212,139,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,121,44,0,75,213,253,253,253,253,194,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,129,212,203,185,216,255,253,253,253,253,255,220,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,253,253,253,253,204,88,46,46,46,109,220,90,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,180,44,137,137,137,11,0,0,0,0,0,15,6,0,0,0,0,0,0,0,0,0,0,0,0,7,213,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,88,43,85,0,0,0,0,9,93,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,245,241,252,231,231,231,231,119,212,247,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,116,116,117,116,85,0,0,0,0,64,240,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,135,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,206,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,238,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,26,119,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,70,70,189,222,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,212,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,223,44,54,23,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,120,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,124,225,253,209,0,0,0,0,0,0,0,0,92,120,210,167,0,0,0,0,0,0,0,0,0,0,53,240,249,231,252,252,210,133,133,133,133,142,195,243,232,163,39,6,0,0,0,0,0,0,0,0,0,39,181,239,69,0,86,198,239,253,247,198,198,92,88,88,8,0,0,0,0,0,0,0,0,0,0,0,12,204,219,54,0,0,0,0,41,55,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,207,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,227,212,159,111,164,153,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,202,221,221,221,223,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,236,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,23,148,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,234,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,251,234,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,232,250,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,222,165,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,2,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,239,242,176,176,202,176,176,176,198,179,149,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,182,252,254,254,254,254,254,254,255,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,140,154,227,191,154,236,254,254,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,137,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,172,254,254,247,123,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,93,210,254,254,213,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,172,254,254,246,149,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,80,217,254,254,233,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,172,254,254,246,149,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,232,254,254,216,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,254,254,158,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,215,254,247,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,247,254,238,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,240,254,240,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,242,254,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,218,254,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,165,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,115,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,240,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,237,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,235,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,217,254,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,107,4,61,145,132,108,21,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,164,254,254,67,185,254,254,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,254,254,254,245,174,175,254,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,254,203,55,0,5,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,170,0,23,121,254,240,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,210,254,211,62,62,40,45,214,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,208,117,137,206,246,253,193,49,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,254,254,254,254,247,156,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,224,109,76,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,231,254,187,144,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,254,146,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,253,248,121,154,251,254,253,249,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,253,253,242,0,0,125,254,253,253,246,94,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,117,0,0,0,118,227,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,227,84,11,0,0,0,0,15,160,253,253,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,210,250,163,0,0,0,0,0,0,0,39,180,253,253,249,80,0,0,0,0,0,0,0,0,0,0,0,21,223,231,0,0,0,0,0,0,0,0,0,51,253,253,253,209,0,0,0,0,0,0,0,0,0,0,0,67,253,134,0,0,0,0,0,0,0,0,0,13,167,253,253,248,106,0,0,0,0,0,0,0,0,0,0,178,254,122,0,0,0,0,0,0,0,0,0,0,0,185,254,255,221,19,0,0,0,0,0,0,0,0,24,230,253,121,0,0,0,0,0,0,0,0,0,0,0,27,239,253,253,33,0,0,0,0,0,0,0,0,34,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,33,0,0,0,0,0,0,0,0,16,213,253,238,46,0,0,0,0,0,0,0,0,0,0,0,113,253,253,33,0,0,0,0,0,0,0,0,0,153,253,253,172,12,0,0,0,0,0,0,0,0,0,0,12,253,253,33,0,0,0,0,0,0,0,0,0,67,253,253,253,211,56,0,0,0,0,0,0,0,0,0,136,253,253,33,0,0,0,0,0,0,0,0,0,6,209,253,253,253,238,103,8,0,0,0,0,6,12,99,242,253,216,17,0,0,0,0,0,0,0,0,0,0,39,160,253,253,253,253,223,155,155,78,136,206,253,253,253,226,69,0,0,0,0,0,0,0,0,0,0,0,0,6,90,237,253,253,253,253,254,253,253,253,253,253,211,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,133,210,253,253,254,253,253,244,143,56,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,110,233,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,253,241,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,206,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,246,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,237,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,144,0,0,0,145,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,192,150,253,253,255,211,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,252,205,92,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,252,71,144,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,208,104,99,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,238,217,242,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,241,252,253,252,252,252,154,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,190,253,252,231,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,63,152,236,228,144,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,61,180,224,254,239,226,245,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,218,254,237,163,133,31,0,169,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,224,254,199,70,4,0,0,0,0,169,216,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,249,204,78,7,0,0,0,0,0,1,177,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,237,21,0,0,0,0,0,0,0,43,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,235,15,0,0,0,0,0,0,0,162,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,122,1,0,0,0,0,0,88,246,150,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,228,254,77,0,0,0,0,25,242,149,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,241,247,59,0,0,14,245,230,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,226,39,3,137,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,228,189,245,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,124,246,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,248,246,128,113,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,218,254,126,48,209,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,95,239,254,242,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,235,254,254,254,244,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,234,151,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,178,255,254,195,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,228,254,249,243,194,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,215,253,238,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,186,253,243,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,192,253,196,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,195,253,164,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,230,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,235,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,117,16,114,115,53,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,220,253,253,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,254,244,169,190,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,154,47,16,220,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,114,14,196,254,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,254,218,213,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,254,245,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,199,253,216,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,20,38,99,99,111,176,224,219,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,76,160,196,237,254,254,254,255,254,233,251,203,14,0,0,0,0,0,0,0,0,0,0,0,0,0,79,243,254,240,195,141,117,51,39,39,39,18,235,156,0,0,0,0,0,0,0,0,0,0,0,0,0,19,144,98,86,15,0,0,0,0,0,0,0,37,247,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,242,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,219,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,250,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,235,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,199,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,255,224,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,202,7,0,150,221,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,77,0,0,173,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,77,0,9,222,254,246,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,237,12,0,97,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,201,0,0,111,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,254,119,0,0,111,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,95,6,0,111,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,200,254,254,200,141,211,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,162,209,254,254,254,254,254,244,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,115,198,245,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,249,67,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,17,17,17,81,180,180,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,107,240,253,253,253,253,253,253,229,107,14,0,0,0,0,0,0,0,0,0,0,0,0,0,14,33,114,208,253,253,253,253,225,56,178,235,253,253,204,83,0,0,0,0,0,0,0,0,0,0,0,9,178,253,253,253,253,253,177,129,42,0,0,60,230,253,253,177,8,0,0,0,0,0,0,0,0,0,77,216,253,253,253,253,226,55,16,0,0,0,0,0,59,229,253,253,47,0,0,0,0,0,0,0,0,0,91,253,253,253,185,114,51,0,0,0,0,0,0,0,0,131,253,253,220,50,0,0,0,0,0,0,0,0,240,253,253,180,12,0,0,0,0,0,0,0,0,0,0,12,224,253,253,238,0,0,0,0,0,0,0,0,255,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,0,0,0,0,0,0,0,0,95,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,58,253,253,253,0,0,0,0,0,0,0,0,91,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,0,0,0,0,0,0,0,0,91,253,253,233,51,0,0,0,0,0,0,0,0,0,0,0,222,253,253,189,0,0,0,0,0,0,0,0,82,246,253,253,129,0,0,0,0,0,0,0,0,0,21,111,245,253,246,81,0,0,0,0,0,0,0,0,0,107,253,253,186,93,0,0,0,0,0,0,0,53,227,253,253,253,105,0,0,0,0,0,0,0,0,0,0,14,229,253,253,244,205,57,42,42,42,42,163,227,253,253,244,212,13,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,253,253,253,253,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,14,53,223,253,253,253,253,253,253,253,253,227,169,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,134,253,253,253,253,253,195,106,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,15,15,15,15,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,212,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,228,253,235,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,253,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,168,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,247,42,0,3,24,108,138,138,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,110,0,22,170,252,252,252,252,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,252,69,100,215,253,252,252,252,252,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,253,231,188,244,252,253,235,160,194,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,253,252,252,252,252,190,60,0,144,252,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,255,253,253,253,180,34,138,222,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,252,252,169,253,252,252,252,231,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,246,253,252,252,252,252,253,252,233,183,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,252,252,252,253,193,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,168,137,137,23,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,149,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,224,253,226,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,144,253,247,125,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,122,253,253,202,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,241,254,246,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,224,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,247,242,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,247,253,228,188,188,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,226,254,254,254,255,254,254,226,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,239,191,140,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,243,222,139,35,0,38,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,230,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,251,247,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,140,120,21,0,0,0,49,236,250,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,113,0,0,87,234,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,213,253,242,45,111,235,253,148,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,181,253,227,251,239,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,218,253,197,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,113,207,253,255,128,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,231,209,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,252,253,252,252,252,252,135,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,170,243,252,252,252,84,84,193,242,252,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,252,252,173,0,0,0,91,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,253,162,0,0,0,0,0,79,255,253,222,38,0,0,0,0,0,0,0,0,0,0,29,122,252,252,253,223,136,9,0,0,0,0,0,0,206,252,252,130,0,0,0,0,0,0,0,0,0,0,117,252,252,252,228,52,0,0,0,0,0,0,0,0,25,199,252,230,25,0,0,0,0,0,0,0,0,76,243,252,252,252,47,0,0,0,0,0,0,0,0,0,0,85,252,252,128,0,0,0,0,0,0,0,0,191,252,252,236,112,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,255,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,13,181,252,252,157,0,0,0,0,0,0,0,0,253,252,252,161,0,0,0,0,0,0,0,0,0,0,0,191,252,252,236,50,0,0,0,0,0,0,0,0,192,253,253,253,174,0,0,0,0,0,0,0,0,76,191,255,253,228,126,0,0,0,0,0,0,0,0,0,12,181,252,252,252,226,225,193,85,85,85,210,225,243,252,253,223,130,0,0,0,0,0,0,0,0,0,0,0,66,208,252,252,253,252,252,252,252,253,252,252,252,252,196,52,0,0,0,0,0,0,0,0,0,0,0,0,0,19,177,223,237,252,252,252,252,253,242,223,208,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,112,112,112,112,112,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,98,241,244,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,154,243,254,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,254,241,108,23,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,175,22,0,0,0,0,31,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,246,199,12,0,0,0,0,0,193,235,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,145,8,0,0,10,61,140,250,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,185,218,229,233,254,254,254,167,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,159,249,254,254,254,254,254,254,240,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,34,34,34,84,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,214,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,247,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,235,254,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,240,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,247,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,228,254,184,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,231,254,186,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,255,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,248,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,105,123,174,245,253,253,255,129,105,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,252,252,252,253,252,252,231,164,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,220,245,237,237,237,237,238,249,252,252,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,138,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,252,199,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,231,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,252,209,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,132,253,252,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,255,228,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,242,252,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,247,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,153,250,252,207,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,191,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,199,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,3,33,143,173,231,255,191,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,240,254,254,206,220,155,185,179,147,147,251,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,254,221,100,52,0,0,0,0,14,226,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,115,0,0,0,0,0,0,134,248,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,227,84,3,0,0,0,26,224,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,41,168,254,141,2,0,4,188,167,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,169,254,169,40,176,176,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,126,252,247,191,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,195,254,242,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,174,64,180,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,172,3,0,0,130,253,148,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,184,170,5,0,0,0,0,107,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,240,22,0,0,0,0,0,9,218,241,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,245,115,0,0,0,0,0,0,0,141,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,171,232,70,0,0,0,0,0,0,0,124,246,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,123,0,0,0,0,0,0,0,0,192,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,96,0,0,0,0,0,0,0,93,248,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,204,170,0,0,0,0,0,0,92,248,95,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,202,193,109,75,51,77,161,250,123,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,171,249,251,225,139,29,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,29,0,0,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,57,0,0,0,0,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,198,0,0,0,0,0,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,114,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,86,0,0,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,114,86,170,226,226,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,198,29,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,141,57,0,0,170,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,118,248,255,146,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,133,234,219,112,253,253,253,253,224,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,235,253,253,253,210,177,177,202,253,234,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,158,253,213,109,27,0,0,113,253,234,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,82,22,0,0,0,33,225,253,234,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,241,253,250,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,186,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,188,250,253,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,230,253,253,197,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,253,253,193,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,205,130,205,251,208,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,247,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,141,248,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,187,253,213,98,0,0,0,0,0,0,0,0,0,0,0,0,40,219,58,0,0,0,0,0,0,0,68,189,253,211,102,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,198,27,0,0,0,0,0,16,120,253,253,206,18,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,217,118,31,0,0,51,99,253,253,223,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,128,253,253,253,215,179,179,239,253,253,230,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,129,253,253,253,253,253,253,249,217,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,116,198,182,190,239,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,78,148,218,253,175,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,128,227,252,252,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,237,252,250,238,251,231,143,209,237,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,252,252,199,115,85,134,16,152,253,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,244,121,7,0,14,13,187,252,191,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,153,0,0,0,50,201,253,218,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,189,5,0,0,50,185,252,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,175,2,0,18,201,252,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,91,70,239,253,196,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,232,239,252,191,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,218,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,245,252,244,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,196,63,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,187,252,236,54,4,182,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,89,0,0,126,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,252,137,0,0,8,197,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,104,22,57,181,252,244,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,147,235,253,217,138,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,127,0,0,0,37,153,206,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,240,253,200,0,0,100,239,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,118,0,16,185,253,247,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,190,253,253,44,1,76,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,225,3,4,216,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,232,253,253,147,0,15,216,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,201,253,253,207,40,0,66,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,253,253,246,163,121,207,253,251,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,253,253,253,253,253,253,253,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,104,137,231,253,253,253,253,248,124,31,82,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,87,209,253,253,253,253,234,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,253,254,140,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,78,39,39,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,219,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,32,0,0,0,49,252,253,217,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,251,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,190,253,250,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,153,220,255,237,153,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,241,206,211,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,234,104,34,0,74,253,241,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,38,0,0,34,240,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,212,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,146,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,254,254,229,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,123,206,237,249,146,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,192,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,104,7,0,0,0,0,0,0,128,245,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,165,42,0,17,43,55,138,254,253,253,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,242,249,207,225,249,253,253,254,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,202,253,254,253,253,253,254,151,69,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,125,125,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,209,253,178,136,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,145,243,251,254,93,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,213,241,254,176,123,19,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,238,254,189,25,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,251,224,55,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,198,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,188,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,187,239,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,238,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,243,238,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,238,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,112,243,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,234,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,25,0,0,0,0,16,195,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,211,144,33,10,11,200,251,146,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,248,254,218,231,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,124,191,124,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,249,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,151,254,254,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,185,254,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,165,254,254,254,254,254,221,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,254,254,254,254,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,188,152,238,210,254,254,184,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,250,254,217,24,68,170,8,211,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,172,0,5,25,0,105,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,254,254,172,0,0,0,0,5,206,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,254,177,1,0,0,0,0,169,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,228,254,254,254,254,109,0,0,0,0,169,254,251,28,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,100,146,254,251,231,75,4,2,183,254,250,7,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,218,6,4,84,148,148,120,4,10,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,254,105,0,0,0,0,0,0,0,137,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,72,0,0,0,0,0,12,181,250,254,168,6,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,72,0,0,4,24,107,215,254,254,158,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,189,164,164,227,254,254,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,251,254,254,254,254,254,254,253,191,72,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,189,254,254,254,254,200,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,246,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,159,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,210,245,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,236,0,0,0,0,0,30,130,171,169,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,243,0,0,0,0,62,248,253,253,253,204,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,201,243,0,0,0,45,223,253,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,105,0,0,113,253,219,47,52,248,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,238,68,86,225,253,16,0,95,250,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,199,253,239,232,253,253,214,211,245,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,241,253,253,253,253,253,253,253,253,245,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,183,248,253,253,253,253,253,234,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,107,184,253,253,212,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,147,255,238,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,148,249,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,244,253,253,233,159,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,235,250,253,175,55,16,24,162,251,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,237,253,225,122,7,0,0,0,33,253,241,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,233,253,137,23,0,0,0,0,0,33,253,246,71,0,0,0,0,0,0,0,0,0,0,0,0,38,206,249,223,125,7,0,0,0,0,0,0,33,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,55,0,0,0,0,0,0,0,0,74,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,69,25,72,72,17,54,72,72,93,235,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,232,215,253,253,209,239,253,253,253,253,246,77,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,247,253,233,194,241,253,253,223,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,71,47,0,57,71,71,72,253,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,156,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,156,253,253,207,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,70,233,253,253,230,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,163,253,253,253,207,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,253,248,234,136,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,100,253,249,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,64,147,251,108,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,184,254,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,137,248,254,254,254,252,254,242,162,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,254,254,251,185,103,140,254,254,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,240,254,254,225,112,0,0,136,254,254,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,174,40,0,0,5,187,254,254,253,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,7,218,254,238,0,0,0,12,174,254,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,221,254,154,0,0,55,209,254,254,195,78,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,183,11,188,244,254,248,133,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,249,222,254,254,193,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,254,254,151,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,207,254,254,254,151,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,95,246,254,254,229,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,142,88,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,171,251,254,237,52,3,17,254,211,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,234,54,0,0,45,255,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,243,254,237,57,0,0,36,224,254,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,164,0,30,101,226,254,248,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,254,242,179,247,254,254,182,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,241,254,254,250,146,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,235,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,228,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,251,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,231,197,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,157,34,34,218,255,206,34,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,252,252,252,252,252,252,252,252,252,162,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,220,252,252,252,209,153,223,252,252,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,252,252,141,0,85,230,252,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,252,252,141,0,0,73,102,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,252,191,30,0,0,0,5,97,252,252,220,51,0,0,0,0,0,0,0,0,0,0,0,0,123,245,252,252,202,14,0,0,0,0,0,56,252,252,252,65,0,0,0,0,0,0,0,0,0,0,0,18,154,252,252,241,0,0,0,0,0,0,0,56,252,252,252,65,0,0,0,0,0,0,0,0,0,0,21,146,252,252,252,241,0,0,0,0,0,0,0,56,252,252,252,65,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,241,0,0,0,0,0,0,0,56,252,252,252,65,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,116,0,0,0,0,0,0,0,56,252,252,252,65,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,20,0,0,0,0,0,0,0,56,252,252,252,65,0,0,0,0,0,0,0,0,0,0,67,252,252,252,87,4,0,0,0,0,0,0,0,56,252,252,124,11,0,0,0,0,0,0,0,0,0,0,67,252,252,252,54,0,0,0,0,0,0,19,236,245,252,252,98,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,97,5,0,0,0,0,39,219,252,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,102,89,89,89,89,203,252,252,252,252,209,64,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,252,252,252,252,252,252,252,226,130,68,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,252,252,252,252,252,252,239,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,65,163,252,252,252,252,252,252,252,252,96,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,176,252,252,252,252,155,32,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,226,170,114,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,255,170,114,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,226,255,198,141,170,255,255,255,255,226,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,86,114,198,255,255,255,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,29,141,226,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,198,170,0,0,0,0,0,0,0,0,29,141,226,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,86,86,0,0,0,0,0,0,0,0,0,0,29,170,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,170,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,170,254,255,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,130,243,253,253,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,140,254,253,253,253,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,254,253,253,253,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,210,89,254,254,254,237,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,236,50,114,253,253,254,253,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,249,251,79,32,241,253,253,254,253,234,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,162,0,45,245,253,253,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,80,0,95,245,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,201,230,254,253,253,253,241,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,251,253,253,254,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,160,128,94,245,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,170,253,232,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,255,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,195,253,197,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,72,112,51,132,152,152,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,213,252,253,252,253,252,253,252,233,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,234,112,123,203,203,203,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,92,51,51,51,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,252,253,252,243,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,102,183,203,223,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,131,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,183,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,255,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,64,128,128,128,128,128,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,128,128,128,128,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,191,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,168,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,235,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,251,243,144,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,240,254,254,254,254,254,254,251,212,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,60,25,63,156,230,254,254,217,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,174,5,0,0,0,55,181,254,254,233,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,254,162,0,0,0,0,0,8,189,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,55,0,0,0,0,0,0,32,185,254,236,33,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,32,0,0,0,0,0,0,0,66,254,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,229,24,0,0,0,0,0,0,0,9,184,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,156,0,0,0,0,0,0,0,0,0,133,254,250,83,0,0,0,0,0,0,0,0,0,0,0,0,138,254,156,0,0,0,0,0,0,0,0,0,33,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,243,254,174,6,0,0,0,0,0,0,0,0,33,255,254,111,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,120,0,0,0,0,0,0,0,0,33,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,98,252,254,222,25,0,0,0,0,0,0,0,33,254,242,40,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,172,118,6,0,0,0,0,0,115,255,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,43,222,252,254,254,172,118,20,20,20,41,218,255,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,254,254,254,254,254,254,254,254,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,250,254,254,254,254,254,254,250,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,124,157,254,254,231,124,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,38,38,127,146,220,255,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,100,239,253,253,253,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,151,237,253,253,253,250,248,249,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,215,253,253,253,219,109,35,0,28,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,14,162,247,253,226,165,65,14,0,0,0,62,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,1,99,253,253,226,43,0,0,0,0,0,0,233,253,249,16,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,226,37,0,0,0,0,0,0,61,250,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,52,0,0,0,0,0,0,21,197,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,116,244,122,3,0,0,0,0,0,0,60,253,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,0,0,0,0,0,129,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,244,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,248,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,216,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,245,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,172,253,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,216,133,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,200,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,189,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,47,0,0,0,0,0,0,0,0,0,15,125,95,6,1,0,0,0,0,0,0,0,0,0,254,253,253,213,21,0,0,0,0,0,0,0,11,30,155,253,253,253,35,0,0,0,0,0,0,0,0,0,235,253,253,182,0,0,0,0,0,0,13,86,201,253,253,253,253,253,126,3,0,0,0,0,0,0,0,0,136,253,253,154,0,0,0,0,0,42,173,253,253,253,253,253,226,253,253,45,0,0,0,0,0,0,0,0,227,253,253,65,0,0,0,8,151,236,253,253,253,244,114,59,82,253,253,100,0,0,0,0,0,0,0,0,255,253,253,109,0,0,5,217,253,253,253,253,115,39,0,0,66,253,253,17,0,0,0,0,0,0,0,0,254,253,253,128,0,0,166,253,253,253,253,60,3,0,0,0,66,253,253,17,0,0,0,0,0,0,0,0,199,253,253,182,0,111,253,253,171,178,32,1,0,0,16,152,250,253,149,1,0,0,0,0,0,0,0,0,185,253,253,224,52,228,253,251,138,0,0,0,0,7,160,253,253,244,31,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,253,234,40,34,84,166,166,170,253,253,188,60,0,0,0,0,0,0,0,0,0,0,14,172,253,253,253,253,253,253,242,232,253,253,253,253,232,70,20,0,0,0,0,0,0,0,0,0,0,0,0,49,188,253,253,253,253,253,253,253,253,215,253,205,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,181,253,253,253,253,253,253,253,152,152,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,135,185,253,253,178,135,44,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,213,254,255,165,158,95,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,254,254,254,254,254,254,173,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,133,90,162,162,162,235,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,11,0,0,0,7,202,254,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,112,7,0,0,0,0,0,0,0,1,176,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,202,72,0,0,0,0,0,0,79,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,252,98,0,0,0,0,10,209,254,246,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,133,248,254,227,85,9,0,6,168,254,248,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,177,11,201,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,110,211,254,251,241,254,254,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,254,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,201,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,250,254,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,254,250,253,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,254,213,82,244,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,246,99,144,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,254,185,207,254,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,254,254,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,254,254,238,158,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,161,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,125,228,254,254,254,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,164,250,253,253,253,253,253,253,250,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,239,253,253,253,253,253,253,253,253,253,252,228,46,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,253,253,253,253,253,253,253,199,253,253,253,253,242,155,0,0,0,0,0,0,0,0,0,0,0,107,252,253,253,253,253,172,52,25,25,13,116,221,253,253,253,245,45,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,253,45,0,0,0,0,0,109,221,253,253,253,117,0,0,0,0,0,0,0,0,0,0,204,253,253,253,175,38,7,0,0,0,0,0,0,120,253,253,253,117,0,0,0,0,0,0,0,0,0,0,82,250,253,253,237,72,0,0,0,0,0,0,0,33,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,236,95,72,72,19,38,38,0,16,203,253,253,247,0,0,0,0,0,0,0,0,0,0,0,83,248,253,253,253,253,253,253,210,225,225,196,203,253,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,114,247,253,253,253,253,253,253,253,253,253,253,253,253,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,115,201,218,253,253,253,253,253,253,253,253,253,253,250,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,78,181,207,207,207,239,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,228,253,253,253,250,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,228,253,253,253,250,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,27,64,181,253,253,253,253,250,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,134,238,253,253,253,253,253,253,240,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,253,253,250,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,252,216,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,213,123,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,136,136,136,180,254,254,255,254,254,160,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,253,253,253,253,253,253,214,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,208,200,200,200,210,253,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,162,11,0,0,0,12,95,239,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,47,47,11,0,0,0,0,0,0,201,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,247,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,126,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,67,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,237,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,222,253,253,234,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,71,191,213,213,146,95,29,0,125,231,253,253,253,154,9,0,0,0,0,0,0,0,0,0,0,0,16,137,248,253,253,253,253,253,238,231,250,253,253,253,157,7,0,0,0,0,0,0,0,0,0,0,0,1,156,253,253,253,243,253,253,253,253,253,253,253,253,109,2,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,132,12,119,253,253,253,253,253,253,253,123,11,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,207,33,48,204,253,253,253,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,234,208,253,253,253,243,160,70,115,248,253,253,218,18,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,246,88,0,0,0,48,250,253,253,70,0,0,0,0,0,0,0,0,0,0,0,238,253,253,253,253,253,154,32,0,0,0,0,0,249,253,253,172,0,0,0,0,0,0,0,0,0,0,0,144,253,253,220,94,17,1,0,0,0,0,0,0,193,253,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,170,0,0,0,0,0,0,0,57,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,141,255,170,0,0,0,0,0,0,0,86,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,0,0,0,0,0,198,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,0,0,0,141,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,0,0,0,0,0,86,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,29,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,114,198,198,198,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,198,0,226,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,144,144,144,144,173,163,144,120,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,67,153,214,253,253,253,254,253,253,253,253,227,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,253,254,253,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,236,130,121,39,10,11,10,10,137,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,88,19,0,0,0,0,0,0,22,207,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,118,250,253,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,250,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,226,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,221,254,253,119,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,254,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,147,253,224,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,203,20,0,0,0,0,5,23,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,235,253,244,52,0,0,0,0,30,147,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,196,253,250,88,0,0,0,24,89,223,234,127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,237,0,9,12,137,238,253,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,206,155,228,253,255,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,253,254,199,85,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,167,253,253,253,253,205,129,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,166,253,153,29,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,214,196,196,228,234,169,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,143,19,0,0,44,187,252,228,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,63,0,0,0,0,32,177,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,0,0,0,0,0,0,0,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,38,0,0,0,0,0,0,0,0,225,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,196,10,0,0,0,0,0,0,104,246,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,178,0,0,0,0,0,101,246,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,253,114,0,0,26,154,253,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,207,94,95,243,253,189,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,252,252,252,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,252,214,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,128,253,228,179,253,216,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,240,196,22,10,171,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,158,0,0,0,57,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,228,9,0,0,0,7,203,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,153,7,0,0,0,85,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,187,169,157,57,123,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,224,252,252,253,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,65,139,190,139,139,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,252,253,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,252,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,176,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,252,233,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,253,233,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,160,160,223,255,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,129,247,254,254,254,228,198,115,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,253,209,150,102,129,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,243,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,240,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,71,74,123,124,74,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,243,159,160,243,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,74,0,0,0,132,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,237,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,206,218,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,107,250,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,198,32,0,19,113,239,197,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,231,217,229,254,173,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,236,254,176,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,211,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,230,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,237,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,249,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,246,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,230,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,254,230,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,255,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,214,225,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,212,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,253,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,255,253,239,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,178,255,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,254,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,243,255,244,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,113,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,236,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,238,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,227,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,243,253,253,124,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,166,149,184,254,254,166,88,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,253,253,205,168,168,168,204,254,171,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,240,253,253,245,9,0,0,0,9,39,162,215,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,237,67,0,0,0,0,0,0,0,16,232,139,27,0,0,0,0,0,0,0,0,0,0,0,0,25,113,253,145,0,0,0,0,0,0,0,0,0,28,219,150,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,85,0,0,0,0,0,0,0,0,0,0,45,220,183,4,0,0,0,0,0,0,0,0,0,0,0,85,253,84,0,0,0,0,0,0,0,0,0,0,0,29,197,135,0,0,0,0,0,0,0,0,0,0,0,85,253,84,0,0,0,0,0,0,0,0,0,0,0,0,86,243,43,0,0,0,0,0,0,0,0,0,0,85,253,155,0,0,0,0,0,0,0,0,0,0,0,0,86,253,111,0,0,0,0,0,0,0,0,0,0,85,253,190,0,0,0,0,0,0,0,0,0,0,0,0,14,237,243,35,0,0,0,0,0,0,0,0,0,86,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,42,0,0,0,0,0,0,0,0,0,85,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,42,0,0,0,0,0,0,0,0,0,85,253,195,4,0,0,0,0,0,0,0,0,0,0,0,0,128,253,42,0,0,0,0,0,0,0,0,0,85,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,198,253,42,0,0,0,0,0,0,0,0,0,50,245,253,42,0,0,0,0,0,0,0,0,0,0,0,72,250,156,7,0,0,0,0,0,0,0,0,0,0,216,254,104,0,0,0,0,0,0,0,0,0,0,43,228,242,36,0,0,0,0,0,0,0,0,0,0,0,92,253,227,36,0,0,0,0,0,0,0,0,116,228,225,111,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,163,22,11,0,0,22,102,128,198,250,171,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,199,254,253,211,170,169,254,253,253,211,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,104,183,253,253,253,255,218,138,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,5,6,6,6,6,6,6,6,6,6,6,2,0,0,0,0,0,0,0,0,0,237,254,252,152,152,152,152,231,254,254,254,254,254,254,254,254,254,254,182,41,0,0,0,0,0,0,0,0,38,143,244,254,254,254,254,254,254,254,254,254,254,254,254,255,254,254,254,227,0,0,0,0,0,0,0,0,0,0,23,45,135,135,135,52,27,27,27,27,27,27,27,27,27,153,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,244,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,151,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,78,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,50,227,252,179,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,244,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,252,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,190,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,194,151,151,111,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,254,254,254,254,245,162,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,254,254,224,197,114,216,246,194,109,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,249,254,249,103,11,0,0,0,117,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,175,0,0,0,0,0,89,254,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,255,31,0,0,0,0,0,119,254,254,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,31,0,0,0,0,0,193,254,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,31,0,0,0,0,0,193,254,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,244,254,33,0,0,0,0,0,193,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,208,54,0,0,0,9,205,254,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,125,243,195,57,21,100,167,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,253,251,254,254,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,62,107,184,254,254,254,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,58,15,141,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,147,254,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,238,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,244,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,240,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,231,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,221,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,235,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,213,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,235,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,111,132,132,190,255,253,253,253,224,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,145,222,252,252,252,252,252,253,252,252,252,252,221,28,0,0,0,0,0,0,0,0,0,0,0,0,16,216,252,252,252,252,252,236,216,217,237,252,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,8,165,252,252,238,106,84,48,0,0,145,252,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,11,72,129,51,0,0,0,0,0,145,252,252,252,235,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,175,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,252,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,240,253,252,252,252,252,245,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,240,252,253,252,252,252,252,252,248,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,246,253,255,235,139,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,165,165,46,37,252,252,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,9,84,181,181,181,55,0,0,0,0,37,252,252,252,252,70,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,252,155,0,0,0,7,156,252,252,252,228,25,0,0,0,0,0,0,0,0,0,0,0,0,59,252,252,252,252,234,153,85,86,158,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,23,220,252,252,252,252,252,252,253,252,252,252,252,143,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,135,252,252,252,252,252,253,252,252,252,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,131,235,252,252,253,252,177,51,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,105,0,0,0,0,0,0,18,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,233,207,0,0,0,0,0,3,173,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,89,0,0,0,0,0,103,253,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,253,67,0,0,0,0,31,220,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,245,255,141,0,0,0,0,8,175,254,214,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,220,34,0,0,0,0,78,253,242,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,208,90,20,11,15,38,246,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,235,254,253,253,236,253,236,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,165,174,104,214,254,235,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,245,251,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,225,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,222,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,253,245,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,232,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,183,254,164,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,230,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,214,231,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,214,213,132,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,244,203,234,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,212,40,0,71,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,50,0,0,51,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,50,0,0,51,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,91,0,0,72,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,131,0,0,112,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,151,0,0,214,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,192,91,0,0,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,62,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,20,0,0,142,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,192,0,0,31,233,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,111,0,0,173,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,50,0,82,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,82,243,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,50,173,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,212,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,255,253,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,193,254,253,254,172,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,123,223,253,252,233,151,172,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,163,203,102,61,0,0,0,203,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,0,0,0,0,0,0,41,243,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,140,185,133,53,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,25,25,3,122,254,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,185,253,253,166,203,253,147,114,241,253,226,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,253,214,205,205,205,138,0,25,226,253,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,236,37,0,0,0,0,6,146,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,201,14,0,0,0,4,148,253,253,172,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,117,12,0,41,209,253,241,145,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,192,253,253,119,51,230,255,244,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,228,253,253,242,253,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,52,236,253,253,254,247,167,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,221,255,249,123,191,242,250,167,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,63,0,0,0,73,212,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,253,185,5,0,0,0,0,182,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,0,101,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,0,147,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,38,236,198,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,215,253,144,0,0,0,30,215,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,238,103,98,109,223,253,155,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,221,253,253,254,253,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,184,253,254,184,115,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,87,171,254,251,249,231,171,62,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,215,136,54,45,41,59,120,233,163,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,30,0,0,0,0,0,0,30,173,231,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,140,236,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,88,237,89,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,174,249,236,196,241,222,192,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,212,49,0,15,19,92,205,187,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,219,194,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,183,249,122,0,0,0,0,0,0,0,0,0,0,0,0,31,91,0,0,0,0,0,0,7,40,113,173,241,203,47,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,143,84,60,60,108,138,180,254,236,190,118,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,86,170,176,212,254,230,201,139,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,106,189,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,237,253,254,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,248,253,253,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,253,245,209,254,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,240,61,155,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,234,129,13,19,254,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,249,253,110,0,0,123,253,212,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,108,248,231,94,0,0,32,245,253,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,234,253,250,102,0,0,4,149,253,253,234,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,232,254,253,242,174,155,182,196,253,253,253,228,63,0,0,0,0,0,0,0,0,0,0,0,0,0,37,215,254,234,223,254,254,254,255,254,254,242,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,181,45,10,18,89,76,85,253,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,120,11,0,0,0,0,14,196,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,229,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,232,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,230,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,211,254,255,209,197,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,254,254,254,254,254,253,197,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,211,180,180,180,218,254,254,197,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,78,0,0,0,21,175,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,108,0,0,0,0,9,159,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,87,0,0,0,0,0,42,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,3,0,0,0,0,0,42,236,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,238,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,133,222,254,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,216,216,236,254,247,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,254,254,254,254,205,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,232,254,254,254,254,254,247,157,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,100,137,183,239,254,254,254,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,141,182,248,254,223,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,249,254,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,174,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,232,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,53,53,9,89,181,237,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,217,254,254,254,254,254,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,213,254,254,254,254,186,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,95,58,0,0,0,29,95,95,141,198,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,190,254,251,245,245,245,248,255,254,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,224,254,254,254,254,254,229,171,171,125,67,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,133,20,20,123,88,20,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,128,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,72,106,110,121,242,254,254,237,214,173,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,228,239,254,254,254,254,254,238,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,95,110,122,25,36,143,196,239,254,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,132,246,254,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,0,90,217,254,247,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,122,0,0,0,0,0,26,222,254,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,152,0,0,0,0,0,0,150,254,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,247,28,0,0,0,0,4,155,254,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,223,182,146,68,68,109,185,254,246,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,170,253,254,254,254,254,254,247,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,197,197,197,197,137,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,144,27,0,0,0,0,0,0,30,46,231,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,217,177,128,177,178,177,128,238,204,253,246,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,253,254,253,253,144,101,154,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,250,246,134,163,169,169,122,121,78,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,241,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,245,155,155,54,45,45,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,253,253,253,225,189,112,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,229,181,152,162,253,253,254,253,241,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,15,111,215,254,158,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,222,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,64,12,12,7,5,9,12,26,151,250,252,145,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,210,193,228,253,255,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,216,253,253,253,253,253,253,254,253,145,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,105,181,253,253,253,253,254,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,191,191,233,253,253,110,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,197,242,252,252,252,252,252,253,200,73,73,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,252,252,241,241,252,253,252,252,252,222,181,72,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,189,77,78,108,253,252,252,252,253,252,215,1,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,82,0,0,0,0,42,159,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,78,179,158,35,0,0,0,0,0,0,78,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,232,252,253,252,246,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,175,252,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,253,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,175,253,252,252,252,253,148,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,252,252,252,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,252,252,168,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,252,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,252,98,37,37,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,252,252,252,253,252,252,252,253,159,144,144,145,144,144,144,0,0,0,0,0,0,0,0,0,0,0,1,253,253,253,253,255,253,253,253,255,253,253,253,255,253,253,253,0,0,0,0,0,0,0,0,0,0,0,1,128,252,252,252,253,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,31,195,215,215,217,215,215,215,217,215,241,252,237,247,231,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,108,62,93,46,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,222,254,255,254,196,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,97,248,252,254,172,6,37,235,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,240,242,143,143,27,0,0,119,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,241,106,15,0,0,0,0,0,72,245,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,203,161,5,0,0,0,0,0,0,12,233,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,238,25,0,0,0,0,0,0,0,0,198,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,125,0,0,0,0,0,0,0,0,0,156,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,244,34,0,0,0,0,0,0,0,0,0,156,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,169,0,0,0,0,0,0,0,0,0,0,156,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,123,0,0,0,0,0,0,0,0,0,0,156,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,92,0,0,0,0,0,0,0,0,0,0,157,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,91,0,0,0,0,0,0,0,0,0,0,187,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,75,0,0,0,0,0,0,0,0,0,15,236,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,91,0,0,0,0,0,0,0,0,0,94,243,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,91,0,0,0,0,0,0,0,0,16,208,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,131,0,0,0,0,0,0,0,0,127,235,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,231,41,0,0,0,0,0,0,105,248,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,176,196,16,0,0,0,7,121,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,218,201,84,72,123,228,237,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,200,254,254,237,124,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,106,143,196,253,253,253,255,224,143,38,82,34,32,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,252,252,252,252,252,252,253,252,252,252,252,252,246,43,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,252,252,252,252,209,139,72,153,153,82,44,42,0,0,0,0,0,0,0,0,0,0,0,0,0,100,212,10,10,232,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,4,0,0,231,252,235,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,237,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,249,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,243,247,187,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,241,253,253,177,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,158,244,253,232,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,210,252,235,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,246,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,196,252,200,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127,240,253,241,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,78,78,130,199,252,252,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,142,229,199,142,224,109,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,128,191,191,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,64,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,64,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,151,226,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,177,230,254,254,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,63,186,247,254,254,254,254,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,254,254,254,254,254,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,252,254,254,254,254,229,192,125,164,254,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,254,254,254,210,99,2,0,39,129,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,123,28,16,33,163,192,254,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,254,254,254,254,254,254,254,254,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,254,254,254,254,254,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,254,254,254,254,254,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,52,190,254,254,254,216,155,155,249,254,254,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,5,5,3,0,51,248,254,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,22,0,0,0,0,0,0,0,40,251,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,49,0,0,0,0,0,0,0,148,254,254,198,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,254,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,183,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,234,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,170,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,136,221,254,254,254,229,144,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,199,253,148,115,115,115,140,232,226,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,192,104,0,0,0,0,0,63,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,46,0,0,0,0,0,0,114,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,173,17,0,0,0,0,26,153,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,11,0,0,0,26,130,239,254,143,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,224,251,196,80,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,159,229,236,113,68,93,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,254,254,254,254,254,254,254,211,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,206,206,115,115,73,23,23,40,194,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,241,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,195,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,182,253,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,216,253,236,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,210,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,0,0,0,0,0,0,66,229,255,173,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,247,0,0,0,68,139,222,244,173,56,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,116,166,207,240,247,213,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,254,253,253,185,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,226,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,71,17,0,0,0,0,138,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,230,254,122,0,0,0,42,247,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,229,246,123,7,0,0,0,89,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,190,254,128,0,0,0,0,14,235,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,175,8,0,0,0,0,92,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,83,0,0,0,0,0,176,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,35,0,0,0,0,67,254,224,10,4,18,30,106,32,0,0,0,0,0,0,0,0,0,0,0,0,149,254,178,97,27,9,43,181,254,234,184,199,254,254,254,212,0,0,0,0,0,0,0,0,0,0,0,0,47,206,254,254,254,254,254,254,254,254,254,254,254,254,244,125,0,0,0,0,0,0,0,0,0,0,0,0,0,19,133,175,175,181,255,254,231,122,88,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,206,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,200,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,230,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,231,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,171,255,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,137,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,76,32,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,166,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,155,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,240,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,243,253,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,242,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,241,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,248,253,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,253,158,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,215,253,234,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,218,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,77,91,166,166,50,0,0,0,0,0,0,0,0,0,0,0,0,0,28,152,152,152,152,152,158,242,242,250,254,254,254,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,49,205,240,223,249,214,205,205,205,218,254,254,249,200,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,35,7,0,0,0,155,254,249,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,142,253,212,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,139,254,202,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,160,254,169,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,201,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,254,93,59,59,59,59,12,0,0,0,0,0,0,0,0,0,0,14,45,45,45,117,134,134,134,186,251,254,254,244,254,254,245,150,6,0,0,0,0,0,0,0,0,0,0,213,254,254,254,254,254,254,254,254,254,254,241,221,133,111,35,0,0,0,0,0,0,0,0,0,0,0,0,38,142,147,147,147,151,254,254,224,131,58,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,254,226,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,128,254,227,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,242,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,229,249,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,195,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,224,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,254,253,253,183,192,148,227,156,174,253,237,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,252,252,252,252,253,252,252,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,109,100,231,178,126,126,127,126,180,252,252,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,247,252,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,190,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,253,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,211,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,244,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,29,29,117,141,192,216,165,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,57,82,169,206,253,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,252,252,252,253,252,252,252,244,168,80,31,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,253,252,252,252,241,139,139,90,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,151,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,252,252,228,198,122,85,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,252,252,252,253,252,252,240,163,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,213,226,225,137,113,114,113,200,250,255,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,149,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,10,85,19,0,0,0,0,0,0,0,29,210,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,29,252,56,0,0,0,0,0,13,113,210,252,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,78,16,0,7,29,79,204,253,253,253,226,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,215,169,187,252,252,253,252,252,177,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,224,252,252,253,252,252,252,253,233,130,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,65,190,253,252,214,139,28,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,131,215,254,254,254,255,182,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,190,254,253,253,253,253,254,253,231,145,145,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,254,167,81,107,191,228,253,253,253,253,243,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,131,4,0,0,0,16,161,253,193,157,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,233,13,0,0,0,0,35,149,16,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,255,182,11,0,0,0,0,0,6,170,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,234,253,192,51,0,0,0,0,38,253,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,171,248,237,121,14,0,6,194,253,217,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,242,253,167,8,115,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,254,212,243,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,196,254,254,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,247,253,253,245,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,217,254,225,176,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,248,87,21,223,253,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,181,0,0,44,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,182,0,0,19,254,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,249,88,0,12,227,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,145,254,245,95,85,253,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,176,253,253,253,253,248,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,92,207,253,220,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,80,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,229,254,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,245,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,225,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,157,254,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,255,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,78,207,254,138,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,24,24,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,58,162,162,162,204,254,253,186,162,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,216,254,253,253,253,253,254,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,125,245,253,204,178,186,161,161,151,120,129,46,4,0,0,0,0,0,0,0,0,0,0,32,116,168,0,100,253,211,86,11,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,139,246,126,11,204,238,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,178,241,79,0,0,59,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,203,38,38,39,70,70,164,185,175,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,233,233,234,253,253,253,253,254,203,93,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,253,200,138,137,107,118,86,138,212,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,250,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,9,0,0,0,0,0,0,0,0,93,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,197,12,0,0,0,0,0,0,0,32,219,253,178,0,0,0,0,0,0,0,0,0,0,0,0,11,141,254,170,3,0,0,0,0,0,0,26,170,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,170,43,0,0,0,43,58,178,253,253,211,42,0,0,0,0,0,0,0,0,0,0,0,0,0,13,101,209,253,248,185,185,185,247,255,253,253,228,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,46,161,220,253,253,253,246,161,129,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,23,23,23,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,232,208,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,207,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,250,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,254,201,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,170,210,254,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,144,23,254,253,246,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,217,253,253,99,0,104,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,24,0,7,207,253,249,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,24,0,0,145,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,157,0,0,0,0,95,255,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,156,0,0,0,0,37,253,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,156,0,0,0,0,37,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,156,0,0,0,0,37,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,70,0,0,0,35,146,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,36,0,0,80,228,253,253,172,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,166,86,201,254,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,253,253,254,253,253,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,253,254,253,168,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,196,253,253,253,253,191,63,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,210,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,212,254,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,121,208,244,254,254,224,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,99,241,253,254,253,214,143,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,148,230,254,253,253,239,122,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,179,237,253,253,254,248,141,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,217,253,254,253,253,254,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,254,160,198,254,250,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,226,51,1,105,254,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,49,22,0,0,105,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,5,0,0,0,0,0,0,0,94,248,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,192,116,43,0,0,0,0,62,222,253,235,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,247,254,245,234,144,134,229,249,254,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,222,254,254,254,254,254,254,236,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,57,109,121,208,169,171,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,229,255,148,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,134,230,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,246,253,188,35,224,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,221,58,0,169,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,237,97,0,10,240,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,30,0,0,89,253,199,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,183,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,233,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,235,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,213,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,230,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,203,251,253,253,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,215,253,253,237,206,253,228,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,253,253,253,101,91,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,150,0,0,222,253,121,68,161,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,251,253,253,225,23,0,0,141,253,253,253,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,244,70,0,0,0,16,171,196,164,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,224,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,231,253,251,35,0,0,0,0,27,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,35,0,0,0,0,218,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,35,0,0,0,84,236,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,195,37,37,89,236,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,251,251,251,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,251,251,251,253,251,251,251,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,182,180,180,180,180,182,222,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,236,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,122,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,146,197,234,146,146,216,255,254,255,255,150,146,25,0,0,0,0,0,0,0,0,0,0,0,0,0,37,226,253,253,253,253,253,253,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,253,253,253,253,253,253,253,253,253,253,253,253,241,4,0,0,0,0,0,0,0,0,0,0,0,0,0,126,242,233,210,210,210,210,210,210,210,245,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,34,0,0,0,0,0,0,0,206,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,228,253,253,249,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,221,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,248,253,253,248,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,242,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,248,253,253,248,148,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,172,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,215,253,253,253,253,194,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,175,253,253,253,253,204,14,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,253,224,174,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,215,253,253,253,253,231,112,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,170,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,180,253,253,253,162,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,121,253,249,79,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,68,144,193,144,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,224,253,253,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,222,253,253,253,254,253,253,250,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,203,25,11,123,253,253,223,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,224,23,0,0,23,201,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,242,253,170,0,0,0,39,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,153,12,7,7,127,241,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,253,253,210,211,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,253,254,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,143,124,67,143,33,62,235,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,255,209,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,238,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,250,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,89,47,0,28,89,231,253,180,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,253,238,141,239,253,254,192,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,253,253,253,215,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,253,253,240,94,66,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,230,200,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,137,254,203,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,147,235,249,246,253,241,150,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,223,204,129,53,22,203,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,66,8,0,0,0,22,214,253,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,155,174,174,188,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,192,253,253,253,245,250,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,253,252,168,124,50,152,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,253,230,131,0,0,0,180,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,210,253,218,26,0,0,0,0,224,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,246,89,0,0,0,0,0,224,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,65,249,253,131,0,0,0,0,0,0,144,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,253,176,6,0,0,0,0,0,0,126,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,252,65,0,0,0,0,0,0,0,125,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,196,0,0,0,0,0,0,0,0,152,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,58,250,253,46,0,0,0,0,0,0,0,72,250,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,253,155,0,0,0,0,0,0,5,196,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,90,2,0,0,0,9,166,253,254,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,190,253,253,138,91,129,92,205,253,253,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,150,241,253,254,253,253,253,251,208,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,148,230,253,252,153,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,181,222,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,203,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,187,254,254,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,193,232,206,186,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,91,237,240,92,43,254,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,140,253,228,73,0,93,254,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,245,254,254,68,0,41,229,254,186,38,26,70,70,70,70,0,0,0,0,0,0,0,0,0,9,55,206,254,253,253,219,139,138,224,253,254,253,243,239,254,253,253,185,0,0,0,0,0,0,0,0,100,216,253,253,254,253,253,253,254,253,253,253,254,232,230,230,205,137,96,13,0,0,0,0,0,0,0,0,229,253,253,253,254,253,244,160,161,245,253,219,69,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,176,184,151,68,0,0,0,19,170,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,248,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,254,185,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,204,255,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,199,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,137,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,173,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,57,0,0,0,0,48,238,222,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,93,245,142,0,0,0,0,140,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,251,60,0,0,0,0,213,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,254,128,0,0,0,0,7,231,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,254,191,15,0,0,0,0,68,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,237,33,0,0,0,0,0,149,254,219,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,101,0,0,0,0,0,0,179,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,246,239,29,0,0,0,0,0,22,243,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,247,246,215,182,158,186,248,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,144,245,254,254,254,254,254,254,254,254,201,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,26,66,84,50,26,26,247,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,255,249,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,178,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,227,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,96,148,148,148,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,252,253,231,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,231,231,231,236,252,242,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,184,252,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,244,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,121,190,190,102,36,0,206,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,153,245,252,252,252,252,242,197,242,252,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,160,225,252,216,189,92,154,189,253,252,252,252,95,27,0,0,0,0,0,0,0,0,0,0,0,0,18,199,252,226,59,18,0,0,0,0,165,252,252,252,252,167,27,0,0,0,0,0,0,0,0,0,0,0,148,253,241,35,0,0,0,0,0,124,255,253,170,211,247,255,218,51,69,60,0,0,0,0,0,0,0,0,183,252,152,0,0,0,0,16,190,242,253,153,5,0,97,218,252,252,252,182,0,0,0,0,0,0,0,0,200,252,126,0,0,4,57,226,252,244,109,5,0,0,0,30,126,126,100,4,0,0,0,0,0,0,0,0,148,252,202,64,64,139,252,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,42,42,42,42,42,42,42,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,251,70,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,106,223,218,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,171,253,253,253,180,37,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,113,218,253,244,205,242,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,247,175,58,0,90,242,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,126,251,251,163,0,0,0,0,148,253,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,149,253,253,207,52,0,0,0,0,108,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,236,253,207,75,0,0,0,0,0,91,236,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,119,249,253,154,18,0,0,0,0,0,0,206,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,59,251,253,207,13,0,0,0,0,0,0,35,229,253,92,1,0,0,0,0,0,0,0,0,0,0,0,0,183,254,254,36,0,0,0,0,0,0,0,131,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,28,223,253,193,15,0,0,0,0,0,0,6,148,253,253,75,0,0,0,0,0,0,0,0,0,0,0,23,176,253,208,18,0,0,0,0,0,0,0,136,253,253,175,9,0,0,0,0,0,0,0,0,0,0,5,136,253,242,89,0,0,0,0,0,0,31,129,230,253,173,12,0,0,0,0,0,0,0,0,0,0,0,54,253,242,89,0,0,0,0,0,0,6,180,253,253,115,14,0,0,0,0,0,0,0,0,0,0,0,10,228,253,205,0,0,0,0,0,0,10,199,253,239,151,14,0,0,0,0,0,0,0,0,0,0,0,0,7,202,253,164,0,0,0,0,0,41,94,253,253,187,35,0,0,0,0,0,0,0,0,0,0,0,0,0,53,202,253,141,0,0,0,0,89,230,254,244,139,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,141,0,84,149,230,251,253,249,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,188,184,251,253,253,253,137,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,253,255,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,254,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,254,253,169,225,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,253,138,0,56,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,0,0,0,0,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,138,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,114,0,0,0,0,0,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,0,0,0,0,0,0,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,84,0,0,0,0,29,197,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,28,0,0,0,0,197,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,0,0,0,0,85,197,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,196,253,251,0,0,0,114,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,85,85,254,253,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,251,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,254,253,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,161,213,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,217,254,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,192,253,228,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,176,254,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,213,254,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,155,254,253,99,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,120,244,249,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,255,139,0,0,37,109,37,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,253,119,5,32,176,244,253,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,244,255,139,27,78,213,254,228,228,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,222,253,191,16,110,243,254,191,52,197,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,223,42,135,255,254,156,11,171,254,228,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,238,253,98,73,248,243,98,32,155,254,232,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,228,21,192,254,171,109,213,254,239,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,186,42,254,253,233,253,254,211,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,238,254,254,255,254,255,202,135,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,170,253,254,191,78,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,183,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,211,0,0,0,0,0,64,85,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,246,252,211,0,11,92,171,233,247,252,247,232,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,140,0,127,252,252,253,252,252,252,252,204,42,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,62,0,215,252,252,236,147,50,68,191,253,186,9,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,18,0,233,253,174,0,0,0,0,0,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,199,21,232,205,11,0,0,0,0,0,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,2,123,252,253,237,251,221,39,22,22,22,92,171,253,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,200,252,252,252,252,253,252,252,252,226,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,121,147,217,252,253,252,199,147,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,164,248,176,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,217,254,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,205,42,223,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,242,254,20,0,157,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,238,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,54,85,164,112,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,220,41,249,255,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,248,233,254,95,245,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,214,0,158,246,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,247,72,0,55,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,236,0,0,55,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,239,16,0,159,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,248,254,195,63,245,248,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,250,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,143,228,228,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,101,101,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,218,253,253,237,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,253,253,253,253,243,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,202,160,48,7,54,225,250,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,0,0,0,0,177,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,249,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,189,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,238,246,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,24,24,6,0,0,22,216,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,154,56,0,107,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,253,253,253,237,224,245,253,142,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,244,143,240,253,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,107,0,110,253,253,253,253,128,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,142,119,244,253,195,199,253,253,227,140,62,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,215,253,253,252,160,6,12,92,232,251,253,253,192,92,8,8,8,134,157,0,0,0,0,0,0,0,0,0,27,207,213,124,0,0,0,0,0,112,253,253,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,26,29,0,0,0,0,0,0,5,45,88,199,224,253,253,230,166,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,99,99,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,97,157,240,254,254,217,180,164,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,94,254,254,254,254,254,254,254,254,242,162,35,0,63,82,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,236,93,78,78,78,101,175,199,254,224,177,242,175,0,0,0,0,0,0,0,0,0,0,0,0,176,254,201,15,0,0,0,0,0,0,6,236,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,138,254,193,0,0,0,0,0,0,8,128,249,254,254,201,18,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,23,0,0,0,0,60,202,254,254,194,242,30,0,0,0,0,0,0,0,0,0,0,0,0,0,73,245,254,208,18,0,0,91,240,254,247,128,24,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,136,25,131,236,254,240,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,254,252,241,254,254,192,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,240,254,172,215,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,210,24,167,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,254,46,0,123,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,254,39,0,40,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,196,0,0,40,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,223,18,0,130,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,205,254,188,176,248,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,255,254,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,239,254,147,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,138,138,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,252,252,211,151,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,222,252,252,252,252,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,134,248,253,252,252,252,252,253,252,188,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,252,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,253,252,209,84,0,0,139,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,143,84,0,0,0,0,118,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,212,252,240,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,252,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,255,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,130,236,252,253,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,132,228,252,252,252,253,252,252,185,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,187,248,253,252,252,252,252,253,252,252,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,11,189,246,252,252,253,252,252,210,85,23,96,221,252,252,221,42,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,253,255,249,115,0,0,0,0,116,239,253,255,159,7,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,218,75,0,0,0,0,0,0,93,252,253,252,154,9,0,0,0,0,0,0,0,0,0,253,252,252,227,79,32,0,0,0,0,0,0,0,25,121,253,252,252,196,48,0,0,0,0,0,0,0,0,161,219,153,29,0,0,0,0,0,0,0,0,0,0,0,56,219,252,218,224,0,0,0,0,0,0,0,0,0,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,15,22,14,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,97,179,210,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,86,236,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,219,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,166,249,197,96,176,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,249,119,2,0,0,0,0,0,0,75,230,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,119,0,0,0,0,0,0,0,0,159,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,25,0,0,0,0,0,0,0,83,253,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,100,0,0,0,0,0,0,87,235,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,217,150,150,150,192,250,254,254,151,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,79,161,249,254,254,254,250,254,254,156,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,95,76,6,254,249,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,210,249,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,236,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,170,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,213,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,62,147,249,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,238,143,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,196,252,254,250,249,253,171,72,223,42,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,206,252,141,22,0,104,254,103,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,238,0,0,0,60,181,128,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,203,254,136,0,0,0,86,224,253,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,194,254,155,0,0,26,185,254,254,254,235,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,238,0,69,219,254,254,254,232,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,253,234,250,254,254,241,180,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,254,254,254,254,250,128,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,192,254,254,254,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,244,254,254,254,245,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,220,254,252,128,87,132,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,114,0,0,24,138,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,119,2,0,0,0,55,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,231,243,48,0,0,0,0,83,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,242,247,131,11,0,0,0,120,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,251,183,141,141,212,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,106,254,254,254,254,254,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,119,150,254,254,254,231,60,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,59,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,54,199,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,33,2,0,0,0,19,62,146,243,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,65,246,253,124,115,197,196,238,253,253,253,253,175,89,2,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,254,253,253,234,212,128,49,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,253,253,202,123,123,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,118,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,250,215,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,224,253,111,46,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,249,250,253,246,240,156,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,255,254,254,217,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,184,247,236,213,102,127,73,168,249,141,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,8,215,236,24,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,29,0,0,0,0,0,0,0,0,4,177,244,58,0,0,0,0,0,0,0,0,0,0,0,0,44,184,195,128,0,0,0,0,0,0,0,0,30,235,253,80,0,0,0,0,0,0,0,0,0,0,0,0,175,253,248,59,0,0,0,0,0,0,34,139,230,253,245,46,0,0,0,0,0,0,0,0,0,0,0,0,190,253,250,221,181,139,68,106,139,139,243,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,67,234,253,253,253,253,253,253,253,253,254,253,246,114,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,112,212,253,253,253,253,253,253,227,147,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,74,90,90,63,90,37,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,64,0,0,0,64,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,128,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,64,255,255,255,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,191,255,255,64,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,255,255,128,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,191,255,191,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,128,0,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,255,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,198,255,176,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,251,230,233,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,249,195,42,18,166,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,214,249,95,0,0,169,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,151,0,0,8,246,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,236,51,0,0,110,134,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,242,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,240,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,251,164,40,119,134,134,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,244,248,254,229,234,254,203,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,242,188,73,13,22,114,253,223,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,148,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,89,246,254,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,254,254,167,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,6,0,0,0,0,40,164,254,242,110,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,205,192,192,192,192,246,252,202,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,185,254,254,254,254,206,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,232,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,214,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,117,0,0,75,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,184,198,0,0,91,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,198,0,0,199,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,198,0,46,236,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,227,254,174,0,69,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,228,254,243,58,0,69,254,254,167,0,23,118,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,174,0,0,69,254,254,167,0,191,254,136,3,0,0,0,0,0,0,0,0,0,0,0,0,53,231,254,221,20,0,51,119,254,254,233,193,247,254,254,12,0,0,0,0,0,0,0,0,0,0,4,85,232,254,254,245,199,199,240,254,254,254,254,254,254,254,129,3,0,0,0,0,0,0,0,0,0,0,53,254,254,254,254,254,254,254,254,254,254,254,254,225,173,61,4,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,254,197,167,167,76,161,254,254,182,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,161,88,37,37,13,0,0,0,69,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,203,254,223,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,163,218,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,146,217,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,213,253,253,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,216,253,253,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,222,254,254,248,117,228,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,254,253,245,87,0,163,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,212,76,0,0,163,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,119,144,30,0,0,0,202,249,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,55,166,253,228,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,108,159,218,238,253,253,253,254,200,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,123,226,253,253,254,253,253,253,253,254,253,245,154,12,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,253,254,253,253,142,72,98,181,253,253,227,124,7,0,0,0,0,0,0,0,0,0,0,0,255,254,254,254,254,234,161,46,0,0,0,0,46,167,254,255,202,86,16,0,0,0,0,0,0,0,0,0,109,192,198,159,76,13,0,0,0,0,0,0,0,2,50,199,249,253,239,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,171,216,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,251,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,235,253,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,136,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,29,29,41,141,141,141,204,253,253,203,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,216,252,252,252,253,252,252,252,253,252,252,252,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,252,252,253,233,168,168,156,81,234,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,164,139,28,22,0,0,0,0,197,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,101,0,0,0,0,0,0,0,0,7,204,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,214,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,228,9,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,144,73,66,214,255,212,218,28,15,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,139,253,253,253,253,253,253,253,224,215,226,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,239,253,253,253,253,253,253,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,170,164,67,66,93,233,253,253,253,253,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,246,253,253,253,253,235,168,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,176,241,253,253,253,253,129,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,182,253,253,244,155,118,31,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,253,253,156,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,220,253,227,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,229,25,32,51,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,201,253,166,194,213,160,160,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,212,247,253,253,253,253,102,105,52,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,62,102,64,62,59,211,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,230,250,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,47,236,253,36,0,0,0,0,0,0,0,0,0,0,0,0,3,6,0,0,0,0,0,0,0,0,16,168,243,252,135,4,0,0,0,0,0,0,0,0,0,0,0,0,80,193,112,71,0,0,59,150,109,87,234,220,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,226,181,162,218,218,248,253,253,253,253,252,136,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,211,153,114,253,253,253,253,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,152,253,253,185,149,149,149,149,71,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,243,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,130,217,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,246,253,253,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,181,240,253,253,253,254,253,234,153,75,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,184,253,253,253,203,74,254,210,171,237,253,201,101,2,0,0,0,0,0,0,0,0,0,0,0,0,8,191,253,253,253,253,59,0,254,193,0,120,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,22,188,253,253,253,205,22,4,0,164,37,0,7,173,253,253,187,75,0,0,0,0,0,0,0,0,0,0,175,253,253,253,203,28,0,0,0,0,0,0,0,18,196,253,253,208,0,0,0,0,0,0,0,0,0,63,235,253,253,209,31,0,0,0,0,0,0,0,0,0,92,253,253,235,62,0,0,0,0,0,0,0,0,167,254,254,254,118,0,0,0,0,0,0,0,0,0,0,0,80,249,254,255,0,0,0,0,0,0,0,0,254,253,249,123,5,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,0,0,0,0,0,0,0,0,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,11,95,248,250,149,0,0,0,0,0,0,0,0,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,208,0,0,0,0,0,0,0,0,0,91,240,251,224,180,22,0,0,0,0,0,0,0,0,67,201,253,253,248,92,0,0,0,0,0,0,0,0,0,104,253,253,253,201,179,38,7,0,31,30,39,179,245,253,253,242,196,31,0,0,0,0,0,0,0,0,0,29,206,253,253,253,253,253,162,134,254,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,9,85,163,227,253,253,253,253,255,253,253,253,173,145,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,208,208,243,253,209,208,208,137,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,134,255,215,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,165,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,131,253,253,248,250,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,253,253,140,74,85,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,130,253,246,131,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,222,253,199,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,245,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,245,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,226,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,192,20,0,0,0,0,0,22,75,75,75,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,99,0,0,0,58,112,144,219,253,253,253,234,93,6,0,0,0,0,0,0,0,0,0,0,0,0,143,253,99,0,58,172,241,253,253,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,143,253,144,33,241,253,253,253,253,180,160,160,160,197,253,141,0,0,0,0,0,0,0,0,0,0,0,0,143,253,250,167,253,253,253,90,30,7,0,0,0,148,253,141,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,253,253,253,236,135,54,106,106,212,250,209,22,0,0,0,0,0,0,0,0,0,0,0,0,11,207,253,253,253,253,253,253,253,245,253,253,253,154,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,102,253,253,253,253,253,253,253,253,155,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,129,214,253,253,220,93,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,83,127,168,180,254,255,188,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,66,212,252,254,254,254,243,176,184,254,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,243,250,254,171,95,80,8,7,0,1,113,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,42,63,80,2,0,0,0,0,0,0,109,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,245,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,250,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,26,82,243,237,75,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,164,254,254,254,254,254,201,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,224,254,254,254,187,75,159,244,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,247,229,177,254,191,13,0,0,37,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,138,208,205,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,254,235,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,207,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,165,224,255,219,134,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,146,241,215,142,93,142,188,217,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,247,150,21,0,0,0,9,188,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,250,92,0,0,0,0,0,0,99,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,188,0,0,0,0,0,0,0,44,248,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,75,0,0,0,0,0,0,0,44,249,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,0,0,0,0,0,0,0,0,124,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,0,0,0,0,0,0,0,0,142,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,0,0,0,0,0,0,0,0,162,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,100,0,0,0,0,0,0,55,241,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,190,4,0,0,0,0,17,199,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,186,16,0,0,17,173,208,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,241,229,206,206,221,160,57,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,150,189,116,55,0,48,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,242,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,228,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,93,172,215,254,219,138,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,176,254,254,254,254,254,254,237,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,110,237,231,128,10,10,10,53,121,175,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,166,24,0,0,0,0,0,0,58,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,206,23,0,0,0,0,0,0,29,241,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,240,78,0,0,0,0,0,0,26,181,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,78,0,4,61,121,121,137,235,254,211,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,104,56,152,254,254,254,254,233,136,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,243,250,254,254,254,250,172,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,254,254,187,99,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,255,254,254,230,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,124,97,187,254,254,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,78,0,16,151,254,254,159,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,236,78,0,0,1,37,214,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,241,78,0,0,0,0,29,252,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,78,0,0,1,43,208,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,240,106,0,17,115,254,254,243,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,214,164,228,254,248,161,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,255,254,240,195,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,225,102,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,148,148,148,148,148,148,148,148,148,148,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,253,252,252,252,252,253,252,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,252,253,252,252,252,252,253,245,231,160,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,252,252,190,110,84,84,84,84,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,252,252,200,85,85,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,253,252,252,252,252,253,252,181,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,252,252,252,253,252,252,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,147,165,173,50,42,86,165,252,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,246,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,145,197,73,0,0,0,0,0,0,0,0,43,242,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,245,142,37,0,0,0,0,0,0,155,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,235,45,0,0,0,0,62,216,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,80,243,253,253,253,237,69,43,69,148,255,253,253,243,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,252,253,252,252,252,252,253,252,245,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,172,252,252,253,252,252,252,252,250,152,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,111,189,253,252,247,189,189,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,13,122,190,255,253,178,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,181,252,252,252,253,252,252,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,252,252,253,252,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,252,252,206,84,84,158,236,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,229,83,4,0,0,0,140,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,228,54,0,0,0,0,0,49,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,204,167,0,0,0,0,0,0,49,252,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,104,0,0,0,0,0,0,49,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,132,76,76,13,13,13,173,253,209,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,175,252,252,252,252,253,252,252,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,175,252,252,252,252,252,252,253,252,252,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,5,175,252,252,252,252,252,208,204,207,252,252,252,252,97,10,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,252,206,151,72,7,29,128,252,252,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,10,227,252,238,94,14,0,0,0,155,253,252,252,204,197,252,163,11,0,0,0,0,0,0,0,0,0,0,13,252,252,204,0,0,29,85,194,250,253,252,182,16,41,232,252,211,60,0,0,0,0,0,0,0,0,0,8,211,252,245,217,217,229,252,252,252,253,197,59,0,0,120,234,252,143,0,0,0,0,0,0,0,0,0,0,93,252,252,252,252,252,252,252,252,138,10,0,0,0,0,60,143,25,0,0,0,0,0,0,0,0,0,0,13,206,252,252,252,252,252,142,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,88,167,255,144,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,192,253,253,253,253,236,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,37,134,244,248,253,253,253,253,253,253,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,253,253,253,253,253,78,141,211,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,244,253,253,253,253,248,105,123,88,2,0,10,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,249,113,78,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,238,253,238,79,120,120,37,16,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,203,248,223,253,253,253,253,217,201,92,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,253,253,253,253,253,253,236,103,133,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,242,253,253,253,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,211,195,113,171,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,253,253,128,2,0,1,193,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,232,27,0,0,0,149,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,245,90,0,0,0,0,192,252,164,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,238,0,0,0,0,30,236,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,247,239,8,0,0,0,42,253,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,174,11,0,0,98,253,253,233,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,236,253,134,11,134,253,253,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,237,253,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,251,139,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,236,194,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,50,0,0,0,105,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,247,92,0,0,10,232,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,208,254,244,23,0,0,184,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,254,251,156,75,91,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,255,254,254,254,254,255,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,48,149,231,246,253,253,254,248,243,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,237,76,38,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,231,213,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,248,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,238,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,237,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,197,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,240,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,225,191,0,0,69,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,71,0,0,57,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,245,18,0,0,3,223,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,201,241,6,0,0,0,241,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,225,58,0,0,241,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,184,224,249,139,48,243,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,77,5,20,115,219,249,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,244,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,235,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,246,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,205,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,39,2,27,39,99,147,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,201,254,187,232,254,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,137,223,239,254,254,254,251,254,254,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,254,254,226,123,103,91,237,254,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,225,163,22,0,91,234,254,230,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,27,17,0,3,95,253,255,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,144,254,254,242,205,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,95,172,173,226,254,254,208,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,250,254,254,254,254,225,129,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,162,162,139,54,242,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,207,68,0,0,0,0,0,0,0,76,252,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,248,72,7,0,0,0,0,0,150,254,222,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,255,254,194,74,0,0,0,14,215,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,152,254,254,254,253,144,104,16,135,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,103,227,254,254,254,254,251,254,254,228,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,156,247,254,254,254,254,229,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,146,146,146,146,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,203,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,234,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,185,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,149,184,246,123,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,112,103,86,165,191,191,243,254,225,168,98,11,0,0,0,0,0,0,0,0,0,0,0,0,0,18,202,252,253,253,254,253,252,232,143,65,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,233,253,253,253,128,84,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,220,253,245,122,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,193,231,132,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,233,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,138,248,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,226,212,213,212,203,107,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,216,254,237,220,254,254,254,254,88,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,63,37,11,63,72,190,253,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,30,22,4,0,0,0,6,206,255,211,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,248,163,14,0,0,0,0,80,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,135,0,0,0,0,0,0,0,166,218,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,184,171,0,0,0,0,0,0,63,211,205,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,179,36,0,0,0,0,22,155,254,168,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,226,8,0,0,0,20,203,253,171,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,140,253,171,64,65,64,203,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,156,253,253,254,253,191,42,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,255,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,170,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,136,11,194,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,222,253,253,253,38,0,26,48,0,0,0,0,0,0,0,0,0,0,26,59,0,0,0,0,0,0,0,177,253,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,176,71,0,0,0,0,0,0,0,177,253,253,253,143,3,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,57,233,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,245,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,187,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,253,253,253,211,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,253,253,253,163,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,178,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,104,221,203,161,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,216,253,254,253,232,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,182,253,253,247,128,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,254,254,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,228,253,254,130,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,127,38,112,161,162,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,235,253,253,206,243,253,253,254,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,254,248,187,71,103,253,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,103,56,0,0,70,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,69,0,0,0,0,70,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,253,69,0,0,0,0,70,253,232,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,243,253,186,0,0,0,0,145,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,68,0,0,0,195,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,229,40,0,26,255,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,190,254,190,97,122,254,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,163,242,253,253,254,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,169,253,195,177,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,77,34,34,15,0,0,0,0,90,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,253,253,253,211,100,12,0,0,89,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,253,254,253,218,9,0,89,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,204,253,250,231,231,254,253,253,174,39,223,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,242,253,209,0,0,182,253,253,246,223,234,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,225,23,0,31,55,219,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,253,170,2,7,70,250,243,60,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,71,163,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,255,233,85,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,253,253,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,95,250,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,122,249,253,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,174,189,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,222,38,69,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,121,12,102,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,253,186,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,100,253,253,249,191,61,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,66,0,0,0,0,0,67,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,254,72,0,0,0,34,179,251,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,202,253,254,30,0,0,0,204,253,185,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,246,253,183,10,0,0,166,248,247,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,93,245,253,238,54,0,0,43,236,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,203,29,0,0,30,225,253,181,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,244,253,215,56,0,115,114,208,253,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,253,242,127,138,192,254,253,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,198,253,253,246,236,253,253,254,253,253,230,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,221,253,253,253,253,253,250,165,254,253,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,254,254,245,103,3,200,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,248,238,167,96,25,0,6,226,254,209,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,14,0,0,0,5,128,253,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,229,253,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,245,253,253,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,120,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,253,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,183,253,247,120,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,226,253,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,238,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,85,0,0,0,0,4,219,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,124,0,0,0,0,81,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,50,0,0,0,0,167,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,220,16,0,0,0,0,180,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,226,114,0,0,0,0,0,180,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,32,0,0,0,0,0,180,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,164,1,0,0,0,0,4,192,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,126,195,195,251,83,0,0,0,0,0,26,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,59,239,190,161,254,254,214,92,10,0,0,0,45,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,151,162,253,155,226,252,173,41,0,0,126,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,212,200,91,0,0,56,200,232,154,44,188,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,4,0,0,0,0,17,127,240,244,250,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,170,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,95,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,167,247,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,215,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,125,254,211,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,255,251,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,94,252,235,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,250,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,186,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,217,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,197,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,161,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,239,210,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,185,230,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,191,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,248,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,250,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,233,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,219,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,248,248,140,118,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,210,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,189,162,149,149,232,253,209,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,4,0,0,152,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,244,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,241,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,208,253,212,53,45,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,46,90,176,238,253,253,253,253,241,216,176,176,103,45,0,0,0,0,0,0,0,0,0,0,39,163,169,202,253,253,253,253,253,253,253,253,253,253,253,253,253,251,169,0,0,0,0,0,0,0,0,97,251,253,240,220,249,253,253,253,228,220,220,221,220,220,221,221,220,221,221,0,0,0,0,0,0,0,0,255,253,242,133,11,225,253,253,128,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,208,83,190,253,247,193,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,248,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,177,247,247,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,214,19,0,0,13,57,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,231,43,0,0,10,172,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,225,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,163,0,0,0,92,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,227,38,0,0,0,166,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,139,0,0,0,0,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,26,113,163,253,252,252,40,0,0,0,51,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,254,253,253,253,254,178,141,191,254,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,253,252,252,252,253,252,252,252,253,252,224,119,57,57,13,0,0,0,0,0,0,0,0,0,0,13,56,156,168,168,168,205,216,252,252,252,253,252,252,252,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,16,53,139,190,253,252,214,139,128,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,168,119,9,0,0,0,0,0,0,37,155,255,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,254,251,128,11,0,0,0,0,197,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,254,254,254,247,202,159,119,152,252,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,254,254,254,254,254,254,254,254,254,254,237,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,238,63,35,103,146,189,189,241,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,228,15,0,0,0,0,0,95,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,250,151,3,0,0,0,0,0,165,254,234,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,20,0,0,0,0,0,0,203,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,30,247,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,245,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,229,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,216,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,61,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,254,232,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,218,254,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,197,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,197,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,228,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,226,225,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,255,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,255,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,74,193,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,144,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,252,228,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,213,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,0,0,0,26,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,0,0,109,226,241,196,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,9,195,250,254,254,254,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,27,0,0,110,254,254,147,118,221,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,66,0,38,243,254,135,4,0,21,207,241,74,0,0,0,0,0,0,0,0,0,0,0,0,0,5,246,254,144,0,45,244,250,56,0,0,0,136,254,204,3,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,244,12,173,254,128,0,0,0,0,136,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,244,50,254,254,92,78,48,0,0,136,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,21,220,254,200,254,254,248,243,65,0,0,147,254,143,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,254,213,75,0,0,96,251,238,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,254,217,51,16,0,0,95,247,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,197,72,119,150,253,254,179,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,238,254,254,254,254,254,155,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,137,215,254,199,74,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,209,254,232,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,240,254,254,61,0,0,0,0,0,22,32,32,32,17,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,254,141,0,125,132,132,132,218,254,254,254,198,132,48,0,0,0,0,0,0,0,0,0,0,0,102,254,254,254,251,233,253,254,254,254,254,254,254,254,254,254,236,45,0,0,0,0,0,0,0,0,0,0,102,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,156,5,0,0,0,0,0,0,0,0,0,102,254,254,254,254,254,254,254,254,217,130,130,130,130,187,254,254,254,46,0,0,0,0,0,0,0,0,0,12,208,254,254,254,216,251,184,30,21,0,0,0,0,117,254,254,254,46,0,0,0,0,0,0,0,0,0,0,202,254,254,254,124,90,23,0,0,0,0,0,0,117,254,254,254,46,0,0,0,0,0,0,0,0,0,0,110,205,254,254,254,208,117,117,10,0,0,0,0,117,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,254,220,203,63,63,63,150,254,254,254,162,0,0,0,0,0,0,0,0,0,0,0,143,250,254,254,254,254,254,254,254,254,254,254,254,254,255,254,139,0,0,0,0,0,0,0,0,0,0,0,0,54,162,254,254,254,254,254,254,254,254,254,254,254,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,7,46,192,240,254,254,254,254,254,254,254,254,253,134,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,100,146,254,254,254,254,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,114,113,222,237,50,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,240,253,252,252,252,237,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,104,209,252,252,253,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,207,252,252,252,252,253,252,252,252,252,253,177,29,10,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,252,252,252,190,237,252,252,252,253,252,252,161,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,253,178,63,0,48,166,253,253,79,226,253,225,0,0,0,0,0,0,0,0,0,0,76,231,252,252,215,121,27,9,0,0,0,6,27,27,0,100,252,223,0,0,0,0,0,0,0,0,0,0,117,252,214,195,31,0,0,0,0,0,0,0,0,0,0,85,208,181,197,0,0,0,0,0,0,0,0,0,209,245,74,0,0,0,0,0,0,0,0,0,0,0,0,76,227,224,157,0,0,0,0,0,0,0,0,0,38,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,112,0,0,0,0,0,0,0,0,48,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,242,74,0,0,0,0,0,0,0,0,203,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,114,0,0,0,0,0,0,0,0,0,200,215,53,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,84,0,0,0,0,0,0,0,0,0,50,237,195,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,84,0,0,0,0,0,0,0,0,0,0,163,222,38,0,0,0,0,0,0,0,0,26,113,191,255,253,133,0,0,0,0,0,0,0,0,0,0,179,128,233,218,85,0,0,0,48,0,85,163,122,252,252,253,129,6,0,0,0,0,0,0,0,0,0,0,88,161,197,252,252,198,197,119,227,197,253,233,239,252,220,56,6,0,0,0,0,0,0,0,0,0,0,0,0,47,103,252,252,237,252,252,252,236,84,56,175,129,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,112,112,50,112,112,112,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,60,136,250,188,211,254,199,255,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,154,154,228,253,253,253,253,237,253,253,253,168,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,217,200,158,82,137,82,72,253,253,164,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,65,21,0,0,0,0,40,156,237,146,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,233,219,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,156,252,182,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,181,106,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,225,243,253,227,142,98,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,114,212,244,253,253,161,91,42,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,121,194,252,253,253,198,84,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,59,150,253,253,230,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,41,209,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,30,52,224,253,228,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,152,253,253,241,167,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,102,183,216,252,246,166,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,84,149,201,238,253,253,178,110,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,219,249,253,244,152,152,62,35,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,73,17,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,67,200,254,163,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,132,244,253,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,178,220,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,141,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,250,234,234,251,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,199,199,143,0,0,236,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,188,151,151,151,246,253,253,253,179,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,253,253,253,246,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,253,253,253,217,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,253,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,27,27,27,153,250,253,253,253,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,253,253,253,65,0,0,0,0,0,0,0,0,0,0,7,169,169,169,169,69,145,107,108,169,169,169,247,253,253,253,253,65,0,0,0,0,0,0,0,0,97,236,236,253,253,253,253,242,250,246,246,253,253,253,253,253,253,253,138,5,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,130,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,212,38,0,0,0,0,0,0,0,0,0,212,253,253,253,253,253,253,253,253,253,253,253,253,253,253,227,63,6,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,253,253,253,253,253,253,253,138,72,0,0,0,0,0,0,0,0,0,0,0,0,17,65,72,253,253,253,253,253,253,253,253,224,65,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,206,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,190,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,245,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,248,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,222,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,214,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,253,230,213,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,243,129,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,156,140,9,179,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,155,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,217,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,233,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,54,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,165,213,46,6,174,253,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,26,144,194,246,252,224,165,253,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,239,0,0,227,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,250,239,68,0,0,227,253,253,253,165,0,0,0,82,104,169,0,0,0,0,0,0,0,0,0,0,32,208,253,174,0,43,217,250,253,253,253,252,153,83,83,217,217,31,0,0,0,0,0,0,0,0,0,0,205,253,176,60,70,227,253,231,154,80,232,253,253,253,253,253,178,0,0,0,0,0,0,0,0,0,0,83,247,253,196,229,253,232,152,49,0,0,64,213,253,236,212,104,22,0,0,0,0,0,0,0,0,0,0,118,253,253,253,250,225,47,0,0,0,0,0,3,96,57,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,128,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,191,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,238,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,95,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,237,253,244,161,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,235,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,224,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,174,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,115,254,250,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,39,0,0,0,5,20,20,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,213,12,0,13,116,194,253,253,253,193,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,195,4,107,230,253,254,253,253,253,253,219,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,195,170,253,253,253,254,245,155,245,253,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,255,254,254,254,208,76,0,0,16,218,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,253,253,129,9,0,0,7,88,244,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,212,254,253,253,91,79,49,86,199,253,253,145,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,253,253,253,253,246,253,253,231,176,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,148,253,215,215,155,155,118,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,210,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,252,221,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,249,253,252,251,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,252,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,201,252,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,252,139,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,253,252,190,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,254,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,252,253,224,14,0,0,0,0,78,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,253,116,0,15,110,145,232,251,247,232,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,225,21,41,225,252,253,252,252,252,252,239,133,6,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,211,0,215,252,252,253,252,252,252,252,253,252,65,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,219,114,253,253,253,255,253,253,253,253,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,252,252,252,253,252,252,252,252,253,252,47,0,0,0,0,0,0,0,0,0,0,0,0,81,245,252,253,252,252,252,252,253,252,252,252,252,170,47,2,0,0,0,0,0,0,0,0,0,0,0,0,0,127,242,253,252,252,252,252,253,252,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,104,147,244,252,252,253,173,147,77,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,158,228,234,116,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,254,254,254,254,200,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,140,67,67,123,238,254,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,172,252,226,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,244,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,211,254,247,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,254,227,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,254,254,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,182,254,254,170,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,76,230,254,254,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,173,254,254,254,254,166,163,163,163,163,163,163,163,163,163,163,163,163,66,0,0,0,0,0,0,0,0,255,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,157,0,0,0,0,0,0,0,0,158,205,182,216,217,254,254,254,254,254,254,254,254,254,254,254,254,254,204,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,219,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,243,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,254,236,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,234,254,230,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,184,2,0,0,0,7,44,112,147,112,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,247,81,0,0,55,132,209,254,254,254,254,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,230,0,26,131,249,254,254,254,247,211,223,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,250,133,193,254,254,249,161,53,44,0,15,199,252,38,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,254,249,151,38,0,0,0,0,0,231,254,91,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,160,38,0,0,0,0,0,2,67,244,254,91,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,87,5,2,5,3,4,95,143,254,254,211,21,0,0,0,0,0,0,0,0,0,0,0,0,138,228,254,254,254,248,198,250,215,226,254,254,254,244,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,159,254,254,254,254,254,254,254,254,253,221,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,62,175,254,254,254,254,189,158,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,152,170,104,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,214,254,217,138,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,229,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,234,254,204,0,0,0,45,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,241,69,154,187,240,233,187,141,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,224,254,254,254,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,254,254,234,119,179,242,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,227,254,254,235,66,0,0,112,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,192,0,0,0,191,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,215,23,0,70,248,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,223,254,254,171,0,82,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,254,214,23,133,254,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,241,251,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,132,254,254,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,133,255,215,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,110,201,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,87,134,156,241,253,249,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,160,151,155,195,246,253,246,242,254,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,208,221,208,200,117,60,40,150,254,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,133,253,214,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,236,245,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,233,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,253,158,37,90,151,164,164,186,187,86,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,219,253,253,208,246,254,253,211,208,235,241,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,253,253,218,134,52,30,2,0,18,30,205,251,75,0,0,0,0,0,0,0,0,0,0,0,0,172,254,255,172,49,0,0,0,0,0,0,0,0,58,248,156,0,0,0,0,0,0,0,0,0,0,0,13,243,253,172,8,0,0,0,0,0,0,0,0,0,15,242,195,0,0,0,0,0,0,0,0,0,0,0,6,146,141,5,0,0,0,0,0,0,0,0,0,0,87,253,138,0,0,0,0,0,0,0,0,0,0,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,77,0,0,0,0,0,0,0,0,0,0,134,59,0,0,0,0,0,0,0,0,0,0,0,0,71,248,244,25,0,0,0,0,0,0,0,0,0,0,127,223,25,0,0,0,0,0,0,0,0,0,0,31,232,254,103,0,0,0,0,0,0,0,0,0,0,0,11,202,219,100,0,0,0,0,0,0,0,0,24,191,254,146,3,0,0,0,0,0,0,0,0,0,0,0,0,14,206,253,209,103,20,11,2,7,33,121,241,249,146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,126,214,253,253,236,201,219,253,253,205,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,47,152,178,178,245,178,82,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,34,139,144,182,250,144,144,144,193,144,144,144,144,144,144,71,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,253,253,253,255,253,253,253,253,253,253,240,75,0,0,0,0,0,0,0,0,0,0,108,154,154,154,154,106,87,126,154,44,121,63,44,44,82,202,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,147,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,154,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,236,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,150,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,202,254,254,254,255,254,111,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,253,253,253,253,253,253,253,211,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,197,253,253,253,253,253,253,253,253,253,116,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,233,253,253,230,156,56,56,56,56,56,56,56,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,192,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,250,156,156,156,156,156,156,156,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,245,253,253,253,253,253,253,253,253,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,182,245,245,245,245,245,246,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,25,210,253,253,238,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,116,218,253,253,253,227,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,42,201,207,253,253,253,253,231,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,131,242,253,253,253,253,253,253,146,59,0,0,0,0,0,0,0,0,0,0,0,0,0,42,58,185,222,248,253,253,253,253,214,195,73,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,53,223,253,253,253,253,253,253,162,106,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,253,253,253,253,190,89,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,126,89,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,232,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,216,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,229,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,253,140,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,199,253,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,143,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,253,155,4,0,9,24,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,253,219,25,0,76,184,254,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,239,25,19,170,254,228,185,222,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,212,253,179,34,237,253,223,40,0,138,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,232,69,240,254,181,42,0,0,138,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,206,182,253,203,6,0,0,60,214,210,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,178,237,254,34,0,57,136,254,241,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,247,254,211,253,253,139,222,249,253,241,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,254,253,253,253,254,253,253,202,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,220,253,253,253,195,160,152,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,76,246,255,84,19,0,31,96,146,146,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,205,205,171,184,240,253,253,190,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,187,253,246,126,211,253,250,160,83,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,238,201,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,216,245,178,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,251,253,208,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,223,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,233,222,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,205,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,211,99,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,88,253,253,253,176,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,217,244,253,248,146,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,238,253,253,160,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,123,33,38,161,249,253,253,242,156,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,253,249,114,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,163,253,253,233,145,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,183,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,131,252,252,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,172,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,243,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,252,241,84,1,0,0,0,0,6,90,90,90,42,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,222,0,0,0,0,0,73,197,252,252,252,221,126,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,222,0,0,0,0,62,234,252,252,252,252,252,215,35,0,0,0,0,0,0,0,0,0,0,61,253,253,253,74,0,0,0,62,255,253,253,253,253,253,253,253,59,0,0,0,0,0,0,0,0,0,0,60,252,252,252,74,0,0,11,173,253,252,248,122,106,252,252,252,59,0,0,0,0,0,0,0,0,0,0,60,252,252,252,82,0,6,145,252,253,248,134,0,75,252,252,246,55,0,0,0,0,0,0,0,0,0,0,60,252,252,252,222,0,90,252,252,253,122,0,0,75,252,252,162,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,231,75,225,252,252,253,44,5,75,215,252,212,27,0,0,0,0,0,0,0,0,0,0,0,18,189,252,252,252,252,252,252,252,253,68,131,252,252,230,35,0,0,0,0,0,0,0,0,0,0,0,0,0,77,181,252,252,252,252,252,252,253,252,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,241,252,252,252,252,252,253,252,252,252,172,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,252,252,252,253,252,222,136,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,121,252,252,252,252,253,128,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,29,0,0,0,57,86,141,141,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,141,226,255,255,255,198,170,226,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,86,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,0,0,0,198,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,86,0,0,0,0,0,0,0,114,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,29,29,0,0,0,0,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,226,198,114,86,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,114,198,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,98,160,230,160,102,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,176,254,217,216,216,254,190,94,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,222,246,119,2,0,0,142,254,254,188,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,240,96,0,0,0,0,22,85,88,200,220,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,206,0,0,0,0,0,0,0,0,34,226,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,164,0,0,0,0,0,0,0,0,0,100,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,143,0,0,0,0,0,0,0,0,0,48,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,172,206,0,0,0,0,0,0,0,0,0,104,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,245,61,0,0,0,0,0,0,0,9,189,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,157,95,14,0,0,85,95,141,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,211,254,209,160,220,255,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,254,254,254,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,231,253,174,127,139,188,244,243,149,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,124,254,237,89,0,0,0,0,0,110,254,163,3,0,0,0,0,0,0,0,0,0,0,0,0,0,43,197,250,175,18,0,0,0,0,0,0,4,193,254,9,0,0,0,0,0,0,0,0,0,0,0,0,5,190,250,113,0,0,0,0,0,0,0,0,0,121,254,9,0,0,0,0,0,0,0,0,0,0,0,0,3,194,240,65,0,0,0,0,0,0,0,0,65,240,225,6,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,243,66,0,0,0,0,0,48,179,250,221,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,138,233,217,136,123,124,207,245,245,155,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,212,254,254,254,204,156,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,153,191,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,178,3,0,0,0,0,0,143,243,224,51,3,0,0,0,0,0,0,0,0,0,0,0,5,128,235,253,253,130,12,0,0,0,0,37,235,253,253,253,33,0,0,0,0,0,0,0,0,0,0,0,13,215,215,253,253,114,0,0,0,0,0,12,94,169,253,253,120,0,0,0,0,0,0,0,0,0,0,0,2,22,55,244,253,152,15,0,0,0,0,0,0,7,210,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,128,0,0,0,0,0,0,0,10,236,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,94,0,0,0,0,0,0,0,9,228,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,66,0,0,0,0,0,0,39,165,253,253,95,0,0,0,0,0,0,0,0,0,9,34,82,34,207,254,254,138,34,34,34,34,139,216,254,254,255,115,0,0,0,0,0,0,0,0,0,53,197,253,253,253,253,253,253,253,253,254,253,253,253,253,253,221,120,20,0,0,0,0,0,0,0,0,0,187,253,253,253,253,253,253,253,253,253,254,253,253,253,188,154,32,0,0,0,0,0,0,0,0,0,0,0,206,253,210,16,10,153,253,253,203,73,11,10,10,10,4,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,112,56,211,253,234,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,253,253,253,253,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,156,248,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,209,209,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,144,144,236,254,254,254,250,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,148,244,254,253,253,248,187,187,187,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,201,237,253,253,241,126,44,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,120,251,253,253,213,121,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,253,253,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,248,234,234,253,238,131,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,73,249,243,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,219,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,254,254,254,254,221,144,82,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,239,187,187,228,253,253,254,200,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,0,0,27,44,140,254,253,193,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,213,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,43,0,0,0,0,0,0,65,237,219,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,126,0,0,0,0,4,60,245,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,245,131,29,0,28,156,253,255,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,212,253,231,188,228,253,253,196,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,167,253,253,253,253,157,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,207,254,254,254,254,254,254,255,148,249,91,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,253,253,253,253,253,253,253,253,253,253,199,107,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,146,160,253,253,253,253,253,253,253,253,253,253,229,107,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,56,56,56,205,220,220,221,253,253,253,253,253,166,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,253,253,177,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,113,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,124,253,253,253,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,118,247,221,253,253,253,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,110,195,253,253,253,191,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,90,179,179,196,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,157,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,52,104,195,245,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,76,210,254,254,254,189,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,187,165,48,131,216,254,254,215,175,113,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,249,254,247,254,254,253,207,89,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,176,254,111,202,255,164,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,226,232,35,138,114,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,226,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,239,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,227,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,38,23,0,0,17,242,205,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,188,0,0,15,237,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,245,247,25,0,7,204,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,185,21,0,144,250,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,222,254,158,19,212,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,254,226,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,155,222,203,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,38,38,38,38,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,184,184,184,184,211,253,253,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,1,48,222,251,253,253,253,253,253,253,253,253,248,141,19,0,0,0,0,0,0,0,0,0,0,0,0,68,156,253,253,253,253,253,253,253,253,253,224,121,2,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,253,253,253,253,201,172,127,172,172,160,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,243,253,253,253,250,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,253,253,251,205,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,243,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,216,202,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,0,93,248,184,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,95,0,0,99,247,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,177,0,0,0,186,244,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,177,0,0,0,130,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,229,50,0,84,245,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,225,232,122,243,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,183,213,178,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,243,254,191,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,221,253,253,254,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,235,219,253,239,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,237,253,99,44,4,157,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,183,7,0,0,19,175,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,235,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,24,0,0,10,83,89,194,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,180,5,0,134,249,224,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,184,185,178,207,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,255,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,174,253,209,227,250,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,154,7,93,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,239,188,9,0,0,219,247,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,168,0,0,41,173,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,200,154,207,234,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,253,253,253,253,254,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,172,148,132,189,69,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,213,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,227,253,207,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,250,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,216,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,209,255,253,89,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,228,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,228,253,220,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,236,254,196,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,236,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,228,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,196,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,238,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,242,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,29,29,104,141,141,141,166,216,141,13,0,0,0,0,0,0,0,0,0,0,0,0,13,95,169,170,169,234,252,253,252,252,252,253,252,252,252,207,82,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,253,252,252,252,244,168,168,243,253,215,19,0,0,0,0,0,0,0,0,0,0,57,252,202,140,115,65,139,140,65,28,28,25,0,0,125,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,215,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,227,31,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,62,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,233,41,0,0,0,0,123,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,111,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,50,0,0,0,0,0,203,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,0,0,0,41,243,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,173,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,122,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,132,10,0,0,0,21,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,172,102,20,102,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,253,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,232,253,252,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,79,129,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,120,187,252,252,253,252,187,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,197,246,253,252,252,252,253,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,252,252,253,252,252,202,140,139,52,15,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,179,255,253,253,253,163,113,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,187,252,252,247,196,158,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,164,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,247,253,192,66,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,133,203,252,149,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,130,234,177,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,190,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,179,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,187,7,0,0,0,0,0,0,0,0,0,0,0,0,10,28,0,0,0,0,0,0,0,0,0,0,0,169,252,116,0,0,0,0,0,0,0,0,0,0,0,0,128,84,0,0,0,0,0,0,0,0,0,0,63,206,252,139,0,0,0,0,0,0,0,0,0,0,0,0,242,228,141,41,41,91,53,29,92,141,141,241,254,253,244,125,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,252,253,252,252,252,253,252,252,252,253,214,81,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,94,168,216,252,252,252,253,233,168,118,56,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,28,28,28,28,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,150,255,236,158,129,116,158,158,158,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,221,254,233,241,254,254,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,247,49,38,67,67,83,129,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,254,82,0,0,0,0,0,32,254,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,154,7,0,0,0,0,0,115,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,9,0,0,0,0,0,32,239,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,203,4,0,0,0,0,0,64,254,239,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,243,55,0,0,0,0,0,6,184,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,69,0,0,0,0,0,0,108,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,219,245,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,155,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,251,248,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,247,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,190,254,178,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,102,41,0,0,0,152,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,254,213,62,0,92,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,253,252,162,61,213,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,213,21,0,0,102,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,102,0,0,183,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,214,10,152,253,224,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,233,112,233,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,151,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,233,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,224,182,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,171,61,61,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,123,20,0,142,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,171,20,0,62,203,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,234,30,0,0,113,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,163,233,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,255,253,254,253,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,172,252,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,57,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,172,246,253,240,159,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,226,243,252,252,253,252,214,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,178,253,255,234,137,113,13,207,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,216,252,252,227,134,28,0,0,0,119,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,253,252,186,31,0,0,0,0,13,206,252,90,0,0,0,0,0,0,0,0,0,0,0,0,13,188,246,252,241,65,19,0,0,0,0,0,26,243,252,40,0,0,0,0,0,0,0,0,0,0,0,13,154,253,253,241,101,0,0,0,0,0,0,0,41,253,244,75,0,0,0,0,0,0,0,0,0,0,19,194,253,252,196,47,0,0,0,0,0,0,0,0,216,252,118,0,0,0,0,0,0,0,0,0,0,0,172,252,253,208,37,0,0,0,0,0,0,0,0,89,253,252,80,0,0,0,0,0,0,0,0,0,0,51,246,252,241,59,0,0,0,0,0,0,0,0,126,237,253,151,6,0,0,0,0,0,0,0,0,0,4,179,253,241,101,0,0,0,0,0,0,13,29,179,253,241,151,0,0,0,0,0,0,0,0,0,0,0,54,252,252,139,0,0,0,0,0,0,19,144,253,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,191,252,186,31,0,0,0,0,10,85,191,252,253,121,37,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,168,0,0,76,113,163,229,252,252,202,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,253,254,253,253,253,226,150,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,196,240,252,253,214,109,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,56,56,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,172,254,254,255,254,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,182,253,226,183,156,96,96,78,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,155,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,220,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,220,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,232,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,209,0,0,0,9,27,27,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,246,127,106,135,212,253,253,219,102,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,230,253,252,244,130,70,91,207,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,78,76,0,0,0,0,17,199,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,187,243,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,217,235,0,0,0,0,0,0,0,0,0,0,0,0,124,4,0,0,0,0,0,0,0,0,0,0,0,48,253,223,0,0,0,0,0,0,0,0,0,0,0,0,166,110,4,0,0,0,0,0,0,0,0,0,38,211,250,103,0,0,0,0,0,0,0,0,0,0,0,0,57,236,155,24,0,0,0,0,0,5,39,124,245,244,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,202,218,115,97,97,97,184,203,253,251,183,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,205,253,253,253,254,228,144,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,255,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,223,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,77,7,0,0,0,0,0,55,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,156,0,0,0,0,0,55,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,182,0,0,0,0,0,55,254,255,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,182,0,0,0,0,0,107,254,254,112,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,182,0,0,0,0,0,145,254,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,182,0,0,0,0,0,145,254,254,208,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,182,0,0,0,0,0,210,254,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,182,0,0,6,73,223,255,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,145,145,218,254,239,250,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,191,228,254,222,217,152,26,236,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,54,8,0,0,0,236,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,241,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,250,234,84,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,228,196,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,168,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,247,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,253,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,238,254,229,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,249,253,199,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,170,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,141,155,245,255,239,155,135,97,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,186,253,253,253,253,253,253,253,253,243,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,253,253,253,253,253,253,253,248,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,125,234,233,233,161,189,234,233,242,254,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,226,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,219,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,228,253,203,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,123,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,132,206,253,254,253,214,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,201,253,253,253,253,253,253,253,179,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,253,252,249,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,254,218,114,72,6,122,223,253,241,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,167,16,0,0,0,0,20,185,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,20,0,0,0,0,0,0,80,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,164,0,0,0,0,0,0,0,0,0,0,0,0,21,120,80,71,0,0,0,0,0,0,0,0,8,203,253,132,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,251,128,2,0,0,0,0,0,24,174,253,221,5,0,0,0,0,0,0,0,0,0,0,0,0,17,157,253,253,253,138,91,2,0,0,83,232,254,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,121,253,254,253,254,245,245,245,252,253,231,107,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,235,253,253,253,253,253,253,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,183,242,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,141,254,216,189,230,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,223,18,77,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,254,100,0,33,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,235,254,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,220,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,220,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,189,0,0,0,0,45,109,106,161,208,200,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,189,0,0,45,162,247,254,254,254,241,247,251,134,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,189,7,124,248,254,241,143,56,56,31,50,226,241,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,239,209,254,243,141,30,0,0,0,0,0,190,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,206,30,0,0,0,0,0,0,8,195,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,178,2,0,0,0,0,2,61,215,248,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,254,254,143,80,9,52,108,190,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,177,251,255,254,254,254,255,253,203,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,100,168,183,182,98,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,240,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,243,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,218,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,217,254,219,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,206,254,254,245,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,255,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,250,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,250,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,212,162,0,0,0,0,41,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,193,254,233,0,0,0,0,51,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,233,50,0,0,0,0,132,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,254,233,41,0,0,0,0,62,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,70,0,0,0,0,0,183,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,253,41,0,0,0,0,0,113,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,212,41,0,0,0,0,41,233,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,254,253,254,253,173,253,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,172,252,253,252,253,252,253,252,253,212,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,102,102,102,102,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,227,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,31,0,0,0,0,0,0,235,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,247,190,0,0,0,0,0,60,245,242,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,158,246,147,0,0,0,0,0,169,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,168,0,0,0,0,0,39,228,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,220,34,0,0,0,0,0,194,253,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,240,253,129,0,0,0,0,0,43,245,253,107,113,216,99,0,0,0,0,0,0,0,0,0,0,0,0,80,253,235,29,0,0,0,0,0,201,253,253,204,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,198,254,219,66,98,159,159,194,255,254,254,254,254,200,91,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,253,253,253,254,253,234,122,34,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,237,243,212,149,150,228,254,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,253,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,248,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,249,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,141,226,255,198,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,114,0,141,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,198,29,255,255,255,226,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,198,255,255,86,114,198,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,86,0,57,114,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,170,29,0,141,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,255,255,255,141,114,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,255,255,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,255,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,170,255,255,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,154,253,216,141,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,231,253,214,240,252,244,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,106,19,44,56,253,215,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,240,0,0,0,0,153,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,79,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,114,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,251,75,0,0,4,29,117,241,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,244,82,0,51,179,252,233,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,240,197,246,253,196,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,202,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,128,128,128,191,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,118,177,255,142,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,249,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,237,253,220,177,177,177,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,225,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,140,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,219,3,0,0,0,0,0,0,0,0,45,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,96,0,0,0,0,0,0,0,52,157,238,230,193,27,0,0,0,0,0,0,0,0,0,0,0,0,114,253,82,0,0,0,0,0,0,60,233,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,213,253,82,0,0,0,0,0,62,230,253,253,207,86,114,75,0,0,0,0,0,0,0,0,0,0,0,0,198,253,82,0,0,0,0,60,230,253,234,89,5,0,151,75,0,0,0,0,0,0,0,0,0,0,0,0,76,253,82,0,0,0,0,206,253,252,106,0,0,3,201,75,0,0,0,0,0,0,0,0,0,0,0,0,76,253,82,0,0,0,44,229,253,158,0,0,0,83,253,75,0,0,0,0,0,0,0,0,0,0,0,0,76,253,137,0,0,0,90,253,207,5,0,0,0,213,194,4,0,0,0,0,0,0,0,0,0,0,0,0,76,253,230,34,0,0,209,253,205,0,0,0,134,249,72,0,0,0,0,0,0,0,0,0,0,0,0,0,17,172,253,213,31,0,97,242,205,0,40,199,250,188,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,253,215,120,42,214,239,179,221,253,214,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,234,253,253,253,253,253,253,253,232,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,175,253,253,253,238,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,28,155,194,254,160,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,211,253,253,253,253,253,219,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,253,244,253,253,253,178,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,149,228,146,105,54,134,247,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,39,0,0,0,0,0,192,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,38,38,38,201,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,182,253,253,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,224,253,253,253,253,253,253,213,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,225,253,253,215,237,253,253,173,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,253,243,61,48,128,68,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,243,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,175,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,243,63,0,0,58,81,81,58,0,68,81,10,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,248,150,211,211,241,253,253,241,211,246,253,216,99,6,0,0,0,0,0,0,0,0,0,0,3,179,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,165,50,0,0,0,0,0,0,0,0,0,7,253,253,253,253,253,253,253,253,229,181,253,253,253,253,253,253,253,239,5,0,0,0,0,0,0,0,0,120,253,253,253,253,186,66,24,24,18,7,24,24,24,70,148,243,253,253,169,0,0,0,0,0,0,0,0,246,253,253,187,66,7,0,0,0,0,0,0,0,0,0,0,175,253,253,253,0,0,0,0,0,0,0,0,79,253,235,5,0,0,0,0,0,0,0,0,0,0,0,0,5,179,253,253,0,0,0,0,0,0,0,0,1,73,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,129,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,12,197,255,246,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,136,88,0,79,157,197,230,211,250,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,244,252,253,253,253,253,234,185,105,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,221,153,67,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,242,186,27,56,20,20,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,242,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,245,126,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,232,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,217,249,250,250,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,34,43,98,60,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,99,238,128,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,0,3,5,179,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,24,0,0,0,0,0,0,0,0,0,46,165,240,99,0,0,0,0,0,0,0,0,0,0,0,0,0,244,67,0,0,0,0,0,0,0,0,0,0,0,130,222,19,0,0,0,0,0,0,0,0,0,0,0,0,244,99,0,0,0,0,0,0,0,0,0,0,0,51,253,142,0,0,0,0,0,0,0,0,0,0,0,0,142,245,70,0,0,0,0,0,0,0,0,0,0,30,253,243,0,0,0,0,0,0,0,0,0,0,0,0,12,208,211,80,0,0,0,0,0,0,0,0,49,159,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,243,212,89,11,11,11,28,115,115,214,253,223,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,236,253,253,253,253,253,253,253,253,253,151,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,53,149,237,253,253,219,160,155,76,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,29,29,29,2,0,0,0,0,9,25,12,22,15,29,0,0,0,0,0,0,0,0,0,0,0,0,124,235,254,254,254,191,187,158,180,112,174,243,214,236,221,254,0,0,0,0,0,0,0,0,0,0,0,57,253,254,254,254,254,254,254,254,254,254,254,254,254,254,224,196,0,0,0,0,0,0,0,0,0,0,0,76,254,254,230,142,69,188,239,229,252,235,254,232,229,204,29,0,0,0,0,0,0,0,0,0,0,0,0,250,254,158,3,0,0,0,27,0,67,18,108,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,236,254,239,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,196,254,238,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,254,204,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,27,0,0,0,17,199,254,207,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,33,0,0,0,0,17,196,254,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,86,0,0,0,0,0,96,241,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,206,3,0,0,0,0,0,141,254,245,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,156,29,0,0,0,104,228,254,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,249,254,218,134,134,227,250,254,246,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,254,254,254,254,251,181,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,113,186,186,166,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,150,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,1,0,0,0,0,0,0,0,0,0,136,185,4,0,0,0,0,0,0,0,0,0,0,0,0,21,164,113,151,0,0,0,0,0,0,0,0,29,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,200,117,0,0,0,0,0,0,0,17,197,206,0,0,0,0,0,0,0,0,0,0,0,0,0,90,178,161,25,0,0,0,0,0,0,0,51,195,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,188,227,248,121,0,0,0,0,0,0,33,175,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,22,238,254,254,252,113,133,149,59,10,103,206,253,219,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,197,252,254,218,215,147,254,220,241,244,155,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,200,223,170,83,254,254,254,160,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,9,13,136,254,254,254,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,186,149,250,254,249,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,241,254,14,0,56,242,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,244,48,1,0,0,130,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,249,195,0,0,0,0,84,250,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,239,63,0,0,0,0,167,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,201,0,0,0,0,27,239,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,190,202,3,0,0,4,175,181,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,254,206,68,68,220,234,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,246,249,255,255,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,139,254,200,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,24,24,77,129,24,24,24,24,24,19,0,0,0,0,0,0,0,0,0,0,0,26,68,162,162,162,163,178,253,253,253,254,253,253,253,253,254,237,130,30,0,0,0,0,0,0,0,0,0,223,253,253,253,253,254,253,253,253,253,254,253,253,253,253,254,253,253,228,17,0,0,0,0,0,0,0,0,254,253,253,253,253,254,253,253,253,169,161,161,161,161,109,46,46,155,253,118,0,0,0,0,0,0,0,0,202,253,253,253,147,128,23,23,23,2,0,0,0,0,0,0,0,175,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,171,253,241,165,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,112,216,254,209,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,114,241,253,253,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,234,253,253,211,86,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,55,234,254,243,210,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,111,220,241,207,102,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,112,247,254,241,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,189,253,211,99,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,158,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,223,44,3,0,0,0,0,0,13,24,108,139,34,11,0,0,0,0,0,0,0,0,0,0,0,0,9,174,253,253,170,152,68,110,162,162,213,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,13,101,209,253,255,253,253,253,253,255,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,46,109,161,186,253,253,254,253,186,161,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,23,23,23,23,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,191,255,255,255,255,255,191,128,64,64,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,255,255,255,255,191,128,128,191,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,87,163,206,206,82,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,253,253,253,253,254,171,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,253,253,236,154,241,254,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,128,9,0,9,196,253,249,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,195,8,0,0,0,65,237,253,64,56,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,165,0,0,0,0,0,177,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,246,25,0,0,0,0,125,253,253,253,242,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,201,37,0,0,0,67,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,154,253,253,242,154,78,78,172,253,253,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,120,196,253,253,253,254,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,111,144,221,222,244,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,253,238,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,206,224,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,241,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,156,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,195,253,253,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,253,253,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,206,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,253,227,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,251,254,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,176,0,0,0,0,0,110,253,254,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,31,0,0,0,0,0,155,253,254,253,234,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,254,243,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,183,195,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,239,254,254,216,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,254,253,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,109,217,253,254,253,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,138,253,253,253,192,34,19,198,237,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,185,58,0,0,31,241,230,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,255,254,116,23,46,120,201,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,244,254,253,226,229,244,254,253,253,253,245,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,254,253,253,253,253,254,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,177,206,146,161,117,117,232,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,247,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,159,254,227,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,221,253,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,211,254,246,148,148,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,156,243,254,253,253,253,253,218,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,254,246,234,253,253,254,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,155,56,8,84,84,201,253,238,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,165,18,0,0,0,0,7,201,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,87,0,0,0,0,0,0,36,180,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,63,11,0,0,0,0,0,0,0,48,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,245,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,39,0,0,0,0,0,170,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,192,212,248,191,191,86,57,61,233,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,154,242,254,253,253,253,253,255,247,235,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,254,253,253,253,253,254,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,192,113,42,42,130,210,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,0,0,0,0,36,211,254,255,254,254,238,55,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,36,0,17,191,243,254,253,175,125,240,254,197,7,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,243,233,235,253,253,251,118,2,0,62,254,246,19,0,0,0,0,0,0,0,0,0,0,0,0,8,111,243,254,253,253,253,200,115,0,0,0,0,183,225,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,210,253,245,122,7,0,0,0,0,0,43,156,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,153,237,255,165,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,168,244,254,254,254,254,233,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,125,251,254,254,254,208,67,99,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,249,128,46,3,0,1,123,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,254,254,143,0,0,0,0,0,2,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,150,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,203,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,251,243,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,229,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,229,0,95,173,173,185,155,173,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,229,0,212,254,254,254,254,254,250,235,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,247,240,70,51,252,254,244,202,184,239,254,254,192,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,224,61,72,86,5,0,0,15,90,202,254,218,26,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,249,108,12,0,0,0,0,0,7,233,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,254,214,88,5,0,0,0,2,231,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,124,251,254,254,254,248,163,163,163,189,254,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,204,220,239,254,254,254,254,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,104,128,150,197,190,143,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,121,168,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,186,254,221,227,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,188,220,105,5,129,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,245,241,246,200,145,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,221,219,27,108,115,238,253,230,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,219,0,0,0,25,145,238,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,199,219,0,0,40,52,57,221,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,178,249,191,220,246,254,254,236,174,11,0,0,0,0,0,0,0,0,0,0,0,0,0,25,63,129,204,235,254,254,254,235,203,125,62,24,0,0,0,0,0,0,0,0,0,0,0,0,0,61,147,236,254,254,246,200,128,145,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,114,251,245,198,133,87,38,0,0,19,218,231,9,0,0,0,0,0,0,0,0,0,0,0,0,0,38,188,245,119,38,0,0,0,0,0,0,0,48,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,121,219,72,0,0,0,0,0,0,0,0,0,7,210,232,0,0,0,0,0,0,0,0,0,0,0,0,0,234,176,0,0,0,0,0,0,0,0,0,0,13,222,232,0,0,0,0,0,0,0,0,0,0,0,0,0,255,112,0,0,0,0,0,0,0,0,0,3,105,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,1,0,0,0,0,0,0,0,20,149,254,230,17,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,105,9,9,9,9,9,84,110,217,238,120,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,254,254,254,254,254,254,250,164,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,134,167,167,167,150,82,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,158,237,255,238,83,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,168,244,254,254,254,227,248,168,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,254,214,162,12,130,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,136,167,124,3,0,32,212,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,223,254,247,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,231,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,231,254,224,49,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,225,254,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,241,254,254,254,200,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,254,254,254,254,249,151,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,224,249,239,161,143,240,230,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,55,0,0,0,61,238,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,164,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,30,0,0,0,0,0,0,2,156,254,254,200,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,126,0,0,0,0,13,73,190,254,254,182,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,206,226,169,173,189,231,254,254,222,140,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,99,119,237,254,254,175,157,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,235,72,0,0,0,112,238,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,228,222,29,0,0,105,253,153,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,241,248,56,0,0,55,236,169,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,236,66,0,0,85,205,215,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,251,249,47,0,0,51,237,217,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,210,252,64,0,0,52,236,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,234,254,92,0,0,22,236,254,113,53,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,252,92,1,0,13,220,254,131,193,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,238,249,95,0,0,14,156,254,254,227,109,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,189,248,97,0,0,13,187,254,254,182,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,223,32,32,62,190,254,238,107,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,254,254,254,224,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,241,250,211,231,254,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,227,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,231,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,249,235,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,227,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,155,223,254,254,254,254,195,153,79,110,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,248,221,66,143,143,143,143,185,247,244,241,160,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,63,0,0,0,0,0,0,36,6,117,246,190,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,219,169,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,236,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,184,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,226,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,232,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,232,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,198,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,246,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,230,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,219,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,118,208,252,118,118,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,215,254,254,254,254,254,248,201,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,211,250,254,254,254,254,254,254,254,254,248,203,35,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,254,254,254,214,184,141,254,254,254,254,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,12,220,254,254,189,22,0,3,82,82,213,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,103,19,0,0,0,0,0,91,254,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,238,254,254,172,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,111,178,251,254,254,236,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,128,228,231,254,254,254,254,150,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,254,254,254,149,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,254,254,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,89,195,255,254,254,254,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,125,252,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,249,254,254,120,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,63,164,236,254,254,139,8,0,0,0,0,0,0,0,0,0,0,0,0,106,180,180,180,180,180,180,180,247,254,254,254,253,145,4,0,0,0,0,0,0,0,0,0,0,0,0,0,160,158,245,250,254,254,254,254,254,254,239,143,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,89,210,254,254,254,130,117,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,220,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,254,254,202,37,154,162,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,254,254,254,96,207,254,254,253,213,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,254,249,96,254,254,254,254,254,249,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,254,248,181,53,254,254,198,226,254,254,170,19,0,0,0,0,0,0,0,0,0,0,0,0,0,59,248,255,250,95,0,16,219,195,19,23,204,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,3,136,254,254,140,0,0,4,28,13,0,0,10,232,254,189,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,237,23,0,0,121,144,2,0,0,0,204,254,247,23,0,0,0,0,0,0,0,0,0,0,0,127,254,254,136,0,0,0,68,249,5,0,0,0,38,254,254,96,0,0,0,0,0,0,0,0,0,0,20,247,254,249,62,0,0,0,0,0,0,0,0,0,21,254,254,197,0,0,0,0,0,0,0,0,0,0,95,254,254,188,0,0,0,0,0,0,0,0,0,0,21,254,254,156,0,0,0,0,0,0,0,0,0,0,112,254,254,65,0,0,0,0,0,0,0,0,0,0,98,254,254,94,0,0,0,0,0,0,0,0,0,17,218,254,254,20,0,0,0,0,0,0,0,0,0,0,229,254,247,23,0,0,0,0,0,0,0,0,0,48,254,254,210,10,0,0,0,0,0,0,0,0,4,96,253,254,146,0,0,0,0,0,0,0,0,0,0,48,254,254,171,0,0,0,0,0,0,0,0,0,96,254,254,254,66,0,0,0,0,0,0,0,0,0,0,48,254,254,171,0,0,0,0,0,0,0,38,161,253,254,244,93,4,0,0,0,0,0,0,0,0,0,0,48,254,254,227,14,0,0,0,2,68,151,253,254,254,234,53,0,0,0,0,0,0,0,0,0,0,0,0,26,229,254,254,222,146,164,219,220,254,254,254,251,231,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,254,254,254,254,254,254,254,222,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,104,227,254,254,254,254,252,150,67,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,191,191,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,241,254,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,228,242,253,254,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,179,253,253,253,254,253,223,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,205,253,253,214,186,53,180,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,253,247,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,254,233,57,121,121,122,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,247,253,253,254,242,241,128,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,156,253,253,253,253,253,254,253,253,253,246,199,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,138,173,181,211,253,254,253,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,25,53,53,53,127,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,158,0,0,0,0,52,198,253,253,242,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,219,41,41,41,175,249,253,253,243,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,211,253,253,253,253,255,253,253,188,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,253,255,247,190,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,140,253,253,253,121,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,107,223,248,180,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,163,251,215,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,235,229,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,161,203,254,255,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,253,232,206,90,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,178,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,244,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,203,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,197,0,0,0,108,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,179,0,55,222,228,139,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,73,125,237,181,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,228,253,136,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,255,196,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,250,254,226,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,254,141,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,235,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,240,254,125,0,0,0,0,41,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,235,25,0,0,0,7,229,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,0,0,122,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,151,0,0,0,0,198,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,68,0,0,0,15,219,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,201,4,0,0,0,63,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,169,0,0,0,0,132,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,235,49,0,0,10,206,254,251,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,235,169,169,254,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,143,234,254,254,254,254,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,47,47,52,233,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,190,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,170,0,0,0,0,0,0,0,0,0,0,0,0,32,73,21,0,0,0,0,0,0,0,0,0,0,105,242,252,0,0,0,0,0,0,0,0,0,0,0,1,211,252,71,0,0,0,0,0,0,0,0,0,16,222,252,252,0,0,0,0,0,0,0,0,0,0,1,1,252,252,154,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,37,252,252,252,71,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,78,252,252,252,71,0,0,0,0,0,0,0,0,0,233,252,252,252,0,0,0,0,0,0,0,0,0,11,191,252,252,179,20,0,0,0,0,0,0,0,0,105,253,252,252,252,0,0,0,0,0,0,0,0,0,73,252,252,252,35,0,0,0,0,0,0,145,144,144,206,253,252,252,252,0,0,0,0,0,0,0,0,0,218,253,253,253,98,79,191,255,253,253,253,255,253,253,253,255,253,253,108,0,0,0,0,0,0,0,0,94,247,252,252,252,242,242,252,253,252,252,252,253,231,190,252,253,252,220,15,0,0,0,0,0,0,0,0,129,252,252,252,252,252,252,252,253,252,252,252,237,71,140,252,253,252,112,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,253,252,231,108,62,42,221,252,253,252,71,0,0,0,0,0,0,0,0,0,63,238,253,253,253,253,253,253,145,20,0,0,0,218,253,253,255,222,41,0,0,0,0,0,0,0,0,0,0,72,179,179,179,179,76,35,0,0,0,0,32,227,252,252,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,252,252,175,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,241,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,43,43,43,43,43,43,69,148,148,148,148,174,209,254,253,245,67,0,0,0,0,0,0,0,0,0,15,185,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,189,0,0,0,0,0,0,0,0,0,22,212,252,252,252,253,252,252,247,231,232,231,231,231,231,232,247,252,189,0,0,0,0,0,0,0,0,0,0,28,84,84,84,84,84,84,63,0,0,0,0,0,0,0,190,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,229,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,199,7,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,154,254,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,156,241,253,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,158,234,253,253,253,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,157,253,253,253,253,208,172,150,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,219,96,16,0,0,0,0,15,80,56,0,0,0,0,0,0,0,0,0,0,0,0,0,46,229,253,252,168,3,0,0,0,0,0,7,112,253,225,41,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,239,0,0,0,0,0,0,4,190,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,239,0,0,0,0,0,87,248,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,252,156,90,90,128,227,244,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,253,253,253,253,253,253,253,253,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,167,253,253,253,253,240,205,116,73,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,89,159,226,177,65,0,0,22,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,147,253,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,219,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,243,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,200,234,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,191,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,241,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,229,248,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,237,235,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,181,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,89,215,255,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,167,230,254,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,235,254,254,254,233,184,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,70,4,0,0,162,254,254,191,139,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,104,0,0,18,133,70,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,222,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,200,254,164,75,75,101,75,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,212,254,254,254,254,254,253,233,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,135,220,214,172,193,250,239,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,148,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,149,254,254,228,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,125,30,0,0,0,0,0,98,234,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,230,161,103,66,143,201,247,254,254,245,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,218,254,254,254,254,254,254,191,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,134,193,254,200,143,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,64,146,250,255,254,254,178,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,76,116,220,253,253,253,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,215,253,253,253,252,248,190,113,32,250,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,230,253,253,219,109,79,0,0,12,133,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,210,253,132,14,0,0,0,44,171,253,253,231,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,82,10,0,6,37,161,241,253,253,169,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,89,206,253,253,253,241,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,140,232,253,253,253,253,253,211,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,240,253,253,253,253,253,253,253,253,192,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,219,199,199,128,92,178,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,161,109,20,0,0,0,0,175,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,244,253,245,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,217,253,238,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,217,253,201,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,113,242,253,243,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,119,190,253,253,210,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,124,244,253,253,253,147,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,112,93,52,141,238,253,253,237,151,74,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,240,146,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,253,253,219,95,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,73,94,217,156,73,73,73,73,10,0,0,0,0,0,0,0,0,0,0,0,0,27,120,181,181,181,181,253,252,252,252,253,252,252,252,253,190,78,16,0,0,0,0,0,0,0,0,0,42,221,252,252,252,252,252,253,252,252,252,253,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,217,252,252,252,158,123,0,0,0,21,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,118,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,191,109,109,191,255,253,149,191,255,128,109,109,63,0,0,0,0,0,0,0,0,0,0,0,0,93,252,252,252,252,252,252,253,252,252,252,253,252,252,252,238,217,103,0,0,0,0,0,0,0,0,0,0,21,98,252,252,241,215,215,217,215,215,215,232,252,252,252,253,252,241,78,0,0,0,0,0,0,0,0,0,0,16,108,108,77,0,0,0,0,0,0,47,108,108,108,170,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,94,217,253,252,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,181,252,252,253,220,61,0,0,0,0,0,0,0,0,0,63,104,0,0,0,0,0,0,0,42,144,144,253,252,252,252,191,15,0,0,0,0,0,0,0,0,0,0,171,253,232,109,253,253,253,253,255,253,253,253,255,253,237,144,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,253,252,252,210,180,55,30,0,0,0,0,0,0,0,0,0,0,0,0,0,133,215,215,215,153,71,92,215,72,71,71,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,135,220,254,215,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,115,239,253,254,219,244,244,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,126,253,238,115,56,6,44,184,225,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,236,57,0,0,0,0,53,247,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,144,0,0,0,0,0,70,251,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,227,246,25,0,0,0,0,0,152,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,168,0,0,0,0,0,0,169,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,147,0,0,0,0,0,3,188,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,120,0,0,0,0,5,141,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,168,0,0,0,0,177,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,242,254,142,66,135,255,244,155,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,242,253,253,253,230,79,10,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,146,149,80,21,0,48,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,180,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,221,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,78,249,230,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,161,254,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,161,254,254,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,162,254,254,254,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,161,254,254,237,133,243,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,249,99,0,239,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,245,254,254,129,0,0,239,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,212,254,254,187,39,0,0,239,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,159,254,254,223,30,0,0,0,239,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,248,35,0,0,0,0,239,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,244,0,0,0,0,0,239,254,156,90,121,201,90,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,239,202,137,169,170,254,254,249,254,254,246,58,0,0,0,0,0,0,0,0,0,0,0,0,41,230,254,254,254,254,254,254,254,254,254,254,222,167,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,129,161,254,254,254,254,254,254,254,175,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,10,10,10,99,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,196,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,200,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,244,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,151,254,228,188,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,97,231,254,233,219,251,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,208,116,17,30,226,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,245,168,19,0,22,223,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,180,2,0,22,205,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,90,0,21,205,254,247,125,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,19,207,254,248,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,206,254,249,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,243,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,255,248,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,164,191,247,249,247,172,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,223,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,230,243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,206,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,149,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,88,200,254,254,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,72,37,66,143,235,254,254,247,88,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,246,247,254,254,254,228,122,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,228,254,254,203,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,119,165,230,255,176,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,166,248,254,254,254,254,254,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,111,243,254,254,248,204,204,204,252,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,161,254,254,254,206,50,0,0,53,250,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,201,254,254,222,91,7,0,0,114,236,254,254,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,254,247,82,0,0,113,136,235,254,254,254,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,251,53,0,0,0,210,254,254,254,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,219,0,0,0,13,222,254,254,254,254,194,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,244,147,147,147,229,254,254,254,254,194,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,144,254,254,254,254,254,254,254,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,79,133,221,202,164,190,254,254,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,208,254,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,212,254,254,153,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,254,200,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,145,253,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,218,254,254,254,135,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,27,200,254,254,245,168,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,188,54,102,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,182,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,250,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,228,254,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,250,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,206,254,225,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,255,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,254,254,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,222,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,228,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,225,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,243,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,210,254,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,191,211,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,219,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,174,253,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,176,244,252,203,87,45,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,244,252,252,95,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,24,233,255,239,146,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,186,252,252,165,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,197,252,227,79,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,232,253,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,88,53,255,253,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,155,160,0,201,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,252,227,184,253,252,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,252,253,193,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,221,137,137,23,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,191,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,184,246,253,247,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,252,253,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,238,252,252,253,218,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,194,252,252,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,166,252,252,252,252,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,252,243,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,203,252,252,250,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,253,253,255,253,204,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,248,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,211,252,252,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,171,53,25,53,232,252,252,241,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,248,186,54,180,245,252,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,252,252,252,252,253,252,252,252,252,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,205,252,252,252,252,252,253,252,252,252,252,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,207,252,252,252,252,253,252,252,252,206,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,119,132,252,252,253,126,189,119,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,233,96,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,170,253,251,251,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,251,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,253,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,248,251,253,243,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,221,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,188,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,251,251,253,244,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,244,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,152,253,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,138,0,0,0,114,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,226,56,0,57,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,56,0,0,168,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,253,255,84,0,0,29,197,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,83,0,0,197,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,226,56,0,57,254,253,254,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,168,0,0,168,253,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,254,253,254,253,254,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,251,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,254,253,254,253,254,196,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,139,138,84,196,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,237,203,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,54,208,254,254,207,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,254,254,233,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,254,254,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,254,254,149,160,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,157,212,86,11,1,2,113,247,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,228,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,172,192,198,37,0,0,0,0,0,0,0,0,0,0,0,14,176,214,214,109,5,9,80,0,0,36,9,156,225,48,101,25,0,0,0,0,0,0,0,0,0,0,0,36,254,254,254,254,233,234,251,123,0,203,234,254,252,236,71,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,254,249,243,243,243,241,55,104,254,254,255,252,68,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,188,57,5,0,0,0,115,182,107,161,107,87,0,0,0,0,0,0,0,0,0,0,0,0,0,30,239,254,69,0,0,0,0,34,79,118,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,238,188,8,2,66,86,233,115,96,223,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,179,239,208,203,254,254,254,59,65,116,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,203,193,254,254,199,254,203,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,213,31,130,135,117,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,154,213,157,195,106,64,0,0,0,0,0,0,0,0,0,0,0,51,56,160,192,192,192,192,192,192,192,232,253,253,253,253,253,243,192,119,0,0,0,0,0,0,0,0,99,247,253,253,253,253,253,253,253,253,253,253,253,253,253,242,227,248,133,156,0,0,0,0,0,0,0,0,254,253,253,253,253,245,239,239,252,246,243,224,103,103,103,69,25,86,0,0,0,0,0,0,0,0,0,0,183,253,253,253,253,180,64,0,111,57,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,174,253,253,253,253,250,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,68,164,224,253,253,253,230,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,55,184,214,253,240,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,191,218,240,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,246,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,187,241,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,240,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,104,163,241,251,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,220,222,253,253,253,253,237,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,200,253,253,253,253,203,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,82,141,75,75,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,201,125,34,34,34,34,34,34,34,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,253,254,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,253,254,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,242,253,243,10,10,10,11,10,212,253,166,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,242,0,0,0,0,0,210,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,234,155,0,0,0,0,24,225,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,11,0,0,0,0,67,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,237,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,253,158,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,255,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,251,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,228,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,139,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,159,254,253,248,204,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,122,241,253,254,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,253,253,253,254,201,85,143,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,255,254,254,248,181,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,254,253,193,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,243,145,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,186,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,126,28,0,0,0,0,0,90,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,235,146,128,69,16,0,97,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,254,222,199,222,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,254,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,190,254,254,254,255,254,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,109,241,253,254,253,253,253,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,191,228,253,253,179,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,54,54,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,203,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,229,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,255,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,184,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,198,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,158,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,203,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,143,22,0,0,29,125,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,45,0,31,216,253,229,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,253,216,25,0,123,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,48,0,0,75,253,253,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,38,0,0,116,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,106,0,0,196,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,177,15,0,196,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,246,253,253,217,209,243,253,253,222,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,253,253,219,119,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,132,188,188,237,253,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,253,45,0,0,92,253,253,253,246,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,45,0,0,59,253,253,225,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,144,14,0,0,18,204,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,219,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,223,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,172,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,205,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,228,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,219,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,223,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,200,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,140,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,143,175,201,254,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,237,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,255,254,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,255,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,172,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,200,255,239,130,151,255,254,224,191,130,30,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,248,253,253,253,251,241,244,244,241,251,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,123,235,235,133,0,25,30,0,128,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,233,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,239,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,253,200,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,148,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,200,253,235,40,0,0,0,0,0,0,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,88,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,199,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,176,253,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,245,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,128,249,254,254,213,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,156,253,253,253,250,253,243,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,128,54,196,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,54,8,0,56,170,238,219,160,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,246,253,194,76,31,32,187,253,253,246,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,245,253,253,239,239,253,253,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,253,253,185,107,186,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,3,0,214,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,159,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,171,253,253,253,255,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,73,73,197,217,237,253,252,252,252,253,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,16,78,232,252,253,252,252,231,217,215,195,71,72,71,71,31,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,252,252,252,252,144,174,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,241,97,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,220,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,189,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,231,252,252,180,73,73,73,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,252,252,252,253,231,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,108,252,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,144,255,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,206,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,212,253,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,93,73,73,217,247,252,252,253,148,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,252,252,252,252,246,215,72,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,252,252,252,210,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,164,219,137,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,112,254,254,254,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,254,254,254,207,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,254,254,254,254,254,254,254,203,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,249,254,213,254,254,254,177,155,253,254,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,252,68,122,254,172,37,0,95,254,254,203,23,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,254,187,0,2,11,3,0,0,1,81,211,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,11,0,0,0,0,0,0,0,0,101,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,187,4,0,0,0,0,0,0,0,0,48,254,171,0,0,0,0,0,0,0,0,0,0,0,0,38,235,254,120,0,0,0,0,0,0,0,0,0,76,254,143,0,0,0,0,0,0,0,0,0,0,0,0,54,254,227,20,0,0,0,0,0,0,0,0,10,193,254,53,0,0,0,0,0,0,0,0,0,0,0,0,99,254,165,0,0,0,0,0,0,0,0,0,130,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,172,254,165,0,0,0,0,0,0,0,0,6,196,254,142,5,0,0,0,0,0,0,0,0,0,0,0,0,172,254,165,0,0,0,0,0,0,0,0,134,255,208,2,0,0,0,0,0,0,0,0,0,0,0,0,21,220,254,165,0,0,0,0,0,0,0,14,250,251,128,0,0,0,0,0,0,0,0,0,0,0,0,0,30,239,254,182,6,0,0,0,0,0,45,201,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,238,254,60,0,0,0,0,87,184,248,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,232,202,135,84,166,242,254,254,206,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,243,254,254,254,254,254,254,110,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,76,202,254,227,100,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,215,191,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,199,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,5,166,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,147,211,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,242,249,130,41,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,115,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,95,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,220,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,217,249,134,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,175,255,189,9,151,125,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,122,254,211,27,185,254,254,165,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,204,170,219,191,2,17,254,254,246,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,190,254,254,192,22,0,180,254,254,157,126,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,140,247,247,226,28,0,0,107,214,196,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,247,222,42,0,0,0,44,76,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,240,75,0,0,0,64,117,230,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,254,191,129,161,106,243,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,254,254,203,175,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,35,198,243,158,37,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,115,255,212,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,47,203,253,253,253,250,130,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,253,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,251,253,253,253,253,253,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,253,253,253,249,214,225,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,201,253,253,253,253,145,0,70,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,253,128,5,0,4,174,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,230,68,6,0,0,0,151,253,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,224,253,253,142,0,0,0,0,0,16,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,128,6,0,0,0,0,0,2,128,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,14,247,253,253,14,0,0,0,0,0,0,0,106,250,245,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,14,0,0,0,0,0,0,0,0,216,249,71,0,0,0,0,0,0,0,0,0,0,0,0,146,253,242,100,2,0,0,0,0,0,0,0,0,216,253,240,40,0,0,0,0,0,0,0,0,0,0,0,146,253,214,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,22,195,253,214,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,47,253,253,224,62,25,55,0,0,0,0,17,165,216,248,251,126,7,0,0,0,0,0,0,0,0,0,0,17,185,253,253,253,197,242,162,162,162,162,187,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,116,219,253,253,253,253,253,253,253,253,253,217,199,68,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,99,183,253,253,253,253,145,99,99,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,52,0,0,0,0,0,11,158,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,190,0,0,0,0,0,90,254,229,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,141,254,181,0,0,0,0,26,230,247,90,170,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,246,8,0,0,0,0,124,254,197,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,49,205,254,124,0,0,0,0,46,237,241,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,254,166,12,0,0,0,22,177,254,110,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,199,254,193,31,0,0,0,0,98,248,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,178,254,233,60,18,18,49,106,45,244,250,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,153,254,223,57,197,254,254,254,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,254,254,254,187,132,79,163,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,254,254,241,151,0,0,0,0,195,254,208,181,12,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,254,172,49,0,0,0,3,101,254,210,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,215,120,2,0,0,0,0,52,254,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,10,0,0,0,0,0,10,223,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,243,216,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,246,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,242,231,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,63,169,185,242,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,95,201,206,163,183,214,115,55,226,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100,215,236,136,254,209,120,6,0,12,233,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,185,254,254,254,199,114,11,0,0,0,20,255,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,197,197,164,58,3,0,0,0,0,0,37,230,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,248,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,243,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,192,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,228,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,250,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,211,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,239,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,187,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,150,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,243,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,249,149,67,222,253,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,195,230,0,0,37,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,104,0,0,37,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,11,0,0,37,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,164,3,0,0,37,253,233,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,196,64,0,0,37,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,14,0,0,0,89,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,203,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,3,0,2,156,250,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,78,240,166,100,106,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,254,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,233,89,150,253,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,133,0,144,253,254,248,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,89,120,249,213,214,253,229,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,241,248,211,24,25,212,253,206,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,93,0,0,25,212,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,132,28,1,0,0,0,42,253,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,29,54,141,141,204,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,131,197,215,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,229,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,252,252,252,253,252,252,252,253,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,255,247,225,125,163,113,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,209,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,160,85,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,231,125,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,254,253,253,253,242,116,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,215,252,222,196,196,145,253,252,187,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,56,25,0,0,0,56,149,252,228,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,240,163,0,0,0,0,0,0,0,0,0,0,0,16,10,0,0,0,0,0,0,0,0,0,0,0,0,0,101,242,47,0,0,0,0,0,0,0,0,0,0,166,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,253,159,0,0,0,0,0,0,0,0,0,0,253,252,94,0,0,0,0,0,0,0,0,0,0,0,0,76,253,196,0,0,0,0,0,0,0,0,0,0,253,252,243,75,0,0,0,0,0,0,0,0,0,76,150,249,253,96,0,0,0,0,0,0,0,0,0,0,126,244,253,253,254,178,141,91,141,91,141,141,204,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,253,252,252,252,253,252,252,252,253,252,252,227,38,0,0,0,0,0,0,0,0,0,0,0,0,38,168,243,253,252,252,252,253,252,252,252,253,233,130,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,140,165,214,139,241,139,139,139,128,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,116,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,114,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,251,235,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,222,244,80,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,145,54,219,220,111,44,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,231,241,32,85,254,254,254,254,230,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,218,0,2,52,53,137,200,242,245,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,251,70,0,0,0,0,0,0,73,239,245,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,182,0,0,0,0,0,0,0,0,91,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,238,29,0,0,0,0,0,0,0,0,0,211,245,42,0,0,0,0,0,0,0,0,0,0,0,0,62,255,183,0,0,0,0,0,0,0,0,0,0,97,254,61,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,0,0,0,90,254,61,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,0,0,0,174,254,61,0,0,0,0,0,0,0,0,0,0,0,0,62,254,104,0,0,0,0,0,0,0,0,0,43,234,230,7,0,0,0,0,0,0,0,0,0,0,0,0,62,254,50,0,0,0,0,0,0,0,0,43,225,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,123,0,0,0,0,0,0,0,30,226,254,139,9,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,196,5,0,0,0,0,0,81,209,248,136,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,237,254,161,66,18,82,166,194,252,228,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,249,254,254,254,254,254,252,190,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,121,175,254,251,135,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,139,138,138,138,138,149,180,138,138,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,89,244,253,252,252,252,252,253,252,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,252,253,252,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,252,253,252,252,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,137,137,137,137,43,22,44,252,252,252,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,99,253,252,252,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,188,252,253,252,252,185,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,240,252,252,253,252,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,244,252,252,252,253,252,252,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,245,253,253,243,221,116,199,249,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,174,92,50,0,0,0,133,252,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,9,0,0,0,0,0,0,0,0,76,248,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,64,238,22,0,0,0,0,0,0,0,0,144,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,191,118,24,5,0,0,0,132,253,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,25,202,252,253,252,252,177,109,57,161,228,252,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,236,253,252,252,252,252,253,252,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,159,252,252,252,252,253,252,252,218,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,22,54,179,252,253,252,168,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,42,133,93,163,93,244,186,71,13,68,0,0,51,25,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,253,178,191,238,201,7,0,206,165,3,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,253,253,128,176,83,170,147,0,206,239,20,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,253,230,179,0,0,137,156,130,238,175,28,0,0,0,0,0,0,0,0,0,0,0,62,233,253,253,204,146,72,38,35,0,0,0,0,108,253,253,222,8,0,0,0,0,0,0,0,0,0,0,0,40,60,60,12,0,0,0,0,0,0,49,130,182,253,253,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,160,238,253,253,253,134,5,0,0,0,0,0,0,0,0,0,0,0,0,0,24,70,80,98,98,213,219,238,253,253,253,253,174,22,0,0,0,0,0,0,0,0,0,0,0,11,110,190,236,247,249,253,253,253,254,253,253,253,253,253,136,16,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,253,253,253,196,195,253,253,166,167,253,151,0,0,0,0,0,0,0,0,0,0,0,89,254,255,254,254,254,254,133,70,0,12,104,59,0,0,207,254,24,0,0,0,0,0,0,0,0,0,0,134,253,253,253,235,241,183,10,52,0,0,0,0,0,7,202,250,93,0,0,0,0,0,0,0,0,0,0,10,171,217,188,23,46,0,0,0,0,0,0,0,0,73,221,240,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,194,253,235,19,0,0,0,0,0,0,0,0,0,0,35,52,0,0,0,0,0,0,0,0,6,79,182,233,253,253,156,0,0,0,0,0,0,0,0,0,0,45,228,245,194,55,0,0,0,0,0,0,25,253,253,253,253,253,64,0,0,0,0,0,0,0,0,0,0,133,253,253,253,113,0,0,74,86,103,109,210,253,196,139,140,71,7,0,0,0,0,0,0,0,0,0,0,133,253,253,253,245,218,160,248,253,236,187,212,239,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,201,196,237,175,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,143,253,253,253,218,231,253,253,132,69,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,250,209,158,158,158,158,179,246,246,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,254,254,254,254,254,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,239,47,26,26,26,26,26,122,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,232,11,0,0,0,0,11,221,231,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,246,61,0,0,0,0,74,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,13,0,0,0,0,158,248,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,54,250,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,249,214,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,217,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,255,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,251,210,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,186,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,34,0,0,0,32,242,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,251,230,41,0,0,133,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,250,254,108,0,0,134,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,247,254,108,0,0,134,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,145,7,0,186,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,236,234,252,254,254,238,234,234,234,198,147,86,19,0,0,0,0,0,0,0,0,0,0,0,0,69,226,254,254,254,254,254,254,254,254,254,254,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,18,110,176,254,254,254,229,202,133,117,117,117,117,117,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,246,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,242,254,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,219,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,223,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,250,254,231,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,254,254,229,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,222,254,151,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,93,219,255,210,84,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,157,253,253,253,253,253,156,85,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,253,253,253,178,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,246,253,242,100,65,65,65,128,253,253,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,248,253,192,39,0,0,0,0,3,167,253,253,178,54,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,248,13,0,0,0,0,0,0,31,216,253,253,195,7,0,0,0,0,0,0,0,0,0,0,0,127,251,253,131,0,0,0,0,0,0,0,0,30,216,253,253,130,0,0,0,0,0,0,0,0,0,0,42,225,253,243,10,0,0,0,0,0,0,0,0,0,29,224,253,135,0,0,0,0,0,0,0,0,0,23,223,253,239,68,0,0,0,0,0,0,0,0,0,0,0,201,253,135,0,0,0,0,0,0,0,0,0,64,253,253,164,0,0,0,0,0,0,0,0,0,0,0,74,238,253,108,0,0,0,0,0,0,0,0,6,184,253,232,60,0,0,0,0,0,0,0,0,0,0,37,237,253,223,12,0,0,0,0,0,0,0,0,18,253,253,83,0,0,0,0,0,0,0,0,0,0,0,147,253,253,109,0,0,0,0,0,0,0,0,0,18,253,253,65,0,0,0,0,0,0,0,0,0,0,80,246,253,126,4,0,0,0,0,0,0,0,0,0,79,253,251,62,0,0,0,0,0,0,0,0,6,133,251,253,214,26,0,0,0,0,0,0,0,0,0,0,136,253,200,0,0,0,0,0,0,0,0,70,195,253,253,212,30,0,0,0,0,0,0,0,0,0,0,0,136,253,210,12,0,0,0,0,8,48,138,239,253,229,137,31,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,168,43,0,33,66,151,253,253,253,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,253,235,201,171,253,253,253,253,178,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,52,221,253,253,253,253,253,253,183,117,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,106,232,253,195,69,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,133,214,225,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,253,249,200,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,209,253,248,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,244,254,237,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,212,253,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,247,253,213,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,249,253,154,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,222,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,151,12,13,77,64,13,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,223,253,253,160,243,253,254,253,253,158,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,220,217,218,220,253,253,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,237,247,24,0,0,9,102,237,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,168,131,24,0,0,0,0,83,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,233,253,168,23,6,0,0,0,0,84,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,237,128,0,0,0,0,13,198,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,240,166,98,98,98,177,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,233,253,253,253,254,253,253,232,116,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,178,253,253,254,242,132,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,34,116,143,254,253,253,244,143,143,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,170,252,252,252,253,252,252,252,252,252,249,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,243,252,252,252,252,253,252,252,252,252,252,252,245,55,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,252,202,121,121,121,163,230,230,248,252,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,44,240,252,252,90,0,0,0,0,0,61,234,226,178,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,202,50,0,0,0,56,234,252,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,175,252,252,243,10,8,55,238,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,173,252,252,241,223,252,252,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,224,252,253,252,252,252,252,225,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,183,252,252,253,252,252,252,228,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,143,244,253,253,253,255,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,193,252,252,252,252,252,187,203,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,227,252,252,252,235,120,44,0,41,235,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,245,129,52,0,0,0,0,209,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,237,252,216,57,0,0,0,0,0,0,209,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,206,81,0,0,0,0,0,0,91,243,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,126,0,0,0,0,4,12,136,246,252,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,244,154,154,154,154,184,252,253,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,187,252,252,252,252,252,252,252,253,232,132,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,142,142,243,252,252,204,128,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,38,135,167,255,201,77,38,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,152,253,253,253,253,253,253,253,209,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,253,253,253,253,253,233,93,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,214,143,102,109,238,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,158,7,0,0,0,42,104,214,253,253,208,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,27,7,0,0,0,0,0,0,23,208,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,224,253,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,250,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,220,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,237,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,237,253,243,50,0,0,0,0,0,0,0,0,0,0,0,0,21,214,241,135,101,74,28,28,35,135,175,249,253,243,64,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,253,253,253,253,253,253,253,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,253,253,253,219,153,104,62,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,249,142,5,0,0,0,0,0,0,0,0,60,204,252,183,236,190,183,100,75,75,115,183,183,240,253,253,253,253,253,114,0,0,0,0,0,0,0,0,0,12,37,0,28,4,0,0,0,0,0,0,0,30,84,112,189,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,121,220,233,121,198,254,122,177,134,121,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,253,253,254,253,253,253,244,142,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,253,253,254,253,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,253,253,254,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,253,246,109,53,117,214,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,66,165,108,59,0,0,0,108,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,205,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,250,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,253,253,246,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,200,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,176,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,227,252,252,235,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,242,252,252,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,253,252,252,198,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,255,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,191,252,253,252,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,252,253,212,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,252,252,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,221,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,252,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,193,252,252,229,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,18,18,18,134,150,255,169,37,0,0,0,0,0,0,0,0,0,0,0,5,92,36,36,140,154,154,154,224,253,253,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,9,144,202,253,223,182,182,182,182,182,138,65,161,253,253,235,38,0,0,0,0,0,0,0,0,0,0,0,0,0,13,47,27,0,0,0,0,0,0,0,130,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,230,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,243,253,251,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,176,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,244,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,203,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,107,252,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,163,253,253,253,236,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,233,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,101,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,234,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,149,232,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,227,254,254,111,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,197,254,196,183,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,240,250,117,9,83,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,158,0,0,0,179,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,114,0,0,0,0,82,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,202,183,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,236,254,254,230,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,254,251,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,58,59,66,186,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,204,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,205,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,116,0,0,0,58,225,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,233,78,19,96,178,248,254,182,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,200,248,254,254,247,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,254,192,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,163,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,203,236,110,13,0,0,0,0,4,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,250,254,254,254,188,6,0,0,35,173,229,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,254,254,229,254,122,0,89,220,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,254,134,35,177,230,134,223,254,254,236,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,235,18,0,78,254,254,254,254,238,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,252,84,76,207,254,254,254,178,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,248,251,254,254,252,127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,245,254,254,254,254,246,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,254,186,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,246,254,254,254,213,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,244,254,254,254,254,213,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,195,254,254,254,210,254,255,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,140,13,117,254,248,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,249,13,0,1,180,254,206,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,147,0,0,0,103,248,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,147,0,0,0,0,196,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,238,254,225,39,0,42,94,238,254,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,229,202,235,254,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,167,254,254,254,254,254,254,254,110,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,123,194,254,254,227,135,36,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,67,67,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,181,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,227,253,253,253,228,198,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,188,253,253,253,253,253,253,213,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,183,253,253,194,112,112,174,253,253,199,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,253,253,208,27,0,0,105,247,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,253,253,253,27,0,0,0,0,120,250,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,12,185,253,253,253,157,11,0,0,0,0,0,245,253,253,0,0,0,0,0,0,0,0,0,0,0,0,16,186,253,253,228,36,14,0,0,0,0,0,0,105,253,253,0,0,0,0,0,0,0,0,0,0,4,95,183,253,253,253,154,0,0,0,0,0,0,0,0,245,253,253,0,0,0,0,0,0,0,0,0,0,129,253,253,253,199,93,14,0,0,0,0,0,0,0,114,250,253,253,0,0,0,0,0,0,0,0,0,20,206,253,253,222,143,0,0,0,0,0,0,0,8,123,245,253,253,224,0,0,0,0,0,0,0,0,105,181,253,253,194,27,0,0,0,0,0,0,0,70,131,253,253,253,202,38,0,0,0,0,0,0,0,0,254,253,253,253,112,0,0,0,0,0,0,0,70,225,253,253,253,215,43,0,0,0,0,0,0,0,0,0,254,253,253,196,29,4,48,48,48,48,48,216,243,253,253,231,205,19,0,0,0,0,0,0,0,0,0,0,254,253,253,253,174,124,253,253,253,253,253,253,253,253,231,78,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,179,74,60,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,253,253,253,253,253,253,246,196,77,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,130,130,130,130,130,130,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,229,253,255,253,253,153,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,216,252,252,252,253,252,252,252,244,144,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,252,252,253,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,252,252,178,28,28,78,253,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,226,225,225,175,0,0,0,0,141,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,114,113,113,13,13,194,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,178,253,254,253,253,253,254,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,179,252,252,252,253,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,19,172,246,253,196,80,56,65,215,252,252,253,252,252,228,89,0,0,0,0,0,0,0,0,0,0,0,26,231,252,252,178,9,0,101,229,252,252,252,190,165,252,252,213,0,0,0,0,0,0,0,0,0,0,0,141,253,253,128,4,54,229,253,254,234,137,63,0,0,185,253,254,146,0,0,0,0,0,0,0,0,0,0,141,252,214,116,179,252,252,252,184,28,0,0,0,0,28,209,253,196,0,0,0,0,0,0,0,0,0,0,141,252,252,252,253,252,186,118,0,0,0,0,0,0,0,25,168,81,0,0,0,0,0,0,0,0,0,0,91,252,252,252,190,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,104,229,253,255,253,216,141,141,66,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,179,252,252,252,253,252,252,252,253,252,187,169,57,19,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,252,252,253,252,252,252,253,252,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,252,252,202,28,28,28,78,140,139,139,139,28,9,0,0,0,0,0,0,0,0,0,0,0,0,147,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,235,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,228,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,133,253,252,224,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,139,228,252,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,84,38,226,254,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,28,0,38,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,25,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,51,0,0,151,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,226,0,60,241,254,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,244,119,234,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,252,214,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,223,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,233,45,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,226,253,253,151,17,166,202,228,185,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,253,141,209,253,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,245,253,253,253,253,253,253,212,234,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,253,253,253,241,174,22,169,253,246,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,233,253,253,253,253,241,159,0,0,169,253,248,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,242,92,0,0,31,226,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,119,65,0,0,0,130,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,201,17,0,0,20,121,224,253,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,219,43,20,121,227,253,253,250,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,253,253,253,253,253,253,253,251,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,253,253,253,248,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,170,253,253,253,253,155,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,170,169,169,169,108,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,123,246,253,252,252,252,253,215,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,28,28,28,28,28,203,252,243,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,85,38,0,0,0,0,19,85,210,206,81,0,0,0,0,0,0,0,0,0,0,0,0,89,113,176,225,246,252,238,200,76,0,63,144,252,202,63,0,0,0,0,0,0,0,0,0,0,0,79,216,253,253,251,225,187,113,179,253,253,253,255,222,113,13,0,0,0,0,0,0,0,0,0,0,0,0,141,252,233,196,125,0,0,0,54,252,252,252,253,234,131,7,0,0,0,0,0,0,0,0,0,0,0,0,229,252,196,85,86,85,123,197,229,233,168,168,216,252,252,203,38,0,0,0,0,0,0,0,0,0,0,0,153,252,252,252,253,252,252,252,128,22,0,0,16,128,252,252,238,125,0,0,0,0,0,0,0,0,0,0,0,76,113,113,114,38,0,0,0,0,0,0,0,0,38,213,242,253,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,168,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,85,167,255,254,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,115,218,254,254,254,230,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,144,219,254,254,218,117,56,121,254,227,76,48,4,0,0,0,0,0,0,0,0,0,0,0,0,25,94,230,254,235,196,86,31,70,154,205,170,120,232,254,76,0,0,0,0,0,0,0,0,0,0,0,32,238,254,254,116,20,0,0,118,172,89,3,128,254,254,221,18,0,0,0,0,0,0,0,0,0,0,7,176,254,213,32,1,0,0,0,0,65,147,235,254,254,180,47,0,0,0,0,0,0,0,0,0,0,0,9,189,254,205,117,85,85,95,230,246,253,254,254,254,204,17,0,0,0,0,0,0,0,0,0,0,0,0,0,35,237,252,254,254,254,252,243,241,254,254,254,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,90,141,64,57,34,101,254,254,206,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,192,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,246,254,224,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,247,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,220,254,241,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,248,254,250,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,225,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,156,254,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,253,173,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,248,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,241,254,254,119,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,167,238,84,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,172,152,152,173,213,152,71,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,252,253,252,253,252,223,162,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,224,162,163,203,254,233,254,253,234,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,102,0,0,0,50,71,253,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,213,252,253,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,253,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,253,252,253,212,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,234,253,254,253,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,192,253,252,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,31,10,0,0,0,41,52,132,254,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,233,212,203,203,123,243,253,252,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,253,254,253,254,253,254,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,111,233,232,253,252,192,111,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,114,254,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,148,211,246,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,180,253,254,244,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,121,246,253,253,134,83,253,253,217,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,226,151,29,32,206,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,223,144,0,0,123,253,253,239,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,253,245,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,247,255,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,254,242,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,220,254,213,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,95,248,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,121,214,253,253,232,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,253,253,253,253,208,0,0,0,0,0,0,0,40,49,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,253,253,208,0,0,0,0,15,75,162,133,144,0,0,0,0,0,0,0,0,0,0,0,32,212,253,253,253,253,253,232,134,0,0,88,191,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,205,248,253,253,241,239,248,253,253,171,7,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,240,190,28,197,243,253,254,253,253,232,164,17,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,182,73,0,0,0,80,104,105,104,104,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,33,33,36,116,149,170,197,175,11,0,0,0,0,0,0,0,0,0,0,0,0,0,31,52,124,165,205,233,254,254,254,238,213,175,130,79,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,254,244,132,75,41,41,41,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,33,211,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,251,128,0,0,0,0,0,0,8,75,75,75,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,227,17,72,156,188,220,247,246,239,171,171,198,237,246,145,30,0,0,0,0,0,0,0,0,0,0,9,218,215,241,250,150,83,83,54,0,0,0,0,0,0,0,186,175,0,0,0,0,0,0,0,0,0,2,120,252,197,113,33,0,0,0,0,0,0,0,0,0,10,113,244,157,0,0,0,0,0,0,0,0,9,120,254,178,0,0,0,0,0,0,0,0,0,0,0,64,208,208,52,0,0,0,0,0,0,0,0,0,165,254,235,13,0,0,0,0,0,0,0,0,14,97,181,212,81,0,0,0,0,0,0,0,0,0,0,0,255,254,189,0,0,0,0,0,0,0,2,74,205,235,107,24,0,0,0,0,0,0,0,0,0,0,0,0,254,245,45,0,0,0,0,0,0,43,162,219,135,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,107,0,0,0,0,0,0,0,38,86,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,170,227,167,173,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,249,251,254,206,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,237,250,254,224,17,6,225,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,246,192,108,16,0,0,110,199,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,203,0,0,0,0,0,10,55,48,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,217,98,0,0,0,0,0,0,11,5,129,163,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,245,35,0,0,0,0,0,0,0,0,219,250,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,160,26,0,0,0,0,0,0,0,0,219,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,5,0,0,0,0,0,0,3,76,244,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,173,49,0,0,0,0,0,183,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,199,245,136,52,107,167,191,214,153,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,142,205,193,254,255,126,79,17,230,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,33,72,192,48,1,0,75,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,246,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,231,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,225,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,126,143,180,126,215,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,218,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,254,254,254,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,176,254,254,218,218,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,254,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,247,254,254,254,254,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,172,172,116,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,195,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,250,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,90,140,84,59,249,254,254,130,2,0,0,0,0,0,101,91,0,0,0,0,0,0,0,0,0,16,177,254,254,254,254,254,254,254,245,48,0,0,0,0,0,3,228,254,0,0,0,0,0,0,0,0,0,189,254,254,227,254,254,254,254,254,80,0,0,0,0,0,0,96,254,254,0,0,0,0,0,0,0,0,123,252,254,174,144,254,254,254,254,254,194,70,18,15,26,54,137,246,255,116,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,223,219,235,254,254,254,201,38,0,0,0,0,0,0,0,0,81,246,254,254,254,254,240,143,158,251,254,254,254,254,254,254,253,126,10,0,0,0,0,0,0,0,0,0,0,25,100,125,125,92,23,0,0,27,107,125,214,221,157,125,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,198,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,170,114,141,170,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,57,0,0,0,29,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,226,29,0,0,0,0,0,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,29,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,170,0,0,0,0,0,0,57,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,0,0,0,0,0,0,0,226,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,141,0,0,0,0,0,0,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,0,0,57,29,198,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,0,0,86,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,226,86,114,170,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,198,114,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,206,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,243,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,226,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,194,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,130,13,0,0,0,0,0,0,124,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,249,253,69,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,229,253,253,69,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,255,241,101,0,0,0,0,0,0,0,208,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,241,69,0,0,0,0,0,0,0,0,207,253,210,9,0,0,0,0,0,0,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,38,245,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,47,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,185,0,0,0,0,0,0,0,45,136,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,11,198,222,89,9,0,0,9,47,80,212,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,245,253,215,207,208,216,253,253,254,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,169,253,253,254,253,253,151,69,236,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,251,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,202,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,138,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,125,228,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,120,254,255,254,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,151,253,253,254,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,221,253,242,146,254,253,149,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,101,234,254,236,113,127,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,204,254,254,210,50,41,229,254,152,70,70,70,87,161,69,0,0,0,0,0,0,0,0,0,9,55,138,245,253,248,139,38,64,190,253,254,253,253,253,254,253,253,245,0,0,0,0,0,0,0,0,15,166,253,253,254,253,249,207,237,253,253,244,171,54,46,46,46,63,137,171,0,0,0,0,0,0,0,0,195,253,253,253,254,202,160,128,94,245,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,241,184,151,68,0,0,26,153,254,222,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,19,0,0,0,0,5,122,254,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,247,171,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,224,253,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,223,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,118,160,255,166,124,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,167,210,254,253,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,233,253,253,254,198,188,246,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,225,254,254,235,72,6,34,238,254,143,121,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,254,239,35,0,0,22,126,253,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,193,253,242,62,0,0,32,157,241,253,254,243,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,196,19,86,147,243,253,254,227,169,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,149,253,248,242,253,254,253,227,204,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,254,231,153,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,152,252,253,254,253,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,253,253,252,254,253,190,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,254,254,176,57,193,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,224,254,249,98,11,0,95,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,248,91,0,0,0,123,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,194,0,0,0,16,178,254,251,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,241,32,0,0,60,236,253,220,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,241,252,175,18,0,193,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,170,124,250,254,236,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,216,254,254,254,254,216,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,222,253,253,143,54,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,57,139,202,255,255,222,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,250,218,175,105,104,191,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,31,0,0,0,0,42,228,191,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,251,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,181,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,241,254,254,250,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,250,208,47,25,211,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,143,24,0,0,102,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,100,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,236,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,249,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,191,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,155,231,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,250,161,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,200,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,86,138,113,175,249,212,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,207,182,182,182,122,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,81,164,176,183,254,188,128,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,242,215,214,224,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,123,39,27,0,0,9,189,241,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,55,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,182,248,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,145,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,170,254,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,255,254,183,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,157,132,228,254,171,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,130,242,215,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,215,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,37,231,175,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,146,3,0,0,0,0,7,183,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,245,162,46,0,0,40,184,254,187,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,245,254,216,215,236,254,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,145,182,254,236,104,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,253,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,200,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,162,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,152,254,253,92,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,253,142,102,234,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,212,0,0,51,192,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,151,0,0,0,41,132,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,41,233,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,172,0,0,0,102,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,102,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,21,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,203,20,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,253,214,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,253,252,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,123,243,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,167,253,253,186,110,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,163,252,252,252,252,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,244,153,67,44,128,252,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,2,132,252,233,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,207,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,189,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,186,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,67,171,252,253,123,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,137,249,252,252,252,253,252,173,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,121,252,179,125,224,252,178,197,249,251,218,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,170,8,117,252,252,39,0,116,226,252,145,5,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,209,12,43,188,252,214,0,0,0,46,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,97,4,223,252,215,26,0,0,0,2,118,250,131,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,188,188,252,206,69,0,0,0,0,0,0,198,198,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,252,215,69,0,0,0,0,0,0,0,164,249,73,0,0,0,0,0,0,0,0,0,0,0,0,13,195,228,104,17,0,0,0,0,0,0,0,0,12,128,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,108,180,148,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,252,210,245,140,99,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,170,69,6,69,154,252,77,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,235,44,0,0,0,47,252,160,95,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,243,60,0,0,0,0,26,221,108,116,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,53,0,0,0,0,0,0,7,212,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,0,0,0,0,0,0,0,70,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,0,0,0,0,0,0,0,70,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,43,0,0,0,0,0,17,188,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,231,42,0,0,0,64,193,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,232,222,253,253,231,234,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,113,174,92,92,0,17,209,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,242,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,99,174,186,255,255,255,172,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,97,230,254,236,165,148,195,153,245,228,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,203,81,15,0,0,0,0,38,54,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,248,240,20,0,0,0,0,0,0,0,10,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,244,161,0,0,0,0,0,16,187,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,225,170,3,0,0,0,39,222,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,247,167,60,85,188,250,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,243,253,237,238,186,252,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,60,0,0,49,247,221,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,249,237,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,184,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,221,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,232,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,255,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,241,80,0,0,0,0,5,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,182,0,0,0,0,5,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,243,254,138,0,0,0,0,5,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,94,0,0,0,0,5,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,90,0,0,0,0,36,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,4,0,0,0,0,66,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,200,2,0,0,0,37,226,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,169,0,34,74,190,244,254,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,213,222,241,254,254,254,254,254,195,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,254,254,217,111,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,181,206,146,146,100,10,18,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,204,225,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,56,56,153,235,254,254,254,245,154,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,79,161,224,253,253,244,204,247,243,246,250,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,206,133,89,2,0,36,0,25,54,205,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,103,10,0,0,0,0,0,0,0,30,244,237,34,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,162,75,5,0,0,0,0,0,78,213,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,124,124,7,0,0,0,0,116,246,251,161,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,243,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,8,162,248,235,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,194,94,0,0,0,203,253,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,207,253,143,66,226,253,172,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,242,253,253,212,90,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,240,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,226,253,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,246,100,247,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,109,0,184,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,238,79,0,184,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,115,23,236,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,203,251,206,253,215,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,222,253,220,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,94,142,198,198,198,198,198,118,104,105,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,254,254,254,254,254,254,254,254,219,141,6,0,0,0,0,0,0,0,0,0,0,0,0,0,130,192,113,50,18,18,18,18,99,113,137,231,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,186,254,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,164,254,247,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,165,254,245,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,172,254,247,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,219,161,174,254,254,219,177,160,105,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,246,254,254,254,254,234,216,216,223,254,254,254,174,10,0,0,0,0,0,0,0,0,0,0,0,0,0,12,216,244,163,80,56,27,0,0,11,56,88,211,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,19,19,19,19,19,19,19,104,223,254,234,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,210,254,255,254,254,254,254,254,254,235,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,9,69,103,107,134,103,103,72,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,67,161,244,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,229,254,254,220,245,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,231,254,176,116,17,194,209,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,235,22,0,0,167,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,222,30,0,0,0,198,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,121,0,0,0,81,243,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,103,0,0,23,235,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,125,7,92,248,254,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,245,221,254,254,197,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,163,254,254,254,170,80,254,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,95,60,0,38,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,217,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,223,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,244,122,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,0,0,0,84,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,169,0,0,0,202,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,229,7,0,32,255,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,254,168,57,200,254,245,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,254,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,180,243,159,66,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,161,246,154,252,255,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,223,254,254,206,127,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,125,240,254,235,125,4,20,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,180,254,254,202,34,0,0,197,254,211,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,193,254,254,173,23,0,0,131,253,242,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,199,254,254,121,24,24,0,131,253,249,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,249,248,249,195,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,254,254,254,254,254,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,144,144,160,254,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,173,254,234,247,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,222,38,214,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,250,57,24,237,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,248,254,112,0,116,254,213,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,232,254,141,1,10,220,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,218,28,0,119,254,250,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,91,0,59,239,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,20,57,215,254,220,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,195,241,254,229,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,156,230,171,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,242,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,242,253,252,237,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,251,253,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,252,252,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,212,253,252,252,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,170,252,253,252,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,245,252,252,253,252,217,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,255,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,225,252,252,252,253,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,216,216,175,253,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,252,252,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,113,249,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,170,216,252,252,253,245,162,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,241,252,252,252,252,249,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,252,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,252,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,230,206,80,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,105,105,184,255,254,254,194,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,230,253,253,253,253,253,253,254,243,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,245,253,251,238,238,238,238,254,253,239,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,133,118,0,0,0,0,183,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,205,254,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,253,255,143,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,236,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,149,247,253,253,62,0,0,0,0,0,0,0,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,255,254,105,0,0,0,0,0,0,56,158,147,0,0,0,0,0,0,0,0,0,0,0,0,0,98,240,253,232,166,18,0,0,0,0,63,209,233,143,11,0,0,0,0,0,0,0,0,0,0,0,10,87,243,253,245,153,0,0,0,0,10,87,191,251,158,5,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,239,63,0,0,0,0,100,206,253,217,118,0,0,0,0,0,0,0,0,0,0,0,0,0,18,191,253,253,179,0,0,14,75,226,248,249,178,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,209,52,30,84,193,253,255,228,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,233,253,253,253,253,253,253,253,253,120,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,221,163,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,221,128,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,139,155,104,104,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,139,253,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,247,253,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,140,243,252,253,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,174,252,252,252,253,252,252,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,173,252,252,252,252,253,246,174,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,116,252,252,252,252,252,250,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,252,252,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,201,252,252,252,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,252,252,252,102,1,0,0,68,131,229,229,229,183,10,0,0,0,0,0,0,0,0,0,0,12,202,252,252,252,252,148,12,0,64,132,248,252,252,252,252,252,190,6,0,0,0,0,0,0,0,0,0,31,253,253,253,253,168,0,64,190,255,253,253,253,253,253,253,253,253,132,0,0,0,0,0,0,0,0,7,206,252,252,252,245,103,128,242,252,253,252,252,252,252,252,252,252,252,121,0,0,0,0,0,0,0,0,30,252,252,252,252,190,166,252,252,252,253,252,252,252,252,252,252,252,167,5,0,0,0,0,0,0,0,0,132,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,164,8,0,0,0,0,0,0,0,0,0,132,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,191,10,0,0,0,0,0,0,0,0,0,0,132,252,252,252,252,252,252,252,252,252,253,252,252,252,252,162,40,0,0,0,0,0,0,0,0,0,0,0,93,252,252,252,252,252,252,252,252,252,253,252,252,252,191,40,0,0,0,0,0,0,0,0,0,0,0,0,2,47,216,252,252,252,252,252,252,252,253,252,192,75,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,252,252,252,252,153,195,138,23,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,115,252,217,34,11,1,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,67,67,143,160,216,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,38,108,157,226,237,254,254,254,254,254,225,0,0,0,0,0,0,0,0,0,0,0,1,10,63,104,170,210,254,254,254,254,246,216,150,150,119,56,50,0,0,0,0,0,0,0,0,0,0,117,173,254,254,254,254,254,254,197,179,95,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,194,226,254,254,254,238,185,32,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,109,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,248,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,219,151,151,151,151,151,78,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,254,254,254,254,254,254,254,243,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,159,159,159,79,66,66,115,198,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,250,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,2,0,0,0,0,0,0,0,0,104,254,203,4,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,47,0,0,0,0,0,0,0,0,48,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,2,185,254,47,0,0,0,0,0,0,0,0,134,254,206,4,0,0,0,0,0,0,0,0,0,0,0,0,10,254,208,9,0,0,0,0,0,0,1,111,233,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,177,179,113,3,0,0,0,0,108,254,254,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,4,204,254,254,254,133,57,57,57,140,231,254,204,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,224,254,254,254,254,254,255,249,225,134,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,73,159,180,254,183,101,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,64,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,128,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,64,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,113,113,113,191,255,253,253,237,113,0,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,252,252,252,252,253,252,252,252,252,226,249,231,75,0,0,0,0,0,0,0,0,0,0,0,0,132,227,253,252,252,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,230,223,223,225,223,230,252,252,253,252,252,99,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,204,25,0,0,0,0,25,128,252,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,170,253,255,90,0,0,0,0,0,0,29,253,255,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,195,19,0,0,86,85,85,181,252,253,252,233,71,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,209,197,197,253,252,252,252,252,253,186,43,0,0,0,0,0,0,0,0,0,0,0,0,0,72,239,253,252,252,252,252,253,252,252,249,239,162,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,252,252,253,252,252,145,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,255,253,253,253,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,181,252,253,252,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,56,55,55,187,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,236,0,0,0,169,252,253,177,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,236,50,0,0,0,91,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,162,0,0,0,0,0,141,255,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,139,38,0,0,0,57,178,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,221,198,150,166,234,252,253,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,252,252,253,252,252,252,252,253,179,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,205,252,253,252,252,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,210,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,199,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,127,154,13,31,158,252,253,122,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,225,252,253,217,252,252,252,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,252,252,253,252,252,252,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,166,253,253,243,124,18,27,233,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,199,253,252,210,82,0,0,64,247,231,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,202,252,250,196,63,0,0,0,182,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,115,0,0,0,0,29,232,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,86,42,0,0,0,0,0,175,252,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,130,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,171,252,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,252,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,199,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,252,221,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,226,190,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,137,255,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,107,190,243,253,254,221,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,102,241,253,221,128,194,243,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,222,253,242,182,42,132,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,243,253,124,26,0,133,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,217,71,0,21,209,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,62,0,40,209,253,116,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,222,95,217,254,116,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,246,87,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,243,238,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,240,41,96,253,158,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,69,243,73,0,3,191,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,71,0,0,0,181,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,220,0,0,0,0,181,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,242,26,0,0,0,103,254,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,182,0,0,0,106,249,214,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,67,0,37,205,248,185,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,171,173,254,242,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,207,253,253,163,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,97,134,9,0,0,0,0,103,254,163,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,253,254,91,0,0,0,28,232,253,253,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,233,0,0,0,59,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,253,254,248,60,0,0,5,217,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,253,254,233,0,0,0,46,244,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,255,174,0,0,0,59,254,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,143,0,0,0,104,253,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,239,79,79,116,224,253,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,253,253,253,253,254,253,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,253,254,253,253,253,253,254,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,254,254,254,254,255,249,236,254,254,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,39,107,135,99,114,36,93,253,253,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,243,253,254,220,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,254,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,238,253,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,203,254,254,152,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,251,253,219,220,253,234,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,248,113,13,13,117,253,236,24,157,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,139,0,0,0,13,152,253,254,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,56,0,0,0,0,24,254,254,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,254,73,0,0,0,43,182,253,254,253,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,211,116,116,141,232,253,244,163,251,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,220,253,253,253,254,253,168,44,0,230,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,142,184,184,93,42,0,0,0,231,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,236,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,174,254,220,133,133,82,13,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,245,253,253,253,253,253,253,249,145,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,188,96,136,217,217,252,254,253,240,157,128,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,148,205,212,253,253,194,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,164,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,233,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,255,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,171,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,189,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,228,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,224,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,167,254,179,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,59,59,14,37,59,59,149,156,156,194,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,217,253,253,223,239,253,253,253,253,254,245,247,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,253,253,254,253,253,210,174,78,48,54,30,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,253,253,253,253,214,206,49,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,239,254,253,185,140,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,199,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,212,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,196,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,241,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,69,220,234,254,253,253,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,155,230,230,254,207,126,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,221,254,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,245,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,255,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,222,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,210,220,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,96,234,253,255,253,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,251,251,251,253,251,251,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,221,251,251,251,253,251,251,220,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,196,31,31,58,251,251,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,228,59,0,12,173,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,229,59,0,0,0,223,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,62,47,0,0,0,0,201,251,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,64,202,221,223,221,221,248,251,253,229,142,64,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,253,251,251,251,251,253,251,251,251,193,100,20,79,0,0,0,0,0,0,0,0,0,0,96,253,253,253,253,255,253,253,253,253,255,253,253,253,253,255,253,253,114,96,0,0,0,0,0,0,0,0,214,251,251,251,251,253,251,251,204,62,122,220,220,220,240,253,247,220,248,251,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,188,94,0,0,0,0,0,79,126,189,0,111,126,0,0,0,0,0,0,0,0,91,188,188,244,211,189,69,15,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,239,121,121,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,252,252,252,247,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,252,253,185,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,227,252,252,252,253,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,253,252,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,252,214,66,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,106,0,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,107,27,253,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,224,252,252,196,252,253,252,252,218,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,252,252,252,253,252,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,253,255,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,118,224,252,252,252,252,146,190,252,248,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,190,26,0,68,242,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,243,72,0,0,0,184,252,206,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,225,0,0,0,0,94,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,245,79,0,0,0,25,223,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,239,252,199,41,0,0,65,240,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,27,27,180,252,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,120,239,252,253,252,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,119,253,252,252,139,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,9,89,172,254,253,159,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,83,208,253,253,254,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,253,244,128,69,69,119,253,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,185,134,17,0,0,0,24,254,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,166,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,174,253,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,184,184,184,229,253,168,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,254,254,254,254,254,220,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,254,244,206,173,237,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,46,38,0,0,55,234,240,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,224,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,127,93,25,0,0,0,34,170,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,254,254,254,119,0,41,195,254,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,119,35,203,248,197,241,253,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,220,253,254,253,242,128,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,211,253,219,161,77,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,73,73,73,73,73,202,255,149,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,144,190,251,253,251,251,251,251,253,251,138,0,0,0,0,0,0,0,0,0,0,0,21,192,217,217,218,236,251,251,251,253,251,251,251,251,253,251,215,0,0,0,0,0,0,0,0,0,0,0,83,236,251,251,253,251,251,251,251,253,251,157,142,220,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,251,251,251,122,72,71,10,0,180,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,202,255,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,129,251,253,230,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,201,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,246,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,97,173,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,77,145,230,167,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,192,242,180,241,242,253,254,254,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,254,254,254,254,254,216,172,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,193,129,129,129,129,55,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,247,44,0,0,0,0,5,79,66,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,67,0,0,20,102,213,254,254,173,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,182,72,160,246,254,254,224,235,254,172,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,242,254,254,254,254,224,112,10,14,185,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,160,26,0,0,0,10,200,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,44,44,44,3,0,0,0,0,0,157,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,240,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,17,0,0,0,0,0,22,218,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,245,200,2,0,0,5,110,207,254,220,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,119,117,195,212,254,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,195,254,254,254,254,254,254,243,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,195,254,202,196,165,96,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,128,204,253,253,253,255,253,253,253,242,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,131,234,252,253,252,252,252,253,252,252,252,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,253,252,186,168,106,130,196,252,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,151,78,28,6,0,0,26,210,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,0,0,0,0,0,0,70,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,225,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,229,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,252,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,101,252,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,214,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,241,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,253,254,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,209,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,234,252,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,252,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,178,253,254,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,102,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,118,159,159,175,215,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,86,208,254,254,254,254,254,254,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,254,254,254,192,163,163,135,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,254,254,203,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,247,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,254,227,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,195,254,250,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,120,15,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,254,221,225,202,82,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,204,254,254,254,254,254,254,210,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,19,99,115,206,230,254,254,247,172,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,240,254,254,212,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,255,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,0,1,5,24,102,102,154,243,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,246,164,164,171,254,254,254,254,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,254,254,254,254,249,217,61,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,158,158,215,174,158,158,158,93,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,29,154,253,253,253,255,178,141,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,123,252,253,252,252,252,253,252,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,252,253,196,168,168,178,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,252,252,202,78,9,0,0,128,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,255,247,100,0,0,0,0,13,254,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,252,247,103,0,0,0,0,19,144,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,100,0,0,0,10,110,215,252,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,214,113,163,113,229,252,252,252,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,235,253,254,253,253,253,239,244,253,253,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,133,197,196,196,145,38,169,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,202,0,0,0,0,0,151,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,78,0,0,0,0,29,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,253,252,196,9,0,0,0,0,29,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,168,0,0,0,0,0,7,130,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,68,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,135,155,160,255,118,34,109,155,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,66,186,235,253,254,253,253,254,236,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,229,253,254,253,253,254,253,253,254,253,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,10,149,250,254,254,238,174,95,134,139,247,254,254,251,124,2,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,228,124,19,0,0,0,5,194,254,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,118,0,0,0,0,19,161,253,254,244,167,26,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,69,0,0,0,4,228,253,253,212,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,69,0,0,44,181,254,253,160,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,177,6,36,228,254,254,205,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,195,228,253,253,218,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,252,253,253,253,254,253,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,238,254,254,254,198,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,45,240,253,253,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,238,254,251,123,182,254,248,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,228,254,253,122,0,12,212,253,250,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,214,16,35,51,226,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,205,188,254,254,254,254,250,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,238,254,254,254,254,254,254,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,62,222,253,181,153,117,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,102,168,184,255,254,243,100,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,244,254,254,254,254,254,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,245,254,254,254,254,254,254,254,254,244,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,254,240,244,254,254,254,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,186,43,161,254,254,254,254,238,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,218,254,254,242,251,254,254,245,143,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,249,254,254,254,254,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,109,254,254,254,254,250,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,254,254,254,250,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,250,254,254,100,65,216,239,241,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,214,7,0,6,141,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,229,79,0,0,0,6,167,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,162,0,0,0,0,0,41,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,116,0,0,0,0,0,0,194,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,124,0,0,0,0,0,26,219,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,223,14,0,0,0,54,221,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,178,56,85,112,240,254,204,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,254,254,254,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,254,171,77,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,82,154,239,183,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,249,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,101,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,250,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,249,242,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,238,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,132,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,239,18,0,0,0,0,0,9,132,148,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,219,254,123,0,0,0,0,0,16,222,254,254,250,73,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,195,12,0,0,0,0,11,226,254,147,21,223,53,0,0,0,0,0,0,0,0,0,0,0,0,1,199,254,68,0,0,0,0,41,204,240,90,0,50,255,24,0,0,0,0,0,0,0,0,0,0,0,0,25,254,251,38,0,0,0,123,254,237,19,0,0,55,213,7,0,0,0,0,0,0,0,0,0,0,0,0,25,254,213,0,0,0,98,252,240,40,0,0,18,209,161,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,231,19,0,9,240,254,90,0,0,0,79,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,227,15,0,132,254,147,0,0,0,43,213,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,12,224,254,57,12,221,239,20,0,4,119,245,200,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,179,136,254,109,0,42,200,254,228,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,204,254,246,254,188,227,247,249,120,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,167,244,254,254,230,151,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,185,153,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,118,121,254,254,255,254,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,145,234,237,253,253,253,253,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,52,84,213,231,253,253,253,253,253,253,253,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,146,234,253,253,253,253,253,243,198,198,198,220,253,253,253,158,0,0,0,0,0,0,0,0,0,0,14,150,234,253,253,253,219,219,107,66,0,0,17,198,253,253,248,127,0,0,0,0,0,0,0,0,0,0,178,253,253,253,245,103,3,0,0,0,0,12,201,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,246,130,3,0,0,0,0,144,253,253,253,221,37,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,188,111,21,0,87,251,253,253,217,34,0,0,0,0,0,0,0,0,0,0,0,0,10,68,232,253,253,253,253,253,232,201,196,253,253,168,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,47,133,253,253,253,253,253,253,253,219,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,68,223,253,253,253,253,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,28,200,253,253,253,253,253,143,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,253,248,251,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,201,253,253,253,152,35,98,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,205,253,253,253,113,3,0,28,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,194,253,253,253,113,4,0,0,73,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,253,253,182,3,0,17,89,234,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,253,253,253,180,179,199,253,253,252,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,237,253,253,253,253,253,253,249,232,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,209,253,253,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,235,210,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,254,250,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,149,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,199,254,254,234,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,147,254,254,245,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,243,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,241,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,192,254,254,98,45,57,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,156,254,254,254,203,240,254,231,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,254,254,254,254,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,254,254,254,254,254,254,234,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,237,254,254,197,82,143,113,199,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,213,13,0,0,0,14,219,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,204,0,0,0,0,0,212,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,155,0,0,0,0,32,229,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,132,0,0,81,143,238,254,215,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,251,237,237,250,254,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,211,254,254,254,254,254,254,254,114,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,255,254,254,221,130,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,214,255,187,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,198,253,253,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,179,253,253,253,218,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,192,232,253,253,253,208,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,168,253,253,253,253,253,253,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,186,253,253,253,253,253,253,253,219,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,240,253,253,253,250,123,247,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,250,253,253,253,166,6,68,247,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,174,253,253,229,137,10,0,44,170,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,73,0,0,0,91,250,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,11,141,189,253,193,73,13,0,0,0,68,247,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,181,10,0,0,0,0,14,242,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,3,194,253,253,250,65,0,0,0,0,8,197,253,253,251,73,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,123,0,0,0,0,14,197,253,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,40,223,253,239,142,7,0,0,0,20,194,253,253,253,219,32,0,0,0,0,0,0,0,0,0,0,0,0,66,240,253,230,34,0,0,0,60,226,253,253,253,163,23,0,0,0,0,0,0,0,0,0,0,0,0,0,77,245,253,234,84,63,63,185,214,253,253,251,125,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,253,253,253,253,253,226,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,253,253,253,253,253,248,206,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,145,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,105,105,106,105,105,105,105,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,225,253,253,254,253,253,253,253,248,130,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,253,254,253,253,253,253,253,253,222,47,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,253,253,232,133,254,253,253,253,253,253,253,253,229,49,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,253,208,0,91,178,178,178,90,187,253,253,253,147,0,0,0,0,0,0,0,0,0,0,2,102,245,253,237,82,61,0,0,0,0,0,0,9,169,253,253,253,0,0,0,0,0,0,0,0,0,0,95,253,253,237,56,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,22,196,253,253,170,0,0,0,0,0,0,0,0,0,0,8,240,253,253,0,0,0,0,0,0,0,0,19,183,253,253,240,61,0,0,0,0,0,0,0,0,0,0,24,242,253,253,0,0,0,0,0,0,0,0,105,253,253,253,90,0,0,0,0,0,0,0,0,0,0,0,134,253,253,164,0,0,0,0,0,0,0,0,167,254,254,254,29,0,0,0,0,0,0,0,0,0,0,93,254,255,236,62,0,0,0,0,0,0,0,0,254,253,253,154,5,0,0,0,0,0,0,0,0,0,98,240,253,253,85,0,0,0,0,0,0,0,0,0,254,253,253,133,0,0,0,0,0,0,0,0,19,164,243,253,245,185,21,0,0,0,0,0,0,0,0,0,254,253,253,133,0,0,0,0,0,0,0,100,206,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,210,253,253,169,9,0,0,27,75,163,226,248,253,253,231,72,14,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,188,179,179,206,253,253,254,253,253,239,69,0,0,0,0,0,0,0,0,0,0,0,0,0,50,230,253,253,253,253,253,253,253,253,254,253,165,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,222,253,253,253,253,253,253,200,103,14,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,129,208,208,208,208,94,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,211,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,168,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,201,254,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,249,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,169,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,254,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,207,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,255,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,118,228,181,248,252,253,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,253,253,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,251,253,253,253,253,253,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,253,253,253,253,253,253,233,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,253,253,220,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,253,203,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,227,253,253,253,253,253,253,253,203,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,242,253,196,181,235,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,58,12,0,44,151,233,253,246,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,234,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,145,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,253,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,156,114,27,27,60,179,253,253,253,250,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,253,253,253,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,253,251,220,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,123,123,163,186,219,123,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,203,236,137,46,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,239,254,254,254,217,47,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,190,226,254,254,254,254,254,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,249,254,204,146,192,254,80,100,253,249,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,214,254,199,13,0,73,254,41,0,34,210,227,80,0,0,0,0,0,0,0,0,0,0,0,0,0,2,187,254,199,11,0,0,59,251,40,0,0,91,254,252,54,0,0,0,0,0,0,0,0,0,0,0,0,121,254,204,13,0,0,0,0,53,0,0,0,14,194,254,179,4,0,0,0,0,0,0,0,0,0,0,6,186,254,146,0,0,0,0,0,0,0,0,0,0,48,254,254,35,0,0,0,0,0,0,0,0,0,0,36,254,204,14,0,0,0,0,0,0,0,0,0,0,37,238,254,35,0,0,0,0,0,0,0,0,0,0,36,254,147,0,0,0,0,0,0,0,0,0,0,0,37,238,254,35,0,0,0,0,0,0,0,0,0,0,36,254,65,0,0,0,0,0,0,0,0,0,0,0,26,222,254,35,0,0,0,0,0,0,0,0,0,0,144,254,172,0,0,0,0,0,0,0,0,0,0,0,48,254,254,35,0,0,0,0,0,0,0,0,0,0,94,254,220,24,0,0,0,0,0,0,0,0,0,0,54,254,212,17,0,0,0,0,0,0,0,0,0,0,32,245,254,127,18,0,0,0,0,0,0,0,0,18,177,254,102,0,0,0,0,0,0,0,0,0,0,0,0,85,242,254,217,30,0,0,0,0,0,0,0,148,254,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,141,243,254,220,118,25,0,0,0,0,126,225,242,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,206,254,254,221,202,111,128,202,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,198,254,254,254,254,254,254,250,85,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,135,163,254,255,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,198,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,238,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,210,179,9,50,122,84,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,213,228,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,224,254,166,67,24,98,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,250,85,4,0,0,164,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,131,0,0,0,154,254,83,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,81,0,0,0,101,235,75,0,0,0,0,0,0,0,0,0,8,84,192,247,0,0,0,0,0,0,0,0,0,0,0,115,219,49,0,0,0,0,0,0,0,13,84,168,245,191,79,3,0,0,0,0,0,0,0,0,0,0,54,229,92,0,0,0,0,0,1,57,168,240,242,187,76,7,0,0,0,0,0,0,0,0,0,0,0,56,179,77,0,0,0,0,10,87,200,254,222,128,30,0,0,0,0,0,0,0,0,0,0,0,0,0,21,240,134,0,0,0,55,124,215,255,198,73,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,214,32,114,132,148,249,210,154,43,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,236,228,197,154,70,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,24,24,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,254,255,254,165,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,84,13,244,253,253,253,253,253,253,234,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,219,10,216,220,177,177,233,253,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,219,0,32,35,0,0,112,253,253,226,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,115,0,0,0,0,47,231,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,153,253,253,249,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,238,253,253,241,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,250,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,211,253,216,253,253,252,206,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,68,31,177,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,253,253,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,191,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,130,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,176,220,107,0,0,0,0,0,0,17,242,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,225,66,41,34,0,0,40,199,250,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,173,253,253,253,227,219,179,179,221,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,96,166,241,253,253,253,253,253,253,189,140,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,164,253,253,253,253,186,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,212,206,137,137,62,18,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,254,254,254,254,254,254,170,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,169,188,202,254,254,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,65,12,0,2,65,184,254,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,237,254,227,66,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,242,254,229,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,183,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,254,254,161,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,233,160,61,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,224,254,254,255,254,255,221,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,126,177,177,201,254,254,252,182,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,86,201,254,254,228,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,90,254,254,249,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,145,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,72,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,66,20,0,0,0,74,254,254,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,190,84,183,202,254,254,239,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,254,250,139,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,95,254,254,163,135,135,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,213,242,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,254,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,201,254,242,217,254,233,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,134,126,254,254,253,198,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,188,3,22,182,254,254,249,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,224,22,0,10,117,254,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,254,154,0,10,117,254,254,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,191,138,217,254,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,227,254,254,254,254,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,144,211,211,137,233,254,249,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,247,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,239,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,243,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,156,254,254,188,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,125,235,253,251,248,253,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,199,68,51,253,186,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,252,253,194,7,0,48,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,188,2,0,0,0,0,37,75,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,182,39,0,0,0,0,48,230,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,232,253,253,42,0,0,0,0,6,198,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,119,1,0,0,0,10,210,253,253,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,230,17,0,0,19,95,171,253,253,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,202,78,128,164,250,253,253,253,253,130,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,253,252,250,209,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,94,94,94,94,59,49,104,253,253,186,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,241,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,214,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,184,253,250,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,244,253,216,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,216,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,172,173,253,152,152,214,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,252,253,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,254,253,254,253,244,243,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,171,50,50,50,50,40,81,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,252,253,252,203,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,253,254,253,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,192,151,172,252,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,203,122,0,0,21,142,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,102,102,102,102,41,0,21,142,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,254,253,214,10,132,253,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,252,253,212,253,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,214,51,52,213,254,253,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,252,253,252,253,252,253,212,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,254,253,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,151,253,212,91,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,170,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,198,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,57,0,0,0,0,0,0,0,57,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,141,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,198,57,0,86,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,97,194,186,59,59,119,127,149,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,239,253,253,253,253,239,253,253,253,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,253,253,253,254,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,117,117,117,117,117,71,19,235,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,241,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,175,240,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,174,234,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,101,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,243,125,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,156,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,246,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,209,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,122,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,208,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,191,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,128,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,25,0,0,0,12,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,168,211,254,245,108,31,172,247,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,232,241,199,210,254,249,210,254,199,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,209,70,0,52,228,254,247,180,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,148,0,7,159,241,254,194,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,215,124,206,254,234,120,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,255,240,155,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,236,254,241,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,186,253,255,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,214,247,220,216,220,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,143,252,244,87,209,227,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,254,230,187,241,219,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,235,254,254,232,252,186,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,254,254,213,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,247,171,72,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,255,166,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,217,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,92,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,178,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,255,120,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,214,249,243,241,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,94,25,26,26,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,236,191,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,235,252,250,250,250,250,181,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,107,194,195,132,195,240,246,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,216,216,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,218,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,226,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,253,126,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,66,192,252,165,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,175,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,125,225,254,160,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,250,253,253,253,253,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,158,251,253,253,167,76,222,253,231,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,242,253,253,127,19,5,0,62,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,218,45,5,0,0,0,53,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,195,14,0,0,0,0,34,225,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,82,0,0,0,0,45,242,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,246,253,238,168,16,0,19,181,253,246,209,209,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,244,253,253,212,202,214,253,253,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,168,242,253,253,253,253,253,209,105,58,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,65,113,253,253,122,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,236,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,167,253,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,246,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,163,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,64,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,64,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,191,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,128,255,255,255,128,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,191,255,255,128,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,64,255,255,191,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,64,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,237,50,0,0,0,0,0,0,0,0,0,0,0,211,174,21,0,0,0,0,0,0,0,0,0,0,0,75,253,230,156,14,0,0,0,0,0,0,0,0,0,254,253,187,8,0,0,0,0,0,0,0,0,0,0,75,253,253,253,59,0,0,0,0,0,0,0,0,0,254,253,253,133,0,0,0,0,0,0,0,0,0,0,75,253,253,253,59,0,0,0,0,0,0,0,0,0,254,253,253,240,26,0,0,0,0,0,0,0,0,0,75,253,253,253,59,0,0,0,0,0,0,0,0,0,148,253,253,239,26,0,0,0,0,0,0,0,0,0,75,253,253,253,170,13,0,0,0,0,0,0,0,0,105,253,253,197,16,0,0,0,0,0,0,0,0,0,75,253,253,253,253,104,0,0,0,0,0,0,0,0,105,253,253,253,29,0,0,0,0,0,0,0,0,0,75,253,253,253,253,104,0,0,0,0,0,0,0,0,105,253,253,253,29,0,0,0,0,0,0,0,0,0,31,210,253,253,253,104,0,0,0,0,0,0,0,0,105,253,253,253,29,0,0,0,0,0,0,0,0,0,75,253,253,253,253,104,0,0,0,0,0,0,0,0,106,254,254,254,29,0,0,0,0,0,0,0,0,0,76,254,254,255,228,43,0,0,0,0,0,0,0,0,105,253,253,253,65,36,32,60,60,60,61,60,60,32,75,253,253,253,242,80,0,0,0,0,0,0,0,0,105,253,253,253,227,217,212,253,253,253,254,253,253,211,191,253,253,253,111,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,248,92,0,0,0,0,0,0,0,0,31,204,253,253,253,253,253,235,253,253,254,253,253,253,253,253,253,253,253,210,0,0,0,0,0,0,0,0,0,29,206,253,253,253,181,49,119,119,120,230,245,182,213,214,253,253,253,253,0,0,0,0,0,0,0,0,0,0,9,14,14,14,7,0,0,0,0,12,13,7,10,10,141,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,104,104,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,192,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,246,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,184,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,213,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,126,0,0,0,0,0,33,118,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,250,235,152,98,98,221,240,254,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,254,254,254,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,166,199,199,228,200,199,214,254,248,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,2,0,89,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,192,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,242,181,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,206,246,254,247,183,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,232,255,254,211,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,125,248,254,210,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,13,186,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,212,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,12,0,2,110,210,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,158,21,103,254,254,191,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,254,254,254,198,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,47,90,54,150,238,255,173,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,188,253,253,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,235,217,126,114,69,159,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,67,33,0,0,0,0,156,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,162,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,162,161,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,93,166,166,168,253,253,109,63,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,253,215,213,213,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,250,214,210,233,253,232,235,201,201,201,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,51,48,13,9,156,174,31,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,211,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,230,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,227,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,199,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,191,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,249,246,249,178,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,138,25,183,253,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,131,0,4,189,237,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,39,0,0,127,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,63,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,238,0,0,100,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,179,232,253,253,239,220,209,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,95,189,217,253,253,253,242,59,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,201,253,253,253,224,185,253,241,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,238,253,250,233,112,21,25,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,235,26,0,0,0,2,182,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,249,93,0,0,0,0,1,174,244,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,151,0,0,0,0,0,0,159,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,246,58,0,0,0,0,0,5,243,240,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,202,8,0,0,0,0,76,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,91,0,0,0,7,204,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,234,90,5,70,127,253,209,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,207,241,229,228,250,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,40,203,177,134,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,110,172,255,254,246,125,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,210,155,154,217,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,182,253,129,2,0,0,7,203,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,128,4,0,0,0,0,115,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,232,206,5,0,0,0,0,0,128,220,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,127,0,0,0,0,0,13,226,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,244,159,0,0,0,0,0,12,167,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,247,134,66,145,230,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,233,253,253,253,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,85,195,246,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,248,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,239,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,215,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,191,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,255,219,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,132,240,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,218,253,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,227,253,253,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,208,253,253,253,231,112,112,112,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,98,253,253,253,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,221,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,234,253,253,236,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,154,253,253,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,196,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,253,253,199,38,0,60,160,160,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,253,253,253,180,38,199,236,253,253,242,226,191,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,253,253,253,253,253,253,253,253,253,253,253,253,186,31,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,253,253,253,253,253,253,253,253,253,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,247,135,17,17,17,175,253,253,207,6,0,0,0,0,0,0,0,0,0,0,0,0,0,42,203,253,253,253,224,0,0,102,114,207,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,244,179,179,245,253,253,253,172,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,242,253,253,253,253,253,253,253,253,242,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,253,253,253,253,170,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,65,65,65,134,253,84,65,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,121,121,121,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,241,251,253,253,253,252,241,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,174,159,159,159,159,214,253,229,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,219,124,6,0,0,0,0,23,152,254,159,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,108,0,0,0,0,0,0,0,28,117,250,184,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,185,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,237,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,255,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,253,131,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,253,174,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,75,229,255,253,184,68,68,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,187,187,229,253,253,254,253,253,253,253,204,187,103,54,26,0,0,0,0,0,0,0,0,0,0,0,77,237,253,253,253,253,232,214,213,213,226,253,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,252,107,0,0,0,30,93,93,114,226,219,44,0,0,0,0,0,0,0,0,0,0,0,214,253,253,244,226,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,120,120,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,161,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,203,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,251,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,61,255,221,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,112,112,29,0,0,18,112,112,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,151,235,250,253,253,240,141,51,195,253,253,232,100,0,0,0,0,0,0,0,0,0,0,0,0,0,91,225,253,253,253,253,253,253,253,240,253,253,253,253,252,105,0,0,0,0,0,0,0,0,0,0,0,41,241,253,253,253,253,253,253,253,234,162,223,253,253,253,253,230,0,0,0,0,0,0,0,0,0,0,40,226,253,253,253,253,183,131,38,38,31,0,26,66,253,253,253,249,42,0,0,0,0,0,0,0,0,0,158,253,253,253,253,143,8,0,0,0,0,0,0,6,173,253,253,253,123,0,0,0,0,0,0,0,0,0,248,253,253,253,143,8,0,0,0,0,0,0,0,0,156,253,253,253,227,0,0,0,0,0,0,0,0,197,252,253,253,144,8,0,0,0,0,0,0,0,0,0,156,253,253,253,219,0,0,0,0,0,0,0,0,255,253,253,253,123,0,0,0,0,0,0,0,0,0,0,156,253,253,253,123,0,0,0,0,0,0,0,0,228,253,253,253,175,7,0,0,0,0,0,0,0,0,0,156,253,253,253,123,0,0,0,0,0,0,0,0,102,252,253,253,253,72,7,0,0,0,0,10,46,46,63,224,253,253,225,38,0,0,0,0,0,0,0,0,0,228,253,253,253,253,182,169,169,170,139,150,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,253,253,253,253,253,253,253,253,251,146,42,0,0,0,0,0,0,0,0,0,0,45,154,238,253,253,253,253,253,253,253,248,245,253,253,156,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,104,150,234,234,234,234,203,83,72,104,104,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,183,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,232,215,7,0,0,0,0,68,249,253,210,19,0,0,0,0,0,0,0,0,0,0,0,0,0,16,152,253,252,252,84,0,0,0,6,190,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,235,14,0,0,0,22,252,252,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,254,151,0,0,0,0,0,145,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,170,85,85,50,0,29,239,252,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,252,252,244,233,239,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,189,242,253,252,252,252,252,253,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,147,182,252,252,252,253,252,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,253,241,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,252,253,210,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,252,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,191,121,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,125,38,20,208,254,244,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,252,253,250,249,253,253,253,243,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,151,245,253,253,253,253,253,253,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,253,253,253,253,253,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,253,253,253,253,253,253,238,138,166,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,253,253,253,253,214,0,156,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,132,249,253,253,253,253,231,138,149,253,214,0,156,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,81,0,37,229,214,0,156,253,253,206,0,0,0,0,0,0,0,0,0,0,0,32,240,253,253,192,204,253,58,0,0,36,44,10,184,253,253,117,0,0,0,0,0,0,0,0,0,0,31,215,253,253,182,9,18,58,14,0,0,0,11,90,253,253,250,87,0,0,0,0,0,0,0,0,0,0,118,253,253,230,58,0,0,0,0,0,0,0,70,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,118,253,253,155,0,0,0,0,0,0,0,60,230,253,253,239,31,0,0,0,0,0,0,0,0,0,0,0,141,253,253,132,0,0,0,0,0,0,10,190,253,253,211,72,0,0,0,0,0,0,0,0,0,0,0,20,249,253,253,25,0,0,0,0,0,60,187,253,253,248,82,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,186,9,0,0,0,10,133,230,253,253,228,79,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,82,0,0,23,67,184,253,253,253,211,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,211,150,150,238,253,253,253,249,207,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,249,240,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,207,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,244,253,139,123,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,64,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,191,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,184,232,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,202,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,233,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,92,125,9,0,0,0,0,0,0,65,250,254,196,101,4,0,0,0,0,0,0,0,0,0,0,0,24,127,231,255,118,0,0,0,0,0,0,85,247,254,140,0,0,0,0,0,0,0,0,0,0,0,0,61,207,254,255,254,221,20,0,0,0,0,114,216,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,254,251,166,15,0,0,0,22,243,254,254,210,13,0,0,0,0,0,0,0,0,0,0,1,126,253,254,254,251,106,0,0,0,0,21,203,254,254,254,140,0,0,0,0,0,0,0,0,0,0,0,69,254,254,254,196,30,0,0,0,11,93,213,254,254,254,212,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,147,4,0,0,0,0,93,254,254,254,254,254,221,73,0,0,0,0,0,0,0,0,0,0,0,88,231,254,183,96,146,195,182,106,253,254,254,254,254,254,208,80,0,0,0,0,0,0,0,0,0,0,0,116,254,254,254,254,254,254,254,254,254,254,254,254,231,62,7,0,0,0,0,0,0,0,0,0,0,0,0,3,97,219,236,239,254,227,231,254,254,254,249,187,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,37,73,14,164,254,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,254,163,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,211,254,254,233,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,252,80,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,228,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,186,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,109,109,110,109,212,253,255,211,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,217,247,252,252,253,252,252,252,253,252,247,134,73,10,0,0,0,0,0,0,0,0,0,0,0,0,47,221,252,252,252,252,237,174,71,71,217,226,252,252,253,66,11,0,0,0,0,0,0,0,0,0,0,42,221,252,252,252,231,108,62,0,0,0,0,31,211,252,253,252,154,0,0,0,0,0,0,0,0,0,0,134,252,252,252,118,0,0,0,0,0,0,0,0,21,143,253,252,231,109,0,0,0,0,0,0,0,0,32,227,252,252,118,5,0,0,0,0,0,0,0,0,0,0,35,222,252,252,0,0,0,0,0,0,0,0,212,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,110,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,0,0,0,0,0,0,0,0,109,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,218,247,252,128,0,0,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,0,0,27,120,253,252,246,92,0,0,0,0,0,0,0,0,109,252,231,46,0,0,0,0,0,0,0,0,0,42,221,252,253,252,132,0,0,0,0,0,0,0,0,0,255,253,217,0,0,0,0,0,0,0,0,0,47,233,253,253,255,119,0,0,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,42,233,252,252,252,35,5,0,0,0,0,0,0,0,0,0,0,253,252,221,16,0,0,0,0,0,11,58,221,253,252,205,71,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,190,0,0,0,0,63,175,252,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,253,253,253,255,253,253,191,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,180,252,252,252,252,252,252,253,252,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,175,236,252,252,226,215,217,91,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,108,108,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,150,191,254,255,254,223,100,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,161,244,253,253,253,253,253,253,253,238,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,249,253,253,246,217,217,174,222,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,233,253,253,181,53,0,0,0,32,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,143,4,0,0,0,0,96,253,253,219,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,118,0,0,0,12,73,243,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,246,85,0,0,133,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,177,253,253,214,25,91,216,253,246,117,88,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,181,253,253,229,245,253,250,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,253,253,253,207,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,214,253,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,221,253,252,219,253,226,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,249,252,197,31,59,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,248,253,206,0,0,127,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,253,218,26,0,12,204,253,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,111,5,94,207,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,186,220,253,253,253,209,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,229,175,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,123,160,253,162,125,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,246,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,158,171,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,249,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,202,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,213,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,229,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,245,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,241,164,0,0,0,0,55,92,53,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,63,0,36,135,196,251,254,254,236,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,197,1,78,239,231,103,19,15,15,184,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,255,124,0,86,91,0,0,0,0,0,193,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,194,193,19,0,0,0,0,0,0,0,132,215,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,67,0,0,0,0,0,0,16,175,246,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,192,0,0,0,0,0,0,50,221,243,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,179,0,0,0,0,36,174,244,208,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,236,90,63,120,177,247,214,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,192,254,254,249,179,113,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,87,252,252,252,252,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,84,250,250,250,250,250,250,250,250,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,250,250,250,250,250,250,250,250,250,236,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,250,250,250,250,252,204,0,34,92,92,92,25,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,250,250,250,250,242,111,0,92,250,250,250,150,21,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,250,250,250,250,242,137,137,179,250,250,250,250,44,0,0,0,0,0,0,0,0,0,106,250,250,250,250,250,250,250,250,250,252,250,250,250,250,250,250,250,44,0,0,0,0,0,0,0,0,0,7,101,250,250,250,250,250,250,250,250,252,250,250,250,250,250,250,116,12,0,0,0,0,0,0,0,0,0,0,9,101,250,250,250,250,250,250,250,252,250,250,250,250,250,118,12,0,0,0,0,0,0,0,0,0,0,0,0,6,105,250,250,250,250,250,250,252,250,250,250,145,21,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,242,252,252,252,252,255,252,252,252,252,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,250,250,250,250,252,250,250,250,250,250,120,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,250,250,250,250,252,250,250,250,250,250,250,118,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,250,250,250,250,252,250,250,250,250,250,250,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,250,250,250,250,252,250,250,250,250,250,250,250,138,10,0,0,0,0,0,0,0,0,0,0,0,0,0,137,250,250,250,250,252,250,250,250,250,250,250,250,250,21,0,0,0,0,0,0,0,0,0,0,0,0,0,50,192,250,250,250,252,250,250,250,250,250,250,250,250,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,201,250,250,252,250,250,250,250,250,250,250,250,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,44,44,252,250,250,250,250,250,250,250,80,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,105,250,124,21,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,128,128,166,185,218,217,159,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,238,235,241,253,253,230,134,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,111,72,16,0,21,156,207,253,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,129,233,255,182,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,208,253,248,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,19,51,19,234,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,254,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,255,254,243,181,181,255,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,216,205,159,15,0,0,221,253,253,253,253,178,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,135,0,0,0,0,254,253,189,245,253,254,213,31,0,0,0,0,0,0,0,0,0,0,0,0,3,164,155,20,0,0,2,19,254,216,21,43,126,254,253,226,82,0,0,0,0,0,0,0,0,0,0,0,102,253,162,0,0,14,134,253,169,5,0,0,26,156,253,253,215,59,0,0,0,0,0,0,0,0,0,0,37,254,228,0,0,37,215,228,33,0,0,0,0,0,40,243,254,202,0,0,0,0,0,0,0,0,0,0,16,222,247,145,145,231,223,57,0,0,0,0,0,0,0,61,69,5,0,0,0,0,0,0,0,0,0,0,0,35,191,217,216,138,40,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,12,89,113,113,114,113,144,253,253,255,253,119,0,0,0,0,0,0,0,0,0,0,0,29,194,225,225,253,228,246,252,252,253,252,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,252,252,252,253,252,252,252,252,253,233,74,0,0,0,0,0,0,0,0,0,0,0,28,84,180,252,225,223,223,223,145,225,176,84,196,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,215,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,253,252,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,121,255,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,253,252,247,197,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,241,252,253,252,252,252,232,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,252,252,173,248,252,252,252,244,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,208,252,248,115,0,50,172,115,238,252,222,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,166,252,252,238,0,0,0,0,0,88,238,252,231,23,0,0,0,0,0,0,0,0,0,0,0,0,13,208,252,252,212,75,0,0,0,0,0,0,165,252,252,106,0,0,0,0,0,0,0,0,0,0,0,10,168,252,252,233,83,0,0,0,0,0,0,0,20,202,252,190,0,0,0,0,0,0,0,0,0,0,0,101,252,252,221,33,0,0,0,0,0,0,0,0,0,173,252,238,0,0,0,0,0,0,0,0,0,0,0,226,252,252,198,0,0,0,0,0,0,0,0,0,0,173,252,238,0,0,0,0,0,0,0,0,0,0,51,240,253,221,35,0,0,0,0,0,0,0,0,0,0,174,253,176,0,0,0,0,0,0,0,0,0,0,163,252,252,59,0,0,0,0,0,0,0,0,0,0,178,248,252,106,0,0,0,0,0,0,0,0,0,0,240,252,222,33,0,0,0,0,0,0,0,0,0,110,245,252,178,11,0,0,0,0,0,0,0,0,0,0,240,252,172,0,0,0,0,0,0,0,0,0,68,244,252,176,15,0,0,0,0,0,0,0,0,0,0,0,240,252,235,42,0,0,0,0,0,0,0,61,196,252,104,17,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,81,0,0,0,0,0,0,51,232,252,238,52,0,0,0,0,0,0,0,0,0,0,0,0,0,76,213,252,231,145,13,0,0,0,104,248,252,239,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,248,252,252,188,160,160,160,253,252,242,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,249,252,252,252,252,252,253,183,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,217,252,252,252,252,190,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,139,235,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,215,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,220,87,0,0,205,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,173,0,0,0,150,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,45,0,0,0,180,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,173,0,0,0,0,195,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,136,0,0,0,28,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,136,0,0,0,65,244,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,180,0,0,0,169,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,229,13,0,0,210,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,134,0,81,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,241,114,178,165,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,124,254,174,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,200,239,184,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,112,3,188,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,254,37,0,137,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,192,61,0,203,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,175,145,233,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,212,203,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,128,128,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,128,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,198,255,168,116,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,179,251,254,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,179,254,254,254,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,11,180,254,254,254,239,101,159,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,238,59,0,107,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,254,254,193,39,0,0,156,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,193,14,0,0,0,156,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,252,254,192,13,0,0,0,0,244,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,167,170,14,0,0,0,0,68,250,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,244,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,117,210,241,254,254,213,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,206,254,254,254,254,247,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,224,253,251,254,254,252,100,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,235,126,194,254,254,145,127,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,248,209,80,205,254,254,249,3,156,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,248,206,108,200,254,254,250,103,0,156,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,215,254,149,240,254,247,247,190,0,0,156,254,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,254,218,83,177,49,0,0,54,193,249,44,0,0,0,0,0,0,0,0,0,0,0,0,74,244,254,254,254,190,26,0,0,0,0,0,0,14,52,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,254,162,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,78,148,148,236,254,253,253,253,209,87,11,0,0,0,0,0,0,0,0,0,0,0,0,0,43,85,173,253,252,252,252,252,253,252,252,252,252,253,205,16,0,0,0,0,0,0,0,0,0,0,0,96,234,252,252,253,252,252,252,235,214,205,233,252,252,253,252,170,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,253,205,136,84,14,0,0,7,84,198,253,252,237,21,0,0,0,0,0,0,0,0,0,0,190,252,252,252,129,11,0,0,0,0,0,0,0,150,253,252,244,49,0,0,0,0,0,0,0,0,0,0,36,158,211,79,0,0,0,0,0,0,0,93,218,253,254,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,164,247,252,252,253,110,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,92,171,245,252,252,247,231,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,82,169,246,252,252,253,252,221,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,176,228,253,252,252,252,252,236,147,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,253,253,154,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,252,211,146,85,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,202,252,253,252,252,252,252,253,237,223,127,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,128,190,189,221,252,252,253,252,252,252,252,152,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,147,182,252,252,252,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,229,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,253,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,252,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,206,252,252,174,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,240,255,201,91,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,49,220,253,253,253,253,225,164,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,178,253,253,253,253,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,253,253,233,220,220,233,253,253,207,112,5,0,0,0,0,0,0,0,0,0,0,0,0,0,53,224,253,253,253,141,50,0,0,51,222,253,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,135,4,0,0,0,0,46,226,253,253,181,21,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,114,0,0,0,0,0,0,116,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,15,240,253,253,253,114,0,0,0,0,0,0,11,209,253,253,239,57,0,0,0,0,0,0,0,0,0,0,118,253,253,253,222,44,0,0,0,0,0,0,0,105,253,253,253,179,0,0,0,0,0,0,0,0,0,30,204,253,253,253,203,0,0,0,0,0,0,0,0,2,134,253,253,179,0,0,0,0,0,0,0,0,0,91,253,253,253,253,92,0,0,0,0,0,0,0,0,0,47,233,253,179,0,0,0,0,0,0,0,0,0,91,253,253,253,253,40,0,0,0,0,0,0,0,0,0,131,253,253,116,0,0,0,0,0,0,0,0,0,82,246,253,253,253,162,0,0,0,0,0,0,0,0,0,131,253,253,15,0,0,0,0,0,0,0,0,0,0,180,253,253,253,203,0,0,0,0,0,0,0,0,19,186,253,253,15,0,0,0,0,0,0,0,0,0,0,35,134,253,253,244,93,0,0,0,0,0,5,42,182,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,52,224,253,253,114,0,0,0,0,52,143,253,253,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,236,179,58,58,169,234,253,253,253,253,165,32,2,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,253,253,253,253,253,253,253,229,106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,253,253,253,253,253,253,253,246,179,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,89,89,238,253,253,253,189,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,70,153,216,202,227,142,132,132,132,91,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,254,250,185,164,244,244,246,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,216,85,53,0,0,0,0,34,240,225,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,14,0,0,0,0,0,0,0,155,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,194,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,251,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,232,254,169,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,254,242,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,98,104,170,198,187,104,128,248,254,122,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,226,254,254,254,254,254,254,254,254,254,197,69,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,250,222,67,18,50,214,254,254,254,128,186,238,250,114,0,0,0,0,0,0,0,0,0,0,0,0,150,254,246,23,18,97,180,252,251,235,117,5,0,128,254,250,110,1,0,0,0,0,0,0,0,0,0,0,255,254,251,207,248,254,254,235,116,0,0,0,0,23,174,254,254,126,44,0,0,0,0,0,0,0,0,0,93,247,254,254,254,200,103,45,0,0,0,0,0,0,5,153,254,254,249,224,0,0,0,0,0,0,0,0,0,33,76,131,44,7,0,0,0,0,0,0,0,0,0,17,104,131,131,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,93,164,254,255,254,254,241,115,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,203,253,253,253,226,218,162,219,253,253,197,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,226,73,54,54,63,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,124,253,253,253,253,253,253,253,212,195,253,232,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,58,164,164,191,253,214,104,20,9,196,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,16,0,0,20,213,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,253,210,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,253,217,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,246,117,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,248,244,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,130,247,211,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,205,252,250,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,207,253,219,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,98,209,253,246,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,99,208,253,252,177,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,253,253,218,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,225,57,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,148,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,177,254,254,254,254,255,218,93,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,152,253,253,253,253,253,253,253,253,209,94,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,115,82,82,164,216,253,253,253,192,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,129,0,0,0,20,65,203,253,253,189,20,0,0,0,0,0,0,0,0,0,0,0,0,0,10,159,253,253,228,40,0,0,0,0,21,152,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,71,241,253,161,0,0,0,0,0,130,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,252,168,38,0,0,0,133,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,175,44,9,131,251,251,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,164,253,253,225,195,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,160,253,253,253,253,162,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,130,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,238,253,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,243,253,253,253,253,243,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,185,253,253,134,41,227,253,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,229,32,0,40,240,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,134,0,0,0,132,252,243,89,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,253,134,20,0,0,0,75,226,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,217,111,84,84,84,182,253,240,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,162,253,253,253,253,253,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,37,162,253,253,253,253,253,231,105,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,235,244,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,79,95,164,223,164,194,203,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,172,254,254,254,243,216,254,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,240,124,13,11,6,13,91,254,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,151,0,0,0,0,19,226,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,117,0,0,0,21,219,254,254,218,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,135,0,0,22,187,254,254,204,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,249,248,95,24,186,254,254,214,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,232,184,254,254,228,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,215,254,254,254,222,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,254,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,6,0,29,209,254,254,254,223,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,3,0,140,254,244,244,254,220,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,210,55,49,157,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,96,0,0,123,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,26,0,0,44,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,60,0,0,107,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,146,9,25,206,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,255,254,254,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,187,254,254,166,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,206,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,229,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0,0,0,4,254,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,176,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,215,253,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,211,253,141,0,0,0,38,161,237,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,253,228,10,0,15,175,240,253,253,209,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,120,0,25,211,253,253,253,253,190,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,197,0,25,255,254,251,197,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,248,253,64,54,235,254,205,112,181,253,229,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,221,127,245,253,254,120,220,253,230,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,253,253,253,253,254,253,253,202,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,194,253,253,253,254,197,39,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,167,253,233,140,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,234,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,230,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,212,40,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,255,197,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,49,4,0,0,0,0,0,0,230,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,77,0,0,0,0,0,8,231,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,4,108,220,253,222,30,0,0,0,0,112,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,4,125,253,253,253,176,0,0,0,0,12,227,253,253,239,5,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,253,68,0,0,0,0,172,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,26,130,253,253,245,122,23,0,0,0,79,241,253,253,253,115,0,0,0,0,0,0,0,0,0,0,3,50,169,253,253,253,119,0,0,0,15,150,240,253,253,253,152,4,0,0,0,0,0,0,0,0,0,0,40,253,253,253,253,222,34,56,56,90,201,253,253,253,253,253,185,36,0,0,0,0,0,0,0,0,0,97,222,253,253,253,253,242,199,253,253,253,253,253,253,253,253,253,253,164,2,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,5,0,0,0,0,0,0,0,0,32,219,253,253,253,253,253,253,253,253,253,253,253,228,179,179,179,179,61,2,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,253,253,253,148,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,166,166,166,222,253,253,253,253,253,88,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,195,253,253,253,230,160,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,242,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,244,253,253,253,253,91,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,233,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,151,253,235,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,200,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,161,185,254,254,248,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,254,254,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,254,254,246,121,50,254,254,198,129,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,214,78,0,10,226,254,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,83,0,0,0,101,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,123,8,0,22,121,240,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,226,6,38,113,192,254,254,254,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,249,240,246,254,254,254,254,254,254,194,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,254,254,254,254,254,254,249,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,205,254,254,254,224,254,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,115,115,128,205,254,254,213,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,161,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,175,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,225,254,254,226,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,224,254,254,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,232,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,236,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,254,254,254,254,254,254,255,228,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,253,253,253,253,253,251,234,166,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,241,253,253,249,177,177,177,239,253,253,253,253,237,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,61,61,58,0,0,0,50,61,76,199,253,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,233,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,145,253,253,233,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,224,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,253,240,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,250,253,166,12,0,0,34,83,117,220,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,253,253,114,63,66,199,221,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,217,253,253,253,253,253,253,253,253,253,243,189,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,253,253,253,245,232,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,175,253,253,253,238,116,116,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,105,81,75,148,60,43,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,148,168,193,168,85,63,63,183,206,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,5,0,0,0,48,187,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,232,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,167,254,254,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,85,104,191,191,206,253,254,253,253,232,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,128,203,253,254,253,253,253,253,254,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,253,253,253,255,253,253,253,253,255,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,253,254,253,253,253,253,148,183,253,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,36,244,254,254,254,195,186,159,36,0,0,0,234,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,160,98,63,0,0,0,0,0,0,29,240,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,214,253,248,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,38,184,253,253,163,0,0,0,0,0,0,0,0,0,18,150,9,0,0,0,0,0,0,0,0,0,54,143,236,254,218,50,14,0,0,0,0,0,0,0,0,0,149,254,192,32,0,0,0,0,0,18,8,25,238,226,230,195,27,0,0,0,0,0,0,0,0,0,0,0,228,253,253,211,86,86,165,191,191,217,202,227,253,84,27,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,253,253,253,254,253,253,253,253,254,253,181,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,248,253,253,254,253,253,253,227,190,111,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,147,104,122,173,192,147,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,154,165,203,223,254,255,173,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,125,240,253,198,118,103,69,13,13,148,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,120,254,148,32,4,0,0,0,0,54,203,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,249,99,1,0,0,0,0,0,24,201,246,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,106,0,0,0,0,0,0,50,207,240,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,85,235,185,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,168,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,124,240,220,76,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,62,147,240,240,118,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,121,176,254,254,254,247,144,124,45,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,238,214,133,133,133,133,180,226,254,222,150,66,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,30,0,0,0,0,0,0,8,58,122,212,254,151,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,126,244,158,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,201,0,0,0,0,0,0,0,0,15,198,231,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,167,0,0,0,0,0,0,0,13,159,245,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,197,27,1,0,0,0,2,60,191,247,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,254,168,103,181,192,196,254,245,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,106,164,185,222,180,164,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,13,13,13,13,134,145,254,254,254,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,4,106,145,228,253,253,253,253,254,253,253,253,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,32,241,253,253,253,253,253,253,253,217,217,224,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,57,84,119,164,84,84,84,81,0,0,72,253,253,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,190,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,198,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,233,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,240,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,207,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,253,230,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,250,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,236,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,251,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,195,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,99,163,176,254,254,196,96,0,0,0,0,0,0,0,0,0,0,0,0,0,170,164,113,145,164,235,235,242,254,253,253,229,237,254,249,86,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,254,253,253,224,216,127,75,36,21,26,176,253,127,0,0,0,0,0,0,0,0,0,0,0,0,27,126,144,144,93,54,12,0,0,0,0,0,0,163,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,241,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,207,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,240,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,106,232,208,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,137,253,253,253,243,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,224,170,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,253,181,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,201,14,0,0,0,0,0,0,0,0,0,60,120,76,0,0,0,0,0,0,0,0,0,0,0,7,144,253,253,174,12,0,0,0,0,0,0,91,206,175,123,5,0,0,0,0,0,0,0,0,0,0,0,0,7,145,253,253,176,9,0,0,10,115,218,220,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,147,253,253,180,5,173,232,253,180,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,150,253,253,243,254,184,57,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,48,174,255,255,255,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,137,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,54,222,253,253,224,173,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,253,181,16,98,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,210,17,0,98,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,193,0,0,98,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,213,61,0,195,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,217,253,253,243,160,248,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,217,253,253,253,253,206,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,253,253,207,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,228,255,255,255,206,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,132,253,250,241,137,223,252,205,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,105,221,253,239,105,0,0,0,153,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,253,220,105,26,0,0,0,0,100,243,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,247,113,0,0,0,0,0,0,39,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,220,247,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,203,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,246,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,222,0,0,0,0,51,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,223,222,0,13,100,199,239,212,102,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,232,30,144,253,196,172,234,253,174,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,226,239,169,13,0,33,165,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,217,253,170,12,0,0,0,11,166,241,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,212,32,0,0,0,0,10,216,242,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,253,213,83,0,0,0,0,99,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,253,249,144,27,0,0,88,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,120,253,253,245,144,119,225,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,97,162,253,253,253,208,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,157,254,255,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,223,253,196,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,134,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,133,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,249,223,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,128,0,0,0,0,24,144,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,249,181,7,0,0,0,0,0,40,248,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,128,0,0,0,0,0,0,28,225,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,38,0,0,0,0,0,0,0,59,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,248,253,38,0,0,0,0,0,0,0,33,247,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,232,30,0,0,0,0,0,0,0,64,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,162,0,0,0,0,0,0,0,9,182,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,162,0,0,0,0,0,0,0,40,253,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,162,0,0,0,0,0,0,0,60,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,162,0,0,0,0,0,0,47,223,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,251,218,24,0,0,0,0,19,184,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,55,4,0,0,45,224,253,220,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,253,163,143,143,225,253,153,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,253,253,253,252,220,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,123,123,190,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,67,141,205,255,255,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,57,121,188,253,253,254,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,198,241,253,254,253,253,215,179,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,253,253,191,116,28,16,79,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,114,114,13,0,0,0,0,142,254,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,234,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,241,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,180,254,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,253,235,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,228,103,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,212,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,212,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,246,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,252,253,252,185,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,246,252,252,243,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,212,253,253,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,252,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,205,253,252,252,101,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,199,248,252,253,252,205,21,0,0,0,0,0,0,0,0,85,21,0,0,0,0,0,0,0,0,0,0,162,253,253,253,255,249,230,42,0,13,159,253,253,253,255,253,253,253,23,0,0,0,0,0,0,0,0,0,161,252,252,252,228,117,0,0,0,45,252,252,252,252,253,252,252,235,18,0,0,0,0,0,0,0,0,17,228,252,252,221,32,0,0,0,32,222,252,252,252,252,253,252,252,160,0,0,0,0,0,0,0,0,0,66,252,252,252,96,0,0,0,0,157,253,252,252,176,149,253,252,227,50,0,0,0,0,0,0,0,0,0,138,252,252,252,22,0,0,0,136,250,253,252,168,161,240,253,231,48,0,0,0,0,0,0,0,0,0,0,128,253,253,253,201,139,138,138,233,253,255,253,253,253,253,242,135,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,252,253,252,252,252,252,253,252,252,235,206,42,0,0,0,0,0,0,0,0,0,0,0,0,0,118,234,252,252,253,252,252,252,252,253,240,151,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,139,160,161,177,252,252,252,234,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,179,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,139,255,217,139,38,38,6,22,24,37,38,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,253,253,253,194,224,227,251,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,218,253,253,253,253,253,253,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,253,253,253,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,108,65,88,172,172,145,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,230,32,0,0,0,0,60,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,2,171,253,253,184,0,0,0,0,0,81,253,253,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,4,219,253,250,64,0,0,0,0,17,234,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,129,78,0,0,0,0,0,122,253,253,222,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,203,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,218,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,115,250,253,223,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,220,253,253,194,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,182,253,253,253,230,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,231,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,231,253,253,244,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,242,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,110,188,254,255,164,87,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,184,249,253,253,253,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,27,151,176,242,253,253,178,139,36,33,217,253,183,0,0,0,0,0,0,0,0,0,0,111,57,62,151,110,253,253,253,253,219,109,35,0,5,143,253,253,164,0,0,0,0,0,0,0,0,0,0,104,253,253,253,253,253,253,213,149,14,0,0,0,28,253,253,194,19,0,0,0,0,0,0,0,0,0,0,8,122,199,243,243,175,52,14,0,0,0,0,5,84,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,213,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,242,253,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,210,253,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,176,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,246,167,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,230,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,123,56,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,195,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,20,0,0,78,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,227,202,5,0,78,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,205,6,0,78,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,172,0,0,78,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,139,0,0,146,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,244,223,32,0,14,252,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,139,0,4,70,254,254,105,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,176,149,193,254,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,254,254,254,254,254,254,210,170,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,248,172,164,254,254,19,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,45,0,115,254,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,247,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,190,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,235,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,243,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,168,254,254,254,254,254,255,254,170,125,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,234,253,253,253,253,253,253,253,253,253,253,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,253,253,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,170,253,253,253,253,253,253,253,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,69,116,25,25,25,25,25,128,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,253,253,237,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,111,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,246,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,237,253,253,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,93,237,253,253,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,238,253,253,244,184,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,84,239,253,253,194,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,244,221,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,241,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,243,253,253,129,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,245,253,248,196,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,242,253,247,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,199,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,247,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,196,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,243,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,47,197,200,117,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,253,217,146,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,252,253,253,253,253,253,253,250,247,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,247,118,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,235,253,222,168,84,14,33,168,246,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,68,44,0,0,0,0,0,231,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,243,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,191,253,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,167,253,253,253,253,253,64,124,124,124,45,0,0,0,0,0,0,0,0,0,0,0,0,13,70,70,94,240,253,253,253,253,253,253,235,253,253,253,234,224,191,70,0,0,0,0,0,0,0,0,68,185,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,101,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,76,240,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,102,253,253,253,253,253,247,245,245,245,245,245,151,175,92,92,92,92,92,0,0,0,0,0,0,0,0,0,27,145,250,236,145,145,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,13,65,191,192,133,93,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,233,253,253,253,254,251,244,216,99,60,47,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,253,253,253,254,244,217,84,52,159,246,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,253,254,253,253,84,0,0,206,175,5,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,253,254,253,253,113,0,0,99,245,82,0,0,0,0,0,0,0,0,0,0,0,0,0,44,180,240,253,253,218,216,215,180,89,0,0,0,218,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,48,48,25,23,23,0,0,0,0,0,218,233,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,233,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,13,7,0,6,0,0,0,0,74,254,203,70,0,0,0,0,0,0,0,0,0,0,0,4,48,145,176,253,253,207,145,134,22,16,13,112,119,234,153,0,0,0,0,0,0,0,0,0,0,0,16,171,253,253,253,253,253,253,253,254,244,217,207,253,253,48,46,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,214,205,205,147,208,253,253,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,9,223,253,253,210,158,14,0,0,0,4,170,230,253,253,207,157,0,0,0,0,0,0,0,0,0,0,0,106,253,253,181,17,0,0,0,0,70,195,222,231,239,94,49,52,0,0,0,0,0,0,0,0,0,0,0,93,253,253,140,45,86,86,131,206,251,152,165,137,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,212,253,253,236,253,253,253,253,160,75,4,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,29,132,161,253,253,195,92,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,131,149,228,157,78,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,138,233,253,254,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,145,240,253,253,236,171,91,85,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,222,254,253,248,163,14,0,0,16,232,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,240,253,254,218,91,0,0,0,0,0,169,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,254,231,71,0,0,0,8,123,246,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,132,0,0,57,129,202,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,243,233,233,247,253,254,237,252,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,253,254,253,253,253,227,173,21,233,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,130,148,192,147,122,25,0,0,233,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,238,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,202,255,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,148,128,128,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,185,253,253,253,254,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,237,253,165,42,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,131,244,255,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,241,252,200,134,245,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,247,84,0,0,229,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,232,48,0,0,4,231,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,244,64,0,0,0,66,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,202,254,70,0,0,0,113,226,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,181,12,0,0,140,246,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,240,29,0,0,86,246,254,254,245,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,242,118,0,0,59,246,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,58,34,149,246,161,168,254,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,222,245,254,175,29,224,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,135,209,176,54,7,63,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,0,0,202,254,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,249,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,208,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,241,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,236,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,237,130,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,248,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,246,253,219,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,229,253,253,207,105,78,0,22,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,251,253,253,253,253,253,247,228,233,236,141,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,223,190,227,162,162,162,225,253,233,208,38,0,0,0,0,0,0,0,0,0,0,0,0,84,245,218,119,38,26,12,28,0,0,0,27,138,253,253,231,94,0,0,0,0,0,0,0,0,0,0,0,248,253,109,0,0,0,0,0,0,0,0,0,28,185,253,253,217,0,0,0,0,0,0,0,0,0,0,136,252,253,19,0,0,0,0,0,0,0,0,0,0,7,176,253,251,93,0,0,0,0,0,0,0,0,0,190,250,225,14,0,0,0,0,0,0,0,0,0,0,0,156,253,253,219,32,0,0,0,0,0,0,0,0,255,253,142,0,0,0,0,0,0,0,0,0,0,0,0,54,229,253,253,153,0,0,0,0,0,0,0,0,255,253,165,4,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,0,0,0,0,0,0,0,0,164,253,253,19,0,0,0,0,0,0,0,0,0,0,0,5,169,253,253,230,0,0,0,0,0,0,0,0,41,162,253,176,37,0,0,0,0,0,0,0,0,0,0,47,253,253,253,190,0,0,0,0,0,0,0,0,0,58,247,253,206,17,0,0,0,0,0,0,23,33,117,219,253,253,232,44,0,0,0,0,0,0,0,0,0,45,232,253,216,156,46,27,27,27,27,121,224,253,253,253,251,153,45,0,0,0,0,0,0,0,0,0,0,0,46,232,253,253,253,253,253,253,253,253,253,253,253,228,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,160,252,253,253,253,253,250,240,240,220,110,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,117,224,210,117,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,21,202,254,255,254,210,136,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,250,218,218,218,248,253,253,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,244,224,75,0,41,65,69,134,227,253,200,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,97,0,0,60,234,31,0,33,141,253,237,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,11,0,0,101,253,41,0,0,6,140,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,208,7,0,37,245,221,24,0,0,0,48,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,2,208,147,0,0,45,253,173,0,0,0,0,48,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,65,249,206,6,25,212,253,59,0,0,0,0,48,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,109,212,253,197,22,0,0,0,0,48,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,194,251,220,175,23,0,0,0,0,0,76,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,26,0,0,0,0,0,0,10,192,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,198,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,232,50,0,0,0,0,0,0,0,0,0,0,0,0,0,33,130,227,249,249,182,130,48,3,0,0,23,251,200,0,0,0,0,0,0,0,0,0,0,0,0,0,21,219,231,128,106,219,240,253,253,81,5,14,249,222,37,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,65,0,0,0,50,170,253,253,179,205,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,65,0,0,0,0,12,113,253,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,227,214,76,0,41,84,103,213,253,253,253,253,247,179,23,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,241,219,236,253,253,253,176,109,35,150,211,253,198,21,0,0,0,0,0,0,0,0,0,0,0,0,0,46,135,135,135,135,135,53,4,0,0,0,10,95,165,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,77,144,168,254,105,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,67,178,230,253,253,253,253,221,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,120,223,253,254,253,253,253,253,175,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,148,253,240,248,244,242,154,121,63,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,147,253,251,78,66,50,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,62,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,194,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,253,253,253,244,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,227,254,254,178,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,158,245,254,123,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,209,254,230,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,59,0,0,0,7,133,253,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,192,45,84,155,215,253,253,195,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,253,253,230,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,201,253,253,200,143,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,143,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,252,226,225,193,85,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,71,195,196,214,239,233,252,253,252,252,252,221,198,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,65,56,177,225,223,246,252,252,253,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,88,112,189,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,242,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,253,252,239,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,54,252,253,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,252,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,230,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,242,169,108,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,255,209,172,172,172,229,196,172,236,188,241,91,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,254,254,254,254,254,254,254,254,254,254,237,17,0,0,0,0,0,0,0,0,0,0,0,0,62,147,213,229,229,229,229,229,230,170,147,147,147,237,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,207,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,248,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,240,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,242,233,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,65,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,128,194,232,233,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,140,248,254,254,254,254,221,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,211,137,156,254,230,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,254,254,211,16,0,28,218,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,182,254,254,254,137,0,0,0,80,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,254,254,196,218,60,0,0,0,20,254,255,59,0,0,0,0,0,0,0,0,0,0,0,0,0,35,218,254,250,121,0,15,0,0,0,0,20,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,184,0,0,0,0,0,0,0,20,254,254,58,0,0,0,0,0,0,0,0,0,0,0,7,152,254,254,166,9,0,0,0,0,0,0,0,20,254,254,58,0,0,0,0,0,0,0,0,0,0,0,115,254,254,163,18,0,0,0,0,0,0,0,0,20,254,254,58,0,0,0,0,0,0,0,0,0,0,19,240,254,196,15,0,0,0,0,0,0,0,0,0,20,254,230,23,0,0,0,0,0,0,0,0,0,0,124,254,254,53,0,0,0,0,0,0,0,0,0,5,114,254,169,0,0,0,0,0,0,0,0,0,0,14,230,254,155,0,0,0,0,0,0,0,0,0,0,59,254,254,49,0,0,0,0,0,0,0,0,0,0,73,254,232,27,0,0,0,0,0,0,0,0,0,69,240,250,117,2,0,0,0,0,0,0,0,0,0,23,208,254,102,0,0,0,0,0,0,0,0,0,107,240,254,158,0,0,0,0,0,0,0,0,0,0,0,60,254,254,19,0,0,0,0,0,0,0,5,128,247,254,151,0,0,0,0,0,0,0,0,0,0,0,0,59,254,187,3,0,0,0,0,0,0,35,203,254,228,99,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,175,0,0,0,0,0,0,61,225,254,229,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,175,0,0,0,19,108,190,249,255,213,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,236,106,99,159,222,254,254,254,133,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,89,130,219,254,254,254,154,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,89,211,253,253,253,253,253,253,253,213,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,253,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,236,228,228,167,236,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,227,31,0,0,0,39,229,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,93,93,137,0,0,0,62,188,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,134,233,253,253,253,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,132,174,230,253,253,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,235,155,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,217,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,164,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,77,179,232,253,253,253,253,165,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,139,234,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,208,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,100,100,100,129,231,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,245,253,253,253,253,253,253,253,217,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,253,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,253,253,163,100,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,163,232,129,129,38,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,79,204,253,253,153,141,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,82,197,252,253,252,252,252,253,234,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,252,252,252,168,168,168,243,253,252,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,241,115,28,28,0,0,0,25,203,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,253,216,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,121,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,215,252,253,121,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,140,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,104,141,141,254,253,244,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,252,253,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,187,252,252,253,252,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,128,253,252,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,214,15,0,0,0,0,0,0,0,0,0,0,0,0,41,228,141,16,0,0,0,0,0,7,66,241,254,247,150,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,178,57,57,57,57,169,187,252,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,187,252,252,253,252,252,252,253,252,252,252,56,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,252,253,252,252,252,241,139,139,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,205,125,125,125,125,125,125,125,61,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,175,254,254,254,254,254,254,255,254,254,252,251,232,131,162,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,254,214,143,177,197,254,254,254,254,254,254,254,254,236,120,0,0,0,0,0,0,0,0,0,125,254,254,254,254,42,36,151,245,254,224,102,19,19,36,136,19,19,9,0,0,0,0,0,0,0,0,0,125,254,254,254,254,118,218,254,254,254,254,249,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,250,254,254,254,254,254,226,58,66,231,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,254,138,27,0,0,79,254,224,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,251,254,254,254,39,0,0,0,60,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,181,8,0,0,0,60,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,210,20,0,0,0,60,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,132,0,0,0,0,60,254,220,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,245,254,234,26,0,0,0,0,60,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,156,0,0,0,0,0,150,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,232,238,65,0,0,0,0,11,200,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,54,0,0,0,0,0,83,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,249,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,254,251,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,29,0,0,0,0,0,57,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,198,0,0,0,0,29,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,226,170,170,0,0,0,0,198,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,29,0,0,0,0,0,226,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,114,0,0,0,0,0,170,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,170,29,0,0,0,0,29,226,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,57,0,0,0,0,57,170,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,255,255,170,170,255,255,255,255,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,198,170,226,255,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,86,86,86,29,0,0,0,170,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,137,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,243,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,128,27,0,0,0,0,0,0,175,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,3,88,253,254,163,20,0,0,0,0,7,223,254,251,155,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,254,36,0,0,0,0,8,171,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,90,233,254,254,194,2,0,0,0,0,89,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,74,202,254,254,241,40,0,0,0,0,24,235,254,254,191,7,0,0,0,0,0,0,0,0,0,0,0,52,200,254,254,221,99,0,0,0,0,0,83,243,254,254,104,0,0,0,0,0,0,0,0,0,0,0,46,234,254,254,194,60,4,0,0,0,0,50,212,254,254,190,15,0,0,0,0,0,0,0,0,0,0,75,252,254,251,175,12,0,0,0,0,0,32,221,254,254,254,173,250,154,72,0,0,0,0,0,0,0,0,195,254,254,243,33,0,2,21,106,106,186,236,254,254,254,254,254,254,254,214,0,0,0,0,0,0,0,0,195,254,254,254,189,160,192,254,254,254,254,254,254,254,254,212,194,120,95,58,0,0,0,0,0,0,0,0,149,254,254,254,254,254,254,252,239,254,254,254,254,250,102,12,0,0,0,0,0,0,0,0,0,0,0,0,19,128,184,184,184,172,85,72,0,250,254,254,254,204,120,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,254,254,254,254,254,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,231,254,254,254,254,232,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,156,254,254,254,254,239,186,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,254,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,195,254,254,254,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,154,154,134,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,125,212,239,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,214,254,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,148,243,252,254,254,254,254,254,237,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,254,254,254,254,254,200,254,254,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,238,254,254,254,232,129,25,33,219,254,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,254,183,58,0,0,0,50,254,254,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,128,250,254,254,193,9,0,0,0,0,5,172,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,33,237,254,254,230,59,0,0,0,0,0,0,157,254,254,225,0,0,0,0,0,0,0,0,0,0,0,32,215,254,254,254,72,0,0,0,0,0,0,0,53,254,254,211,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,155,11,0,0,0,0,0,0,0,61,254,254,117,0,0,0,0,0,0,0,0,0,0,58,245,254,254,186,10,0,0,0,0,0,0,0,8,180,254,254,117,0,0,0,0,0,0,0,0,0,0,249,254,254,234,62,0,0,0,0,0,0,0,0,33,254,254,245,33,0,0,0,0,0,0,0,0,0,23,250,254,254,65,0,0,0,0,0,0,0,0,8,140,255,254,218,0,0,0,0,0,0,0,0,0,0,125,254,254,254,25,0,0,0,0,0,0,0,28,140,254,254,221,37,0,0,0,0,0,0,0,0,0,0,125,254,254,254,25,0,0,0,0,0,25,60,227,254,254,251,91,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,117,17,0,0,8,61,230,254,254,254,251,137,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,254,217,151,151,180,254,254,254,254,241,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,254,254,254,254,254,218,111,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,251,254,254,254,254,253,214,117,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,254,254,214,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,208,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,248,253,240,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,192,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,176,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,209,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,217,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,240,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,241,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,217,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,253,253,189,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,244,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,230,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,148,148,201,253,253,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,52,190,190,85,164,190,206,252,253,252,252,252,252,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,252,247,231,127,126,29,21,21,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,42,154,189,190,110,84,63,0,0,0,0,0,98,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,206,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,162,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,162,239,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,204,239,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,231,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,163,253,64,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,193,14,0,0,0,69,177,211,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,67,0,0,0,76,251,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,255,163,0,0,0,31,241,217,102,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,119,0,0,0,184,239,59,22,238,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,49,0,0,102,252,117,0,69,251,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,240,24,0,22,238,211,0,0,154,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,224,0,0,155,253,40,0,58,246,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,224,0,7,219,192,0,25,179,226,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,249,55,15,253,65,16,184,227,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,166,20,232,109,219,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,215,239,253,248,129,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,165,249,253,187,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,226,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,247,165,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,225,206,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,248,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,247,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,240,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,250,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,249,239,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,187,254,182,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,166,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,251,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,226,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,109,0,0,0,0,44,228,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,200,0,0,0,0,215,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,200,0,0,0,45,249,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,135,0,0,0,117,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,215,249,63,0,0,20,222,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,203,254,233,0,0,0,65,254,179,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,109,0,0,5,185,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,187,5,0,0,106,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,132,252,254,173,16,0,0,137,254,164,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,254,249,163,163,249,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,254,254,254,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,159,233,233,233,233,233,250,254,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,249,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,251,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,255,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,96,172,253,253,181,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,100,243,253,252,252,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,193,252,252,240,153,153,205,209,237,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,147,247,252,236,230,57,0,0,6,6,152,252,171,29,0,0,0,0,0,0,0,0,0,0,0,0,5,184,252,252,199,23,0,0,0,0,0,13,210,252,237,43,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,157,22,0,0,0,0,0,0,141,252,252,169,14,0,0,0,0,0,0,0,0,0,0,0,5,234,252,248,30,0,0,0,0,0,0,16,207,252,242,18,0,0,0,0,0,0,0,0,0,0,0,0,147,252,228,74,0,0,0,0,0,0,61,206,252,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,211,14,0,0,0,0,0,83,213,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,107,247,243,64,0,0,0,34,111,173,243,252,252,252,128,3,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,181,143,143,143,177,253,255,245,248,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,20,222,252,252,252,252,252,252,194,125,103,239,252,238,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,153,153,153,153,134,44,6,0,110,252,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,252,193,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,252,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,182,252,218,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,117,253,252,192,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,238,253,241,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,186,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,202,252,253,215,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,166,166,240,180,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,242,254,254,199,244,254,212,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,248,254,149,33,4,22,27,61,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,228,250,100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,191,9,1,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,254,254,120,117,86,86,86,86,117,172,184,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,94,124,183,183,233,183,183,183,124,192,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,94,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,232,210,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,231,228,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,206,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,153,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,139,250,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,254,251,121,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,254,236,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,234,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,255,98,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,164,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,250,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,246,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,218,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,208,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,236,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,203,246,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,193,118,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,138,250,254,254,244,175,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,213,254,254,254,170,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,238,95,28,69,228,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,80,0,0,0,43,251,254,195,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,160,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,237,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,245,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,255,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,3,53,145,145,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,4,125,177,254,254,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,246,242,254,254,254,139,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,251,254,254,255,254,254,175,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,221,254,254,254,248,192,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,218,254,254,254,247,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,247,196,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,194,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,0,0,0,0,0,104,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,225,97,0,0,0,0,166,253,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,226,253,238,28,0,0,39,228,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,113,0,0,0,173,253,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,241,253,224,6,0,0,47,245,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,113,0,0,0,156,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,251,253,195,67,5,11,240,253,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,197,212,254,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,126,227,254,254,255,230,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,102,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,253,209,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,247,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,219,253,246,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,141,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,252,176,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,241,254,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,254,251,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,255,254,255,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,239,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,254,236,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,245,254,254,240,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,230,254,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,206,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,245,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,254,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,219,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,80,112,177,248,105,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,185,164,240,223,165,157,236,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,167,239,254,200,254,252,252,127,104,237,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,252,224,41,54,184,197,144,44,8,211,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,128,2,0,3,3,12,24,129,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,26,0,0,0,0,9,130,231,254,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,254,164,7,0,0,9,201,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,243,254,124,0,0,192,254,254,249,129,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,248,145,208,249,254,177,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,254,254,190,142,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,250,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,254,254,231,222,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,52,169,72,49,71,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,28,192,11,17,45,36,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,161,9,21,0,0,183,112,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,225,57,0,0,17,87,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,170,0,0,35,244,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,237,26,9,85,240,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,254,255,254,132,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,82,234,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,241,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,205,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,192,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,232,209,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,228,17,37,73,44,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,228,200,248,254,254,141,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,241,254,248,73,47,158,248,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,220,54,0,0,0,163,232,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,49,0,0,0,0,36,230,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,233,254,30,0,0,0,0,0,199,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,95,0,0,0,0,0,164,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,182,2,0,0,0,0,118,249,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,243,129,2,0,0,2,201,243,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,242,189,148,108,169,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,170,254,254,185,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,224,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,251,69,0,0,0,0,0,51,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,239,4,0,0,0,6,152,246,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,214,254,162,0,0,0,0,119,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,39,0,0,0,0,146,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,255,31,0,0,0,0,219,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,220,17,0,0,0,0,250,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,231,254,156,0,0,0,0,0,250,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,76,0,0,0,0,3,250,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,234,53,53,53,55,156,195,254,254,162,125,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,254,254,254,254,254,254,254,254,254,250,203,29,0,0,0,0,0,0,0,0,0,0,0,0,18,185,234,254,254,244,213,221,254,254,144,109,109,118,213,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,62,62,47,0,53,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,249,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,245,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,214,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,212,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,248,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,241,254,253,253,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,231,253,254,253,143,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,253,253,254,230,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,187,253,253,253,171,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,75,253,253,253,239,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,169,0,0,0,0,114,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,254,242,57,0,58,121,241,254,254,155,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,253,99,13,241,248,253,253,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,253,253,217,20,173,253,254,253,253,253,253,253,249,84,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,170,140,253,253,254,253,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,211,17,161,253,253,254,253,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,239,96,180,253,253,254,253,253,253,253,253,195,25,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,253,255,253,253,253,253,125,25,0,0,0,0,0,0,0,0,0,0,0,0,0,85,235,253,253,253,253,253,253,255,253,253,245,191,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,212,250,253,253,253,253,255,253,191,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,120,204,253,253,191,120,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,104,136,221,254,245,161,162,161,86,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,139,235,253,253,241,206,206,206,207,249,253,253,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,240,145,79,34,0,0,0,0,42,46,197,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,31,0,0,0,0,0,0,0,0,9,209,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,254,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,185,253,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,237,253,242,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,191,253,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,187,254,254,254,254,254,211,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,248,206,182,131,244,245,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,71,121,42,0,0,0,90,253,199,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,254,64,0,0,0,0,0,0,0,0,0,0,0,0,87,7,0,0,0,0,0,0,0,0,0,0,74,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,207,103,0,0,0,0,0,0,0,0,0,102,240,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,104,32,0,0,0,0,0,26,187,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,124,237,224,130,47,47,47,130,239,254,244,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,234,253,253,254,253,253,253,230,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,111,194,254,253,168,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,137,96,74,132,137,137,137,137,137,192,137,137,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,254,254,254,254,254,254,254,254,229,33,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,254,254,254,254,254,254,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,153,183,183,180,121,65,65,65,224,254,254,232,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,225,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,142,85,22,0,178,254,254,254,6,22,5,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,34,230,254,254,246,160,226,254,254,254,167,244,178,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,248,254,254,254,255,254,255,254,254,234,77,77,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,119,254,254,254,254,254,220,117,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,160,254,255,254,174,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,192,254,254,220,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,206,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,251,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,233,254,254,244,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,247,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,172,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,148,166,230,254,255,199,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,119,233,251,253,248,183,183,183,226,251,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,149,96,16,0,0,0,35,201,249,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,52,0,0,0,0,0,0,0,7,163,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,132,8,0,0,0,31,16,0,0,8,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,170,248,205,84,42,186,227,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,233,253,253,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,228,239,236,253,211,79,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,232,236,33,5,132,217,254,185,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,236,253,70,0,0,0,0,106,220,253,191,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,65,0,0,0,0,0,0,0,104,246,238,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,220,13,0,0,0,0,0,0,0,0,74,243,237,112,0,0,0,0,0,0,0,0,0,0,0,0,0,236,200,0,0,0,0,0,0,0,0,0,0,60,206,251,78,0,0,0,0,0,0,0,0,0,0,0,0,236,200,0,0,0,0,0,0,0,0,0,0,0,75,253,148,0,0,0,0,0,0,0,0,0,0,0,0,236,227,18,0,0,0,0,0,0,0,0,0,0,81,253,148,0,0,0,0,0,0,0,0,0,0,0,0,113,249,89,0,0,0,0,0,0,0,0,0,0,134,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,188,244,53,0,0,0,0,0,0,0,24,147,244,232,52,0,0,0,0,0,0,0,0,0,0,0,0,0,52,239,244,124,39,18,18,18,73,156,247,253,232,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,199,251,253,253,253,254,253,248,195,112,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,150,253,192,166,112,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,241,255,188,117,18,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,253,253,170,154,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,200,226,253,253,253,253,253,253,249,158,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,76,182,182,182,182,247,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,210,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,249,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,201,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,231,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,248,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,202,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,162,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,154,253,253,203,76,0,23,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,144,243,253,252,252,252,244,169,234,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,252,252,253,252,252,252,253,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,252,252,253,227,177,252,253,252,252,252,238,38,0,0,0,0,0,0,0,0,0,0,0,0,10,229,255,253,253,253,151,0,0,51,179,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,252,151,0,0,0,0,29,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,99,6,0,0,0,0,29,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,140,65,6,0,0,0,0,0,29,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,252,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,253,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,215,214,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,20,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,169,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,235,250,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,195,248,253,254,253,253,147,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,97,217,254,254,254,254,173,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,147,235,253,254,253,253,129,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,176,241,253,253,253,254,253,253,166,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,253,253,231,213,139,213,226,253,238,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,254,162,58,27,0,0,0,18,238,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,85,36,0,0,0,0,0,0,0,0,10,167,247,253,110,8,0,0,0,0,0,0,0,0,0,0,0,0,231,181,30,0,0,0,0,0,0,0,171,253,253,222,14,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,254,148,59,59,59,59,149,231,255,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,166,247,253,253,254,253,253,253,253,249,180,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,78,152,254,222,253,210,137,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,12,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,184,176,0,0,0,0,0,0,0,77,240,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,228,254,98,0,0,0,0,0,41,150,243,120,129,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,254,129,3,0,0,0,0,45,189,254,208,17,46,0,0,0,0,0,0,0,0,0,0,0,0,45,185,253,143,24,0,0,0,0,0,99,254,254,169,1,0,0,0,0,0,0,0,0,0,0,0,0,2,185,254,174,0,0,0,0,0,0,20,194,254,254,221,3,0,0,0,0,0,0,0,0,0,0,0,0,62,254,216,14,0,0,0,0,0,1,161,254,254,219,34,0,0,0,0,0,0,0,0,0,0,0,0,15,229,254,106,0,0,0,0,0,0,156,254,254,217,31,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,184,15,0,0,0,0,0,32,244,254,221,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,205,5,0,0,0,0,34,218,254,244,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,254,151,55,55,92,163,222,254,194,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,254,254,254,254,254,221,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100,233,234,254,254,254,227,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,144,254,251,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,236,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,196,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,246,242,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,245,35,117,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,230,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,254,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,230,255,228,167,116,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,227,183,230,254,254,198,113,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,11,0,11,72,156,247,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,182,234,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,208,250,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,97,125,227,248,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,255,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,175,116,197,255,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,243,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,232,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,243,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,121,38,0,0,0,0,0,0,225,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,249,131,0,0,0,0,0,35,245,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,228,81,0,0,0,36,183,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,230,226,89,0,37,182,254,195,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,228,249,184,208,252,166,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,115,166,196,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,169,207,169,169,169,170,94,57,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,252,253,252,252,252,253,252,252,203,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,214,139,140,139,177,252,253,252,252,252,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,160,253,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,209,252,252,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,113,113,163,113,150,225,253,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,254,253,253,253,254,253,253,253,254,178,104,16,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,227,228,252,233,196,197,196,215,252,253,252,252,215,51,0,0,0,0,0,0,0,0,0,0,0,69,93,56,31,31,56,37,0,0,0,19,56,119,224,252,252,247,172,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,103,252,253,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,196,252,252,0,0,0,0,0,0,0,0,0,0,104,197,126,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,197,252,250,125,0,0,0,0,0,0,0,0,0,51,126,243,252,252,0,0,0,0,0,0,0,0,0,0,126,250,254,253,253,203,141,141,104,29,41,216,253,253,254,253,244,175,0,0,0,0,0,0,0,0,0,0,0,75,203,252,252,252,253,252,252,252,253,252,252,252,253,214,130,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,94,168,168,224,224,168,253,252,224,168,56,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,28,28,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,0,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,255,255,255,255,128,128,0,0,0,0,0,0,0,128,128,255,255,191,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,216,212,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,157,245,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,223,91,239,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,249,94,0,212,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,103,0,26,232,247,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,180,11,0,54,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,4,0,19,204,250,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,66,163,254,237,20,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,164,83,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,206,173,111,154,206,234,254,216,92,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,126,209,253,231,84,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,239,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,156,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,75,42,0,0,0,0,0,0,6,165,249,249,21,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,199,38,0,0,0,0,47,121,202,254,204,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,237,245,226,226,226,226,226,246,255,240,129,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,95,158,158,189,163,158,93,62,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,233,253,154,121,121,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,245,240,241,240,240,240,204,107,177,96,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,252,252,253,252,252,252,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,252,252,252,252,252,253,252,252,252,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,20,95,185,185,185,185,185,185,186,185,185,242,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,90,240,252,252,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,247,252,252,252,214,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,252,252,217,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,190,255,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,191,252,253,252,252,120,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,180,252,252,253,252,217,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,252,252,253,218,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,236,252,252,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,252,252,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,229,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,210,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,3,11,65,132,255,253,253,253,253,253,213,87,2,0,0,0,0,0,0,0,0,0,0,0,4,106,222,252,165,237,252,252,253,238,231,252,235,246,252,252,103,2,0,0,0,0,0,0,0,0,0,21,126,252,252,252,252,238,216,101,96,41,14,96,27,74,205,252,252,87,0,0,0,0,0,0,0,0,32,217,252,252,252,204,84,52,0,0,0,0,0,0,0,0,28,229,252,131,0,0,0,0,0,0,0,0,219,252,252,252,123,51,0,0,0,0,0,0,0,0,0,0,0,217,252,131,0,0,0,0,0,0,0,0,219,252,242,100,17,0,0,0,0,0,0,0,0,0,0,0,25,227,252,131,0,0,0,0,0,0,0,0,31,99,41,0,0,0,0,0,0,0,0,0,0,0,0,25,198,252,252,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,158,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,207,252,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,206,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,249,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,217,252,245,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,252,243,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,243,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,222,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,252,190,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,222,253,192,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,249,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,250,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,200,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,25,25,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,81,196,106,0,0,45,167,235,253,253,227,196,112,15,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,206,106,10,136,234,253,252,180,138,212,232,253,226,135,3,0,0,0,0,0,0,0,0,0,0,30,243,225,8,10,175,253,239,151,40,0,0,0,81,253,253,253,85,0,0,0,0,0,0,0,0,0,2,160,253,175,0,50,253,238,113,0,0,0,0,0,6,143,246,253,209,23,0,0,0,0,0,0,0,0,78,253,217,32,0,124,253,225,10,0,0,0,0,0,0,0,194,253,253,90,0,0,0,0,0,0,0,0,249,253,197,0,0,24,98,50,1,0,0,0,0,0,0,0,33,214,253,216,0,0,0,0,0,0,0,0,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,0,0,0,0,0,0,0,0,255,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,0,0,0,0,0,0,0,0,248,253,180,4,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,0,0,0,0,0,0,0,0,112,253,253,155,13,0,0,0,0,0,0,0,0,0,0,0,0,74,253,237,0,0,0,0,0,0,0,0,23,145,253,253,212,99,26,0,0,0,0,0,0,0,0,0,8,214,253,53,0,0,0,0,0,0,0,0,0,4,83,199,253,253,242,183,123,70,14,0,0,0,7,84,179,242,138,2,0,0,0,0,0,0,0,0,0,0,0,6,54,138,204,232,253,253,226,213,213,213,219,253,226,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,32,112,143,195,195,158,114,72,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,242,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,205,252,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,133,252,252,216,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,225,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,246,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,223,252,210,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,207,252,252,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,253,209,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,99,0,0,0,13,25,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,48,14,37,95,208,252,238,157,157,157,30,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,252,252,48,120,252,252,253,252,252,252,252,252,144,7,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,200,14,188,252,252,221,192,192,232,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,26,228,252,180,0,23,60,60,29,0,11,193,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,239,79,0,0,81,86,153,212,252,252,228,70,7,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,240,217,217,251,253,252,252,252,200,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,252,252,252,252,252,253,242,127,23,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,131,230,194,142,131,69,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,67,200,254,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,132,154,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,110,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,253,253,216,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,241,253,253,253,253,253,221,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,90,236,253,253,253,253,244,101,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,229,253,253,253,253,253,237,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,151,212,253,253,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,46,253,253,253,253,253,253,241,98,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,183,253,253,253,253,253,253,168,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,253,253,253,253,253,253,151,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,253,248,144,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,220,253,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,253,253,151,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,244,253,253,253,249,142,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,65,212,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,47,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,199,163,94,94,94,94,94,94,94,94,129,197,197,197,197,197,197,155,0,0,0,0,0,0,0,0,182,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,196,0,0,0,0,0,0,0,0,13,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,227,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,222,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,244,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,223,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,191,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,245,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,212,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,222,251,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,160,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,118,118,118,154,153,132,255,187,70,39,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,234,245,253,253,253,253,253,253,253,253,245,240,215,29,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,253,253,253,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,58,239,253,253,253,253,253,253,253,253,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,253,253,228,147,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,31,209,253,253,253,253,248,128,28,12,188,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,27,140,175,123,123,80,0,0,0,144,253,253,253,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,0,0,0,0,0,0,144,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,242,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,251,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,201,253,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,253,179,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,187,253,253,189,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,116,183,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,59,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,20,119,163,227,254,246,0,0,0,0,0,0,0,0,0,61,25,169,101,79,79,79,79,117,102,138,176,188,254,254,254,254,241,70,0,0,0,0,0,0,0,0,46,243,241,254,254,254,254,254,254,254,254,254,254,247,214,186,254,254,161,0,0,0,0,0,0,0,0,0,0,132,155,171,254,232,193,193,193,155,156,111,58,49,0,97,254,223,34,0,0,0,0,0,0,0,0,0,82,47,0,0,0,0,0,0,0,0,0,0,0,0,23,180,254,153,0,0,0,0,0,0,0,0,0,0,242,163,0,0,0,0,0,0,0,0,0,0,0,0,181,254,254,153,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,172,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,230,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,247,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,229,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,255,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,188,254,254,254,254,255,254,254,254,255,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,253,253,253,253,69,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,185,177,177,177,174,40,40,40,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,220,253,158,35,35,35,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,253,253,172,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,154,233,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,27,27,27,3,59,229,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,248,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,242,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,20,0,0,0,0,0,105,244,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,212,181,63,31,27,111,243,241,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,215,211,253,242,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,253,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,209,253,253,193,116,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,255,254,254,168,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,253,253,253,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,201,253,253,216,122,40,208,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,183,61,31,0,18,211,253,249,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,106,253,248,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,56,235,253,234,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,186,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,200,248,250,253,217,35,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,246,253,253,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,235,253,253,253,253,193,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,68,68,134,225,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,108,253,226,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,253,253,155,39,0,0,0,0,0,0,0,0,0,0,0,40,104,25,0,0,0,0,0,0,0,12,182,253,253,219,32,0,0,0,0,0,0,0,0,0,0,0,39,222,253,61,0,0,0,0,0,0,61,176,253,253,219,41,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,108,29,25,0,0,22,100,239,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,213,209,179,179,205,253,253,249,208,75,4,0,0,0,0,0,0,0,0,0,0,0,0,0,44,222,232,248,253,253,253,253,253,253,212,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,116,116,116,116,116,116,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,47,97,138,138,139,89,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,253,253,253,254,253,207,149,149,65,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,253,253,253,254,253,253,253,254,253,221,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,157,0,0,0,51,193,84,60,189,254,254,195,65,0,0,0,0,0,0,0,0,0,0,0,43,232,253,173,2,0,0,0,0,9,0,0,5,31,198,254,232,93,0,0,0,0,0,0,0,0,0,0,180,253,177,17,0,0,0,0,0,0,0,0,0,0,17,129,251,240,74,0,0,0,0,0,0,0,0,51,247,244,69,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,228,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,0,0,0,0,0,0,0,0,178,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,0,0,0,0,0,0,0,0,254,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,244,0,0,0,0,0,0,0,0,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,160,0,0,0,0,0,0,0,0,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,239,25,0,0,0,0,0,0,0,0,169,249,59,0,0,0,0,0,0,0,0,0,0,0,5,147,254,253,128,0,0,0,0,0,0,0,0,0,114,251,224,40,0,0,0,0,0,0,0,0,0,30,161,253,247,162,9,0,0,0,0,0,0,0,0,0,0,97,253,228,160,9,0,0,0,0,0,0,119,222,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,255,237,120,70,70,70,112,195,254,254,247,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,23,140,215,253,253,254,253,253,253,207,106,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,88,137,138,137,137,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,201,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,184,137,7,0,0,0,32,231,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,254,100,0,0,0,174,254,241,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,222,237,88,59,0,0,102,234,254,115,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,223,254,149,0,0,0,5,141,255,250,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,218,254,244,35,0,0,0,144,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,187,254,225,64,0,0,0,21,198,254,204,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,166,254,223,39,0,0,0,11,155,254,234,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,254,178,35,0,0,0,0,115,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,178,93,22,0,0,40,246,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,253,254,254,254,234,134,20,5,147,254,249,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,244,195,223,254,254,212,187,254,240,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,186,169,84,0,23,69,232,254,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,0,0,66,246,254,205,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,211,255,213,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,72,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,203,254,163,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,234,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,238,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,183,38,0,0,0,0,0,0,104,254,251,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,67,0,0,0,0,0,0,100,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,128,3,0,0,0,0,0,49,188,254,188,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,254,20,0,0,0,0,0,0,42,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,63,0,0,0,0,0,0,23,225,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,31,235,246,192,15,0,0,0,0,0,0,0,167,254,195,7,0,0,0,0,0,0,0,0,0,0,0,0,47,253,130,0,0,0,0,0,0,0,0,0,51,248,254,73,0,0,0,0,0,0,0,0,0,0,0,0,29,233,114,0,0,0,0,0,0,0,0,0,119,249,254,234,0,0,0,0,0,0,0,0,0,0,0,0,48,254,114,0,0,0,0,0,0,0,0,75,242,159,226,250,107,0,0,0,0,0,0,0,0,0,0,0,48,254,137,11,0,0,0,0,18,42,126,251,240,57,123,254,226,21,0,0,0,0,0,0,0,0,0,0,12,212,254,209,139,89,89,157,219,254,254,204,66,0,52,246,254,72,0,0,0,0,0,0,0,0,0,0,0,12,173,223,239,254,254,234,223,159,79,7,0,0,0,119,254,244,50,0,0,0,0,0,0,0,0,0,0,0,0,0,37,73,73,25,0,0,0,0,0,0,0,21,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,129,254,225,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,230,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,250,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,236,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,212,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,236,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,254,168,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,24,66,138,255,253,222,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,57,178,252,252,252,253,252,240,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,70,164,215,253,252,252,195,183,69,90,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,203,139,45,9,0,0,0,0,0,0,0,60,68,0,0,0,0,0,0,0,0,0,0,0,151,252,252,147,11,0,0,0,0,0,0,0,0,0,179,244,246,42,0,0,0,0,0,0,0,0,0,0,43,247,253,253,128,9,0,0,0,0,0,0,9,233,255,228,84,0,0,0,0,0,0,0,0,0,0,0,0,67,223,252,253,194,44,0,0,0,0,45,194,252,249,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,246,253,252,202,90,7,0,45,172,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,211,252,252,252,158,104,236,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,158,252,252,252,253,252,252,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,253,255,253,190,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,219,252,252,252,253,252,252,177,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,227,79,137,252,252,252,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,248,253,235,77,29,0,5,177,252,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,243,60,0,0,0,0,15,137,252,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,190,0,0,0,0,0,0,0,70,253,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,158,0,0,0,0,0,0,0,70,252,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,185,111,70,70,70,70,91,203,252,221,115,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,181,244,253,252,252,252,252,253,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,21,33,137,189,137,189,253,178,106,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,172,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,253,252,253,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,123,162,234,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,254,253,41,0,0,0,11,51,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,252,203,203,203,203,213,252,223,203,41,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,255,253,254,253,254,253,254,253,254,253,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,252,151,151,151,151,233,151,151,151,151,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,174,220,255,252,161,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,102,254,254,254,254,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,128,254,254,254,244,193,139,232,247,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,230,121,33,0,0,31,242,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,248,254,210,17,0,0,0,0,0,124,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,254,71,0,0,0,0,0,6,179,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,247,243,96,153,15,0,0,3,125,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,254,254,197,25,17,152,254,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,190,254,254,254,254,254,254,254,254,245,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,254,254,254,254,254,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,239,254,254,254,254,254,254,254,154,235,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,191,203,254,254,189,109,37,2,21,192,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,76,167,224,133,4,0,0,0,0,13,215,145,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,194,1,57,208,21,0,0,0,0,0,0,87,239,24,0,0,0,0,0,0,0,0,0,0,0,0,37,254,161,0,0,0,0,0,0,0,0,0,0,39,254,36,0,0,0,0,0,0,0,0,0,0,0,0,37,254,113,0,0,0,0,0,0,0,0,0,0,149,254,36,0,0,0,0,0,0,0,0,0,0,0,0,37,254,178,0,0,0,0,0,0,0,0,2,109,242,246,30,0,0,0,0,0,0,0,0,0,0,0,0,6,198,245,146,20,0,0,0,0,33,57,166,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,238,173,149,214,230,244,254,254,248,114,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,208,254,254,254,254,254,254,254,254,225,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,207,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,251,235,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,174,254,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,254,218,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,222,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,247,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,211,10,0,0,0,0,0,53,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,232,42,0,0,0,0,0,135,254,254,255,93,0,0,0,0,0,0,0,0,0,0,0,0,0,12,193,254,155,0,0,0,0,20,185,244,254,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,242,45,0,0,0,31,217,254,254,192,109,126,197,0,0,0,0,0,0,0,0,0,0,0,0,3,194,254,140,0,0,0,29,223,254,191,85,6,34,201,197,0,0,0,0,0,0,0,0,0,0,0,0,115,254,245,45,0,0,6,194,254,197,25,0,27,174,238,56,0,0,0,0,0,0,0,0,0,0,0,0,198,254,164,0,0,0,36,254,225,16,0,13,185,245,122,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,194,16,0,19,201,254,91,13,124,229,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,254,204,151,138,254,254,176,246,254,216,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,241,254,254,254,254,254,237,176,93,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,142,159,180,243,125,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,175,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,228,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,235,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,247,253,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,232,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,201,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,176,0,57,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,243,253,242,216,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,243,145,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,177,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,136,0,0,0,0,0,0,0,11,73,137,255,254,254,170,0,0,0,0,0,0,0,0,0,0,191,253,216,5,0,0,0,0,0,16,55,147,253,253,254,253,253,251,138,0,0,0,0,0,0,0,0,11,238,247,92,0,0,0,0,0,27,196,253,253,250,197,101,88,139,245,253,0,0,0,0,0,0,0,0,73,253,216,0,0,0,0,0,60,238,254,253,250,153,20,0,0,3,203,253,0,0,0,0,0,0,0,0,137,253,151,0,0,0,0,0,134,253,254,233,107,0,0,0,0,69,253,253,0,0,0,0,0,0,0,0,163,254,127,0,0,0,0,37,215,254,208,39,0,0,0,0,36,241,254,105,0,0,0,0,0,0,0,0,215,253,107,0,0,0,0,128,253,253,78,0,0,0,0,16,194,253,216,5,0,0,0,0,0,0,0,0,254,253,36,0,0,0,0,172,253,207,0,0,0,0,14,163,253,234,40,0,0,0,0,0,0,0,0,0,254,253,42,0,0,0,0,139,253,124,0,0,0,47,193,254,229,92,0,0,0,0,0,0,0,0,0,0,156,253,127,0,0,0,0,24,233,105,0,0,92,212,253,254,166,0,0,0,0,0,0,0,0,0,0,0,73,254,185,0,0,0,0,0,116,254,131,215,254,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,31,204,237,103,0,0,0,8,69,253,254,253,253,249,102,7,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,250,217,128,128,210,253,253,254,245,203,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,150,248,254,253,253,253,240,177,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,130,181,207,124,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,217,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,217,253,81,51,57,57,57,57,32,45,45,57,57,19,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,253,235,247,254,253,253,253,230,241,241,253,207,56,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,177,140,140,191,140,140,140,141,116,28,28,13,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,251,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,235,169,120,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,187,253,253,224,198,160,85,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,140,254,253,253,253,254,235,226,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,114,114,227,232,254,254,192,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,128,241,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,111,241,253,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,230,253,253,203,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,92,166,254,254,240,150,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,244,254,253,234,146,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,198,198,148,210,253,215,169,143,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,178,253,191,140,52,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,119,163,228,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,239,245,159,108,134,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,167,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,18,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,83,0,0,0,0,0,0,0,33,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,234,82,0,0,0,0,0,12,228,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,122,223,103,0,0,0,8,166,233,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,250,152,0,0,95,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,248,116,90,230,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,106,255,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,166,253,192,171,224,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,194,13,47,248,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,245,160,16,0,0,146,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,194,16,0,0,0,95,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,127,0,0,0,0,37,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,231,51,0,0,0,37,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,222,231,95,0,0,50,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,249,253,200,116,181,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,105,221,253,240,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,155,255,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,157,253,253,253,172,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,253,253,253,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,253,253,253,253,253,233,202,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,253,253,253,253,253,253,253,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,253,253,253,253,194,249,253,253,253,253,224,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,253,219,34,34,155,230,174,243,253,225,30,0,0,0,0,0,0,0,0,0,0,0,0,9,200,253,253,233,201,35,0,0,0,0,0,74,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,102,0,0,0,0,0,0,0,30,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,221,8,0,0,0,0,0,0,0,30,253,253,170,0,0,0,0,0,0,0,0,0,0,0,30,240,253,253,48,0,0,0,0,0,0,0,0,30,253,253,72,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,29,0,0,0,0,0,0,0,0,83,253,253,53,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,29,0,0,0,0,0,0,0,68,202,253,220,26,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,29,0,0,0,0,0,0,14,200,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,13,200,253,253,127,2,0,0,0,0,0,190,253,248,184,25,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,128,0,0,16,102,183,247,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,253,252,201,201,213,253,253,253,150,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,152,242,253,253,253,253,253,253,110,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,193,253,253,170,135,36,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,150,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,155,252,252,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,252,252,252,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,231,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,227,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,252,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,252,252,210,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,236,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,185,255,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,238,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,187,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,225,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,190,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,216,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,247,252,113,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,43,87,148,148,245,253,253,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,213,252,252,253,252,252,252,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,189,247,252,238,231,127,126,118,21,21,21,144,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,252,185,28,0,0,0,59,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,182,4,0,0,0,0,232,225,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,253,21,0,0,0,0,233,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,135,0,0,15,121,247,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,251,92,66,192,252,242,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,184,252,252,252,253,205,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,252,252,129,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,183,253,253,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,245,210,29,167,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,243,82,0,64,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,64,252,229,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,45,0,0,126,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,173,0,0,8,197,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,244,128,127,181,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,196,252,253,252,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,174,253,252,244,147,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,189,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,166,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,54,54,17,0,0,0,93,248,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,217,254,209,55,0,0,32,221,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,99,18,0,0,0,114,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,249,0,0,0,0,0,163,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,134,0,0,0,0,3,232,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,119,0,0,0,0,162,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,11,0,0,0,13,221,183,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,179,4,0,0,0,78,255,141,3,60,137,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,147,0,0,0,0,169,254,176,141,254,204,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,147,0,0,0,23,218,255,254,250,145,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,147,0,0,72,146,254,254,204,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,252,250,250,253,254,254,206,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,254,254,252,225,246,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,89,89,80,0,178,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,135,0,43,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,242,164,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,144,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,222,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,250,253,253,184,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,183,8,0,0,59,172,185,79,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,250,253,253,131,0,58,106,240,253,253,253,220,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,38,21,215,253,253,253,253,253,253,247,114,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,232,49,186,253,253,253,211,104,85,232,253,238,26,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,228,206,253,253,253,184,20,0,0,163,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,208,20,0,0,0,163,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,253,253,242,92,0,0,0,7,177,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,40,241,253,253,253,253,181,0,0,0,6,134,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,253,189,20,0,19,68,253,253,253,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,43,221,251,253,253,253,227,150,224,253,253,253,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,251,253,253,253,253,253,253,253,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,253,253,249,159,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,123,227,219,123,123,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,124,8,0,0,0,0,0,0,49,255,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,253,54,0,0,0,0,0,64,221,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,253,160,7,0,0,0,0,60,248,253,192,19,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,253,251,120,0,0,0,0,17,221,253,248,106,0,0,0,0,0,0,0,0,0,0,0,0,0,61,181,253,253,122,0,0,0,0,67,192,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,253,253,250,67,0,0,0,3,161,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,15,98,215,253,253,202,64,0,0,0,35,180,253,253,253,234,45,0,0,0,0,0,0,0,0,0,0,0,44,240,253,253,245,23,0,0,19,87,218,253,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,26,209,253,253,253,248,125,125,178,237,253,253,253,247,226,55,4,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,253,253,253,253,253,253,253,253,253,253,121,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,238,253,253,237,242,253,253,253,253,206,22,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,86,86,22,48,253,253,253,241,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,197,253,253,198,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,224,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,143,253,253,241,106,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,249,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,253,243,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,170,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,225,254,181,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,191,251,254,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,223,254,254,187,128,250,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,222,254,252,111,9,0,110,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,176,254,251,112,0,0,0,62,254,232,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,163,0,0,0,0,62,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,251,75,8,0,0,8,172,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,245,254,160,122,210,163,133,210,254,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,162,237,254,254,254,254,254,254,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,254,254,254,254,254,254,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,241,254,254,255,254,203,252,254,238,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,78,96,32,8,80,253,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,239,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,255,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,204,254,241,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,148,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,246,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,251,227,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,236,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,187,239,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,186,254,168,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,44,0,0,0,0,0,0,55,254,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,224,244,13,0,0,0,0,0,0,126,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,206,254,136,0,0,0,0,0,0,0,159,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,250,59,0,0,0,0,0,0,39,241,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,254,111,0,0,0,0,0,0,0,147,254,224,36,0,0,0,0,0,0,0,0,0,0,0,0,2,181,254,210,10,0,0,0,0,0,0,3,187,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,181,6,6,6,4,3,7,106,115,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,8,233,254,254,254,254,254,219,216,254,254,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,186,239,239,239,239,162,139,59,67,239,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,244,254,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,241,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,223,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,211,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,43,147,147,200,186,147,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,254,254,254,254,254,215,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,185,254,254,254,254,254,254,254,254,247,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,254,254,221,164,211,227,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,233,254,254,254,183,15,0,0,24,243,254,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,142,10,0,0,0,0,239,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,235,254,183,10,0,0,0,0,58,249,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,236,202,43,0,0,0,0,19,194,254,234,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,9,0,0,0,0,2,114,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,227,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,254,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,219,254,250,147,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,222,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,250,254,254,206,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,254,254,208,14,6,28,28,100,136,90,136,227,245,73,0,0,0,0,0,0,0,0,0,0,0,2,178,254,254,254,227,75,152,254,254,254,254,254,255,254,218,56,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,254,254,254,254,254,254,254,254,254,254,212,68,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,254,254,254,254,254,254,241,247,222,253,246,39,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,254,254,254,254,143,184,144,44,58,0,73,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,180,250,126,38,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,242,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,250,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,249,251,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,231,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,229,246,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,232,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,159,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,240,255,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,214,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,233,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,49,164,170,169,169,170,140,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,209,253,253,254,253,253,253,253,198,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,242,253,253,253,254,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,217,168,169,168,180,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,116,36,21,0,0,0,6,181,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,198,253,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,106,232,254,254,254,198,254,254,255,223,29,0,0,0,0,0,0,0,0,0,0,0,0,0,3,42,218,253,253,253,253,253,253,254,253,253,253,198,25,17,0,0,0,0,0,0,0,0,0,0,0,25,167,253,253,253,253,236,253,253,253,254,253,253,253,253,253,221,157,157,157,0,0,0,0,0,0,0,0,156,253,253,253,253,253,213,253,253,253,206,209,253,253,253,253,253,253,232,251,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,230,140,72,0,7,90,193,222,222,134,193,52,69,0,0,0,0,0,0,0,0,128,253,253,204,198,232,140,37,0,0,0,0,0,0,29,29,0,0,0,0,0,0,0,0,0,0,0,0,3,48,48,16,12,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,64,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,7,13,117,191,76,7,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,83,100,145,223,167,173,253,253,253,203,133,145,65,7,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,253,253,254,253,253,253,184,38,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,198,193,254,253,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,220,253,243,123,94,60,60,60,6,0,60,118,88,253,253,236,37,0,0,0,0,0,0,0,0,0,0,0,25,48,41,0,0,0,0,0,0,0,0,0,7,144,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,201,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,59,254,254,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,89,88,212,253,253,253,253,160,145,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,203,254,253,253,253,253,253,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,253,254,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,254,253,253,253,253,253,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,245,253,253,254,253,253,253,236,88,60,118,60,32,0,0,0,0,0,0,0,0,0,0,0,0,0,25,222,253,253,253,254,253,253,214,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,254,253,239,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,254,243,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,150,149,242,253,11,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,9,189,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,196,246,247,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,132,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,168,205,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,165,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,165,252,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,244,118,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,252,252,253,252,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,252,252,252,253,252,252,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,211,252,252,168,253,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,221,43,108,253,252,252,116,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,253,169,180,253,255,253,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,189,253,252,252,252,252,253,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,246,253,252,252,252,252,173,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,253,252,252,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,252,136,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,13,13,13,13,13,128,133,132,132,156,167,167,253,253,201,12,0,0,0,0,0,0,0,0,19,145,160,252,252,252,252,252,252,252,253,250,228,228,228,228,236,252,252,131,0,0,0,0,0,0,0,0,132,252,252,252,243,216,216,216,216,101,96,87,0,0,0,0,102,252,252,115,0,0,0,0,0,0,0,0,50,204,186,84,64,0,0,0,0,0,0,0,0,0,0,49,237,252,231,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,173,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,201,252,252,143,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,214,252,228,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,239,252,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,191,252,252,145,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,252,252,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,255,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,252,235,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,174,252,179,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,183,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,210,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,216,228,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,88,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,231,51,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,255,253,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,252,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,201,208,252,112,0,0,0,0,0,57,135,13,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,100,9,57,252,128,0,0,0,0,95,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,57,252,252,0,0,0,16,203,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,206,25,169,190,0,0,26,207,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,6,43,214,253,252,199,94,12,38,210,231,252,252,215,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,119,246,252,246,197,222,252,252,252,141,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,252,245,129,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,127,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,176,187,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,204,25,169,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,87,215,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,112,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,252,158,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,246,252,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,246,252,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,173,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,22,29,130,210,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,128,201,252,221,232,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,237,252,253,252,252,252,252,241,231,169,21,21,0,0,0,0,0,0,0,0,0,0,0,16,64,109,73,246,252,252,253,252,221,189,101,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,221,252,253,191,252,252,252,236,112,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,201,253,253,150,27,141,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,252,231,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,180,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,202,64,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,252,252,218,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,232,253,253,255,218,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,154,252,253,252,247,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,21,83,205,251,247,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,217,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,218,30,0,0,8,25,148,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,221,190,190,201,226,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,237,252,252,252,253,252,252,226,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,138,147,147,147,147,50,24,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,222,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,99,242,246,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,129,252,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,242,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,252,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,179,0,0,0,0,21,144,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,180,0,0,0,218,253,253,255,211,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,179,0,42,218,247,252,252,253,252,206,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,231,181,221,253,252,205,71,232,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,169,252,252,252,253,210,31,0,109,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,255,35,16,191,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,222,222,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,220,215,236,253,252,252,252,217,91,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,0,62,191,232,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,178,254,241,144,53,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,254,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,223,154,154,223,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,128,0,0,71,253,241,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,136,61,0,0,67,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,131,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,139,253,249,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,79,198,254,253,171,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,254,253,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,143,47,33,187,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,131,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,55,0,0,5,188,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,153,45,79,198,255,242,118,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,253,210,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,191,143,143,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,138,245,21,0,0,0,0,0,0,0,0,0,0,0,0,43,151,38,0,0,0,0,0,0,0,0,0,161,252,87,0,0,0,0,0,0,0,0,0,0,0,19,112,246,253,206,0,0,0,0,0,0,0,0,49,228,252,45,0,0,0,0,0,0,0,0,0,0,17,136,252,252,98,37,0,0,0,0,0,0,0,0,138,252,227,29,0,0,0,0,0,0,0,0,0,0,151,252,252,95,0,0,0,0,0,0,0,0,0,0,243,252,183,0,0,0,0,0,0,0,0,0,0,3,170,253,245,21,0,0,0,0,0,0,0,0,0,0,255,253,184,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,74,253,252,183,0,0,0,0,0,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,116,253,252,151,0,0,0,0,0,0,0,0,0,0,15,219,252,194,9,0,0,0,0,0,0,0,0,0,210,253,235,44,0,0,0,0,0,0,0,0,0,0,0,57,252,252,179,53,0,0,0,0,0,0,0,0,230,253,248,63,0,0,0,0,0,0,0,0,0,0,0,22,206,253,253,255,253,169,44,24,24,24,24,66,243,255,249,230,42,0,0,0,0,0,0,0,0,0,0,0,25,223,252,253,252,252,252,252,253,252,252,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,121,184,227,252,252,252,253,240,183,208,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,45,88,56,46,37,0,93,252,245,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,232,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,64,0,0,144,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,249,69,146,217,174,251,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,254,97,23,18,7,194,228,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,181,253,254,13,0,0,0,187,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,223,9,0,0,0,82,253,233,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,180,253,253,106,0,0,0,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,232,0,0,0,0,0,17,199,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,253,252,107,0,0,0,0,0,0,174,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,240,0,0,0,0,0,0,0,174,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,169,0,0,0,0,0,0,0,174,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,228,0,0,0,0,0,0,0,0,175,255,107,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,253,99,0,0,0,0,0,0,0,108,249,242,62,0,0,0,0,0,0,0,0,0,0,0,35,215,253,253,167,10,0,0,0,0,0,0,25,212,253,226,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,208,13,0,0,0,0,0,0,0,110,253,219,35,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,199,0,0,0,0,0,0,0,64,242,253,177,0,0,0,0,0,0,0,0,0,0,0,0,23,233,253,253,101,0,0,0,0,0,0,49,188,253,185,21,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,207,21,0,0,0,0,41,98,245,253,186,21,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,229,132,120,161,161,161,255,253,253,188,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,253,253,253,253,253,255,240,120,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,169,253,253,253,253,253,253,182,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,71,0,0,0,0,11,92,152,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,232,203,203,203,203,213,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,214,253,254,253,254,253,254,253,254,253,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,253,171,50,50,50,91,253,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,123,0,0,0,11,173,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,212,0,0,0,0,92,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,233,82,0,0,0,0,21,214,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,111,0,0,0,0,0,142,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,82,0,0,0,0,0,113,253,224,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,41,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,224,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,128,64,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,64,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,128,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,0,64,191,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,0,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,128,191,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,202,230,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,146,240,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,230,254,254,252,151,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,240,254,254,105,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,203,254,254,150,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,254,254,30,0,0,9,17,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,199,8,0,83,210,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,128,6,162,243,254,254,254,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,104,231,254,254,187,154,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,171,254,242,109,42,60,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,215,165,248,77,0,0,102,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,205,41,65,0,0,24,214,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,248,239,69,0,0,0,158,255,254,208,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,203,53,23,189,252,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,242,254,252,251,254,254,254,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,238,254,254,254,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,199,254,215,100,121,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,69,94,157,242,254,254,255,254,193,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,97,230,254,254,254,254,232,229,230,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,254,192,99,56,7,0,2,197,254,238,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,179,94,11,0,0,0,0,5,218,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,32,1,0,0,0,0,0,0,54,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,244,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,5,25,185,254,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,73,181,238,254,254,254,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,254,254,254,254,254,254,249,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,254,254,218,251,254,178,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,254,231,188,79,5,137,253,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,109,37,0,0,0,0,225,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,50,159,93,0,0,0,0,0,0,0,198,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,101,0,0,0,0,0,0,7,251,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,101,0,0,0,0,0,0,138,254,245,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,202,18,0,0,0,0,72,231,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,154,254,254,230,161,137,99,74,230,254,231,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,191,254,254,254,254,254,254,254,233,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,35,145,173,208,254,211,152,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,159,159,238,226,249,252,159,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,182,223,226,134,129,64,50,133,234,235,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,236,146,37,0,0,0,0,0,0,19,203,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,111,1,0,0,0,0,0,0,0,0,77,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,75,11,0,0,0,0,0,0,0,0,0,39,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,224,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,210,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,233,90,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,135,230,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,214,221,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,95,242,158,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,173,235,53,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,198,219,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,120,239,183,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,168,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,127,0,0,0,0,0,0,0,26,26,26,0,11,68,50,0,0,0,0,0,0,0,0,0,0,0,73,246,248,226,226,226,226,226,226,226,237,237,237,226,231,254,247,25,0,0,0,0,0,0,0,0,0,0,0,46,156,204,185,158,158,158,158,152,128,122,158,158,158,120,62,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,180,249,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,4,0,8,67,111,174,228,254,248,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,129,244,183,157,230,254,254,217,156,94,92,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,133,254,220,195,254,254,254,38,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,185,254,107,6,45,96,96,63,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,194,254,175,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,255,254,212,186,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,89,143,187,226,241,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,222,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,86,188,254,216,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,172,172,172,237,241,251,254,251,163,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,249,240,240,175,167,103,73,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,255,191,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,64,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,64,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,86,86,86,114,170,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,57,255,255,255,255,255,226,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,255,0,0,0,29,86,86,0,57,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,170,255,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,57,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,170,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,170,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,170,114,86,57,29,86,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,255,255,255,255,255,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,255,255,255,255,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,86,86,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,212,255,184,128,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,97,240,253,254,254,254,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,241,254,189,106,21,8,8,88,42,7,74,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,237,88,2,0,0,0,0,0,0,156,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,237,27,0,0,0,0,0,0,0,16,229,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,189,0,0,0,0,0,0,0,59,187,254,250,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,247,100,57,57,73,142,142,213,249,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,250,254,254,254,254,254,254,254,236,254,249,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,121,198,159,195,133,78,34,198,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,126,246,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,250,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,244,238,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,211,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,233,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,201,254,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,199,254,202,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,192,251,238,216,251,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,215,255,196,54,0,89,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,241,254,182,10,0,0,48,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,250,248,102,7,0,0,0,48,232,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,223,254,107,0,0,0,0,0,97,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,212,254,116,11,0,0,0,0,54,248,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,203,4,0,0,0,0,27,216,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,244,53,0,0,0,0,40,211,254,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,200,0,0,0,0,154,247,218,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,117,0,0,43,195,238,126,10,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,78,105,188,239,225,56,0,59,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,254,254,248,119,15,0,0,104,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,178,146,35,0,0,0,0,104,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,216,200,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,233,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,212,221,96,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,190,77,72,0,0,0,0,30,88,185,185,36,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,254,254,252,223,223,223,223,235,254,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,254,254,254,254,254,254,254,254,254,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,254,254,254,254,254,254,254,254,254,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,142,27,110,135,158,244,234,135,232,254,254,201,3,0,0,0,0,0,0,0,0,0,0,0,0,94,254,239,22,0,0,0,0,0,0,33,216,254,242,35,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,173,0,0,0,0,0,0,0,168,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,116,0,0,0,0,0,0,81,248,254,229,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,251,254,219,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,222,254,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,237,254,246,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,255,231,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,228,254,201,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,141,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,170,170,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,255,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,141,86,170,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,0,0,0,29,226,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,29,0,0,0,0,141,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,114,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,29,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,29,0,0,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,226,114,141,226,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,79,255,253,178,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,197,252,253,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,234,252,214,168,93,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,234,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,246,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,141,141,141,141,79,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,253,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,252,252,253,233,168,243,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,96,0,25,253,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,178,101,0,0,0,254,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,103,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,252,177,0,0,0,89,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,38,225,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,253,242,66,154,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,252,252,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,253,252,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,252,214,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,118,118,141,248,248,248,170,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,251,253,253,253,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,228,253,253,253,253,253,253,188,149,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,230,226,253,238,72,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,32,25,50,225,248,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,242,220,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,176,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,235,253,224,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,199,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,198,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,234,253,221,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,40,40,40,40,40,40,40,161,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,205,253,253,253,253,253,253,253,253,253,253,237,76,12,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,191,156,146,25,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,253,248,234,234,234,234,247,253,253,253,248,150,83,0,0,0,0,0,0,0,0,0,168,246,253,253,253,249,200,79,0,0,0,0,74,127,240,240,240,240,246,0,0,0,0,0,0,0,0,0,0,51,117,117,117,78,0,0,0,0,0,0,0,0,0,0,0,3,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,151,172,172,134,48,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,254,254,254,224,166,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,254,254,254,234,233,252,254,250,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,253,222,188,74,28,64,125,179,143,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,153,34,25,0,10,125,168,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,221,177,36,42,179,254,254,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,187,242,254,254,254,254,202,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,233,254,254,254,254,254,254,235,149,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,169,254,254,254,254,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,254,254,254,236,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,100,172,254,254,254,254,198,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,254,254,254,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,250,254,254,254,254,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,251,254,254,254,247,94,202,254,169,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,254,160,0,156,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,255,180,9,5,245,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,254,31,17,157,254,254,254,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,98,236,251,180,228,254,254,254,254,214,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,235,254,206,209,254,245,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,139,229,25,31,67,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,158,254,254,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,78,233,253,253,253,254,181,60,60,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,253,253,254,253,253,253,227,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,253,253,253,182,253,254,253,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,238,253,253,213,37,140,253,179,55,38,214,253,250,106,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,249,105,0,14,74,0,0,0,106,250,253,134,2,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,143,0,0,0,0,0,0,0,0,145,253,253,14,0,0,0,0,0,0,0,0,0,0,0,22,196,253,226,48,0,0,0,0,0,0,0,0,75,253,253,14,0,0,0,0,0,0,0,0,0,0,0,87,253,253,178,0,0,0,0,0,0,0,0,0,18,196,253,128,0,0,0,0,0,0,0,0,0,0,0,209,253,253,178,0,0,0,0,0,0,0,0,0,0,179,253,163,0,0,0,0,0,0,0,0,0,0,0,211,254,254,179,0,0,0,0,0,0,0,0,0,0,181,254,255,59,0,0,0,0,0,0,0,0,0,0,209,253,253,178,0,0,0,0,0,0,0,0,0,0,179,253,178,11,0,0,0,0,0,0,0,0,0,0,209,253,253,178,0,0,0,0,0,0,0,0,0,0,179,253,163,0,0,0,0,0,0,0,0,0,0,0,209,253,253,178,0,0,0,0,0,0,0,0,0,36,214,253,93,0,0,0,0,0,0,0,0,0,0,0,77,253,253,178,0,0,0,0,0,0,0,0,0,75,253,253,14,0,0,0,0,0,0,0,0,0,0,0,18,85,253,231,162,30,2,0,0,0,0,0,0,93,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,253,253,141,112,0,0,0,0,64,240,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,1,85,243,253,253,253,251,239,241,239,239,246,253,225,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,165,232,253,253,253,254,253,253,253,169,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,156,253,253,255,129,104,104,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,89,236,253,229,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,198,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,247,253,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,211,253,253,253,218,61,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,253,215,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,199,253,253,253,136,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,231,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,246,253,253,213,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,243,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,231,76,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,246,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,196,23,0,5,30,169,128,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,207,46,116,157,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,230,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,214,253,253,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,199,250,253,253,253,253,253,163,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,211,253,253,253,178,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,215,254,215,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,253,253,253,253,210,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,241,253,221,232,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,54,8,30,189,254,237,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,237,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,233,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,199,218,254,233,23,0,0,0,0,0,0,0,0,0,0,0,0,14,20,0,0,0,0,0,0,0,0,128,253,253,254,233,23,0,0,0,0,0,0,0,0,0,0,0,0,14,20,66,33,33,0,0,0,0,0,14,187,254,255,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,230,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,128,218,217,217,217,217,218,217,222,253,253,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,107,241,253,254,253,253,253,253,254,253,253,253,253,161,14,0,0,0,0,0,0,0,0,0,0,0,0,20,230,253,253,254,201,162,168,253,254,253,253,253,253,254,192,13,0,0,0,0,0,0,0,0,0,0,0,20,231,254,195,66,0,0,38,195,255,254,243,181,233,255,254,88,0,0,0,0,0,0,0,0,0,0,0,0,217,253,181,55,74,158,243,253,254,221,60,0,13,254,253,216,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,254,253,253,253,253,191,34,0,0,0,254,253,216,0,0,0,0,0,0,0,0,0,0,0,0,40,230,253,254,253,237,196,80,0,0,0,0,46,254,249,104,0,0,0,0,0,0,0,0,0,0,0,0,0,57,105,105,105,11,0,0,0,0,0,0,181,254,185,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,39,135,167,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,240,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,149,254,254,223,140,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,196,218,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,220,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,243,254,121,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,102,200,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,161,198,233,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,220,201,145,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,254,254,254,219,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,254,207,225,254,221,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,199,254,254,199,48,11,43,254,254,249,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,180,8,0,0,1,54,234,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,124,0,0,6,190,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,215,254,245,38,0,113,254,254,243,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,222,254,252,204,252,254,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,218,254,254,254,212,76,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,100,185,152,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,117,141,204,253,216,141,141,66,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,179,252,252,252,253,252,252,252,253,252,224,44,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,252,253,252,252,252,253,252,252,252,253,252,252,228,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,253,252,214,139,28,28,28,28,140,165,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,101,247,228,101,0,0,0,0,0,0,0,29,216,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,9,0,0,0,0,0,0,19,157,216,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,110,215,252,253,233,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,225,241,252,252,252,253,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,253,253,254,253,216,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,197,121,84,84,197,234,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,82,159,10,0,0,19,56,0,0,0,0,0,38,171,252,247,66,0,0,0,0,0,0,0,0,0,0,0,169,177,3,0,0,0,0,0,0,0,0,0,0,10,178,253,133,0,0,0,0,0,0,0,0,0,0,0,157,253,103,0,0,0,0,0,0,0,0,0,0,0,0,242,228,31,0,0,0,0,0,0,0,0,0,0,19,215,252,51,0,0,0,0,0,0,0,0,0,0,0,216,252,56,0,0,0,0,0,0,0,0,0,0,0,110,252,247,66,0,0,0,0,0,0,0,0,0,38,253,252,56,0,0,0,0,0,0,0,0,0,0,0,10,178,253,234,100,0,0,0,0,0,0,0,76,237,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,141,66,29,29,141,216,253,253,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,234,252,252,253,252,252,252,253,252,252,252,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,171,252,253,252,252,252,253,252,252,214,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,153,252,252,252,253,227,103,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,95,161,255,255,255,255,148,82,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,34,217,253,253,253,253,253,253,253,253,147,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,213,253,253,253,253,253,253,253,253,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,27,213,253,253,253,253,253,253,253,245,228,250,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,3,162,253,253,253,253,253,253,253,253,182,32,222,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,16,238,253,253,253,253,253,253,253,253,253,253,253,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,243,243,253,253,253,253,253,235,15,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,253,253,253,253,234,234,253,253,253,253,209,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,253,253,253,253,253,253,234,92,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,253,253,253,253,253,253,233,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,253,253,253,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,253,253,253,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,158,253,253,239,148,76,192,253,253,238,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,167,0,0,63,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,176,13,0,0,63,253,253,184,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,155,34,0,71,198,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,238,230,246,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,205,253,253,253,253,253,253,253,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,144,253,253,253,165,99,66,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,168,253,229,143,191,143,143,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,162,253,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,213,252,253,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,252,252,253,252,234,230,230,230,230,230,230,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,252,252,252,208,88,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,166,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,232,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,252,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,246,252,252,195,188,187,187,187,187,187,182,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,252,253,252,252,252,252,252,252,213,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,177,245,253,255,253,253,253,253,253,253,253,220,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,77,172,77,77,77,77,77,238,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,236,252,252,33,0,0,0,0,0,0,0,0,51,165,198,198,127,89,8,0,0,0,0,0,0,47,113,217,252,252,225,21,0,0,0,0,0,0,0,0,239,252,252,252,252,252,233,231,231,183,122,122,213,242,252,252,252,246,72,0,0,0,0,0,0,0,0,0,125,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,231,82,0,0,0,0,0,0,0,0,0,0,9,95,175,175,226,252,252,252,252,252,253,252,252,252,235,136,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,33,86,142,142,142,253,252,161,85,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,178,255,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,208,132,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,222,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,184,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,227,253,253,253,179,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,244,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,176,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,184,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,166,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,254,254,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,229,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,254,145,120,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,235,254,144,4,139,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,188,254,194,4,21,233,239,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,228,26,0,35,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,155,36,0,0,129,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,247,239,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,217,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,141,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,218,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,87,172,195,254,254,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,255,251,235,163,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,168,122,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,125,125,245,255,254,255,255,254,221,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,205,135,135,135,172,253,253,252,154,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,23,7,0,0,0,4,12,75,253,253,221,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,1,0,0,0,0,0,0,5,49,224,253,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,223,253,220,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,126,223,236,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,87,183,183,159,18,33,253,244,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,46,153,198,253,253,253,253,201,186,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,184,253,241,177,84,84,111,214,240,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,185,253,242,86,0,0,0,0,0,61,178,253,246,155,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,244,84,0,0,0,0,0,0,0,114,253,253,248,153,13,0,0,0,0,0,0,0,0,0,0,0,97,251,162,0,0,0,0,0,0,4,108,216,251,166,235,253,123,0,0,0,0,0,0,0,0,0,0,0,0,228,214,101,10,0,0,0,10,124,253,252,148,0,6,110,54,0,0,0,0,0,0,0,0,0,0,0,0,155,252,253,217,137,137,137,221,253,249,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,253,253,253,230,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,237,255,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,234,253,242,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,56,232,247,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,181,253,128,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,229,253,187,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,192,253,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,241,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,230,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,188,253,182,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,233,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,218,16,58,112,171,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,253,246,211,241,253,253,241,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,235,160,160,231,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,239,72,24,0,55,246,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,216,0,0,0,175,253,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,216,0,77,200,249,223,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,252,242,250,253,224,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,97,253,253,229,129,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,228,211,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,214,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,255,254,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,254,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,168,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,198,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,231,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,255,254,254,170,152,141,101,101,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,243,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,253,175,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,214,252,247,214,227,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,97,0,39,115,186,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,186,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,253,253,253,193,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,240,253,253,253,253,247,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,233,253,253,253,253,253,231,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,116,250,253,253,253,253,253,253,253,253,131,116,116,17,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,253,253,253,253,253,253,253,253,253,253,221,216,125,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,214,29,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,253,253,253,227,247,253,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,19,99,249,253,253,108,99,99,99,99,51,88,99,99,99,197,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,99,140,244,255,254,254,254,244,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,243,253,254,253,254,253,254,253,254,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,249,155,94,73,42,63,213,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,228,253,211,134,0,0,0,0,0,47,253,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,217,11,0,0,0,0,0,0,21,238,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,196,11,0,0,0,0,63,166,218,248,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,150,11,0,6,140,249,176,213,254,249,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,253,253,218,125,161,253,249,197,254,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,238,255,254,255,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,171,253,254,253,223,160,78,78,254,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,239,42,0,0,0,0,130,254,213,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,249,31,0,0,0,0,26,233,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,181,32,11,0,0,0,0,0,145,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,180,0,0,0,0,0,0,0,83,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,160,0,0,0,0,0,0,0,73,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,180,0,0,0,0,0,0,0,135,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,94,0,0,0,0,0,6,182,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,249,176,63,0,0,21,161,253,243,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,135,244,254,254,254,254,254,254,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,149,181,243,254,232,150,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,194,25,0,0,0,141,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,178,0,0,0,176,244,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,149,0,0,0,141,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,161,253,32,0,0,0,141,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,183,0,0,0,0,141,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,230,230,12,0,0,0,0,141,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,250,193,0,0,0,0,0,141,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,250,240,67,0,0,0,0,0,141,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,215,253,106,0,0,0,0,0,0,186,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,155,3,81,95,95,95,56,28,241,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,254,254,254,254,255,254,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,253,220,215,170,122,210,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,149,142,56,56,9,0,21,0,27,221,216,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,219,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,216,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,214,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,198,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,186,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,166,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,225,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,134,253,253,179,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,250,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,248,253,243,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,234,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,218,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248,253,246,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,190,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,184,253,253,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,235,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,113,254,201,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,159,254,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,186,254,254,254,188,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,186,254,254,205,113,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,230,254,254,206,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,254,254,205,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,181,254,254,208,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,182,254,254,211,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,235,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,254,235,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,236,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,254,254,213,10,0,0,0,0,0,7,54,59,14,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,236,45,0,0,0,0,9,116,216,254,254,241,94,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,202,0,0,0,0,59,191,254,254,254,227,248,241,56,0,0,0,0,0,0,0,0,0,0,0,99,254,254,91,0,0,0,114,252,255,238,151,67,10,121,254,204,8,0,0,0,0,0,0,0,0,0,0,99,254,226,8,0,0,114,251,254,162,25,0,0,38,195,254,241,13,0,0,0,0,0,0,0,0,0,0,99,254,239,27,0,51,251,254,163,11,4,58,106,237,254,254,125,0,0,0,0,0,0,0,0,0,0,0,25,254,254,181,66,135,254,254,132,177,231,254,254,254,220,72,3,0,0,0,0,0,0,0,0,0,0,0,7,139,254,254,254,254,254,254,254,255,254,254,244,140,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,82,211,254,254,254,254,254,225,171,103,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,228,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,241,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,238,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,224,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,241,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,246,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,248,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,161,254,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,218,255,124,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,220,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,248,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,234,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,154,254,254,255,254,255,158,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,241,236,239,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,107,107,41,0,100,146,38,0,24,146,240,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,97,208,253,253,98,0,0,0,0,0,0,0,222,253,179,0,0,0,0,0,0,0,0,0,0,0,0,17,186,253,253,141,50,0,0,0,0,0,0,0,222,253,179,0,0,0,0,0,0,0,0,0,0,0,21,182,253,243,114,4,0,0,0,0,0,0,0,0,222,253,179,0,0,0,0,0,0,0,0,0,0,0,107,253,253,114,0,0,0,0,0,0,0,0,0,0,222,253,179,0,0,0,0,0,0,0,0,0,0,15,240,253,141,4,0,0,0,0,0,0,0,0,0,120,250,253,30,0,0,0,0,0,0,0,0,0,0,118,253,253,129,0,0,0,0,0,0,0,0,0,26,206,253,253,15,0,0,0,0,0,0,0,0,0,0,180,253,221,4,0,0,0,0,0,0,0,0,0,95,253,253,205,10,0,0,0,0,0,0,0,0,0,62,230,253,220,0,0,0,0,0,0,0,0,0,4,207,253,208,34,0,0,0,0,0,0,0,0,0,0,91,253,253,156,0,0,0,0,0,0,0,0,74,169,253,253,32,0,0,0,0,0,0,0,0,0,0,0,91,253,253,56,0,0,0,0,0,0,1,89,237,253,249,143,8,0,0,0,0,0,0,0,0,0,0,0,91,253,253,56,0,0,0,0,0,0,9,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,56,0,0,0,0,0,14,154,253,249,137,9,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,141,0,0,0,0,0,167,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,236,253,249,141,9,0,53,159,252,251,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,164,148,243,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,210,253,253,253,253,253,207,126,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,89,168,253,253,210,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,85,117,225,225,226,240,225,130,38,0,0,0,0,0,0,0,0,120,197,197,181,57,57,182,119,119,197,222,252,252,252,252,253,252,252,252,221,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,253,252,252,233,223,225,233,252,252,252,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,253,127,112,37,0,0,85,252,252,173,0,0,0,0,0,0,0,0,0,0,111,126,79,141,140,140,47,0,0,0,0,0,0,51,238,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,242,114,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,200,252,245,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,69,43,32,0,18,0,40,96,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,238,191,218,191,248,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,78,21,92,127,127,127,38,211,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,63,0,0,0,0,0,0,169,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,219,11,0,0,0,0,0,0,169,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,248,220,11,0,0,0,0,0,0,170,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,63,0,0,0,0,0,0,169,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,63,0,0,0,0,0,0,169,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,63,0,0,0,0,0,0,143,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,148,37,0,0,0,0,0,0,64,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,230,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,113,240,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,176,253,253,129,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,232,253,237,126,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,149,231,253,202,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,179,253,244,123,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,227,253,210,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,226,253,212,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,226,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,180,227,253,218,74,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,228,253,253,127,20,0,0,0,0,0,58,115,192,140,39,0,0,0,0,0,0,0,0,0,0,0,10,229,253,238,82,19,0,0,0,0,96,199,244,253,253,253,174,40,0,0,0,0,0,0,0,0,0,0,74,253,253,238,47,0,0,0,150,205,243,253,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,74,253,253,166,16,0,0,150,242,253,253,226,166,60,228,253,253,32,0,0,0,0,0,0,0,0,0,0,8,213,253,173,34,0,149,243,253,253,143,25,0,126,249,253,157,2,0,0,0,0,0,0,0,0,0,0,7,197,253,238,111,181,244,253,253,84,7,32,203,249,253,201,24,0,0,0,0,0,0,0,0,0,0,0,7,145,253,253,253,253,253,253,253,235,230,237,253,253,253,46,2,0,0,0,0,0,0,0,0,0,0,0,0,11,152,253,253,253,253,253,253,253,253,253,253,52,18,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,88,152,253,253,253,253,253,161,135,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,150,253,253,223,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,91,91,91,154,254,254,255,254,255,158,6,0,0,0,0,0,0,0,0,0,0,0,7,17,17,17,108,199,253,253,253,253,253,253,253,253,253,253,15,0,0,0,0,0,0,0,0,0,0,7,168,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,15,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,253,253,233,220,220,220,220,235,253,253,253,234,13,0,0,0,0,0,0,0,0,0,0,9,182,253,193,129,129,129,50,0,0,0,0,116,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,17,40,21,0,0,0,0,0,0,0,5,142,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,217,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,191,253,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,214,253,253,253,240,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,193,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,214,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,253,253,186,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,252,253,253,246,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,89,201,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,70,133,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,0,0,0,3,16,44,105,189,247,239,135,12,0,0,0,0,0,0,0,0,0,0,0,0,0,41,186,219,53,86,117,188,254,255,237,150,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,86,237,254,254,254,254,231,192,148,88,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,248,254,254,247,181,93,46,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,189,254,205,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,249,145,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,209,232,166,178,155,138,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,167,232,232,232,232,232,251,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,29,0,0,0,0,3,155,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,196,0,0,0,0,30,238,201,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,222,36,0,0,53,213,238,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,216,201,162,221,248,224,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,137,146,146,81,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,165,168,254,255,203,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,221,121,103,103,103,168,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,136,14,0,0,0,0,59,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,232,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,226,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,69,229,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,153,254,254,207,174,101,85,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,125,94,31,145,182,216,254,251,132,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,17,19,166,235,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,217,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,227,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,1,0,0,0,0,0,0,0,0,216,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,23,0,0,0,0,0,0,0,149,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,108,0,0,0,0,0,0,63,220,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,180,2,0,0,2,62,205,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,93,93,103,145,253,180,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,96,164,238,209,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,93,136,136,236,255,249,123,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,86,156,253,253,228,218,173,152,219,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,179,253,252,200,126,25,0,0,0,93,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,237,253,190,68,0,0,0,0,0,32,220,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,127,238,187,68,6,0,0,0,0,0,34,217,249,151,16,0,0,0,0,0,0,0,0,0,0,0,0,0,154,206,8,0,0,0,0,0,0,83,217,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,0,0,0,0,0,4,117,251,251,142,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,168,253,235,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,42,100,168,253,226,63,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,177,239,253,253,253,253,253,253,225,177,62,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,221,173,59,59,86,176,205,253,253,219,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,158,62,24,0,0,0,0,0,16,41,161,253,246,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,105,253,253,197,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,27,156,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,142,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,62,223,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,219,253,253,176,15,0,0,0,0,0,0,0,0,0,0,0,51,84,117,201,201,89,84,31,59,174,146,249,253,205,94,15,0,0,0,0,0,0,0,0,0,0,0,8,193,253,253,253,253,253,253,232,243,253,253,209,147,15,0,0,0,0,0,0,0,0,0,0,0,0,0,10,135,55,17,17,122,137,253,178,108,53,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,151,0,0,0,123,203,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,50,0,0,0,163,142,162,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,203,20,0,0,0,0,0,163,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,142,0,0,0,0,0,0,162,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,203,0,0,0,0,0,0,203,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,203,0,0,0,0,0,41,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,203,0,0,0,0,21,214,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,223,20,0,0,0,102,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,234,30,0,0,11,173,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,91,0,0,173,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,92,173,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,129,129,129,157,184,148,169,140,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,141,202,237,254,254,254,254,254,254,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,37,228,247,226,204,181,164,127,101,75,94,30,115,197,254,12,0,0,0,0,0,0,0,0,0,0,0,0,2,133,62,5,3,0,0,0,0,0,0,0,0,136,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,97,243,175,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,179,254,211,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,98,223,254,90,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,53,110,133,198,214,214,226,254,254,107,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,165,234,254,254,254,254,254,254,254,254,254,231,69,0,0,0,0,0,0,0,0,0,0,0,0,65,169,246,254,254,254,254,245,225,177,156,172,204,254,254,251,109,0,0,0,0,0,0,0,0,0,0,98,253,254,252,155,135,248,217,96,3,0,0,0,2,68,202,254,253,55,0,0,0,0,0,0,0,0,0,255,254,254,240,177,110,25,22,0,0,0,0,0,0,0,10,181,254,234,15,0,0,0,0,0,0,0,0,146,254,237,74,46,0,0,0,0,0,0,0,0,0,0,0,11,226,254,216,0,0,0,0,0,0,0,0,7,121,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,74,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,39,39,39,204,233,233,233,235,143,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,251,251,251,251,251,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,155,222,251,251,251,251,251,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,251,251,251,251,251,251,251,251,251,253,251,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,209,196,173,173,173,173,197,251,251,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,35,0,0,0,0,78,251,251,253,251,156,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,212,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,255,253,118,59,59,59,59,59,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,253,251,251,251,251,251,251,251,178,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,253,251,251,251,251,251,251,251,251,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,239,233,251,253,251,251,251,251,251,251,251,125,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,107,84,229,253,251,251,251,251,251,251,251,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,132,251,251,251,251,251,251,251,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,37,37,37,37,37,187,37,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,111,186,253,253,215,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,162,253,252,252,252,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,194,252,240,153,62,62,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,176,248,246,134,9,0,0,3,176,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,243,137,0,0,0,0,23,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,252,252,122,0,0,0,0,79,203,252,252,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,252,136,9,0,0,0,0,152,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,252,237,18,0,0,0,0,0,161,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,191,7,0,0,0,0,83,241,252,252,225,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,123,111,111,111,111,209,252,252,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,253,253,253,253,253,255,253,253,253,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,186,186,186,186,186,187,232,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,206,252,234,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,252,218,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,226,253,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,232,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,238,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,255,119,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,223,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,205,253,253,253,176,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,193,248,253,253,253,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,222,253,253,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,86,14,225,253,253,250,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,253,253,178,21,0,112,253,253,245,217,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,185,11,0,0,70,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,243,253,253,123,0,0,0,70,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,231,37,0,0,0,70,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,222,253,253,147,0,0,0,0,70,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,253,230,50,0,0,0,0,112,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,168,0,0,0,0,0,224,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,250,253,253,98,0,0,0,11,116,237,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,52,0,33,62,173,253,253,249,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,222,162,209,253,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,253,253,253,253,253,157,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,253,253,215,124,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,123,253,253,253,173,99,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,64,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,64,128,128,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,64,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,64,64,0,128,128,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,128,128,128,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,125,211,255,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,151,248,252,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,219,251,253,253,253,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,241,253,253,253,253,151,19,176,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,148,250,253,253,253,253,200,7,42,245,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,253,147,0,46,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,253,198,10,0,46,253,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,253,191,63,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,229,141,11,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,196,58,0,0,0,0,14,166,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,65,8,0,0,0,0,14,166,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,53,93,183,183,199,253,253,253,203,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,188,253,253,253,253,253,253,253,246,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,94,202,253,253,253,253,253,253,253,246,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,196,253,253,225,221,231,253,253,253,253,207,0,0,0,20,107,160,33,0,0,0,0,0,0,0,0,77,201,253,253,179,12,67,186,253,253,253,253,212,23,4,40,214,253,253,253,0,0,0,0,0,0,0,0,201,253,253,253,43,134,238,253,253,253,253,253,253,237,163,253,253,253,253,243,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,243,240,243,253,253,253,253,253,253,253,237,54,0,0,0,0,0,0,0,0,184,253,253,253,253,253,251,247,50,0,27,212,253,253,252,247,247,167,0,0,0,0,0,0,0,0,0,0,61,123,123,123,123,123,82,0,0,0,0,26,123,123,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,152,237,254,254,255,254,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,164,237,253,254,218,138,83,39,154,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,246,253,254,216,167,54,5,0,0,0,100,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,169,53,6,0,0,0,0,0,0,35,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,245,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,242,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,240,203,44,44,44,44,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,254,254,254,254,205,85,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,184,169,133,133,162,212,254,254,166,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,51,177,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,209,254,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,10,137,244,254,198,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,87,122,147,223,254,247,127,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,118,250,210,248,254,252,199,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,254,250,201,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,167,197,87,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,215,229,154,125,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,254,255,254,156,209,249,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,179,50,143,226,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,122,0,61,250,254,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,45,79,206,254,254,254,254,251,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,228,248,254,254,254,254,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,254,191,75,122,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,156,241,254,234,45,17,201,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,52,39,0,90,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,202,254,254,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,237,254,254,246,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,167,254,254,246,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,74,236,254,254,248,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,170,254,254,254,218,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,225,254,254,254,205,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,254,254,254,207,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,252,140,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,56,131,247,139,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,162,254,254,254,249,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,181,254,254,254,246,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,234,254,254,254,244,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,233,254,254,254,178,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,232,254,254,254,116,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,232,254,254,241,108,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,75,231,254,254,215,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,254,254,254,178,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,152,254,254,254,224,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,152,254,254,254,254,254,238,193,153,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,254,254,254,254,254,254,254,254,254,166,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,254,241,173,173,143,83,237,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,242,78,0,0,0,0,96,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,254,254,111,0,0,0,0,0,75,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,6,241,254,254,118,11,0,0,0,0,76,206,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,232,10,0,0,0,24,136,249,254,254,218,22,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,253,222,113,113,113,205,254,254,221,103,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,254,254,254,254,254,254,254,167,103,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,130,142,255,255,255,169,42,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,180,255,240,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,227,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,253,212,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,247,253,253,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,177,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,249,222,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,211,253,253,222,0,0,8,78,78,78,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,115,0,69,184,253,253,253,218,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,211,50,124,242,253,253,253,253,253,221,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,98,92,253,253,253,253,253,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,99,251,253,253,253,253,253,248,238,162,84,188,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,80,250,253,253,253,253,253,176,0,0,0,87,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,253,253,253,227,38,26,0,0,0,169,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,142,248,253,253,253,223,8,8,8,8,144,223,253,213,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,253,253,253,253,203,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,170,253,253,253,253,253,253,253,238,96,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,99,244,253,173,99,99,99,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,189,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,194,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,187,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,219,255,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,196,250,238,166,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,250,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,230,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,231,210,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,112,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,208,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,179,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,78,156,209,165,43,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,157,252,252,252,252,253,205,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,252,252,252,253,252,225,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,252,252,252,227,252,252,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,252,226,59,42,182,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,222,106,0,0,0,36,224,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,63,16,0,0,0,0,0,48,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,210,252,215,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,218,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,85,85,85,85,85,57,0,0,211,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,2,92,127,192,252,252,252,252,253,246,232,232,249,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,252,253,252,252,252,252,253,252,252,252,252,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,252,253,252,252,252,252,253,252,252,252,252,253,203,9,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,194,106,53,0,0,62,120,156,253,253,255,253,188,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,129,57,71,0,71,146,211,252,252,252,160,231,231,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,246,249,232,249,253,252,252,252,244,53,51,72,0,0,0,0,0,0,0,0,0,0,0,64,247,252,252,253,252,252,252,252,253,252,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,253,252,252,252,252,253,252,235,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,250,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,95,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,254,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,236,253,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,253,152,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,137,248,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,206,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,18,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,226,254,203,17,13,140,254,254,255,254,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,212,192,253,254,253,253,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,226,253,253,253,253,253,254,253,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,205,253,253,253,253,253,206,135,102,214,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,233,253,253,253,227,77,0,0,9,155,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,191,45,0,0,42,156,253,253,232,121,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,253,253,253,76,41,82,92,233,253,253,233,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,240,235,252,254,253,193,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,165,201,253,253,253,253,253,254,191,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,35,225,253,253,253,195,70,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,239,254,255,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,254,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,237,254,248,194,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,238,254,187,144,108,254,254,243,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,209,254,220,36,0,92,111,217,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,72,0,0,0,0,104,254,221,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,175,6,0,0,0,0,26,248,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,254,68,0,0,0,0,0,0,157,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,184,2,0,0,0,0,0,0,156,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,252,66,0,0,0,0,0,0,0,156,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,202,0,0,0,0,0,0,0,10,200,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,125,0,0,0,0,0,0,0,47,250,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,123,0,0,0,0,0,0,1,93,251,232,22,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,254,67,0,0,0,0,0,0,33,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,232,3,0,0,0,0,0,12,224,254,189,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,231,0,0,0,0,0,7,162,254,208,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,220,251,72,0,0,0,38,176,254,236,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,197,27,27,130,231,254,230,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,228,254,254,254,254,251,155,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,199,254,254,202,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,41,0,0,0,0,0,178,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,94,0,0,0,9,231,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,111,0,0,0,50,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,240,3,0,0,0,113,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,200,0,0,0,0,155,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,169,0,0,0,8,211,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,168,0,0,0,47,253,133,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,168,0,0,0,114,253,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,249,224,169,189,246,253,253,234,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,253,253,253,254,249,147,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,107,141,141,255,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,249,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,223,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,240,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,242,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,18,18,18,134,136,136,136,43,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,36,111,177,253,253,253,253,253,253,253,253,214,99,0,0,0,0,0,0,0,0,0,0,0,0,19,158,173,253,253,253,253,253,253,253,247,200,200,200,200,200,0,0,0,0,0,0,0,0,0,10,72,159,212,253,253,253,253,203,182,138,96,251,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,216,162,47,47,14,0,0,154,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,191,5,0,0,0,0,134,251,149,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,154,247,252,253,185,59,3,2,133,252,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,230,252,253,183,168,253,253,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,193,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,251,253,253,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,238,225,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,201,249,253,253,179,19,126,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,101,250,253,253,253,181,3,0,60,253,252,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,243,119,5,0,0,74,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,218,79,0,23,27,123,227,253,191,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,201,183,183,216,223,253,253,234,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,253,253,253,253,253,240,143,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,253,253,157,153,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,17,17,17,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,255,206,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,252,253,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,239,252,252,253,252,239,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,227,236,146,249,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,50,0,225,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,222,252,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,253,253,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,19,85,85,85,85,85,85,163,238,252,252,252,204,94,0,0,0,0,0,0,0,0,0,0,0,0,0,176,209,252,252,253,252,252,252,252,253,252,252,198,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,252,252,252,252,253,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,252,252,252,252,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,255,253,253,253,190,255,253,253,253,174,63,0,0,0,0,0,0,0,0,0,0,0,0,0,24,136,224,252,215,167,167,74,12,27,228,252,252,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,55,31,0,0,0,0,0,50,209,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,198,240,84,5,172,207,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,254,254,254,254,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,252,242,253,254,254,251,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,252,89,0,97,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,220,254,148,0,0,113,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,199,254,240,29,0,0,142,254,229,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,146,0,0,0,218,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,226,240,47,0,0,37,247,218,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,28,0,0,0,153,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,247,172,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,246,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,248,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,198,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,233,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,214,254,231,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,161,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,211,240,212,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,245,65,5,65,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,203,237,67,0,0,198,232,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,145,0,0,0,233,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,202,242,36,0,8,123,246,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,152,0,0,158,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,222,137,48,171,254,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,199,211,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,201,253,165,18,191,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,80,0,0,192,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,222,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,232,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,57,127,127,171,233,232,232,161,127,110,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,247,189,189,145,189,189,189,215,253,252,175,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,217,47,0,0,0,0,0,0,18,42,121,244,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,71,0,0,0,0,0,0,0,0,0,15,237,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,185,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,244,49,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,64,108,152,218,252,252,196,239,204,169,169,126,81,0,0,0,0,0,0,0,0,0,0,0,27,150,212,242,252,252,252,253,252,252,252,208,165,252,199,147,147,0,0,0,0,0,0,0,0,0,0,75,218,253,254,239,211,185,167,255,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,217,107,42,0,0,185,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,21,12,0,0,0,32,232,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,219,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,191,139,118,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,232,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,233,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,179,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,255,192,0,0,0,9,38,38,38,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,227,253,249,184,184,184,200,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,168,253,249,248,178,139,139,139,230,253,224,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,206,24,0,0,0,0,0,162,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,157,253,250,66,0,0,0,0,0,0,206,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,141,0,0,0,0,0,0,3,208,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,205,170,10,0,0,0,0,0,0,60,253,216,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,232,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,231,253,153,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,176,253,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,209,253,163,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,234,150,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,253,253,251,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,237,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,232,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,241,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,254,233,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,230,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,214,194,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,95,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,11,11,2,0,0,0,10,11,109,110,172,229,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,176,164,164,164,249,253,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,254,237,169,133,202,233,233,233,233,135,136,253,253,146,4,0,0,0,0,0,0,0,0,0,0,0,0,0,80,14,0,0,0,0,0,0,0,0,35,253,243,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,144,95,95,165,194,194,194,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,50,70,192,253,252,253,253,253,207,129,87,1,0,0,0,0,0,0,0,0,0,0,0,0,0,12,137,251,253,253,253,253,247,148,100,49,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,220,156,94,98,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,24,0,0,5,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,16,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,222,254,254,211,156,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,248,166,127,127,132,227,245,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,47,0,0,0,0,14,147,236,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,199,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,214,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,251,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,198,188,104,28,0,185,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,178,175,184,254,200,35,175,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,156,0,0,0,40,198,254,230,233,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,206,8,0,0,0,0,16,197,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,166,0,0,0,0,0,0,95,254,248,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,107,0,0,0,0,0,0,159,246,178,248,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,250,48,0,0,0,0,0,65,243,115,2,160,250,115,0,0,0,0,0,0,0,0,0,0,0,0,0,16,255,78,0,0,0,0,23,210,170,0,0,0,134,254,115,0,0,0,0,0,0,0,0,0,0,0,0,16,254,192,4,0,0,59,222,191,29,0,0,0,0,134,251,93,0,0,0,0,0,0,0,0,0,0,0,3,117,230,192,128,157,227,160,21,0,0,0,0,0,0,108,221,177,21,0,0,0,0,0,0,0,0,0,0,0,31,155,210,211,96,6,0,0,0,0,0,0,0,0,24,126,208,173,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,9,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,53,238,202,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,112,228,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,176,253,253,253,253,220,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,119,222,253,253,253,237,101,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,119,186,253,253,253,239,158,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,150,253,254,253,243,157,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,126,224,253,253,254,204,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,200,253,253,253,253,151,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,253,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,253,253,149,81,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,209,254,254,251,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,253,253,236,106,0,10,25,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,253,246,62,0,71,194,253,253,204,89,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,246,108,0,49,238,253,253,253,254,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,217,0,0,73,253,253,253,253,254,253,243,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,217,0,0,73,253,253,253,253,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,217,0,21,133,253,253,253,253,254,245,151,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,248,218,226,253,253,253,253,253,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,253,253,253,253,253,253,206,144,24,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,87,132,219,218,132,132,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,166,253,191,114,148,148,148,139,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,190,172,253,252,252,252,252,253,252,252,237,67,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,251,252,252,253,252,252,252,252,253,252,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,252,253,252,252,252,252,200,226,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,252,253,217,147,77,42,7,95,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,124,211,211,185,106,0,0,0,0,0,8,157,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,245,252,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,239,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,239,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,123,245,253,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,157,252,252,252,217,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,223,253,252,252,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,252,253,252,185,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,252,236,112,4,0,0,0,0,0,0,45,107,141,211,185,18,0,0,0,0,0,0,0,0,0,50,245,253,253,132,0,0,0,36,105,148,245,253,253,255,253,253,253,86,0,0,0,0,0,0,0,0,0,85,252,252,252,191,190,190,190,242,253,252,252,252,252,253,252,252,231,28,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,252,252,252,253,252,252,252,252,241,238,233,129,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,252,252,252,253,252,194,145,145,35,28,7,0,0,0,0,0,0,0,0,0,0,0,14,147,252,252,253,252,252,226,147,129,42,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,189,254,254,254,254,137,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,151,242,254,253,253,253,253,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,222,253,253,254,253,253,218,158,254,213,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,103,249,253,251,241,235,150,67,12,0,182,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,7,181,254,253,162,67,26,0,0,0,0,0,163,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,255,115,0,0,0,0,0,0,0,27,255,254,208,35,0,0,0,0,0,0,0,0,0,0,0,86,249,253,186,2,0,0,0,0,0,0,30,216,254,253,245,43,0,0,0,0,0,0,0,0,0,0,0,172,253,207,26,0,0,0,0,0,0,0,154,253,254,253,171,0,0,0,0,0,0,0,0,0,0,0,24,233,253,124,0,0,0,0,0,0,0,23,222,253,254,223,40,0,0,0,0,0,0,0,0,0,0,0,55,253,240,21,0,0,0,0,0,0,0,159,253,253,228,37,0,0,0,0,0,0,0,0,0,0,0,0,55,254,144,0,0,0,0,0,0,0,139,254,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,144,0,0,0,0,4,87,204,252,253,203,43,7,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,192,37,37,37,50,168,253,254,253,176,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,253,253,254,253,253,253,253,254,216,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,254,253,253,253,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,91,92,72,63,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,219,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,224,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,146,0,0,0,0,0,187,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,234,13,0,0,0,17,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,242,38,0,0,0,134,197,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,230,0,0,0,0,184,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,171,0,0,0,41,229,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,242,46,0,0,0,166,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,187,198,0,0,0,5,212,135,0,0,0,0,43,9,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,215,109,93,34,80,253,69,0,17,93,127,151,0,0,0,0,0,0,0,0,0,0,0,0,0,9,159,160,142,184,184,254,254,254,186,162,199,176,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,139,115,115,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,248,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,189,173,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,101,240,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,133,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,210,175,0,0,0,225,252,226,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,233,74,0,0,0,225,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,215,253,74,0,0,0,76,243,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,27,0,0,0,113,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,79,0,0,0,63,255,253,119,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,226,225,116,101,240,253,252,246,146,240,147,149,0,0,0,0,0,0,0,0,0,0,0,0,0,44,202,252,253,252,252,252,252,253,233,86,55,55,56,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,84,84,84,103,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,108,0,0,58,176,253,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,107,200,251,107,107,247,252,252,252,252,252,252,251,101,0,0,0,0,0,0,0,0,0,0,0,0,73,233,252,252,252,184,158,209,158,158,46,26,144,252,242,67,0,0,0,0,0,0,0,0,0,0,0,80,225,252,252,252,187,17,0,21,0,0,0,22,187,252,225,0,0,0,0,0,0,0,0,0,0,0,0,69,242,234,185,164,20,0,0,0,0,0,22,186,252,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,56,49,0,0,0,0,0,0,0,20,187,252,252,194,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,189,252,241,184,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,192,252,252,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,128,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,255,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,247,252,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,252,202,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,219,252,205,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,103,238,252,195,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,222,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,243,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,248,203,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,167,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,16,0,0,0,104,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,65,0,0,0,104,231,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,44,0,0,0,104,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,37,0,0,0,146,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,37,0,0,0,198,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,196,241,29,0,0,0,198,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,151,0,0,0,0,198,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,68,0,0,0,0,198,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,9,0,0,42,150,234,198,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,9,78,202,244,254,254,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,254,200,245,254,185,102,136,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,189,109,0,0,104,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,254,131,3,0,0,0,17,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,110,2,0,0,0,0,6,216,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,236,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,237,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,166,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,180,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,77,77,51,49,77,77,88,171,255,254,255,204,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,249,249,254,254,254,254,254,254,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,154,204,204,204,184,194,130,116,83,26,166,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,248,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,174,254,206,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,205,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,226,254,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,160,198,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,233,254,170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,107,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,243,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,222,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,243,190,0,0,0,0,0,14,39,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,128,0,0,0,30,149,211,254,244,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,251,44,0,4,95,249,203,57,47,178,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,216,197,0,0,131,254,200,9,0,0,17,201,244,59,0,0,0,0,0,0,0,0,0,0,0,0,0,4,254,197,0,74,249,181,9,0,0,0,0,96,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,1,179,219,15,182,250,39,0,0,0,0,0,90,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,128,239,180,0,0,0,0,0,0,151,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,242,254,234,27,0,0,0,5,86,192,254,206,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,178,11,2,58,119,248,254,248,197,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,254,226,204,255,255,202,117,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,178,196,182,178,114,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,219,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,227,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,250,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,255,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,249,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,227,254,224,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,229,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,44,148,152,194,241,146,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,137,205,254,254,254,254,244,173,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,120,215,254,254,213,135,61,27,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,155,254,254,229,180,97,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,88,191,254,199,82,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,207,254,254,218,40,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,242,208,254,254,208,137,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,8,54,139,209,254,211,8,0,0,0,0,0,0,0,0,0,0,0,0,0,13,6,0,0,0,0,0,0,0,0,0,8,93,234,228,42,0,0,0,0,0,0,0,0,0,0,0,0,172,192,94,0,0,0,0,0,0,0,0,0,35,234,254,128,0,0,0,0,0,0,0,0,0,0,0,0,80,254,233,207,126,11,0,0,0,0,0,0,35,234,244,97,0,0,0,0,0,0,0,0,0,0,0,0,2,89,167,244,254,246,177,99,28,28,28,93,247,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,162,248,254,254,254,255,254,254,255,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,64,151,158,254,254,157,80,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,74,156,156,156,156,156,156,156,163,183,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,203,253,253,253,254,243,203,211,135,136,53,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,253,253,180,100,78,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,234,19,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,140,59,59,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,254,238,253,253,223,132,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,253,228,174,205,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,253,254,204,13,0,8,201,236,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,208,9,0,0,0,156,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,254,193,0,0,0,0,0,59,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,250,106,0,0,0,0,0,59,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,229,116,0,0,0,0,0,0,59,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,2,0,0,0,0,0,0,112,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,0,0,194,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,101,0,61,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,211,20,185,254,191,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,223,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,126,245,215,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,141,216,253,253,255,178,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,197,252,253,252,252,252,253,252,149,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,253,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,253,252,252,202,253,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,178,101,51,0,0,129,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,121,9,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,56,13,0,0,0,0,0,29,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,29,79,141,141,229,253,254,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,225,252,252,253,252,252,252,253,252,224,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,252,252,253,252,252,252,253,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,252,252,252,253,252,252,252,253,252,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,254,234,137,188,254,253,253,253,254,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,234,28,82,243,253,252,252,252,134,171,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,110,110,240,252,253,252,252,127,0,13,209,252,247,104,0,0,0,0,0,0,0,0,0,0,0,169,252,252,229,252,252,252,253,252,127,3,0,0,197,252,253,221,25,0,0,0,0,0,0,0,0,0,0,120,253,253,254,253,253,253,251,150,25,0,0,0,135,253,254,253,168,0,0,0,0,0,0,0,0,0,0,94,252,252,253,252,252,227,125,0,0,0,0,0,28,209,253,252,93,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,186,94,0,0,0,0,0,0,0,76,168,168,37,0,0,0,0,0,0,0,0,0,0,7,203,252,241,139,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,159,138,76,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,194,78,30,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,171,227,215,253,252,252,227,215,70,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,29,21,46,119,160,236,252,253,223,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,22,148,252,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,24,24,13,3,170,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,252,211,170,252,252,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,252,252,252,252,253,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,235,160,236,252,253,252,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,248,230,248,252,253,157,22,158,252,241,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,255,253,253,253,243,158,0,0,0,210,255,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,218,112,50,0,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,69,19,0,0,0,0,0,0,0,169,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,215,21,0,0,0,0,0,0,0,0,0,0,0,13,47,26,0,0,0,0,0,0,0,0,0,0,159,252,183,0,0,0,0,0,0,0,0,0,0,0,0,153,252,221,123,25,0,0,0,0,0,0,0,64,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,243,109,25,0,0,0,60,93,187,248,253,235,44,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,252,236,230,230,231,244,252,252,252,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,117,164,164,64,0,0,0,0,18,232,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,243,254,254,254,159,0,0,0,0,156,254,216,63,0,0,0,0,0,0,0,0,0,0,0,0,0,20,230,253,245,178,178,73,0,0,0,40,227,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,249,253,95,0,0,0,0,0,8,210,253,229,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,157,0,0,0,0,2,164,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,252,133,3,0,28,181,254,251,81,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,254,254,143,23,164,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,200,253,253,250,253,253,180,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,253,254,253,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,243,254,254,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,248,247,253,244,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,131,70,240,253,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,60,0,28,244,254,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,129,0,0,90,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,246,172,1,0,61,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,171,20,168,254,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,254,246,254,254,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,213,253,253,169,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,254,255,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,210,253,253,243,231,253,249,65,0,112,154,93,0,0,0,0,0,0,0,0,0,0,0,0,0,19,158,250,253,253,133,57,95,253,253,136,130,231,253,152,0,0,0,0,0,0,0,0,0,0,0,0,87,212,253,253,253,189,20,0,24,236,253,253,253,253,191,39,0,0,0,0,0,0,0,0,0,0,55,169,242,253,253,253,192,18,0,0,0,189,253,253,253,230,56,0,0,0,0,0,0,0,0,0,0,16,242,253,253,253,253,94,13,0,0,0,0,61,251,253,253,84,0,0,0,0,0,0,0,0,0,0,0,18,251,253,249,150,24,1,0,0,0,0,50,237,253,253,148,3,0,0,0,0,0,0,0,0,0,0,0,0,68,112,29,0,0,0,0,0,0,55,236,253,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,232,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,231,253,253,227,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,232,253,253,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,253,253,224,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,251,78,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,241,253,253,156,108,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,175,253,253,242,187,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,253,253,253,234,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,201,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,148,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,174,235,255,150,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,254,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,254,153,76,159,254,238,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,36,0,0,211,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,55,0,0,167,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,91,0,0,167,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,124,0,9,224,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,236,137,189,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,236,254,254,254,254,214,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,117,216,237,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,245,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,230,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,233,224,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,217,187,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,221,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,141,66,29,29,141,141,178,253,255,253,253,153,26,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,252,252,253,252,252,252,253,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,252,252,253,252,252,214,168,224,252,252,238,38,0,0,0,0,0,0,0,0,0,0,0,0,10,128,153,177,103,78,28,28,28,15,13,206,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,206,253,252,196,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,160,240,252,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,163,241,252,252,252,253,246,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,253,254,253,253,253,254,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,252,252,197,121,84,84,146,234,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,80,56,0,0,0,0,0,169,252,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,150,25,0,0,0,0,51,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,178,29,29,54,178,253,254,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,252,252,247,121,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,224,118,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,177,252,78,28,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,152,214,253,173,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,233,244,162,163,223,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,212,81,0,0,20,172,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,224,81,0,0,0,0,153,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,212,61,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,224,20,0,0,0,0,0,0,153,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,253,212,40,0,0,0,0,0,0,0,152,252,61,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,224,20,0,0,0,0,0,0,0,0,214,253,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,212,40,0,0,0,0,0,0,0,0,0,253,171,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,91,0,0,0,0,0,0,0,0,0,102,254,151,0,0,0,0,0,0,0,0,0,0,0,0,193,252,172,10,0,0,0,0,0,0,0,0,0,183,253,111,0,0,0,0,0,0,0,0,0,0,0,21,254,253,41,0,0,0,0,0,0,0,0,0,11,213,203,20,0,0,0,0,0,0,0,0,0,0,0,102,253,212,0,0,0,0,0,0,0,0,0,0,173,252,102,0,0,0,0,0,0,0,0,0,0,0,0,102,254,151,0,0,0,0,0,0,0,0,0,0,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,21,183,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,21,0,0,0,0,0,0,21,214,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,203,20,0,0,0,41,163,223,233,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,255,253,254,253,254,253,254,172,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,151,192,253,252,151,70,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,71,149,149,149,149,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,105,189,228,240,235,232,201,201,255,254,230,101,8,0,0,0,0,0,0,0,0,0,0,0,0,0,129,229,213,191,108,35,23,21,0,0,35,47,242,244,29,0,0,0,0,0,0,0,0,0,0,0,0,0,131,46,3,0,0,0,0,15,39,124,124,220,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,153,223,254,235,170,139,58,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,122,193,193,243,230,148,116,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,247,254,254,254,198,184,148,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,79,79,79,118,202,254,254,149,88,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,119,201,254,233,136,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,94,195,254,252,203,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,78,138,243,252,133,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,188,254,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,72,0,0,0,0,0,0,4,140,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,74,211,126,41,54,78,36,36,45,230,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,222,252,254,254,254,254,254,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,122,76,148,148,113,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,186,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,213,243,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,162,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,216,216,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,160,249,254,227,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,154,242,254,254,254,243,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,240,211,141,142,197,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,211,251,173,68,0,0,0,69,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,141,197,140,0,0,0,0,0,3,9,0,18,138,2,0,0,0,0,0,0,0,0,0,0,0,0,0,6,164,0,0,0,0,0,0,0,0,0,0,136,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,6,164,0,0,0,0,0,0,0,0,0,34,223,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,1,39,32,0,0,0,14,0,0,9,17,106,250,187,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,84,73,102,120,210,109,0,103,128,138,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,88,206,215,167,108,142,47,0,0,125,150,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,97,11,22,52,0,0,6,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,214,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,239,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,239,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,224,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,239,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,28,118,118,118,201,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,116,224,253,253,253,253,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,174,244,253,244,213,213,124,206,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,207,253,237,155,83,0,0,0,98,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,134,255,254,213,53,0,0,0,0,0,196,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,14,206,253,254,236,42,0,0,0,0,0,0,195,249,36,0,0,0,0,0,0,0,0,0,0,0,0,74,229,253,222,116,42,0,0,0,0,0,0,28,235,195,0,0,0,0,0,0,0,0,0,0,0,0,55,250,253,253,170,137,136,136,136,136,137,136,107,185,253,204,21,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,253,254,253,253,253,253,254,253,253,253,253,254,226,195,53,0,0,0,0,0,0,0,0,0,46,245,254,254,254,255,254,235,227,254,255,208,254,254,254,255,254,254,254,96,0,0,0,0,0,0,0,0,0,33,39,39,39,39,39,27,21,39,39,9,179,253,207,114,84,135,46,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,201,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,235,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,227,145,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,70,226,253,200,174,253,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,121,198,253,227,127,14,25,144,253,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,111,164,250,157,36,20,0,0,0,14,211,254,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,184,0,0,0,0,0,0,0,25,240,253,39,0,0,0,0,0,0,0,0,0,0,0,0,82,246,250,79,11,0,0,0,0,0,0,0,0,223,253,109,0,0,0,0,0,0,0,0,0,0,0,22,231,253,151,0,0,0,0,0,0,0,0,0,0,134,253,181,0,0,0,0,0,0,0,0,0,0,2,173,253,253,69,0,0,0,0,0,0,0,0,0,0,134,253,216,9,0,0,0,0,0,0,0,0,0,11,253,253,159,6,0,0,0,0,0,0,0,0,0,0,134,253,219,13,0,0,0,0,0,0,0,0,0,167,253,250,64,0,0,0,0,0,0,0,0,0,0,0,233,253,111,0,0,0,0,0,0,0,0,0,45,245,253,192,0,0,0,0,0,0,0,0,0,0,0,2,235,253,68,0,0,0,0,0,0,0,0,0,56,253,253,133,0,0,0,0,0,0,0,0,0,0,6,160,254,173,4,0,0,0,0,0,0,0,0,0,56,253,253,50,0,0,0,0,0,0,0,0,0,0,71,253,238,36,0,0,0,0,0,0,0,0,0,0,56,253,253,34,0,0,0,0,0,0,0,0,0,20,199,253,86,0,0,0,0,0,0,0,0,0,0,0,56,253,253,35,0,0,0,0,0,0,0,0,18,199,251,127,3,0,0,0,0,0,0,0,0,0,0,0,38,240,253,34,0,0,0,0,0,0,0,51,198,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,182,11,0,0,0,0,7,37,209,253,244,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,187,253,180,9,0,0,70,201,253,253,207,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,230,253,234,145,239,251,253,235,161,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,123,244,253,253,177,153,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,119,36,0,16,119,119,119,119,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,112,148,243,252,254,246,243,244,254,254,254,254,248,0,0,0,0,0,0,0,0,0,0,157,168,145,38,223,254,254,254,254,254,254,254,254,189,157,200,254,200,0,0,0,0,0,0,0,0,0,107,253,254,156,10,220,254,227,156,156,156,65,25,25,10,2,13,25,13,0,0,0,0,0,0,0,0,0,119,254,254,156,0,27,32,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,186,79,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,245,254,254,254,211,163,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,254,254,254,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,250,232,217,254,254,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,44,26,227,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,246,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,233,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,18,17,0,0,0,0,79,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,209,207,157,107,17,9,98,254,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,254,254,254,217,109,254,254,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,168,241,241,194,98,248,248,248,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,61,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,85,0,0,0,0,0,100,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,231,71,0,0,0,0,116,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,237,115,0,0,0,0,124,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,203,31,0,0,0,34,240,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,228,68,0,0,0,0,17,225,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,248,64,0,0,0,0,0,9,216,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,249,113,0,0,0,0,0,0,42,249,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,219,13,0,0,0,0,0,0,0,207,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,186,45,70,70,70,45,45,0,0,208,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,253,245,253,254,253,245,245,231,197,249,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,71,137,137,71,138,121,88,137,138,158,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,211,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,212,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,59,59,120,156,156,209,254,255,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,150,253,253,253,254,253,253,242,233,234,250,253,232,95,0,0,0,0,0,0,0,0,0,0,0,0,0,18,190,229,253,222,152,78,78,36,0,0,66,131,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,19,12,0,0,0,0,0,0,0,74,227,215,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,226,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,156,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,180,253,250,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,109,175,175,254,253,253,241,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,254,234,226,253,253,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,88,58,58,58,31,18,163,253,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,208,253,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,238,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,217,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,3,0,0,0,0,0,0,0,0,5,150,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,99,224,143,0,0,0,0,0,0,0,0,67,238,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,244,166,84,9,0,0,0,0,31,246,253,225,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,200,253,253,208,135,98,68,143,239,254,245,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,123,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,198,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,181,248,253,253,167,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,125,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,63,248,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,251,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,250,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,150,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,208,253,248,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,196,253,253,225,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,125,216,245,253,253,253,253,235,173,51,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,213,253,253,253,253,253,253,253,253,253,253,171,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,249,158,119,55,182,243,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,239,113,0,0,0,0,93,184,202,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,157,179,155,35,0,0,0,0,0,0,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,118,118,118,118,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127,236,253,253,253,253,248,234,144,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,225,253,253,253,253,253,253,253,253,253,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,199,198,198,208,253,253,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,227,200,82,82,2,0,0,42,241,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,103,25,0,0,0,0,0,0,0,84,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,203,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,49,49,49,36,0,128,253,253,233,27,0,0,0,0,0,0,0,0,0,0,0,0,0,11,28,132,165,218,253,253,253,229,165,222,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,4,175,253,253,253,253,253,253,253,253,253,253,253,253,209,25,2,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,151,37,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,191,80,13,98,253,253,253,253,253,253,253,253,222,39,0,0,0,0,0,0,0,0,0,254,253,253,160,34,14,43,83,217,253,253,253,253,253,253,253,253,253,221,38,0,0,0,0,0,0,0,0,146,253,253,212,199,199,227,253,253,253,253,213,113,54,110,211,253,253,253,116,0,0,0,0,0,0,0,0,35,217,253,253,253,253,253,253,253,242,212,74,0,0,0,25,215,253,253,213,0,0,0,0,0,0,0,0,0,37,211,248,253,253,242,232,184,70,0,0,0,0,0,0,75,195,253,167,0,0,0,0,0,0,0,0,0,0,0,89,116,116,57,0,0,0,0,0,0,0,0,0,0,19,116,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,48,146,234,254,255,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,100,209,253,253,253,253,253,253,245,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,43,215,253,253,239,139,139,36,133,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,130,253,253,226,125,7,0,0,0,12,218,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,27,208,253,253,126,23,0,0,0,0,44,171,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,7,181,253,222,52,3,77,120,120,120,161,241,253,200,3,0,0,0,0,0,0,0,0,0,0,0,0,4,215,253,222,0,0,0,131,222,253,253,253,253,253,173,3,0,0,0,0,0,0,0,0,0,0,0,0,126,253,154,32,0,0,0,0,53,247,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,38,237,253,77,17,17,100,33,194,234,237,165,129,249,253,253,5,0,0,0,0,0,0,0,0,0,0,0,60,247,253,253,253,253,253,253,195,59,0,0,0,244,253,187,2,0,0,0,0,0,0,0,0,0,0,0,0,96,177,253,210,161,161,62,20,0,0,0,117,251,230,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,16,9,0,0,0,0,0,0,31,230,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,151,253,247,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,229,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,218,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,227,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,184,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,255,212,186,150,150,111,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,244,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,82,120,174,233,253,253,253,250,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,181,253,253,154,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,206,253,232,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,229,4,22,63,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,110,110,110,230,253,197,127,227,253,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,253,253,253,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,223,253,253,253,253,253,253,253,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,20,253,253,143,5,5,5,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,250,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,251,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,250,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,193,254,172,152,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,253,252,253,252,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,254,253,254,253,203,122,214,253,193,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,252,151,70,0,0,10,212,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,255,253,244,81,0,0,0,0,0,203,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,122,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,21,0,0,0,0,0,132,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,203,20,0,0,102,183,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,254,253,254,253,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,253,252,253,252,233,151,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,113,101,63,192,238,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,225,226,249,252,239,203,253,252,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,234,252,228,195,164,49,31,56,122,220,230,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,234,249,145,47,0,0,0,0,0,76,199,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,145,0,0,0,0,0,0,0,0,119,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,51,238,253,84,0,0,0,0,0,0,0,0,0,169,253,79,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,84,0,0,0,0,0,0,0,0,0,169,252,126,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,84,0,0,0,0,0,0,0,0,0,169,252,110,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,103,29,0,0,0,0,0,0,10,60,224,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,173,79,48,31,95,140,141,178,252,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,229,253,253,255,253,253,253,253,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,224,252,253,252,252,252,252,253,252,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,133,119,70,55,55,55,196,136,252,246,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,121,252,252,108,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,206,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,167,253,252,231,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,218,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,255,254,52,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,247,253,253,253,90,151,220,184,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,219,253,253,223,217,242,253,253,253,215,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,173,11,0,136,170,199,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,244,253,186,7,0,0,0,0,7,176,253,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,105,0,0,0,0,0,0,10,203,253,174,11,0,0,0,0,0,0,0,0,0,0,0,0,33,246,253,140,4,0,0,0,0,0,0,0,54,242,253,85,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,78,0,0,0,0,0,0,0,0,0,228,253,139,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,76,0,0,0,0,0,0,0,0,0,228,253,139,0,0,0,0,0,0,0,0,0,0,0,0,140,253,227,0,0,0,0,0,0,0,0,0,0,228,253,139,0,0,0,0,0,0,0,0,0,0,0,0,140,253,227,0,0,0,0,0,0,0,0,0,0,228,253,139,0,0,0,0,0,0,0,0,0,0,0,0,140,253,227,0,0,0,0,0,0,0,0,0,0,228,253,139,0,0,0,0,0,0,0,0,0,0,0,0,140,253,227,0,0,0,0,0,0,0,0,0,60,247,253,61,0,0,0,0,0,0,0,0,0,0,0,0,140,253,227,0,0,0,0,0,0,0,0,30,214,253,205,17,0,0,0,0,0,0,0,0,0,0,0,0,140,253,246,56,0,0,0,0,0,0,28,171,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,86,0,0,0,0,0,12,144,253,253,132,9,0,0,0,0,0,0,0,0,0,0,0,0,0,12,208,253,230,49,0,0,0,55,174,253,253,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,253,237,150,117,218,246,253,253,222,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,236,253,253,253,253,253,244,160,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,137,149,194,253,170,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,182,255,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,221,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,154,253,253,236,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,223,253,253,228,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,253,244,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,192,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,220,253,253,161,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,253,253,121,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,165,253,253,163,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,204,30,0,80,158,202,202,202,151,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,235,253,253,117,131,249,253,253,253,253,253,253,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,253,253,253,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,35,250,253,253,253,253,253,247,182,119,83,15,25,233,147,3,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,186,58,0,0,0,0,111,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,244,139,4,0,0,0,0,46,246,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,134,0,0,0,0,67,104,249,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,237,218,173,135,218,253,253,252,179,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,253,253,253,234,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,226,253,181,241,253,253,253,213,132,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,92,166,253,253,242,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,243,253,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,209,252,252,168,142,56,56,216,240,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,164,40,0,0,0,0,91,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,226,88,0,0,0,0,0,0,13,207,56,26,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,113,0,0,0,0,0,0,0,0,169,100,231,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,160,28,0,0,0,0,0,0,0,169,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,203,209,113,113,114,88,38,13,126,243,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,255,253,253,253,255,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,84,84,184,197,196,109,84,178,252,233,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,190,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,0,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,64,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,128,128,128,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,166,255,242,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,157,97,252,253,253,236,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,80,130,252,252,253,253,253,253,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,236,170,153,67,166,253,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,239,253,253,187,56,0,0,0,135,253,251,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,249,113,13,0,0,12,110,217,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,98,0,0,0,0,65,225,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,31,0,27,84,166,166,232,160,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,237,253,218,213,230,253,253,253,212,14,195,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,253,233,84,0,53,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,183,253,253,251,133,32,0,0,135,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,5,5,0,0,0,0,135,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,229,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,242,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,242,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,138,138,138,149,180,138,138,138,128,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,252,252,207,206,206,244,252,253,236,161,109,15,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,118,69,69,0,0,0,56,69,184,196,252,227,131,32,0,0,57,38,0,0,0,0,0,0,0,0,253,252,111,0,0,0,0,0,0,0,0,9,45,29,188,229,207,207,244,232,0,0,0,0,0,0,0,0,96,252,246,94,0,0,0,0,0,0,0,0,0,0,168,253,231,137,96,22,0,0,0,0,0,0,0,0,11,193,253,253,96,0,0,0,0,0,0,0,17,160,243,106,0,0,0,0,0,0,0,0,0,0,0,0,0,17,188,252,252,162,80,0,0,0,0,51,228,235,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,111,183,253,240,101,13,0,102,228,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,177,252,215,103,180,235,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,107,232,252,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,55,233,253,255,159,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,172,92,232,252,227,67,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,202,13,0,38,141,234,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,235,64,0,0,0,0,65,236,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,102,0,0,0,0,0,0,207,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,158,0,0,0,0,0,5,55,233,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,74,0,0,0,0,26,136,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,153,57,0,57,174,222,252,252,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,244,253,244,207,244,252,245,160,160,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,137,137,137,137,137,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,134,246,190,255,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,252,252,252,253,252,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,197,252,252,252,252,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,252,205,102,140,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,126,22,0,25,207,227,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,93,0,0,0,28,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,188,19,41,104,173,215,173,138,41,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,252,203,252,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,207,252,252,252,252,253,252,252,248,133,176,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,252,253,252,132,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,253,253,253,253,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,252,252,252,253,247,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,219,252,252,109,109,252,253,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,239,63,10,214,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,212,0,0,99,253,252,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,114,0,0,29,253,252,232,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,176,41,118,215,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,252,252,252,253,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,214,252,252,252,252,252,247,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,147,252,252,252,181,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,193,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,189,254,245,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,254,149,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,233,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,251,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,255,254,236,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,229,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,253,254,238,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,254,206,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,38,136,136,136,244,255,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,210,253,253,253,253,253,253,253,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,253,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,193,214,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,113,145,47,47,41,162,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,161,253,253,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,26,152,251,253,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,253,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,228,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,41,124,232,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,168,253,248,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,125,48,161,166,92,130,233,253,253,246,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,253,253,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,253,253,216,45,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,176,253,253,242,135,135,100,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,185,254,254,254,254,226,213,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,185,247,254,253,253,253,253,253,253,252,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,230,253,253,254,253,169,159,159,179,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,57,214,241,253,253,253,254,253,26,0,0,9,74,253,251,102,0,0,0,0,0,0,0,0,0,0,0,22,187,253,253,253,253,253,254,253,26,0,0,0,9,180,253,120,0,0,0,0,0,0,0,0,0,0,20,188,253,253,253,205,143,199,201,143,7,0,0,0,0,161,253,218,0,0,0,0,0,0,0,0,0,0,186,253,253,253,133,29,0,0,0,0,0,0,0,0,0,161,253,253,0,0,0,0,0,0,0,0,0,69,244,253,253,205,29,0,0,0,0,0,0,0,0,0,0,161,253,239,0,0,0,0,0,0,0,0,0,108,253,253,214,28,0,0,0,0,0,0,0,0,0,0,24,214,253,120,0,0,0,0,0,0,0,0,0,178,253,253,116,0,0,0,0,0,0,0,0,0,0,0,41,253,253,120,0,0,0,0,0,0,0,0,185,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,175,255,241,0,0,0,0,0,0,0,0,0,254,253,253,39,0,0,0,0,0,0,0,0,0,0,0,52,249,253,183,0,0,0,0,0,0,0,0,0,254,253,169,4,0,0,0,0,0,0,0,0,0,0,75,198,253,179,11,0,0,0,0,0,0,0,0,0,254,253,159,0,0,0,0,0,0,0,0,0,0,111,245,253,240,64,0,0,0,0,0,0,0,0,0,0,254,253,159,0,0,0,0,0,0,0,0,29,187,245,253,253,107,0,0,0,0,0,0,0,0,0,0,0,254,253,229,58,0,0,0,0,32,54,118,215,253,253,239,171,21,0,0,0,0,0,0,0,0,0,0,0,162,253,253,228,174,174,174,174,220,253,255,253,238,213,86,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,253,253,253,253,253,253,253,242,170,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,155,251,253,253,251,240,233,177,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,120,120,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,243,136,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,113,237,254,254,254,234,79,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,225,218,239,254,254,250,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,251,254,174,9,0,26,242,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,176,8,0,0,0,239,254,250,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,254,77,0,0,0,19,243,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,249,3,0,0,1,145,254,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,169,0,0,0,115,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,119,0,0,36,232,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,236,71,130,244,254,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,250,254,254,254,254,238,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,232,209,155,96,66,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,5,0,0,104,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,196,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,195,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,220,230,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,101,152,254,255,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,103,208,253,253,253,253,253,253,253,239,200,130,7,0,0,0,0,0,0,0,0,0,0,0,0,0,27,208,253,253,253,253,146,107,107,121,253,253,253,253,162,53,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,239,160,109,2,0,0,1,7,49,222,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,12,61,154,52,0,0,0,0,0,0,0,0,50,232,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,132,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,253,247,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,70,214,253,221,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,16,16,16,16,16,16,16,38,253,253,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,195,253,253,253,253,253,253,253,253,253,253,245,63,0,0,0,0,0,0,0,0,0,0,0,0,0,86,223,253,253,253,253,253,253,253,253,253,253,253,253,236,178,62,36,0,0,0,0,0,0,0,0,0,0,101,253,253,194,92,96,99,211,253,253,252,245,245,245,249,253,253,214,129,4,0,0,0,0,0,0,0,0,101,253,253,200,109,187,253,253,253,253,164,0,0,0,67,145,145,145,145,57,0,0,0,0,0,0,0,0,80,242,253,253,253,253,253,246,199,59,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,201,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,225,165,165,165,165,165,198,255,231,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,204,254,254,254,254,254,254,254,254,169,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,254,148,84,116,116,126,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,197,254,4,0,0,0,31,254,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,4,0,0,0,178,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,221,215,3,0,0,0,196,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,251,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,231,245,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,223,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,191,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,23,0,0,53,235,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,223,229,23,0,176,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,124,0,176,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,252,85,0,176,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,235,26,0,176,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,175,0,0,176,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,251,252,123,0,0,176,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,231,252,206,26,0,0,176,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,163,252,249,69,0,0,25,233,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,145,0,0,0,82,252,252,10,73,148,162,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,253,253,152,191,225,253,255,253,253,253,253,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,252,252,252,252,253,252,252,252,252,252,252,179,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,252,252,252,209,253,252,252,252,252,252,200,17,0,0,0,0,0,0,0,0,0,0,0,0,191,240,206,121,20,10,10,6,253,252,200,15,10,10,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,0,0,0,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,252,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,186,161,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,222,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,219,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,18,67,21,0,0,0,0,0,0,0,158,238,252,231,50,0,0,0,0,0,0,0,0,0,0,0,0,88,204,252,79,0,0,0,0,0,49,166,238,252,194,59,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,243,67,0,0,0,0,17,160,252,252,222,67,0,0,0,0,0,0,0,0,0,0,0,0,12,180,252,252,227,42,0,0,0,0,121,252,252,252,155,27,112,82,0,0,0,0,0,0,0,0,0,64,190,252,252,217,97,14,14,14,14,77,247,252,252,252,252,252,252,161,0,0,0,0,0,0,0,0,0,134,246,252,252,252,252,252,252,252,252,253,252,252,252,252,252,231,119,50,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,255,253,253,253,253,228,113,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,195,252,252,252,253,252,212,145,40,10,0,0,0,0,0,0,0,0,0,0,0,0,159,158,158,46,26,26,12,50,252,252,253,163,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,168,252,252,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,252,252,252,222,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,239,252,252,231,149,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,225,147,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,18,49,136,136,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,42,212,253,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,208,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,162,243,253,253,253,185,95,239,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,163,239,253,253,214,252,243,58,0,201,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,175,253,253,221,103,16,249,174,0,28,223,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,253,252,220,35,0,0,249,106,0,66,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,9,175,253,251,137,0,0,0,0,171,172,0,35,229,253,135,0,0,0,0,0,0,0,0,0,0,0,12,171,253,252,137,0,0,0,0,0,10,225,56,66,253,253,135,0,0,0,0,0,0,0,0,0,0,38,199,253,228,134,0,0,0,0,0,0,0,45,27,148,253,253,53,0,0,0,0,0,0,0,0,0,11,169,253,253,112,0,0,0,0,0,0,0,0,0,15,205,253,140,4,0,0,0,0,0,0,0,0,7,172,253,253,80,5,0,0,0,0,0,0,0,0,0,147,253,253,35,0,0,0,0,0,0,0,0,0,71,253,253,222,26,0,0,0,0,0,0,0,0,0,80,246,253,216,20,0,0,0,0,0,0,0,0,0,252,253,226,34,0,0,0,0,0,0,0,0,6,79,251,253,214,28,0,0,0,0,0,0,0,0,0,0,255,253,200,0,0,0,0,0,0,0,0,12,184,253,253,212,30,0,0,0,0,0,0,0,0,0,0,0,254,253,200,0,0,0,0,0,0,0,37,180,253,253,248,72,0,0,0,0,0,0,0,0,0,0,0,0,254,253,214,66,12,0,33,66,121,148,237,253,253,214,62,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,211,201,227,253,253,253,253,222,119,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,121,253,253,253,253,253,253,253,230,117,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,42,135,135,135,135,125,17,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,236,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,195,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,193,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,236,168,0,31,218,165,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,142,252,252,176,0,162,252,252,199,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,142,252,252,146,53,43,242,252,252,253,175,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,252,252,42,0,85,252,252,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,235,42,7,0,128,252,252,252,253,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,254,253,109,0,0,0,191,253,216,62,237,253,253,145,0,0,0,0,0,0,0,0,0,0,0,8,171,252,253,153,5,0,0,0,190,252,110,0,148,252,252,237,32,0,0,0,0,0,0,0,0,0,0,84,252,252,179,32,0,0,0,0,94,251,77,0,92,247,252,252,51,0,0,0,0,0,0,0,0,0,57,246,252,252,80,0,0,0,0,0,64,226,0,0,0,163,252,252,217,0,0,0,0,0,0,0,0,0,85,252,252,121,0,0,0,0,0,0,0,35,0,0,0,85,252,252,208,0,0,0,0,0,0,0,0,8,201,253,253,42,0,0,0,0,0,0,0,0,0,0,0,103,253,253,86,0,0,0,0,0,0,0,0,123,252,252,205,11,0,0,0,0,0,0,0,0,0,0,112,237,252,231,28,0,0,0,0,0,0,0,0,148,252,252,136,0,0,0,0,0,0,0,0,0,6,153,245,252,242,51,0,0,0,0,0,0,0,0,0,148,252,238,28,0,0,0,0,0,0,0,0,15,190,252,253,252,134,0,0,0,0,0,0,0,0,0,0,236,252,231,0,0,0,0,0,0,0,0,36,206,252,252,253,182,4,0,0,0,0,0,0,0,0,0,0,255,253,236,14,0,0,0,0,0,36,166,253,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,211,102,86,121,190,190,242,253,252,252,231,80,0,0,0,0,0,0,0,0,0,0,0,0,0,135,247,252,252,252,253,252,252,252,252,253,236,126,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,253,252,252,252,252,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,51,173,252,253,173,147,77,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,221,211,144,144,144,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,115,221,253,253,253,253,253,250,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,253,253,253,164,165,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,218,253,255,209,164,251,80,4,233,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,253,253,136,27,0,77,0,0,232,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,216,253,253,166,0,0,0,0,0,0,232,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,27,168,253,251,160,26,0,0,0,0,0,0,232,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,141,0,0,0,0,0,0,0,16,236,226,26,0,0,0,0,0,0,0,0,0,0,0,0,51,231,253,211,26,0,0,0,0,0,0,0,89,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,36,0,0,0,0,0,0,0,0,185,253,209,0,0,0,0,0,0,0,0,0,0,0,0,72,250,254,151,0,0,0,0,0,0,0,0,8,207,255,147,0,0,0,0,0,0,0,0,0,0,0,0,210,253,215,17,0,0,0,0,0,0,0,6,155,253,217,30,0,0,0,0,0,0,0,0,0,0,0,56,246,253,107,0,0,0,0,0,0,0,0,110,253,253,131,0,0,0,0,0,0,0,0,0,0,0,3,179,253,174,4,0,0,0,0,0,0,16,110,253,253,197,63,0,0,0,0,0,0,0,0,0,0,0,34,253,253,121,0,0,0,0,0,0,32,194,253,249,174,19,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,121,0,0,0,0,0,78,231,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,250,253,126,0,0,6,79,204,251,255,217,89,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,245,155,155,202,253,253,234,210,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,240,253,253,253,253,206,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,201,229,143,42,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,219,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,222,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,232,249,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,229,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,184,254,110,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,254,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,216,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,243,22,0,0,0,51,131,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,140,0,0,0,13,202,254,253,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,134,0,0,0,174,254,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,255,134,0,1,64,249,254,254,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,134,0,6,254,254,254,254,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,251,238,150,118,254,254,254,251,133,36,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,248,254,254,254,254,222,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,150,148,111,193,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,107,101,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,47,224,253,253,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,25,130,253,253,253,253,253,217,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,108,169,253,253,253,253,253,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,120,253,253,253,253,245,185,93,218,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,120,253,253,253,253,253,176,0,12,208,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,253,245,119,24,0,93,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,147,253,246,179,61,0,0,0,192,253,253,234,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,68,59,0,0,0,0,77,237,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,237,253,253,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,75,159,237,253,253,253,135,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,90,205,205,236,253,253,253,253,253,253,253,213,159,81,8,0,0,0,0,0,0,0,0,0,0,0,3,176,253,253,253,253,253,253,253,253,253,253,253,253,253,253,163,49,0,0,0,0,0,0,0,0,0,0,158,253,253,253,253,253,253,253,253,185,185,253,253,253,253,253,253,237,159,94,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,185,127,8,9,30,30,133,190,253,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,238,66,8,0,0,0,0,0,0,9,133,243,253,253,201,0,0,0,0,0,0,0,0,21,202,245,141,127,15,0,0,0,0,0,0,0,0,0,0,16,133,141,12,0,0,0,0,0,0,0,0,0,7,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,238,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,216,253,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,248,253,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,233,253,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,239,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,143,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,220,253,239,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,224,253,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,214,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,189,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,216,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,107,253,253,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,253,253,208,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,183,253,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,214,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,213,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,60,60,131,209,209,209,209,209,209,211,174,60,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,253,253,253,253,253,253,254,253,253,211,28,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,91,178,178,178,178,178,99,29,29,29,91,240,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,240,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,134,254,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,90,90,232,242,253,254,253,253,253,109,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,212,253,253,253,253,253,254,253,253,253,253,246,116,46,11,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,253,254,253,253,253,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,155,124,0,0,0,0,72,149,224,254,255,254,105,0,0,0,0,0,0,0,0,0,0,0,21,44,44,44,3,0,0,0,0,0,0,0,49,225,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,244,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0,0,0,64,246,253,182,0,0,0,0,0,0,0,0,0,0,0,0,67,241,145,4,0,0,0,0,0,0,0,72,240,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,183,179,179,119,66,179,179,179,232,253,242,196,31,0,0,0,0,0,0,0,0,0,0,0,0,36,214,253,253,253,253,254,253,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,94,163,179,200,255,253,253,253,226,163,163,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,24,59,95,111,59,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,32,112,190,190,191,190,190,150,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,221,253,251,251,251,251,253,211,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,240,251,253,251,251,251,251,193,55,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,36,115,253,253,253,219,138,0,0,0,0,32,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,20,214,251,251,251,231,39,0,0,0,0,0,151,251,251,231,0,0,0,0,0,0,0,0,0,0,0,32,205,253,251,251,219,47,0,0,0,0,0,0,190,251,251,94,0,0,0,0,0,0,0,0,0,0,32,210,251,253,243,109,23,0,0,0,0,0,0,84,244,251,235,70,0,0,0,0,0,0,0,0,0,20,205,251,251,253,121,0,0,0,0,0,0,0,0,194,251,251,188,0,0,0,0,0,0,0,0,0,0,191,253,253,253,0,0,0,0,0,0,0,0,0,60,255,253,253,31,0,0,0,0,0,0,0,0,0,72,236,251,243,121,0,0,0,0,0,0,0,0,0,158,253,251,251,31,0,0,0,0,0,0,0,0,0,174,251,251,188,0,0,0,0,0,0,0,0,0,0,158,253,251,188,15,0,0,0,0,0,0,0,0,0,253,251,251,105,24,0,0,0,0,0,0,0,0,56,181,253,243,94,0,0,0,0,0,0,0,0,0,0,153,251,251,251,193,0,0,0,0,0,0,0,80,240,251,253,121,0,0,0,0,0,0,0,0,0,0,0,60,230,253,253,253,255,233,96,96,96,155,253,253,253,253,219,39,0,0,0,0,0,0,0,0,0,0,0,0,67,236,251,251,253,251,251,251,251,253,251,251,251,231,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,156,251,253,251,251,251,251,253,251,251,219,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,31,189,188,188,188,188,31,31,31,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,61,118,118,118,219,241,118,118,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,213,235,235,246,245,254,254,254,254,254,254,254,247,235,103,0,0,0,0,0,0,0,0,0,0,0,100,251,254,254,254,254,254,254,254,254,254,254,254,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,93,220,254,254,217,199,199,199,199,199,199,205,254,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,32,82,82,27,0,0,0,0,0,26,133,254,254,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,52,227,254,254,254,254,123,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,131,175,254,254,254,254,254,254,147,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,254,254,254,254,254,254,254,254,254,250,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,244,254,254,254,254,254,245,164,208,254,254,254,250,86,0,0,0,0,0,0,0,0,0,0,0,0,0,7,133,254,187,136,48,48,42,0,24,48,190,254,254,214,32,0,0,0,0,0,0,0,0,0,0,0,0,0,4,68,2,0,0,0,0,0,0,0,68,244,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,1,0,0,0,0,0,0,0,7,202,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,17,202,254,6,0,0,0,0,0,0,0,221,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,23,125,254,201,4,0,0,0,0,0,51,160,253,254,254,178,6,0,0,0,0,0,0,0,0,0,0,0,101,254,250,84,0,0,0,0,10,87,238,254,254,254,241,65,0,0,0,0,0,0,0,0,0,0,0,0,194,254,252,129,63,41,51,164,206,254,254,254,254,239,86,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,254,254,228,241,254,254,254,254,254,241,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,254,254,254,254,254,254,244,234,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,117,199,254,254,254,254,254,239,117,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,137,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,161,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,141,202,254,231,81,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,215,254,254,234,118,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,134,253,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,133,254,254,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,254,254,254,254,200,138,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,221,254,255,254,255,254,254,255,254,235,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,128,225,254,254,254,195,177,177,117,137,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,72,206,254,254,246,85,41,10,0,0,0,5,180,254,53,0,0,0,0,0,0,0,0,0,0,0,0,77,163,254,254,254,178,0,0,0,0,0,0,28,247,254,161,0,0,0,0,0,0,0,0,0,0,0,97,253,254,254,254,16,3,0,0,10,12,121,248,250,252,212,28,0,0,0,0,0,0,0,0,0,0,67,213,254,254,254,254,153,148,148,148,230,254,254,254,255,193,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,254,254,254,254,254,254,254,254,254,254,208,137,31,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,254,254,254,254,254,254,230,136,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,125,171,171,171,245,216,254,254,254,254,235,94,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,19,91,55,153,231,254,210,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,56,116,174,255,244,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,153,253,225,196,113,146,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,207,87,6,0,0,112,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,203,251,81,8,0,0,0,59,236,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,233,50,0,0,0,0,25,170,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,214,6,0,0,0,4,116,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,118,9,0,0,6,113,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,175,253,213,128,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,245,241,189,189,190,233,222,132,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,183,27,0,0,0,12,80,164,239,129,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,75,0,0,0,0,0,0,0,0,100,220,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,225,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,245,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,25,219,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,184,0,0,0,0,0,0,0,59,219,184,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,148,0,0,0,0,0,24,151,245,173,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,159,0,0,0,70,182,227,174,82,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,212,182,222,251,210,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,100,208,188,154,70,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,233,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,252,226,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,32,10,0,0,0,0,0,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,0,0,0,0,0,0,0,0,140,252,253,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,255,254,250,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,174,234,76,28,182,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,245,45,0,0,146,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,116,0,0,29,232,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,167,2,0,0,125,211,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,246,122,0,0,27,166,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,92,6,100,254,247,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,218,250,247,253,231,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,96,96,40,117,251,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,238,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,218,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,166,255,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,157,242,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,140,235,253,253,218,217,232,228,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,179,253,253,202,130,2,0,28,21,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,134,253,253,185,8,0,0,0,4,101,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,210,13,0,0,0,26,180,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,247,75,16,7,7,93,234,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,253,253,200,200,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,253,253,253,253,249,251,253,253,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,98,98,98,98,20,167,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,251,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,241,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,168,253,253,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,224,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,240,253,227,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,241,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,242,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,218,209,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,153,3,0,0,0,0,0,0,81,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,50,0,0,0,0,0,0,242,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,131,0,0,0,0,0,44,247,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,252,131,0,0,0,0,0,96,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,252,131,0,0,0,0,0,100,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,252,131,0,0,0,0,0,22,244,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,252,31,0,0,0,0,0,0,242,248,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,237,18,0,0,0,0,0,0,242,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,164,0,0,0,0,0,54,121,250,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,164,0,0,82,14,173,243,252,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,200,162,253,253,255,253,253,224,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,252,252,252,252,253,235,95,26,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,252,252,252,166,154,66,0,23,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,121,207,230,143,10,2,0,0,0,23,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,132,255,253,178,132,132,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,99,231,252,253,252,252,252,252,221,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,252,217,153,96,96,96,133,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,234,95,4,0,0,0,0,61,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,70,0,0,0,0,0,0,61,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,212,19,0,0,0,0,0,0,61,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,133,0,0,0,0,0,57,182,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,239,217,56,0,10,115,241,252,87,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,58,232,252,252,241,172,231,252,252,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,252,252,252,253,252,252,148,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,235,253,253,255,253,236,52,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,25,123,237,252,241,242,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,238,164,50,51,164,238,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,172,52,0,0,0,0,77,252,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,48,0,0,0,0,0,37,252,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,201,252,48,0,0,0,0,0,128,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,228,252,116,53,0,0,0,61,234,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,239,108,166,218,237,252,234,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,200,252,252,241,253,252,236,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,47,235,252,252,190,121,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,38,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,66,148,197,254,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,197,253,253,225,173,214,250,107,76,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,186,249,237,185,102,29,205,221,242,253,253,238,110,20,0,0,0,0,0,0,0,0,0,0,0,0,54,206,253,195,59,0,0,53,200,23,110,78,99,225,253,183,3,0,0,0,0,0,0,0,0,0,0,13,216,253,122,14,0,0,0,0,56,0,0,0,0,82,253,253,134,0,0,0,0,0,0,0,0,0,0,219,253,125,1,0,0,0,0,0,0,0,0,0,0,1,40,227,224,0,0,0,0,0,0,0,0,0,67,249,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,140,249,101,0,0,0,0,0,0,0,0,229,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,193,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,0,0,0,0,0,0,0,0,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,200,253,155,0,0,0,0,0,0,0,0,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,1,91,253,231,15,0,0,0,0,0,0,0,0,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,161,0,0,0,0,0,0,0,0,0,236,250,70,0,0,0,0,0,0,0,0,0,0,32,100,226,253,204,23,0,0,0,0,0,0,0,0,0,54,240,234,144,61,19,13,0,0,14,19,103,186,237,253,244,136,19,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,228,178,178,234,254,253,253,253,205,59,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,130,228,253,253,253,253,232,193,103,103,40,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,37,37,37,37,24,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,200,25,0,0,0,0,18,43,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,252,252,226,129,57,43,112,216,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,242,237,252,253,246,242,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,231,51,21,84,190,210,252,252,252,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,253,80,0,0,0,0,50,244,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,194,0,0,0,0,0,191,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,168,27,0,0,0,0,68,237,252,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,253,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,253,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,252,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,154,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,246,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,165,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,230,209,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,242,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,248,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,230,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,101,113,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,225,225,225,241,249,252,249,225,226,100,66,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,198,246,252,252,252,253,252,252,252,252,253,252,239,181,25,0,0,0,0,0,0,0,0,0,10,60,178,252,253,252,252,252,252,253,226,223,242,252,253,252,252,252,128,0,0,0,0,0,0,0,0,0,163,252,252,252,253,252,220,112,112,112,12,0,75,112,112,237,252,252,252,0,0,0,0,0,0,0,0,176,253,253,240,140,141,15,0,0,0,0,0,0,0,0,0,85,253,253,253,0,0,0,0,0,0,0,0,253,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,210,252,252,204,0,0,0,0,0,0,0,0,222,252,252,84,0,0,0,0,0,0,0,0,0,0,32,198,246,252,245,87,0,0,0,0,0,0,0,0,38,218,252,84,0,0,0,0,0,0,0,0,7,44,215,253,252,245,121,0,0,0,0,0,0,0,0,0,0,38,189,37,0,0,0,0,0,0,0,0,135,252,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,238,253,253,253,255,106,89,113,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,85,163,253,252,252,252,252,253,228,246,242,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,209,252,252,253,252,252,252,252,253,201,164,49,0,0,0,0,0,0,0,0,0,0,0,0,4,107,169,243,252,252,252,253,252,252,217,84,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,32,153,252,253,252,252,252,252,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,255,253,253,253,253,204,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,252,252,253,252,233,167,89,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,246,252,252,252,196,70,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,161,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,226,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,226,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,226,240,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,206,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,246,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,246,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,241,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,255,254,189,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,157,252,254,254,254,254,254,219,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,244,254,254,254,254,254,254,254,254,251,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,163,252,254,254,254,254,254,254,254,254,254,254,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,254,249,186,133,238,254,254,254,254,254,254,237,59,3,0,0,0,0,0,0,0,0,0,0,194,254,254,254,254,131,0,0,41,220,254,254,254,254,254,254,254,61,0,0,0,0,0,0,0,0,0,14,228,254,254,254,114,4,0,0,0,55,237,224,125,132,249,254,254,224,13,0,0,0,0,0,0,0,0,107,254,254,254,226,12,0,0,0,0,0,29,20,0,0,108,254,254,254,69,0,0,0,0,0,0,0,0,158,254,254,254,133,0,0,0,0,0,0,0,0,0,0,27,235,254,254,157,0,0,0,0,0,0,0,0,213,254,254,254,133,0,0,0,0,0,0,0,0,0,0,0,107,254,254,157,0,0,0,0,0,0,0,0,254,254,254,254,133,0,0,0,0,0,0,0,0,0,0,17,204,254,254,157,0,0,0,0,0,0,0,0,254,254,254,254,133,0,0,0,0,0,0,0,0,0,0,68,254,254,254,128,0,0,0,0,0,0,0,0,254,254,254,254,133,0,0,0,0,0,0,0,0,0,40,200,254,254,248,52,0,0,0,0,0,0,0,0,178,254,254,254,133,0,0,0,0,0,0,0,0,52,216,254,254,251,139,0,0,0,0,0,0,0,0,0,158,254,254,254,204,21,0,0,0,0,0,22,126,236,254,254,254,159,0,0,0,0,0,0,0,0,0,0,62,249,254,254,254,135,39,83,68,75,117,207,254,254,254,248,175,9,0,0,0,0,0,0,0,0,0,0,0,221,254,254,254,254,254,254,254,254,254,254,254,254,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,254,254,254,254,254,254,254,254,254,225,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,195,240,254,254,254,254,254,254,254,231,115,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,108,157,157,194,157,157,80,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,77,77,102,83,124,92,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,224,254,254,254,254,254,254,245,176,63,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,209,254,254,254,243,249,254,254,254,254,238,209,94,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,231,254,254,102,35,51,129,194,230,254,254,254,236,179,63,0,0,0,0,0,0,0,0,0,0,5,80,225,254,254,232,220,14,0,0,0,17,53,104,142,174,210,232,0,0,0,0,0,0,0,0,0,3,151,254,254,245,95,1,62,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,239,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,254,206,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,220,68,98,148,178,237,217,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,255,254,254,254,254,254,254,207,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,254,254,252,188,104,44,240,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,178,147,103,54,12,0,6,239,236,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,184,204,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,171,115,118,147,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,121,143,143,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,33,6,91,254,254,132,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,245,213,254,254,206,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,194,254,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,76,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,24,119,139,245,139,55,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,119,253,253,253,253,254,253,253,136,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,253,234,184,184,69,186,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,46,46,33,0,0,0,68,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,211,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,209,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,138,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,136,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,196,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,233,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,13,0,0,0,0,0,208,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,172,13,0,0,0,51,241,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,174,9,9,114,221,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,170,253,253,233,234,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,159,138,202,180,138,180,253,255,253,253,117,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,253,252,252,252,252,253,252,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,208,136,169,240,183,183,130,69,69,171,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,4,25,37,0,0,0,0,0,112,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,93,93,93,93,160,252,252,210,97,93,93,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,252,253,252,252,252,252,253,178,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,230,237,253,253,255,253,253,253,232,116,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,92,164,253,252,187,92,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,169,217,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,140,251,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,251,254,254,254,254,254,88,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,199,253,254,254,123,57,13,13,133,243,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,254,254,172,28,3,0,0,103,251,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,108,21,0,0,103,250,246,184,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,254,254,249,192,172,156,250,254,254,71,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,233,254,254,254,254,254,254,191,136,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,93,183,238,254,254,254,159,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,242,254,254,254,254,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,196,254,221,215,234,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,236,63,0,64,218,254,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,111,0,0,0,64,189,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,175,8,0,0,0,0,104,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,117,0,0,0,0,0,7,209,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,220,67,0,0,0,0,2,199,242,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,202,254,242,98,7,0,2,68,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,254,254,219,182,190,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,180,254,254,255,254,253,244,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,168,197,157,54,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,129,3,0,0,0,0,0,14,34,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,22,0,0,0,0,18,188,253,212,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,22,0,0,0,14,188,253,253,232,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,73,83,1,0,0,10,246,253,253,251,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,190,254,253,232,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,254,230,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,248,253,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,215,253,234,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,251,253,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,130,254,254,166,29,0,0,0,0,28,120,34,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,246,30,0,0,0,47,111,217,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,150,0,0,0,28,240,253,253,253,253,228,39,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,246,24,0,0,10,246,253,245,126,102,253,248,47,0,0,0,0,0,0,0,0,0,0,0,0,22,246,253,165,0,0,51,204,254,239,73,39,185,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,117,0,0,117,253,254,101,118,228,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,52,244,253,246,30,79,219,253,254,239,250,253,222,45,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,238,253,253,253,253,253,255,253,236,199,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,176,176,176,233,253,177,99,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,67,168,177,143,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,143,210,238,253,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,42,215,243,244,250,253,253,253,246,231,231,231,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,247,198,198,140,88,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,225,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,240,253,223,50,70,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,219,253,196,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,213,188,140,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,253,253,253,253,253,250,221,221,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,111,111,111,159,227,254,254,254,175,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,77,121,251,237,87,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,195,253,103,0,0,0,0,0,0,0,0,0,0,0,0,200,180,0,0,0,0,0,0,0,0,0,0,62,200,224,75,0,0,0,0,0,0,0,0,0,0,0,0,182,230,123,27,0,0,0,0,0,0,0,15,220,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,46,227,253,225,127,58,0,0,0,0,65,213,253,246,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,175,253,253,246,232,232,232,232,245,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,238,253,253,253,253,253,255,242,118,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,66,66,66,147,128,66,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,224,253,116,0,0,0,0,0,23,59,224,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,200,251,251,115,0,0,0,0,19,168,251,251,173,0,0,0,0,0,0,0,0,0,0,0,0,0,28,204,251,251,196,35,0,0,0,0,174,251,251,237,53,0,0,0,0,0,0,0,0,0,0,0,0,28,222,251,251,248,146,0,0,10,39,174,249,251,226,45,0,0,0,0,0,0,0,0,0,0,0,0,46,204,251,251,251,156,0,0,0,133,251,251,251,251,96,0,0,0,0,0,0,0,0,0,0,0,0,37,200,251,251,251,251,37,0,0,121,253,251,251,251,190,37,0,49,155,155,0,0,0,0,0,0,0,0,74,251,251,251,251,130,9,0,117,242,253,251,251,217,31,20,185,225,251,236,0,0,0,0,0,0,0,0,253,251,251,251,251,251,104,78,171,251,253,251,251,224,145,251,251,251,208,39,0,0,0,0,0,0,0,0,253,251,251,251,251,251,251,251,251,251,253,251,251,251,251,251,251,208,53,0,0,0,0,0,0,0,0,0,103,251,251,251,251,251,251,251,251,251,253,251,251,251,251,251,236,39,0,0,0,0,0,0,0,0,0,0,0,91,194,203,253,253,253,253,253,253,255,253,253,243,194,194,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,134,206,251,251,251,251,225,134,134,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,251,251,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,115,244,251,251,229,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,251,251,251,251,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,251,251,251,251,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,251,251,251,251,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,251,251,251,251,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,115,199,251,208,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,57,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,58,231,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,246,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,253,253,247,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,210,252,251,231,249,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,253,232,132,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,223,254,230,101,0,0,113,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,239,253,229,49,0,0,0,47,243,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,150,253,253,234,0,0,0,0,0,0,232,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,187,253,253,162,37,0,0,0,0,0,66,248,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,166,9,0,0,0,0,0,0,137,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,166,0,0,0,0,0,0,0,8,207,255,147,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,201,16,0,0,0,0,0,0,6,155,253,217,30,0,0,0,0,0,0,0,0,0,0,0,0,127,252,207,10,0,0,0,0,0,0,0,157,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,210,242,47,0,0,0,0,0,0,16,157,253,253,197,11,0,0,0,0,0,0,0,0,0,0,0,0,44,238,159,0,0,0,0,0,0,46,227,253,253,241,43,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,121,0,0,0,0,0,126,231,253,253,236,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,175,12,12,16,189,232,251,255,250,199,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,246,253,253,253,253,253,253,253,210,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,253,253,230,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,215,253,249,143,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,252,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,220,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,166,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,230,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,246,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,210,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,251,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,219,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,195,254,254,254,220,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,241,253,254,253,253,253,248,97,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,224,253,253,239,145,62,46,169,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,136,253,253,151,25,0,0,0,19,236,238,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,255,254,205,0,0,0,0,0,0,231,237,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,54,0,0,0,0,34,106,243,253,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,173,116,116,116,191,240,254,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,253,253,254,253,253,253,254,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,127,127,110,184,151,93,239,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,254,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,253,140,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,244,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,244,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,156,254,164,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,186,235,253,247,252,241,200,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,249,229,194,127,114,214,253,253,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,250,68,14,0,9,21,62,232,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,184,0,0,0,0,0,0,125,253,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,75,22,0,0,0,0,0,9,218,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,121,212,58,0,0,0,0,0,0,0,0,104,253,253,228,18,0,0,0,0,0,0,0,0,0,0,0,0,100,232,214,85,0,0,0,0,0,0,9,216,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,155,209,123,6,0,0,0,47,159,253,254,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,42,253,155,55,0,1,99,253,253,122,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,83,248,233,48,87,252,251,156,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,179,253,215,171,43,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,244,253,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,253,253,252,197,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,234,253,197,110,249,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,241,41,0,100,155,175,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,230,122,0,0,40,128,238,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,184,202,21,0,114,230,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,82,246,209,204,252,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,207,214,253,230,109,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,212,0,0,0,0,0,0,102,102,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,151,0,0,0,0,92,233,254,253,234,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,192,0,0,21,61,233,252,91,131,213,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,213,0,0,173,253,203,20,0,0,152,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,41,123,253,212,20,0,0,0,233,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,234,233,255,91,0,0,11,132,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,252,253,172,21,102,213,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,255,253,255,253,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,192,192,151,151,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,133,255,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,220,253,243,183,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,218,253,202,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,186,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,226,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,215,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,203,0,0,0,0,0,4,9,9,9,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,203,0,0,0,0,68,158,253,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,97,247,253,203,0,0,0,78,232,253,253,253,253,253,238,79,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,203,0,0,72,249,253,253,253,201,156,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,212,19,0,156,253,252,148,48,27,15,174,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,186,12,76,249,159,0,0,0,42,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,253,253,182,58,32,10,0,6,132,227,253,202,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,230,253,253,253,150,148,148,158,253,253,176,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,179,246,253,253,253,253,253,219,179,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,89,142,253,189,89,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,39,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,240,254,201,185,185,145,77,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,250,254,254,254,254,254,234,94,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,103,103,172,211,215,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,222,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,254,184,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,251,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,235,250,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,210,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,233,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,255,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,224,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,223,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,190,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,118,173,178,185,27,9,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,146,244,237,155,155,228,252,251,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,203,183,52,0,0,7,214,120,66,237,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,238,130,6,0,0,0,25,146,0,32,245,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,244,99,0,0,0,0,0,16,0,6,155,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,161,7,0,0,0,0,0,0,0,76,254,196,19,0,0,0,0,0,0,0,0,0,0,0,0,0,6,210,49,0,0,0,0,0,0,0,78,218,231,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,239,128,11,0,0,0,0,0,85,248,224,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,171,156,82,75,128,77,225,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,156,241,254,254,254,254,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,83,35,239,255,252,252,239,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,249,243,75,85,228,210,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,219,223,26,0,0,120,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,218,254,106,0,0,0,6,210,218,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,161,3,0,0,0,0,130,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,247,181,25,0,0,0,0,0,184,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,43,0,0,0,0,0,6,210,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,188,74,5,0,0,5,163,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,181,254,254,239,185,186,239,254,148,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,137,171,251,225,171,103,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,180,95,7,205,255,224,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,253,253,160,253,253,253,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,191,253,253,253,253,253,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,156,253,253,253,253,253,253,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,181,253,253,253,253,172,252,253,253,253,253,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,120,3,199,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,3,56,248,253,253,252,65,2,0,12,202,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,249,121,0,0,0,0,79,245,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,12,171,253,253,249,123,0,0,0,0,0,0,62,134,253,253,135,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,146,0,0,0,0,0,0,0,0,66,253,253,135,0,0,0,0,0,0,0,0,0,0,78,239,253,253,213,26,0,0,0,0,0,0,0,0,102,253,253,135,0,0,0,0,0,0,0,0,0,30,240,253,253,253,30,0,0,0,0,0,0,0,0,40,242,253,253,91,0,0,0,0,0,0,0,0,0,89,253,253,253,104,1,0,0,0,0,0,0,0,66,194,253,253,161,2,0,0,0,0,0,0,0,0,79,251,253,253,166,1,0,0,0,0,0,0,0,79,251,253,253,205,19,0,0,0,0,0,0,0,0,0,136,253,253,245,91,0,0,0,0,0,10,74,148,251,253,253,253,53,0,0,0,0,0,0,0,0,0,0,136,253,253,195,31,0,0,27,48,76,192,253,253,253,253,244,121,19,0,0,0,0,0,0,0,0,0,0,136,253,253,253,229,183,183,223,253,253,253,253,253,253,215,98,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,253,253,253,253,253,166,22,0,0,0,0,0,0,0,0,0,0,0,0,0,27,214,253,253,253,253,253,253,253,253,176,109,35,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,97,135,232,253,195,135,116,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,105,106,140,254,254,254,255,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,243,253,254,253,253,253,253,253,253,238,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,253,254,249,140,89,132,240,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,232,133,134,102,0,0,0,31,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,24,0,0,0,0,0,0,163,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,163,232,253,242,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,191,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,126,248,253,253,253,205,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,253,240,102,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,222,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,254,254,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,56,253,253,230,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,166,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,226,14,0,0,0,0,0,0,0,0,0,0,0,75,179,179,109,31,9,0,0,0,0,0,25,175,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,50,230,253,253,253,153,0,0,0,0,56,233,253,253,213,35,0,0,0,0,0,0,0,0,0,0,0,0,0,47,222,253,253,251,239,240,239,239,247,253,253,210,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,129,221,253,253,253,253,253,254,253,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,210,253,253,253,253,105,104,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,164,218,255,254,242,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,188,249,254,237,135,124,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,185,249,254,235,114,13,0,44,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,240,254,230,84,18,0,0,97,233,254,242,34,0,0,0,0,0,0,0,0,0,0,0,0,0,10,165,248,249,173,46,0,0,0,0,38,236,254,249,51,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,249,135,0,0,0,0,0,0,38,236,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,37,240,254,139,0,0,0,0,0,26,60,230,254,217,11,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,130,106,100,52,166,194,252,233,254,229,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,202,254,254,254,254,254,251,246,253,254,252,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,154,208,214,166,132,52,55,251,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,225,254,214,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,234,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,248,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,254,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,243,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,254,207,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,225,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,214,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,238,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,232,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,250,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,233,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,222,232,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,255,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,166,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,248,252,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,249,252,252,174,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,211,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,252,201,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,202,253,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,202,252,253,252,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,255,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,192,252,252,253,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,252,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,252,252,252,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,252,217,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,252,252,249,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,235,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,160,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,235,12,0,0,0,0,0,34,254,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,165,0,0,0,0,0,25,233,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,220,22,0,0,0,0,0,177,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,253,55,0,0,0,0,0,120,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,55,0,0,0,0,0,67,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,94,0,0,0,0,0,67,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,246,78,0,0,0,7,70,253,232,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,180,253,249,155,155,155,211,210,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,213,253,253,253,253,254,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,235,253,253,253,254,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,178,221,221,222,221,249,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,245,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,207,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,230,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,252,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,227,253,252,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,252,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,252,165,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,243,252,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,120,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,93,104,99,131,131,131,131,86,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,137,215,254,254,254,254,254,254,254,254,151,77,83,7,0,0,0,0,0,0,0,0,0,0,0,0,24,211,254,254,254,254,254,254,249,236,242,254,254,255,254,203,83,0,0,0,0,0,0,0,0,0,0,10,201,254,254,254,237,202,105,105,75,0,148,254,254,255,243,229,168,0,0,0,0,0,0,0,0,0,0,3,162,254,254,212,31,0,0,0,0,10,169,254,254,226,64,0,0,0,0,0,0,0,0,0,0,0,0,16,239,254,254,105,0,0,0,0,48,191,254,254,172,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,211,0,22,63,168,194,254,218,165,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,126,254,241,174,214,148,254,254,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,234,254,254,254,157,254,201,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,230,254,254,254,239,98,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,82,231,254,254,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,171,254,254,254,254,254,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,206,233,254,254,243,227,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,254,254,244,82,29,145,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,254,187,32,14,94,186,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,247,64,62,123,254,254,232,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,253,231,245,254,254,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,254,254,254,235,57,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,79,144,254,254,179,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,106,144,245,206,172,192,130,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,179,253,253,253,253,253,253,254,171,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,236,228,253,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,231,159,34,10,9,8,10,148,253,158,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,216,253,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,209,254,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,141,248,253,254,139,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,45,193,253,253,253,240,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,78,184,231,253,253,253,253,253,254,208,144,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,15,196,253,253,253,253,253,253,253,253,254,253,253,253,232,183,10,0,0,0,0,0,0,0,0,0,0,0,30,244,254,254,233,221,216,178,221,221,222,221,249,255,254,254,196,13,0,0,0,0,0,0,0,0,0,0,0,83,138,81,27,0,0,0,0,0,0,0,64,87,201,253,253,187,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,82,245,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,237,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,242,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,175,246,253,253,155,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,74,237,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,127,17,0,0,58,127,226,253,253,253,236,137,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,228,221,221,245,253,254,253,253,90,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,150,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,222,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,253,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,189,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,190,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,188,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,124,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,236,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,241,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,165,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,177,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,204,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,220,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,227,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,227,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,240,219,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,255,176,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,252,252,253,252,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,240,235,72,44,44,146,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,150,0,0,0,3,211,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,99,0,0,0,44,237,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,99,0,0,0,153,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,251,201,3,0,7,131,252,235,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,146,45,162,252,235,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,252,253,169,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,119,204,252,176,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,156,194,255,254,254,201,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,95,140,214,241,253,253,254,253,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,253,254,253,253,210,174,78,78,131,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,253,192,34,19,9,0,0,0,79,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,80,0,0,0,0,0,0,0,153,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,140,247,253,189,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,79,79,109,175,235,254,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,248,254,253,253,253,253,254,253,253,183,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,253,253,253,177,155,200,253,253,230,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,98,99,98,68,0,0,0,0,31,219,254,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,212,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,231,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,214,53,0,0,0,0,0,0,44,228,253,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,236,130,79,79,79,79,124,229,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,244,254,253,253,253,253,254,253,253,247,138,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,119,155,223,253,253,254,253,185,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,201,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,246,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,250,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,168,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,198,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,166,254,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,224,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,255,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,206,254,231,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,201,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,187,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,112,163,222,234,163,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,114,164,244,253,253,254,253,253,245,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,254,253,253,237,151,127,127,189,253,240,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,253,146,31,0,0,0,40,223,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,233,23,0,0,0,0,0,109,253,233,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,233,255,166,0,0,0,0,0,0,110,254,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,166,59,0,0,0,0,0,0,193,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,207,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,228,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,121,250,247,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,180,238,254,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,253,254,253,242,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,254,254,255,254,254,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,253,253,253,214,109,191,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,253,247,138,11,0,92,248,253,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,235,182,59,0,0,0,0,146,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,182,220,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,91,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,179,252,252,194,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,253,253,253,254,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,169,63,218,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,252,233,42,0,48,247,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,189,51,0,0,0,163,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,191,242,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,190,247,252,252,191,146,190,163,85,85,85,85,64,0,0,0,0,0,0,0,0,0,0,0,0,41,171,253,252,252,252,252,253,252,252,252,252,253,252,252,221,74,0,0,0,0,0,0,0,0,0,0,6,190,252,253,252,252,236,145,190,189,247,252,252,253,252,252,252,217,0,0,0,0,0,0,0,0,0,0,110,252,252,253,252,244,111,0,0,0,38,42,42,147,147,138,113,147,0,0,0,0,0,0,0,0,0,0,128,253,253,255,142,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,168,168,63,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,118,191,255,180,138,138,138,76,76,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,252,252,252,252,253,252,227,120,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,208,221,190,208,202,221,252,253,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,25,5,17,13,25,45,117,252,252,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,169,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,149,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,78,161,244,253,252,252,172,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,252,252,252,253,252,252,196,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,253,252,252,252,232,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,221,210,137,137,137,168,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,34,197,136,0,0,0,0,0,0,0,187,252,253,235,44,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,178,0,0,0,0,0,0,64,248,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,244,50,0,0,0,0,57,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,253,173,34,0,0,26,178,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,252,234,184,184,222,252,252,227,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,169,252,252,252,252,253,252,185,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,221,252,252,243,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,242,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,82,244,226,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,223,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,233,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,249,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,218,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,249,218,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,238,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,112,0,3,38,139,128,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,29,32,187,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,60,204,254,233,218,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,241,253,234,171,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,254,254,244,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,245,253,244,172,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,244,145,25,56,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,242,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,139,159,253,159,138,139,138,138,233,253,255,253,253,159,23,0,0,0,0,0,0,0,0,0,0,0,38,193,253,252,252,252,252,253,252,252,252,252,253,252,252,252,137,0,0,0,0,0,0,0,0,0,0,83,240,252,253,252,252,252,252,253,252,233,183,183,222,252,252,252,54,0,0,0,0,0,0,0,0,0,17,209,252,252,253,252,252,252,252,245,139,33,0,0,86,252,252,252,117,0,0,0,0,0,0,0,0,0,99,252,252,252,253,252,252,210,137,21,0,0,0,53,191,252,252,210,75,0,0,0,0,0,0,0,0,87,253,253,253,253,255,253,205,21,0,0,0,0,0,179,255,253,253,98,0,0,0,0,0,0,0,0,0,159,252,252,252,252,228,185,25,0,0,0,0,0,17,234,253,252,240,37,0,0,0,0,0,0,0,0,0,253,252,252,252,136,32,0,0,0,0,0,0,51,188,252,253,252,100,0,0,0,0,0,0,0,0,0,0,159,252,252,176,14,0,0,0,0,0,0,0,90,252,252,253,235,44,0,0,0,0,0,0,0,0,0,0,23,117,22,4,0,0,0,0,0,0,0,95,236,252,252,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,219,252,252,231,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,252,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,202,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,240,253,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,255,253,222,233,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,252,252,253,252,252,172,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,252,253,252,118,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,172,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,200,23,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,236,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,252,238,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,69,0,0,0,0,0,0,41,170,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,167,254,131,3,0,0,0,0,0,97,226,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,216,5,0,0,0,0,0,69,250,247,247,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,137,0,0,0,0,0,39,229,220,127,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,235,3,0,0,0,0,9,172,254,161,196,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,224,0,0,0,0,0,129,254,178,154,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,140,0,0,0,0,25,236,254,140,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,223,242,35,0,0,0,0,161,255,254,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,206,0,0,0,0,15,244,254,199,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,206,0,0,0,2,170,254,249,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,229,220,42,0,0,92,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,239,141,141,231,254,165,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,151,243,254,254,254,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,75,181,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,156,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,193,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,245,139,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,190,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,118,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,233,242,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,194,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,184,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,76,0,0,75,75,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,255,236,135,214,254,255,254,254,183,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,253,253,194,119,189,243,253,253,240,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,243,254,227,89,4,23,5,12,116,241,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,226,41,0,0,0,0,0,0,11,138,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,84,0,0,0,0,0,0,0,0,75,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,11,236,245,0,0,0,0,0,0,0,0,0,115,255,111,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,218,0,0,0,0,0,0,0,0,95,248,198,21,0,0,0,0,0,0,0,0,0,0,0,0,0,6,215,253,5,0,0,0,0,0,30,121,250,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,203,120,120,120,120,172,243,250,173,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,183,254,253,253,253,253,245,161,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,248,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,13,0,0,0,17,228,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,223,0,0,0,120,254,216,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,220,0,0,49,245,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,249,254,99,0,2,131,254,245,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,151,254,238,33,0,89,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,151,254,254,55,0,0,131,254,241,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,239,123,1,0,23,230,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,254,222,51,1,0,159,254,254,154,90,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,239,254,254,254,254,186,146,236,254,254,254,221,12,0,0,0,0,0,0,0,0,0,0,0,0,3,86,242,254,254,254,254,254,254,254,254,254,238,184,65,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,244,149,67,40,40,206,254,254,157,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,184,137,27,0,0,0,0,217,254,238,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,214,254,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,226,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,105,189,255,255,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,106,189,250,254,254,254,254,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,159,232,254,254,254,254,254,254,254,254,166,42,0,0,0,0,0,0,0,0,0,0,0,0,0,62,155,239,254,254,249,180,128,40,40,172,254,254,252,65,0,0,0,0,0,0,0,0,0,0,0,24,151,240,254,254,212,127,47,0,0,0,14,234,254,243,94,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,221,99,5,0,0,0,1,69,225,254,235,53,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,227,118,6,0,0,6,120,254,254,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,163,254,254,254,230,114,83,199,254,254,235,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,52,136,212,254,254,254,254,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,176,254,254,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,144,251,254,254,254,251,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,156,254,254,235,105,209,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,187,254,254,231,69,0,165,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,254,254,177,36,0,50,235,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,236,254,251,96,3,0,28,202,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,235,254,249,99,0,16,75,225,254,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,221,82,16,71,196,254,254,223,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,251,254,186,155,224,254,254,238,164,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,254,254,254,254,249,158,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,214,99,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,154,239,254,255,226,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,248,254,254,254,230,191,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,254,228,130,78,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,181,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,137,0,0,0,0,0,0,5,23,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,141,0,0,0,0,35,123,201,235,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,195,0,0,6,119,227,254,187,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,253,81,102,230,254,254,161,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,254,251,251,254,210,79,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,205,254,254,254,232,103,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,242,254,254,254,174,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,223,254,254,247,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,190,254,253,127,128,253,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,156,0,0,237,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,248,49,0,0,150,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,231,0,0,0,147,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,243,34,0,0,161,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,215,55,109,250,176,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,214,254,254,254,254,251,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,115,167,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,64,0,0,0,0,0,0,128,191,255,191,64,0,0,0,0,0,0,0,0,0,64,255,255,191,128,0,0,0,0,0,0,0,0,0,0,64,191,255,191,0,0,0,0,0,0,0,0,0,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,64,0,0,0,0,0,0,0,0,0,191,191,255,128,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,64,128,0,0,0,0,64,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,191,191,191,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,23,0,27,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,184,184,184,184,184,231,225,184,233,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,151,253,253,253,253,253,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,253,253,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,219,219,253,245,172,128,156,140,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,253,74,15,15,27,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,231,253,243,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,253,253,241,110,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,253,253,234,135,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,244,253,253,253,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,253,253,233,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,124,124,41,16,16,101,181,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,198,87,15,0,0,25,28,28,14,6,113,192,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,217,173,173,245,253,253,214,190,253,253,253,187,4,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,204,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,215,240,253,253,253,253,253,253,253,228,165,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,43,75,75,172,183,146,75,75,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,183,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,249,253,253,249,184,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,245,253,203,253,254,253,244,115,164,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,208,253,188,19,39,174,173,215,241,253,196,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,116,20,0,0,0,0,28,45,212,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,242,63,0,0,0,0,0,0,0,201,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,178,0,0,0,0,0,0,0,0,110,253,241,64,0,0,0,0,0,0,0,0,0,0,0,0,60,239,246,59,0,0,0,0,0,0,0,0,68,253,253,93,0,0,0,0,0,0,0,0,0,0,0,6,173,253,186,0,0,0,0,0,0,0,0,0,29,215,253,93,0,0,0,0,0,0,0,0,0,0,0,108,253,253,116,0,0,0,0,0,0,0,0,0,0,187,253,93,0,0,0,0,0,0,0,0,0,0,0,108,254,216,28,0,0,0,0,0,0,0,0,0,32,220,255,228,0,0,0,0,0,0,0,0,0,0,0,108,253,173,0,0,0,0,0,0,0,0,0,0,124,253,253,99,0,0,0,0,0,0,0,0,0,0,0,108,253,173,0,0,0,0,0,0,0,0,0,0,201,253,238,59,0,0,0,0,0,0,0,0,0,0,0,108,253,173,0,0,0,0,0,0,0,0,0,111,245,253,170,0,0,0,0,0,0,0,0,0,0,0,0,108,253,194,14,0,0,0,0,0,0,0,75,245,253,211,17,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,165,14,0,0,0,0,0,108,212,253,239,87,0,0,0,0,0,0,0,0,0,0,0,0,0,34,214,253,253,195,83,41,17,22,105,249,253,240,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,253,253,253,253,199,210,255,253,243,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,212,240,249,253,253,253,248,183,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,190,120,120,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,163,36,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,239,218,241,215,162,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,78,0,30,101,241,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,250,78,0,0,0,31,226,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,78,0,0,0,0,48,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,234,0,0,0,0,0,0,235,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,188,0,0,0,0,0,0,151,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,135,0,0,0,0,0,0,69,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,135,0,0,0,0,0,0,34,244,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,135,0,0,0,0,0,0,0,195,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,255,39,0,0,0,0,0,0,0,196,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,39,0,0,0,0,0,0,0,195,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,39,0,0,0,0,0,0,0,195,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,254,54,0,0,0,0,0,0,22,226,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,173,0,0,0,0,0,0,152,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,238,18,0,0,0,0,49,246,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,250,128,2,0,0,2,167,250,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,117,0,0,118,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,211,250,234,235,250,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,148,230,231,147,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,254,254,254,254,254,254,255,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,253,253,253,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,250,248,251,253,251,249,253,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,66,102,50,24,160,253,253,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,214,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,197,253,253,218,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,134,248,253,253,195,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,87,186,232,253,253,253,141,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,222,246,253,253,253,253,253,253,149,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,253,253,253,253,253,253,244,89,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,150,161,125,54,54,54,155,222,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,11,104,239,253,247,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,125,202,149,0,0,0,0,0,0,15,216,253,221,0,0,0,0,0,0,0,0,0,0,0,0,2,84,199,251,122,19,0,0,0,0,0,0,129,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,154,0,0,0,0,0,0,0,0,244,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,148,33,8,0,0,0,0,48,182,253,253,152,1,0,0,0,0,0,0,0,0,0,0,0,0,83,225,253,253,253,196,80,71,71,172,228,253,253,177,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,152,253,253,253,253,253,253,253,253,253,184,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,85,86,85,255,139,86,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,169,224,253,251,253,251,253,251,253,196,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,255,253,254,253,254,253,254,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,84,83,253,251,253,251,253,251,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,255,253,85,197,254,253,254,253,226,168,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,28,196,253,251,253,251,253,251,253,138,56,0,84,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,255,253,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,83,139,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,84,0,0,0,169,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,83,0,0,0,56,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,169,0,0,0,0,0,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,56,0,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,0,0,0,0,0,0,85,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,114,0,0,0,0,0,197,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,139,85,28,0,57,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,196,169,224,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,196,198,253,254,253,254,253,254,196,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,28,28,83,139,251,253,138,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,154,254,254,254,137,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,214,242,156,115,115,221,250,147,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,203,34,0,0,0,13,46,199,237,91,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,233,44,0,0,0,0,0,0,7,170,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,85,0,0,0,0,0,0,0,0,0,196,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,224,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,11,0,0,0,139,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,185,254,216,185,118,34,139,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,240,93,0,17,93,160,230,213,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,37,0,0,0,0,0,82,241,235,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,203,0,0,0,0,0,0,32,241,243,231,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,207,0,0,0,0,0,0,137,254,71,84,236,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,221,13,0,0,0,0,51,222,149,0,0,85,215,13,0,0,0,0,0,0,0,0,0,0,0,0,0,7,216,180,0,0,0,30,223,200,19,0,0,0,88,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,220,174,91,108,212,245,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,161,255,254,169,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,184,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,247,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,198,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,250,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,245,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,255,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,255,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,238,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,239,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,135,85,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,225,246,252,253,252,193,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,244,231,250,255,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,56,19,150,253,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,57,144,243,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,172,197,229,252,252,252,253,252,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,231,252,252,253,252,252,252,253,252,252,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,254,247,247,253,254,253,253,128,114,207,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,209,128,234,252,253,240,158,9,0,94,252,252,207,169,169,144,0,0,0,0,0,0,0,0,111,234,252,252,172,234,252,252,244,81,0,0,0,13,171,252,253,252,252,52,0,0,0,0,0,0,0,0,141,252,252,252,253,252,252,202,75,0,0,0,0,0,10,78,140,65,28,3,0,0,0,0,0,0,0,0,242,253,253,253,254,209,113,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,196,196,196,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,128,128,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,128,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,0,0,0,0,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,168,140,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,198,243,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,88,253,254,254,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,254,207,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,176,254,254,238,105,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,254,251,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,214,254,225,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,251,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,251,226,40,0,0,0,0,17,100,197,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,251,181,0,0,0,0,75,249,254,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,181,0,0,0,19,221,254,254,254,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,181,0,0,0,108,254,254,244,167,216,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,204,10,0,2,186,254,242,73,10,205,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,134,8,6,254,254,119,0,92,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,175,72,254,254,147,105,250,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,181,253,254,254,254,254,254,254,254,183,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,254,254,234,184,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,72,238,233,150,133,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,125,235,255,254,187,157,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,250,253,253,253,253,253,253,252,224,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,253,253,253,253,253,253,253,253,225,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,253,253,253,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,155,155,112,25,25,84,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,119,244,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,253,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,195,253,253,253,253,253,253,203,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,253,253,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,171,241,253,240,206,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,71,55,15,198,253,253,232,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,46,32,0,0,0,0,86,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,227,35,0,0,0,66,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,144,8,0,7,186,253,253,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,253,145,27,140,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,253,253,253,253,253,253,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,225,253,253,253,253,253,253,253,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,224,252,253,253,253,253,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,156,253,253,230,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,155,253,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,228,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,251,253,251,251,185,64,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,251,251,253,251,251,251,251,218,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,115,253,253,253,255,253,253,253,253,255,233,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,214,251,251,243,240,253,251,251,251,251,253,251,141,4,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,251,188,158,253,251,251,251,251,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,16,181,253,243,109,23,19,31,31,31,70,228,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,162,251,253,220,0,0,0,0,0,0,0,158,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,63,0,0,0,0,0,0,0,0,195,253,253,31,0,0,0,0,0,0,0,0,0,0,0,96,244,251,181,16,0,0,0,0,0,0,0,0,96,251,251,31,0,0,0,0,0,0,0,0,0,0,16,189,251,251,79,0,0,0,0,0,0,0,0,0,174,251,251,31,0,0,0,0,0,0,0,0,0,0,72,251,251,251,0,0,0,0,0,0,0,0,0,139,253,251,251,31,0,0,0,0,0,0,0,0,0,0,190,251,251,152,0,0,0,0,0,0,0,0,0,158,253,251,251,31,0,0,0,0,0,0,0,0,0,0,191,253,229,59,0,0,0,0,0,0,0,48,234,253,255,241,79,0,0,0,0,0,0,0,0,0,0,0,190,251,188,0,0,0,0,0,0,12,52,221,251,251,253,101,0,0,0,0,0,0,0,0,0,0,0,0,190,251,220,48,0,0,0,0,80,174,251,251,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,133,40,0,32,104,240,253,251,251,251,251,129,8,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,218,158,205,251,251,253,251,251,251,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,181,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,253,236,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,253,178,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,21,0,0,57,253,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,179,116,116,116,116,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,253,253,255,253,253,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,252,252,252,252,253,252,252,252,252,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,252,253,252,252,252,252,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,252,253,193,160,160,244,253,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,252,75,8,0,0,230,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,87,138,138,180,253,255,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,252,252,252,253,252,252,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,252,252,253,252,252,252,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,252,252,253,252,252,252,252,98,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,137,252,252,253,252,168,137,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,121,250,137,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,250,250,250,133,69,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,92,135,250,250,250,250,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,250,250,138,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,250,250,136,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,250,250,250,250,250,132,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,250,250,250,250,250,132,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,124,8,0,0,0,0,43,229,229,229,229,229,62,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,114,0,0,0,22,255,252,252,252,252,252,252,252,252,42,0,0,0,0,0,0,0,0,66,250,250,250,250,137,17,0,0,229,252,250,250,250,250,250,250,250,250,250,0,0,0,0,0,0,0,0,252,250,250,250,250,250,133,69,69,235,252,250,250,250,250,250,250,250,250,250,0,0,0,0,0,0,0,0,168,250,250,250,250,250,250,250,250,250,252,250,250,250,250,250,250,250,250,250,0,0,0,0,0,0,0,0,23,250,250,250,250,250,250,250,250,250,252,250,250,250,250,250,250,250,250,250,0,0,0,0,0,0,0,0,23,250,250,250,250,250,250,250,250,250,252,250,250,250,250,250,250,250,250,250,0,0,0,0,0,0,0,0,9,120,250,250,250,250,250,250,250,250,252,250,250,250,250,250,250,132,90,90,0,0,0,0,0,0,0,0,0,13,67,134,250,250,250,250,250,250,252,250,199,134,250,250,132,18,0,0,0,0,0,0,0,0,0,0,0,0,0,17,44,157,250,250,250,250,252,212,32,17,44,157,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,21,21,21,21,21,17,0,0,0,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,190,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,249,249,249,249,249,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,254,254,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,254,254,254,254,248,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,225,254,254,254,254,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,93,205,254,254,254,200,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,120,245,254,254,254,243,89,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,196,222,254,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,246,254,254,254,254,254,254,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,231,236,189,158,58,58,189,254,212,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,65,47,0,0,0,0,170,254,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,231,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,74,231,254,249,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,90,254,254,248,121,0,0,0,0,0,0,0,0,0,0,0,0,0,17,101,19,0,0,0,0,28,137,187,254,254,208,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,212,157,157,111,71,237,254,255,248,228,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,255,254,254,254,254,254,254,254,239,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,245,254,254,254,254,254,244,204,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,117,117,117,117,117,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,204,253,253,253,255,228,104,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,243,253,252,252,252,253,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,209,252,252,253,233,130,56,128,252,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,202,78,22,0,0,66,215,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,255,253,206,13,0,0,0,114,254,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,214,56,0,0,0,0,38,253,252,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,215,57,0,0,19,85,185,253,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,252,243,225,226,231,252,252,253,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,244,253,253,254,253,253,253,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,171,196,197,234,252,252,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,227,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,64,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,64,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,64,255,255,255,191,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,191,255,255,191,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,128,128,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,192,165,254,254,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,177,253,253,253,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,253,239,227,253,234,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,204,87,50,55,229,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,165,253,238,23,0,0,0,144,253,220,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,143,0,0,0,0,137,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,143,0,0,0,0,7,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,143,0,0,0,0,1,127,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,143,0,0,0,0,0,13,242,224,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,143,0,0,0,0,0,0,241,193,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,143,0,0,0,0,0,24,243,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,128,0,0,0,0,0,125,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,6,0,0,0,0,8,197,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,253,253,6,0,0,0,0,144,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,176,253,253,136,0,0,0,68,189,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,143,0,0,87,242,253,253,219,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,230,151,174,239,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,236,253,253,253,253,253,253,230,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,232,253,253,253,249,143,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,130,116,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,213,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,99,233,253,203,253,227,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,167,60,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,119,248,253,224,85,16,218,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,251,63,0,29,228,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,250,115,0,0,60,253,237,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,200,0,0,0,60,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,67,11,0,0,2,164,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,218,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,22,22,21,0,0,185,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,160,253,253,248,168,168,248,239,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,251,252,226,189,231,253,253,253,200,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,168,0,0,51,253,253,253,253,146,38,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,134,0,0,107,253,253,253,253,253,235,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,177,251,182,141,242,253,242,128,149,200,221,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,253,253,253,208,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,166,253,200,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,196,183,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,179,248,248,76,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,64,254,141,35,13,0,0,0,0,0,0,0,0,0,0,0,0,0,59,12,0,155,61,0,0,0,0,0,166,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,36,0,44,242,88,0,0,0,0,32,236,214,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,28,0,126,254,76,0,0,0,0,128,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,247,154,7,0,0,0,9,209,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,245,245,57,0,0,0,0,140,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,246,129,0,0,0,0,5,166,247,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,163,0,0,0,0,0,102,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,136,43,41,0,0,12,176,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,249,254,254,252,226,226,234,254,229,101,38,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,146,198,197,197,203,254,254,235,197,162,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,247,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,238,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,226,196,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,255,232,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,195,245,132,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,221,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,244,223,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,248,180,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,242,183,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,243,155,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,216,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,243,216,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,250,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,173,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,233,134,48,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,145,130,235,211,197,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,225,206,0,0,17,228,226,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,192,0,0,91,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,182,251,185,214,235,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,149,254,197,159,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,145,159,179,212,128,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,160,242,241,226,205,136,246,218,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,177,36,0,0,0,78,215,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,234,5,0,0,0,0,0,50,243,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,81,0,0,0,0,0,0,58,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,44,0,0,0,0,0,0,177,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,64,213,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,154,254,254,240,173,83,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,206,103,14,14,93,175,202,201,118,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,20,0,0,0,0,0,9,88,212,215,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,144,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,149,250,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,110,0,0,0,0,0,0,0,0,0,0,0,0,0,83,31,0,0,0,0,0,0,0,0,0,3,177,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,9,178,108,12,0,0,0,0,0,0,20,166,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,161,117,100,89,125,34,34,111,202,224,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,189,254,254,254,218,178,95,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,97,97,97,97,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,180,219,253,253,253,253,183,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,211,253,253,220,198,198,247,253,242,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,192,253,227,200,33,0,0,133,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,208,25,0,0,0,0,98,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,107,0,0,0,0,57,240,253,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,81,1,0,0,0,57,247,253,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,171,240,253,173,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,168,253,218,125,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,247,123,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,191,247,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,234,251,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,249,136,90,0,0,0,0,0,0,0,0,0,43,104,137,241,229,48,0,0,0,0,0,0,0,0,210,253,253,253,249,220,220,220,220,220,220,220,220,220,234,253,253,253,253,160,0,0,0,0,0,0,0,0,25,107,191,238,253,253,253,253,253,253,253,253,253,253,228,191,191,191,191,117,0,0,0,0,0,0,0,0,0,0,0,57,94,204,75,134,163,75,75,75,75,75,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,128,128,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,191,128,128,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,39,122,101,170,169,92,39,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,188,254,254,254,254,254,254,254,198,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,206,254,251,165,88,32,32,32,104,231,239,40,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,248,39,0,0,0,0,0,0,40,249,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,162,0,0,0,0,0,0,0,32,248,206,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,186,0,0,0,0,0,0,33,171,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,246,19,0,0,0,0,35,222,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,168,254,197,21,0,0,32,219,254,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,254,201,18,58,241,253,140,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,210,254,210,222,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,208,254,254,181,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,111,251,254,254,249,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,146,194,254,247,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,254,142,4,75,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,217,28,0,3,145,254,227,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,234,247,31,0,0,0,30,244,255,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,197,0,0,0,0,0,239,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,250,141,58,33,33,33,241,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,179,254,254,254,254,254,254,254,238,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,93,254,254,254,254,254,152,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,141,223,176,254,254,254,156,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,247,249,246,249,253,253,216,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,28,46,25,76,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,89,249,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,247,253,253,248,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,253,253,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,208,194,194,194,194,167,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,206,253,253,253,253,253,253,253,253,253,242,80,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,249,168,148,148,217,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,145,193,178,94,2,0,0,0,26,235,253,241,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,238,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,160,253,253,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,168,253,254,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,21,11,0,0,0,0,0,16,122,226,253,253,253,228,14,0,0,0,0,0,0,0,0,0,0,0,0,0,157,101,0,0,0,20,112,237,253,254,253,253,163,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,248,122,90,162,225,253,253,253,253,248,98,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,253,253,253,254,253,235,146,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,222,253,253,253,177,95,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,54,111,157,210,210,225,213,97,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,254,254,254,233,251,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,134,70,35,35,35,23,104,250,248,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,228,207,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,249,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,254,136,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,229,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,226,249,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,164,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,161,254,218,20,0,0,15,26,26,26,26,35,126,139,225,221,200,0,0,0,0,0,0,0,0,0,4,164,254,231,46,0,76,157,224,254,254,254,254,254,229,174,139,62,0,0,0,0,0,0,0,0,0,0,156,254,255,140,135,169,253,254,254,240,219,174,92,20,14,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,254,254,254,240,128,65,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,219,223,197,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,55,12,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,31,82,23,58,3,0,184,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,226,252,245,254,238,253,192,18,183,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,240,225,231,138,127,130,225,253,113,183,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,230,239,135,12,0,0,0,54,252,131,69,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,235,254,71,0,0,0,0,0,0,220,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,129,0,0,0,0,0,3,132,230,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,99,0,0,0,0,15,153,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,244,112,57,112,158,207,253,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,182,254,253,253,253,253,254,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,139,237,182,222,254,253,222,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,187,242,255,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,56,168,253,244,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,249,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,217,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,229,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,242,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,248,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,234,254,255,175,144,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,254,254,249,136,0,14,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,243,254,157,147,227,239,254,247,135,241,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,161,6,0,0,21,149,254,254,254,243,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,33,0,0,0,0,4,161,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,246,212,6,0,0,0,0,0,38,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,132,0,0,0,0,0,4,156,254,254,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,49,0,0,0,43,96,181,254,254,243,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,103,75,148,206,248,254,254,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,254,254,254,254,252,177,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,253,253,225,164,85,0,20,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,57,0,0,0,0,105,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,235,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,234,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,243,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,47,27,0,0,0,0,0,0,102,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,201,253,183,0,0,0,0,0,32,239,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,250,41,0,0,0,132,172,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,202,253,233,82,0,0,0,0,162,253,253,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,138,0,0,0,0,0,220,253,243,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,208,253,219,63,0,0,0,0,26,169,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,179,253,253,128,0,0,0,0,20,209,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,206,11,0,0,0,0,42,253,253,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,210,13,0,0,0,0,46,253,253,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,253,225,149,53,9,0,61,252,253,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,253,253,211,160,180,253,253,247,128,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,81,165,253,253,253,253,253,253,253,253,253,253,190,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,62,153,187,253,253,253,253,253,253,253,201,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,16,173,253,253,253,224,222,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,180,253,253,250,154,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,221,253,253,253,122,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,230,253,252,175,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,240,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,1,18,2,43,43,43,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,241,247,242,254,253,252,242,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,95,95,43,39,37,33,142,214,1,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,50,73,79,118,134,134,165,168,168,138,92,0,0,0,0,0,0,0,0,0,0,8,69,110,150,188,246,254,243,207,157,133,125,50,28,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,254,237,173,138,253,122,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,108,45,11,0,86,234,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,243,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,42,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,109,129,253,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,232,252,252,252,253,242,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,252,252,253,252,241,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,125,221,252,252,252,231,108,253,252,252,252,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,118,0,0,109,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,35,138,179,118,5,0,0,15,222,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,99,252,253,252,247,217,218,217,217,134,73,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,99,252,252,253,252,252,252,253,252,252,252,253,149,11,0,0,0,0,0,0,0,0,0,0,0,0,84,191,252,252,252,253,252,252,252,253,252,252,252,253,252,175,62,0,0,0,0,0,0,0,0,0,32,212,253,253,253,253,253,255,253,253,253,255,253,253,253,255,253,253,108,0,0,0,0,0,0,0,0,135,227,252,252,252,252,252,210,180,55,35,35,35,35,35,35,180,138,35,15,0,0,0,0,0,0,0,0,253,252,252,252,236,215,112,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,231,108,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,253,255,253,254,253,86,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,253,251,253,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,198,253,254,253,254,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,196,83,28,83,84,196,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,0,0,0,0,0,0,0,114,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,31,130,130,164,254,254,254,254,206,79,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,92,156,253,253,253,247,247,253,243,245,253,253,202,7,0,0,0,0,0,0,0,0,0,0,0,0,24,156,253,253,253,253,209,57,57,111,19,41,236,253,253,12,0,0,0,0,0,0,0,0,0,0,0,24,210,253,253,253,224,105,28,0,0,0,0,0,93,239,242,11,0,0,0,0,0,0,0,0,0,0,8,210,253,253,253,248,178,0,0,0,0,0,0,119,31,233,210,98,16,0,0,0,0,0,0,0,0,0,13,253,253,249,216,119,0,0,0,0,0,0,0,112,208,253,253,253,112,0,0,0,0,0,0,0,0,0,34,253,253,227,16,0,30,71,137,44,44,44,87,241,253,235,155,86,2,0,0,0,0,0,0,0,0,0,136,253,253,253,203,174,228,253,253,253,253,253,253,253,209,120,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,253,253,253,253,253,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,10,226,253,253,253,253,253,253,253,253,235,241,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,240,185,94,61,44,50,188,253,229,18,0,0,0,0,0,0,0,0,0,0,0,0,10,229,253,244,160,55,44,0,0,0,0,0,88,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,222,0,0,0,0,0,0,0,0,88,253,253,24,0,0,0,0,0,0,0,0,0,0,0,48,234,253,253,222,0,0,0,0,0,0,0,0,88,253,253,67,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,234,34,0,0,0,0,0,0,30,148,253,253,42,0,0,0,0,0,0,0,0,0,0,0,240,253,197,212,253,234,76,0,0,0,0,30,209,253,253,118,3,0,0,0,0,0,0,0,0,0,0,0,254,253,162,27,212,253,216,34,0,0,81,210,253,217,42,3,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,163,137,253,253,241,236,236,249,220,103,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,253,253,253,253,253,163,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,199,253,253,253,232,129,102,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,226,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,226,57,0,0,0,29,141,170,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,114,0,0,0,86,226,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,198,0,0,0,141,255,255,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,57,0,29,170,255,255,141,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,0,29,198,255,255,141,0,0,29,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,198,255,255,86,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,86,114,255,255,57,0,0,0,114,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,198,255,86,0,57,141,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,170,170,255,255,255,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,226,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,255,254,187,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,253,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,253,159,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,249,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,253,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,144,253,253,253,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,232,253,253,253,236,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,177,232,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,164,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,239,121,121,121,121,121,162,147,121,121,121,197,120,0,0,0,0,0,0,0,0,0,0,0,0,0,51,248,252,252,252,253,252,252,252,252,252,252,252,252,245,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,252,252,252,253,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,253,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,18,96,109,203,252,252,221,59,172,143,158,157,53,136,178,53,0,0,0,0,0,0,0,0,0,0,0,0,137,252,217,252,252,252,222,60,54,54,54,82,96,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,253,252,252,252,252,252,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,196,252,252,252,252,253,252,252,252,245,245,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,252,252,252,253,252,240,238,106,107,147,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,255,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,26,26,26,90,247,242,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,124,0,0,0,0,0,0,0,0,0,197,252,177,17,0,0,0,0,0,0,0,0,0,0,0,0,0,253,173,7,0,0,0,0,0,0,0,0,23,232,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,193,74,54,14,0,0,0,29,54,180,245,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,193,173,173,173,215,253,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,239,252,252,252,252,252,252,252,252,252,253,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,243,252,252,252,252,252,252,252,253,252,247,196,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,252,252,252,252,252,252,253,126,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,218,217,196,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,221,253,252,252,211,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,181,252,253,252,252,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,149,252,252,253,179,119,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,73,233,252,252,252,253,138,5,159,253,242,62,0,0,0,0,0,0,0,0,0,0,0,0,0,79,181,232,252,253,252,226,215,72,10,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,1,191,252,252,252,108,108,31,0,0,0,0,62,253,252,71,0,0,0,0,0,0,0,0,0,0,32,109,191,253,253,175,62,0,0,0,0,0,0,0,0,255,253,133,0,0,0,0,0,0,0,0,0,0,197,252,252,220,138,10,0,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,196,252,252,41,0,0,0,0,0,0,0,0,0,0,0,217,247,221,16,0,0,0,0,0,0,0,0,0,155,252,168,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,108,0,0,0,0,0,0,0,0,255,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,191,0,0,0,0,0,0,0,0,253,252,143,31,0,0,0,0,0,0,0,0,0,0,0,42,233,252,252,108,0,0,0,0,0,0,0,0,149,252,252,128,37,5,0,0,0,0,0,0,0,0,6,160,253,252,226,31,0,0,0,0,0,0,0,0,109,252,252,252,252,159,41,0,0,0,0,0,0,125,160,252,253,252,132,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,253,253,192,150,253,253,255,253,253,253,255,119,0,0,0,0,0,0,0,0,0,0,0,10,138,179,252,252,252,252,253,252,252,252,253,252,241,179,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,1,71,71,175,215,217,215,215,215,154,71,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,107,241,240,244,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,241,252,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,252,252,252,253,252,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,252,186,213,252,252,252,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,252,252,221,128,0,107,252,252,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,166,252,252,248,89,0,0,128,252,252,206,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,248,131,0,0,13,241,252,252,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,212,0,8,14,197,252,252,248,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,233,133,202,252,253,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,253,255,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,252,252,252,252,253,252,163,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,61,228,237,168,252,252,253,212,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,33,27,252,252,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,157,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,223,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,189,203,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,128,253,255,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,246,252,252,253,252,233,167,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,252,214,195,56,55,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,214,85,163,226,100,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,252,253,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,217,84,84,218,233,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,220,37,0,0,85,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,113,25,0,0,0,38,222,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,238,252,103,0,0,0,210,252,242,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,252,239,197,197,198,246,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,233,252,252,252,253,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,142,252,252,253,127,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,59,82,82,156,209,254,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,96,58,103,147,221,254,255,237,234,91,39,39,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,254,241,175,78,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,192,117,49,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,242,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,225,245,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,214,0,0,0,7,20,20,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,214,61,79,124,200,254,254,237,176,176,138,138,31,0,0,0,0,0,0,0,0,0,0,0,0,10,214,254,251,249,230,214,146,117,117,118,117,184,214,229,243,141,0,0,0,0,0,0,0,0,0,0,0,59,254,254,163,81,23,0,0,0,0,0,0,0,0,23,179,249,165,8,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,23,170,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,232,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,236,254,58,0,0,0,0,0,0,0,0,0,103,78,0,0,0,0,0,0,0,0,0,0,0,0,14,149,254,192,0,0,0,0,0,0,0,0,0,28,233,78,0,0,0,0,0,0,0,0,0,0,0,54,149,254,210,25,0,0,0,0,0,0,0,0,0,59,254,108,0,0,0,0,0,0,0,0,7,79,131,236,254,179,24,0,0,0,0,0,0,0,0,0,0,50,248,248,144,137,137,100,137,137,175,198,236,254,232,176,95,3,0,0,0,0,0,0,0,0,0,0,0,0,57,155,246,254,254,254,254,254,178,156,155,126,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,11,50,58,111,60,11,11,11,11,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,254,254,254,254,254,254,253,165,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,160,247,198,134,134,134,134,134,134,134,197,241,193,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,42,0,0,0,0,0,0,0,0,42,200,247,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,228,206,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,230,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,146,254,207,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,150,254,239,28,56,61,61,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,112,254,254,251,215,244,129,119,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,71,169,205,254,254,254,220,114,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,55,137,225,253,254,254,254,249,184,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,107,215,254,254,254,254,254,254,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,251,254,255,254,254,254,249,219,160,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,239,254,254,254,254,189,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,10,57,110,59,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,194,96,96,96,96,96,194,195,96,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,251,251,251,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,251,251,253,251,251,251,251,253,251,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,186,251,251,251,229,188,188,188,188,189,69,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,152,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,244,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,251,220,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,253,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,248,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,251,253,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,96,234,253,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,92,197,251,251,251,181,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,253,251,251,251,172,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,143,229,251,253,251,219,148,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,95,94,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,250,159,123,159,159,159,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,253,254,254,254,254,254,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,254,254,254,254,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,252,254,254,229,131,185,254,254,246,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,230,247,213,40,0,149,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,4,0,89,249,254,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,254,229,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,254,193,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,247,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,230,254,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,254,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,216,254,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,252,118,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,239,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,240,66,0,0,35,164,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,250,254,152,0,0,0,197,254,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,222,29,0,0,0,171,254,254,229,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,146,255,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,179,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,56,167,83,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,192,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,167,253,204,27,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,128,0,0,0,0,0,17,119,253,253,150,38,0,0,0,0,0,0,0,0,0,0,0,0,0,3,169,253,246,174,69,69,69,69,119,253,253,253,253,229,140,39,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,253,253,253,253,253,253,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,4,61,182,253,253,253,253,253,231,196,253,253,78,49,49,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,43,43,43,43,43,31,75,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,169,150,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,131,192,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,212,254,160,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,211,254,251,75,14,19,19,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,232,87,0,168,254,254,172,49,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,251,129,0,0,22,129,223,232,254,172,38,28,3,0,0,0,0,0,0,0,0,0,0,0,0,88,214,254,144,0,0,0,0,0,0,28,132,230,220,244,171,91,0,0,0,0,0,0,0,0,0,0,0,137,254,238,34,0,0,0,0,0,0,0,0,30,132,249,254,216,29,0,0,0,0,0,0,0,0,0,5,218,254,205,0,0,0,0,0,0,0,0,0,0,0,120,250,254,159,1,0,0,0,0,0,0,0,0,34,254,250,82,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,6,0,0,0,0,0,0,0,0,131,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,36,0,0,0,0,0,0,0,0,164,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,26,241,254,163,0,0,0,0,0,0,0,0,219,254,241,31,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,0,0,0,0,0,0,0,0,131,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,0,0,0,0,0,0,0,0,25,214,254,250,83,0,0,0,0,0,0,0,0,0,0,0,80,222,254,108,0,0,0,0,0,0,0,0,0,137,254,254,217,35,0,0,0,0,0,0,0,0,0,37,239,254,211,4,0,0,0,0,0,0,0,0,0,23,211,254,254,217,34,0,0,0,0,0,0,0,83,236,254,254,88,0,0,0,0,0,0,0,0,0,0,0,23,211,254,254,239,145,31,0,81,107,107,210,239,254,255,101,2,0,0,0,0,0,0,0,0,0,0,0,0,23,211,254,254,254,242,237,250,254,254,254,254,254,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,109,254,254,254,254,254,254,254,156,91,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,91,130,130,130,94,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,147,147,202,230,59,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,219,254,254,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,209,254,254,253,249,250,254,239,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,254,254,98,0,50,246,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,254,179,14,0,0,172,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,241,254,254,184,10,0,0,0,99,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,249,245,168,8,0,0,0,0,99,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,48,0,0,0,0,0,0,99,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,154,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,130,94,12,0,0,21,213,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,246,254,254,212,100,13,156,254,231,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,254,254,254,217,252,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,252,254,170,156,241,254,254,254,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,97,0,107,255,254,254,236,174,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,117,140,251,254,254,254,254,254,220,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,253,254,254,248,182,21,193,254,254,103,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,209,254,254,254,243,60,0,0,18,118,184,184,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,243,254,217,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,128,174,217,162,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,244,165,149,235,209,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,230,235,53,0,0,53,236,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,52,0,0,0,0,92,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,186,0,0,0,0,0,10,206,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,115,0,0,0,0,0,0,96,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,242,89,0,0,0,0,0,0,60,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,255,89,0,0,0,0,0,0,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,132,0,0,0,0,0,102,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,74,0,0,35,159,251,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,189,239,154,198,248,254,214,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,114,190,151,139,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,211,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,243,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,212,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,217,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,179,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,79,154,253,253,253,255,228,141,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,253,252,227,227,197,234,252,215,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,198,234,252,252,194,56,31,31,0,38,209,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,203,252,214,139,13,0,0,0,0,0,110,139,250,125,0,0,0,0,0,0,0,0,0,0,0,0,89,213,104,253,253,190,0,0,0,0,0,0,10,128,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,252,215,26,0,0,0,7,82,178,171,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,142,171,252,150,0,0,0,29,252,196,133,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,238,38,0,101,79,252,65,66,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,253,253,254,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,166,252,252,252,253,214,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,134,222,253,252,224,205,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,128,252,240,252,253,227,43,13,103,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,226,169,253,241,101,0,0,0,29,253,216,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,225,131,240,115,0,0,0,0,10,84,215,28,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,240,247,178,68,6,0,0,0,0,0,0,159,116,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,252,228,22,0,0,0,0,0,0,0,0,85,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,239,94,7,0,0,0,0,0,0,0,48,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,219,187,149,32,0,0,0,0,0,0,85,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,130,168,181,185,85,47,47,0,0,19,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,140,139,215,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,57,34,53,111,130,144,144,144,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,254,253,253,247,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,253,253,254,253,253,253,244,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,237,183,169,121,212,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,88,88,88,23,0,0,15,147,250,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,213,253,253,234,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,170,236,253,253,248,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,155,228,253,254,253,173,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,219,253,253,253,254,253,199,130,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,253,254,253,253,253,246,183,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,164,221,221,221,174,230,254,254,254,254,250,144,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,77,134,201,253,253,253,196,9,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,10,82,245,253,253,125,0,0,0,0,0,0,0,0,114,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,149,253,249,0,0,0,0,0,0,0,0,144,192,75,3,0,0,0,0,0,0,0,0,0,0,0,0,51,138,253,253,0,0,0,0,0,0,0,0,144,253,253,143,31,0,0,0,0,0,0,0,0,47,89,128,249,253,253,253,0,0,0,0,0,0,0,0,75,163,253,253,240,232,232,232,198,218,219,151,232,243,253,253,253,253,211,84,0,0,0,0,0,0,0,0,0,55,226,253,253,253,253,253,253,253,255,253,253,253,253,253,253,207,26,0,0,0,0,0,0,0,0,0,0,0,26,171,227,253,253,253,253,253,254,253,253,247,152,66,66,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,33,33,33,33,33,33,33,33,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,167,198,252,255,175,122,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,143,251,254,184,183,183,198,254,235,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,172,254,172,17,0,0,0,4,63,228,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,171,7,0,0,0,0,0,0,162,242,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,191,170,9,0,0,0,0,0,0,0,138,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,218,27,0,0,0,0,0,0,0,0,211,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,5,215,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,167,107,80,3,0,198,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,120,252,254,254,254,222,119,253,132,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,194,247,120,17,17,132,252,254,201,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,199,216,41,0,0,0,17,247,254,221,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,231,33,0,0,0,0,200,254,193,254,163,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,240,137,0,0,0,5,153,254,140,14,232,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,248,49,0,0,18,179,254,170,5,0,84,250,246,132,28,0,0,0,0,0,0,0,0,0,0,0,0,113,205,3,0,24,197,253,145,0,0,0,0,143,248,187,15,0,0,0,0,0,0,0,0,0,0,0,0,62,254,148,169,239,244,122,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,175,254,254,175,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,243,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,248,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,253,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,255,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,226,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,241,254,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,253,246,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,242,214,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,10,85,85,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,229,252,252,240,163,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,229,253,253,253,255,253,165,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,84,84,97,234,252,252,157,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,209,252,253,190,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,178,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,54,253,253,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,0,26,13,57,144,253,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,209,209,197,223,209,252,252,253,252,252,252,135,85,19,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,252,252,253,252,252,252,253,252,252,252,253,252,231,225,226,225,225,75,0,0,0,0,0,0,0,0,13,138,225,225,226,225,225,225,226,225,225,225,226,231,231,225,239,113,200,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,0,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,162,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,111,16,0,0,0,0,0,0,107,254,254,184,0,0,0,0,0,0,0,0,0,5,4,0,0,0,34,245,254,60,0,0,0,0,0,20,215,254,254,23,0,0,0,0,0,0,0,0,0,39,32,0,0,0,130,254,254,60,0,0,0,0,0,155,254,254,163,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,222,29,0,0,0,0,36,240,254,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,248,254,115,0,0,0,0,0,143,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,250,254,241,18,0,0,0,0,86,250,254,163,2,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,254,254,93,0,0,0,0,23,230,254,245,47,0,0,0,0,0,0,0,0,0,0,0,0,0,2,103,254,254,171,35,0,19,41,41,138,254,254,155,35,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,254,235,238,205,224,245,245,254,254,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,254,254,254,254,254,254,254,254,254,254,239,28,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,253,239,239,239,239,239,248,254,254,254,244,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,85,78,0,0,0,0,0,150,254,254,150,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,241,254,225,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,254,250,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,226,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,217,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,254,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,228,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,204,253,253,253,140,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,253,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,254,253,244,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,253,254,210,21,34,139,55,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,254,111,74,240,254,253,207,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,253,254,203,253,253,254,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,253,254,253,253,236,128,245,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,254,248,179,80,254,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,254,173,51,234,254,253,210,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,254,254,255,254,254,254,255,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,254,253,253,253,224,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,234,253,253,254,253,251,196,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,228,254,202,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,69,150,210,255,144,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,182,253,253,253,253,253,236,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,246,253,246,177,114,35,210,253,189,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,206,253,253,252,94,0,0,0,9,200,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,252,159,37,0,0,0,0,0,128,253,220,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,210,128,0,0,0,0,0,0,0,24,236,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,137,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,234,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,199,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,89,89,175,192,152,89,89,219,253,159,20,0,0,0,0,0,0,0,0,0,0,0,0,0,5,109,188,243,253,253,253,253,253,253,253,253,253,195,108,32,32,6,0,0,0,0,0,0,0,0,0,0,185,253,253,253,217,175,175,175,238,253,253,253,253,253,253,253,236,32,0,0,0,0,0,0,0,0,24,205,253,253,251,130,14,0,1,107,248,253,238,123,100,129,129,125,20,0,0,0,0,0,0,0,0,0,16,188,253,253,157,0,0,45,156,253,253,198,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,253,87,41,163,241,253,247,120,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,253,253,203,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,253,253,204,82,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,34,116,144,144,221,254,245,144,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,153,247,253,253,253,254,253,253,253,253,155,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,238,253,253,253,223,154,154,154,154,249,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,35,225,253,249,192,121,54,7,0,0,0,9,244,253,246,20,0,0,0,0,0,0,0,0,0,0,0,0,52,198,140,69,0,0,0,0,0,0,0,124,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,244,253,234,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,137,247,253,244,66,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,241,254,253,253,253,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,228,253,253,255,253,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,253,253,143,66,33,138,167,253,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,111,77,0,0,0,0,0,0,200,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,243,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,147,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,214,232,60,0,0,8,146,253,251,69,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,234,70,93,155,224,253,240,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,253,253,253,254,253,145,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,143,66,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,181,61,89,89,89,72,60,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,172,246,246,250,254,254,254,254,188,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,75,75,75,117,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,249,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,248,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,190,248,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,120,247,247,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,161,229,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,230,248,213,220,254,152,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,69,36,0,8,166,254,232,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,248,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,159,62,0,0,0,0,0,35,240,215,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,234,255,241,163,151,148,163,180,249,255,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,171,171,237,254,254,254,254,163,41,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,202,255,253,253,253,253,202,73,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,251,251,251,253,251,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,231,251,253,251,251,251,251,253,251,220,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,253,251,251,251,251,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,241,251,251,72,71,71,148,251,253,251,251,220,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,243,253,72,0,0,0,0,0,255,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,71,0,0,0,0,0,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,215,61,0,0,0,0,0,98,251,251,251,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,154,0,0,202,251,251,251,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,125,253,253,253,253,255,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,251,251,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,241,253,251,251,251,251,253,251,251,251,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,251,253,188,142,189,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,201,30,27,211,251,253,251,251,251,251,182,77,0,0,0,0,0,0,0,0,0,0,0,73,176,253,253,253,73,176,253,253,253,255,253,253,253,253,255,253,35,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,138,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,225,164,35,61,215,241,253,251,246,138,11,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,157,142,41,0,0,0,0,103,253,251,251,251,71,0,0,0,0,0,0,0,0,72,71,71,71,71,72,71,10,0,0,0,0,0,0,0,72,71,226,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,175,255,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,159,253,253,222,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,213,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,248,235,61,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,252,239,239,135,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,253,253,250,222,231,253,222,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,213,111,0,34,210,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,253,213,29,0,0,0,29,253,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,149,253,231,37,0,0,0,0,16,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,147,0,0,0,0,0,16,253,223,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,68,0,0,0,0,20,174,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,233,253,248,64,0,0,0,0,79,253,246,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,168,0,0,0,0,0,224,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,168,0,0,19,170,216,249,202,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,210,253,171,8,8,176,253,253,208,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,204,253,253,253,253,253,200,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,250,253,253,253,108,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,118,253,113,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,162,238,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,92,237,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,135,248,254,254,254,204,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,166,245,254,231,254,245,87,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,248,254,201,87,74,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,196,246,219,89,10,12,218,232,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,232,70,0,0,67,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,227,138,92,188,240,72,53,29,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,115,211,254,254,254,254,254,254,239,232,213,128,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,39,156,254,129,81,125,125,125,132,244,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,225,215,7,0,0,0,0,0,76,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,165,0,0,0,0,0,0,89,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,81,0,0,0,0,0,3,181,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,214,8,0,0,0,0,0,31,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,202,0,0,0,0,0,12,200,241,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,202,0,0,0,0,13,178,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,202,0,0,0,18,119,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,204,9,24,96,200,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,206,255,254,254,254,239,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,168,197,153,82,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,31,31,52,132,255,253,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,203,203,203,233,232,253,252,253,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,254,253,254,253,254,253,255,192,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,252,253,252,253,252,233,70,50,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,172,102,102,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,253,252,203,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,253,254,253,254,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,151,151,151,192,253,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,203,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,172,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,92,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,41,202,0,0,0,0,0,0,0,0,0,0,132,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,123,0,0,0,0,0,11,51,51,213,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,243,203,142,102,102,102,213,252,253,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,255,253,255,253,254,253,254,253,254,192,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,151,232,253,252,253,252,253,212,50,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,102,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,116,153,254,255,135,47,47,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,94,189,197,224,253,253,253,253,253,253,253,236,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,253,253,253,253,253,253,253,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,248,170,170,149,149,170,233,253,253,238,22,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,142,0,0,0,0,0,15,76,124,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,234,213,168,46,6,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,253,253,253,219,156,125,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,253,253,253,253,253,253,220,33,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,253,253,217,144,150,129,212,219,253,253,253,253,180,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,62,62,8,0,0,0,0,11,62,128,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,214,253,253,233,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,169,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,159,146,68,68,68,174,253,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,253,253,253,253,252,211,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,143,253,253,253,253,194,114,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,158,225,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,147,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,224,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,216,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,225,246,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,180,254,245,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,221,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,246,65,0,0,0,0,26,82,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,80,0,0,0,106,226,254,172,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,126,0,0,105,247,254,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,173,254,249,115,0,193,254,254,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,255,222,29,193,254,254,254,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,216,254,254,242,250,254,254,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,217,254,254,254,254,254,114,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,94,130,191,94,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,255,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,105,248,219,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,151,254,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,245,240,129,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,207,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,251,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,196,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,230,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,160,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,162,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,250,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,224,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,237,92,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,220,178,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,77,203,254,255,225,32,5,13,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,243,254,253,253,237,246,129,37,233,207,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,254,221,96,32,98,207,23,218,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,153,246,230,200,36,0,0,0,41,40,225,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,190,0,0,0,0,0,53,240,253,227,101,0,0,0,0,0,0,0,0,0,0,0,0,0,56,242,253,222,37,0,0,0,0,82,211,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,87,0,0,0,13,166,240,253,213,60,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,40,0,0,56,177,253,253,225,58,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,165,3,105,173,243,253,232,116,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,249,184,253,254,253,178,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,139,254,254,254,254,238,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,171,253,253,253,122,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,222,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,119,222,244,205,184,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,176,0,165,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,225,20,0,38,231,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,119,0,0,171,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,156,121,218,245,253,124,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,253,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,132,132,132,132,40,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,192,47,0,0,0,32,141,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,209,28,0,0,0,82,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,163,0,0,0,0,169,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,113,0,0,0,13,206,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,241,51,0,0,0,92,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,115,0,0,0,0,141,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,229,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,128,51,0,0,101,253,252,243,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,231,253,253,255,253,253,253,255,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,171,246,253,252,252,252,253,240,109,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,56,56,122,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,133,249,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,170,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,238,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,238,235,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,64,0,0,0,0,0,49,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,86,7,0,0,0,0,128,238,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,48,0,0,0,0,21,240,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,253,48,0,0,0,6,124,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,48,0,0,0,128,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,181,0,0,0,6,198,254,254,255,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,187,5,0,0,191,254,228,187,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,77,83,157,249,230,41,37,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,182,253,253,253,253,230,41,0,37,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,164,213,230,193,43,0,0,37,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,37,0,0,0,0,37,253,210,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,247,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,219,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,238,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,54,0,76,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,223,188,0,138,240,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,242,242,29,6,216,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,254,70,0,59,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,244,99,0,0,198,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,148,0,0,58,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,195,6,0,0,177,235,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,200,222,30,0,0,25,236,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,191,67,67,67,150,255,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,254,254,254,254,232,226,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,132,150,150,161,254,252,209,244,244,191,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,167,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,239,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,243,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,13,33,56,56,56,123,165,192,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,111,161,210,235,221,236,254,254,254,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,254,254,254,239,189,150,247,223,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,164,234,234,219,134,134,94,27,0,34,239,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,232,236,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,230,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,185,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,162,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,238,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,249,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,250,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,164,255,255,212,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,136,222,253,253,253,253,253,102,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,219,253,253,248,137,111,153,251,246,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,44,218,253,248,137,77,0,0,0,90,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,223,77,0,0,0,0,0,0,0,81,11,0,0,0,0,0,0,0,0,0,0,0,0,0,35,218,253,229,114,0,0,0,0,0,0,0,142,245,18,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,247,72,0,0,0,0,0,0,15,90,243,235,15,0,0,0,0,0,0,0,0,0,0,0,0,13,220,253,192,0,0,0,0,0,0,140,201,253,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,238,75,0,0,0,0,16,153,239,253,233,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,243,165,63,63,153,204,253,233,148,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,253,253,253,253,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,70,179,228,253,253,253,253,253,236,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,237,253,235,172,194,253,253,237,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,238,253,236,69,0,12,43,213,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,237,69,0,0,0,0,205,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,242,253,161,0,0,0,0,66,248,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,86,0,0,0,0,127,253,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,86,0,0,0,64,249,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,86,0,0,0,127,253,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,86,0,0,182,252,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,234,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,234,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,181,249,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,228,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,244,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,172,173,213,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,254,253,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,192,151,253,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,91,0,0,82,243,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,172,10,0,0,0,203,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,41,0,0,0,0,203,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,90,0,0,0,0,0,162,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,142,20,0,0,0,0,0,123,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,82,0,0,0,0,203,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,152,254,253,254,253,234,152,152,233,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,253,252,253,252,253,252,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,254,253,234,253,254,253,254,253,254,131,41,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,233,151,50,91,71,212,253,252,253,252,253,252,243,122,0,0,0,0,0,0,0,0,0,0,0,0,153,253,234,233,214,213,214,253,254,233,102,20,163,162,102,20,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,252,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,255,253,234,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,192,233,232,233,130,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,126,144,216,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,163,254,253,253,253,253,253,217,110,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,254,253,253,253,253,253,253,253,221,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,254,253,253,174,49,59,165,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,253,207,8,0,0,4,117,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,187,253,254,162,10,0,0,0,0,45,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,150,253,253,166,7,0,0,0,0,0,50,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,166,0,0,0,0,0,0,2,172,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,100,248,253,196,23,0,0,0,0,0,0,12,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,25,223,253,215,9,0,0,0,0,0,0,0,108,253,253,95,0,0,0,0,0,0,0,0,0,0,0,86,254,254,234,44,0,0,0,0,0,0,0,51,245,255,162,0,0,0,0,0,0,0,0,0,0,0,70,217,253,230,98,0,0,0,0,0,0,0,15,180,253,242,49,0,0,0,0,0,0,0,0,0,0,0,191,253,232,52,0,0,0,0,0,0,0,9,181,253,249,79,0,0,0,0,0,0,0,0,0,0,0,123,252,251,132,0,0,0,0,0,0,6,66,240,253,246,77,0,0,0,0,0,0,0,0,0,0,0,8,194,253,207,0,0,0,0,0,0,32,155,253,253,241,81,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,83,0,0,0,0,0,78,231,253,253,168,81,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,162,1,0,0,11,99,232,251,254,221,89,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,215,155,155,155,245,253,253,253,147,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,253,253,253,240,176,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,220,253,244,143,143,90,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,255,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,197,0,0,0,0,43,104,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,134,0,0,0,0,104,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,16,0,0,0,0,191,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,211,254,9,0,0,0,3,202,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,238,254,41,0,0,0,38,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,218,254,12,0,0,0,38,254,254,217,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,170,2,0,0,0,49,254,254,168,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,75,0,0,0,0,98,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,243,28,0,0,0,0,98,254,255,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,235,0,0,0,0,63,195,254,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,249,131,104,115,198,254,254,246,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,248,254,254,254,254,254,207,217,247,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,189,206,185,136,18,7,132,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,251,71,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,247,254,254,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,236,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,162,232,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,108,253,252,252,252,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,106,203,239,252,253,252,252,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,253,253,253,253,247,211,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,190,181,50,155,253,252,252,231,124,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,237,252,190,209,252,223,91,21,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,252,159,154,189,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,221,252,253,252,249,185,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,254,253,253,253,253,141,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,253,252,252,252,252,243,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,170,170,126,134,237,252,253,246,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,183,200,148,192,148,148,245,253,253,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,231,252,252,252,253,252,252,252,252,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,118,126,126,127,126,126,126,126,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,202,255,200,153,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,240,225,252,254,244,116,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,138,0,82,167,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,138,0,0,1,34,221,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,138,0,0,0,0,38,229,243,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,247,138,0,0,0,0,0,202,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,235,16,0,0,0,0,129,254,249,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,84,0,2,49,168,245,254,134,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,198,101,182,254,209,237,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,254,227,110,13,202,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,237,254,209,27,0,3,205,153,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,217,254,254,45,0,0,31,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,254,254,240,12,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,254,190,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,208,153,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,167,149,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,223,216,241,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,222,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,200,197,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,20,34,59,81,33,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,254,254,254,254,245,183,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,107,122,144,122,192,239,254,249,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,201,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,215,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,246,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,245,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,240,254,137,5,0,0,0,0,0,0,0,5,16,16,39,0,0,0,0,0,0,0,0,0,0,0,95,244,254,157,10,0,0,0,28,42,86,125,194,211,254,255,206,0,0,0,0,0,0,0,0,0,0,91,245,254,248,9,17,95,156,221,243,254,255,254,254,254,228,111,14,0,0,0,0,0,0,0,0,16,150,252,254,254,254,248,249,254,252,235,235,177,159,130,84,39,5,0,0,0,0,0,0,0,0,0,0,185,254,254,254,244,209,153,132,61,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,186,75,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,254,254,131,192,118,118,118,118,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,253,253,253,253,253,245,234,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,253,253,253,253,253,253,253,253,243,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,198,226,253,253,253,253,253,253,253,253,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,82,204,219,219,241,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,253,253,253,134,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,130,154,253,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,253,253,253,253,253,253,253,113,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,253,253,169,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,89,89,89,89,107,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,108,0,0,0,0,0,0,95,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,250,251,158,104,3,0,0,103,249,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,87,83,195,244,253,253,253,163,5,0,0,0,0,0,0,0,0,0,0,0,0,0,53,235,253,253,253,253,253,253,253,253,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,253,253,253,253,253,253,248,75,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,204,253,253,253,253,253,248,232,217,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,190,124,253,253,130,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,198,226,0,0,0,0,0,0,0,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,114,170,255,0,0,0,0,0,0,114,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,198,226,170,0,0,0,0,0,57,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,198,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,57,0,0,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,114,0,0,0,0,0,141,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,57,255,198,0,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,141,0,0,0,29,86,141,255,226,198,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,255,255,255,255,255,255,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,114,170,170,141,141,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,136,136,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,36,125,189,253,253,186,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,228,253,253,253,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,212,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,174,51,16,244,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,129,129,33,0,0,243,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,249,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,247,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,251,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,220,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,132,253,253,253,152,148,148,148,57,129,148,148,148,148,148,110,5,0,0,0,0,0,0,0,0,0,90,219,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,177,34,0,0,0,0,0,0,0,0,166,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,190,0,0,0,0,0,0,0,0,207,253,253,253,171,153,153,153,153,153,153,153,153,153,153,153,152,59,35,19,0,0,0,0,0,0,0,0,73,135,111,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,140,83,167,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,254,227,242,239,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,239,31,6,7,153,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,108,0,0,0,122,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,225,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,218,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,246,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,149,169,0,0,0,0,0,0,0,0,54,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,182,253,243,134,131,131,132,131,131,159,190,248,243,8,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,253,253,254,253,253,253,253,253,249,9,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,253,253,178,177,177,177,184,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,153,112,81,18,18,18,0,0,0,0,158,232,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,228,188,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,244,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,235,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,255,230,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,211,244,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,162,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,245,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,239,157,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,137,239,193,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,216,253,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,247,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,132,214,253,254,172,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,252,253,252,253,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,214,253,254,172,102,102,123,243,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,91,10,0,0,0,122,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,224,20,0,0,0,0,0,102,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,122,0,0,0,0,0,21,162,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,0,0,0,0,0,0,72,253,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,0,0,0,0,0,41,233,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,132,10,0,41,113,193,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,212,203,243,253,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,254,253,254,253,244,162,41,203,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,112,151,151,70,40,0,0,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,133,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,148,254,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,181,63,0,0,0,0,0,108,254,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,253,14,0,0,0,25,188,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,239,254,206,8,0,0,5,156,254,251,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,241,22,0,0,0,113,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,236,254,243,114,0,0,0,37,237,254,212,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,235,254,254,150,0,0,0,22,210,254,250,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,180,254,254,222,85,76,27,136,240,254,254,252,115,70,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,254,254,254,253,245,254,254,254,254,254,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,6,190,254,253,245,249,254,254,254,254,211,143,143,117,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,111,61,84,254,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,107,254,254,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,193,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,248,254,237,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,224,243,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,237,227,253,253,253,193,148,96,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,252,252,252,252,253,252,252,211,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,252,233,160,126,188,231,251,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,21,0,0,0,0,92,252,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,21,0,0,0,0,13,217,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,144,0,0,0,0,4,183,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,231,0,0,0,0,22,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,231,0,0,0,0,128,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,231,0,0,0,0,232,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,38,0,0,0,0,232,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,64,0,128,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,191,128,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,64,0,64,64,128,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,128,128,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,94,204,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,249,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,251,254,254,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,254,254,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,254,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,254,185,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,208,48,141,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0,146,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,243,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,247,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,146,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,246,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,29,79,104,141,141,141,141,104,16,0,0,0,0,0,0,0,0,0,38,169,94,0,0,0,51,120,169,197,252,253,252,252,252,253,252,233,59,0,0,0,0,0,0,0,0,0,57,252,228,48,160,197,246,253,252,252,177,168,142,56,56,56,56,37,0,0,0,0,0,0,0,0,0,0,107,252,252,241,252,252,252,190,65,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,253,239,200,113,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,202,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,252,252,226,225,137,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,200,250,255,253,253,253,254,253,253,153,129,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,84,109,196,196,197,234,252,252,253,252,224,119,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,56,56,119,187,252,252,223,172,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,190,253,252,193,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,129,29,7,0,0,7,117,191,254,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,203,252,187,169,169,187,252,252,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,130,234,252,253,252,224,118,56,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,28,28,28,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,245,177,50,206,222,167,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,254,254,254,195,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,254,214,251,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,238,12,36,205,214,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,203,119,0,0,37,168,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,198,0,0,0,0,0,106,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,157,0,0,0,0,0,67,101,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,227,72,0,0,0,0,0,140,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,0,0,0,0,0,0,49,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,212,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,216,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,255,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,13,13,13,13,13,13,13,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,252,252,252,252,252,252,252,99,25,6,0,0,0,0,0,0,0,0,0,0,0,0,0,4,37,78,252,252,252,252,252,252,252,252,252,252,252,87,7,0,0,0,0,0,0,0,0,0,0,0,3,69,252,252,252,238,203,222,252,252,252,252,252,252,252,252,47,0,0,0,0,0,0,0,0,0,0,0,13,252,252,252,252,179,0,74,191,191,223,252,252,252,252,252,96,61,6,0,0,0,0,0,0,0,0,0,83,252,252,252,235,128,0,0,0,0,96,179,179,228,252,252,252,252,89,3,0,0,0,0,0,0,0,0,254,252,252,236,128,0,0,0,0,0,0,0,0,113,167,232,252,252,252,10,0,0,0,0,0,0,0,0,255,252,252,204,0,0,0,0,0,0,0,0,0,0,0,120,234,252,252,104,0,0,0,0,0,0,0,0,255,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,252,0,0,0,0,0,0,0,0,254,252,252,203,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,252,0,0,0,0,0,0,0,0,254,252,252,203,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,125,0,0,0,0,0,0,0,0,254,252,252,203,0,0,0,0,0,0,0,0,0,0,0,113,233,252,252,10,0,0,0,0,0,0,0,0,254,252,252,203,0,0,0,0,0,0,0,0,0,107,157,230,252,252,252,10,0,0,0,0,0,0,0,0,255,252,252,236,129,0,0,0,0,0,0,0,0,170,252,252,252,252,98,4,0,0,0,0,0,0,0,0,254,252,252,252,191,0,0,0,0,0,0,106,182,229,252,252,252,95,7,0,0,0,0,0,0,0,0,0,69,252,252,252,238,194,128,0,0,94,194,227,252,252,252,252,94,8,0,0,0,0,0,0,0,0,0,0,13,252,252,252,252,252,237,206,206,228,252,252,252,114,47,47,9,0,0,0,0,0,0,0,0,0,0,0,2,56,252,252,252,252,252,252,252,252,252,127,34,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,67,252,252,252,163,22,22,22,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,10,10,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,83,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,245,70,0,0,0,0,0,0,160,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,179,0,0,0,0,0,0,160,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,238,179,0,0,0,0,0,0,160,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,231,17,0,0,0,0,0,160,254,233,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,36,0,0,0,0,0,160,254,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,91,0,0,0,0,0,160,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,179,27,0,0,0,0,66,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,254,235,101,96,96,96,172,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,103,250,254,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,167,139,131,194,192,132,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,237,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,163,254,248,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,255,238,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,243,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,245,254,130,247,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,139,235,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,214,231,231,213,244,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,136,137,254,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,110,91,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,103,8,217,217,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,225,227,10,0,142,241,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,154,0,0,77,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,77,0,0,77,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,77,0,0,77,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,250,64,0,0,77,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,234,0,0,0,77,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,247,171,0,0,0,140,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,138,0,0,65,246,214,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,213,0,58,204,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,247,128,214,254,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,254,254,197,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,149,254,144,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,123,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,252,166,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,249,232,47,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,225,226,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,224,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,162,241,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,226,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,253,199,18,0,0,0,0,0,43,43,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,201,21,0,0,0,0,0,116,253,252,188,35,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,245,27,0,0,0,0,0,112,249,253,252,242,42,0,0,0,0,0,0,0,0,0,0,0,0,114,239,243,82,0,0,0,0,22,117,225,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,71,26,204,252,211,0,0,0,0,80,225,252,252,252,209,252,244,49,0,0,0,0,0,0,0,0,0,0,0,84,253,236,45,0,0,11,130,255,239,158,106,35,210,253,109,0,0,0,0,0,0,0,0,0,0,0,0,206,252,147,0,0,8,171,252,222,42,0,57,199,239,132,5,0,0,0,0,0,0,0,0,0,0,0,0,170,252,200,22,22,173,252,252,188,162,232,232,187,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,252,253,252,252,252,252,253,231,180,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,129,165,252,244,147,147,86,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,117,228,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,200,252,245,195,222,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,207,252,245,121,0,38,9,7,44,169,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,204,87,0,0,0,48,165,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,255,106,0,0,0,0,147,253,253,253,141,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,190,60,0,0,0,147,249,233,74,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,233,88,19,32,253,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,237,252,252,196,215,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,158,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,253,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,240,214,118,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,84,0,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,84,0,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,228,60,191,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,195,154,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,239,234,252,196,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,252,157,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,59,127,141,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,20,73,192,239,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,71,49,129,253,253,253,254,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,245,246,253,253,253,253,244,213,146,64,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,253,254,253,253,237,80,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,255,158,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,91,218,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,98,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,217,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,42,0,0,0,19,112,194,255,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,241,179,118,118,125,226,253,253,254,191,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,254,253,253,253,253,205,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,117,213,244,254,253,225,161,79,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,58,58,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,75,0,7,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,253,254,245,27,94,245,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,254,254,186,107,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,220,254,254,165,183,237,102,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,158,7,12,239,240,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,195,4,0,0,203,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,117,0,0,0,47,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,77,0,0,0,95,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,77,0,0,56,242,254,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,230,131,0,33,250,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,239,98,228,254,254,162,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,202,254,254,254,196,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,220,254,254,212,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,254,254,254,144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,216,254,231,128,132,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,194,254,252,111,0,7,211,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,253,122,0,1,4,175,212,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,165,26,26,136,220,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,218,249,237,237,253,254,254,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,254,254,254,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,150,255,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,143,251,253,247,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,253,222,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,243,253,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,189,247,253,153,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,162,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,212,253,235,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,160,253,244,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,244,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,251,253,224,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,217,253,200,139,13,29,95,95,211,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,112,19,113,210,253,253,253,226,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,253,242,26,206,253,253,253,253,253,253,170,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,204,253,253,253,139,106,240,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,253,253,253,253,246,178,57,147,246,253,212,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,253,242,183,237,253,253,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,147,253,253,253,253,253,253,253,253,216,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,253,253,223,153,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,240,253,242,135,108,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,113,114,238,253,159,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,85,194,243,252,253,252,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,150,197,222,252,252,252,252,253,252,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,187,252,252,253,252,252,252,252,253,252,214,177,99,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,252,252,253,252,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,253,253,253,204,94,0,0,79,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,19,101,240,253,252,252,242,89,15,0,0,0,0,128,252,252,84,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,208,49,0,0,0,0,0,0,113,252,208,19,0,0,0,0,0,0,0,0,0,0,10,156,252,252,253,179,65,0,0,0,0,0,0,0,207,252,195,0,0,0,0,0,0,0,0,0,0,0,163,252,252,252,190,12,0,0,0,0,0,0,0,79,253,252,195,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,0,0,0,0,0,0,0,0,0,141,255,253,196,0,0,0,0,0,0,0,0,0,0,101,249,252,252,252,0,0,0,0,0,0,0,0,57,178,253,252,70,0,0,0,0,0,0,0,0,0,0,144,252,252,252,141,0,0,0,0,0,0,0,45,234,252,253,154,12,0,0,0,0,0,0,0,0,0,0,253,252,252,138,37,0,0,0,0,0,0,73,187,252,252,240,24,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,63,240,252,252,173,63,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,146,0,0,0,0,76,191,255,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,249,146,85,85,194,243,252,253,252,154,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,252,252,252,253,252,252,252,252,253,154,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,253,252,252,249,145,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,142,252,252,253,204,112,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,64,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,191,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,128,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,191,255,253,253,253,255,178,141,141,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,137,252,227,253,252,233,221,253,252,252,252,244,144,13,0,0,0,0,0,0,0,0,0,0,0,0,0,7,81,168,43,56,81,62,25,56,56,56,193,253,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,252,243,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,85,110,197,246,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,176,225,234,252,253,252,252,252,190,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,253,253,254,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,109,158,84,146,234,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,84,0,0,0,0,0,0,0,0,0,0,10,85,57,0,0,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,0,0,0,0,128,252,243,75,0,0,0,0,0,0,0,0,0,0,126,249,228,9,0,0,0,0,0,0,0,0,0,0,76,244,253,203,79,22,0,0,0,0,0,0,4,104,229,253,163,0,0,0,0,0,0,0,0,0,0,0,0,82,196,246,253,234,169,169,57,82,82,57,179,252,252,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,178,252,252,252,253,252,252,252,253,252,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,90,139,253,252,252,252,140,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,197,250,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,192,254,253,163,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,174,241,253,177,93,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,216,253,214,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,137,255,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,253,173,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,222,231,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,204,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,170,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,166,2,20,50,145,120,139,145,145,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,213,175,76,159,217,213,253,254,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,233,254,236,137,163,80,87,54,100,152,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,184,175,162,72,5,0,0,0,0,0,0,51,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,159,0,0,0,0,0,0,0,0,0,37,210,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,127,0,0,0,0,0,0,0,55,139,224,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,189,89,24,37,37,50,128,192,254,219,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,233,254,253,250,228,112,54,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,130,253,220,136,72,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,43,43,166,253,209,183,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,146,190,247,252,252,253,252,174,189,182,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,249,253,252,233,205,82,21,21,2,6,206,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,169,7,0,0,0,0,0,0,106,239,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,42,11,0,0,0,0,0,0,0,106,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,158,252,214,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,167,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,199,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,255,253,250,167,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,224,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,232,249,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,182,252,226,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,191,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,253,174,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,252,147,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,253,252,252,239,144,128,127,127,57,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,227,252,252,252,252,253,252,252,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,42,42,42,129,129,121,155,182,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,186,250,133,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,192,253,254,253,169,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,223,253,253,254,253,253,189,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,175,253,253,253,229,209,253,253,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,202,253,253,227,77,35,19,230,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,110,0,0,0,38,154,253,236,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,183,253,253,180,16,0,0,0,0,49,253,253,209,17,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,180,5,0,0,0,0,0,7,145,253,241,77,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,117,0,0,0,0,0,0,0,6,199,253,244,21,0,0,0,0,0,0,0,0,0,0,0,151,250,253,126,3,0,0,0,0,0,0,0,59,251,253,160,1,0,0,0,0,0,0,0,0,0,0,0,158,254,254,118,0,0,0,0,0,0,0,0,0,195,254,254,24,0,0,0,0,0,0,0,0,0,0,3,167,253,247,54,0,0,0,0,0,0,0,0,6,199,253,244,21,0,0,0,0,0,0,0,0,0,0,21,240,253,193,0,0,0,0,0,0,0,0,0,119,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,157,253,193,0,0,0,0,0,0,0,0,33,190,253,253,156,0,0,0,0,0,0,0,0,0,0,0,18,226,253,164,0,0,0,0,0,0,6,79,195,253,253,163,45,0,0,0,0,0,0,0,0,0,0,0,6,180,253,211,46,0,0,0,0,0,60,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,9,189,253,253,101,0,33,86,86,149,233,253,253,233,133,9,0,0,0,0,0,0,0,0,0,0,0,0,15,170,253,253,243,218,232,253,253,254,253,253,235,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,253,253,253,253,253,253,254,253,238,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,161,253,253,253,253,253,128,11,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,77,145,254,231,133,41,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,134,254,253,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,254,232,141,96,125,245,221,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,253,223,36,0,0,12,205,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,243,253,166,35,0,0,35,199,253,106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,220,253,222,37,0,0,0,84,253,232,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,46,0,0,0,13,198,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,245,253,124,4,0,0,0,83,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,253,176,4,0,0,0,11,199,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,53,0,0,0,12,243,253,230,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,254,118,0,0,0,70,198,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,9,25,134,249,254,253,250,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,180,189,253,253,253,254,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,237,253,253,253,253,209,251,254,249,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,101,193,193,89,33,245,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,218,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,180,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,230,247,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,250,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,233,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,191,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,193,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,231,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,227,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,225,252,252,175,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,145,252,252,195,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,162,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,252,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,189,177,14,0,0,5,169,252,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,235,252,252,36,0,0,13,252,252,208,7,0,0,94,10,0,0,0,0,0,0,0,0,0,0,0,76,203,252,252,114,2,0,0,128,252,252,204,0,0,41,234,242,69,0,0,0,0,0,0,0,0,0,19,208,253,253,118,0,0,0,64,255,253,253,230,132,167,253,253,253,253,0,0,0,0,0,0,0,0,19,206,252,252,252,78,25,25,134,196,253,252,252,252,252,252,252,243,228,170,0,0,0,0,0,0,0,0,208,252,252,252,252,252,252,252,252,252,253,252,252,252,252,224,119,59,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,252,252,251,204,186,84,84,20,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,206,212,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,180,162,60,60,14,85,252,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,225,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,230,252,142,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,255,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,185,254,173,171,93,65,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,245,254,205,23,4,193,254,245,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,94,0,16,225,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,239,16,0,71,254,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,94,0,0,121,254,254,194,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,154,0,0,182,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,253,17,0,210,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,69,42,251,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,196,254,195,114,254,254,234,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,166,254,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,110,241,254,246,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,244,254,250,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,248,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,12,89,207,253,176,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,101,225,253,152,197,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,19,166,197,197,198,215,252,252,252,196,161,43,149,195,253,252,252,84,0,0,0,0,0,0,0,0,0,0,178,252,252,252,253,252,252,138,84,0,47,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,146,252,252,252,253,252,141,37,0,0,0,0,0,0,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,57,240,140,141,94,0,0,0,0,0,0,13,191,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,6,24,0,0,0,0,0,0,0,0,0,154,252,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,253,186,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,79,252,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,231,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,152,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,203,223,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,152,214,253,254,253,254,253,255,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,233,252,253,252,192,151,91,50,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,253,163,20,0,0,31,193,255,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,253,252,172,50,20,0,0,82,213,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,224,61,0,0,0,21,173,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,233,70,40,0,0,41,203,223,253,252,213,50,20,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,123,0,0,82,173,253,254,253,254,172,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,203,203,203,243,253,252,253,252,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,253,254,233,193,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,192,70,50,71,233,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,253,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,243,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,255,253,163,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,192,144,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,67,67,77,177,237,253,253,230,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,210,254,253,253,253,253,253,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,110,251,253,254,253,253,253,253,253,253,250,197,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,210,253,253,254,253,253,253,253,253,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,176,253,253,243,165,165,165,165,165,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,159,253,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,220,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,242,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,159,254,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,253,253,253,253,172,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,253,253,253,253,249,181,100,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,206,253,253,246,231,235,253,253,254,253,253,135,39,0,0,0,0,0,0,0,0,0,0,0,0,0,25,62,235,253,217,129,0,16,88,88,158,253,253,246,106,0,0,0,0,0,0,0,0,0,0,0,0,0,137,237,253,236,19,0,0,0,0,0,8,107,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,252,160,122,118,31,122,122,185,238,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,13,158,253,253,253,253,253,253,253,253,255,253,253,230,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,221,253,253,253,253,253,253,253,254,233,176,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,91,143,181,253,253,253,157,81,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,218,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,251,253,253,223,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,206,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,250,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,128,2,0,0,22,131,177,177,168,24,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,14,0,65,242,253,253,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,251,253,253,14,9,164,253,253,253,253,253,253,246,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,24,41,253,253,253,245,238,238,238,251,250,98,0,0,0,0,0,0,0,0,0,0,0,0,0,134,225,253,168,185,253,253,172,71,0,0,0,145,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,241,243,253,253,76,0,0,0,0,62,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,253,253,81,0,0,1,8,161,248,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,253,253,240,109,13,82,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,45,209,253,253,253,253,253,213,238,228,161,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,99,99,99,207,253,253,149,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,145,254,254,254,254,254,160,95,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,22,205,253,253,253,253,253,253,253,253,216,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,251,155,111,111,111,111,210,253,253,215,30,0,0,0,0,0,0,0,0,0,0,0,0,0,77,205,253,226,92,0,0,0,0,0,29,202,248,253,215,18,0,0,0,0,0,0,0,0,0,0,0,0,206,253,236,92,0,0,0,0,0,0,0,0,189,253,253,119,3,0,0,0,0,0,0,0,0,0,0,0,236,251,95,0,0,0,0,0,0,0,0,0,30,226,253,253,42,0,0,0,0,0,0,0,0,0,0,0,130,241,0,0,0,0,0,0,0,0,0,0,0,129,253,253,148,0,0,0,0,0,0,0,0,0,0,0,107,247,55,0,0,0,0,0,0,0,0,0,0,88,253,253,220,12,0,0,0,0,0,0,0,0,0,0,2,70,0,0,0,0,0,0,0,0,0,0,0,26,228,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,46,81,81,81,141,166,205,205,171,81,56,71,246,253,253,18,0,0,0,0,0,0,0,0,0,0,0,54,235,253,253,253,253,253,253,253,253,253,240,225,253,253,217,12,0,0,0,0,0,0,0,0,0,0,113,237,253,244,160,160,160,160,206,229,253,253,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,179,253,237,27,0,0,0,0,37,73,162,253,253,253,253,253,241,109,5,0,0,0,0,0,0,0,0,0,254,253,252,230,169,150,188,230,235,242,253,253,253,253,253,253,253,253,113,3,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,253,253,253,253,253,160,36,171,253,253,253,121,0,0,0,0,0,0,0,0,6,79,135,193,150,253,175,135,135,135,135,39,12,2,0,5,173,253,253,129,0,0,0,0,0,0,0,0,0,0,0,3,1,5,2,0,0,0,0,0,0,0,0,0,3,60,248,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,24,24,24,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,120,228,252,252,253,194,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,252,252,253,252,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,252,252,169,252,252,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,252,252,252,147,3,169,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,230,230,94,0,0,43,247,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,190,0,0,0,0,0,0,0,0,0,9,47,47,5,22,0,0,0,0,0,0,0,0,0,5,178,252,252,64,0,0,0,0,0,0,0,0,132,197,252,252,190,216,184,184,184,131,70,70,19,0,0,87,252,252,252,22,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,253,252,219,207,155,253,252,227,66,4,0,0,0,0,0,0,0,0,253,252,221,137,85,23,22,22,117,137,201,252,252,252,252,253,252,183,0,0,0,0,0,0,0,0,0,0,255,253,222,36,0,0,0,0,0,0,3,118,253,253,253,255,253,190,5,0,0,0,0,0,0,0,0,0,159,252,252,219,109,47,47,47,89,161,170,252,252,252,252,207,236,252,67,0,0,0,0,0,0,0,0,0,7,154,252,252,252,253,252,252,252,252,253,252,252,185,69,0,44,152,64,0,0,0,0,0,0,0,0,0,0,9,77,236,252,253,252,252,252,252,245,160,77,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,22,23,22,22,22,22,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,174,253,253,96,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,251,253,185,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,142,251,219,204,253,251,188,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,50,19,91,236,251,185,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,251,172,12,0,0,91,251,251,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,253,126,0,0,0,0,128,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,228,253,227,31,0,0,0,0,111,248,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,140,0,0,0,0,0,0,221,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,193,23,0,0,0,0,0,0,221,251,182,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,251,193,23,0,0,0,0,0,0,123,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,159,0,0,0,0,0,0,0,0,159,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,170,8,0,0,0,0,0,0,0,158,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,251,253,62,0,0,0,0,0,0,0,158,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,209,32,0,0,0,0,0,0,158,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,253,251,126,0,0,0,0,0,40,217,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,91,0,0,0,0,124,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,251,251,236,190,32,52,190,244,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,141,251,251,251,253,251,251,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,110,204,251,253,251,251,251,251,229,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,153,251,251,251,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,92,172,255,254,255,144,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,253,253,253,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,196,114,114,162,253,251,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,96,0,0,48,185,253,253,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,94,0,62,243,253,250,195,116,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,218,95,238,253,228,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,248,253,253,253,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,151,253,253,253,253,109,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,200,98,251,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,235,253,209,20,0,68,230,213,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,145,253,243,79,0,0,0,132,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,113,0,0,0,0,22,242,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,226,6,0,0,0,0,0,239,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,253,103,0,0,0,0,0,28,243,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,247,28,0,0,0,0,4,187,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,181,0,0,0,0,0,139,253,205,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,96,0,0,9,96,218,253,209,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,227,161,161,239,242,219,96,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,160,253,253,185,147,37,18,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,230,180,12,0,0,0,0,0,0,0,0,0,0,0,0,0,6,50,105,73,5,0,0,0,0,0,35,187,254,209,10,0,0,0,0,0,0,0,0,0,0,0,0,20,201,254,254,254,130,0,0,0,0,0,81,254,254,35,0,0,0,0,0,0,0,0,0,0,0,6,36,230,254,254,236,234,31,0,0,0,0,10,173,254,204,19,0,0,0,0,0,0,0,0,0,0,0,95,254,254,246,107,5,0,0,0,0,0,21,203,254,230,20,0,0,0,0,0,0,0,0,0,0,0,61,246,254,246,80,0,0,0,80,0,0,2,171,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,144,254,248,120,0,0,0,0,0,0,0,43,221,254,228,13,0,0,0,0,0,0,0,0,0,0,0,31,235,254,187,32,0,0,0,0,0,0,50,192,254,251,108,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,179,96,96,26,0,0,0,42,233,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,254,254,254,252,250,250,250,252,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,11,136,249,254,254,254,249,252,254,254,254,254,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,95,84,0,53,154,254,254,240,110,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,230,254,244,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,254,241,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,247,254,245,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,198,254,242,146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,170,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,155,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,223,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,255,217,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,207,254,253,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,160,241,253,245,168,235,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,203,75,0,198,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,226,138,13,0,32,230,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,198,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,254,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,241,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,247,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,253,179,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,254,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,129,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,253,253,153,199,123,86,86,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,201,250,254,253,253,253,254,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,254,164,114,114,114,114,114,25,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,234,81,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,242,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,119,254,228,79,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,116,253,214,166,249,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,224,11,0,190,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,217,237,50,0,0,74,253,210,199,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,184,0,0,0,55,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,36,0,0,0,114,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,247,202,3,0,0,0,164,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,0,153,250,253,237,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,202,19,58,141,254,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,221,253,253,253,220,156,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,91,91,52,0,131,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,95,161,255,255,154,130,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,217,253,253,253,253,253,253,249,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,216,253,253,240,235,235,250,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,170,253,248,140,28,0,0,205,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,128,0,0,0,10,211,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,226,29,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,239,75,0,0,12,166,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,190,253,238,174,114,195,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,234,253,253,253,238,241,253,234,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,152,191,161,50,199,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,205,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,118,118,118,118,121,254,254,255,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,178,234,242,253,253,253,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,253,253,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,189,253,253,229,198,198,198,109,61,61,61,61,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,246,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,190,130,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,253,253,253,253,251,248,221,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,253,253,253,250,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,186,184,240,253,253,252,139,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,205,205,197,68,2,0,56,177,253,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,244,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,242,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,136,63,63,63,111,199,239,253,253,253,138,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,253,253,253,253,233,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,253,253,253,240,154,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,134,253,253,253,253,216,116,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,139,159,222,138,138,255,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,244,253,252,252,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,252,247,183,234,252,252,253,219,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,252,210,94,0,184,252,252,253,235,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,252,85,0,43,246,252,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,98,0,0,162,253,211,243,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,252,240,37,0,15,219,252,252,252,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,240,81,0,0,24,252,252,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,253,164,0,0,0,24,252,252,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,243,50,0,0,0,24,252,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,116,0,0,0,0,87,253,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,95,0,0,0,22,212,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,0,0,0,57,205,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,0,17,124,244,252,253,252,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,179,234,252,252,200,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,239,253,255,253,247,94,0,139,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,143,207,132,67,0,0,138,252,252,83,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,158,168,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,248,233,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,250,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,159,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,224,253,103,0,0,0,84,95,95,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,232,7,78,194,255,254,254,254,236,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,85,30,225,253,230,215,211,149,250,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,75,55,251,179,21,0,0,0,235,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,240,25,0,118,112,0,0,0,0,235,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,234,0,0,0,0,0,0,0,42,245,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,249,61,0,0,0,0,0,1,124,249,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,106,0,0,0,0,0,41,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,250,98,51,0,0,65,227,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,157,253,253,249,216,217,249,252,133,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,97,214,253,253,229,145,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,255,228,141,41,29,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,252,253,252,208,246,253,196,131,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,156,56,13,225,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,252,202,0,0,0,225,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,253,244,25,0,0,48,241,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,142,0,0,0,85,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,208,13,0,0,0,85,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,26,210,252,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,228,53,16,92,216,253,253,254,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,252,215,253,252,252,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,216,252,252,252,253,252,252,214,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,28,28,128,241,139,52,116,253,252,243,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,178,252,252,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,204,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,57,231,253,234,169,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,253,252,252,153,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,128,78,252,252,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,244,253,178,0,0,38,213,255,228,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,28,0,0,0,0,178,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,148,6,0,0,0,0,53,252,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,202,6,0,0,0,0,0,4,128,252,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,184,0,0,0,0,0,0,0,51,247,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,0,0,122,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,231,19,0,0,0,0,0,0,0,0,85,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,225,0,0,0,0,0,0,0,0,0,185,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,114,0,0,0,0,0,0,0,0,0,198,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,113,0,0,0,0,0,0,0,0,0,197,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,113,0,0,0,0,0,0,0,0,45,240,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,113,0,0,0,0,0,0,0,0,107,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,242,60,0,0,0,0,0,0,41,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,228,234,131,7,0,0,0,51,216,252,233,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,187,252,203,198,197,197,246,253,208,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,139,203,252,252,151,128,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,223,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,60,5,0,0,0,0,0,63,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,209,0,0,0,0,0,63,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,243,0,0,0,0,0,63,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,196,0,0,0,0,0,110,254,235,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,169,0,0,0,0,0,136,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,248,254,103,0,0,0,0,1,159,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,250,254,65,0,0,0,0,30,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,242,254,22,0,0,0,0,30,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,155,8,0,0,0,103,254,232,16,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,221,145,136,136,206,254,250,232,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,239,254,254,254,254,254,254,211,62,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,86,125,125,160,254,240,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,237,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,125,233,219,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,254,217,30,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,162,253,254,254,254,254,246,243,219,199,249,243,165,49,0,0,0,0,0,0,0,0,0,0,0,0,104,244,254,254,219,42,153,254,254,254,254,254,254,254,254,232,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,219,105,0,45,156,126,25,25,114,156,166,254,253,156,0,0,0,0,0,0,0,0,0,0,151,253,254,219,37,0,0,0,0,0,0,0,0,0,4,164,254,250,45,0,0,0,0,0,0,0,0,0,249,254,219,37,0,0,0,0,0,0,0,0,0,0,0,40,254,254,124,0,0,0,0,0,0,0,0,103,254,220,36,0,0,0,0,0,0,0,0,0,0,0,0,20,254,254,124,0,0,0,0,0,0,0,0,162,254,174,6,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,124,0,0,0,0,0,0,0,0,154,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,151,254,249,29,0,0,0,0,0,0,0,0,125,254,254,149,0,0,0,0,0,0,0,0,0,0,0,7,175,254,248,0,0,0,0,0,0,0,0,0,35,251,254,171,6,0,0,0,0,0,0,0,0,0,7,141,254,254,248,0,0,0,0,0,0,0,0,0,0,249,254,254,25,0,0,0,0,0,0,0,0,0,57,255,254,252,135,0,0,0,0,0,0,0,0,0,0,229,254,254,25,0,0,0,0,0,0,0,0,47,225,254,254,241,0,0,0,0,0,0,0,0,0,0,0,104,253,254,123,22,0,0,0,0,0,0,47,225,254,254,254,224,0,0,0,0,0,0,0,0,0,0,0,0,218,253,254,219,157,157,53,27,27,122,225,254,254,255,229,43,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,254,254,254,254,254,254,254,254,254,254,255,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,161,253,254,254,254,254,254,254,254,254,253,160,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,250,254,254,254,254,254,253,228,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,164,254,221,154,160,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,154,254,255,254,187,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,226,253,253,253,253,253,245,115,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,158,213,252,253,253,253,253,253,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,47,160,234,253,253,253,253,253,253,247,198,225,253,253,238,57,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,253,253,229,15,125,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,253,253,253,191,131,253,253,250,126,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,253,253,253,253,239,127,253,253,253,223,39,0,0,0,0,0,0,0,0,0,0,0,0,2,134,253,253,253,253,253,253,98,53,4,183,253,253,226,43,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,200,164,164,116,27,7,10,168,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,47,19,0,0,0,0,0,66,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,230,253,253,253,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,242,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,224,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,253,253,253,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,217,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,253,246,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,245,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,226,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,150,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,186,253,253,223,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,253,253,240,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,193,106,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,253,194,16,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,255,212,58,0,92,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,238,53,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,245,253,104,0,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,233,253,207,52,0,0,0,129,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,240,21,0,0,0,0,181,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,243,71,0,0,0,0,45,254,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,247,253,145,0,0,0,0,0,109,253,212,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,179,254,212,18,0,0,0,0,6,194,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,254,69,0,0,0,0,0,108,253,246,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,228,12,0,0,0,0,53,204,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,254,156,0,0,0,0,21,209,254,222,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,39,0,0,0,20,176,253,225,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,0,0,0,36,204,254,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,84,103,186,241,253,216,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,253,253,253,155,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,208,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,239,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,243,254,128,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,246,254,248,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,254,251,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,185,254,215,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,254,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,226,254,169,2,0,23,28,104,28,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,124,4,131,234,254,254,254,201,90,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,124,178,254,254,254,254,254,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,248,254,254,254,235,151,153,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,254,254,180,59,27,0,7,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,254,83,63,164,200,202,254,254,234,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,174,254,254,254,254,254,254,254,254,254,158,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,254,254,254,254,254,252,234,166,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,251,130,191,117,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,240,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,240,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,253,164,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,171,247,254,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,193,253,253,166,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,219,253,230,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,234,44,0,0,0,9,21,32,26,12,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,253,103,0,0,0,38,164,223,250,237,204,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,109,0,75,148,236,253,253,201,175,175,32,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,253,243,251,253,218,198,188,58,3,3,223,95,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,178,88,0,0,0,0,0,20,237,99,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,131,14,0,0,0,0,0,0,89,167,22,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,253,221,122,122,108,12,12,70,122,168,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,253,253,253,253,255,253,253,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,154,253,253,253,253,253,254,253,253,253,236,90,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,33,133,143,143,239,158,253,161,37,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,38,136,172,255,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,94,210,253,253,253,253,253,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,206,253,253,253,216,109,127,200,252,192,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,213,163,20,0,0,0,249,253,189,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,229,253,251,60,0,0,0,0,0,249,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,161,0,0,0,40,214,253,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,252,147,0,41,228,253,253,250,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,253,235,142,228,253,253,224,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,238,159,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,227,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,253,253,253,187,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,235,167,253,253,243,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,248,253,206,2,196,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,94,0,127,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,238,33,0,100,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,236,25,16,210,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,220,213,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,249,253,253,253,253,253,110,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,162,91,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,244,114,0,0,0,0,15,24,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,206,0,0,0,36,219,252,219,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,206,0,0,0,138,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,206,0,0,0,233,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,153,0,0,0,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,242,42,0,0,0,255,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,253,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,252,230,0,0,0,0,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,126,0,0,0,0,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,181,24,24,15,11,255,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,252,252,253,252,252,219,203,253,252,252,219,161,162,140,34,0,0,0,0,0,0,0,0,0,0,0,0,50,162,183,184,183,183,208,252,253,252,252,252,252,253,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,98,253,252,252,134,45,46,45,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,108,204,254,152,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,253,136,177,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,243,0,3,115,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,210,237,148,0,0,0,164,212,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,140,0,0,0,0,41,250,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,117,0,0,0,0,5,230,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,95,0,0,0,0,40,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,112,0,0,0,3,67,206,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,252,102,22,72,171,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,231,253,253,254,253,225,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,207,210,255,254,102,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,133,2,2,53,177,253,184,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,207,223,3,0,0,0,3,87,245,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,142,0,0,0,0,0,0,164,204,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,54,0,0,0,0,0,0,58,250,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,104,0,0,0,0,0,0,0,228,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,104,0,0,0,0,0,0,39,238,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,252,108,0,0,0,0,0,3,179,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,231,47,0,0,0,50,174,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,217,250,177,180,196,252,196,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,136,136,136,219,254,255,254,254,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,36,229,253,253,253,253,253,253,253,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,227,200,200,118,82,82,82,250,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,129,0,0,0,0,0,85,252,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,237,253,129,0,0,0,0,0,209,253,229,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,241,237,47,0,0,0,0,231,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,129,57,0,0,0,47,242,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,253,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,248,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,143,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,207,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,238,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,193,253,254,253,254,253,152,152,254,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,91,172,252,253,252,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,193,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,223,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,173,253,244,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,233,111,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,234,112,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,50,131,252,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,254,213,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,11,92,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,41,0,0,0,0,0,173,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,172,132,132,153,233,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,151,253,252,131,91,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,181,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,248,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,242,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,195,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,206,0,0,0,0,0,0,0,0,0,106,219,132,19,0,0,0,0,0,0,0,0,0,0,0,0,159,254,206,0,0,0,0,0,0,0,0,0,236,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,104,254,206,0,0,0,0,0,0,0,0,0,236,254,254,103,0,0,0,0,0,0,0,0,0,0,0,8,202,254,120,0,0,0,0,0,0,0,0,0,236,254,254,103,0,0,0,0,0,0,0,0,0,0,0,45,254,254,113,0,0,0,0,0,0,0,0,0,236,254,254,26,0,0,0,0,0,0,0,0,0,0,23,172,254,254,46,0,0,0,0,0,0,0,0,0,236,254,254,9,0,0,0,0,0,0,0,0,0,0,67,254,254,181,1,0,0,0,0,0,0,0,0,0,236,254,254,100,0,0,0,0,0,0,0,0,0,0,59,251,254,178,0,0,0,0,0,0,0,0,0,0,236,254,254,93,0,0,0,0,0,0,0,0,0,0,0,156,254,178,0,0,0,0,0,0,0,0,0,0,236,254,254,9,0,0,0,0,0,0,0,0,0,0,0,64,240,254,149,67,67,67,67,67,67,116,160,223,255,254,232,7,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,254,254,254,254,254,255,254,254,254,254,254,232,7,0,0,0,0,0,0,0,0,0,0,0,0,58,147,251,210,254,254,254,254,254,254,246,247,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,14,178,157,120,154,85,85,19,104,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,185,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,240,22,138,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,239,154,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,244,254,254,254,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,247,159,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,161,223,187,145,218,238,140,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,227,139,16,0,0,0,42,233,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,239,42,0,0,0,0,0,0,110,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,217,114,0,0,0,0,0,0,0,129,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,222,0,0,0,0,0,0,0,0,181,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,139,0,0,0,0,0,0,0,21,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,228,21,0,0,0,37,99,140,223,255,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,238,176,176,217,254,191,119,99,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,73,32,0,0,0,84,223,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,228,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,228,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,150,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,118,165,254,254,255,176,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,104,244,253,253,253,253,253,253,244,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,233,177,186,253,253,237,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,234,253,253,229,75,45,0,7,140,253,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,11,201,253,253,253,158,4,0,0,0,6,236,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,240,25,0,0,0,0,50,246,253,194,5,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,186,3,0,0,0,0,0,0,170,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,123,0,0,0,0,0,0,0,104,253,253,75,0,0,0,0,0,0,0,0,0,0,0,35,227,253,253,248,80,0,0,0,0,0,0,0,67,241,253,198,0,0,0,0,0,0,0,0,0,0,0,18,221,253,253,239,0,0,0,0,0,0,0,0,0,220,253,212,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,239,0,0,0,0,0,0,0,0,0,120,253,212,0,0,0,0,0,0,0,0,0,0,0,0,27,214,253,239,0,0,0,0,0,0,0,0,0,83,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,247,71,0,0,0,0,0,0,0,0,83,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,123,0,0,0,0,0,0,0,0,83,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,3,121,253,247,62,0,0,0,0,0,0,0,213,253,214,5,0,0,0,0,0,0,0,0,0,0,0,0,0,24,220,253,239,97,16,0,0,0,0,134,249,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,253,253,209,99,63,63,129,250,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,253,253,253,253,253,253,253,253,187,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,226,253,253,253,253,253,245,187,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,116,216,253,174,116,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,233,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,252,205,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,105,206,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,252,191,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,201,252,252,175,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,168,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,253,252,241,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,252,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,72,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,191,252,148,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,73,0,0,11,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,190,251,145,144,160,205,144,0,0,0,0,0,0,0,0,0,0,6,37,37,218,217,190,37,166,218,217,246,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,32,109,129,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,202,251,251,251,251,253,251,251,251,251,253,147,71,71,71,72,174,251,251,251,0,0,0,0,0,0,0,0,202,253,253,253,201,182,180,25,0,0,0,0,0,0,0,21,176,253,253,253,0,0,0,0,0,0,0,0,31,107,107,107,30,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,251,251,251,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,231,253,251,251,173,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,190,251,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,241,251,251,253,147,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,173,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,71,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,43,130,210,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,187,252,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,145,239,252,252,252,253,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,186,253,252,252,183,154,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,253,217,94,14,62,253,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,78,245,253,236,194,27,0,0,0,131,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,252,252,112,0,0,0,0,0,43,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,252,251,91,4,0,0,0,0,0,43,252,252,186,4,0,0,0,0,0,0,0,0,0,0,0,70,239,253,252,91,0,0,0,0,0,0,0,14,211,252,252,42,0,0,0,0,0,0,0,0,0,0,9,204,252,253,137,4,0,0,0,0,0,0,0,18,216,252,252,42,0,0,0,0,0,0,0,0,0,0,101,253,253,194,0,0,0,0,0,0,0,0,0,43,253,253,253,42,0,0,0,0,0,0,0,0,0,0,232,252,217,71,0,0,0,0,0,0,0,0,0,43,252,252,231,28,0,0,0,0,0,0,0,0,0,87,251,252,138,0,0,0,0,0,0,0,0,0,0,52,252,252,136,0,0,0,0,0,0,0,0,0,29,232,252,252,42,0,0,0,0,0,0,0,0,0,27,174,252,238,28,0,0,0,0,0,0,0,0,0,43,252,252,155,7,0,0,0,0,0,0,0,0,27,167,253,252,99,0,0,0,0,0,0,0,0,0,0,43,253,253,183,25,0,0,0,0,0,0,0,48,218,253,255,186,9,0,0,0,0,0,0,0,0,0,0,29,231,252,252,156,36,0,0,0,0,50,164,247,252,252,151,16,0,0,0,0,0,0,0,0,0,0,0,0,86,251,252,252,242,197,127,127,215,245,252,242,160,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,231,252,253,252,252,252,252,243,189,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,191,253,252,252,252,164,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,176,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,253,243,193,28,0,0,0,0,0,0,0,0,19,76,0,0,0,0,0,0,0,0,0,0,0,76,234,252,253,252,252,121,25,0,0,0,0,0,0,19,178,246,88,0,0,0,0,0,0,0,0,0,73,234,252,252,253,252,252,252,205,0,0,0,0,0,92,196,252,252,189,0,0,0,0,0,0,0,0,141,240,252,252,252,253,252,252,252,252,141,94,0,0,79,253,252,252,236,50,0,0,0,0,0,0,0,0,255,253,253,253,253,255,253,165,216,253,255,253,253,253,253,255,253,253,84,0,0,0,0,0,0,0,0,0,253,252,252,242,167,106,27,6,18,27,168,243,252,252,252,253,252,154,9,0,0,0,0,0,0,0,0,0,253,186,55,49,0,0,0,0,0,0,0,50,177,252,252,253,186,12,0,0,0,0,0,0,0,0,0,0,84,56,0,0,0,0,0,0,0,0,0,10,156,252,252,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,246,252,230,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,253,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,253,56,76,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,196,252,253,252,231,233,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,253,252,176,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,240,176,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,173,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,9,59,170,173,231,254,254,255,254,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8,84,167,221,254,254,254,254,254,254,252,237,251,237,81,0,0,0,0,0,0,0,0,0,0,0,0,38,200,254,254,254,254,254,246,227,147,87,57,14,200,254,161,0,0,0,0,0,0,0,0,0,0,0,0,14,228,254,237,176,139,62,39,0,0,0,0,6,219,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,49,65,24,0,0,0,0,0,0,0,6,128,254,226,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,238,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,207,254,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,171,254,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,254,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,254,238,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,199,254,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,144,254,246,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,249,254,174,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,236,254,159,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,236,254,154,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,254,178,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,227,254,175,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,147,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,103,182,255,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,196,240,253,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,63,185,244,252,253,253,253,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,253,253,190,116,125,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,245,242,206,124,22,14,95,240,253,247,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,44,0,0,89,203,253,253,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,37,202,253,253,253,217,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,89,204,253,253,253,253,253,195,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,253,253,251,146,144,200,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,208,98,60,0,0,13,209,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,51,9,0,0,0,0,0,182,249,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,236,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,163,0,0,0,0,0,0,0,96,249,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,227,0,0,0,0,0,17,182,247,253,207,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,157,0,0,0,59,171,237,253,253,134,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,182,115,121,218,248,253,253,243,86,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,253,218,156,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,156,253,253,204,149,63,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,179,253,253,255,253,236,132,47,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,175,252,252,252,229,230,238,243,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,223,113,96,5,5,41,82,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,84,16,0,0,0,0,28,135,252,241,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,252,241,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,130,225,252,190,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,225,252,249,99,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,247,210,155,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,251,253,92,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,249,252,201,145,76,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,231,252,253,252,238,157,71,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,84,147,204,234,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,232,252,197,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,193,252,162,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,153,234,252,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,0,38,97,154,237,252,252,164,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,229,229,229,238,252,252,248,132,23,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,160,252,212,131,131,74,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,246,131,19,19,19,19,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,254,254,254,231,149,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,99,169,242,239,254,254,254,254,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,48,93,93,118,244,254,254,227,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,193,254,254,183,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,254,254,241,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,241,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,232,254,241,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,145,232,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,254,254,242,155,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,155,254,254,203,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,156,254,254,201,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,245,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,254,254,229,0,0,18,100,100,100,100,100,139,224,224,175,213,224,106,51,0,0,0,0,0,0,0,0,7,254,254,252,231,231,235,254,254,254,254,254,254,254,254,254,255,254,254,243,0,0,0,0,0,0,0,0,4,148,254,254,254,254,254,254,254,254,254,254,254,254,158,142,142,247,254,254,0,0,0,0,0,0,0,0,0,1,12,85,136,136,136,136,109,12,12,12,12,12,2,0,0,11,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,139,253,207,18,0,0,0,0,0,0,39,173,207,18,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,252,252,143,0,0,0,0,0,0,85,252,252,143,0,0,0,0,0,0,0,0,0,0,0,0,31,225,252,252,252,127,0,0,0,0,0,55,230,252,252,143,0,0,0,0,0,0,0,0,0,0,0,7,145,252,252,252,107,8,0,0,0,0,10,194,252,252,252,121,0,0,0,0,0,0,0,0,0,0,0,66,252,252,235,151,10,0,0,0,0,0,135,252,252,252,229,18,0,0,0,0,0,0,0,0,0,0,54,230,252,252,180,0,0,0,0,0,0,63,233,252,252,252,64,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,82,0,0,0,0,0,49,189,252,252,252,143,7,0,0,0,0,0,0,0,0,0,0,0,145,252,252,154,9,0,0,0,0,0,145,252,252,252,190,7,0,0,0,0,0,0,0,0,0,0,0,6,196,252,252,236,106,0,0,0,0,116,242,252,252,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,249,241,137,121,121,253,252,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,249,253,253,253,253,253,253,253,255,253,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,130,234,252,252,252,252,252,253,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,96,223,252,252,252,253,162,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,252,252,252,199,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,238,252,252,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,252,252,215,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,217,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,144,159,50,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,252,237,241,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,197,253,233,195,233,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,224,252,240,71,0,72,239,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,252,252,63,0,0,0,63,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,240,63,0,0,0,0,0,255,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,99,0,0,0,0,0,0,128,252,246,75,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,176,19,0,0,0,0,0,0,88,246,252,84,0,0,0,0,0,0,0,0,0,0,0,0,35,215,253,195,19,0,0,0,0,0,0,0,0,225,252,84,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,89,0,0,0,0,0,0,0,0,0,225,252,84,0,0,0,0,0,0,0,0,0,0,0,57,253,253,79,0,0,0,0,0,0,0,0,0,0,226,253,84,0,0,0,0,0,0,0,0,0,0,0,104,252,252,0,0,0,0,0,0,0,0,0,0,0,225,252,84,0,0,0,0,0,0,0,0,0,0,19,209,252,252,0,0,0,0,0,0,0,0,0,0,0,225,252,84,0,0,0,0,0,0,0,0,0,0,85,252,252,157,0,0,0,0,0,0,0,0,0,0,92,243,214,28,0,0,0,0,0,0,0,0,0,0,85,252,252,112,0,0,0,0,0,0,0,0,0,0,253,252,118,0,0,0,0,0,0,0,0,0,0,0,48,229,253,112,0,0,0,0,0,0,0,0,76,191,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,150,252,237,85,9,0,0,0,0,76,85,196,252,215,112,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,253,203,197,197,197,198,246,252,252,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,223,253,252,252,252,252,253,252,230,129,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,237,252,252,252,190,112,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,150,249,254,255,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,94,198,253,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,63,228,253,253,253,253,224,253,253,244,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,136,253,253,253,221,111,67,145,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,134,253,253,253,163,33,32,166,252,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,146,0,99,221,253,253,253,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,239,253,240,70,108,183,247,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,206,51,152,253,253,253,253,253,253,177,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,169,203,253,253,252,250,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,208,78,162,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,207,87,9,83,243,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,81,98,5,3,0,0,156,253,253,149,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,230,253,222,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,242,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,163,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,253,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,197,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,228,147,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,163,255,164,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,212,253,165,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,174,253,229,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,187,254,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,150,253,254,246,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,250,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,229,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,223,254,254,249,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,253,253,75,0,0,0,0,5,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,180,253,253,193,9,0,0,4,112,176,230,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,179,12,24,55,178,253,253,253,229,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,123,0,150,254,253,253,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,233,253,253,172,194,251,254,253,253,253,253,163,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,240,253,253,253,253,253,254,253,253,253,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,192,253,253,253,253,253,254,253,253,188,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,253,254,243,144,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,132,231,253,253,253,185,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,189,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,194,254,202,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,210,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,248,244,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,218,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,220,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,180,254,249,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,226,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,195,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,251,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,31,130,161,255,121,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,156,253,253,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,34,213,253,253,240,204,210,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,249,143,31,0,29,221,220,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,162,253,215,82,0,0,0,0,114,247,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,249,79,0,0,0,0,0,0,186,253,114,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,222,0,0,0,0,0,0,0,28,164,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,228,19,0,0,0,0,0,0,80,240,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,206,159,56,56,56,56,153,239,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,197,253,253,253,253,253,253,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,253,253,253,253,236,185,88,123,253,182,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,55,55,140,91,42,0,0,81,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,199,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,30,47,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,243,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,91,253,253,90,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,141,216,253,253,255,178,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,243,253,252,252,252,253,252,224,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,234,252,252,253,252,214,177,216,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,241,252,252,151,78,28,15,3,16,128,252,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,98,253,255,247,137,13,0,0,0,0,0,26,210,253,254,228,31,0,0,0,0,0,0,0,0,0,0,13,209,252,247,103,0,0,0,0,0,0,0,0,28,234,253,252,130,0,0,0,0,0,0,0,0,0,0,57,252,252,137,0,0,0,0,0,0,0,0,0,0,225,253,252,196,10,0,0,0,0,0,0,0,0,0,82,139,90,13,0,0,0,0,0,0,0,0,0,0,225,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,123,147,198,197,197,222,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,113,213,253,252,252,252,253,252,252,252,253,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,79,216,253,253,239,200,113,213,226,244,253,253,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,51,216,252,233,145,38,0,0,0,45,225,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,19,172,246,244,142,37,0,0,0,0,38,229,252,252,177,178,252,186,6,0,0,0,0,0,0,0,0,0,157,252,252,125,0,0,0,0,0,126,237,253,252,177,3,16,215,168,0,0,0,0,0,0,0,0,0,13,207,253,203,0,0,0,0,29,216,253,253,254,222,25,0,0,0,51,0,0,0,0,0,0,0,0,0,0,169,252,177,0,0,19,57,216,252,252,252,209,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,228,135,160,215,252,253,252,252,177,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,241,190,139,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,110,136,244,254,255,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,103,170,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,243,253,253,216,200,220,205,202,253,221,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,219,249,171,65,20,0,24,6,12,142,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,245,174,51,0,0,0,0,75,8,119,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,246,253,29,0,0,0,25,107,230,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,100,228,244,72,3,24,210,252,104,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,161,249,128,212,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,142,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,220,253,253,104,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,253,138,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,238,76,84,80,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,212,0,0,213,243,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,212,0,0,152,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,217,9,0,95,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,99,0,78,249,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,225,253,237,93,110,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,216,253,253,253,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,162,217,135,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,123,194,254,213,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,122,254,245,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,214,30,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,219,225,31,0,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,254,189,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,248,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,224,247,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,247,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,223,0,0,0,0,0,0,21,109,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,223,0,0,0,17,166,199,216,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,223,0,0,41,217,254,254,254,254,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,223,0,58,181,254,233,157,228,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,235,113,242,254,234,129,198,254,179,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,213,254,254,254,161,123,247,254,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,193,254,254,254,238,248,254,226,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,254,254,254,254,172,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,250,243,60,30,136,136,109,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,170,254,255,212,91,91,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,253,253,251,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,241,253,253,253,253,253,242,109,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,185,129,129,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,230,253,253,211,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,231,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,253,240,187,66,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,98,218,253,253,253,253,253,221,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,171,171,171,245,253,253,253,182,83,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,182,247,253,253,253,216,40,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,157,253,253,253,253,173,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,228,239,253,253,159,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,231,253,253,106,0,0,0,0,0,0,0,0,0,0,0,3,111,205,126,42,42,4,0,0,0,0,0,0,73,253,253,225,13,0,0,0,0,0,0,0,0,0,0,17,253,253,253,253,253,142,131,89,0,0,0,60,151,253,253,253,15,0,0,0,0,0,0,0,0,0,0,13,220,253,253,253,253,253,253,243,222,222,222,236,253,253,253,219,12,0,0,0,0,0,0,0,0,0,0,0,45,220,253,253,253,253,253,253,253,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,33,179,193,253,253,253,253,253,253,253,253,253,214,141,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,89,238,253,253,253,253,253,178,89,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,253,253,110,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,196,31,0,0,0,104,253,252,252,252,253,222,103,0,0,0,0,0,0,0,0,0,0,0,0,105,181,242,252,108,0,0,0,0,72,175,92,236,253,252,241,78,0,0,0,0,0,0,0,0,0,0,21,206,252,252,231,46,0,0,0,0,0,62,0,62,170,252,252,190,0,0,0,0,0,0,0,0,0,32,211,252,252,252,153,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,73,252,252,252,65,10,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,16,181,252,252,174,10,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,191,252,252,168,62,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,191,0,0,0,0,0,0,0,0,211,252,252,108,0,0,0,0,0,0,0,0,0,0,0,42,233,252,220,15,0,0,0,0,0,0,0,0,212,241,112,31,0,0,0,0,0,0,0,0,0,0,6,160,253,241,102,0,0,0,0,0,0,0,0,0,253,221,41,0,0,0,0,0,0,0,0,0,0,0,120,252,253,97,0,0,0,0,0,0,0,0,0,0,255,253,72,0,0,0,0,0,0,0,0,0,47,150,253,253,208,20,0,0,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,233,252,252,210,20,0,0,0,0,0,0,0,0,0,0,0,253,252,92,0,0,0,0,0,0,0,27,37,253,252,205,31,0,0,0,0,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,63,144,221,252,253,128,31,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,170,109,109,129,253,255,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,253,252,200,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,247,252,252,252,252,252,231,154,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,108,190,252,210,108,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,255,251,118,118,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,167,234,234,250,253,253,253,253,253,247,200,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,237,253,253,253,253,253,253,253,253,253,253,253,247,196,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,253,253,253,253,253,253,253,253,253,237,26,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,253,253,253,253,252,219,162,156,253,253,239,38,0,0,0,0,0,0,0,0,0,0,0,0,14,103,173,239,239,239,213,103,100,0,6,222,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,94,173,248,248,248,248,146,39,0,0,238,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,99,245,253,253,253,253,253,253,236,152,227,252,253,183,49,0,0,0,0,0,0,0,0,0,0,0,0,100,242,253,253,218,184,184,240,253,253,253,253,253,231,40,0,0,0,0,0,0,0,0,0,0,0,0,71,242,253,247,123,33,0,0,93,240,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,129,0,0,0,0,45,230,253,253,253,253,224,36,0,3,28,0,0,0,0,0,0,0,0,67,245,253,218,35,0,0,0,3,148,253,253,253,253,253,253,134,26,153,249,0,0,0,0,0,0,0,0,184,253,253,61,0,0,0,0,157,253,253,253,250,129,247,253,253,183,253,116,0,0,0,0,0,0,0,0,254,253,253,61,0,0,54,163,252,253,253,186,72,0,111,253,253,253,253,116,0,0,0,0,0,0,0,0,254,253,253,61,12,91,237,253,253,253,237,60,0,0,14,224,253,253,253,116,0,0,0,0,0,0,0,0,254,253,253,108,162,253,253,253,253,236,81,0,0,0,0,112,253,253,253,116,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,167,55,0,0,0,0,0,70,244,253,239,34,0,0,0,0,0,0,0,0,159,252,253,253,253,252,232,99,10,0,0,0,0,0,0,0,75,192,139,0,0,0,0,0,0,0,0,0,0,107,116,116,116,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,143,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,201,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,252,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,230,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,245,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,243,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,249,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,189,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,176,253,253,253,255,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,176,251,251,251,251,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,16,37,218,217,217,217,241,253,251,251,251,251,253,230,184,0,0,0,0,0,0,0,0,0,0,0,0,16,170,251,253,251,251,251,251,253,251,251,251,251,221,61,0,0,0,0,0,0,0,0,0,0,0,0,0,166,251,251,253,251,251,251,251,253,251,251,251,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,201,130,0,0,0,0,73,253,253,221,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,107,30,0,0,0,0,0,176,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,231,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,201,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,39,39,127,251,228,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,77,129,185,210,254,254,254,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,188,254,254,254,254,254,254,254,254,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,244,254,254,254,254,254,254,254,254,254,254,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,249,104,65,197,254,254,254,234,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,248,254,254,209,34,3,136,253,254,254,249,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,245,48,0,123,254,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,222,21,133,233,254,254,254,96,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,254,254,201,244,254,254,237,105,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,254,254,235,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,254,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,254,254,249,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,254,254,254,238,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,242,254,236,190,254,254,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,251,254,254,194,4,84,254,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,97,23,205,255,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,228,227,254,254,254,236,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,254,254,254,254,243,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,152,254,254,254,254,254,209,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,200,254,254,254,102,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,0,0,0,0,51,113,222,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,48,238,252,252,252,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,150,227,253,252,252,252,252,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,156,252,252,253,252,252,252,252,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,190,158,252,252,252,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,253,253,253,0,48,166,253,253,255,128,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,195,89,0,0,6,100,252,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,161,0,0,0,0,37,55,222,233,75,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,253,252,198,28,0,0,0,0,0,0,113,252,233,56,0,0,0,0,0,0,0,0,0,0,0,32,153,252,253,204,25,0,0,0,0,0,0,0,191,252,220,37,0,0,0,0,0,0,0,0,0,0,0,120,253,253,255,106,0,0,0,0,0,0,0,0,114,253,253,84,0,0,0,0,0,0,0,0,0,0,0,197,252,252,152,3,0,0,0,0,0,0,0,0,113,252,252,84,0,0,0,0,0,0,0,0,0,0,0,197,252,252,110,0,0,0,0,0,0,0,0,32,222,252,252,84,0,0,0,0,0,0,0,0,0,0,57,234,252,252,0,0,0,0,0,0,0,0,35,215,253,252,198,28,0,0,0,0,0,0,0,0,0,0,163,252,236,112,0,0,0,0,0,0,0,111,215,252,253,204,25,0,0,0,0,0,0,0,0,0,0,0,86,253,253,112,0,0,0,0,0,0,101,222,253,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,158,38,85,85,101,225,226,249,252,252,204,94,0,0,0,0,0,0,0,0,0,0,0,0,0,144,239,252,252,222,252,252,252,252,253,252,208,102,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,225,176,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,128,252,253,252,252,236,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,123,48,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,242,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,61,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,144,242,254,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,185,241,254,247,245,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,246,192,94,232,254,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,251,195,32,0,99,237,125,211,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,251,213,30,0,15,123,53,0,37,245,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,226,30,0,0,0,0,0,0,0,153,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,125,0,0,0,0,0,0,0,0,148,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,40,0,0,0,0,0,0,0,21,241,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,21,0,0,0,0,0,0,13,182,238,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,86,0,0,0,0,0,9,134,244,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,170,0,0,0,0,20,203,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,217,13,0,2,68,218,239,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,192,92,151,254,224,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,178,254,238,125,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,121,180,219,134,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,32,72,216,253,254,253,253,153,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,253,253,223,206,145,214,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,251,254,253,253,132,12,0,0,16,181,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,254,218,95,2,0,0,0,0,167,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,204,0,0,0,0,0,7,135,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,20,24,57,57,57,112,198,253,245,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,207,241,253,253,253,254,253,253,196,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,244,254,253,253,253,253,254,253,253,253,184,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,243,254,253,253,253,253,224,173,213,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,165,254,254,200,60,0,0,0,45,203,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,218,16,253,207,28,0,0,0,0,0,0,194,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,134,16,237,39,0,0,0,0,0,0,0,96,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,95,2,149,106,0,0,0,0,0,0,0,86,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,194,0,27,220,95,0,0,0,0,0,0,96,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,60,0,0,0,0,0,0,0,0,0,180,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,242,225,77,6,10,0,0,0,0,18,107,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,215,221,181,128,128,142,232,253,236,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,234,253,253,253,253,254,253,253,253,233,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,129,188,208,173,229,253,213,173,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,215,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,191,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,237,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,206,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,249,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,197,0,0,0,0,0,0,60,154,154,130,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,163,0,0,0,0,0,107,233,252,252,252,230,131,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,88,0,0,0,0,0,239,252,252,194,214,252,241,0,0,0,0,0,0,0,0,0,0,0,0,38,235,241,39,0,0,0,11,177,255,216,68,0,25,223,253,114,0,0,0,0,0,0,0,0,0,0,0,67,252,230,0,0,0,0,107,252,245,90,0,0,0,198,252,208,0,0,0,0,0,0,0,0,0,0,0,67,252,230,0,0,0,0,187,252,129,0,0,0,90,243,252,118,0,0,0,0,0,0,0,0,0,0,0,3,211,242,56,0,0,24,221,252,111,0,0,2,173,252,184,4,0,0,0,0,0,0,0,0,0,0,0,0,163,250,233,60,0,35,238,252,134,0,0,142,252,214,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,195,46,0,101,252,246,122,131,227,252,221,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,248,252,233,10,7,170,253,252,252,252,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,243,252,235,73,135,253,252,252,220,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,246,252,252,252,253,252,188,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,161,252,252,239,66,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,173,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,39,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,77,121,224,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,6,94,222,254,254,254,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,98,152,189,254,254,254,254,254,254,212,181,15,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,212,254,254,254,254,254,254,211,173,83,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,172,254,254,244,244,119,27,27,27,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,254,254,217,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,254,254,234,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,254,254,155,26,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,226,254,254,254,196,163,108,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,180,254,254,254,254,254,242,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,30,0,0,0,0,3,16,69,125,163,253,254,249,19,0,0,0,0,0,0,0,0,0,0,0,0,0,134,72,0,0,0,0,0,0,0,0,0,91,234,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,193,208,55,0,0,0,0,0,0,0,0,10,205,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,248,72,7,0,0,0,0,0,0,3,178,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,75,237,254,254,159,66,25,0,0,42,151,181,255,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,228,254,254,254,228,212,212,239,254,254,254,170,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,70,194,223,254,254,254,254,254,238,150,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,142,184,184,184,99,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,239,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,249,156,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,250,251,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,195,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,178,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,239,250,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,26,0,0,17,198,247,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,108,212,244,66,0,150,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,64,133,227,254,253,206,49,90,254,215,31,0,0,0,0,92,108,0,0,0,0,0,0,0,0,0,10,220,253,253,253,254,208,23,40,243,254,152,80,80,105,110,218,250,164,0,0,0,0,0,0,0,0,0,5,139,223,252,254,255,254,254,254,254,255,254,246,238,238,179,80,15,0,0,0,0,0,0,0,0,0,0,0,0,0,56,137,172,225,253,253,208,88,63,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,124,253,191,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,191,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,249,198,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,219,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,186,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,185,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,197,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,249,238,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,129,253,255,253,232,109,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,247,252,252,253,252,252,252,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,252,252,252,253,252,252,252,253,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,253,252,252,252,253,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,253,252,252,252,253,158,221,252,253,252,231,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,253,252,252,252,222,25,46,221,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,73,232,252,253,252,252,148,41,0,0,41,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,253,252,252,108,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,253,255,253,253,108,0,0,0,0,255,253,253,108,0,0,0,0,0,0,0,0,0,0,73,237,252,252,252,210,180,138,35,15,0,0,0,0,253,252,252,108,0,0,0,0,0,0,0,0,0,73,232,252,252,252,205,31,0,0,0,0,0,0,6,120,253,252,205,31,0,0,0,0,0,0,0,0,0,217,252,252,252,252,71,0,0,0,0,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,218,253,253,253,119,0,0,0,0,0,0,0,0,99,253,255,180,0,0,0,0,0,0,0,0,0,0,0,217,252,252,158,5,0,0,0,0,0,0,0,105,242,252,159,25,0,0,0,0,0,0,0,0,0,0,16,222,252,252,123,0,0,0,0,0,0,0,16,222,252,252,125,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,84,191,252,231,108,0,0,0,0,0,0,0,0,0,0,0,0,63,238,253,253,62,0,0,0,47,109,129,253,255,159,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,237,217,217,217,233,252,252,210,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,221,252,252,252,252,252,253,241,215,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,108,252,252,252,252,108,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,175,255,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,223,254,249,185,156,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,250,254,191,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,251,254,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,254,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,250,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,223,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,105,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,230,254,105,0,0,191,202,221,185,66,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,254,105,0,0,100,145,181,221,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,254,192,0,0,0,0,0,125,254,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,242,73,0,0,0,0,46,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,254,247,132,68,68,97,213,254,234,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,187,254,254,254,254,254,254,240,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,106,157,176,254,254,148,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,231,47,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,207,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,253,253,253,216,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,49,244,254,253,253,221,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,254,253,245,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,171,245,253,253,254,235,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,220,253,253,253,253,210,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,57,110,212,253,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,24,213,253,253,253,253,92,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,116,253,253,253,204,67,0,24,25,25,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,123,83,157,249,254,253,240,157,128,72,157,98,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,254,253,253,253,253,253,237,69,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,254,253,253,253,253,253,229,26,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,254,246,191,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,5,135,253,253,253,253,253,253,253,204,51,167,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,253,236,221,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,4,126,253,253,253,253,253,253,254,253,253,253,253,253,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,11,11,58,132,248,254,253,253,253,166,40,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,151,151,230,243,151,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,139,233,254,254,254,254,254,250,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,211,254,254,254,159,78,23,157,254,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,114,247,254,254,182,67,2,0,0,79,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,237,97,8,0,0,0,0,79,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,59,248,255,250,63,0,0,0,0,0,0,79,254,207,11,0,0,0,0,0,0,0,0,0,0,0,0,3,179,254,254,98,0,0,0,7,119,121,175,234,195,57,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,207,11,16,63,127,201,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,254,243,214,224,254,254,254,252,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,254,254,253,181,99,106,254,254,206,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,155,155,155,88,51,0,0,229,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,254,232,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,242,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,254,254,116,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,192,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,164,254,246,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,250,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,29,114,170,255,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,170,114,86,86,226,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,57,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,192,56,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,219,253,253,212,133,111,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,253,253,252,164,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,167,237,254,253,253,254,251,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,79,138,210,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,72,237,253,241,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,166,253,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,104,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,149,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,218,253,243,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,199,253,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,184,253,253,211,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,207,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,216,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,222,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,210,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,255,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,160,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,254,252,252,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,250,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,221,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,252,252,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,250,250,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,252,252,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,222,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,100,190,250,222,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,49,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,106,151,2,0,59,134,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,137,253,253,47,0,0,173,243,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,156,0,0,13,253,253,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,145,253,253,237,69,0,0,10,209,253,253,233,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,139,0,0,0,0,7,184,253,253,198,64,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,163,12,0,0,0,0,0,55,229,253,253,233,62,0,0,0,0,0,0,0,0,0,0,0,61,235,253,192,40,0,0,0,0,0,0,0,72,253,253,253,235,19,0,0,0,0,0,0,0,0,0,11,238,253,235,45,0,0,0,0,0,0,0,0,30,226,253,253,253,70,0,0,0,0,0,0,0,0,0,13,253,253,205,0,0,0,0,0,0,0,0,0,0,46,228,253,253,243,10,0,0,0,0,0,0,0,0,71,253,253,205,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,128,0,0,0,0,0,0,0,0,134,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,132,0,0,0,0,0,0,0,0,133,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,132,0,0,0,0,0,0,0,0,117,253,253,205,0,0,0,0,0,0,0,0,0,0,0,63,235,253,253,115,0,0,0,0,0,0,0,0,13,253,253,205,0,0,0,0,0,0,0,0,0,10,49,205,253,253,232,9,0,0,0,0,0,0,0,0,13,253,253,240,81,0,0,0,0,0,0,6,79,195,253,253,253,253,116,0,0,0,0,0,0,0,0,0,3,171,253,253,239,194,96,73,73,189,195,199,253,253,253,253,253,225,17,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,253,253,254,253,253,253,253,253,184,30,0,0,0,0,0,0,0,0,0,0,0,4,171,253,253,253,253,253,253,253,254,253,253,253,253,225,47,0,0,0,0,0,0,0,0,0,0,0,0,0,15,126,253,253,253,253,253,253,254,253,253,232,144,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,40,225,253,253,253,195,17,63,11,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,191,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,128,64,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,64,191,255,191,64,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,128,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,64,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,191,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,128,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,246,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,176,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,223,253,243,138,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,48,229,253,244,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,212,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,253,247,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,188,253,241,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,220,253,249,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,224,253,215,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,247,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,119,245,253,77,0,0,0,0,41,78,145,177,155,76,6,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,162,8,0,0,19,128,252,253,253,190,245,253,115,0,0,0,0,0,0,0,0,0,0,0,12,154,253,237,68,0,0,29,202,253,236,222,70,5,46,253,182,0,0,0,0,0,0,0,0,0,0,0,94,253,253,50,0,0,77,242,253,223,33,0,0,0,156,253,108,0,0,0,0,0,0,0,0,0,0,0,94,253,253,20,0,74,245,253,147,16,0,0,3,96,241,169,18,0,0,0,0,0,0,0,0,0,0,0,94,253,253,55,140,244,237,139,0,0,39,68,175,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,52,241,253,239,253,253,219,115,178,135,237,253,231,139,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,188,253,253,253,253,253,253,253,96,93,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,237,224,149,149,106,46,46,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,71,155,188,237,152,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,68,106,156,254,254,236,230,251,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,118,178,225,254,254,232,161,57,14,0,219,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,231,163,53,17,0,0,0,39,237,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,113,104,17,0,0,0,0,0,28,208,241,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,225,242,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,142,252,179,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,178,250,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,245,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,214,141,57,39,220,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,182,239,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,204,224,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,114,0,0,0,0,0,0,0,0,0,0,0,0,5,34,0,0,0,0,0,0,0,0,0,0,7,177,240,37,0,0,0,0,0,0,0,0,0,0,0,0,75,149,0,0,0,0,0,0,0,0,0,0,149,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,94,149,0,0,0,0,0,0,0,0,0,108,252,168,14,0,0,0,0,0,0,0,0,0,0,0,0,0,50,224,31,0,0,0,0,0,0,85,180,251,195,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,171,232,150,80,70,70,126,185,250,218,114,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,130,241,254,255,254,249,138,54,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,151,255,254,254,254,254,254,254,254,254,91,1,0,0,0,0,0,0,0,0,0,0,0,0,0,14,136,211,253,253,253,253,253,253,249,251,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,250,235,146,111,111,111,76,99,236,253,201,9,0,0,0,0,0,0,0,0,0,0,0,0,11,210,253,219,87,0,0,0,0,0,0,88,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,93,0,0,0,0,0,0,10,168,253,253,188,7,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,93,0,0,0,0,0,0,100,253,253,239,66,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,199,79,0,0,0,0,71,237,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,233,253,253,218,50,50,50,144,236,253,253,105,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,204,253,253,253,253,253,253,253,253,191,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,68,190,253,253,253,253,253,253,230,80,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,147,233,253,253,253,253,253,253,253,253,151,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,253,239,151,55,55,152,179,241,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,6,158,253,253,239,79,0,0,0,0,0,41,49,229,233,15,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,179,36,0,0,0,0,0,0,0,0,223,253,18,0,0,0,0,0,0,0,0,0,0,0,0,143,253,181,14,0,0,0,0,0,0,0,0,126,249,253,18,0,0,0,0,0,0,0,0,0,0,0,0,143,253,208,0,0,0,0,0,0,0,0,0,217,253,163,11,0,0,0,0,0,0,0,0,0,0,0,0,143,253,161,128,36,0,24,28,81,106,106,148,204,37,3,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,251,247,242,236,240,240,249,253,253,253,112,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,153,253,253,253,253,253,253,253,253,253,155,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,82,190,150,253,165,129,129,129,90,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,156,156,156,157,156,156,156,156,157,194,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,248,254,254,254,254,254,254,235,234,136,54,12,0,0,0,0,0,0,0,0,0,0,0,0,0,28,176,18,78,78,78,78,78,78,78,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,236,254,0,0,0,0,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,0,149,176,176,236,207,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,198,251,226,161,154,224,252,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,163,18,0,0,37,201,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,250,254,196,15,0,0,0,0,16,237,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,174,15,0,0,0,0,0,0,94,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,241,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,139,0,0,0,0,0,0,0,0,72,247,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,217,20,0,0,0,0,0,0,70,242,250,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,254,154,73,0,0,61,139,242,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,192,255,252,235,235,249,255,243,87,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,148,254,238,155,133,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,23,233,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,244,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,236,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,187,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,164,0,0,34,111,111,63,68,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,69,2,120,253,253,255,253,253,244,215,215,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,226,179,252,252,252,253,252,252,252,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,252,252,188,44,154,153,111,157,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,251,163,36,0,0,0,0,32,252,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,244,22,0,0,0,0,22,206,252,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,252,252,152,62,0,12,50,201,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,252,252,246,231,235,243,252,251,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,239,252,252,252,253,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,252,252,253,252,188,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,224,156,128,33,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,115,230,227,80,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,196,254,254,254,254,224,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,242,254,254,254,237,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,232,254,254,252,152,26,150,251,248,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,254,235,196,229,0,0,0,233,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,252,108,154,79,0,0,0,233,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,229,254,166,0,120,0,0,0,0,233,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,209,40,0,0,0,0,0,0,208,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,254,111,0,0,0,0,0,0,0,143,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,179,1,0,0,0,0,0,0,0,191,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,30,245,254,96,0,0,0,0,0,0,0,0,233,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,251,47,0,0,0,0,0,0,0,5,234,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,181,0,0,0,0,0,0,0,0,133,254,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,156,0,0,0,0,0,0,0,55,249,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,125,0,0,0,0,0,0,60,252,254,198,14,0,0,0,0,0,0,0,0,0,0,0,0,0,18,229,254,156,0,0,0,0,7,67,241,254,240,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,156,0,0,0,38,177,254,254,199,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,201,86,117,200,232,254,237,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,254,254,254,254,252,187,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,231,254,229,165,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,170,254,169,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,130,172,206,231,163,241,253,254,253,251,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,149,221,253,253,253,254,253,253,253,239,217,253,253,91,3,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,253,253,253,254,253,253,253,59,63,186,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,241,67,68,151,248,254,254,151,0,91,254,255,82,0,0,0,0,0,0,0,0,0,0,0,17,224,253,254,39,0,0,0,214,253,253,134,0,24,253,254,207,9,0,0,0,0,0,0,0,0,0,0,0,165,253,254,65,0,0,0,42,181,244,17,0,24,228,254,253,46,0,0,0,0,0,0,0,0,0,0,0,116,253,254,148,0,0,0,0,7,44,0,17,199,253,254,253,46,0,0,0,0,0,0,0,0,0,0,0,57,254,254,220,13,0,0,26,57,104,187,254,254,254,254,241,34,0,0,0,0,0,0,0,0,0,0,0,19,240,254,253,84,114,198,239,249,253,254,253,253,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,253,253,253,254,253,253,253,254,253,253,244,80,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,254,253,253,253,254,151,77,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,104,254,254,254,254,254,254,197,118,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,253,253,253,165,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,215,232,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,56,174,253,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,237,203,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,253,253,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,230,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,186,202,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,96,254,255,254,228,91,91,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,166,180,251,253,253,253,253,253,253,253,115,1,0,0,0,0,0,0,0,0,0,0,0,0,14,107,107,187,253,253,253,253,211,146,146,163,253,253,253,15,0,0,0,0,0,0,0,0,0,34,150,197,204,253,253,253,244,220,220,109,35,0,0,42,253,253,234,13,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,185,97,0,0,0,0,0,0,42,253,253,106,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,179,18,0,0,0,0,0,0,0,74,253,253,106,0,0,0,0,0,0,0,0,0,0,115,114,114,114,114,18,0,0,0,0,0,0,0,0,205,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,218,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,209,253,253,214,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,193,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,242,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,237,78,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,124,253,253,253,244,190,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,116,253,253,157,89,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,121,204,254,255,254,254,200,158,158,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,146,254,254,254,254,254,254,254,254,254,254,240,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,230,254,254,254,200,162,162,179,254,254,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,101,101,31,2,0,0,70,254,254,244,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,191,254,208,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,251,254,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,230,171,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,82,197,254,254,232,127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,30,186,237,254,203,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,238,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,81,134,112,0,39,234,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,62,0,146,254,212,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,153,143,223,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,254,254,254,254,170,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,156,254,254,190,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,105,121,121,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,87,155,251,254,254,254,217,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,183,250,254,254,254,250,218,254,254,81,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,96,248,254,235,189,138,46,48,160,254,203,45,0,0,0,0,0,6,105,160,0,0,0,0,0,0,0,0,72,161,77,2,0,0,0,51,254,254,76,0,0,0,0,0,66,198,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,186,254,254,48,0,0,0,32,150,251,254,216,27,0,0,0,0,0,0,0,0,0,0,0,0,0,5,163,246,254,175,24,44,111,150,238,254,254,219,71,0,0,0,0,0,0,0,0,0,0,38,21,0,37,173,254,254,254,223,254,254,254,254,254,254,155,29,0,0,0,0,0,0,0,0,0,0,51,195,240,235,244,254,254,254,254,254,254,254,230,207,115,28,5,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,254,247,244,237,148,148,107,52,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,237,136,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,120,85,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,91,91,91,91,165,255,254,255,254,101,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,225,253,253,253,253,253,253,253,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,253,253,253,253,253,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,220,220,109,56,162,56,88,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,217,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,50,103,213,213,213,213,245,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,169,253,253,253,253,253,253,253,253,253,253,220,50,0,0,0,0,0,0,0,0,0,0,0,0,0,88,243,253,253,253,253,253,253,253,199,187,245,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,253,253,136,98,19,0,121,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,226,171,107,2,0,0,0,21,184,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,16,81,81,81,55,0,0,0,0,0,0,58,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,0,0,0,0,0,0,0,0,9,36,120,25,25,25,12,0,0,0,0,0,0,0,0,13,225,253,253,130,0,0,0,0,0,0,0,0,91,253,253,253,253,253,177,116,45,0,0,0,0,0,19,186,253,253,219,49,0,0,0,0,0,0,0,0,91,253,253,253,253,218,212,169,19,0,0,0,0,0,68,253,253,253,179,0,0,0,0,0,0,0,0,0,175,253,253,253,189,19,0,0,0,0,0,0,99,131,230,253,253,176,87,0,0,0,0,0,0,0,0,0,111,253,253,253,238,190,58,58,58,58,169,222,245,253,253,253,165,13,0,0,0,0,0,0,0,0,0,0,38,211,253,253,253,253,253,253,253,253,253,253,253,253,229,106,13,0,0,0,0,0,0,0,0,0,0,0,0,11,85,188,253,253,253,253,253,253,253,253,198,179,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,89,89,89,89,89,89,89,89,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,23,0,0,0,0,177,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,165,0,0,0,0,177,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,184,0,0,0,0,162,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,154,0,0,0,0,104,75,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,127,0,0,0,0,138,207,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,169,0,0,0,0,177,247,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,202,0,0,0,0,177,254,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,250,56,0,0,0,157,254,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,163,72,30,142,254,137,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,255,254,254,254,254,249,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,98,202,235,242,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,23,96,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,234,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,76,208,255,254,213,156,88,43,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,252,243,124,91,162,204,250,254,184,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,224,0,0,0,0,40,93,177,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,246,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,202,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,204,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,149,18,52,122,105,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,248,230,254,254,254,229,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,125,125,125,125,82,58,179,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,205,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,195,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,176,56,0,0,15,166,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,167,250,232,163,236,254,118,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,71,128,213,182,53,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,221,254,255,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,222,252,253,253,253,253,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,253,253,170,142,219,253,239,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,241,253,253,172,38,0,110,253,251,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,253,188,6,0,48,246,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,225,49,0,22,192,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,249,253,253,175,0,66,191,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,239,209,243,253,253,253,253,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,253,253,253,253,253,253,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,245,253,253,201,154,204,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,65,65,13,49,237,253,253,244,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,253,253,198,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,218,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,162,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,253,208,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,253,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,212,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,134,230,253,253,215,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,185,246,253,253,253,223,38,225,192,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,145,0,125,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,168,45,10,0,125,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,210,159,78,2,0,0,0,125,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,5,218,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,240,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,65,57,0,0,0,0,66,239,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,72,239,252,252,249,166,86,42,240,253,216,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,253,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,142,249,222,131,119,119,139,234,253,253,253,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,122,0,0,0,0,0,99,253,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,247,19,0,0,0,0,56,238,253,253,234,240,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,192,6,0,0,0,32,222,253,253,166,5,112,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,157,11,109,218,233,253,253,125,9,0,11,85,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,219,222,253,253,253,197,93,2,0,0,0,8,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,49,253,253,185,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,35,118,58,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,79,79,138,175,229,253,253,254,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,253,253,254,253,253,253,253,254,253,247,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,253,253,254,253,253,253,253,254,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,254,241,187,98,8,0,61,142,236,254,216,0,0,0,0,0,0,0,0,0,0,0,0,38,201,253,253,227,135,30,0,0,0,0,0,0,87,244,215,0,0,0,0,0,0,0,0,0,0,0,43,153,254,253,253,211,175,153,12,0,0,0,0,0,0,136,154,0,0,0,0,0,0,0,0,0,0,0,136,253,254,253,253,253,253,254,184,28,0,0,0,0,0,11,5,0,0,0,0,0,0,0,0,0,0,0,100,253,254,253,253,253,253,254,253,235,142,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,98,158,195,195,227,254,255,254,254,229,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,35,80,0,0,0,21,39,89,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,175,199,253,253,0,0,0,0,0,59,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,200,0,0,0,0,53,201,253,222,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,253,155,0,0,31,150,217,254,253,192,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,254,255,254,254,254,254,255,219,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,172,253,253,254,253,253,253,245,211,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,93,174,175,241,228,159,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,47,121,229,253,118,0,0,0,0,0,0,0,0,49,185,101,70,70,70,70,70,164,185,186,185,132,185,247,254,253,253,253,253,0,0,0,0,0,0,0,0,234,253,253,253,253,254,253,253,253,253,254,253,253,253,253,254,253,253,253,211,0,0,0,0,0,0,0,0,86,159,253,253,253,254,253,253,253,253,244,137,137,96,23,23,170,253,253,86,0,0,0,0,0,0,0,0,0,0,0,43,116,117,95,0,0,0,0,0,0,0,0,24,213,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,173,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,253,203,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,219,254,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,254,211,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,213,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,241,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,254,204,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,161,129,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,211,134,34,22,0,21,34,34,130,111,144,250,254,118,0,0,0,0,0,0,0,0,0,0,0,0,11,171,253,253,253,227,177,224,253,253,255,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,12,87,162,253,253,253,253,253,253,254,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,98,121,121,121,121,255,253,253,242,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,254,253,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,210,253,253,184,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,172,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,227,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,210,15,0,0,0,0,0,0,0,0,93,33,0,0,0,0,0,0,0,0,0,0,0,0,68,237,253,253,99,0,0,0,0,0,0,0,0,12,205,33,0,0,0,0,0,0,0,0,0,0,0,19,238,253,253,217,12,0,0,0,0,0,0,0,0,45,253,33,0,0,0,0,0,0,0,0,0,0,0,81,253,253,248,52,0,0,0,0,0,0,0,0,0,45,253,33,0,0,0,0,0,0,0,0,0,0,22,207,253,253,170,0,0,0,0,0,0,0,0,0,0,45,203,12,0,0,0,0,0,0,0,0,0,0,138,253,253,253,45,0,0,0,0,0,0,0,0,0,0,45,90,0,0,0,0,0,0,0,0,0,0,3,212,253,253,120,2,0,0,0,0,0,0,0,0,0,0,24,34,0,0,0,0,0,0,0,0,0,0,134,253,253,171,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,237,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,244,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,162,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,169,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,247,198,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,207,251,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,251,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,251,251,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,117,251,251,239,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,255,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,251,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,251,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,105,251,251,243,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,244,214,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,251,251,251,253,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,117,251,251,253,160,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,152,193,193,152,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,252,253,252,243,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,254,253,254,253,254,253,193,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,131,50,91,131,253,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,132,31,0,0,254,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,253,192,21,142,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,234,253,254,253,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,253,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,151,232,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,131,0,41,203,243,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,233,30,0,0,0,122,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,142,0,0,0,0,0,132,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,10,172,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,41,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,203,20,0,0,0,0,0,82,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,255,213,132,10,0,0,0,123,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,212,123,122,163,243,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,255,253,255,253,255,233,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,71,151,253,171,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,225,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,217,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,219,36,0,0,0,0,43,110,140,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,252,252,252,221,70,70,101,184,246,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,34,165,253,252,252,252,252,253,252,252,252,252,253,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,243,117,22,158,252,253,252,168,232,252,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,253,168,0,0,0,0,0,0,81,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,178,42,0,0,0,0,0,51,228,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,183,100,0,0,0,0,0,0,161,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,236,252,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,252,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,253,202,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,136,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,118,253,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,101,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,157,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,49,104,191,198,198,108,104,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,213,254,254,254,254,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,211,254,254,213,113,113,113,81,110,113,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,111,199,254,236,136,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,141,254,244,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,197,254,254,253,106,57,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,254,254,254,254,234,139,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,201,187,159,159,159,160,243,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,219,198,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,56,96,0,0,0,0,0,0,0,0,0,0,104,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,195,210,94,0,0,0,0,0,0,0,0,0,167,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,253,172,125,48,32,0,0,0,30,111,250,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,37,154,242,254,254,254,238,207,207,207,237,254,253,143,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,103,169,206,254,254,254,254,255,241,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,103,103,103,103,79,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,205,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,205,253,251,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,253,238,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,241,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,235,0,0,0,0,0,0,0,38,50,50,50,50,50,5,0,0,0,0,0,0,0,0,0,0,0,254,253,235,0,0,0,0,0,68,180,236,253,253,253,253,253,187,126,30,0,0,0,0,0,0,0,0,0,254,253,235,0,0,0,0,13,198,253,253,204,191,148,128,176,247,253,222,126,0,0,0,0,0,0,0,0,254,253,140,0,0,0,0,144,253,253,168,14,0,0,0,0,108,215,253,253,0,0,0,0,0,0,0,0,254,253,208,0,0,0,0,174,253,253,61,0,0,0,0,0,0,112,253,253,0,0,0,0,0,0,0,0,254,253,235,0,0,0,0,174,253,253,61,0,0,0,0,0,0,112,253,214,0,0,0,0,0,0,0,0,254,253,241,36,0,0,0,174,253,253,164,0,0,0,0,0,0,112,253,87,0,0,0,0,0,0,0,0,103,253,253,232,85,0,0,25,125,229,244,181,64,0,0,0,0,157,253,112,0,0,0,0,0,0,0,0,4,207,253,253,208,0,0,0,0,114,229,253,244,87,0,0,42,243,253,81,0,0,0,0,0,0,0,0,0,25,253,253,250,150,36,0,0,0,52,148,181,245,184,106,228,253,95,1,0,0,0,0,0,0,0,0,0,1,88,207,253,253,242,211,112,112,112,112,118,172,253,253,207,26,1,0,0,0,0,0,0,0,0,0,0,0,0,80,135,210,253,253,253,253,253,253,253,213,135,87,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,27,129,129,129,129,129,129,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,118,255,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,219,254,71,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,238,254,9,0,0,0,0,0,43,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,180,2,0,0,0,0,0,44,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,134,0,0,0,0,0,0,44,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,247,230,3,0,0,0,0,0,0,44,254,181,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,99,254,186,0,0,0,0,0,0,0,44,254,181,18,96,222,22,0,0,0,0,0,0,0,0,0,0,0,187,254,103,0,0,0,0,0,0,0,111,254,232,247,254,120,0,0,0,0,0,0,0,0,0,0,0,0,187,254,38,0,0,0,0,0,0,62,204,254,254,210,93,5,0,0,0,0,0,0,0,0,0,0,0,11,212,254,38,0,0,0,0,0,132,239,254,254,153,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,38,0,0,0,25,131,239,230,182,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,179,0,0,44,212,254,176,44,139,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,248,249,169,162,245,254,190,28,0,139,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,243,254,254,254,172,5,0,0,139,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,120,120,76,7,0,0,0,82,246,147,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,221,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,221,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,226,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,71,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,180,2,0,0,0,31,221,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,228,13,0,0,0,55,247,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,174,0,0,0,0,79,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,174,0,0,0,0,153,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,254,78,0,0,0,0,176,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,228,12,0,0,0,17,241,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,135,0,0,0,0,88,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,135,0,0,0,0,118,253,216,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,239,231,46,0,0,0,0,154,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,218,15,0,0,0,0,215,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,187,0,0,0,0,28,232,253,117,0,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,25,240,253,145,79,79,48,79,119,253,253,211,175,254,179,24,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,254,253,253,245,253,254,253,253,253,253,254,253,93,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,253,253,253,253,254,253,253,253,253,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,68,188,240,255,249,213,254,254,255,254,235,180,98,173,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,39,36,12,39,39,171,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,125,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,211,158,158,117,63,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,244,254,254,254,254,254,254,207,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,244,254,180,67,67,67,72,190,254,247,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,163,253,254,111,2,0,0,0,0,2,120,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,142,11,0,0,0,0,0,0,23,229,243,29,0,0,0,0,0,0,0,0,0,0,0,0,46,244,254,146,11,0,0,0,0,0,0,0,0,202,254,120,0,0,0,0,0,0,0,0,0,0,0,0,3,93,105,2,0,0,0,0,0,0,0,0,0,202,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,206,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,230,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,236,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,126,139,139,139,139,49,55,248,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,68,202,253,254,254,254,254,254,254,254,254,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,182,100,86,86,86,139,254,254,254,254,185,85,0,0,0,0,0,0,0,0,0,0,0,0,0,201,249,110,1,0,0,0,40,173,254,246,120,215,254,247,87,0,0,0,0,0,0,0,0,0,0,0,0,255,225,2,0,0,0,82,244,254,233,72,0,10,173,252,245,121,0,0,0,0,0,0,0,0,0,0,0,229,254,152,2,32,136,250,254,201,40,0,0,0,0,124,247,252,84,0,0,0,0,0,0,0,0,0,0,102,236,254,226,239,254,234,132,19,0,0,0,0,0,0,91,246,246,124,0,0,0,0,0,0,0,0,0,0,42,228,254,254,184,29,0,0,0,0,0,0,0,0,0,125,254,245,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,155,253,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,198,253,229,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,255,193,0,0,0,0,0,0,0,8,13,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,181,0,0,0,0,12,25,95,212,253,253,171,39,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,72,0,0,0,34,198,254,253,253,253,253,253,221,40,0,0,0,0,0,0,0,0,0,0,0,145,253,253,95,0,17,96,246,253,223,96,129,84,84,213,253,221,16,0,0,0,0,0,0,0,0,0,0,117,253,253,193,18,183,253,253,137,35,0,0,0,15,208,253,230,18,0,0,0,0,0,0,0,0,0,0,25,253,253,193,165,253,225,71,3,0,0,0,14,174,253,229,54,0,0,0,0,0,0,0,0,0,0,0,25,253,253,242,242,225,47,0,0,0,0,13,118,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,4,171,253,253,253,241,218,218,218,219,218,223,253,253,225,47,0,0,0,0,0,0,0,0,0,0,0,0,0,90,217,253,253,253,253,253,253,254,253,253,232,116,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,161,253,253,253,253,253,249,132,57,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,161,246,254,200,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,186,251,212,105,112,217,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,216,235,84,7,0,0,41,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,214,187,49,0,0,0,0,28,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,200,11,0,0,0,25,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,203,51,0,0,22,169,234,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,251,73,0,0,54,231,208,133,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,67,121,243,160,0,47,135,249,128,4,120,220,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,79,100,252,222,184,234,214,49,0,24,214,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,187,130,0,0,0,62,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,255,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,245,203,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,198,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,198,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,186,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,75,0,0,0,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,216,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,90,243,228,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,162,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,249,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,205,0,0,0,0,0,6,111,73,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,180,0,0,0,87,168,189,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,97,0,0,87,244,254,231,236,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,249,46,0,86,251,254,164,8,160,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,234,244,0,23,239,255,163,11,91,239,220,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,253,81,131,254,187,113,209,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,219,254,252,253,254,253,254,252,196,25,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,247,254,254,254,254,229,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,105,229,254,161,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,237,222,184,170,145,145,145,145,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,36,49,127,127,152,216,248,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,242,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,37,8,0,0,235,247,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,231,204,109,45,243,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,111,194,254,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,254,221,163,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,253,51,24,173,199,226,190,138,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,225,18,0,0,0,21,127,216,229,218,165,128,56,37,0,0,0,0,0,0,0,0,0,0,0,0,129,254,159,0,0,0,0,0,0,0,20,80,144,131,87,87,0,0,0,0,0,0,0,0,0,0,0,14,232,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,241,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,92,219,254,254,254,254,109,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,54,253,253,253,253,247,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,239,186,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,215,253,212,105,105,26,31,225,253,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,227,31,0,0,0,46,234,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,210,0,0,10,131,188,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,217,44,71,188,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,235,253,253,253,253,240,204,219,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,225,197,197,197,84,0,169,253,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,55,240,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,185,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,245,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,222,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,250,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,190,129,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,225,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,255,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,255,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,249,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,247,250,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,255,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,248,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,251,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,109,109,109,110,109,109,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,73,176,217,233,252,252,252,253,252,252,232,156,10,0,0,0,0,0,0,0,0,0,0,0,0,6,120,211,252,252,252,253,252,252,252,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,1,120,252,252,252,252,252,253,252,252,252,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,252,236,143,144,20,0,0,0,73,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,73,252,252,220,55,30,0,0,0,0,0,0,73,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,63,215,132,41,0,0,0,0,0,0,0,0,73,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,247,252,252,159,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,37,253,252,252,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,252,252,252,145,144,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,171,253,253,253,255,253,253,253,255,253,232,47,0,0,0,0,0,0,0,0,0,0,0,42,134,217,222,252,253,252,252,252,253,252,252,252,253,252,252,232,0,0,0,0,0,0,0,0,0,73,181,221,252,252,252,252,253,252,252,252,253,252,252,252,253,252,252,231,0,0,0,0,0,0,0,0,63,237,252,252,252,252,252,252,253,252,252,252,108,108,108,190,253,252,231,46,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,253,208,144,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,200,97,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,195,215,215,215,91,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,152,233,254,253,193,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,253,252,253,252,123,41,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,233,254,233,82,0,0,0,92,253,254,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,172,30,0,0,0,0,51,252,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,131,0,0,0,0,0,21,214,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,172,10,0,0,0,0,0,102,253,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,0,0,51,233,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,142,0,0,0,0,0,193,252,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,234,71,0,41,113,193,244,162,113,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,203,243,253,171,40,0,233,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,203,122,102,20,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,211,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,207,254,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,206,254,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,224,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,248,100,113,55,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,254,254,254,201,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,208,254,254,246,230,254,254,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,158,28,17,50,237,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,151,0,0,0,222,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,58,0,0,13,230,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,232,40,0,0,128,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,254,133,0,0,185,254,238,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,224,26,161,253,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,212,254,250,254,254,148,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,238,254,254,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,89,130,158,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,151,253,253,253,253,253,179,4,114,136,136,89,8,0,0,0,0,0,0,0,0,0,0,0,0,0,81,208,253,253,250,149,111,111,27,135,253,253,253,253,207,28,1,0,0,0,0,0,0,0,0,0,0,81,208,253,253,219,87,0,0,0,0,68,228,126,105,214,251,253,85,0,0,0,0,0,0,0,0,0,0,136,253,250,146,36,0,0,0,0,0,0,0,0,0,0,230,253,135,0,0,0,0,0,0,0,0,0,0,136,253,228,0,0,0,0,0,0,0,0,0,0,0,15,233,253,118,0,0,0,0,0,0,0,0,0,2,156,253,241,49,0,0,0,0,0,0,0,0,0,38,126,253,213,10,0,0,0,0,0,0,0,0,0,5,230,253,245,158,19,0,0,0,0,0,0,0,18,224,253,181,6,0,0,0,0,0,0,0,0,0,0,0,46,229,253,253,188,19,0,0,0,0,0,18,184,253,231,55,0,0,0,0,0,0,0,0,0,0,0,0,0,38,146,253,253,187,20,0,0,0,86,207,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,185,228,253,211,105,69,162,240,253,253,89,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,253,253,253,229,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,253,253,193,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,163,238,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,221,253,240,160,76,129,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,186,253,226,26,0,0,49,227,253,244,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,110,0,0,0,0,48,228,253,246,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,243,236,215,112,112,112,219,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,202,253,253,253,253,253,253,253,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,129,129,129,129,129,156,253,253,156,129,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,255,71,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,166,252,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,215,252,252,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,252,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,252,252,215,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,252,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,190,252,252,252,128,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,252,132,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,184,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,215,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,30,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,217,0,0,66,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,183,172,0,0,39,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,164,0,0,61,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,125,0,0,105,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,232,36,0,0,110,253,116,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,193,0,0,0,179,253,89,0,0,105,147,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,171,145,175,53,201,253,89,0,45,170,253,59,0,0,0,0,0,0,0,0,0,0,0,0,16,162,105,255,232,254,254,254,255,254,254,254,254,251,166,5,0,0,0,0,0,0,0,0,0,0,0,0,90,242,171,254,253,123,58,163,254,253,197,158,119,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,69,145,254,170,1,0,0,254,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,147,28,0,0,14,254,207,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,162,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,160,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,162,254,254,234,80,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,254,254,151,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,82,166,254,254,254,150,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,103,244,254,254,79,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,241,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,234,254,239,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,179,254,249,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,243,254,223,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,252,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,248,254,254,132,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,241,254,254,131,7,0,0,48,84,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,237,254,254,194,68,101,200,200,231,254,203,155,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,254,254,254,254,254,254,254,254,254,218,195,41,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,254,254,254,239,219,96,96,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,117,199,254,120,117,117,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,171,241,241,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,241,254,253,253,232,228,228,135,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,216,117,232,253,253,253,253,228,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,234,253,253,99,0,228,232,186,186,232,253,223,130,0,0,0,0,0,0,0,0,0,0,0,0,0,69,233,253,243,66,0,0,60,45,0,0,76,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,68,233,253,249,131,0,0,0,0,0,0,0,19,204,253,253,0,0,0,0,0,0,0,0,0,0,0,9,206,253,253,141,0,0,0,0,0,0,0,0,41,253,253,239,0,0,0,0,0,0,0,0,0,0,5,160,253,253,223,39,0,0,0,0,0,0,0,3,123,253,252,114,0,0,0,0,0,0,0,0,0,0,94,253,253,225,38,0,0,0,0,0,0,0,0,125,253,253,169,0,0,0,0,0,0,0,0,0,0,52,241,254,254,137,0,0,0,0,0,0,0,39,156,254,255,242,57,0,0,0,0,0,0,0,0,0,0,235,253,253,62,4,0,0,0,0,0,0,40,224,253,253,236,60,0,0,0,0,0,0,0,0,0,0,109,252,253,223,33,0,0,0,0,0,0,0,214,253,253,184,64,0,0,0,0,0,0,0,0,0,0,0,234,253,223,48,0,0,0,0,0,0,39,137,249,253,189,45,0,0,0,0,0,0,0,0,0,0,0,0,254,253,184,11,0,0,0,0,40,68,227,253,253,189,11,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,155,54,54,75,187,226,253,254,253,205,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,253,253,253,253,253,253,253,253,235,156,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,236,253,253,253,253,236,219,93,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,107,107,107,107,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,222,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,226,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,163,247,253,253,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,207,254,253,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,223,253,254,162,134,253,244,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,51,231,253,253,151,5,104,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,253,243,99,0,0,104,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,231,253,253,147,0,0,9,171,253,216,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,141,192,217,221,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,253,253,254,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,136,210,254,254,254,255,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,28,28,28,144,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,246,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,209,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,194,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,72,244,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,56,0,0,0,0,165,252,243,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,245,142,0,0,0,80,249,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,252,252,142,0,0,0,156,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,215,252,225,45,0,0,35,246,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,143,252,250,72,0,0,0,200,252,252,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,250,124,0,0,0,12,217,252,219,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,183,230,252,208,0,0,0,0,148,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,247,252,252,252,179,0,0,49,29,243,252,252,102,0,0,0,0,144,0,0,0,0,0,0,0,0,206,253,253,253,253,253,253,253,253,253,255,253,253,253,253,215,143,210,253,253,0,0,0,0,0,0,0,0,176,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,232,186,0,0,0,0,0,0,0,0,101,226,153,153,153,188,248,153,153,196,253,252,252,200,153,153,153,86,30,0,0,0,0,0,0,0,0,0,2,8,0,0,0,4,10,0,0,111,253,252,244,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,253,229,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,227,252,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,224,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,96,96,234,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,214,251,251,251,251,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127,158,251,253,251,251,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,225,251,251,251,253,251,251,251,251,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,251,251,251,251,253,251,251,251,251,253,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,253,253,253,253,255,253,253,253,253,255,253,253,91,0,0,0,0,0,0,0,0,0,0,0,16,186,251,253,251,251,223,121,122,244,251,251,251,253,251,251,188,0,0,0,0,0,0,0,0,0,0,16,189,251,251,253,251,188,15,0,0,111,251,251,172,173,251,251,188,0,0,0,0,0,0,0,0,0,0,72,251,251,251,229,69,15,0,0,0,4,110,50,12,12,58,251,244,83,0,0,0,0,0,0,0,0,0,190,251,251,251,158,0,0,0,0,0,0,0,0,0,0,32,251,251,193,0,0,0,0,0,0,0,0,155,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,0,0,0,0,0,0,0,0,253,251,251,204,23,0,0,0,0,0,0,0,0,0,0,92,236,251,251,132,0,0,0,0,0,0,0,0,253,251,251,109,0,0,0,0,0,0,0,0,0,32,127,253,251,251,219,47,0,0,0,0,0,0,0,0,253,251,219,23,0,0,0,0,0,0,0,48,143,229,251,253,251,251,188,0,0,0,0,0,0,0,0,0,253,251,126,0,0,0,0,0,0,0,159,228,251,251,251,253,251,251,89,0,0,0,0,0,0,0,0,0,255,253,253,114,96,96,96,96,234,253,255,253,253,253,253,255,221,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,231,63,54,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,140,47,0,0,0,0,0,0,0,0,0,0,0,0,0,91,236,251,251,251,253,251,251,251,251,189,69,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,251,251,253,251,251,113,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,173,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,255,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,193,232,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,245,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,242,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,206,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,209,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,151,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,255,223,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,218,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,125,125,215,255,255,241,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,158,248,252,253,253,253,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,46,161,241,251,253,253,253,253,253,253,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,46,233,253,253,253,253,224,149,119,19,19,39,216,253,253,240,0,0,0,0,0,0,0,0,0,0,0,107,239,253,253,253,170,48,18,0,0,0,0,16,198,253,253,190,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,86,0,0,0,0,0,0,40,253,253,236,14,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,240,215,215,215,215,215,192,112,253,244,155,0,0,0,0,0,0,0,0,0,0,0,0,21,169,248,253,253,253,253,253,253,253,253,253,253,243,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,253,253,253,253,253,253,253,185,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,58,172,188,188,206,253,253,253,184,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,213,253,253,188,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,239,253,243,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,220,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,253,253,195,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,206,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,209,254,254,255,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,151,241,254,254,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,132,254,254,254,254,254,254,240,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,197,147,147,229,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,228,254,204,12,0,0,194,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,234,67,0,0,88,249,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,193,0,6,77,227,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,251,254,207,88,200,254,254,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,254,254,254,254,228,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,254,254,254,248,174,173,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,83,38,32,0,209,254,254,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,244,254,254,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,222,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,179,183,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,195,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,191,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,159,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,230,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,241,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,244,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,244,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,250,253,219,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,180,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,175,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,223,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,253,119,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,197,255,217,146,146,146,91,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,185,152,247,253,253,253,207,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,244,15,0,29,32,71,149,249,241,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,116,0,0,0,0,0,50,245,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,205,0,0,0,0,0,0,206,235,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,205,0,0,0,0,0,0,206,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,205,0,0,0,0,0,0,185,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,205,0,0,0,0,0,0,98,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,241,205,0,0,0,0,0,0,98,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,244,135,0,0,0,0,0,0,98,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,249,62,0,0,0,0,0,0,98,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,73,0,0,0,0,0,0,0,107,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,234,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,193,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,228,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,134,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,97,0,0,0,0,0,0,0,10,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,97,0,0,0,0,0,37,213,236,221,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,252,77,0,0,0,44,111,224,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,2,189,254,244,0,0,0,83,243,254,254,179,58,191,156,2,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,244,0,0,81,249,254,234,53,3,14,215,99,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,171,0,58,248,254,207,49,0,0,171,239,70,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,135,19,198,254,234,33,0,0,122,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,77,108,254,246,47,0,24,161,253,158,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,57,182,254,164,14,105,215,255,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,236,254,254,234,221,254,246,80,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,254,254,254,254,254,234,136,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,111,187,254,254,243,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,105,229,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,106,232,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,166,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,245,182,96,214,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,181,64,0,0,98,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,206,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,235,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,232,165,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,168,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,13,13,1,0,0,0,0,3,198,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,60,181,253,253,150,24,0,0,0,130,253,204,15,0,0,0,0,0,0,0,0,0,0,0,0,0,106,226,253,253,253,253,253,244,33,0,89,226,208,64,0,0,0,0,0,0,0,0,0,0,0,0,0,48,226,253,181,84,84,136,251,254,245,95,145,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,35,180,253,181,17,0,0,0,127,254,253,253,253,181,17,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,204,52,0,0,0,0,0,162,253,253,239,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,84,0,0,0,0,0,0,133,253,253,221,65,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,222,12,0,0,0,0,0,47,238,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,107,0,0,0,0,0,151,241,197,154,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,254,230,5,0,0,0,0,151,252,195,6,13,207,253,216,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,49,133,246,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,135,254,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,150,254,254,248,195,137,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,119,145,201,254,251,177,33,57,80,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,254,244,136,0,0,177,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,251,89,0,0,78,248,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,152,0,0,0,148,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,250,61,0,0,79,248,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,153,0,0,35,219,254,254,191,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,243,254,69,0,7,178,254,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,60,87,205,254,254,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,230,254,254,245,89,227,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,182,254,254,254,214,68,0,222,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,113,113,73,15,0,0,222,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,230,240,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,251,170,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,139,188,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,48,171,233,232,232,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,158,252,252,253,205,189,210,28,0,22,117,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,252,252,208,86,11,0,28,7,62,199,252,252,235,0,0,0,0,0,0,0,0,0,0,0,0,18,255,253,232,158,0,0,0,0,0,0,87,253,214,239,253,0,0,0,0,0,0,0,0,0,0,0,48,216,253,252,91,0,0,0,0,0,0,0,11,63,21,232,252,0,0,0,0,0,0,0,0,0,0,20,202,252,170,47,2,0,0,0,0,0,0,0,0,0,75,252,244,0,0,0,0,0,0,0,0,0,22,202,252,182,0,0,0,0,0,0,0,0,0,0,0,0,153,252,147,0,0,0,0,0,0,0,0,0,173,252,226,42,0,0,0,0,0,0,0,0,0,0,0,116,249,226,86,0,0,0,0,0,0,0,0,123,253,253,128,0,0,0,0,0,0,0,0,0,0,0,166,253,253,172,0,0,0,0,0,0,0,0,0,253,252,157,21,0,0,0,0,0,0,0,0,0,22,128,253,252,157,21,0,0,0,0,0,0,0,0,0,253,252,126,0,0,0,0,0,0,0,0,0,11,124,252,250,152,19,0,0,0,0,0,0,0,0,0,0,253,252,100,0,0,0,0,0,0,0,11,99,211,252,226,70,0,0,0,0,0,0,0,0,0,0,0,0,253,252,109,0,0,0,0,0,27,106,219,252,252,155,24,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,253,253,165,193,148,201,253,253,247,176,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,231,252,252,252,253,252,252,231,124,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,74,126,126,127,91,21,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,255,170,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,235,200,121,33,5,47,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,253,253,253,253,220,156,253,159,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,124,160,191,253,253,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,61,61,108,218,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,31,79,233,253,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,146,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,162,239,253,253,253,246,176,40,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,253,185,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,115,249,253,253,226,209,70,70,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,198,253,253,253,253,253,197,100,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,137,243,253,253,253,253,253,219,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,52,191,208,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,202,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,109,109,109,109,109,109,148,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,253,253,240,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,253,182,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,207,255,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,151,254,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,23,0,0,0,0,91,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,221,132,0,0,0,0,202,254,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,198,254,99,0,0,0,48,246,249,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,254,239,29,0,0,0,201,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,157,254,254,92,0,0,0,49,246,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,254,211,200,200,185,216,254,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,230,254,254,254,254,254,254,254,254,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,177,66,110,128,128,128,233,254,245,92,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,244,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,218,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,217,254,212,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,215,254,228,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,230,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,216,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,16,4,29,117,141,154,255,217,141,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,170,169,235,216,180,253,253,253,254,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,253,253,254,253,225,168,107,56,56,232,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,104,177,140,90,28,28,19,0,0,0,127,250,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,205,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,154,253,187,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,226,254,177,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,92,166,254,242,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,179,253,253,229,186,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,229,253,254,235,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,180,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,110,241,216,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,243,141,141,28,0,0,0,0,0,19,205,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,147,209,253,216,158,57,38,0,70,226,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,206,254,253,235,198,254,253,149,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,91,165,253,253,242,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,148,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,114,252,252,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,162,241,253,252,180,210,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,252,252,216,110,48,225,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,199,252,252,121,18,0,215,252,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,185,211,70,0,0,103,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,169,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,192,252,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,239,252,221,29,0,0,0,0,0,0,52,224,135,4,0,0,0,0,0,0,0,0,0,0,0,0,71,218,252,252,231,28,0,0,0,0,0,11,206,252,252,42,0,0,0,0,0,0,0,0,0,0,0,98,228,253,252,252,252,42,0,0,0,0,45,175,252,252,155,7,0,0,0,0,0,0,0,0,0,0,31,218,253,247,211,250,253,42,0,0,48,174,253,255,239,158,35,0,0,0,0,0,0,0,0,0,0,29,213,252,252,176,36,241,252,113,103,190,247,252,252,186,42,0,0,0,0,0,0,0,0,0,0,0,22,213,252,252,146,9,0,232,252,252,253,252,242,205,82,9,0,0,0,0,0,0,0,0,0,0,0,0,69,252,252,139,14,0,0,86,189,189,190,153,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,146,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,61,61,61,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,212,225,248,254,254,255,243,234,237,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,38,23,35,0,39,60,60,60,46,39,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,136,226,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,233,190,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,247,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,231,182,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,184,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,65,227,240,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,190,188,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,84,0,0,0,0,0,0,3,226,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,80,16,0,0,0,0,0,0,225,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,245,177,0,0,0,0,0,49,242,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,249,255,148,13,4,31,106,237,193,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,228,215,254,254,181,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,117,239,239,239,221,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,118,118,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,239,254,254,245,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,247,254,254,254,254,160,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,254,254,254,254,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,254,254,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,254,254,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,229,124,198,254,254,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,144,144,42,0,145,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,232,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,225,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,166,166,107,3,0,32,175,254,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,113,219,254,254,254,156,145,166,254,254,254,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,254,254,254,254,254,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,254,254,254,254,254,254,254,254,254,254,254,243,242,242,242,222,0,0,0,0,0,0,0,0,0,0,217,254,254,254,254,254,254,254,254,254,255,254,254,254,254,254,254,252,146,0,0,0,0,0,0,0,0,93,250,254,254,254,254,254,254,254,204,192,233,254,254,254,254,254,254,249,118,0,0,0,0,0,0,0,0,140,254,254,254,254,254,233,153,75,14,0,49,75,75,206,213,179,172,121,0,0,0,0,0,0,0,0,0,160,253,254,254,252,226,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,117,117,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,64,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,64,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,128,128,128,191,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,116,199,239,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,122,202,225,118,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,70,0,39,68,176,254,217,165,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,252,222,247,253,213,106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,219,95,95,50,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,249,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,205,170,190,190,190,131,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,206,205,205,205,205,224,253,200,108,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,101,201,253,199,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,115,248,208,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,255,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,226,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,104,251,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,186,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,181,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,241,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,222,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,253,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,193,253,237,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,180,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,234,253,192,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,250,253,180,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,181,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,233,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,62,232,254,255,255,254,227,146,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,188,253,253,253,253,253,253,253,253,245,154,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,246,253,253,249,146,166,253,253,224,94,153,248,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,202,22,0,60,253,253,199,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,92,0,0,60,253,253,233,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,92,0,1,115,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,158,18,159,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,241,216,253,253,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,253,198,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,253,253,253,253,226,128,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,252,253,253,253,253,206,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,219,253,253,253,253,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,253,253,249,90,119,253,253,236,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,253,253,198,21,0,99,253,253,204,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,224,21,0,0,195,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,121,0,5,170,244,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,215,253,232,141,238,253,253,251,128,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,215,253,253,253,253,229,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,145,226,249,125,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,17,91,104,241,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,70,17,97,181,233,254,254,254,254,250,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,166,254,254,254,254,254,227,147,147,131,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,223,221,163,57,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,221,254,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,235,254,216,76,75,128,154,75,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,254,254,254,254,254,251,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,173,254,254,254,247,246,193,191,223,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,251,221,84,7,0,0,0,5,207,254,165,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,55,0,0,0,0,0,0,0,154,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,254,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,246,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,171,103,7,0,0,0,0,4,119,245,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,236,254,254,78,0,0,0,88,173,254,254,244,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,199,254,254,241,182,71,198,254,254,254,192,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,216,254,254,254,254,254,255,249,111,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,66,198,246,254,174,117,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,229,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,227,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,78,4,29,29,29,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,178,179,252,252,252,244,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,253,252,252,252,253,240,159,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,252,252,252,253,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,253,253,228,101,26,76,0,13,138,247,203,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,252,28,0,0,0,0,0,0,122,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,252,65,0,0,0,0,0,0,85,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,252,240,51,0,0,0,0,0,10,228,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,229,253,253,253,192,66,7,0,0,0,10,229,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,109,240,252,253,252,187,119,70,169,197,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,156,253,252,252,252,253,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,165,252,252,253,227,139,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,36,45,95,153,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,205,232,244,243,254,244,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,45,149,143,254,254,254,254,254,254,241,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,76,150,254,254,254,200,85,85,136,178,231,254,244,44,0,0,0,0,0,0,0,0,0,0,0,0,44,191,254,254,254,254,219,122,0,0,0,0,45,231,254,152,0,0,0,0,0,0,0,0,0,0,0,104,233,254,254,214,96,47,13,58,0,0,0,0,0,74,254,236,0,0,0,0,0,0,0,0,0,0,105,229,254,247,137,3,0,0,0,0,0,0,0,0,0,38,241,254,0,0,0,0,0,0,0,0,0,100,231,254,222,78,0,0,0,0,0,0,0,0,0,0,0,55,252,254,0,0,0,0,0,0,0,0,8,229,254,245,65,0,0,0,0,0,0,0,0,0,0,0,0,68,254,243,0,0,0,0,0,0,0,0,102,254,250,78,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,159,0,0,0,0,0,0,0,0,220,254,92,0,0,0,0,0,0,0,0,0,0,0,0,5,164,254,237,25,0,0,0,0,0,0,0,0,254,248,48,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,162,0,0,0,0,0,0,0,0,0,254,212,0,0,0,0,0,0,0,0,0,0,0,7,149,243,254,206,9,0,0,0,0,0,0,0,0,0,254,185,0,0,0,0,0,0,0,0,0,0,63,226,254,254,197,35,0,0,0,0,0,0,0,0,0,0,254,216,0,0,0,0,0,0,0,18,72,190,250,254,254,225,40,0,0,0,0,0,0,0,0,0,0,0,254,247,60,0,0,0,7,40,124,224,254,254,254,248,182,43,0,0,0,0,0,0,0,0,0,0,0,0,156,254,251,179,179,179,204,254,254,254,255,254,184,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,237,254,254,254,254,254,254,254,254,198,100,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,205,236,252,243,244,169,121,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,61,41,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,232,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,102,0,0,0,0,0,0,0,82,87,87,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,102,0,0,0,0,76,233,233,252,253,253,251,233,142,10,0,0,0,0,0,0,0,0,0,0,0,184,253,102,0,0,0,79,246,253,253,253,253,253,253,253,253,142,16,0,0,0,0,0,0,0,0,0,0,145,253,102,0,4,159,241,253,194,76,54,79,161,210,253,253,253,115,0,0,0,0,0,0,0,0,0,0,76,253,157,0,21,253,246,33,6,0,0,0,0,20,203,253,253,183,0,0,0,0,0,0,0,0,0,0,26,233,239,68,144,253,96,0,0,0,0,0,0,0,22,200,253,183,0,0,0,0,0,0,0,0,0,0,0,180,253,238,249,253,59,0,0,0,0,0,0,0,0,144,253,183,0,0,0,0,0,0,0,0,0,0,0,10,253,253,253,253,126,14,0,0,0,0,0,0,0,211,253,171,0,0,0,0,0,0,0,0,0,0,0,5,181,253,253,253,253,129,0,0,0,0,0,7,139,240,245,56,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,179,104,104,51,0,0,116,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,1,74,250,253,253,253,253,253,251,249,249,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,227,253,253,253,253,253,253,253,253,205,139,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,74,100,145,231,207,228,145,133,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,164,254,255,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,192,251,254,228,223,252,128,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,239,254,231,77,19,11,214,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,154,10,0,0,0,51,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,78,0,0,0,0,0,19,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,223,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,235,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,124,123,123,150,251,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,255,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,189,213,240,254,255,205,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,22,91,230,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,235,7,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,207,254,37,0,0,0,0,0,0,0,0,0,0,0,0,190,208,28,0,0,0,0,0,0,0,0,0,9,216,254,86,0,0,0,0,0,0,0,0,0,0,0,0,115,254,210,37,13,0,0,0,0,0,0,0,97,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,3,163,254,254,229,179,125,0,0,0,0,26,242,254,225,6,0,0,0,0,0,0,0,0,0,0,0,0,0,3,114,243,254,254,253,245,151,151,154,248,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,131,187,249,254,255,254,254,254,254,227,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,159,184,254,254,254,148,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,255,255,254,164,91,91,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,243,253,253,253,253,253,253,229,180,180,59,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,146,146,236,253,253,253,253,253,253,253,186,107,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,56,205,220,252,253,253,253,253,253,224,197,102,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,129,178,253,253,253,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,40,115,244,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,231,253,253,171,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,240,253,253,238,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,251,253,253,126,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,14,204,253,253,225,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,208,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,25,205,253,253,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,205,249,253,253,252,148,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,155,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,237,253,253,253,253,199,68,58,58,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,230,253,253,253,253,253,253,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,244,253,253,253,253,253,253,253,202,116,15,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,158,253,253,253,253,210,89,89,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,199,254,254,254,255,228,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,241,234,166,97,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,208,177,210,185,177,177,227,253,253,253,218,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,25,0,27,7,0,0,91,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,177,253,253,253,178,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,151,226,253,253,253,191,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,240,253,253,253,253,189,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,253,253,253,253,181,65,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,253,253,221,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,184,214,253,253,253,253,252,206,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,68,119,253,253,253,253,169,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,89,181,253,253,253,224,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,113,246,253,253,167,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,212,0,0,0,0,0,0,0,0,0,0,0,40,219,58,0,0,0,0,0,0,0,0,0,0,6,222,253,212,0,0,0,0,0,0,0,0,0,0,0,97,253,198,72,0,0,0,0,0,0,0,0,0,34,231,253,212,0,0,0,0,0,0,0,0,0,0,0,73,210,253,246,192,31,0,0,0,0,0,2,63,215,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,23,179,240,253,215,179,179,105,152,57,181,253,253,253,243,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,103,232,253,253,253,253,253,253,253,253,235,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,239,253,253,253,249,116,116,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,34,0,0,0,0,0,15,182,251,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,223,17,0,0,0,0,0,161,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,136,254,199,17,0,0,0,0,119,255,165,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,174,253,241,60,0,0,0,0,81,222,224,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,216,253,253,167,0,0,0,0,47,245,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,170,253,253,151,0,0,0,0,26,214,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,170,254,254,214,25,0,0,0,51,221,254,188,25,0,0,0,0,0,0,0,0,0,0,0,0,0,43,208,253,254,253,167,105,47,47,55,222,254,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,253,253,254,253,253,253,254,253,253,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,244,194,161,160,160,160,186,253,253,253,228,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,221,254,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,254,227,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,178,253,214,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,253,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,222,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,244,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,139,0,0,0,0,0,0,0,0,117,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,149,247,16,0,0,0,0,0,0,0,219,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,254,181,3,0,0,0,0,0,0,0,219,254,62,0,0,0,0,0,0,0,0,0,0,0,0,12,156,254,217,21,0,0,0,0,0,0,0,0,219,254,62,0,0,0,0,0,0,0,0,0,0,0,0,128,254,245,45,0,0,0,0,0,0,0,0,2,221,254,62,0,0,0,0,0,0,0,0,0,0,0,64,242,254,156,0,0,0,0,0,0,0,0,0,54,254,254,62,0,0,0,0,0,0,0,0,0,0,0,164,254,215,26,0,0,0,0,0,0,0,0,0,80,254,228,1,0,0,0,0,0,0,0,0,0,0,15,234,254,123,0,0,0,0,0,0,0,0,0,0,143,254,228,0,0,0,0,0,0,0,0,0,0,0,141,255,236,25,0,0,0,0,0,0,0,0,0,0,191,254,228,0,0,0,0,0,0,0,0,0,0,0,163,254,144,0,0,0,0,0,0,0,0,12,60,122,243,254,228,0,0,0,0,0,0,0,0,0,0,0,242,254,129,0,0,0,6,39,108,108,177,218,254,254,254,254,228,0,0,0,0,0,0,0,0,0,0,0,242,254,220,184,184,184,204,254,254,254,254,250,222,106,239,254,163,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,254,254,226,179,158,85,79,0,0,0,233,254,138,0,0,0,0,0,0,0,0,0,0,0,5,89,98,98,64,9,6,1,0,0,0,0,0,0,233,254,241,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,240,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,228,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,116,243,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,234,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,143,175,253,253,253,253,253,236,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,25,193,253,253,253,245,183,105,105,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,174,253,253,253,244,183,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,180,253,253,244,122,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,75,253,253,222,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,75,253,253,219,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,195,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,195,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,230,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,253,126,0,0,0,0,0,0,0,0,26,75,75,7,0,0,0,0,0,0,0,0,0,0,0,0,13,253,233,19,0,0,0,0,0,22,118,205,221,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,56,253,126,0,0,0,0,0,65,192,253,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,136,253,220,37,0,0,0,21,211,253,253,253,221,194,253,148,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,159,37,0,0,56,253,253,253,253,106,142,253,148,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,238,147,106,199,253,253,253,253,245,250,253,148,0,0,0,0,0,0,0,0,0,0,0,0,1,150,253,253,253,253,253,253,253,253,253,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,16,205,253,253,253,253,253,253,253,253,253,253,152,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,129,208,253,253,253,253,192,156,129,87,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,194,238,194,255,178,254,254,254,194,156,156,66,59,59,9,0,0,0,0,0,0,0,0,0,0,0,0,3,179,253,253,234,158,233,233,241,254,253,253,253,253,254,167,6,0,0,0,0,0,0,0,0,0,0,0,0,24,142,253,0,0,0,0,30,78,78,78,167,174,254,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,0,0,0,0,0,0,0,0,0,0,163,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,249,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,193,83,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,231,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,248,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,245,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,230,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,251,253,243,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,242,195,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,132,242,253,255,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,147,252,252,252,252,253,252,252,252,226,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,226,252,252,252,252,234,219,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,204,204,204,89,40,25,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,148,232,252,252,232,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,252,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,160,251,253,252,252,252,247,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,253,252,252,252,252,214,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,236,237,64,139,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,157,47,0,0,0,0,0,23,221,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,181,252,224,105,0,0,0,0,37,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,232,252,252,225,181,8,0,0,37,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,197,252,252,252,252,195,130,66,71,252,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,192,252,252,252,252,253,248,234,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,252,252,252,253,252,252,252,252,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,168,252,252,253,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,127,253,252,252,229,103,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,206,239,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,145,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,241,102,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,241,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,213,254,153,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,254,192,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,248,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,237,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,193,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,236,254,67,0,22,62,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,230,7,72,179,254,238,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,151,107,244,254,254,254,245,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,164,222,254,211,74,102,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,236,202,186,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,255,254,249,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,254,254,254,254,254,224,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,157,254,254,193,139,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,255,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,136,185,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,245,235,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,238,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,253,253,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,167,253,253,172,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,166,253,253,216,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,253,253,194,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,253,253,208,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,105,253,253,204,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,201,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,236,253,235,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,237,253,235,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,238,253,236,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,173,253,192,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,175,253,239,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,177,253,240,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,253,112,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,247,60,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,19,19,19,19,19,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,91,124,182,222,253,253,253,254,253,253,196,181,0,0,0,0,0,0,0,0,0,0,0,103,163,106,215,254,196,181,92,91,91,85,0,0,0,0,72,91,0,0,0,0,0,0,0,0,0,0,73,245,63,70,140,63,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,248,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,249,253,139,109,110,57,19,19,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,207,162,162,163,162,240,253,227,156,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,149,255,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,146,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,132,253,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,204,253,155,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,80,130,163,206,168,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,18,18,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,230,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,214,253,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,239,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,237,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,205,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,213,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,255,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,249,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,149,254,237,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,250,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,237,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,208,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,219,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,245,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,192,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,248,253,254,248,241,241,241,213,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,244,253,253,254,253,253,253,253,253,228,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,241,253,253,253,254,253,181,173,194,253,253,235,34,0,0,0,0,0,0,0,0,0,0,0,0,0,18,205,253,253,253,253,223,129,6,0,14,201,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,215,66,35,0,0,0,0,78,236,253,208,26,0,0,0,0,0,0,0,0,0,0,0,56,237,253,253,213,34,0,0,0,0,0,0,0,83,253,253,120,0,0,0,0,0,0,0,0,0,0,10,169,253,253,253,93,0,0,0,0,0,0,0,0,41,253,253,120,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,93,0,0,0,0,0,0,0,0,41,253,253,120,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,93,0,0,0,0,0,0,0,0,41,253,253,190,0,0,0,0,0,0,0,0,0,52,241,254,254,254,254,94,0,0,0,0,0,0,0,0,41,255,255,255,0,0,0,0,0,0,0,0,0,235,253,253,168,225,253,93,0,0,0,0,0,0,0,0,168,253,253,196,0,0,0,0,0,0,0,0,45,246,253,253,53,48,224,93,0,0,0,0,0,0,0,70,203,253,248,76,0,0,0,0,0,0,0,0,121,253,253,185,9,0,27,15,0,0,0,0,0,0,22,208,253,253,197,0,0,0,0,0,0,0,0,0,227,253,253,67,0,0,0,0,0,0,0,0,0,22,187,253,253,246,78,0,0,0,0,0,0,0,0,0,254,253,253,39,0,0,0,0,0,0,0,0,49,188,253,253,245,108,0,0,0,0,0,0,0,0,0,0,162,253,253,131,0,0,0,0,0,0,20,98,245,253,253,223,109,0,0,0,0,0,0,0,0,0,0,0,109,252,253,224,55,27,9,18,27,98,206,253,253,245,191,25,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,180,214,253,253,255,253,241,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,253,253,253,253,253,253,253,255,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,198,114,141,226,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,0,0,0,0,141,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,86,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,198,86,114,226,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,114,0,0,0,0,0,0,57,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,226,170,86,114,170,226,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,170,226,255,226,141,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,70,162,161,170,254,255,254,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,139,222,249,253,254,253,253,253,241,206,206,206,0,0,0,0,0,0,0,0,0,0,0,0,0,72,157,240,254,253,251,230,138,88,46,46,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,253,253,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,254,254,210,248,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,201,253,185,9,214,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,192,13,0,25,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,177,116,116,116,116,40,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,220,253,253,253,254,253,253,253,160,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,93,93,93,93,110,184,210,254,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,152,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,245,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,255,203,80,0,0,0,0,0,0,0,15,161,254,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,173,249,251,230,172,138,138,138,139,155,232,253,182,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,129,230,245,253,253,253,254,248,221,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,69,69,69,103,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,207,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,159,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,226,254,175,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,229,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,243,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,101,0,0,0,0,0,0,22,50,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,196,223,10,0,0,0,0,40,161,243,254,222,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,178,0,0,0,0,70,251,254,254,254,254,254,219,27,0,0,0,0,0,0,0,0,0,0,0,0,80,254,55,0,0,20,132,249,254,254,254,251,254,254,254,214,28,0,0,0,0,0,0,0,0,0,0,0,112,254,25,0,43,208,254,254,248,170,108,8,66,221,254,254,119,0,0,0,0,0,0,0,0,0,0,0,151,254,26,42,211,254,254,229,67,0,0,0,0,16,153,251,203,6,0,0,0,0,0,0,0,0,0,0,151,254,74,254,254,254,192,40,0,0,0,0,0,0,0,115,254,79,0,0,0,0,0,0,0,0,0,0,151,254,243,254,254,185,10,0,0,0,0,0,0,0,0,67,255,79,0,0,0,0,0,0,0,0,0,0,151,254,254,254,185,11,0,0,0,0,0,0,0,0,62,252,254,63,0,0,0,0,0,0,0,0,0,0,76,254,254,176,5,0,0,0,0,0,0,0,5,122,248,254,202,5,0,0,0,0,0,0,0,0,0,0,2,202,254,167,0,0,0,0,0,0,0,102,200,254,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,59,238,253,201,81,33,33,84,126,229,254,254,254,231,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,254,254,254,254,254,254,254,254,224,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,219,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,246,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,229,252,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,254,253,253,253,253,245,123,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,175,253,254,253,179,95,239,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,145,253,253,254,230,55,0,102,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,235,53,0,0,68,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,224,253,253,253,49,0,0,0,68,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,252,169,0,0,0,0,68,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,169,0,0,0,0,0,138,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,107,0,0,0,0,0,202,254,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,77,251,253,253,171,6,0,0,0,0,133,251,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,238,59,0,0,0,0,0,214,253,253,217,10,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,213,0,0,0,0,0,123,247,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,75,245,253,253,107,0,0,0,0,121,248,253,253,175,17,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,242,63,0,3,54,188,250,253,253,203,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,236,83,55,178,253,255,253,253,176,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,253,255,242,177,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,253,253,253,253,253,253,241,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,120,120,140,253,175,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,0,0,0,0,0,0,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,123,0,0,0,0,123,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,203,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,122,0,0,0,132,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,233,0,0,0,0,214,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,233,50,0,0,0,82,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,123,0,0,0,0,102,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,41,0,0,0,0,102,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,214,51,0,0,0,123,254,253,92,51,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,253,252,203,122,163,243,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,254,253,254,253,254,253,254,253,203,203,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,192,253,252,253,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,207,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,252,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,252,252,189,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,232,252,252,241,112,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,222,252,252,252,35,0,0,0,0,0,0,0,63,73,73,0,0,0,0,0,0,0,0,0,0,0,0,16,222,252,252,252,35,0,0,0,0,6,120,182,242,252,252,182,46,0,0,0,0,0,0,0,0,0,0,109,252,252,252,189,15,0,0,0,0,120,252,253,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,110,253,253,253,144,0,0,0,0,218,253,253,255,253,253,253,255,253,133,0,0,0,0,0,0,0,0,0,15,222,252,252,143,0,0,0,94,247,252,252,253,252,252,252,253,252,215,0,0,0,0,0,0,0,0,0,0,196,252,252,159,5,0,0,212,252,252,252,253,252,252,252,253,252,195,0,0,0,0,0,0,0,0,0,0,155,252,252,252,35,21,144,253,252,252,252,253,252,252,252,253,128,31,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,253,253,255,253,253,253,255,253,253,253,208,20,0,0,0,0,0,0,0,0,0,0,0,52,231,252,252,252,252,252,253,252,252,252,253,252,241,97,20,0,0,0,0,0,0,0,0,0,0,0,0,0,52,154,215,247,252,252,253,252,252,252,237,174,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,253,210,108,108,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,101,94,91,159,159,159,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,49,97,156,229,253,253,253,253,253,253,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,8,104,227,253,253,254,253,253,253,253,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,40,225,253,253,253,254,213,177,177,177,176,225,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,219,112,18,9,0,0,0,54,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,11,140,50,24,0,0,0,0,6,158,244,253,253,223,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,124,200,253,253,253,181,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,57,175,245,253,253,253,253,202,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,60,123,220,253,254,253,253,253,253,253,240,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,254,253,253,253,253,253,253,238,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,254,254,255,195,149,95,146,242,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,187,215,170,87,28,3,0,0,0,75,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,226,253,242,65,0,0,0,0,0,0,0,0,0,5,33,113,113,113,181,63,0,0,0,0,0,15,82,243,253,253,113,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,202,0,0,0,0,23,99,236,253,253,253,161,3,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,249,244,223,231,244,247,253,253,253,242,78,3,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,253,253,253,253,253,253,254,238,224,133,30,0,0,0,0,0,0,0,0,0,0,0,0,0,42,111,138,159,159,159,159,159,159,90,66,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,139,254,254,93,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,136,253,253,253,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,239,107,130,249,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,193,193,80,0,0,143,253,245,61,136,182,182,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,254,253,253,253,253,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,254,253,253,253,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,254,253,222,59,226,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,213,251,253,249,75,20,0,182,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,253,253,11,0,0,0,182,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,249,69,0,0,0,0,183,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,253,244,73,0,0,0,0,40,223,246,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,216,253,82,0,0,0,0,23,222,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,84,12,0,0,0,5,79,253,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,137,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,198,253,253,181,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,253,224,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,254,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,29,92,166,216,91,0,7,29,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,197,252,197,196,215,252,108,101,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,234,252,127,0,0,19,106,178,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,241,252,127,3,0,0,0,0,79,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,197,0,0,0,0,0,0,141,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,216,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,240,110,10,0,0,0,0,253,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,252,252,228,63,113,113,213,253,252,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,138,225,225,163,188,225,250,254,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,13,13,13,13,13,13,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,145,145,150,252,252,252,252,252,252,211,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,253,252,252,252,252,252,252,252,211,42,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,252,252,252,253,252,252,252,252,252,252,252,252,194,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,252,252,252,250,123,72,72,72,72,218,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,163,245,252,207,0,0,0,0,56,218,252,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,48,23,0,0,0,61,155,252,252,216,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,208,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,234,252,252,252,113,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,252,252,252,217,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,132,190,255,253,253,253,216,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,59,181,252,252,252,253,252,249,147,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,89,252,252,252,252,252,253,252,238,77,66,48,7,0,0,0,0,0,0,0,0,0,0,0,0,5,66,225,252,252,252,252,252,252,253,252,252,252,252,212,145,17,0,0,0,0,0,0,0,0,0,0,3,136,252,252,252,252,252,252,252,252,253,252,252,252,238,100,14,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,252,252,252,252,252,253,245,162,60,46,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,252,252,252,252,252,252,216,167,48,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,252,252,252,252,173,52,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,143,143,143,143,52,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,255,186,150,129,47,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,147,221,253,253,253,138,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,55,134,231,253,167,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,253,163,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,197,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,210,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,101,223,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,192,191,136,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,245,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,148,253,250,138,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,232,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,233,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,200,253,233,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,13,135,218,238,253,175,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,161,167,253,253,253,253,221,118,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,224,149,125,133,128,46,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,162,245,254,254,170,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,239,254,253,253,253,254,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,195,253,254,240,232,253,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,254,81,91,253,254,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,255,186,254,254,255,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,254,253,253,253,254,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,249,236,254,253,244,253,254,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,19,103,103,128,253,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,240,253,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,211,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,252,252,253,252,224,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,139,139,139,128,28,28,28,40,215,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,151,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,240,252,244,169,131,57,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,253,252,252,252,223,197,159,85,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,253,252,252,252,253,252,252,252,250,150,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,126,225,235,253,255,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,103,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,255,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,32,0,38,172,252,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,228,198,234,252,252,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,28,28,28,28,28,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,121,121,19,96,220,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,185,241,248,253,253,243,251,253,251,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,186,244,253,253,254,253,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,188,253,253,249,173,111,39,89,241,253,253,240,64,0,0,0,0,0,0,0,0,0,0,0,0,0,22,187,253,253,246,106,0,0,0,25,225,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,20,188,253,253,245,108,0,0,0,23,198,253,253,242,98,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,245,109,0,0,0,84,207,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,121,27,42,161,161,206,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,197,253,253,253,253,248,240,252,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,253,64,57,241,253,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,230,255,255,178,128,0,0,171,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,13,13,5,0,0,116,253,253,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,176,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,152,233,254,253,254,253,234,152,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,252,192,151,151,151,213,252,253,212,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,192,82,0,0,0,0,0,0,0,123,223,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,0,0,0,0,0,0,0,0,0,20,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,213,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,142,253,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,51,173,253,254,233,183,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,233,252,233,151,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,212,142,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,203,254,253,173,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,71,192,253,232,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,243,40,0,0,0,0,0,0,0,0,52,71,21,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,203,0,0,0,0,0,0,0,0,0,112,252,223,162,102,20,0,0,0,0,0,0,21,102,163,243,253,212,40,0,0,0,0,0,0,0,0,0,0,41,203,243,255,253,254,253,254,213,254,213,254,253,254,213,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,40,112,151,151,151,253,252,192,151,151,151,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,203,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,0,0,0,0,203,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,203,0,0,0,0,203,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,203,0,0,0,0,102,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,162,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,233,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,131,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,50,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,91,51,51,51,51,51,132,254,253,11,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,253,252,253,252,253,252,253,252,213,212,82,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,203,243,254,253,254,253,254,253,254,253,255,112,0,0,0,0,0,0,0,0,0,0,0,0,112,192,131,50,0,40,50,50,50,172,253,252,253,252,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,146,181,254,254,254,255,185,146,137,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,202,253,253,253,253,253,253,253,253,253,237,97,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,234,59,32,32,32,32,102,179,251,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,229,210,0,0,0,0,0,0,0,62,239,253,243,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,97,0,0,0,0,0,0,0,0,68,238,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,191,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,93,138,75,0,0,0,0,0,0,78,251,253,43,0,0,0,0,0,0,0,0,0,0,0,0,39,179,253,237,242,250,238,231,108,14,0,0,199,253,192,3,0,0,0,0,0,0,0,0,0,0,0,0,102,253,225,22,41,164,253,253,253,222,113,86,237,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,164,0,0,10,85,245,253,253,253,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,118,0,0,0,0,9,103,236,253,253,253,253,219,135,242,164,0,0,0,0,0,0,0,0,0,0,184,253,210,0,0,0,0,0,0,93,253,253,253,253,253,253,176,24,0,0,0,0,0,0,0,0,0,0,95,253,246,54,0,0,0,0,23,157,253,253,170,150,150,107,1,0,0,0,0,0,0,0,0,0,0,0,2,148,253,134,33,33,33,132,211,253,227,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,225,253,253,253,253,253,253,198,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,253,253,253,246,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,221,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,243,253,161,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,220,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,253,205,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,132,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,208,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,241,253,215,41,166,249,140,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,253,248,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,253,253,253,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,234,253,253,253,253,253,253,253,249,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,253,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,253,253,253,253,94,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,219,105,105,105,105,105,105,105,105,106,105,105,105,12,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,214,97,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,134,232,253,253,253,239,197,253,253,253,254,253,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,24,29,29,29,97,240,253,253,253,254,253,253,253,231,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,232,253,253,253,253,254,253,233,223,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,253,253,253,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,254,253,244,239,107,90,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,208,251,253,253,254,253,253,253,253,253,222,141,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,104,104,166,253,253,253,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,243,254,254,255,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,236,253,253,242,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,227,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,120,238,253,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,174,253,253,253,253,129,7,0,0,0,0,0,0,0,0,0,0,0,20,102,179,162,15,0,24,30,181,240,253,253,253,249,143,4,0,0,0,0,0,0,0,0,0,0,0,32,212,253,253,253,190,134,226,253,254,253,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,100,243,253,253,253,253,253,253,253,253,255,253,248,163,120,4,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,209,172,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,139,253,253,253,253,253,112,104,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,212,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,0,0,0,0,55,243,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,0,0,0,0,161,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,215,253,0,0,0,0,195,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,254,169,0,0,0,85,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,232,6,0,0,5,197,254,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,253,179,0,0,13,145,253,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,236,105,93,119,222,253,253,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,254,254,254,254,254,254,254,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,152,253,253,253,254,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,46,122,71,144,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,206,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,211,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,120,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,42,144,144,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,192,233,253,253,255,128,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,232,252,252,252,253,252,252,252,253,252,227,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,252,253,252,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,252,252,253,252,231,108,170,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,255,253,154,0,0,156,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,252,252,253,231,51,0,0,73,252,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,252,252,252,252,253,76,0,0,16,181,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,252,191,15,0,0,109,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,145,0,99,253,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,252,252,252,252,238,217,242,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,231,252,252,252,253,252,252,252,154,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,148,252,252,253,252,231,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,237,36,0,0,61,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,57,0,0,13,224,238,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,19,0,0,28,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,222,12,61,79,159,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,235,248,254,253,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,253,254,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,142,195,249,208,255,254,254,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,9,171,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,245,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,235,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,238,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,230,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,191,233,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,184,248,253,253,250,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,158,253,253,253,246,249,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,149,25,88,253,253,232,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,235,47,0,4,166,253,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,234,240,181,43,0,0,46,253,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,25,0,0,0,0,29,253,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,80,131,131,180,253,254,221,38,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,101,228,253,253,253,253,253,254,253,253,215,145,104,38,1,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,253,253,253,254,253,253,253,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,7,207,253,244,123,50,213,253,253,147,112,185,206,249,253,253,249,122,0,0,0,0,0,0,0,0,0,0,38,253,253,129,0,77,251,253,211,0,0,0,0,43,89,140,85,24,0,0,0,0,0,0,0,0,0,0,38,253,253,112,80,231,253,243,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,240,253,248,248,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,243,147,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,221,253,211,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,56,146,155,155,193,236,155,155,71,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,122,254,254,254,254,254,254,254,254,254,242,161,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,254,254,219,189,189,189,205,254,254,254,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,9,82,164,132,35,16,0,0,0,9,80,207,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,246,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,240,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,217,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,223,254,210,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,217,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,212,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,252,254,180,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,233,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,107,173,255,206,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,107,171,253,253,249,252,153,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,47,224,253,253,238,192,71,214,194,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,108,169,253,253,201,105,20,0,0,112,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,169,253,247,195,99,24,0,0,0,12,227,253,66,0,0,0,0,0,0,0,0,0,0,0,0,3,111,218,253,229,114,0,0,0,0,0,13,177,253,186,7,0,0,0,0,0,0,0,0,0,0,0,3,120,253,248,130,30,0,0,0,0,0,36,176,253,236,62,0,0,0,0,0,0,0,0,0,0,0,0,13,253,212,70,0,0,0,0,0,14,50,214,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,105,0,0,0,0,0,42,110,253,253,253,187,9,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,141,25,0,42,87,186,235,223,253,253,232,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,216,192,233,253,238,94,117,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,125,223,253,253,204,154,43,19,210,253,153,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,49,49,17,0,0,162,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,209,253,148,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,189,253,149,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,150,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,246,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,146,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,249,230,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,140,223,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,217,233,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,120,223,239,114,37,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,94,135,238,254,191,42,0,37,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,89,171,254,253,228,103,42,0,0,0,68,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,119,180,129,46,21,0,0,0,0,0,213,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,255,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,234,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,243,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,249,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,255,254,254,254,254,254,216,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,253,253,253,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,54,193,253,253,253,253,253,253,253,253,160,6,0,0,0,0,0,0,0,0,0,0,0,0,0,30,129,225,253,253,253,253,253,253,253,207,182,89,9,0,0,0,0,0,0,0,0,0,0,0,0,0,32,213,253,253,253,253,253,253,253,166,96,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,253,253,178,147,48,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,251,253,250,119,11,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,205,109,160,160,69,42,42,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,253,253,253,253,173,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,253,253,253,253,253,253,253,247,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,158,158,158,158,158,104,68,85,201,253,253,246,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,141,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,35,124,30,30,30,16,0,0,0,0,0,0,130,253,253,188,0,0,0,0,0,0,0,0,0,0,0,4,172,253,253,253,233,106,0,0,0,0,0,96,211,253,253,111,0,0,0,0,0,0,0,0,0,0,0,14,228,253,253,253,224,126,66,66,66,102,183,247,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,49,227,253,253,253,253,253,253,253,253,253,253,253,244,94,15,0,0,0,0,0,0,0,0,0,0,0,0,0,49,181,253,253,253,253,253,253,253,253,253,94,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,67,135,201,253,170,135,36,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,228,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,233,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,153,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,129,213,255,224,141,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,254,254,254,254,254,226,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,209,242,251,128,81,111,208,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,76,108,34,0,0,44,248,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,247,22,0,0,0,0,5,244,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,226,245,13,0,0,0,0,63,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,220,254,91,0,0,0,0,133,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,243,83,13,0,62,230,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,152,253,254,233,225,245,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,187,217,217,187,203,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,220,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,207,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,242,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,121,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,253,253,31,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,184,253,251,111,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,238,253,216,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,240,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,229,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,220,253,253,84,0,6,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,55,28,128,203,98,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,194,253,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,172,200,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,207,5,144,253,248,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,240,253,253,253,231,64,9,180,253,219,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,173,253,253,253,239,99,157,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,253,253,253,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,243,253,253,253,253,253,253,165,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,175,253,253,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,109,31,0,0,0,0,0,0,0,0,63,110,15,0,0,0,0,0,0,0,0,0,0,0,0,0,1,232,252,195,0,0,0,0,0,0,0,73,237,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,195,0,0,0,0,0,0,0,181,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,71,0,0,0,0,0,0,42,221,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,16,191,252,179,0,0,0,0,0,0,0,73,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,179,0,0,0,0,0,0,32,207,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,179,0,0,0,0,0,0,109,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,179,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,180,0,0,0,0,0,0,255,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,55,0,42,73,155,73,73,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,232,252,252,56,130,221,253,252,252,252,253,252,221,37,37,37,37,120,0,0,0,0,0,0,0,0,0,73,252,252,252,221,221,252,253,252,252,252,253,252,252,252,253,252,252,168,0,0,0,0,0,0,0,0,47,233,253,253,253,253,253,253,255,222,160,253,255,253,253,253,255,253,175,62,0,0,0,0,0,0,0,0,109,252,252,252,252,252,241,179,35,25,37,252,253,252,200,179,35,35,10,0,0,0,0,0,0,0,0,0,109,252,252,252,252,241,102,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,252,97,0,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,83,0,0,0,0,0,37,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,252,210,0,0,0,0,0,0,37,252,253,252,247,217,0,0,0,0,0,0,0,0,0,0,0,0,94,215,112,31,0,0,0,0,0,0,11,154,253,252,226,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,255,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,254,253,254,253,198,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,254,253,254,253,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,84,196,253,251,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,255,253,226,56,0,0,254,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,168,0,0,0,139,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,254,196,0,0,0,0,85,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,196,28,0,0,0,0,28,196,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,169,0,0,0,0,0,0,169,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,168,0,0,0,0,0,0,168,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,0,0,0,0,0,0,29,197,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,0,0,0,0,0,0,85,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,0,0,0,0,0,0,141,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,114,0,0,0,57,168,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,254,253,254,253,254,253,254,253,254,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,251,253,251,253,251,253,251,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,254,253,254,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,83,253,251,253,251,84,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,125,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,128,252,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,128,244,254,254,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,196,254,254,254,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,139,254,254,254,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,193,254,254,254,231,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,187,225,254,254,241,152,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,222,254,254,254,109,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,246,254,254,238,155,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,180,246,254,254,170,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,215,254,254,236,91,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,111,249,254,236,158,50,0,0,40,80,184,184,184,184,173,50,0,0,0,0,0,0,0,0,0,0,0,142,254,254,237,66,0,0,75,177,235,254,254,254,254,255,254,251,82,0,0,0,0,0,0,0,0,0,0,249,254,254,207,17,14,147,238,254,254,254,254,254,254,254,254,254,205,0,0,0,0,0,0,0,0,0,165,253,254,170,69,148,194,254,254,254,254,254,254,254,254,254,254,254,163,0,0,0,0,0,0,0,0,0,242,254,254,164,195,254,254,254,254,254,254,254,254,254,254,255,252,221,45,0,0,0,0,0,0,0,0,0,116,254,254,254,254,254,254,254,254,254,254,254,254,254,252,221,96,0,0,0,0,0,0,0,0,0,0,0,0,169,247,254,254,254,254,254,254,254,245,241,150,111,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,238,248,248,204,184,117,117,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,168,169,225,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,56,0,0,168,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,0,0,198,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,114,0,85,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,169,0,0,0,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,168,0,0,0,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,196,169,168,0,0,0,57,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,197,251,196,28,0,0,0,0,0,168,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,114,0,0,0,0,0,29,197,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,138,0,0,0,0,0,0,85,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,226,56,0,0,0,0,0,0,141,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,168,0,0,0,0,0,0,114,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,84,0,0,0,0,0,57,85,197,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,28,0,0,0,114,169,224,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,198,85,85,197,254,253,254,253,226,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,253,251,253,251,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,254,253,226,168,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,83,139,251,253,138,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,214,255,254,218,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,161,244,253,253,253,253,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,249,253,253,210,196,223,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,186,253,253,253,215,26,0,11,131,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,213,253,253,181,124,28,0,0,0,100,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,234,216,151,10,0,0,0,0,59,235,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,15,0,0,0,0,4,57,239,253,232,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,232,107,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,243,253,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,69,230,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,205,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,199,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,246,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,228,228,222,100,4,0,0,0,0,0,7,231,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,212,253,253,253,184,108,42,0,0,37,167,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,108,236,253,253,253,240,218,218,237,253,142,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,210,205,231,253,253,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,8,93,190,253,217,192,76,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,224,140,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,122,64,147,224,192,73,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,209,0,0,4,132,247,197,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,212,0,0,0,0,73,242,224,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,138,0,0,0,0,0,30,128,217,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,235,55,0,0,0,0,0,0,0,161,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,109,0,0,0,0,0,0,0,0,20,220,146,0,0,0,0,0,0,0,0,0,0,0,0,0,5,219,254,25,0,0,0,0,0,0,0,0,0,118,191,3,0,0,0,0,0,0,0,0,0,0,0,0,156,254,162,3,0,0,0,0,0,0,0,0,0,102,254,28,0,0,0,0,0,0,0,0,0,0,0,0,250,249,58,0,0,0,0,0,0,0,0,0,0,47,254,101,0,0,0,0,0,0,0,0,0,0,0,80,253,188,0,0,0,0,0,0,0,0,0,0,0,84,254,28,0,0,0,0,0,0,0,0,0,0,9,207,254,69,0,0,0,0,0,0,0,0,0,0,0,102,233,20,0,0,0,0,0,0,0,0,0,0,29,254,222,17,0,0,0,0,0,0,0,0,0,0,0,153,170,0,0,0,0,0,0,0,0,0,0,0,69,254,117,0,0,0,0,0,0,0,0,0,0,0,71,234,19,0,0,0,0,0,0,0,0,0,0,0,126,254,32,0,0,0,0,0,0,0,0,0,0,48,205,126,0,0,0,0,0,0,0,0,0,0,0,0,111,254,101,0,0,0,0,0,0,0,0,0,20,213,219,27,0,0,0,0,0,0,0,0,0,0,0,0,29,254,197,17,0,0,0,0,0,0,0,58,201,223,36,0,0,0,0,0,0,0,0,0,0,0,0,0,11,185,254,211,95,3,0,0,0,35,163,247,222,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,254,254,227,226,226,226,238,243,167,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,62,130,214,254,254,235,116,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,122,248,255,253,236,110,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,237,252,252,253,252,252,252,146,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,156,252,252,252,252,217,216,238,252,252,87,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,229,252,252,252,208,89,0,0,52,107,238,252,144,7,0,0,0,0,0,0,0,0,0,0,0,0,27,229,252,252,252,97,7,0,0,0,9,61,198,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,71,252,252,231,139,9,0,0,0,0,71,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,204,85,85,8,0,5,97,234,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,252,252,220,217,220,252,252,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,4,104,221,252,252,252,252,252,253,252,236,84,218,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,104,131,235,252,194,132,63,10,107,252,252,171,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,115,252,252,245,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,252,252,241,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,252,252,215,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,222,253,252,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,253,243,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,79,200,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,191,254,253,253,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,217,253,254,253,210,246,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,222,254,245,147,35,12,98,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,239,66,0,0,49,196,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,242,62,0,0,20,203,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,235,253,87,0,0,54,200,253,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,238,67,138,181,248,253,253,234,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,254,254,254,254,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,153,242,253,253,254,253,127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,234,254,241,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,236,253,152,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,211,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,218,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,138,253,253,238,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,222,254,254,147,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,158,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,7,49,130,240,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,37,136,136,168,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,2,34,213,253,253,253,253,253,253,253,253,253,246,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,253,247,228,228,189,105,105,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,213,253,253,233,222,134,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,229,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,157,253,253,240,89,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,204,253,253,253,174,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,146,232,253,253,253,202,186,86,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,185,233,253,253,253,253,202,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,146,199,253,253,253,161,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,169,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,147,85,0,0,0,0,0,0,205,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,250,230,230,230,169,230,230,249,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,253,253,253,253,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,96,253,253,253,253,253,253,253,253,253,253,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,24,129,214,253,253,253,156,90,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,200,232,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,255,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,130,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,247,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,254,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,254,254,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,221,254,254,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,254,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,233,254,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,254,255,254,130,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,220,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,250,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,233,254,254,244,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,172,254,243,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,82,164,190,159,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,153,232,254,254,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,224,254,254,254,254,254,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,254,254,236,178,106,236,254,247,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,183,26,0,0,85,253,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,140,147,12,0,0,0,0,236,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,238,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,94,209,254,254,241,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,122,199,254,254,254,254,254,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,209,247,254,254,254,254,254,254,238,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,246,214,209,254,254,196,53,53,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,155,162,15,0,208,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,243,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,251,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,198,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,244,255,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,213,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,232,222,211,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,89,244,253,252,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,253,252,252,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,209,252,252,253,235,227,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,244,252,252,252,190,60,80,252,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,245,126,53,0,7,212,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,227,174,58,0,0,0,70,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,70,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,236,252,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,191,252,252,168,2,11,116,116,116,63,64,116,199,146,0,0,0,0,0,0,0,0,0,0,0,7,160,201,255,253,253,253,253,255,253,253,253,253,255,253,253,161,0,0,0,0,0,0,0,0,0,0,0,91,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,252,252,252,210,161,139,98,88,56,46,45,45,29,0,0,0,0,0,0,0,0,0,0,0,131,252,252,190,137,54,22,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,144,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,159,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,246,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,88,213,255,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,89,205,253,253,197,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,202,253,251,200,123,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,209,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,253,253,121,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,186,253,221,103,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,192,253,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,192,253,249,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,249,123,0,33,42,42,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,245,253,246,177,177,236,253,253,250,164,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,194,253,253,253,253,253,253,253,253,253,253,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,193,76,41,41,148,207,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,251,130,9,0,0,0,0,18,206,253,217,24,0,0,0,0,0,0,0,0,0,0,0,0,58,252,253,137,66,0,0,0,0,0,0,1,153,253,220,26,0,0,0,0,0,0,0,0,0,0,0,0,171,253,243,26,0,0,0,0,0,0,0,82,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,223,19,0,0,0,0,0,0,22,153,253,244,57,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,141,34,0,0,46,66,66,204,253,246,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,164,253,253,228,201,201,238,253,253,253,211,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,188,253,253,253,253,253,253,253,161,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,122,193,253,253,253,217,91,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,85,85,85,85,86,85,85,85,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,252,252,253,252,252,252,221,198,72,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,242,223,223,145,225,223,223,223,223,225,249,233,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,74,0,0,0,0,0,0,0,0,0,146,252,239,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,219,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,233,86,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,123,215,253,74,0,4,29,29,76,59,41,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,165,252,252,253,152,140,153,252,253,252,141,99,0,0,0,0,0,0,0,0,0,0,0,26,113,113,255,253,253,253,253,255,253,228,140,140,79,0,0,0,0,0,0,0,0,0,0,0,0,0,76,231,252,252,253,252,252,252,252,168,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,165,233,252,253,201,195,102,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,110,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,190,252,253,222,217,217,156,73,176,217,73,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,154,217,247,252,252,253,252,252,252,253,231,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,128,252,253,252,252,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,220,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,217,233,252,241,179,119,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,161,232,252,253,220,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,206,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,252,182,181,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,128,252,253,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,253,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,191,252,253,179,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,237,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,129,253,255,222,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,73,217,247,252,252,180,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,161,232,252,236,174,71,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,231,108,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,222,252,253,253,229,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,253,253,253,251,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,221,253,253,253,253,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,253,253,253,253,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,249,253,253,253,230,65,144,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,230,253,253,253,185,58,0,8,188,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,229,36,0,0,0,176,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,138,0,0,0,0,176,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,187,11,0,0,0,14,196,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,71,0,0,0,0,150,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,38,0,0,14,53,197,253,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,54,46,150,196,253,253,253,253,247,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,210,253,253,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,249,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,216,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,160,245,253,253,253,253,250,146,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,253,253,218,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,149,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,12,0,0,0,0,0,74,188,254,254,140,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,236,253,253,229,254,202,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,232,254,196,51,15,193,253,182,19,137,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,196,253,163,5,0,0,8,104,249,240,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,248,25,0,0,0,0,0,167,254,255,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,175,0,0,0,0,0,43,244,253,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,193,0,0,0,0,35,232,253,235,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,73,0,0,97,242,253,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,255,254,254,254,255,251,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,214,232,253,253,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,236,253,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,254,144,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,247,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,216,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,224,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,245,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,255,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,208,253,199,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,249,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,204,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,123,253,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,100,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,186,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,254,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,206,254,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,224,61,0,0,0,0,27,49,49,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,248,254,159,0,0,0,18,176,233,254,254,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,77,0,25,132,239,254,254,254,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,16,244,254,174,10,131,242,254,254,225,158,115,142,251,252,50,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,171,170,254,254,253,161,17,0,0,3,232,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,254,254,254,254,79,0,0,0,58,160,254,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,199,255,254,254,254,156,40,39,105,188,250,254,249,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,240,254,254,254,254,254,254,254,254,252,222,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,254,254,254,254,254,208,134,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,177,29,29,60,125,120,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,17,25,25,124,145,243,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,106,37,43,100,157,222,253,253,253,253,220,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,253,254,253,253,253,253,216,205,101,8,0,0,0,0,0,0,0,0,0,0,0,0,0,15,153,240,253,253,224,193,193,175,72,72,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,170,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,135,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,200,253,253,186,98,98,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,254,228,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,250,253,253,253,253,253,254,253,234,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,251,202,17,0,0,70,249,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,245,247,163,0,0,0,0,0,145,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,73,0,0,0,0,0,0,145,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,218,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,130,254,253,225,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,86,86,86,86,86,86,189,226,253,254,204,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,253,253,253,253,253,253,253,203,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,35,144,144,144,144,144,144,144,29,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,255,254,244,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,223,119,233,222,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,255,191,21,0,53,238,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,88,0,0,0,104,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,243,186,0,0,0,0,42,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,125,0,0,0,0,0,181,109,125,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,63,0,0,0,0,0,130,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,243,0,0,0,0,0,0,47,233,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,0,0,0,0,0,0,27,233,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,105,0,0,0,0,21,150,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,187,244,99,37,37,47,213,254,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,253,254,253,254,253,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,115,145,166,73,115,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,244,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,243,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,255,121,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,37,219,253,253,253,159,136,136,136,136,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,253,253,253,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,218,253,248,228,247,253,253,245,241,180,105,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,218,253,253,122,0,75,99,99,65,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,218,253,247,131,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,253,247,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,210,186,150,45,93,186,90,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,192,253,253,253,241,236,253,253,253,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,70,179,179,154,143,197,233,237,253,208,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,36,135,198,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,237,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,217,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,100,197,248,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,202,253,253,253,253,118,3,0,0,0,0,0,0,0,0,0,0,0,0,0,6,58,112,58,41,41,236,248,253,253,253,218,100,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,196,253,248,246,244,253,253,253,221,100,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,141,253,253,253,253,165,99,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,155,253,253,253,253,253,255,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,252,252,252,252,252,252,253,252,247,240,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,97,236,252,252,183,158,158,158,208,253,252,252,252,252,233,226,83,0,0,0,0,0,0,0,0,0,0,0,149,252,252,153,11,0,0,0,21,39,39,188,252,252,252,252,205,0,0,0,0,0,0,0,0,0,0,0,240,252,153,11,0,0,0,0,0,0,0,20,53,53,165,252,239,56,0,0,0,0,0,0,0,0,0,0,240,252,67,0,0,0,0,0,0,0,0,20,54,40,43,235,225,0,0,0,0,0,0,0,0,0,0,0,240,252,227,58,0,0,0,0,0,0,0,94,252,231,45,146,203,56,0,0,0,0,0,0,0,0,0,0,155,252,252,227,56,0,0,0,0,0,0,108,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,45,230,252,252,230,56,14,6,8,14,140,241,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,252,252,252,252,183,196,253,252,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,165,253,253,253,253,253,255,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,34,145,145,145,146,19,102,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,142,252,232,69,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,231,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,210,210,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,224,100,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,160,242,253,253,253,215,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,112,253,253,253,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,41,165,252,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,131,253,255,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,253,253,177,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,188,254,254,225,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,91,237,253,253,204,24,0,0,0,0,0,0,0,12,67,67,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,173,12,0,0,0,0,53,100,186,210,218,253,161,0,0,0,0,0,0,0,0,0,16,157,253,253,236,77,14,17,23,133,210,243,249,253,253,233,212,87,6,0,0,0,0,0,0,0,0,71,227,253,253,253,185,166,204,231,253,255,253,253,200,126,88,8,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,204,136,55,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,245,242,223,99,22,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,209,165,99,99,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,237,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,249,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,235,241,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,246,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,251,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,202,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,233,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,159,159,159,159,159,159,159,92,63,63,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,254,254,254,254,254,254,254,254,232,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,150,163,163,163,163,163,163,163,180,254,254,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,15,236,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,249,248,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,49,49,54,214,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,121,207,207,229,254,254,254,254,254,213,48,7,0,0,0,0,0,0,0,0,0,0,0,0,0,9,148,253,254,254,254,254,254,254,254,254,254,254,254,197,47,0,0,0,0,0,0,0,0,0,0,0,51,189,254,254,234,178,115,134,226,254,252,182,115,155,240,254,245,67,0,0,0,0,0,0,0,0,0,0,236,254,216,91,29,10,124,226,254,253,122,0,0,0,35,156,254,215,16,0,0,0,0,0,0,0,0,0,228,254,224,169,177,254,254,254,231,112,0,0,0,0,0,14,153,254,125,0,0,0,0,0,0,0,0,0,99,235,254,254,254,254,197,113,16,0,0,0,0,0,0,0,51,254,212,0,0,0,0,0,0,0,0,0,0,29,94,130,57,57,2,0,0,0,0,0,0,0,0,0,3,218,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,195,254,254,255,221,118,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,208,234,246,253,253,253,253,253,253,230,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,249,253,253,253,253,253,166,159,237,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,8,56,127,219,253,253,253,253,252,198,173,18,48,196,253,190,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,253,228,204,80,0,0,0,9,189,253,116,0,0,0,0,0,0,0,0,0,0,0,30,216,253,253,253,248,128,28,0,0,0,0,0,136,253,253,124,0,0,0,0,0,0,0,0,0,0,0,29,214,253,253,126,80,0,0,0,0,0,0,0,133,253,242,123,0,0,0,0,0,0,0,0,0,0,0,2,100,143,73,1,0,0,0,0,0,0,0,81,252,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,231,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,200,247,253,182,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,148,253,253,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,28,43,167,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,70,144,144,183,253,253,253,253,253,253,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,212,253,253,253,253,253,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,147,241,250,253,197,253,253,253,253,253,253,253,253,253,253,61,0,0,0,0,0,0,0,0,0,0,0,84,240,253,253,253,153,186,253,253,253,237,155,34,34,90,170,112,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,253,253,253,253,197,154,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,253,253,253,253,253,153,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,253,253,250,225,96,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,116,116,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,219,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,198,242,254,254,223,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,149,223,254,251,175,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,254,71,10,210,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,175,1,27,249,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,64,133,31,0,147,254,250,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,246,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,254,243,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,221,254,210,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,254,222,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,216,254,254,254,215,131,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,185,254,254,254,254,254,254,254,148,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,157,75,107,188,254,254,255,215,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,48,75,1,0,0,2,55,194,254,254,211,151,238,245,245,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,191,251,254,254,254,230,159,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,194,159,72,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,118,246,66,0,95,73,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,238,185,252,254,226,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,43,167,243,254,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,254,254,254,254,254,254,254,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,254,248,147,172,254,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,244,244,174,96,25,37,229,254,254,250,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,242,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,254,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,17,117,195,250,254,254,254,138,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,254,254,254,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,234,254,254,254,254,254,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,241,147,22,16,209,254,251,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,108,195,188,31,0,0,15,218,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,181,254,254,229,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,152,246,254,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,27,0,0,0,51,165,226,254,254,255,254,208,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,229,212,212,212,245,254,254,254,254,254,129,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,254,254,254,254,254,254,228,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,232,254,254,254,254,254,254,209,144,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,89,254,254,254,234,146,139,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,233,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,253,195,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,253,243,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,161,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,180,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,232,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,231,253,253,120,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,161,253,253,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,243,253,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,253,172,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,244,253,253,233,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,85,248,253,246,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,240,253,247,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,241,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,194,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,240,195,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,120,130,73,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,162,253,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,83,235,253,237,123,173,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,120,231,253,253,186,13,0,125,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,179,253,253,253,125,14,0,13,238,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,241,37,0,0,125,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,210,210,173,59,0,0,18,234,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,190,253,253,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,174,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,244,253,227,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,169,243,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,75,75,75,59,0,57,188,253,253,226,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,16,205,234,253,253,253,243,205,242,253,253,253,129,81,81,81,81,42,0,0,0,0,0,0,0,0,0,5,160,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,26,0,0,0,0,0,0,0,0,0,120,253,253,196,95,211,253,253,253,253,253,253,253,253,217,160,45,37,1,0,0,0,0,0,0,0,0,6,239,253,253,235,228,253,253,253,180,60,30,30,30,30,19,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,253,253,253,233,121,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,237,121,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,181,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,5,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,231,255,166,145,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,229,212,254,254,247,156,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,48,9,52,135,213,254,221,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,62,233,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,197,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,185,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,217,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,154,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,249,187,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,222,235,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,161,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,194,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,16,0,0,0,0,0,0,11,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,224,12,0,0,0,0,20,87,208,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,214,171,103,103,110,236,216,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,106,189,254,254,254,216,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,165,253,188,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,243,231,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,233,249,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,247,0,0,23,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,139,11,187,236,246,231,178,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,248,197,253,217,124,227,253,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,224,149,32,0,40,240,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,248,248,21,0,0,0,0,231,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,141,0,0,20,110,247,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,237,84,111,217,253,253,205,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,244,253,253,253,253,216,101,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,146,253,170,135,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,102,185,205,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,185,239,254,245,235,253,198,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,179,188,105,56,42,30,133,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,56,0,0,0,0,0,10,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,187,236,70,0,0,0,0,0,63,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,254,238,42,0,0,0,0,24,205,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,254,139,59,0,0,0,0,79,218,254,254,167,48,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,188,8,0,19,23,38,151,251,245,193,131,250,250,147,2,0,0,0,0,0,0,0,0,0,0,0,122,254,138,8,106,201,232,235,243,142,32,0,0,35,122,245,90,0,0,0,0,0,0,0,0,0,0,0,38,254,254,205,254,254,254,243,66,0,0,0,0,0,0,179,173,0,0,0,0,0,0,0,0,0,0,0,0,78,208,254,255,176,39,0,0,0,0,0,0,0,0,86,233,24,0,0,0,0,0,0,0,0,0,0,0,2,172,254,138,9,0,0,0,0,0,0,0,0,0,86,254,37,0,0,0,0,0,0,0,0,0,0,0,13,254,254,47,0,0,0,0,0,0,0,0,0,0,124,254,37,0,0,0,0,0,0,0,0,0,0,0,104,254,194,16,0,0,0,0,0,0,0,0,0,6,201,216,13,0,0,0,0,0,0,0,0,0,0,0,191,254,60,0,0,0,0,0,0,0,0,0,0,125,254,93,0,0,0,0,0,0,0,0,0,0,0,0,122,254,61,0,0,0,0,0,0,0,0,0,157,245,142,2,0,0,0,0,0,0,0,0,0,0,0,0,104,254,143,0,0,0,0,0,0,0,4,148,248,177,22,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,252,203,85,23,0,0,36,140,225,254,148,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,234,254,254,232,217,217,241,249,222,104,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,73,226,254,243,159,135,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,236,255,194,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,253,242,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,193,253,253,205,202,253,238,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,230,253,196,65,6,3,141,218,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,211,253,233,60,0,0,0,20,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,178,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,242,110,4,0,3,115,125,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,228,253,219,0,0,55,184,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,253,230,42,27,125,232,253,253,253,242,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,158,126,225,253,253,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,253,253,253,194,59,236,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,244,158,76,29,0,186,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,159,253,198,128,0,0,0,0,113,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,3,0,0,0,0,0,229,253,238,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,233,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,242,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,205,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,63,0,0,0,0,0,0,112,188,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,236,27,0,0,0,0,105,253,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,198,212,254,117,5,0,0,0,14,228,254,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,12,207,254,254,118,5,0,0,0,53,223,254,236,102,0,0,0,0,0,0,0,0,0,0,0,0,0,16,188,254,247,56,4,0,0,0,10,207,254,242,83,0,0,0,0,0,0,0,0,0,0,0,0,0,2,138,254,254,132,0,0,0,0,1,163,254,249,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,215,0,0,0,0,0,48,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,235,254,240,58,0,0,0,0,77,232,254,203,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,246,117,0,0,0,0,11,215,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,219,0,0,0,45,50,187,254,254,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,236,122,122,122,253,239,254,254,235,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,254,254,254,254,254,254,254,235,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,173,250,250,188,220,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,156,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,248,254,242,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,222,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,196,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,223,254,254,212,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,254,110,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,75,156,254,254,188,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,226,252,242,167,248,253,222,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,249,229,113,0,0,41,173,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,227,45,0,0,0,0,70,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,114,0,0,0,0,0,70,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,242,243,22,0,0,0,0,71,164,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,168,0,0,0,0,0,214,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,75,0,0,0,0,49,236,253,250,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,69,0,0,0,4,232,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,69,0,0,0,84,253,234,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,113,1,2,84,242,87,123,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,215,253,165,195,242,150,0,115,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,238,201,73,0,0,31,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,230,235,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,250,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,137,146,232,254,255,255,197,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,143,237,253,253,253,247,195,253,253,236,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,214,253,252,148,71,32,29,8,32,245,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,245,93,0,0,0,0,0,0,244,224,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,250,93,0,0,0,0,0,0,32,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,192,0,0,0,0,0,0,3,17,130,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,155,0,0,0,0,0,26,98,216,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,246,87,58,80,110,195,225,253,220,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,242,253,253,246,252,253,253,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,92,92,137,194,253,253,253,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,246,253,232,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,197,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,190,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,223,253,242,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,168,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,235,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,253,212,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,166,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,169,216,122,7,0,0,0,0,197,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,0,0,0,0,197,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,255,253,196,0,0,0,38,222,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,214,28,0,0,85,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,84,0,0,85,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,99,0,0,178,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,225,252,239,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,237,50,176,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,237,253,252,252,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,252,252,253,252,252,245,118,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,223,223,237,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,255,218,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,219,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,164,253,253,253,211,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,218,253,253,253,247,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,172,253,253,253,246,162,0,0,0,12,32,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,245,163,0,0,0,32,177,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,220,253,253,253,197,0,0,0,54,239,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,253,113,0,0,37,189,253,253,185,47,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,253,253,253,190,22,0,16,93,239,253,233,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,253,253,253,140,0,0,99,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,253,253,187,69,35,209,253,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,224,253,253,253,253,226,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,43,125,226,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,228,63,37,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,205,253,229,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,230,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,211,253,225,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,253,84,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,253,254,213,152,71,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,253,252,253,252,253,252,223,122,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,123,203,234,253,254,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,91,213,252,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,175,218,230,255,193,68,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,253,253,253,254,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,213,123,39,39,39,51,196,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,30,0,0,0,0,0,5,139,246,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,247,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,28,58,118,146,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,170,241,253,253,254,220,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,186,252,254,253,253,253,254,250,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,254,248,127,79,17,236,253,213,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,253,190,46,0,0,107,253,198,9,175,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,214,30,0,0,22,235,253,72,0,59,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,136,0,0,61,219,253,205,0,0,59,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,255,89,0,91,255,254,225,12,0,0,0,205,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,242,190,159,249,254,247,51,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,249,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,133,241,181,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,48,48,48,48,48,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,198,214,254,254,254,254,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,241,252,254,255,254,231,218,175,247,236,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,193,171,141,67,24,0,18,220,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,20,6,0,0,0,0,0,63,254,250,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,184,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,191,254,248,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,152,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,59,139,216,254,254,212,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,111,229,254,254,254,254,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,254,254,254,226,149,52,141,254,235,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,231,178,109,35,0,0,1,90,246,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,62,28,0,0,0,0,0,0,0,203,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,217,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,155,223,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,107,144,219,228,254,248,203,17,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,198,197,197,197,197,197,197,171,94,36,0,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,155,155,155,250,218,254,173,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,175,244,215,184,144,144,144,106,229,244,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,147,48,0,0,0,0,0,0,39,230,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,0,0,0,0,0,0,0,1,168,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,31,128,221,207,34,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,86,191,254,254,254,254,254,254,183,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,138,248,254,215,254,156,34,15,100,181,234,213,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,254,239,123,1,0,0,0,0,30,197,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,105,105,71,4,0,0,0,0,0,0,0,106,250,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,166,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,10,0,0,0,0,0,0,0,0,0,0,0,0,2,85,11,0,0,0,0,0,0,0,0,0,0,127,249,9,0,0,0,0,0,0,0,0,0,0,0,0,115,176,8,0,0,0,0,0,0,0,0,0,54,239,80,0,0,0,0,0,0,0,0,0,0,0,0,33,219,10,0,0,0,0,0,0,0,0,0,72,205,209,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,0,0,0,0,0,0,0,0,0,121,246,198,35,0,0,0,0,0,0,0,0,0,0,0,0,0,5,168,137,4,0,0,0,0,0,46,180,239,160,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,96,0,0,0,36,40,231,249,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,139,249,212,145,183,240,204,186,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,154,194,154,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,29,170,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,170,255,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,57,255,255,170,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,141,255,170,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,255,255,170,114,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,141,255,255,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,0,0,0,226,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,198,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,255,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,122,153,231,146,42,0,0,136,255,164,87,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,253,253,247,63,0,182,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,253,253,253,253,253,253,86,0,41,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,253,137,155,210,244,253,132,0,46,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,217,15,0,0,91,249,86,32,219,253,253,194,19,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,158,0,0,0,0,119,92,217,253,253,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,235,58,0,0,18,159,253,253,253,241,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,233,96,110,216,253,253,253,207,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,169,253,253,253,253,253,253,253,253,111,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,253,253,253,253,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,93,173,248,253,253,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,253,253,253,253,243,190,253,253,253,248,112,0,0,0,0,0,0,0,0,0,0,0,0,0,26,193,253,253,253,253,242,111,44,19,193,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,249,80,0,0,0,18,241,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,253,253,210,67,6,7,0,0,50,246,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,245,253,172,8,155,19,0,65,202,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,205,66,245,211,211,238,253,253,253,214,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,252,253,253,253,253,253,253,232,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,253,253,253,253,178,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,102,180,253,253,253,200,123,37,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,218,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,246,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,252,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,234,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,252,253,204,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,252,252,161,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,251,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,249,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,155,155,160,255,156,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,165,210,253,253,254,253,253,254,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,250,254,241,187,89,89,89,209,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,35,28,0,0,0,0,126,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,241,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,249,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,3,2,215,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,195,254,215,182,254,237,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,88,230,254,253,253,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,124,118,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,241,235,80,54,189,254,238,250,246,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,244,48,45,184,253,218,28,214,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,79,26,195,254,213,31,0,68,242,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,232,254,156,236,254,220,28,0,0,0,110,243,233,163,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,254,254,156,29,0,0,0,0,0,107,208,102,0,0,0,0,0,0,0,0,0,0,0,0,0,40,240,253,163,82,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,130,159,159,159,175,248,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,152,218,224,254,254,254,254,254,254,205,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,254,237,163,163,178,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,74,205,221,33,4,0,0,11,178,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,53,0,0,0,8,173,254,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,174,254,248,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,162,250,238,185,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,197,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,247,201,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,230,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,201,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,41,0,0,173,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,213,77,0,6,206,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,77,0,77,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,249,235,135,184,244,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,240,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,206,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,215,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,254,140,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,248,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,237,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,243,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,240,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,239,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,197,0,0,48,125,169,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,245,254,197,6,118,248,254,254,248,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,222,199,254,243,186,187,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,254,121,28,0,135,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,254,142,57,71,231,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,254,254,255,254,254,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,159,69,191,254,255,240,156,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,15,90,176,251,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,69,191,254,254,255,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,146,235,254,254,254,240,174,190,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,11,87,234,254,254,254,153,65,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,162,254,246,180,254,221,111,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,178,41,216,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,249,254,163,14,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,254,228,108,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,172,248,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,35,0,0,0,0,0,50,234,229,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,248,187,14,0,0,0,3,154,254,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,177,129,156,201,207,254,254,199,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,228,254,254,254,254,254,252,229,128,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,47,47,47,47,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,247,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,84,0,0,0,0,0,0,147,197,159,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,84,0,0,0,0,0,51,253,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,84,0,0,0,0,48,191,163,63,223,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,159,0,0,0,0,110,252,0,0,122,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,240,44,0,0,82,240,214,0,0,85,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,156,0,0,169,252,90,0,0,47,240,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,178,4,4,179,253,28,0,0,0,226,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,196,252,128,29,252,196,9,0,0,19,231,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,29,252,168,0,0,0,85,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,252,229,252,168,0,0,0,85,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,238,254,253,253,91,0,7,104,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,252,252,215,169,187,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,224,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,177,252,140,115,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,16,76,135,174,174,250,139,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,47,131,210,254,253,253,253,253,254,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,42,123,157,227,253,253,253,254,217,165,82,127,254,247,39,0,0,0,0,0,0,0,0,0,0,0,0,42,249,253,254,253,253,217,189,81,8,0,16,207,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,3,85,169,120,85,16,7,0,0,0,0,163,253,244,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,241,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,207,253,181,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,184,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,243,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,126,254,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,243,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,244,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,236,253,177,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,255,227,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,244,247,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,83,144,241,169,169,169,160,83,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,214,254,254,254,254,254,254,254,254,247,130,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,205,254,254,229,217,181,191,229,254,254,254,254,243,23,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,128,9,6,0,2,9,61,254,250,127,182,30,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,150,2,0,0,0,0,19,226,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,199,10,0,0,0,0,9,172,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,117,0,0,0,0,9,113,254,254,216,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,31,0,0,0,0,57,254,254,240,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,153,21,0,0,54,237,254,238,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,152,254,233,140,130,223,254,249,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,123,254,254,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,134,254,254,254,241,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,223,254,254,244,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,231,254,254,199,56,240,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,254,254,170,12,121,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,254,254,171,35,161,254,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,213,146,223,254,254,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,254,254,255,254,232,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,254,254,254,254,232,147,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,234,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,64,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,242,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,164,0,0,0,0,0,0,0,0,0,0,0,1,21,3,0,0,0,0,0,0,0,0,0,0,0,94,254,235,8,0,0,0,0,0,0,0,0,0,0,80,254,132,0,0,0,0,0,0,0,0,0,0,0,81,254,164,0,0,0,0,0,0,0,0,0,0,0,161,254,234,0,0,0,0,0,0,0,0,0,0,3,179,254,74,0,0,0,0,0,0,0,0,0,0,19,225,254,234,0,0,0,0,0,0,0,0,0,0,26,254,254,65,0,0,0,0,0,0,0,0,0,0,56,254,254,219,0,0,0,0,0,0,0,0,0,0,41,254,254,65,0,0,0,0,0,0,0,0,0,0,56,254,254,97,0,0,0,0,0,0,0,0,0,0,126,254,228,15,0,0,0,0,0,0,0,0,0,0,75,254,254,78,51,51,51,51,51,51,51,19,0,0,145,254,219,0,0,0,0,0,0,0,0,0,0,0,155,254,254,254,254,254,254,254,254,254,254,224,205,205,249,254,220,6,1,0,0,0,0,0,0,0,0,0,131,254,254,254,254,254,254,254,254,231,231,217,194,211,254,254,254,254,163,58,0,0,0,0,0,0,0,0,31,143,239,192,139,89,40,40,40,24,24,15,0,71,254,254,173,115,139,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,243,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,203,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,204,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,105,219,253,255,253,156,105,105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,231,252,252,252,253,252,252,252,252,203,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,173,252,252,252,252,252,253,252,252,252,252,252,126,1,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,252,230,132,133,132,210,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,128,24,0,0,0,19,29,226,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,11,213,252,252,252,14,0,0,0,0,0,0,109,204,74,4,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,252,252,14,0,0,0,0,0,0,0,0,0,128,134,55,0,0,0,0,0,0,0,0,0,0,15,252,252,252,125,1,0,0,0,0,0,0,80,195,238,251,252,155,0,0,0,0,0,0,0,0,0,0,13,228,252,252,118,0,0,0,19,45,141,193,245,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,120,252,252,118,0,0,89,192,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,165,253,253,255,253,253,253,253,253,253,154,35,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,252,252,252,253,252,252,252,252,209,113,3,0,0,0,0,0,0,0,0,0,0,0,4,15,128,252,252,252,252,252,252,253,204,88,88,88,26,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,252,230,132,133,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,204,252,252,252,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,252,252,252,252,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,212,213,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,248,248,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,252,252,252,252,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,138,252,252,252,252,252,111,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,128,253,255,253,253,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,198,247,252,252,253,252,252,252,252,252,252,251,101,0,0,0,0,0,0,0,0,0,0,0,0,0,61,232,252,252,252,252,253,252,252,252,252,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,252,252,252,253,252,252,252,188,189,252,252,238,0,0,0,0,0,0,0,0,0,0,0,0,64,241,252,252,252,252,217,186,129,53,53,11,12,84,252,238,0,0,0,0,0,0,0,0,0,0,0,0,21,171,198,108,66,66,31,0,0,0,0,0,0,11,155,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,63,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,238,50,0,0,0,0,0,0,0,0,0,0,0,0,0,96,148,253,168,197,253,255,197,121,121,121,148,253,226,0,0,0,0,0,0,0,0,0,0,0,0,40,219,249,252,252,252,252,252,253,252,252,252,252,252,252,251,156,0,0,0,0,0,0,0,0,0,0,40,152,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,238,0,0,0,0,0,0,0,0,0,0,107,252,252,231,172,81,110,117,172,173,172,244,252,252,252,239,172,93,0,0,0,0,0,0,0,0,0,0,212,252,231,66,0,0,0,0,0,32,193,247,252,252,174,44,0,0,0,0,0,0,0,0,0,0,0,0,240,252,189,54,14,9,54,61,186,219,252,252,252,238,52,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,252,193,186,252,252,252,253,252,252,218,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,252,252,252,253,241,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,238,250,252,252,252,252,252,245,107,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,224,252,252,167,119,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,154,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,187,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,205,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,155,0,0,0,0,8,96,147,147,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,155,0,0,0,8,165,254,254,254,211,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,155,0,0,0,99,254,254,231,222,253,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,155,0,0,46,247,251,129,16,0,176,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,216,155,0,0,125,254,188,0,0,0,189,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,184,0,0,237,224,15,0,0,0,246,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,132,70,253,209,0,0,3,184,253,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,240,246,175,254,158,7,60,208,254,254,204,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,241,254,254,235,223,254,254,254,243,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,244,254,254,254,254,234,139,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,242,204,109,62,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,240,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,254,255,254,138,136,136,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,249,253,253,253,253,253,253,253,253,253,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,244,253,253,253,216,216,208,224,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,213,108,20,20,11,29,65,174,253,205,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,112,0,0,0,0,0,10,234,253,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,226,40,0,0,0,48,169,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,168,253,253,152,5,0,5,171,253,253,227,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,236,253,253,200,24,217,253,253,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,253,253,251,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,121,253,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,228,253,253,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,144,252,253,253,231,187,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,217,253,253,253,182,53,7,217,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,220,253,253,253,164,2,0,0,98,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,241,109,0,0,0,0,109,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,147,0,0,0,0,0,213,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,174,64,0,0,0,0,213,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,232,253,253,252,201,127,111,201,245,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,213,253,253,253,253,253,253,253,209,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,67,193,253,253,253,253,154,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,255,217,125,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,249,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,251,218,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,253,253,66,53,149,224,253,241,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,132,5,0,0,45,223,253,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,250,253,223,29,0,0,0,0,46,223,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,250,253,253,125,0,0,0,0,0,0,127,253,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,178,7,0,0,0,0,0,0,28,225,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,162,0,0,0,0,0,0,0,0,127,253,249,88,0,0,0,0,0,0,0,0,0,0,0,31,244,253,253,128,0,0,0,0,0,0,0,0,33,253,253,210,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,32,0,0,0,0,0,0,0,0,33,253,253,240,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,32,0,0,0,0,0,0,0,0,33,253,253,240,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,32,0,0,0,0,0,0,0,0,33,253,253,217,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,32,0,0,0,0,0,0,0,0,53,253,253,110,0,0,0,0,0,0,0,0,0,0,0,42,246,253,253,116,0,0,0,0,0,0,0,0,163,253,251,96,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,171,4,0,0,0,0,0,19,114,219,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,103,242,253,253,165,43,4,0,5,47,222,253,253,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,239,253,253,253,165,143,169,253,253,253,245,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,233,253,253,253,253,253,253,253,229,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,123,230,253,253,253,253,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,168,254,157,220,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,106,223,253,245,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,171,253,253,243,87,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,253,253,242,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,124,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,253,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,254,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,240,253,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,213,253,253,185,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,209,254,254,249,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,176,253,253,201,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,168,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,230,253,253,130,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,148,234,253,232,83,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,170,253,253,155,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,155,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,236,110,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,209,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,237,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,241,253,253,153,192,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,167,254,253,253,253,253,238,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,253,253,253,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,234,254,255,212,123,0,124,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,241,253,140,14,0,0,111,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,62,0,0,0,23,217,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,151,253,196,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,204,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,137,222,254,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,204,253,254,253,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,254,232,138,180,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,169,87,23,0,77,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,73,27,0,0,0,0,0,0,95,254,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,72,0,0,0,0,16,127,244,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,245,253,69,37,19,29,102,196,253,253,179,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,254,253,226,241,253,254,253,179,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,233,253,254,253,253,253,253,254,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,238,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,239,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,218,250,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,210,253,25,0,0,0,0,0,0,0,0,0,59,183,221,221,202,29,0,0,0,0,0,0,0,0,0,97,254,198,5,0,0,0,0,0,0,0,9,168,254,254,254,254,255,221,19,0,0,0,0,0,0,0,0,144,253,77,0,0,0,0,0,0,0,0,143,253,219,163,77,77,184,253,33,0,0,0,0,0,0,0,0,144,253,44,0,0,0,0,0,0,0,115,240,171,21,0,0,0,155,253,33,0,0,0,0,0,0,0,0,144,253,111,1,0,0,0,0,0,10,254,160,25,0,0,0,0,155,253,33,0,0,0,0,0,0,0,0,72,253,253,83,0,0,0,0,17,190,247,60,0,0,0,0,32,219,253,33,0,0,0,0,0,0,0,0,22,188,253,225,155,0,0,0,78,253,48,0,0,0,0,70,168,253,154,7,0,0,0,0,0,0,0,0,0,35,233,253,249,194,21,10,83,253,0,0,0,11,36,225,253,155,6,0,0,0,0,0,0,0,0,0,0,0,82,160,253,253,253,236,228,253,93,122,155,250,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,90,237,253,253,253,253,254,253,253,253,253,192,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,133,143,143,239,254,176,143,133,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,156,255,254,186,194,156,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,228,253,249,250,253,253,253,245,207,88,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,240,100,60,66,78,93,174,223,253,253,196,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,190,198,0,0,0,0,0,0,12,64,184,250,245,175,36,0,0,0,0,0,0,0,0,0,0,0,0,0,48,34,0,0,0,0,0,0,0,0,0,107,230,254,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,194,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,238,211,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,165,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,245,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,171,255,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,180,247,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,235,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,254,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,72,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,178,162,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,104,7,0,0,0,0,0,0,10,13,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,143,0,25,25,42,145,145,227,252,114,3,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,211,157,253,252,252,252,252,252,252,238,20,0,0,0,0,0,0,0,0,0,0,0,0,33,229,252,252,252,252,252,253,252,252,252,217,169,84,52,0,0,0,0,0,0,0,0,0,0,0,0,9,155,252,252,252,252,252,252,253,252,214,169,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,252,252,252,175,60,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,252,228,196,252,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,252,252,180,12,139,104,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,211,109,109,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,252,252,252,242,241,237,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,253,253,253,253,255,253,219,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,231,252,246,228,228,228,228,228,253,252,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,96,73,0,0,0,0,0,96,185,252,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,188,253,252,242,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,205,58,65,126,205,248,252,253,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,227,244,252,252,252,252,202,87,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,252,252,252,205,143,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,212,252,160,34,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,164,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,202,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,201,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,248,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,228,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,216,216,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,250,253,230,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,246,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,253,251,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,216,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,253,219,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,155,251,254,188,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,172,253,253,166,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,162,253,253,186,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,253,253,220,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,168,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,221,73,0,0,0,0,0,64,67,153,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,89,0,0,0,0,27,143,252,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,158,1,0,0,0,76,213,253,253,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,73,216,253,253,253,253,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,186,253,229,31,0,0,0,198,254,253,253,207,112,230,253,209,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,237,131,122,122,237,254,253,210,238,237,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,253,253,253,253,255,253,253,253,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,26,130,253,253,253,253,253,253,254,253,253,253,203,137,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,143,196,253,253,253,254,224,143,85,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,255,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,237,248,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,235,246,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,182,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,243,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,233,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,253,178,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,160,253,202,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,253,172,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,236,237,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,171,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,236,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,242,166,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,238,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,198,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,190,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,186,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,176,244,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,182,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,233,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,221,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,255,204,9,0,0,0,0,22,43,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,89,0,0,0,0,64,213,252,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,162,232,32,0,6,22,189,231,178,202,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,211,0,0,91,252,216,47,0,64,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,124,0,9,204,164,18,0,0,108,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,107,0,145,243,79,0,0,101,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,217,146,247,210,85,103,190,247,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,152,253,252,252,252,252,253,236,82,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,237,252,252,226,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,235,42,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,242,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,243,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,241,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,255,254,245,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,239,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,154,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,105,105,211,175,105,105,105,106,105,105,105,105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,254,253,253,253,253,222,130,4,0,0,0,0,0,0,0,0,0,0,0,0,67,238,238,247,238,252,250,238,239,238,238,238,251,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,127,110,0,0,0,0,0,224,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,146,250,253,213,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,253,253,214,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,163,253,253,213,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,117,239,254,253,248,163,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,45,207,253,253,254,253,152,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,223,253,253,253,253,254,253,253,204,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,176,254,254,254,254,236,149,150,149,218,254,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,221,253,210,114,44,36,0,0,0,41,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,89,26,0,0,0,0,0,0,6,166,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,224,66,0,0,0,0,0,0,58,238,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,74,0,0,0,0,13,66,227,253,244,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,74,0,0,0,0,184,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,137,90,143,239,239,255,253,194,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,204,253,253,253,253,253,236,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,210,253,253,253,164,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,158,132,62,185,254,255,255,185,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,168,253,224,253,253,253,253,253,253,178,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,241,253,253,253,253,195,139,139,247,253,197,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,180,50,0,0,71,253,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,226,86,236,37,0,0,0,7,193,253,245,91,0,0,0,0,0,0,0,0,0,0,0,0,21,154,251,251,114,2,21,0,0,0,0,0,93,229,253,186,2,0,0,0,0,0,0,0,0,0,0,0,65,253,253,137,0,0,0,0,0,0,0,0,0,104,253,253,37,0,0,0,0,0,0,0,0,0,0,2,186,253,250,64,0,0,0,0,0,0,0,0,0,104,253,253,37,0,0,0,0,0,0,0,0,0,0,106,253,253,182,0,0,0,0,0,0,0,0,0,0,104,253,253,37,0,0,0,0,0,0,0,0,0,0,137,253,253,27,0,0,0,0,0,0,0,0,0,0,104,253,253,61,0,0,0,0,0,0,0,0,0,61,247,253,150,6,0,0,0,0,0,0,0,0,0,0,22,250,253,145,0,0,0,0,0,0,0,0,0,177,253,231,32,0,0,0,0,0,0,0,0,0,0,0,9,249,253,136,0,0,0,0,0,0,0,0,9,200,253,210,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,37,0,0,0,0,0,0,0,0,38,253,253,168,0,0,0,0,0,0,0,0,0,0,0,67,207,253,196,7,0,0,0,0,0,0,0,0,96,253,253,206,0,0,0,0,0,0,0,0,0,0,3,182,253,236,40,0,0,0,0,0,0,0,0,0,119,253,253,221,17,0,0,0,0,0,0,0,0,26,178,253,253,193,0,0,0,0,0,0,0,0,0,0,23,225,253,253,222,115,104,24,0,0,0,97,128,227,253,253,212,21,0,0,0,0,0,0,0,0,0,0,0,82,222,253,253,253,253,167,240,249,249,253,253,253,250,147,21,0,0,0,0,0,0,0,0,0,0,0,0,0,34,151,253,253,253,253,253,253,253,253,253,226,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,37,138,253,253,154,145,145,136,37,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,139,253,131,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,164,221,252,252,253,205,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,171,253,252,233,205,126,144,247,189,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,143,211,252,252,243,110,7,0,0,0,63,180,63,0,0,0,0,0,0,0,0,0,0,0,0,0,45,219,252,252,226,147,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,255,239,158,35,0,0,0,0,0,0,61,148,74,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,239,68,0,0,0,0,0,0,0,36,253,252,126,0,0,0,0,0,0,0,0,0,0,0,8,181,252,252,17,0,0,0,18,39,127,180,232,241,253,245,116,0,0,0,0,0,0,0,0,0,0,0,64,247,252,252,170,169,169,169,239,253,252,252,252,252,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,188,252,252,253,252,252,252,252,165,252,252,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,106,150,212,211,115,106,18,25,201,253,243,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,245,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,170,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,138,252,174,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,104,197,159,140,198,227,197,103,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,107,207,242,114,28,0,225,233,236,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,89,0,0,0,0,38,50,205,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,79,0,0,0,0,0,0,0,169,253,0,0,0,0,0,0,0,0,0,0,0,0,0,147,249,252,179,27,0,0,0,0,0,0,0,19,196,252,0,0,0,0,0,0,0,0,0,0,0,7,135,253,252,176,19,0,0,0,0,0,0,0,0,88,252,141,0,0,0,0,0,0,0,0,0,0,7,131,252,253,179,19,0,0,0,0,0,0,0,0,57,234,252,112,0,0,0,0,0,0,0,0,0,0,135,252,252,112,12,0,0,0,0,0,0,0,0,63,178,252,236,50,0,0,0,0,0,0,0,0,0,86,253,253,112,0,0,0,0,0,0,0,0,0,63,255,253,228,47,0,0,0,0,0,0,0,0,0,38,219,252,242,74,0,0,0,0,0,0,0,0,73,240,253,223,52,0,0,0,0,0,0,0,0,0,0,144,252,252,114,0,0,0,0,0,0,0,98,197,234,252,133,37,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,7,29,29,169,243,252,217,84,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,161,0,63,140,165,252,252,253,252,141,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,253,253,253,255,253,253,253,253,141,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,186,252,252,253,252,186,74,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,149,195,56,55,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,85,197,85,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,253,251,253,196,0,0,0,0,0,0,169,56,0,0,0,0,0,0,0,0,0,0,255,253,254,253,254,253,198,253,254,253,254,253,0,0,29,197,254,139,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,138,28,83,253,251,253,251,0,0,197,251,253,251,0,0,0,0,0,0,0,0,0,0,198,253,254,253,254,253,0,0,169,225,254,253,85,197,254,253,254,253,0,0,0,0,0,0,0,0,0,0,28,196,253,251,253,251,0,0,0,56,253,251,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,85,85,0,0,254,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,169,168,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,254,253,254,253,254,253,254,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,253,251,253,251,253,251,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,168,0,0,198,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,225,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,172,93,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,195,254,212,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,248,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,238,254,205,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,228,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,236,254,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,168,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,229,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,178,254,255,175,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,168,237,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,240,255,254,255,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,234,254,254,254,168,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,209,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,245,254,254,248,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,176,254,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,241,254,254,244,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,168,254,254,247,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,214,254,254,194,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,138,222,253,253,128,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,252,252,252,252,253,236,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,153,215,110,69,69,69,222,252,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,224,116,21,0,0,0,0,97,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,96,2,0,0,0,0,0,128,252,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,187,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,112,246,253,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,188,252,252,192,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,244,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,45,191,233,253,255,253,253,253,253,255,253,222,138,34,22,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,252,252,253,223,206,206,206,207,236,252,252,252,245,161,65,0,0,0,0,0,0,0,0,0,0,169,252,252,195,130,69,25,0,0,0,0,44,69,162,215,253,252,234,118,0,0,0,0,0,0,0,0,0,25,119,77,9,0,0,0,0,0,0,0,0,0,0,21,109,219,252,236,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,74,106,0,0,0,0,0,0,0,0,0,45,253,253,245,73,0,0,0,0,0,0,0,0,0,0,0,60,244,0,0,0,0,0,0,0,0,38,151,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,93,252,123,70,70,13,64,70,91,184,240,252,253,240,100,13,0,0,0,0,0,0,0,0,0,0,0,0,59,244,253,252,252,215,248,253,252,252,252,210,98,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,33,137,168,252,252,253,178,137,43,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,159,254,254,254,254,216,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,253,253,253,253,253,250,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,234,140,44,44,44,68,188,253,246,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,20,119,73,0,0,0,0,0,4,233,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,232,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,3,99,69,0,0,0,0,0,0,0,0,0,232,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,249,80,0,0,0,0,0,0,10,84,245,253,176,0,0,0,0,0,0,0,0,0,0,0,0,7,193,253,211,54,0,0,0,0,0,0,56,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,36,0,0,0,0,0,0,0,104,253,253,166,9,0,0,0,0,0,0,0,0,0,0,0,115,254,254,151,0,0,0,0,0,0,0,37,255,254,254,100,0,0,0,0,0,0,0,0,0,0,0,47,240,253,215,17,0,0,0,0,0,0,0,210,253,253,246,30,0,0,0,0,0,0,0,0,0,0,0,67,253,245,73,0,0,0,0,0,0,0,174,252,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,173,253,126,0,0,0,0,0,0,3,128,252,253,249,106,1,0,0,0,0,0,0,0,0,0,0,0,8,194,253,121,0,0,0,0,0,25,130,253,253,249,155,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,34,0,0,0,0,100,223,254,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,117,0,4,16,141,248,253,254,253,201,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,245,155,189,253,253,253,253,249,132,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,240,253,253,253,253,253,253,220,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,128,105,230,253,186,61,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,148,254,230,130,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,208,253,253,253,253,225,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,208,253,241,213,138,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,223,38,0,21,210,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,99,0,0,7,189,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,36,0,0,50,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,241,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,230,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,188,253,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,233,253,214,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,163,253,253,164,0,0,0,0,0,0,0,32,81,196,147,2,0,0,0,0,0,0,0,0,0,0,7,185,253,253,174,14,0,0,0,0,71,129,211,228,253,253,253,5,0,0,0,0,0,0,0,0,0,5,166,253,253,240,55,0,0,69,127,217,246,253,253,253,253,253,107,1,0,0,0,0,0,0,0,0,0,62,253,253,241,71,66,124,223,245,253,253,253,253,253,165,103,30,2,0,0,0,0,0,0,0,0,0,3,185,253,253,250,230,245,253,253,253,253,253,168,106,24,3,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,253,253,253,253,229,141,48,18,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,253,175,112,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,180,54,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,198,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,158,254,254,254,154,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,253,253,153,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,235,235,235,235,235,250,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,234,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,221,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,253,180,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,81,81,81,115,219,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,106,218,253,253,253,253,253,253,253,171,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,253,253,253,253,253,253,253,221,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,242,253,236,173,253,253,253,253,253,253,253,253,189,7,0,0,0,0,0,0,0,0,0,0,0,0,17,244,253,253,116,134,253,253,253,186,24,163,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,245,253,253,253,168,40,0,6,64,240,253,87,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,253,253,253,136,3,0,0,0,0,10,12,1,0,0,0,0,0,0,0,0,0,0,0,0,1,151,253,253,253,229,102,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,228,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,204,27,0,0,0,32,226,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,185,253,87,0,0,0,166,253,214,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,227,16,0,0,0,217,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,217,0,0,0,139,254,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,113,0,0,16,239,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,225,18,0,0,86,253,247,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,198,0,0,0,202,253,171,0,0,32,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,254,185,91,85,66,254,253,81,91,91,170,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,254,254,254,254,255,254,254,254,254,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,173,254,253,253,253,253,254,253,253,233,214,140,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,36,207,253,217,42,36,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,241,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,238,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,237,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,118,253,207,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,116,236,254,254,254,201,198,220,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,190,254,254,254,254,254,254,254,254,229,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,254,254,254,254,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,254,254,254,254,254,254,254,254,254,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,241,241,241,241,241,252,254,254,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,254,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,237,254,254,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,251,254,254,254,254,254,254,244,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,232,254,254,254,254,254,254,254,254,168,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,254,254,254,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,241,254,254,247,227,245,254,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,169,124,80,0,72,192,254,254,254,228,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,51,0,0,0,20,194,249,254,254,254,195,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,237,87,158,196,228,255,254,254,254,254,226,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,177,254,254,254,254,254,254,254,254,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,254,254,254,254,254,254,254,238,93,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,254,254,254,254,254,254,177,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,199,254,254,254,254,254,239,117,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,179,241,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,192,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,153,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,240,228,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,227,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,182,246,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,254,222,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,93,116,142,142,142,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,202,254,254,254,254,254,254,254,244,138,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,254,213,159,77,184,223,230,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,248,254,254,206,54,0,0,0,28,58,254,239,41,0,0,0,0,0,0,0,0,0,0,0,0,0,27,206,254,254,190,15,0,0,0,0,0,5,180,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,196,10,0,0,0,0,0,0,14,205,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,194,8,0,0,0,0,0,0,0,36,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,254,29,0,0,0,0,0,0,0,2,161,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,29,0,0,0,0,0,0,0,113,249,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,29,0,0,0,0,20,66,174,250,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,164,254,158,4,8,84,84,191,254,217,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,221,223,254,254,224,153,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,241,254,243,135,109,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,255,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,239,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,152,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,253,253,253,223,62,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,245,253,247,219,238,253,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,197,0,136,246,253,220,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,218,33,0,4,190,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,143,30,0,0,1,127,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,253,208,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,229,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,94,11,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,7,7,1,0,0,0,0,0,0,83,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,137,125,125,44,0,0,0,83,253,253,96,0,0,0,0,0,0,0,0,0,0,0,31,133,249,253,253,208,186,253,253,245,237,104,104,227,253,214,5,0,0,0,0,0,0,0,0,0,0,32,208,253,197,89,34,19,12,145,170,179,253,253,253,253,199,28,0,0,0,0,0,0,0,0,0,0,0,97,253,210,18,0,0,0,0,0,12,83,253,253,253,253,240,167,0,0,0,0,0,0,0,0,0,0,0,81,247,237,160,17,0,0,15,153,193,253,253,253,214,225,253,241,68,0,0,0,0,0,0,0,0,0,0,0,122,232,232,94,0,21,177,253,253,253,241,165,5,32,220,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,137,251,253,253,152,116,50,0,0,0,125,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,199,93,91,91,91,91,170,254,189,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,208,254,254,255,254,254,254,254,254,237,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,156,254,254,203,227,147,184,254,254,225,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,159,2,0,0,14,139,126,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,254,208,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,216,254,158,4,105,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,241,230,252,246,175,201,148,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,250,254,254,254,254,108,98,75,184,254,252,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,135,131,90,18,8,1,0,0,1,24,182,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,190,239,56,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,225,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,217,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,228,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,106,213,57,0,0,0,0,0,0,0,0,0,192,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,130,0,0,0,0,0,0,0,0,8,216,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,242,85,0,0,0,0,0,0,57,215,254,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,15,161,192,108,10,68,151,156,159,238,250,254,228,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,24,102,245,254,254,254,254,211,90,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,42,46,120,163,254,254,254,232,112,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,140,247,253,232,244,254,253,253,234,233,234,242,227,53,0,0,0,0,0,0,0,0,0,0,0,0,13,183,254,253,253,253,192,152,78,78,6,0,0,36,24,0,0,0,0,0,0,0,0,0,0,0,0,13,185,253,254,167,49,64,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,171,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,216,59,59,97,59,59,59,59,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,253,254,253,253,253,253,254,253,226,199,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,254,186,174,174,205,254,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,201,117,19,3,0,0,8,19,64,117,212,253,249,51,0,0,0,0,0,0,0,0,0,0,0,0,5,58,5,0,0,0,0,0,0,0,0,0,9,208,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,255,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,78,0,0,0,0,0,0,0,0,0,0,0,44,122,0,0,0,0,0,0,0,0,0,0,0,99,254,239,24,0,0,0,0,0,0,0,0,0,0,0,118,174,0,0,0,0,0,0,0,0,0,0,7,204,254,180,0,0,0,0,0,0,0,0,0,0,0,0,118,174,0,0,0,0,0,0,0,0,0,0,152,253,254,61,0,0,0,0,0,0,0,0,0,0,0,0,118,223,12,0,0,0,0,0,0,0,13,186,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,72,0,0,0,0,0,8,43,165,253,250,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,241,101,31,0,0,43,183,254,253,228,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,227,253,242,234,234,244,253,244,161,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,133,254,253,222,155,118,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,114,159,253,237,113,114,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,252,252,252,252,253,243,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,55,196,214,252,252,252,253,252,239,103,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,181,252,252,252,253,252,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,252,253,252,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,240,140,141,140,166,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,233,71,0,0,0,38,224,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,227,253,252,164,0,0,0,0,0,169,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,195,19,0,0,0,0,0,169,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,169,252,203,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,255,168,0,0,0,0,0,0,169,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,169,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,59,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,253,177,7,0,0,0,0,0,29,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,253,252,55,0,0,0,0,0,29,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,196,0,0,0,0,0,29,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,246,122,0,0,0,0,29,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,252,246,197,57,25,57,156,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,246,252,252,253,205,252,252,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,205,252,253,252,220,112,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,91,218,255,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,185,253,253,253,253,253,253,208,128,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,253,253,253,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,67,220,220,220,220,238,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,242,253,253,249,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,234,253,253,173,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,250,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,228,253,247,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,240,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,205,205,205,231,253,253,253,109,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,182,253,253,253,253,253,253,253,253,205,131,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,253,253,253,253,253,253,253,253,239,222,222,78,24,0,0,0,0,0,0,0,0,0,0,0,7,167,253,253,253,253,253,253,253,253,253,253,253,253,253,253,191,105,0,0,0,0,0,0,0,0,0,0,0,7,15,15,15,15,15,15,69,179,208,253,253,253,253,253,253,227,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,89,89,222,253,110,184,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,255,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,129,0,0,0,0,0,1,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,253,253,111,0,0,0,0,0,46,253,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,21,0,0,0,0,0,135,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,2,135,253,253,171,3,0,0,0,0,0,233,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,253,59,0,0,0,0,0,19,246,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,126,186,195,195,195,195,217,253,253,209,3,0,0,0,0,0,0,0,0,0,0,0,0,10,202,253,253,253,253,253,253,253,253,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,253,253,253,230,226,235,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,253,253,222,154,54,31,26,168,253,253,253,132,1,0,0,0,0,0,0,0,0,0,0,0,0,1,34,124,124,57,10,0,0,0,0,168,253,253,137,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,253,235,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,251,253,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,228,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,239,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,201,228,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,128,253,255,253,253,253,147,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,247,252,252,253,252,252,252,252,215,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,122,244,252,252,202,159,158,158,158,233,252,248,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,252,205,82,0,0,0,0,67,231,252,213,34,0,0,0,0,0,0,0,0,0,0,0,0,169,241,252,252,195,22,0,0,0,0,0,0,81,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,194,24,0,0,0,0,0,0,0,43,235,252,238,0,0,0,0,0,0,0,0,0,0,0,86,240,252,243,67,0,0,0,0,0,0,0,0,0,152,252,248,82,0,0,0,0,0,0,0,0,0,68,243,252,252,184,0,0,0,0,0,0,0,0,0,0,41,252,252,203,0,0,0,0,0,0,0,0,0,114,252,252,213,28,0,0,0,0,0,0,0,0,0,0,17,198,252,252,0,0,0,0,0,0,0,0,0,240,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,0,0,0,0,0,0,0,0,121,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,41,253,253,253,0,0,0,0,0,0,0,0,247,252,252,176,3,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,0,0,0,0,0,0,0,0,253,252,252,53,0,0,0,0,0,0,0,0,0,0,0,20,119,252,252,132,0,0,0,0,0,0,0,0,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,96,252,252,252,119,0,0,0,0,0,0,0,0,253,252,252,39,0,0,0,0,0,0,0,0,0,57,172,238,252,252,206,25,0,0,0,0,0,0,0,0,129,249,252,154,54,14,0,0,0,0,0,51,103,242,252,252,252,204,28,0,0,0,0,0,0,0,0,0,0,219,252,252,252,193,173,173,173,173,174,248,252,252,252,252,245,78,0,0,0,0,0,0,0,0,0,0,0,96,249,252,252,252,252,252,252,252,253,252,252,252,245,197,78,0,0,0,0,0,0,0,0,0,0,0,0,0,95,218,242,252,252,252,252,252,253,252,240,238,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,119,210,252,252,252,190,119,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,255,253,143,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,181,252,253,252,252,249,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,200,252,252,252,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,252,252,252,252,237,252,252,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,252,157,112,191,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,215,110,0,63,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,18,0,151,240,253,223,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,88,234,252,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,252,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,240,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,240,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,166,234,252,253,252,252,215,197,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,169,196,252,252,252,253,252,252,252,252,216,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,95,203,253,252,252,252,252,112,112,221,252,252,253,252,165,47,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,253,162,0,0,0,0,95,203,255,253,253,84,0,0,0,0,0,0,0,0,0,0,123,231,252,252,253,223,58,9,0,0,0,0,0,15,253,252,252,84,0,0,0,0,0,0,0,0,0,57,231,252,252,220,133,37,0,0,0,0,0,0,0,0,222,252,252,193,0,0,0,0,0,0,0,0,0,253,252,252,217,37,0,0,0,0,0,0,0,0,0,0,38,234,252,223,0,0,0,0,0,0,0,0,0,112,189,112,37,0,0,0,0,0,0,0,0,0,0,0,0,225,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,148,236,254,253,253,253,209,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,121,247,252,252,253,252,252,252,252,243,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,105,252,252,252,252,250,196,126,126,179,253,246,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,252,139,128,70,0,0,0,35,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,244,49,0,0,0,0,0,89,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,253,253,183,104,0,0,4,114,236,254,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,252,252,173,85,142,252,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,253,252,252,252,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,253,252,252,183,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,253,252,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,236,219,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,63,63,63,37,43,252,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,227,148,210,129,42,113,253,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,226,226,252,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,252,252,252,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,253,252,252,252,226,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,252,253,252,252,155,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,191,253,253,253,253,255,211,109,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,252,252,252,252,252,253,252,252,232,73,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,252,252,252,226,215,232,252,252,252,253,149,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,118,108,108,108,31,0,47,108,128,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,175,253,221,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,78,232,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,144,144,253,252,252,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,253,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,253,252,252,252,253,242,217,134,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,232,252,226,215,253,252,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,108,108,47,108,31,0,108,148,252,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,222,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,221,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,37,253,221,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,221,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,253,253,253,255,253,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,253,252,252,252,119,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,252,252,253,252,252,252,253,252,205,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,211,252,253,252,231,108,108,108,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,196,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,252,192,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,200,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,255,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,247,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,222,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,247,247,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,219,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,140,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,243,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,235,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,196,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,255,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,247,252,253,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,252,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,252,252,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,244,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,85,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,119,153,232,245,252,233,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,175,252,252,252,252,253,252,252,225,211,194,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,254,253,253,253,253,254,253,253,253,253,254,253,104,14,0,0,0,0,0,0,0,0,0,0,0,8,197,252,253,252,210,141,221,253,153,72,168,239,253,252,252,120,0,0,0,0,0,0,0,0,0,0,8,217,252,252,197,21,11,32,232,109,5,0,0,17,100,247,252,247,47,0,0,0,0,0,0,0,0,11,171,252,252,155,0,0,0,21,128,0,0,0,0,0,0,99,247,252,147,0,0,0,0,0,0,0,0,43,252,252,155,7,0,0,0,0,0,0,0,0,0,0,0,0,232,252,147,0,0,0,0,0,0,0,0,166,253,250,70,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,165,0,0,0,0,0,0,0,0,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,0,0,0,0,0,0,0,0,245,252,38,0,0,0,0,0,0,0,0,0,0,0,0,22,162,251,252,164,0,0,0,0,0,0,0,0,148,252,152,0,0,0,0,0,0,0,0,0,0,0,54,183,252,252,252,155,0,0,0,0,0,0,0,0,104,252,249,140,62,0,0,0,0,0,0,80,115,211,246,253,252,252,155,7,0,0,0,0,0,0,0,0,0,159,250,253,253,237,148,245,253,253,255,253,253,253,253,255,222,106,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,253,252,252,252,252,253,252,252,231,168,63,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,170,232,247,242,231,231,214,126,118,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,241,253,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,253,230,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,156,56,15,0,0,0,0,15,185,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,240,238,43,0,0,0,0,61,253,253,172,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,165,253,228,29,0,0,0,0,186,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,232,251,172,0,0,0,0,81,250,253,219,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,247,44,0,0,0,0,162,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,238,253,253,98,0,0,0,0,107,248,253,229,31,0,0,34,63,0,0,0,0,0,0,0,0,0,9,217,254,254,151,0,0,0,0,15,211,254,254,150,0,31,121,254,81,0,0,0,0,0,0,0,0,0,96,253,253,253,107,67,67,67,67,67,197,253,253,237,177,247,253,233,24,0,0,0,0,0,0,0,0,28,240,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,234,56,0,0,0,0,0,0,0,0,0,128,247,253,253,253,253,233,231,231,231,254,253,253,184,121,34,10,10,3,0,0,0,0,0,0,0,0,0,0,62,88,88,88,88,8,0,0,49,254,253,210,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,185,254,253,89,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,239,254,217,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,240,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,81,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,245,255,207,125,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,245,253,253,253,249,248,214,118,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,253,253,253,253,245,218,112,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,19,19,19,127,149,229,253,253,253,253,241,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,56,155,223,253,253,251,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,52,221,253,251,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,230,253,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,185,253,235,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,182,253,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,213,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,242,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,112,0,0,0,0,0,0,68,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,243,33,0,0,0,0,0,152,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,152,186,0,0,0,0,0,0,230,205,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,75,0,0,0,0,0,53,249,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,153,222,13,0,0,0,0,0,142,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,141,0,0,0,0,0,0,181,246,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,204,254,99,30,8,0,0,0,57,249,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,249,245,218,209,166,126,195,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,239,249,230,254,254,254,254,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,37,25,33,17,37,37,37,91,244,243,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,255,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,220,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,241,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,230,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,237,255,215,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,253,205,131,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,145,253,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,216,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,251,253,253,229,158,34,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,244,221,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,122,21,112,222,253,248,124,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,97,0,0,14,145,252,253,108,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,251,76,0,0,0,0,145,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,243,0,0,0,0,0,14,183,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,243,0,0,0,0,0,0,30,229,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,245,23,0,0,0,0,0,0,206,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,97,0,0,0,0,0,0,159,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,97,0,0,0,0,0,0,206,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,170,0,0,0,0,0,41,238,235,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,243,224,24,0,0,0,9,184,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,213,40,21,72,197,253,241,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,227,253,249,227,253,253,237,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,145,245,253,253,235,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,207,2,0,0,0,0,0,0,0,6,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,110,254,254,74,0,0,0,0,0,0,61,244,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,254,226,33,0,0,0,0,0,0,224,255,246,11,0,0,0,0,0,0,0,0,0,0,0,0,15,214,254,254,204,0,0,0,0,0,0,56,242,255,130,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,228,80,0,0,0,0,0,11,174,254,189,7,0,0,0,0,0,0,0,0,0,0,0,0,12,216,254,254,149,0,0,0,0,0,0,88,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,3,121,254,254,254,189,0,0,0,0,0,36,177,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,13,254,254,254,254,202,174,174,174,174,174,239,254,254,186,8,0,0,0,0,0,0,0,0,0,0,0,0,13,254,254,254,254,254,254,254,254,254,254,254,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,4,77,192,230,254,254,254,254,254,254,254,254,254,232,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,62,62,86,98,62,114,254,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,229,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,254,254,210,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,217,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,247,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,178,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,215,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,246,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,247,252,202,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,184,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,250,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,180,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,233,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,166,254,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,123,41,192,233,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,197,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,248,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,250,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,85,148,213,254,145,66,66,77,148,148,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,153,251,254,254,254,254,255,254,254,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,16,234,187,129,90,64,166,66,145,171,206,179,90,74,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,114,224,255,248,163,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,60,119,221,254,246,229,239,254,192,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,201,254,254,254,254,237,15,29,214,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,236,254,248,166,108,65,215,43,4,166,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,254,175,29,0,0,0,10,3,153,254,144,5,0,0,0,0,0,0,0,0,0,0,0,0,0,53,241,233,128,6,0,0,0,0,46,181,254,188,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,204,3,0,0,0,19,106,220,252,159,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,224,254,129,0,0,2,94,218,254,219,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,212,13,22,197,254,248,108,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,244,254,194,222,249,200,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,129,250,254,250,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,243,200,36,254,243,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,224,234,14,3,217,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,216,246,17,0,46,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,218,242,30,0,72,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,224,254,160,84,182,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,254,254,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,248,252,168,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,119,195,160,160,150,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,244,218,174,122,122,202,244,202,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,153,4,0,0,0,0,77,251,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,251,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,103,224,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,217,252,254,254,233,234,178,95,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,254,114,17,80,163,254,175,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,188,167,14,0,0,0,0,111,255,205,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,105,254,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,231,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,103,0,0,0,0,0,0,0,0,0,0,0,0,85,14,0,0,0,0,0,0,0,0,0,0,0,104,254,96,0,0,0,0,0,0,0,0,0,0,0,0,131,203,38,0,0,0,0,0,0,0,0,0,65,240,225,6,0,0,0,0,0,0,0,0,0,0,0,0,7,166,245,161,57,2,0,0,0,0,45,120,243,249,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,175,254,218,217,147,218,217,245,245,173,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,66,156,159,229,230,159,121,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,7,68,102,168,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,215,254,254,254,254,254,254,115,13,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,214,254,254,254,254,254,254,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,214,254,254,254,254,248,229,249,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,248,134,75,58,233,254,254,182,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,236,74,69,232,254,254,180,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,254,254,254,254,254,242,171,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,156,236,254,254,254,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,166,254,254,254,254,233,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,196,254,254,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,238,204,254,235,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,237,254,155,15,175,254,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,209,13,0,15,175,254,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,95,0,0,0,54,240,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,200,254,74,0,0,0,0,166,254,191,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,74,0,0,0,0,136,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,255,210,107,167,204,231,251,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,216,254,254,254,254,254,254,254,254,210,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,254,254,254,254,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,130,218,254,221,228,153,88,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,104,181,188,171,130,88,88,88,134,219,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,254,254,254,254,254,254,254,254,254,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,9,210,254,254,244,241,241,243,254,254,254,243,241,192,59,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,142,16,0,0,12,71,71,71,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,231,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,123,0,12,92,109,109,109,93,26,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,237,254,141,122,222,254,254,254,254,254,254,183,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,254,254,254,238,220,193,220,249,254,254,223,66,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,254,250,142,27,0,0,0,43,140,249,254,241,38,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,254,120,0,0,0,0,0,0,0,60,228,254,241,24,0,0,0,0,0,0,0,0,0,0,0,77,254,254,178,10,0,0,0,0,0,0,0,0,45,243,254,179,2,0,0,0,0,0,0,0,0,0,0,2,69,60,10,0,0,0,0,0,0,0,0,0,0,106,251,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,254,8,0,0,0,0,0,0,0,0,0,0,0,81,85,0,0,0,0,0,0,0,0,0,0,0,39,247,254,8,0,0,0,0,0,0,0,0,0,0,0,157,180,18,0,0,0,0,0,0,0,0,0,0,193,254,254,8,0,0,0,0,0,0,0,0,0,0,0,174,254,146,18,0,0,0,0,0,0,0,40,194,252,254,208,3,0,0,0,0,0,0,0,0,0,0,0,155,254,254,245,177,147,76,76,76,146,204,249,254,254,208,44,0,0,0,0,0,0,0,0,0,0,0,0,35,182,254,254,254,254,254,254,254,254,254,254,254,131,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,38,150,207,254,254,254,239,170,170,124,39,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,164,77,77,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,254,252,242,204,152,125,63,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,254,243,231,254,254,254,254,254,249,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,229,39,21,40,46,160,157,253,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,105,254,254,248,16,0,0,0,0,8,247,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,171,254,120,0,0,0,0,0,50,251,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,183,0,0,0,0,0,0,246,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,66,36,0,0,0,0,0,0,246,239,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,248,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,196,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,185,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,176,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,227,198,249,224,213,166,166,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,254,254,254,254,254,222,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,241,205,214,231,209,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,108,0,7,21,3,195,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,94,0,0,0,0,184,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,91,0,0,0,1,186,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,139,2,0,0,0,18,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,236,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,250,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,234,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,169,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,218,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,225,253,219,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,253,178,33,0,0,0,0,0,0,0,0,0,0,0,0,28,214,31,0,0,0,0,0,0,0,0,180,255,181,5,0,0,0,0,0,0,0,0,0,0,0,0,4,195,253,36,0,0,0,0,0,0,0,95,248,229,21,0,0,0,0,0,0,0,0,0,0,0,0,8,161,253,108,0,0,0,0,0,0,0,72,250,249,35,0,0,0,0,0,0,0,0,0,0,0,0,6,155,253,192,7,0,0,0,0,0,0,11,241,245,103,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,174,7,0,0,0,0,0,0,0,170,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,81,0,0,0,0,0,0,0,61,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,204,3,0,0,0,0,57,96,178,228,253,161,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,250,190,164,164,217,239,252,246,247,254,188,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,232,253,253,253,222,190,108,53,220,248,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,30,30,30,9,0,0,112,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,245,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,244,237,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,133,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,71,0,0,0,0,0,0,0,0,0,163,203,81,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,130,0,0,0,0,0,0,0,0,0,163,255,151,0,0,0,0,0,0,0,0,0,0,0,0,31,233,224,20,0,0,0,0,0,0,0,0,0,0,253,151,0,0,0,0,0,0,0,0,0,0,0,0,51,252,203,0,0,0,0,0,0,0,0,0,0,102,255,151,0,0,0,0,0,0,0,0,0,0,0,0,52,253,203,0,0,0,0,0,0,0,0,0,0,183,253,192,102,102,123,122,102,102,82,0,0,0,0,0,51,252,203,0,0,0,0,0,0,0,0,0,72,253,254,253,254,253,254,253,254,253,254,253,254,172,132,31,0,142,234,30,0,0,0,0,0,0,0,0,193,252,192,111,50,50,50,50,50,50,50,131,253,252,253,232,142,122,253,50,0,0,0,0,0,0,0,0,254,233,41,0,0,0,0,0,0,0,0,0,0,82,123,223,234,253,255,151,0,0,0,0,0,0,0,0,71,50,0,0,0,0,0,0,0,0,0,0,0,0,0,20,30,172,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,204,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,144,144,144,144,236,187,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,228,253,253,254,253,253,248,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,44,44,44,190,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,250,235,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,215,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,209,190,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,31,210,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,155,155,64,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,248,253,253,253,255,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,196,234,143,143,143,172,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,230,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,240,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,213,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,0,4,108,254,221,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,153,45,156,253,234,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,138,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,108,231,225,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,161,253,223,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,163,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,165,254,253,228,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,191,253,254,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,168,253,253,254,88,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,219,253,253,108,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,175,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,175,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,254,254,107,0,0,108,254,254,254,254,162,45,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,253,171,6,0,52,240,253,253,253,253,253,231,45,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,217,10,0,50,241,253,253,223,159,229,253,253,107,0,0,0,0,0,0,0,0,0,0,0,80,247,253,236,75,0,54,235,254,253,181,48,0,187,253,253,107,0,0,0,0,0,0,0,0,0,0,0,129,253,253,199,0,8,175,253,254,225,19,0,18,205,253,232,22,0,0,0,0,0,0,0,0,0,0,52,233,253,239,157,9,145,253,253,229,116,49,97,205,253,216,108,0,0,0,0,0,0,0,0,0,0,0,220,253,253,197,41,75,253,253,253,217,174,245,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,97,250,253,253,253,253,253,253,253,255,253,253,253,211,93,29,0,0,0,0,0,0,0,0,0,0,0,0,57,234,253,253,253,253,253,253,253,255,247,190,107,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,253,182,121,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,182,255,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,142,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,247,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,241,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,207,253,249,113,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,201,253,246,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,250,253,194,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,128,250,253,178,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,215,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,220,253,237,35,1,7,105,105,105,105,105,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,156,253,253,128,0,136,253,253,253,253,253,253,190,16,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,209,8,126,253,253,250,238,238,160,249,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,233,23,0,194,253,223,65,0,0,7,200,253,64,0,0,0,0,0,0,0,0,0,0,0,0,32,236,253,87,0,46,247,253,148,0,0,0,162,253,250,58,0,0,0,0,0,0,0,0,0,0,0,0,135,253,200,7,0,171,253,253,148,0,5,108,245,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,248,94,10,133,253,253,163,59,181,253,254,242,64,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,253,253,207,200,253,253,253,253,253,253,245,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,249,253,253,253,253,253,253,233,208,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,153,248,253,194,152,54,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,253,137,15,0,13,24,24,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,244,253,252,252,219,161,212,252,252,252,117,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,202,208,252,253,252,252,252,168,216,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,245,87,13,59,202,253,193,128,45,25,109,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,11,23,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,245,140,47,47,47,47,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,252,252,252,252,253,209,152,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,117,252,252,252,252,253,252,252,215,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,107,137,85,137,158,252,252,242,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,244,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,205,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,76,0,0,0,0,0,97,253,253,253,253,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,211,95,0,34,47,151,253,252,252,252,252,228,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,247,184,234,252,252,253,252,252,252,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,211,252,252,252,252,253,252,227,160,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,158,252,252,252,243,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,193,13,0,0,0,0,102,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,198,253,217,18,0,0,0,0,226,215,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,111,0,0,0,0,0,226,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,0,0,0,0,0,0,226,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,174,0,0,0,0,0,0,226,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,113,0,0,0,0,0,0,227,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,244,75,0,0,0,0,0,0,226,253,250,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,193,0,0,0,0,0,0,0,226,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,76,244,253,84,0,0,0,0,0,0,0,226,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,84,0,0,0,0,0,0,0,226,253,253,191,80,0,0,0,0,0,0,0,0,0,0,0,0,114,255,254,85,0,0,0,0,0,0,0,227,255,254,255,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,131,0,0,0,0,0,48,86,235,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,89,247,253,247,198,136,135,167,198,229,255,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,254,253,253,253,253,254,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,143,253,253,255,253,253,253,174,113,159,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,141,142,141,31,0,0,0,48,230,254,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,242,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,253,254,204,88,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,241,254,253,253,244,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,175,253,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,191,254,255,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,181,232,253,253,253,224,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,162,253,246,177,12,10,121,208,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,22,0,54,241,231,252,94,0,0,0,0,182,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,14,208,253,247,53,0,0,0,0,40,248,244,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,249,94,0,0,0,42,110,217,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,245,120,122,223,223,241,253,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,253,253,253,253,253,253,253,202,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,248,248,163,206,167,41,41,34,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,237,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,239,253,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,240,253,237,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,153,253,253,246,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,200,253,253,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,244,253,231,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,232,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,193,202,158,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,190,254,254,254,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,254,254,254,254,254,226,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,245,141,201,254,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,217,191,254,235,239,254,238,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,254,254,190,155,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,237,150,33,38,248,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,59,59,38,0,0,0,245,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,245,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,201,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,212,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,60,112,168,168,161,60,39,41,225,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,254,254,254,254,237,231,254,254,244,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,254,254,254,254,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,208,254,254,255,254,254,255,254,200,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,254,254,254,254,254,254,254,254,254,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,148,251,254,254,254,254,254,238,229,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,142,184,184,184,99,37,60,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,126,250,180,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,121,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,117,205,234,223,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,156,232,253,253,253,253,210,198,113,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,236,162,82,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,209,253,252,236,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,253,232,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,191,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,197,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,235,253,253,188,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,253,253,182,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,230,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,204,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,122,248,253,253,246,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,26,13,42,134,179,217,253,253,242,212,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,217,186,253,253,253,253,253,186,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,182,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,122,190,128,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,237,252,252,253,242,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,234,252,252,252,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,231,89,149,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,115,0,4,175,233,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,23,0,0,46,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,206,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,23,0,0,0,0,0,70,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,132,0,0,0,16,189,246,245,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,230,252,143,0,6,190,243,252,252,217,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,255,253,253,253,216,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,249,147,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,189,252,252,252,252,204,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,135,233,252,252,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,228,242,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,236,188,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,191,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,146,252,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,110,235,252,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,209,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,101,247,252,221,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,252,199,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,253,254,239,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,136,251,252,252,161,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,252,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,252,252,226,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,254,253,250,70,0,0,0,39,114,148,148,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,117,0,36,103,190,247,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,169,246,252,253,217,128,197,241,253,252,252,252,252,253,252,225,7,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,71,249,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,50,245,253,253,254,253,253,253,253,255,253,253,253,253,255,253,206,35,0,0,0,0,0,0,0,0,0,0,57,246,252,252,253,252,252,252,252,253,252,252,252,252,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,252,252,252,253,252,252,252,235,109,14,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,253,252,252,226,226,190,189,180,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,147,235,174,42,42,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,149,192,254,174,155,155,155,204,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,242,253,253,253,253,254,253,253,254,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,253,252,188,183,89,89,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,253,246,77,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,240,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,240,102,15,40,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,181,253,161,111,217,253,252,171,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,253,235,203,224,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,216,94,31,0,104,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,187,26,0,0,0,5,254,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,220,14,0,0,0,0,5,253,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,91,0,0,0,0,0,4,228,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,160,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,0,0,0,0,0,0,4,226,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,56,0,0,0,0,0,59,254,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,235,100,25,0,0,73,216,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,249,247,150,182,250,253,185,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,153,248,253,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,231,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,206,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,167,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,208,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,233,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,170,253,253,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,237,253,253,217,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,190,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,201,253,253,230,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,192,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,243,253,253,150,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,188,253,253,178,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,231,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,235,109,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,200,255,182,171,124,88,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,254,254,254,254,232,124,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,240,254,254,254,254,254,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,188,254,254,254,248,254,254,254,224,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,228,160,67,45,67,67,67,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,232,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,109,0,0,0,0,0,82,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,157,226,0,0,0,0,0,42,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,246,37,0,0,0,0,5,217,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,211,254,162,0,0,0,0,0,213,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,252,128,0,0,0,0,213,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,188,254,252,191,15,0,26,238,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,188,254,254,244,175,202,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,115,254,254,254,254,239,130,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,41,152,198,170,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,227,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,225,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,196,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,175,84,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,247,254,222,210,255,244,219,219,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,209,65,12,0,44,44,167,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,217,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,210,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,246,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,242,241,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,180,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,238,253,253,253,255,206,113,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,226,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,220,252,253,252,252,252,252,253,233,165,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,130,223,84,84,84,84,193,223,239,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,174,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,72,57,150,227,253,233,164,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,169,253,252,252,252,252,240,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,252,252,173,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,140,255,253,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,122,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,240,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,178,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,28,0,0,0,67,178,240,253,252,233,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,240,215,197,198,197,240,252,252,253,233,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,230,252,252,253,252,252,252,252,162,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,112,189,253,252,252,157,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,39,108,186,246,147,147,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,209,254,254,254,254,254,254,247,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,154,242,254,254,251,209,245,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,240,112,37,16,198,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,122,0,0,128,254,254,254,153,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,254,246,128,189,249,254,254,250,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,254,254,254,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,80,167,115,59,130,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,171,254,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,205,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,255,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,165,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,228,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,199,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,59,5,0,0,0,0,0,0,59,149,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,217,177,118,118,118,170,214,254,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,254,253,253,253,253,254,253,198,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,247,229,214,232,240,213,213,117,34,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,138,23,0,27,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,220,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,226,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,163,137,136,136,136,136,137,136,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,253,253,254,253,253,253,253,254,253,235,180,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,240,255,254,254,231,254,255,254,254,254,254,209,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,39,39,39,24,39,39,39,107,188,248,254,227,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,229,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,247,253,161,0,0,0,0,0,0,0,0,0,0,0,0,91,23,0,0,0,0,0,0,0,0,0,0,0,102,253,244,45,0,0,0,0,0,0,0,0,0,0,0,235,254,194,74,41,0,0,0,0,0,0,0,0,43,254,254,58,0,0,0,0,0,0,0,0,0,0,0,226,253,254,253,241,199,42,8,0,0,0,0,43,180,253,253,58,0,0,0,0,0,0,0,0,0,0,0,57,174,254,253,253,253,253,206,175,175,175,175,254,253,253,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,79,124,241,253,253,254,253,253,253,253,254,250,213,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,148,155,178,253,253,253,253,193,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,71,198,254,254,254,225,133,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,145,145,243,253,254,253,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,253,212,96,96,127,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,205,253,253,253,149,0,0,0,129,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,165,253,253,253,89,4,0,0,27,230,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,144,6,0,0,0,129,253,253,198,12,0,0,0,0,0,0,0,0,0,0,0,0,0,30,238,253,253,143,7,0,0,0,0,157,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,253,144,7,0,0,0,0,10,194,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,24,6,0,0,0,0,0,77,253,253,227,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,209,253,231,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,251,254,246,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,254,163,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,248,249,63,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,255,255,245,121,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,183,253,253,253,253,253,155,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100,253,253,178,179,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,108,0,0,155,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,236,253,188,6,0,0,22,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,125,1,0,4,170,253,249,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,248,253,253,109,11,169,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,220,253,250,207,253,253,170,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,243,253,253,253,227,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,249,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,249,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,247,130,253,240,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,179,26,225,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,223,253,129,14,214,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,173,99,253,245,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,252,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,253,253,253,228,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,228,253,115,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,44,103,186,255,255,255,252,135,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,182,254,254,254,254,254,254,254,254,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,251,208,136,136,136,235,254,254,249,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,120,0,0,0,0,78,252,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,202,0,0,0,0,68,253,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,252,190,15,0,0,149,254,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,246,254,254,183,20,152,253,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,244,254,254,229,254,249,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,246,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,106,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,202,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,254,187,90,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,235,254,214,4,16,229,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,246,27,0,0,160,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,235,254,31,0,0,0,133,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,207,3,0,0,0,169,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,102,0,0,48,246,201,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,254,253,213,146,235,242,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,248,254,254,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,197,254,219,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,114,113,113,207,174,176,253,222,113,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,253,252,252,252,252,253,252,252,252,237,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,234,252,253,252,252,252,252,253,252,252,252,252,229,53,0,0,0,0,0,0,0,0,0,0,0,0,10,203,252,252,253,252,252,252,252,253,252,252,252,252,253,224,37,0,0,0,0,0,0,0,0,0,0,0,163,252,252,252,253,252,252,157,112,174,173,252,252,252,253,252,133,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,255,253,56,0,0,0,0,0,95,140,192,253,253,84,0,0,0,0,0,0,0,0,0,113,252,252,252,252,253,252,55,0,0,0,0,0,0,0,75,243,252,209,0,0,0,0,0,0,0,0,0,222,252,252,252,252,253,252,55,0,0,0,0,0,0,0,0,97,239,230,25,0,0,0,0,0,0,0,0,240,233,252,252,252,253,242,49,0,0,0,0,0,0,0,0,0,197,236,50,0,0,0,0,0,0,0,0,126,53,221,252,252,253,167,0,0,0,0,0,0,0,0,0,48,227,252,112,0,0,0,0,0,0,0,0,0,0,198,253,253,255,27,0,0,0,0,0,0,0,0,0,147,253,253,253,0,0,0,0,0,0,0,0,0,0,197,252,252,152,3,0,0,0,0,0,0,0,0,147,249,252,242,89,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,32,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,197,252,252,153,3,0,0,0,0,0,23,123,215,253,252,252,208,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,106,0,16,140,141,63,227,252,252,253,252,141,37,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,253,253,253,253,255,253,253,253,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,6,130,252,253,252,252,252,252,253,252,252,252,252,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,252,252,252,252,253,252,252,252,252,228,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,225,233,252,252,252,240,223,223,223,145,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,112,112,112,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,253,253,255,253,253,211,121,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,250,252,252,252,252,252,252,253,252,252,252,252,144,34,0,0,0,0,0,0,0,0,0,0,0,0,0,59,237,252,252,252,252,252,252,253,252,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,172,172,172,172,172,172,173,172,172,240,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,242,252,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,252,252,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,247,252,252,248,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,255,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,185,252,253,252,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,180,252,252,253,212,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,219,252,252,252,151,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,176,252,252,248,185,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,236,252,252,212,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,252,252,226,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,221,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,255,253,232,109,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,155,253,252,252,252,253,252,252,252,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,252,253,252,252,252,253,252,252,252,253,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,252,168,108,108,108,190,253,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,118,0,0,0,0,0,0,191,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,119,5,0,0,0,0,0,0,109,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,0,0,0,0,0,0,0,0,129,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,1,171,253,72,0,0,0,0,0,0,0,0,0,255,222,41,0,0,0,0,0,0,0,0,0,0,0,11,73,252,252,71,0,0,0,0,0,0,0,11,155,253,179,0,0,0,0,0,0,0,0,0,0,0,0,58,252,252,179,20,0,0,0,0,0,0,0,52,236,253,179,0,0,0,0,0,0,0,0,0,0,0,0,181,252,189,15,0,0,0,0,0,0,0,125,206,206,191,77,0,0,0,0,0,0,0,0,0,0,0,135,253,253,83,0,0,0,0,0,0,0,47,233,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,217,252,210,0,0,0,0,0,0,11,73,233,252,200,97,20,0,0,0,0,0,0,0,0,0,0,0,0,217,246,92,0,0,0,0,0,73,191,252,253,220,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,236,62,0,0,0,0,145,237,252,168,108,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,109,109,212,253,255,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,252,252,252,252,253,231,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,221,252,252,252,252,231,72,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,148,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,141,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,253,194,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,223,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,186,253,239,195,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,207,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,240,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,240,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,218,253,253,184,71,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,241,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,221,253,222,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,196,253,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,115,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,193,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,245,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,247,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,244,203,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,236,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,254,254,249,0,0,14,60,159,178,178,178,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,157,0,49,174,254,254,254,254,254,244,55,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,129,0,160,255,254,255,212,208,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,238,22,246,254,254,60,13,23,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,2,186,254,254,254,250,254,252,116,1,0,12,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,254,254,254,195,0,0,0,12,255,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,224,254,254,254,254,195,0,0,0,113,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,254,254,254,195,0,0,113,253,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,251,254,254,242,111,183,250,254,254,200,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,254,254,254,202,139,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,211,254,254,154,28,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,24,108,191,191,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,140,161,212,252,252,231,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,142,203,252,252,253,208,100,37,205,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,252,168,46,17,0,34,218,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,252,136,22,2,0,0,0,197,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,84,0,0,0,0,0,49,233,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,157,0,0,0,0,0,30,228,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,146,0,0,0,0,38,155,252,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,249,133,93,93,197,233,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,253,252,252,252,252,243,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,253,253,253,253,255,159,76,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,252,218,206,206,232,252,252,83,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,134,19,0,0,48,196,252,252,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,234,17,0,0,0,0,30,185,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,230,0,0,0,0,0,0,174,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,244,50,0,0,0,0,26,222,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,113,0,0,0,26,136,252,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,240,153,70,122,222,252,202,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,252,252,252,252,253,235,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,137,221,252,252,190,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,254,254,254,195,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,253,253,253,253,253,253,209,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,246,155,89,89,225,253,253,248,99,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,223,0,0,0,21,117,238,253,253,164,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,223,0,0,0,0,0,43,212,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,239,48,0,0,0,0,0,64,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,162,253,230,78,0,0,0,0,15,253,253,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,225,253,251,163,81,40,103,225,253,253,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,131,248,253,253,253,253,253,253,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,104,202,203,235,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,181,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,204,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,196,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,248,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,233,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,235,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,236,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,198,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,238,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,243,238,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,187,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,241,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,240,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,255,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,240,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,226,254,212,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,237,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,166,254,212,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,146,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,195,255,120,6,0,0,73,83,83,83,83,83,83,48,62,83,115,136,0,0,0,0,0,0,0,0,0,168,254,254,254,250,250,250,253,254,254,254,254,254,254,252,253,254,254,254,81,0,0,0,0,0,0,0,0,91,228,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,226,31,0,0,0,0,0,0,0,0,0,8,13,13,64,99,80,13,13,13,13,13,13,13,13,134,254,251,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,251,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,248,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,246,254,199,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,150,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,245,254,200,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,250,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,230,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,239,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,230,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,225,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,239,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,255,198,0,141,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,114,29,0,0,255,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,86,0,0,0,0,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,226,29,0,0,0,0,0,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,198,29,0,0,0,0,29,198,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,29,0,0,0,0,57,226,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,57,0,0,0,29,170,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,86,141,255,255,114,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,141,29,0,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,170,170,86,29,0,0,141,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,89,130,219,254,254,254,254,249,147,130,18,1,0,0,0,0,0,0,0,0,0,0,0,0,11,136,151,253,245,241,213,117,117,117,117,20,101,117,177,9,0,0,0,0,0,0,0,0,0,0,0,0,89,253,166,111,38,0,0,0,0,0,0,0,0,0,129,19,0,0,0,0,0,0,0,0,0,0,0,0,130,253,99,0,0,0,0,0,0,0,0,0,0,0,230,141,0,0,0,0,0,0,0,0,0,0,0,0,19,253,99,0,0,0,0,0,0,0,0,0,0,77,244,127,0,0,0,0,0,0,0,0,0,0,0,0,16,238,197,77,0,0,0,0,0,0,0,0,78,242,219,15,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,222,15,0,0,0,0,0,0,139,225,161,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,235,179,16,0,0,0,15,90,223,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,179,17,0,43,158,158,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,100,253,178,93,220,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,253,236,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,96,236,253,240,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,178,49,94,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,163,164,15,0,56,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,221,181,14,0,0,8,196,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,60,0,0,0,0,186,226,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,167,0,0,0,0,24,214,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,239,44,0,0,22,204,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,170,101,79,205,227,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,79,205,253,252,168,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,173,133,133,133,133,133,133,134,203,254,255,167,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,253,253,253,253,253,254,253,250,245,253,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,14,120,217,217,229,222,217,217,97,96,83,65,209,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,12,0,0,0,0,0,0,182,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,229,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,206,253,225,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,209,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,214,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,217,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,210,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,233,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,93,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,73,222,254,254,208,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,217,253,254,253,253,253,247,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,248,250,151,127,42,100,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,230,253,156,0,0,0,21,223,253,238,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,194,16,0,0,0,0,109,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,212,26,0,0,0,0,24,234,254,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,89,0,0,0,0,12,180,253,253,212,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,178,3,0,0,0,50,186,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,91,0,0,15,116,234,246,253,253,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,149,142,181,238,253,136,118,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,233,255,254,254,216,59,0,171,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,76,89,18,10,0,68,252,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,221,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,234,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,196,254,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,228,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,68,101,130,130,130,130,240,254,254,79,4,0,0,0,0,0,0,0,0,0,0,0,0,8,92,136,136,219,253,253,253,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,13,203,253,253,253,253,253,253,253,253,244,253,253,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,15,213,253,253,253,248,228,195,105,105,54,171,253,253,253,184,105,0,0,0,0,0,0,0,0,0,0,0,10,99,99,99,99,77,0,0,0,10,74,239,253,253,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,38,134,191,253,253,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,231,253,253,253,253,253,253,253,119,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,72,174,230,253,253,253,253,212,222,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,113,74,13,27,123,248,253,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,152,202,253,209,161,68,15,0,0,0,74,247,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,30,11,61,18,0,0,0,0,0,0,73,247,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,253,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,173,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,193,248,253,253,113,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,253,157,2,0,0,0,0,0,0,0,0,0,55,223,223,201,0,0,0,0,0,0,76,197,223,248,253,253,163,26,0,0,0,0,0,0,0,0,0,0,130,253,253,239,41,0,0,21,133,230,248,253,253,253,214,39,3,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,243,236,236,239,253,253,253,253,218,100,12,0,0,0,0,0,0,0,0,0,0,0,0,0,70,199,253,253,253,253,253,253,253,253,253,161,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,76,118,5,5,5,5,5,5,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,106,131,254,189,27,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,150,253,245,222,253,242,183,68,12,40,114,235,99,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,254,245,89,16,132,228,253,253,225,243,254,253,68,0,0,0,0,0,0,0,0,0,0,0,0,16,151,253,254,121,0,0,0,16,157,235,249,253,254,138,8,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,136,5,0,0,0,0,0,14,218,253,228,37,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,163,0,0,0,0,0,0,0,128,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,134,12,0,0,0,0,0,0,32,231,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,116,253,250,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,247,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,238,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,222,254,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,242,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,231,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,224,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,233,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,205,254,255,254,180,97,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,234,215,216,215,244,253,175,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,204,43,0,0,0,44,181,252,221,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,0,0,0,0,0,0,144,253,193,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,4,157,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,239,193,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,151,67,57,120,242,220,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,253,253,253,219,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,242,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,218,254,184,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,195,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,235,214,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,1,82,26,11,0,0,0,0,0,0,0,0,141,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,212,25,0,0,0,0,0,0,26,213,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,1,72,155,242,247,223,140,57,0,0,48,216,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,130,228,253,253,217,216,245,244,154,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,111,159,254,253,179,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,30,133,162,220,133,133,133,133,134,64,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,105,253,253,253,253,253,253,253,253,254,253,186,65,7,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,253,245,182,96,200,217,217,220,253,253,253,155,9,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,221,64,0,0,0,0,0,5,96,235,253,253,154,10,0,0,0,0,0,0,0,0,0,0,0,13,253,253,119,0,0,0,0,0,0,0,0,62,233,253,253,134,0,0,0,0,0,0,0,0,0,0,0,9,222,225,20,0,0,0,0,0,0,0,0,0,64,233,253,193,11,0,0,0,0,0,0,0,0,0,0,0,106,246,183,24,0,0,0,0,0,0,0,0,0,141,253,253,109,85,4,0,0,0,0,0,0,0,0,0,15,217,253,228,183,65,0,0,0,0,0,0,0,108,253,253,253,211,7,0,0,0,0,0,0,0,0,0,0,32,165,253,253,246,230,230,230,231,230,230,230,247,253,253,211,25,0,0,0,0,0,0,0,0,0,0,0,0,3,11,104,132,132,190,248,254,253,253,253,253,253,213,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,0,76,210,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,218,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,176,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,137,253,253,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,253,239,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,243,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,246,178,97,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,184,253,254,213,88,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,115,223,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,128,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,98,98,99,207,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,112,254,254,254,255,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,243,141,245,253,241,242,253,149,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,239,169,253,192,30,36,169,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,240,71,5,0,0,36,243,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,58,40,0,0,0,0,0,159,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,157,0,0,0,0,0,0,0,31,241,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,23,0,0,0,0,0,43,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,185,3,0,0,0,43,217,253,167,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,105,79,79,116,254,253,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,253,244,161,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,103,155,193,118,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,195,255,203,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,181,249,219,207,249,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,149,13,0,146,232,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,185,13,0,0,47,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,236,17,0,0,0,47,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,247,134,0,0,0,0,47,248,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,93,0,0,0,0,55,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,93,0,0,0,0,172,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,0,0,0,0,0,231,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,64,251,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,70,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,0,0,0,0,136,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,59,0,0,0,0,221,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,228,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,222,29,0,0,0,43,47,114,139,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,245,228,132,116,208,249,253,253,239,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,211,253,253,254,202,152,69,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,249,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,237,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,235,254,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,249,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,242,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,178,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,177,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,91,91,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,86,190,253,253,213,180,80,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,117,253,253,253,253,253,253,253,205,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,253,253,253,253,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,157,129,129,129,242,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,88,0,0,0,92,253,253,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,253,238,72,0,0,30,199,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,24,24,12,0,0,0,156,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,157,222,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,128,253,253,253,253,253,193,99,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,152,220,253,253,253,253,253,253,253,253,224,56,12,0,0,0,0,0,0,0,0,0,0,0,0,0,8,173,253,253,253,253,253,253,253,253,253,253,253,253,181,15,0,0,0,0,0,0,0,0,0,0,0,74,208,253,253,233,212,234,253,253,253,225,212,242,253,253,253,211,110,30,0,0,0,0,0,0,0,0,0,175,253,253,236,63,26,198,253,253,253,81,0,91,181,253,253,253,253,217,131,0,0,0,0,0,0,0,0,111,253,253,249,222,228,253,253,253,143,10,0,0,15,32,32,69,195,195,89,0,0,0,0,0,0,0,0,38,211,253,253,253,253,253,253,162,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,85,188,253,253,253,186,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,89,89,89,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,125,125,125,125,154,254,254,254,254,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,163,248,250,253,253,253,253,253,253,253,253,177,148,253,253,114,0,0,0,0,0,0,0,0,0,0,52,235,252,253,253,253,162,142,42,12,12,12,12,5,2,155,253,117,0,0,0,0,0,0,0,0,0,0,118,253,210,32,19,19,4,0,0,0,0,0,0,0,0,150,253,117,0,0,0,0,0,0,0,0,0,0,118,253,99,0,0,0,0,0,0,0,0,0,0,0,11,190,253,117,0,0,0,0,0,0,0,0,0,0,15,32,3,0,0,0,0,0,0,0,0,0,0,0,27,253,248,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,226,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,241,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,168,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,139,240,51,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,128,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,197,254,224,101,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,195,254,254,254,254,216,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,233,121,206,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,243,254,99,0,123,254,254,243,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,218,7,0,149,254,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,164,0,0,180,254,254,255,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,164,0,0,179,254,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,191,8,0,131,254,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,220,254,213,76,106,254,254,246,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,223,254,254,237,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,111,216,234,249,250,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,192,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,251,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,250,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,15,73,134,218,251,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,226,254,254,254,254,230,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,165,74,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,223,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,234,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,213,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,215,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,209,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,67,161,209,219,226,108,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,38,108,132,254,245,181,212,122,230,206,163,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,250,247,77,0,0,0,32,105,181,213,58,0,0,0,0,0,0,0,0,0,0,0,0,0,32,238,254,237,102,22,0,0,0,0,0,0,0,154,225,0,0,0,0,0,0,0,0,0,0,0,0,15,121,254,175,50,0,0,0,0,0,0,0,0,0,92,230,48,0,0,0,0,0,0,0,0,0,3,16,190,254,245,156,0,0,0,0,0,0,0,0,0,0,133,254,247,0,0,0,0,0,0,0,0,0,105,226,254,254,140,0,0,0,0,0,0,0,0,0,0,0,217,254,159,0,0,0,0,0,0,0,0,0,132,254,254,225,22,0,0,0,0,0,0,0,0,0,0,83,253,247,89,0,0,0,0,0,0,0,0,8,216,254,189,30,0,0,0,0,0,0,0,0,0,0,20,166,254,225,0,0,0,0,0,0,0,0,0,136,254,254,178,0,0,0,0,0,0,0,0,0,0,0,114,254,254,86,0,0,0,0,0,0,0,0,0,161,254,219,207,7,0,0,0,0,0,0,0,0,0,30,237,255,219,14,0,0,0,0,0,0,0,0,0,174,254,250,63,0,0,0,0,0,0,0,0,0,0,97,254,254,183,0,0,0,0,0,0,0,0,0,0,254,254,246,19,0,0,0,0,0,0,0,0,39,163,229,253,146,23,0,0,0,0,0,0,0,0,0,0,254,254,119,0,0,0,0,0,0,0,0,0,132,226,254,171,0,0,0,0,0,0,0,0,0,0,0,0,184,254,240,79,0,0,0,0,0,0,0,140,198,254,192,63,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,97,9,2,19,12,19,19,173,242,236,178,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,172,254,212,184,254,226,254,254,254,254,150,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,166,176,235,252,254,254,230,214,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,25,245,254,254,201,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,90,159,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,7,123,254,254,254,154,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,154,253,253,253,253,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,210,253,253,253,253,253,253,253,253,215,98,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,234,228,236,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,213,253,253,248,137,99,99,24,0,32,151,253,166,32,3,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,130,0,0,0,0,11,77,193,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,3,162,253,253,253,168,0,0,0,34,166,253,253,253,253,235,57,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,253,240,149,50,141,234,253,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,4,83,230,253,253,253,253,253,253,253,253,253,253,233,89,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,151,253,253,253,253,253,253,253,253,159,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,140,230,253,253,253,253,253,253,100,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,253,253,253,253,253,253,253,101,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,253,233,194,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,234,65,12,165,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,195,253,235,65,0,0,11,151,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,204,0,0,0,30,224,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,224,106,166,200,237,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,253,253,253,253,253,253,157,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,253,253,253,253,253,253,253,211,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,150,253,253,253,253,253,153,26,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,148,254,255,203,146,146,94,38,38,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,253,253,253,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,249,253,253,253,253,253,253,253,251,150,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,100,18,102,102,123,164,210,238,253,253,253,129,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,104,214,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,253,253,241,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,22,235,253,246,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,184,253,253,253,161,0,0,0,0,0,0,8,18,0,0,0,0,0,0,0,0,0,0,0,0,0,82,239,253,253,253,233,54,0,0,0,0,0,0,21,47,0,0,0,0,0,0,0,0,0,0,0,0,5,189,252,253,253,252,86,0,3,28,17,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,143,253,253,253,253,248,128,173,180,253,223,250,199,129,66,20,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,222,253,253,253,253,253,253,253,253,253,253,253,253,253,253,221,34,0,0,0,0,0,0,0,0,0,0,0,222,253,253,253,253,253,253,238,213,183,183,183,183,110,75,34,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,156,125,37,37,30,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,36,133,226,214,133,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,241,248,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,165,205,205,95,225,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,73,165,242,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,175,253,253,253,221,59,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,218,240,253,253,225,116,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,110,219,230,255,253,253,253,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,254,253,253,253,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,242,242,184,123,122,122,144,245,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,233,27,0,0,0,0,0,0,0,0,0,0,39,73,28,0,0,0,0,0,0,0,0,0,0,0,47,239,168,0,0,0,0,0,0,0,0,0,0,0,133,253,206,86,65,0,0,0,0,0,0,0,0,81,217,253,168,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,245,218,218,114,98,98,98,109,218,242,253,225,47,0,0,0,0,0,0,0,0,0,0,0,18,144,212,253,253,253,253,253,253,253,254,253,253,253,227,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,35,132,225,253,253,253,253,254,184,115,11,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,0,0,0,0,0,0,0,94,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,109,233,43,0,0,0,0,0,0,94,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,80,0,0,0,0,0,0,94,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,253,228,33,0,0,0,0,0,0,166,253,243,16,0,0,0,0,0,0,0,0,0,0,0,0,3,114,253,249,124,0,0,0,0,0,0,54,239,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,216,0,0,0,0,0,0,0,166,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,216,0,0,0,0,0,0,0,211,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,223,50,16,0,0,0,0,0,211,253,234,20,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,253,253,253,203,92,56,56,93,180,241,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,199,253,253,253,253,253,253,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,80,197,253,253,253,253,253,253,253,182,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,55,55,55,55,114,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,223,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,219,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,64,0,0,0,64,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,64,255,255,191,64,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,128,0,0,0,128,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,64,191,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,216,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,255,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,252,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,253,170,56,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,253,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,0,0,126,225,226,150,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,140,4,179,253,253,254,253,178,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,139,128,252,252,252,253,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,228,253,252,252,214,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,214,28,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,254,253,165,191,254,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,252,252,253,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,252,252,253,233,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,252,252,253,252,252,151,128,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,66,160,159,233,254,201,159,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,253,254,253,253,253,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,254,253,253,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,225,85,84,84,84,213,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,150,12,0,0,0,14,231,253,174,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,5,189,253,237,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,251,253,130,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,225,253,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,253,211,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,229,255,205,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,166,253,205,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,99,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,247,253,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,227,253,248,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,213,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,253,253,202,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,244,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,70,70,120,203,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,106,189,241,253,254,253,253,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,157,240,254,253,253,253,254,253,253,253,222,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,247,253,253,254,253,253,253,254,253,244,160,50,0,0,0,0,0,0,0,0,0,0,0,0,0,15,195,254,254,254,228,160,42,141,254,254,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,244,89,15,106,189,249,253,254,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,194,191,207,254,253,253,253,254,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,253,253,253,254,253,253,253,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,254,254,254,228,254,254,254,195,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,23,23,23,148,254,253,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,240,254,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,254,202,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,185,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,253,210,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,224,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,165,155,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,1,101,255,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,97,197,57,0,0,0,0,12,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,248,74,0,0,0,0,12,253,253,184,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,203,253,230,0,0,0,0,0,101,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,133,0,0,0,0,0,172,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,227,253,248,13,0,0,0,0,101,253,253,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,253,253,245,0,0,0,0,0,170,253,253,251,68,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,119,0,0,0,0,65,243,253,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,186,4,0,0,10,78,238,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,147,2,60,134,195,253,253,253,253,246,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,229,197,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,253,253,253,253,249,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,172,253,253,253,253,182,59,93,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,124,10,5,2,0,78,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,216,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,117,242,253,249,63,2,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,158,252,252,252,253,242,160,252,146,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,252,252,253,252,252,252,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,233,252,252,231,204,207,252,252,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,58,0,4,72,184,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,143,6,0,0,19,230,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,224,24,0,0,0,123,252,252,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,155,46,0,0,0,57,237,252,252,154,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,180,252,253,250,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,205,252,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,182,252,252,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,252,252,216,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,210,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,55,138,243,255,253,253,117,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,178,252,252,252,253,252,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,252,252,252,252,253,252,252,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,252,252,252,253,252,252,252,252,218,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,252,252,252,253,252,168,232,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,253,243,168,95,0,93,253,255,232,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,137,0,0,0,76,248,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,227,48,0,0,0,0,178,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,252,252,66,0,0,0,0,34,238,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,253,252,221,25,0,0,0,0,93,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,255,253,69,0,0,0,0,49,233,253,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,253,202,25,0,0,0,0,184,252,252,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,92,0,0,0,0,66,234,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,243,50,0,0,0,62,236,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,253,92,0,0,0,138,252,252,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,255,154,0,0,116,255,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,223,252,253,236,78,89,203,253,252,240,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,246,253,252,252,252,252,253,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,252,252,252,252,253,193,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,201,252,252,252,200,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,152,233,254,253,193,152,51,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,223,253,252,131,91,151,232,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,142,20,0,0,0,0,163,243,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,130,0,0,0,0,0,0,0,122,243,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,224,20,0,0,0,0,31,132,152,233,254,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,62,61,21,142,233,252,253,252,253,212,131,10,0,0,0,0,0,0,0,0,0,0,0,0,152,253,234,152,254,253,254,253,203,203,41,0,152,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,252,172,50,0,0,62,183,233,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,254,213,142,61,0,0,0,41,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,50,10,0,0,0,0,21,223,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,223,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,253,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,252,172,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,190,255,253,253,253,218,121,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,253,252,252,252,252,252,222,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,202,97,26,26,26,131,178,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,82,0,0,0,0,0,9,185,248,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,68,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,229,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,221,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,226,253,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,223,252,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,222,252,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,123,213,213,213,213,213,213,214,250,252,142,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,219,252,252,252,252,252,252,252,253,252,252,96,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,188,217,252,252,252,224,199,249,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,210,252,252,248,205,38,0,76,128,246,154,11,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,252,232,133,83,0,0,0,0,0,213,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,126,106,28,0,0,0,0,0,0,0,206,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,41,141,229,253,255,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,169,243,253,252,208,96,84,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,214,156,56,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,203,204,253,253,253,129,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,227,197,196,196,221,253,234,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,56,31,0,0,0,25,69,224,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,228,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,126,0,0,0,0,0,0,0,0,57,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,231,19,0,0,0,0,0,0,7,150,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,215,110,85,85,85,85,134,204,252,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,53,228,252,241,165,252,252,190,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,31,130,161,255,255,194,255,255,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,156,253,253,253,253,253,253,253,253,253,96,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,253,253,238,235,251,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,228,228,201,105,105,105,20,9,221,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,71,189,253,253,240,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,38,38,161,253,253,253,239,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,167,167,228,253,253,253,253,253,253,171,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,253,253,253,253,253,253,253,253,253,253,181,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,253,253,253,212,197,197,197,197,245,253,253,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,191,167,68,18,0,0,0,0,58,116,247,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,173,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,138,250,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,234,253,253,152,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,100,100,231,253,253,107,16,0,0,0,0,0,0,0,0,0,3,106,47,0,0,0,19,106,106,136,230,248,253,253,253,253,107,2,0,0,0,0,0,0,0,0,0,0,7,253,243,236,236,236,239,253,253,253,253,253,253,253,112,18,2,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,253,253,253,253,253,253,253,161,96,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,199,253,253,253,253,229,129,129,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,151,255,254,199,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,180,249,189,103,126,222,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,148,236,214,137,17,0,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,186,247,83,251,244,171,2,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,248,128,18,132,74,254,16,49,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,158,0,0,0,3,221,134,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,201,204,6,0,0,0,0,109,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,70,0,0,0,0,0,30,249,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,249,174,1,0,0,0,0,0,0,246,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,249,49,0,0,0,0,0,0,0,246,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,207,171,0,0,0,0,0,0,0,0,246,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,149,0,0,0,0,0,0,0,35,249,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,67,0,0,0,0,0,0,0,83,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,239,22,0,0,0,0,0,0,0,169,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,231,0,0,0,0,0,0,0,5,251,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,236,14,0,0,0,0,0,4,151,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,112,0,0,0,0,5,149,253,126,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,232,46,0,0,5,149,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,222,233,167,103,161,247,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,164,252,254,238,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,30,0,0,0,0,5,139,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,222,23,0,0,0,28,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,199,0,0,0,0,30,253,163,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,134,0,0,0,0,135,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,214,206,23,0,0,0,32,219,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,150,253,125,0,0,0,0,103,253,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,237,17,0,0,0,12,215,248,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,140,253,84,0,0,0,0,97,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,138,253,202,5,0,0,0,0,168,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,246,35,0,0,0,0,14,223,233,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,232,253,118,0,0,0,0,0,108,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,122,2,0,0,0,0,0,185,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,155,7,0,0,0,13,60,242,239,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,211,206,206,206,216,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,29,119,169,226,226,226,232,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,239,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,168,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,153,141,141,53,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,252,252,253,252,252,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,94,168,178,252,252,252,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,28,65,240,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,243,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,172,252,252,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,241,252,252,202,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,253,253,253,254,253,143,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,203,252,252,252,253,252,149,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,56,106,216,252,252,203,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,128,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,250,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,158,0,0,0,0,0,0,0,0,0,0,0,26,200,225,51,0,0,0,0,0,0,0,0,26,150,249,253,84,0,0,0,0,0,0,0,0,0,0,0,57,253,253,179,22,0,0,0,0,0,0,29,216,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,19,190,252,253,234,169,169,108,44,45,57,216,252,252,202,38,0,0,0,0,0,0,0,0,0,0,0,0,0,19,156,216,252,252,252,253,240,240,252,253,233,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,28,116,139,140,215,252,252,140,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,91,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,91,0,0,0,0,0,0,21,102,203,243,203,203,82,0,0,0,0,0,0,0,0,0,0,0,0,102,254,112,0,0,0,0,0,82,254,253,254,233,203,223,254,131,0,0,0,0,0,0,0,0,0,0,0,142,253,151,0,0,0,0,41,243,253,212,91,30,0,20,253,252,41,0,0,0,0,0,0,0,0,0,0,102,214,31,0,0,0,62,254,253,203,20,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,21,203,253,252,20,0,0,0,0,41,253,252,102,0,0,0,0,0,0,0,0,0,0,82,255,253,0,0,152,253,254,131,0,0,0,0,132,253,244,162,41,0,0,0,0,0,0,0,0,0,0,0,131,252,203,81,51,232,172,10,0,0,62,183,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,254,253,254,253,254,253,254,233,142,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,131,151,151,151,151,151,232,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,119,245,194,68,18,105,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,185,254,254,254,254,254,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,230,254,254,254,254,254,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,194,248,246,65,133,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,47,8,190,104,11,197,254,225,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,62,229,254,227,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,249,254,228,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,24,116,237,254,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,176,254,254,254,254,254,254,237,130,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,254,204,195,198,255,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,59,59,10,0,3,59,187,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,199,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,185,254,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,65,192,254,247,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,30,30,30,30,11,7,30,169,254,254,251,78,0,0,0,0,0,0,0,0,0,0,0,0,0,7,73,232,254,254,254,254,199,187,254,254,254,247,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,254,254,254,254,254,254,254,254,254,251,184,107,19,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,254,254,254,254,254,254,254,254,254,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,254,254,254,254,238,126,35,35,35,35,35,35,26,0,0,0,0,0,0,0,0,0,0,0,0,27,135,135,233,204,135,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,46,130,237,254,254,145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,107,171,253,253,253,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,170,253,253,253,253,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,111,223,253,253,253,253,253,253,253,253,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,245,231,253,253,253,253,240,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,195,129,188,253,253,253,239,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,190,233,253,253,217,104,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,237,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,200,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,156,253,253,253,253,233,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,96,253,253,253,253,253,253,194,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,253,253,239,151,86,235,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,158,253,253,239,79,0,0,192,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,240,78,0,0,0,150,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,253,253,170,0,0,0,0,175,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,226,11,0,0,0,25,216,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,250,211,106,106,133,235,253,253,220,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,96,253,253,253,253,253,253,253,253,220,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,207,253,253,253,253,253,221,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,85,129,214,226,129,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,43,216,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,67,143,207,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,215,254,253,253,253,232,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,251,253,254,253,235,173,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,219,253,181,88,88,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,42,75,122,30,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,254,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,255,253,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,109,33,138,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,210,15,0,67,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,176,0,0,96,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,85,0,14,207,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,250,60,0,43,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,116,0,25,216,253,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,209,254,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,16,141,239,253,239,103,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,253,253,253,234,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,240,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,215,138,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,156,231,156,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,254,250,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,85,115,254,253,229,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,165,45,0,171,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,238,156,255,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,107,236,253,254,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,251,253,238,251,166,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,235,253,253,36,223,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,244,83,0,58,254,223,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,247,253,168,0,0,3,179,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,49,0,0,0,79,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,240,16,0,0,0,79,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,174,0,0,0,0,116,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,175,0,0,0,80,254,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,180,2,8,80,217,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,181,205,254,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,217,253,253,253,244,161,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,155,230,155,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,191,252,175,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,252,227,217,156,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,253,252,252,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,252,148,190,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,35,0,0,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,159,5,11,155,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,144,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,144,0,120,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,192,233,253,253,208,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,252,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,180,252,253,252,246,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,253,128,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,182,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,255,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,246,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,248,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,141,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,208,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,164,254,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,254,253,253,253,196,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,147,253,254,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,254,253,253,194,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,224,253,253,254,253,238,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,182,253,253,253,254,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,253,253,254,184,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,253,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,253,253,253,253,249,241,241,198,108,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,253,254,253,253,253,253,206,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,253,253,254,253,253,253,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,253,253,253,253,254,253,253,253,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,253,254,253,253,253,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,253,253,253,253,253,255,253,253,253,253,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,253,253,255,253,253,253,232,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,208,253,253,253,253,255,253,241,197,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,120,204,253,253,191,120,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,254,138,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,79,162,204,254,253,253,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,197,253,253,253,254,209,203,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,253,246,59,70,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,179,137,43,233,74,75,206,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,150,254,254,204,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,152,254,253,219,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,143,185,241,253,254,135,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,145,234,253,253,253,253,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,239,253,254,253,222,137,243,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,166,254,222,95,0,0,53,192,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,92,0,0,0,0,0,160,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,221,254,102,0,0,0,0,0,0,0,0,0,0,0,13,118,17,0,0,0,0,0,0,0,0,0,7,160,254,254,84,0,0,0,0,0,0,0,0,0,0,0,98,253,228,51,0,0,0,0,0,0,26,68,187,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,49,196,253,228,80,32,0,0,26,123,223,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,186,253,253,230,208,208,225,253,254,253,228,161,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,118,243,254,253,253,253,253,191,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,60,241,254,255,254,171,136,136,136,21,18,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,253,253,253,253,253,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,235,150,82,82,82,82,173,200,224,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,164,0,0,0,0,0,0,27,152,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,124,0,0,0,0,0,69,206,253,253,201,142,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,6,0,0,0,18,134,247,253,253,89,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,244,253,252,203,22,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,204,253,248,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,183,253,231,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,231,253,159,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,145,253,238,160,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,200,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,64,0,0,0,0,0,40,233,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,164,0,0,0,0,0,0,144,253,248,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,223,19,0,0,0,0,0,78,249,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,141,3,0,0,0,0,0,175,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,253,203,135,84,45,84,128,249,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,195,253,253,253,237,253,253,253,196,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,130,201,253,253,253,209,135,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,72,152,254,253,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,203,243,253,252,253,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,254,253,254,213,234,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,252,131,50,50,10,112,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,41,0,0,0,0,0,152,253,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,142,253,252,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,173,254,253,254,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,252,253,212,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,244,122,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,163,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,255,253,132,51,132,92,52,51,72,152,153,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,253,252,253,252,253,252,253,252,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,255,253,254,253,254,253,254,253,254,253,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,92,232,253,252,253,171,112,151,50,50,50,50,50,50,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,174,148,148,60,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,252,252,217,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,56,126,152,240,253,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,27,0,0,0,35,227,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,194,0,0,0,0,60,252,249,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,247,237,37,0,0,0,0,191,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,170,7,0,0,0,190,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,245,252,118,0,0,0,190,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,126,0,0,0,190,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,223,35,0,80,242,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,145,18,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,237,237,216,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,101,242,252,252,170,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,134,169,253,252,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,106,223,252,252,253,173,112,252,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,87,254,253,232,185,106,0,0,22,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,171,252,239,132,32,0,0,0,0,57,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,235,62,0,0,0,0,0,0,127,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,246,210,14,0,0,0,0,0,0,0,153,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,242,124,0,0,0,0,0,18,185,249,226,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,222,146,146,146,96,38,38,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,249,184,184,175,76,76,36,0,0,0,0,0,0,0,0,0,0,0,0,0,95,218,248,248,248,253,253,253,253,253,253,253,253,253,237,222,222,102,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,102,139,164,210,210,210,220,253,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,65,122,228,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,245,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,250,253,253,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,158,242,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,182,253,253,253,249,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,234,253,253,253,224,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,234,253,253,253,179,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,142,252,253,253,253,214,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,253,253,253,253,188,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,137,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,226,253,253,253,166,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,242,29,0,0,0,0,0,0,117,159,20,0,0,0,0,0,0,0,0,0,0,0,0,0,49,243,253,253,251,142,66,0,0,0,0,27,121,252,224,75,0,0,0,0,0,0,0,0,0,0,0,0,0,152,241,253,253,253,252,249,203,249,249,250,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,158,248,253,253,253,253,253,253,253,253,253,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,107,145,247,207,253,195,145,100,131,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,9,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,79,109,179,242,254,254,254,186,81,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,254,254,254,254,254,254,254,254,254,211,52,1,0,0,0,0,0,0,0,0,0,0,0,0,16,90,238,254,247,254,254,254,243,160,149,170,245,254,254,49,0,0,0,0,0,0,0,0,0,0,0,54,237,254,243,128,157,254,254,226,42,0,0,0,59,239,254,234,11,0,0,0,0,0,0,0,0,0,54,237,254,225,54,0,38,141,141,42,0,0,0,0,0,59,248,254,161,0,0,0,0,0,0,0,0,13,211,254,191,14,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,0,0,0,0,0,0,0,0,155,254,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248,254,0,0,0,0,0,0,0,0,240,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,0,0,0,0,0,0,0,0,255,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,250,239,0,0,0,0,0,0,0,0,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,56,0,0,0,0,0,0,0,0,255,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,102,248,122,1,0,0,0,0,0,0,0,0,208,254,140,0,0,0,0,0,0,0,0,0,0,0,0,126,252,236,6,0,0,0,0,0,0,0,0,0,150,254,248,62,0,0,0,0,0,0,0,0,0,75,166,252,236,25,0,0,0,0,0,0,0,0,0,0,38,233,254,246,172,88,16,0,0,0,13,67,157,251,254,214,25,0,0,0,0,0,0,0,0,0,0,0,0,42,185,254,254,254,241,238,238,238,241,254,254,214,134,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,73,157,235,254,254,254,254,191,178,89,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,8,8,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,186,254,255,180,136,136,136,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,235,253,253,253,253,253,253,253,253,202,85,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,227,230,253,253,237,220,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,237,253,223,38,36,65,65,45,24,65,217,253,241,86,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,51,0,0,0,0,0,0,0,24,167,253,211,19,0,0,0,0,0,0,0,0,0,0,0,32,244,253,174,4,0,0,0,0,0,0,0,0,99,253,253,53,0,0,0,0,0,0,0,0,0,0,0,36,253,253,164,0,0,0,0,0,0,0,0,0,16,210,253,111,0,0,0,0,0,0,0,0,0,0,0,36,253,253,164,0,0,0,0,0,0,0,0,0,0,166,253,217,20,0,0,0,0,0,0,0,0,0,0,55,253,253,164,0,0,0,0,0,0,0,0,0,0,146,253,253,35,0,0,0,0,0,0,0,0,0,0,154,253,253,82,0,0,0,0,0,0,0,0,0,0,48,253,253,35,0,0,0,0,0,0,0,0,0,0,154,253,253,47,0,0,0,0,0,0,0,0,0,0,48,253,253,126,0,0,0,0,0,0,0,0,0,0,154,253,253,47,0,0,0,0,0,0,0,0,0,0,48,253,253,153,0,0,0,0,0,0,0,0,0,0,154,253,253,99,0,0,0,0,0,0,0,0,0,0,48,253,253,152,0,0,0,0,0,0,0,0,0,0,148,253,253,164,0,0,0,0,0,0,0,0,0,0,53,253,253,153,0,0,0,0,0,0,0,0,0,0,36,253,253,175,4,0,0,0,0,0,0,0,0,4,176,253,253,139,0,0,0,0,0,0,0,0,0,0,36,253,253,253,127,2,0,0,0,0,0,0,3,127,253,253,238,28,0,0,0,0,0,0,0,0,0,0,10,164,253,253,253,128,66,25,0,0,55,66,184,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,36,232,253,253,253,253,220,201,201,245,253,253,253,238,140,11,0,0,0,0,0,0,0,0,0,0,0,0,0,26,131,195,253,253,253,253,253,253,253,253,194,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,75,135,135,218,217,135,135,19,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,225,225,225,226,225,225,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,252,252,252,253,252,252,246,197,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,107,207,252,252,252,252,253,252,252,252,252,216,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,252,236,112,112,158,252,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,253,228,126,0,0,0,135,253,253,255,253,222,38,0,0,0,0,0,0,0,0,0,0,0,182,252,252,253,252,70,0,0,0,0,6,130,252,253,252,252,209,0,0,0,0,0,0,0,0,0,0,98,240,252,252,228,148,12,0,0,0,0,0,7,133,253,252,252,246,119,0,0,0,0,0,0,0,0,76,243,252,252,252,140,0,0,0,0,0,0,0,0,0,159,252,252,252,252,0,0,0,0,0,0,0,0,113,252,252,252,252,63,0,0,0,0,0,0,0,0,0,113,252,252,252,252,0,0,0,0,0,0,0,0,176,253,253,253,190,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,0,0,0,0,0,0,0,0,253,252,252,242,74,0,0,0,0,0,0,0,0,0,0,159,252,252,252,204,0,0,0,0,0,0,0,0,253,252,252,223,0,0,0,0,0,0,0,0,13,73,197,253,252,252,230,25,0,0,0,0,0,0,0,0,253,252,252,227,13,0,0,0,4,29,29,29,156,252,252,253,252,230,121,0,0,0,0,0,0,0,0,0,253,252,252,252,189,79,126,140,153,252,253,252,252,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,255,253,253,253,253,255,253,253,253,253,204,94,0,0,0,0,0,0,0,0,0,0,0,168,243,252,252,252,253,252,252,252,252,253,252,252,242,167,94,0,0,0,0,0,0,0,0,0,0,0,0,0,97,208,252,252,253,252,252,252,252,253,233,164,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,84,84,84,84,84,84,84,84,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,179,255,253,128,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,169,234,252,203,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,104,252,186,68,7,81,234,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,151,6,0,0,0,97,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,184,0,0,0,0,85,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,84,28,0,0,0,0,160,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,233,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,253,253,254,253,253,203,141,141,53,79,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,216,252,252,252,228,252,252,252,253,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,148,56,31,56,56,156,168,187,252,177,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,227,31,0,0,0,0,0,0,7,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,199,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,231,228,21,0,0,0,0,0,0,0,18,60,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,223,0,0,0,0,0,0,0,0,172,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,223,0,0,0,0,0,0,0,57,238,239,63,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,179,0,0,0,0,0,0,14,238,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,74,0,0,0,0,0,0,15,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,253,74,0,0,0,0,0,0,95,253,213,35,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,74,0,0,0,0,0,0,164,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,195,17,0,0,0,0,0,47,233,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,178,0,0,0,0,0,0,148,253,253,178,0,0,0,89,0,0,0,0,0,0,0,0,0,106,254,254,254,29,0,0,0,0,0,44,229,254,254,254,254,254,255,236,62,0,0,0,0,0,0,0,0,105,253,253,253,29,0,32,60,87,209,229,253,253,253,253,253,253,196,159,0,0,0,0,0,0,0,0,0,114,253,253,253,87,164,212,253,253,253,254,253,253,253,204,89,89,5,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,226,178,178,254,253,253,146,4,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,253,253,226,117,74,48,0,18,254,253,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,119,119,119,14,0,0,0,0,149,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,253,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,215,252,246,197,198,150,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,123,169,253,252,252,252,252,253,252,155,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,255,253,165,47,0,141,241,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,246,252,252,168,42,6,0,0,101,249,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,195,195,118,0,0,0,0,0,144,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,29,29,107,253,252,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,252,253,252,227,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,253,255,253,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,163,253,252,252,252,252,253,252,252,252,237,0,0,0,0,0,0,0,0,26,57,135,19,0,0,0,0,29,252,253,252,252,252,220,133,103,239,252,252,0,0,0,0,0,0,0,0,113,252,252,99,0,0,0,0,10,161,225,223,223,129,37,0,0,197,252,252,0,0,0,0,0,0,0,0,113,252,252,239,140,79,0,0,0,0,0,0,0,0,0,0,126,227,252,252,0,0,0,0,0,0,0,0,255,253,253,253,253,255,253,253,159,113,114,113,113,113,113,255,253,253,240,63,0,0,0,0,0,0,0,0,90,195,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,99,0,0,0,0,0,0,0,0,0,0,19,55,55,55,56,103,195,195,195,253,252,252,252,220,253,201,86,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,84,37,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,125,228,254,254,254,164,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,163,253,253,253,253,253,253,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,253,253,253,253,253,253,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,224,116,19,19,19,39,216,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,64,0,0,0,0,0,46,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,173,253,51,0,0,0,0,0,33,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,38,8,0,0,0,0,0,33,253,250,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,248,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,156,253,247,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,103,183,183,76,38,0,0,11,89,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,198,253,253,238,222,231,142,46,156,253,253,230,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,172,56,67,245,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,190,12,0,0,73,199,253,253,253,211,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,188,60,0,0,0,0,79,253,253,253,168,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,149,0,0,0,0,121,230,253,239,234,247,170,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,131,6,128,143,143,231,253,250,67,0,74,110,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,182,253,253,253,253,218,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,186,186,253,216,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,24,234,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,157,0,0,37,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,227,0,0,50,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,233,253,124,0,0,128,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,207,21,0,20,204,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,254,87,0,0,55,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,167,4,0,0,127,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,212,31,0,0,37,244,253,99,0,0,8,19,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,254,102,0,0,0,112,253,224,12,14,110,201,85,0,0,0,0,0,0,0,0,0,0,0,0,14,218,253,228,12,0,0,33,228,253,229,98,232,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,196,163,163,163,195,255,254,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,254,253,253,253,253,254,253,245,192,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,216,242,254,253,253,253,253,243,113,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,54,54,76,233,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,228,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,242,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,244,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,231,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,123,97,85,160,215,252,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,151,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,254,234,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,229,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,196,169,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,252,185,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,241,215,252,252,253,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,178,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,57,0,0,0,0,0,19,224,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,118,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,78,4,0,0,10,79,204,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,178,169,169,197,252,253,252,233,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,253,252,252,252,253,196,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,103,139,190,253,252,214,139,28,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,224,125,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,252,228,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,253,253,253,253,253,252,228,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,19,19,19,110,165,253,253,252,228,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,25,106,213,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,187,253,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,85,169,253,253,251,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,79,169,216,253,253,253,249,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,72,113,202,202,214,253,253,253,253,253,200,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,253,253,253,253,253,253,253,243,171,58,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,253,253,253,253,253,253,162,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,218,253,253,253,253,253,253,242,183,103,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,78,78,78,174,207,207,215,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,193,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,221,253,217,0,0,0,0,0,0,0,0,0,0,0,27,154,156,25,0,0,0,0,0,0,7,27,118,221,253,224,40,0,0,0,0,0,0,0,0,0,0,0,255,253,253,211,150,150,107,20,20,121,174,253,253,253,251,90,0,0,0,0,0,0,0,0,0,0,0,0,241,240,246,253,253,253,253,253,253,253,253,253,253,231,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,237,247,249,253,253,253,253,253,252,156,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,123,230,253,152,123,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,59,222,199,109,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,157,253,253,254,253,156,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,246,70,121,222,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,213,72,0,0,54,253,161,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,93,0,0,0,4,200,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,253,24,0,0,0,0,130,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,203,4,0,0,0,0,4,86,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,148,0,0,0,0,0,0,151,176,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,181,7,0,0,0,0,98,249,241,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,240,253,77,0,0,56,145,251,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,254,177,251,255,254,248,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,246,253,237,235,97,44,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,65,2,0,0,25,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,235,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,205,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,240,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,61,155,204,255,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,11,109,190,220,253,247,252,253,230,135,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,65,173,254,253,253,213,183,30,96,207,223,254,208,0,0,0,0,0,0,0,0,0,0,0,0,18,89,214,254,254,246,174,54,13,0,0,4,56,230,254,153,0,0,0,0,0,0,0,0,0,0,0,114,243,253,245,178,85,50,0,0,0,0,0,77,230,254,191,3,0,0,0,0,0,0,0,0,0,0,150,245,239,126,22,0,0,0,0,0,0,2,86,251,253,224,41,0,0,0,0,0,0,0,0,0,0,0,210,253,101,0,0,0,0,0,0,0,21,173,253,254,193,40,0,0,0,0,0,0,0,0,0,0,0,0,210,253,186,40,4,0,0,0,0,74,206,253,253,121,5,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,254,200,195,101,23,116,242,254,248,93,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,69,194,253,253,253,253,250,252,253,218,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,49,101,148,248,254,253,253,242,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,132,248,231,194,218,254,248,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,161,253,229,48,0,19,205,253,211,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,230,44,0,0,0,127,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,244,239,47,0,0,0,103,243,240,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,253,122,0,0,0,48,220,235,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,131,2,0,0,104,244,239,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,231,203,20,0,66,184,239,200,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,202,145,235,251,211,132,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,144,253,253,202,82,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,67,67,164,251,98,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,132,132,223,250,254,254,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,254,254,254,254,252,248,254,243,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,189,143,85,72,104,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,61,46,18,3,0,0,0,156,254,245,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,223,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,209,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,216,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,249,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,228,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,242,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,245,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,231,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,17,0,0,0,0,0,0,0,0,174,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,97,0,0,0,0,0,0,0,9,200,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,241,194,0,0,0,0,0,0,0,84,254,250,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,138,0,0,0,0,0,0,0,245,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,254,97,0,0,0,0,0,0,34,248,232,54,0,0,0,0,0,0,0,0,0,0,0,0,0,1,150,254,242,50,0,0,0,0,0,4,201,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,112,0,0,0,0,0,0,84,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,28,212,254,225,17,0,0,0,0,74,93,200,254,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,133,120,130,130,230,239,251,254,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,254,254,254,254,254,254,254,254,254,231,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,254,254,250,156,156,104,48,124,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,38,10,0,0,0,30,225,254,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,239,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,229,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,190,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,252,199,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,240,252,252,252,232,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,88,234,253,252,252,252,252,244,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,157,252,252,253,188,115,242,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,228,10,0,56,136,66,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,252,252,160,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,248,252,252,196,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,203,253,255,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,83,253,252,247,197,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,247,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,230,252,242,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,172,200,63,0,0,0,0,0,122,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,212,21,0,0,0,0,23,128,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,235,82,41,41,41,104,206,252,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,252,252,252,252,252,252,253,252,252,252,126,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,106,207,252,252,252,252,253,252,240,196,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,119,132,252,252,190,119,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,194,79,45,0,0,0,0,0,0,45,80,142,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,247,254,251,198,198,198,198,198,198,251,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,228,255,254,255,254,254,254,254,254,254,228,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,67,67,112,108,150,154,67,91,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,246,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,242,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,224,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,148,37,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,255,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,123,252,252,253,240,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,52,103,252,205,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,56,0,76,244,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,216,189,19,0,0,169,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,234,244,56,0,0,0,169,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,240,187,38,0,0,0,69,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,163,0,0,0,0,32,229,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,38,0,0,0,0,82,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,202,0,0,0,0,0,169,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,102,0,0,0,0,63,206,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,78,0,0,0,0,79,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,233,22,0,0,0,0,128,240,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,205,13,0,0,0,38,253,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,168,0,0,0,38,175,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,128,4,4,128,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,214,66,179,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,252,253,252,99,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,178,252,252,190,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,103,159,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,147,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,254,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,245,254,254,254,84,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,223,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,225,212,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,254,254,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,216,254,254,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,255,254,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,255,255,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,69,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,163,195,241,182,163,163,79,73,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,153,198,218,254,253,253,253,253,254,253,253,245,235,120,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,36,36,36,107,127,127,127,204,216,242,254,213,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,208,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,248,238,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,177,253,240,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,103,249,253,206,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,129,207,254,253,253,215,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,208,181,181,238,254,228,143,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,198,128,43,7,0,0,14,83,215,253,212,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,115,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,137,255,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,4,0,0,0,0,0,93,217,253,238,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,52,6,0,27,37,172,248,250,184,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,253,207,199,238,254,249,189,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,162,240,253,253,163,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,206,50,113,113,114,113,113,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,237,252,252,253,252,252,252,252,226,225,116,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,199,252,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,84,84,84,84,90,205,252,253,252,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,165,252,252,253,204,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,238,253,253,253,204,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,225,253,252,252,195,89,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,104,197,234,252,253,233,86,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,252,252,252,253,224,59,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,178,253,253,253,255,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,27,27,27,27,181,252,249,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,243,252,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,207,253,255,253,165,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,131,246,252,252,253,129,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,150,197,222,252,252,252,220,56,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,234,252,252,253,252,230,129,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,190,112,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,66,192,255,236,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,159,253,253,254,253,246,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,253,186,229,253,237,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,230,211,155,90,0,32,246,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,120,0,0,0,0,173,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,229,9,0,0,0,0,121,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,193,0,0,0,0,0,182,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,232,14,0,0,0,26,244,250,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,184,24,27,128,225,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,240,253,239,241,254,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,193,224,180,92,215,243,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,255,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,199,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,231,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,214,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,221,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,240,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,253,191,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,239,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,182,253,219,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,129,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,236,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,151,17,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,200,231,215,152,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,238,83,103,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,113,0,5,254,248,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,236,73,135,255,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,247,253,253,253,244,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,21,41,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,203,243,223,243,253,212,204,203,204,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,224,243,203,203,203,203,142,183,142,102,0,0,0,0,0,0,0,0,0,0,0,0,21,142,203,40,0,0,20,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,131,253,252,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,0,0,92,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,61,0,0,0,0,10,172,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,152,152,41,0,0,41,214,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,192,243,203,203,203,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,203,203,243,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,131,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,253,196,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,229,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,197,224,43,0,0,0,0,0,0,0,0,10,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,168,0,0,0,0,0,0,76,150,225,229,246,225,225,214,113,25,0,0,0,0,0,0,0,0,0,154,247,50,0,0,0,48,141,239,225,225,225,214,113,113,213,229,253,216,28,0,0,0,0,0,0,0,0,253,196,0,0,0,0,85,252,38,0,0,0,0,0,0,0,10,196,252,215,0,0,0,0,0,0,0,0,253,196,0,0,0,0,85,252,38,0,0,0,0,0,0,0,10,197,252,127,0,0,0,0,0,0,0,0,253,246,100,0,0,0,47,240,226,38,0,0,0,0,0,51,229,252,177,3,0,0,0,0,0,0,0,0,13,207,253,253,255,178,104,128,254,253,216,141,141,141,229,253,226,150,25,0,0,0,0,0,0,0,0,0,0,56,122,196,228,252,252,252,253,252,252,252,247,196,158,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,56,94,168,56,56,56,56,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,175,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,183,175,12,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,237,44,0,0,0,0,179,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,231,69,0,0,0,0,11,206,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,84,222,20,0,0,0,0,96,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,255,162,0,0,0,0,0,240,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,247,47,0,0,0,0,6,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,239,0,0,0,0,11,172,234,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,255,239,0,0,0,0,44,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,196,0,0,0,0,167,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,245,35,0,0,80,252,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,252,250,207,254,248,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,254,254,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,200,254,254,254,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,164,176,210,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,165,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,182,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,250,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,190,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,29,0,0,0,0,0,170,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,29,0,0,0,0,0,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,114,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,57,0,0,0,0,0,226,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,198,86,86,57,86,114,198,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,226,114,86,0,0,0,0,0,0,0,0,198,255,255,255,255,255,255,226,226,198,226,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,226,255,255,198,170,114,57,0,0,0,170,255,255,114,0,0,0,86,86,29,0,0,0,0,0,0,0,0,57,141,29,0,0,0,0,0,0,0,226,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,163,0,0,0,0,0,0,41,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,223,20,0,0,0,0,82,243,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,183,20,0,0,0,0,152,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,130,0,0,0,0,0,0,193,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,203,0,0,0,0,0,0,0,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,122,0,0,0,0,0,0,82,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,0,0,0,0,0,0,0,102,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,212,0,0,0,0,0,82,123,223,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,172,132,132,152,152,214,253,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,252,253,252,253,171,91,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,123,203,102,102,102,61,0,0,152,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,171,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,192,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,192,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,232,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,255,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,246,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,203,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,252,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,205,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,172,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,146,248,252,180,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,118,253,253,190,55,45,138,233,201,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,214,60,118,252,252,252,252,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,233,33,116,253,252,252,227,215,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,235,64,119,248,253,252,153,29,21,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,206,32,228,252,243,64,6,0,0,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,242,67,222,253,253,158,0,0,62,191,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,245,178,252,252,200,47,47,130,236,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,19,219,252,253,252,252,252,252,253,252,252,252,221,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,244,253,252,252,252,252,253,252,185,119,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,137,211,252,210,137,128,22,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,116,151,194,151,151,73,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,166,248,254,254,254,254,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,238,255,254,231,173,114,114,194,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,210,254,254,132,24,0,0,0,180,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,166,20,3,0,0,6,150,254,245,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,78,7,0,0,0,0,53,254,254,148,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,218,254,254,157,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,239,254,195,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,197,254,217,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,240,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,241,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,230,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,233,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,56,0,0,0,0,0,0,0,10,132,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,78,0,0,0,0,0,0,8,93,254,254,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,125,9,0,0,0,0,127,201,254,254,221,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,223,150,115,136,219,254,254,253,169,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,237,254,254,254,254,254,254,175,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,187,254,254,254,171,91,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,118,118,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,133,248,253,253,244,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,213,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,192,252,253,253,253,253,253,253,228,148,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,220,253,253,253,253,253,253,253,253,253,253,233,172,65,0,0,0,0,0,0,0,0,0,0,0,0,33,220,253,253,247,244,253,253,253,253,246,253,253,253,253,189,70,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,73,90,253,253,168,120,61,123,123,225,253,253,186,0,0,0,0,0,0,0,0,0,0,134,252,253,247,73,1,175,228,146,2,0,0,0,0,66,253,253,253,0,0,0,0,0,0,0,0,0,87,249,253,253,117,0,99,250,229,44,0,0,0,0,0,63,253,253,253,0,0,0,0,0,0,0,0,32,214,253,253,188,19,0,21,122,35,0,0,0,0,0,0,100,253,253,253,0,0,0,0,0,0,0,0,143,253,253,213,22,0,0,0,0,0,0,0,0,0,0,42,210,253,253,152,0,0,0,0,0,0,0,0,254,253,253,109,0,0,0,0,0,0,0,0,0,0,0,220,253,253,150,41,0,0,0,0,0,0,0,0,254,253,210,27,0,0,0,0,0,0,0,0,0,4,64,239,253,252,93,0,0,0,0,0,0,0,0,0,254,253,177,0,0,0,0,0,0,0,0,0,4,187,253,253,253,144,0,0,0,0,0,0,0,0,0,0,254,253,177,0,0,0,0,0,0,0,0,83,241,253,253,253,138,4,0,0,0,0,0,0,0,0,0,0,135,253,243,98,0,0,0,0,75,121,220,242,253,253,253,136,8,0,0,0,0,0,0,0,0,0,0,0,89,248,253,241,199,199,199,199,248,253,253,253,253,223,61,8,0,0,0,0,0,0,0,0,0,0,0,0,0,122,247,253,253,253,253,253,253,253,253,226,208,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,199,232,232,232,232,232,195,96,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,156,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,251,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,228,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,247,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,247,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,227,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,240,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,251,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,231,253,201,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,214,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,180,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,186,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,148,148,148,148,148,218,253,237,227,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,252,252,253,252,252,252,252,253,189,168,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,187,252,247,231,127,126,126,82,126,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,198,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,199,253,253,209,148,148,148,78,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,202,252,252,253,252,252,252,226,173,164,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,91,126,232,231,251,252,252,253,252,251,161,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,84,172,253,252,252,252,217,109,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,236,252,252,253,221,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,212,255,253,191,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,138,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,215,18,0,0,0,0,0,0,0,0,0,80,106,106,18,0,0,0,0,0,0,0,0,0,0,87,252,252,189,0,0,0,0,0,0,0,0,0,25,227,253,227,25,0,0,0,0,0,0,0,0,29,87,255,253,250,70,0,0,0,0,0,0,0,0,0,11,170,252,252,200,71,0,0,0,0,0,0,87,232,252,253,252,117,0,0,0,0,0,0,0,0,0,0,0,7,127,245,252,250,232,135,127,127,128,206,251,252,252,241,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,56,172,227,252,252,252,252,253,252,252,210,145,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,77,200,252,252,253,173,50,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,233,252,253,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,244,122,41,223,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,253,252,81,0,0,61,40,41,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,214,253,203,61,0,0,0,0,72,233,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,20,0,0,0,21,183,253,252,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,244,40,0,0,31,213,254,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,0,82,233,252,253,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,132,92,254,253,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,252,253,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,254,253,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,223,253,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,213,254,253,254,253,254,151,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,253,252,253,252,253,232,41,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,224,40,62,203,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,171,20,0,0,102,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,214,10,0,0,31,233,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,233,112,62,183,213,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,255,253,255,253,254,172,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,252,253,171,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,36,145,145,145,145,145,145,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,83,157,203,254,253,253,253,253,253,253,253,212,100,0,0,0,0,0,0,0,0,0,0,0,0,64,194,253,253,253,253,254,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,35,233,253,253,253,253,253,254,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,191,180,180,60,60,60,60,60,60,125,253,253,253,0,0,0,0,0,0,0,0,0,0,0,33,168,133,48,7,0,0,0,0,0,0,0,0,183,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,247,253,211,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,208,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,250,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,53,133,133,133,13,13,106,254,254,254,254,139,12,0,0,0,0,0,0,0,0,0,0,0,0,17,54,228,253,253,253,253,254,253,253,253,253,246,188,15,0,0,0,0,0,0,0,0,0,0,0,21,112,222,253,253,253,253,253,253,254,253,253,253,227,97,0,0,0,0,0,0,0,0,0,0,0,0,3,166,253,253,242,205,244,253,253,253,254,253,253,253,193,78,33,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,236,182,240,253,253,253,196,253,253,253,253,253,229,182,46,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,135,118,3,60,145,253,253,253,253,253,196,6,0,0,0,0,0,0,0,0,146,217,253,253,253,253,184,111,16,0,0,0,7,144,253,253,225,168,136,0,0,0,0,0,0,0,0,0,0,32,156,203,156,122,7,0,0,0,0,0,0,7,123,122,24,0,17,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,98,160,241,219,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,211,254,231,216,230,254,180,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,166,253,146,23,0,21,116,239,231,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,207,0,0,0,0,0,58,237,229,170,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,248,245,80,0,0,0,0,0,0,92,238,254,252,204,5,0,0,0,0,0,0,0,0,0,0,0,0,104,254,199,0,0,0,0,0,0,0,0,60,239,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,170,254,46,0,0,0,0,0,0,0,0,0,111,254,254,237,27,0,0,0,0,0,0,0,0,0,0,58,252,209,8,0,0,0,0,0,0,0,0,0,30,236,254,254,94,0,0,0,0,0,0,0,0,0,0,132,254,178,0,0,0,0,0,0,0,0,0,0,48,251,225,253,141,0,0,0,0,0,0,0,0,0,0,132,254,109,0,0,0,0,0,0,0,0,0,0,30,113,0,245,225,0,0,0,0,0,0,0,0,0,0,192,255,85,0,0,0,0,0,0,0,0,0,0,0,0,0,246,226,0,0,0,0,0,0,0,0,0,0,226,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,245,225,0,0,0,0,0,0,0,0,0,0,226,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,245,225,0,0,0,0,0,0,0,0,0,0,198,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,245,225,0,0,0,0,0,0,0,0,0,0,132,254,171,0,0,0,0,0,0,0,0,0,0,0,0,97,253,208,0,0,0,0,0,0,0,0,0,0,88,249,240,22,0,0,0,0,0,0,0,0,0,0,30,240,249,52,0,0,0,0,0,0,0,0,0,0,0,131,254,179,0,0,0,0,0,0,0,0,0,65,240,254,165,0,0,0,0,0,0,0,0,0,0,0,0,4,151,252,196,57,2,0,0,0,30,61,179,250,249,165,7,0,0,0,0,0,0,0,0,0,0,0,0,0,40,189,254,254,218,217,182,218,236,242,225,173,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,73,226,254,254,254,230,145,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,38,0,251,219,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,206,243,198,254,254,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,135,251,254,254,254,254,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,254,254,254,254,254,254,254,254,234,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,254,254,234,254,67,100,247,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,255,254,254,146,16,78,2,0,167,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,254,254,103,5,0,0,0,0,29,221,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,254,254,145,0,0,0,0,0,0,0,157,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,253,30,0,0,0,0,0,0,0,79,254,188,1,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,118,0,0,0,0,0,0,0,0,79,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,141,254,234,16,0,0,0,0,0,0,0,0,79,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,141,254,228,0,0,0,0,0,0,0,0,0,79,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,141,254,228,0,0,0,0,0,0,0,0,0,79,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,141,254,130,0,0,0,0,0,0,0,0,0,176,254,246,32,0,0,0,0,0,0,0,0,0,0,0,0,141,254,199,0,0,0,0,0,0,0,0,42,205,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,252,157,33,0,0,0,0,4,101,194,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,12,181,254,254,249,172,172,172,172,185,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,249,254,254,254,254,254,254,254,254,254,254,232,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,254,254,254,254,254,254,213,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,76,156,254,254,254,254,254,175,95,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,246,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,236,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,24,133,133,162,254,156,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,140,254,253,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,245,253,253,217,141,96,96,141,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,242,253,207,81,0,0,0,0,97,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,146,4,0,0,0,0,44,236,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,179,6,0,0,0,0,0,96,253,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,156,0,0,0,0,0,57,206,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,193,9,0,0,0,14,202,253,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,253,180,5,0,11,188,253,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,70,0,83,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,134,203,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,240,253,254,239,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,234,253,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,147,242,253,230,254,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,202,253,230,83,38,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,236,253,153,37,0,128,254,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,103,238,253,188,32,33,137,251,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,224,140,218,232,253,253,139,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,34,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,87,213,253,160,132,28,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,166,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,178,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,253,155,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,177,253,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,174,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,245,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,124,240,254,130,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,119,222,253,253,228,15,0,0,0,0,0,0,0,0,0,0,0,13,13,0,0,0,0,51,70,87,237,254,254,254,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,47,234,230,231,230,230,247,254,253,253,219,148,64,178,253,9,0,0,0,0,0,0,0,0,0,0,0,0,9,46,79,163,230,230,230,138,121,46,13,0,38,245,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,215,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,190,128,6,0,0,3,139,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,246,46,0,0,72,252,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,243,252,224,0,0,0,181,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,40,0,0,10,194,238,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,9,155,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,252,160,0,0,71,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,216,30,0,61,234,252,162,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,246,252,143,0,0,145,252,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,210,25,0,64,242,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,221,252,41,0,0,248,252,217,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,185,253,203,17,0,64,255,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,252,252,67,4,11,191,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,170,198,252,253,128,37,37,37,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,164,204,241,252,252,252,252,253,252,252,252,241,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,72,227,252,252,221,192,192,192,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,252,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,216,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,246,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,210,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,80,13,51,0,58,121,121,163,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,223,253,245,242,246,241,248,253,253,253,250,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,253,253,253,254,253,253,253,253,248,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,253,253,254,253,253,253,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,250,186,187,186,211,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,214,213,199,115,63,0,0,0,123,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,18,232,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,219,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,254,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,253,253,253,143,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,254,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,147,253,254,253,253,232,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,254,253,233,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,255,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,255,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,255,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,255,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,227,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,239,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,177,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,126,27,0,0,0,0,157,252,238,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,221,252,106,0,0,0,45,236,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192,253,253,230,27,0,11,219,255,222,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,140,252,252,252,193,27,0,99,252,239,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,252,252,53,0,55,211,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,218,252,252,210,84,0,22,167,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,228,253,252,235,31,0,0,173,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,186,9,0,0,166,253,253,227,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,239,252,217,125,42,0,0,71,253,252,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,22,177,252,194,152,66,22,75,127,232,253,252,242,126,21,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,252,196,239,253,252,252,252,252,253,196,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,252,253,252,252,252,252,86,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,106,106,106,8,157,253,243,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,245,152,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,253,196,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,34,48,220,253,253,253,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,233,252,253,252,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,236,252,252,253,252,252,252,252,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,244,252,252,253,237,187,121,144,248,252,231,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,183,27,0,0,0,198,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,103,55,0,0,0,0,0,198,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,193,248,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,45,88,248,252,252,252,225,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,210,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,186,186,192,252,252,211,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,137,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,245,252,252,208,0,0,0,0,0,0,0,0,0,0,0,15,56,99,0,0,0,0,0,0,0,0,66,211,252,252,252,208,0,0,0,0,0,0,0,0,0,0,0,67,252,238,31,0,0,0,0,0,89,89,201,252,252,252,252,170,0,0,0,0,0,0,0,0,0,0,0,67,252,252,214,122,122,122,122,169,253,252,252,252,252,252,184,9,0,0,0,0,0,0,0,0,0,0,0,55,245,252,252,252,252,252,252,252,253,252,252,252,243,122,9,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,252,252,252,252,253,252,252,236,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,147,252,252,252,252,252,204,239,114,33,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,77,77,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,115,154,226,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,162,254,254,254,254,254,254,200,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,254,254,254,254,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,162,254,254,254,254,254,254,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,236,254,254,244,244,254,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,167,160,47,116,248,254,254,245,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,227,254,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,34,92,163,222,254,254,254,210,47,0,67,156,33,0,0,0,0,0,0,0,0,0,0,84,65,0,0,44,193,254,254,254,254,247,162,31,0,0,22,47,0,0,0,0,0,0,0,0,0,0,0,5,9,32,165,246,254,254,254,254,207,68,0,18,11,15,22,115,128,54,0,0,0,0,0,0,0,0,0,18,63,220,254,254,254,254,254,254,223,168,168,238,209,227,254,254,254,229,0,0,0,0,0,0,0,0,73,221,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,100,0,0,0,0,0,0,0,0,205,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,251,181,84,0,0,0,0,0,0,0,0,181,254,254,254,254,254,254,254,254,255,254,254,255,254,254,210,189,73,0,0,0,0,0,0,0,0,0,0,237,254,254,254,254,254,254,254,248,151,151,96,43,43,43,14,0,0,0,0,0,0,0,0,0,0,0,0,21,192,222,222,222,171,114,77,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,238,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,193,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,18,132,132,132,47,47,93,13,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,25,191,253,252,252,252,252,252,252,252,206,88,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,222,252,252,253,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,252,252,253,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,252,252,250,192,117,72,72,124,252,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,158,252,252,221,180,57,0,0,0,0,108,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,14,48,48,27,0,0,0,0,0,147,241,252,252,164,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,177,242,252,252,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,187,252,252,252,252,55,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,191,252,252,252,217,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,248,255,253,253,253,245,149,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,253,252,252,224,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,243,252,253,252,247,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,169,241,252,252,253,252,165,49,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,201,252,252,252,252,253,252,252,252,201,72,0,0,0,0,0,0,0,0,0,0,0,0,0,42,73,153,235,252,252,252,252,252,253,252,252,252,252,235,96,45,0,0,0,0,0,0,0,0,0,0,206,232,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,58,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,210,155,156,87,36,36,122,155,58,5,0,0,0,0,0,0,0,0,0,0,201,252,252,252,252,169,143,40,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,11,11,11,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,56,105,155,234,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,30,111,173,230,254,254,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,143,165,165,165,165,234,254,254,254,254,254,254,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,254,254,254,254,246,234,149,134,46,35,35,9,0,0,0,0,0,0,0,0,0,0,0,0,0,220,232,128,152,179,103,80,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,222,162,250,235,150,150,110,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,254,254,254,254,254,254,224,160,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,194,194,161,95,95,95,135,194,222,228,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,210,241,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,228,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,36,36,36,36,36,165,248,254,243,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,159,190,237,254,254,254,254,254,254,254,246,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,250,254,254,254,254,254,254,252,209,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,61,154,154,154,154,154,194,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,23,23,23,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,56,114,166,235,253,253,253,177,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,237,253,253,253,215,253,238,192,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,165,131,26,22,12,22,18,44,239,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,156,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,156,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,171,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,159,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,155,253,217,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,253,128,23,0,0,20,23,23,23,23,23,23,23,23,23,23,0,0,0,0,0,0,0,0,0,0,0,243,253,253,250,166,166,242,255,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,62,165,196,253,253,253,253,177,191,238,215,253,253,172,165,131,55,0,0,0,0,0,0,0,0,0,0,0,0,0,8,22,22,22,22,3,7,18,12,22,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,62,71,233,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,198,234,253,247,249,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,242,254,210,128,149,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,202,253,146,2,0,53,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,213,18,0,0,92,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,165,0,0,26,217,235,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,229,34,0,128,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,253,175,52,248,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,229,255,223,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,193,253,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,245,197,254,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,245,253,253,198,158,253,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,244,253,253,138,15,71,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,244,253,242,129,16,9,120,253,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,196,36,13,79,181,253,248,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,222,184,234,253,254,223,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,150,235,253,253,192,79,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,191,255,255,255,255,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,128,191,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,128,128,128,64,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,47,121,162,162,162,163,162,162,162,162,47,38,0,0,0,0,0,0,0,0,0,0,0,186,185,185,185,247,254,253,253,253,253,254,253,253,253,253,254,241,101,13,0,0,0,0,0,0,0,0,0,212,253,253,253,253,254,253,253,253,169,161,161,161,161,203,254,253,253,216,19,0,0,0,0,0,0,0,0,13,23,23,118,137,138,64,23,23,2,0,0,0,0,11,33,159,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,104,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,253,253,135,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,253,169,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,181,254,232,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,229,253,232,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,229,253,228,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,253,154,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,158,241,244,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,98,223,254,233,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,253,253,173,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,253,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,161,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,77,24,24,34,139,170,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,111,220,253,253,253,254,253,253,215,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,216,254,253,253,253,253,254,241,152,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,245,253,254,194,109,161,161,99,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,119,253,253,211,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,206,254,253,253,253,222,186,185,153,70,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,254,253,253,253,253,254,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,254,179,137,137,137,138,137,222,253,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,133,208,38,0,0,0,0,0,0,0,0,70,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,75,245,253,193,11,0,0,0,0,0,0,22,206,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,22,246,254,254,33,0,0,0,0,0,0,163,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,212,43,0,0,0,0,58,220,253,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,253,253,248,185,101,70,175,255,253,234,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,237,253,254,253,253,253,253,254,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,128,202,253,253,253,253,138,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,95,213,254,223,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,151,254,215,166,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,151,254,191,25,19,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,219,28,0,19,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,248,131,11,0,0,141,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,194,242,254,80,0,0,4,158,216,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,251,254,254,223,59,0,0,32,238,197,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,248,254,254,232,6,5,0,0,81,252,203,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,254,229,48,0,0,0,0,138,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,152,250,131,0,0,0,0,29,242,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,211,54,251,73,0,0,0,0,48,248,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,229,68,54,221,53,0,0,0,2,110,247,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,220,18,54,215,14,0,0,0,49,254,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,113,0,29,135,0,0,0,12,183,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,240,57,0,0,0,0,0,30,148,254,194,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,223,206,7,0,0,0,0,15,132,254,207,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,233,206,7,0,0,0,73,210,255,209,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,185,251,74,26,57,133,252,254,148,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,233,233,254,254,184,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,66,170,247,159,138,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,128,128,0,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,64,0,64,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,227,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,77,246,254,236,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,219,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,41,219,254,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,254,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,235,253,254,182,72,254,254,173,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,161,254,254,230,138,10,7,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,210,254,254,230,60,0,0,7,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,153,233,254,254,254,107,36,0,0,34,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,11,170,254,254,254,254,254,254,230,139,119,216,254,254,58,28,9,0,0,0,0,0,0,0,0,0,0,0,95,253,254,250,248,248,248,248,248,248,252,254,254,254,254,254,155,3,0,0,0,0,0,0,0,0,0,0,0,110,130,42,0,0,0,0,0,0,166,254,254,187,254,254,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,204,13,13,13,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,243,248,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,198,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,40,159,234,247,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,219,253,254,253,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,249,254,255,189,0,235,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,158,114,6,44,243,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,253,253,68,0,0,0,0,0,0,0,162,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,162,0,0,0,0,0,0,0,0,234,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,80,0,0,0,0,0,0,0,31,241,177,0,0,0,0,0,0,0,0,0,0,0,0,0,14,186,254,192,0,0,0,0,0,0,0,0,138,254,155,0,0,0,0,0,0,0,0,0,0,0,4,58,186,253,253,41,0,0,0,0,0,0,0,2,181,253,73,0,0,0,0,0,0,0,0,0,0,55,180,253,254,253,253,196,18,0,0,0,0,0,0,20,253,240,40,0,0,0,0,0,0,0,0,0,87,247,253,253,254,237,253,253,163,16,0,0,0,0,0,126,253,124,0,0,0,0,0,0,0,0,0,23,229,253,253,253,231,51,88,245,253,218,113,98,98,98,158,244,253,41,0,0,0,0,0,0,0,0,0,217,254,254,254,171,38,0,0,143,218,255,254,254,254,254,255,254,145,8,0,0,0,0,0,0,0,0,0,254,253,239,128,9,0,0,0,0,15,99,135,203,233,233,136,53,12,0,0,0,0,0,0,0,0,0,0,78,78,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,230,132,0,0,0,0,0,0,0,86,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,241,151,4,0,0,0,0,0,0,9,226,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,245,121,2,0,0,0,0,0,0,2,190,183,13,0,0,0,0,0,0,0,0,0,0,0,0,3,130,247,109,0,0,0,0,0,0,0,15,156,212,33,0,0,0,0,0,0,0,0,0,0,0,0,3,127,251,90,0,0,0,0,0,0,0,3,164,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,148,246,76,0,0,0,0,0,0,0,2,138,232,67,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,55,0,0,0,0,0,0,0,0,141,255,80,0,0,0,0,0,0,0,0,0,0,0,0,0,104,248,114,4,0,0,0,6,59,81,44,22,230,146,3,0,0,0,0,0,0,0,0,0,0,0,0,86,249,218,88,127,127,136,196,226,216,154,93,215,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,254,254,235,186,105,61,14,5,35,209,205,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,108,52,38,15,0,0,0,0,1,162,238,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,176,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,158,251,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,51,172,90,92,171,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,252,250,250,250,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,211,250,252,250,250,250,252,250,250,170,152,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,221,250,250,252,250,250,250,252,250,250,250,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,252,252,252,254,252,252,252,203,202,232,252,254,252,100,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,250,252,250,250,250,0,0,91,231,252,250,160,20,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,128,252,250,250,128,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,202,252,250,250,49,90,250,250,211,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,0,21,172,252,254,252,100,0,0,0,123,202,0,0,0,203,254,252,252,49,0,0,0,0,0,0,0,0,0,102,250,250,252,210,60,0,0,0,0,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,31,191,250,250,252,149,0,0,0,0,0,0,0,0,0,202,252,250,159,20,0,0,0,0,0,0,0,0,51,250,250,250,252,149,0,0,0,0,0,0,0,0,123,241,252,169,20,0,0,0,0,0,0,0,0,0,51,252,252,252,254,150,0,0,0,0,0,0,11,132,252,252,254,150,0,0,0,0,0,0,0,0,0,0,51,250,250,250,232,90,0,0,0,0,0,82,132,250,250,250,232,90,0,0,0,0,0,0,0,0,0,0,51,250,250,250,232,91,0,0,0,0,92,231,252,250,250,250,80,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,252,149,0,0,0,82,231,250,252,250,250,88,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,252,255,252,252,252,254,252,252,252,254,232,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,210,250,252,250,250,250,252,250,250,250,150,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,221,252,250,250,250,252,250,159,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,252,250,250,250,212,49,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,229,255,254,177,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,249,253,254,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,197,251,252,173,91,119,251,208,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,189,253,236,89,0,0,0,134,253,237,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,237,21,0,0,0,0,155,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,168,0,0,0,12,151,243,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,228,88,54,120,226,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,242,253,253,249,253,254,253,253,253,225,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,130,221,224,224,107,149,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,211,253,197,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,251,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,243,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,190,254,237,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,253,124,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,120,252,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,45,253,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,241,253,253,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,223,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,250,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,255,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,245,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,210,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,153,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,17,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,62,107,149,189,227,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,77,11,63,173,239,254,254,254,254,254,244,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,241,137,188,254,251,205,121,49,100,234,191,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,228,241,39,145,121,38,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,202,222,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,202,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,251,238,238,238,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,254,211,145,171,249,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,153,69,0,0,0,48,252,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,0,0,0,0,0,0,35,249,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,218,7,0,0,0,0,0,148,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,169,8,0,0,0,22,122,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,179,37,0,0,217,251,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,187,110,243,234,213,213,250,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,127,130,254,254,254,220,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,168,254,254,254,220,98,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,16,16,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,255,167,125,125,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,253,253,253,253,253,250,248,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,103,142,156,253,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,119,232,253,246,155,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,253,253,244,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,182,223,253,240,85,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,237,151,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,242,206,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,240,102,66,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,253,253,243,189,189,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,71,71,161,209,253,253,248,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,78,162,253,249,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,244,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,50,219,241,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,50,221,253,237,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,20,20,20,118,171,253,250,217,40,0,0,0,0,0,0,0,0,0,0,0,0,0,13,14,14,14,128,237,253,253,253,253,244,149,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,251,247,247,247,213,117,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,199,123,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,243,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,245,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,250,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,125,125,19,0,0,0,0,90,125,144,254,254,244,54,0,0,0,0,0,0,0,0,0,0,0,0,52,243,253,253,249,248,248,248,248,252,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,253,253,253,253,253,253,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,9,182,253,253,253,253,253,253,253,253,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,11,25,73,155,236,225,155,126,25,43,210,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,23,0,0,0,46,253,253,253,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,238,253,253,232,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,235,253,253,246,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,166,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,246,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,233,253,253,247,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,206,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,253,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,97,168,209,254,255,188,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,32,72,97,211,251,254,254,217,176,176,235,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,249,253,212,163,95,21,8,5,0,0,194,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,93,20,6,0,0,0,0,0,0,25,251,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,229,215,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,236,53,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,39,85,126,126,216,254,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,249,254,254,254,254,254,250,219,153,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,128,61,51,51,132,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,244,220,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,243,234,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,231,195,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,108,138,243,233,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,162,178,252,252,210,253,194,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,246,253,252,252,185,6,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,252,253,252,252,160,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,211,252,253,231,54,14,0,201,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,168,106,0,0,0,0,139,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,24,76,139,138,138,97,128,255,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,161,186,252,252,253,252,252,252,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,19,70,174,222,252,233,183,130,69,141,234,252,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,253,172,33,0,0,0,60,209,252,252,253,244,99,0,0,0,0,0,0,0,0,0,0,0,95,246,252,252,75,8,0,0,0,74,244,252,252,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,162,253,253,23,0,15,24,118,191,255,253,247,94,0,191,253,190,5,0,0,0,0,0,0,0,0,0,0,161,252,252,169,162,219,252,252,252,249,206,98,0,0,159,252,252,45,0,0,0,0,0,0,0,0,0,0,129,252,252,252,253,252,252,195,130,63,0,0,0,32,253,252,233,33,0,0,0,0,0,0,0,0,0,0,9,129,194,210,161,87,45,9,0,0,0,0,0,116,253,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,9,12,0,0,0,0,0,0,0,0,0,63,253,157,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,147,249,205,154,75,0,24,24,3,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,235,76,0,0,0,136,254,254,207,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,127,0,0,0,116,209,54,45,152,236,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,21,0,0,49,212,40,0,0,0,162,227,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,238,0,0,0,109,123,0,0,0,0,14,244,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,173,0,0,0,155,58,0,0,0,0,0,109,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,161,0,0,0,73,31,0,0,0,0,0,26,237,66,0,0,0,0,0,0,0,0,0,0,0,0,0,70,170,0,0,0,0,0,0,0,0,0,0,0,159,169,0,0,0,0,0,0,0,0,0,0,0,0,0,70,238,0,0,0,0,0,0,0,0,0,0,0,100,209,0,0,0,0,0,0,0,0,0,0,0,0,0,70,238,0,0,0,0,0,0,0,0,0,0,0,62,248,21,0,0,0,0,0,0,0,0,0,0,0,0,70,239,0,0,0,0,0,0,0,0,0,0,0,63,255,69,0,0,0,0,0,0,0,0,0,0,0,0,70,238,0,0,0,0,0,0,0,0,0,0,0,13,242,69,0,0,0,0,0,0,0,0,0,0,0,0,51,250,54,0,0,0,0,0,0,0,0,0,0,55,248,30,0,0,0,0,0,0,0,0,0,0,0,0,0,247,113,0,0,0,0,0,0,0,0,0,0,67,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,197,0,0,0,0,0,0,0,0,0,6,180,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,224,10,0,0,0,0,0,0,0,0,100,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,136,0,0,0,0,0,0,0,13,232,167,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,237,100,0,0,0,0,0,39,208,183,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,120,238,175,92,55,55,116,225,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,49,165,254,254,255,240,155,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,191,128,64,255,255,255,255,191,255,128,64,0,0,0,0,0,0,0,0,0,0,0,128,128,191,0,64,0,0,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,255,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,64,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,165,254,254,255,254,254,254,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,104,234,253,253,253,253,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,253,253,253,210,177,47,159,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,189,253,253,229,75,106,216,253,219,126,56,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,218,172,238,253,253,253,253,253,227,138,11,0,0,0,0,0,0,0,0,0,0,0,0,5,196,253,253,253,253,253,253,253,253,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,37,222,253,253,253,253,253,253,157,123,123,123,247,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,205,143,31,2,0,0,0,241,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,50,164,164,93,15,0,0,0,0,0,0,241,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,75,248,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,105,30,0,0,0,0,0,0,0,0,75,253,253,253,223,39,0,0,0,0,0,0,0,0,0,0,0,92,251,191,0,0,0,0,0,0,0,12,189,253,253,219,114,0,0,0,0,0,0,0,0,0,0,0,0,97,253,246,71,0,0,0,0,0,42,224,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,73,243,253,198,63,63,63,63,174,210,253,253,253,138,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,253,253,253,253,253,253,230,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,204,253,253,253,253,253,253,238,143,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,116,124,182,116,116,116,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,206,202,137,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,149,254,254,254,254,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,247,167,107,239,254,243,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,159,27,0,137,254,254,104,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,233,16,0,0,5,245,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,245,74,0,0,58,252,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,226,137,148,236,254,254,238,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,242,254,254,254,254,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,137,206,213,253,245,254,254,212,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,59,63,234,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,212,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,197,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,251,188,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,241,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,177,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,225,226,225,225,225,225,86,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,178,252,252,253,252,252,252,252,253,203,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,181,252,252,252,253,252,252,252,252,253,252,233,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,253,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,13,191,255,253,253,253,190,141,94,32,47,0,255,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,154,252,253,252,252,252,158,0,0,0,0,0,90,243,252,252,237,0,0,0,0,0,0,0,0,0,0,76,234,252,253,252,252,252,252,0,0,0,0,0,0,116,252,252,252,0,0,0,0,0,0,0,0,0,57,234,252,252,253,226,223,242,252,95,0,0,0,0,0,178,252,252,252,0,0,0,0,0,0,0,0,0,85,252,252,252,190,12,0,75,112,63,0,0,0,0,141,240,252,252,252,0,0,0,0,0,0,0,0,0,226,253,253,253,0,0,0,0,0,0,0,0,13,191,255,253,253,253,190,0,0,0,0,0,0,0,0,0,225,252,252,252,0,0,0,0,0,0,0,19,181,252,253,252,252,179,12,0,0,0,0,0,0,0,0,120,246,252,252,141,0,0,0,0,0,26,104,209,252,252,253,252,239,65,0,0,0,0,0,0,0,0,0,253,252,252,252,112,0,0,23,29,107,207,252,252,252,252,253,195,65,0,0,0,0,0,0,0,0,0,0,253,252,252,252,189,63,140,227,252,252,253,252,252,252,252,253,89,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,255,253,253,253,253,255,253,253,178,63,0,0,0,0,0,0,0,0,0,0,0,0,0,90,243,252,252,252,253,252,252,252,252,253,223,136,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,252,253,252,252,214,195,56,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,177,223,162,84,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,240,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,248,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,78,156,183,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,200,254,254,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,238,253,209,140,216,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,231,233,120,0,0,168,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,230,254,95,0,0,7,196,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,126,3,0,4,171,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,59,0,55,193,254,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,209,196,233,254,217,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,197,238,238,215,129,19,175,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,162,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,231,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,54,180,255,249,136,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,111,224,253,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,112,217,253,253,253,253,205,252,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,248,253,253,253,253,227,17,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,213,253,253,239,137,47,29,40,229,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,128,24,0,33,107,172,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,251,63,62,117,246,253,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,253,246,230,240,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,253,227,184,66,0,113,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,76,76,76,29,0,0,0,113,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,241,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,242,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,242,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,164,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,238,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,216,201,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,201,156,59,59,59,59,97,134,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,254,253,253,253,253,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,247,253,254,253,253,253,253,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,213,254,253,253,253,253,254,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,178,185,253,253,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,179,224,254,254,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,207,39,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,253,253,194,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,239,254,253,222,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,246,254,255,249,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,196,253,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,211,253,253,253,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,135,254,253,253,200,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,231,255,254,213,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,251,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,250,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,241,253,133,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,118,195,254,254,255,254,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,14,97,97,231,234,234,248,253,253,253,253,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,88,219,253,253,253,253,253,253,253,210,177,177,202,253,253,232,0,0,0,0,0,0,0,0,0,0,0,17,206,253,253,253,199,198,198,172,61,27,0,0,20,108,253,232,0,0,0,0,0,0,0,0,0,0,0,25,186,219,211,82,2,0,0,0,0,0,0,0,0,81,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,248,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,49,49,49,36,0,0,0,0,20,226,253,223,26,0,0,0,0,0,0,0,0,0,0,0,9,58,165,218,253,253,253,229,165,76,12,0,193,253,253,123,0,0,0,0,0,0,0,0,0,0,0,3,155,253,253,253,175,109,109,223,253,253,191,144,248,253,218,32,0,0,0,0,0,0,0,0,0,0,0,163,253,253,236,123,0,0,0,36,220,253,253,253,253,213,98,0,0,0,0,0,0,0,0,0,0,0,48,242,181,13,11,0,0,0,0,0,55,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,118,253,202,20,0,0,0,0,0,23,190,253,253,253,253,197,18,0,0,0,0,0,0,0,0,0,0,0,89,248,253,108,20,0,33,63,63,189,253,253,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,203,179,217,253,253,253,253,226,137,212,251,253,191,0,0,0,0,0,0,0,0,0,0,0,0,140,239,253,253,253,253,253,253,236,131,34,0,0,229,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,35,116,209,253,182,116,116,22,0,0,0,0,104,208,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,94,137,137,192,137,248,137,60,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,86,157,254,254,254,254,254,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,62,172,240,254,254,254,254,254,254,254,254,254,254,254,203,12,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,254,243,183,183,183,183,183,225,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,193,39,0,0,0,0,0,148,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,45,147,147,42,139,13,0,0,0,0,0,11,243,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,74,254,254,222,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,182,254,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,160,240,254,254,250,135,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,232,254,255,254,254,246,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,254,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,159,159,159,201,254,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,250,254,250,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,254,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,7,119,148,17,0,0,0,0,0,0,128,254,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,238,24,0,0,0,0,15,147,247,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,230,79,125,173,86,184,206,254,254,251,175,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,254,254,254,254,254,217,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,254,254,254,254,254,224,110,20,5,102,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,51,135,185,252,135,135,109,12,0,0,68,241,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,229,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,205,226,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,227,222,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,211,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,231,247,146,19,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,35,144,245,174,13,0,0,0,0,0,0,0,8,78,178,0,0,0,0,0,0,0,0,0,0,0,0,25,188,252,222,20,0,0,21,78,71,0,0,5,169,252,61,0,0,0,0,0,0,0,0,0,0,0,0,144,231,247,75,9,0,78,229,252,249,172,0,202,240,137,5,0,0,0,0,0,0,0,0,0,0,0,195,253,242,19,0,25,225,255,245,177,233,229,131,241,195,0,0,0,0,0,0,0,0,0,0,0,0,70,249,252,135,3,133,233,252,201,57,0,132,252,164,75,73,0,0,0,0,0,0,0,0,0,0,0,0,142,252,231,33,146,252,252,209,19,0,0,23,180,237,109,0,0,0,0,0,0,0,0,0,0,0,3,128,251,252,178,219,251,220,39,6,0,0,0,0,165,206,15,0,0,0,0,0,0,0,0,0,0,0,129,252,252,252,252,209,192,34,0,0,0,0,0,63,210,81,0,0,0,0,0,0,0,0,0,0,0,0,167,252,252,252,233,84,0,0,0,0,0,24,179,250,159,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,248,145,122,140,231,231,232,234,241,135,46,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,252,252,252,252,252,239,208,195,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,66,109,175,175,175,170,66,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,144,192,241,144,101,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,171,253,253,253,254,253,253,155,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,202,253,253,179,154,154,154,236,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,252,144,3,0,0,0,52,190,251,119,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,253,145,0,0,0,0,0,0,46,172,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,222,14,0,0,0,0,0,0,0,37,165,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,165,0,0,0,0,0,0,53,228,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,180,24,0,0,0,6,74,237,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,253,222,188,154,174,197,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,181,253,253,253,253,254,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,111,193,221,112,111,230,255,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,244,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,244,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,234,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,234,253,52,51,52,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,171,152,252,253,252,253,232,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,131,152,213,102,183,214,253,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,233,30,30,10,0,0,10,91,213,252,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,142,0,0,0,0,0,0,0,41,243,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,61,0,0,0,0,0,0,0,0,122,253,252,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,172,0,0,0,0,0,0,0,0,0,0,254,253,21,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,152,253,224,20,0,0,0,0,0,0,0,0,0,0,153,253,102,0,0,0,0,0,0,0,0,0,0,0,233,252,203,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,62,254,253,142,0,0,0,0,0,0,0,0,0,0,0,173,253,102,0,0,0,0,0,0,0,0,0,0,102,253,252,102,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,41,254,253,123,0,0,0,0,0,0,0,0,0,0,0,254,253,41,0,0,0,0,0,0,0,0,0,0,0,253,252,203,0,0,0,0,0,0,0,0,0,21,142,253,212,0,0,0,0,0,0,0,0,0,0,0,0,132,253,255,91,0,0,0,0,0,0,0,21,132,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,252,183,102,0,0,0,0,82,223,253,212,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,254,253,254,253,173,253,224,162,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,131,213,252,253,252,233,70,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,219,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,223,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,237,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,210,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,219,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,220,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,238,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,128,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,128,255,255,255,255,64,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,255,255,255,255,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,64,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,128,64,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,128,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,128,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,128,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,128,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,128,128,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,161,170,186,162,161,161,161,95,178,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,253,253,254,253,253,253,254,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,129,137,137,138,137,137,137,138,200,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,255,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,247,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,221,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,247,177,91,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,175,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,253,158,10,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,204,254,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,211,253,254,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,74,209,232,236,253,253,254,250,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,123,209,250,253,253,253,229,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,254,255,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,199,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,153,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,185,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,245,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,253,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,196,229,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,212,255,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,168,252,190,122,238,175,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,193,241,108,0,0,73,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,124,0,0,0,0,155,145,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,238,183,0,0,0,0,0,15,126,216,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,235,15,0,0,0,0,0,0,26,240,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,191,0,0,0,0,0,0,0,59,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,145,0,0,0,0,0,0,8,166,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,145,0,0,0,0,0,8,112,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,243,186,0,0,0,0,8,112,227,171,243,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,241,30,0,0,52,152,169,33,142,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,225,216,133,173,247,196,30,0,142,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,98,154,187,75,6,0,0,142,225,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,233,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,145,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,211,254,140,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,85,237,241,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,160,254,243,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,211,253,134,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,144,247,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,131,0,0,0,0,98,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,213,57,1,0,0,23,150,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,107,0,0,0,24,182,254,203,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,237,123,0,0,19,185,254,187,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,242,26,15,157,254,135,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,156,209,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,249,240,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,218,252,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,249,254,254,201,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,247,239,92,188,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,247,254,169,178,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,254,254,221,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,195,215,196,165,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,48,88,147,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,84,142,225,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,134,218,241,253,253,254,218,188,233,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,81,209,254,255,242,223,115,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,32,42,198,253,235,221,88,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,149,253,160,222,62,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,125,253,228,111,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,254,242,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,231,158,85,110,225,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,32,0,0,0,112,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,101,0,0,0,0,112,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,241,80,0,0,30,180,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,209,174,255,254,191,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,152,237,253,253,254,239,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,146,205,176,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,80,128,167,209,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,167,209,222,246,247,253,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,37,62,152,251,254,254,254,254,255,254,254,254,254,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,37,240,254,254,254,254,254,254,202,146,93,152,254,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,115,250,254,248,131,96,35,35,0,0,0,111,254,235,83,9,0,0,0,0,0,0,0,0,0,0,0,0,237,254,220,53,0,0,0,0,0,0,42,226,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,139,37,0,0,0,0,0,0,8,190,254,240,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,250,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,222,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,225,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,185,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,248,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,199,254,135,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,238,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,241,228,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,125,125,218,255,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,118,161,248,249,253,253,253,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,253,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,240,253,253,253,172,149,149,221,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,45,25,25,6,0,21,206,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,187,253,240,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,239,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,240,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,210,253,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,198,253,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,172,253,189,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,174,253,244,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,171,253,247,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,251,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,237,212,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,105,154,168,255,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,111,129,168,111,116,222,253,253,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,104,126,24,137,214,253,253,253,253,253,253,196,157,89,89,4,0,0,0,0,0,0,0,0,0,0,0,6,222,253,227,253,250,196,115,34,35,34,34,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,146,145,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,91,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,195,253,253,203,129,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,143,234,253,253,243,122,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,131,211,253,253,252,132,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,81,172,253,253,244,84,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,51,211,253,253,113,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,3,0,0,0,0,0,0,0,0,3,133,252,241,146,0,0,0,0,0,0,0,0,0,0,0,0,8,229,128,0,0,0,0,0,0,0,0,0,0,130,253,242,71,0,0,0,0,0,0,0,0,0,0,0,0,77,243,57,3,0,0,0,0,0,0,0,0,3,139,254,243,8,0,0,0,0,0,0,0,0,0,0,0,19,166,253,175,54,0,0,0,0,0,0,0,0,80,253,253,9,0,0,0,0,0,0,0,0,0,0,0,0,10,148,250,247,164,22,0,0,0,0,0,0,80,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,229,253,230,170,89,0,0,0,45,181,254,253,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,158,225,253,253,245,244,244,249,253,247,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,74,155,253,253,253,204,153,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,194,254,254,254,254,215,130,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,253,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,249,235,235,235,180,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,105,79,0,0,0,100,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,71,237,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,161,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,44,161,253,253,238,164,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,50,75,191,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,253,253,253,253,253,149,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,232,253,253,253,206,240,253,201,220,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,185,185,94,15,48,61,11,158,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,234,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,142,249,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,121,150,106,106,106,106,106,203,237,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,253,253,253,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,253,253,253,216,93,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,129,190,150,192,165,99,5,5,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,178,254,254,162,112,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,147,254,253,253,253,254,253,243,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,254,253,242,230,245,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,253,104,0,44,119,236,253,235,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,138,0,0,0,43,185,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,254,253,54,0,30,47,30,89,254,249,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,254,253,215,207,237,253,236,220,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,169,254,253,253,253,254,253,253,253,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,254,254,254,254,254,254,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,253,219,220,236,253,236,254,253,242,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,254,223,96,13,13,29,79,29,97,242,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,81,0,0,0,0,0,0,0,72,253,253,235,17,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,23,0,0,0,0,0,0,0,0,57,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,40,0,0,0,0,0,0,0,0,11,198,254,198,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,160,5,0,0,0,0,0,0,0,11,199,254,206,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,253,113,0,0,0,0,0,0,17,140,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,254,254,220,136,70,70,70,128,212,254,254,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,253,253,253,254,253,253,253,254,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,180,249,253,254,253,253,253,254,248,187,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,135,220,253,253,253,161,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,141,253,255,253,255,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,253,254,253,226,225,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,196,83,56,56,139,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,114,0,0,0,0,0,85,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,138,0,0,0,0,0,0,85,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,253,114,0,0,0,0,0,0,0,141,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,138,0,0,0,0,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,57,168,169,0,0,0,0,0,0,0,0,57,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,57,224,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,253,251,253,251,225,168,169,168,169,168,114,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,169,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,253,251,253,251,253,251,253,251,253,251,253,138,56,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,254,196,169,168,169,168,169,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,253,138,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,72,233,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,102,163,223,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,113,193,254,253,254,253,255,233,41,0,0,0,0,0,0,0,0,0,21,142,203,203,203,203,142,183,213,252,253,252,233,192,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,123,203,203,254,253,254,253,254,233,142,102,11,213,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,50,50,50,30,0,0,173,252,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,172,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,236,253,253,253,253,253,193,105,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,229,252,252,252,252,252,252,253,252,127,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,250,157,88,88,88,150,237,246,210,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,236,56,0,0,0,0,0,94,252,212,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,212,252,252,236,12,0,0,0,0,51,173,252,239,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,231,252,252,182,59,0,0,25,174,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,213,252,252,231,55,56,231,252,252,212,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,162,247,252,244,245,252,246,162,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,252,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,217,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,255,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,216,218,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,222,36,99,249,246,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,207,0,0,138,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,246,135,0,7,173,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,0,0,164,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,134,134,210,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,231,252,253,252,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,252,253,252,252,230,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,103,165,216,103,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,197,251,204,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,228,253,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,253,251,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,243,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,244,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,236,251,251,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,251,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,236,251,251,251,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,251,251,113,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,198,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,198,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,29,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,114,0,0,0,57,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,0,0,0,0,141,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,57,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,0,0,0,0,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,0,0,0,0,0,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,0,0,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,152,173,253,214,253,193,233,193,193,193,152,254,213,123,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,252,253,252,253,252,253,252,253,252,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,123,203,142,20,0,0,0,0,0,0,92,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,234,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,192,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,246,245,51,0,0,0,0,0,3,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,191,128,36,36,36,36,118,254,151,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,254,254,254,254,254,254,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,234,254,254,209,233,254,254,254,254,254,254,236,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,252,154,18,33,83,165,205,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,249,254,198,0,0,0,0,0,13,195,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,27,222,254,199,11,0,0,0,0,0,112,254,254,150,3,0,0,0,0,0,0,0,0,0,0,0,0,0,24,201,200,13,0,0,0,0,0,9,234,254,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,115,254,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,223,254,246,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,187,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,255,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,212,254,254,151,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,108,254,254,244,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,107,254,255,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,243,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,182,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,251,254,187,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,110,255,254,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,197,253,253,253,251,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,156,253,253,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,141,253,253,253,253,211,160,62,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,58,224,253,253,253,219,112,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,185,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,169,252,253,253,227,154,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,253,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,224,253,253,237,123,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,249,253,253,175,19,0,0,0,0,0,52,78,209,231,165,14,0,0,0,0,0,0,0,0,0,0,19,156,253,253,240,59,0,0,0,17,24,159,228,253,253,253,253,158,10,0,0,0,0,0,0,0,0,0,200,253,253,234,59,0,0,0,0,177,253,253,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,158,253,253,214,0,0,0,0,204,244,253,253,253,253,253,253,253,163,12,0,0,0,0,0,0,0,0,68,185,253,247,108,0,0,31,169,246,253,253,249,134,91,230,252,172,15,0,0,0,0,0,0,0,0,0,101,253,253,160,0,0,39,216,253,253,253,253,114,78,178,253,175,0,0,0,0,0,0,0,0,0,0,0,101,253,253,183,15,0,123,253,253,253,253,253,220,241,253,162,14,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,183,162,248,253,253,253,253,253,253,238,92,14,0,0,0,0,0,0,0,0,0,0,0,0,58,165,253,253,253,253,253,253,253,253,253,253,157,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,253,253,253,253,253,253,234,45,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,99,249,253,253,253,253,173,99,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,76,76,76,55,138,138,139,138,138,138,138,139,191,38,0,0,0,0,0,0,0,0,0,0,0,9,78,236,252,253,252,252,252,252,253,252,252,252,252,253,252,121,0,0,0,0,0,0,0,0,0,0,0,130,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,171,13,0,0,0,0,0,0,0,0,0,0,103,185,252,252,253,252,252,252,252,117,235,160,160,160,253,252,195,9,0,0,0,0,0,0,0,0,0,0,0,7,22,22,23,96,137,189,85,3,18,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,236,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,255,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,153,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,203,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,104,218,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,219,254,191,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,248,254,191,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,247,254,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,208,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,243,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,207,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,205,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,247,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,175,0,0,28,88,88,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,149,3,110,225,254,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,148,119,254,254,234,200,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,221,254,149,225,254,187,15,47,247,251,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,254,156,9,0,0,198,244,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,200,11,0,0,69,250,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,115,0,0,47,230,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,219,254,209,15,0,82,234,254,203,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,249,159,166,255,249,163,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,254,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,148,233,254,223,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,179,248,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,37,93,186,246,253,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,116,76,132,193,203,253,253,253,220,165,92,137,31,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,253,253,253,254,204,170,111,38,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,230,222,92,92,45,15,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,216,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,196,253,158,127,130,92,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,253,253,253,246,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,214,236,188,82,21,0,140,255,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,13,0,0,0,0,0,216,221,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,245,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,220,241,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,9,0,0,0,0,2,105,242,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,172,8,0,0,15,137,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,196,161,196,242,253,203,29,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,188,253,253,239,180,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,46,46,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,220,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,249,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,232,253,235,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,232,253,223,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,234,253,218,125,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,236,253,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,254,214,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,253,164,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,117,214,214,214,214,214,215,251,253,198,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,253,253,253,253,253,253,254,253,253,253,212,102,21,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,239,171,66,80,231,253,254,253,253,253,253,253,187,20,0,0,0,0,0,0,0,0,0,0,0,0,206,253,186,0,7,55,220,253,255,158,80,80,185,243,225,29,0,0,0,0,0,0,0,0,0,0,0,0,85,249,229,161,175,253,253,253,242,11,0,0,0,69,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,252,169,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,120,218,253,239,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,195,104,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,174,253,254,224,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,249,253,253,254,253,215,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,253,253,254,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,255,254,247,151,136,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,253,128,0,104,253,253,253,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,46,119,254,253,253,244,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,253,129,234,254,253,236,78,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,254,254,241,67,0,195,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,241,253,253,241,135,0,0,40,241,184,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,249,244,67,0,0,0,0,222,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,44,0,0,0,0,0,138,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,249,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,128,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,38,234,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,222,22,0,0,0,0,10,172,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,28,0,0,0,0,29,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,206,13,0,0,0,0,92,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,142,0,0,0,0,0,166,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,56,0,0,0,0,89,253,252,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,227,31,0,0,0,0,113,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,228,53,29,13,0,0,126,254,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,252,252,207,169,169,243,253,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,252,252,253,252,252,252,253,252,209,197,76,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,252,252,252,253,252,252,252,253,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,141,253,253,241,163,113,113,113,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,252,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,187,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,215,214,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,56,56,56,56,139,155,204,255,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,251,254,253,253,254,253,253,254,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,229,253,254,253,253,254,253,253,254,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,235,134,134,134,134,50,35,35,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,95,86,144,185,185,179,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,254,253,253,254,253,250,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,254,254,254,254,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,176,203,128,45,4,28,113,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,229,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,120,0,0,0,0,0,0,0,16,253,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,215,22,0,0,0,0,0,0,114,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,204,22,0,0,0,0,19,227,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,206,41,9,7,35,127,254,216,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,159,254,254,254,204,202,254,254,248,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,112,241,254,254,254,254,254,187,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,148,230,253,252,153,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,164,254,255,254,254,254,142,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,238,55,160,243,246,253,246,198,79,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,177,39,0,0,0,60,222,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,233,253,253,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,241,253,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,211,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,241,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,59,236,253,219,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,170,219,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,48,48,104,236,250,253,253,253,253,253,237,236,110,48,48,48,48,48,12,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,148,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,120,0,0,0,0,0,0,0,0,254,253,253,253,221,182,8,8,8,79,196,196,196,196,196,196,196,196,105,2,0,0,0,0,0,0,0,0,163,253,248,130,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,65,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,139,148,148,131,43,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,237,252,252,252,253,252,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,171,253,252,252,247,231,232,231,251,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,205,180,63,0,0,0,77,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,252,218,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,173,0,0,0,0,0,0,64,85,112,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,94,0,0,73,127,171,216,221,199,217,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,226,51,170,169,246,252,252,253,252,247,162,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,252,235,253,252,252,252,252,104,68,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,227,253,253,253,247,211,70,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,173,253,252,252,252,182,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,224,246,252,253,252,252,98,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,232,252,252,199,84,211,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,199,121,7,0,190,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,21,0,0,8,201,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,142,85,85,114,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,252,252,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,237,252,252,252,253,126,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,147,147,147,86,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,235,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,230,154,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,223,171,56,54,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,208,199,253,253,253,253,253,189,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,245,61,11,47,146,164,252,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,230,0,0,0,0,0,94,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,144,252,253,114,0,0,0,0,0,71,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,225,0,0,0,0,0,0,130,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,236,9,0,0,0,0,0,0,205,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,172,58,0,0,0,0,0,0,27,250,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,244,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,251,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,251,242,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,84,239,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,238,253,178,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,223,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,218,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,11,0,0,40,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,102,122,236,252,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,254,254,192,151,239,233,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,244,254,148,26,3,0,203,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,254,103,3,0,0,0,203,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,254,131,3,0,0,0,0,203,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,254,131,3,0,0,0,0,8,214,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,240,254,132,3,0,0,0,0,0,53,254,231,7,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,254,132,3,0,0,0,0,0,0,166,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,240,131,2,0,0,0,0,0,0,20,231,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,30,0,0,0,0,0,0,0,0,95,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,114,122,197,191,135,246,225,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,199,250,254,226,240,254,254,254,247,95,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,230,238,126,56,12,179,254,217,154,240,254,202,47,7,0,0,0,0,0,0,0,0,0,0,0,0,43,252,222,28,0,13,190,254,219,22,0,29,168,249,254,174,44,0,0,0,0,0,0,0,0,0,0,0,174,248,81,0,39,220,254,191,20,0,0,0,0,89,216,249,250,126,12,0,0,0,0,0,0,0,0,0,254,176,9,96,244,251,115,8,0,0,0,0,0,0,0,57,217,250,229,128,0,0,0,0,0,0,0,0,255,231,227,254,223,63,0,0,0,0,0,0,0,0,0,0,0,52,132,159,0,0,0,0,0,0,0,0,191,254,249,143,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,125,147,255,255,241,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,216,253,253,253,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,244,253,253,233,159,253,253,243,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,250,253,229,55,112,238,253,253,235,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,146,253,253,217,99,206,253,253,179,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,230,253,253,253,253,253,253,241,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,253,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,175,195,253,253,253,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,220,253,203,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,143,253,240,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,213,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,253,241,177,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,221,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,227,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,241,253,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,230,253,237,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,160,77,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,244,253,253,251,206,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,206,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,202,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,185,0,0,0,0,0,0,43,85,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,215,6,0,0,0,0,87,242,252,244,171,41,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,63,0,0,0,55,232,252,252,252,253,189,6,0,0,0,0,0,0,0,0,0,0,0,0,13,217,252,253,150,0,0,0,192,252,252,252,252,253,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,98,247,254,253,83,0,62,255,253,253,227,192,255,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,221,120,199,253,252,252,252,252,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,252,252,252,252,253,252,252,252,252,253,245,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,140,252,252,252,253,252,252,252,252,243,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,104,252,252,253,252,252,182,147,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,32,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,166,246,128,110,110,194,200,219,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,229,254,254,254,254,254,254,254,214,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,235,254,235,111,14,188,149,92,92,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,251,254,254,132,4,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,254,201,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,54,54,54,171,246,227,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,62,145,68,12,0,0,0,0,0,0,0,0,128,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,254,226,185,102,37,6,0,0,0,87,223,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,173,235,248,255,254,207,200,200,201,250,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,133,0,52,99,182,254,254,254,254,254,130,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,217,254,144,73,74,93,242,254,254,208,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,194,254,254,254,254,207,128,44,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,36,36,36,36,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,254,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,234,253,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,56,232,253,253,237,242,253,91,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,87,253,253,253,253,43,44,231,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,59,227,253,253,253,253,242,75,0,99,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,140,253,253,253,253,223,173,59,0,0,0,242,129,0,0,0,0,0,0,0,0,0,0,0,0,0,47,224,253,253,243,176,86,17,0,0,0,0,0,160,129,0,0,0,0,0,0,0,0,0,0,0,0,46,224,253,253,218,94,0,0,0,0,0,0,0,0,119,153,0,0,0,0,0,0,0,0,0,0,5,129,225,253,244,173,22,0,0,0,0,0,0,0,0,0,35,161,0,0,0,0,0,0,0,0,0,4,137,253,253,244,98,0,0,0,0,0,0,0,0,0,0,0,118,128,0,0,0,0,0,0,0,0,0,46,253,253,245,98,0,0,0,0,0,0,0,0,0,0,0,0,242,129,0,0,0,0,0,0,0,0,42,228,253,209,97,0,0,0,0,0,0,0,0,0,0,0,0,125,251,93,0,0,0,0,0,0,0,0,130,253,247,72,0,0,0,0,0,0,0,0,0,0,0,0,86,250,176,4,0,0,0,0,0,0,0,0,234,249,94,0,0,0,0,0,0,0,0,0,0,0,0,126,229,253,12,0,0,0,0,0,0,0,0,0,254,241,0,0,0,0,0,0,0,0,0,0,0,121,217,249,214,106,2,0,0,0,0,0,0,0,0,0,254,246,44,0,0,0,0,0,0,25,51,100,200,248,168,154,90,0,0,0,0,0,0,0,0,0,0,0,254,253,240,217,106,106,188,230,230,235,242,253,253,217,22,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,253,253,253,253,124,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,85,253,253,253,253,253,253,227,135,42,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,76,129,115,5,5,5,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,244,252,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,176,0,0,0,0,0,0,0,0,0,46,25,0,0,0,0,0,0,0,0,0,0,0,0,20,187,252,212,63,0,0,0,0,0,0,0,0,138,231,191,0,0,0,0,0,0,0,0,0,0,0,0,185,252,241,56,0,0,0,0,0,0,0,0,46,231,252,225,0,0,0,0,0,0,0,0,0,0,0,82,243,252,171,0,0,0,0,0,0,0,0,23,157,252,248,131,0,0,0,0,0,0,0,0,0,0,7,240,252,248,50,0,0,0,0,0,0,6,133,236,252,252,134,0,0,0,0,0,0,0,0,0,0,0,121,252,252,172,0,0,0,0,0,0,134,183,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,121,253,253,110,0,0,83,121,197,253,255,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,247,252,252,129,212,240,248,252,252,252,253,195,252,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,204,252,252,252,252,252,252,252,197,89,26,109,252,252,192,7,0,0,0,0,0,0,0,0,0,0,0,0,83,206,252,252,252,192,151,39,17,0,0,107,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,53,53,53,14,0,0,0,0,0,107,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,74,27,27,109,141,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,252,252,252,252,218,62,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,252,252,160,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,156,194,194,127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,235,253,234,250,253,164,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,154,0,66,169,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,235,216,5,0,0,6,183,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,49,0,0,0,0,136,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,246,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,219,234,234,159,77,213,253,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,253,253,253,254,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,219,98,98,195,255,254,254,201,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,135,0,26,169,254,191,203,251,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,209,79,210,253,213,12,0,72,78,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,253,253,253,237,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,185,222,140,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,29,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,234,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,163,253,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,253,255,253,231,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,253,189,19,38,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,252,252,194,19,0,0,113,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,252,13,0,0,0,0,0,0,0,0,0,38,13,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,128,0,0,0,0,0,0,10,29,141,216,253,253,254,103,7,0,0,0,0,0,0,0,0,0,253,252,233,22,0,0,0,0,0,13,172,252,253,252,252,252,253,252,149,7,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,10,172,252,252,253,233,168,168,178,252,252,65,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,179,252,252,252,78,22,0,0,4,178,252,240,0,0,0,0,0,0,0,0,242,253,168,0,0,0,0,63,254,253,206,13,0,0,0,0,4,179,253,253,0,0,0,0,0,0,0,0,116,252,224,44,0,0,0,138,253,252,93,0,0,0,0,0,128,252,252,252,0,0,0,0,0,0,0,0,19,224,252,228,38,0,0,225,253,170,13,0,0,0,0,126,253,252,252,214,0,0,0,0,0,0,0,0,0,169,252,252,238,150,113,237,253,84,0,0,114,113,200,249,253,252,214,78,0,0,0,0,0,0,0,0,0,0,135,253,254,253,253,253,254,253,253,253,254,253,253,253,254,234,100,0,0,0,0,0,0,0,0,0,0,0,28,133,253,252,252,252,253,252,252,252,253,252,252,252,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,130,196,252,253,252,252,252,244,168,80,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,28,28,28,28,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,64,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,128,128,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,64,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,122,248,254,212,121,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,108,192,241,247,255,253,253,253,253,222,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,192,198,253,253,253,253,255,253,253,253,253,253,249,84,0,0,0,0,0,0,0,0,0,0,0,0,80,247,253,253,253,253,253,253,216,173,173,173,237,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,207,102,53,53,28,0,0,22,215,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,25,66,66,66,21,0,0,0,0,0,0,81,253,253,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,239,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,241,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,178,242,253,253,253,250,142,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,94,179,229,253,254,253,253,253,253,253,214,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,118,253,253,253,253,254,253,253,253,253,253,253,214,77,0,0,0,0,0,0,0,0,0,0,0,61,110,242,253,253,253,253,253,254,189,186,207,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,52,233,253,253,253,253,253,250,128,67,4,0,21,66,66,96,253,240,0,0,0,0,0,0,0,0,0,84,249,253,253,253,253,253,228,131,0,0,0,0,0,0,0,13,80,75,0,0,0,0,0,0,0,0,0,57,247,253,253,253,253,235,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,253,253,250,211,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,246,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,193,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,252,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,252,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,255,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,243,253,252,226,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,213,252,253,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,137,252,252,232,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,223,252,252,194,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,234,214,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,130,243,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,89,240,254,252,254,236,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,172,254,254,229,63,195,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,239,254,252,155,12,0,51,253,216,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,238,254,199,73,0,0,0,0,226,254,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,161,14,0,0,0,14,117,248,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,239,254,58,0,0,20,95,215,254,254,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,148,118,129,236,246,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,189,254,254,254,254,248,131,225,254,246,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,144,213,213,145,53,52,248,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,207,254,245,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,244,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,235,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,242,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,255,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,76,136,155,255,254,155,136,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,196,253,253,253,253,253,253,253,249,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,164,253,253,227,189,82,82,82,127,224,253,230,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,228,78,33,0,0,0,0,0,29,250,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,206,52,0,0,0,0,0,0,0,0,152,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,130,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,188,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,245,251,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,241,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,186,253,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,206,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,253,219,42,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,90,253,245,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,248,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,250,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,232,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,248,201,201,165,84,84,84,152,201,201,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,242,253,253,253,253,253,253,253,253,253,253,180,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,75,135,135,218,253,253,253,253,184,114,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,34,34,34,34,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,100,252,252,252,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,107,252,252,252,252,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,133,227,252,252,252,252,252,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,211,252,252,252,252,252,252,252,252,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,252,252,252,191,54,167,252,252,248,155,0,0,0,0,0,0,0,0,0,0,0,0,0,2,70,240,252,252,252,242,20,14,0,144,252,252,252,248,232,126,12,3,0,0,0,0,0,0,0,0,0,73,252,252,252,252,217,199,0,0,0,144,252,252,252,252,252,252,252,65,0,0,0,0,0,0,0,0,0,254,252,252,252,252,54,0,0,0,0,144,252,252,252,252,252,252,252,123,10,0,0,0,0,0,0,0,0,254,252,252,252,252,54,0,0,0,0,144,252,252,252,252,252,252,252,252,32,0,0,0,0,0,0,0,0,254,252,252,252,157,23,0,0,0,0,62,109,109,109,109,159,252,252,252,32,0,0,0,0,0,0,0,0,254,252,252,252,87,0,0,0,0,0,0,0,0,0,0,89,252,252,252,186,0,0,0,0,0,0,0,0,254,252,252,252,87,0,0,0,0,0,0,0,0,0,0,89,252,252,252,68,0,0,0,0,0,0,0,0,254,252,252,252,87,0,0,0,0,0,0,0,0,0,5,104,252,252,236,29,0,0,0,0,0,0,0,0,254,252,252,252,123,12,0,0,0,0,0,0,0,5,99,252,252,252,65,0,0,0,0,0,0,0,0,0,254,252,252,252,252,124,8,0,0,0,0,0,0,100,252,252,252,252,65,0,0,0,0,0,0,0,0,0,254,252,252,252,252,252,132,122,85,0,70,122,122,248,252,252,252,177,34,0,0,0,0,0,0,0,0,0,255,252,252,252,252,252,252,252,222,155,210,252,252,252,252,252,177,38,0,0,0,0,0,0,0,0,0,0,90,252,252,252,252,252,252,252,252,252,252,252,252,252,252,186,34,0,0,0,0,0,0,0,0,0,0,0,5,32,32,32,32,32,32,32,32,32,32,32,32,32,32,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,160,216,254,255,231,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,254,254,254,249,149,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,132,56,56,175,253,254,188,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,85,3,0,0,0,101,254,254,207,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,202,254,245,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,95,4,0,0,0,0,45,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,206,254,254,233,115,17,0,0,163,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,244,254,254,254,254,254,198,109,52,248,172,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,192,150,181,250,254,254,254,233,246,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,204,203,6,0,0,50,166,254,254,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,252,76,0,0,0,0,9,124,254,254,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,244,0,0,0,0,5,111,242,250,237,254,240,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,244,0,0,0,61,157,254,222,91,26,235,254,194,16,0,32,0,0,0,0,0,0,0,0,0,0,0,38,250,151,151,193,251,254,226,89,0,0,51,254,254,240,182,137,0,0,0,0,0,0,0,0,0,0,0,34,247,254,254,254,254,216,33,0,0,0,2,65,224,254,202,54,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,176,93,27,0,0,0,0,0,0,13,66,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,102,126,227,164,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,255,254,254,160,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,228,254,254,254,254,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,238,73,38,189,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,19,0,4,182,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,180,254,250,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,239,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,245,254,254,222,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,243,246,254,249,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,218,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,247,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,246,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,160,25,0,0,0,78,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,161,78,34,148,243,254,169,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,254,254,254,254,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,254,254,254,254,181,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,183,242,222,82,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,192,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,244,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,28,0,0,0,51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,149,6,10,111,198,247,248,173,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,56,51,230,253,253,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,252,226,138,63,192,254,179,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,226,0,0,0,66,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,188,0,0,0,29,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,52,13,0,0,0,29,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,153,0,0,0,0,154,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,235,253,253,158,57,57,108,254,241,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,235,253,254,253,253,253,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,178,255,253,253,253,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,230,254,255,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,206,253,253,254,248,142,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,141,248,95,47,192,161,249,220,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,169,0,0,0,0,97,247,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,220,239,30,0,0,0,0,0,167,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,226,0,0,0,0,0,0,9,224,220,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,148,0,0,0,0,0,0,0,140,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,238,31,0,0,0,0,0,0,0,44,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,243,218,0,0,0,0,0,0,0,0,44,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,157,0,0,0,0,0,0,0,0,44,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,104,0,0,0,0,0,0,0,0,44,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,43,0,0,0,0,0,0,0,0,152,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,43,0,0,0,0,0,0,0,0,219,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,43,0,0,0,0,0,0,0,30,237,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,43,0,0,0,0,0,0,0,143,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,86,0,0,0,0,0,0,106,248,204,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,169,0,0,0,0,0,81,244,247,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,190,244,82,0,0,0,163,251,242,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,248,246,118,100,184,254,244,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,253,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,149,187,155,125,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,194,250,254,254,206,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,47,101,216,251,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,212,242,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,215,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,215,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,172,254,154,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,197,254,204,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,238,254,177,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,170,208,254,254,255,252,246,170,170,128,90,90,10,8,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,254,254,237,234,254,254,254,254,254,254,254,254,249,182,117,84,95,44,0,0,0,0,0,0,0,0,23,61,61,61,8,0,59,61,61,99,141,213,222,254,254,254,254,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,81,139,210,210,210,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,204,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,218,61,0,0,0,0,0,115,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,108,0,0,0,0,0,128,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,108,0,0,0,0,0,128,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,83,0,0,0,0,0,153,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,18,0,0,0,0,0,217,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,254,18,0,0,0,0,0,217,253,195,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,248,254,18,0,0,0,12,38,233,253,207,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,50,14,91,124,228,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,254,254,254,254,234,148,243,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,134,198,198,159,76,13,0,217,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,181,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,221,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,186,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,244,237,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,254,254,253,247,161,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,239,138,99,99,181,191,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,242,254,66,0,0,0,16,204,241,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,149,11,0,0,0,0,22,204,236,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,21,0,0,0,0,0,0,52,223,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,21,0,0,0,0,0,0,0,76,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,67,0,0,0,0,0,0,0,4,203,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,64,0,0,0,0,0,0,0,0,180,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,246,64,0,0,0,0,0,0,0,0,50,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,157,4,0,0,0,0,0,0,0,109,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,26,0,0,0,0,0,0,0,109,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,94,0,0,0,0,0,0,0,109,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,120,0,0,0,0,0,0,19,200,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,233,221,13,0,0,0,0,0,119,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,68,0,0,0,0,46,221,242,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,245,240,91,2,0,46,198,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,145,92,198,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,243,254,254,213,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,25,82,82,107,143,143,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,54,88,149,198,225,255,254,245,188,167,95,22,0,0,0,0,0,0,0,0,0,0,0,0,12,80,181,234,254,254,239,205,161,110,46,23,0,0,0,0,0,0,0,0,0,0,0,0,10,11,58,172,235,254,248,190,127,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,237,230,205,141,78,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,200,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,248,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,212,254,154,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,167,254,209,52,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,241,254,137,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,193,254,205,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,176,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,14,0,0,0,26,205,203,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,218,105,38,38,120,240,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,156,247,254,254,254,158,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,104,142,76,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,153,186,162,128,161,229,254,152,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,254,253,253,253,254,253,201,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,242,137,105,221,154,171,138,137,224,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,96,0,0,0,0,0,0,0,40,228,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,46,0,0,0,0,0,0,0,0,185,255,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,96,0,0,0,0,0,0,0,72,247,216,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,215,7,0,0,0,0,0,13,195,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,169,0,0,0,0,26,180,253,219,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,216,254,170,32,0,51,254,254,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,240,254,241,230,247,254,160,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,253,253,253,122,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,253,253,253,185,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,212,254,254,160,9,125,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,204,253,206,48,0,0,3,90,237,249,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,164,9,0,0,0,0,0,161,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,203,6,0,0,0,0,0,0,161,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,127,0,0,0,0,0,32,136,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,155,114,55,138,139,155,241,253,254,177,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,246,254,253,253,253,254,253,242,230,113,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,161,211,244,160,161,77,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,177,254,255,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,104,244,253,253,253,223,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,76,180,219,253,253,253,253,253,253,227,213,146,45,0,0,0,0,0,0,0,0,0,0,0,0,0,56,205,253,253,253,253,253,229,198,87,61,61,139,225,228,192,41,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,233,147,46,0,0,0,0,0,40,245,253,155,11,0,0,0,0,0,0,0,0,0,0,166,245,253,243,146,42,0,0,0,0,0,0,0,0,241,253,253,82,0,0,0,0,0,0,0,0,0,0,0,47,123,30,0,0,0,0,0,0,0,0,0,0,241,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,229,253,253,236,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,128,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,244,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,253,253,250,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,219,253,253,253,200,57,27,88,125,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,104,226,244,253,253,253,253,253,246,243,249,253,253,0,0,0,0,0,0,0,0,0,0,0,63,102,220,237,253,253,253,253,253,206,104,34,34,34,34,34,34,0,0,0,0,0,0,0,0,0,0,94,240,253,253,253,253,253,253,241,102,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,235,253,253,253,253,253,253,182,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,248,253,253,253,233,110,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,116,116,116,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,86,0,0,0,0,16,243,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,245,236,6,0,0,0,97,253,222,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,216,253,207,21,0,0,27,238,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,222,254,243,71,0,0,0,153,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,248,254,253,113,0,0,0,32,238,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,230,81,5,0,0,0,113,253,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,103,2,0,0,0,58,249,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,254,134,91,20,33,170,253,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,233,255,254,254,254,254,255,254,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,166,229,253,253,253,254,241,185,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,36,161,253,243,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,151,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,238,242,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,153,254,254,254,229,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,180,247,254,210,198,182,254,249,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,108,249,251,196,80,4,0,0,97,251,215,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,184,254,253,128,0,0,0,0,0,0,230,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,254,236,84,0,0,0,0,0,0,0,81,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,236,50,0,0,0,0,0,0,0,0,5,211,253,85,0,0,0,0,0,0,0,0,0,0,0,0,9,122,54,0,0,0,0,0,0,0,0,0,0,124,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,47,47,47,47,9,0,0,0,0,184,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,249,253,253,254,253,215,140,57,3,0,184,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,210,160,161,160,202,253,254,140,17,151,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,148,0,0,0,0,0,102,254,254,245,229,254,115,0,0,0,0,0,0,0,0,0,0,0,0,5,197,254,31,0,0,0,0,0,0,48,165,244,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,21,246,203,6,0,0,0,0,0,0,0,0,157,253,254,160,5,0,0,0,0,0,0,0,0,0,0,0,0,184,254,56,0,0,0,0,0,0,0,0,91,253,254,253,113,0,0,0,0,0,0,0,0,0,0,0,0,34,255,203,55,0,0,0,0,0,0,13,221,254,229,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,140,249,200,105,47,5,0,17,72,193,253,185,15,23,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,249,253,254,211,207,224,254,253,192,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,194,254,253,253,253,195,111,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,234,174,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,243,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,226,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,254,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,245,253,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,237,253,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,255,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,254,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,254,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,254,223,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,59,9,0,0,0,23,50,89,156,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,162,229,254,220,214,214,214,230,247,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,253,253,253,253,254,253,253,210,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,247,253,237,214,213,213,71,131,177,168,87,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,229,253,237,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,254,235,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,235,254,239,24,13,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,254,251,234,237,238,235,234,166,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,253,253,253,253,254,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,254,213,105,98,135,180,236,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,39,39,39,12,0,0,0,0,27,237,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,165,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,151,253,180,0,0,0,0,0,0,0,0,0,0,0,0,180,30,0,0,0,0,0,0,0,0,0,0,31,241,253,60,0,0,0,0,0,0,0,0,0,0,0,0,194,158,0,0,0,0,0,0,0,0,0,103,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,156,242,50,2,0,0,0,0,0,0,80,232,253,250,106,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,128,18,0,0,0,13,153,254,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,149,253,253,238,175,136,166,237,253,254,250,116,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,88,155,155,155,155,155,155,155,155,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,112,163,222,254,208,125,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,254,253,253,253,240,210,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,230,253,253,243,216,235,253,253,254,226,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,230,253,253,78,0,27,61,209,254,253,219,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,91,0,0,0,0,124,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,231,254,254,137,5,0,0,0,27,216,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,228,12,0,0,0,0,177,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,233,253,254,220,139,198,217,160,231,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,100,248,254,253,253,253,253,254,253,253,217,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,254,253,253,253,253,254,253,253,253,194,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,202,255,254,191,186,254,228,228,254,254,254,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,202,16,2,18,12,12,63,150,253,254,249,86,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,76,0,0,0,0,0,0,42,158,254,253,176,8,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,76,0,0,0,0,0,0,0,0,247,253,240,35,0,0,0,0,0,0,0,0,0,0,0,0,12,227,254,173,0,0,0,0,0,0,0,0,163,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,7,207,255,254,130,16,0,0,0,0,0,0,255,254,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,45,234,253,253,200,81,20,0,8,94,177,254,253,167,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,212,253,253,253,231,217,222,253,253,254,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,177,249,253,254,253,253,253,253,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,162,221,253,253,246,98,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,219,254,255,239,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,77,246,254,210,50,198,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,187,254,254,109,7,0,228,243,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,108,240,254,212,53,0,0,56,251,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,249,137,10,0,0,0,152,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,176,57,0,0,0,0,0,237,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,243,215,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,116,240,207,254,254,138,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,224,253,253,254,253,253,253,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,186,250,253,223,106,44,44,87,206,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,122,253,253,153,7,0,0,0,0,27,253,168,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,222,35,0,0,0,0,0,23,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,45,0,0,0,0,0,0,23,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,26,0,0,0,0,0,48,181,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,201,18,0,0,0,31,175,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,193,253,253,213,154,78,189,234,253,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,181,253,253,253,253,254,253,210,201,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,178,221,221,222,144,68,196,255,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,253,191,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,134,175,121,255,253,204,121,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,129,252,252,252,253,252,252,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,211,252,252,252,252,253,252,252,252,245,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,196,252,252,252,252,252,173,206,252,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,252,209,108,53,0,23,232,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,185,252,194,24,0,0,0,0,226,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,79,25,0,0,0,0,74,244,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,252,217,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,252,252,218,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,94,108,226,240,253,252,252,244,156,128,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,186,242,252,252,252,252,253,252,252,252,252,252,225,78,0,0,0,0,0,0,0,0,0,0,0,0,180,244,252,252,252,252,252,252,253,252,252,252,252,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,252,252,253,201,198,244,252,252,215,73,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,252,252,80,4,0,67,79,79,25,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,229,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,250,154,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,231,252,224,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,1,101,255,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,154,200,154,14,29,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,128,253,253,253,253,127,131,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,237,204,253,253,223,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,251,253,239,71,51,239,253,253,253,237,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,243,68,0,0,69,244,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,225,253,248,62,0,0,0,0,231,253,225,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,129,0,0,0,0,65,243,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,55,0,0,0,49,238,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,253,178,4,0,0,0,105,253,253,245,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,147,0,0,13,160,240,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,103,0,9,176,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,29,56,181,253,253,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,220,253,249,251,253,253,162,223,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,253,251,149,32,195,253,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,129,206,148,80,0,12,206,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,138,170,211,138,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,253,252,252,252,252,245,88,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,253,252,202,240,252,253,252,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,210,150,45,13,37,98,253,252,252,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,137,0,0,0,0,0,96,252,252,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,206,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,135,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,70,70,70,32,0,0,0,146,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,252,252,229,155,176,51,238,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,210,137,253,252,252,242,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,46,0,11,193,253,253,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,119,0,0,68,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,102,252,227,184,185,228,252,252,221,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,154,252,252,253,252,252,218,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,189,253,252,136,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,114,239,229,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,166,243,254,253,202,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,193,245,253,253,254,253,253,230,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,181,254,253,253,253,253,254,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,255,186,181,104,0,0,75,196,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,18,18,2,0,0,0,36,200,253,249,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,208,253,247,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,32,180,238,254,236,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,91,182,222,253,253,253,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,187,254,255,254,254,254,254,228,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,195,249,253,254,182,186,241,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,28,31,0,0,0,0,31,36,36,36,3,0,141,253,254,128,13,0,0,0,0,0,0,0,0,0,0,12,198,226,199,134,46,0,0,0,0,0,0,3,101,253,248,68,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,233,181,26,0,0,0,0,69,253,253,207,7,0,0,0,0,0,0,0,0,0,0,0,222,254,165,0,0,0,0,0,0,0,21,112,254,254,202,33,0,0,0,0,0,0,0,0,0,0,0,0,202,253,225,70,0,0,0,28,94,145,209,253,253,171,31,0,0,0,0,0,0,0,0,0,0,0,0,0,114,231,253,250,217,218,217,235,253,253,243,197,49,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,189,249,253,254,253,244,228,80,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,72,72,72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,157,84,46,41,11,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,242,236,229,254,209,222,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,150,33,72,132,206,191,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,240,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,112,120,58,83,88,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,246,252,201,238,254,161,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,199,254,105,5,22,134,244,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,247,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,5,0,0,0,0,0,0,23,210,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,149,0,0,0,0,2,67,208,254,219,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,247,118,48,48,98,160,254,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,255,254,254,254,254,255,246,150,66,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,214,254,204,145,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,104,141,241,192,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,252,252,253,234,131,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,123,246,253,252,252,177,119,224,252,228,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,252,252,253,227,103,3,0,44,228,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,239,75,0,0,0,7,204,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,252,252,227,88,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,186,43,0,0,0,0,0,95,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,140,115,6,0,0,0,0,0,13,206,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,234,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,241,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,229,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,255,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,240,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,109,159,179,248,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,101,240,254,254,254,254,244,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,176,163,127,239,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,177,42,1,0,33,238,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,254,67,0,0,0,135,254,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,144,19,0,0,0,219,248,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,217,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,146,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,4,201,250,27,0,0,0,0,0,0,0,0,0,0,0,21,154,0,0,0,0,0,0,0,0,0,0,0,124,254,138,0,0,0,0,0,0,0,0,0,0,0,0,196,62,0,0,0,0,0,0,0,0,0,0,16,208,225,33,0,0,0,0,0,0,0,0,0,0,3,165,201,28,0,0,0,0,0,0,0,0,0,0,132,254,130,0,0,0,0,0,0,0,0,0,0,17,145,197,6,0,0,0,0,0,0,0,0,0,0,0,188,238,27,0,0,0,0,0,0,0,0,0,49,173,251,31,0,0,0,0,0,0,0,0,0,0,0,41,248,145,0,0,0,0,0,0,0,0,22,155,247,205,45,0,0,0,0,0,0,0,0,0,0,0,0,51,254,103,0,0,0,0,0,3,47,130,229,254,158,6,0,0,0,0,0,0,0,0,0,0,0,0,0,11,212,234,113,24,68,68,99,215,254,254,217,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,241,252,236,255,255,255,235,179,59,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,158,158,158,158,128,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,74,227,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,252,253,252,232,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,223,252,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,120,239,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,255,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,185,252,253,156,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,75,252,252,253,224,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,252,253,252,223,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,253,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,253,252,247,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,252,252,253,126,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,106,144,245,254,254,254,193,144,101,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,253,254,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,166,154,223,253,250,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,10,10,10,10,10,2,0,37,221,253,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,5,3,154,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,156,253,198,181,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,254,253,253,253,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,254,253,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,203,225,222,221,249,254,230,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,10,0,0,133,253,253,155,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,249,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,23,2,0,0,0,0,0,0,234,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,185,253,168,22,0,0,0,0,0,157,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,152,23,0,0,0,79,251,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,253,253,253,204,122,75,122,173,253,253,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,255,253,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,66,170,253,253,253,254,253,253,253,236,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,81,196,253,254,253,210,133,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,255,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,136,228,247,253,253,245,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,215,253,253,253,253,245,166,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,223,253,253,253,253,243,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,187,254,253,253,253,253,213,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,126,220,253,254,253,253,240,213,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,182,253,253,253,254,253,229,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,120,226,253,253,253,253,241,113,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,254,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,228,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,237,253,253,233,159,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,253,253,218,136,201,117,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,244,253,253,253,253,253,253,215,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,249,253,253,253,253,253,253,244,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,174,253,253,253,253,253,253,247,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,253,161,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,126,163,255,246,124,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,116,155,230,253,253,253,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,228,253,253,233,217,107,10,172,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,231,253,253,221,73,0,0,0,159,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,231,247,181,42,33,0,0,0,8,231,247,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,191,0,0,0,0,0,52,200,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,107,0,0,0,0,49,233,253,188,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,191,0,0,0,96,232,246,159,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,218,20,2,89,234,215,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,211,176,253,207,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,174,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,253,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,232,239,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,232,253,128,11,157,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,235,253,169,9,0,110,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,170,8,0,0,160,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,253,20,0,0,43,240,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,73,4,59,191,253,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,189,242,253,250,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,149,149,222,204,125,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,97,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,254,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,254,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,249,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,206,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,211,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,245,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,201,254,250,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,254,248,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,230,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,178,156,156,156,156,156,134,59,89,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,241,253,253,254,253,253,253,253,254,253,253,247,49,0,0,0,0,0,0,0,0,0,0,0,0,0,102,241,253,253,253,254,253,253,253,253,254,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,22,152,254,253,253,216,213,214,213,213,213,213,214,213,213,198,27,0,0,0,0,0,0,0,0,0,0,0,174,253,254,237,58,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,194,254,254,255,238,59,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,254,253,253,247,214,215,214,147,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,253,253,254,253,253,253,253,254,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,50,247,253,253,253,254,219,226,222,253,254,253,253,253,253,152,6,0,0,0,0,0,0,0,0,0,0,0,0,95,155,103,58,58,9,18,14,58,119,155,185,253,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,158,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,123,44,0,0,0,0,0,0,0,0,0,13,183,254,39,0,0,0,0,0,0,0,0,0,0,0,0,34,247,131,0,0,0,0,0,0,0,0,0,55,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,118,253,244,157,38,0,0,0,0,0,0,99,226,253,171,9,0,0,0,0,0,0,0,0,0,0,0,0,118,254,254,254,255,246,156,119,156,97,186,254,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,253,253,254,253,253,253,253,254,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,247,253,254,253,253,253,253,254,253,253,195,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,191,254,253,253,253,253,254,250,183,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,155,155,245,177,133,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,47,47,85,200,200,167,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,146,176,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,51,93,93,172,247,247,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,31,39,96,193,226,253,253,253,253,253,253,219,205,61,61,183,253,253,135,0,0,0,0,0,0,0,0,139,229,253,253,253,253,253,253,181,115,115,115,14,0,0,0,162,253,253,99,0,0,0,0,0,0,0,0,255,253,253,253,240,168,23,14,7,0,0,0,0,0,0,0,162,253,253,99,0,0,0,0,0,0,0,0,223,228,253,166,58,0,0,0,0,0,0,0,0,0,0,8,173,253,246,87,0,0,0,0,0,0,0,0,0,23,123,3,0,0,0,0,0,0,0,0,0,0,0,62,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,214,207,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,125,198,238,254,235,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,232,253,253,240,178,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,253,253,253,253,161,163,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,249,253,222,253,249,247,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,139,4,75,96,244,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,250,237,14,0,0,49,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,250,218,53,0,0,33,191,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,229,253,171,0,0,26,119,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,96,253,248,184,75,91,253,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,77,248,253,254,253,245,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,255,254,254,243,132,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,41,201,245,128,162,249,253,199,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,248,237,95,0,0,61,225,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,78,240,233,52,0,0,0,0,70,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,161,244,191,24,0,0,0,0,6,144,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,217,253,182,8,0,0,0,0,0,39,237,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,14,227,253,146,5,0,0,0,0,0,14,191,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,189,4,0,0,0,0,3,77,231,253,168,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,236,250,168,155,155,179,237,239,253,253,148,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,99,171,240,253,253,253,173,169,85,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,13,63,0,0,51,0,38,138,204,253,253,253,129,29,29,4,0,0,0,0,0,0,0,0,0,0,28,47,38,38,0,0,0,0,57,243,253,252,252,252,253,164,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,215,252,253,252,252,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,252,253,252,252,252,253,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,204,253,253,253,176,194,253,253,255,253,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,243,253,252,252,151,38,57,208,246,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,186,19,0,13,13,187,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,13,194,252,252,253,151,6,0,0,0,0,13,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,151,0,0,0,0,0,0,0,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,51,216,252,252,151,0,0,0,0,0,0,0,0,253,252,233,22,0,0,0,0,0,0,0,0,0,0,29,234,253,252,148,6,0,0,0,0,0,0,0,0,253,252,168,0,0,0,0,0,0,0,0,0,0,26,210,252,253,202,6,0,0,0,0,0,0,0,0,0,253,252,118,0,0,0,0,0,0,0,0,0,0,70,253,253,254,134,0,0,0,0,0,0,0,0,0,126,254,247,50,0,0,0,0,0,0,0,0,0,7,187,252,252,209,28,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,66,252,252,252,113,0,0,0,0,0,0,0,0,19,172,246,253,158,0,0,0,0,0,0,0,0,0,0,141,252,252,252,113,0,0,0,0,0,0,0,63,194,252,252,178,9,0,0,0,0,0,0,0,0,0,0,129,253,253,253,192,141,141,141,141,141,141,241,254,253,253,228,51,0,0,0,0,0,0,0,0,0,0,0,10,196,252,252,253,252,252,252,253,252,252,252,253,240,158,9,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,253,252,252,252,253,252,252,252,106,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,139,203,252,252,202,140,65,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,180,255,243,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,231,253,253,253,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,229,253,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,83,230,253,253,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,253,253,178,110,210,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,253,253,228,147,24,0,26,253,213,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,221,253,253,252,189,0,0,0,12,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,251,137,0,0,0,0,12,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,210,0,0,0,0,0,5,187,253,229,33,0,0,0,0,0,0,0,0,0,0,0,0,0,78,239,253,249,34,0,0,0,0,0,3,172,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,17,209,253,253,211,0,0,0,0,0,0,12,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,213,26,0,0,0,0,0,0,12,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,147,0,0,0,0,0,0,0,12,253,253,224,30,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,147,0,0,0,0,0,0,58,191,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,147,0,0,0,0,0,25,184,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,167,2,0,0,12,138,239,253,253,253,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,186,183,183,200,253,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,238,253,253,253,253,253,253,253,253,249,102,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,242,253,253,253,253,253,253,209,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,75,201,234,135,135,135,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,200,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,161,13,0,0,0,0,0,0,28,201,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,239,26,0,0,0,0,0,5,139,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,239,26,0,0,0,0,0,33,231,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,158,0,0,0,0,0,5,196,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,233,226,26,0,0,0,0,0,145,255,225,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,229,254,83,0,0,0,0,0,85,247,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,26,151,252,254,148,5,0,0,0,12,161,246,247,69,0,0,0,0,0,0,0,0,0,0,0,0,68,126,180,252,254,213,44,116,141,212,212,212,246,254,122,11,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,254,254,254,254,255,254,231,254,254,254,219,61,0,0,0,0,0,0,0,0,0,0,0,0,0,45,193,234,224,202,137,90,52,52,72,254,254,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,85,246,254,180,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,247,254,188,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,225,254,187,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,248,254,186,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,249,253,181,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,79,111,111,204,210,209,209,210,126,44,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,253,246,188,214,188,188,241,253,253,253,126,19,0,0,0,0,0,0,0,0,0,0,0,0,34,163,236,186,105,30,0,14,0,0,30,134,179,247,254,160,0,0,0,0,0,0,0,0,0,0,0,0,184,253,188,0,0,0,0,0,0,0,0,0,0,140,254,173,0,0,0,0,0,0,0,0,0,0,0,0,254,237,53,0,0,0,0,0,0,0,0,0,0,70,254,173,0,0,0,0,0,0,0,0,0,0,0,0,221,143,0,0,0,0,0,0,0,0,0,0,0,142,254,173,0,0,0,0,0,0,0,0,0,0,0,0,70,164,139,90,0,0,0,0,69,139,141,240,239,249,254,249,133,40,2,0,0,0,0,0,0,0,0,0,0,26,124,108,0,0,32,150,240,253,253,254,253,253,254,253,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,224,253,253,253,253,253,253,253,112,4,78,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,253,253,253,253,252,243,83,6,0,7,122,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,254,253,252,109,0,0,0,0,0,91,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,248,179,58,0,0,0,0,0,0,91,253,248,0,0,0,0,0,0,0,0,0,0,0,0,0,43,156,128,53,0,0,0,0,0,0,0,10,174,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,96,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,174,253,253,190,16,0,0,0,0,0,0,0,0,0,0,0,0,54,225,78,0,0,0,0,0,3,102,186,253,254,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,232,61,21,89,91,91,178,253,254,253,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,199,208,205,202,208,208,208,208,208,208,138,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,63,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,193,253,249,100,126,126,62,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,218,254,254,254,254,254,254,254,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,250,254,254,181,101,64,137,70,254,254,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,244,254,236,67,2,0,0,0,7,222,254,254,219,96,0,0,0,0,0,0,0,0,0,0,0,0,42,244,254,254,70,0,0,0,0,0,3,135,233,235,254,205,22,0,0,0,0,0,0,0,0,0,0,0,244,254,254,74,2,0,0,0,0,0,0,0,22,219,254,229,15,0,0,0,0,0,0,0,0,0,0,121,254,254,138,18,0,0,0,0,0,0,0,0,15,211,248,254,77,0,0,0,0,0,0,0,0,0,52,235,254,206,22,0,0,0,0,0,0,0,0,0,0,68,198,254,187,0,0,0,0,0,0,0,0,12,150,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,128,254,194,0,0,0,0,0,0,0,0,40,242,254,224,22,0,0,0,0,0,0,0,0,0,0,0,8,203,254,117,0,0,0,0,0,0,0,0,100,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,73,254,242,39,0,0,0,0,0,0,0,0,225,254,254,28,0,0,0,0,0,0,0,0,0,0,0,0,147,254,223,5,0,0,0,0,0,0,0,0,192,254,185,25,0,0,0,0,0,0,0,0,0,0,0,71,243,254,140,0,0,0,0,0,0,0,0,0,63,254,254,64,0,0,0,0,0,0,0,0,0,3,136,214,254,182,10,0,0,0,0,0,0,0,0,0,6,210,254,240,140,11,0,0,0,0,0,0,53,139,254,255,201,43,0,0,0,0,0,0,0,0,0,0,0,76,226,254,254,181,102,102,102,102,107,198,250,254,253,147,35,0,0,0,0,0,0,0,0,0,0,0,0,0,33,185,245,254,254,254,254,254,254,254,254,226,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,98,197,168,221,202,125,59,29,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,243,255,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,103,252,252,253,223,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,252,152,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,247,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,0,13,47,47,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,230,0,0,0,0,0,66,203,252,252,237,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,239,34,0,0,0,9,194,252,252,252,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,253,143,0,0,0,128,252,252,252,200,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,255,253,137,5,0,202,253,247,42,127,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,252,252,177,57,253,252,196,140,244,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,252,253,252,252,252,252,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,252,252,252,253,252,252,252,210,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,137,189,253,252,221,137,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,148,255,235,150,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,64,215,252,190,250,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,104,254,236,100,0,81,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,254,232,71,0,0,0,169,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,76,254,238,49,0,0,0,31,218,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,250,113,0,0,0,50,226,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,240,250,113,0,0,6,90,227,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,186,0,0,20,169,254,200,165,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,158,49,133,212,254,201,49,223,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,254,247,154,22,110,254,202,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,187,213,248,155,35,0,43,248,243,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,32,0,0,0,95,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,242,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,242,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,226,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,238,255,147,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,249,214,118,118,141,248,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,253,253,253,246,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,240,253,60,123,229,253,253,253,253,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,209,22,0,196,253,233,65,25,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,220,187,128,246,232,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,217,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,244,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,240,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,169,98,238,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,243,253,51,0,84,239,180,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,199,16,0,0,159,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,175,0,0,0,18,201,220,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,175,0,0,0,0,176,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,183,6,0,0,0,176,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,134,15,5,47,222,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,232,253,253,225,169,253,253,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,224,252,253,253,253,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,224,253,226,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,125,232,254,254,254,254,231,125,125,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,118,235,253,253,253,253,253,253,253,253,253,253,253,248,168,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,253,253,253,253,253,253,253,253,253,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,218,42,19,19,19,19,19,19,19,19,157,186,0,0,0,0,0,0,0,0,0,0,0,0,69,246,253,253,245,91,0,0,0,0,0,16,115,228,233,54,0,0,0,0,0,0,0,0,0,0,0,0,0,30,231,253,253,243,185,21,0,0,64,184,253,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,86,240,253,253,190,116,215,242,253,253,253,247,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,176,253,253,253,253,253,253,253,191,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,212,253,253,253,217,119,51,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,242,253,253,253,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,253,190,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,218,253,253,117,175,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,240,107,20,53,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,241,253,181,0,0,18,181,253,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,229,253,181,0,0,0,46,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,189,20,0,0,18,201,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,253,227,53,20,20,176,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,253,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,153,248,253,253,253,253,232,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,220,253,253,166,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,148,245,253,253,237,192,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,252,252,252,252,253,252,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,206,253,252,242,205,170,232,247,252,247,188,128,127,119,7,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,231,95,0,0,0,63,136,205,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,9,204,252,236,54,0,0,0,0,0,0,11,129,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,128,253,253,132,0,0,0,0,0,0,0,11,175,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,206,252,217,0,0,0,0,0,0,0,8,171,252,253,252,245,56,0,0,0,0,0,0,0,0,0,0,78,251,252,94,0,0,0,0,0,0,8,173,252,252,253,252,231,0,0,0,0,0,0,0,0,0,0,0,85,252,236,31,0,0,0,0,0,11,171,252,252,199,209,252,231,0,0,0,0,0,0,0,0,0,0,0,85,252,189,0,0,0,0,0,45,219,252,252,155,7,253,252,231,0,0,0,0,0,0,0,0,0,0,0,85,253,227,42,0,0,48,174,253,255,239,62,0,0,255,253,170,0,0,0,0,0,0,0,0,0,0,0,57,246,252,226,191,190,247,252,252,239,68,0,0,36,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,125,245,252,253,252,252,247,143,17,0,0,0,106,253,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,83,189,190,153,128,63,0,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,214,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,37,0,0,0,229,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,201,227,0,0,37,245,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,89,225,254,148,0,0,112,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,182,254,254,120,12,0,0,157,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,210,254,252,120,12,0,0,0,157,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,210,254,254,74,0,0,0,0,0,128,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,112,231,254,71,1,0,0,0,0,0,125,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,224,148,65,7,0,0,0,0,157,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,239,254,254,254,228,224,154,70,15,79,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,44,29,75,133,133,212,238,254,254,225,191,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,64,180,249,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,216,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,249,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,209,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,230,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,231,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,101,177,253,255,224,52,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,213,252,252,252,253,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,243,252,252,222,153,154,153,235,249,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,220,36,0,0,0,209,252,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,245,34,0,0,0,68,237,252,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,203,0,0,0,27,236,252,252,233,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,232,0,9,155,235,252,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,219,248,154,227,252,253,252,252,252,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,252,253,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,133,142,142,190,110,252,252,233,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,219,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,253,238,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,247,252,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,214,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,252,252,219,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,54,178,253,255,253,253,253,192,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,216,252,252,252,253,240,240,252,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,234,253,252,252,252,244,81,81,243,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,252,253,252,252,202,75,0,0,225,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,113,101,0,0,0,0,7,154,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,150,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,229,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,188,246,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,204,253,253,253,254,253,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,208,96,203,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,244,142,13,0,7,149,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,78,25,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,214,88,0,0,0,0,0,0,76,243,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,254,253,216,141,79,54,141,141,254,253,194,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,252,252,252,253,252,252,252,253,189,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,243,253,252,252,252,253,252,252,252,106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,203,252,252,252,253,227,139,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,136,157,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,73,227,251,254,228,251,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,142,254,252,146,126,53,243,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,225,98,0,0,169,240,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,238,36,0,0,79,248,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,240,249,104,0,0,17,215,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,195,254,130,0,0,0,171,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,12,0,22,211,174,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,173,245,218,102,206,223,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,180,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,255,196,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,239,52,146,245,188,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,228,151,0,0,50,207,209,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,69,0,0,0,41,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,222,17,0,0,0,1,175,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,201,3,0,0,0,0,128,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,69,0,0,0,0,142,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,204,60,0,0,48,219,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,193,254,240,158,136,245,207,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,122,254,254,218,176,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,235,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,252,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,233,255,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,215,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,178,252,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,252,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,172,172,40,149,254,254,254,215,199,172,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,244,254,254,254,246,150,74,111,155,174,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,230,248,251,254,238,69,0,0,0,4,149,229,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,241,248,199,23,0,0,0,0,79,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,244,118,3,0,0,0,0,30,213,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,110,42,0,0,0,0,0,13,213,232,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,177,246,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,247,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,249,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,244,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,240,246,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,245,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,188,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,147,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,216,242,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,250,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,152,193,254,253,132,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,252,253,252,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,183,183,142,102,123,243,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,132,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,123,223,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,163,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,192,253,252,223,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,213,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,123,0,0,0,0,0,0,0,0,0,21,223,234,30,0,0,0,0,0,0,0,0,0,0,0,0,112,252,243,81,0,0,0,0,0,0,0,0,0,162,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,41,0,0,0,0,0,0,0,0,102,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,243,122,41,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,173,31,0,0,0,0,31,213,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,253,252,253,232,203,162,102,183,233,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,183,254,253,254,253,254,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,151,172,252,253,212,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,115,171,182,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,196,232,162,91,183,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,222,108,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,237,101,0,0,0,0,4,92,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,218,0,0,0,0,0,124,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,150,0,0,0,5,141,247,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,248,93,16,134,207,254,239,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,137,112,128,95,225,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,247,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,216,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,229,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,237,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,75,157,232,111,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,204,254,254,254,254,197,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,209,254,254,254,254,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,254,254,254,254,251,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,233,254,254,240,101,227,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,243,23,17,246,254,254,230,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,238,254,254,229,107,214,254,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,241,254,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,254,254,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,241,254,254,254,254,254,254,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,204,172,91,173,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,217,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,169,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,191,154,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,77,95,179,255,214,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,235,225,79,138,241,245,254,254,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,23,200,253,254,254,254,254,254,254,254,254,254,214,132,8,0,0,0,0,0,0,0,0,0,0,0,0,40,151,242,254,254,254,249,218,185,128,43,40,40,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,31,209,254,248,106,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,47,190,254,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,218,254,254,175,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,191,254,254,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,173,6,37,59,74,147,216,237,237,237,125,0,0,0,0,0,0,0,0,0,0,0,0,0,149,250,254,254,162,107,241,254,254,254,254,254,254,254,247,31,0,0,0,0,0,0,0,0,0,0,0,10,243,254,254,254,254,254,254,224,175,91,44,44,122,254,228,19,0,0,0,0,0,0,0,0,0,0,0,18,238,254,254,252,236,174,91,4,0,0,0,42,235,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,43,71,71,65,0,0,0,0,0,0,46,209,254,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,205,254,228,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,234,254,227,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,189,243,254,225,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,9,33,129,240,254,254,178,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,246,215,241,254,254,218,91,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,254,244,128,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,246,99,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,9,83,91,91,121,172,120,135,51,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,99,205,254,254,254,254,254,254,254,254,254,176,54,2,0,0,0,0,0,0,0,0,0,0,0,0,3,181,254,254,254,239,152,147,95,147,208,229,249,254,254,127,2,0,0,0,0,0,0,0,0,0,0,0,22,246,254,254,235,35,0,0,0,0,0,0,60,214,254,254,127,1,0,0,0,0,0,0,0,0,0,0,0,138,213,234,254,51,0,0,0,0,0,0,0,10,174,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,41,4,0,0,0,0,0,0,0,0,28,241,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,231,255,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,235,254,156,2,0,0,0,0,0,0,0,0,0,13,95,141,181,197,197,149,116,62,11,0,0,0,0,195,254,245,14,0,0,0,0,0,0,0,0,0,15,177,254,254,254,254,254,254,254,254,222,173,89,10,87,246,254,82,0,0,0,0,0,0,0,0,0,0,149,254,254,141,41,41,41,41,91,123,223,254,254,222,246,254,208,12,0,0,0,0,0,0,0,0,0,0,255,254,187,8,0,0,0,0,0,0,12,123,239,254,254,254,93,6,0,0,0,0,0,0,0,0,0,0,254,254,126,0,0,0,0,0,0,0,0,26,206,254,254,254,254,232,153,101,0,0,0,0,0,0,0,0,254,188,4,0,0,0,0,0,0,0,53,220,254,186,32,101,244,254,184,69,0,0,0,0,0,0,0,0,90,82,0,0,0,0,0,0,0,0,88,90,90,21,0,0,7,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,150,202,254,255,254,241,156,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,245,253,253,253,254,253,253,253,253,120,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,253,234,120,36,36,36,36,114,242,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,167,254,253,245,88,0,0,0,0,0,181,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,254,253,240,119,0,0,0,0,7,207,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,254,228,16,0,0,0,0,19,254,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,108,76,223,253,194,16,0,0,0,154,253,238,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,253,227,59,0,32,226,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,249,253,238,31,201,253,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,254,253,253,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,255,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,152,254,253,253,251,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,149,253,254,147,100,253,207,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,151,4,8,210,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,243,253,188,0,0,0,199,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,235,0,0,0,11,215,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,253,130,0,0,12,180,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,253,147,37,128,219,253,146,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,254,249,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,207,253,253,163,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,139,167,173,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,120,246,251,254,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,224,254,254,254,254,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,218,254,254,254,252,170,188,254,230,161,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,178,34,0,80,254,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,254,189,11,0,0,41,250,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,248,254,254,70,0,0,0,0,176,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,227,13,0,0,0,0,158,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,218,0,0,0,0,0,158,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,245,254,243,36,0,0,0,0,158,254,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,254,215,95,0,0,80,219,254,255,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,253,246,246,254,254,254,254,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,254,254,254,254,254,254,254,254,254,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,99,183,241,235,235,202,177,226,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,23,23,0,0,149,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,178,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,234,254,254,245,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,211,199,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,185,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,164,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,237,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,229,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,205,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,254,254,254,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,238,254,254,254,216,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,192,254,247,133,115,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,204,0,0,0,27,96,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,254,236,46,0,56,196,252,254,220,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,117,0,88,236,254,254,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,246,254,214,0,56,236,254,254,254,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,180,254,249,84,0,235,254,254,236,171,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,169,0,64,253,254,187,13,98,254,205,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,230,47,0,96,254,240,11,73,245,232,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,125,0,0,28,173,103,114,243,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,125,0,34,22,55,216,247,252,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,222,190,251,229,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,254,254,254,254,177,47,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,153,254,181,154,154,56,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,0,0,0,218,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,202,5,0,0,218,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,240,29,0,0,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,241,221,0,0,0,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,144,0,0,0,218,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,54,0,0,0,218,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,54,0,0,0,218,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,211,63,24,54,236,169,66,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,243,254,254,236,249,254,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,243,254,254,254,254,254,242,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,113,113,128,246,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,250,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,234,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,240,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,242,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,249,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,250,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,164,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,250,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,177,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,192,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,161,254,211,0,0,34,104,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,235,46,0,63,254,167,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,250,73,0,63,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,211,0,0,63,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,211,0,0,63,254,254,185,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,211,0,0,84,254,254,254,225,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,219,50,138,233,254,254,254,254,225,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,254,254,254,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,254,254,254,254,254,254,201,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,228,254,254,254,254,254,254,254,254,188,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,227,254,254,254,218,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,49,49,49,76,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,230,254,254,201,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,255,255,255,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,236,232,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,147,254,254,254,235,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,125,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,228,255,156,8,173,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,5,0,160,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,254,206,2,0,160,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,254,87,0,0,160,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,201,4,0,0,160,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,115,0,0,2,195,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,241,134,0,0,25,254,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,121,0,0,146,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,247,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,214,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,252,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,242,145,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,254,254,238,254,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,246,254,235,113,82,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,106,165,217,255,254,248,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,254,254,197,118,191,195,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,160,26,11,0,0,18,251,39,80,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,208,237,41,0,0,0,0,3,160,185,252,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,155,0,0,0,4,34,149,239,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,252,225,99,99,150,199,253,238,154,128,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,254,234,153,70,0,0,138,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,94,68,3,0,0,0,0,169,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,216,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,231,252,253,248,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,245,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,199,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,240,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,241,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,193,252,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,224,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,154,253,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,226,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,194,255,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,149,249,253,254,221,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,209,253,238,149,250,253,230,134,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,220,253,208,57,0,78,189,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,237,49,0,0,0,3,62,253,232,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,92,0,0,0,0,3,63,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,106,0,0,0,0,38,253,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,168,0,0,0,0,115,253,253,242,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,157,0,0,11,78,249,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,140,116,188,212,254,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,254,254,255,254,223,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,163,180,125,150,253,254,205,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,210,253,195,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,247,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,239,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,253,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,253,201,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,246,204,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,115,156,254,254,254,205,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,66,203,253,253,253,246,253,253,177,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,241,187,89,19,117,246,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,244,242,120,28,0,0,0,6,227,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,237,253,85,0,0,0,0,5,163,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,187,3,0,0,0,8,122,253,239,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,87,0,0,38,201,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,246,87,80,207,253,235,81,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,160,253,253,253,253,253,231,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,253,253,253,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,213,253,253,253,231,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,235,253,244,156,227,253,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,125,253,248,84,0,63,245,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,253,103,0,0,0,105,253,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,227,8,0,0,0,16,244,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,223,0,0,0,0,0,90,253,233,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,251,128,16,0,0,1,87,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,190,253,253,218,152,110,151,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,150,241,253,254,253,253,253,251,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,148,230,214,173,153,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,76,66,86,202,253,222,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,13,47,99,170,252,252,252,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,168,146,0,70,252,252,253,252,252,252,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,230,178,0,44,236,252,253,252,252,252,252,245,160,160,50,0,0,0,0,0,0,0,0,0,0,0,0,0,230,251,84,64,248,252,253,252,168,96,22,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,242,42,32,210,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,194,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,252,229,207,207,207,207,93,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,253,252,252,252,252,253,238,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,253,255,253,253,253,253,255,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,252,252,253,149,175,206,102,92,113,240,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,173,25,0,0,0,0,0,184,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,185,252,157,0,0,0,0,0,0,17,209,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,189,22,0,0,0,0,0,11,193,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,24,5,0,0,0,0,0,11,202,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,177,57,47,47,47,140,203,253,252,187,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,252,252,252,253,252,252,252,252,253,134,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,253,252,252,252,210,150,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,137,232,252,253,231,158,22,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,107,128,240,240,240,108,107,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,247,252,252,252,252,252,253,252,242,226,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,252,242,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,252,252,252,252,253,252,252,252,252,241,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,252,212,177,66,66,66,129,221,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,79,21,0,0,0,0,0,107,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,91,199,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,14,92,202,253,252,252,252,248,210,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,253,252,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,219,253,253,253,253,255,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,149,249,252,252,252,252,252,202,145,97,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,149,236,252,252,252,252,252,190,26,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,252,252,252,176,39,17,0,0,0,0,0,0,0,0,51,81,38,0,0,0,0,0,0,0,0,226,252,252,252,252,153,73,0,39,32,32,67,67,67,67,96,200,233,252,224,0,0,0,0,0,0,0,0,253,252,252,252,252,252,241,186,224,217,219,252,252,252,252,252,252,252,252,153,0,0,0,0,0,0,0,0,161,252,252,252,252,252,252,252,252,252,253,252,252,252,252,252,224,212,134,38,0,0,0,0,0,0,0,0,108,236,252,252,252,252,252,252,252,252,253,252,242,239,225,127,29,0,0,0,0,0,0,0,0,0,0,0,0,45,154,238,238,238,147,106,183,168,107,106,67,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,70,70,87,161,161,162,245,203,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,189,249,253,254,253,253,253,254,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,253,253,253,254,248,249,253,254,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,253,253,219,136,56,57,203,254,253,168,19,134,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,241,101,0,0,0,49,254,254,241,34,0,185,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,106,0,0,0,26,224,253,254,73,0,0,151,0,0,0,0,0,0,0,0,0,0,0,0,0,13,171,113,4,0,0,0,89,253,253,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,222,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,140,254,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,236,17,0,0,0,0,0,0,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,167,0,0,0,0,0,0,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,253,244,51,0,0,0,0,0,0,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,94,0,0,0,0,0,0,0,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,254,214,25,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,206,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,107,253,252,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,215,252,252,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,246,252,252,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,128,252,252,217,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,207,253,255,215,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,215,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,200,252,252,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,207,252,252,233,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,207,253,255,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,197,240,252,252,165,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,249,145,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,220,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,159,165,239,254,255,226,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,98,182,253,254,254,254,254,254,254,250,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,137,239,254,254,240,204,127,116,47,27,194,254,229,20,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,224,68,29,0,0,0,3,134,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,236,14,0,0,0,0,0,97,254,254,216,142,70,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,248,87,0,0,0,2,157,239,254,219,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,135,254,248,57,0,0,167,254,254,191,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,145,254,252,106,144,253,254,217,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,174,254,254,254,254,246,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,164,254,254,254,250,154,132,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,137,254,246,228,254,254,254,224,155,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,151,11,58,127,211,248,254,221,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,17,0,0,0,0,48,149,253,203,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,206,6,0,0,0,0,0,0,232,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,128,0,0,0,0,0,0,42,245,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,112,0,0,0,0,0,0,167,254,231,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,193,3,0,0,0,15,128,252,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,245,254,74,27,27,97,198,254,254,169,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,254,254,254,254,254,249,161,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,179,222,254,184,101,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,205,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,238,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,245,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,161,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,201,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,179,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,163,255,254,254,254,221,163,143,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,249,253,254,253,253,253,253,254,253,244,157,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,191,42,36,36,101,127,178,248,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,54,54,0,0,0,0,0,0,4,187,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,158,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,222,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,132,248,254,253,154,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,210,253,253,254,253,248,178,128,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,51,200,249,253,253,253,235,235,244,253,253,212,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,253,240,155,72,0,0,36,182,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,156,72,0,0,0,0,0,0,0,124,255,234,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,232,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,183,254,234,78,0,0,0,0,0,0,0,0,0,0,0,0,0,8,55,55,55,4,0,0,0,0,51,199,253,233,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,202,39,37,11,37,95,231,253,231,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,217,253,254,253,253,214,253,254,249,176,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,105,163,214,253,246,162,136,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,147,0,57,57,0,0,0,0,0,0,82,197,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,202,63,206,243,125,51,76,113,213,226,243,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,101,157,253,253,255,253,253,253,255,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,202,26,44,215,252,253,252,252,252,197,234,233,96,0,0,0,0,0,0,0,0,0,0,0,0,13,206,252,252,210,85,75,56,119,168,80,56,13,149,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,202,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,207,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,57,38,0,0,0,0,0,45,225,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,234,59,0,0,0,89,229,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,240,163,138,225,237,253,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,225,247,253,254,253,253,253,114,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,184,197,145,109,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,218,165,105,69,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,190,247,252,252,253,252,186,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,252,252,236,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,236,145,43,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,101,0,7,42,227,190,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,141,250,227,104,105,148,245,225,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,253,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,175,252,253,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,225,252,253,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,252,86,77,244,198,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,78,245,253,147,0,0,216,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,252,68,0,0,162,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,252,141,4,0,0,92,252,244,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,252,252,84,0,0,0,197,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,252,84,0,0,80,241,252,208,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,255,253,245,49,0,123,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,252,252,140,128,253,252,252,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,252,252,253,252,252,141,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,120,247,252,252,253,252,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,173,164,147,112,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,69,151,168,219,138,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,218,182,135,249,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,188,193,91,4,0,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,211,98,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,215,15,0,0,0,0,0,0,9,27,54,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,105,0,0,0,0,0,56,128,201,254,205,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,254,37,0,0,0,7,135,247,246,207,41,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,178,213,141,63,85,201,254,233,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,224,253,254,254,254,88,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,221,254,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,227,254,252,92,130,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,220,254,244,38,0,100,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,249,83,0,0,135,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,246,82,0,0,63,252,202,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,208,254,149,0,0,34,186,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,231,8,0,14,155,195,115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,228,0,5,190,188,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,229,41,209,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,148,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,115,244,180,71,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,236,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,234,235,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,194,249,108,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,241,214,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,246,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,200,0,22,49,101,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,242,200,250,212,254,213,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,248,254,218,161,78,21,96,231,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,251,96,4,0,0,0,0,174,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,233,176,0,0,0,0,0,44,250,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,50,0,0,0,0,0,165,250,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,15,0,0,0,4,121,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,15,0,7,31,166,254,161,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,140,199,204,254,233,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,165,202,254,190,129,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,3,13,13,13,13,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,197,198,145,145,145,171,253,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,254,253,253,253,253,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,199,206,135,159,205,176,190,253,253,232,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,174,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,208,253,229,134,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,160,238,253,229,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,221,253,235,70,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,232,253,168,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,253,171,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,250,254,254,255,254,162,93,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,109,183,229,235,253,253,212,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,188,246,253,212,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,230,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,132,0,0,0,0,0,0,0,0,131,73,28,0,0,0,0,0,0,0,0,42,73,97,194,194,136,245,253,132,0,0,0,0,0,0,0,0,116,253,224,206,120,86,86,86,86,201,207,233,253,253,253,253,253,253,176,30,0,0,0,0,0,0,0,0,2,47,217,253,253,253,253,253,253,253,254,253,253,235,156,156,156,111,4,0,0,0,0,0,0,0,0,0,0,0,15,105,144,144,144,144,144,144,139,24,24,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,249,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,198,253,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,204,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,212,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,181,0,0,43,55,114,145,145,107,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,181,34,128,245,253,254,253,253,253,240,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,222,238,249,253,253,253,254,253,253,253,253,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,254,253,253,253,188,163,111,72,111,227,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,255,254,101,33,0,0,0,0,32,202,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,253,115,12,0,0,0,93,224,253,238,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,253,253,225,152,128,211,248,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,87,254,246,253,253,253,254,253,253,238,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,66,240,253,253,254,253,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,228,255,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,152,178,197,203,249,253,254,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,254,253,234,210,127,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,253,209,60,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,204,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,209,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,241,253,253,141,145,145,94,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,253,253,253,253,254,253,209,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,253,253,245,202,203,251,253,165,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,227,41,0,0,87,240,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,254,159,0,0,0,0,192,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,221,22,0,0,0,0,76,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,217,106,0,0,0,0,0,37,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,124,7,0,0,0,0,0,217,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,182,0,0,0,0,0,139,254,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,253,45,0,0,0,0,81,245,253,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,192,128,128,198,217,254,253,163,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,249,253,254,253,253,253,253,254,216,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,105,163,162,227,124,72,72,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,0,29,86,114,170,226,255,198,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,255,255,255,255,255,255,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,170,170,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,29,114,198,255,255,255,255,226,141,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,226,255,255,198,170,198,226,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,141,0,0,0,0,0,57,226,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,170,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,226,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,226,198,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,114,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,86,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,198,86,0,0,0,0,0,0,29,226,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,198,255,255,255,198,114,86,114,170,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,253,251,251,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,255,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,251,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,251,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,223,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,251,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,251,251,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,251,251,251,129,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,169,234,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,157,253,254,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,205,254,254,254,199,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,234,254,254,185,33,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,254,224,81,10,124,198,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,242,232,57,0,86,229,243,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,156,8,165,249,254,247,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,207,213,254,254,254,204,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,221,254,254,254,254,168,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,164,249,254,254,220,106,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,233,254,254,243,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,241,254,254,165,49,207,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,231,254,249,109,28,4,194,231,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,129,0,0,41,239,227,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,214,254,147,8,0,24,200,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,210,33,14,105,221,254,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,237,198,255,254,254,250,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,247,254,254,255,254,208,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,247,254,178,94,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,145,255,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,224,253,253,253,230,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,223,253,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,184,234,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,239,227,232,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,125,209,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,238,253,248,253,213,234,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,253,209,69,236,190,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,249,137,29,78,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,222,121,0,0,78,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,78,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,185,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,61,243,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,92,9,0,0,0,5,132,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,186,242,47,0,0,0,30,254,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,144,254,162,0,0,0,4,148,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,240,50,0,0,0,110,254,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,235,244,68,0,0,0,0,181,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,222,254,170,0,0,0,0,166,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,254,182,0,0,0,0,121,245,237,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,237,53,0,0,0,49,240,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,254,93,0,0,0,14,174,255,202,62,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,230,196,196,196,210,254,254,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,230,254,254,254,254,254,255,254,255,254,161,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,141,242,254,254,254,254,220,141,89,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,254,227,41,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,195,241,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,247,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,180,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,248,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,179,254,255,237,115,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,211,253,253,253,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,253,253,153,73,70,205,252,169,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,233,253,253,137,0,0,0,89,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,245,99,4,0,0,5,106,253,253,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,239,253,208,0,0,0,0,144,253,253,253,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,128,0,7,80,160,253,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,249,253,128,63,187,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,251,251,253,253,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,170,247,253,210,137,60,145,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,51,9,0,0,228,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,236,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,209,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,253,15,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,244,253,253,253,227,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,252,207,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,62,61,48,193,59,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,134,254,254,254,254,254,176,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,48,234,254,253,249,249,249,251,254,246,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,254,226,81,0,0,0,40,165,254,169,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,220,254,154,33,0,0,0,0,0,7,93,241,86,0,0,0,0,0,0,0,0,0,0,0,0,0,21,209,254,155,7,0,0,0,0,0,0,0,0,69,12,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,223,0,0,0,0,0,0,0,0,85,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,227,43,0,0,0,0,0,0,0,34,223,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,246,173,0,0,0,0,0,0,0,4,154,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,173,0,0,0,0,0,0,5,148,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,237,61,0,0,0,20,59,147,254,254,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,254,243,110,189,239,243,249,254,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,254,254,254,254,229,254,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,129,244,254,254,254,168,48,222,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,31,82,10,4,10,241,222,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,223,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,241,129,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,113,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,117,225,225,226,249,252,234,146,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,120,246,252,252,252,253,252,252,252,252,229,72,13,0,0,0,0,0,0,0,0,0,0,0,0,0,4,153,253,252,252,252,252,253,252,252,252,252,253,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,252,252,252,252,253,252,252,252,252,253,252,227,47,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,253,165,140,140,141,241,253,253,253,255,253,253,225,0,0,0,0,0,0,0,0,0,0,0,104,252,252,253,223,37,0,0,0,24,59,224,252,253,252,252,249,100,0,0,0,0,0,0,0,0,0,0,197,252,252,253,186,13,0,0,0,0,0,37,133,222,252,252,252,112,0,0,0,0,0,0,0,0,0,57,234,252,252,253,252,55,0,0,0,0,0,0,0,38,234,252,252,128,0,0,0,0,0,0,0,0,0,163,252,252,252,253,252,55,0,0,0,0,0,0,0,0,225,252,252,173,0,0,0,0,0,0,0,0,0,226,253,253,253,204,94,0,0,0,0,0,0,0,0,0,226,253,253,112,0,0,0,0,0,0,0,0,0,225,252,252,204,15,0,0,0,0,0,0,0,0,0,38,234,252,252,112,0,0,0,0,0,0,0,0,89,246,252,252,112,0,0,0,0,0,0,0,0,7,57,222,252,252,245,87,0,0,0,0,0,0,0,0,207,252,252,252,112,0,0,0,0,0,0,0,23,131,252,253,252,245,121,0,0,0,0,0,0,0,0,0,253,252,252,236,50,0,0,0,0,0,141,140,227,252,252,253,252,118,0,0,0,0,0,0,0,0,0,0,255,253,253,237,113,0,0,89,128,253,255,253,253,253,253,204,15,0,0,0,0,0,0,0,0,0,0,0,206,252,252,252,252,226,225,246,252,252,253,252,252,195,89,15,0,0,0,0,0,0,0,0,0,0,0,0,25,199,252,252,252,253,252,252,252,220,196,148,55,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,115,227,252,253,252,252,233,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,112,112,112,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,98,98,98,98,232,235,235,235,235,231,98,5,0,0,0,0,0,0,0,0,0,0,0,0,0,100,214,248,254,254,254,254,254,254,254,254,254,254,254,216,29,0,0,0,0,0,0,0,0,0,0,0,0,223,254,238,199,199,199,199,199,76,61,61,77,231,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,221,93,58,0,0,0,0,0,0,0,0,19,219,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,116,254,254,249,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,190,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,216,254,251,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,250,254,230,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,210,254,241,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,250,254,194,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,202,254,203,21,0,0,0,0,0,0,0,0,5,4,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,164,0,0,0,0,0,0,41,125,125,206,184,0,0,0,0,0,0,0,0,0,0,0,0,33,249,254,209,23,0,0,0,60,104,160,246,254,254,190,76,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,180,84,121,221,221,240,254,254,254,234,74,13,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,254,254,254,254,254,254,224,136,55,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,254,254,254,243,187,75,75,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,96,96,96,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,181,254,255,161,146,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,246,254,254,254,254,254,253,101,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,219,150,70,56,116,199,251,254,184,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,84,0,0,0,0,0,105,229,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,152,254,196,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,246,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,232,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,234,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,220,254,228,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,242,254,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,131,247,254,211,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,232,254,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,197,252,254,232,149,59,0,0,0,0,32,57,57,2,0,0,0,0,0,0,0,0,0,0,0,0,134,241,254,254,254,254,254,254,218,217,217,217,237,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,198,254,166,159,191,254,254,254,254,254,254,254,254,254,222,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,120,156,224,254,254,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,28,118,204,224,136,135,68,39,39,126,250,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,194,247,174,73,0,0,0,0,0,0,89,253,78,0,0,0,0,0,0,0,0,0,0,0,0,43,227,241,192,70,0,0,0,0,0,0,0,0,246,219,6,0,0,0,0,0,0,0,0,0,0,0,0,48,155,155,0,0,0,0,0,0,0,0,0,114,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,147,247,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,196,228,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,196,177,149,196,246,245,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,170,145,248,215,133,103,153,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,226,195,105,23,0,0,31,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,21,0,0,0,0,0,0,54,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,74,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,125,0,0,0,0,82,205,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,200,166,26,31,100,210,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,126,176,239,193,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,185,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,235,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,187,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,221,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,124,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,207,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,212,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,185,250,103,0,0,0,0,0,2,13,99,132,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,180,0,0,0,0,0,14,115,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,6,181,252,180,0,0,0,0,25,211,252,252,252,252,240,31,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,100,0,0,0,0,213,252,245,236,252,238,79,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,238,46,0,0,0,87,253,252,242,229,238,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,192,0,0,0,0,213,253,252,252,238,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,192,0,0,0,0,241,253,252,199,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,244,98,0,0,94,251,253,243,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,216,252,245,229,229,239,252,196,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,131,166,252,148,131,74,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,29,104,191,191,192,141,104,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,206,253,252,252,252,253,252,252,215,170,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,252,253,252,252,252,253,252,252,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,241,139,52,28,40,215,252,252,190,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,178,0,0,0,0,29,216,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,196,252,103,0,0,0,101,216,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,228,0,0,154,246,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,252,114,188,246,252,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,244,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,168,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,191,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,206,252,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,253,190,79,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,206,253,252,170,47,29,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,121,13,0,29,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,228,9,0,0,179,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,114,0,0,13,254,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,194,57,95,206,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,205,253,252,252,252,194,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,140,215,214,90,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,67,159,254,255,223,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,254,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,227,87,222,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,157,15,33,254,215,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,251,254,140,0,0,47,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,242,254,153,14,0,0,131,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,229,254,126,1,0,0,0,197,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,167,7,0,0,0,44,248,195,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,43,7,0,0,0,0,157,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,231,243,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,6,44,233,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,229,212,233,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,160,248,254,254,254,254,248,123,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,230,213,252,254,254,254,254,135,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,208,25,105,253,253,88,140,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,96,82,236,254,129,0,4,159,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,87,236,254,184,8,0,0,41,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,221,254,249,254,232,37,0,0,0,13,164,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,134,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,247,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,228,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,206,253,253,97,0,0,0,0,0,0,0,0,0,61,91,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,192,37,0,0,0,0,0,0,0,0,61,216,245,109,0,0,0,0,0,0,0,0,0,0,0,118,253,253,154,0,0,0,11,20,20,20,20,51,230,253,253,174,0,0,0,0,0,0,0,0,0,0,0,118,253,253,185,79,79,79,173,253,254,253,253,253,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,253,253,253,253,254,253,253,101,253,253,237,40,0,0,0,0,0,0,0,0,0,0,0,0,136,196,196,196,180,0,0,0,0,0,0,40,254,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,242,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,186,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,204,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,200,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,208,57,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,63,132,232,152,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,240,254,254,254,254,231,222,138,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,254,254,254,254,254,254,254,205,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,151,101,8,128,197,229,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,186,254,248,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,227,254,248,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,251,254,221,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,250,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,239,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,121,254,250,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,117,169,132,173,254,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,109,250,254,254,254,254,254,254,250,72,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,254,254,254,254,254,254,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,254,254,254,254,254,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,194,253,254,254,254,221,96,45,128,243,255,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,142,158,67,12,0,0,0,41,237,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,120,147,147,147,247,186,108,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,126,226,254,254,254,254,254,254,254,219,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,250,244,140,140,140,210,251,254,247,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,226,254,192,26,0,0,0,0,0,38,227,254,129,2,0,37,150,76,7,0,0,0,0,0,0,0,0,120,254,249,0,0,0,0,0,0,0,0,96,254,254,10,84,244,254,254,38,0,0,0,0,0,0,0,0,147,254,249,0,0,0,0,0,0,0,0,27,254,254,183,246,254,254,140,4,0,0,0,0,0,0,0,0,73,241,252,93,13,0,0,0,0,0,18,154,254,254,254,254,254,192,29,0,0,0,0,0,0,0,0,0,0,148,254,254,210,104,175,88,88,157,217,254,254,254,254,254,182,3,0,0,0,0,0,0,0,0,0,0,0,7,119,248,254,254,254,254,254,254,254,254,254,254,253,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,173,200,200,200,200,235,254,254,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,254,254,254,179,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,176,254,254,254,214,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,198,254,254,254,214,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,254,254,254,179,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,214,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,246,254,254,243,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,207,254,254,248,147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,103,227,203,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,130,150,150,163,255,203,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,181,232,253,253,253,253,253,253,238,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,109,232,250,253,246,217,132,181,71,114,139,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,233,170,94,0,0,0,0,0,83,253,246,31,0,0,0,0,0,0,0,0,0,0,0,0,0,13,124,124,51,0,0,0,0,0,0,0,220,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,147,246,253,246,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,178,253,253,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,123,232,253,253,197,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,31,110,130,229,253,253,227,41,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,253,253,253,253,241,82,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,253,253,199,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,176,212,212,129,109,109,163,225,253,223,21,0,0,0,0,0,0,0,0,0,0,0,0,13,24,0,0,0,0,0,0,0,0,0,0,19,235,253,115,0,0,0,0,0,0,0,0,0,0,0,12,191,67,0,0,0,0,0,0,0,0,0,0,0,76,253,152,0,0,0,0,0,0,0,0,0,0,0,94,253,141,0,0,0,0,0,0,0,0,0,0,0,21,253,243,0,0,0,0,0,0,0,0,0,0,0,48,240,245,80,7,0,0,0,0,0,0,0,0,7,167,253,243,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,166,36,0,0,0,0,0,0,77,197,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,253,237,218,131,115,115,131,218,251,253,193,112,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,253,253,253,253,253,223,164,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,46,137,175,211,189,192,91,46,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,225,206,254,254,254,254,254,254,254,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,253,253,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,206,188,188,188,188,165,134,123,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,180,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,113,0,0,0,18,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,24,0,14,85,224,252,184,139,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,138,113,236,253,253,253,253,253,244,141,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,253,253,197,120,158,202,253,254,180,8,0,0,0,0,0,0,0,0,0,0,0,0,0,52,246,253,253,253,206,128,4,0,0,2,71,236,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,219,148,77,3,0,0,0,0,0,0,103,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,207,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,242,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,239,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,150,8,0,0,0,0,0,0,43,229,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,185,63,35,35,35,77,158,243,253,254,127,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,253,253,253,253,253,253,253,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,191,253,253,253,254,253,253,253,233,142,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,66,153,248,214,194,153,130,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,253,252,206,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,252,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,148,252,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,230,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,67,59,0,0,137,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,120,223,253,249,108,0,4,137,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,186,253,253,234,245,187,0,0,27,225,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,196,253,244,117,12,168,187,0,0,0,127,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,8,196,253,250,88,0,0,151,41,0,0,0,89,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,184,0,0,0,0,0,0,0,0,47,243,211,3,0,0,0,0,0,0,0,0,0,0,0,0,152,253,199,9,0,0,0,0,0,0,0,0,0,232,253,66,0,0,0,0,0,0,0,0,0,0,0,0,243,253,165,0,0,0,0,0,0,0,0,0,0,232,253,66,0,0,0,0,0,0,0,0,0,0,0,0,243,253,69,0,0,0,0,0,0,0,0,0,39,242,253,66,0,0,0,0,0,0,0,0,0,0,0,115,254,247,48,0,0,0,0,0,0,0,0,0,90,255,249,58,0,0,0,0,0,0,0,0,0,0,0,210,253,169,0,0,0,0,0,0,0,0,0,0,27,239,209,0,0,0,0,0,0,0,0,0,0,0,56,246,253,88,0,0,0,0,0,0,0,0,0,0,118,250,165,0,0,0,0,0,0,0,0,0,0,0,67,253,253,88,0,0,0,0,0,0,0,0,0,54,251,253,99,0,0,0,0,0,0,0,0,0,0,0,67,253,253,88,0,0,0,0,0,0,0,0,5,147,253,246,35,0,0,0,0,0,0,0,0,0,0,0,67,253,253,127,0,0,0,0,0,0,0,0,110,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,6,156,253,249,107,1,0,0,0,0,8,146,243,251,117,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,158,45,45,45,108,224,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,227,253,253,253,253,253,254,253,253,122,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,120,196,253,253,253,240,143,52,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,103,82,0,0,0,0,0,0,54,214,254,253,253,72,9,0,0,0,0,0,0,0,0,0,0,0,0,0,25,3,0,0,0,0,0,8,175,253,254,253,228,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,194,253,253,254,230,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,145,253,253,253,214,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,145,253,253,253,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,238,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,229,253,253,239,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,235,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,213,0,0,0,0,0,97,108,213,241,241,241,228,0,0,0,0,0,0,0,0,0,0,0,134,249,253,253,93,0,5,94,229,228,251,253,253,253,253,253,252,108,0,0,0,0,0,0,0,0,0,0,228,253,253,236,55,52,160,253,254,253,253,185,173,173,185,253,253,120,0,0,0,0,0,0,0,0,0,0,228,253,253,214,89,234,253,253,254,225,136,9,0,0,76,253,253,120,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,225,67,38,0,0,15,83,233,253,250,95,0,0,0,0,0,0,0,0,0,0,121,247,253,253,253,253,253,211,175,118,90,174,195,253,253,249,131,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,253,255,253,253,253,253,253,235,131,0,0,0,0,0,0,0,0,0,0,0,0,0,34,212,250,253,253,253,253,255,253,253,242,240,140,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,140,253,253,253,121,120,120,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,237,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,98,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,216,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,240,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,138,0,0,0,7,136,162,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,188,0,0,26,199,253,254,249,180,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,162,0,41,190,242,162,80,117,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,230,0,195,236,54,0,0,47,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,237,78,255,90,0,0,19,204,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,245,228,31,22,80,237,244,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,163,246,254,228,228,253,247,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,128,228,160,160,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,166,253,214,239,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,216,204,89,5,42,186,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,240,143,9,0,0,0,18,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,205,63,0,0,0,0,0,106,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,82,0,0,0,0,0,0,194,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,107,0,0,0,0,0,0,82,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,16,0,0,0,0,0,43,176,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,211,0,0,0,0,0,8,181,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,211,0,0,0,0,0,155,167,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,247,53,0,0,0,168,207,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,138,25,114,236,194,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,219,98,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,242,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,205,247,205,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,37,144,252,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,212,0,9,142,253,131,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,225,21,0,16,107,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,202,74,16,0,147,246,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,252,252,231,169,183,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,121,200,252,252,253,173,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,249,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,228,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,202,255,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,217,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,182,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,230,253,248,130,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,189,86,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,179,254,253,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,254,253,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,250,253,254,253,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,125,250,253,253,254,253,226,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,254,217,52,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,254,254,150,0,78,254,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,100,248,253,253,253,253,217,26,0,164,253,253,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,19,206,253,253,253,253,215,37,0,4,170,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,29,206,253,253,253,253,210,31,0,50,151,253,253,253,253,189,8,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,253,31,14,75,149,253,253,253,253,244,84,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,253,183,193,253,254,253,253,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,253,253,253,253,254,253,253,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,39,222,253,253,253,253,253,253,253,255,253,253,253,41,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,150,253,253,253,253,253,253,254,216,199,59,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,104,122,253,253,253,253,105,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,64,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,191,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,64,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,128,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,155,255,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,157,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,212,253,245,200,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,216,253,202,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,245,253,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,216,253,208,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,210,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,203,14,0,0,0,0,0,0,23,60,175,177,177,147,13,0,0,0,0,0,0,0,0,0,0,0,128,253,146,0,0,0,0,0,0,60,198,253,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,154,253,65,0,0,0,0,16,123,244,253,253,160,90,63,227,240,74,0,0,0,0,0,0,0,0,0,17,244,253,65,0,0,0,64,191,253,253,159,34,1,0,0,131,253,152,0,0,0,0,0,0,0,0,0,17,249,253,65,0,0,9,199,253,245,115,1,0,0,0,25,217,253,93,0,0,0,0,0,0,0,0,0,0,140,253,78,0,0,193,253,229,32,0,0,0,0,4,127,253,205,15,0,0,0,0,0,0,0,0,0,0,36,253,229,53,0,243,249,118,0,0,0,0,30,176,253,241,84,0,0,0,0,0,0,0,0,0,0,0,27,232,253,229,79,245,236,25,0,51,66,118,219,253,241,85,0,0,0,0,0,0,0,0,0,0,0,0,0,61,232,253,253,253,253,220,201,241,253,253,253,191,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,131,195,253,253,253,253,253,253,161,37,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,20,201,253,170,190,91,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,219,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,217,253,220,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,249,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,253,125,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,74,0,9,176,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,246,63,0,59,245,224,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,177,253,182,0,0,0,199,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,245,65,0,0,0,100,244,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,210,0,0,0,0,0,205,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,210,0,0,0,0,0,114,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,181,253,210,0,0,0,0,0,115,253,231,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,210,0,0,0,0,0,205,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,253,210,0,0,0,0,0,144,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,210,0,0,0,0,0,102,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,247,69,0,0,0,0,127,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,217,253,189,0,0,0,30,224,253,217,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,249,67,0,0,187,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,241,236,236,249,253,215,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,114,253,253,253,253,253,216,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,91,217,253,159,129,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,166,242,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,238,110,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,232,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,234,91,0,0,0,0,0,0,0,0,0,106,151,151,95,9,0,0,0,0,0,0,0,0,0,0,40,225,132,0,0,0,0,0,0,0,0,16,185,218,166,162,232,212,43,0,0,0,0,0,0,0,0,0,226,211,22,0,0,0,0,0,0,0,15,194,190,36,0,0,15,191,194,0,0,0,0,0,0,0,0,18,234,56,0,0,0,0,0,0,0,18,234,164,32,0,0,0,0,124,255,0,0,0,0,0,0,0,0,81,206,7,0,0,0,0,0,0,0,199,171,27,0,0,0,0,44,221,146,0,0,0,0,0,0,0,0,164,122,0,0,0,0,0,0,0,0,254,28,0,0,0,1,73,229,182,0,0,0,0,0,0,0,0,0,254,149,0,0,0,0,0,0,0,0,254,28,0,0,43,159,228,104,0,0,0,0,0,0,0,0,0,0,115,237,49,0,0,0,0,0,0,0,254,70,121,204,237,164,40,0,0,0,0,0,0,0,0,0,0,0,13,214,230,179,114,114,82,40,114,114,254,251,235,171,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,169,169,133,197,254,212,169,75,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,92,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,252,223,162,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,253,254,253,254,253,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,253,252,233,192,151,192,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,51,173,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,223,253,252,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,254,253,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,232,233,151,151,192,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,162,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,233,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,123,92,10,0,0,0,0,0,21,52,173,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,172,102,102,41,82,163,223,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,255,253,254,253,254,253,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,131,151,232,192,151,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,118,210,254,254,121,192,86,23,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,253,248,237,236,97,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,219,103,170,40,174,204,253,253,253,253,234,83,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,22,61,135,76,229,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,236,253,227,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,243,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,25,0,125,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,74,67,144,144,165,241,144,197,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,253,253,253,253,253,253,253,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,128,243,253,253,253,253,253,253,253,253,253,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,84,248,253,253,249,170,111,34,34,194,253,253,213,249,253,245,110,0,0,0,0,0,0,0,0,0,0,0,205,253,240,172,51,0,0,0,89,239,253,251,98,52,227,253,244,75,0,0,0,0,0,0,0,0,0,0,234,253,207,14,0,0,18,91,239,253,249,206,0,0,110,244,253,96,0,0,0,0,0,0,0,0,0,0,148,253,253,170,29,158,199,253,253,223,85,0,0,0,0,114,253,181,0,0,0,0,0,0,0,0,0,0,45,231,253,253,253,253,253,253,253,130,0,0,0,0,0,63,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,25,140,254,254,254,255,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,197,187,253,253,253,253,253,253,240,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,239,253,253,253,253,253,253,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,195,253,253,253,253,253,253,253,253,253,253,202,34,0,0,0,0,0,0,0,0,0,0,0,0,11,141,248,253,253,253,253,253,253,253,253,253,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,253,253,253,253,253,253,253,253,253,253,253,244,77,0,0,0,0,0,0,0,0,0,9,136,250,253,253,253,253,242,99,52,52,52,52,88,240,253,253,253,233,62,0,0,0,0,0,0,0,0,80,253,253,253,253,253,242,87,0,0,0,0,0,0,77,235,253,253,253,150,0,0,0,0,0,0,0,0,86,253,253,253,253,248,97,0,0,0,0,0,0,0,0,211,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,130,0,0,0,0,0,0,0,0,0,211,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,130,0,0,0,0,0,0,0,0,0,211,253,253,253,253,0,0,0,0,0,0,0,0,132,253,253,253,210,4,0,0,0,0,0,0,0,15,161,252,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,209,0,0,0,0,0,0,0,0,156,253,253,253,253,253,253,0,0,0,0,0,0,0,0,97,253,253,253,209,0,0,0,0,19,53,102,228,250,253,253,253,253,233,79,0,0,0,0,0,0,0,0,80,253,253,253,209,0,0,0,5,174,253,253,253,253,253,253,253,244,75,0,0,0,0,0,0,0,0,0,80,253,253,253,245,211,211,211,212,253,253,253,253,253,253,253,237,202,0,0,0,0,0,0,0,0,0,0,80,253,253,253,253,253,253,253,253,253,253,253,253,253,253,157,77,0,0,0,0,0,0,0,0,0,0,0,19,180,253,253,253,253,253,253,253,253,253,253,242,235,144,10,0,0,0,0,0,0,0,0,0,0,0,0,0,98,180,253,253,253,253,253,253,253,253,159,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,175,253,253,253,253,253,192,78,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,133,133,133,134,133,191,214,254,254,254,254,249,184,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,254,253,253,237,229,229,130,109,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,118,96,96,154,96,96,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,94,205,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,142,233,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,156,253,236,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,253,237,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,239,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,246,155,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,138,242,251,254,156,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,208,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,217,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,222,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,242,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,0,0,114,253,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,33,156,245,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,238,247,222,104,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,104,253,224,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,255,254,254,254,254,254,254,254,195,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,70,254,254,254,254,254,254,254,254,254,218,213,166,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,254,254,124,26,74,116,116,116,88,26,12,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,212,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,251,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,242,247,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,203,78,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,245,254,254,228,116,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,208,247,254,254,226,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,15,0,0,0,45,92,207,253,249,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,40,0,0,0,0,0,0,113,235,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,149,0,0,0,0,0,0,0,87,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,49,0,0,0,0,0,0,31,229,218,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,191,218,127,41,1,0,0,45,182,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,254,254,206,205,205,245,254,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,65,212,253,254,254,254,254,254,188,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,222,254,254,184,131,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,152,152,152,152,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,253,252,253,252,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,183,61,62,183,234,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,171,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,0,0,0,0,152,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,193,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,173,10,0,62,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,253,212,102,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,214,253,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,172,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,242,181,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,231,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,204,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,111,248,254,207,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,168,247,249,180,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,152,254,248,91,63,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,126,254,237,146,0,55,252,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,54,0,0,51,251,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,246,254,161,7,0,0,77,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,169,254,232,34,0,0,0,161,254,242,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,102,254,230,77,0,0,0,65,243,254,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,235,247,78,0,0,0,12,204,254,200,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,200,254,146,0,0,0,0,148,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,238,59,0,0,48,190,251,254,123,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,243,248,56,0,10,149,245,254,254,102,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,155,9,110,225,254,254,217,66,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,251,254,182,225,254,254,254,148,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,254,254,178,51,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,254,219,107,22,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,122,146,216,255,245,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,49,227,253,253,253,253,253,212,15,177,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,158,240,253,253,253,253,253,253,202,95,252,245,88,1,0,0,0,0,0,0,0,0,0,0,0,0,1,169,253,253,253,253,235,253,219,201,156,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,253,53,111,14,0,168,253,253,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,253,230,52,3,0,4,30,245,253,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,137,0,0,0,114,253,253,253,253,253,209,3,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,180,0,0,79,241,253,253,253,125,167,124,2,0,0,0,0,0,0,0,0,0,0,0,0,1,107,253,253,249,113,70,207,253,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,240,253,253,253,253,253,253,253,253,168,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,253,253,253,160,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,173,253,253,253,253,253,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,253,253,241,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,253,253,253,253,240,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,253,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,253,253,235,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,253,253,253,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,250,253,253,253,253,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,227,253,253,253,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,37,143,253,253,151,170,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,236,254,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,252,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,242,252,244,236,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,126,232,252,236,111,43,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,199,66,0,43,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,254,239,17,0,0,43,253,109,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,239,68,0,0,0,29,168,14,22,128,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,202,0,0,0,0,0,0,11,167,252,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,6,190,252,80,0,0,0,0,11,99,211,252,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,252,45,0,0,71,106,219,252,252,252,252,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,237,227,253,253,253,255,253,250,177,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,252,252,252,252,253,189,66,64,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,152,232,231,222,126,126,109,5,0,160,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,208,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,136,255,214,92,47,47,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,253,253,253,253,253,253,236,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,253,218,217,236,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,246,253,253,202,88,2,0,212,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,247,253,247,138,8,0,0,82,252,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,247,253,219,94,0,0,0,0,160,253,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,243,84,0,0,0,0,44,246,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,27,0,0,0,0,0,145,253,233,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,219,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,211,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,248,253,231,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,223,253,245,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,253,230,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,252,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,64,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,209,178,59,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,143,121,114,238,204,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,229,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,176,213,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,179,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,187,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,88,118,118,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,213,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,253,237,254,244,125,52,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,238,185,103,36,58,58,40,234,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,194,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,215,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,240,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,94,253,247,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,226,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,199,211,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,234,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,62,174,87,93,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,155,111,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,253,169,36,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,30,130,29,0,0,0,0,60,244,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,51,118,116,0,161,202,13,0,0,0,0,93,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,164,236,228,136,144,117,0,0,0,0,0,134,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,184,252,252,135,52,0,0,0,0,0,0,207,252,253,252,252,160,0,0,0,0,0,0,0,0,0,0,36,222,253,253,210,0,0,0,0,0,0,0,208,253,255,253,253,161,0,0,0,0,0,0,0,0,0,0,132,240,252,252,151,99,47,30,0,0,0,0,207,252,253,252,252,87,0,0,0,0,0,0,0,0,0,0,0,50,188,252,253,252,252,227,184,64,0,0,207,252,253,252,170,13,0,0,0,0,0,0,0,0,0,0,0,0,17,45,253,252,227,236,252,197,93,68,113,252,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,117,69,155,95,86,252,246,238,252,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,11,11,136,247,253,253,255,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,244,252,243,108,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,240,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,249,253,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,163,246,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,9,135,211,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,86,252,162,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,163,254,238,81,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,154,239,253,253,253,253,245,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,86,175,247,253,235,167,102,245,253,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,247,176,53,0,18,238,253,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,185,94,0,0,53,213,253,253,193,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,171,255,241,30,0,61,179,254,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,254,212,147,207,229,254,253,253,253,215,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,254,253,253,253,222,152,91,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,211,253,214,213,183,153,34,93,235,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,58,0,0,0,0,0,36,126,253,72,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,224,253,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,213,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,254,250,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,181,253,253,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,222,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,223,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,228,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,238,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,189,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,167,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,217,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,155,255,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,201,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,250,158,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,246,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,187,254,254,254,162,78,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,253,253,254,253,192,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,105,137,137,137,138,192,253,236,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,152,253,235,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,203,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,243,249,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,70,70,70,0,0,0,0,70,245,247,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,206,122,26,34,212,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,254,253,232,240,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,236,69,128,245,253,253,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,237,136,221,254,254,254,255,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,254,253,248,139,203,253,200,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,192,251,246,245,164,42,0,29,226,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,63,50,44,6,0,0,0,89,236,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,36,133,226,254,104,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,156,253,253,236,229,249,253,155,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,152,254,253,248,194,28,0,148,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,206,253,223,84,72,0,0,130,238,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,192,253,224,35,0,0,12,147,236,253,253,227,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,187,37,0,7,91,205,253,253,253,225,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,207,13,0,6,174,253,253,253,229,156,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,170,46,98,219,238,253,253,155,26,12,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,244,240,253,254,253,168,24,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,253,253,249,132,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,42,226,254,254,243,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127,253,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,217,253,253,253,224,248,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,253,253,218,113,73,242,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,245,169,21,0,85,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,217,0,0,0,120,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,171,86,86,177,244,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,253,253,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,202,253,253,253,170,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,23,132,132,46,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,14,105,200,182,242,175,104,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,88,194,235,253,253,239,232,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,223,253,231,134,140,93,24,18,105,207,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,249,253,205,60,0,0,0,0,0,0,30,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,37,255,233,72,0,0,0,0,0,0,0,0,43,255,142,0,0,0,0,0,0,0,0,0,0,0,0,22,195,196,74,0,0,0,0,0,0,0,0,94,249,254,178,0,0,0,0,0,0,0,0,0,0,0,0,203,235,12,0,0,0,0,0,0,0,71,215,247,253,225,39,0,0,0,0,0,0,0,0,0,0,0,37,250,175,0,0,0,0,0,13,79,174,254,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,40,254,254,200,116,98,146,206,254,254,254,193,118,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,9,151,253,254,253,253,253,254,253,232,118,10,204,244,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,134,236,244,226,253,225,57,18,0,20,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,16,11,19,12,0,0,0,44,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,235,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,231,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,4,0,0,0,0,65,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,223,112,0,0,0,0,149,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,70,0,0,0,0,226,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,251,44,0,0,0,0,226,227,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,242,210,0,0,0,0,55,248,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,232,205,62,0,0,138,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,223,254,221,246,247,97,42,212,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,224,27,46,173,254,254,254,244,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,196,40,0,0,7,37,80,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,242,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,251,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,193,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,18,124,194,255,254,171,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,152,253,253,253,253,253,253,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,253,253,223,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,202,195,78,177,117,150,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,9,0,0,0,42,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,186,253,253,120,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,85,253,253,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,136,253,253,253,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,199,253,253,253,253,253,175,108,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,253,253,253,253,253,253,250,177,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,163,176,176,176,230,253,253,253,253,253,242,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,77,158,245,253,253,253,243,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,71,21,89,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,97,0,1,144,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,152,0,0,0,44,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,122,0,0,3,167,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,176,0,0,128,253,253,237,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,237,201,201,252,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,253,253,253,253,253,165,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,171,253,253,192,122,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,138,223,222,196,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,173,254,239,199,246,233,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,179,23,198,254,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,201,254,208,35,4,218,254,254,168,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,241,21,0,0,218,254,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,151,0,0,36,242,255,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,54,0,0,55,254,254,234,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,113,0,37,181,254,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,251,243,141,254,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,228,163,241,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,248,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,226,243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,210,237,56,0,0,0,16,240,246,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,230,254,246,140,56,37,131,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,204,248,251,254,254,254,224,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,108,195,163,163,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,64,64,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,243,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,122,0,0,0,0,0,163,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,233,0,0,0,0,72,152,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,70,0,0,0,41,253,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,224,20,0,0,51,233,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,81,0,0,0,233,252,253,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,51,233,254,253,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,171,0,0,152,252,253,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,151,0,0,214,253,254,233,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,192,21,183,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,254,253,224,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,197,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,218,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,227,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,213,252,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,252,252,145,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,252,252,209,160,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,246,252,253,246,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,0,0,0,0,0,0,183,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,184,0,0,0,0,0,0,255,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,134,130,0,0,0,0,0,0,202,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,248,172,73,0,0,0,0,73,253,247,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,71,0,0,0,0,0,0,225,230,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,113,0,0,0,0,0,0,176,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,255,200,120,59,23,14,0,0,194,254,147,37,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,254,243,215,186,138,254,254,249,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,169,235,235,236,235,235,235,195,254,183,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,218,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,209,208,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,245,125,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,175,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,47,173,255,234,172,108,80,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,182,254,254,254,215,254,254,254,233,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,160,254,200,110,7,3,7,47,196,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,192,30,0,0,0,0,51,235,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,112,0,0,0,0,0,163,254,153,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,5,0,0,0,0,54,244,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,246,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,250,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,235,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,214,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,45,171,190,253,241,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,181,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,254,254,254,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,216,254,254,254,181,139,254,240,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,254,217,28,3,230,254,189,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,250,254,254,186,22,0,0,43,212,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,166,6,0,0,0,0,15,225,248,151,44,3,0,1,2,0,0,0,0,0,0,0,0,0,0,159,238,115,4,0,0,0,0,0,0,44,223,254,254,212,188,190,100,0,0,0,0,0,0,0,0,0,0,18,20,0,0,0,0,0,0,0,0,0,9,131,217,254,254,206,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,28,130,130,130,98,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,154,253,253,253,253,253,219,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,253,253,253,253,253,253,253,218,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,159,253,253,253,236,228,228,228,236,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,211,31,0,0,0,75,253,43,0,0,0,29,32,1,0,0,0,0,0,0,0,0,0,0,19,253,253,253,86,0,0,0,0,28,131,37,0,15,150,247,253,85,0,0,0,0,0,0,0,0,0,0,16,235,253,229,30,0,0,0,0,0,0,15,90,201,253,253,253,211,0,0,0,0,0,0,0,0,0,0,0,125,253,223,17,0,0,0,0,15,90,201,253,253,253,253,253,229,0,0,0,0,0,0,0,0,0,0,0,25,253,253,86,0,0,14,150,201,253,253,253,253,253,229,139,38,0,0,0,0,0,0,0,0,0,0,0,7,181,253,187,63,90,203,253,253,253,253,253,229,139,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,253,253,253,253,231,142,61,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,87,232,253,253,253,253,253,253,158,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,147,232,253,253,253,253,253,235,172,79,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,253,253,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,198,145,69,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,224,88,38,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,205,253,253,250,172,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,150,253,253,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,207,253,253,230,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,129,129,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,255,253,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,242,253,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,243,252,253,235,252,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,184,252,252,141,44,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,241,252,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,220,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,215,27,162,253,253,255,253,253,149,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,177,252,187,158,252,252,252,253,252,252,252,226,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,238,107,96,96,168,252,252,252,225,30,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,236,127,0,0,0,8,101,236,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,139,0,0,0,0,0,0,169,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,9,188,252,252,48,0,0,0,0,0,0,169,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,173,53,0,0,45,97,205,237,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,225,252,252,239,217,217,237,252,252,252,229,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,200,252,252,252,252,253,252,252,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,110,131,241,252,248,131,131,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,129,253,255,128,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,207,252,252,253,252,247,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,181,253,252,252,231,217,226,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,231,46,0,73,252,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,220,41,0,0,73,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,179,119,25,0,0,0,10,190,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,212,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,206,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,255,222,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,217,217,73,207,252,252,253,138,0,0,0,63,21,0,0,0,0,0,0,0,0,0,0,0,0,21,0,217,252,252,253,252,252,252,154,21,11,0,0,186,61,0,0,0,0,0,0,0,0,0,0,0,0,144,144,237,252,252,253,252,252,252,0,155,175,144,0,0,0,0,0,0,0,0,0,0,0,0,0,32,129,253,253,253,253,253,255,253,253,253,255,253,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,115,252,252,252,252,252,252,253,252,252,252,253,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,217,252,252,252,241,195,71,72,71,175,236,253,241,215,132,72,10,0,0,0,0,0,0,0,0,0,0,0,134,252,252,189,77,0,0,0,0,0,62,108,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,120,203,254,85,0,32,170,255,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,230,237,253,236,253,248,230,241,253,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,253,247,128,29,180,230,251,253,244,146,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,214,253,253,84,0,0,0,26,239,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,136,0,0,0,0,187,254,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,181,6,0,0,5,147,254,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,240,254,223,42,0,0,0,141,253,254,130,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,228,40,0,0,0,17,224,253,169,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,251,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,253,149,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,224,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,244,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,189,254,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,247,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,128,191,255,255,255,255,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,128,191,255,255,255,191,64,0,64,191,255,255,255,0,0,0,0,0,0,0,0,0,64,255,255,255,128,255,255,255,255,255,191,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,128,128,64,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,132,173,253,253,253,255,184,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,222,252,252,252,252,252,253,252,237,122,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,252,182,96,96,96,219,252,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,204,16,0,0,0,4,152,234,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,129,51,0,0,0,0,0,0,128,252,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,13,122,76,13,94,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,181,252,252,252,253,252,252,224,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,230,252,252,219,251,253,252,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,194,252,236,101,8,183,253,252,252,213,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,200,48,0,79,249,253,252,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,233,252,145,0,109,218,252,253,210,225,252,238,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,124,126,246,252,252,106,21,59,252,252,204,57,0,0,0,0,0,0,0,0,0,0,0,0,0,6,180,252,252,252,252,252,103,0,0,6,134,252,252,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,102,1,0,0,0,5,187,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,131,131,28,1,0,0,0,0,0,124,252,212,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,247,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,226,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,248,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,229,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,247,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,244,17,0,0,0,0,22,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,160,0,0,0,0,85,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,69,0,0,0,26,254,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,248,56,0,0,0,110,254,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,187,0,0,0,11,215,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,137,0,0,0,24,253,254,236,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,138,0,0,0,49,254,255,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,137,0,30,147,241,253,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,232,207,237,253,225,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,202,253,195,111,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,212,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,159,253,253,250,200,69,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,172,252,253,253,253,253,253,253,244,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,184,237,253,253,253,253,253,253,253,253,253,161,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,253,253,253,253,253,159,55,0,0,0,0,0,0,0,0,0,0,0,32,202,247,253,253,253,253,253,253,230,168,207,253,253,253,253,244,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,250,222,161,0,116,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,253,253,150,0,0,0,56,234,253,253,253,253,0,0,0,0,0,0,0,0,0,15,166,252,253,253,253,253,253,135,7,0,0,0,0,216,253,253,253,253,0,0,0,0,0,0,0,0,0,61,253,253,253,253,253,253,241,20,0,0,0,0,11,219,253,253,253,253,0,0,0,0,0,0,0,0,0,200,253,253,253,253,253,238,63,0,0,0,0,0,116,253,253,253,253,253,0,0,0,0,0,0,0,0,131,247,253,253,253,253,253,86,0,0,0,0,20,79,237,253,253,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,253,253,187,23,0,15,30,169,192,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,255,253,253,253,253,253,85,15,116,241,253,253,253,253,253,253,253,253,253,182,0,0,0,0,0,0,0,0,254,253,253,253,253,253,241,220,253,253,253,253,253,253,253,253,253,253,76,15,0,0,0,0,0,0,0,0,250,253,253,253,253,253,253,253,253,253,253,253,253,253,253,246,245,179,17,0,0,0,0,0,0,0,0,0,58,231,253,253,253,253,253,253,253,253,253,253,253,253,203,22,0,0,0,0,0,0,0,0,0,0,0,0,0,36,134,199,240,253,253,253,253,253,248,199,156,45,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,99,99,99,99,99,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,241,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,190,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,120,237,186,229,144,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,147,230,254,253,253,253,254,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,141,249,253,253,205,137,137,137,113,192,249,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,236,152,69,0,0,0,0,0,38,186,253,160,9,0,0,0,0,0,0,0,0,0,0,0,0,24,254,210,9,0,0,0,0,0,0,0,0,116,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,74,202,50,0,0,0,0,0,0,0,0,43,190,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,49,236,43,0,0,0,0,5,24,91,49,224,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,210,101,93,93,60,155,253,253,254,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,185,255,254,254,254,254,254,247,184,93,138,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,23,40,81,115,115,31,21,0,30,201,223,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,170,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,185,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,229,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,216,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,228,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,180,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,245,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,149,247,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,84,206,254,255,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,94,205,253,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,132,140,140,140,227,246,253,253,253,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,247,253,253,253,253,253,253,154,67,132,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,227,221,124,124,60,20,1,0,85,253,243,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,246,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,210,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,232,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,165,253,222,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,225,253,183,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,156,253,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,222,253,198,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,239,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,94,185,252,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,178,240,252,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,214,252,252,245,224,252,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,242,252,252,194,59,39,164,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,244,252,252,124,25,0,0,113,213,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,241,252,252,195,24,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,198,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,202,19,0,0,0,0,0,0,0,0,0,0,0,0,22,120,0,0,0,0,0,0,0,0,0,0,255,253,204,19,0,0,0,0,0,0,0,0,0,102,155,253,253,253,175,57,0,0,0,0,0,0,0,0,127,252,252,39,0,0,0,0,0,0,0,46,226,250,252,252,252,252,252,119,0,0,0,0,0,0,0,0,121,252,252,158,0,0,0,0,0,0,157,237,252,252,227,130,47,218,252,168,0,0,0,0,0,0,0,0,19,199,252,240,178,64,0,0,0,0,253,252,222,60,29,0,56,189,252,252,0,0,0,0,0,0,0,0,0,79,245,252,252,241,179,67,67,137,253,252,113,67,67,96,236,252,252,146,0,0,0,0,0,0,0,0,0,0,59,108,213,252,252,252,252,252,253,252,252,252,252,252,252,252,221,94,0,0,0,0,0,0,0,0,0,0,0,0,21,108,212,216,252,252,253,252,252,252,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,93,93,226,225,249,252,252,252,248,225,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,106,106,106,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,171,207,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,229,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,206,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,254,68,0,0,0,130,50,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,254,254,68,0,0,0,212,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,136,254,254,245,56,0,0,0,212,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,254,174,0,0,0,0,212,254,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,219,22,0,0,0,0,212,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,228,254,254,174,0,0,0,0,0,121,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,221,20,0,0,0,0,0,88,254,254,177,69,4,0,0,0,0,0,0,0,0,0,0,0,52,232,254,254,114,52,75,75,169,163,176,218,254,254,254,254,12,0,0,0,0,0,0,0,0,0,0,11,233,254,254,254,222,239,254,254,254,254,254,254,254,254,254,254,12,0,0,0,0,0,0,0,0,0,0,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,218,113,2,0,0,0,0,0,0,0,0,0,0,13,254,254,254,254,192,136,37,37,37,37,37,112,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,2,40,154,139,30,11,0,0,0,0,0,0,11,223,254,242,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,255,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,247,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,226,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,243,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,118,118,240,142,118,118,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,116,245,253,253,253,253,253,253,238,97,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,208,198,234,253,253,228,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,164,82,82,16,0,69,238,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,195,232,50,0,0,0,0,0,137,253,253,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,69,69,69,56,60,233,253,253,186,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,186,189,253,253,253,253,240,230,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,63,165,232,253,253,253,253,253,253,253,253,253,253,253,179,6,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,253,253,250,246,248,253,253,253,253,253,253,167,47,0,0,0,0,0,0,0,0,0,0,58,243,253,253,253,253,189,74,0,69,253,253,253,253,253,253,253,232,47,0,0,0,0,0,0,0,0,0,173,253,253,253,183,68,7,0,37,219,253,253,250,150,192,253,253,253,151,0,0,0,0,0,0,0,0,0,254,253,253,86,11,0,0,0,209,253,253,244,92,0,14,179,253,253,244,63,0,0,0,0,0,0,0,0,221,253,253,212,125,199,199,199,248,253,253,118,0,0,0,18,162,191,102,0,0,0,0,0,0,0,0,0,99,250,253,253,253,253,253,253,253,242,112,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,253,253,235,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,156,148,134,171,116,116,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,255,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,202,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,221,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,240,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,209,12,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,181,0,0,0,0,0,17,99,196,223,194,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,181,0,0,0,9,83,248,253,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,144,0,0,0,130,253,253,253,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,20,222,253,175,0,0,116,248,253,248,108,15,186,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,181,0,45,242,253,223,105,0,0,182,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,19,221,253,246,95,199,253,253,155,4,21,131,246,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,253,253,253,221,185,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,253,253,253,253,253,253,253,253,252,211,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,213,253,253,253,253,253,253,234,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,95,175,253,189,110,46,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,202,232,138,138,138,255,253,253,253,253,191,138,107,5,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,252,253,252,252,252,252,253,252,252,177,15,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,252,252,252,253,252,252,252,252,253,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,109,202,202,194,252,211,193,160,236,252,253,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,9,22,13,8,32,228,252,253,252,221,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,255,218,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,178,240,164,143,92,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,184,222,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,150,252,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,253,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,231,255,253,253,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,207,236,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,194,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,0,0,0,0,0,9,181,255,253,247,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,102,9,0,0,30,78,194,252,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,196,184,185,228,252,252,252,215,110,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,177,227,236,252,253,252,252,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,16,113,137,148,231,137,96,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,146,211,254,254,254,254,254,255,169,91,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,253,253,253,253,253,253,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,250,253,253,249,248,248,248,248,249,251,253,246,93,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,197,145,26,0,0,0,0,22,132,253,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,219,233,253,253,246,114,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,34,44,117,231,253,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,161,235,247,253,253,253,253,253,253,189,87,87,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,253,253,253,253,253,165,81,1,0,0,0,0,0,0,0,0,0,0,0,0,44,232,253,253,243,199,199,199,199,199,199,199,228,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,97,161,65,43,0,0,0,0,0,0,0,29,128,199,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,251,249,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,250,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,129,248,253,246,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,107,250,253,253,245,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,184,253,253,253,212,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,32,0,12,40,164,249,251,253,253,250,147,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,250,179,204,253,253,253,253,237,183,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,242,253,253,253,253,168,136,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,232,255,212,156,45,0,35,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,163,254,187,176,239,252,250,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,249,253,254,39,0,19,95,111,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,185,2,0,0,0,26,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,254,40,0,0,0,0,48,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,241,26,0,0,0,0,162,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,254,134,0,0,0,0,0,198,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,30,0,0,0,0,7,210,235,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,250,173,4,0,0,0,0,31,254,236,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,4,0,0,8,86,129,144,254,254,166,216,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,254,254,254,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,8,90,133,229,254,154,53,128,14,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,203,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,243,233,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,107,234,255,255,142,76,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,107,228,253,253,253,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,143,224,253,253,253,238,235,242,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,253,253,253,234,128,18,0,41,239,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,244,253,230,128,22,0,0,0,0,230,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,93,25,0,0,0,0,0,82,245,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,158,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,244,233,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,188,253,229,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,188,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,75,75,75,109,215,253,253,143,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,81,160,237,253,253,253,253,253,253,143,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,185,253,198,166,183,253,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,253,227,14,17,125,253,253,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,231,27,64,186,253,253,229,154,232,253,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,3,185,253,239,121,245,253,253,178,51,0,56,233,253,199,13,0,0,0,0,0,0,0,0,0,0,0,0,4,202,253,253,253,253,234,118,6,0,0,0,150,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,7,82,135,135,118,10,0,0,0,0,0,4,95,253,249,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,175,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,95,208,240,159,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,221,254,163,137,183,250,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,242,208,56,3,0,0,98,238,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,226,9,0,0,0,0,0,235,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,69,0,0,0,0,0,0,235,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,238,15,0,0,0,0,0,0,235,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,189,0,0,0,0,0,0,44,228,101,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,162,0,0,0,0,0,0,72,104,200,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,215,1,0,0,0,0,0,0,22,242,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,56,0,0,0,0,0,0,107,245,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,228,38,0,0,14,59,161,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,251,194,201,250,230,144,240,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,53,143,93,13,7,0,235,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,243,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,220,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,225,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,218,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,111,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,222,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,199,253,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,193,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,204,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,147,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,174,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,207,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,157,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,154,170,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,36,36,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,90,172,172,253,254,254,254,228,172,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,115,254,254,254,254,254,254,254,198,183,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,117,254,254,179,165,55,151,47,47,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,186,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,254,225,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,245,254,254,228,142,142,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,192,254,254,254,254,254,213,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,77,77,77,214,255,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,158,248,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,1,29,51,9,0,0,0,0,0,0,0,55,243,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,183,0,0,0,0,0,0,60,238,254,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,230,166,62,48,48,68,166,234,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,229,254,254,254,254,254,254,254,254,254,254,195,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,133,194,225,206,254,254,216,196,171,171,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,23,15,35,35,19,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,141,57,114,29,86,141,29,0,0,57,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,255,198,170,198,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,255,255,255,255,255,255,255,57,141,57,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,226,29,0,0,29,86,86,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,226,141,29,57,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,255,226,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,226,255,255,255,255,255,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,57,86,170,226,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,170,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,255,255,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,170,198,255,198,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,236,175,128,175,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,254,253,253,175,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,105,117,123,194,208,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,116,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,153,251,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,59,59,95,212,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,232,253,254,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,239,254,241,249,254,254,248,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,112,18,45,58,130,254,244,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,161,244,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,217,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,227,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,140,11,0,0,0,0,0,19,128,236,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,242,226,177,118,118,129,195,249,254,253,159,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,254,253,253,253,189,105,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,80,139,175,230,193,157,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,213,136,136,136,117,18,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,253,223,154,47,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,253,253,253,253,211,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,253,253,253,253,253,246,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,80,196,212,210,173,253,253,253,253,253,253,253,245,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,15,3,29,29,29,29,136,251,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,253,251,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,253,253,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,86,245,253,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,173,253,253,253,253,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,97,236,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,110,253,253,253,253,253,253,228,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,171,253,253,253,253,253,253,195,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,224,253,253,253,253,253,249,82,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,185,253,253,253,253,253,194,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,137,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,206,253,253,253,253,223,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,253,253,253,186,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,192,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,240,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,192,254,155,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,210,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,213,254,220,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,206,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,236,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,167,121,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,254,254,254,254,253,172,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,211,105,203,225,254,254,156,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,184,23,0,0,21,113,236,254,152,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,225,254,70,0,0,0,0,0,49,235,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,70,0,0,0,0,0,0,54,241,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,70,0,0,0,0,0,0,0,158,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,70,0,0,0,0,0,0,0,174,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,70,0,0,0,0,0,0,82,246,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,254,123,0,0,0,0,9,81,215,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,233,135,91,91,131,205,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,196,254,254,254,254,254,254,171,82,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,88,209,254,195,152,55,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,42,133,133,133,24,1,13,82,151,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,253,253,150,254,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,241,217,217,217,254,253,213,96,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,239,79,0,0,0,85,84,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,230,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,236,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,235,253,152,0,0,0,0,41,86,85,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,141,132,218,218,218,235,254,253,248,218,218,183,65,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,253,253,253,253,254,253,253,253,253,253,246,85,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,253,155,132,81,11,11,11,11,35,132,225,253,203,12,0,0,0,0,0,0,0,0,0,0,0,76,122,122,29,0,0,0,0,0,0,0,0,0,74,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,174,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,97,236,253,253,87,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,184,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,98,98,56,93,104,218,240,253,253,225,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,253,253,243,252,254,253,253,232,116,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,231,253,253,253,254,184,115,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,59,112,194,255,254,254,201,156,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,254,253,253,253,253,245,207,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,157,78,78,78,78,167,205,254,253,229,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,117,61,0,0,0,0,0,8,111,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,217,254,235,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,229,254,243,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,146,247,253,254,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,136,235,250,253,253,253,254,236,136,136,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,253,253,253,253,254,253,253,253,253,173,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,99,15,0,0,0,23,98,98,197,254,255,208,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,151,254,253,180,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,117,0,0,0,0,0,0,0,0,0,0,0,0,25,156,0,0,0,0,0,0,0,0,0,0,141,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,40,253,58,3,0,0,0,0,0,0,19,170,254,253,216,25,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,187,175,124,79,79,79,146,247,253,254,216,84,0,0,0,0,0,0,0,0,0,0,0,0,0,18,191,238,253,253,253,253,254,253,253,253,253,154,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,103,223,253,253,254,253,253,200,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,201,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,231,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,241,254,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,246,254,238,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,254,250,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,160,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,254,136,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,119,252,253,140,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,254,209,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,250,254,219,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,232,254,241,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,245,86,0,0,19,44,97,136,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,233,254,201,0,0,6,153,254,254,254,220,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,74,6,104,217,254,254,227,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,82,42,226,254,223,150,43,178,254,230,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,163,245,254,215,11,33,222,254,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,245,254,254,254,254,148,146,226,217,111,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,254,254,254,254,253,191,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,200,254,211,158,158,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,140,254,179,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,249,254,253,253,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,234,253,247,108,240,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,185,253,253,161,0,134,253,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,224,35,0,28,233,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,220,253,253,132,0,0,0,169,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,217,30,0,0,0,169,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,216,32,0,0,0,0,169,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,156,0,0,0,0,0,169,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,253,41,0,0,0,0,0,169,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,173,2,0,0,0,0,35,250,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,36,0,0,0,0,21,218,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,241,31,0,0,0,0,112,253,245,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,0,98,222,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,0,38,223,253,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,168,0,0,35,226,253,243,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,197,12,78,223,254,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,223,250,253,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,228,253,253,253,253,82,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,132,190,132,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,136,242,223,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,216,253,253,254,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,223,107,108,204,194,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,244,180,12,0,0,139,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,245,25,0,0,0,7,222,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,119,0,0,0,0,8,229,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,99,0,0,0,0,1,200,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,99,0,0,0,0,66,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,133,0,0,0,60,213,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,251,176,83,160,254,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,254,255,179,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,133,160,99,48,9,219,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,233,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,226,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,240,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,255,253,253,253,110,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,222,252,253,252,252,252,253,242,196,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,242,252,252,253,252,205,71,72,195,221,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,191,108,31,0,0,0,120,252,145,20,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,252,252,252,83,0,0,0,0,0,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,11,175,252,252,241,97,0,0,0,0,0,0,139,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,58,252,252,252,215,0,0,0,0,0,0,0,37,252,253,56,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,215,0,0,0,0,0,0,0,37,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,217,0,0,0,0,0,0,0,37,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,215,0,0,0,0,0,0,0,26,97,222,25,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,215,0,0,0,0,0,0,11,140,181,207,20,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,215,0,0,0,0,0,0,31,211,252,62,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,217,0,0,0,0,0,0,94,129,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,252,247,93,0,0,0,0,94,247,200,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,236,252,252,252,211,21,0,0,21,212,200,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,252,252,144,0,0,144,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,192,109,212,253,208,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,210,252,252,252,253,252,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,195,241,252,253,252,246,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,190,170,168,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,233,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,196,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,224,234,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,146,113,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,216,194,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,238,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,236,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,233,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,61,0,0,0,0,0,118,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,234,174,117,68,77,226,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,114,48,106,183,237,254,254,202,155,113,72,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,220,72,0,0,86,254,156,96,164,179,244,248,223,159,110,76,29,0,0,0,0,0,0,0,0,0,0,1,96,228,241,170,242,128,2,0,0,0,7,8,55,92,168,197,250,193,163,0,0,0,0,0,0,0,0,0,0,7,82,66,24,0,0,0,0,0,0,0,0,0,0,1,4,58,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,3,57,66,67,149,159,159,159,159,226,254,155,0,0,0,0,0,0,0,0,0,38,122,135,225,138,131,207,226,249,253,254,253,253,253,253,253,253,253,250,121,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,254,253,253,253,247,247,253,253,253,214,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,208,177,177,85,84,84,84,38,113,253,253,244,77,0,0,0,0,0,0,0,0,171,206,167,112,60,18,18,8,0,0,0,0,0,0,44,226,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,184,253,253,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,253,253,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,246,253,253,200,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,135,255,254,254,209,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,166,253,254,253,220,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,254,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,250,253,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,90,213,253,253,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,253,223,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,253,253,234,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,219,253,253,234,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,212,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,246,169,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,150,233,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,89,253,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,203,254,254,254,232,77,54,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,155,240,254,223,76,254,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,101,216,254,227,122,26,110,254,254,254,184,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,222,254,254,179,48,0,0,181,254,254,146,6,0,0,0,0,0,0,0,0,0,0,0,0,0,2,145,248,254,182,111,4,0,0,3,250,254,206,3,0,0,0,0,0,0,0,0,0,0,0,0,0,6,144,254,254,171,0,0,0,0,0,125,254,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,6,142,254,179,95,4,0,0,0,0,61,246,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,177,14,0,0,0,0,0,0,124,254,246,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,97,15,0,0,0,0,0,0,24,226,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,255,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,199,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,192,8,3,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,198,254,128,66,130,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,202,106,84,84,84,112,254,254,254,254,212,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,254,254,254,254,254,162,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,106,177,254,254,254,235,135,100,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,91,163,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,253,240,240,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,159,251,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,253,182,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,173,75,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,253,181,179,179,109,30,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,238,253,253,253,253,253,254,253,253,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,36,53,0,224,253,253,253,253,253,254,253,253,253,253,251,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,22,230,253,253,253,253,253,254,253,253,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,164,105,139,253,253,253,253,253,14,0,0,0,0,0,0,0,0,0,0,0,25,114,254,254,254,254,254,254,105,0,0,0,72,243,254,254,164,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,253,232,79,18,0,0,0,0,189,253,253,238,49,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,253,154,0,0,0,0,0,8,174,253,253,194,21,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,189,8,0,0,0,0,8,183,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,119,0,0,0,76,111,226,253,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,214,179,179,179,254,253,253,253,253,253,237,12,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,253,253,253,253,254,253,253,253,253,237,56,0,0,0,0,0,0,0,0,0,0,0,0,39,222,253,253,253,253,253,253,253,255,253,253,210,163,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,208,248,253,253,253,253,253,254,242,111,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,210,253,200,104,104,105,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,87,159,253,253,253,255,253,201,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,193,253,252,240,206,206,207,236,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,220,252,215,110,50,0,0,64,44,119,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,51,114,240,176,108,21,0,0,34,144,241,59,111,119,4,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,221,25,0,0,0,0,93,252,251,88,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,255,218,32,0,0,0,5,24,212,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,5,136,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,138,252,252,195,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,185,26,93,197,253,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,248,236,252,252,243,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,253,253,253,233,24,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,253,244,206,244,252,253,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,209,252,173,56,0,56,121,190,252,234,142,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,209,252,116,0,0,0,0,0,5,83,252,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,221,43,2,0,0,0,0,0,0,5,190,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,184,0,0,0,0,0,0,0,0,5,191,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,183,0,0,0,0,0,0,0,26,136,252,193,8,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,234,90,38,38,25,19,70,122,222,252,170,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,219,252,252,232,233,223,220,252,252,234,45,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,252,221,137,85,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,51,51,51,51,152,233,254,213,92,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,203,223,253,252,253,252,253,252,253,252,253,252,203,203,142,20,0,0,0,0,0,0,0,0,0,102,254,253,254,253,254,253,254,253,254,253,254,253,254,253,255,253,163,81,0,0,0,0,0,0,0,0,0,20,253,252,253,252,253,252,253,252,253,252,253,212,253,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,233,224,203,142,102,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,212,131,30,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,91,11,51,92,51,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,253,212,213,252,253,252,253,172,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,254,253,254,253,254,253,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,252,253,252,253,252,253,252,253,252,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,253,254,253,254,213,254,253,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,171,50,50,50,10,50,50,71,232,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,41,0,0,0,0,0,0,0,31,233,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,132,10,0,0,0,0,0,0,0,0,0,21,214,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,172,212,142,20,0,0,0,0,0,0,0,142,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,253,193,112,52,51,52,92,214,253,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,31,151,253,252,253,252,253,252,253,252,253,252,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,223,255,253,254,253,254,253,254,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,112,232,253,252,253,212,151,151,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,178,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,250,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,247,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,224,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,247,225,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,218,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,227,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,217,253,181,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,188,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,159,254,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,167,254,193,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,187,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,216,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,215,247,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,255,232,7,0,0,0,0,0,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,254,85,0,0,0,10,87,170,234,228,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,250,239,17,0,0,4,178,254,243,150,246,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,171,0,0,9,177,255,137,19,79,248,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,232,14,11,175,254,205,50,125,248,210,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,221,182,254,254,254,254,253,178,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,238,254,254,254,254,232,169,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,241,107,9,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,226,194,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,247,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,185,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,199,248,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,218,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,229,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,228,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,127,0,0,0,0,16,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,127,0,0,0,72,243,222,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,238,58,0,0,73,247,254,254,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,20,247,253,253,233,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,10,172,254,245,61,117,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,192,0,97,253,189,56,0,116,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,108,27,238,253,202,5,0,199,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,76,37,254,254,33,0,121,254,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,160,121,253,220,0,51,225,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,245,235,253,253,218,250,253,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,253,254,253,231,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,92,162,162,227,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,218,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,255,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,237,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,244,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,235,252,253,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,252,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,246,252,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,148,183,253,253,253,175,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,206,252,253,252,252,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,252,235,232,231,189,252,252,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,242,162,14,0,0,92,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,71,232,252,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,210,253,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,155,242,253,252,252,252,200,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,242,252,252,253,252,252,252,252,162,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,252,236,189,128,84,136,231,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,50,31,0,0,0,0,55,235,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,255,63,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,171,252,253,63,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,252,252,206,5,18,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,158,252,226,80,0,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,59,0,0,0,18,0,0,0,0,0,0,0,0,0,0,103,245,122,7,0,0,0,0,0,123,253,253,199,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,42,0,0,0,22,173,253,252,201,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,191,128,127,180,237,252,253,201,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,142,252,252,253,252,252,252,252,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,147,235,253,252,155,147,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,109,191,192,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,207,252,252,253,242,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,120,252,252,252,231,217,247,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,181,252,252,210,108,46,0,217,132,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,47,232,252,252,205,20,0,0,0,144,0,0,0,0,79,109,253,252,133,0,0,0,0,0,0,0,0,0,109,252,252,252,93,52,0,0,0,20,0,0,73,197,242,252,253,189,71,0,0,0,0,0,0,0,0,0,31,195,221,252,252,231,160,16,0,0,47,181,253,252,226,215,72,10,0,0,0,0,0,0,0,0,0,0,0,0,16,108,252,252,252,190,0,125,221,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,253,253,191,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,211,252,253,252,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,253,200,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,253,222,144,207,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,155,252,138,0,144,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,153,21,58,221,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,0,73,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,47,233,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,232,252,241,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,180,252,252,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,128,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,160,243,254,254,201,152,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,163,246,254,253,253,253,253,253,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,253,253,185,149,191,253,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,244,108,0,0,38,177,247,253,225,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,50,0,0,0,0,70,251,218,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,51,0,0,0,12,189,249,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,224,0,0,76,188,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,188,252,84,36,196,253,159,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,239,240,227,113,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,239,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,240,254,255,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,135,252,225,218,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,205,253,223,28,128,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,247,247,146,3,0,32,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,247,226,86,0,0,0,105,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,219,28,0,0,0,20,217,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,177,0,0,0,19,201,253,232,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,194,57,57,123,243,253,232,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,215,253,253,253,253,232,134,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,187,253,253,186,69,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,168,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,165,252,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,252,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,244,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,139,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,128,255,128,128,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,179,245,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,254,245,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,254,246,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,228,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,254,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,254,254,244,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,182,255,254,188,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,237,254,255,189,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,228,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,186,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,216,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,247,254,237,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,241,255,243,117,18,13,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,253,253,223,154,200,148,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,252,230,253,253,253,253,253,253,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,169,123,47,182,182,204,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,235,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,241,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,242,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,233,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,249,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,169,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,196,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,242,116,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,77,247,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,253,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,229,172,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,242,252,45,132,252,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,241,252,252,104,225,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,230,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,131,131,17,138,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,230,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,169,23,119,98,132,132,132,132,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,203,193,254,254,255,254,254,254,243,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,254,254,254,226,242,209,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,204,102,18,12,16,8,89,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,240,26,0,0,0,0,0,76,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,169,50,0,0,0,0,0,0,76,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,198,243,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,241,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,74,0,0,0,0,0,0,16,253,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,51,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,182,252,230,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,239,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,155,253,248,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,252,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,191,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,34,126,144,144,144,27,0,0,0,0,0,0,0,0,0,0,0,38,21,56,67,91,177,125,67,148,177,188,253,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,236,223,246,253,253,253,253,253,253,253,241,223,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,252,231,231,134,9,42,235,253,253,246,72,0,0,0,0,0,0,0,0,0,0,0,247,237,253,224,126,88,84,0,0,0,32,155,253,253,241,81,0,0,0,0,0,0,0,0,0,0,0,0,48,38,55,26,0,31,89,89,123,199,231,253,253,236,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,194,240,253,253,253,253,254,253,253,242,98,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,253,253,253,253,254,253,253,253,253,176,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,250,176,94,66,66,66,157,216,253,253,222,108,0,0,0,0,0,0,0,0,0,0,0,0,0,31,33,33,128,0,0,0,0,0,0,17,105,230,253,248,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,254,221,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,110,0,0,0,0,0,0,0,0,0,0,40,148,78,0,0,0,0,0,0,0,0,0,0,0,122,253,253,143,0,0,0,0,0,0,0,0,0,0,157,253,251,205,31,0,0,0,0,0,0,0,0,0,26,253,253,249,0,0,0,0,0,0,0,0,0,0,138,253,253,253,250,89,0,0,0,0,0,0,0,0,122,253,253,229,0,0,0,0,0,0,0,0,0,0,22,207,253,253,253,244,199,103,39,0,0,0,0,70,216,253,253,105,0,0,0,0,0,0,0,0,0,0,0,79,245,253,253,253,253,253,243,203,122,180,232,249,253,253,211,17,0,0,0,0,0,0,0,0,0,0,0,0,22,99,202,234,253,253,255,253,253,253,253,253,253,207,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,37,100,176,221,253,253,253,236,176,124,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,110,143,85,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,192,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,31,132,214,253,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,82,0,0,0,82,203,233,252,253,252,253,252,142,20,0,0,0,0,0,0,0,0,0,0,0,102,254,253,163,0,31,92,254,253,254,253,254,253,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,102,253,252,243,40,193,252,253,252,253,252,253,252,253,252,253,252,41,0,0,0,0,0,0,0,0,0,0,41,234,253,254,253,254,253,254,253,203,122,0,0,21,162,254,253,102,0,0,0,0,0,0,0,0,0,0,0,112,252,253,252,253,252,233,70,0,0,0,0,0,102,253,252,102,0,0,0,0,0,0,0,0,0,0,0,41,243,254,253,254,192,41,0,0,0,0,0,11,173,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,81,253,252,253,192,0,0,0,0,0,41,173,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,254,253,254,253,193,152,152,233,254,253,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,253,252,253,252,253,252,253,252,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,254,253,254,253,254,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,151,232,151,232,253,252,253,171,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,38,0,0,0,0,0,0,0,0,0,0,0,37,113,190,255,122,0,0,0,0,0,0,0,0,0,12,205,252,107,0,0,0,0,0,0,61,76,102,184,251,174,70,70,21,0,0,0,0,0,0,0,0,0,5,190,253,248,222,217,134,222,222,222,247,253,253,249,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,63,248,253,235,214,210,243,232,210,210,201,103,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,85,7,0,50,33,18,121,189,164,82,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,161,0,0,9,111,194,249,243,243,251,217,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,222,23,157,231,250,181,62,0,0,121,252,229,27,0,0,0,0,0,0,0,0,0,0,0,0,0,2,175,253,203,253,150,55,0,0,0,0,0,124,253,161,2,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,250,55,0,0,0,0,0,0,26,248,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,253,205,0,0,0,0,0,0,0,0,150,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,165,0,0,0,0,0,0,0,0,42,238,233,28,0,0,0,0,0,0,0,0,0,0,0,10,0,5,62,6,0,0,0,0,0,0,0,0,0,211,253,176,0,0,0,0,0,0,0,0,0,0,51,204,68,0,0,0,0,0,0,0,0,0,0,0,0,139,253,183,0,0,0,0,0,0,0,0,0,0,47,241,206,25,0,0,0,0,0,0,0,0,0,0,0,191,253,183,0,0,0,0,0,0,0,0,0,0,0,152,243,177,3,0,0,0,0,0,0,0,0,0,0,211,253,80,0,0,0,0,0,0,0,0,0,0,0,0,151,253,128,0,0,0,0,0,0,0,0,0,17,222,245,56,0,0,0,0,0,0,0,0,0,0,0,0,44,227,252,144,24,0,0,0,0,0,0,0,110,253,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,225,253,167,88,33,33,33,33,33,103,252,240,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,142,213,248,253,253,253,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,88,168,168,145,145,187,137,37,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,37,37,4,0,37,37,37,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,177,170,254,253,253,237,170,170,72,49,28,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,253,201,193,193,254,247,201,253,253,253,253,253,222,125,0,0,0,0,0,0,0,0,0,0,0,0,153,253,229,26,0,0,60,54,9,60,60,60,60,60,60,60,0,0,0,0,0,0,0,0,0,0,0,0,182,229,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,243,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,222,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,79,253,218,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,228,208,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,100,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,24,24,24,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,212,252,252,252,211,100,68,161,120,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,236,253,252,252,252,252,253,252,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,252,252,252,252,253,252,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,146,248,252,253,252,136,65,137,201,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,212,253,253,253,210,0,0,0,0,24,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,235,153,0,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,19,164,246,253,252,202,64,0,0,0,0,0,0,108,252,252,160,0,0,0,0,0,0,0,0,0,0,0,112,252,252,253,172,13,0,0,0,0,0,0,0,138,252,252,66,0,0,0,0,0,0,0,0,0,0,95,246,252,252,180,8,0,0,0,0,0,0,0,0,191,252,252,45,0,0,0,0,0,0,0,0,0,13,212,253,253,180,0,0,0,0,0,0,0,0,0,0,255,253,184,0,0,0,0,0,0,0,0,0,0,118,252,252,252,22,0,0,0,0,0,0,0,0,0,22,253,252,183,0,0,0,0,0,0,0,0,0,0,253,252,252,153,6,0,0,0,0,0,0,0,0,26,152,253,240,81,0,0,0,0,0,0,0,0,0,0,253,252,195,9,0,0,0,0,0,0,0,0,0,134,252,253,112,0,0,0,0,0,0,0,0,0,0,0,253,252,183,0,0,0,0,0,0,0,0,0,116,248,252,243,50,0,0,0,0,0,0,0,0,0,0,0,244,253,253,159,34,22,11,0,0,0,34,253,253,253,243,53,0,0,0,0,0,0,0,0,0,0,0,0,61,206,240,252,252,245,203,161,161,109,212,252,240,164,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,208,252,253,252,252,252,252,247,183,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,150,161,160,160,160,108,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,89,119,231,156,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,203,253,253,253,254,235,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,183,254,253,198,235,137,175,241,229,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,237,117,71,6,15,0,0,125,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,36,0,0,0,0,0,0,42,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,217,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,79,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,234,244,253,254,253,172,47,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,254,253,253,253,230,158,150,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,244,195,196,195,195,204,254,255,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,76,33,0,0,0,0,6,76,201,253,241,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,226,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,174,0,0,0,0,0,0,0,0,0,0,0,0,31,8,0,0,0,0,0,0,0,0,0,0,0,0,192,174,0,0,0,0,0,0,0,0,0,0,0,35,224,57,0,0,0,0,0,0,0,0,0,0,46,217,254,116,0,0,0,0,0,0,0,0,0,0,0,118,253,149,20,46,0,0,0,0,5,19,44,170,244,254,191,12,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,145,116,146,86,79,156,247,229,253,253,205,57,0,0,0,0,0,0,0,0,0,0,0,0,54,196,253,253,254,253,253,253,253,254,253,253,231,101,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,73,155,216,170,155,208,253,155,155,88,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,51,132,254,253,254,131,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,212,92,252,253,252,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,152,253,244,223,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,112,252,162,20,172,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,255,151,21,102,113,132,255,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,192,41,41,233,252,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,255,253,255,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,192,253,212,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,144,253,253,253,253,155,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,252,252,252,252,252,252,211,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,248,253,249,216,216,216,226,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,252,251,127,0,0,0,96,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,250,107,0,0,73,235,252,183,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,211,252,253,235,73,153,235,252,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,145,253,252,252,252,252,228,70,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,252,252,200,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,160,240,253,252,236,121,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,121,229,252,252,253,241,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128,253,253,249,241,253,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,232,84,0,230,253,230,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,207,18,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,180,0,0,0,143,253,236,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,189,252,94,0,0,107,249,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,206,14,0,109,247,252,250,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,252,212,85,182,246,252,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,252,252,252,206,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,216,143,34,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,104,229,189,98,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,73,73,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,144,236,251,251,222,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,115,217,253,251,251,251,251,253,231,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,109,231,251,251,253,251,251,251,251,253,251,230,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,251,251,251,251,253,251,96,71,200,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,253,253,201,0,0,0,0,130,255,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,251,188,30,0,0,0,0,0,149,251,251,205,41,0,0,0,0,0,0,0,0,0,0,58,231,251,253,251,194,20,0,0,0,0,0,0,228,251,251,251,71,0,0,0,0,0,0,0,0,0,63,231,251,251,253,188,20,0,0,0,0,0,0,0,175,251,251,251,71,0,0,0,0,0,0,0,0,0,144,251,251,251,201,30,0,0,0,0,0,0,0,0,21,174,251,251,71,0,0,0,0,0,0,0,0,0,145,253,253,253,130,0,0,0,0,0,0,0,0,0,0,145,253,253,253,0,0,0,0,0,0,0,0,42,206,251,251,251,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,0,0,0,0,0,0,0,0,73,251,251,251,96,0,0,0,0,0,0,0,0,0,0,63,236,251,251,225,0,0,0,0,0,0,0,0,73,251,251,204,41,0,0,0,0,0,0,0,0,0,0,150,251,251,251,71,0,0,0,0,0,0,0,0,73,251,251,142,0,0,0,0,0,0,0,0,0,0,130,253,251,251,173,20,0,0,0,0,0,0,0,0,202,253,253,143,0,0,0,0,0,0,0,0,0,32,202,255,253,242,103,0,0,0,0,0,0,0,0,0,73,251,251,142,0,0,0,0,0,0,0,0,21,190,251,253,251,112,0,0,0,0,0,0,0,0,0,0,73,251,251,158,37,27,0,0,0,27,37,37,197,251,251,242,112,5,0,0,0,0,0,0,0,0,0,0,42,205,251,251,251,212,109,109,109,211,253,251,251,251,251,103,0,0,0,0,0,0,0,0,0,0,0,0,0,41,71,71,71,72,71,71,71,71,72,71,71,71,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,232,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,254,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,254,198,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,185,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,253,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,189,254,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,222,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,254,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,168,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,253,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,31,113,152,254,172,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,132,232,253,252,253,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,254,253,254,253,224,223,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,253,252,131,50,20,102,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,213,203,162,0,0,11,173,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,151,91,10,0,0,0,0,132,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,212,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,193,214,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,253,252,253,212,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,102,123,243,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,52,193,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,182,62,142,233,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,254,253,254,213,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,151,253,212,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,198,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,29,57,0,0,86,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,198,0,0,0,0,0,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,114,0,0,0,0,0,0,114,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,29,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,0,0,0,0,0,0,29,226,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,57,0,0,0,0,141,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,141,86,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,114,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,170,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,0,0,86,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,86,0,0,0,0,0,0,0,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,0,0,0,0,0,0,0,29,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,57,226,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,29,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,170,114,198,255,198,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,198,141,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,173,218,146,128,128,128,128,128,128,128,212,218,218,185,0,0,0,0,0,0,0,0,0,0,0,2,148,254,254,247,254,254,254,254,254,254,241,236,246,254,254,208,0,0,0,0,0,0,0,0,0,0,14,168,254,254,182,47,72,72,73,72,72,72,21,0,178,254,208,21,0,0,0,0,0,0,0,0,0,16,229,254,254,150,7,0,0,0,0,0,0,0,0,157,254,244,39,0,0,0,0,0,0,0,0,0,62,234,254,230,102,7,0,0,0,0,0,0,0,11,178,254,242,73,0,0,0,0,0,0,0,0,0,0,242,254,209,40,0,0,0,0,0,0,0,0,19,169,254,254,109,0,0,0,0,0,0,0,0,0,0,0,210,126,8,0,0,0,0,0,0,0,0,0,115,254,254,151,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,244,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,209,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,134,254,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,255,204,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,238,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,254,228,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,233,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,88,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,83,122,177,255,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,78,124,178,252,254,254,246,168,90,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,152,239,254,254,254,217,139,95,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,243,254,254,145,99,55,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,170,254,121,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,63,0,0,48,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,241,20,46,213,249,226,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,177,46,228,212,121,215,226,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,211,199,212,59,0,126,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,240,254,213,30,0,0,35,231,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,245,67,0,0,0,0,207,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,218,112,0,0,0,0,0,207,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,241,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,212,228,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,47,47,47,47,47,140,221,255,188,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,253,253,253,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,250,253,253,253,253,253,253,229,170,90,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,146,67,67,67,67,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,209,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,225,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,223,253,253,101,63,63,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,252,253,253,253,253,253,248,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,185,212,212,201,201,229,253,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,53,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,183,253,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,32,253,253,205,11,0,0,0,0,0,0,0,0,0,0,13,102,125,125,125,125,142,0,11,0,0,0,8,93,253,253,93,0,0,0,0,0,0,0,0,0,0,0,150,253,253,253,180,83,10,0,0,0,0,39,175,253,253,239,27,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,210,115,115,115,115,115,197,238,253,253,246,96,0,0,0,0,0,0,0,0,0,0,0,0,18,131,228,253,253,253,253,253,253,253,253,253,253,187,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,80,160,253,253,253,253,253,170,149,71,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,158,187,255,251,131,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,192,252,241,225,225,237,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,92,226,224,108,38,0,0,35,254,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,224,254,119,3,0,0,0,32,66,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,205,254,82,7,0,0,11,119,237,254,254,212,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,158,3,0,0,17,195,254,254,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,92,0,25,90,236,230,135,58,252,110,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,251,239,211,230,240,143,42,6,168,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,172,172,93,23,0,0,108,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,249,194,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,191,249,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,241,246,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,180,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,240,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,212,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,201,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,125,125,125,125,125,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,255,254,254,254,254,254,249,171,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,254,254,254,254,254,254,248,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,254,200,19,19,19,36,214,254,254,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127,121,0,0,0,0,16,161,254,249,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,173,242,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,173,221,254,254,250,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,110,210,241,254,254,246,165,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,243,254,254,254,243,165,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,166,240,254,254,245,190,110,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,165,239,254,254,254,212,110,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,98,214,255,254,254,209,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,165,238,254,254,211,0,0,0,0,0,0,0,0,0,0,32,154,164,106,0,0,0,0,0,0,0,23,33,33,164,254,254,254,0,0,0,0,0,0,0,0,0,87,250,254,204,89,27,27,27,27,125,157,157,222,254,255,254,254,254,241,0,0,0,0,0,0,0,0,85,252,254,254,254,254,254,254,254,254,254,254,254,254,254,255,243,235,164,51,0,0,0,0,0,0,0,0,243,254,254,254,254,254,254,254,254,254,248,245,241,241,157,111,45,0,0,0,0,0,0,0,0,0,0,0,0,175,248,248,197,117,184,117,117,117,57,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,141,0,0,0,0,0,0,0,114,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,86,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,86,226,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,170,0,86,226,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,198,170,255,255,198,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,198,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,170,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,29,226,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,0,29,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,86,86,86,198,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,132,212,254,255,212,254,203,150,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,253,253,253,253,253,253,224,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,31,71,12,10,65,114,114,193,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,87,141,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,130,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,16,76,120,217,233,231,107,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,108,184,253,253,253,246,159,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,200,239,253,253,253,253,253,193,35,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,235,253,253,221,201,253,253,253,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,51,51,20,0,51,88,167,253,249,132,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,69,232,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,93,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,174,253,233,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,21,124,203,242,253,226,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,70,188,253,253,253,217,112,9,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,81,22,115,163,241,253,253,253,243,164,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,253,253,253,205,196,114,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,250,253,253,224,149,82,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,174,123,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,239,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,234,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,233,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,202,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,229,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,242,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,60,0,0,0,0,0,0,2,36,133,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,218,26,0,0,0,0,0,26,161,253,253,253,126,4,0,0,0,0,0,0,0,0,0,0,0,0,157,253,193,0,0,0,0,0,101,212,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,157,253,193,0,0,0,21,107,254,225,187,84,205,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,157,253,207,15,0,0,138,253,252,83,9,142,233,253,192,10,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,60,0,167,248,253,188,142,202,253,253,198,40,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,253,182,126,247,253,253,254,253,253,237,82,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,253,253,253,254,253,175,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,111,228,253,253,253,253,197,75,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,110,236,201,17,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,125,232,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,234,253,253,253,253,253,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,253,253,162,39,46,142,222,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,242,253,215,106,4,0,0,0,41,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,253,167,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,243,253,155,0,0,0,0,0,0,0,0,13,79,79,155,135,36,0,0,0,0,0,0,0,0,0,0,0,204,253,233,26,0,0,0,0,0,52,96,210,253,253,253,206,24,0,0,0,0,0,0,0,0,0,0,0,83,248,253,156,10,0,0,17,163,237,253,253,245,174,58,25,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,135,0,85,206,253,253,212,108,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,248,253,230,183,239,253,241,108,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,253,184,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,202,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,241,220,247,253,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,246,253,82,0,128,253,253,151,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,253,163,107,52,227,253,253,152,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,253,253,253,253,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,230,247,252,253,253,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,123,224,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,237,221,166,110,128,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,254,254,254,252,242,172,120,63,63,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,186,224,254,254,254,254,254,254,254,254,254,221,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,40,97,129,129,140,219,219,230,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,107,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,239,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,234,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,130,254,188,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,239,253,101,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,163,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,237,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,234,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,184,254,213,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,234,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,114,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,86,198,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,198,226,255,255,255,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,255,255,255,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,198,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,198,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,255,255,255,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,198,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,170,170,114,141,170,170,170,170,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,255,255,255,170,141,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,141,170,114,86,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,118,191,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,252,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,194,252,82,234,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,45,126,201,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,247,42,0,11,189,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,185,38,70,70,70,70,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,232,253,252,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,244,252,252,252,190,137,137,43,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,249,146,218,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,132,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,92,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,92,0,93,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,143,0,197,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,207,70,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,236,186,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,67,12,0,0,0,0,0,131,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,210,210,210,254,253,218,96,0,0,0,0,188,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,254,253,253,253,171,29,0,0,8,10,0,0,0,0,0,0,0,0,0,0,0,0,0,130,246,253,236,102,150,237,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,242,253,253,137,0,0,91,253,253,253,196,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,237,253,253,208,6,0,0,35,233,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,251,82,0,0,0,0,210,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,253,253,160,0,0,0,0,0,128,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,30,215,253,253,215,26,0,0,0,0,0,100,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,247,48,0,0,0,0,0,0,101,255,254,254,118,0,0,0,0,0,0,0,0,0,0,0,53,230,253,248,99,0,0,0,0,0,0,0,128,253,253,253,22,0,0,0,0,0,0,0,0,0,0,0,144,253,253,188,0,0,0,0,0,0,0,27,227,253,253,219,13,0,0,0,0,0,0,0,0,0,0,0,250,253,253,15,0,0,0,0,0,20,196,246,253,253,249,103,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,59,0,0,27,56,137,242,254,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,249,199,199,225,253,253,253,254,253,219,59,19,0,0,0,0,0,0,0,0,0,0,0,0,0,42,250,253,253,253,253,253,253,253,253,243,165,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,209,232,253,253,232,209,175,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,66,66,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,39,140,193,59,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,229,254,254,254,254,129,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,94,223,225,254,254,254,254,254,254,246,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,254,254,254,254,236,254,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,254,202,133,37,144,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,202,206,128,10,0,71,246,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,244,254,254,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,227,254,254,254,254,95,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,254,254,254,254,237,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,254,254,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,142,247,254,254,254,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,254,254,254,254,254,240,153,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,254,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,171,253,254,254,254,254,245,162,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,144,254,254,254,254,254,255,186,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,254,254,254,254,254,251,186,104,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,254,254,254,254,254,254,254,254,250,176,98,15,0,0,0,0,0,0,0,0,0,0,0,0,223,254,254,254,254,254,254,254,254,254,254,254,254,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,82,211,254,250,79,38,91,146,146,146,146,234,254,180,192,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,161,161,162,245,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,254,253,251,163,114,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,254,253,253,253,254,228,165,82,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,253,253,195,143,69,135,161,160,236,253,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,26,187,254,254,169,0,0,0,0,0,0,0,0,34,34,0,0,0,0,0,0,0,0,0,0,0,0,5,155,254,253,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,254,206,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,222,138,138,138,139,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,254,253,253,253,254,244,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,254,253,253,253,254,253,238,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,248,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,184,254,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,0,108,254,255,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,214,155,249,253,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,245,253,253,253,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,244,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,255,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,251,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,238,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,214,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,163,5,0,0,0,40,69,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,253,253,157,39,0,14,49,138,224,253,189,141,11,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,123,0,10,163,253,253,253,253,253,253,150,9,0,0,0,0,0,0,0,0,0,0,0,56,236,253,253,245,53,3,168,253,253,253,253,246,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,172,0,177,253,253,253,240,127,0,173,253,253,212,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,103,125,253,253,253,151,12,0,0,159,253,253,212,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,103,130,253,253,193,9,9,83,150,252,253,253,167,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,221,227,253,253,239,199,205,253,253,253,233,157,16,0,0,0,0,0,0,0,0,0,0,0,81,247,253,253,253,253,253,253,253,253,253,253,253,158,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,248,253,253,253,253,253,253,253,251,229,96,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,209,253,253,253,253,253,152,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,22,130,151,255,254,224,130,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,205,253,253,253,253,253,253,253,162,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,241,235,235,239,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,235,38,0,0,24,202,253,253,220,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,237,134,0,0,0,0,63,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,63,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,200,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,100,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,160,253,253,237,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,160,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,84,192,233,253,253,236,91,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,231,253,253,253,253,173,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,200,88,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,119,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,183,253,227,14,0,0,21,94,94,94,94,94,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,173,64,121,223,230,253,253,253,253,253,242,223,223,109,5,0,0,0,0,0,0,0,0,0,0,65,253,253,239,245,253,253,253,253,253,253,253,253,253,253,253,253,125,0,0,0,0,0,0,0,0,0,3,188,253,253,253,253,253,253,174,141,48,115,42,61,141,185,253,253,135,0,0,0,0,0,0,0,0,0,7,253,253,253,253,178,115,12,4,0,0,0,0,0,0,5,12,128,73,0,0,0,0,0,0,0,0,0,1,79,253,241,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,122,255,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,179,253,250,118,50,0,0,0,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,253,243,222,222,136,114,114,202,249,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,219,253,253,253,253,253,253,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,222,219,253,253,253,253,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,15,27,50,134,143,250,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,253,248,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,60,83,168,212,253,253,208,140,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,197,253,253,253,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,247,253,253,253,253,253,253,253,246,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,81,81,120,250,253,253,179,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,245,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,212,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,3,0,0,0,0,0,13,185,253,240,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,205,152,40,0,0,0,0,70,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,68,0,0,0,0,70,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,68,0,0,0,0,17,189,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,226,253,253,152,0,0,0,0,0,169,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,77,0,0,0,0,0,169,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,91,31,31,29,0,51,231,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,253,253,253,242,131,164,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,253,253,253,253,253,253,253,253,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,253,253,253,253,253,253,253,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,129,129,129,129,129,129,129,129,163,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,197,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,196,254,161,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,192,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,239,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,251,95,0,0,0,0,0,13,21,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,150,254,149,0,0,0,0,0,6,156,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,194,13,0,0,0,0,0,132,254,214,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,130,0,0,0,0,0,82,248,214,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,241,221,12,0,0,0,0,24,220,245,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,145,0,0,0,0,0,132,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,242,228,129,103,129,198,213,248,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,226,247,203,228,254,244,131,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,29,39,222,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,166,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,233,243,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,233,218,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,198,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,55,138,138,255,253,253,253,253,233,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,151,253,252,252,252,252,253,252,252,252,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,66,184,240,252,253,252,252,227,130,69,69,119,252,252,237,25,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,210,161,139,45,29,0,0,60,188,252,252,98,17,0,0,0,0,0,0,0,0,0,0,0,13,211,252,116,12,0,0,0,0,0,127,244,252,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,84,0,0,0,0,0,19,181,255,253,236,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,252,253,223,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,252,205,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,244,138,138,138,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,219,252,252,253,252,252,252,252,151,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,111,183,184,196,252,252,252,253,240,153,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,45,150,211,252,252,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,169,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,24,24,170,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,47,100,47,78,194,252,253,252,252,235,18,0,0,0,0,0,0,0,0,0,0,0,0,0,132,184,184,240,252,253,252,252,252,252,253,252,170,44,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,252,252,252,252,253,252,252,252,252,150,45,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,252,157,137,137,64,22,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,154,208,248,230,254,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,205,254,254,254,254,254,254,213,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,254,254,254,254,236,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,254,152,40,26,151,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,202,44,0,10,207,254,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,252,254,242,83,136,180,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,254,254,254,254,254,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,56,209,254,254,254,254,254,201,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,228,254,254,254,238,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,248,254,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,248,254,254,253,166,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,230,254,254,170,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,254,254,229,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,227,254,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,254,254,254,202,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,254,202,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,246,254,254,242,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,242,254,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,254,185,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,247,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,174,255,253,222,113,113,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,241,100,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,253,252,252,252,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,146,223,223,227,252,253,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,178,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,140,165,252,252,253,252,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,253,253,255,253,253,253,174,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,252,241,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,252,252,253,252,252,252,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,139,252,252,252,240,223,223,145,145,84,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,245,253,253,255,253,253,182,105,105,105,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,252,252,252,252,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,252,252,253,252,252,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,132,132,182,252,252,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,29,29,29,226,252,252,189,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,31,30,30,101,243,252,252,241,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,203,253,252,252,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,240,252,253,252,252,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,252,252,252,252,252,252,178,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,252,252,252,252,252,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,255,253,247,149,179,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,157,192,193,157,41,0,13,191,252,252,207,0,0,0,0,0,0,0,0,0,0,0,10,86,164,48,0,0,0,0,0,0,0,0,0,178,252,252,207,0,0,0,0,0,0,0,0,0,0,29,205,252,252,74,0,0,0,0,0,0,0,0,0,178,252,252,207,0,0,0,0,0,0,0,0,0,0,191,252,252,252,214,35,0,0,0,0,0,0,0,111,243,252,252,163,0,0,0,0,0,0,0,0,0,0,191,252,252,252,252,213,38,30,30,31,30,127,178,243,252,252,188,17,0,0,0,0,0,0,0,0,0,0,60,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,162,0,0,0,0,0,0,0,0,0,0,0,4,23,204,252,252,252,252,252,252,253,252,252,252,252,241,162,17,0,0,0,0,0,0,0,0,0,0,0,0,0,28,103,239,252,252,252,252,253,252,249,207,75,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,103,244,225,103,104,103,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,44,153,238,255,255,204,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,128,230,254,254,254,254,254,254,225,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,254,254,254,238,217,201,157,240,254,181,197,127,0,0,0,0,0,0,0,0,0,0,0,0,0,7,179,254,254,179,94,25,0,0,0,102,253,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,156,42,0,0,0,0,20,0,225,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,3,213,254,254,247,219,90,218,234,240,234,253,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,254,254,253,252,254,254,254,254,254,254,194,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,77,104,157,157,157,157,157,191,254,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,246,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,230,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,252,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,187,254,224,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,227,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,255,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,240,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,165,251,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,247,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,208,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,219,253,253,253,247,135,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,156,253,253,253,253,201,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,232,253,253,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,240,253,253,253,253,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,248,122,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,247,253,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,191,253,253,253,205,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,233,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,167,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,181,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,246,252,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,214,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,252,233,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,69,0,0,0,0,0,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,255,249,63,0,0,0,36,222,253,253,181,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,132,0,0,0,89,219,252,252,252,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,32,222,252,252,195,246,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,92,0,0,210,253,252,153,9,230,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,64,248,252,232,8,0,189,250,253,106,38,210,250,253,157,6,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,233,9,81,253,253,221,5,138,253,253,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,227,253,173,197,252,252,193,136,252,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,252,252,252,253,252,252,252,221,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,219,252,252,252,253,252,252,218,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,54,137,242,253,178,137,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,254,254,255,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,246,253,253,253,169,233,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,253,206,40,40,6,199,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,209,253,232,27,0,0,0,169,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,201,253,128,88,60,0,0,0,63,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,248,248,128,28,0,0,0,0,0,70,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,194,253,164,0,0,0,0,0,0,0,167,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,205,18,0,0,0,0,0,0,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,243,253,20,0,0,0,0,0,0,0,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,168,253,218,5,0,0,0,0,0,0,0,179,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,250,100,0,0,0,0,0,0,24,105,244,91,0,0,0,0,0,0,0,0,0,0,0,0,0,9,199,253,149,0,0,0,0,0,0,0,125,253,184,19,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,100,0,0,0,0,0,0,8,197,190,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,219,0,0,0,0,0,0,14,197,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,89,0,0,0,0,0,76,194,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,82,0,0,0,75,195,244,244,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,116,0,33,196,248,253,208,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,243,179,217,253,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,215,253,253,253,253,197,96,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,134,253,182,116,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,208,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,26,59,0,0,0,0,0,0,0,0,0,179,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,116,238,88,0,0,0,0,0,0,0,22,214,252,252,120,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,198,0,0,0,0,0,0,0,178,252,252,243,73,0,0,0,0,0,0,0,0,0,0,0,0,65,240,252,227,42,0,0,0,0,0,0,213,252,252,191,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,252,198,0,0,0,0,0,0,60,238,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,191,0,0,0,0,0,0,101,252,252,221,33,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,66,0,0,0,0,0,128,240,252,252,227,42,0,0,0,0,0,0,0,0,0,0,0,0,51,240,253,253,225,121,204,253,253,255,253,253,253,253,253,232,108,0,0,0,0,0,0,0,0,0,0,0,107,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,251,101,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,240,252,252,252,252,252,252,252,252,253,252,252,252,231,172,151,110,17,0,0,0,0,0,0,0,0,0,0,107,245,252,234,185,164,53,53,53,147,252,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,66,49,0,0,0,0,0,121,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,201,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,159,235,215,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,241,254,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,204,254,254,254,254,147,0,0,0,0,0,0,20,141,34,0,0,0,0,0,0,0,0,0,0,0,28,218,254,254,254,219,136,10,0,0,0,0,0,24,196,254,213,0,0,0,0,0,0,0,0,0,0,39,205,254,254,254,194,27,0,0,0,0,0,0,0,132,254,254,237,0,0,0,0,0,0,0,0,0,0,221,254,254,254,254,131,0,0,0,0,0,0,0,43,230,254,254,237,0,0,0,0,0,0,0,0,0,0,182,254,254,254,254,131,0,0,0,0,0,0,0,54,254,254,254,237,0,0,0,0,0,0,0,0,0,0,22,185,254,254,254,135,9,9,9,9,9,9,9,183,254,254,254,237,0,0,0,0,0,0,0,0,0,0,0,159,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,237,0,0,0,0,0,0,0,0,0,0,0,159,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,237,0,0,0,0,0,0,0,0,0,0,0,5,8,106,245,254,254,254,254,254,208,134,8,59,254,254,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,105,105,105,105,105,36,0,0,54,254,254,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,144,254,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,249,254,252,144,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,237,250,248,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,87,148,148,245,253,253,237,148,148,78,7,43,29,0,0,0,0,0,0,0,0,0,0,0,0,0,131,206,252,253,252,252,252,252,253,252,252,252,200,253,231,181,28,0,0,0,0,0,0,0,0,0,0,43,242,252,235,127,126,126,56,21,21,21,234,252,252,223,126,126,42,0,0,0,0,0,0,0,0,0,0,64,247,252,68,0,0,0,0,0,11,143,246,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,252,191,45,0,0,0,0,175,252,252,155,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,187,253,237,148,30,0,124,255,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,107,253,252,221,146,242,253,153,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,161,251,252,252,214,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,221,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,191,131,253,245,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,147,11,98,246,237,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,94,0,0,170,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,42,0,0,22,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,42,0,0,13,217,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,253,42,0,0,39,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,42,0,29,213,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,191,145,239,252,212,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,113,235,253,137,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,106,209,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,171,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,87,243,225,89,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,206,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,206,253,217,178,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,119,254,253,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,226,253,254,221,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,169,244,253,253,217,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,158,253,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,254,254,255,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,72,253,253,253,253,178,57,60,61,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,222,233,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,230,253,253,253,253,253,253,253,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,253,253,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,253,253,199,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,220,253,253,253,253,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,201,253,253,253,253,253,138,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,228,254,151,176,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,253,253,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,224,253,253,238,131,111,111,111,111,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,223,253,253,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,53,222,253,253,230,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,70,253,253,253,226,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,216,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,236,143,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,233,253,253,253,253,197,143,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,68,152,235,253,253,253,232,143,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,92,185,238,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,202,253,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,240,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,57,208,94,37,0,0,0,0,0,0,0,70,247,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,147,0,0,0,0,0,0,30,209,253,217,19,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,110,0,0,0,0,0,29,149,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,243,218,112,112,112,142,241,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,253,253,253,253,253,253,253,253,253,253,113,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,79,129,129,211,192,253,253,220,129,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,45,45,103,98,63,98,94,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,149,215,254,253,253,253,253,245,253,253,221,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,250,254,254,255,238,224,224,224,202,231,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,249,136,119,67,21,0,0,0,0,11,45,187,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,132,0,0,0,0,0,0,0,0,0,10,189,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,189,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,93,248,253,204,12,0,0,0,0,0,0,0,0,0,0,0,6,75,114,118,127,105,83,31,15,33,105,237,255,220,97,0,0,0,0,0,0,0,0,0,0,0,0,106,199,253,254,253,253,253,253,254,230,251,253,253,128,21,0,0,0,0,0,0,0,0,0,0,0,24,142,248,253,253,243,238,226,253,253,254,253,253,253,253,204,21,0,0,0,0,0,0,0,0,0,0,0,153,253,233,121,60,50,45,180,245,208,113,90,133,169,248,254,222,11,0,0,0,0,0,0,0,0,0,0,210,218,72,75,75,114,191,130,64,0,0,0,0,0,26,83,104,6,0,0,0,0,0,0,0,0,0,0,136,249,234,166,128,53,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,255,255,255,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,191,128,128,128,128,191,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,128,191,255,255,128,0,0,0,0,0,0,0,0,191,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,0,0,0,0,0,0,0,0,64,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,128,128,128,128,128,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,190,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,249,253,253,124,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,71,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,16,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,253,253,180,4,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,60,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,54,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,233,33,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,250,253,253,199,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,126,0,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,247,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,215,254,254,254,218,130,27,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,253,253,253,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,247,253,253,253,253,253,253,167,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,105,105,138,236,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,78,193,253,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,253,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,191,240,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,88,28,0,0,24,217,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,240,253,186,0,0,175,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,242,253,253,95,0,104,246,253,253,68,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,212,253,253,152,133,247,253,253,220,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,253,253,253,184,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,253,253,253,163,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,103,253,253,226,99,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,203,141,141,141,141,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,252,253,252,252,252,244,144,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,130,196,177,253,233,234,252,253,252,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,3,28,22,22,28,203,252,252,240,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,210,253,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,255,178,141,141,141,116,117,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,187,252,252,253,252,252,252,247,145,109,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,253,252,252,252,253,252,186,168,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,252,253,252,252,202,140,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,179,253,253,255,222,63,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,222,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,21,231,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,153,247,31,246,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,213,248,126,1,246,250,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,242,194,61,0,11,247,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,224,135,4,0,0,130,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,215,123,0,0,0,16,233,241,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,155,189,0,0,0,0,135,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,128,0,0,0,76,243,238,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,92,0,0,24,224,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,230,230,254,255,240,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,183,253,253,253,253,254,253,238,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,35,232,253,143,84,157,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,144,1,0,16,205,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,227,25,0,0,0,88,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,145,0,0,0,0,32,249,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,145,0,0,0,0,71,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,191,39,0,0,39,215,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,189,253,243,208,208,243,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,56,155,230,146,114,41,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,92,0,0,0,0,0,17,248,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,250,248,47,0,0,0,0,19,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,54,0,0,0,0,19,253,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,54,0,0,0,0,84,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,243,39,0,0,0,0,167,254,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,247,253,164,0,0,0,0,34,249,253,186,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,253,114,0,0,0,0,82,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,212,254,253,65,70,19,19,38,181,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,254,253,253,253,253,254,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,255,254,254,254,254,255,254,254,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,254,221,153,108,76,169,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,101,69,16,0,0,46,241,253,221,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,249,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,255,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,204,253,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,201,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,246,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,254,254,187,226,254,207,254,254,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,205,253,253,253,254,253,253,253,253,253,212,26,0,0,0,0,0,0,0,0,0,0,0,56,246,253,253,253,253,253,253,253,241,223,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,3,145,231,207,121,222,212,121,25,58,85,121,73,198,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,218,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,232,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,242,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,255,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,247,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,241,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,244,246,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,171,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,154,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,213,255,145,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,174,253,253,253,147,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,203,253,253,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,216,216,113,230,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,223,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,184,253,253,229,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,75,75,128,253,253,180,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,81,166,239,253,253,253,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,172,253,253,253,253,253,253,253,253,192,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,191,240,160,76,190,253,253,253,253,253,253,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,17,241,241,71,0,69,209,253,253,187,30,167,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,110,0,92,246,253,253,139,17,0,9,109,253,243,16,0,0,0,0,0,0,0,0,0,0,0,0,28,253,99,90,247,253,253,171,35,0,0,0,7,171,253,133,0,0,0,0,0,0,0,0,0,0,0,0,19,253,246,249,253,253,142,3,0,0,0,0,0,5,231,141,0,0,0,0,0,0,0,0,0,0,0,0,10,202,253,253,171,45,2,0,0,0,0,0,0,0,5,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,116,214,254,254,249,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,253,253,253,241,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,215,149,127,134,232,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,246,125,14,0,0,0,51,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,89,0,0,0,34,75,163,174,122,115,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,241,207,20,72,192,240,253,253,253,238,188,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,226,253,253,253,253,178,168,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,208,253,253,253,213,129,48,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,237,253,253,197,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,148,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,253,252,76,229,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,246,90,0,194,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,248,220,44,0,19,221,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,189,253,113,0,0,40,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,187,10,0,0,90,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,173,0,0,27,175,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,189,25,83,214,253,150,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,253,235,247,253,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,238,254,253,253,238,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,201,253,113,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,170,170,198,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,226,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,141,0,0,0,0,57,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,29,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,170,0,0,0,170,141,0,0,0,0,0,0,0,0,0,0,0,0,198,255,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,170,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,141,86,0,0,0,0,0,86,198,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,198,255,255,170,170,198,255,255,170,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,141,170,170,170,86,29,0,0,141,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,145,254,255,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,204,253,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,74,226,253,253,232,254,253,222,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,249,133,17,175,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,115,0,0,78,251,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,61,0,0,39,249,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,234,253,253,61,0,0,128,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,251,57,0,0,217,253,253,179,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,15,228,253,190,0,0,0,166,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,165,34,0,0,0,166,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,254,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,253,215,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,104,148,148,86,188,254,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,149,232,253,253,253,253,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,253,253,253,222,253,253,253,254,216,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,235,103,14,190,253,253,254,186,123,105,81,134,210,173,46,0,0,0,0,0,0,0,0,0,0,245,253,253,106,5,3,150,253,253,254,253,253,253,253,253,253,253,156,0,0,0,0,0,0,0,0,0,0,114,240,253,253,203,199,253,253,253,248,253,253,253,253,253,245,199,62,0,0,0,0,0,0,0,0,0,0,0,41,166,252,253,253,253,253,186,46,124,156,156,112,70,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,247,132,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,38,136,227,255,254,132,0,90,136,98,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,156,253,253,253,253,253,253,249,154,219,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,40,150,244,253,253,253,253,253,253,253,253,253,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,74,237,253,253,253,253,253,203,182,242,253,253,253,253,253,230,25,0,0,0,0,0,0,0,0,0,0,13,200,253,253,253,168,164,91,14,64,246,253,253,253,195,79,32,0,0,0,0,0,0,0,0,0,0,0,21,219,253,253,159,2,0,0,103,233,253,253,253,177,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,147,0,1,155,250,253,253,251,126,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,236,253,206,32,152,253,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,253,253,253,253,241,113,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,243,253,253,253,253,239,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,145,249,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,253,253,253,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,181,253,253,241,114,240,253,253,136,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,253,125,0,65,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,29,2,138,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,207,202,253,253,253,192,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,183,253,253,253,253,253,253,230,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,253,253,253,242,116,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,255,254,254,210,150,111,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,253,253,253,253,253,181,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,244,253,253,253,253,253,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,67,67,67,134,172,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,42,227,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,170,253,195,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,229,253,201,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,253,216,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,51,228,253,242,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,218,171,89,68,68,68,68,68,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,253,253,253,253,253,253,253,253,227,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,253,253,253,253,253,253,253,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,149,149,149,149,149,252,175,247,253,194,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,237,247,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,181,38,0,0,0,0,0,68,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,240,254,190,0,0,0,0,104,240,254,130,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,195,15,0,0,0,17,224,253,195,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,237,254,68,0,0,0,0,64,237,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,243,248,106,0,0,0,0,38,226,248,139,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,220,253,154,0,0,0,0,0,153,253,196,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,254,219,38,0,0,0,0,68,254,236,54,0,127,9,0,0,0,0,0,0,0,0,0,0,0,13,221,254,236,50,0,0,0,38,87,254,255,237,161,161,160,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,248,180,214,230,231,243,253,253,254,253,232,173,42,0,0,0,0,0,0,0,0,0,0,0,66,249,253,253,254,253,251,230,245,253,253,236,80,46,25,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,244,160,103,69,63,0,161,253,211,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,0,0,93,221,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,254,143,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,188,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,240,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,204,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,245,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,251,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,236,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,34,212,253,253,253,244,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,89,244,253,252,252,252,252,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,252,247,183,183,130,246,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,252,252,252,230,0,0,0,178,253,235,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,210,85,73,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,211,23,0,0,0,9,233,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,173,252,252,211,0,0,13,122,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,202,252,252,174,25,101,252,252,152,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,173,252,253,223,240,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,252,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,255,253,253,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,78,194,252,253,231,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,252,252,252,122,37,202,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,212,252,252,218,160,0,0,90,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,252,168,35,0,0,0,7,158,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,252,209,32,0,0,0,0,0,104,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,209,0,0,0,0,0,0,66,236,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,216,111,70,70,70,70,142,234,252,252,205,25,0,0,0,0,0,0,0,0,0,0,0,0,0,13,173,252,253,252,252,252,252,253,252,252,252,168,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,75,201,252,252,252,252,253,252,221,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,226,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,190,254,251,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,188,255,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,218,252,188,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,219,233,102,5,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,221,250,98,0,2,195,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,224,235,49,0,0,5,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,225,234,79,0,0,0,1,171,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,254,79,0,0,0,0,0,87,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,194,103,134,88,45,11,0,81,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,245,254,254,254,254,254,254,220,102,71,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,224,237,237,148,147,147,189,250,200,36,246,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,93,225,116,247,240,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,249,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,247,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,220,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,229,255,186,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,232,253,254,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,249,253,253,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,254,253,253,253,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,254,254,254,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,224,253,254,253,253,253,254,227,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,254,253,253,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,254,253,253,253,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,203,254,254,210,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,99,148,23,49,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,242,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,253,234,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,57,0,0,0,0,0,0,0,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,0,0,0,0,0,0,0,198,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,170,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,226,0,0,0,0,0,0,86,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,114,0,0,0,0,0,29,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,170,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,29,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,0,170,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,29,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,114,0,0,0,141,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,255,198,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,170,170,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,236,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,148,253,253,253,253,255,197,121,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,215,252,252,252,252,252,253,252,252,242,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,252,252,178,26,97,159,198,252,252,245,198,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,218,15,0,0,0,17,39,177,252,252,204,30,0,0,0,0,0,0,0,0,0,0,0,0,110,244,252,252,176,0,0,0,0,0,0,17,106,252,252,128,0,0,0,0,0,0,0,0,0,0,0,23,232,252,252,212,21,0,0,0,0,0,0,0,18,175,252,231,23,0,0,0,0,0,0,0,0,0,0,128,252,252,241,97,0,0,0,0,0,0,0,0,0,45,239,252,197,0,0,0,0,0,0,0,0,0,0,240,252,252,101,0,0,0,0,0,0,0,0,0,0,0,173,252,238,0,0,0,0,0,0,0,0,0,70,247,252,252,53,0,0,0,0,0,0,0,0,0,0,0,173,252,246,70,0,0,0,0,0,0,0,0,121,252,252,209,25,0,0,0,0,0,0,0,0,0,0,0,173,252,252,119,0,0,0,0,0,0,0,0,121,253,253,173,0,0,0,0,0,0,0,0,0,0,0,118,253,253,240,0,0,0,0,0,0,0,0,0,70,247,252,248,50,0,0,0,0,0,0,0,0,0,121,249,252,241,68,0,0,0,0,0,0,0,0,0,0,121,252,252,196,25,0,0,0,0,0,0,35,206,247,252,237,72,0,0,0,0,0,0,0,0,0,0,0,17,230,252,252,223,122,81,81,81,214,213,227,252,252,235,75,0,0,0,0,0,0,0,0,0,0,0,0,0,166,242,252,252,252,252,252,252,253,252,252,252,164,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,213,252,252,252,252,252,253,229,198,86,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,79,79,163,134,149,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,207,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,245,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,59,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,115,222,234,235,234,234,234,248,253,249,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,254,235,234,234,210,156,156,198,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,88,179,136,118,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,176,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,225,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,169,98,176,188,254,254,218,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,254,235,214,214,254,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,117,117,93,63,21,0,0,193,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,112,183,51,3,0,0,0,0,0,0,0,0,128,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,193,108,32,0,0,0,0,0,79,254,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,2,55,157,253,254,244,192,156,156,156,222,252,248,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,216,245,254,255,251,234,162,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,58,59,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,153,203,254,162,112,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,245,253,215,206,237,253,184,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,247,96,9,0,29,184,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,253,84,0,0,0,0,47,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,103,0,0,0,0,0,47,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,198,6,0,0,0,0,13,185,240,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,248,42,0,0,0,0,9,187,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,106,0,0,0,0,43,184,254,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,23,0,0,0,38,187,254,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,23,0,0,13,193,223,165,254,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,161,116,182,214,162,27,140,222,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,211,253,219,50,0,57,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,249,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,212,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,200,255,202,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,156,252,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,176,254,254,179,98,169,251,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,203,19,0,118,254,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,235,254,254,110,0,0,7,128,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,110,0,0,15,156,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,222,44,254,202,0,0,156,254,184,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,150,18,240,246,41,150,250,165,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,40,0,149,254,196,254,240,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,14,0,124,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,131,15,92,254,254,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,176,238,146,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,73,254,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,193,254,250,254,209,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,95,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,62,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,62,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,62,254,233,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,254,232,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,254,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,219,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,242,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,237,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,232,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,239,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,230,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,229,241,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,255,186,108,97,15,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,223,187,236,231,195,123,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,242,40,0,16,81,55,249,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,87,0,0,0,0,0,171,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,246,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,236,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,249,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,245,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,229,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,229,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,247,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,243,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,201,240,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,219,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,185,253,230,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,247,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,242,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,247,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,225,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,197,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,197,254,253,254,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,253,251,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,255,253,254,253,254,196,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,138,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,255,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,224,253,251,253,251,253,251,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,253,254,253,254,253,254,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,253,251,84,196,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,226,56,0,0,198,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,138,56,0,0,0,85,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,169,168,197,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,254,253,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,139,251,253,251,196,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,222,254,241,156,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,165,248,254,253,253,253,247,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,222,253,253,254,199,176,253,253,205,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,246,119,4,21,184,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,253,207,46,0,0,0,12,227,228,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,254,243,71,0,0,0,50,156,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,254,253,164,0,0,0,90,244,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,253,49,0,14,121,250,253,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,253,84,58,193,254,253,253,251,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,254,253,253,253,253,254,253,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,255,254,254,254,254,255,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,249,253,210,237,254,253,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,36,63,217,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,254,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,234,254,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,248,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,182,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,131,216,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,254,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,245,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,255,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,234,224,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,223,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,245,123,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,245,253,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,229,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,195,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,46,0,47,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,203,13,85,254,241,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,184,34,219,246,220,241,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,216,166,200,21,110,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,99,0,0,47,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,253,120,0,0,47,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,186,38,0,79,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,233,209,237,253,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,190,254,253,222,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,92,92,92,198,193,202,92,92,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,182,238,254,254,254,254,254,254,254,254,247,182,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,254,254,254,254,254,254,254,254,254,231,52,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,238,83,57,57,57,57,62,221,246,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,238,68,0,0,0,0,0,5,125,221,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,3,40,35,0,0,0,0,0,49,163,254,254,254,246,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,140,252,254,254,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,67,67,99,231,252,254,254,254,254,248,114,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,254,254,254,254,254,254,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,251,254,254,254,254,254,254,254,254,254,254,248,221,40,0,0,0,0,0,0,0,0,0,0,0,0,0,17,246,252,246,246,246,246,246,246,246,254,254,254,254,212,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,0,0,0,0,0,0,6,155,165,254,254,254,219,100,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,139,250,254,254,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,46,58,58,58,58,58,58,64,223,223,223,249,254,255,254,142,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,254,254,254,254,254,254,254,254,254,254,167,7,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,254,254,254,254,254,254,254,254,242,180,142,7,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,147,254,105,90,90,202,254,131,90,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,58,57,34,34,34,82,144,143,235,253,253,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,252,252,252,252,253,252,252,252,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,252,252,252,252,252,253,252,213,248,252,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,59,49,221,163,121,121,59,10,15,243,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,249,252,250,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,252,248,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,252,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,255,253,197,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,147,253,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,240,125,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,250,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,252,225,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,245,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,204,255,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,77,252,253,221,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,198,253,239,71,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,241,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,243,253,229,94,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,231,253,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,193,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,151,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,249,253,247,54,0,0,0,0,75,196,170,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,77,0,0,26,125,248,252,253,253,253,194,6,0,0,0,0,0,0,0,0,0,0,0,0,28,237,253,228,20,0,120,230,253,253,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,134,253,250,117,0,115,251,247,139,17,15,15,89,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,140,253,227,0,0,124,253,169,0,0,0,10,174,253,233,25,0,0,0,0,0,0,0,0,0,0,0,0,140,253,227,0,0,166,198,10,0,0,16,177,253,235,53,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,234,21,0,123,64,0,27,128,234,253,173,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,251,253,127,11,79,115,178,232,253,246,90,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,253,253,253,231,95,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,152,253,253,253,251,128,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,254,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,253,252,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,254,253,254,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,253,252,253,252,223,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,193,254,253,254,253,183,102,123,243,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,253,252,253,252,131,50,0,0,21,182,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,253,203,243,102,0,0,0,0,0,132,253,254,91,0,0,0,0,0,0,0,0,0,0,163,223,253,252,233,70,0,40,20,0,0,0,0,0,51,252,233,71,0,0,0,0,0,0,0,0,0,21,254,253,254,192,41,0,0,0,0,0,0,0,0,0,0,203,254,253,0,0,0,0,0,0,0,0,21,162,253,252,151,50,0,0,0,0,0,0,0,0,0,0,62,223,253,212,0,0,0,0,0,0,0,0,51,253,254,233,41,0,0,0,0,0,0,0,0,0,0,0,173,253,254,151,0,0,0,0,0,0,0,0,92,252,233,50,0,0,0,0,0,0,0,0,0,0,21,183,253,252,233,50,0,0,0,0,0,0,0,0,152,253,234,30,0,0,0,0,0,41,51,31,72,193,254,253,254,233,82,0,0,0,0,0,0,0,0,0,193,252,253,212,102,102,62,102,123,243,253,232,253,252,253,252,131,30,0,0,0,0,0,0,0,0,0,0,92,253,255,253,255,253,254,253,254,253,254,253,254,233,123,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,252,253,252,253,252,253,252,192,151,91,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,102,102,102,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,29,141,116,253,253,255,253,165,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,169,234,252,253,252,252,252,253,252,252,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,177,168,168,168,118,119,224,252,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,227,52,3,0,0,0,0,0,19,203,252,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,239,38,0,0,0,0,0,0,4,104,178,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,225,0,0,0,0,0,0,0,79,252,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,137,0,0,0,0,0,0,38,204,252,224,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,175,38,0,0,0,0,76,237,253,252,205,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,178,141,16,29,104,229,253,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,153,252,252,178,253,252,252,252,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,81,196,252,216,233,196,252,231,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,16,22,98,240,238,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,197,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,203,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,241,79,29,29,128,141,141,229,253,255,153,19,0,0,0,0,0,0,0,0,0,0,0,19,7,0,63,234,252,253,252,252,252,253,240,221,196,197,208,205,13,0,0,0,0,0,0,0,0,0,0,85,203,198,234,252,252,253,233,168,68,56,43,25,0,0,13,37,0,0,0,0,0,0,0,0,0,0,0,10,178,190,215,252,102,28,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,179,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,196,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,143,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,253,253,242,141,53,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,84,133,228,252,252,178,108,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,81,168,243,253,240,159,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,140,215,252,240,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,150,250,242,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,123,246,187,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,63,144,252,202,63,0,0,0,0,0,0,0,0,0,0,0,76,219,44,0,0,0,0,0,0,0,10,79,254,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,144,224,169,108,57,57,57,120,169,197,252,247,171,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,196,252,253,252,252,252,253,252,252,177,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,28,140,215,252,252,190,139,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,139,212,253,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,130,194,252,253,252,252,252,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,252,252,252,253,252,202,208,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,218,160,46,45,13,134,252,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,137,106,14,0,0,0,32,228,252,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,253,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,57,178,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,184,184,184,215,253,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,197,253,252,252,252,252,253,252,252,252,179,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,252,252,252,253,252,252,252,252,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,255,253,253,245,230,53,0,85,229,253,255,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,154,206,174,58,0,0,0,0,186,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,236,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,32,210,230,168,42,0,0,0,0,74,116,218,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,255,253,253,159,243,255,253,253,253,253,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,252,253,252,252,252,252,253,252,252,252,231,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,253,252,252,252,252,253,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,192,253,252,252,252,252,253,235,160,66,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,137,158,221,232,252,180,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,123,225,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,96,218,252,211,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,160,254,217,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,214,254,217,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,162,254,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,235,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,217,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,223,250,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,218,34,0,0,0,0,0,60,82,82,16,71,206,206,93,6,0,0,0,0,0,0,0,0,0,0,89,254,254,147,0,0,16,113,212,243,254,254,49,88,222,210,246,215,53,0,0,0,0,0,0,0,0,0,1,109,254,251,203,113,224,254,254,186,128,37,7,13,23,18,85,248,238,51,0,0,0,0,0,0,0,0,0,2,108,254,254,254,254,235,67,8,0,0,0,0,0,0,0,84,250,130,0,0,0,0,0,0,0,0,0,0,2,108,255,254,254,164,31,0,0,0,0,0,0,0,0,47,248,130,0,0,0,0,0,0,0,0,0,0,0,2,95,159,254,254,242,145,113,113,77,0,42,113,164,245,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,2,94,217,254,254,254,254,251,243,247,254,254,254,141,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,94,130,130,166,254,254,255,205,78,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,101,197,254,129,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,177,177,177,178,230,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,254,253,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,254,253,253,253,239,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,128,235,253,253,253,253,254,239,154,88,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,219,55,55,55,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,230,122,26,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,253,253,253,184,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,154,253,253,253,253,253,254,236,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,71,143,162,253,253,254,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,244,254,255,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,222,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,213,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,20,0,0,0,17,152,216,253,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,194,19,39,74,216,253,254,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,237,242,245,253,253,254,253,249,79,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,253,253,253,249,180,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,253,253,253,253,220,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,230,205,234,110,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,148,210,218,148,78,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,252,253,252,252,252,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,226,252,199,109,21,118,202,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,171,252,236,66,0,0,0,21,198,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,200,252,189,0,0,0,0,0,18,42,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,236,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,0,36,103,190,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,68,241,253,252,251,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,41,225,252,243,166,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,186,179,252,252,79,173,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,255,253,253,253,86,25,227,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,252,252,252,77,157,252,245,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,244,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,252,252,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,121,244,252,208,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,135,254,254,255,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,231,254,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,242,254,254,254,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,171,254,254,254,250,167,101,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,202,254,254,138,56,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,240,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,244,254,254,222,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,247,254,250,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,251,254,254,133,0,27,82,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,250,254,254,254,246,240,244,254,248,240,240,164,144,129,29,0,0,0,0,0,0,0,0,0,0,0,51,247,254,254,254,254,254,254,254,254,254,254,254,254,254,254,197,40,0,0,0,0,0,0,0,0,0,0,63,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,156,0,0,0,0,0,0,0,0,0,0,5,30,149,210,174,241,212,130,48,19,24,115,130,134,178,250,254,249,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,2,0,0,0,0,0,0,0,0,190,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,73,0,0,0,0,0,71,254,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,197,0,0,0,0,0,90,254,254,238,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,225,96,42,58,177,197,227,254,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,254,254,254,254,254,254,254,254,254,232,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,254,254,254,254,254,254,240,194,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,188,254,254,254,254,254,226,157,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,229,222,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,255,223,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,249,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,233,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,244,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,224,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,224,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,255,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,247,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,233,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,49,106,171,247,255,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,76,173,254,254,254,254,254,254,254,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,133,238,254,254,254,254,254,254,254,254,223,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,254,240,194,153,114,244,254,249,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,233,194,83,12,0,106,245,254,249,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,137,245,254,220,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,191,254,254,220,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,190,254,254,254,254,207,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,129,242,254,254,254,254,254,254,242,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,220,254,254,254,254,233,212,212,248,254,186,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,254,248,197,85,21,0,0,109,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,203,132,33,0,0,0,0,0,55,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,220,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,254,180,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,183,254,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,155,252,254,129,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,184,254,254,198,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,167,174,250,251,254,254,199,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,112,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,81,128,254,254,254,133,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,184,254,254,254,254,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,231,254,254,254,226,199,192,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,236,254,254,171,58,18,0,0,179,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,225,254,208,99,0,0,0,0,0,157,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,110,0,0,0,0,0,0,156,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,169,6,0,0,0,0,0,0,187,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,243,36,0,0,0,0,0,0,143,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,54,0,0,0,0,0,0,31,240,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,240,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,73,242,254,208,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,157,254,254,241,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,220,254,254,226,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,249,254,254,163,18,0,0,0,0,0,0,0,0,0,0,16,23,0,0,0,0,0,0,0,0,0,0,177,254,254,76,0,0,0,0,0,0,0,32,59,82,156,225,255,254,0,0,0,0,0,0,0,0,0,17,242,254,178,20,20,20,111,118,119,201,215,236,254,254,254,247,219,99,0,0,0,0,0,0,0,0,0,6,200,254,254,254,254,254,254,254,254,254,254,254,254,254,217,122,0,0,0,0,0,0,0,0,0,0,0,0,74,251,254,255,254,254,247,245,255,235,214,124,79,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,155,156,155,126,49,45,59,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,217,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,214,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,241,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,244,142,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,91,218,254,254,254,254,255,95,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,232,253,253,253,253,253,253,253,253,251,180,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,253,253,253,253,253,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,251,220,93,56,56,56,99,220,252,253,253,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,122,0,0,0,0,0,0,0,166,253,253,253,194,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,156,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,250,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,230,103,66,66,66,215,244,253,253,253,230,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,225,253,253,253,253,253,253,253,253,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,253,253,253,253,253,253,253,253,253,236,83,16,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,248,253,253,253,253,253,253,253,253,253,253,253,161,9,7,0,0,0,0,0,0,0,0,0,0,0,0,0,66,154,154,154,154,154,154,186,253,253,253,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,70,228,247,253,253,253,238,189,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,131,143,253,253,253,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,29,58,58,58,159,222,243,253,253,253,253,253,253,219,138,0,0,0,0,0,0,0,0,0,0,0,0,116,199,253,253,253,253,253,253,253,253,253,253,253,219,44,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,253,253,253,253,253,253,246,179,152,15,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,168,253,253,253,253,199,89,89,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,130,130,130,18,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,231,253,253,253,253,90,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,253,253,253,253,144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,231,253,253,253,253,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,239,104,163,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,86,86,86,86,53,0,112,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,118,248,253,130,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,165,3,0,0,0,0,0,0,0,0,0,0,0,0,48,141,160,205,205,117,81,20,0,66,124,246,253,168,28,0,0,0,0,0,0,0,0,0,0,0,115,211,236,253,253,253,253,253,253,221,211,245,253,253,253,88,43,0,0,0,0,0,0,0,0,0,0,6,237,253,253,208,253,253,253,253,253,253,253,253,253,253,253,238,235,99,154,0,0,0,0,0,0,0,0,164,253,246,142,16,49,220,253,253,253,253,253,253,253,168,193,212,154,154,33,0,0,0,0,0,0,0,0,254,253,242,96,13,125,245,253,253,253,225,112,24,24,4,10,14,0,0,0,0,0,0,0,0,0,0,0,254,253,253,252,238,253,253,253,229,112,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,236,135,51,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,129,129,129,54,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,34,85,154,227,254,254,235,153,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,151,236,253,253,253,253,253,253,253,202,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,220,155,89,128,160,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,99,133,66,17,0,0,0,58,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,253,199,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,228,250,253,253,221,139,74,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,253,253,253,191,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,251,253,204,203,203,226,253,253,219,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,49,1,0,0,23,116,240,253,214,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,236,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,204,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,193,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,245,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,146,5,0,0,0,0,0,23,234,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,220,46,0,0,0,81,240,254,253,154,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,230,130,90,114,244,253,254,120,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,43,228,254,253,253,253,253,241,72,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,130,252,253,230,148,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,34,121,144,192,144,144,144,144,53,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,67,158,250,253,253,250,187,187,216,254,253,253,180,91,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,245,154,106,51,0,0,19,58,154,236,253,244,124,9,0,0,0,0,0,0,0,0,0,0,0,245,253,253,136,8,0,0,0,0,0,0,0,9,69,198,253,138,9,0,0,0,0,0,0,0,0,0,0,65,237,253,253,196,60,0,0,0,0,0,0,0,0,20,174,249,132,15,0,0,0,0,0,0,0,0,0,0,38,146,250,253,234,194,35,0,0,0,0,0,8,89,175,249,253,152,0,0,0,0,0,0,0,0,0,0,0,0,30,156,246,253,241,150,26,0,0,53,181,253,253,253,223,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,104,217,253,253,155,155,237,253,244,170,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,109,253,253,254,253,253,122,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,165,253,253,253,254,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,231,254,249,139,63,0,107,234,255,230,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,253,246,64,0,0,0,0,31,169,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,219,51,0,0,0,0,0,0,23,137,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,172,2,0,0,0,0,0,0,0,3,98,242,247,121,0,0,0,0,0,0,0,0,0,0,0,0,8,196,253,166,0,0,0,0,0,0,0,0,0,135,253,227,22,0,0,0,0,0,0,0,0,0,0,0,0,36,172,251,180,23,0,0,0,0,0,0,0,3,176,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,253,238,88,5,0,0,0,0,0,11,202,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,242,253,184,45,45,6,25,45,193,253,240,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,162,221,253,253,196,225,253,253,206,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,143,235,253,253,253,147,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,255,152,63,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,223,227,253,250,251,175,91,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,29,95,141,180,243,234,119,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,85,178,244,136,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,240,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,200,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,226,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,48,48,48,48,91,175,220,246,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,254,254,254,254,254,254,220,137,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,250,254,254,254,254,242,127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,124,178,237,254,254,206,83,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,51,162,248,254,171,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,134,254,212,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,201,254,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,170,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,0,2,2,0,8,49,96,161,235,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,80,167,203,203,177,191,188,177,240,254,254,254,252,216,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,129,138,167,211,240,238,224,177,111,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,57,0,0,0,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,170,141,114,198,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,255,255,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,86,114,170,170,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,86,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,255,198,226,226,141,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,226,57,0,29,114,198,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,141,57,0,0,0,0,0,0,29,226,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,0,0,0,0,0,0,0,0,0,114,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,29,0,0,0,0,0,0,0,141,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,226,57,0,0,0,0,86,198,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,202,253,253,253,253,255,253,222,138,138,139,65,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,252,252,252,252,253,252,252,252,252,253,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,26,236,253,240,100,69,69,69,141,183,208,252,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,253,206,0,0,0,0,0,26,203,252,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,64,248,252,243,60,0,0,0,0,0,122,252,252,180,8,0,0,0,0,0,0,0,0,0,0,0,0,5,191,253,253,231,0,0,0,0,0,36,222,253,243,106,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,209,0,0,0,0,0,161,252,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,116,0,0,0,0,17,228,252,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,210,21,0,0,0,0,160,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,85,0,0,0,0,0,253,252,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,116,21,0,0,0,0,0,64,255,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,248,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,252,227,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,63,63,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,147,228,228,229,254,254,239,228,175,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,189,254,254,254,253,219,187,155,219,248,252,180,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,255,254,236,153,52,0,0,0,0,98,249,254,162,1,0,0,0,0,0,0,0,0,0,0,0,0,0,44,67,67,11,0,0,0,0,0,0,0,131,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,188,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,215,254,254,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,254,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,105,249,254,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,179,254,254,254,196,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,254,254,254,243,41,70,95,95,76,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,209,254,254,254,254,254,254,254,254,254,254,241,200,170,108,0,0,0,0,0,0,0,0,0,0,14,155,253,254,254,254,254,254,254,254,206,187,187,187,156,156,120,35,0,0,0,0,0,0,0,0,0,158,237,254,254,254,254,220,180,64,22,22,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,254,254,225,152,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,228,183,130,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,154,255,180,91,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,176,230,253,253,253,253,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,204,146,146,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,182,231,253,253,253,253,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,169,129,222,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,235,253,253,151,13,0,189,253,220,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,167,3,0,0,189,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,224,253,253,98,0,0,0,146,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,212,38,0,0,0,25,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,134,0,0,0,0,25,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,24,0,0,0,0,25,253,253,127,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,24,0,0,0,0,25,253,253,202,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,24,0,0,0,0,25,253,249,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,182,253,189,13,0,0,0,0,25,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,136,4,0,0,0,0,158,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,185,253,253,109,0,0,0,52,222,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,245,121,39,40,133,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,230,253,253,253,219,219,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,253,253,253,246,105,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,89,238,253,253,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,237,95,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,232,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,54,3,0,0,0,0,96,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,11,0,0,0,0,96,254,216,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,203,11,0,0,0,0,96,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,120,112,0,0,0,0,96,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,209,254,72,0,0,0,0,96,254,243,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,11,0,0,0,0,96,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,187,4,0,0,0,0,96,254,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,222,8,28,0,70,142,188,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,254,254,199,223,196,237,254,254,254,254,248,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,254,254,255,254,255,254,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,254,254,254,254,254,254,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,94,124,124,124,124,105,5,5,5,171,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,238,136,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,254,254,238,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,254,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,163,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,191,135,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,158,243,254,254,254,251,136,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,254,254,254,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,186,247,110,29,105,141,237,254,195,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,4,0,0,0,166,254,238,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,216,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,216,254,254,216,141,27,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,248,254,254,254,254,254,178,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,166,166,190,254,254,254,216,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,183,254,254,206,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,196,254,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,228,254,235,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,49,246,254,233,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,118,184,1,0,42,217,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,255,111,106,239,254,251,128,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,254,254,252,169,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,254,254,202,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,144,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,234,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,238,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,216,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,239,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,238,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,146,153,255,255,98,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,227,253,253,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,122,250,253,214,139,163,252,253,195,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,252,189,68,0,0,200,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,62,0,0,0,0,120,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,233,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,204,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,234,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,129,253,253,177,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,232,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,242,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,252,134,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,238,253,253,133,104,188,211,211,211,211,211,211,48,0,0,0,0,0,0,0,0,0,0,0,0,15,117,252,253,253,253,253,253,253,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,253,253,253,253,217,183,183,183,183,93,2,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,253,170,145,123,37,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,187,138,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,149,244,253,253,253,253,250,225,132,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,150,253,253,253,253,253,253,253,253,254,230,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,253,253,253,199,194,253,253,254,253,250,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,253,253,139,18,6,4,80,253,254,253,253,213,28,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,212,10,0,0,0,29,253,254,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,84,0,0,0,0,19,231,254,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,156,4,0,0,0,0,42,254,253,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,99,0,0,0,0,0,155,250,253,253,246,40,0,0,0,0,0,0,0,0,0,0,0,0,17,232,253,253,216,70,0,0,0,0,25,235,253,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,254,254,222,159,159,159,255,254,254,254,254,205,20,0,0,0,0,0,0,0,0,0,0,0,0,5,139,240,253,253,253,253,253,253,254,253,253,253,253,253,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,66,202,247,253,253,253,253,248,229,149,180,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,84,84,84,84,32,0,0,25,213,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,249,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,253,253,247,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,220,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,244,253,239,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,104,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,118,180,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,137,245,227,200,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,60,196,135,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,182,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,221,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,207,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,209,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,180,0,0,0,0,0,0,0,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,199,0,0,0,0,0,83,193,249,254,254,254,250,128,0,0,0,0,0,0,0,0,0,0,0,0,0,200,199,0,0,0,94,233,251,207,188,150,150,197,231,251,81,0,0,0,0,0,0,0,0,0,0,0,0,104,246,75,1,121,240,105,34,0,0,0,0,0,83,254,122,0,0,0,0,0,0,0,0,0,0,0,0,20,239,232,146,239,68,0,0,0,0,0,0,0,100,239,39,0,0,0,0,0,0,0,0,0,0,0,0,0,50,229,254,109,2,0,0,0,0,0,0,66,221,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,168,90,34,21,21,62,192,188,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,48,85,144,209,254,255,190,183,83,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,130,215,254,255,254,243,168,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,244,254,211,176,176,176,186,254,254,214,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,208,253,191,46,4,0,0,0,2,8,114,236,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,54,184,105,13,0,0,0,0,0,0,0,0,54,236,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,248,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,226,242,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,120,216,250,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,48,48,129,235,254,233,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,129,52,120,211,254,254,248,200,116,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,251,254,254,254,254,254,254,177,126,126,60,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,133,133,133,133,133,147,219,236,254,254,254,250,173,119,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,51,119,137,172,223,245,234,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,187,0,0,0,0,0,0,0,0,0,22,81,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,0,0,0,0,0,0,0,0,103,253,212,8,0,0,0,0,0,0,0,0,0,0,0,0,0,16,208,248,0,0,0,0,0,0,0,0,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,10,81,234,248,73,0,0,0,0,0,0,0,0,216,254,208,100,15,9,9,7,0,0,2,6,9,18,131,235,253,180,47,0,0,0,0,0,0,0,0,0,0,103,248,254,254,254,254,238,177,177,188,227,254,254,253,243,97,0,0,0,0,0,0,0,0,0,0,0,0,0,24,82,162,167,197,167,167,167,167,167,167,129,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,43,87,148,148,156,253,253,254,253,253,253,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,252,252,252,252,253,252,252,252,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,245,252,253,252,251,231,231,232,231,233,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,189,172,84,77,0,0,0,0,7,196,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,218,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,64,64,124,252,252,187,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,252,252,252,252,253,142,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,255,253,253,253,253,237,222,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,107,168,168,246,252,252,37,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,245,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,217,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,227,73,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,166,228,251,251,251,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,220,253,251,251,251,251,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,231,253,251,251,251,251,232,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,255,253,253,253,253,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,253,168,107,169,251,253,189,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,89,236,251,235,215,164,15,6,129,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,47,211,253,251,251,142,0,0,0,37,251,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,251,142,0,0,0,11,148,251,253,251,164,0,0,0,0,0,0,0,0,0,0,0,0,11,150,253,255,211,25,0,0,0,0,11,150,253,255,211,25,0,0,0,0,0,0,0,0,0,0,0,0,140,251,251,253,107,0,0,0,0,0,37,251,251,211,46,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,253,128,5,0,0,0,0,37,251,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,251,253,188,20,0,0,32,109,129,251,173,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,251,251,201,30,0,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,255,149,73,150,253,255,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,251,251,253,251,251,251,251,253,251,230,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,253,251,251,251,251,242,215,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,189,251,253,251,251,251,173,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,200,253,251,96,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,152,233,152,152,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,252,253,172,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,102,61,163,243,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,81,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,132,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,41,0,0,41,132,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,214,51,113,233,203,203,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,212,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,172,152,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,213,10,71,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,203,0,41,243,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,203,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,204,0,31,233,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,203,0,173,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,253,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,213,252,233,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,94,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,135,247,247,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,253,252,226,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,120,252,253,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,227,252,252,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,253,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,227,252,252,222,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,212,252,252,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,252,148,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,255,159,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,227,252,252,159,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,252,252,246,215,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,252,210,118,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,246,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,107,55,209,208,196,43,84,55,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,248,254,253,254,254,254,253,253,253,182,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,254,254,213,181,181,181,217,254,254,251,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,251,254,117,13,6,0,0,0,6,54,200,254,242,150,19,0,0,0,0,0,0,0,0,0,0,0,0,59,253,254,17,0,0,0,0,0,0,0,18,170,254,250,52,0,0,0,0,0,0,0,0,0,0,0,0,0,197,112,2,0,0,0,0,0,0,0,8,176,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,10,0,0,0,0,0,0,0,69,215,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,28,97,211,132,162,231,100,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,126,222,239,254,254,227,197,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,254,254,254,254,207,148,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,242,254,254,254,254,254,254,254,251,147,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,210,174,133,176,220,224,243,254,254,157,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,34,125,247,237,232,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,238,243,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,7,24,138,238,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,195,179,182,182,216,254,254,254,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,228,254,254,255,254,253,206,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,98,168,197,168,168,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,254,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,239,253,161,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,196,252,121,12,128,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,127,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,239,243,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,238,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,246,33,0,0,0,0,0,0,0,0,26,47,34,0,0,0,0,0,0,0,0,0,0,0,0,0,8,244,238,0,0,0,0,0,56,149,218,218,238,254,245,171,19,0,0,0,0,0,0,0,0,0,0,0,9,254,238,0,0,0,8,134,249,254,208,154,117,117,138,251,168,0,0,0,0,0,0,0,0,0,0,0,28,254,163,0,0,36,212,254,192,70,5,0,0,0,0,118,246,7,0,0,0,0,0,0,0,0,0,0,72,254,154,0,0,161,246,113,5,0,0,0,0,0,0,120,211,4,0,0,0,0,0,0,0,0,0,0,9,254,204,0,0,197,221,0,0,0,0,0,0,0,18,209,179,0,0,0,0,0,0,0,0,0,0,0,1,111,253,136,0,68,252,239,152,0,0,0,0,18,174,235,47,0,0,0,0,0,0,0,0,0,0,0,0,5,186,254,199,44,23,84,3,0,0,17,95,210,235,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,208,254,251,181,124,94,163,207,249,254,188,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,124,208,254,254,241,171,171,153,68,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,232,48,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,84,0,0,0,0,81,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,252,204,7,0,0,3,76,245,116,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,130,254,226,37,0,0,0,117,254,197,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,182,254,227,42,0,0,0,127,242,234,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,209,254,223,43,0,0,0,76,246,250,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,216,254,223,0,0,0,0,58,249,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,227,43,0,0,0,42,217,254,126,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,233,42,0,0,0,16,199,254,227,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,239,65,0,0,0,148,255,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,237,150,75,72,241,255,142,4,0,36,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,189,249,254,252,251,254,231,133,130,130,170,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,197,254,254,254,255,254,254,215,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,153,72,111,55,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,196,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,235,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,169,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,244,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,236,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,30,156,254,254,254,254,202,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,253,253,253,253,253,253,253,253,140,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,227,217,217,217,233,253,254,187,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,221,24,0,0,0,37,199,254,214,32,0,0,0,17,49,158,169,0,0,0,0,0,0,0,0,225,253,253,240,52,0,0,0,0,0,135,83,0,12,90,182,206,253,253,253,0,0,0,0,0,0,0,0,38,222,253,253,211,81,0,0,0,0,74,85,194,205,253,253,253,253,253,218,0,0,0,0,0,0,0,0,0,97,221,253,253,240,108,85,137,206,254,253,253,253,253,253,253,180,117,25,0,0,0,0,0,0,0,0,0,0,22,135,253,253,253,253,253,253,254,253,253,188,156,64,36,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,253,253,253,253,253,249,144,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,225,253,253,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,186,254,254,254,254,254,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127,253,253,253,128,170,253,254,123,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,200,14,42,229,254,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,222,253,253,239,79,0,0,99,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,171,253,253,210,80,0,0,0,0,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,239,52,0,0,0,0,128,254,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,107,21,86,86,86,137,251,254,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,253,230,226,253,253,253,253,253,254,186,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,207,253,253,253,253,253,253,253,253,139,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,132,213,253,160,132,132,132,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,231,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,118,118,207,139,8,0,0,129,253,226,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,224,253,253,253,253,98,0,25,240,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,227,49,110,41,8,0,79,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,217,254,61,0,0,0,0,0,79,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,218,15,0,0,0,0,0,79,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,195,0,0,0,0,0,0,79,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,128,0,0,0,0,19,79,132,253,253,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,23,0,13,92,136,239,253,253,253,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,218,195,213,253,253,254,125,88,245,253,155,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,240,255,254,254,199,120,38,0,79,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,136,135,68,3,0,0,0,79,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,176,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,220,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,133,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,109,158,158,202,254,255,254,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,227,254,254,254,254,254,254,254,254,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,254,234,197,162,162,167,254,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,217,101,7,2,0,0,1,152,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,132,34,0,0,0,0,0,0,123,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,231,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,53,162,252,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,116,162,254,254,254,254,254,196,89,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,254,254,254,254,254,254,254,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,254,254,238,187,110,81,83,225,254,254,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,225,249,219,100,32,0,0,0,0,20,102,247,251,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,54,0,0,0,0,0,0,0,0,0,99,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,205,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,168,254,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,193,153,102,47,47,102,153,220,254,254,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,254,254,254,254,254,254,254,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,240,254,254,254,254,254,254,252,193,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,85,188,235,236,224,157,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,241,255,178,141,141,129,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,253,252,252,252,253,234,169,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,127,69,168,168,168,168,168,168,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,196,0,51,57,107,57,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,240,197,246,253,252,252,228,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,252,252,190,139,177,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,247,100,0,0,0,0,51,192,228,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,184,65,0,0,0,0,0,0,116,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,224,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,153,0,0,0,0,154,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,246,108,44,45,157,253,252,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,240,240,252,253,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,140,215,252,202,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,34,74,135,197,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,156,73,89,132,140,193,254,254,196,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,254,254,239,229,166,51,7,60,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,210,97,48,20,0,0,0,0,170,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,128,0,0,0,0,0,0,0,175,218,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,128,0,0,0,0,0,0,13,246,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,126,0,0,0,0,0,0,88,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,14,0,0,0,0,0,0,137,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,236,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,224,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,230,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,208,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,214,102,44,5,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,239,254,254,254,254,254,209,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,154,248,254,254,254,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,71,167,254,254,224,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,229,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,233,254,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,247,254,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,175,254,229,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,213,254,143,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,245,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,231,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,222,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,171,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,73,73,233,252,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,182,201,252,252,253,96,98,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,253,252,252,252,253,35,37,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,252,253,158,41,0,0,0,21,205,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,227,252,210,35,5,0,0,0,0,11,175,238,72,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,252,205,31,0,0,0,0,0,0,32,236,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,71,0,0,0,0,0,0,0,0,144,253,221,41,0,0,0,0,0,0,0,0,0,0,0,37,253,253,222,41,0,0,0,0,0,0,0,0,0,255,253,72,0,0,0,0,0,0,0,0,0,0,0,78,252,220,45,0,0,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,0,0,181,252,143,0,0,0,0,0,0,0,0,0,0,0,253,252,71,0,0,0,0,0,0,0,0,0,0,42,221,252,143,0,0,0,0,0,0,0,0,0,0,84,253,252,71,0,0,0,0,0,0,0,0,0,0,135,253,253,0,0,0,0,0,0,0,0,0,0,16,191,255,180,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,21,99,252,222,45,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,37,181,252,252,125,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,84,253,252,231,108,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,144,0,0,0,47,109,212,253,255,159,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,149,252,237,217,217,217,233,252,252,128,35,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,252,252,252,253,241,112,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,169,252,252,168,108,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,255,154,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,241,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,226,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,195,253,213,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,217,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,203,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,215,253,253,153,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,203,253,253,195,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,227,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,229,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,202,185,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,202,235,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,250,243,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,248,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,207,254,174,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,193,254,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,243,238,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,238,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,241,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,182,175,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,182,240,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,240,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,87,242,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,183,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,245,184,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,247,196,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,249,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,149,229,255,254,203,81,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,94,156,253,253,253,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,208,248,246,177,156,35,10,85,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,218,253,215,53,0,0,0,0,113,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,247,253,160,16,0,0,0,0,83,248,243,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,144,73,15,0,26,212,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,206,239,253,253,208,7,9,183,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,171,253,236,127,214,253,207,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,217,253,253,253,171,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,207,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,229,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,216,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,234,253,134,179,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,252,87,3,168,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,218,253,90,0,38,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,167,253,95,3,6,163,253,245,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,236,25,0,132,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,186,11,151,241,253,204,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,238,253,253,253,253,161,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,160,253,155,46,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,159,253,211,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,250,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,138,253,253,255,249,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,136,252,252,252,249,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,170,252,252,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,252,252,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,240,253,252,252,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,233,253,255,253,247,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,155,252,252,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,252,252,252,253,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,252,252,245,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,252,252,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,243,255,253,253,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,252,253,252,208,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,252,253,208,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,252,252,252,245,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,117,191,255,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,169,225,252,252,247,196,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,123,246,253,252,186,118,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,226,243,252,252,140,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,178,253,254,234,187,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,225,252,252,134,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,252,186,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,253,203,79,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,159,240,252,253,234,131,57,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,156,253,252,252,252,223,122,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,53,139,240,253,252,231,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,150,250,242,116,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,224,234,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,79,204,253,206,13,0,0,0,0,0,0,0,0,57,57,57,57,57,57,57,57,57,57,95,169,169,187,252,252,253,214,81,0,0,0,0,0,0,0,0,0,216,252,252,252,253,252,252,252,253,252,252,252,253,252,224,168,106,19,0,0,0,0,0,0,0,0,0,0,16,28,65,139,140,215,252,252,253,252,164,139,140,65,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,128,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,64,191,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,255,255,255,255,128,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,64,255,255,128,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,255,255,128,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,191,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,212,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,228,252,252,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,252,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,252,252,252,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,252,221,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,253,255,218,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,249,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,203,252,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,93,93,93,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,252,252,244,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,216,253,253,255,253,253,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,133,206,154,214,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,202,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,209,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,230,106,0,0,0,0,0,151,252,252,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,244,61,0,0,0,97,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,253,236,78,47,151,253,252,252,235,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,253,252,252,252,252,253,252,202,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,252,252,252,252,253,172,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,96,137,232,147,75,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,57,95,169,169,94,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,134,204,252,252,252,253,252,234,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,234,252,253,252,214,139,28,103,228,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,253,239,38,0,0,0,0,38,226,229,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,234,233,196,125,0,0,0,0,0,0,38,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,37,0,0,0,0,0,0,0,0,0,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,246,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,246,252,75,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,254,253,253,253,141,141,104,79,254,253,244,75,0,0,0,0,0,0,0,0,0,0,0,0,45,225,252,252,253,252,252,252,253,252,252,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,156,56,94,205,253,252,252,252,253,252,234,147,0,0,0,0,0,0,0,0,0,0,0,0,253,252,214,40,13,113,150,237,253,252,252,252,253,252,252,252,226,225,225,75,0,0,0,0,0,0,0,0,255,253,253,253,254,253,253,253,226,150,76,0,13,113,150,225,254,253,253,153,0,0,0,0,0,0,0,0,203,252,252,252,253,240,196,96,0,0,0,0,0,0,0,0,84,84,84,84,0,0,0,0,0,0,0,0,7,130,168,168,106,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,240,254,255,254,215,97,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,122,122,181,215,230,253,237,176,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,56,160,251,234,86,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,231,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,249,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,26,194,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,150,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,95,178,249,220,72,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,64,147,221,252,196,114,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,95,126,188,195,253,254,155,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,254,254,254,254,255,191,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,122,122,90,28,38,122,226,253,238,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,154,253,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,145,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,133,0,0,0,0,0,0,0,0,94,236,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,211,88,4,0,0,0,0,21,175,249,253,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,149,253,219,216,181,216,216,230,254,227,147,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,93,159,166,253,232,239,183,101,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,255,109,120,174,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,103,240,253,253,253,253,237,93,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,163,253,253,253,240,214,214,250,253,224,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,168,0,0,147,253,253,222,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,23,0,0,52,228,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,236,13,0,0,0,177,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,233,56,0,0,0,0,177,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,22,22,19,0,0,0,0,0,177,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,69,230,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,202,124,242,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,243,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,215,253,253,253,253,253,253,253,94,16,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,253,253,253,253,253,253,253,136,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,253,253,253,253,253,253,253,253,247,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,249,253,253,253,253,253,249,245,250,253,253,253,214,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,243,75,0,105,253,253,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,242,253,253,236,87,0,0,3,45,222,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,99,99,69,0,0,0,0,0,85,104,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,163,0,21,102,102,183,213,252,182,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,214,253,254,253,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,252,213,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,233,254,253,254,233,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,91,30,50,50,50,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,51,51,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,253,252,223,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,244,203,183,20,123,243,234,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,212,81,0,0,0,0,162,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,214,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,152,153,233,62,0,0,0,0,41,214,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,212,20,0,21,102,123,243,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,255,253,255,253,254,253,254,233,183,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,253,252,253,252,151,151,91,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,255,126,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,238,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,188,248,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,241,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,247,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,221,253,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,235,253,253,253,142,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,253,239,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,242,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,223,253,253,253,190,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,229,253,253,253,186,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,246,253,253,249,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,89,130,130,222,255,255,255,255,255,255,142,15,1,0,0,0,0,0,0,0,0,0,0,0,8,86,151,253,253,253,253,253,253,253,253,253,253,253,253,198,6,0,0,0,0,0,0,0,0,0,0,17,205,253,253,253,253,250,235,235,235,235,195,214,235,242,253,253,21,0,0,0,0,0,0,0,0,0,4,205,253,253,253,237,146,85,0,0,0,0,0,0,0,41,239,253,205,3,0,0,0,0,0,0,0,0,83,253,251,149,99,36,0,0,0,0,0,0,0,0,0,77,244,253,181,2,0,0,0,0,0,0,0,0,113,253,216,0,0,0,0,0,0,0,0,0,0,0,14,167,253,253,135,0,0,0,0,0,0,0,0,0,6,210,92,0,0,0,0,0,0,0,0,0,14,44,181,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,50,50,84,174,199,253,253,253,233,149,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,253,253,231,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,253,253,253,253,253,159,68,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,235,253,253,253,160,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,149,237,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,225,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,170,253,238,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,76,0,0,0,0,0,205,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,238,144,31,0,29,106,164,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,247,253,253,241,236,241,253,253,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,152,253,253,253,253,253,253,253,253,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,88,153,253,253,253,253,153,26,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,167,254,255,185,61,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,229,139,41,102,181,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,81,0,0,0,93,245,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,165,0,0,0,0,93,246,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,214,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,180,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,215,253,182,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,249,253,253,246,123,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,204,199,199,250,253,92,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,54,5,0,0,60,183,253,213,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,145,253,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,138,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,188,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,5,0,0,0,0,0,0,0,0,0,0,0,0,2,66,17,0,0,0,0,0,0,0,0,0,0,93,253,5,0,0,0,0,0,0,0,0,0,0,0,0,6,253,222,115,84,0,0,0,0,0,0,0,111,240,212,3,0,0,0,0,0,0,0,0,0,0,0,0,5,221,245,253,253,212,141,141,141,141,141,229,253,245,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,186,253,253,253,253,253,253,253,253,216,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,58,145,245,253,253,161,182,100,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,185,99,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,206,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,206,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,207,0,0,0,0,0,70,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,206,0,0,0,0,0,57,244,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,240,184,142,70,70,70,101,240,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,252,253,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,231,137,137,137,137,211,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,255,144,0,0,0,0,0,70,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,75,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,63,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,253,252,253,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,214,253,254,253,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,254,213,132,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,253,252,253,252,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,253,254,233,214,253,254,253,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,131,30,10,91,213,252,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,253,123,0,0,0,0,82,234,253,234,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,212,122,0,0,0,0,0,30,172,253,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,254,151,0,0,0,0,0,0,11,132,254,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,232,41,0,0,0,0,0,173,252,253,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,253,173,51,52,51,153,233,254,253,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,252,253,252,253,252,253,252,253,252,233,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,254,253,254,253,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,151,213,252,151,70,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,194,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,181,0,0,0,0,0,0,0,106,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,252,30,0,0,0,0,0,0,135,248,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,108,0,0,0,0,0,0,135,254,249,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,134,0,0,0,0,0,0,135,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,219,255,207,0,0,0,0,0,0,135,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,240,6,0,0,0,0,0,185,254,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,88,0,0,0,0,0,240,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,221,254,176,1,0,0,1,121,252,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,127,0,42,128,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,254,253,203,244,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,240,254,254,254,254,240,252,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,151,254,220,149,41,240,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,15,9,0,0,141,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,238,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,238,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,249,236,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,184,0,0,0,0,102,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,185,0,0,0,0,139,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,248,21,0,0,0,138,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,31,0,0,0,25,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,254,198,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,206,0,0,0,138,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,223,17,0,0,89,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,230,0,0,106,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,251,80,0,138,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,253,160,0,138,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,160,0,89,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,59,179,237,59,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,179,251,251,251,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,251,251,251,209,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,138,245,251,251,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,251,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,251,251,251,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,237,251,251,244,124,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,251,251,253,251,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,188,251,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,253,251,251,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,239,255,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,251,251,230,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,251,251,251,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,244,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,251,251,251,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,251,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,251,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,251,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,251,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,251,251,175,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,13,12,77,208,207,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,123,186,201,252,248,206,252,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,201,252,252,252,252,253,252,252,252,214,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,252,252,252,253,252,252,243,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,252,229,192,134,78,226,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,235,252,64,0,0,4,175,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,165,8,0,111,252,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,234,252,65,51,179,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,241,241,253,252,110,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,219,252,252,253,171,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,252,252,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,252,252,160,178,243,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,252,99,4,52,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,252,183,7,0,70,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,187,37,0,128,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,167,33,194,250,253,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,240,230,252,252,253,243,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,252,252,252,252,242,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,252,80,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,91,91,204,203,7,76,79,116,29,29,92,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,190,252,253,252,187,243,166,252,252,252,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,156,168,168,168,168,106,56,171,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,229,255,153,66,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,57,57,57,57,107,169,169,234,252,253,252,252,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,243,253,252,252,252,253,252,252,252,253,233,234,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,190,190,139,139,91,90,139,139,190,109,22,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,255,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,251,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,213,252,253,233,77,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,229,253,253,155,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,253,253,159,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,140,253,245,168,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,219,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,234,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,198,0,0,0,0,0,0,0,45,73,206,131,87,53,0,0,0,0,0,0,0,0,0,0,0,0,97,253,198,0,0,0,0,92,186,186,230,253,253,253,253,237,81,0,0,0,0,0,0,0,0,0,0,0,97,253,109,0,0,0,161,244,253,253,253,237,239,253,238,253,239,63,0,0,0,0,0,0,0,0,0,0,97,253,61,0,5,79,251,253,251,246,156,47,54,109,50,219,253,96,0,0,0,0,0,0,0,0,0,0,97,253,61,0,151,253,253,209,95,0,0,0,0,0,0,63,253,96,0,0,0,0,0,0,0,0,0,0,97,253,191,0,151,253,208,23,0,0,0,0,0,0,34,215,253,96,0,0,0,0,0,0,0,0,0,0,13,218,246,220,240,253,24,0,0,0,0,3,83,138,231,253,172,13,0,0,0,0,0,0,0,0,0,0,0,213,253,253,253,253,67,63,63,63,151,201,253,253,253,204,57,0,0,0,0,0,0,0,0,0,0,0,0,104,243,253,253,253,253,253,253,253,253,253,253,178,172,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,235,253,253,253,253,253,253,251,232,232,102,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,116,186,178,204,190,116,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,45,170,254,254,245,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,171,245,207,165,92,51,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,216,248,98,0,0,0,39,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,177,245,117,42,0,0,0,85,225,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,194,253,117,2,0,0,0,137,251,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,219,85,0,0,0,36,223,246,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,240,34,0,0,0,36,220,241,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,248,67,0,0,117,223,241,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,186,0,119,249,246,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,249,231,249,200,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,246,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,136,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,90,203,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,144,13,216,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,180,8,0,155,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,106,0,0,94,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,237,253,0,0,0,166,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,220,253,0,13,102,241,222,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,253,209,216,253,219,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,254,253,137,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,255,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,221,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,228,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,251,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,229,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,196,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,241,253,253,142,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,253,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,139,253,168,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,141,255,178,141,141,141,141,104,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,234,252,253,252,252,252,253,252,252,215,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,186,56,56,56,56,56,119,168,234,252,247,172,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,168,0,0,0,0,0,0,0,22,78,253,252,205,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,190,252,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,254,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,82,197,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,38,135,66,0,0,0,38,29,134,204,252,252,214,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,246,225,225,226,237,234,252,253,177,103,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,113,210,253,254,253,194,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,133,253,252,149,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,224,252,228,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,153,252,250,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,253,128,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,234,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,234,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,240,250,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,198,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,226,114,0,0,0,0,0,170,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,86,0,0,0,0,226,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,86,0,0,0,29,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,29,0,0,0,86,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,114,0,0,0,0,114,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,57,0,0,0,0,226,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,0,0,0,0,0,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,114,0,0,0,57,114,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,198,170,226,255,255,255,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,226,114,0,0,170,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,170,170,114,29,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,57,0,0,0,87,193,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,235,236,244,235,235,235,249,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,254,254,254,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,251,199,199,199,199,199,184,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,235,254,241,0,0,0,0,0,0,0,0,0,31,143,51,0,0,0,0,0,0,0,0,0,0,0,0,31,211,254,241,14,1,0,0,0,0,0,0,70,241,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,254,254,6,0,0,0,0,4,131,248,254,151,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,141,0,0,0,73,115,254,149,99,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,218,254,243,73,25,117,245,252,98,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,254,238,220,254,247,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,254,254,254,219,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,116,254,254,254,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,251,250,254,207,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,213,254,254,77,47,164,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,254,241,13,1,0,4,133,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,121,0,0,0,0,49,255,232,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,136,0,0,0,0,49,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,243,21,0,0,0,49,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,254,254,205,100,21,59,177,254,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,254,254,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,85,253,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,240,100,0,210,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,240,252,142,0,193,252,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,181,252,252,252,0,28,115,242,252,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,252,252,0,0,0,169,252,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,178,63,0,0,0,108,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,233,56,0,0,0,0,3,106,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,165,253,252,164,0,0,0,0,0,0,0,253,186,13,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,195,19,0,0,0,0,0,0,0,253,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,0,0,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,255,106,0,0,0,0,0,0,0,0,255,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,27,0,0,0,0,0,0,0,0,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,45,234,252,133,6,0,0,0,0,0,0,7,135,253,186,12,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,0,0,0,0,0,0,0,23,131,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,0,0,0,0,0,0,48,227,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,192,12,0,0,0,176,253,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,253,228,225,225,225,253,252,252,195,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,233,252,253,252,252,252,252,253,124,227,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,253,27,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,112,253,252,252,252,252,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,54,143,255,254,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,241,243,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,239,177,146,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,198,161,50,0,144,253,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,218,253,183,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,151,218,253,253,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,230,253,253,253,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,190,197,253,206,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,227,253,253,253,161,27,12,13,242,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,184,184,184,73,13,0,0,0,241,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,243,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,3,0,0,0,0,0,0,1,128,253,251,53,0,0,0,0,0,0,0,0,0,0,0,0,0,38,152,253,103,0,0,0,0,0,0,75,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,103,0,0,0,0,0,0,144,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,226,41,0,0,0,0,69,239,253,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,225,39,0,0,72,234,253,223,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,105,240,253,253,221,130,153,233,253,226,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,178,253,253,253,253,253,251,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,175,253,216,116,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,60,0,0,0,32,238,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,238,248,47,0,0,145,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,237,31,0,38,243,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,120,0,0,163,253,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,137,255,238,26,0,0,163,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,128,0,0,20,247,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,243,15,0,0,136,254,253,67,76,128,186,178,6,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,142,0,0,8,186,254,253,253,253,253,254,210,8,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,59,85,136,212,253,254,253,175,124,72,72,57,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,255,254,254,254,254,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,254,221,206,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,165,151,101,16,37,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,246,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,240,254,255,254,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,163,252,253,253,254,253,253,234,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,153,253,253,253,253,229,173,253,253,242,79,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,215,84,119,254,253,253,253,253,246,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,179,0,0,18,157,253,253,253,249,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,249,253,215,22,0,0,12,158,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,228,38,0,32,226,253,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,249,253,253,227,161,247,254,253,253,253,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,253,253,253,253,253,254,253,253,253,246,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,193,225,253,253,253,254,148,253,253,235,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,164,129,35,98,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,226,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,223,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,210,114,0,0,0,0,0,0,5,171,242,186,0,0,0,0,0,0,0,0,0,0,0,0,0,8,81,245,237,87,0,0,0,0,0,0,79,250,237,87,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,244,52,0,0,0,0,0,0,44,237,244,100,0,0,0,0,0,0,0,0,0,0,0,0,0,59,218,211,88,0,0,0,0,0,0,59,218,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,64,208,253,128,0,0,0,0,0,0,10,156,253,248,52,0,0,0,0,0,0,0,0,0,0,0,0,44,205,253,151,9,0,0,0,0,0,0,129,219,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,156,251,178,43,0,0,0,0,0,0,0,181,253,215,12,0,0,0,0,0,0,0,0,0,0,0,30,221,248,244,50,0,0,0,0,0,0,0,88,238,253,80,3,0,0,0,0,0,0,0,0,0,0,0,159,254,254,245,144,106,18,0,0,0,5,92,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,77,153,213,253,253,253,217,177,143,9,63,253,253,219,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,44,44,130,245,253,253,216,236,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,30,209,253,255,253,253,242,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,178,253,247,121,88,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,239,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,102,253,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,209,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,206,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,136,251,252,252,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,252,252,252,252,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,167,253,252,252,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,254,253,218,253,253,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,253,189,19,189,252,229,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,231,109,5,29,246,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,179,252,208,0,0,0,0,0,0,0,9,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,129,0,0,0,0,0,0,0,84,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,15,211,252,252,42,0,0,0,0,0,0,29,169,252,226,0,0,0,0,0,0,0,0,0,0,64,127,127,237,252,252,252,236,233,232,179,127,127,145,239,252,252,146,0,0,0,0,0,0,0,0,0,48,202,252,252,253,252,252,252,252,253,252,252,252,252,253,252,252,183,14,0,0,0,0,0,0,0,0,0,146,252,252,252,253,252,252,252,252,253,252,252,252,252,253,252,199,49,0,0,0,0,0,0,0,0,0,61,253,253,253,253,255,151,0,0,0,0,0,98,106,62,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,252,252,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,252,252,244,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,211,252,236,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,42,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,192,254,254,254,170,89,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,117,251,253,185,143,143,149,246,205,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,243,113,2,0,0,0,25,183,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,247,40,0,0,0,0,0,0,4,175,220,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,139,0,0,0,0,0,0,0,0,0,205,163,0,0,0,0,0,0,0,0,0,0,0,0,0,70,246,226,7,0,0,0,0,0,0,0,0,93,195,245,60,0,0,0,0,0,0,0,0,0,0,0,0,120,253,118,0,0,0,0,0,0,0,0,0,146,253,253,109,0,0,0,0,0,0,0,0,0,0,0,36,233,183,2,0,0,0,0,0,0,0,0,0,68,251,253,125,0,0,0,0,0,0,0,0,0,0,0,141,246,73,0,0,0,0,0,0,0,0,0,0,0,234,253,132,0,0,0,0,0,0,0,0,0,0,6,217,174,0,0,0,0,0,0,0,0,0,0,0,107,246,253,109,0,0,0,0,0,0,0,0,0,0,12,253,133,0,0,0,0,0,0,0,0,0,0,0,179,253,252,29,0,0,0,0,0,0,0,0,0,0,111,253,133,0,0,0,0,0,0,0,0,0,0,16,226,254,163,0,0,0,0,0,0,0,0,0,0,0,116,253,128,0,0,0,0,0,0,0,0,0,0,154,253,251,115,0,0,0,0,0,0,0,0,0,0,0,143,253,34,0,0,0,0,0,0,0,0,0,47,232,253,152,0,0,0,0,0,0,0,0,0,0,0,0,111,253,44,0,0,0,0,0,0,83,192,130,244,254,165,22,0,0,0,0,0,0,0,0,0,0,0,0,79,253,133,0,0,0,0,0,0,0,90,253,253,204,22,0,0,0,0,0,0,0,0,0,0,0,0,0,5,192,189,11,0,0,0,0,0,17,202,253,203,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,180,9,0,0,0,109,216,253,207,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,240,245,245,244,245,253,253,123,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,226,253,253,155,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,43,87,78,201,253,253,193,113,87,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,206,252,253,252,252,252,252,253,252,252,211,190,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,252,242,126,82,83,126,126,126,232,242,111,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,216,110,77,0,0,0,0,0,0,211,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,4,68,147,18,0,0,0,0,0,0,0,54,246,253,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,174,253,255,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,121,247,252,252,222,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,153,232,253,252,252,252,244,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,253,252,252,252,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,252,252,253,252,252,252,252,212,150,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,106,107,106,53,0,177,168,243,191,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,246,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,242,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,252,252,42,0,0,0,0,0,0,0,0,8,123,30,0,0,0,0,0,0,0,0,0,0,0,18,210,253,253,199,18,0,0,0,0,0,0,0,0,87,252,168,28,0,0,0,0,0,0,0,0,0,84,216,253,252,244,49,0,0,0,0,0,0,0,0,0,22,205,251,239,232,189,153,127,127,127,128,127,180,246,252,250,247,180,42,0,0,0,0,0,0,0,0,0,0,0,86,231,252,253,252,252,252,252,253,252,252,252,226,115,99,16,0,0,0,0,0,0,0,0,0,0,0,0,0,28,129,42,42,95,147,147,147,191,147,77,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,223,253,253,204,89,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,254,253,201,89,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,254,253,253,253,173,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,242,253,222,180,254,253,253,253,253,173,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,242,253,174,27,0,112,217,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,111,0,0,0,32,217,253,253,253,241,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,217,21,0,0,0,0,15,177,253,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,47,250,253,111,0,0,0,0,0,0,8,185,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,48,0,0,0,0,0,0,0,62,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,246,43,0,0,0,0,0,0,0,32,225,245,32,0,0,0,0,0,0,0,0,0,0,0,0,6,182,253,106,0,0,0,0,0,0,0,25,146,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,60,0,0,0,0,0,5,67,226,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,89,0,0,0,30,67,188,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,236,194,194,194,222,254,253,253,253,253,163,12,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,253,253,253,253,253,253,254,253,253,253,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,253,253,254,253,239,76,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,170,253,253,253,253,253,197,132,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,46,173,253,201,132,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,58,150,157,254,255,254,254,254,254,199,119,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,253,253,253,253,253,234,196,253,253,253,253,226,65,0,0,0,0,0,0,0,0,0,0,0,0,0,17,190,217,217,217,149,69,8,4,10,10,65,145,250,247,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,237,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,95,240,253,138,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,178,253,253,179,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,61,141,223,241,248,182,60,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,166,207,253,253,215,191,131,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,250,253,228,101,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,214,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,143,252,181,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,137,253,210,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,201,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,180,253,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,102,0,0,0,217,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,249,91,0,0,0,137,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,242,24,0,0,0,31,237,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,205,70,11,11,88,245,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,253,253,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,115,152,253,253,151,71,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,112,156,255,254,223,104,14,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,253,253,254,237,253,253,223,230,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,214,228,159,115,78,26,174,174,205,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,107,10,220,123,0,0,0,0,0,0,188,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,230,97,237,18,0,0,0,0,0,16,217,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,156,211,0,0,0,0,0,0,40,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,201,128,0,0,0,0,0,0,167,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,39,0,0,0,0,0,0,234,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,254,39,0,0,0,0,0,73,251,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,254,46,135,98,60,0,0,116,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,241,45,236,254,254,255,254,254,254,104,59,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,105,0,95,229,253,254,253,253,253,253,241,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,152,155,253,253,210,100,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,225,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,255,201,79,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,204,129,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,202,253,253,253,253,249,244,161,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,239,195,244,253,253,253,253,243,151,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,38,18,46,209,124,227,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,178,224,244,103,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,55,198,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,246,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,193,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,196,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,244,253,201,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,219,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,192,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,154,253,253,253,207,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,205,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,160,253,253,167,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,191,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,149,132,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,24,108,180,201,255,180,107,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,212,252,252,252,252,253,252,252,252,252,162,88,34,0,0,0,0,0,0,0,0,0,0,0,0,0,26,236,253,252,252,252,252,253,252,252,252,252,253,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,252,252,252,210,211,252,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,32,165,252,253,252,168,43,12,23,106,200,252,252,253,252,221,35,0,0,0,0,0,0,0,0,0,0,0,81,253,253,255,196,0,0,0,3,66,253,253,253,255,239,115,0,0,0,0,0,0,0,0,0,0,0,9,197,252,252,218,33,0,0,0,97,252,252,252,231,92,33,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,252,116,0,0,0,0,138,252,252,227,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,116,0,0,0,136,233,252,153,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,168,0,32,210,250,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,206,253,253,255,253,253,253,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,168,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,253,252,252,252,252,239,93,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,252,252,253,252,252,252,252,253,252,236,188,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,255,249,237,253,253,255,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,236,186,252,200,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,253,252,252,252,252,253,252,252,195,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,121,252,253,252,252,252,252,253,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,179,253,252,252,252,252,190,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,243,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,25,65,238,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,11,135,157,32,0,2,37,112,157,180,253,253,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,35,165,253,253,217,169,174,253,253,253,253,253,253,253,232,49,0,0,0,0,0,0,0,0,0,0,0,12,199,253,253,253,253,253,254,253,253,213,207,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,28,205,253,253,253,253,253,253,181,112,60,20,153,253,253,179,6,0,0,0,0,0,0,0,0,0,0,61,213,253,253,253,184,48,48,48,0,0,0,40,240,253,213,42,0,0,0,0,0,0,0,0,0,0,57,238,253,253,253,144,24,0,0,0,0,0,78,225,253,253,134,5,0,0,0,0,0,0,0,0,0,0,128,253,253,232,144,34,0,0,0,0,0,0,100,253,253,170,27,0,0,0,0,0,0,0,0,0,0,0,196,253,253,205,0,0,0,0,0,0,0,139,249,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,64,122,46,0,0,0,0,0,0,0,13,203,254,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,254,253,231,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,204,254,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,237,253,216,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,248,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,249,253,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,132,132,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,112,179,183,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,55,185,238,190,128,104,230,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,110,201,223,102,24,0,0,116,229,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,198,233,178,84,10,0,0,4,137,224,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,122,1,0,0,0,0,4,140,227,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,5,160,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,160,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,140,212,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,186,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,116,226,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,121,206,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,207,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,212,169,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,4,186,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,115,160,185,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,225,192,184,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,255,147,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,242,104,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,130,51,0,0,31,10,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,103,102,191,130,222,102,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,252,250,250,250,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,252,250,250,250,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,202,202,202,214,252,252,252,254,252,100,0,0,0,0,0,11,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,149,149,231,252,250,100,0,0,0,0,0,31,130,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,252,250,100,0,0,0,0,0,31,130,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,202,241,252,250,100,0,0,82,202,40,51,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,252,203,0,31,51,92,252,252,252,244,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,250,222,102,191,250,252,250,250,250,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,190,250,252,250,250,250,252,250,159,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,231,250,252,250,250,250,252,169,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,92,252,252,252,254,252,252,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,221,252,250,250,250,252,250,189,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,191,250,250,252,250,250,250,252,189,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,252,250,250,250,212,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,252,252,255,252,252,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,232,149,149,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,221,254,254,194,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,188,254,254,237,247,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,243,254,254,136,13,86,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,239,254,254,174,13,0,189,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,247,254,249,62,0,0,115,250,216,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,245,0,0,47,245,246,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,205,245,0,54,231,247,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,131,63,135,254,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,219,132,254,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,205,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,185,247,131,237,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,209,0,57,254,192,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,95,0,8,240,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,52,0,0,103,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,62,0,0,49,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,251,176,0,1,109,255,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,246,184,187,254,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,254,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,143,143,191,255,253,253,196,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,252,252,196,206,186,250,236,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,188,44,6,13,0,242,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,7,0,0,0,53,248,223,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,224,196,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,170,248,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,173,253,232,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,202,252,253,244,177,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,243,220,221,243,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,53,0,0,54,193,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,239,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,165,14,0,0,0,0,0,171,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,21,0,0,0,0,91,243,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,21,0,0,0,89,246,205,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,108,0,33,140,253,241,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,236,249,187,236,252,210,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,243,252,252,156,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,240,255,210,171,171,171,73,60,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,105,237,254,254,254,254,254,254,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,49,193,254,184,228,248,254,254,254,254,254,250,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,254,50,0,36,227,254,254,218,77,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,236,252,168,138,13,4,133,244,249,139,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,239,25,0,4,145,254,216,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,203,254,199,47,172,254,214,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,214,254,254,254,223,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,243,248,246,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,223,248,71,147,254,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,82,0,6,215,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,245,214,8,0,0,119,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,249,57,0,0,0,108,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,224,212,0,0,0,10,220,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,101,0,0,0,164,254,226,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,67,0,0,68,234,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,67,0,68,234,254,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,248,246,252,254,177,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,129,254,182,141,21,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,144,236,254,254,254,250,144,62,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,224,189,163,163,187,228,253,138,67,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,107,25,2,0,0,0,27,78,241,254,194,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,37,0,0,0,0,0,0,0,9,88,247,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,244,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,231,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,155,122,45,93,100,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,253,253,253,255,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,244,253,253,253,254,253,253,251,221,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,227,244,250,159,34,0,164,243,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,54,67,0,0,0,0,75,210,250,177,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,149,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,253,250,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,189,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,189,253,143,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,12,50,224,253,253,90,0,0,0,0,0,0,0,0,21,198,155,45,30,45,4,20,0,20,26,45,88,163,253,253,253,246,128,13,0,0,0,0,0,0,0,0,9,66,157,177,231,253,193,217,188,217,226,253,253,253,203,176,124,54,0,0,0,0,0,0,0,0,0,0,0,0,0,3,33,120,143,162,205,157,143,143,143,37,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,185,212,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,243,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,206,254,245,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,217,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,192,254,254,178,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,230,254,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,223,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,251,254,141,0,0,0,0,12,22,22,22,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,218,0,0,0,13,100,213,254,254,254,232,54,0,0,0,0,0,0,0,0,0,0,0,0,0,5,235,254,135,0,0,143,217,254,254,254,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,135,38,173,254,249,188,110,10,10,140,254,251,5,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,137,182,254,250,103,0,0,0,26,213,255,228,4,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,236,254,254,147,0,0,0,69,208,254,200,26,0,0,0,0,0,0,0,0,0,0,0,0,0,5,241,254,254,254,254,252,250,250,250,253,254,225,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,237,254,254,254,254,254,254,254,254,155,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,186,254,254,254,254,168,136,38,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,92,165,159,140,165,220,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,18,218,241,241,241,241,248,254,254,254,254,254,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,154,204,204,204,204,189,105,26,58,26,183,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,246,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,232,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,231,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,239,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,200,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,251,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,250,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,245,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,196,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,175,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,13,17,17,108,180,180,180,180,180,180,180,239,253,253,201,10,0,0,0,0,0,0,0,0,0,0,7,107,221,253,253,253,253,253,253,253,253,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,4,139,253,253,253,253,253,253,221,220,220,220,220,247,253,102,24,0,0,0,0,0,0,0,0,0,0,0,0,55,129,129,129,129,129,129,4,0,0,0,57,228,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,142,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,180,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,190,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,227,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,204,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,180,253,253,167,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,249,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,189,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,169,161,229,162,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,232,248,206,237,249,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,42,0,29,180,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,235,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,237,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,234,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,254,152,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,115,115,140,232,251,163,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,163,238,199,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,220,240,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,155,245,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,211,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,228,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,247,210,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,170,255,173,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,99,253,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,108,216,251,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,184,254,202,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,103,255,213,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,211,253,252,119,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,178,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,237,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,242,253,249,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,231,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,212,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,204,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,195,162,162,137,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,253,253,253,253,253,233,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,241,253,253,243,162,124,124,124,229,234,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,208,53,0,0,0,0,206,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,214,12,0,0,0,0,0,206,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,205,0,0,0,0,3,125,252,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,205,0,0,0,0,50,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,205,0,0,0,77,233,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,166,141,210,251,253,246,92,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,205,253,253,253,253,253,238,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,105,145,238,145,106,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,124,166,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,177,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,253,253,253,181,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,253,253,253,252,178,72,22,0,0,0,0,0,0,0,57,119,156,0,0,0,0,0,0,0,0,136,253,253,253,253,253,253,253,253,221,171,89,89,149,207,207,207,244,253,135,0,0,0,0,0,0,0,0,136,253,253,86,162,253,253,253,253,253,253,253,253,253,253,253,253,253,253,240,0,0,0,0,0,0,0,0,191,253,202,3,4,61,187,251,253,253,253,253,253,253,253,253,253,253,253,140,0,0,0,0,0,0,0,0,147,253,200,0,0,0,0,63,112,194,230,238,253,253,253,253,253,253,197,60,0,0,0,0,0,0,0,0,255,253,200,0,0,0,0,0,0,0,0,36,94,195,253,253,253,182,57,0,0,0,0,0,0,0,0,0,227,253,118,0,0,0,0,0,0,0,0,0,0,249,253,253,253,53,0,0,0,0,0,0,0,0,0,0,95,160,19,0,0,0,0,0,0,0,0,0,87,252,253,253,197,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,220,253,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,213,253,253,233,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,233,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,224,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,202,253,222,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,141,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,109,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,255,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,209,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,250,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,251,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,218,253,253,95,46,218,253,251,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,160,10,0,49,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,233,47,0,0,5,171,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,200,253,253,154,0,0,0,11,186,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,201,13,0,0,0,70,253,248,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,245,253,235,73,0,0,0,0,163,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,85,0,0,0,0,10,184,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,244,253,197,15,0,0,0,0,133,253,248,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,193,253,238,77,0,0,0,0,32,228,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,168,0,0,0,0,9,145,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,85,0,0,0,0,136,253,253,232,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,237,253,244,35,9,27,94,57,226,253,215,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,216,150,182,253,253,253,253,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,253,253,250,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,253,253,253,253,253,252,247,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,145,123,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,78,155,255,255,254,227,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,129,228,253,247,177,177,186,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,27,208,253,250,162,36,0,0,30,253,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,225,37,0,0,0,59,206,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,95,0,0,0,20,194,253,253,142,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,79,3,0,0,20,197,253,252,141,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,97,49,119,157,248,253,235,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,253,253,253,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,196,237,192,253,253,253,145,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,216,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,240,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,218,253,249,108,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,143,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,205,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,237,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,166,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,215,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,226,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,223,253,246,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,210,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,252,255,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,246,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,246,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,206,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,253,222,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,220,253,253,253,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,182,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,225,253,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,253,253,253,180,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,194,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,253,115,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,246,253,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,219,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,232,253,253,243,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,117,253,242,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,183,104,8,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,201,170,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,252,252,253,252,233,101,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,111,215,253,252,252,252,138,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,147,191,200,252,252,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,204,253,255,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,50,85,85,85,197,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,135,237,244,253,252,252,252,252,253,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,252,252,252,253,252,252,252,252,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,226,147,147,147,147,147,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,209,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,252,252,252,252,243,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,56,233,252,252,253,246,179,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,154,189,253,252,252,231,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,182,252,252,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,0,0,0,0,0,0,0,32,237,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,237,146,86,57,0,57,85,191,237,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,252,252,253,246,232,246,252,253,252,189,143,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,84,128,253,252,252,252,252,253,231,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,191,235,191,147,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,255,191,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,216,216,144,144,192,144,130,34,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,253,253,253,253,254,253,190,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,253,253,253,253,253,253,254,253,253,250,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,231,192,121,188,231,231,242,231,250,253,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,164,251,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,246,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,22,0,0,0,0,0,0,0,0,0,0,0,5,34,34,34,34,34,32,0,0,0,0,0,0,28,216,254,22,0,0,0,0,0,0,0,0,0,0,0,111,253,253,253,253,253,250,177,177,81,59,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,253,253,253,253,253,253,249,133,100,228,253,180,4,0,0,0,0,0,0,0,0,0,0,0,254,253,245,231,159,121,126,231,248,253,255,253,253,253,253,172,2,0,0,0,0,0,0,0,0,0,0,0,254,253,175,3,0,0,0,0,66,232,254,253,253,253,253,253,173,166,166,166,0,0,0,0,0,0,0,0,254,253,253,88,0,31,89,89,171,247,254,253,253,253,253,253,253,253,253,205,0,0,0,0,0,0,0,0,153,253,253,252,232,240,253,253,253,253,254,246,242,242,245,253,253,253,253,244,0,0,0,0,0,0,0,0,57,187,253,253,253,253,253,253,253,234,147,30,0,0,22,99,219,190,99,13,0,0,0,0,0,0,0,0,0,47,206,253,253,253,253,240,176,51,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,143,143,90,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,141,178,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,107,216,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,215,252,253,252,186,168,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,202,128,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,194,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,246,137,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,253,153,13,19,66,191,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,252,207,225,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,209,252,253,252,252,214,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,246,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,63,204,253,244,175,76,244,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,0,0,19,194,253,240,81,0,0,94,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,231,43,0,0,0,13,209,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,26,222,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,114,0,0,0,41,166,253,241,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,207,94,57,157,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,243,253,252,252,252,253,233,130,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,203,252,252,252,128,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,148,174,209,254,253,191,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,253,217,252,237,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,126,100,21,21,12,170,245,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,242,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,206,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,244,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,153,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,202,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,241,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,216,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,201,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,245,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,173,255,252,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,150,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,253,192,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,200,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,253,241,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,198,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,200,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,238,253,253,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,232,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,241,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,197,253,253,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,124,253,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,152,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,212,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,205,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,202,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,141,24,0,0,0,0,0,0,155,255,248,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,247,254,52,0,0,0,0,0,15,200,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,236,254,254,52,0,0,0,0,0,154,254,246,65,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,254,221,116,6,0,0,0,0,87,246,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,169,0,0,0,0,0,41,244,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,254,224,45,0,0,0,0,0,91,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,254,254,55,27,14,64,79,79,173,241,254,254,250,210,210,97,0,0,0,0,0,0,0,0,0,0,119,254,254,254,210,220,212,244,254,254,254,254,254,254,254,249,175,24,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,254,254,254,255,254,254,254,210,105,58,54,0,0,0,0,0,0,0,0,0,0,0,0,30,189,250,254,254,235,244,207,211,254,254,244,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,71,71,48,59,15,66,254,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,167,254,245,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,210,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,255,204,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,160,254,255,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,251,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,105,143,143,143,143,143,101,19,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,167,253,253,253,253,253,253,253,253,212,98,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,253,253,253,253,253,253,253,210,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,253,253,191,93,93,195,248,253,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,42,222,253,253,244,179,21,0,0,0,120,210,249,253,253,211,0,0,0,0,0,0,0,0,0,0,0,42,222,253,253,253,173,0,0,0,0,0,0,0,125,250,253,253,0,0,0,0,0,0,0,0,0,0,14,223,253,253,253,129,22,0,0,0,0,0,0,0,0,208,253,253,0,0,0,0,0,0,0,0,0,0,111,253,253,244,110,22,0,0,0,0,0,0,0,0,0,142,253,131,0,0,0,0,0,0,0,0,0,43,227,253,253,216,0,0,0,0,0,0,0,0,0,27,181,249,253,5,0,0,0,0,0,0,0,0,2,171,253,253,244,92,0,0,0,0,0,0,0,0,65,205,253,253,253,5,0,0,0,0,0,0,0,0,46,253,253,253,123,0,0,0,0,0,0,24,121,205,246,253,253,218,115,1,0,0,0,0,0,0,0,0,130,253,253,233,17,0,0,60,88,178,211,223,253,253,253,253,174,94,0,0,0,0,0,0,0,0,0,0,237,253,253,250,217,217,217,242,253,253,253,253,253,253,173,112,4,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,224,154,51,5,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,253,253,253,253,253,253,178,118,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,27,141,127,18,18,18,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,253,255,149,73,73,73,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,222,144,144,144,144,145,144,144,83,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,236,87,0,0,0,0,0,0,0,0,143,205,251,204,142,175,251,251,251,251,253,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,41,71,41,0,21,71,71,71,200,253,251,251,251,251,253,251,251,251,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,255,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,251,251,253,251,230,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,140,246,251,251,253,230,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,251,251,251,251,221,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,251,251,251,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,150,253,255,253,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,251,251,188,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,197,251,251,253,251,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,190,251,251,251,221,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,255,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,188,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,220,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,245,255,254,255,255,254,221,125,125,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,253,253,253,253,253,253,253,252,228,118,106,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,153,142,142,142,142,171,253,253,253,253,253,238,112,49,0,0,0,0,0,0,0,0,0,0,0,9,143,28,2,0,0,0,0,5,19,19,110,165,253,253,253,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,42,216,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,253,253,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,59,151,253,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,87,183,183,195,253,253,253,253,217,71,35,0,0,0,0,0,0,0,0,0,0,0,0,18,46,90,176,238,253,253,253,253,253,253,253,216,34,0,0,0,0,0,0,0,0,0,0,0,0,0,91,202,253,253,253,253,233,253,253,253,253,253,236,35,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,253,242,221,183,86,253,253,253,253,215,81,0,0,0,0,0,0,0,0,0,0,0,0,13,154,249,253,253,230,84,0,58,181,253,253,253,236,81,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,253,49,64,150,232,253,253,239,210,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,253,253,253,253,250,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,244,253,250,247,247,203,224,142,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,60,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,25,31,31,13,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,118,201,223,246,215,240,228,236,192,205,122,43,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,218,251,128,81,15,6,11,15,15,11,15,50,86,0,0,0,0,0,0,0,0,0,0,0,0,0,136,243,209,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,185,215,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,220,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,146,218,165,104,90,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,77,160,220,172,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,74,229,163,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,205,175,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,207,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,250,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,223,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,46,255,85,0,0,0,0,0,0,0,0,0,0,0,0,210,96,22,0,0,0,0,0,0,0,0,0,0,63,254,93,0,0,0,0,0,0,0,0,0,0,0,0,42,151,203,174,121,91,73,15,13,0,5,13,95,246,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,60,134,174,209,220,168,213,220,209,138,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,12,30,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,89,228,253,0,0,0,0,0,0,0,0,0,0,0,0,85,184,184,209,185,101,17,0,0,0,0,34,119,247,253,253,0,0,0,0,0,0,0,0,0,0,0,119,254,254,254,254,254,254,129,0,0,38,112,229,255,254,247,84,0,0,0,0,0,0,0,0,0,0,72,247,254,253,253,253,237,253,251,97,106,235,253,253,254,244,87,0,0,0,0,0,0,0,0,0,0,0,116,253,254,181,96,46,36,236,253,253,254,253,253,253,205,79,0,0,0,0,0,0,0,0,0,0,0,0,116,253,203,6,0,34,204,253,253,253,254,253,210,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,229,95,203,254,254,254,254,254,185,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,253,253,253,254,244,164,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,212,253,254,253,253,244,138,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,214,253,253,254,253,244,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,228,151,222,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,223,40,0,29,211,253,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,224,82,17,0,30,221,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,253,253,235,167,101,234,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,199,254,255,254,254,254,254,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,115,186,253,253,253,241,139,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,63,137,137,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,124,255,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,195,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,220,254,203,97,25,13,13,34,97,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,196,254,254,254,254,254,254,254,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,217,254,233,110,80,164,233,233,244,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,254,251,69,0,0,0,0,0,177,254,217,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,251,89,0,0,0,0,0,25,238,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,251,117,0,0,0,0,0,0,186,254,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,117,0,0,0,0,0,0,37,237,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,220,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,248,244,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,233,244,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,206,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,232,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,144,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,195,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,160,173,254,254,184,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,177,246,254,253,253,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,108,251,253,253,220,135,56,187,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,244,142,0,0,0,107,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,253,253,103,0,0,0,0,20,239,203,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,89,0,0,0,12,189,253,237,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,213,11,0,0,76,188,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,251,209,244,245,252,253,253,151,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,168,253,253,253,253,254,253,253,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,131,159,169,218,254,253,249,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,135,255,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,233,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,245,253,251,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,253,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,239,253,240,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,194,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,197,253,253,177,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,243,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,246,246,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/Tools/Performance/Comparer/Shared/Resources/validation.csv b/Tools/Performance/Comparer/Shared/Resources/validation.csv new file mode 100644 index 0000000000..e819868d0 --- /dev/null +++ b/Tools/Performance/Comparer/Shared/Resources/validation.csv @@ -0,0 +1,501 @@ +label,pixel0,pixel1,pixel2,pixel3,pixel4,pixel5,pixel6,pixel7,pixel8,pixel9,pixel10,pixel11,pixel12,pixel13,pixel14,pixel15,pixel16,pixel17,pixel18,pixel19,pixel20,pixel21,pixel22,pixel23,pixel24,pixel25,pixel26,pixel27,pixel28,pixel29,pixel30,pixel31,pixel32,pixel33,pixel34,pixel35,pixel36,pixel37,pixel38,pixel39,pixel40,pixel41,pixel42,pixel43,pixel44,pixel45,pixel46,pixel47,pixel48,pixel49,pixel50,pixel51,pixel52,pixel53,pixel54,pixel55,pixel56,pixel57,pixel58,pixel59,pixel60,pixel61,pixel62,pixel63,pixel64,pixel65,pixel66,pixel67,pixel68,pixel69,pixel70,pixel71,pixel72,pixel73,pixel74,pixel75,pixel76,pixel77,pixel78,pixel79,pixel80,pixel81,pixel82,pixel83,pixel84,pixel85,pixel86,pixel87,pixel88,pixel89,pixel90,pixel91,pixel92,pixel93,pixel94,pixel95,pixel96,pixel97,pixel98,pixel99,pixel100,pixel101,pixel102,pixel103,pixel104,pixel105,pixel106,pixel107,pixel108,pixel109,pixel110,pixel111,pixel112,pixel113,pixel114,pixel115,pixel116,pixel117,pixel118,pixel119,pixel120,pixel121,pixel122,pixel123,pixel124,pixel125,pixel126,pixel127,pixel128,pixel129,pixel130,pixel131,pixel132,pixel133,pixel134,pixel135,pixel136,pixel137,pixel138,pixel139,pixel140,pixel141,pixel142,pixel143,pixel144,pixel145,pixel146,pixel147,pixel148,pixel149,pixel150,pixel151,pixel152,pixel153,pixel154,pixel155,pixel156,pixel157,pixel158,pixel159,pixel160,pixel161,pixel162,pixel163,pixel164,pixel165,pixel166,pixel167,pixel168,pixel169,pixel170,pixel171,pixel172,pixel173,pixel174,pixel175,pixel176,pixel177,pixel178,pixel179,pixel180,pixel181,pixel182,pixel183,pixel184,pixel185,pixel186,pixel187,pixel188,pixel189,pixel190,pixel191,pixel192,pixel193,pixel194,pixel195,pixel196,pixel197,pixel198,pixel199,pixel200,pixel201,pixel202,pixel203,pixel204,pixel205,pixel206,pixel207,pixel208,pixel209,pixel210,pixel211,pixel212,pixel213,pixel214,pixel215,pixel216,pixel217,pixel218,pixel219,pixel220,pixel221,pixel222,pixel223,pixel224,pixel225,pixel226,pixel227,pixel228,pixel229,pixel230,pixel231,pixel232,pixel233,pixel234,pixel235,pixel236,pixel237,pixel238,pixel239,pixel240,pixel241,pixel242,pixel243,pixel244,pixel245,pixel246,pixel247,pixel248,pixel249,pixel250,pixel251,pixel252,pixel253,pixel254,pixel255,pixel256,pixel257,pixel258,pixel259,pixel260,pixel261,pixel262,pixel263,pixel264,pixel265,pixel266,pixel267,pixel268,pixel269,pixel270,pixel271,pixel272,pixel273,pixel274,pixel275,pixel276,pixel277,pixel278,pixel279,pixel280,pixel281,pixel282,pixel283,pixel284,pixel285,pixel286,pixel287,pixel288,pixel289,pixel290,pixel291,pixel292,pixel293,pixel294,pixel295,pixel296,pixel297,pixel298,pixel299,pixel300,pixel301,pixel302,pixel303,pixel304,pixel305,pixel306,pixel307,pixel308,pixel309,pixel310,pixel311,pixel312,pixel313,pixel314,pixel315,pixel316,pixel317,pixel318,pixel319,pixel320,pixel321,pixel322,pixel323,pixel324,pixel325,pixel326,pixel327,pixel328,pixel329,pixel330,pixel331,pixel332,pixel333,pixel334,pixel335,pixel336,pixel337,pixel338,pixel339,pixel340,pixel341,pixel342,pixel343,pixel344,pixel345,pixel346,pixel347,pixel348,pixel349,pixel350,pixel351,pixel352,pixel353,pixel354,pixel355,pixel356,pixel357,pixel358,pixel359,pixel360,pixel361,pixel362,pixel363,pixel364,pixel365,pixel366,pixel367,pixel368,pixel369,pixel370,pixel371,pixel372,pixel373,pixel374,pixel375,pixel376,pixel377,pixel378,pixel379,pixel380,pixel381,pixel382,pixel383,pixel384,pixel385,pixel386,pixel387,pixel388,pixel389,pixel390,pixel391,pixel392,pixel393,pixel394,pixel395,pixel396,pixel397,pixel398,pixel399,pixel400,pixel401,pixel402,pixel403,pixel404,pixel405,pixel406,pixel407,pixel408,pixel409,pixel410,pixel411,pixel412,pixel413,pixel414,pixel415,pixel416,pixel417,pixel418,pixel419,pixel420,pixel421,pixel422,pixel423,pixel424,pixel425,pixel426,pixel427,pixel428,pixel429,pixel430,pixel431,pixel432,pixel433,pixel434,pixel435,pixel436,pixel437,pixel438,pixel439,pixel440,pixel441,pixel442,pixel443,pixel444,pixel445,pixel446,pixel447,pixel448,pixel449,pixel450,pixel451,pixel452,pixel453,pixel454,pixel455,pixel456,pixel457,pixel458,pixel459,pixel460,pixel461,pixel462,pixel463,pixel464,pixel465,pixel466,pixel467,pixel468,pixel469,pixel470,pixel471,pixel472,pixel473,pixel474,pixel475,pixel476,pixel477,pixel478,pixel479,pixel480,pixel481,pixel482,pixel483,pixel484,pixel485,pixel486,pixel487,pixel488,pixel489,pixel490,pixel491,pixel492,pixel493,pixel494,pixel495,pixel496,pixel497,pixel498,pixel499,pixel500,pixel501,pixel502,pixel503,pixel504,pixel505,pixel506,pixel507,pixel508,pixel509,pixel510,pixel511,pixel512,pixel513,pixel514,pixel515,pixel516,pixel517,pixel518,pixel519,pixel520,pixel521,pixel522,pixel523,pixel524,pixel525,pixel526,pixel527,pixel528,pixel529,pixel530,pixel531,pixel532,pixel533,pixel534,pixel535,pixel536,pixel537,pixel538,pixel539,pixel540,pixel541,pixel542,pixel543,pixel544,pixel545,pixel546,pixel547,pixel548,pixel549,pixel550,pixel551,pixel552,pixel553,pixel554,pixel555,pixel556,pixel557,pixel558,pixel559,pixel560,pixel561,pixel562,pixel563,pixel564,pixel565,pixel566,pixel567,pixel568,pixel569,pixel570,pixel571,pixel572,pixel573,pixel574,pixel575,pixel576,pixel577,pixel578,pixel579,pixel580,pixel581,pixel582,pixel583,pixel584,pixel585,pixel586,pixel587,pixel588,pixel589,pixel590,pixel591,pixel592,pixel593,pixel594,pixel595,pixel596,pixel597,pixel598,pixel599,pixel600,pixel601,pixel602,pixel603,pixel604,pixel605,pixel606,pixel607,pixel608,pixel609,pixel610,pixel611,pixel612,pixel613,pixel614,pixel615,pixel616,pixel617,pixel618,pixel619,pixel620,pixel621,pixel622,pixel623,pixel624,pixel625,pixel626,pixel627,pixel628,pixel629,pixel630,pixel631,pixel632,pixel633,pixel634,pixel635,pixel636,pixel637,pixel638,pixel639,pixel640,pixel641,pixel642,pixel643,pixel644,pixel645,pixel646,pixel647,pixel648,pixel649,pixel650,pixel651,pixel652,pixel653,pixel654,pixel655,pixel656,pixel657,pixel658,pixel659,pixel660,pixel661,pixel662,pixel663,pixel664,pixel665,pixel666,pixel667,pixel668,pixel669,pixel670,pixel671,pixel672,pixel673,pixel674,pixel675,pixel676,pixel677,pixel678,pixel679,pixel680,pixel681,pixel682,pixel683,pixel684,pixel685,pixel686,pixel687,pixel688,pixel689,pixel690,pixel691,pixel692,pixel693,pixel694,pixel695,pixel696,pixel697,pixel698,pixel699,pixel700,pixel701,pixel702,pixel703,pixel704,pixel705,pixel706,pixel707,pixel708,pixel709,pixel710,pixel711,pixel712,pixel713,pixel714,pixel715,pixel716,pixel717,pixel718,pixel719,pixel720,pixel721,pixel722,pixel723,pixel724,pixel725,pixel726,pixel727,pixel728,pixel729,pixel730,pixel731,pixel732,pixel733,pixel734,pixel735,pixel736,pixel737,pixel738,pixel739,pixel740,pixel741,pixel742,pixel743,pixel744,pixel745,pixel746,pixel747,pixel748,pixel749,pixel750,pixel751,pixel752,pixel753,pixel754,pixel755,pixel756,pixel757,pixel758,pixel759,pixel760,pixel761,pixel762,pixel763,pixel764,pixel765,pixel766,pixel767,pixel768,pixel769,pixel770,pixel771,pixel772,pixel773,pixel774,pixel775,pixel776,pixel777,pixel778,pixel779,pixel780,pixel781,pixel782,pixel783 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,180,255,254,224,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,233,250,180,120,157,211,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,250,228,44,0,98,110,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,249,54,34,177,229,254,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,159,254,115,102,239,240,91,39,83,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,189,254,231,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,229,254,254,222,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,198,254,217,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,102,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,250,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,178,49,234,215,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,219,186,20,0,89,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,231,16,0,0,75,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,221,80,0,0,0,75,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,221,187,0,0,0,0,98,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,105,0,0,0,0,137,252,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,87,0,0,4,130,249,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,240,21,0,53,188,251,150,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,240,127,195,243,238,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,236,254,246,161,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,62,101,148,151,236,237,236,163,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,108,80,219,232,253,253,253,253,253,235,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,253,253,215,197,122,122,59,35,23,216,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,154,136,52,6,0,0,0,0,0,39,249,244,22,0,0,0,0,14,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,191,10,23,69,124,201,221,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,12,172,253,238,213,245,253,253,233,115,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,229,254,253,248,244,199,144,70,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,254,144,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,200,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,232,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,246,235,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,233,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,229,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,121,191,185,198,121,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,17,0,0,96,242,253,253,255,253,253,249,241,142,34,0,0,0,0,0,0,0,0,0,0,0,0,97,237,232,48,49,245,253,253,253,255,213,244,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,17,189,253,117,188,253,253,242,39,40,23,36,108,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,70,243,253,253,253,246,106,0,0,0,0,17,212,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,172,199,228,108,0,0,0,0,0,0,201,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,56,237,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,158,254,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,135,241,241,247,241,242,241,252,253,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,253,253,254,253,253,253,253,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,245,253,240,173,173,215,254,253,253,253,253,217,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,211,45,0,4,165,254,253,253,253,253,253,224,25,0,0,0,0,0,0,0,0,0,0,0,0,70,243,253,199,0,6,65,253,254,253,233,199,214,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,80,247,253,208,41,133,253,253,235,156,50,0,21,178,213,190,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,252,226,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,253,253,245,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,240,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,240,253,253,232,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,255,253,253,174,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,242,254,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,156,239,253,254,191,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,166,253,253,253,166,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,239,253,253,162,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,242,253,253,166,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,234,44,0,0,0,9,34,34,34,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,55,0,21,67,178,197,253,253,253,193,44,0,0,0,0,0,0,0,0,0,0,0,0,0,83,252,253,219,13,81,223,253,254,253,253,253,253,253,179,39,0,0,0,0,0,0,0,0,0,0,0,0,206,253,249,103,16,206,253,253,252,231,231,233,253,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,47,232,253,132,77,0,0,8,112,242,253,209,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,155,253,105,0,0,0,0,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,0,205,253,249,107,1,13,22,3,0,0,0,21,146,249,248,151,0,0,0,0,0,0,0,0,0,0,0,0,83,252,253,253,163,88,45,45,45,122,155,250,253,219,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,253,253,253,254,253,223,176,104,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,181,253,253,253,253,254,176,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,255,180,136,136,136,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,253,253,253,253,197,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,209,253,253,253,253,253,253,253,253,230,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,182,182,182,182,92,223,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,230,253,253,177,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,117,246,253,253,181,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,129,142,152,253,253,253,253,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,253,253,154,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,194,223,253,253,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,176,225,253,253,253,228,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,69,232,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,218,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,165,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,238,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,241,253,253,125,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,246,253,253,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,255,255,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,255,141,86,86,86,86,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,141,29,0,0,0,0,0,0,29,198,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,29,0,0,0,0,0,0,0,0,0,86,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,255,255,198,170,141,86,226,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,198,226,170,114,114,86,114,170,255,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,141,255,170,255,255,226,86,0,0,0,0,0,0,0,0,0,0,114,226,57,0,0,0,0,0,0,0,170,255,86,0,0,86,198,255,226,57,0,0,0,0,0,0,0,0,226,114,0,0,0,0,0,0,29,198,226,86,0,0,0,0,0,57,198,226,0,0,0,0,0,0,0,0,255,141,0,0,0,0,86,170,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,198,198,198,255,255,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,198,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,185,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,220,0,0,0,0,0,0,1,9,131,172,172,172,172,72,0,0,0,0,0,0,0,0,0,0,254,253,253,220,0,0,0,0,0,0,73,253,253,253,253,253,253,162,70,0,0,0,0,0,0,0,0,0,132,253,253,223,13,0,0,0,0,78,232,253,253,253,253,253,253,253,234,67,0,0,0,0,0,0,0,0,50,220,253,253,129,0,0,0,72,249,253,253,253,201,156,253,253,253,253,89,0,0,0,0,0,0,0,0,0,154,253,253,230,59,0,0,130,252,253,253,100,27,8,154,253,253,253,89,0,0,0,0,0,0,0,0,0,17,253,253,253,203,0,0,0,246,253,253,162,131,131,194,253,253,253,89,0,0,0,0,0,0,0,0,0,13,220,253,253,247,222,179,58,248,253,253,253,253,253,253,253,253,236,69,0,0,0,0,0,0,0,0,0,0,45,220,253,253,253,253,253,253,253,253,253,253,253,253,253,166,75,0,0,0,0,0,0,0,0,0,0,0,0,33,179,241,253,253,253,253,253,253,253,253,253,214,179,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,253,253,130,89,89,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,167,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,240,254,116,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,244,254,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,216,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,168,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,171,5,0,0,0,0,0,0,0,43,60,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,143,0,0,0,0,0,15,87,184,235,254,207,184,170,49,0,0,0,0,0,0,0,0,0,0,0,0,249,163,4,0,0,0,15,173,255,254,254,254,254,254,255,249,170,22,0,0,0,0,0,0,0,0,0,0,249,254,39,0,0,0,166,254,224,118,85,85,85,85,165,238,254,117,0,0,0,0,0,0,0,0,0,0,232,254,217,17,0,0,210,208,21,0,0,0,0,0,21,164,253,102,0,0,0,0,0,0,0,0,0,0,107,253,254,39,0,0,210,182,0,0,0,0,0,4,167,254,228,0,0,0,0,0,0,0,0,0,0,0,0,165,254,214,104,10,213,225,35,0,0,4,10,51,255,243,45,0,0,0,0,0,0,0,0,0,0,0,0,49,111,240,254,198,254,254,169,144,144,164,198,254,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,164,248,248,253,254,254,254,254,253,231,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,124,124,191,124,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,234,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,204,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,220,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,244,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,212,0,0,0,0,0,83,140,171,235,150,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,213,0,0,0,29,196,255,250,249,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,212,0,0,26,220,253,179,45,31,73,113,232,236,17,0,0,0,0,0,0,0,0,0,0,0,0,25,253,212,0,0,101,253,184,0,0,0,0,0,131,253,24,0,0,0,0,0,0,0,0,0,0,0,0,25,253,230,19,0,211,253,53,0,0,0,0,0,131,253,24,0,0,0,0,0,0,0,0,0,0,0,0,13,212,253,146,0,229,253,8,0,0,0,0,0,197,193,5,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,245,123,181,253,77,0,0,0,0,77,246,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,225,253,253,253,127,38,41,58,95,221,165,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,150,247,253,253,245,246,253,253,160,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,219,253,254,248,145,61,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,224,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,241,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,137,254,254,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,134,254,254,247,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,133,254,254,241,57,109,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,71,254,254,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,254,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,204,254,205,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,254,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,137,254,227,32,0,0,0,0,31,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,249,88,0,0,2,53,197,253,164,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,236,253,148,0,0,1,54,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,189,254,141,0,0,0,120,254,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,225,31,0,0,68,253,254,254,254,254,240,26,0,0,0,0,0,0,0,0,0,0,0,0,0,11,216,254,106,0,0,33,234,254,254,254,254,221,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,234,254,128,71,74,184,254,254,254,254,186,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,249,254,254,254,254,254,251,221,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,151,151,180,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,2,0,0,0,0,0,0,0,0,168,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,19,161,229,19,0,0,0,0,0,0,0,7,169,240,70,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,165,2,0,0,0,0,0,0,10,206,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,237,18,0,0,0,0,0,0,0,97,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,62,254,255,136,0,0,0,0,0,0,0,61,255,254,152,0,0,0,0,0,0,0,0,0,0,0,0,74,235,253,189,21,0,0,0,0,0,0,41,229,254,221,12,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,99,0,0,0,0,0,0,0,69,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,124,247,253,253,189,51,0,0,0,0,34,174,237,253,184,3,0,0,0,0,0,0,0,0,0,0,0,46,244,253,253,253,254,241,98,113,157,196,244,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,134,254,213,15,76,209,254,254,254,254,255,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,12,0,0,9,84,203,218,135,136,235,253,227,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,241,228,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,246,253,189,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,179,254,200,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,80,250,253,196,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,223,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,73,156,177,201,125,63,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,248,207,236,254,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,249,205,48,0,19,38,223,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,90,0,0,0,0,200,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,239,207,4,0,0,0,53,241,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,192,0,0,0,0,46,206,201,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,168,250,89,0,0,0,36,190,254,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,228,228,76,31,125,234,254,203,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,213,254,254,254,255,254,241,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,160,130,139,235,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,235,52,0,0,0,22,212,231,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,254,131,0,0,0,0,0,32,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,202,9,0,0,0,0,0,2,179,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,95,0,0,0,0,0,0,0,65,196,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,57,0,0,0,0,0,0,0,39,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,57,0,0,0,0,0,0,0,124,239,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,143,0,0,0,0,0,0,46,250,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,228,252,97,15,0,0,25,121,252,228,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,230,254,230,161,185,244,254,196,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,132,216,254,247,139,32,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,255,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,241,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,250,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,161,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,254,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,237,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,206,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,209,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,218,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,173,254,254,230,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,253,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,191,137,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,71,254,209,78,5,3,201,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,164,253,247,60,0,0,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,165,253,253,48,0,0,0,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,166,253,216,84,0,0,0,0,0,142,252,250,65,0,0,0,0,0,0,0,0,0,0,0,0,0,10,165,253,246,98,0,0,0,0,0,0,0,184,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,250,98,0,0,0,0,0,0,0,0,232,253,142,0,0,0,0,0,0,0,0,0,0,0,0,117,242,253,98,0,0,0,0,0,0,0,0,0,232,253,66,0,0,0,0,0,0,0,0,0,0,0,72,250,247,96,0,0,0,0,0,0,0,0,0,65,245,229,29,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,0,0,0,0,0,0,15,213,253,209,0,0,0,0,0,0,0,0,0,0,0,27,227,253,107,0,0,0,0,0,0,0,0,0,100,253,205,79,0,0,0,0,0,0,0,0,0,0,0,67,253,232,4,0,0,0,0,0,0,0,0,80,250,253,123,0,0,0,0,0,0,0,0,0,0,0,0,91,253,207,0,0,0,0,0,0,0,0,66,212,253,171,8,0,0,0,0,0,0,0,0,0,0,0,0,177,253,121,0,0,0,0,0,0,0,62,202,253,234,36,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,175,4,0,0,0,0,10,137,247,253,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,165,10,0,8,79,241,255,242,165,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,250,253,202,188,199,253,253,210,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,167,205,200,124,33,33,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,121,240,253,218,121,121,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,107,184,240,253,252,252,252,252,252,252,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,122,230,252,252,252,253,252,252,252,252,252,252,239,56,0,0,0,0,0,0,0,0,0,0,77,129,213,244,252,252,252,252,252,253,252,252,209,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,240,252,252,252,252,252,252,213,185,53,53,53,89,252,252,252,120,0,0,0,0,0,0,0,0,0,0,0,240,232,198,93,164,108,66,28,0,0,0,0,81,252,252,222,24,0,0,0,0,0,0,0,0,0,0,0,76,50,0,0,0,0,0,0,0,0,0,0,171,252,243,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,238,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,70,241,248,133,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,253,209,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,246,253,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,252,209,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,168,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,208,252,241,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,166,252,204,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,166,243,191,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,168,231,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,172,241,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,204,255,201,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,34,155,239,254,253,254,238,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,254,253,253,254,253,254,254,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,177,220,254,254,254,226,103,88,134,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,235,253,253,254,220,113,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,136,252,254,253,241,200,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,254,237,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,169,252,253,253,185,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,254,185,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,238,253,253,184,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,253,253,145,50,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,254,254,254,218,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,254,253,253,253,253,254,246,213,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,254,253,190,183,183,237,253,253,234,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,187,3,0,0,60,192,254,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,190,254,232,18,0,0,0,31,234,253,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,254,146,134,80,112,197,254,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,249,254,254,254,254,254,225,163,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,226,253,216,193,113,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,49,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,183,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,201,253,254,219,176,73,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,106,214,253,253,253,219,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,105,217,253,253,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,126,253,253,246,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,185,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,48,223,253,245,32,0,0,0,0,0,0,0,0,0,0,2,37,32,0,0,11,7,0,0,0,37,37,126,253,253,253,180,37,37,37,0,0,0,0,0,0,0,0,174,253,241,169,169,194,185,169,169,169,254,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,138,253,253,253,253,253,253,253,253,253,254,253,253,253,253,253,253,253,253,195,0,0,0,0,0,0,0,0,3,60,60,83,180,146,60,60,60,60,60,60,60,60,60,60,60,60,60,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,175,253,180,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,191,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,171,252,252,189,191,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,253,252,241,77,15,222,227,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,191,252,253,210,71,0,63,237,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,253,210,31,0,63,237,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,145,0,0,84,255,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,233,252,241,179,20,0,0,42,253,252,200,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,215,0,0,0,0,125,253,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,253,252,215,0,0,0,0,0,253,252,215,0,0,0,0,0,0,0,0,0,63,0,0,0,0,156,253,253,255,253,72,0,0,0,37,253,255,98,0,0,0,0,0,0,0,0,0,0,20,0,0,1,73,207,252,252,222,138,10,0,0,21,181,252,222,128,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,252,252,144,0,0,0,0,31,211,252,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,252,168,62,0,0,0,63,175,252,168,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,108,0,0,16,109,171,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,252,252,252,232,218,217,222,252,253,252,179,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,252,252,253,252,252,252,217,215,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,169,252,252,252,253,252,148,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,191,255,253,253,253,179,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,253,252,252,252,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,168,168,93,171,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,252,252,223,172,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,253,252,231,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,239,244,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,240,196,96,38,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,43,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,206,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,244,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,246,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,51,234,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,66,29,29,92,216,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,252,252,252,253,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,252,252,253,252,186,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,252,252,241,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,216,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,234,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,244,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,201,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,231,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,84,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,190,10,0,0,0,0,0,0,0,22,159,250,57,0,0,0,0,0,0,0,0,0,0,0,0,70,250,253,55,0,0,0,0,0,0,0,74,227,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,100,253,232,33,0,0,0,0,0,0,127,252,253,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,206,253,188,0,0,0,0,0,0,74,252,253,249,249,248,52,0,0,0,0,0,0,0,0,0,0,0,0,210,253,88,0,0,0,0,0,8,194,253,190,128,235,242,0,0,0,0,0,0,0,0,0,0,0,0,0,210,244,50,0,0,0,0,0,121,253,253,67,235,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,215,35,1,0,0,5,197,253,253,244,253,250,30,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,163,155,155,198,255,253,253,250,136,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,216,253,253,253,253,253,253,254,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,143,143,244,253,253,253,240,114,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,251,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,105,247,246,171,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,254,220,10,99,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,206,254,163,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,232,249,139,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,244,249,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,110,243,239,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,243,236,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,243,237,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,254,135,0,38,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,173,254,184,87,146,247,235,173,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,133,254,254,232,254,254,209,217,246,247,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,254,247,157,73,6,10,116,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,214,254,228,120,22,0,0,0,27,203,222,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,194,34,0,0,0,0,75,196,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,249,246,61,0,0,0,95,194,246,217,68,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,159,88,158,186,223,251,243,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,253,252,254,254,218,126,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,200,222,170,136,24,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,118,244,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,229,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,169,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,239,253,253,121,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,186,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,253,253,160,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,204,253,253,210,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,253,253,212,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,253,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,251,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,229,253,253,224,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,201,253,253,225,0,0,0,0,0,0,0,0,0,0,16,7,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,99,0,0,0,0,0,0,0,0,0,0,62,26,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,242,253,253,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,254,175,106,105,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,246,225,253,253,227,211,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,89,221,210,48,141,241,253,254,232,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,204,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,255,196,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,229,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,251,253,217,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,250,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,137,0,0,0,0,0,0,0,0,0,93,49,0,0,0,0,0,0,0,0,0,0,0,0,199,245,253,173,7,0,32,75,172,224,224,224,224,224,246,192,0,0,0,0,0,0,0,0,0,0,20,102,245,253,173,130,179,179,211,253,253,253,253,249,223,82,74,31,0,0,0,0,0,0,0,0,0,112,212,253,253,253,253,253,253,253,254,253,253,253,133,105,0,0,0,0,0,0,0,0,0,0,0,0,100,251,253,253,253,253,253,253,253,253,164,40,14,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,253,253,253,229,208,94,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,155,174,209,104,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,93,93,93,93,93,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,254,254,254,254,254,254,254,136,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,253,253,219,207,215,253,253,254,199,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,240,69,0,9,54,179,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,19,0,0,0,25,254,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,254,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,253,254,173,9,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,189,253,253,228,40,0,0,0,85,134,167,0,0,0,0,0,0,0,0,0,0,0,0,0,38,112,229,254,254,254,228,45,70,145,161,221,254,155,25,0,0,0,0,0,0,0,0,0,43,89,138,198,243,253,253,254,253,253,245,245,253,253,253,182,64,4,0,0,0,0,0,0,0,0,0,174,249,253,253,254,253,253,253,254,253,253,253,230,230,145,46,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,254,253,253,253,195,160,152,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,93,93,93,60,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,222,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,231,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,252,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,252,252,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,240,252,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,241,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,164,89,0,0,241,253,223,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,251,102,0,241,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,120,0,241,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,243,31,0,241,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,228,253,249,174,175,249,253,228,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,253,254,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,253,253,254,253,253,206,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,120,120,120,120,183,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,255,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,242,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,241,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,140,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,43,148,252,252,254,182,148,112,43,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,252,250,250,250,250,252,250,250,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,230,252,250,250,250,250,252,250,250,250,250,231,84,0,0,0,0,0,0,0,0,0,0,0,0,0,85,223,250,252,250,250,250,250,252,250,250,250,250,252,223,84,0,0,0,0,0,0,0,0,0,0,36,210,230,250,250,252,250,250,250,74,252,250,250,250,250,252,250,230,70,0,0,0,0,0,0,0,0,0,43,252,252,252,252,254,252,146,183,76,78,238,210,70,177,255,252,252,83,0,0,0,0,0,0,0,0,0,43,250,250,250,250,252,250,250,250,179,238,111,0,0,0,182,250,250,83,0,0,0,0,0,0,0,0,0,148,250,250,250,250,252,250,187,125,20,105,0,0,0,0,43,250,250,167,21,0,0,0,0,0,0,0,0,252,250,250,250,250,252,250,125,0,0,0,0,0,0,0,43,250,250,137,14,0,0,0,0,0,0,0,0,76,250,250,250,250,252,250,125,0,0,0,0,0,0,0,43,250,250,223,34,0,0,0,0,0,0,0,0,43,252,252,252,252,255,238,105,0,0,0,0,0,0,0,43,252,252,252,41,0,0,0,0,0,0,0,0,43,250,250,250,250,238,111,0,0,0,0,0,0,0,0,43,250,250,250,41,0,0,0,0,0,0,0,0,43,250,250,250,250,210,0,0,0,0,0,0,0,86,127,148,250,250,165,20,0,0,0,0,0,0,0,0,43,250,250,250,250,210,0,0,0,0,0,0,0,168,250,252,250,250,83,0,0,0,0,0,0,0,0,0,43,250,250,250,250,210,0,0,0,0,0,0,107,237,250,252,250,144,14,0,0,0,0,0,0,0,0,0,36,224,252,252,252,219,43,21,29,7,36,85,231,98,219,212,139,0,0,0,0,0,0,0,0,0,0,0,0,56,208,250,250,252,250,166,196,111,210,56,83,168,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,250,250,252,250,250,250,250,210,0,0,84,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,195,250,252,250,250,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,41,252,250,250,250,74,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,246,253,241,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,208,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,191,253,253,240,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,239,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,242,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,215,253,253,179,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,186,253,253,240,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,182,253,253,184,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,185,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,245,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,177,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,173,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,191,128,128,128,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,227,155,225,254,180,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,133,247,253,253,253,253,253,246,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,236,253,253,253,212,89,112,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,157,253,253,253,252,139,18,0,35,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,213,253,253,253,236,129,0,0,0,65,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,253,253,253,131,0,0,0,10,188,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,168,107,248,0,0,0,0,114,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,14,0,0,0,79,249,253,239,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,212,253,240,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,177,253,253,146,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,60,49,2,145,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,118,214,251,253,246,215,253,253,216,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,194,253,253,253,253,253,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,225,253,180,57,33,168,253,253,253,253,207,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,228,253,200,7,27,186,253,253,252,192,253,253,207,24,0,0,0,0,0,0,0,0,0,0,0,0,22,208,253,168,14,44,214,253,253,213,78,5,204,253,254,166,0,0,0,0,0,0,0,0,0,0,0,0,155,253,205,9,92,247,253,253,220,28,0,0,35,224,253,233,90,0,0,0,0,0,0,0,0,0,0,0,155,253,226,192,251,253,253,140,6,0,0,0,0,101,248,253,235,110,2,0,0,0,0,0,0,0,0,0,154,253,253,253,253,253,109,3,0,0,0,0,0,0,185,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,144,143,235,253,253,253,147,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,133,199,252,253,252,252,218,186,209,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,230,252,252,209,139,72,62,21,0,16,192,99,0,0,0,0,0,0,0,0,0,0,0,0,0,31,204,250,251,230,67,6,0,0,0,0,0,0,10,47,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,250,252,183,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,226,38,0,0,0,0,0,0,144,231,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,231,53,0,0,0,0,26,122,236,229,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,249,252,230,87,78,78,126,225,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,252,252,252,252,253,252,118,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,111,111,111,121,239,255,216,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,245,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,241,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,248,252,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,198,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,155,248,252,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,245,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,248,252,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,191,128,64,128,128,191,191,191,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,191,128,64,64,128,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,113,113,113,114,113,113,128,253,255,253,253,159,50,0,0,0,0,0,0,0,0,0,0,0,0,48,226,234,252,252,252,253,252,252,252,252,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,54,227,253,252,252,252,252,253,252,252,252,252,253,252,252,230,25,0,0,0,0,0,0,0,0,0,0,7,178,252,253,252,252,233,223,225,223,230,249,239,253,252,252,129,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,204,112,37,0,0,0,25,115,203,253,252,220,37,0,0,0,0,0,0,0,0,0,0,86,253,253,253,255,168,0,0,0,0,0,0,92,253,255,215,31,0,0,0,0,0,0,0,0,0,0,38,219,252,252,252,168,33,0,0,0,0,0,19,196,252,253,121,0,0,0,0,0,0,0,0,0,0,0,222,252,252,245,195,0,19,166,197,197,198,197,209,252,252,253,59,0,0,0,0,0,0,0,0,0,0,0,237,242,223,121,0,92,196,252,252,252,253,252,252,252,252,253,224,169,56,0,0,0,0,0,0,0,0,0,50,74,0,0,0,253,252,252,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,178,140,255,253,253,253,253,255,253,228,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,223,58,9,48,253,252,252,242,167,106,152,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,37,0,54,227,253,252,239,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,195,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,120,128,161,254,220,245,161,104,144,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,245,253,253,253,254,253,253,253,245,253,234,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,240,230,230,230,230,249,253,254,253,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,136,31,0,0,0,0,57,69,152,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,47,130,197,254,253,215,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,182,237,253,253,253,254,215,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,253,253,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,159,229,254,254,254,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,40,115,182,254,253,243,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,243,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,253,185,9,0,0,0,0,0,0,0,0,0,0,0,0,0,51,70,7,0,0,0,0,0,0,0,17,174,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,30,222,254,23,0,0,0,0,0,0,0,0,174,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,124,253,254,31,0,0,0,0,0,0,0,0,40,253,254,206,0,0,0,0,0,0,0,0,0,0,0,0,140,253,254,198,17,0,0,0,0,0,0,0,24,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,211,128,51,0,0,0,0,13,187,254,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,9,107,249,253,253,248,230,188,138,164,235,253,253,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,122,137,245,253,253,253,254,253,251,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,86,160,160,186,202,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,121,121,121,121,121,121,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,128,240,240,252,253,252,252,252,252,249,219,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,252,252,252,252,253,252,252,252,252,252,252,236,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,252,252,215,172,172,102,172,231,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,185,185,115,28,0,0,0,0,39,154,252,222,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,14,14,14,177,252,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,133,134,133,240,252,252,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,121,121,197,253,255,202,178,253,253,253,253,240,56,0,0,0,0,0,0,0,0,0,0,0,97,219,240,249,252,252,183,13,13,109,231,252,252,252,252,225,0,0,0,0,0,0,0,0,0,0,0,145,249,252,252,252,252,119,105,94,157,251,252,252,252,252,252,225,0,0,0,0,0,0,0,0,0,0,39,244,252,252,252,224,210,231,252,252,253,252,252,226,172,102,227,248,90,0,0,0,0,0,0,0,0,0,121,252,252,252,252,252,252,252,252,252,253,252,192,57,0,0,173,252,106,0,0,0,0,0,0,0,0,0,219,252,252,252,252,252,252,252,249,198,129,72,7,0,0,0,173,246,84,0,0,0,0,0,0,0,0,0,232,252,252,252,252,243,212,128,75,0,0,0,0,0,0,0,103,225,0,0,0,0,0,0,0,0,0,0,44,93,93,93,93,73,0,0,0,0,0,0,0,0,0,6,181,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,248,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,144,144,221,254,148,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,234,253,254,253,253,253,237,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,154,154,154,223,253,253,253,200,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,164,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,251,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,12,118,241,253,253,167,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,113,155,198,254,253,253,253,152,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,253,253,255,253,253,253,186,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,242,253,253,253,254,253,253,253,253,203,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,221,187,111,0,0,92,249,255,254,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,230,253,250,158,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,9,23,23,5,0,0,0,0,0,0,0,0,3,192,253,253,124,0,0,0,0,0,0,0,0,0,0,68,200,253,253,185,161,46,0,0,0,0,0,0,0,89,253,253,176,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,250,136,0,0,0,0,0,0,20,194,253,253,137,0,0,0,0,0,0,0,0,0,0,172,253,253,253,215,84,0,0,0,0,3,12,70,199,253,253,251,63,0,0,0,0,0,0,0,0,0,0,26,208,253,253,253,206,135,127,59,155,181,253,253,253,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,26,178,253,253,253,253,253,253,254,253,253,253,253,226,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,143,244,253,253,253,254,253,253,195,71,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,255,253,255,253,86,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,253,251,253,251,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,255,253,254,253,254,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,253,251,253,251,139,251,253,251,169,56,0,0,0,0,0,0,0,0,0,0,0,0,29,197,255,253,169,225,226,168,0,0,0,114,254,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,197,251,253,138,0,56,56,0,0,0,0,0,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,255,253,226,56,0,0,0,0,0,0,0,0,85,253,254,253,114,0,0,0,0,0,0,0,0,0,0,114,253,251,56,0,0,0,0,0,0,0,0,0,28,196,253,251,0,0,0,0,0,0,0,0,0,0,86,253,254,253,0,0,0,0,0,0,0,0,0,0,29,197,254,84,0,0,0,0,0,0,0,0,0,0,85,251,253,138,0,0,0,0,0,0,0,0,0,0,85,251,253,83,0,0,0,0,0,0,0,0,0,0,255,253,254,84,0,0,0,0,0,0,0,0,0,0,254,253,254,84,0,0,0,0,0,0,0,0,0,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,253,251,196,28,0,0,0,0,0,0,0,0,0,0,86,253,254,84,0,0,0,0,0,0,0,0,0,57,254,253,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,83,0,0,0,0,0,0,0,0,57,224,253,251,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,0,0,0,0,0,0,0,57,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,114,0,0,0,0,0,169,224,253,251,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,85,85,141,253,254,253,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,253,251,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,254,253,254,253,169,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,253,138,84,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,144,172,253,253,229,143,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,148,243,253,252,252,252,252,252,249,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,252,252,253,252,252,252,252,252,252,245,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,247,252,252,243,226,44,10,10,169,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,5,128,234,252,252,211,64,39,0,0,29,184,252,252,199,23,0,0,0,0,0,0,0,0,0,0,0,79,203,252,252,252,237,43,0,0,0,35,174,252,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,252,247,61,0,0,0,3,202,252,252,252,184,9,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,252,154,0,0,0,21,180,252,252,243,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,252,55,0,0,34,148,252,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,227,0,34,220,253,252,252,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,246,253,186,225,253,255,245,129,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,252,252,252,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,252,252,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,166,250,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,252,252,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,131,250,252,252,252,252,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,252,252,252,252,252,252,252,243,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,252,252,252,252,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,252,252,252,249,109,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,200,180,190,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,91,88,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,221,254,254,215,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,247,232,61,62,175,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,232,207,24,0,0,5,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,229,242,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,190,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,251,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,229,0,0,0,0,0,0,0,0,0,0,26,95,122,122,82,19,0,0,0,0,0,0,0,0,0,0,242,229,0,0,0,0,0,0,0,9,96,179,239,254,254,254,254,232,120,3,0,0,0,0,0,0,0,0,255,157,0,0,0,0,0,0,17,188,254,217,189,82,28,28,94,127,248,129,0,0,0,0,0,0,0,0,230,199,0,0,0,0,0,11,194,241,93,7,0,0,0,0,0,0,154,249,0,0,0,0,0,0,0,0,174,238,20,0,0,0,2,176,244,88,0,0,0,0,0,0,0,0,178,251,0,0,0,0,0,0,0,0,135,254,98,4,0,0,11,254,161,0,0,0,0,0,0,0,0,80,247,109,0,0,0,0,0,0,0,0,7,223,254,97,5,0,85,249,44,0,0,0,0,0,0,15,138,245,155,3,0,0,0,0,0,0,0,0,0,43,212,254,167,51,21,254,174,38,0,0,0,16,109,227,254,154,5,0,0,0,0,0,0,0,0,0,0,0,17,143,247,254,220,254,254,235,137,137,162,231,254,200,77,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,128,185,233,254,254,239,207,185,106,73,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,12,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,170,170,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,255,114,86,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,170,114,86,57,0,0,29,198,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,170,0,0,0,0,0,0,0,86,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,29,0,0,0,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,226,0,0,0,0,0,0,0,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,29,141,255,114,57,198,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,170,255,255,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,255,255,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,198,86,57,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,0,0,0,0,226,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,29,0,0,0,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,170,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,170,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,29,114,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,198,170,255,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,226,226,198,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,56,153,155,217,255,188,67,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,83,211,254,244,202,206,244,251,252,240,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,243,151,2,0,0,6,65,160,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,157,250,205,74,0,0,0,0,0,34,225,184,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,203,22,0,0,0,0,0,0,100,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,124,0,0,0,0,0,0,116,246,241,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,167,24,0,0,0,69,147,243,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,210,253,210,139,140,199,251,253,253,215,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,245,254,253,254,235,122,254,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,77,89,4,4,25,253,225,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,186,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,239,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,223,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,212,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,193,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,244,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,237,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,235,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,199,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,239,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,217,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,223,237,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,109,109,255,253,253,170,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,73,207,252,252,253,252,252,252,176,31,94,217,238,154,0,0,0,0,0,0,0,0,0,0,0,0,0,1,252,252,226,132,72,71,98,252,253,211,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,21,144,252,210,31,0,0,1,37,252,253,252,252,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,181,252,205,20,0,0,47,232,252,252,253,252,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,63,242,252,93,73,94,217,233,252,241,179,35,222,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,252,252,252,252,252,217,91,61,0,79,242,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,210,108,108,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,207,32,0,0,0,0,46,192,179,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,253,253,246,239,187,142,190,250,253,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,246,254,242,224,253,253,254,253,253,253,253,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,245,49,11,30,52,105,104,156,253,253,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,245,111,0,0,0,0,0,0,142,254,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,62,0,0,0,0,0,0,15,229,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,250,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,243,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,222,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,255,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,248,254,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,228,253,217,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,240,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,197,254,222,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,239,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,213,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,149,255,255,93,38,38,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,145,239,253,253,253,253,253,253,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,251,239,139,139,139,139,186,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,187,65,0,0,0,0,0,122,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,243,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,249,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,246,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,134,244,139,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,17,103,180,242,243,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,162,246,253,253,253,253,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,233,253,253,253,180,161,222,253,213,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,164,87,16,16,4,0,36,165,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,48,36,0,0,0,0,0,0,0,0,0,41,238,246,60,0,0,0,0,0,0,0,0,0,0,0,0,0,184,232,86,0,0,0,0,0,0,0,63,221,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,249,234,141,141,74,33,33,33,119,231,246,92,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,225,253,253,253,253,253,253,158,43,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,145,212,216,138,37,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,234,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,164,8,0,0,0,0,0,0,136,254,241,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,253,164,8,0,0,0,0,42,243,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,253,210,167,51,19,97,222,253,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,254,136,207,253,253,254,253,253,253,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,182,0,14,85,66,182,181,181,238,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,224,253,78,0,0,0,0,0,0,21,230,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,178,120,0,0,0,0,0,0,0,159,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,243,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,239,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,231,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,227,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,5,0,0,0,0,0,90,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,239,129,0,0,0,0,0,174,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,238,24,0,0,0,0,222,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,251,47,0,0,0,0,222,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,198,254,213,0,0,0,0,0,222,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,155,0,0,0,0,9,227,254,244,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,254,250,213,213,213,213,222,254,254,244,136,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,241,254,254,254,254,254,254,254,254,254,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,41,117,78,73,62,117,234,254,254,82,33,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,254,241,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,254,152,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,240,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,239,169,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,169,0,0,31,91,180,249,229,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,206,78,90,148,252,251,254,254,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,254,249,251,254,254,254,254,254,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,239,254,254,254,254,254,254,183,156,171,254,252,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,181,129,32,9,0,5,175,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,254,254,182,62,8,0,0,0,0,0,164,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,35,242,254,138,7,0,0,0,0,0,0,0,164,254,241,35,0,0,0,0,0,0,0,0,0,0,0,0,216,254,189,23,0,0,0,0,0,0,0,69,236,254,249,80,0,0,0,0,0,0,0,0,0,0,0,0,156,58,6,0,0,0,0,0,0,0,36,235,254,255,201,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,0,0,0,0,0,0,47,254,254,248,80,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,0,0,0,0,0,0,74,254,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,10,191,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,233,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,255,254,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,122,255,221,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,228,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,118,253,150,11,0,0,0,9,128,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,187,58,0,0,0,0,166,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,208,50,0,0,0,0,19,220,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,248,245,58,0,0,0,0,17,188,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,248,252,73,0,0,0,0,0,99,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,255,180,138,97,24,24,170,253,169,24,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,185,227,253,252,252,252,252,253,252,252,252,252,245,140,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,79,183,234,252,252,253,252,252,252,252,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,45,192,253,235,128,45,45,46,45,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,246,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,208,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,235,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,106,164,248,254,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,107,191,244,254,219,199,153,223,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,242,254,222,127,62,13,0,0,200,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,211,27,0,0,0,0,0,200,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,238,59,0,0,0,0,27,238,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,92,46,0,0,0,0,154,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,250,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,249,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,242,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,255,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,205,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,217,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,243,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,116,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,196,234,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,210,218,148,78,7,8,123,139,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,112,242,253,252,252,252,200,123,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,173,252,235,170,47,29,202,252,127,168,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,236,31,0,0,0,21,84,35,85,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,242,244,66,0,0,0,0,0,0,0,173,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,65,0,0,0,0,0,0,0,0,191,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,189,5,0,0,0,0,0,0,0,0,190,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,168,0,0,0,0,0,0,0,0,0,190,233,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,224,14,0,0,0,0,0,0,0,11,206,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,226,206,35,0,0,0,0,0,0,43,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,253,253,254,253,253,253,253,255,253,245,122,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,189,182,168,168,168,168,239,253,252,252,252,252,173,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,4,0,0,0,0,17,21,195,251,187,249,253,246,170,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,231,0,70,156,252,252,170,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,249,70,0,7,113,252,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,250,200,7,0,0,66,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,113,0,0,22,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,252,252,171,162,234,252,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,111,242,253,252,247,189,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,60,68,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,225,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,3,0,0,0,0,5,136,252,232,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,176,165,7,0,0,0,66,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,11,0,0,25,225,252,180,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,252,11,0,6,145,252,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,218,252,134,3,0,25,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,220,16,0,0,123,252,213,14,0,41,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,244,252,155,0,0,11,237,252,101,99,217,201,34,0,0,0,0,0,0,0,0,0,0,0,0,0,21,200,252,252,47,0,0,122,252,252,237,246,221,38,0,0,0,0,0,0,0,0,0,0,0,0,0,18,203,252,252,56,2,0,58,190,252,252,252,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,13,150,253,253,127,13,59,132,248,255,252,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,252,252,252,252,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,252,252,252,252,240,216,231,252,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,101,204,204,169,56,0,131,252,251,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,235,252,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,183,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,253,255,253,216,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,228,252,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,127,31,56,143,243,235,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,3,0,0,0,225,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,117,241,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,147,234,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,188,175,237,253,127,103,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,254,228,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,159,196,145,203,252,224,169,157,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,81,196,252,253,240,159,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,203,252,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,79,22,0,0,0,0,0,0,92,216,253,241,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,234,169,169,169,169,169,169,253,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,252,252,252,253,252,252,252,253,233,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,91,190,228,252,253,227,177,151,140,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,92,252,252,252,254,171,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,221,252,250,250,250,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,211,250,252,250,250,250,252,250,250,170,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,221,250,250,252,250,250,250,252,250,250,250,243,121,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,252,252,252,203,202,80,0,41,202,232,252,254,171,20,0,0,0,0,0,0,0,0,0,0,0,62,221,252,250,250,169,0,0,0,0,0,0,91,231,252,250,160,20,0,0,0,0,0,0,0,0,0,62,211,250,252,189,100,20,0,0,0,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,41,221,250,250,252,149,0,0,0,0,0,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,51,252,252,252,203,0,0,0,0,0,0,0,0,0,0,203,254,252,252,49,0,0,0,0,0,0,0,0,51,250,250,169,121,0,0,0,0,0,0,0,0,0,0,202,252,250,250,49,0,0,0,0,0,0,0,0,172,250,250,49,0,0,0,0,0,0,0,0,0,0,92,231,252,250,159,20,0,0,0,0,0,0,0,0,252,250,250,49,0,0,0,0,0,0,0,0,0,0,151,250,252,169,20,0,0,0,0,0,0,0,0,0,51,252,252,49,0,0,0,0,0,0,0,0,51,252,252,252,244,121,0,0,0,0,0,0,0,0,0,0,51,250,250,130,0,0,0,0,0,0,0,82,132,250,250,250,121,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,123,0,0,0,0,0,92,231,252,250,250,128,0,0,0,0,0,0,0,0,0,0,0,0,51,250,250,250,243,121,0,0,41,202,231,250,252,250,250,49,0,0,0,0,0,0,0,0,0,0,0,0,41,222,252,252,255,171,51,51,254,252,252,252,254,232,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,250,250,252,250,250,250,252,250,250,250,232,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,190,250,252,250,250,250,252,250,250,250,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,211,252,250,250,250,252,169,49,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,213,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,254,237,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,200,254,213,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,203,254,231,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,213,254,234,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,217,254,244,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,229,254,201,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,232,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,252,250,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,254,194,14,0,0,35,178,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,54,0,29,192,240,254,254,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,219,6,54,215,254,196,196,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,169,45,228,254,147,63,235,231,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,216,243,248,136,62,200,234,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,254,254,254,123,125,237,244,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,254,254,254,254,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,243,254,254,254,254,211,79,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,199,131,131,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,73,73,73,73,176,227,73,73,202,176,253,253,253,255,253,253,253,72,0,0,0,0,0,0,0,0,42,206,251,251,251,253,251,251,251,251,253,251,251,251,251,253,251,251,251,71,0,0,0,0,0,0,0,0,62,236,251,251,225,227,251,251,235,215,227,251,246,215,215,227,251,251,251,71,0,0,0,0,0,0,0,0,0,83,142,142,41,42,142,142,82,0,42,142,123,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,230,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,251,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,231,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,255,211,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,190,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,251,251,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,206,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,205,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,226,251,251,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,38,0,0,0,0,0,0,0,3,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,226,34,0,0,0,0,0,0,113,254,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,62,0,0,0,0,0,0,182,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,254,62,0,0,0,0,0,0,237,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,216,24,0,0,0,0,0,81,248,254,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,186,246,103,0,0,0,0,0,15,234,254,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,254,198,0,0,0,0,0,0,182,254,254,54,0,0,0,0,0,0,0,0,0,26,112,50,50,66,186,254,254,148,50,50,50,50,50,157,245,254,177,4,0,0,0,0,0,0,0,0,0,220,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,115,0,0,0,0,0,0,0,0,0,0,133,254,254,254,254,224,254,254,183,68,68,68,68,68,228,254,228,14,0,0,0,0,0,0,0,0,0,0,2,128,177,62,62,32,62,62,18,0,0,0,0,24,228,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,163,163,163,255,254,254,254,189,137,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,253,253,253,254,253,253,253,253,254,249,144,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,231,234,88,36,36,36,36,42,127,228,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,182,39,0,0,0,0,0,0,16,239,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,242,253,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,189,254,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,242,254,253,193,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,56,172,245,253,254,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,122,199,199,215,253,253,253,253,93,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,254,253,253,253,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,181,110,91,92,39,14,134,254,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,50,254,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,181,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,45,254,255,192,13,0,0,0,0,0,0,0,0,0,0,0,154,242,83,0,0,0,0,0,0,0,12,132,224,253,238,20,0,0,0,0,0,0,0,0,0,0,0,53,248,253,153,128,128,95,115,108,128,153,225,253,253,240,58,0,0,0,0,0,0,0,0,0,0,0,0,0,186,250,253,253,254,253,253,253,253,254,253,250,156,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,162,194,254,253,253,253,253,163,142,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,132,255,254,176,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,205,253,253,253,253,211,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,211,253,253,239,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,253,181,41,207,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,239,253,142,8,11,250,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,199,253,236,29,67,206,253,253,202,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,195,106,242,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,253,253,253,253,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,218,253,253,253,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,247,253,253,253,253,245,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,51,134,213,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,242,253,223,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,234,253,242,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,235,232,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,243,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,233,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,208,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,201,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,208,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,40,227,246,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,238,254,113,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,242,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,218,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,205,254,181,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,219,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,232,248,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,240,42,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,243,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,19,19,29,29,62,218,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,92,161,202,254,229,229,254,254,254,254,236,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,189,254,254,254,254,254,254,244,197,197,197,121,74,1,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,249,148,65,38,38,38,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,225,254,132,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,254,218,212,212,132,116,98,20,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,254,254,254,254,254,254,254,254,254,254,231,162,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,220,76,14,14,14,14,14,82,111,188,239,254,254,214,87,0,0,0,0,0,0,0,0,0,0,0,0,12,25,0,0,0,0,0,0,0,0,0,33,101,220,250,247,167,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,209,254,177,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,207,254,214,0,0,0,0,0,0,0,0,0,124,191,72,4,0,0,0,0,0,0,0,0,0,0,0,0,21,142,248,129,0,0,0,0,0,0,0,0,22,233,254,202,124,48,0,0,0,0,0,0,0,0,0,0,0,68,254,254,0,0,0,0,0,0,0,0,0,32,154,239,254,247,211,128,39,3,0,0,0,0,0,0,1,169,255,189,0,0,0,0,0,0,0,0,0,0,0,35,103,186,251,254,254,201,198,198,144,102,128,198,199,254,239,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,99,187,200,254,254,254,254,254,254,253,187,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,29,94,125,125,125,110,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,191,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,191,64,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,191,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,191,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,191,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,128,128,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,191,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,128,191,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,64,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,64,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,191,0,0,0,0,64,64,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,255,255,128,128,128,191,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,64,0,0,0,0,0,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,64,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,128,128,128,128,128,191,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,191,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,236,252,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,203,252,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,253,203,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,205,253,252,252,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,252,195,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,228,252,253,252,246,230,230,168,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,255,253,253,253,253,255,253,190,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,252,253,252,240,206,206,232,252,252,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,247,162,50,0,0,38,186,252,252,190,32,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,230,0,0,0,0,0,29,154,252,252,218,34,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,230,0,0,0,0,0,0,38,232,252,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,253,244,118,7,0,0,0,0,0,85,251,255,232,48,0,0,0,0,0,0,0,0,0,0,0,0,0,118,248,253,252,186,67,47,0,9,34,0,230,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,190,252,252,252,252,185,197,234,184,246,253,252,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,67,160,236,252,253,252,252,252,252,253,252,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,22,33,137,168,252,252,137,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,140,214,194,254,175,129,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,247,221,171,234,253,182,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,237,78,0,0,23,182,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,251,250,117,0,0,0,0,24,207,245,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,138,0,0,0,0,0,0,128,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,249,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,244,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,93,152,177,118,150,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,237,253,233,214,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,198,75,11,6,144,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,0,0,0,0,117,254,254,229,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,83,0,0,0,47,237,253,243,253,250,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,63,0,0,0,150,253,174,53,230,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,83,0,0,134,254,215,31,0,158,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,142,15,144,252,249,73,0,0,183,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,26,27,87,144,178,254,144,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,237,237,253,253,224,253,225,156,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,232,232,253,210,191,205,135,223,169,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,47,20,6,6,10,0,7,145,242,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,234,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,203,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,248,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,247,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,221,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,235,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,217,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,254,253,175,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,227,254,217,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,196,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,140,255,254,254,237,115,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,253,178,114,114,236,253,236,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,248,253,253,173,11,0,0,39,208,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,213,253,246,88,7,0,0,0,0,192,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,246,87,0,0,0,0,0,0,192,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,134,78,0,0,0,0,0,0,0,101,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,216,229,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,32,32,5,0,53,252,194,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,232,253,253,193,182,210,253,121,79,79,129,182,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,253,253,253,253,253,253,253,248,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,194,230,253,253,253,253,253,217,186,177,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,131,163,253,253,205,80,36,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,253,253,252,175,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,119,198,185,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,29,29,29,29,179,255,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,172,252,253,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,209,252,252,253,252,186,118,78,252,252,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,252,252,128,28,6,0,79,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,226,225,137,13,0,0,0,13,204,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,210,253,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,128,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,252,156,169,82,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,252,252,253,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,252,252,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,254,247,225,125,254,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,84,65,0,26,253,252,252,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,225,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,54,229,253,251,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,169,128,252,252,227,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,253,252,224,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,240,241,115,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,62,122,224,175,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,186,244,141,89,190,221,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,196,42,0,0,118,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,139,5,0,0,0,118,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,242,139,0,0,0,0,38,218,183,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,226,11,0,0,0,13,194,235,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,208,128,0,23,95,154,226,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,201,156,242,253,253,253,236,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,234,210,121,70,207,192,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,54,243,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,186,244,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,255,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,245,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,239,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,96,255,171,136,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,216,47,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,82,82,82,134,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,134,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,249,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,117,246,253,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,35,160,253,253,209,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,201,253,253,253,253,253,168,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,156,245,253,253,216,139,194,216,253,250,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,239,253,215,165,22,0,0,22,166,252,233,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,41,21,0,0,0,0,0,0,149,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,238,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,73,0,0,0,0,10,74,244,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,237,70,0,0,0,12,165,253,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,141,3,0,61,200,253,253,194,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,203,201,234,253,253,183,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,235,253,253,253,253,253,140,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,122,248,187,135,53,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,145,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,190,75,0,0,0,0,0,138,254,254,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,166,254,245,107,0,0,0,0,212,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,254,16,0,0,0,0,212,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,241,254,254,146,4,0,0,0,88,245,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,254,254,228,28,0,0,0,0,174,254,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,18,234,254,254,251,112,0,0,0,0,0,174,254,254,209,14,0,0,0,0,0,0,0,0,0,0,0,35,218,254,254,254,199,0,0,0,0,0,0,174,254,254,184,0,0,0,0,0,0,0,0,0,0,0,59,198,254,254,254,163,8,0,0,0,0,0,26,250,254,254,92,0,0,0,0,0,0,0,0,0,0,44,194,254,254,252,174,20,0,0,0,0,0,0,28,254,254,254,158,0,0,0,0,0,0,0,0,0,15,212,254,254,254,202,42,0,0,0,0,0,0,0,28,254,254,254,76,0,0,0,0,0,0,0,0,0,201,254,254,254,254,250,249,245,245,245,245,235,182,95,99,254,254,254,76,0,0,0,0,0,0,0,0,0,228,254,254,254,254,254,254,254,254,254,254,254,254,254,254,255,254,254,104,0,0,0,0,0,0,0,0,0,41,226,254,254,254,206,151,151,151,151,151,151,151,191,254,254,254,254,139,0,0,0,0,0,0,0,0,0,0,4,100,114,32,3,0,0,0,0,0,0,0,2,125,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,232,254,201,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,146,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,108,233,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,138,252,252,252,252,174,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,252,252,252,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,250,253,252,168,43,128,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,233,253,231,42,0,0,127,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,228,252,231,42,0,0,17,234,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,252,252,106,0,0,0,93,252,236,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,252,252,134,4,0,0,0,134,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,221,25,0,0,0,32,228,252,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,255,249,115,0,0,0,0,132,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,9,197,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,123,0,0,0,0,78,252,227,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,234,17,0,0,0,19,236,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,251,84,0,0,0,181,252,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,231,0,0,0,127,255,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,245,59,0,132,244,249,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,253,209,184,240,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,252,252,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,201,252,252,157,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,123,201,253,165,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,173,253,252,245,224,252,185,0,0,0,0,0,29,78,0,0,0,0,0,0,0,0,0,0,0,0,11,202,252,250,196,72,14,197,247,53,0,0,9,84,213,178,0,0,0,0,0,0,0,0,0,0,0,22,167,252,252,115,0,0,0,0,70,0,0,16,187,253,231,51,0,0,0,0,0,0,0,0,0,0,0,85,252,252,76,0,80,158,185,106,45,0,9,187,252,191,54,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,255,253,253,253,253,193,69,192,253,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,57,246,252,252,253,252,210,189,252,253,252,252,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,126,126,109,21,11,6,21,200,252,252,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,252,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,182,191,252,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,236,247,53,110,253,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,232,252,131,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,181,252,103,9,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,42,0,0,92,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,155,7,0,0,171,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,241,35,0,0,50,245,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,231,0,0,0,121,252,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,242,57,66,189,247,252,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,252,252,252,253,252,212,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,252,252,252,191,112,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,125,157,254,255,231,125,125,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,118,227,253,253,253,253,253,253,253,253,170,51,0,0,0,0,0,0,0,0,0,0,0,0,49,165,241,252,253,253,253,253,227,222,253,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,253,218,109,19,19,15,14,19,19,36,159,253,240,0,0,0,0,0,0,0,0,0,0,0,46,246,253,215,109,17,0,0,0,0,0,0,0,0,17,213,252,105,0,0,0,0,0,0,0,0,0,0,118,253,253,42,0,0,0,0,0,0,0,0,0,0,0,150,253,117,0,0,0,0,0,0,0,0,0,0,79,249,253,102,11,0,0,0,0,0,0,0,0,0,0,150,253,117,0,0,0,0,0,0,0,0,0,0,0,134,253,253,139,0,0,0,0,0,0,0,0,0,9,182,249,81,0,0,0,0,0,0,0,0,0,0,0,23,51,168,117,0,0,0,0,0,0,0,0,0,27,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,152,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,212,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,215,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,223,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,224,249,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,135,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,192,253,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,225,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,190,98,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,255,158,136,194,254,180,191,136,136,136,136,136,59,14,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,253,253,253,253,253,253,253,253,228,32,0,0,0,0,0,0,0,0,0,0,0,0,56,82,124,200,251,248,209,241,241,253,205,252,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,59,11,50,50,65,6,160,253,253,235,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,229,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,161,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,150,252,253,222,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,94,253,253,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,231,253,253,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,161,253,230,132,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,243,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,183,253,251,131,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,124,253,251,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,175,253,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,173,253,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,169,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,220,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,167,254,246,148,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,192,191,51,22,200,240,168,247,253,227,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,120,250,251,152,19,118,253,159,0,19,118,250,225,41,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,227,115,0,0,169,227,36,0,0,0,141,254,190,6,0,0,0,0,0,0,0,0,0,0,0,0,216,253,104,0,0,0,169,147,0,0,0,0,18,210,253,21,0,0,0,0,0,0,0,0,0,0,0,50,246,128,0,0,0,0,170,130,0,0,0,0,0,43,254,144,0,0,0,0,0,0,0,0,0,0,0,165,246,56,0,0,0,0,42,11,0,0,0,0,0,11,171,248,64,0,0,0,0,0,0,0,0,0,40,248,223,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,84,0,0,0,0,0,0,0,0,0,70,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,155,0,0,0,0,0,0,0,0,0,148,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,190,0,0,0,0,0,0,0,0,0,149,255,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,190,0,0,0,0,0,0,0,0,0,148,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,190,0,0,0,0,0,0,0,0,0,148,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,190,0,0,0,0,0,0,0,0,0,67,238,202,22,0,0,0,0,0,0,0,0,0,0,0,0,0,162,232,28,0,0,0,0,0,0,0,0,0,191,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,216,200,7,0,0,0,0,0,0,0,0,0,36,243,254,166,0,0,0,0,0,0,0,0,0,0,25,202,255,173,0,0,0,0,0,0,0,0,0,0,0,119,253,253,174,21,0,0,0,0,0,0,0,36,228,253,211,56,0,0,0,0,0,0,0,0,0,0,0,2,118,250,254,238,180,84,39,22,57,128,198,242,255,237,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,228,253,253,253,253,254,253,253,253,253,173,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,122,201,253,253,255,253,245,122,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,177,255,253,44,0,0,12,134,125,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,177,13,0,0,165,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,241,252,240,47,0,0,46,243,252,216,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,248,252,252,57,0,0,2,121,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,228,0,0,0,23,252,252,250,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,248,252,252,104,0,0,0,61,252,252,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,108,248,252,250,127,3,0,0,0,137,252,252,251,193,3,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,250,124,0,0,0,0,61,248,252,252,252,252,85,0,0,0,0,0,0,0,0,0,0,0,108,250,252,252,208,0,58,78,93,187,213,252,252,252,252,252,175,0,0,0,0,0,0,0,0,0,0,107,247,252,252,252,237,220,244,252,253,252,252,252,252,252,252,233,51,0,0,0,0,0,0,0,0,0,34,253,253,253,253,253,253,253,253,239,126,243,253,253,246,96,0,0,0,0,0,0,0,0,0,0,0,0,34,252,252,252,252,252,192,186,152,43,9,196,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,6,121,153,48,44,44,4,0,0,0,77,252,252,234,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,253,252,161,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,214,154,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,252,252,236,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,252,118,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,202,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,211,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,222,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,211,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,243,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,255,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,189,251,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,200,253,147,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,66,241,255,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,225,252,252,253,252,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,185,253,252,252,252,216,252,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,253,252,252,252,16,178,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,253,254,234,137,13,0,157,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,196,184,28,0,0,0,44,240,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,150,125,0,26,113,113,253,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,79,254,253,253,253,254,253,253,253,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,38,123,252,253,252,233,221,253,252,252,252,253,252,187,7,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,244,93,37,25,203,252,252,252,253,252,252,203,86,28,0,0,0,0,0,0,0,0,0,0,26,243,252,252,75,0,38,163,253,252,252,252,253,252,252,252,253,234,187,63,0,0,0,0,0,0,0,0,154,253,253,203,41,216,253,253,254,253,194,63,114,188,247,253,254,253,253,253,0,0,0,0,0,0,0,0,253,252,252,252,253,252,252,252,247,121,19,0,0,0,66,133,197,196,196,145,0,0,0,0,0,0,0,0,216,252,252,252,253,252,252,177,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,103,177,252,190,139,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,255,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,189,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,231,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,220,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,178,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,144,252,247,236,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,203,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,196,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,216,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,233,254,87,0,0,0,57,96,158,189,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,240,20,0,48,164,253,254,254,254,253,201,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,179,0,38,246,254,252,168,149,149,177,254,220,57,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,179,19,229,254,208,41,0,0,0,0,138,254,191,16,0,0,0,0,0,0,0,0,0,0,0,0,165,254,179,116,254,215,10,0,0,0,0,0,4,186,254,110,0,0,0,0,0,0,0,0,0,0,0,0,165,254,179,130,254,153,17,0,0,0,0,0,0,81,254,164,0,0,0,0,0,0,0,0,0,0,0,0,155,254,216,49,202,253,232,161,20,0,0,0,0,129,255,164,0,0,0,0,0,0,0,0,0,0,0,0,45,244,254,195,0,71,75,60,0,0,0,0,0,180,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,252,202,22,0,0,0,0,0,0,91,249,250,103,0,0,0,0,0,0,0,0,0,0,0,0,0,6,160,254,254,219,114,37,0,0,41,119,247,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,112,224,254,254,249,245,245,250,254,250,108,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,71,154,253,254,254,249,154,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,206,113,38,63,51,12,89,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,234,240,238,228,246,234,225,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,214,252,252,252,253,252,252,252,252,253,233,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,84,84,225,223,230,252,252,253,252,233,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,112,189,253,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,241,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,240,252,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,226,225,116,85,85,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,227,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,253,252,252,252,252,253,252,252,103,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,252,252,252,253,252,252,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,216,253,255,253,253,253,253,141,241,253,253,253,255,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,253,252,252,179,27,0,72,186,252,252,253,195,66,0,0,0,0,0,0,0,0,0,0,0,0,0,7,55,56,55,55,19,0,0,0,13,149,227,253,252,239,197,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,225,249,252,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,141,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,169,255,254,255,126,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,248,253,253,253,253,253,89,0,31,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,253,253,253,253,253,253,213,80,217,249,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,253,253,244,210,201,184,253,253,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,206,51,0,0,140,253,253,253,253,253,213,16,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,129,7,51,221,245,253,253,253,244,136,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,206,219,253,253,253,253,248,130,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,253,253,253,253,253,253,220,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,253,253,253,253,229,104,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,205,253,253,253,253,194,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,217,253,253,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,247,253,253,240,239,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,229,253,253,221,33,67,249,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,187,26,0,0,233,253,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,253,172,34,0,0,0,233,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,250,33,0,0,13,148,247,253,230,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,146,104,108,219,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,253,253,253,253,223,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,253,253,253,253,253,219,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,131,210,253,253,233,109,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,215,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,5,0,0,0,0,0,0,0,45,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,249,43,0,0,0,0,0,0,0,206,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,43,0,0,0,0,0,0,17,237,228,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,176,249,39,0,0,0,0,0,1,127,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,168,0,0,0,0,0,0,10,254,241,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,254,12,0,0,0,0,0,0,159,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,138,2,0,0,0,0,0,37,246,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,238,22,0,0,0,0,0,25,148,254,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,175,0,0,4,49,139,186,245,254,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,217,254,78,112,204,211,254,252,240,250,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,254,254,254,190,146,66,40,229,241,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,201,254,217,142,95,4,0,0,128,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,53,8,0,0,0,0,79,245,252,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,243,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,198,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,254,217,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,194,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,191,121,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,253,228,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,186,0,0,0,0,0,0,0,0,0,0,15,68,68,29,0,0,0,0,0,0,0,0,0,0,108,253,253,88,0,0,0,0,0,0,0,0,0,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,108,253,253,53,0,0,0,0,0,0,0,0,0,0,54,253,249,90,0,0,0,0,0,0,0,0,0,0,108,253,253,144,7,0,0,0,0,0,0,0,0,0,138,253,212,0,0,0,0,0,0,0,0,0,0,0,102,252,253,253,175,47,2,14,14,14,14,14,14,49,226,253,170,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,171,76,253,253,254,253,253,253,253,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,114,230,255,255,254,176,121,122,6,0,43,230,254,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,13,105,132,13,13,147,7,0,0,201,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,248,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,217,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,247,207,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,229,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,226,206,130,34,126,87,34,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,224,253,253,254,253,253,253,253,155,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,192,106,106,154,154,154,162,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,4,0,0,0,0,0,90,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,147,250,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,204,253,253,234,127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,236,253,253,228,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,253,173,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,245,254,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,177,254,245,221,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,236,249,254,206,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,108,193,253,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,137,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,109,5,0,0,0,0,0,0,0,0,56,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,146,5,0,0,0,0,0,0,5,147,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,223,253,103,89,23,0,0,0,0,61,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,238,232,108,41,213,243,253,206,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,209,211,253,253,253,255,253,253,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,85,233,253,244,230,253,247,152,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,143,173,23,33,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,0,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,57,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,226,0,0,0,57,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,114,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,141,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,198,226,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,255,255,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,208,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,253,253,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,253,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,253,245,108,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,230,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,215,253,253,253,229,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,111,253,253,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,253,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,145,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,207,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,231,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,100,226,254,208,133,18,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,178,253,253,253,253,253,253,134,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,245,125,96,142,217,252,254,187,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,198,29,0,0,0,81,231,253,201,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,21,0,0,0,0,0,47,253,253,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,136,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,175,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,122,122,6,0,0,157,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,254,196,128,36,254,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,253,232,229,252,254,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,200,14,0,167,254,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,185,7,97,210,254,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,192,247,253,254,253,253,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,208,253,253,253,218,60,72,226,253,182,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,197,180,59,25,0,0,118,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,5,0,0,0,0,6,135,253,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,253,194,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,231,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,24,0,0,0,0,0,0,0,0,0,0,0,24,36,0,0,0,0,0,0,0,0,0,0,0,0,0,161,16,0,0,0,0,0,0,0,0,0,4,112,205,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,251,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,244,251,251,251,242,103,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,251,251,253,251,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,194,255,253,253,253,253,255,253,253,213,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,225,251,253,247,140,62,62,233,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,251,251,253,140,0,0,0,96,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,251,251,251,129,8,0,0,0,12,157,251,251,232,0,0,0,0,0,0,0,0,0,0,0,0,0,60,228,251,251,152,0,0,0,0,0,0,32,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,129,0,0,0,0,0,0,0,32,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,31,0,0,0,0,0,0,92,197,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,80,253,251,251,31,0,0,0,0,32,127,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,172,12,0,64,64,143,229,251,253,251,251,156,12,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,251,169,158,253,251,251,251,251,253,251,172,12,0,0,0,0,0,0,0,0,0,0,0,0,0,159,255,253,253,253,253,255,253,253,253,253,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,251,251,251,251,253,251,251,251,231,63,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,251,251,251,251,253,251,188,126,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,129,110,188,188,189,69,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,211,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,237,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,222,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,244,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,227,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,146,253,241,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,197,253,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,209,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,157,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,252,246,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,174,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,86,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,226,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,141,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,29,0,0,0,0,86,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,57,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,198,86,86,141,170,170,170,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,86,86,29,0,29,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,248,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,232,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,235,253,126,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,203,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,74,0,0,0,0,0,15,60,60,193,192,60,4,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,74,0,0,0,0,0,157,253,253,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,74,0,0,0,72,121,230,253,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,74,0,0,85,241,254,191,81,29,29,188,253,163,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,74,0,170,236,253,180,13,0,0,72,232,253,145,0,0,0,0,0,0,0,0,0,0,0,0,15,253,253,153,0,239,253,253,71,0,8,134,240,253,253,14,0,0,0,0,0,0,0,0,0,0,0,0,10,206,253,251,239,252,253,253,241,239,240,253,226,145,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,28,191,240,253,253,253,253,254,253,250,208,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,104,156,253,253,255,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,50,77,108,153,166,166,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,152,190,242,250,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,185,251,254,254,254,254,254,254,254,254,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,2,128,116,129,176,219,187,185,129,129,129,129,57,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,251,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,235,254,190,161,161,115,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,254,254,254,254,254,204,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,191,227,254,254,254,254,254,204,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,44,44,97,197,254,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,198,254,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,9,0,0,0,0,0,0,0,0,0,169,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,13,0,0,0,0,0,0,0,0,0,108,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,128,6,0,0,0,0,0,0,0,0,127,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,174,55,27,11,0,0,0,8,95,247,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,235,254,254,237,219,206,174,206,215,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,254,254,254,254,254,254,254,254,200,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,89,165,165,165,165,165,165,91,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,229,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,180,254,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,255,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,236,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,243,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,240,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,245,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,132,170,20,0,0,0,20,215,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,91,0,0,0,104,254,193,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,201,253,246,219,86,0,54,238,248,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,111,46,130,102,14,193,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,247,243,39,0,0,0,128,254,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,81,0,0,0,32,231,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,133,254,206,5,0,0,0,132,253,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,254,89,0,0,0,38,224,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,193,253,169,5,0,0,66,228,253,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,228,0,0,37,150,254,255,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,111,16,74,231,253,253,254,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,248,253,195,228,253,247,210,217,254,160,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,253,253,254,216,92,2,186,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,155,72,72,5,0,19,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,194,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,196,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,183,0,0,0,0,0,0,39,145,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,197,4,0,0,0,0,0,220,255,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,184,254,244,15,0,0,0,0,0,201,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,175,0,0,0,0,0,72,253,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,148,254,254,27,0,0,0,0,0,170,254,234,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,196,2,0,0,0,0,4,228,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,113,0,0,0,0,0,149,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,251,73,0,0,0,0,11,225,254,139,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,244,199,134,134,134,206,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,248,254,254,254,254,254,254,254,254,205,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,150,237,237,237,237,251,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,250,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,238,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,244,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,240,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,247,255,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,211,253,232,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,94,237,238,64,162,254,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,172,251,183,27,46,243,234,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,229,251,121,0,8,228,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,123,249,233,74,1,44,208,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,173,254,214,38,11,128,254,254,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,228,254,183,9,54,204,254,226,122,251,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,225,254,184,24,162,246,246,151,11,47,250,183,3,0,0,0,0,0,0,0,0,0,0,0,0,0,42,224,254,219,173,232,243,146,27,0,20,233,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,254,254,254,243,197,72,0,0,9,201,254,145,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,222,196,143,39,0,0,0,0,63,254,213,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,238,249,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,209,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,236,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,247,194,64,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,233,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,218,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,228,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,47,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,232,180,136,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,231,253,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,231,253,253,221,252,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,253,227,33,249,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,199,253,253,220,62,0,249,253,244,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,176,253,253,218,34,0,0,249,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,231,253,253,224,66,0,0,0,181,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,1,167,235,253,253,253,49,2,3,0,0,147,253,253,177,14,39,6,2,3,0,0,0,0,0,0,0,0,132,253,253,253,253,253,207,180,211,156,156,252,253,253,253,253,253,253,191,196,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,130,0,0,0,0,0,0,0,0,220,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,171,43,1,0,0,0,0,0,0,0,0,12,62,62,96,165,165,117,129,165,144,62,250,253,253,194,62,62,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,253,207,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,253,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,34,0,99,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,237,253,253,213,171,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,253,236,94,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,148,237,209,25,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,104,236,254,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,187,252,252,253,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,247,252,247,187,109,21,11,0,0,4,101,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,218,252,185,63,0,0,0,0,0,0,114,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,182,4,0,0,0,0,0,0,0,192,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,253,147,32,0,0,0,31,148,236,254,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,252,252,237,146,85,85,213,252,252,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,126,225,252,252,253,252,252,247,99,65,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,253,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,223,252,252,236,182,252,215,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,227,253,253,174,45,85,253,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,252,169,11,0,85,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,245,169,7,0,4,142,252,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,253,141,0,0,0,69,252,252,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,174,11,0,0,0,148,252,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,45,0,0,0,36,255,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,252,137,0,0,0,22,225,253,189,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,42,0,0,29,237,252,250,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,42,11,99,211,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,252,174,175,252,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,80,195,85,80,80,80,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,253,253,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,62,56,0,9,253,253,253,253,253,253,251,237,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,241,83,4,161,253,253,253,253,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,11,141,248,253,253,147,0,73,209,252,253,253,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,253,253,199,34,0,0,160,253,142,194,253,253,244,77,0,0,0,0,0,0,0,0,0,9,136,250,253,253,253,253,253,69,0,0,15,52,5,27,201,253,253,156,0,0,0,0,0,0,0,0,0,80,253,253,253,253,253,253,209,41,0,0,0,0,0,0,36,253,253,196,33,0,0,0,0,0,0,0,0,86,253,253,253,253,253,234,41,0,0,0,0,0,0,0,42,253,253,253,78,0,0,0,0,0,0,0,0,254,253,253,253,253,253,165,0,0,0,0,0,0,0,0,211,253,253,253,78,0,0,0,0,0,0,0,0,254,253,253,253,253,172,18,0,0,0,0,0,0,0,0,211,253,253,253,78,0,0,0,0,0,0,0,0,254,253,253,253,210,4,0,0,0,0,0,0,42,229,246,252,253,253,159,3,0,0,0,0,0,0,0,0,254,253,253,253,209,0,0,0,0,0,99,149,210,253,253,253,253,242,65,0,0,0,0,0,0,0,0,0,255,253,253,253,218,53,53,53,180,228,244,253,253,253,253,253,253,77,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,193,29,0,0,0,0,0,0,0,0,0,0,80,253,253,253,253,253,253,253,253,253,253,253,253,253,234,193,24,0,0,0,0,0,0,0,0,0,0,0,44,210,253,253,253,253,253,253,253,253,253,253,253,229,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,253,253,253,253,253,253,253,253,248,235,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,210,253,253,253,253,253,253,189,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,108,253,253,179,78,78,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,255,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,223,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,159,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,249,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,253,193,5,0,4,24,24,24,24,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,128,0,24,131,253,253,253,253,205,146,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,233,22,32,220,253,253,253,253,253,253,253,217,17,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,191,78,219,253,253,235,122,176,176,180,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,193,67,0,0,0,2,165,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,179,9,0,0,0,0,0,148,253,248,48,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,245,55,0,0,0,0,0,0,148,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,116,0,0,0,0,0,0,2,160,253,246,47,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,11,0,0,0,0,0,0,112,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,15,207,253,253,11,0,0,0,0,25,118,252,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,253,145,84,103,201,165,202,253,215,205,148,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,166,253,253,253,253,253,253,253,209,21,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,122,190,201,253,253,162,135,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,165,241,204,253,216,141,79,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,252,252,252,253,252,252,252,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,194,56,209,252,253,240,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,139,103,128,13,0,59,240,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,172,222,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,188,225,225,229,252,252,252,253,252,155,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,253,253,254,253,253,253,254,253,253,253,179,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,252,252,252,253,252,252,252,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,19,224,252,252,253,252,252,252,253,252,252,252,253,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,116,139,140,139,52,28,28,28,116,240,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,207,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,65,0,0,0,0,0,0,0,0,10,85,134,10,0,0,0,0,0,0,0,0,0,0,0,0,147,234,214,15,0,0,0,0,0,0,0,0,179,252,252,228,114,113,25,0,0,0,0,0,0,26,113,163,253,252,252,28,0,0,0,0,0,0,0,0,255,253,253,253,254,253,253,253,254,253,253,253,254,253,253,253,254,253,168,0,0,0,0,0,0,0,0,0,253,252,252,252,253,252,252,252,253,252,252,252,253,252,252,252,253,252,93,0,0,0,0,0,0,0,0,0,216,252,252,252,253,252,252,252,253,252,252,252,253,252,252,252,244,142,13,0,0,0,0,0,0,0,0,0,28,139,103,128,140,139,139,139,203,202,214,139,190,215,214,139,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,60,218,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,185,252,252,113,146,146,137,85,85,50,85,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,252,253,252,252,252,244,206,126,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,252,252,252,252,253,205,136,84,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,89,246,236,112,42,42,42,42,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,131,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,205,181,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,231,249,253,252,252,239,100,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,190,237,252,252,252,142,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,200,252,252,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,212,255,253,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,138,252,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,150,253,252,235,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,253,255,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,213,252,252,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,62,145,239,252,252,244,152,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,204,239,253,252,252,210,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,147,235,253,173,50,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,131,191,197,220,190,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,251,253,251,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,143,248,251,229,188,220,251,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,251,251,152,59,0,127,251,251,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,205,119,0,0,0,128,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,161,31,0,0,0,0,127,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,158,251,251,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,251,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,251,251,184,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,251,188,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,240,253,243,94,0,0,64,64,64,64,64,64,56,32,48,0,0,0,0,0,0,0,0,0,0,0,80,240,251,253,220,80,158,158,253,251,251,251,251,253,240,205,228,158,0,0,0,0,0,0,0,0,0,92,253,253,253,255,253,253,253,253,255,253,253,253,253,255,181,158,158,59,0,0,0,0,0,0,0,0,12,197,251,251,251,253,251,251,251,251,253,227,220,81,62,63,16,0,0,0,0,0,0,0,0,0,0,0,174,251,251,251,251,205,126,126,126,126,126,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,228,188,148,31,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,141,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,234,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,225,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,202,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,92,141,178,253,242,141,53,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,206,253,252,252,252,253,252,252,178,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,140,252,253,233,168,168,178,252,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,128,22,0,0,4,128,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,114,0,0,0,0,120,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,252,151,38,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,252,28,0,0,0,0,60,234,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,253,252,214,15,0,0,0,0,141,252,252,252,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,192,159,25,0,0,0,0,13,204,253,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,28,0,0,0,51,89,200,253,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,253,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,209,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,252,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,241,252,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,229,255,253,194,13,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,197,252,253,240,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,244,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,153,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,148,148,201,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,155,242,253,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,162,234,252,244,232,247,242,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,152,253,252,247,189,66,0,190,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,221,252,253,217,91,0,0,124,242,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,218,253,132,0,0,0,0,254,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,173,0,0,0,0,80,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,147,0,0,0,85,223,232,47,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,147,0,0,15,225,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,217,235,45,36,206,252,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,247,255,253,253,225,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,166,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,162,249,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,227,252,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,211,249,252,164,192,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,87,210,253,214,70,62,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,171,252,239,89,5,57,199,253,153,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,173,252,252,127,22,119,211,252,152,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,252,253,252,252,210,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,252,252,191,147,50,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,95,95,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,134,63,141,162,245,245,248,254,254,254,248,198,141,41,0,0,0,0,0,0,0,0,0,0,0,0,54,234,254,254,254,254,254,254,254,254,254,254,254,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,32,247,254,254,254,254,244,228,192,125,125,125,125,171,205,74,0,0,0,0,0,0,0,0,0,0,0,0,8,157,255,254,254,188,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,84,255,254,254,254,236,224,224,110,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,126,254,254,254,254,254,254,254,254,254,172,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,255,252,249,249,228,228,252,254,254,225,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,228,129,52,0,0,0,0,57,152,254,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,52,25,0,0,0,0,0,0,0,18,243,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,248,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,19,113,61,0,0,0,0,0,0,0,0,6,194,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,183,254,200,21,0,0,0,0,0,0,63,192,254,254,198,47,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,167,21,21,21,21,66,146,249,254,254,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,28,231,254,254,254,254,254,254,254,254,254,254,203,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,36,236,252,254,254,254,254,254,248,161,123,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,94,94,94,94,94,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,174,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,159,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,72,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,141,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,252,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,253,252,252,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,252,253,252,249,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,219,253,255,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,252,252,253,216,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,239,252,252,253,204,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,204,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,238,252,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,204,252,252,156,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,195,252,156,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,208,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,234,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,211,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,251,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,214,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,244,38,0,0,0,9,61,97,52,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,197,0,0,0,86,251,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,53,0,0,0,195,254,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,254,52,0,0,80,254,254,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,241,34,0,27,221,254,191,105,239,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,222,6,4,190,254,220,16,105,251,211,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,243,36,169,254,254,72,183,239,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,248,90,243,254,109,179,254,254,198,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,250,254,254,254,254,218,254,254,247,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,254,254,254,254,254,255,243,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,231,254,254,254,254,249,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,88,233,254,193,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,72,152,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,233,151,213,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,244,203,0,0,173,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,202,81,0,0,123,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,91,0,0,72,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,213,10,0,0,30,212,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,163,0,0,41,173,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,203,0,21,142,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,244,81,132,233,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,172,243,243,233,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,214,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,130,10,212,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,50,0,142,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,172,10,0,102,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,172,0,0,0,102,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,233,30,0,0,62,203,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,234,71,72,152,254,233,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,172,252,253,171,50,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,109,109,109,110,109,109,109,171,170,253,253,110,15,0,0,0,0,0,0,0,0,0,0,32,73,176,217,252,252,252,252,253,252,252,252,253,252,252,252,253,180,21,0,0,0,0,0,0,0,0,0,109,252,252,231,215,215,215,215,72,71,71,71,72,71,92,236,253,252,92,0,0,0,0,0,0,0,0,0,47,108,108,46,0,0,0,0,0,0,0,0,0,0,21,206,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,181,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,171,253,253,191,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,221,253,241,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,247,252,252,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,255,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,251,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,245,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,252,178,0,0,0,0,2,92,127,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,204,253,252,126,0,0,0,0,119,252,252,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,253,252,82,0,0,0,159,249,252,252,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,107,239,253,254,186,9,0,0,8,201,253,243,229,255,183,4,0,0,0,0,0,0,0,0,0,0,0,0,0,90,252,253,63,0,0,0,157,252,252,110,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,253,63,0,0,54,253,252,233,74,223,253,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,63,0,0,176,253,252,100,91,252,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,150,0,54,246,253,94,66,239,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,254,253,83,64,253,255,174,245,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,252,212,101,235,253,252,252,252,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,205,251,252,252,253,252,252,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,252,252,253,252,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,68,235,253,217,94,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,128,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,64,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,191,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,64,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,64,0,64,0,191,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,191,64,0,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,64,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,128,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,128,191,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,93,176,247,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,223,126,35,0,12,47,11,145,241,253,253,253,240,20,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,240,218,225,248,220,253,254,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,32,231,253,253,254,253,253,253,253,254,242,112,171,253,212,8,0,0,0,0,0,0,0,0,0,0,0,0,0,36,111,194,254,253,253,246,162,105,31,0,44,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,255,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,186,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,241,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,247,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,229,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,194,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,69,191,254,255,156,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,182,253,253,253,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,177,250,253,253,253,253,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,233,253,253,253,253,253,253,253,253,253,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,236,253,253,253,253,237,144,124,211,253,253,252,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,253,236,94,30,0,0,119,253,253,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,253,253,246,59,0,0,0,0,192,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,238,0,0,0,0,11,207,253,253,240,29,0,0,0,0,0,0,0,0,0,0,0,0,0,6,197,253,253,245,38,0,4,46,175,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,253,147,156,216,253,253,253,253,237,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,225,253,253,253,253,253,253,253,253,218,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,190,253,253,253,253,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,15,16,173,253,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,253,253,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,246,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,231,253,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,244,253,253,204,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,170,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,96,254,255,177,15,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,253,223,237,209,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,104,250,253,253,188,189,253,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,247,163,20,20,223,253,245,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,216,162,42,0,0,0,171,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,0,0,0,0,0,95,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,78,78,78,24,60,244,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,217,253,253,253,225,225,253,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,253,253,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,253,181,72,198,250,253,253,253,253,249,149,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,253,11,0,39,222,253,253,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,253,33,5,177,253,253,236,99,148,234,222,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,253,159,55,253,253,253,74,0,0,41,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,252,230,253,253,192,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,253,230,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,67,248,253,178,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,167,196,166,88,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,160,248,254,253,253,253,246,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,110,249,253,253,254,193,191,247,253,250,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,186,253,253,251,170,26,1,0,209,253,253,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,43,224,253,253,228,88,0,0,0,0,155,253,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,30,225,253,253,188,26,0,0,0,0,0,227,253,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,55,250,213,253,70,0,0,0,0,0,37,239,233,233,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,85,139,226,13,0,0,0,0,0,185,253,170,242,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,243,38,0,0,0,0,88,248,212,150,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,83,0,0,0,85,250,232,44,219,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,240,205,19,0,116,255,254,78,62,242,231,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,241,221,250,208,44,1,194,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,191,191,161,6,0,58,242,227,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,231,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,162,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,246,223,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,157,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,154,251,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,107,155,155,155,155,236,192,155,89,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,144,241,254,247,229,144,144,186,244,244,247,250,179,58,3,0,0,0,0,0,0,0,0,0,0,0,33,223,254,180,90,25,0,0,0,0,0,0,25,90,121,224,152,3,0,0,0,0,0,0,0,0,0,5,161,254,221,11,0,0,0,0,0,0,0,2,154,210,83,19,144,134,0,0,0,0,0,0,0,0,0,56,254,235,25,0,0,0,0,0,0,0,0,16,254,254,174,0,0,32,0,0,0,0,0,0,0,0,0,56,254,138,0,0,0,0,0,0,0,0,0,67,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,56,254,123,0,0,0,0,0,0,0,0,0,116,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,56,254,200,6,0,0,0,0,0,0,0,0,116,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,35,238,254,110,0,0,0,0,0,0,0,0,153,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,181,100,51,51,51,51,53,213,254,254,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,6,175,254,254,254,254,254,254,254,254,249,252,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,163,194,161,189,194,96,93,0,53,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,216,251,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,231,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,254,246,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,248,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,187,254,245,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,180,247,254,253,248,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,249,253,244,171,54,44,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,209,254,253,168,44,0,17,174,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,254,210,50,0,0,70,245,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,235,253,185,42,0,0,102,245,253,215,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,242,38,0,13,141,240,254,206,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,246,84,0,172,253,253,169,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,248,254,254,254,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,228,253,254,253,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,237,254,119,239,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,236,9,197,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,251,79,7,232,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,230,0,136,253,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,113,85,255,254,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,159,222,254,244,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,251,253,253,247,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,219,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,255,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,243,203,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,255,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,253,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,117,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,193,223,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,184,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,187,236,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,202,237,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,25,16,0,0,105,234,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,231,196,53,31,242,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,23,134,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,251,254,254,148,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,254,238,231,176,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,248,146,79,154,194,237,144,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,234,0,0,0,59,201,223,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,235,0,0,0,0,119,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,251,80,2,0,5,166,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,254,167,79,157,210,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,185,226,254,254,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,171,140,133,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,139,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,234,247,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,56,0,0,0,0,0,0,0,190,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,223,84,0,0,0,0,0,0,36,242,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,227,241,35,0,0,0,0,0,0,210,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,152,0,0,0,0,0,0,36,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,73,0,0,0,0,0,0,158,253,245,72,0,0,0,0,0,0,0,0,0,0,0,0,6,91,239,253,169,7,0,0,0,0,0,43,239,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,110,252,252,236,37,0,0,0,0,0,0,108,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,68,245,253,253,254,253,253,253,165,131,43,105,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,146,237,252,252,252,253,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,251,205,126,21,21,21,47,126,129,226,252,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,145,189,129,0,0,0,0,0,0,0,69,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,244,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,175,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,206,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,253,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,128,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,217,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,175,254,254,254,255,173,109,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,254,254,254,215,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,210,254,142,65,89,173,239,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,247,28,0,0,0,38,254,254,246,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,230,212,6,0,0,0,143,254,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,33,0,0,75,254,254,254,194,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,154,139,163,253,254,250,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,217,254,254,254,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,186,254,254,254,249,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,239,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,255,54,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,222,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,137,0,0,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,248,254,26,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,218,4,0,0,0,0,0,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,137,0,0,0,0,0,0,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,250,254,53,0,0,0,0,0,0,207,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,254,16,0,0,0,0,0,0,213,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,220,254,235,12,0,0,0,0,0,0,135,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,158,217,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,3,8,67,185,255,212,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,145,171,180,254,254,254,254,144,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,253,209,56,70,231,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,134,0,0,0,135,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,254,254,37,0,0,0,11,207,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,177,47,7,0,0,0,0,169,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,209,22,0,0,0,0,0,0,169,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,0,0,0,0,0,0,169,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,213,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,188,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,194,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,204,217,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,233,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,119,166,166,196,227,142,110,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,231,253,253,253,253,254,253,253,251,184,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,253,246,155,105,74,151,253,238,225,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,245,89,0,0,0,36,230,143,158,253,242,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,218,0,0,0,0,0,101,125,249,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,235,38,0,0,0,0,37,227,253,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,186,253,148,0,0,0,0,83,249,253,248,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,229,246,156,35,0,33,197,253,249,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,248,253,223,97,206,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,181,253,253,254,253,180,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,255,229,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,227,253,253,205,253,227,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,226,253,226,74,6,173,253,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,249,94,0,0,56,249,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,159,0,0,0,0,191,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,245,253,148,0,0,0,0,161,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,219,253,148,0,0,9,75,249,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,228,189,135,212,253,253,231,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,182,253,253,253,254,253,223,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,121,253,253,166,112,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,113,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,252,244,121,148,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,237,248,252,253,231,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,14,124,252,253,252,244,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,132,2,6,117,209,252,252,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,240,252,133,2,0,0,93,222,133,151,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,239,252,196,193,193,194,71,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,252,252,252,253,252,185,149,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,61,149,149,255,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,93,252,252,213,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,194,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,252,252,225,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,141,252,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,195,238,238,238,238,240,241,252,252,252,239,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,207,207,207,215,252,253,252,252,252,168,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,103,165,163,252,252,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,128,64,255,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,191,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,191,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,217,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,162,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,217,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,194,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,114,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,129,227,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,230,6,3,66,76,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,213,239,154,235,254,254,210,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,254,229,131,29,41,191,198,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,184,28,0,0,0,28,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,183,41,0,0,0,11,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,130,36,0,0,0,11,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,18,0,0,0,0,114,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,255,159,0,0,1,129,249,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,139,252,208,176,218,254,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,182,223,181,59,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,132,253,254,213,132,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,253,252,253,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,233,142,102,102,203,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,151,0,0,0,20,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,254,50,0,0,0,0,152,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,253,212,192,71,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,254,50,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,50,0,0,0,0,0,0,152,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,224,20,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,252,122,0,0,0,0,0,0,0,152,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,253,0,0,0,0,0,0,0,0,152,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,212,0,0,0,0,0,0,0,0,152,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,151,0,0,0,0,0,0,11,132,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,70,0,0,0,0,0,0,132,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,151,0,0,0,0,0,0,173,213,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,192,0,0,0,0,0,0,253,90,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,253,0,0,0,21,103,142,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,82,0,102,203,243,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,172,252,192,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,32,32,32,0,0,0,0,0,0,0,0,0,16,128,58,3,0,0,0,0,0,0,15,24,48,123,210,253,253,233,110,0,0,0,0,0,0,0,0,34,226,253,217,27,143,177,207,142,142,223,232,237,253,253,254,205,189,189,56,0,0,0,0,0,0,0,0,194,243,70,12,55,254,253,238,198,173,174,173,134,95,45,16,4,0,0,0,0,0,0,0,0,0,0,0,255,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,235,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,200,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,126,241,161,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,171,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,144,253,190,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,181,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,153,232,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,47,0,0,37,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,227,165,32,80,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,67,230,254,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,32,31,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,129,253,192,109,212,253,192,109,109,109,192,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,252,252,252,253,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,253,252,252,252,253,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,253,252,231,108,170,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,252,252,253,158,123,0,0,217,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,252,252,252,222,25,0,0,32,227,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,27,221,252,252,252,252,125,0,0,0,109,252,252,252,253,76,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,252,168,0,0,0,0,109,252,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,253,237,62,0,0,0,0,255,253,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,25,119,179,179,153,0,0,0,0,125,253,252,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,255,253,237,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,242,252,253,252,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,222,252,252,253,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,208,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,51,51,51,31,0,0,173,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,123,223,253,252,253,232,82,123,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,214,253,254,253,244,203,234,253,173,233,255,213,41,0,0,0,0,0,0,0,0,0,0,0,0,41,213,252,253,252,192,70,40,0,51,232,233,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,233,183,61,0,0,0,0,51,233,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,192,50,0,0,0,0,0,123,233,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,233,0,0,0,0,51,152,254,253,214,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,232,142,102,102,142,233,252,91,50,173,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,234,253,254,253,254,253,183,20,0,82,254,233,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,151,151,151,91,50,0,0,21,223,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,83,157,242,213,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,243,254,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,208,254,214,107,95,228,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,217,80,6,0,65,252,221,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,172,0,14,128,246,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,51,9,74,198,254,254,189,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,254,254,254,251,229,150,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,202,155,117,189,228,254,254,223,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,64,148,254,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,86,230,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,250,50,0,0,0,0,0,0,0,0,0,0,0,0,0,64,120,0,0,0,0,0,0,0,0,0,31,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,57,231,189,0,0,0,0,0,0,0,0,3,150,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,194,8,0,0,0,0,0,0,0,68,254,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,254,174,6,0,0,0,0,0,27,240,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,242,254,194,96,21,9,9,92,215,254,233,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,184,253,255,254,254,254,255,254,204,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,168,243,254,254,184,128,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,207,254,254,254,255,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,145,234,248,253,253,253,253,253,253,253,252,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,252,253,253,253,253,253,226,250,253,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,12,236,253,253,225,119,82,82,59,112,235,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,1,137,253,253,47,0,0,1,131,253,253,253,253,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,47,0,0,7,253,253,253,253,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,133,253,253,181,0,0,67,253,253,253,253,253,244,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,246,127,179,242,253,253,253,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,253,253,253,253,253,253,203,47,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,49,249,253,253,253,253,253,253,207,160,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,47,218,253,253,253,253,253,253,237,158,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,49,168,253,253,253,253,253,253,253,237,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,253,253,253,253,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,252,253,253,253,253,253,253,197,253,253,252,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,235,253,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,231,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,253,253,253,253,253,253,253,245,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,222,158,237,253,241,232,232,232,121,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,116,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,141,141,141,255,228,141,41,92,191,104,29,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,252,252,253,252,252,252,253,252,252,252,207,56,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,252,177,206,224,252,252,168,205,234,252,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,13,91,90,52,3,13,19,28,28,0,13,22,128,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,57,57,57,57,57,131,169,243,234,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,252,252,252,253,252,252,252,247,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,253,252,252,252,253,252,252,252,253,246,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,254,253,253,253,254,253,253,253,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,253,252,252,202,134,84,84,84,203,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,38,56,156,168,142,56,6,0,0,0,0,7,100,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,204,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,144,243,253,252,118,0,0,0,0,0,0,0,0,0,10,160,197,22,0,0,0,0,0,0,0,0,48,172,252,252,253,233,62,0,0,0,0,0,0,0,0,0,29,252,252,228,0,0,0,0,0,0,38,163,241,252,252,252,178,22,0,0,0,0,0,0,0,0,0,0,129,253,253,253,192,141,141,191,204,253,253,253,254,234,137,13,0,0,0,0,0,0,0,0,0,0,0,0,10,171,252,252,253,252,252,252,253,252,252,252,247,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,234,252,253,252,252,252,253,252,252,214,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,253,252,252,252,140,115,28,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,109,192,233,253,170,110,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,217,242,252,253,252,252,252,253,222,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,179,71,154,232,252,221,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,108,15,0,0,47,232,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,170,252,252,252,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,252,252,241,97,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,221,252,252,112,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,71,0,0,0,0,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,253,180,0,0,0,0,0,0,47,233,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,55,0,0,0,0,0,0,109,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,53,232,252,174,10,0,0,0,0,0,21,212,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,143,0,0,0,0,0,0,144,253,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,144,0,0,0,0,0,99,253,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,252,252,143,0,0,0,0,105,242,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,159,5,6,37,182,242,252,252,217,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,211,252,252,159,160,252,253,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,253,253,253,255,159,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,35,179,179,179,179,35,5,0,0,0,0,0,0,32,73,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,56,154,197,129,9,0,0,111,248,184,2,0,0,0,0,0,0,0,0,0,0,0,0,0,7,74,210,217,254,254,254,254,205,7,109,242,254,251,9,0,0,0,0,0,0,0,0,0,0,0,0,57,195,254,254,254,254,254,254,254,254,219,254,254,254,138,0,0,0,0,0,0,0,0,0,0,0,1,104,250,254,254,240,219,134,134,184,254,254,254,254,254,169,9,0,0,0,0,0,0,0,0,0,0,0,11,223,254,254,174,22,0,0,0,135,254,254,254,254,130,6,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,186,3,0,0,0,97,250,254,254,234,87,8,0,0,0,0,0,0,0,0,0,0,0,0,0,11,254,254,179,0,0,0,0,223,254,254,210,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,154,254,250,177,27,7,194,254,254,198,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,191,254,254,235,205,254,254,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,188,254,254,254,254,254,252,127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,162,254,254,254,254,254,254,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,254,254,254,228,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,254,128,40,40,129,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,243,43,0,0,61,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,242,254,204,0,0,1,158,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,115,0,0,108,254,254,205,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,251,254,212,22,115,251,254,246,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,229,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,254,123,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,254,254,235,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,34,111,143,143,167,253,253,234,110,5,0,0,0,0,0,0,0,0,0,0,0,0,44,105,176,176,176,243,253,252,252,252,252,252,252,252,252,33,0,0,0,0,0,0,0,0,0,0,0,62,237,252,252,252,252,252,253,252,252,252,252,252,209,235,120,6,0,0,0,0,0,0,0,0,0,0,0,15,207,252,252,252,236,182,59,10,10,10,10,10,6,9,0,0,0,0,0,0,0,0,0,0,0,0,0,15,222,252,252,151,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,205,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,252,252,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,252,252,252,173,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,252,252,232,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,57,142,243,252,252,252,207,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,202,253,255,224,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,125,253,252,222,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,222,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,242,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,243,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,243,245,57,0,0,0,0,0,0,0,0,0,0,0,0,0,2,89,122,5,0,0,0,0,9,60,184,246,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,252,252,148,45,83,154,154,227,252,253,221,165,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,252,252,252,252,252,229,175,114,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,252,228,142,90,33,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,29,29,29,29,29,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,107,120,187,252,252,253,252,252,252,207,169,169,69,57,19,0,0,0,0,0,0,0,0,0,0,0,82,240,252,253,252,252,252,253,252,252,252,253,252,252,252,253,215,81,0,0,0,0,0,0,0,0,0,0,169,252,252,253,177,139,139,91,65,28,28,140,139,139,139,140,139,43,0,0,0,0,0,0,0,0,0,0,32,229,253,255,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,150,252,252,209,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,252,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,226,225,137,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,225,247,253,254,253,253,253,254,253,253,203,129,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,84,197,234,252,252,253,252,252,252,253,252,187,119,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,56,56,69,93,143,205,253,252,252,252,247,122,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,28,103,177,252,253,252,193,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,16,0,0,0,0,0,0,0,0,176,244,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,215,51,0,0,0,0,0,0,0,0,169,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,247,197,81,0,0,0,0,0,0,82,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,153,252,243,225,101,0,0,0,0,157,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,150,250,254,178,141,141,204,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,203,252,252,252,253,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,81,168,168,168,168,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,188,255,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,159,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,215,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,227,253,164,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,252,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,224,253,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,249,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,225,19,0,0,0,0,0,0,0,0,66,114,99,58,0,0,0,0,0,0,0,0,0,0,0,197,253,253,119,0,0,0,0,0,0,0,2,116,250,253,253,212,0,0,0,0,0,0,0,0,0,0,0,234,253,253,82,0,0,0,0,0,0,18,109,253,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,234,253,253,82,0,0,0,0,2,109,215,253,253,253,253,253,235,55,0,0,0,0,0,0,0,0,0,0,234,253,253,82,0,0,0,0,136,253,253,250,129,129,237,253,233,49,0,0,0,0,0,0,0,0,0,0,178,253,253,212,0,0,0,141,251,253,242,72,0,0,145,253,212,0,0,0,0,0,0,0,0,0,0,0,97,253,253,249,138,41,0,227,253,253,107,0,41,138,249,233,69,0,0,0,0,0,0,0,0,0,0,0,21,169,238,253,253,225,199,248,253,253,128,140,226,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,217,253,253,253,253,253,253,253,253,253,214,167,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,96,166,232,251,253,253,253,253,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,228,253,253,249,116,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,123,201,253,253,254,218,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,173,227,252,252,252,217,218,252,238,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,128,246,252,253,245,126,21,12,12,99,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,197,252,252,226,128,56,0,0,0,11,171,252,189,0,0,0,0,0,0,0,0,0,0,0,0,71,194,253,252,244,121,24,0,0,0,0,0,175,252,244,66,0,0,0,0,0,0,0,0,0,0,15,192,253,253,230,176,9,0,0,0,0,0,11,175,255,253,214,0,0,0,0,0,0,0,0,0,0,0,164,252,252,217,71,0,0,0,0,0,29,94,206,252,253,252,126,0,0,0,0,0,0,0,0,0,0,18,216,252,221,29,0,0,0,0,45,233,239,252,252,252,253,252,126,0,0,0,0,0,0,0,0,0,0,0,163,252,231,81,27,0,6,64,64,253,252,252,252,252,253,205,51,0,0,0,0,0,0,0,0,0,0,0,14,147,252,252,229,211,215,252,252,253,252,252,252,252,86,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,106,168,211,211,211,211,237,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,252,169,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,198,253,252,224,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,190,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,157,253,253,236,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,245,252,251,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,121,128,253,255,253,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,219,240,240,248,252,252,252,253,252,252,252,249,212,34,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,252,252,252,253,252,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,252,252,252,243,172,172,39,39,89,240,252,252,246,78,0,0,0,0,0,0,0,0,0,0,0,0,166,185,185,87,53,47,0,0,0,0,0,87,238,252,252,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,203,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,252,252,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,249,252,252,232,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,250,252,252,231,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,137,253,252,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,224,252,253,252,252,95,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,223,252,252,253,235,93,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,240,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,252,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,157,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,229,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,211,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,237,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,205,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,183,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,235,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,253,251,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,253,253,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,224,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,46,137,181,200,250,137,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,254,254,254,254,189,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,224,254,254,254,254,254,254,254,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,228,254,254,194,183,186,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,165,74,8,0,151,254,254,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,160,254,254,254,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,210,254,254,254,228,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,254,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,204,254,254,193,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,226,254,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,248,252,182,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,255,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,156,252,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,230,255,254,254,237,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,48,115,181,254,254,254,254,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,184,247,254,254,254,254,254,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,241,254,254,254,254,254,254,254,223,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,254,254,254,254,231,118,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,224,254,254,252,135,117,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,89,133,254,255,201,59,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,245,253,254,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,241,253,61,78,78,196,253,241,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,240,16,0,0,20,223,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,174,0,0,0,5,155,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,143,222,48,0,0,0,0,79,254,178,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,237,230,42,0,0,0,0,73,236,193,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,104,120,24,0,0,0,0,0,222,137,19,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,172,11,0,0,4,12,157,23,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,222,12,0,0,50,153,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,185,254,126,59,156,246,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,200,166,91,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,211,253,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,192,232,225,176,229,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,120,65,18,0,135,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,218,53,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,245,71,0,0,0,111,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,235,254,136,0,43,153,224,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,251,234,206,253,146,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,162,253,200,155,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,200,254,222,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,186,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,221,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,76,241,253,253,236,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,226,253,253,253,239,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,86,235,253,253,237,168,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,189,253,253,253,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,230,253,253,253,214,158,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,215,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,235,253,253,253,229,47,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,104,226,253,253,241,149,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,194,253,253,253,151,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,195,253,253,253,237,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,244,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,249,253,236,196,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,248,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,162,253,253,192,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,246,252,252,252,253,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,243,252,252,219,56,210,252,235,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,203,252,252,248,196,16,83,246,252,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,250,115,0,0,0,176,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,246,43,0,0,0,138,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,241,0,0,0,0,120,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,243,248,88,12,0,21,223,252,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,170,44,67,252,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,252,252,238,239,252,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,129,245,253,255,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,204,252,253,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,174,252,252,167,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,252,252,137,31,246,248,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,202,12,0,90,243,197,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,89,0,0,0,171,252,216,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,70,0,0,0,9,190,252,236,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,252,189,45,45,45,45,201,252,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,252,252,252,253,252,252,252,252,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,100,224,252,253,252,161,142,71,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,165,222,255,176,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,250,254,254,254,254,252,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,124,26,74,146,76,131,111,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,182,1,0,0,0,0,183,254,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,169,0,0,0,0,7,208,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,202,5,0,0,0,48,235,254,251,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,94,0,0,41,187,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,235,254,226,161,239,252,254,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,235,254,254,254,254,229,237,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,88,120,73,31,18,183,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,231,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,192,230,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,55,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,212,218,221,254,232,166,128,89,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,250,235,164,144,145,164,222,216,248,174,90,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,57,0,0,0,0,0,0,0,52,189,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,243,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,81,165,236,236,204,146,246,251,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,205,231,165,127,127,172,254,254,254,251,153,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,161,77,110,148,213,243,131,67,151,242,220,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,228,255,254,254,182,72,26,0,0,0,26,157,238,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,185,241,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,194,194,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,227,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,219,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,164,254,170,0,0,0,0,0,0,0,0,0,20,177,164,145,114,61,47,24,36,55,36,68,145,145,237,215,153,37,5,0,0,0,0,0,0,0,0,0,0,6,75,159,228,227,248,207,241,244,204,217,139,36,36,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,54,16,54,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,134,254,254,254,254,255,146,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,242,253,253,253,253,253,253,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,164,253,253,253,212,82,82,173,220,253,253,244,85,0,0,0,0,0,0,0,0,0,0,0,0,0,10,164,253,253,253,73,29,0,0,0,24,236,253,253,219,20,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,253,125,2,0,0,0,0,34,239,253,253,253,189,19,0,0,0,0,0,0,0,0,0,0,8,196,253,253,174,4,0,0,0,0,0,95,253,253,253,253,253,53,0,0,0,0,0,0,0,0,0,0,131,253,253,253,107,0,0,0,0,0,0,95,253,242,88,251,253,206,17,0,0,0,0,0,0,0,0,0,136,253,253,213,21,0,0,0,0,0,0,42,112,3,0,154,253,253,101,0,0,0,0,0,0,0,0,0,136,253,253,108,0,0,0,0,0,0,0,0,0,0,0,48,253,253,152,0,0,0,0,0,0,0,0,0,136,253,253,65,0,0,0,0,0,0,0,0,0,0,0,48,253,253,223,12,0,0,0,0,0,0,0,0,136,253,253,65,0,0,0,0,0,0,0,0,0,0,0,48,253,253,253,109,0,0,0,0,0,0,0,0,136,253,253,65,0,0,0,0,0,0,0,0,0,0,0,48,253,253,253,91,0,0,0,0,0,0,0,0,84,253,253,148,21,0,0,0,0,0,0,0,0,0,0,103,253,253,253,17,0,0,0,0,0,0,0,0,1,156,253,253,112,2,0,0,0,0,0,0,0,0,16,208,253,253,201,9,0,0,0,0,0,0,0,0,0,81,244,253,253,43,0,0,0,0,0,0,0,16,112,253,253,244,80,0,0,0,0,0,0,0,0,0,0,0,149,253,253,216,30,0,0,0,0,0,0,152,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,15,176,253,253,219,118,25,0,20,66,173,252,253,253,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,178,253,253,253,220,201,217,253,253,253,253,177,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,139,202,253,253,253,253,253,253,249,139,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,154,253,253,209,83,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,151,254,254,254,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,151,252,253,253,253,253,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,218,253,253,253,253,253,253,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,148,250,253,253,253,178,59,176,253,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,225,155,58,7,0,37,218,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,249,253,225,49,0,0,0,0,0,117,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,181,27,0,0,0,0,0,0,33,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,33,236,253,128,0,0,0,0,0,0,0,33,253,253,251,96,0,0,0,0,0,0,0,0,0,0,0,32,146,253,180,8,0,0,0,0,0,0,0,44,139,253,253,153,0,0,0,0,0,0,0,0,0,0,0,112,253,228,53,0,0,0,0,0,0,0,0,30,27,253,253,247,0,0,0,0,0,0,0,0,0,0,0,112,253,126,0,0,0,0,0,0,0,0,0,0,27,253,253,247,0,0,0,0,0,0,0,0,0,0,25,207,253,25,0,0,0,0,0,0,0,0,0,0,27,253,253,247,0,0,0,0,0,0,0,0,0,0,208,253,253,25,0,0,0,0,0,0,0,0,0,0,27,253,253,247,0,0,0,0,0,0,0,0,0,0,248,253,253,25,0,0,0,0,0,0,0,0,0,0,27,253,253,226,0,0,0,0,0,0,0,0,0,0,248,253,253,25,0,0,0,0,0,0,0,0,0,5,123,253,253,117,0,0,0,0,0,0,0,0,0,0,234,253,253,39,0,0,0,0,0,0,0,0,0,47,253,240,245,45,0,0,0,0,0,0,0,0,0,0,109,252,253,213,104,14,0,0,0,0,0,14,20,170,253,188,222,0,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,216,143,107,14,111,143,220,253,253,164,45,0,0,0,0,0,0,0,0,0,0,0,0,0,51,117,236,253,253,253,253,253,253,253,253,252,162,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,170,253,253,253,253,155,123,123,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,173,255,254,213,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,155,242,254,254,254,254,242,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,254,100,8,8,91,239,241,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,254,99,2,0,0,0,144,254,248,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,179,2,0,0,0,55,250,238,196,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,112,0,0,0,0,122,254,178,39,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,130,0,0,0,0,169,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,247,91,0,0,100,248,237,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,224,247,220,220,248,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,171,210,210,232,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,216,250,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,237,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,192,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,255,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,122,247,253,253,253,251,200,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,146,221,253,253,253,253,253,253,190,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,250,253,253,253,228,151,7,160,253,250,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,237,253,253,249,139,44,0,0,156,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,247,253,253,253,145,0,0,0,0,28,203,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,248,243,89,14,5,0,0,0,0,111,248,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,60,0,0,0,0,0,0,0,123,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,253,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,133,253,220,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,199,253,253,155,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,200,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,70,70,173,237,253,246,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,16,16,128,169,169,228,253,253,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,253,253,253,253,253,253,253,253,249,116,21,0,0,0,0,0,0,0,0,0,0,0,36,119,222,253,253,253,221,210,253,253,253,253,253,253,253,253,45,0,0,0,0,0,0,0,0,0,0,124,215,253,253,249,100,92,125,189,253,253,253,243,92,224,253,253,50,0,0,0,0,0,0,0,0,0,43,134,253,253,170,66,0,14,109,241,253,253,157,136,0,128,253,253,133,0,0,0,0,0,0,0,0,0,101,253,253,50,11,0,70,214,253,253,248,124,6,0,0,183,253,253,45,0,0,0,0,0,0,0,0,0,40,99,99,3,0,0,34,99,99,99,90,0,0,0,0,156,253,187,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,70,187,254,237,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,189,249,253,254,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,149,254,240,145,46,46,84,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,253,195,40,0,0,0,47,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,136,0,0,0,0,0,72,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,251,181,6,0,0,0,0,55,235,232,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,62,0,0,0,3,91,237,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,236,29,0,0,17,140,253,254,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,103,70,128,245,222,84,255,224,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,241,253,253,241,156,29,85,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,137,137,34,0,0,134,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,234,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,249,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,76,153,255,255,254,229,146,89,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,227,253,253,253,253,253,253,253,253,206,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,122,250,253,253,253,250,250,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,253,183,102,37,93,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,5,228,253,253,182,15,0,0,93,253,253,253,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,3,205,253,253,149,3,0,0,89,253,253,253,253,218,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,142,4,0,0,126,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,139,245,253,253,187,0,32,218,253,253,195,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,247,253,252,233,240,253,250,195,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,241,253,253,253,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,216,253,253,253,197,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,248,253,253,253,253,236,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,233,253,253,145,168,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,141,4,11,210,253,242,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,227,28,0,0,142,253,253,250,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,238,41,0,0,30,215,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,103,0,0,0,130,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,228,253,252,196,141,141,198,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,253,253,253,253,253,253,226,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,58,182,253,253,253,253,156,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,255,189,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,132,236,196,254,254,157,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,241,248,180,109,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,202,28,134,41,36,251,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,229,20,0,0,24,218,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,175,0,0,4,174,254,157,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,145,0,6,159,254,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,158,21,174,254,188,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,229,183,254,190,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,247,254,161,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,236,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,226,238,55,248,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,103,0,216,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,240,179,3,0,195,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,98,0,41,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,240,6,0,51,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,181,0,5,206,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,239,157,200,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,238,254,168,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,255,180,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,253,245,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,253,186,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,119,253,238,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,194,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,56,253,253,230,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,208,253,253,201,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,193,253,204,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,142,253,221,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,219,253,253,157,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,214,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,228,253,247,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,214,253,199,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,242,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,213,253,253,199,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,246,253,207,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,179,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,255,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,253,199,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,132,253,236,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,253,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,112,229,254,173,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,193,253,253,90,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,141,207,254,248,179,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,226,248,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,128,0,0,0,85,151,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,237,29,0,187,254,254,254,204,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,236,150,230,254,253,253,253,140,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,253,253,253,254,253,253,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,186,253,253,253,254,253,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,199,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,72,235,253,236,157,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,240,254,253,183,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,195,143,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,255,184,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,253,250,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,246,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,224,253,179,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,39,39,228,253,253,164,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,173,253,253,130,123,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,246,253,245,94,2,16,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,31,199,253,237,175,62,0,0,16,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,253,253,253,123,0,0,0,0,8,182,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,198,253,227,64,11,0,0,0,0,0,116,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,253,253,154,0,0,0,0,0,0,11,212,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,253,185,8,0,0,0,0,0,0,16,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,242,83,0,0,0,0,0,0,0,58,253,236,67,0,0,0,0,0,0,0,0,0,0,0,0,0,99,251,214,0,0,0,0,0,0,0,5,175,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,214,0,0,0,0,0,0,0,140,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,248,247,216,164,17,0,0,6,62,137,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,253,253,186,162,162,170,253,253,253,179,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,227,253,253,253,253,253,253,253,253,180,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,199,217,253,253,253,253,253,163,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,99,99,240,239,99,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,85,123,197,253,252,234,197,135,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,229,252,252,252,253,252,164,240,253,246,187,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,214,113,76,0,0,0,0,0,63,113,210,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,172,177,0,0,0,0,0,0,0,0,0,0,28,209,244,56,0,0,0,0,0,0,0,0,0,0,0,0,19,31,0,0,0,0,0,0,0,0,0,0,0,76,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,221,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,168,0,0,0,0,0,0,0,0,0,0,101,187,113,226,225,225,225,163,113,76,0,0,0,0,0,253,252,68,0,0,0,0,0,0,0,0,0,154,253,244,225,126,225,225,250,254,253,253,253,242,141,91,191,254,184,0,0,0,0,0,0,0,0,0,0,253,240,130,0,0,0,0,75,84,84,122,196,253,252,252,252,253,122,13,0,0,0,0,0,0,0,0,0,253,215,19,0,0,0,0,0,0,0,67,185,253,252,252,252,253,252,171,47,0,0,0,0,0,0,0,0,253,252,143,13,0,26,113,113,226,225,246,252,253,227,103,28,153,252,252,240,0,0,0,0,0,0,0,0,13,188,247,253,255,253,253,253,251,225,187,113,101,0,0,0,0,101,235,241,0,0,0,0,0,0,0,0,0,0,66,84,146,171,84,84,75,0,0,0,0,0,0,0,0,0,28,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,128,148,148,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,173,253,253,253,218,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,190,253,250,145,197,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,220,253,249,113,0,88,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,221,253,228,95,0,0,88,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,228,77,0,0,0,27,254,236,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,138,34,0,0,0,0,88,254,226,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,227,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,224,253,124,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,104,148,222,253,192,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,140,220,253,253,253,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,152,250,253,253,253,224,86,71,239,243,140,44,5,0,0,20,44,81,128,0,0,0,0,0,0,0,0,166,253,253,253,253,181,42,0,0,91,241,253,253,214,210,210,229,253,253,253,0,0,0,0,0,0,0,0,236,253,253,220,94,9,0,0,0,0,62,163,196,226,226,226,226,160,139,110,0,0,0,0,0,0,0,0,119,148,97,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,199,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,104,254,245,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,219,33,0,0,0,0,0,2,153,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,229,254,131,0,0,0,0,0,76,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,222,23,0,0,0,0,0,159,254,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,194,254,197,0,0,0,0,0,104,250,254,184,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,165,0,0,0,0,7,229,254,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,243,254,203,42,0,0,0,0,156,254,254,179,3,43,0,0,0,0,0,0,0,0,0,0,0,0,65,241,254,254,133,0,0,0,0,5,204,254,254,96,0,226,157,0,0,0,0,0,0,0,0,0,0,64,239,254,254,254,232,167,84,0,0,108,254,254,183,12,0,151,246,49,0,0,0,0,0,0,0,0,0,227,254,254,254,254,254,254,254,219,161,244,254,254,89,30,129,254,247,49,0,0,0,0,0,0,0,0,50,247,254,200,70,70,153,238,254,254,254,254,254,254,228,238,254,254,211,0,0,0,0,0,0,0,0,0,0,133,112,19,0,0,0,34,102,223,254,254,254,254,254,254,247,223,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,177,254,254,219,147,178,102,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,254,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,243,254,255,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,254,254,170,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,177,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,160,85,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,238,108,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,174,145,0,34,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,42,0,0,171,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,207,83,0,0,226,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,105,44,238,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,221,254,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,250,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,225,207,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,235,168,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,190,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,126,229,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,210,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,203,208,49,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,184,255,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,177,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,221,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,188,236,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,216,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,217,235,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,251,173,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,218,169,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,193,128,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,226,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,67,185,86,67,67,102,255,122,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,235,253,253,253,253,253,253,253,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,231,253,253,253,251,243,243,243,243,243,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,224,177,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,237,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,185,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,249,146,29,29,29,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,253,253,253,146,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,146,253,253,253,253,253,253,253,235,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,103,48,215,215,215,230,253,253,241,93,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,149,246,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,159,253,196,0,0,0,0,0,0,0,0,0,0,0,0,185,236,130,44,0,0,0,0,0,0,0,0,0,114,253,196,0,0,0,0,0,0,0,0,0,0,0,60,222,253,253,242,114,114,101,0,0,0,0,0,0,114,253,196,0,0,0,0,0,0,0,0,0,0,0,39,214,253,253,253,253,253,244,179,179,19,0,0,0,114,253,196,0,0,0,0,0,0,0,0,0,0,0,0,153,196,228,253,253,253,253,253,253,246,245,245,245,248,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,130,171,253,253,253,253,253,253,253,253,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,65,65,134,253,253,253,253,253,168,65,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,183,225,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127,254,250,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,248,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,118,223,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,254,254,220,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,254,177,0,0,0,0,18,57,163,132,33,0,0,0,0,0,0,0,0,0,0,0,0,0,5,175,254,254,222,22,0,0,0,19,185,254,254,254,226,13,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,254,177,0,0,0,0,169,254,254,254,254,254,52,0,0,0,0,0,0,0,0,0,0,0,4,176,254,254,128,19,0,0,0,91,243,254,254,254,254,254,230,46,0,0,0,0,0,0,0,0,0,0,53,254,254,254,93,0,0,0,51,243,254,254,254,225,205,254,254,136,0,0,0,0,0,0,0,0,0,3,177,254,254,186,16,0,0,0,63,254,254,254,224,45,17,235,254,136,0,0,0,0,0,0,0,0,0,7,254,254,254,99,0,0,0,0,63,254,254,225,45,0,37,239,254,136,0,0,0,0,0,0,0,0,0,7,254,254,254,147,0,0,0,0,63,254,254,205,100,207,236,254,254,136,0,0,0,0,0,0,0,0,0,7,254,254,254,252,151,36,0,76,142,254,254,254,254,254,254,255,254,85,0,0,0,0,0,0,0,0,0,1,91,254,254,254,254,243,237,249,254,254,254,254,254,254,254,208,142,7,0,0,0,0,0,0,0,0,0,0,1,148,254,254,254,254,254,254,254,254,254,254,254,254,102,7,0,0,0,0,0,0,0,0,0,0,0,0,0,3,79,206,254,254,254,254,254,254,156,130,88,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,157,241,254,254,254,201,115,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,237,254,245,237,237,237,248,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,242,149,32,0,0,0,96,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,32,0,0,0,0,0,0,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,246,249,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,218,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,248,215,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,218,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,178,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,254,163,4,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,6,132,248,208,25,0,0,0,21,58,58,58,58,58,77,114,163,242,0,0,0,0,0,0,0,0,24,98,184,254,254,241,230,230,230,230,239,254,254,254,254,254,254,254,254,232,0,0,0,0,0,0,0,0,218,254,254,254,254,254,254,254,254,230,204,180,180,180,180,180,161,98,48,11,0,0,0,0,0,0,0,0,145,166,90,53,8,8,8,8,8,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,209,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,251,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,199,254,224,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,254,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,242,254,241,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,240,254,242,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,239,255,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,217,254,254,195,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,175,254,254,246,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,242,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,254,203,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,242,254,252,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,145,161,195,161,120,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,114,198,243,253,253,254,253,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,178,253,254,248,221,137,113,46,173,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,185,222,253,253,169,56,0,0,0,0,149,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,255,254,188,25,0,0,0,0,19,136,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,254,77,4,0,0,0,0,0,104,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,137,146,4,0,0,0,0,11,125,254,253,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,215,253,254,219,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,212,254,254,254,237,161,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,206,254,253,248,206,207,206,244,253,206,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,247,179,58,0,0,0,38,154,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,185,84,0,0,0,0,0,9,184,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,147,249,253,124,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,187,253,253,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,134,234,254,253,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,69,0,0,0,0,128,212,254,254,236,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,245,47,47,130,230,254,253,253,185,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,246,254,253,253,253,247,213,96,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,161,245,244,160,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,7,37,130,130,130,173,254,254,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,92,214,253,253,253,253,253,253,253,253,253,253,202,7,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,253,253,253,253,253,253,247,235,251,253,253,253,12,0,0,0,0,0,0,0,0,0,0,0,0,23,231,253,253,253,253,235,195,105,72,0,217,253,253,242,11,0,0,0,0,0,0,0,0,0,0,0,0,0,13,99,159,99,99,27,0,0,0,0,217,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,240,253,238,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,239,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,50,50,147,238,253,253,185,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,232,253,253,253,253,253,253,176,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,213,253,253,253,253,253,253,253,253,225,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,89,185,203,253,253,253,253,253,253,226,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,55,55,98,179,244,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,135,0,0,0,0,0,0,0,0,0,0,54,100,41,0,0,0,0,0,0,0,0,0,0,86,235,253,209,22,0,0,0,0,0,0,0,0,0,6,242,253,227,106,39,0,0,0,0,0,0,0,37,232,253,253,30,0,0,0,0,0,0,0,0,0,0,7,253,253,253,253,93,0,0,0,0,0,0,130,242,253,253,207,10,0,0,0,0,0,0,0,0,0,0,4,199,253,253,253,228,98,0,0,29,119,215,251,253,253,101,7,0,0,0,0,0,0,0,0,0,0,0,0,9,199,253,253,253,252,248,248,249,253,253,253,211,23,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,132,214,253,254,253,203,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,142,203,203,253,252,253,252,151,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,244,203,142,102,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,91,51,51,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,253,252,253,172,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,203,162,102,102,203,223,254,253,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,171,0,0,0,0,0,20,112,192,253,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,203,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,232,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,234,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,212,0,0,0,0,0,0,0,0,0,0,0,0,113,92,0,0,0,0,0,0,0,0,0,0,31,173,244,40,0,0,0,0,0,0,0,0,0,0,0,82,253,151,0,0,0,0,0,0,21,102,102,183,233,212,81,0,0,0,0,0,0,0,0,0,0,0,0,82,255,253,234,152,153,193,173,253,254,253,254,213,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,151,151,232,253,212,192,151,131,50,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,211,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,237,253,252,226,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,191,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,155,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,232,252,252,210,98,242,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,181,252,252,226,31,0,217,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,252,132,0,0,217,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,222,41,0,0,73,253,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,252,252,252,97,11,73,73,125,252,252,176,73,73,73,73,73,21,0,0,0,0,0,0,0,0,0,109,252,252,252,252,231,191,252,253,252,252,252,253,252,252,252,253,252,175,0,0,0,0,0,0,0,0,0,109,252,252,252,252,252,252,252,253,252,252,252,253,252,252,252,253,252,236,62,0,0,0,0,0,0,0,0,63,238,253,253,253,253,253,253,255,253,253,253,255,253,175,144,145,144,41,0,0,0,0,0,0,0,0,0,0,154,179,179,179,179,158,35,35,98,252,252,253,65,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,252,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,190,252,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,135,226,226,205,94,94,94,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,207,248,252,252,252,252,252,252,252,235,157,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,252,192,143,53,53,123,67,185,220,253,252,183,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,229,20,0,0,0,0,0,0,35,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,125,0,0,0,0,0,0,0,0,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,5,0,0,0,0,0,0,0,0,253,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,253,252,197,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,255,202,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,191,252,253,247,121,107,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,115,229,252,252,253,252,252,252,245,198,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,213,221,252,252,252,252,253,252,252,252,252,252,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,252,209,178,53,53,53,53,95,238,252,222,60,117,200,0,0,0,0,0,0,0,0,0,0,0,64,198,170,66,24,0,0,0,0,0,0,88,238,252,245,193,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,93,93,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,116,238,255,214,92,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,188,253,213,160,160,252,211,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,215,236,149,22,0,0,27,149,235,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,58,0,0,0,0,0,0,91,119,0,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,88,249,126,3,0,0,0,0,0,0,0,8,86,234,250,86,0,0,0,0,0,0,0,0,0,0,0,26,233,198,0,0,0,0,0,0,0,0,39,171,247,111,229,93,0,0,0,0,0,0,0,0,0,0,0,86,253,75,0,0,0,0,0,0,0,49,231,206,38,0,218,93,0,0,0,0,0,0,0,0,0,0,0,166,199,7,0,0,0,0,0,0,53,232,128,0,0,0,218,93,0,0,0,0,0,0,0,0,0,0,41,248,168,0,0,0,0,0,2,46,234,133,3,0,0,2,219,93,0,0,0,0,0,0,0,0,0,0,94,253,67,0,0,0,0,23,136,233,84,0,0,0,0,68,253,93,0,0,0,0,0,0,0,0,0,0,176,253,67,0,0,0,25,165,233,53,0,0,0,0,0,68,253,93,0,0,0,0,0,0,0,0,0,0,96,253,139,42,42,49,214,191,44,0,0,0,0,0,0,85,243,2,0,0,0,0,0,0,0,0,0,0,23,210,253,253,253,253,170,35,0,0,0,0,0,0,0,171,243,0,0,0,0,0,0,0,0,0,0,0,0,23,119,119,119,27,6,0,0,0,0,0,0,0,12,215,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,215,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,245,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,216,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,249,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,252,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,253,252,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,212,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,248,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,201,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,241,252,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,218,252,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,219,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,252,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,166,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,96,73,136,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,212,253,135,253,167,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,11,89,253,253,215,253,232,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,189,219,137,190,253,240,200,253,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,109,218,253,253,253,249,151,38,66,253,235,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,203,206,30,0,0,66,253,253,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,188,253,252,102,80,6,0,0,0,66,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,242,253,222,28,0,0,0,0,27,170,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,15,25,222,114,212,72,0,0,0,0,0,67,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,133,204,172,98,79,36,0,0,0,0,3,128,227,253,253,230,49,0,0,0,0,0,0,0,0,0,11,78,209,253,253,252,78,0,0,0,0,0,84,253,253,253,228,52,0,0,0,0,0,0,0,0,0,0,80,253,253,253,213,45,0,0,0,0,36,104,253,253,253,185,52,0,0,0,0,0,0,0,0,0,0,17,244,253,253,253,95,0,0,0,0,0,158,177,253,253,210,7,0,0,0,0,0,0,0,0,0,0,0,134,253,253,217,82,1,9,130,130,213,193,253,253,253,233,45,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,182,11,80,200,253,253,253,253,253,253,219,44,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,229,196,253,253,253,253,253,253,236,153,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,238,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,246,151,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,164,150,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,17,17,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,254,206,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,126,197,234,155,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,160,253,253,253,253,253,253,253,234,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,253,253,253,253,253,139,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,253,253,253,253,253,249,220,253,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,253,253,253,253,217,91,7,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,253,253,253,146,33,0,4,186,253,213,28,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,253,253,253,253,214,27,0,0,0,125,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,116,0,0,0,0,125,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,127,5,0,0,0,0,125,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,62,242,253,250,134,2,0,0,0,0,32,219,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,181,138,0,0,0,0,0,0,144,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,147,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,253,253,253,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,253,174,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,242,253,253,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,228,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,243,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,249,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,71,0,0,0,0,0,0,35,243,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,114,0,0,0,0,0,78,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,247,83,0,0,0,0,0,140,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,227,0,0,0,0,0,0,189,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,248,182,0,0,0,0,0,0,228,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,139,0,0,0,0,0,0,228,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,130,0,0,0,0,0,49,248,254,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,52,0,0,0,0,0,134,254,214,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,52,0,0,0,3,119,249,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,113,0,0,0,200,254,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,140,39,167,227,231,122,155,255,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,250,249,251,183,6,0,149,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,140,247,186,71,0,0,0,149,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,23,0,0,0,0,0,131,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,250,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,243,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,242,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,254,236,167,167,167,101,80,110,80,104,167,167,167,209,254,248,74,0,0,0,0,0,0,0,0,0,0,191,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,212,0,0,0,0,0,0,0,0,0,0,11,150,192,192,192,241,254,254,254,254,254,254,254,243,243,254,254,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,26,26,26,26,26,26,26,31,189,254,254,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,251,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,205,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,234,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,245,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,241,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,208,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,254,245,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,211,254,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,255,224,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,235,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,254,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,242,254,255,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,132,213,253,253,253,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,186,253,253,253,253,113,55,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,141,253,253,253,253,239,177,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,154,253,253,253,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,207,234,253,253,253,250,234,108,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,223,253,253,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,151,208,253,253,253,253,196,103,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,253,253,253,253,253,253,169,29,29,29,29,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,218,253,253,253,253,253,253,253,253,253,253,253,106,53,0,0,0,0,0,0,0,0,0,0,0,0,42,208,253,253,253,253,253,253,253,253,253,253,253,253,253,211,47,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,234,44,20,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,191,149,149,149,149,149,149,246,253,253,253,130,0,0,0,0,0,0,0,0,0,67,253,253,253,253,114,84,34,0,0,0,0,0,0,236,253,253,253,130,0,0,0,0,0,0,0,0,0,67,253,253,253,253,85,32,0,0,0,0,0,0,32,239,253,253,253,130,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,206,114,17,43,114,114,114,207,253,253,253,253,130,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,253,189,206,253,253,253,253,253,253,253,80,38,0,0,0,0,0,0,0,0,0,2,8,157,253,253,253,253,253,253,253,253,253,253,253,200,196,63,1,0,0,0,0,0,0,0,0,0,0,0,0,5,130,199,253,253,253,253,253,253,253,253,170,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,79,253,253,231,65,65,65,65,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,91,91,209,227,233,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,236,254,254,185,37,155,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,228,254,250,161,27,0,76,226,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,254,245,78,0,0,0,76,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,226,254,243,114,0,0,0,0,76,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,247,43,0,0,0,0,0,118,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,162,50,0,0,0,0,0,0,169,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,251,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,225,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,230,196,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,199,252,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,255,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,249,200,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,247,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,154,253,170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,73,47,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,132,235,236,235,157,224,253,247,249,190,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,253,253,254,253,253,250,216,217,216,216,214,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,251,235,177,144,99,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,167,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,242,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,242,254,143,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,232,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,245,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,193,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,201,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,255,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,235,235,235,235,236,235,235,235,248,254,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,227,253,253,253,254,253,253,253,253,254,245,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,54,126,144,235,235,235,235,235,235,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,144,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,67,67,67,115,254,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,225,253,253,253,253,254,253,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,235,250,253,253,253,253,253,254,189,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,253,253,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,253,253,253,226,242,254,210,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,253,253,248,175,44,221,254,224,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,209,170,52,0,14,227,254,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,244,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,217,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,211,254,254,145,0,0,0,0,0,0,21,149,254,0,0,0,0,0,0,0,0,0,0,27,125,177,177,180,253,253,176,0,0,0,0,0,0,0,155,253,253,0,0,0,0,0,0,0,0,0,99,227,253,253,253,253,253,253,143,0,0,0,0,0,0,53,237,253,210,0,0,0,0,0,0,0,0,28,217,253,251,246,253,253,253,253,249,120,17,19,23,23,110,239,253,213,20,0,0,0,0,0,0,0,0,144,253,253,116,185,253,253,253,253,253,255,230,238,253,253,253,253,244,90,0,0,0,0,0,0,0,0,0,231,253,253,181,253,253,245,74,231,253,254,253,253,253,253,253,250,88,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,211,78,0,16,166,243,242,252,253,251,204,30,0,0,0,0,0,0,0,0,0,0,0,235,253,253,253,244,88,0,0,0,0,0,0,82,99,78,0,0,0,0,0,0,0,0,0,0,0,0,0,101,230,253,179,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,175,255,254,234,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,254,254,238,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,213,165,16,18,150,254,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,237,80,0,0,54,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,158,195,0,0,0,197,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,78,0,0,0,89,254,217,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,250,48,0,0,0,30,254,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,243,0,0,0,0,30,254,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,249,39,0,0,0,75,254,189,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,209,67,37,58,232,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,227,254,254,254,254,254,179,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,167,224,237,254,242,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,231,227,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,238,237,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,226,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,242,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,229,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,152,193,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,162,0,82,163,203,253,252,253,252,151,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,132,254,253,254,253,254,233,203,203,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,183,213,252,253,252,192,151,50,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,203,142,102,152,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,183,0,0,41,113,152,254,253,193,71,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,212,20,41,163,243,253,252,192,192,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,213,173,253,254,213,82,0,0,0,62,223,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,212,91,10,0,0,0,0,0,122,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,122,82,0,0,0,0,0,0,0,0,0,255,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,10,0,0,0,0,0,0,0,62,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,91,0,0,0,0,0,0,0,183,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,41,0,0,0,0,0,72,233,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,243,122,0,0,21,142,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,234,253,255,253,255,253,244,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,131,253,252,253,171,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,254,255,223,223,254,190,165,141,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,131,104,185,191,191,217,254,254,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,27,163,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,244,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,67,239,239,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,149,253,178,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,216,243,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,225,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,229,235,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,206,254,224,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,98,236,253,181,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,217,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,224,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,162,253,113,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,25,0,0,0,38,145,251,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,84,0,18,100,231,250,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,219,208,192,231,254,231,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,165,144,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,0,0,0,0,0,0,0,0,13,220,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,161,0,0,0,0,0,0,0,0,63,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,161,0,0,0,0,0,0,0,0,195,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,167,136,0,0,0,0,0,0,0,36,246,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,243,30,0,0,0,0,0,0,0,178,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,200,0,0,0,0,0,0,0,37,250,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,183,0,0,0,0,0,0,0,140,255,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,128,0,0,0,0,0,0,0,183,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,128,0,0,0,0,0,0,44,242,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,179,0,0,0,0,0,11,155,162,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,201,1,0,0,0,43,199,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,138,33,30,83,215,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,255,248,245,255,184,228,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,133,204,155,73,51,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,158,243,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,128,243,253,254,254,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,152,248,255,254,196,96,17,131,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,209,254,235,114,29,2,0,0,202,248,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,235,254,216,23,0,0,0,0,99,248,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,216,254,184,12,0,0,0,0,50,236,249,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,182,209,13,0,0,0,0,46,240,249,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,128,250,254,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,254,254,141,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,163,166,166,242,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,226,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,244,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,248,49,0,0,0,0,0,0,0,0,0,0,0,0,11,54,12,0,0,0,0,0,0,0,0,0,8,218,227,0,0,0,0,0,0,0,0,0,0,0,0,0,134,201,0,0,0,0,0,0,0,0,0,0,129,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,149,206,4,0,0,0,0,0,0,0,0,61,247,250,47,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,201,121,36,5,0,0,6,18,122,248,251,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,203,252,254,201,184,184,206,254,254,246,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,127,254,254,254,254,229,144,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,100,100,100,100,100,100,100,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,249,252,252,252,252,252,253,252,244,242,218,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,216,88,93,130,88,135,103,197,197,226,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,115,24,0,0,0,0,0,0,0,46,252,233,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,135,248,219,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,243,252,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,82,255,253,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,67,67,32,0,0,0,60,199,252,253,177,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,220,100,100,105,236,252,252,197,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,252,252,27,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,252,252,252,252,252,252,253,229,165,60,56,56,56,22,0,0,0,0,0,0,0,0,0,0,117,226,252,252,252,183,64,122,164,241,253,252,252,252,252,252,252,219,198,150,0,0,0,0,0,0,0,0,0,15,70,128,60,5,0,0,0,19,22,99,131,131,131,218,241,241,241,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,121,241,254,254,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,108,248,253,253,253,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,186,213,173,253,254,253,253,253,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,174,46,232,253,253,95,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,253,253,36,121,248,253,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,166,253,253,253,223,250,253,194,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,94,236,253,254,253,238,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,214,253,254,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,253,253,254,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,253,254,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,254,241,0,122,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,209,253,185,68,0,121,253,249,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,220,253,238,59,0,0,13,242,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,236,75,0,0,0,39,245,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,253,199,0,0,0,0,121,253,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,199,0,0,0,0,149,253,155,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,208,13,0,24,112,255,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,214,253,253,189,161,214,253,255,171,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,223,253,253,253,253,253,184,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,147,253,253,246,120,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,115,254,254,254,255,254,156,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,127,248,253,253,253,253,253,253,253,231,64,0,0,0,0,0,0,0,0,0,0,27,146,146,125,0,138,224,253,253,253,253,253,253,253,253,253,253,230,58,0,0,0,0,0,0,0,0,0,197,253,253,252,247,253,253,253,253,253,253,228,160,203,253,253,253,253,99,0,0,0,0,0,0,0,0,77,240,253,253,253,253,253,253,253,253,212,61,44,0,28,61,159,214,88,24,0,0,0,0,0,0,0,0,101,253,253,253,253,253,253,253,253,127,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,235,253,253,253,253,253,253,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,240,253,253,253,253,253,253,191,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,123,222,253,253,253,253,253,242,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,176,249,253,253,253,253,242,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,205,253,253,253,253,190,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,193,253,253,253,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,234,253,253,253,251,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,248,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,196,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,158,162,162,162,162,162,245,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,192,253,253,253,253,253,253,253,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,253,253,253,253,253,253,253,253,238,96,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,99,249,253,253,253,253,253,253,253,178,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,78,156,253,253,175,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,227,252,252,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,135,232,249,253,252,233,126,126,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,232,252,252,252,172,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,252,252,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,254,253,236,43,7,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,252,252,252,200,217,111,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,21,127,126,223,245,252,253,252,225,127,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,84,163,247,252,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,217,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,255,125,0,0,0,0,0,0,0,0,0,0,0,0,0,8,28,0,0,0,0,0,0,0,0,0,0,176,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,119,180,0,0,0,0,0,0,0,0,0,0,53,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,127,205,11,0,0,0,0,0,0,0,0,0,0,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,127,252,86,0,0,0,0,0,0,0,0,0,132,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,80,0,0,0,0,0,0,0,29,219,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,15,224,252,243,155,43,0,0,0,0,87,232,252,239,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,206,253,252,233,127,39,145,232,251,252,244,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,156,252,252,252,252,253,252,247,189,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,77,155,252,252,147,147,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,125,125,125,125,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,158,181,248,252,253,253,253,253,250,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,226,253,253,253,253,253,253,253,253,253,242,49,0,0,0,0,0,0,0,0,0,0,0,0,0,44,155,251,253,253,253,253,253,253,253,253,253,253,253,236,48,0,0,0,0,0,0,0,0,0,0,0,43,229,253,253,253,223,155,55,25,25,25,25,25,166,253,253,117,0,0,0,0,0,0,0,0,0,0,0,112,253,253,127,32,22,0,0,0,0,0,0,0,20,163,253,233,45,0,0,0,0,0,0,0,0,0,40,226,253,220,21,0,0,0,0,0,0,0,0,0,0,40,253,253,123,0,0,0,0,0,0,0,0,0,158,253,253,116,0,0,0,0,0,0,0,0,0,0,0,20,253,253,230,0,0,0,0,0,0,0,0,36,249,253,133,5,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,225,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,0,0,0,0,0,0,0,0,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,46,224,253,253,226,0,0,0,0,0,0,0,0,255,253,253,19,0,0,0,0,0,0,0,0,0,0,47,224,253,253,252,101,0,0,0,0,0,0,0,0,254,253,253,19,0,0,0,0,0,0,0,0,0,47,223,253,253,251,141,0,0,0,0,0,0,0,0,0,254,253,253,19,0,0,0,0,0,0,8,33,124,223,253,253,253,223,0,0,0,0,0,0,0,0,0,0,161,253,253,163,39,27,27,27,64,156,179,253,253,253,253,253,228,42,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,253,253,253,253,253,253,253,253,253,224,104,43,0,0,0,0,0,0,0,0,0,0,0,0,51,234,252,253,253,253,253,253,253,250,240,240,220,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,234,247,247,247,247,146,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,117,141,204,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,187,252,252,253,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,253,244,125,192,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,228,189,56,0,141,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,19,0,0,141,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,186,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,176,225,225,225,226,225,225,249,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,178,253,254,253,253,253,254,253,253,253,254,253,253,203,141,66,19,0,0,0,0,0,0,0,0,0,7,187,252,252,253,252,252,252,253,252,252,252,253,252,252,252,253,240,168,13,0,0,0,0,0,0,0,0,66,252,252,252,206,142,56,94,253,252,252,252,253,252,252,177,156,43,0,0,0,0,0,0,0,0,0,0,141,252,252,52,13,0,38,225,253,252,252,151,28,28,28,3,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,53,92,166,253,253,254,247,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,252,253,252,252,252,247,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,252,252,253,252,252,177,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,177,252,241,139,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,148,148,192,87,87,25,43,87,43,29,0,0,0,43,29,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,253,252,226,252,252,253,231,181,155,190,253,231,86,0,0,0,0,0,0,0,0,0,0,0,43,134,205,38,170,179,179,231,240,245,244,252,252,252,253,252,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,35,49,49,154,196,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,239,252,236,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,247,252,252,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,210,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,235,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,232,253,210,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,252,227,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,201,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,239,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,197,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,196,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,164,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,219,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,254,220,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,255,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,211,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,210,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,249,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,227,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,130,219,254,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,214,253,253,253,253,253,216,136,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,143,213,253,253,240,235,235,249,253,253,213,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,210,253,253,253,248,67,0,0,82,213,253,253,212,88,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,228,36,0,0,0,32,201,249,253,212,11,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,204,0,0,61,0,0,0,217,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,246,109,0,0,0,0,0,15,223,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,116,233,253,246,169,0,0,0,0,0,0,88,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,56,122,63,0,0,0,0,0,0,0,175,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,221,253,253,176,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,192,253,253,224,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,217,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,173,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,246,253,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,253,217,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,189,253,253,216,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,212,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,232,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,253,252,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,190,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,214,118,38,0,0,52,118,22,0,77,118,118,118,80,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,254,222,98,98,241,254,239,235,248,254,254,254,248,201,29,0,0,0,0,0,0,0,0,0,0,0,194,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,204,29,0,0,0,0,0,0,0,0,0,0,24,194,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,96,0,0,0,0,0,0,0,0,0,0,0,25,82,82,82,82,82,130,108,82,82,82,82,213,250,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,241,254,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,254,233,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,230,254,254,204,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,254,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,216,254,254,200,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,110,254,254,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,254,204,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,209,255,254,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,254,254,254,224,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,218,239,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,181,191,212,253,159,138,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,66,236,252,253,252,252,252,252,193,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,215,234,252,252,215,183,183,240,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,218,56,21,0,0,113,252,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,252,221,35,0,0,0,0,93,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,95,0,0,0,0,0,0,93,253,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,220,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,234,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,66,253,253,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,176,207,207,208,207,207,113,144,253,252,185,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,252,252,252,253,252,252,252,252,253,252,152,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,245,146,202,253,253,253,253,255,253,253,253,148,24,19,7,118,76,0,0,0,0,0,0,0,0,253,252,252,219,244,253,252,252,235,227,253,252,252,252,252,253,236,186,252,137,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,202,64,32,79,130,183,240,252,253,252,252,252,137,0,0,0,0,0,0,0,0,253,252,252,252,252,253,172,13,0,0,0,0,0,37,98,169,252,252,252,137,0,0,0,0,0,0,0,0,148,200,252,157,137,23,8,0,0,0,0,0,0,0,0,3,22,107,137,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,234,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,226,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,132,75,0,76,252,250,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,175,252,214,0,176,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,252,252,214,0,176,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,241,252,215,26,2,179,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,231,252,252,109,0,34,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,163,252,252,138,17,0,67,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,171,252,252,252,233,172,125,239,252,252,121,0,39,111,43,0,0,0,0,0,0,0,0,0,0,0,0,210,253,253,253,253,253,253,253,255,253,253,253,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,209,252,252,200,218,252,252,252,253,252,252,252,252,252,220,73,0,0,0,0,0,0,0,0,0,0,0,0,128,143,44,10,21,44,44,134,253,252,213,153,153,115,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,253,238,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,238,239,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,161,174,254,254,149,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,177,247,254,254,254,254,254,234,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,170,252,254,254,254,254,254,254,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,238,254,254,254,225,179,164,91,254,254,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,254,152,67,12,0,0,10,254,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,254,142,2,0,0,0,24,153,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,240,22,0,0,0,79,218,254,254,254,240,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,246,85,23,28,127,251,254,254,254,254,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,245,254,254,232,235,254,254,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,236,254,254,254,254,254,254,254,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,95,185,188,213,165,119,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,123,254,254,211,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,217,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,254,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,254,211,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,237,254,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,255,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,254,245,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,194,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,99,183,250,205,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,207,254,254,239,219,220,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,211,254,237,118,10,39,243,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,239,254,193,49,0,0,0,216,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,246,254,193,14,0,0,0,12,225,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,149,10,0,0,0,0,67,254,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,185,1,0,0,0,0,0,181,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,54,0,0,0,0,0,62,249,216,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,201,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,249,247,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,247,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,226,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,173,254,207,6,0,0,0,0,3,12,17,22,22,27,109,109,79,0,0,0,0,0,0,0,0,0,0,144,254,254,159,104,122,190,190,190,198,224,240,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,31,249,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,249,241,0,0,0,0,0,0,0,0,0,78,254,254,254,254,254,252,245,245,245,174,90,73,73,103,73,73,47,0,0,0,0,0,0,0,0,0,0,51,217,249,227,142,77,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,64,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,64,64,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,64,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,64,0,0,191,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,128,191,255,64,0,0,0,0,0,0,0,0,0,0,0,64,128,255,255,255,128,255,255,255,191,128,191,255,255,255,255,128,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,128,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,191,128,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,70,255,253,253,253,167,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,128,242,252,253,252,252,252,252,252,165,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,252,252,252,253,252,252,252,252,252,252,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,233,252,252,252,252,253,252,252,252,252,252,252,220,16,0,0,0,0,0,0,0,0,0,0,0,0,64,232,252,252,252,252,252,253,217,200,252,252,252,252,229,18,0,0,0,0,0,0,0,0,0,0,0,28,233,252,252,252,252,221,65,60,26,71,252,252,252,252,183,7,0,0,0,0,0,0,0,0,0,0,0,77,252,252,252,252,220,96,0,0,61,234,252,252,252,252,252,23,0,0,0,0,0,0,0,0,0,0,21,239,252,252,252,173,39,42,97,218,237,252,252,252,252,252,124,4,0,0,0,0,0,0,0,0,0,0,134,252,252,252,217,153,229,239,252,253,252,252,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,30,252,252,252,252,252,252,252,252,253,252,252,252,252,252,171,2,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,253,253,253,253,253,255,253,253,253,253,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,252,252,252,243,176,108,195,252,252,252,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,119,216,181,96,59,0,0,253,252,252,252,197,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,252,252,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,252,252,217,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,250,253,252,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,253,252,223,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,253,252,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,250,252,253,252,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,230,252,253,171,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,156,253,253,255,253,253,253,165,148,113,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,245,168,168,168,168,168,168,168,168,196,221,120,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,233,16,0,0,0,0,0,0,0,43,180,252,104,31,162,232,130,0,0,0,0,0,0,0,0,0,0,28,212,231,81,27,0,0,0,0,0,0,7,196,252,218,252,194,98,0,0,0,0,0,0,0,0,0,0,0,30,147,235,229,176,53,0,0,0,0,18,239,252,191,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,168,243,253,156,25,25,123,245,243,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,210,252,226,227,252,236,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,182,252,253,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,227,252,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,249,252,121,25,156,249,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,241,35,0,0,36,224,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,117,0,0,0,0,32,189,226,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,210,11,0,0,0,0,0,41,232,215,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,98,0,0,0,0,0,0,0,140,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,218,11,0,0,0,0,0,0,0,150,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,219,11,0,0,0,0,0,0,55,236,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,170,7,0,0,0,0,52,232,252,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,245,252,225,127,127,128,162,242,252,199,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,210,252,252,252,253,252,252,210,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,138,217,208,147,147,94,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,241,156,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,247,210,126,55,32,0,0,0,0,0,0,0,51,47,0,0,0,0,0,0,0,0,0,0,0,8,49,197,242,254,253,253,237,217,153,133,140,211,192,218,250,248,47,0,0,0,0,0,0,0,0,0,0,0,0,0,39,113,163,235,249,253,254,253,253,253,253,254,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,72,72,72,72,72,72,254,253,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,255,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,216,254,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,248,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,242,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,234,253,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,233,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,255,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,253,212,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,163,0,0,0,0,0,79,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,233,0,0,0,0,0,79,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,234,0,0,0,0,0,79,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,225,0,0,0,0,0,73,251,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,135,0,0,0,0,0,0,234,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,135,0,0,0,0,0,0,234,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,135,0,0,0,0,0,0,234,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,255,238,59,50,0,0,0,0,197,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,247,214,215,207,147,250,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,85,174,247,253,254,222,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,19,12,19,145,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,128,165,165,203,255,226,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,213,253,254,254,254,254,254,254,203,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,254,254,245,228,254,254,254,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,172,254,254,245,86,19,115,244,254,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,254,86,0,0,2,189,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,236,254,166,5,0,0,53,254,254,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,195,31,0,0,11,187,254,224,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,223,30,0,0,38,188,254,192,82,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,213,239,0,37,141,235,254,164,11,81,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,244,253,223,242,254,230,125,7,0,159,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,234,243,197,82,21,0,0,14,209,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,39,0,0,0,0,0,94,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,230,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,201,253,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,197,236,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,218,209,61,148,51,43,43,61,148,148,218,253,254,218,12,0,0,0,0,0,0,0,0,0,0,0,0,15,224,252,253,252,252,252,252,253,252,252,252,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,41,170,232,231,251,252,252,250,231,134,196,249,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,84,84,70,0,0,43,239,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,252,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,243,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,245,252,251,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,211,253,252,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,255,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,252,206,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,153,182,144,139,34,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,197,128,30,47,67,115,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,253,253,253,253,253,253,230,240,253,253,201,22,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,229,126,25,121,154,231,254,253,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,52,244,253,253,79,0,0,0,0,88,88,136,247,253,223,14,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,253,165,0,0,0,0,0,0,0,156,253,184,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,246,20,0,0,0,0,0,0,133,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,238,18,0,0,0,0,0,0,133,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,43,0,0,0,0,0,0,0,133,253,231,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,100,101,100,100,180,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,157,251,253,255,253,253,253,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,232,253,253,254,253,253,253,253,253,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,231,253,254,253,253,253,253,253,246,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,70,85,103,22,31,211,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,206,253,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,198,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,249,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,253,253,146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,179,253,249,103,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,236,253,233,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,206,253,228,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,213,0,0,0,0,57,134,134,134,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,254,80,0,0,0,122,248,254,254,254,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,80,0,6,108,254,253,253,196,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,233,50,0,134,253,254,213,39,134,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,199,0,9,181,253,216,100,0,214,253,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,242,74,157,253,253,28,0,25,225,253,211,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,147,253,253,253,26,111,212,253,239,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,253,253,253,253,213,253,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,253,253,253,253,253,255,253,253,188,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,205,242,253,253,253,255,240,120,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,120,197,253,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,38,139,146,234,162,255,210,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,160,253,253,253,253,253,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,253,253,253,253,251,248,252,253,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,238,238,201,102,63,0,173,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,41,0,0,0,56,233,253,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,191,253,249,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,121,235,253,241,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,172,225,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,215,246,253,253,253,253,253,211,35,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,253,253,253,253,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,220,152,54,95,171,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,115,55,10,0,0,0,2,123,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,238,253,5,0,0,0,0,0,0,0,0,0,0,0,0,3,200,189,12,0,0,0,0,0,0,7,116,245,253,242,4,0,0,0,0,0,0,0,0,0,0,0,0,80,253,65,0,0,0,0,0,24,75,192,253,253,237,66,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,141,104,104,104,111,211,226,253,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,253,253,253,253,253,253,253,253,227,60,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,253,253,253,253,253,208,75,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,163,253,253,253,253,200,145,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,236,254,253,156,78,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,182,232,252,253,252,252,252,182,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,239,252,252,252,250,152,233,252,252,206,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,218,252,252,252,252,211,0,42,196,252,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,252,252,252,252,79,0,0,55,235,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,253,250,185,62,0,0,22,139,253,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,204,168,66,57,85,85,164,221,252,252,239,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,206,232,246,252,253,252,252,252,244,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,252,252,253,252,252,252,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,226,252,252,164,147,147,244,252,252,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,253,237,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,22,7,0,0,0,0,64,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,197,252,128,0,0,0,0,64,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,219,252,244,49,0,0,0,0,152,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,219,254,253,109,0,0,0,0,4,183,253,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,253,252,142,64,0,0,0,136,252,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,232,253,252,252,247,232,171,127,242,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,200,252,252,252,252,253,252,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,51,147,191,253,252,244,121,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,136,254,152,13,0,0,0,74,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,224,253,254,253,129,0,13,114,249,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,249,253,236,138,200,137,9,187,253,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,236,119,19,0,138,188,209,254,236,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,235,255,82,0,0,0,130,254,254,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,224,42,0,130,251,253,202,115,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,245,253,232,207,254,253,192,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,177,253,253,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,237,254,254,254,254,220,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,226,253,219,23,73,177,253,214,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,69,0,0,21,154,254,228,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,244,44,0,0,0,25,220,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,146,0,0,0,0,0,104,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,253,46,0,0,0,0,0,70,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,232,25,0,0,0,0,0,70,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,240,34,0,0,0,0,0,104,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,211,44,0,0,0,26,221,254,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,224,253,236,139,72,138,214,254,244,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,253,254,253,253,253,247,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,135,254,253,253,219,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,252,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,70,70,70,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,252,252,252,253,252,252,173,9,0,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,244,252,252,252,253,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,202,253,253,245,178,106,22,216,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,193,253,252,240,79,0,0,9,197,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,252,253,240,81,0,0,0,78,252,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,252,245,131,0,0,0,9,194,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,215,252,252,73,0,0,0,0,24,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,75,0,0,0,0,0,97,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,206,164,8,0,0,0,0,22,253,252,187,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,164,215,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,252,252,253,235,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,193,252,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,253,255,253,86,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,231,232,252,252,119,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,252,252,227,48,55,252,252,227,80,7,91,184,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,66,0,5,67,227,252,252,212,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,137,54,4,0,0,0,17,158,252,253,178,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,191,128,128,128,128,128,191,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,191,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,64,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,115,235,254,254,227,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,121,243,253,253,253,253,253,239,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,194,253,253,253,201,165,173,232,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,237,253,253,238,77,7,0,0,78,251,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,167,19,0,0,18,153,25,165,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,215,253,253,43,31,30,72,198,253,135,3,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,162,253,253,253,253,253,253,253,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,209,253,253,253,253,253,253,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,131,158,196,215,253,253,248,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,149,253,253,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,230,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,239,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,221,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,223,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,246,253,249,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,177,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,247,253,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,215,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,170,255,226,170,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,170,255,255,255,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,255,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,255,198,114,86,170,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,198,29,0,0,0,0,198,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,29,0,0,0,0,0,86,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,0,0,0,0,0,57,170,255,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,226,29,0,0,141,255,255,255,255,226,198,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,170,86,226,255,255,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,255,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,255,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,57,226,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,170,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,29,0,29,198,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,170,29,0,198,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,255,255,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,255,170,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,149,253,137,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,47,47,47,78,194,252,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,32,70,142,184,209,252,253,252,252,252,252,253,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,76,218,253,252,252,252,252,253,252,252,218,244,253,252,227,29,0,0,0,0,0,0,0,0,0,0,0,85,228,252,253,252,252,210,137,137,117,22,14,178,253,252,130,0,0,0,0,0,0,0,0,0,0,0,5,191,253,253,255,253,205,116,11,0,0,0,9,233,255,253,69,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,253,202,25,0,0,0,0,0,166,252,253,223,25,0,0,0,0,0,0,0,0,0,0,0,78,252,252,221,173,25,0,0,0,0,0,51,220,252,215,98,0,0,0,0,0,0,0,0,0,0,0,0,29,129,119,25,0,0,0,0,0,0,17,156,252,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,252,252,200,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,252,235,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,222,252,233,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,253,252,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,218,252,253,106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,197,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,221,168,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,205,255,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,252,247,123,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,248,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,246,253,249,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,206,253,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,195,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,185,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,253,174,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,225,253,199,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,149,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,187,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,237,253,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,241,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,228,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,175,253,227,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,161,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,199,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,177,253,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,240,207,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,227,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,249,62,0,0,0,0,42,70,156,156,125,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,228,0,0,0,5,203,244,254,254,254,254,250,107,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,228,0,0,36,106,254,254,231,230,213,226,254,226,21,0,0,0,0,0,0,0,0,0,0,0,0,141,254,228,0,49,208,254,236,83,27,26,0,19,235,254,36,0,0,0,0,0,0,0,0,0,0,0,0,141,254,232,10,133,254,239,52,0,0,0,4,138,253,163,17,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,78,224,254,145,0,0,0,0,64,254,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,164,239,254,145,0,0,0,44,194,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,254,254,145,0,55,170,201,254,234,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,105,254,254,254,254,239,219,247,254,254,176,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,237,254,254,254,254,254,254,175,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,156,254,254,212,171,91,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,79,255,253,253,253,255,253,165,141,29,29,7,0,0,0,0,0,0,0,0,0,0,0,0,51,170,169,234,252,253,252,252,252,253,252,252,252,253,252,187,94,0,0,0,0,0,0,0,0,10,110,197,246,253,252,252,252,244,168,130,56,56,56,143,168,168,168,234,139,0,0,0,0,0,0,0,0,79,252,252,252,253,252,252,202,25,0,0,0,0,0,0,0,0,0,22,15,0,0,0,0,0,0,0,0,141,253,253,253,226,113,113,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,252,207,94,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,168,234,252,253,252,209,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,178,253,252,252,252,214,113,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,225,247,253,254,253,253,103,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,184,197,208,252,252,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,94,243,247,172,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,0,0,0,0,0,0,0,0,254,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,0,0,0,0,0,0,0,0,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,0,0,0,0,0,0,0,126,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,252,0,0,0,0,0,26,200,249,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,192,66,29,29,141,216,253,253,251,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,252,252,252,253,252,252,227,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,243,253,252,252,252,253,252,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,203,252,252,252,140,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,252,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,253,213,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,215,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,243,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,239,253,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,212,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,244,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,253,253,230,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,219,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,255,249,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,251,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,254,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,156,238,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,253,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,240,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,136,254,253,240,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,254,207,70,0,0,0,0,0,0,0,0,0,0,0,0,0,108,156,23,0,0,0,0,0,0,102,254,254,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,74,250,253,142,0,0,0,0,0,100,241,253,253,158,6,0,0,0,0,0,0,0,0,0,0,0,0,7,199,253,253,195,0,0,0,0,19,196,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,185,53,0,0,0,31,201,253,253,247,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,185,14,0,0,0,0,195,254,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,239,254,57,0,0,0,0,159,254,255,254,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,245,74,3,0,0,0,74,250,253,254,153,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,247,54,0,0,0,44,229,253,253,205,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,251,166,136,136,62,190,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,254,253,253,253,139,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,254,255,254,254,222,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,107,150,248,254,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,235,254,253,130,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,199,253,254,227,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,253,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,249,205,110,168,168,168,197,168,208,255,254,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,211,254,254,254,254,254,254,254,254,254,254,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,88,95,95,95,36,36,24,8,8,196,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,208,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,244,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,250,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,243,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,204,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,207,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,75,228,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,153,253,237,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,162,188,181,236,248,103,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,215,253,220,120,19,178,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,226,74,0,0,32,212,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,249,199,44,0,0,29,226,232,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,202,253,79,0,0,4,166,253,161,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,223,253,16,0,0,65,253,170,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,253,112,3,29,220,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,189,253,253,193,222,253,149,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,131,249,254,255,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,218,246,218,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,235,197,72,64,242,206,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,230,225,97,0,93,205,44,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,135,253,137,0,0,109,190,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,207,15,15,82,202,41,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,123,82,201,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,253,245,219,253,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,234,23,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,87,161,161,119,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,97,76,0,0,9,89,138,237,244,164,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,57,221,240,219,116,174,216,253,236,171,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,195,40,174,253,228,160,85,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,161,0,0,85,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,232,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,216,107,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,245,213,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,166,254,170,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,56,220,224,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,167,199,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,186,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,248,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,47,17,0,0,0,0,0,47,214,199,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,113,216,191,116,116,116,166,242,196,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,160,160,160,254,236,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,254,255,183,252,180,142,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,250,253,253,253,253,253,253,253,249,219,97,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,253,253,253,253,253,253,253,253,166,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,176,198,105,61,61,61,61,61,61,76,199,253,195,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,165,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,131,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,251,253,208,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,237,253,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,86,235,253,222,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,28,182,253,253,235,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,200,253,253,251,145,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,201,253,253,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,253,253,253,217,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,180,253,253,253,119,16,0,0,0,41,83,83,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,233,253,253,253,253,209,199,184,140,226,253,253,206,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,253,253,253,253,253,253,253,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,245,253,253,253,253,253,253,253,253,253,253,248,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,116,116,164,216,116,190,120,186,116,116,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,112,130,106,31,0,0,27,47,5,27,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,55,191,250,253,253,254,243,235,235,242,247,237,242,186,0,0,0,0,0,0,0,0,0,0,34,69,159,217,254,253,253,250,216,217,216,216,184,216,228,253,253,250,185,0,0,0,0,0,0,0,0,71,249,253,253,253,216,245,253,228,0,0,0,0,0,0,21,175,253,253,253,0,0,0,0,0,0,0,0,254,253,253,207,72,26,67,149,61,0,0,0,0,0,66,202,253,253,253,220,0,0,0,0,0,0,0,0,255,111,23,0,0,0,0,0,0,0,0,0,108,169,254,255,254,243,104,0,0,0,0,0,0,0,0,0,182,247,171,0,0,0,0,0,0,40,204,235,250,253,253,254,202,60,0,0,0,0,0,0,0,0,0,0,37,185,248,137,0,0,0,6,115,243,254,253,234,216,184,101,16,0,0,0,0,0,0,0,0,0,0,0,0,12,83,249,199,51,2,146,253,253,195,94,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,201,253,254,166,230,253,253,228,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,124,255,254,254,254,169,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,254,212,176,253,240,160,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,193,254,69,8,61,222,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,228,12,0,0,181,254,218,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,234,254,124,0,11,150,254,255,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,7,0,205,253,253,254,150,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,188,63,211,248,253,227,69,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,165,253,254,253,237,156,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,162,163,111,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,6,124,194,254,255,248,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,2,0,0,20,202,254,254,239,238,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,83,0,20,201,254,246,125,22,101,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,101,1,178,254,218,48,0,0,237,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,101,95,254,238,33,0,0,43,252,249,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,21,165,254,103,0,0,0,200,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,244,243,23,2,73,203,253,251,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,249,127,214,254,254,254,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,254,239,251,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,83,124,52,25,226,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,249,213,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,239,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,208,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,230,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,204,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,177,148,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,240,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,245,214,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,197,210,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,5,5,147,230,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,132,185,254,254,254,254,208,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,168,246,254,215,187,187,216,254,254,254,178,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,166,253,139,55,10,0,7,138,254,158,149,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,81,0,0,0,22,161,254,159,12,10,67,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,191,0,0,18,131,232,254,189,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,227,129,193,232,254,247,125,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,173,251,165,165,144,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,161,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,228,252,185,70,0,13,70,70,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,233,252,252,252,252,208,215,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,230,253,252,252,252,252,253,210,22,22,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,255,249,199,116,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,244,176,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,189,253,252,252,244,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,230,247,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,70,172,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,17,25,0,0,0,0,0,0,43,212,252,252,252,210,74,0,0,0,0,0,0,0,0,0,0,0,0,0,99,69,0,0,0,0,0,136,240,253,252,221,137,22,0,0,0,0,0,0,0,0,0,0,0,0,0,149,249,63,9,24,87,159,253,253,253,252,157,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,236,161,194,252,253,252,252,235,153,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,252,252,247,183,100,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,98,129,66,45,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,36,220,254,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,246,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,126,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,253,253,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,216,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,143,254,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,255,253,222,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,229,253,255,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,253,254,115,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,238,255,255,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,202,253,253,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,195,253,253,253,180,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,253,225,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,180,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,222,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,250,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,152,193,193,254,253,152,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,252,253,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,254,253,224,243,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,233,70,82,223,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,254,213,254,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,253,252,253,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,132,253,254,253,254,253,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,213,252,253,252,253,252,233,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,253,254,253,254,253,173,132,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,252,253,252,253,252,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,132,253,254,233,254,253,254,253,254,253,193,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,111,50,30,112,111,112,151,151,232,253,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,214,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,92,51,0,0,0,0,0,0,0,0,0,0,132,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,51,252,183,20,0,0,0,0,0,0,0,123,253,252,253,91,0,0,0,0,0,0,0,0,0,0,0,0,41,243,255,172,92,31,113,152,173,253,254,253,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,253,232,253,252,253,252,253,252,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,223,254,253,254,253,254,253,254,192,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,112,232,253,252,253,252,172,71,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,125,171,254,254,254,254,254,254,231,125,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,174,253,253,253,253,253,253,253,253,253,253,253,250,155,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,253,210,142,142,103,12,12,12,12,103,159,253,252,99,0,0,0,0,0,0,0,0,0,0,0,185,202,149,28,12,0,0,0,0,0,0,0,0,40,253,253,104,0,0,0,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,18,189,253,179,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,188,253,241,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,253,240,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,219,253,199,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,242,253,201,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,106,242,253,174,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,211,253,253,174,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,244,253,253,174,17,0,0,0,0,0,0,0,0,27,27,0,0,0,0,0,0,0,0,0,0,21,167,246,253,253,175,16,0,0,0,0,0,0,29,46,53,216,216,0,0,0,0,0,0,0,0,0,19,200,253,253,253,110,15,0,0,0,0,0,7,40,171,253,251,211,84,0,0,0,0,0,0,0,0,0,201,253,253,241,107,14,0,0,26,130,163,163,177,253,233,210,86,0,0,0,0,0,0,0,0,0,0,0,248,253,253,155,10,13,27,130,231,253,253,253,236,143,37,0,0,0,0,0,0,0,0,0,0,0,0,74,251,253,253,213,187,200,253,253,248,234,234,143,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,176,253,253,253,253,253,253,243,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,241,253,253,247,203,117,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,123,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,128,64,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,191,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,128,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,191,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,128,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,191,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,113,166,227,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,148,248,253,253,254,248,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,238,246,126,44,164,223,253,186,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,233,155,71,0,0,0,81,251,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,144,18,0,0,0,0,0,245,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,180,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,207,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,48,254,248,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,15,132,253,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,210,253,253,253,254,204,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,254,254,254,254,255,254,232,178,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,202,197,187,201,195,201,251,253,253,185,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,2,6,17,42,126,176,253,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,249,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,144,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,32,0,0,0,0,0,0,56,247,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,163,247,99,27,57,57,81,135,230,215,97,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,254,253,253,243,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,251,253,253,253,253,254,247,192,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,174,186,226,165,79,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,187,254,211,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,164,247,199,81,160,245,17,9,123,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,242,128,17,0,13,137,17,55,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,213,38,0,0,0,0,0,0,138,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,90,0,0,0,0,0,0,0,231,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,190,2,0,0,0,0,0,0,81,251,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,184,0,0,0,0,0,0,9,237,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,184,0,0,0,0,0,9,184,254,151,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,152,70,70,70,87,170,254,102,0,208,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,173,215,253,253,254,253,248,139,0,0,207,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,46,46,71,88,42,0,0,17,224,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,244,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,228,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,92,214,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,233,252,253,212,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,233,254,253,234,91,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,151,111,50,30,50,50,30,172,223,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,212,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,51,92,173,253,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,252,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,203,203,203,234,213,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,91,253,212,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,163,0,0,0,0,0,123,243,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,255,172,153,152,173,253,255,213,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,172,171,253,252,233,151,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,208,255,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,135,248,246,191,236,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,212,39,0,183,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,181,30,0,0,183,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,209,247,66,0,0,23,239,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,114,0,0,0,108,254,204,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,4,0,0,0,137,254,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,170,1,0,0,57,253,254,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,118,0,0,0,172,254,254,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,80,0,0,56,248,254,254,211,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,164,12,19,180,254,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,196,254,217,230,254,247,254,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,221,252,249,186,70,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,6,0,121,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,250,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,232,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,238,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,43,0,39,12,48,48,173,151,116,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,249,155,244,212,254,254,254,254,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,255,237,218,218,154,31,10,46,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,210,254,182,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,254,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,236,78,10,0,0,0,59,74,74,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,198,150,224,224,224,224,248,254,254,251,192,112,6,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,254,254,254,253,192,109,88,125,200,254,254,167,9,0,0,0,0,0,0,0,0,0,0,0,0,38,179,153,145,54,41,40,0,0,0,0,6,73,242,254,168,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,204,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,220,197,0,0,0,0,0,0,0,0,0,0,108,129,0,0,0,0,0,0,0,0,0,0,0,0,0,52,246,197,0,0,0,0,0,0,0,0,0,45,251,114,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,184,0,0,0,0,0,0,0,0,0,48,254,114,0,0,0,0,0,0,0,0,0,0,0,0,48,231,251,65,0,0,0,0,0,0,0,0,0,48,254,123,0,0,0,0,0,0,0,0,0,0,3,54,231,254,141,0,0,0,0,0,0,0,0,0,0,35,239,228,18,0,0,0,0,0,0,0,0,52,176,254,254,181,12,0,0,0,0,0,0,0,0,0,0,0,109,254,194,62,11,10,0,1,11,134,219,246,254,247,99,12,0,0,0,0,0,0,0,0,0,0,0,0,35,159,254,254,254,249,161,163,254,254,245,197,100,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,46,142,223,254,254,254,254,171,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,250,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,231,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,251,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,255,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,248,254,170,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,244,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,239,254,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,216,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,237,246,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,178,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,251,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,232,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,201,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,179,219,223,159,116,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,254,254,231,167,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,163,94,67,111,227,254,220,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,188,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,243,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,183,4,16,20,20,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,216,254,202,178,239,254,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,139,171,201,241,245,254,254,254,254,216,142,111,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,254,254,254,254,254,243,143,55,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,82,82,160,254,240,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,212,254,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,133,254,220,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,248,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,218,254,175,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,173,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,251,229,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,88,0,0,0,38,144,174,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,195,0,0,101,234,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,246,239,66,0,222,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,198,28,0,225,249,252,233,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,204,25,0,0,0,100,112,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,240,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,229,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,177,29,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,177,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,149,216,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,103,246,196,252,241,225,50,0,0,0,0,0,0,0,0,0,0,26,117,13,57,57,0,0,0,0,0,0,19,55,25,133,253,252,165,0,0,0,0,0,0,0,0,0,0,113,177,47,205,252,0,10,7,0,0,0,0,0,0,0,237,252,195,0,0,0,0,0,0,0,0,0,0,50,237,252,252,173,0,85,55,0,0,0,0,0,0,0,50,237,195,0,0,0,0,0,0,0,0,0,0,0,163,165,216,253,114,123,229,159,113,0,0,0,0,0,114,123,110,0,0,0,0,0,0,0,0,0,0,0,9,6,169,252,253,243,246,252,173,147,225,50,57,85,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,133,253,252,252,252,252,253,252,209,234,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,130,223,242,236,253,252,252,252,252,225,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,50,112,158,252,157,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,137,192,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,166,254,254,243,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,254,254,216,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,190,249,254,213,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,222,254,254,147,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,246,254,254,254,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,254,254,254,205,77,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,238,194,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,207,254,248,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,233,254,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,195,254,254,200,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,140,254,254,149,18,0,23,96,96,51,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,254,22,11,114,202,254,254,244,243,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,215,254,254,33,65,198,254,254,254,250,248,254,254,227,37,0,0,0,0,0,0,0,0,0,0,0,0,15,206,254,254,56,195,254,250,169,189,67,48,238,255,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,239,74,0,0,0,0,131,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,254,254,237,66,20,0,0,30,162,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,36,164,254,254,254,254,254,218,202,202,225,254,254,178,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,77,153,203,254,254,254,254,254,254,244,35,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,188,135,81,227,154,135,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,67,67,172,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127,252,252,252,252,169,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,176,120,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,245,252,252,179,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,252,217,54,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,248,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,192,191,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,179,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,201,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,207,252,87,0,0,0,0,0,0,0,0,171,177,177,92,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,87,0,0,0,0,93,210,210,210,251,252,252,232,82,0,0,0,0,0,0,0,0,0,0,0,67,252,252,87,0,1,62,243,247,252,252,252,252,252,252,242,90,0,0,0,0,0,0,0,0,0,0,0,67,252,252,123,56,65,252,252,252,252,252,252,252,252,252,130,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,252,252,252,252,252,252,252,252,252,130,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,252,252,252,252,252,252,252,252,209,68,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,252,252,252,252,252,252,252,252,252,218,64,0,0,0,0,0,0,0,0,0,0,0,0,0,17,65,65,188,252,252,252,252,252,252,252,96,65,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,32,41,252,252,155,32,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,107,255,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,107,215,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,37,58,140,200,251,253,253,253,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,174,203,253,253,253,253,253,253,253,253,204,10,0,0,0,0,0,0,0,0,0,0,0,0,0,9,91,239,253,253,242,227,227,126,45,155,253,243,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,224,137,44,0,0,0,26,243,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,179,253,243,43,11,0,0,0,0,180,253,253,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,247,59,0,0,0,0,0,11,207,253,202,9,0,0,0,0,0,0,0,0,0,0,0,0,0,2,228,253,238,32,0,0,0,0,0,46,253,253,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,253,142,0,0,0,0,0,0,249,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,151,121,4,0,0,0,0,0,0,249,253,241,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,241,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,157,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,143,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,233,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,224,253,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,249,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,202,253,211,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,138,138,171,228,228,228,136,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,254,254,254,254,254,140,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,216,162,78,53,53,158,254,254,62,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,235,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,246,254,154,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,92,207,253,254,144,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,45,33,0,0,33,174,254,254,210,78,5,0,0,0,0,0,0,0,0,0,0,0,0,0,7,76,191,227,254,241,75,95,231,254,240,105,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,198,254,254,244,220,254,254,254,251,160,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,225,251,193,84,203,231,254,254,254,127,0,0,0,0,0,3,87,183,119,0,0,0,0,0,0,0,0,225,254,176,181,254,254,227,196,254,254,193,0,0,0,0,36,212,254,254,164,0,0,0,0,0,0,0,0,255,254,254,244,147,63,6,3,158,254,253,134,0,0,65,232,254,254,250,122,0,0,0,0,0,0,0,0,80,111,94,19,0,0,0,0,26,218,254,252,232,232,253,254,254,201,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,203,254,254,254,254,198,48,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,49,82,110,49,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,186,246,254,232,148,59,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,233,180,135,76,76,105,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,241,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,172,247,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,207,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,217,254,235,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,222,254,191,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,213,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,206,227,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,216,151,31,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,91,236,111,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,114,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,98,217,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,104,224,254,254,255,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,58,186,253,253,253,237,39,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,79,79,48,146,247,253,254,253,228,123,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,254,245,253,253,253,192,117,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,96,155,193,155,155,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,226,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,248,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,245,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,44,7,0,0,0,0,40,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,253,43,0,0,0,0,100,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,235,235,0,0,0,0,11,214,203,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,103,0,0,0,0,44,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,165,0,0,0,0,0,158,251,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,223,39,0,0,0,0,37,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,118,0,0,0,0,0,186,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,246,254,142,79,79,79,18,79,252,236,5,0,0,31,18,0,0,0,0,0,0,0,0,0,0,0,0,55,252,255,254,254,254,255,254,254,254,248,175,175,224,229,36,0,0,0,0,0,0,0,0,0,0,0,0,0,78,136,136,136,136,136,226,253,253,214,178,154,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,226,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,174,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,211,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,173,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,172,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,212,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,50,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,233,71,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,142,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,233,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,130,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,128,178,220,186,70,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,254,253,253,253,254,182,97,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,253,205,54,46,113,197,251,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,0,0,0,0,0,113,236,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,0,0,0,0,0,0,208,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,253,253,81,5,0,0,0,9,216,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,129,246,254,194,21,0,0,123,253,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,220,253,188,25,60,214,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,254,254,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,106,235,253,253,254,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,108,224,254,253,253,253,239,242,232,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,247,253,253,161,128,160,128,25,89,236,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,255,254,214,59,0,0,0,0,0,0,116,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,254,143,13,0,0,0,0,0,0,0,19,198,222,29,0,0,0,0,0,0,0,0,0,0,0,0,99,253,222,13,0,0,0,0,0,0,0,0,0,101,254,115,0,0,0,0,0,0,0,0,0,0,0,0,116,253,184,0,0,0,0,0,0,0,0,0,43,209,254,48,0,0,0,0,0,0,0,0,0,0,0,0,116,254,185,0,0,0,0,0,0,0,0,38,187,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,222,55,9,17,47,47,47,80,164,243,253,202,17,0,0,0,0,0,0,0,0,0,0,0,0,0,30,213,254,253,215,224,254,253,253,253,254,248,179,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,161,245,253,253,254,253,211,160,103,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,105,105,211,254,254,139,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,160,253,253,253,253,253,253,253,236,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,238,253,253,253,251,238,252,253,253,254,232,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,196,133,118,0,127,154,253,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,108,16,0,0,0,0,19,192,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,187,26,0,0,0,0,11,158,253,254,210,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,236,253,253,217,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,226,253,245,120,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,162,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,254,217,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,131,248,253,253,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,251,158,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,253,253,179,0,0,0,0,0,0,0,0,23,75,75,75,62,0,0,0,0,0,0,0,0,0,0,0,164,253,253,74,0,0,6,30,31,119,128,179,201,253,253,253,235,62,0,0,0,0,0,0,0,0,0,0,164,253,253,169,134,134,156,253,254,253,253,253,253,253,253,205,98,0,0,0,0,0,0,0,0,0,0,0,164,253,253,253,253,253,253,253,255,253,253,253,173,57,14,9,0,0,0,0,0,0,0,0,0,0,0,0,135,229,253,253,253,253,253,226,209,85,59,59,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,147,253,253,253,138,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,147,230,249,147,147,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,178,178,248,254,254,249,159,77,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,32,157,252,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,184,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,222,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,226,254,221,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,126,126,148,250,253,213,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,254,254,254,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,162,162,162,235,254,242,159,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,72,201,254,228,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,197,254,232,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,247,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,213,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,228,254,228,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,215,44,33,8,17,33,119,197,253,254,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,254,254,197,216,254,254,254,238,184,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,119,150,254,254,254,254,215,136,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,120,152,152,152,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,173,246,254,255,255,254,243,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,246,254,254,254,254,254,254,254,238,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,183,246,254,254,232,119,53,53,149,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,237,117,65,0,0,0,0,122,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,139,18,0,0,0,0,0,92,254,254,201,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,244,39,0,0,0,0,0,26,198,254,175,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,146,75,0,0,0,0,0,0,7,197,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,207,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,155,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,81,81,81,81,169,170,215,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,206,254,254,254,254,254,254,254,254,254,254,249,246,223,107,57,0,0,0,0,0,0,0,0,0,0,0,77,255,255,254,254,254,254,254,254,254,254,254,254,254,254,254,251,160,143,81,0,0,0,0,0,0,0,0,153,254,255,254,254,254,254,254,165,172,171,125,125,156,211,223,254,254,254,254,0,0,0,0,0,0,0,0,86,253,230,250,254,254,236,83,4,0,0,0,0,0,0,11,49,90,174,196,0,0,0,0,0,0,0,0,0,59,7,53,62,62,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,250,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,247,253,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,250,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,236,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,244,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,243,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,244,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,253,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,240,253,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,245,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,222,253,204,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,232,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,179,253,253,255,184,132,110,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,25,147,252,252,230,228,229,230,252,252,226,53,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,182,96,9,0,0,10,96,183,252,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,48,225,252,180,16,0,0,0,0,0,0,72,252,252,184,7,0,0,0,0,0,0,0,0,0,0,0,0,157,252,238,46,0,0,0,0,0,0,55,229,252,252,232,27,0,0,0,0,0,0,0,0,0,0,0,0,123,252,209,17,0,0,0,0,0,7,184,252,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,25,224,252,181,16,0,0,0,10,209,252,252,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,252,183,97,97,154,220,252,238,117,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,227,252,252,252,252,253,190,66,49,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,131,177,252,136,127,5,0,49,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,225,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,206,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,148,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,242,102,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,245,254,254,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,225,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,242,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,255,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,207,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,234,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,222,254,229,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,186,254,251,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,239,254,189,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,206,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,224,254,254,193,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,251,254,254,172,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,187,254,254,229,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,225,254,254,230,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,211,254,254,251,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,226,254,254,248,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,254,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,233,254,254,243,52,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,210,254,254,251,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,230,254,254,221,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,254,254,183,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,228,210,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,170,29,0,0,0,29,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,86,0,86,114,198,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,170,255,255,255,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,255,255,255,170,170,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,86,57,0,0,86,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,192,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,200,252,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,252,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,228,252,252,252,253,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,173,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,252,239,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,252,195,0,0,141,140,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,84,141,255,253,253,237,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,140,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,215,227,253,252,252,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,252,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,253,253,253,255,253,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,253,252,252,252,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,239,252,252,253,252,252,252,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,227,252,253,252,252,233,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,253,252,220,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,73,47,0,0,0,0,0,0,0,0,0,0,0,0,40,55,55,55,55,55,81,113,145,145,145,236,235,250,253,247,0,0,0,0,0,0,0,0,0,0,92,210,243,254,253,253,253,253,254,253,253,253,253,254,240,253,253,253,0,0,0,0,0,0,0,0,0,0,0,49,144,144,213,253,238,235,144,144,176,144,144,119,58,237,228,112,0,0,0,0,0,0,0,0,0,0,0,0,0,27,242,240,35,0,0,0,0,0,0,0,16,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,204,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,222,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,233,181,181,181,117,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,254,255,254,254,254,254,255,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,139,21,2,18,109,24,18,18,83,202,249,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,160,5,0,0,0,0,0,0,0,49,231,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,115,0,0,0,0,0,0,0,0,0,145,245,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,218,13,0,0,0,0,0,0,0,0,145,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,249,241,87,0,0,0,0,0,0,21,241,243,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,251,203,88,55,55,61,145,209,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,94,216,229,254,253,253,253,253,243,164,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,113,163,189,144,144,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,139,159,253,253,253,255,253,253,211,138,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,244,253,252,252,214,206,207,206,206,244,252,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,252,173,69,69,13,0,0,0,0,56,236,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,13,98,45,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,174,252,218,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,186,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,176,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,252,221,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,244,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,240,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,157,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,127,255,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,21,0,61,177,184,184,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,122,250,253,253,126,183,247,251,248,250,253,176,1,0,0,0,0,0,0,0,0,0,0,0,0,0,4,169,253,253,253,253,253,226,125,50,0,40,183,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,6,253,253,253,253,191,73,23,0,0,0,0,135,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,3,199,243,141,27,7,0,0,0,0,0,0,233,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,250,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,203,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,236,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,232,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,248,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,253,243,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,249,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,228,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,43,78,156,253,253,210,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,199,253,252,252,252,252,253,252,221,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,246,252,214,126,73,21,21,21,135,251,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,237,236,145,0,0,0,0,0,0,0,179,231,55,64,43,0,0,0,0,0,0,0,0,0,0,0,0,85,252,101,0,0,0,0,0,0,0,0,22,252,235,253,239,17,0,0,0,0,0,0,0,0,0,0,0,85,253,84,0,0,0,0,0,0,0,0,0,169,253,230,106,9,0,0,0,0,0,0,0,0,0,0,0,85,252,84,0,0,0,0,0,0,0,0,0,169,252,131,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,142,4,0,0,0,0,0,0,0,11,211,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,28,239,252,138,64,43,0,0,0,0,0,22,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,252,252,253,239,211,211,211,45,0,22,252,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,107,185,115,106,18,0,0,22,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,243,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,175,252,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,252,253,203,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,229,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,226,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,147,147,147,147,186,246,147,106,50,147,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,218,254,254,254,254,254,254,254,254,246,198,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,254,249,202,147,69,79,29,9,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,137,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,126,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,222,254,254,254,237,103,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,213,254,254,254,254,254,221,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,254,137,207,254,254,132,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,144,4,8,39,163,191,244,110,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,172,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,194,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,217,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,208,244,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,218,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,146,250,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,213,250,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,171,254,179,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,111,241,253,253,254,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,253,254,253,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,55,174,254,253,253,253,253,254,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,253,254,253,253,237,118,254,253,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,239,254,254,254,255,196,30,0,121,255,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,34,154,254,253,253,253,245,136,21,0,19,184,254,253,216,10,0,0,0,0,0,0,0,0,0,0,0,85,247,253,254,253,253,225,48,0,0,0,77,253,254,253,174,0,0,0,0,0,0,0,0,0,0,0,34,247,253,253,254,227,87,16,0,0,0,0,129,253,254,242,43,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,193,46,0,0,0,0,0,0,174,253,254,241,30,0,0,0,0,0,0,0,0,0,0,0,16,195,195,83,0,0,0,0,0,0,0,31,242,254,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,250,253,226,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,218,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,247,253,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,215,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,186,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,240,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,255,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,205,125,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,205,165,251,192,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,205,165,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,228,253,205,67,181,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,240,253,205,0,7,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,205,0,1,73,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,251,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,250,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,47,0,0,0,51,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,237,253,253,47,0,0,6,236,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,253,47,0,56,201,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,253,253,239,40,0,165,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,253,152,0,0,165,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,27,0,0,165,253,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,204,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,194,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,216,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,253,56,0,0,0,10,128,204,253,216,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,214,19,0,0,38,172,252,253,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,240,44,0,98,234,252,252,156,56,209,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,252,56,151,253,252,214,90,0,0,197,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,253,165,241,251,200,25,0,0,45,229,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,252,252,252,225,0,0,0,45,225,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,247,197,147,197,229,252,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,252,252,253,252,252,252,253,177,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,143,13,114,113,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,228,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,203,253,252,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,253,254,192,92,253,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,252,172,30,51,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,214,253,254,172,0,0,51,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,131,10,0,0,92,252,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,254,253,193,233,254,253,254,253,254,253,254,112,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,253,252,253,252,253,252,253,252,253,252,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,162,203,203,142,102,102,102,214,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,50,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,183,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,233,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,255,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,232,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,228,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,222,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,118,166,143,118,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,245,254,254,254,254,227,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,183,254,254,254,254,254,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,157,254,254,200,219,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,157,254,254,165,2,29,222,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,246,50,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,169,0,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,254,239,58,0,0,0,207,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,254,97,0,0,0,0,207,254,254,160,91,91,91,91,27,0,0,0,0,0,0,0,0,0,0,0,235,254,254,128,70,70,129,207,246,254,254,254,254,254,254,254,199,26,0,0,0,0,0,0,0,0,0,0,235,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,197,0,0,0,0,0,0,0,0,0,0,209,250,254,254,254,254,254,254,255,254,221,89,89,89,133,249,254,234,0,0,0,0,0,0,0,0,0,0,0,93,110,110,110,110,110,160,254,254,89,0,0,0,3,202,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,254,89,0,0,0,84,254,254,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,208,5,0,0,0,139,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,206,0,0,0,135,250,254,173,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,206,0,2,130,252,254,239,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,247,240,180,182,254,254,241,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,254,254,235,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,142,254,175,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,191,190,190,190,190,191,111,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,153,241,253,252,252,252,252,253,252,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,143,246,252,252,253,252,221,189,145,227,252,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,252,252,252,252,236,112,21,0,0,104,252,249,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,199,106,0,0,0,0,0,18,217,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,231,122,21,0,0,0,0,0,0,0,190,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,2,0,0,0,0,0,0,0,0,190,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,232,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,255,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,0,0,141,253,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,224,232,232,242,241,232,232,249,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,252,253,252,252,252,252,253,252,210,169,81,27,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,252,121,42,200,252,252,252,253,252,252,252,252,229,131,97,0,0,0,0,0,0,0,0,0,0,0,36,242,227,60,61,227,253,253,174,0,0,98,106,150,194,150,9,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,253,252,245,141,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,152,240,253,236,124,0,0,0,0,0,0,0,0,0,0,6,22,0,0,0,0,0,0,0,0,0,0,0,0,35,84,21,0,0,0,0,0,0,0,0,0,0,0,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,251,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,250,253,165,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,202,253,163,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,201,253,161,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,245,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,235,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,217,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,242,253,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,187,253,201,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,241,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,242,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,230,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,248,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,164,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,206,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,245,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,172,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,200,254,196,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,233,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,201,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,215,254,208,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,254,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,235,254,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,217,202,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,142,184,65,0,0,0,0,0,0,253,252,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,252,252,236,19,0,0,0,0,0,159,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,252,22,0,0,0,0,0,86,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,23,0,0,0,0,0,24,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,22,0,0,0,0,0,19,236,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,107,0,0,0,0,0,7,186,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,252,137,0,0,0,0,43,160,252,252,218,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,242,0,22,116,210,240,253,252,252,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,253,253,255,253,253,253,253,255,249,146,21,0,0,0,0,0,0,0,0,0,0,0,0,0,22,57,219,252,252,252,253,252,252,252,231,196,75,0,0,0,0,0,0,0,0,0,0,0,0,0,51,112,215,253,252,252,252,252,253,252,233,183,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,240,252,252,253,252,252,252,252,253,172,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,244,252,252,252,190,137,168,252,252,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,253,253,11,0,70,253,253,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,203,161,133,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,90,234,252,252,253,252,252,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,194,252,253,252,252,252,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,128,148,252,252,252,252,128,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,73,93,163,169,254,196,112,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,184,248,254,253,253,253,253,254,253,225,107,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,254,219,216,216,216,241,253,253,253,162,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,235,169,54,4,0,0,0,35,54,179,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,186,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,180,253,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,84,202,253,253,199,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,91,179,253,253,254,253,194,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,228,255,254,254,254,254,255,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,237,254,253,253,253,253,254,249,190,107,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,36,36,81,200,227,254,253,253,253,195,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,16,80,163,244,253,253,238,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,149,253,254,237,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,254,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,169,253,250,50,0,0,0,0,0,0,0,0,0,0,8,50,56,37,0,0,0,0,0,0,8,37,76,192,241,253,247,46,0,0,0,0,0,0,0,0,0,0,32,224,253,253,200,199,199,199,199,200,211,253,253,253,254,249,168,0,0,0,0,0,0,0,0,0,0,0,0,11,79,162,163,181,253,253,253,254,253,253,253,220,136,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,97,170,253,253,128,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,212,252,252,214,227,253,236,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,253,252,252,45,63,201,252,234,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,235,128,9,168,169,252,252,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,153,0,0,11,13,211,252,202,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,92,0,0,0,0,22,216,253,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,5,47,197,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,123,0,26,122,191,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,206,0,187,252,253,252,252,252,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,227,146,248,252,253,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,253,253,253,255,253,205,116,241,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,214,252,252,252,249,185,25,0,157,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,234,252,221,63,0,0,0,199,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,137,0,0,0,0,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,246,252,32,0,0,0,43,188,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,161,0,0,0,49,233,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,219,15,5,47,197,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,137,138,252,252,153,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,196,252,252,253,252,101,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,137,242,137,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,178,161,162,161,161,161,162,144,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,215,206,207,206,206,206,207,232,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,46,0,0,0,0,0,0,97,249,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,46,0,0,0,0,0,0,13,220,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,71,0,0,0,0,0,0,72,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,154,0,0,0,0,0,0,138,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,175,0,0,0,0,0,0,180,225,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,227,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,134,133,209,231,133,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,192,254,253,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,188,253,254,253,253,253,253,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,249,230,200,101,253,253,253,216,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,38,38,188,253,253,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,226,253,253,204,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,165,254,253,183,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,98,222,253,254,244,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,253,253,253,254,251,230,207,110,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,253,253,253,254,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,250,248,244,255,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,214,253,231,171,57,47,19,213,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,96,9,0,0,0,112,253,253,208,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,119,222,253,242,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,73,18,0,0,32,130,254,253,253,181,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,125,86,131,226,253,254,253,183,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,242,253,253,253,253,253,253,250,87,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,253,253,253,201,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,173,253,253,253,207,22,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,148,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,241,253,253,216,108,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,253,237,228,157,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,82,194,253,253,253,253,253,236,214,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,81,197,253,253,253,254,253,234,158,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,80,199,228,255,253,253,253,165,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,143,251,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,49,0,0,0,241,253,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,94,0,0,122,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,231,102,57,248,253,253,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,252,241,254,253,253,211,100,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,81,179,220,253,253,253,254,253,253,253,253,224,110,0,0,0,0,0,0,0,0,0,0,0,0,29,117,245,253,253,253,253,253,253,254,253,253,253,253,253,245,74,0,0,0,0,0,0,0,0,0,0,0,108,253,253,253,253,253,253,253,253,229,199,199,217,253,253,253,192,0,0,0,0,0,0,0,0,0,0,0,34,214,253,221,213,213,213,135,80,42,0,0,81,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,35,93,20,0,0,0,0,0,0,0,0,81,253,253,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,251,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,120,218,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,43,78,148,174,253,255,174,192,148,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,190,216,253,252,245,168,124,168,89,63,63,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,242,252,235,127,47,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,216,247,119,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,237,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,186,225,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,205,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,147,252,235,150,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,150,237,253,147,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,170,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,216,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,87,210,186,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,101,235,204,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,41,0,0,0,13,57,181,247,187,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,224,169,169,169,218,252,221,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,113,252,252,252,236,147,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,43,43,183,76,43,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,250,250,250,250,252,194,85,85,85,15,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,250,250,250,250,252,250,250,250,250,148,208,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,250,250,250,250,252,250,250,250,250,252,250,209,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,41,146,250,250,252,250,250,250,250,252,250,144,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,210,231,252,252,255,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,85,85,168,250,250,252,250,166,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,127,230,252,250,250,250,250,252,250,250,167,127,128,127,127,127,21,0,0,0,0,0,0,0,0,0,0,127,250,250,252,250,250,250,250,252,250,250,250,250,252,250,250,250,181,0,0,0,0,0,0,0,0,0,0,127,250,250,252,250,250,250,250,252,250,250,250,250,252,250,250,250,74,0,0,0,0,0,0,0,0,0,0,0,141,210,219,252,252,252,252,247,210,210,210,210,212,210,210,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,250,250,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,250,250,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,250,250,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,252,250,250,250,250,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,255,252,252,252,252,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,250,250,250,250,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,250,250,250,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,252,250,250,137,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,179,41,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,78,201,253,253,193,113,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,252,252,252,253,252,186,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,171,253,236,134,56,65,144,238,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,190,252,199,21,0,0,0,0,64,247,205,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,252,121,18,0,0,0,0,0,0,232,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,43,183,253,253,253,255,253,156,78,7,0,0,216,253,60,0,0,0,0,0,0,0,0,0,0,0,0,36,227,252,252,252,217,168,168,246,252,121,0,0,48,252,147,0,0,0,0,0,0,0,0,0,0,0,15,162,253,252,251,134,12,0,0,125,245,244,54,0,66,252,147,0,0,0,0,0,0,0,0,0,0,6,190,252,253,252,134,0,0,0,0,0,83,242,176,0,16,231,121,0,0,0,0,0,0,0,0,0,0,153,252,252,253,252,21,0,0,0,0,0,0,124,211,0,0,28,7,0,0,0,0,0,0,0,0,0,50,245,243,79,255,151,0,0,0,0,0,0,0,107,212,0,0,0,0,0,0,0,0,0,0,0,0,15,185,252,110,0,239,42,0,0,0,0,0,0,0,185,211,0,0,0,0,0,0,0,0,0,0,0,0,52,252,224,7,0,62,0,0,0,0,0,0,0,41,232,211,0,0,0,0,0,0,0,0,0,0,0,0,148,252,126,0,0,0,0,0,0,0,0,0,0,169,252,140,0,0,0,0,0,0,0,0,0,0,0,0,148,252,126,0,0,0,0,0,0,0,0,0,107,239,164,18,0,0,0,0,0,0,0,0,0,0,0,0,148,253,127,0,0,0,0,0,0,0,8,123,245,199,18,0,0,0,0,0,0,0,0,0,0,0,0,0,69,252,212,28,0,0,0,0,0,36,157,252,210,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,247,252,168,83,18,0,20,119,241,250,196,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,239,252,252,239,169,246,252,226,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,217,252,253,252,252,112,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,56,95,71,155,154,154,217,254,254,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,240,253,253,253,253,253,253,253,253,253,253,253,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,253,253,253,253,253,253,253,253,253,253,241,42,0,0,0,0,0,0,0,0,0,0,0,0,57,249,253,253,253,253,238,233,233,171,133,133,145,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,65,253,231,128,79,79,19,0,0,0,0,0,26,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,7,189,49,0,0,0,0,0,0,0,0,0,37,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,235,253,234,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,253,187,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,211,253,233,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,219,253,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,253,253,188,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,251,253,253,177,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,173,253,253,238,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,249,253,253,218,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,253,213,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,241,253,144,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,183,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,107,169,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,223,254,219,141,141,52,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,167,226,254,254,254,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,158,254,254,254,254,254,242,201,193,250,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,48,194,254,255,254,255,203,78,40,0,176,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,11,169,244,254,254,254,252,202,21,0,0,0,176,254,193,0,0,0,0,0,0,0,0,0,0,0,0,11,209,254,254,254,242,242,102,0,0,0,0,28,208,254,150,0,0,0,0,0,0,0,0,0,0,0,0,25,242,254,253,164,162,75,18,0,0,0,0,60,232,204,25,0,0,0,0,0,0,0,0,0,0,0,18,156,254,251,152,131,202,21,0,0,0,0,5,189,254,135,0,0,0,0,0,0,0,0,0,0,0,0,125,254,255,116,51,242,20,0,0,0,0,0,103,254,205,19,0,0,0,0,0,0,0,0,0,0,0,96,253,254,165,1,138,124,0,0,0,0,36,178,251,142,17,0,0,0,0,0,0,0,0,0,0,0,33,223,254,235,19,0,0,0,0,0,0,146,226,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,244,73,0,0,0,14,53,135,238,251,238,117,2,0,0,0,0,0,0,0,0,0,0,0,0,66,239,254,139,0,23,85,182,213,254,254,242,140,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,255,83,75,162,254,254,254,250,234,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,255,254,254,255,254,254,152,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,229,254,247,233,140,133,36,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,94,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,210,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,218,248,240,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,254,141,47,231,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,127,0,95,255,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,127,0,0,180,242,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,128,0,0,170,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,254,161,0,0,36,254,202,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,230,16,0,121,254,239,222,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,32,20,220,246,51,145,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,32,204,220,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,180,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,170,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,254,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,215,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,248,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,234,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,221,215,15,11,16,111,111,111,58,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,219,254,254,254,254,254,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,139,151,254,251,234,234,189,134,134,134,42,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,254,246,197,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,232,254,254,241,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,86,179,254,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,0,0,0,0,0,12,101,254,181,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,179,162,0,0,0,0,0,0,6,161,248,156,5,0,0,0,0,0,0,0,0,0,0,0,0,0,101,248,129,0,0,0,0,0,0,0,0,0,174,254,105,0,0,0,0,0,0,0,0,0,0,0,0,7,225,167,0,0,0,0,0,0,0,0,0,0,19,234,147,0,0,0,0,0,0,0,0,0,0,0,0,10,246,183,0,0,0,0,0,0,0,0,0,0,0,180,223,7,0,0,0,0,0,0,0,0,0,0,0,0,165,249,57,0,0,0,0,0,0,0,0,0,18,233,230,19,0,0,0,0,0,0,0,0,0,0,0,0,104,250,212,41,0,0,0,0,0,0,3,63,226,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,254,247,190,96,57,0,38,115,194,254,254,159,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,108,215,254,254,251,245,249,254,252,209,112,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,128,154,231,254,213,130,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,247,195,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,240,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,254,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,172,253,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,237,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,253,242,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,240,124,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,191,138,138,138,86,24,24,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,244,253,252,252,252,252,253,252,186,67,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,236,253,240,183,183,183,222,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,98,37,0,0,0,25,135,252,252,252,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,232,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,252,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,245,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,228,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,191,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,252,252,185,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,233,252,227,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,233,252,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,252,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,210,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,255,254,255,166,101,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,160,253,253,253,253,253,222,40,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,241,235,248,253,253,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,231,36,0,75,134,235,253,180,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,216,0,0,0,0,61,247,253,129,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,216,0,0,0,0,0,169,246,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,216,0,0,0,0,0,0,183,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,216,0,0,0,0,0,0,65,245,224,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,216,0,0,0,0,0,0,0,184,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,243,64,0,0,0,0,0,0,88,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,180,0,0,0,0,0,0,64,244,229,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,210,0,0,0,0,0,0,0,217,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,210,0,0,0,0,0,0,0,217,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,171,253,225,28,0,0,0,0,0,0,217,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,253,126,0,0,0,0,0,0,217,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,172,253,223,29,0,0,0,0,0,217,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,126,0,0,0,0,37,232,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,215,253,249,205,112,112,151,242,253,161,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,216,253,253,253,253,253,253,210,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,129,220,253,253,253,150,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,167,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,211,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,252,252,252,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,252,252,238,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,252,252,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,252,252,236,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,252,252,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,235,253,252,219,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,242,253,255,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,246,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,252,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,239,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,241,252,252,164,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,252,252,252,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,252,252,210,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,184,252,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,191,191,191,255,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,128,128,128,128,0,0,0,128,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,128,191,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,128,64,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,191,255,206,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,243,252,253,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,182,240,252,252,253,252,239,103,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,236,84,84,115,242,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,252,189,0,0,0,169,252,141,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,165,47,0,0,0,0,169,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,253,176,6,0,0,0,0,0,169,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,167,0,0,0,0,0,0,169,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,253,167,0,0,0,0,0,54,224,252,240,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,255,168,0,0,0,0,85,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,167,0,0,0,147,234,252,252,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,227,253,233,165,150,197,253,252,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,252,252,252,252,253,252,252,249,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,237,252,252,252,112,237,252,239,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,199,252,252,108,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,252,190,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,227,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,92,51,98,98,172,98,98,176,167,228,252,254,218,37,0,0,0,0,0,0,0,0,0,0,0,0,0,151,252,235,254,254,254,254,254,254,254,254,254,254,201,68,0,0,0,0,0,0,0,0,0,0,0,0,43,235,254,254,254,254,254,254,254,254,254,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,11,157,254,254,254,160,130,220,220,224,236,254,254,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,246,103,3,0,0,0,12,51,254,254,254,217,31,0,0,0,0,0,0,0,0,0,0,0,0,147,254,254,241,0,0,0,0,0,0,7,254,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,43,232,254,254,180,0,0,0,0,0,0,142,254,254,254,132,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,254,103,0,0,0,0,0,10,184,254,254,180,6,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,245,75,0,0,0,0,0,140,254,254,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,79,220,254,119,0,0,0,0,0,0,166,254,254,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,89,29,0,0,0,0,0,6,175,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,254,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,255,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,203,254,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,207,254,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,254,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,251,117,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,255,254,255,255,217,125,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,249,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,210,239,253,253,253,253,253,251,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,17,19,19,123,229,253,253,250,215,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,155,226,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,208,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,191,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,79,191,253,253,253,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,202,244,253,253,253,253,253,185,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,253,253,253,253,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,253,253,253,253,253,253,253,243,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,226,253,253,253,253,253,244,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,78,78,38,78,78,105,216,253,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,73,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,94,27,19,0,0,20,140,253,253,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,221,150,150,227,253,253,253,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,253,253,253,253,253,253,245,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,233,253,253,253,253,253,253,253,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,253,253,253,230,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,92,173,254,207,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,145,235,254,254,254,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,237,254,253,200,136,39,133,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,215,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,252,151,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,200,254,154,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,241,10,0,0,0,0,65,236,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,201,0,0,0,21,155,253,254,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,22,229,252,168,110,150,235,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,254,254,254,227,222,254,235,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,96,99,59,11,195,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,244,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,249,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,230,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,254,239,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,206,240,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,251,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,199,254,241,160,243,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,254,168,22,27,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,197,254,214,11,0,27,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,193,72,0,0,27,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,244,236,50,0,0,0,27,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,244,236,73,0,0,0,0,27,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,244,254,155,0,0,0,0,0,27,255,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,192,254,103,15,0,0,0,0,0,27,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,238,41,0,0,0,0,0,0,122,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,245,239,77,0,0,0,0,0,0,47,225,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,71,203,254,82,0,0,0,0,0,0,7,178,250,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,178,14,0,0,0,0,0,6,134,250,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,188,254,32,0,0,0,0,0,19,135,250,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,196,13,0,0,0,6,51,226,251,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,212,98,14,14,51,173,254,254,225,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,254,254,254,254,254,255,250,221,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,254,254,254,217,124,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,105,183,200,78,87,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,155,242,253,252,252,252,252,243,190,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,252,252,253,252,233,231,249,253,252,242,92,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,154,189,128,84,7,0,70,145,189,247,252,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,217,252,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,219,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,235,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,255,239,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,252,252,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,213,252,252,252,232,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,218,252,252,252,252,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,252,253,252,252,226,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,123,245,253,253,255,253,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,190,227,252,252,252,252,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,253,252,242,206,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,253,252,252,252,252,253,252,252,252,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,253,208,208,182,147,147,147,147,77,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,78,161,254,152,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,106,0,17,72,193,253,253,254,253,243,163,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,170,156,3,174,254,253,253,236,230,234,253,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,9,118,169,6,49,228,254,236,152,19,0,13,220,253,93,0,0,0,0,0,0,0,0,0,0,0,0,13,221,228,34,0,0,34,93,9,0,0,0,30,237,254,93,0,0,0,0,0,0,0,0,0,0,0,0,72,223,64,0,0,0,0,0,0,0,0,0,181,253,236,9,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,9,174,249,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,184,254,253,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,120,237,254,254,165,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,147,237,253,248,173,56,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,161,253,254,223,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,253,136,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,222,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,254,227,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,191,254,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,254,23,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,13,221,254,93,0,0,0,0,0,32,136,162,161,161,161,255,220,205,0,0,0,0,0,0,0,0,0,0,181,253,253,122,130,138,172,231,230,241,253,254,253,253,253,224,206,79,0,0,0,0,0,0,0,0,0,0,230,253,253,254,253,253,253,254,253,242,230,205,137,137,71,17,0,0,0,0,0,0,0,0,0,0,0,0,163,253,253,254,236,194,160,136,69,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,203,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,254,213,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,203,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,240,217,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,249,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,230,12,0,0,10,88,162,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,226,11,0,0,120,253,245,148,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,19,0,37,250,253,254,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,19,2,152,254,248,156,231,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,235,68,32,253,208,41,10,204,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,241,133,253,194,0,20,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,254,253,230,12,117,253,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,255,242,51,91,255,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,204,249,242,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,253,253,75,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,145,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,3,2,7,7,7,40,131,171,213,86,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,149,254,180,157,254,254,254,254,254,254,254,198,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,184,236,236,236,236,236,205,112,223,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,59,232,247,187,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,230,254,188,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,193,254,188,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,91,254,212,20,40,50,50,50,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,236,181,239,254,254,254,189,181,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,254,254,254,205,192,149,174,217,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,62,62,62,62,14,0,0,0,133,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,248,223,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,125,248,223,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,248,254,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,248,223,113,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,241,254,69,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,215,225,103,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,218,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,253,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,243,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,253,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,223,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,232,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,7,4,7,7,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,38,137,223,254,254,197,254,254,254,206,83,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,121,254,254,254,254,254,254,254,254,254,254,254,144,1,0,0,0,0,0,0,0,0,0,0,0,3,41,216,254,254,254,254,248,229,190,105,105,225,254,254,254,18,0,0,0,0,0,0,0,0,0,0,0,41,254,254,254,254,232,131,73,0,0,0,0,39,225,254,254,145,0,0,0,0,0,0,0,0,0,0,92,216,254,254,248,192,27,0,0,0,0,0,0,0,39,243,254,255,0,0,0,0,0,0,0,0,0,9,217,254,254,208,72,0,0,0,0,0,0,0,0,0,0,237,254,254,0,0,0,0,0,0,0,0,2,122,254,254,209,30,0,0,0,0,0,0,0,0,0,0,0,212,254,254,0,0,0,0,0,0,0,0,7,254,254,249,77,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,0,0,0,0,0,0,0,0,99,254,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,254,0,0,0,0,0,0,0,0,131,254,249,77,0,0,0,0,0,0,0,0,0,0,0,0,0,173,254,254,0,0,0,0,0,0,0,0,131,254,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,254,0,0,0,0,0,0,0,0,171,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,34,243,254,254,0,0,0,0,0,0,0,0,213,254,112,0,0,0,0,0,0,0,0,0,0,0,0,35,218,254,254,108,0,0,0,0,0,0,0,0,131,254,218,0,0,0,0,0,0,0,0,0,0,0,81,218,254,254,153,1,0,0,0,0,0,0,0,0,131,254,252,141,0,0,0,0,0,0,0,79,100,204,250,254,254,210,22,0,0,0,0,0,0,0,0,0,18,254,254,252,231,231,169,231,231,231,231,249,254,254,254,254,158,22,0,0,0,0,0,0,0,0,0,0,1,24,205,254,254,254,254,254,254,254,254,254,254,254,158,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,7,24,136,211,254,254,228,136,136,100,12,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,121,254,254,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,188,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,184,253,253,253,253,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,226,68,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,238,253,253,230,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,237,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,238,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,187,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,252,253,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,144,253,253,246,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,253,253,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,248,253,253,168,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,253,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,253,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,253,235,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,198,253,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,211,0,0,0,0,18,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,125,254,163,0,0,0,0,159,248,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,254,254,50,0,0,0,0,81,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,234,254,223,26,0,0,0,12,202,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,174,254,254,36,0,0,0,0,26,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,234,87,1,0,0,0,0,26,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,7,154,248,254,109,0,0,0,0,0,0,26,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,158,1,0,0,0,0,0,0,26,254,254,65,0,0,0,0,0,0,0,0,0,0,0,8,195,247,254,243,112,96,96,96,56,0,0,0,26,254,254,65,0,0,0,0,0,0,0,0,0,0,33,233,254,254,254,254,254,254,254,254,253,250,205,150,160,254,254,65,0,0,0,0,0,0,0,0,0,0,56,254,254,250,249,198,222,249,249,249,249,249,249,249,250,254,254,65,0,0,0,0,0,0,0,0,0,0,21,173,95,13,0,0,0,0,0,0,0,0,0,0,26,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,65,13,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,84,144,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,254,240,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,255,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,228,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,255,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,207,179,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,192,253,253,254,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,237,252,252,252,253,252,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,245,252,252,238,187,144,247,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,212,28,0,0,120,252,231,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,217,29,0,0,0,14,236,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,66,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,244,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,166,253,156,78,7,0,0,4,183,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,252,252,252,156,36,0,22,252,217,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,249,253,201,134,245,252,224,127,181,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,236,37,0,56,128,227,252,252,252,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,239,252,86,11,0,0,0,25,200,252,252,252,212,131,97,0,0,0,0,0,0,0,0,0,0,0,0,145,253,236,0,0,0,0,18,166,253,253,253,253,255,253,214,0,0,0,0,0,0,0,0,0,0,0,0,232,252,147,0,0,0,84,216,253,252,245,141,63,168,89,32,0,0,0,0,0,0,0,0,0,0,0,0,223,252,200,128,127,224,246,252,253,236,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,231,252,253,252,252,252,252,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,191,253,252,199,147,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,10,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,122,0,0,0,0,54,233,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,146,249,46,0,0,0,38,230,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,184,253,148,0,0,0,0,84,253,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,217,253,227,9,0,0,0,64,232,235,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,210,253,144,34,0,0,0,28,233,235,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,239,253,143,7,0,0,0,20,212,253,192,0,0,120,205,205,0,0,0,0,0,0,0,0,0,0,78,241,229,122,7,0,0,0,51,112,253,253,221,195,218,211,156,156,0,0,0,0,0,0,0,0,0,23,244,253,140,0,0,53,100,224,243,253,253,156,18,18,24,15,0,0,0,0,0,0,0,0,0,0,6,191,253,206,91,122,219,247,252,253,254,253,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,254,254,254,245,201,122,69,243,255,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,250,228,205,108,26,0,0,75,248,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,87,0,0,0,0,0,61,244,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,243,227,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,244,174,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,244,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,124,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,117,242,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,242,253,161,93,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,254,168,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,211,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,244,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,183,235,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,232,18,0,0,0,32,155,161,125,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,214,0,0,0,0,185,253,254,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,136,0,0,0,70,254,218,218,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,136,0,0,0,118,253,61,29,214,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,136,0,0,0,100,253,62,0,51,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,208,0,0,0,3,169,193,0,112,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,128,8,0,0,43,36,80,236,249,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,244,253,193,112,52,118,183,254,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,226,253,254,253,253,253,159,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,122,151,235,211,103,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,244,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,161,244,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,234,252,252,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,236,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,252,252,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,255,253,253,253,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,252,252,252,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,211,252,252,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,169,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,253,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,253,252,240,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,70,132,111,51,26,205,253,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,203,252,253,252,240,224,252,253,172,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,205,252,200,148,252,252,252,252,253,92,0,0,0,64,116,116,74,0,0,0,0,0,0,0,0,0,0,110,253,140,11,24,253,253,253,253,255,180,138,233,253,255,249,146,21,0,0,0,0,0,0,0,0,0,15,219,221,25,22,170,252,252,252,252,253,252,252,252,252,218,75,0,0,0,0,0,0,0,0,0,0,0,24,252,252,196,215,253,252,252,153,69,184,183,183,141,69,32,0,0,0,0,0,0,0,0,0,0,0,0,15,219,252,252,252,253,252,101,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,243,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,254,254,254,254,254,142,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,253,253,253,253,253,253,239,144,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,235,253,253,253,253,253,253,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,198,117,61,61,61,187,253,253,251,126,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,115,253,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,200,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,244,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,215,253,253,219,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,248,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,151,237,253,250,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,79,192,253,253,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,125,141,253,253,253,253,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,244,253,253,253,253,253,253,253,253,245,237,104,104,104,22,0,0,0,0,0,0,0,0,0,0,0,146,251,253,253,253,253,253,253,253,253,253,253,253,253,253,253,227,220,220,145,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,0,0,0,0,0,0,0,0,213,250,253,253,225,129,75,75,75,75,101,212,235,253,253,253,253,253,253,231,0,0,0,0,0,0,0,0,0,88,96,96,31,0,0,0,0,0,0,0,55,96,226,232,238,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,116,116,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,154,239,254,255,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,239,254,243,176,176,235,248,102,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,196,253,241,109,23,0,0,51,235,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,198,254,241,66,0,0,0,0,0,190,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,201,25,0,0,0,0,0,0,110,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,252,240,30,0,0,0,0,0,0,0,153,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,130,0,0,0,0,0,0,0,0,190,242,8,0,0,0,0,0,0,0,0,0,0,0,0,0,56,246,241,20,0,0,0,0,0,0,0,20,246,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,254,131,0,0,0,0,0,0,0,0,3,99,33,0,0,0,0,0,0,0,0,0,0,0,0,0,38,248,243,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,115,0,20,94,168,48,35,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,189,0,211,254,254,254,254,200,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,189,0,152,245,128,128,249,254,189,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,194,2,14,40,8,0,109,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,254,27,0,0,0,0,24,235,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,240,254,194,15,0,0,0,0,144,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,245,254,213,134,50,9,9,154,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,254,254,254,254,254,253,239,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,82,157,183,254,211,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,98,164,255,255,255,255,255,197,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,159,253,253,253,253,249,241,195,117,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,253,253,249,235,140,111,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,248,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,236,213,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,240,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,191,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,205,253,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,192,253,151,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,132,253,231,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,242,243,253,233,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,202,238,129,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,24,139,212,253,159,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,130,194,252,253,252,252,252,211,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,252,252,215,183,202,252,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,252,168,21,0,13,215,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,22,22,2,0,0,0,103,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,255,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,247,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,212,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,70,13,64,70,91,234,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,93,208,236,252,215,248,253,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,238,252,253,252,252,252,252,253,252,252,252,242,53,0,0,0,0,0,0,0,0,0,0,0,0,3,118,253,253,253,255,253,253,253,253,255,253,236,249,253,244,50,0,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,253,252,252,252,252,253,202,25,118,227,253,173,13,0,0,0,0,0,0,0,0,0,0,24,252,252,252,252,253,252,252,252,252,152,25,0,0,84,222,252,100,0,0,0,0,0,0,0,0,0,0,15,177,252,252,252,253,252,252,218,108,21,0,0,0,0,36,219,240,131,0,0,0,0,0,0,0,0,0,0,5,107,179,252,243,137,106,14,0,0,0,0,0,0,0,15,75,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,51,92,152,152,214,253,234,152,92,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,223,253,252,253,252,253,252,213,252,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,255,192,82,0,0,0,0,0,0,0,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,151,0,0,0,0,0,0,0,0,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,255,213,0,0,0,0,0,0,11,173,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,123,0,0,0,0,0,92,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,254,131,0,0,0,62,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,82,0,0,183,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,254,131,132,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,223,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,252,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,142,102,254,213,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,102,61,213,252,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,0,0,41,243,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,212,0,0,0,81,253,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,213,0,0,0,21,255,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,41,0,0,142,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,193,152,173,253,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,131,253,252,253,212,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,252,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,237,254,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,207,28,0,0,0,0,0,0,25,246,254,174,8,0,0,0,0,0,0,0,0,0,0,0,0,0,103,254,254,59,0,0,0,0,0,0,95,254,254,114,0,0,0,0,0,0,0,0,0,0,0,0,0,15,212,254,254,59,0,0,0,0,0,0,173,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,254,202,5,0,0,0,0,0,49,250,254,204,3,0,0,0,0,0,0,0,0,0,0,0,0,4,218,254,252,77,0,0,0,0,0,0,99,254,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,244,0,0,40,0,0,0,0,184,254,254,120,42,0,0,0,0,0,0,0,0,0,0,4,55,239,254,254,254,239,239,246,239,239,239,239,252,254,254,254,159,0,0,0,0,0,0,0,0,0,0,39,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,114,0,0,0,0,0,0,0,0,0,0,39,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,25,0,0,0,0,0,0,0,0,0,0,2,122,227,227,192,119,119,82,64,96,50,200,254,254,228,119,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,243,255,229,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,208,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,192,230,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,226,251,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,225,249,106,6,19,19,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,224,254,192,62,183,254,254,162,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,136,254,254,254,254,245,223,235,254,161,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,254,244,120,64,0,35,235,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,183,246,149,232,94,0,0,0,0,142,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,180,0,40,0,0,0,0,0,32,238,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,228,245,63,0,0,0,0,0,0,0,0,231,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,180,0,0,0,0,0,0,0,0,25,237,142,0,0,0,0,0,0,0,0,0,0,0,0,0,7,152,254,87,0,0,0,0,0,0,0,0,194,226,43,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,225,19,0,0,0,0,0,0,0,111,248,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,117,0,0,0,0,0,0,0,71,248,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,16,237,228,16,0,0,0,0,0,0,0,191,254,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,223,0,0,0,0,0,0,0,70,248,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,254,223,0,0,0,0,0,0,79,210,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,255,223,0,0,0,0,79,201,249,181,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,254,237,113,113,113,201,250,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,154,254,254,254,254,254,254,164,39,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,82,148,233,130,130,100,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,46,157,242,255,235,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,170,254,254,254,254,254,234,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,220,254,254,254,226,86,234,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,200,254,254,251,125,11,0,159,254,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,231,71,0,5,21,25,141,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,239,254,250,65,21,68,164,254,219,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,254,246,196,243,254,254,254,254,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,254,254,254,254,254,254,227,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,148,216,216,176,120,99,254,254,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,205,254,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,232,254,211,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,248,254,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,254,243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,86,72,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,254,254,241,134,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,254,254,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,254,254,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,254,204,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,52,174,253,255,253,245,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,185,252,252,252,253,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,245,245,178,56,21,21,99,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,141,0,0,0,0,112,247,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,174,11,0,0,0,0,111,47,0,0,168,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,131,11,0,0,45,132,0,0,11,175,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,239,253,142,43,55,18,0,0,16,206,182,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,245,246,223,7,0,4,57,224,134,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,237,48,27,139,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,226,252,242,228,253,137,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,247,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,239,244,252,252,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,231,58,196,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,228,253,124,0,169,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,107,0,0,109,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,106,0,0,64,252,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,162,15,20,202,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,225,253,224,211,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,209,252,252,226,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,243,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,236,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,230,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,200,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,126,254,254,249,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,254,254,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,205,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,254,254,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,164,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,204,254,250,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,244,254,246,0,0,0,76,231,246,246,218,157,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,246,0,0,154,252,254,254,254,254,254,242,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,253,115,77,252,254,254,254,254,254,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,249,254,238,237,254,254,251,158,74,77,210,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,254,254,254,254,120,0,0,10,225,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,114,254,254,254,254,192,179,179,230,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,214,253,152,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,203,163,243,253,252,253,232,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,233,244,223,254,253,142,0,132,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,212,122,20,253,252,102,0,31,232,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,213,255,131,0,0,234,253,102,0,0,41,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,172,10,0,0,112,252,102,0,0,0,172,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,41,0,0,0,0,203,234,51,0,0,0,203,255,71,0,0,0,0,0,0,0,0,0,0,0,41,253,212,0,0,0,0,0,81,213,232,142,61,0,122,253,151,0,0,0,0,0,0,0,0,0,0,0,123,254,91,0,0,0,0,0,0,0,123,214,213,0,0,193,253,62,0,0,0,0,0,0,0,0,0,21,223,253,50,0,0,0,0,0,0,0,0,10,50,0,0,152,252,142,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,132,253,203,0,0,0,0,0,0,0,0,0,31,232,253,50,0,0,0,0,0,0,0,0,0,0,0,0,51,252,203,0,0,0,0,0,0,0,0,0,0,203,254,50,0,0,0,0,0,0,0,0,0,0,0,0,52,253,203,0,0,0,0,0,0,0,0,0,0,203,253,50,0,0,0,0,0,0,0,0,0,0,0,0,51,252,203,0,0,0,0,0,0,0,0,0,0,82,254,213,62,0,0,0,0,0,0,0,0,0,0,0,173,253,142,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,123,253,212,20,0,0,0,0,0,0,0,0,0,0,0,173,253,234,51,0,0,0,0,0,0,0,21,214,253,224,40,0,0,0,0,0,0,0,0,0,0,0,0,10,212,253,232,142,61,0,0,0,82,123,223,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,243,255,253,255,253,255,253,255,233,142,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,112,192,253,252,192,192,131,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,247,160,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,222,254,250,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,248,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,216,254,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,237,254,143,0,0,0,0,0,0,0,0,26,85,79,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,225,12,0,0,0,0,0,0,100,189,248,254,253,178,27,0,0,0,0,0,0,0,0,0,0,0,34,227,189,3,0,0,0,0,0,50,247,254,254,254,254,254,232,43,0,0,0,0,0,0,0,0,0,0,50,176,46,0,0,0,0,0,106,189,247,250,131,66,66,163,254,201,0,0,0,0,0,0,0,0,0,0,157,146,0,0,0,0,0,0,71,189,153,77,0,0,0,0,246,255,66,0,0,0,0,0,0,0,0,49,142,79,0,0,0,0,30,87,108,109,5,0,0,0,0,0,245,254,128,0,0,0,0,0,0,0,0,160,254,150,0,0,0,0,169,254,250,92,7,0,0,0,0,39,249,254,254,0,0,0,0,0,0,0,0,188,254,150,0,0,0,85,251,254,97,0,0,0,0,0,41,229,254,254,162,0,0,0,0,0,0,0,0,237,254,116,0,0,18,248,254,220,29,0,0,0,15,83,244,254,254,203,29,0,0,0,0,0,0,0,0,160,254,193,7,22,194,254,254,125,0,0,10,23,155,254,254,254,179,21,0,0,0,0,0,0,0,0,0,72,213,254,176,85,254,254,214,11,0,0,198,254,254,254,247,137,3,0,0,0,0,0,0,0,0,0,0,0,103,241,254,250,254,254,195,151,221,246,253,254,254,204,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,202,254,254,254,254,254,254,254,249,187,69,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,118,166,254,254,254,183,135,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,207,254,254,254,254,178,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,253,224,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,238,253,253,173,25,92,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,175,4,0,0,148,251,60,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,198,159,8,0,0,0,120,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,227,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,234,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,255,227,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,207,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,133,133,128,23,23,220,252,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,147,250,253,253,253,253,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,237,253,246,165,165,207,253,253,253,247,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,205,35,84,122,233,251,194,194,250,248,140,64,4,0,0,0,9,2,0,0,0,0,0,0,0,0,254,253,215,250,253,253,227,82,0,0,71,221,253,253,165,29,0,47,228,100,0,0,0,0,0,0,0,0,128,230,253,247,176,137,34,0,0,0,0,18,109,250,253,231,140,228,253,143,0,0,0,0,0,0,0,0,0,23,33,30,0,0,0,0,0,0,0,0,0,31,105,181,253,253,220,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,69,43,43,43,123,253,253,253,253,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,252,252,252,252,253,252,252,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,252,252,252,252,253,244,252,252,252,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,237,194,189,189,128,131,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,4,0,0,18,216,252,252,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,216,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,245,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,39,253,253,255,95,87,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,216,217,190,221,252,252,253,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,252,252,252,252,253,252,224,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,252,252,252,226,128,84,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,42,200,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,252,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,190,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,153,196,254,254,254,156,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,117,209,243,253,253,253,253,253,253,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,253,253,241,188,165,89,173,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,188,250,253,227,58,28,0,0,0,78,253,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,20,128,253,253,199,41,0,0,0,0,0,169,253,253,218,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,226,34,0,0,0,0,0,26,246,253,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,253,206,24,0,0,0,0,0,187,253,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,55,232,253,253,170,85,40,40,82,163,251,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,187,253,253,253,253,253,253,253,253,253,254,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,95,176,203,203,203,203,180,35,253,253,238,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,253,253,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,249,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,246,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,253,253,201,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,208,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,217,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,222,249,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,251,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,205,237,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,247,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,226,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,237,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,254,135,0,11,58,118,118,118,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,135,85,217,253,254,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,102,247,231,138,95,95,19,235,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,51,223,117,0,0,0,0,234,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,99,68,8,0,0,5,89,246,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,254,181,0,0,0,5,76,253,250,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,247,108,67,31,119,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,217,253,250,241,254,212,49,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,126,208,215,133,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,236,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,252,252,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,248,253,252,252,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,95,244,252,253,247,186,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,125,252,252,252,250,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,252,252,217,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,213,252,252,252,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,252,113,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,246,252,252,252,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,252,252,160,1,116,242,241,241,241,241,149,23,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,253,253,253,253,253,253,255,253,253,253,253,253,172,2,0,0,0,0,0,0,0,0,0,0,0,0,48,252,252,252,252,252,252,252,253,252,252,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,252,252,252,252,253,235,230,233,242,252,252,111,0,0,0,0,0,0,0,0,0,0,0,12,202,252,252,252,252,252,252,148,84,44,32,40,101,252,252,155,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,252,252,174,4,0,0,38,84,198,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,252,252,227,135,136,193,230,252,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,117,252,252,252,252,252,252,252,253,252,252,252,252,252,183,7,0,0,0,0,0,0,0,0,0,0,0,0,6,180,252,252,252,252,252,252,253,252,252,252,252,143,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,169,252,252,252,252,252,253,252,252,252,145,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,52,131,241,252,253,252,177,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,139,254,138,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,238,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,236,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,57,238,254,253,191,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,253,253,254,210,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,232,253,253,243,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,242,253,253,244,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,165,253,253,240,27,0,0,0,43,25,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,164,253,253,240,74,0,0,0,75,251,225,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,113,0,0,0,78,215,253,253,253,219,92,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,180,0,0,15,159,254,254,254,254,240,254,254,66,0,0,0,0,0,0,0,0,0,0,0,70,250,253,253,103,0,50,196,254,253,253,219,115,106,253,253,66,0,0,0,0,0,0,0,0,0,0,0,143,253,253,219,13,81,242,253,254,253,171,25,0,89,253,253,66,0,0,0,0,0,0,0,0,0,0,35,233,253,249,54,69,250,253,253,242,126,2,0,39,223,253,230,32,0,0,0,0,0,0,0,0,0,0,139,253,253,198,44,199,253,253,253,119,56,56,56,185,253,251,116,0,0,0,0,0,0,0,0,0,0,0,177,253,246,81,199,253,253,253,253,231,253,253,253,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,177,253,231,0,146,253,253,253,253,254,253,253,253,246,204,21,0,0,0,0,0,0,0,0,0,0,0,0,158,253,235,35,35,241,253,253,253,255,253,253,201,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,187,253,239,188,248,253,253,253,254,199,85,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,201,253,253,253,253,253,205,81,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,96,96,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,251,253,205,111,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,189,251,251,253,251,251,141,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,186,251,251,251,253,251,251,251,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,194,251,251,251,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,255,253,205,158,158,0,32,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,112,244,251,253,227,110,0,0,0,52,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,251,251,205,31,0,0,0,0,190,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,223,244,251,251,211,119,0,0,0,0,24,205,251,156,12,0,0,0,0,0,0,0,0,0,0,0,0,100,253,251,251,211,35,0,0,0,0,0,194,251,251,31,0,0,0,0,0,0,0,0,0,0,0,0,223,253,255,253,253,129,0,0,0,0,0,159,255,253,205,19,0,0,0,0,0,0,0,0,0,0,4,112,244,251,253,247,140,8,0,0,0,16,72,228,253,247,110,0,0,0,0,0,0,0,0,0,0,0,112,251,251,251,253,220,0,0,0,48,127,189,251,251,253,140,0,0,0,0,0,0,0,0,0,0,0,24,205,251,251,251,189,66,0,16,64,234,251,251,251,211,129,8,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,0,0,80,181,251,253,251,251,211,35,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,253,255,253,253,253,253,255,253,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,251,251,251,251,253,251,251,251,251,181,62,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,251,251,251,251,253,251,251,251,172,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,197,251,251,251,253,243,188,148,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,94,94,94,95,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,95,184,175,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,37,112,193,254,254,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,254,254,254,254,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,150,235,250,254,254,233,125,125,125,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,160,225,254,254,229,181,107,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,244,254,254,254,222,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,93,208,254,254,216,151,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,117,255,254,254,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,229,254,254,254,195,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,206,254,254,254,254,221,160,203,203,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,82,251,254,254,254,254,254,254,254,254,254,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,231,254,189,205,254,254,254,254,254,254,254,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,237,59,192,254,240,223,135,138,234,254,254,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,254,156,0,235,254,60,0,34,186,254,254,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,254,140,159,253,255,232,161,224,254,246,157,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,254,254,254,254,254,254,176,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,155,250,254,254,247,238,140,53,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,94,94,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,136,136,136,136,186,252,147,255,171,45,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,253,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,153,211,238,200,200,197,93,209,253,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,47,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,203,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,182,253,199,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,203,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,243,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,133,0,0,0,1,12,35,130,224,146,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,248,68,0,25,83,153,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,253,134,12,138,239,253,253,253,253,253,253,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,209,200,253,253,253,253,246,166,70,70,172,101,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,253,253,253,253,216,165,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,253,253,253,253,223,109,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,248,253,178,53,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,202,254,255,182,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,250,253,253,254,253,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,244,253,185,94,254,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,253,146,12,40,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,253,36,0,26,254,237,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,215,11,0,85,255,238,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,182,253,171,37,248,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,179,248,233,253,204,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,153,253,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,235,33,228,234,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,239,253,99,0,12,165,250,126,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,253,208,8,0,0,28,176,253,195,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,254,229,40,0,0,0,0,8,204,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,254,166,0,0,0,0,0,0,109,253,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,109,0,0,0,0,0,11,215,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,254,108,0,0,0,0,51,213,253,214,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,193,37,11,37,153,250,234,171,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,208,253,253,214,253,248,163,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,124,162,194,162,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,243,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,11,0,0,0,0,0,0,0,0,0,59,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,25,0,0,0,0,0,0,0,0,0,163,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,166,13,0,0,7,219,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,233,229,14,0,0,77,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,251,252,152,0,0,0,160,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,236,253,176,0,0,0,0,164,240,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,174,6,0,0,0,58,239,126,4,9,97,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,236,130,105,105,106,184,254,183,105,210,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,253,253,254,253,253,253,253,194,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,150,234,245,244,254,253,239,128,67,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,82,254,212,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,245,255,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,138,253,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,253,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,120,163,186,81,156,59,59,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,207,254,253,253,253,253,254,253,241,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,247,253,254,253,253,253,253,254,222,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,253,192,109,19,19,19,19,12,91,250,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,200,80,0,0,0,0,0,0,0,79,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,45,0,0,0,0,0,0,0,0,102,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,181,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,228,253,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,253,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,255,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,244,254,191,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,217,253,205,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,129,240,253,253,83,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,158,150,135,150,217,135,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,171,255,254,254,254,254,255,254,254,254,254,255,122,0,0,0,0,0,0,0,0,0,0,0,0,0,37,190,253,254,253,253,253,253,254,253,253,227,173,246,158,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,254,253,253,253,222,168,137,174,43,0,48,190,84,0,0,0,0,0,0,0,0,0,0,0,0,6,235,253,254,234,213,124,72,8,0,0,0,0,0,100,147,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,155,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,226,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,255,170,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,255,198,57,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,141,0,0,0,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,141,0,0,0,0,86,255,170,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,170,0,0,0,0,0,170,255,141,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,29,0,0,0,0,57,255,141,141,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,141,0,0,0,0,29,226,198,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,86,0,0,0,0,114,141,29,114,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,114,0,0,0,0,0,0,86,255,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,86,86,86,141,255,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,198,255,255,255,255,255,255,255,255,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,57,86,198,141,29,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,245,186,220,162,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,64,214,230,254,253,253,253,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,116,237,253,253,253,254,248,230,230,254,194,5,0,0,0,0,0,0,0,0,0,0,0,0,0,119,184,240,253,254,253,253,219,136,56,0,0,220,253,79,0,0,0,0,0,0,0,0,0,0,0,0,127,254,254,254,254,236,167,101,235,60,0,0,0,162,254,138,0,0,0,0,0,0,0,0,0,0,0,0,9,254,244,164,48,17,0,0,50,42,0,0,34,245,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,71,46,0,0,0,0,0,0,0,0,0,184,254,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,101,234,254,202,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,237,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,243,253,253,165,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,91,254,253,242,128,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,253,254,236,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,212,254,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,204,253,253,185,23,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,240,254,253,225,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,222,253,253,254,236,105,25,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,66,229,254,254,254,254,254,254,254,254,229,161,161,229,255,254,205,0,0,0,0,0,0,0,0,0,38,189,249,253,254,253,232,206,140,206,206,240,254,253,253,253,254,244,79,0,0,0,0,0,0,0,0,0,38,226,253,253,247,162,25,0,0,0,0,34,46,129,137,137,138,46,0,0,0,0,0,0,0,0,0,0,0,64,236,151,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,255,255,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,228,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,253,243,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,224,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,71,231,253,253,178,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,253,253,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,197,238,253,253,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,203,253,235,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,115,253,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,196,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,194,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,253,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,156,194,232,239,223,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,118,215,247,253,242,241,254,253,253,232,139,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,142,253,254,216,107,36,30,78,128,253,253,253,145,42,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,222,95,10,0,0,0,0,2,19,167,253,254,150,0,0,0,0,0,0,0,0,0,0,0,0,8,205,237,36,0,0,0,0,0,0,0,0,24,230,254,248,98,0,0,0,0,0,0,0,0,0,0,0,16,195,53,0,0,0,0,0,0,0,0,0,0,173,255,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,253,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,244,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,137,251,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,253,215,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,254,184,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,251,203,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,213,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,229,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,217,206,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,238,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,240,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,238,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,214,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,254,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,43,43,43,43,43,43,87,148,148,156,253,253,254,218,12,0,0,0,0,0,0,0,0,0,0,0,36,241,252,252,253,252,252,252,252,253,252,252,252,252,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,135,252,252,253,252,252,252,252,253,252,233,231,231,170,126,11,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,216,189,180,84,172,190,110,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,18,0,9,106,106,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,253,61,183,253,253,253,254,218,192,122,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,253,252,252,252,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,253,245,126,21,21,83,161,187,237,252,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,98,0,0,0,0,0,0,48,242,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,218,11,0,0,0,0,0,0,0,79,253,239,17,0,0,0,0,0,0,0,0,0,0,0,0,4,103,106,0,0,0,0,0,0,0,0,0,0,148,253,127,0,0,0,0,0,0,0,0,0,0,0,0,22,189,0,0,0,0,0,0,0,0,0,0,0,69,252,205,0,0,0,0,0,0,0,0,0,0,0,0,22,247,47,0,0,0,0,0,0,0,0,0,0,43,252,231,0,0,0,0,0,0,0,0,0,0,0,0,7,196,147,0,0,0,0,0,0,0,0,0,0,43,252,205,0,0,0,0,0,0,0,0,0,0,0,0,0,169,235,0,0,0,0,0,0,0,0,0,0,130,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,109,253,80,0,0,0,0,0,0,0,0,36,255,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,243,111,43,0,0,0,64,85,155,242,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,152,253,252,242,232,232,233,247,252,252,252,241,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,252,252,253,252,252,236,189,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,95,191,147,191,147,94,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,152,152,173,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,192,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,142,61,62,203,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,214,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,243,162,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,253,255,131,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,151,232,253,130,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,247,181,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,191,254,254,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,194,254,254,253,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,254,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,167,251,254,254,234,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,234,254,254,252,155,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,109,254,254,229,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,191,254,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,164,254,254,254,155,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,234,254,254,254,196,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,144,254,254,254,202,20,0,48,119,201,143,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,254,200,17,14,108,241,254,254,254,188,13,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,254,254,150,20,63,224,254,254,254,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,246,38,181,251,254,254,254,254,254,254,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,249,205,254,254,254,254,83,120,249,254,254,251,5,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,254,254,254,254,254,213,208,239,254,255,184,2,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,254,254,254,254,254,254,254,254,254,243,77,26,0,0,0,0,0,0,0,0,0,0,0,0,0,54,241,254,254,254,254,254,254,254,254,254,228,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,156,247,254,254,254,254,254,132,76,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,248,169,129,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,193,0,0,140,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,244,39,0,0,57,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,185,3,0,0,0,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,250,45,0,0,0,0,166,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,211,0,0,0,0,0,93,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,128,0,0,0,0,0,93,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,235,69,0,0,0,0,24,100,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,250,40,0,0,0,0,19,216,243,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,183,0,0,0,0,0,0,130,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,99,0,0,0,0,0,0,93,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,220,93,0,0,0,0,0,0,94,255,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,31,0,0,0,0,0,0,153,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,235,11,0,0,0,0,0,0,126,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,250,14,0,0,0,0,0,0,93,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,201,3,0,0,0,0,0,0,128,189,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,15,0,0,0,0,0,39,239,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,253,18,0,0,0,0,16,201,216,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,102,0,0,0,29,181,215,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,233,99,71,154,241,197,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,186,254,183,93,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,234,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,243,214,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,227,0,0,0,0,57,131,169,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,252,52,0,0,29,134,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,177,3,0,101,234,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,100,0,204,253,253,253,226,150,160,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,171,0,26,253,252,233,96,0,0,85,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,84,0,150,253,233,62,0,0,0,172,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,84,0,175,253,246,150,0,0,101,246,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,178,104,229,242,184,0,13,141,216,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,252,252,252,216,196,169,206,253,252,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,224,252,252,253,252,252,252,244,142,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,177,252,190,139,139,40,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,246,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,153,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,200,71,0,0,0,0,0,0,170,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,169,0,0,0,0,0,8,210,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,140,0,0,0,0,0,85,254,237,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,247,251,62,0,0,0,0,0,116,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,224,0,0,0,0,0,0,116,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,241,107,34,16,1,0,0,131,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,245,217,176,96,96,230,254,249,125,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,254,254,254,254,254,254,254,254,254,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,119,200,249,249,253,254,254,254,254,254,254,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,95,133,195,254,254,162,194,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,195,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,223,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,254,252,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,244,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,136,211,255,182,18,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,203,253,253,253,253,253,55,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,244,253,212,82,82,118,245,253,113,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,190,253,216,29,0,0,0,99,247,253,232,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,129,0,0,0,0,0,43,208,253,201,25,0,0,0,0,0,0,0,0,0,0,0,0,0,23,203,253,208,20,0,0,0,0,0,0,81,253,253,147,22,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,144,0,0,0,0,0,0,0,1,95,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,29,0,0,0,0,0,0,0,0,27,245,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,29,0,0,0,0,0,0,0,0,0,92,253,170,0,0,0,0,0,0,0,0,0,0,0,0,171,253,233,22,0,0,0,0,0,0,0,0,0,130,253,170,0,0,0,0,0,0,0,0,0,0,0,28,235,253,164,0,0,0,0,0,0,0,0,0,0,166,253,134,0,0,0,0,0,0,0,0,0,0,0,36,253,253,164,0,0,0,0,0,0,0,0,0,25,239,253,97,0,0,0,0,0,0,0,0,0,0,0,36,253,253,164,0,0,0,0,0,0,0,0,0,30,253,253,119,0,0,0,0,0,0,0,0,0,0,0,34,249,253,164,0,0,0,0,0,0,0,0,68,200,253,220,26,0,0,0,0,0,0,0,0,0,0,0,0,171,253,216,17,0,0,0,0,0,0,14,200,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,29,0,0,0,0,15,92,205,253,248,184,25,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,253,87,3,0,0,46,177,253,253,250,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,232,253,253,145,149,201,238,253,253,216,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,253,253,253,253,216,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,59,240,253,253,253,170,100,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,98,164,255,255,109,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,217,253,253,253,253,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,216,253,253,253,253,253,253,253,213,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,236,198,105,148,253,253,253,113,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,172,253,208,29,0,0,66,247,253,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,253,253,80,0,0,0,0,115,247,253,253,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,172,253,246,66,0,0,0,35,84,239,253,166,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,253,240,149,15,13,84,236,253,253,235,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,253,201,198,253,253,253,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,186,253,253,253,253,253,253,233,88,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,188,253,253,253,253,163,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,253,253,253,210,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,237,253,235,192,253,253,198,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,253,236,69,11,202,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,177,237,69,0,0,87,253,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,210,0,0,0,69,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,249,205,83,0,35,226,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,249,236,241,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,210,253,253,253,253,253,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,91,217,253,253,217,129,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,105,105,148,253,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,252,252,252,252,236,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,15,42,164,164,236,252,252,252,252,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,252,252,252,253,252,252,195,238,252,252,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,67,223,238,252,252,252,253,252,252,132,70,90,217,252,207,0,0,0,0,0,0,0,0,0,0,0,0,0,180,252,252,252,252,252,253,227,126,39,0,0,134,252,189,0,0,0,0,0,0,0,0,0,0,0,0,64,238,252,252,252,148,118,119,21,0,0,0,16,196,252,59,0,0,0,0,0,0,0,0,0,0,0,68,244,252,252,204,22,4,0,0,0,0,43,90,196,252,252,112,0,0,0,0,0,0,0,0,0,0,38,179,252,252,220,97,0,0,0,19,45,54,221,252,252,252,252,207,0,0,0,0,0,0,0,0,0,0,208,252,252,252,74,0,0,0,0,192,252,252,252,252,252,252,252,207,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,253,253,227,192,255,253,253,253,253,253,253,253,208,0,0,0,0,0,0,0,0,0,0,208,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,252,84,0,0,0,0,0,0,0,0,0,0,208,252,252,252,252,252,252,252,252,253,252,252,252,252,252,252,237,55,0,0,0,0,0,0,0,0,0,0,208,252,252,252,252,252,252,252,252,133,132,139,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,24,169,177,221,177,217,181,177,177,0,0,15,252,252,252,252,14,0,0,0,0,0,0,0,0,0,0,0,0,44,0,44,0,39,4,0,0,0,8,131,252,252,252,156,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,252,236,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,224,252,252,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,252,252,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,105,252,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,113,207,253,255,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,252,252,253,252,246,209,85,86,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,252,252,253,252,252,252,252,253,78,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,249,145,146,223,246,252,252,253,252,155,10,0,0,0,0,0,0,0,0,0,0,0,0,16,203,253,252,252,223,0,0,0,88,112,112,253,252,252,161,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,253,253,84,0,0,0,0,0,63,63,241,253,225,0,0,0,0,0,0,0,0,0,0,0,51,243,252,253,252,154,9,0,0,0,0,0,15,0,225,252,223,0,0,0,0,0,0,0,0,0,0,0,57,252,252,253,252,55,0,0,0,0,0,0,0,0,225,252,223,0,0,0,0,0,0,0,0,0,0,10,156,252,252,253,179,19,0,0,0,0,0,0,0,0,225,252,223,0,0,0,0,0,0,0,0,0,0,163,252,252,252,253,27,0,0,0,0,0,0,0,0,0,225,252,223,0,0,0,0,0,0,0,0,0,0,226,253,253,253,141,0,0,0,0,0,0,0,0,0,0,226,253,225,0,0,0,0,0,0,0,0,0,0,225,252,252,252,140,0,0,0,0,0,0,0,0,0,147,249,252,99,0,0,0,0,0,0,0,0,0,0,225,252,252,252,31,0,0,0,0,0,0,0,0,0,253,252,208,19,0,0,0,0,0,0,0,0,0,0,225,252,252,252,0,0,0,0,0,0,0,0,0,0,253,252,180,0,0,0,0,0,0,0,0,0,0,0,225,252,252,252,0,0,0,0,0,0,0,0,0,79,253,252,55,0,0,0,0,0,0,0,0,0,0,0,226,253,253,253,141,0,0,0,0,0,0,26,128,253,255,106,0,0,0,0,0,0,0,0,0,0,0,0,72,233,252,252,241,100,19,10,163,226,225,231,252,252,168,18,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,253,252,209,203,252,253,252,252,245,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,227,252,253,252,252,252,252,240,223,192,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,253,252,252,252,173,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,61,102,102,203,203,203,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,152,233,254,253,254,253,254,253,255,253,244,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,252,253,252,253,252,151,151,91,50,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,253,142,102,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,252,151,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,102,183,233,252,91,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,254,172,51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,252,253,252,253,252,203,122,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,254,253,254,253,254,253,234,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,50,50,50,50,71,232,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,234,51,0,0,0,0,0,62,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,253,111,0,0,0,0,21,203,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,255,253,132,51,41,123,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,213,252,253,252,243,243,253,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,102,102,102,102,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,35,94,186,164,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,33,137,173,239,254,254,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,135,185,211,239,250,254,254,254,254,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,15,185,244,254,254,254,254,254,254,253,194,132,113,130,249,68,0,0,0,0,0,0,0,0,0,0,0,0,108,255,254,231,254,243,181,110,101,20,0,0,0,0,115,31,0,0,0,0,0,0,0,0,0,0,0,34,244,252,118,11,54,7,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,160,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,254,146,31,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,254,255,254,218,142,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,60,218,254,254,254,248,198,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,133,194,254,254,254,209,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,77,173,254,254,165,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,106,254,254,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,34,170,247,254,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,194,131,114,114,114,139,170,220,254,254,254,220,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,254,254,254,254,254,254,254,254,254,208,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,239,254,254,254,254,235,216,112,117,49,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,24,24,76,99,44,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,56,153,235,254,254,160,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,44,172,253,253,253,253,253,253,212,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,201,253,253,253,253,253,253,253,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,253,253,253,234,153,133,133,200,251,211,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,229,253,253,196,79,2,0,0,0,0,156,253,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,253,250,118,11,0,0,0,0,0,0,136,253,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,190,0,0,0,0,0,0,0,24,234,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,144,11,0,0,0,17,15,40,171,253,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,211,179,95,154,219,216,244,253,254,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,238,253,253,253,253,253,253,253,253,253,253,238,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,200,248,249,253,253,248,250,253,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,94,76,0,84,253,253,238,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,165,253,253,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,253,253,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,254,253,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,239,253,249,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,253,254,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,252,253,232,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,228,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,230,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,255,211,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,232,252,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,155,252,252,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,120,253,252,226,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,255,222,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,252,253,138,11,73,218,217,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,252,252,175,21,150,252,253,252,241,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,252,144,155,252,252,253,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,253,253,192,233,253,253,255,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,227,252,252,253,252,252,210,170,252,220,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,252,205,52,253,241,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,252,253,252,175,206,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,253,253,255,253,253,253,255,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,222,252,252,253,252,252,252,35,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,241,252,253,252,205,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,191,108,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,64,64,128,128,128,128,64,64,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,191,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,64,128,191,128,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,255,255,255,255,128,0,128,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,255,255,255,255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,255,255,191,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,97,19,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,141,244,251,243,229,192,174,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,194,209,249,253,253,253,253,253,253,253,252,108,0,0,0,0,0,0,0,0,0,0,0,0,91,165,212,249,253,253,253,253,253,253,253,253,253,253,253,236,48,0,0,0,0,0,0,0,0,0,0,144,251,253,253,253,253,227,162,162,162,72,120,162,218,253,253,253,170,0,0,0,0,0,0,0,0,0,101,251,253,253,223,168,128,28,0,0,0,0,0,0,37,175,253,253,253,0,0,0,0,0,0,0,0,0,225,253,253,172,29,0,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,136,252,253,253,119,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,254,253,253,253,25,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,254,253,253,199,13,0,0,0,0,0,0,0,0,0,0,0,20,253,253,253,0,0,0,0,0,0,0,0,135,252,253,253,52,0,0,0,0,0,0,0,0,0,0,0,20,253,253,226,0,0,0,0,0,0,0,0,0,224,253,253,173,6,0,0,0,0,0,0,0,0,0,0,44,253,252,101,0,0,0,0,0,0,0,0,0,100,251,253,253,180,59,7,0,0,0,0,0,7,40,121,219,253,159,0,0,0,0,0,0,0,0,0,0,0,87,241,253,253,253,179,163,163,66,33,124,177,253,253,253,245,42,0,0,0,0,0,0,0,0,0,0,0,0,90,224,253,253,253,253,253,253,253,253,253,253,253,251,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,150,234,250,253,253,253,253,253,253,253,241,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,214,240,240,240,240,240,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,195,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,249,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,32,0,0,0,0,54,241,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,225,13,0,0,0,115,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,24,0,0,26,244,240,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,249,201,3,0,0,112,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,145,0,0,48,222,253,177,85,155,155,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,252,253,230,185,246,251,254,253,253,253,253,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,254,251,249,254,255,214,164,127,83,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,170,113,74,50,79,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,250,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,229,239,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,253,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,187,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,213,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,147,249,183,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,176,229,254,254,254,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,209,254,253,249,92,129,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,216,254,226,81,0,0,0,141,244,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,254,227,42,0,0,0,55,148,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,71,0,0,0,25,246,254,242,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,224,23,0,0,0,198,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,254,123,0,0,19,173,251,254,221,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,221,42,70,153,215,241,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,254,254,254,172,206,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,109,254,146,107,139,12,239,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,16,4,0,0,0,239,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,252,254,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,254,219,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,254,212,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,239,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,231,127,59,59,37,59,59,74,156,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,253,253,239,253,253,253,253,222,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,253,253,254,253,253,253,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,64,184,213,213,238,253,253,253,253,207,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,238,253,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,244,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,253,216,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,235,254,247,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,254,142,13,40,40,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,121,157,195,248,253,254,226,213,253,253,254,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,254,254,254,254,255,254,254,254,254,135,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,253,253,253,253,254,228,106,39,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,253,253,154,78,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,253,247,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,231,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,255,254,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,254,253,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,235,254,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,230,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,128,141,166,253,153,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,82,197,252,253,252,252,252,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,252,168,168,196,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,252,252,52,0,0,134,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,113,25,0,4,128,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,128,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,123,246,253,252,148,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,225,226,231,252,252,241,115,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,250,254,253,253,253,192,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,84,159,196,246,253,234,82,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,215,252,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,253,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,238,38,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,238,38,0,0,0,0,0,0,0,57,252,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,255,228,53,4,0,0,0,0,0,120,253,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,228,252,252,178,51,0,0,0,120,225,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,187,252,252,247,197,197,197,253,252,224,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,116,240,253,252,252,252,253,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,198,255,226,170,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,255,255,255,255,255,255,198,0,86,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,226,114,29,0,0,198,255,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,141,29,0,0,29,226,255,255,86,0,86,29,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,114,0,0,0,86,226,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,114,198,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,198,255,255,255,198,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,226,57,86,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,86,57,0,0,198,255,57,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,170,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,170,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,170,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,226,29,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,141,0,0,0,0,0,0,0,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,226,29,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,141,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,29,0,0,0,0,0,0,0,0,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,170,226,57,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,48,10,0,0,0,0,230,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,254,169,2,0,0,0,229,188,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,84,254,240,4,0,0,76,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,122,0,0,0,79,254,204,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,254,254,52,0,0,0,79,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,169,254,253,160,16,0,0,0,151,255,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,254,254,243,0,0,0,0,28,246,254,135,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,254,215,63,146,167,167,178,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,116,251,255,254,254,254,254,254,254,254,254,254,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,23,229,254,254,254,254,254,254,254,254,254,254,254,254,219,29,0,0,0,0,0,0,0,0,0,0,0,0,8,160,254,254,254,254,254,254,175,253,179,208,254,115,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,58,109,60,5,5,5,1,5,2,135,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,247,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,251,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,236,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,138,170,253,201,244,212,222,138,86,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,252,252,252,252,253,252,252,252,252,245,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,246,205,69,69,69,69,69,69,69,69,205,253,240,50,0,0,0,0,0,0,0,0,0,0,0,0,0,187,252,218,34,0,0,0,0,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,116,248,252,253,92,0,0,0,0,0,0,95,230,253,157,6,0,0,0,0,0,0,0,0,0,0,0,0,116,249,253,189,42,0,0,0,0,36,170,253,243,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,245,140,34,0,0,57,219,252,235,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,205,253,252,234,184,184,253,240,100,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,161,219,252,252,252,234,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,203,252,252,252,251,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,76,255,253,205,168,220,255,253,137,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,252,249,132,25,0,0,180,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,220,252,199,0,0,0,0,38,186,252,154,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,252,21,0,0,0,0,0,67,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,252,200,0,0,0,0,0,0,47,252,252,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,201,0,0,0,0,0,3,118,253,245,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,252,252,0,0,0,0,0,97,252,252,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,240,252,123,70,70,112,184,222,252,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,252,253,252,252,252,252,245,139,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,75,253,252,221,137,137,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,216,255,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,248,205,138,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,246,188,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,215,239,18,0,0,0,0,0,0,0,0,20,64,0,0,0,0,0,0,0,0,0,0,0,0,0,61,208,238,68,0,0,0,0,0,0,0,0,0,194,148,0,0,0,0,0,0,0,0,0,0,0,1,30,219,248,149,0,0,0,0,0,0,0,0,0,54,250,72,0,0,0,0,0,0,0,0,0,0,0,27,253,253,114,0,0,0,0,0,0,0,0,0,41,237,221,0,0,0,0,0,0,0,0,0,0,0,26,208,253,154,7,0,0,0,0,0,0,0,0,0,103,253,221,0,0,0,0,0,0,0,0,0,0,26,209,253,219,33,0,0,0,0,0,0,0,0,0,0,173,253,124,10,10,0,0,0,0,0,0,0,0,146,253,248,0,0,0,0,0,0,0,0,0,0,0,41,225,253,214,199,115,0,0,0,0,0,0,0,0,232,253,77,0,0,0,0,0,46,93,93,194,200,200,229,253,253,202,71,0,0,0,0,0,0,0,0,0,245,253,238,130,130,130,197,238,246,253,253,253,239,232,253,253,147,7,0,0,0,0,0,0,0,0,0,0,66,194,246,253,253,253,253,253,224,194,109,86,29,23,246,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,45,156,122,48,48,48,25,0,0,0,0,98,253,228,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,239,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,215,241,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,253,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,177,254,255,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,218,254,253,253,237,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,171,253,254,253,237,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,254,253,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,177,254,254,254,235,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,167,254,253,253,237,86,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,171,253,254,253,237,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,254,148,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,177,254,254,254,235,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,253,148,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,37,167,254,253,253,237,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,254,253,158,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,254,148,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,177,254,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,247,138,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,72,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,236,175,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,127,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,225,252,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,223,252,252,0,0,0,64,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,253,253,174,0,0,0,64,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,252,169,11,0,0,0,99,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,153,253,252,171,7,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,252,253,169,7,0,0,0,0,15,225,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,142,9,0,45,107,106,162,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,254,253,253,253,253,255,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,239,253,252,252,252,252,253,252,252,252,252,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,21,21,21,65,21,21,195,252,252,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,210,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,242,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,233,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,253,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,127,245,246,232,206,127,128,48,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,253,231,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,185,249,252,252,253,252,252,252,252,253,239,62,0,0,0,0,0,0,0,0,0,0,0,0,22,114,236,254,253,253,243,124,0,0,0,0,0,175,253,236,14,0,0,0,0,0,0,0,0,0,0,29,213,252,252,253,224,116,47,0,0,0,0,0,0,11,205,252,84,0,0,0,0,0,0,0,0,0,0,173,252,252,235,109,14,0,0,0,0,0,0,0,0,22,221,252,84,0,0,0,0,0,0,0,0,0,0,28,180,119,14,0,0,0,0,0,0,0,0,0,0,69,252,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,224,14,0,0,0,0,0,0,0,0,0,0,0,0,20,22,66,128,171,224,232,144,128,48,84,237,252,250,66,0,0,0,0,0,0,0,0,0,0,0,11,143,246,252,252,253,252,252,252,252,253,252,252,252,226,115,0,0,0,0,0,0,0,0,0,0,0,0,130,252,252,252,164,42,121,103,217,252,253,252,252,252,235,107,27,0,0,45,0,0,0,0,0,0,0,0,254,253,236,43,43,43,123,201,253,253,230,211,211,222,253,255,253,253,253,236,0,0,0,0,0,0,0,0,218,252,252,252,252,253,252,252,252,217,27,0,0,16,63,168,196,210,141,37,0,0,0,0,0,0,0,0,30,205,231,231,231,232,196,126,56,12,0,0,0,0,0,0,7,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,100,151,235,236,235,235,229,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,238,253,253,253,254,232,222,253,253,102,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,245,235,119,23,8,165,253,254,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,162,117,41,0,0,0,0,12,227,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,212,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,91,155,91,91,92,72,0,19,253,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,195,255,254,254,254,254,255,254,241,202,254,255,18,0,0,0,0,0,0,0,0,0,0,0,0,0,106,249,253,238,146,140,179,198,199,229,253,253,253,254,133,28,0,0,0,0,0,0,0,0,0,0,0,60,248,253,194,58,0,0,0,0,0,81,253,253,240,241,253,235,146,95,0,0,0,0,0,0,0,0,32,224,253,193,16,0,0,0,0,7,103,230,253,193,35,35,106,222,249,175,0,0,0,0,0,0,0,0,137,253,253,54,0,0,0,0,46,207,254,253,194,16,0,0,0,0,57,21,0,0,0,0,0,0,0,0,189,254,191,0,0,0,88,176,254,254,234,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,198,145,145,204,252,253,249,166,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,250,253,253,253,254,232,138,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,222,228,144,87,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,255,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,176,196,204,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,116,240,193,0,36,24,43,79,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,228,253,253,237,0,0,13,192,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,222,65,36,0,8,183,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,255,219,30,0,0,37,224,254,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,199,254,128,0,0,53,239,253,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,213,12,25,94,235,254,141,199,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,249,159,240,253,237,57,6,187,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,170,254,253,253,147,36,0,20,253,237,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,91,0,0,0,0,140,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,228,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,250,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,255,241,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,202,249,249,249,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,201,254,254,254,254,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,236,249,254,254,254,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,248,254,254,239,156,89,214,254,250,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,236,139,27,0,0,19,158,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,39,31,0,0,0,0,51,181,251,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,183,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,251,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,116,254,248,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,254,254,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,79,254,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,47,9,0,0,0,0,9,79,254,255,217,34,0,0,0,0,0,0,0,0,0,0,0,19,40,40,158,244,254,144,8,0,30,67,186,254,229,202,35,0,0,0,0,0,0,0,0,0,0,0,17,75,248,254,254,254,254,254,182,164,232,254,249,222,146,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,243,174,98,107,235,254,254,254,254,254,195,0,0,0,16,27,98,144,0,0,0,0,0,0,0,0,178,254,209,30,71,188,254,254,254,254,254,254,182,151,151,151,212,254,254,115,0,0,0,0,0,0,0,0,55,245,254,254,254,254,254,254,244,140,140,241,251,254,254,254,254,247,235,0,0,0,0,0,0,0,0,0,0,55,242,248,248,248,248,140,24,0,0,0,82,205,248,234,117,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,136,255,214,133,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,211,253,253,253,253,234,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,177,253,253,253,253,253,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,253,253,253,253,253,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,236,138,20,20,143,253,251,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,88,0,0,0,115,253,253,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,244,253,182,3,80,160,241,253,253,200,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,182,253,253,253,253,253,160,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,250,253,253,253,253,253,253,253,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,150,253,253,243,161,230,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,51,51,41,0,145,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,248,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,253,246,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,169,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,253,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,209,217,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,211,254,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,231,253,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,167,59,0,0,0,5,151,253,250,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,231,253,111,0,0,0,128,253,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,118,253,253,24,0,0,57,235,253,206,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,71,253,211,84,0,0,5,186,253,245,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,189,253,246,54,0,0,31,175,253,244,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,164,253,253,161,0,0,0,177,253,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,249,70,0,0,78,244,253,244,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,168,254,254,254,254,235,62,19,207,255,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,253,253,253,253,253,253,220,255,253,135,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,245,129,44,144,253,253,253,254,227,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,118,78,10,0,0,11,210,253,253,203,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,160,253,236,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,246,253,154,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,209,252,227,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,91,253,251,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,226,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,155,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,192,254,174,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,252,217,168,196,247,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,221,29,0,7,152,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,190,0,8,123,148,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,189,0,157,252,252,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,247,188,253,245,82,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,252,252,174,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,218,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,252,243,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,221,170,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,246,162,0,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,84,0,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,232,0,0,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,231,0,0,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,86,9,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,212,231,204,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,217,252,129,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,141,226,255,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,226,198,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,141,57,170,255,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,255,255,226,29,0,170,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,86,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,170,0,0,0,170,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,29,0,0,0,170,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,114,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,255,29,0,0,0,0,170,255,170,0,198,198,29,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,255,170,114,86,86,114,226,255,226,170,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,255,255,255,255,255,255,255,255,255,255,198,141,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,198,86,86,86,86,86,86,198,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,115,233,254,254,254,122,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,243,253,253,253,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,254,253,253,253,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,253,254,253,194,115,116,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,113,98,4,0,48,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,89,200,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,57,92,151,235,253,253,253,253,181,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,238,253,253,254,253,253,253,253,246,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,253,253,253,254,253,253,253,253,253,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,254,254,254,255,244,190,254,254,254,222,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,242,253,253,204,63,24,2,129,253,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,205,118,35,0,0,0,73,252,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,247,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,143,253,253,237,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,253,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,236,253,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,140,252,253,215,57,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,216,216,209,56,12,70,205,254,248,147,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,221,253,253,253,214,243,253,229,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,152,152,214,172,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,253,252,253,252,223,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,122,62,142,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,252,0,0,0,0,253,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,0,132,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,173,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,233,254,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,102,183,253,252,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,254,253,254,253,234,152,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,253,252,253,252,253,252,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,163,162,102,102,0,41,21,142,254,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,212,0,0,0,0,0,0,0,0,0,0,0,102,203,0,0,0,0,0,0,0,0,0,0,82,173,253,244,40,0,0,0,0,0,0,0,0,0,0,0,102,243,40,0,0,0,0,0,0,0,41,163,243,253,252,81,0,0,0,0,0,0,0,0,0,0,0,0,102,255,213,21,0,0,0,72,152,173,253,254,233,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,223,203,203,203,253,252,253,252,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,243,255,253,254,253,254,213,142,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,91,212,151,111,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,74,157,176,248,163,138,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,75,158,236,249,254,254,254,254,254,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,254,254,254,254,218,165,127,129,228,254,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,244,190,54,0,0,0,97,254,249,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,36,0,0,0,0,59,238,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,209,254,196,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,240,254,165,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,102,242,254,163,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,165,254,249,131,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,254,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,254,223,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,120,248,254,254,104,55,172,236,236,191,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,254,254,254,254,254,254,254,254,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,255,254,254,239,235,145,144,206,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,163,163,111,72,16,0,0,0,218,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,243,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,201,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,108,19,0,27,209,254,177,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,252,227,200,238,254,224,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,254,221,105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,236,251,235,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,202,255,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,251,253,251,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,129,251,253,127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,251,251,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,251,251,201,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,251,251,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,236,251,251,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,251,251,204,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,251,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,253,251,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,191,254,175,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,238,254,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,251,248,239,254,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,161,252,244,30,200,254,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,254,246,38,11,225,254,235,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,254,69,0,24,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,173,3,0,52,254,209,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,69,0,76,234,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,188,171,250,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,170,254,254,160,91,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,254,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,247,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,192,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,248,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,249,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,234,244,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,235,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,253,253,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,211,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,253,84,47,47,47,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,223,253,253,253,253,254,253,203,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,253,253,253,253,254,253,253,237,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,190,23,23,33,137,222,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,185,0,0,0,0,186,254,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,184,0,0,5,121,229,253,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,253,235,185,185,192,253,253,154,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,253,253,253,254,236,129,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,118,253,253,253,180,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,253,253,153,96,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,251,251,251,251,253,205,111,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,205,253,251,251,251,251,253,251,251,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,129,253,251,251,251,251,253,251,251,244,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,94,94,133,251,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,230,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,236,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,251,251,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,221,251,251,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,234,251,251,251,232,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,158,217,253,251,251,251,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,115,253,253,253,255,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,251,251,251,251,253,251,235,81,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,253,251,251,251,251,253,156,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,253,251,251,235,188,31,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,253,251,172,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,34,134,163,254,254,193,116,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,227,253,253,253,253,253,254,253,223,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,215,253,253,173,44,44,92,146,253,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,83,121,20,4,0,0,0,32,231,233,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,220,249,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,244,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,254,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,239,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,248,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,255,253,128,45,45,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,253,253,253,226,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,110,186,195,119,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,167,255,212,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,225,253,253,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,108,224,253,248,174,192,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,169,253,253,253,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,111,220,253,253,253,196,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,253,253,253,245,125,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,220,253,253,245,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,220,253,253,245,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,131,253,253,245,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,253,253,253,185,0,0,0,16,63,63,102,186,186,186,134,63,3,0,0,0,0,0,0,0,0,0,0,46,253,253,230,23,0,14,96,207,253,253,253,253,253,253,253,253,77,2,0,0,0,0,0,0,0,0,0,136,253,253,186,0,0,87,253,253,253,253,229,179,179,244,253,253,253,42,0,0,0,0,0,0,0,0,6,231,253,253,99,0,14,199,253,253,192,136,34,0,0,43,134,253,253,129,0,0,0,0,0,0,0,0,7,253,253,245,65,0,147,253,253,99,11,0,0,0,0,0,70,247,253,129,0,0,0,0,0,0,0,0,113,253,253,228,0,14,199,253,233,43,0,0,0,0,0,0,91,251,253,129,0,0,0,0,0,0,0,0,82,253,253,250,87,38,253,253,148,0,0,0,0,0,0,40,224,253,253,20,0,0,0,0,0,0,0,0,4,205,253,253,224,128,253,253,74,0,0,0,0,89,106,224,253,253,95,1,0,0,0,0,0,0,0,0,0,82,253,253,253,253,253,253,213,112,112,112,212,250,253,253,207,26,1,0,0,0,0,0,0,0,0,0,0,7,144,253,253,253,253,253,253,253,253,253,253,253,253,149,19,0,0,0,0,0,0,0,0,0,0,0,0,0,1,18,129,208,253,253,253,253,253,253,153,87,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,105,210,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,254,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,254,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,237,254,239,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,238,254,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,250,229,82,254,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,234,254,43,121,254,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,239,254,103,8,249,254,230,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,254,254,246,247,254,254,168,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,246,246,222,164,197,254,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,242,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,255,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,250,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,209,254,209,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,156,234,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,223,253,251,145,141,247,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,183,253,233,79,0,0,222,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,233,45,0,0,0,147,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,254,81,0,0,0,0,173,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,209,253,157,8,0,0,0,6,226,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,247,53,0,0,0,0,103,253,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,151,0,0,0,0,167,247,253,253,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,167,0,0,0,55,210,253,253,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,255,244,134,140,224,255,249,254,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,244,253,253,253,233,217,87,253,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,151,127,23,0,32,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,254,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,253,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,222,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,113,114,159,253,237,191,192,113,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,181,252,253,252,252,252,252,253,252,231,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,209,252,252,228,195,195,202,252,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,236,47,0,0,10,84,84,234,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,236,50,0,0,0,0,0,0,225,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,237,50,0,0,0,0,0,0,163,253,97,113,114,12,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,158,0,0,0,0,0,0,9,27,37,252,253,152,0,0,0,0,0,0,0,0,0,0,0,0,85,252,252,252,0,0,0,0,0,0,0,0,138,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,76,246,252,252,95,0,0,0,0,0,0,7,178,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,203,94,0,0,0,0,0,135,252,252,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,32,216,253,255,253,143,38,0,0,38,222,253,253,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,214,253,252,252,234,225,226,234,252,252,252,253,243,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,119,195,239,252,252,253,252,239,202,252,253,252,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,161,84,84,84,65,26,239,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,249,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,98,157,252,239,209,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,216,254,254,254,254,254,250,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,191,251,199,139,61,61,173,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,191,254,241,0,0,0,0,16,175,254,215,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,207,254,226,97,0,0,0,0,0,12,189,254,213,103,0,0,0,0,0,0,0,0,0,0,0,0,0,188,168,254,82,0,0,0,0,0,0,0,74,254,254,214,100,0,0,0,0,0,0,0,0,0,0,0,0,235,254,230,47,0,0,0,0,0,0,0,1,74,249,254,253,133,0,0,0,0,0,0,0,0,0,0,106,252,228,54,0,0,0,0,0,0,0,0,0,0,193,254,254,213,0,0,0,0,0,0,0,0,0,0,118,254,178,0,0,0,0,0,0,0,0,0,0,0,20,190,254,247,78,0,0,0,0,0,0,0,0,0,193,254,78,0,0,0,0,0,0,0,0,0,0,0,0,84,254,254,197,0,0,0,0,0,0,0,0,0,118,254,41,0,0,0,0,0,0,0,0,0,0,0,0,75,249,254,236,13,0,0,0,0,0,0,0,0,118,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,197,254,254,121,0,0,0,0,0,0,0,0,118,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,254,187,0,0,0,0,0,0,0,0,6,236,178,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,246,69,0,0,0,0,0,0,0,0,0,235,203,20,0,0,0,0,0,0,0,0,0,0,0,28,200,254,240,38,0,0,0,0,0,0,0,0,0,103,211,109,63,63,63,63,29,63,29,63,63,63,194,218,254,254,238,25,0,0,0,0,0,0,0,0,0,0,23,105,241,254,254,254,214,254,214,254,254,254,254,254,244,116,69,0,0,0,0,0,0,0,0,0,0,0,0,0,65,178,234,234,185,208,234,234,234,166,96,96,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,146,232,254,255,213,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,182,228,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,251,227,55,2,74,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,205,251,76,0,0,60,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,237,0,0,0,60,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,237,0,0,0,60,253,125,193,223,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,217,237,0,0,0,81,253,253,220,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,250,108,32,142,234,253,113,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,249,240,245,212,42,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,246,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,241,253,214,253,226,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,248,200,71,9,101,236,224,89,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,140,245,149,20,0,0,0,105,253,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,203,19,0,0,0,0,5,97,253,237,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,162,245,28,0,0,0,0,0,0,3,104,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,99,0,0,0,0,0,0,0,16,184,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,187,11,0,0,0,0,0,53,138,253,242,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,240,253,148,33,33,33,56,141,245,253,227,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,205,253,253,253,253,253,253,217,157,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,134,212,253,253,230,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,11,121,209,209,168,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,133,245,253,253,253,228,253,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,251,233,85,42,198,253,245,214,120,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,3,139,243,253,155,0,0,125,253,253,253,253,253,253,166,65,0,0,0,0,0,0,0,0,0,0,0,7,196,253,231,95,91,0,0,94,253,158,24,24,24,123,245,250,159,13,0,0,0,0,0,0,0,0,0,161,253,253,101,0,0,0,0,0,177,221,0,0,0,0,81,247,253,142,0,0,0,0,0,0,0,0,0,254,253,253,34,0,0,0,0,0,28,210,192,7,0,0,0,140,253,216,9,0,0,0,0,0,0,0,0,254,253,128,8,0,0,0,0,0,0,25,122,64,0,0,0,98,253,253,130,0,0,0,0,0,0,0,0,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,1,131,253,252,0,0,0,0,0,0,0,0,254,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,253,0,0,0,0,0,0,0,0,254,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,0,0,0,0,0,0,0,0,249,253,218,22,0,0,0,0,0,0,0,0,0,0,0,0,3,139,253,248,0,0,0,0,0,0,0,0,128,253,253,133,0,0,0,0,0,0,0,0,0,0,0,0,102,253,241,73,0,0,0,0,0,0,0,0,28,232,253,232,57,3,0,0,0,0,0,0,0,0,3,96,232,245,71,0,0,0,0,0,0,0,0,0,0,105,225,253,253,175,80,36,0,0,0,0,74,179,187,253,253,125,0,0,0,0,0,0,0,0,0,0,0,0,64,221,253,253,253,243,234,234,234,234,251,253,254,242,191,13,0,0,0,0,0,0,0,0,0,0,0,0,0,6,132,210,253,253,253,253,253,253,253,193,154,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,9,65,109,90,9,9,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,247,133,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,252,252,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,164,240,252,168,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,252,253,252,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,255,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,185,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,252,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,252,252,253,195,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,253,173,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,252,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,218,252,252,177,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,252,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,203,245,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,182,254,187,111,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,189,253,253,253,253,172,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,219,154,154,106,197,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,244,253,108,0,4,186,248,186,56,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,253,241,43,0,35,239,253,254,253,137,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,253,198,0,0,0,188,253,254,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,253,102,0,0,0,98,185,132,160,252,252,184,8,0,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,130,0,0,0,0,44,0,0,126,252,253,219,13,0,0,0,0,0,0,0,0,0,0,0,0,67,253,253,88,0,0,0,0,0,0,0,0,161,253,253,55,0,0,0,0,0,0,0,0,0,0,0,0,38,235,253,136,0,0,0,0,0,0,0,0,27,215,253,233,44,0,0,0,0,0,0,0,0,0,0,0,0,211,254,206,8,0,0,0,0,0,0,0,0,49,247,255,162,0,0,0,0,0,0,0,0,0,0,0,0,133,253,253,55,0,0,0,0,0,0,0,0,0,170,253,221,18,0,0,0,0,0,0,0,0,0,0,0,17,245,253,98,0,0,0,0,0,0,0,0,0,89,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,243,253,172,2,0,0,0,0,0,0,0,0,89,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,219,253,253,118,0,0,0,0,0,0,0,0,161,253,253,66,0,0,0,0,0,0,0,0,0,0,0,0,39,223,253,246,74,0,0,0,0,0,0,44,242,253,219,14,0,0,0,0,0,0,0,0,0,0,0,0,0,39,222,253,250,198,74,10,0,5,21,150,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,202,253,253,253,242,155,193,253,253,253,179,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,146,253,253,254,253,253,253,253,154,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,33,128,206,253,253,147,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,26,104,107,107,135,182,182,182,182,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,203,247,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,1,84,217,220,254,247,246,246,226,170,170,170,170,170,57,0,0,0,0,0,0,0,0,0,0,0,0,36,160,254,254,254,160,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,254,254,254,200,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,222,250,242,242,220,254,250,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,43,0,0,7,214,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,188,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,53,2,0,0,0,0,0,191,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,128,25,0,0,6,124,250,254,224,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,254,240,220,220,225,254,254,254,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,254,254,254,254,254,254,253,132,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,133,250,254,254,254,254,229,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,85,168,181,148,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,241,238,0,0,0,0,0,0,0,0,0,0,0,0,0,23,167,161,20,0,0,0,0,0,0,0,45,238,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,140,250,65,24,0,0,0,0,0,0,14,174,254,226,43,0,0,0,0,0,0,0,0,0,0,0,0,115,249,207,0,0,0,0,0,0,0,0,145,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,114,249,209,20,0,0,0,0,0,0,0,77,245,254,130,4,0,0,0,0,0,0,0,0,0,0,4,112,252,254,95,9,126,126,98,6,6,6,128,250,254,189,3,0,0,0,0,0,0,0,0,0,0,2,164,254,254,254,254,254,254,254,255,254,255,254,254,255,217,31,0,0,0,0,0,0,0,0,0,0,0,168,254,254,254,220,163,95,95,95,95,95,194,251,254,230,74,0,0,0,0,0,0,0,0,0,0,0,0,140,195,115,77,14,0,0,0,0,0,0,23,237,246,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,254,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,248,159,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,249,212,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,215,251,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,215,248,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,175,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,194,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,197,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,221,249,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,123,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,67,109,160,181,209,160,161,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,77,203,254,254,254,254,254,254,254,239,188,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,254,254,254,246,150,59,136,80,116,200,254,209,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,254,254,254,214,28,0,0,0,0,52,233,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,54,18,18,10,0,0,41,118,142,235,254,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,251,231,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,239,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,198,248,178,95,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,115,233,254,217,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,123,201,254,223,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,77,242,237,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,182,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,250,254,97,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,191,49,0,0,12,141,233,245,136,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,159,0,0,13,154,254,238,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,76,0,117,236,254,209,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,254,222,217,255,239,148,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,254,254,195,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,253,209,17,0,0,0,0,0,0,0,0,0,0,0,0,74,130,6,0,0,0,0,0,0,0,0,32,184,253,91,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,62,0,0,0,0,0,0,0,0,148,253,205,14,0,0,0,0,0,0,0,0,0,0,0,0,19,212,253,147,0,0,0,0,0,0,0,0,148,253,147,0,0,0,0,0,0,0,0,0,0,0,0,0,104,253,253,42,0,0,0,0,0,0,0,5,192,233,41,0,0,0,0,0,0,0,0,0,0,0,0,35,250,253,207,15,0,0,0,0,0,0,0,15,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,213,21,0,0,0,0,0,0,0,0,141,253,139,0,0,0,0,0,0,0,0,0,0,0,0,31,217,253,108,0,0,0,0,0,0,0,0,0,249,235,33,0,0,0,0,0,0,0,0,0,0,0,0,136,253,241,50,0,0,0,0,0,0,0,0,27,250,196,0,0,0,0,0,0,0,0,0,0,0,0,0,227,253,216,56,0,0,0,0,0,0,0,0,148,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,242,213,213,100,95,36,0,0,36,239,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,253,253,253,239,231,231,239,253,248,57,0,0,0,0,0,0,0,0,0,0,0,0,0,69,178,203,241,246,253,253,253,253,253,253,253,253,253,251,224,36,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,37,106,106,106,106,106,197,249,253,252,224,182,114,174,182,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,241,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,243,192,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,254,150,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,207,253,214,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,169,169,32,0,0,0,53,253,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,79,230,253,236,37,0,0,0,10,227,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,143,71,0,0,0,0,0,111,253,242,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,116,14,0,0,0,0,0,0,25,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,11,238,253,84,0,0,0,0,0,0,0,4,125,253,245,98,0,0,0,0,0,0,0,0,0,0,0,0,7,207,253,84,0,0,0,0,0,0,0,0,4,177,253,247,44,0,0,0,0,0,0,0,0,0,0,0,0,88,253,223,35,0,0,0,0,0,0,0,0,31,219,253,163,0,0,0,0,0,0,0,0,0,0,0,0,24,250,255,225,133,35,13,13,13,13,82,133,111,186,254,214,19,0,0,0,0,0,0,0,0,0,0,0,0,68,189,246,253,253,253,253,253,254,253,253,237,177,253,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,130,217,234,217,217,218,147,96,32,52,245,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,113,253,175,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,242,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,211,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,150,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,217,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,209,254,70,0,0,0,0,0,0,0,0,0,0,0,0,0,26,135,177,38,0,0,0,0,0,0,3,137,254,246,40,0,0,0,0,0,0,0,0,0,0,0,0,54,234,254,234,98,0,0,0,0,0,0,98,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,43,237,254,242,24,0,0,0,0,0,0,41,234,254,246,17,0,0,0,0,0,0,0,0,0,0,0,56,203,254,255,141,27,0,0,0,0,0,0,151,254,254,217,29,0,0,0,0,0,0,0,0,0,0,6,233,254,254,141,4,0,0,0,0,0,0,84,246,254,222,75,0,0,0,0,0,0,0,0,0,0,12,176,254,254,212,27,0,0,0,0,0,0,22,243,254,254,161,0,0,0,0,0,0,0,0,0,0,0,93,254,254,254,80,0,0,0,0,0,0,1,135,254,254,243,48,0,0,0,0,0,0,0,0,0,0,0,130,254,254,254,111,53,53,18,0,0,0,42,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,90,254,254,254,254,254,254,221,203,203,203,212,254,254,192,27,0,0,0,0,0,0,0,0,0,0,0,0,21,222,254,254,254,254,254,254,254,254,254,254,254,249,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,77,166,166,166,166,166,166,220,254,254,254,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,209,254,254,194,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,226,254,254,225,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,157,254,254,246,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,123,254,254,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,254,254,254,162,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,188,254,254,119,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,191,254,160,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,131,166,211,246,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,155,254,254,254,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,213,254,254,254,191,220,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,211,254,230,254,196,46,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,245,245,133,81,146,31,41,254,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,114,247,239,91,0,22,3,0,76,254,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,239,58,0,0,0,0,0,160,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,195,254,213,57,0,0,0,0,0,54,254,228,1,0,0,0,0,0,0,0,0,0,0,0,0,0,55,215,254,192,14,0,0,0,0,0,0,54,254,228,0,0,0,0,0,0,0,0,0,0,0,0,0,95,248,253,148,13,0,0,0,0,0,0,0,102,254,180,0,0,0,0,0,0,0,0,0,0,0,0,95,248,254,121,32,32,84,122,122,122,122,122,122,196,254,149,0,0,0,0,0,0,0,0,0,0,6,126,249,254,254,254,254,254,254,254,254,254,254,254,254,254,254,248,197,122,0,0,0,0,0,0,0,0,141,255,254,251,179,126,71,71,71,71,71,71,71,71,184,254,238,160,155,21,0,0,0,0,0,0,0,0,82,174,94,14,0,0,0,0,0,0,0,0,0,0,185,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,221,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,213,244,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,212,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,226,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,116,0,0,0,14,200,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,224,230,6,0,0,214,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,125,0,0,32,239,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,247,254,9,0,0,72,254,222,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,213,254,208,0,0,0,155,254,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,254,249,56,24,36,24,232,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,207,254,249,144,237,254,236,254,249,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,141,254,254,254,248,237,236,252,254,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,254,254,244,124,46,0,27,243,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,216,254,235,46,0,0,0,101,254,235,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,231,49,0,0,0,0,216,254,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,168,53,0,0,0,0,0,246,254,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,250,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,220,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,213,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,255,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,254,224,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,159,250,171,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,178,249,254,244,254,232,43,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,183,254,248,132,219,254,254,254,198,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,254,242,73,81,254,254,254,254,254,224,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,249,246,110,0,13,147,146,97,253,254,254,169,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,254,99,0,0,0,0,0,0,236,248,160,254,127,0,0,0,0,0,0,0,0,0,0,0,0,7,159,254,174,3,0,0,0,0,0,0,87,254,86,175,249,54,0,0,0,0,0,0,0,0,0,0,0,37,254,250,51,0,0,0,0,0,0,0,8,211,199,99,250,171,0,0,0,0,0,0,0,0,0,0,0,126,254,165,0,0,0,0,0,0,0,0,0,105,254,24,166,209,10,0,0,0,0,0,0,0,0,0,0,143,254,46,0,0,0,0,0,0,0,0,0,45,197,11,102,254,83,0,0,0,0,0,0,0,0,0,0,222,254,4,0,0,0,0,0,0,0,0,0,0,150,61,60,254,166,0,0,0,0,0,0,0,0,0,0,222,254,4,0,0,0,0,0,0,0,0,0,0,24,39,5,254,155,0,0,0,0,0,0,0,0,0,0,222,254,4,0,0,0,0,0,0,0,0,0,0,0,0,95,254,125,0,0,0,0,0,0,0,0,0,0,181,254,4,0,0,0,0,0,0,0,0,0,0,0,0,102,254,125,0,0,0,0,0,0,0,0,0,0,126,254,68,0,0,0,0,0,0,0,0,0,0,0,0,102,254,61,0,0,0,0,0,0,0,0,0,0,38,254,218,35,0,0,0,0,0,0,0,0,0,0,36,219,219,14,0,0,0,0,0,0,0,0,0,0,18,188,254,218,32,1,0,0,0,0,0,0,0,31,219,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,199,254,254,111,63,0,65,39,21,68,144,224,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,120,245,255,252,226,253,242,235,255,228,221,83,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,119,202,254,163,158,158,106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,91,156,172,172,172,172,172,172,177,227,227,240,172,54,0,0,0,0,0,0,0,0,0,0,0,0,0,16,218,239,253,253,253,248,242,237,238,253,253,248,253,233,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,65,65,65,44,23,0,5,65,65,143,253,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,226,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,190,253,160,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,245,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,224,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,248,238,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,225,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,255,211,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,248,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,240,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,197,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,29,29,154,253,253,253,242,141,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,128,252,252,252,253,252,252,252,253,252,187,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,253,252,252,252,206,168,80,106,178,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,237,241,139,103,28,13,0,0,0,79,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,238,51,0,0,0,0,0,0,0,92,253,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,0,0,0,0,0,0,0,0,166,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,252,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,249,253,202,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,120,225,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,215,252,253,252,252,202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,243,252,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,191,254,253,253,253,251,175,225,250,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,234,252,253,252,252,177,75,0,0,75,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,198,234,252,252,253,252,148,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,225,253,252,252,252,190,65,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,229,253,255,253,253,140,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,187,252,252,253,240,109,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,252,143,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,252,252,102,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,255,255,191,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,191,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,128,0,128,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,255,255,0,64,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,191,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,255,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,128,255,64,0,0,0,0,0,0,0,0,0,0,0,0,191,255,0,0,0,0,0,0,0,0,0,0,0,128,255,255,191,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,128,0,0,0,0,0,0,0,0,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,191,0,0,0,0,0,64,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,128,191,255,255,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,191,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,103,215,255,188,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,214,254,249,247,254,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,239,252,156,36,55,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,198,254,173,0,0,121,254,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,130,254,219,12,0,38,245,254,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,250,93,0,20,164,254,254,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,211,0,5,152,254,254,228,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,191,118,194,254,254,229,51,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,245,254,254,254,254,246,88,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,167,218,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,105,254,230,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,218,254,199,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,233,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,248,245,81,0,0,0,0,0,16,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,254,198,0,0,0,0,0,16,195,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,236,27,0,0,0,0,0,132,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,246,76,0,0,0,0,0,77,252,254,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,83,0,0,0,0,0,0,191,254,167,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,215,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,245,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,254,247,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,250,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,254,248,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,168,126,8,0,0,0,0,0,52,249,254,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,254,122,0,0,0,0,0,171,254,249,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,251,70,0,0,0,0,30,244,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,205,254,215,0,0,0,0,0,167,254,252,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,101,0,0,0,0,0,246,254,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,224,41,0,0,31,80,134,254,254,236,167,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,254,250,246,246,249,254,254,254,254,254,254,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,47,192,203,254,254,254,232,254,254,254,239,114,105,63,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,26,26,26,19,199,254,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,254,254,178,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,254,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,254,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,237,254,255,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,254,160,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,255,253,232,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,252,232,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,217,132,241,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,252,191,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,232,252,237,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,237,252,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,109,255,253,170,253,255,253,237,144,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,221,253,252,252,252,253,231,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,133,215,215,236,253,190,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,253,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,255,211,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,73,124,0,0,0,0,0,0,125,253,252,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,252,143,0,0,0,0,0,47,221,253,252,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,143,0,0,0,0,42,221,252,253,210,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,191,47,31,0,0,135,253,253,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,252,252,232,227,217,218,247,252,252,222,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,154,215,247,252,252,253,252,252,148,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,211,252,253,252,148,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,101,101,102,115,87,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,105,228,253,253,254,253,253,234,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,253,253,248,243,247,253,242,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,253,253,178,84,32,0,35,134,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,112,181,17,0,0,0,0,93,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,206,253,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,251,253,186,2,0,0,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,225,253,216,23,0,0,0,74,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,229,253,249,77,0,0,0,0,192,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,156,254,255,244,77,0,0,0,0,36,240,254,0,0,0,0,0,0,0,0,0,0,0,0,7,80,163,242,253,253,205,69,0,0,0,0,0,189,253,239,0,0,0,0,0,0,0,0,0,0,0,7,159,253,253,253,248,173,56,0,0,0,0,1,76,248,253,86,0,0,0,0,0,0,0,0,0,0,98,225,253,253,253,215,44,0,0,0,0,0,14,124,253,253,206,22,0,0,0,0,0,0,0,0,0,139,249,253,253,253,253,249,144,48,48,48,48,111,196,253,253,242,37,0,0,0,0,0,0,0,0,0,96,248,253,253,253,244,240,253,253,253,254,253,253,253,253,253,253,78,0,0,0,0,0,0,0,0,0,0,191,253,253,253,219,42,25,165,240,253,254,253,253,253,253,215,102,3,0,0,0,0,0,0,0,0,0,0,254,253,253,208,49,0,0,0,8,44,103,103,103,103,86,5,0,0,0,0,0,0,0,0,0,0,0,0,198,253,192,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,65,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,37,0,0,0,0,0,32,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,246,232,171,16,0,0,48,173,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,254,254,228,219,185,249,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,250,125,151,242,255,243,222,198,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,199,0,0,26,73,31,0,200,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,200,0,0,0,0,0,0,201,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,199,0,0,0,0,0,0,200,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,199,0,0,0,0,0,0,200,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,160,0,0,0,0,0,0,200,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,0,0,0,0,0,0,200,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,211,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,235,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,173,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,115,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,254,223,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,241,254,254,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,187,254,222,104,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,137,254,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,254,210,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,248,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,251,249,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,254,194,0,0,0,0,0,4,78,78,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,250,252,71,0,0,0,0,43,214,255,254,244,89,0,0,0,0,0,0,0,0,0,0,0,0,0,66,250,254,196,0,0,0,0,139,242,254,188,162,254,171,0,0,0,0,0,0,0,0,0,0,0,0,3,135,254,249,69,0,0,3,139,254,254,176,2,48,254,171,0,0,0,0,0,0,0,0,0,0,0,0,124,254,254,79,0,0,0,129,254,255,120,2,0,62,254,171,0,0,0,0,0,0,0,0,0,0,0,0,172,254,196,10,0,0,8,192,254,237,19,0,20,224,242,84,0,0,0,0,0,0,0,0,0,0,0,0,172,254,230,79,3,0,73,254,254,104,30,72,192,242,86,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,254,204,202,235,254,254,235,225,254,245,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,124,236,254,254,254,254,254,254,254,254,155,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,17,130,135,135,219,254,210,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,190,255,253,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,185,252,253,212,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,252,252,215,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,184,252,252,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,155,252,249,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,228,252,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,227,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,253,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,252,229,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,227,252,198,0,0,0,0,0,40,94,206,226,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,198,0,0,0,0,144,229,252,252,252,244,110,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,198,0,0,46,200,253,252,252,252,252,252,222,25,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,198,0,119,224,252,253,252,252,252,252,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,79,246,252,235,173,223,252,252,253,252,252,252,252,252,203,29,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,252,252,252,252,253,252,252,229,225,127,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,140,238,238,247,252,252,240,112,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,252,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,243,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,215,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,194,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,199,255,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,255,241,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,255,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,71,0,0,0,0,0,19,53,53,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,242,254,31,0,0,0,0,57,196,254,254,221,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,165,1,0,0,0,117,251,254,254,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,78,0,0,0,77,242,254,151,86,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,78,0,0,5,249,254,147,4,32,254,235,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,78,0,0,81,254,224,3,0,138,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,254,78,0,0,110,254,155,4,136,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,148,0,0,40,254,222,185,254,233,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,244,79,11,59,254,254,254,251,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,254,254,254,254,254,254,222,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,223,254,254,254,190,67,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,59,82,194,194,66,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,125,177,235,253,254,253,253,253,223,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,156,253,253,253,192,152,78,108,186,253,183,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,254,253,240,146,5,0,0,0,3,19,238,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,239,254,245,70,0,0,0,0,0,0,0,156,248,60,0,0,0,0,0,0,0,0,0,0,0,0,0,40,254,255,39,0,0,0,0,0,0,0,0,217,254,78,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,204,6,0,0,0,0,17,50,2,46,254,251,72,0,0,0,0,0,0,0,0,0,0,0,0,0,12,212,236,168,116,116,79,138,211,253,49,165,254,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,254,253,253,253,253,254,253,253,190,226,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,253,253,253,254,253,253,253,253,231,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,171,255,254,254,222,120,0,20,254,254,254,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,254,236,106,18,0,28,165,253,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,247,253,235,57,0,0,0,41,174,199,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,53,0,0,0,0,0,0,48,245,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,253,177,0,0,0,0,0,46,150,183,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,229,23,0,0,0,0,61,179,254,254,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,216,12,0,0,7,162,229,254,253,253,227,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,223,176,175,199,253,253,235,174,174,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,253,254,253,253,253,222,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,133,178,245,193,103,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,13,117,132,132,255,253,253,253,224,99,9,0,0,0,0,0,0,0,0,0,0,0,0,0,33,145,222,252,252,252,252,252,253,252,252,252,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,252,252,238,216,158,96,96,113,223,252,252,167,0,0,0,0,0,0,0,0,0,0,0,0,0,133,252,252,215,163,52,0,0,0,0,7,145,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,11,72,72,17,0,0,0,0,0,35,145,252,252,200,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,227,252,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,136,205,253,252,252,236,82,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,214,252,252,253,252,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,143,248,252,252,252,253,252,252,237,200,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,252,252,252,252,253,252,252,252,252,249,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,250,249,241,241,241,122,178,121,201,250,253,253,207,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,72,0,0,0,0,0,0,0,78,149,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,252,252,143,0,0,0,0,0,0,0,0,0,3,118,151,40,0,0,0,0,0,0,0,0,0,0,122,233,252,252,63,0,0,0,0,0,0,0,0,0,13,252,252,238,95,44,0,0,0,0,0,0,38,141,232,252,252,154,7,0,0,0,0,0,0,0,0,0,13,252,252,252,252,235,152,45,0,0,39,141,230,252,252,252,228,25,0,0,0,0,0,0,0,0,0,0,9,216,252,252,252,252,252,234,205,205,231,252,252,252,252,153,32,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,252,252,252,252,252,253,252,252,234,70,9,0,0,0,0,0,0,0,0,0,0,0,0,0,145,252,252,252,252,252,252,252,252,196,132,23,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,87,212,252,252,252,148,131,17,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,29,66,241,255,228,104,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,166,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,234,253,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,246,252,253,252,252,252,253,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,253,253,253,239,125,0,0,92,253,253,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,252,252,202,38,0,0,0,116,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,253,252,148,6,0,0,0,0,29,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,26,222,252,241,65,6,0,0,0,0,0,29,252,252,28,0,0,0,0,0,0,0,0,0,0,0,26,92,216,253,228,101,0,0,0,0,0,0,0,141,253,253,28,0,0,0,0,0,0,0,0,0,0,0,225,253,252,233,22,0,0,0,0,0,0,0,0,166,252,252,28,0,0,0,0,0,0,0,0,0,0,29,234,253,233,62,0,0,0,0,0,0,0,0,126,253,252,252,28,0,0,0,0,0,0,0,0,0,0,185,252,241,59,0,0,0,0,0,0,0,0,76,249,253,252,127,3,0,0,0,0,0,0,0,0,0,57,253,253,101,0,0,0,0,0,0,0,0,57,253,203,254,134,0,0,0,0,0,0,0,0,0,0,0,57,252,177,0,0,0,0,0,0,0,0,45,187,252,252,234,28,0,0,0,0,0,0,0,0,0,0,0,95,252,52,0,0,0,0,0,0,29,185,229,252,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,169,252,28,0,0,0,0,63,188,234,252,253,252,252,102,13,0,0,0,0,0,0,0,0,0,0,0,29,253,253,203,141,141,141,241,254,253,253,253,254,209,25,0,0,0,0,0,0,0,0,0,0,0,0,0,10,196,252,252,253,252,252,252,253,252,233,145,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,252,252,253,252,252,252,253,145,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,65,190,241,90,228,151,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,34,56,56,56,56,56,95,123,234,155,195,40,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,223,237,254,254,254,254,254,254,254,254,254,254,104,0,0,0,0,0,0,0,0,0,0,0,0,0,21,254,254,254,254,254,254,254,254,254,254,254,254,220,48,0,0,0,0,0,0,0,0,0,0,0,0,0,3,186,254,254,243,234,136,134,134,96,107,35,35,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,115,0,60,140,203,150,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,222,195,254,254,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,191,254,254,254,254,254,254,254,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,254,254,236,149,51,50,98,254,241,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,194,161,43,0,0,0,61,254,254,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,254,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,227,254,254,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,65,80,0,6,36,95,216,254,254,217,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,247,190,200,254,254,254,254,249,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,253,254,254,254,254,254,254,236,146,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,149,254,254,254,254,217,134,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,114,198,198,255,255,255,198,141,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,198,141,86,86,57,114,170,226,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,170,226,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,226,57,0,0,0,0,57,141,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,226,170,170,198,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,255,86,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,255,255,170,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,29,141,255,226,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,170,86,86,86,114,226,255,141,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,255,255,226,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,253,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,252,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,249,252,245,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,252,252,252,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,243,252,252,164,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,252,252,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,252,252,239,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,252,252,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,202,253,252,252,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,202,252,253,252,202,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,255,253,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,253,252,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,252,252,253,107,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,252,252,252,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,231,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,252,252,250,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,252,252,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,250,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,217,252,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,221,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,214,216,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,195,253,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,237,247,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,223,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,222,173,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,225,254,254,237,153,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,236,173,206,244,253,206,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,232,160,0,0,38,79,245,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,194,0,0,0,0,161,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,26,0,0,60,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,155,5,30,214,241,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,254,211,228,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,128,245,211,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,252,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,211,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,207,252,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,37,212,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,221,252,253,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,255,253,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,35,211,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,252,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,247,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,247,252,108,0,0,0,0,37,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,252,190,0,0,21,144,253,221,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,233,253,253,255,253,253,253,255,119,0,0,0,0,0,0,0,0,0,0,0,0,53,73,73,73,176,217,233,252,252,252,253,252,241,179,119,5,0,0,0,0,0,0,0,0,0,0,0,53,232,252,252,252,252,252,253,252,226,215,217,91,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,211,252,252,252,231,108,108,108,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,73,31,20,0,0,30,31,53,107,107,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,221,254,238,209,209,253,254,254,254,226,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,106,185,248,242,171,171,142,95,95,65,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,211,219,111,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,225,77,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,183,130,12,84,54,12,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,249,254,204,140,140,159,188,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,142,58,7,0,0,0,96,236,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,220,14,0,0,0,0,0,0,0,0,7,218,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,68,0,0,0,0,0,0,0,0,0,64,248,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,143,6,0,0,0,0,0,0,0,39,191,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,225,201,117,79,20,20,20,69,129,217,154,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,105,209,246,241,254,230,182,132,91,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,21,30,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,132,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,92,253,246,198,79,10,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,202,253,253,253,253,253,180,76,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,112,112,112,201,253,253,253,149,141,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,46,46,172,251,253,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,253,253,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,169,253,42,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,169,225,235,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,246,253,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,136,250,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,207,194,250,170,22,0,0,0,0,0,0,0,0,13,48,55,236,130,48,48,48,48,48,48,76,236,236,251,253,253,253,153,48,0,0,0,0,0,0,0,0,150,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,172,249,253,253,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,253,253,253,253,226,74,74,74,74,22,112,253,120,0,0,0,0,0,0,0,0,240,196,198,236,228,206,196,196,196,196,77,7,0,0,0,0,0,2,8,2,0,0,0,0,0,0,0,0,98,0,5,92,73,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,18,18,80,137,137,137,99,18,2,0,0,0,0,0,0,0,0,155,154,154,154,154,154,100,154,154,154,232,254,254,254,254,254,254,254,254,106,0,0,0,0,0,0,0,0,231,254,254,254,254,254,254,254,254,217,201,201,201,201,201,211,254,254,254,229,0,0,0,0,0,0,0,0,43,112,145,183,183,78,65,65,65,20,0,0,0,0,0,48,254,254,254,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,176,254,254,130,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,254,254,180,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,200,254,220,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,207,254,224,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,248,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,239,254,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,254,254,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,254,249,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,235,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,255,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,17,17,1,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,227,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,157,251,253,202,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,246,253,253,253,219,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,234,253,253,253,253,253,247,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,165,254,253,253,154,88,236,253,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,226,253,254,253,155,11,0,89,253,246,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,224,253,253,254,179,8,0,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,228,130,0,0,0,54,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,220,253,252,169,0,0,0,0,0,61,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,36,222,253,239,114,0,0,0,0,0,0,187,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,164,0,0,0,0,0,0,0,188,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,133,251,253,215,5,0,0,0,0,0,0,64,250,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,253,93,0,0,0,0,0,0,0,117,253,253,107,0,0,0,0,0,0,0,0,0,0,0,0,123,247,253,208,13,0,0,0,0,0,0,0,201,253,253,93,0,0,0,0,0,0,0,0,0,0,0,29,234,253,235,77,0,0,0,0,0,0,0,100,242,253,221,20,0,0,0,0,0,0,0,0,0,0,0,28,234,253,236,49,0,0,0,0,0,23,104,243,253,242,98,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,166,13,26,41,41,175,207,253,253,243,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,249,253,253,189,219,253,253,255,253,253,230,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,253,253,255,253,191,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,154,253,253,253,253,253,255,126,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,116,192,130,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,147,253,253,254,233,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,203,253,253,253,254,253,218,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,251,253,253,247,134,135,247,253,229,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,185,253,253,244,90,0,0,105,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,176,171,199,185,41,219,253,217,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,250,253,253,253,253,253,254,239,201,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,253,253,253,253,253,229,209,197,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,203,253,206,142,66,29,0,210,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,33,13,0,0,0,59,248,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,188,254,254,254,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,253,253,253,215,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,253,253,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,254,253,253,239,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,253,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,251,254,253,249,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,255,253,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,254,233,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,191,192,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,108,193,249,164,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,242,242,254,254,254,254,254,251,187,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,239,254,254,254,231,167,85,191,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,214,254,246,155,21,0,0,81,254,239,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,241,254,215,79,0,0,0,42,189,254,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,222,254,157,25,0,0,0,11,188,254,225,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,248,26,0,0,0,41,188,254,227,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,202,254,79,0,0,13,158,254,226,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,216,213,23,0,149,254,171,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,225,235,224,251,179,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,254,254,223,115,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,254,244,205,243,250,253,169,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,232,252,74,0,25,55,137,253,236,165,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,209,254,94,0,0,0,0,0,111,254,254,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,254,178,5,0,0,0,0,0,81,254,240,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,231,253,64,0,0,0,0,0,41,210,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,200,0,0,0,0,62,168,245,254,206,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,254,166,9,18,48,164,229,254,243,110,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,254,212,232,254,254,237,114,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,231,254,254,202,149,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,245,249,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,172,64,0,0,214,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,95,0,92,244,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,248,254,191,21,217,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,254,163,60,254,254,254,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,254,254,95,63,254,254,254,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,242,254,241,42,178,254,254,191,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,254,254,231,7,191,254,254,160,42,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,231,70,255,254,255,254,254,203,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,249,233,254,254,254,254,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,254,254,254,254,255,254,255,212,99,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,254,254,254,254,254,212,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,124,136,254,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,254,255,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,254,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,235,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,199,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,179,253,253,255,253,178,110,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,252,252,252,253,252,252,252,197,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,96,96,96,217,216,238,252,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,252,252,214,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,225,252,252,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,176,193,193,194,227,252,252,206,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,253,252,252,236,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,252,252,252,253,252,252,245,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,128,190,200,144,154,252,252,218,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,0,2,29,212,252,249,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,250,253,213,19,0,0,0,0,0,0,0,0,0,0,0,3,25,8,0,0,0,0,0,0,0,0,0,0,112,252,252,105,0,0,0,0,0,0,0,0,0,0,0,25,252,101,0,0,0,0,0,0,0,0,0,0,61,252,252,155,0,0,0,0,0,0,0,0,0,0,0,25,252,236,48,0,0,0,0,0,0,0,0,0,61,252,252,155,0,0,0,0,0,0,0,0,0,0,0,25,252,252,158,0,0,0,0,0,0,0,0,0,90,252,252,155,0,0,0,0,0,0,0,0,0,0,0,6,144,252,238,158,49,0,0,0,0,0,0,129,235,252,252,122,0,0,0,0,0,0,0,0,0,0,0,0,7,184,252,252,236,205,96,85,45,97,205,237,252,252,183,24,0,0,0,0,0,0,0,0,0,0,0,0,0,47,179,252,252,252,252,252,237,252,252,252,252,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,58,232,252,252,252,253,252,252,252,226,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,58,131,247,253,241,131,51,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,85,141,253,86,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,169,168,253,251,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,254,253,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,251,253,251,253,251,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,196,141,197,254,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,253,251,196,28,85,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,255,253,141,85,254,253,226,168,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,197,251,253,251,56,0,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,29,197,254,253,254,253,254,253,169,0,0,0,254,253,254,84,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,251,56,0,0,114,253,251,253,83,0,0,0,0,0,0,0,0,0,0,0,0,57,225,254,253,254,253,114,0,0,0,0,57,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,251,196,83,0,0,0,0,0,168,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,196,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,138,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,101,136,236,255,194,68,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,154,96,103,217,253,253,253,253,253,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,253,253,253,253,208,200,252,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,253,247,182,154,65,11,0,249,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,133,0,0,0,0,0,249,253,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,253,253,161,0,0,0,0,149,253,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,61,248,252,148,2,0,94,252,253,167,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,253,147,116,236,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,183,253,253,253,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,253,253,253,253,147,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,253,253,209,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,236,253,253,253,253,164,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,253,253,147,23,164,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,167,253,253,207,2,0,95,253,248,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,253,253,226,39,0,0,40,226,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,252,91,0,0,0,0,134,253,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,253,249,29,0,0,0,100,247,245,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,253,213,84,84,174,245,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,242,253,253,253,253,253,253,209,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,132,187,210,253,253,209,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,148,139,14,0,0,0,128,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,120,0,0,0,206,252,252,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,136,0,0,0,232,252,244,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,247,63,0,0,57,246,252,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,231,0,0,0,85,252,252,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,127,0,0,25,227,253,243,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,252,47,0,0,43,252,252,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,21,15,22,148,252,252,168,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,175,225,252,253,252,252,252,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,252,252,252,253,252,244,77,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,253,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,98,159,89,239,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,253,245,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,239,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,230,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,222,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,174,253,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,235,255,140,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,107,243,162,142,240,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,174,224,30,0,0,173,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,223,198,17,0,0,12,230,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,181,174,17,0,0,10,212,209,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,95,0,0,0,0,177,145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,222,0,0,0,0,0,162,254,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,215,157,0,0,0,0,56,230,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,187,0,0,0,4,197,254,238,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,232,65,0,0,140,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,251,255,235,225,214,176,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,182,222,197,45,112,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,255,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,218,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,222,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,209,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,253,193,71,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,192,253,252,223,162,102,102,102,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,203,203,254,253,255,253,193,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,151,192,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,244,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,243,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,214,253,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,203,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,163,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,223,253,252,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,163,223,233,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,233,254,192,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,252,172,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,132,254,253,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,173,253,255,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,223,253,252,253,130,131,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,255,253,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,151,192,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,254,229,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,80,245,253,253,253,254,249,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,178,253,254,98,122,171,237,253,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,253,253,103,6,0,0,70,253,246,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,254,254,103,0,0,0,0,70,254,254,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,253,248,56,0,0,0,17,170,253,248,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,251,240,32,0,0,0,101,254,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,103,0,0,43,209,254,219,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,254,254,255,186,254,254,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,244,253,254,253,253,253,241,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,137,197,251,253,253,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,253,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,253,215,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,234,254,119,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,221,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,185,253,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,242,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,96,148,236,237,148,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,211,252,252,252,253,252,161,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,253,252,251,237,252,253,252,251,188,241,206,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,239,243,153,77,21,84,102,237,252,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,79,0,0,27,106,212,242,252,252,252,236,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,87,123,201,253,253,254,253,253,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,252,252,252,252,253,252,252,252,252,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,253,252,252,244,244,214,126,198,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,128,190,189,92,49,49,0,57,246,252,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,226,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,253,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,252,201,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,252,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,253,252,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,246,253,182,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,176,252,206,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,138,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,253,253,255,253,253,253,253,255,253,253,253,174,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,253,252,252,252,252,253,252,252,252,252,241,72,0,0,0,0,0,0,0,0,0,0,0,0,0,75,202,252,253,252,252,252,252,253,201,208,252,252,253,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,84,84,84,84,84,84,9,73,252,252,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,252,252,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,253,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,252,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,243,252,233,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,253,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,227,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,252,252,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,233,252,237,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,252,252,229,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,227,252,253,130,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,189,253,204,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,94,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,116,253,227,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,116,253,253,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,253,253,253,213,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,72,184,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,253,193,0,0,0,0,0,0,0,0,14,73,108,194,90,7,0,0,0,0,0,0,0,0,0,0,9,189,253,193,0,0,0,0,0,0,49,160,215,253,253,253,253,158,4,0,0,0,0,0,0,0,0,0,25,253,253,193,0,0,0,0,0,104,238,253,253,253,225,156,240,253,116,0,0,0,0,0,0,0,0,0,25,253,253,193,0,0,0,0,162,254,253,238,144,58,17,0,67,243,242,0,0,0,0,0,0,0,0,0,83,253,253,77,0,0,0,162,253,254,184,56,0,0,0,0,0,172,253,0,0,0,0,0,0,0,0,0,83,254,255,78,0,0,161,254,254,174,0,0,0,0,0,0,0,231,254,0,0,0,0,0,0,0,0,0,25,253,253,193,0,9,221,253,242,0,0,0,0,0,0,0,68,243,242,0,0,0,0,0,0,0,0,0,10,194,253,230,55,160,253,185,51,0,0,0,0,0,0,0,218,253,132,0,0,0,0,0,0,0,0,0,0,77,253,253,229,238,253,144,0,0,0,0,0,0,14,147,242,232,49,0,0,0,0,0,0,0,0,0,0,28,233,253,253,253,253,144,0,0,0,0,0,0,102,253,253,116,0,0,0,0,0,0,0,0,0,0,0,0,64,233,253,253,253,175,4,0,0,0,49,160,239,253,144,6,0,0,0,0,0,0,0,0,0,0,0,0,0,34,164,253,253,253,208,143,86,103,238,253,253,143,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,133,240,253,253,254,253,253,253,230,156,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,76,144,145,154,253,180,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,11,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,168,168,178,255,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,254,254,254,254,254,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,253,241,138,65,105,238,254,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,209,225,23,0,0,0,117,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,240,66,0,0,0,0,113,248,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,243,181,0,0,0,0,0,132,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,134,0,0,0,0,17,229,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,248,124,0,0,0,48,254,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,141,254,247,153,0,19,218,249,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,103,248,232,81,152,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,247,246,239,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,175,254,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,203,254,254,254,230,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,229,254,169,85,249,227,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,221,254,170,8,34,244,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,254,206,8,0,114,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,108,3,75,243,238,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,129,196,254,237,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,254,254,254,235,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,254,254,189,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,158,254,187,224,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,253,253,253,243,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,195,134,117,207,254,235,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,181,253,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,208,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,212,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,226,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,20,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,230,254,157,176,80,3,0,134,254,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,236,253,253,253,254,253,204,195,254,247,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,253,253,253,254,253,253,253,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,253,253,253,254,253,253,253,254,184,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,177,254,254,255,254,254,254,255,254,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,58,107,214,178,136,64,122,253,221,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,204,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,205,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,205,254,255,212,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,206,254,213,189,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,196,16,2,188,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,238,55,0,0,62,241,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,250,28,0,0,0,46,252,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,100,0,0,0,3,186,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,220,249,128,0,0,0,39,234,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,173,248,210,126,45,48,254,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,80,201,254,249,235,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,68,254,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,250,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,235,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,235,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,228,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,176,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,255,253,198,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,168,253,251,253,251,253,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,253,254,253,254,253,254,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,254,253,254,253,254,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,226,168,114,169,254,253,254,253,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,83,56,0,57,224,253,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,254,253,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,85,85,85,0,0,141,253,254,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,251,253,251,169,168,253,251,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,57,0,0,0,0,0,0,0,0,0,0,0,253,251,253,251,253,251,253,251,253,251,253,251,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,198,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,254,253,57,0,0,0,0,0,0,0,0,0,85,251,253,251,253,251,253,251,253,251,253,251,253,251,253,251,253,251,168,0,0,0,0,0,0,0,0,0,0,114,254,253,254,253,254,253,254,253,114,0,169,225,254,253,254,253,169,0,0,0,0,0,0,0,0,0,0,0,139,251,253,251,253,251,253,138,0,0,0,168,253,251,253,251,225,56,0,0,0,0,0,0,0,0,0,0,0,0,169,225,254,253,114,0,0,0,0,0,254,253,254,253,226,56,0,0,0,0,0,0,0,0,0,0,0,0,0,56,84,83,0,0,0,0,0,0,139,251,253,251,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,44,131,174,210,83,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,31,137,137,137,223,254,254,254,254,254,254,97,1,0,0,0,0,0,0,0,0,0,0,0,0,82,209,254,254,254,254,254,254,254,254,254,254,254,254,255,88,0,0,0,0,0,0,0,0,0,0,0,0,131,254,254,254,254,254,254,254,254,254,247,229,168,229,252,130,0,0,0,0,0,0,0,0,0,0,0,0,19,254,254,254,254,254,248,239,190,99,68,0,0,0,90,7,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,254,254,229,109,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,162,254,254,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,178,254,254,254,254,200,174,84,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,147,205,254,254,254,254,254,235,144,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,68,89,192,236,254,254,254,200,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,92,186,240,254,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,254,188,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,254,254,254,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,26,202,254,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,239,142,32,0,74,203,254,254,254,172,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,238,231,248,254,254,254,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,254,254,254,254,254,254,254,161,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,211,254,254,254,254,254,254,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,27,130,218,224,130,32,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,226,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,255,255,255,226,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,255,255,198,170,226,255,255,255,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,29,0,0,0,0,114,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,198,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,198,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,57,255,255,226,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,86,198,198,86,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,255,198,114,86,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,226,255,255,255,255,255,226,114,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,114,141,170,226,255,255,255,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,141,226,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,255,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,226,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,114,198,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,114,170,226,255,255,255,255,198,29,0,0,0,0,0,0,0,0,0,0,0,0,0,57,86,170,198,255,255,255,255,255,198,198,170,57,0,0,0,0,0,0,0,0,0,0,0,0,0,57,198,255,255,170,226,141,86,86,86,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,246,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,225,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,193,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,6,169,168,21,0,0,0,244,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,36,254,180,0,0,0,0,244,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,99,247,42,0,0,0,48,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,210,0,0,0,0,64,255,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,249,178,0,0,0,0,96,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,238,218,218,218,218,238,254,209,144,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,254,254,254,254,246,233,249,252,166,146,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,44,44,44,44,32,13,211,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,226,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,246,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,250,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,235,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,61,125,141,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,43,228,248,248,248,248,249,250,253,253,253,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,94,246,253,253,196,253,227,142,142,142,142,211,253,247,72,6,0,0,0,0,0,0,0,0,0,0,0,0,152,253,253,60,9,19,15,0,0,0,14,196,245,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,177,5,0,0,0,0,0,0,84,193,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,168,0,0,0,0,0,0,15,184,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,249,253,102,0,0,44,0,18,86,112,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,238,209,209,232,209,218,253,253,247,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,198,181,181,181,192,253,248,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,175,188,78,58,58,14,0,0,0,40,253,253,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,40,253,253,234,0,0,0,0,0,0,0,0,0,0,0,0,93,163,12,47,0,0,0,0,0,0,0,0,40,253,253,149,0,0,0,0,0,0,0,0,0,0,0,157,251,253,163,29,0,0,0,0,0,0,0,19,128,253,237,40,0,0,0,0,0,0,0,0,0,0,0,104,173,253,253,213,29,0,0,0,0,15,47,222,253,241,142,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,253,214,101,14,51,143,225,253,251,220,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,247,253,253,253,253,253,253,253,252,220,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,123,123,123,123,123,123,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,149,186,104,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,254,253,253,253,238,193,72,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,253,253,253,254,253,199,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,253,165,19,19,42,161,241,250,122,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,253,78,0,0,0,0,41,148,230,218,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,254,78,0,0,0,0,0,0,0,99,180,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,253,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,247,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,255,246,89,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,242,253,232,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,247,253,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,244,249,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,8,0,0,0,0,0,120,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,19,0,0,0,0,0,121,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,146,0,0,0,0,11,199,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,226,18,0,0,0,166,253,213,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,212,238,175,136,204,251,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,133,254,253,253,237,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,226,250,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,106,223,200,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,112,253,198,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,78,210,32,0,0,0,0,5,176,221,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,253,253,48,0,0,0,3,137,253,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,234,253,106,12,0,0,0,48,253,225,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,203,253,163,12,0,0,0,0,174,253,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,240,253,72,0,0,0,0,0,254,244,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,253,253,150,78,0,0,0,162,254,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,253,253,250,202,122,231,253,128,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,245,254,254,254,254,254,254,192,133,133,111,13,13,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,109,208,253,253,253,253,255,253,253,253,253,235,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,224,253,220,217,218,217,217,194,96,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,215,235,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,203,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,253,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,191,143,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,191,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,60,0,0,0,0,0,0,0,0,0,0,139,196,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,51,51,92,214,172,173,213,132,51,132,92,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,253,252,253,252,213,252,233,111,253,252,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,243,254,253,254,253,244,223,254,213,224,243,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,40,50,50,91,131,81,20,50,10,20,81,253,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,253,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,255,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,130,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,152,233,234,152,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,223,253,252,253,252,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,193,254,253,254,253,254,253,254,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,252,91,91,253,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,253,0,0,0,0,254,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,130,0,0,0,41,253,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,254,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,254,253,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,243,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214,253,254,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,253,252,253,232,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,254,253,254,253,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,233,252,253,252,213,252,253,252,183,102,163,203,203,162,0,0,0,0,0,0,0,0,0,0,0,0,11,213,255,253,183,20,0,142,254,253,254,253,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,132,252,253,212,0,0,0,20,71,192,253,252,151,111,20,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,62,185,255,229,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,253,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,126,251,178,55,51,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,154,0,0,13,217,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,229,188,6,0,0,22,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,253,167,0,0,0,22,253,160,11,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,235,167,0,0,0,22,253,253,253,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,233,16,0,0,59,253,253,244,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,21,0,6,184,253,247,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,253,114,0,116,253,253,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,168,250,200,242,246,136,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,253,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,197,253,253,253,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,174,253,253,253,179,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,237,253,233,128,205,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,253,220,19,0,162,185,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,253,224,68,0,73,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,236,253,252,242,211,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,142,207,253,253,253,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,136,214,168,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,255,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,8,0,0,0,102,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,247,155,0,0,2,189,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,254,178,0,0,83,254,254,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,183,254,121,0,2,169,254,195,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,254,254,64,0,77,254,254,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,254,223,10,0,112,254,254,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,238,254,162,0,0,196,254,199,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,230,9,0,55,251,254,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,253,250,91,0,0,136,254,252,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,246,254,163,0,0,16,230,254,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,231,254,219,1,7,34,111,254,254,250,228,214,169,78,0,0,0,0,0,0,0,0,0,0,0,0,21,204,254,254,207,182,236,254,254,254,254,254,254,254,254,117,0,0,0,0,0,0,0,0,0,0,0,0,179,254,254,254,254,254,254,254,254,254,183,140,116,79,100,39,0,0,0,0,0,0,0,0,0,0,0,0,198,254,254,227,208,98,71,254,254,201,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,156,46,15,0,0,47,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,5,174,254,223,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,254,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,254,172,51,51,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,253,252,253,252,223,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,254,253,224,203,254,253,254,253,173,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,253,252,102,0,71,192,253,252,253,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,172,0,0,0,0,123,243,254,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,253,50,0,0,0,0,0,81,213,252,243,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,253,183,0,0,0,0,0,0,0,132,253,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,20,0,0,0,0,0,0,0,31,232,253,252,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,172,0,0,0,0,0,0,0,0,0,183,254,253,0,0,0,0,0,0,0,0,0,0,0,0,21,223,233,30,0,0,0,0,0,0,0,0,0,102,253,252,0,0,0,0,0,0,0,0,0,0,0,0,152,253,203,0,0,0,0,0,0,0,0,0,0,163,254,253,0,0,0,0,0,0,0,0,0,0,0,0,152,252,162,0,0,0,0,0,0,0,0,0,21,223,253,252,0,0,0,0,0,0,0,0,0,0,0,0,173,253,102,0,0,0,0,0,0,0,0,0,113,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,253,252,142,0,0,0,0,0,0,0,0,0,193,252,233,30,0,0,0,0,0,0,0,0,0,0,0,0,193,253,203,0,0,0,0,0,0,0,11,173,254,253,183,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,243,81,0,0,0,0,0,41,213,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,62,223,255,253,153,112,52,51,132,253,254,253,203,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,252,253,252,253,252,253,252,253,212,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,253,254,253,254,253,254,253,183,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,91,213,252,253,252,151,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,101,136,104,110,37,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,216,253,253,253,253,253,253,161,143,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,114,253,253,253,253,253,253,253,253,253,253,212,27,0,0,0,0,0,0,0,0,0,0,0,0,0,12,165,253,253,253,223,126,222,128,134,222,248,253,253,212,26,0,0,0,0,0,0,0,0,0,0,0,27,168,253,253,253,253,204,0,0,0,0,0,211,253,253,253,213,26,0,0,0,0,0,0,0,0,0,2,156,253,253,253,247,188,70,0,0,0,0,0,115,247,253,253,253,213,4,0,0,0,0,0,0,0,0,92,253,253,253,253,131,0,0,0,0,0,0,0,0,132,253,253,253,253,5,0,0,0,0,0,0,0,0,219,253,253,253,143,27,0,0,0,0,0,0,0,0,94,253,253,253,253,94,0,0,0,0,0,0,0,0,254,253,253,253,99,0,0,0,0,0,0,0,0,0,71,246,253,253,253,220,0,0,0,0,0,0,0,0,254,253,253,253,99,0,0,0,0,0,0,0,0,0,0,223,253,253,253,253,0,0,0,0,0,0,0,0,218,253,253,253,99,0,0,0,0,0,0,0,0,0,28,232,253,253,253,217,0,0,0,0,0,0,0,0,130,253,253,253,99,0,0,0,0,0,0,0,0,0,132,253,253,253,253,29,0,0,0,0,0,0,0,0,88,253,253,253,140,0,0,0,0,0,0,0,28,190,247,253,253,253,253,5,0,0,0,0,0,0,0,0,1,153,253,253,249,125,0,0,0,0,0,110,229,253,253,253,253,112,37,1,0,0,0,0,0,0,0,0,0,89,253,253,253,249,202,100,127,223,223,247,253,253,253,253,51,3,0,0,0,0,0,0,0,0,0,0,0,2,102,253,253,253,253,253,253,253,253,253,253,253,214,39,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,30,141,213,253,253,253,253,253,253,218,39,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,115,12,12,42,42,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,114,240,241,240,240,240,249,252,252,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,111,252,252,253,252,252,252,252,252,237,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,240,252,252,252,173,46,118,252,252,235,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,245,178,53,0,64,206,252,252,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,235,252,225,0,0,26,242,252,252,104,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,207,252,229,17,92,211,252,252,239,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,252,252,198,208,240,166,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,252,252,252,139,46,225,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,252,252,253,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,253,255,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,252,190,202,253,247,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,197,252,178,11,85,253,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,196,252,218,15,0,0,211,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,252,252,107,0,0,36,226,252,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,221,252,241,63,0,3,158,253,252,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,252,252,108,0,40,177,252,253,157,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,252,252,184,160,218,252,252,226,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,250,252,252,252,250,238,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,252,252,160,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,220,254,240,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,108,217,253,253,242,130,108,171,241,241,241,241,241,241,227,102,0,0,0,0,0,0,0,0,0,0,146,237,253,253,253,253,250,242,253,254,253,253,253,253,253,253,253,252,157,0,0,0,0,0,0,0,0,64,247,253,253,253,253,253,253,253,211,174,173,173,60,39,68,185,253,253,253,0,0,0,0,0,0,0,0,64,247,253,253,235,186,95,53,53,25,0,0,0,0,0,0,41,253,253,253,0,0,0,0,0,0,0,0,0,120,199,87,49,0,0,0,0,0,0,0,0,0,0,12,156,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,251,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,27,27,27,13,145,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,85,198,253,253,253,197,253,253,252,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,140,253,254,253,253,253,253,253,253,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,121,57,206,254,254,134,134,178,254,254,254,255,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,247,242,139,13,0,0,94,253,253,253,253,149,0,0,0,0,0,0,0,0,0,0,0,0,0,193,248,253,189,72,0,0,0,40,224,253,253,253,253,250,145,0,0,0,0,0,0,0,0,0,0,0,123,247,253,208,13,0,0,0,43,220,253,253,253,211,253,253,244,38,0,0,0,0,0,0,0,0,0,86,248,253,235,77,0,8,68,138,230,251,253,253,94,25,144,193,253,190,0,0,0,0,0,0,0,0,0,135,253,253,158,0,37,145,253,253,254,253,233,87,14,0,0,7,66,31,0,0,0,0,0,0,0,0,105,249,253,176,49,69,228,253,253,253,255,158,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,175,234,253,253,253,253,239,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,253,253,253,253,253,252,233,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,247,182,253,253,253,232,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,171,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,153,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,146,241,253,253,217,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,139,247,253,253,247,160,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,151,224,253,253,253,242,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,247,253,253,253,253,185,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,202,247,253,253,253,175,61,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,253,253,253,253,253,144,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,253,253,253,253,253,253,242,131,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,176,249,253,253,253,253,253,191,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,76,76,123,232,253,253,202,108,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,190,253,253,253,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,72,230,253,246,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,93,14,0,0,3,8,8,51,223,253,251,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,253,204,109,109,152,253,253,253,253,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,253,253,253,253,253,253,253,253,217,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,183,253,253,253,253,253,178,99,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,94,176,218,255,202,119,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,86,134,254,254,254,254,243,252,169,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,254,254,254,219,179,224,228,209,107,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,221,101,101,8,1,3,4,85,252,224,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,226,21,0,0,0,0,5,142,254,254,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,254,112,0,0,0,27,151,254,254,157,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,248,250,94,0,4,150,254,252,201,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,240,121,159,254,250,189,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,224,254,254,254,254,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,254,254,254,192,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,35,230,254,254,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,173,254,254,200,105,239,200,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,254,210,35,0,118,254,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,232,254,59,9,0,0,108,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,229,7,0,0,0,5,200,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,130,0,0,0,0,0,173,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,234,177,102,102,10,89,235,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,167,254,254,254,254,254,254,254,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,156,128,232,254,254,254,165,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,157,212,133,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,53,37,0,0,0,0,3,129,215,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,252,66,0,0,0,0,52,252,162,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,221,235,40,0,0,0,0,132,231,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,247,52,0,0,0,0,9,239,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,234,169,0,0,0,0,0,171,247,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,221,38,0,0,0,0,24,224,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,207,164,0,0,0,0,2,123,252,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,252,97,0,0,0,0,34,252,235,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,252,55,0,0,0,0,67,252,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,252,103,0,20,111,158,239,223,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,242,253,253,253,253,239,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,209,192,120,77,121,245,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,4,0,0,153,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,237,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,228,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,218,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,205,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,169,254,255,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,227,253,253,254,226,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,190,253,253,201,254,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,171,253,170,26,17,157,253,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,238,253,61,0,0,79,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,253,219,11,0,0,79,253,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,139,0,0,0,148,253,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,73,0,0,0,166,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,70,15,0,0,0,166,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,253,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,255,254,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,209,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,254,183,0,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,126,179,227,227,245,254,246,227,236,236,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,232,209,209,210,253,254,171,101,83,77,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,53,0,0,9,253,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,254,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,248,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,253,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,253,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,254,255,150,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,254,253,228,134,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,130,254,255,254,254,254,244,120,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,254,253,243,139,119,222,254,253,155,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,253,52,0,0,0,176,248,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,254,253,155,0,0,0,11,228,254,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,254,244,68,0,0,120,254,254,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,243,254,243,115,135,244,253,202,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,234,254,254,254,254,233,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,253,254,253,254,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,234,254,254,254,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,228,254,253,243,139,233,253,228,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,234,254,254,191,21,0,53,218,254,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,253,212,26,0,0,0,145,254,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,243,21,0,0,0,0,156,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,202,253,254,56,0,0,0,0,84,238,254,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,254,254,249,31,0,0,47,150,254,254,228,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,253,253,176,0,53,94,213,253,254,253,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,233,254,254,254,254,254,254,254,228,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,150,253,254,253,254,253,254,211,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,170,214,170,36,27,173,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,237,254,234,233,244,182,254,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,238,251,79,2,0,139,254,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,254,122,0,0,0,137,254,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,254,58,0,0,34,248,252,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,255,87,0,0,81,254,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,241,224,54,7,164,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,240,254,229,254,163,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,126,159,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,253,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,250,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,254,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,254,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,254,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,207,196,19,16,0,51,144,125,9,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,128,177,244,255,253,220,213,177,204,253,253,163,120,0,0,0,0,0,0,0,0,0,0,0,0,0,44,232,253,253,253,254,253,253,253,253,253,249,154,72,25,0,0,0,0,0,0,0,0,0,0,0,0,30,224,253,253,253,253,245,248,231,173,49,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,99,253,253,253,130,88,50,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,253,253,253,180,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,234,253,253,253,221,40,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,232,253,253,253,253,253,167,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,104,66,119,189,253,253,246,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,33,81,206,245,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,211,254,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,242,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,233,251,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,189,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,159,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,42,0,0,0,0,1,12,128,251,255,250,150,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,166,45,35,83,84,159,253,253,253,249,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,187,225,253,253,253,253,253,171,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,138,143,143,143,143,61,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,180,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,47,120,228,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,205,253,252,202,89,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,176,244,252,245,87,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,193,252,252,200,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,140,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,252,252,135,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,227,252,252,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,252,252,252,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,54,232,252,241,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,231,255,211,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,253,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,222,252,171,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,252,252,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,132,0,0,22,118,252,252,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,240,184,90,205,253,252,170,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,135,252,252,252,253,172,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,137,232,252,128,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,66,157,157,157,48,19,0,4,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,145,253,253,253,253,232,108,9,178,154,0,0,0,0,19,49,26,0,0,0,0,0,0,0,0,32,130,226,242,193,193,193,146,41,0,10,181,28,41,32,61,159,209,253,219,0,0,0,0,0,0,0,0,76,253,243,146,0,0,0,0,0,0,0,7,148,234,225,253,229,180,180,123,0,0,0,0,0,0,0,0,174,253,119,0,0,0,0,0,0,41,92,210,253,253,192,76,32,0,0,0,0,0,0,0,0,0,0,0,208,253,214,33,0,0,0,38,149,235,255,244,139,36,10,0,0,0,0,0,0,0,0,0,0,0,0,0,18,207,253,238,143,26,37,164,253,253,191,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,253,253,224,124,223,253,201,17,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,146,254,254,254,255,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,69,253,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,241,253,225,229,253,212,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,42,170,242,49,29,206,253,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,223,243,218,132,61,159,209,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,253,253,242,236,253,253,253,187,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,253,253,253,253,188,168,65,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,156,156,76,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,113,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,210,225,243,252,241,225,240,209,85,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,252,252,252,252,253,252,252,252,252,229,150,13,0,0,0,0,0,0,0,0,0,0,0,0,0,4,107,253,252,245,208,84,84,84,193,227,252,253,252,149,0,0,0,0,0,0,0,0,0,0,0,0,0,29,252,253,252,118,0,0,0,0,0,13,189,253,252,227,47,0,0,0,0,0,0,0,0,0,0,0,0,92,253,255,215,31,0,0,0,0,0,0,0,192,253,253,225,0,0,0,0,0,0,0,0,0,0,0,0,122,252,253,167,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,7,55,56,37,0,0,0,0,0,0,0,0,113,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,141,15,111,126,79,253,252,252,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,113,113,207,253,255,253,253,253,253,255,253,253,84,0,0,0,0,0,0,0,0,0,0,0,48,48,48,253,252,252,252,252,253,252,252,252,252,253,252,252,84,0,0,0,0,0,0,0,0,0,0,19,197,227,227,253,233,195,102,55,143,252,252,252,252,253,252,252,115,0,0,0,0,0,0,0,0,0,13,181,252,252,252,162,56,0,4,29,128,252,252,252,252,237,252,252,242,75,0,0,0,0,0,0,0,0,113,252,252,252,173,0,0,0,29,252,253,252,252,252,173,50,158,252,252,189,0,0,0,0,0,0,0,0,114,253,253,225,63,114,113,222,253,253,255,253,253,162,0,0,0,111,140,203,0,0,0,0,0,0,0,0,238,252,252,249,240,253,252,252,252,252,253,176,58,9,0,0,0,0,0,15,0,0,0,0,0,0,0,0,253,252,252,252,252,253,252,252,252,220,133,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,252,252,252,253,226,223,129,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,112,112,112,112,112,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,152,254,253,254,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,123,203,253,252,192,151,213,252,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,233,254,253,244,81,0,0,92,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,252,253,171,40,0,0,0,51,252,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,102,82,0,0,0,0,0,152,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,252,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,254,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,253,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,224,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,252,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,31,72,233,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,183,213,232,253,252,172,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,233,254,253,254,253,254,253,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,142,253,252,253,252,253,252,213,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,254,253,254,233,123,0,51,253,234,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,252,253,252,151,50,0,0,51,252,253,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,0,0,51,253,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,252,213,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,253,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,253,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,210,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,63,0,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,251,93,0,0,0,0,0,158,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,189,0,0,0,0,16,221,253,196,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,189,0,0,0,0,108,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,253,190,0,0,0,0,169,253,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,153,0,0,0,0,169,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,252,252,84,0,0,0,0,169,252,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,211,252,84,0,0,0,6,190,252,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,252,84,0,0,0,22,252,252,229,27,0,0,89,107,106,203,115,0,0,0,0,0,0,0,0,0,0,191,253,227,148,148,148,156,253,253,255,253,253,253,253,255,253,253,128,0,0,0,0,0,0,0,0,0,0,111,252,252,252,253,252,252,252,252,253,252,252,252,252,239,168,116,21,0,0,0,0,0,0,0,0,0,0,7,127,231,231,232,231,233,252,252,253,157,29,21,21,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,182,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,235,191,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,229,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,240,254,253,81,15,24,24,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,254,253,253,228,254,253,221,184,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,254,254,254,254,254,254,254,254,254,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,230,253,253,224,232,232,206,207,206,173,206,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,249,253,202,17,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,253,253,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,254,254,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,254,253,234,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,253,253,220,149,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,253,253,253,254,215,142,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,174,254,254,254,254,220,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,23,140,249,253,253,189,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,249,253,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,253,254,223,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,235,255,254,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,254,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,240,254,215,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,199,253,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,46,172,255,202,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,87,217,253,253,253,253,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,210,217,253,253,253,253,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,168,246,253,253,242,154,101,209,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,253,216,162,102,39,0,0,95,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,253,98,0,0,0,0,0,144,253,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,11,2,0,0,0,0,2,214,253,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,176,253,190,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,238,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,231,253,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,232,253,230,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,217,253,231,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,253,253,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,167,253,253,152,4,0,0,0,0,0,0,9,12,2,0,0,0,0,0,0,0,0,0,0,0,0,23,212,253,253,213,39,0,0,0,0,0,4,108,224,191,15,0,0,0,0,0,0,0,0,0,0,0,33,201,253,203,244,48,48,48,48,48,101,166,176,253,211,19,0,0,0,0,0,0,0,0,0,0,0,10,193,253,253,253,253,253,253,253,253,253,253,253,253,253,158,0,0,0,0,0,0,0,0,0,0,0,0,129,253,253,253,253,253,253,253,253,253,253,253,211,170,148,15,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,253,253,253,253,253,253,253,253,161,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,122,165,135,135,132,28,80,53,17,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,188,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,247,223,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,249,140,59,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,240,210,0,59,253,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,254,49,0,108,254,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,253,0,0,120,253,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,0,13,113,247,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,253,0,0,131,253,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,254,20,80,254,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,250,254,253,159,178,243,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,165,105,6,91,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,255,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,254,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,211,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,23,242,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,249,0,19,172,241,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,137,179,253,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,187,254,241,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,255,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,181,254,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,254,254,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,254,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,250,254,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,254,225,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,203,254,122,0,0,0,0,0,192,233,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,252,76,0,0,0,0,74,249,254,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,215,0,0,0,0,30,209,254,254,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,254,215,0,0,0,94,233,254,251,121,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,254,212,0,6,154,249,254,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,146,73,210,254,254,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,254,248,252,254,254,254,254,254,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,129,245,249,231,101,167,254,253,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,8,227,254,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,254,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,254,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,243,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,203,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,65,190,255,242,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,237,252,252,253,252,237,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,189,252,252,252,253,231,238,234,71,37,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,164,252,252,231,146,84,36,70,236,252,252,184,7,0,0,0,0,0,0,0,0,0,0,0,0,0,12,164,252,252,200,52,0,0,0,27,229,252,252,252,36,0,0,0,0,0,0,0,0,0,0,0,0,0,84,252,252,228,25,0,0,0,0,37,252,252,252,228,25,0,0,0,0,0,0,0,0,0,0,0,0,30,237,252,228,54,0,0,0,0,49,166,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,6,134,252,207,19,0,42,97,160,237,252,252,252,224,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,252,252,233,229,239,252,253,252,252,252,252,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,252,252,252,252,252,253,252,252,252,252,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,121,121,121,121,70,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,252,252,247,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,252,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,253,252,245,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,253,252,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,244,253,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,253,244,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,252,253,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,252,248,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,252,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,223,253,222,118,118,39,0,14,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,253,253,253,253,253,245,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,227,253,253,253,253,253,253,251,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,230,109,253,253,253,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,249,253,253,253,81,53,253,253,253,250,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,253,253,253,154,10,35,168,181,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,232,253,253,194,11,0,0,0,7,179,253,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,253,253,231,63,0,0,0,0,0,163,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,75,0,0,0,0,0,0,163,253,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,234,253,253,45,0,0,0,0,0,0,163,253,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,45,0,0,0,0,0,56,228,253,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,253,253,194,14,0,0,0,0,0,169,253,248,85,0,0,0,0,0,0,0,0,0,0,0,0,0,75,247,253,253,82,0,0,0,0,9,63,226,253,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,194,14,0,0,0,25,145,253,253,232,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,253,171,4,0,8,27,196,253,253,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,252,253,253,165,83,179,253,253,253,250,146,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,253,253,253,253,253,253,253,217,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,236,253,253,253,253,248,149,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,170,253,253,216,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,55,55,99,113,110,55,23,18,20,55,47,88,113,167,151,189,120,15,7,0,0,0,0,0,0,0,0,156,146,246,246,253,254,254,254,239,247,250,226,254,254,252,246,231,236,231,144,0,0,0,0,0,0,0,0,0,0,0,0,64,80,80,80,80,128,90,34,80,80,59,0,14,222,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,195,254,254,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,106,247,254,239,103,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,172,254,255,217,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,242,254,254,207,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,149,254,220,92,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,155,254,253,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,254,254,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,227,182,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,238,237,105,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,209,238,253,253,253,253,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,104,254,253,253,253,253,253,253,222,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,253,254,253,253,253,253,253,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,195,253,254,253,204,108,228,253,253,253,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,249,253,253,254,246,79,0,207,253,253,253,213,13,0,0,0,0,0,0,0,0,0,0,0,0,0,96,198,253,253,253,199,91,0,0,75,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,0,27,206,253,253,253,253,97,0,0,0,217,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,0,22,195,253,253,253,245,120,0,0,0,0,224,253,253,253,253,104,0,0,0,0,0,0,0,0,0,0,98,198,253,253,253,253,120,0,0,0,0,0,136,253,253,253,253,104,0,0,0,0,0,0,0,0,0,123,254,254,254,254,254,103,0,0,0,0,0,0,76,254,254,255,236,62,0,0,0,0,0,0,0,0,25,220,253,253,253,246,114,3,0,0,0,0,0,0,111,253,253,253,208,0,0,0,0,0,0,0,0,0,105,253,253,253,249,122,0,0,0,0,0,0,1,15,226,253,253,248,108,0,0,0,0,0,0,0,0,0,105,253,253,253,108,0,0,0,0,0,0,0,87,253,253,253,253,163,0,0,0,0,0,0,0,0,0,0,105,253,253,146,4,0,0,0,0,0,137,224,243,253,253,253,213,27,0,0,0,0,0,0,0,0,0,0,105,253,253,147,30,30,30,30,145,179,254,253,253,253,253,214,35,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,253,254,253,253,253,133,35,0,0,0,0,0,0,0,0,0,0,0,0,106,253,253,253,253,253,253,253,253,253,217,163,66,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,253,253,253,253,253,253,253,226,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,104,113,253,253,253,253,253,138,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,42,132,219,226,226,226,145,132,132,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,206,253,244,244,244,213,171,244,244,251,211,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,214,102,0,0,0,0,0,0,0,54,172,250,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,19,0,0,0,0,0,0,0,0,13,154,252,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,114,220,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,176,243,254,255,240,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,251,254,205,197,198,226,253,217,151,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,69,40,6,0,0,34,131,194,241,237,185,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,184,254,239,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,114,251,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,64,129,0,0,0,0,0,0,0,0,0,0,75,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,155,133,0,0,0,0,0,0,0,0,0,81,232,199,54,0,0,0,0,0,0,0,0,0,0,0,0,0,176,229,124,86,54,0,0,0,0,79,162,232,235,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,188,254,254,250,246,210,245,245,253,254,182,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,94,131,131,131,215,187,131,131,55,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,233,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,49,0,0,0,0,0,0,0,71,254,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,224,0,0,0,0,0,0,0,96,254,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,244,236,28,0,0,0,0,0,8,210,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,254,224,0,0,0,0,0,0,16,254,254,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,224,0,0,0,0,0,0,16,254,232,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,191,0,0,0,0,0,0,89,254,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,125,0,0,0,0,0,0,116,254,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,162,0,0,0,0,0,0,192,254,176,58,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,217,112,74,110,150,174,254,254,254,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,253,254,254,254,254,254,254,254,254,254,252,249,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,185,194,204,254,219,194,232,254,238,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,40,17,0,76,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,227,250,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,254,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,188,254,131,118,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,116,245,253,253,253,253,239,234,234,166,97,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,253,253,253,253,253,233,177,227,253,253,253,240,179,64,0,0,0,0,0,0,0,0,0,0,0,0,58,239,253,250,198,64,61,45,0,40,61,61,214,253,253,221,51,0,0,0,0,0,0,0,0,0,0,14,174,253,230,77,0,0,0,0,0,0,0,0,34,127,246,253,235,16,0,0,0,0,0,0,0,0,0,97,253,253,136,0,0,0,0,0,0,0,0,0,0,0,199,253,253,116,0,0,0,0,0,0,0,0,0,167,253,225,40,0,0,0,0,0,0,0,0,0,0,0,128,253,253,116,0,0,0,0,0,0,0,0,0,234,253,138,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,116,0,0,0,0,0,0,0,0,106,251,253,61,0,0,0,0,0,0,0,0,0,0,0,0,63,253,253,116,0,0,0,0,0,0,0,0,229,253,253,61,0,0,0,0,0,0,0,0,0,0,0,0,174,253,253,116,0,0,0,0,0,0,0,0,254,253,253,61,0,0,0,0,0,0,0,0,0,0,0,16,210,253,253,116,0,0,0,0,0,0,0,0,254,253,245,55,0,0,0,0,0,0,0,0,0,0,12,102,253,253,240,41,0,0,0,0,0,0,0,0,254,253,177,0,0,0,0,0,0,0,0,0,0,0,108,253,253,230,101,0,0,0,0,0,0,0,0,0,254,253,177,0,0,0,0,0,0,0,0,0,0,0,241,253,253,212,0,0,0,0,0,0,0,0,0,0,198,253,208,25,0,0,0,0,0,0,0,0,63,241,253,253,172,51,0,0,0,0,0,0,0,0,0,0,79,247,253,61,0,0,0,0,0,0,0,69,239,253,253,136,8,0,0,0,0,0,0,0,0,0,0,0,0,200,253,108,20,0,0,0,0,17,163,234,253,253,138,8,0,0,0,0,0,0,0,0,0,0,0,0,0,81,247,253,184,42,42,42,164,199,253,253,226,75,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,232,246,253,253,253,253,253,249,143,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,124,253,253,130,116,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,221,254,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,245,254,253,253,253,233,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,186,253,253,254,193,111,238,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,212,253,253,235,87,1,0,167,253,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,253,244,149,23,0,13,146,249,245,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,216,253,193,0,0,0,185,253,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,232,52,1,27,141,251,253,253,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,177,24,140,253,254,253,253,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,251,253,253,246,156,127,253,253,233,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,253,247,73,0,139,253,253,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,255,254,254,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,221,254,253,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,253,254,187,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,237,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,195,253,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,253,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,181,253,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,253,249,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,186,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,210,255,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,221,253,253,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,250,253,215,78,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,167,253,253,146,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,253,253,216,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,232,253,250,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,169,253,250,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,253,253,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,253,245,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,246,253,134,0,0,0,0,9,89,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,253,253,52,0,0,21,99,166,253,247,202,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,123,1,11,131,250,253,253,253,253,253,236,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,78,6,171,253,253,183,64,62,62,199,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,78,114,253,251,98,3,0,0,4,190,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,253,151,120,253,250,41,0,0,0,32,253,239,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,252,246,139,129,84,0,0,0,0,91,253,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,208,24,0,0,0,0,88,249,253,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,219,253,230,216,115,115,216,245,252,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,223,253,253,253,253,253,234,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,175,251,149,149,91,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,210,253,253,227,104,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,155,242,253,252,252,252,252,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,231,143,200,252,252,252,252,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,252,212,170,252,253,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,252,126,11,218,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,255,204,9,0,150,255,218,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,242,253,132,0,0,27,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,246,252,161,5,0,0,0,245,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,202,252,226,35,0,0,0,0,148,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,252,252,59,0,0,0,0,0,148,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,253,250,115,0,0,0,0,0,0,210,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,252,196,0,0,0,0,0,0,0,253,189,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,210,19,0,0,0,0,0,0,9,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,221,253,98,0,0,0,0,0,0,0,176,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,252,174,11,0,0,0,0,0,9,132,246,253,80,0,0,0,0,0,0,0,0,0,0,0,0,0,4,183,253,107,0,0,0,0,0,15,148,253,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,155,85,50,85,85,146,211,252,252,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,210,252,253,252,244,252,252,253,252,251,134,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,252,253,252,252,252,252,243,189,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,129,209,252,252,182,103,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,118,118,248,255,254,232,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,188,253,253,253,253,201,253,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,114,242,253,251,177,122,40,19,63,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,200,253,253,202,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,204,253,244,119,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,204,253,248,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,253,253,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,128,251,253,86,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,253,253,207,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,183,253,208,92,69,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,253,216,253,253,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,217,253,253,237,226,253,222,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,253,253,253,103,0,248,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,253,253,236,53,0,248,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,242,253,231,55,0,0,248,253,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,198,0,0,43,249,224,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,253,253,198,0,38,160,253,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,239,253,237,179,223,253,235,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,250,253,253,253,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,145,253,171,116,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,199,254,200,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,179,251,253,253,254,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,193,253,253,210,253,254,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,187,253,190,47,8,87,254,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,253,174,37,0,0,0,178,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,240,232,23,0,0,0,0,143,22,0,87,210,210,158,0,0,0,0,0,0,0,0,0,0,0,0,0,110,253,215,128,6,0,0,0,0,0,0,66,240,253,247,49,0,0,0,0,0,0,0,0,0,0,0,0,68,253,182,149,58,0,0,0,0,0,0,28,182,253,233,15,0,0,0,0,0,0,0,0,0,0,0,0,62,205,194,226,139,0,0,0,0,0,24,183,251,141,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,253,169,0,0,61,175,150,188,253,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,254,254,187,166,227,255,232,133,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,253,253,253,253,253,232,72,2,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,191,253,253,253,186,118,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,225,158,206,253,253,244,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,77,0,55,206,253,253,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,35,0,0,106,253,253,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,253,208,87,15,28,222,253,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,196,244,253,226,192,236,253,133,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,233,253,253,253,253,199,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,187,253,219,105,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,106,232,151,0,0,0,0,0,3,42,99,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,253,135,15,0,0,0,0,0,119,253,253,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,253,48,0,0,0,0,0,0,169,253,191,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,230,253,48,0,0,0,0,0,0,169,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,116,253,134,0,0,0,0,0,27,230,253,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,253,233,62,0,0,4,85,202,253,236,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,164,253,235,206,148,209,253,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,212,253,253,253,254,198,217,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,24,133,29,24,21,199,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,204,255,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,212,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,253,253,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,132,190,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,225,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,210,246,112,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,162,254,124,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,207,254,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,209,254,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,250,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,48,42,0,27,162,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,255,250,223,240,254,151,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,154,214,254,229,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,244,250,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,200,254,147,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,172,254,147,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,192,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,234,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,255,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,236,254,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,98,9,0,0,3,83,216,254,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,254,163,143,143,225,254,254,133,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,145,254,254,229,175,115,30,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,255,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,254,211,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,254,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,230,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,106,199,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,146,241,253,243,250,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,39,118,201,254,253,199,82,201,246,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,173,232,247,253,213,130,31,6,56,246,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,252,254,243,134,50,6,0,0,0,217,253,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,80,50,0,0,0,0,0,0,83,254,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,212,253,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,253,73,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,206,206,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,46,96,135,174,199,255,254,254,254,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,244,253,237,239,253,254,253,237,231,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,47,24,39,219,251,87,24,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,253,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,202,178,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,230,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,221,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,205,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,237,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,106,206,255,155,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,78,192,253,217,237,254,254,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,209,216,138,95,22,39,120,145,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,252,132,6,0,0,9,180,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,171,14,0,0,0,13,65,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,66,0,0,0,0,39,185,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,235,20,0,0,28,98,223,220,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,254,228,224,224,239,254,180,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,130,206,238,214,254,247,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,88,254,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,220,179,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,209,221,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,254,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,247,178,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,210,249,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,254,131,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,241,235,125,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,254,254,231,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,243,254,254,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,254,254,186,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,175,175,71,0,0,0,0,0,0,0,0,0,0,0,0,0,32,136,69,40,40,77,47,136,136,136,235,250,253,253,245,0,0,0,0,0,0,0,0,0,0,0,0,0,209,253,253,253,253,254,253,253,253,253,254,253,253,253,139,0,0,0,0,0,0,0,0,0,0,0,108,194,255,254,254,254,254,255,249,236,254,208,196,150,68,38,0,0,0,0,0,0,0,0,0,0,0,67,250,253,254,253,171,135,135,114,36,27,39,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,253,253,254,253,131,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,34,117,238,253,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,238,253,221,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,254,254,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,26,0,0,0,0,20,253,253,238,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,135,0,0,0,0,6,199,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,150,0,0,0,10,92,247,253,253,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,248,165,98,135,209,253,253,253,177,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,245,254,254,254,255,254,254,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,203,244,253,234,150,68,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,216,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,253,233,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,249,253,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,229,253,226,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,252,252,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,234,252,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,252,252,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,253,168,0,4,104,178,253,254,228,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,253,252,93,0,79,252,252,252,253,252,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,234,253,208,13,126,253,252,186,56,69,224,196,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,96,76,249,253,151,19,0,0,44,190,240,51,0,0,0,0,0,0,0,0,0,0,0,0,0,86,253,255,84,147,253,226,38,0,0,0,0,86,253,126,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,84,197,252,38,0,0,0,0,0,160,252,200,0,0,0,0,0,0,0,0,0,0,0,0,0,85,252,253,165,240,252,0,0,0,0,0,19,215,252,113,0,0,0,0,0,0,0,0,0,0,0,0,0,47,240,253,252,252,202,0,0,0,0,13,194,252,252,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,255,253,253,153,26,19,29,128,254,253,244,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,252,252,252,244,225,252,252,253,240,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,130,234,252,253,252,252,252,206,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,139,140,190,139,40,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,255,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,106,0,0,0,0,0,89,253,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,191,0,0,0,0,0,135,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,239,191,0,0,0,0,0,145,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,253,191,0,0,0,0,26,243,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,244,252,95,0,0,0,0,89,253,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,239,253,170,0,0,0,0,0,156,246,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,129,253,220,34,0,0,0,0,21,218,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,78,0,0,0,0,0,145,253,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,233,16,0,0,0,0,0,228,219,30,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,242,74,5,0,0,0,74,252,165,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,37,253,253,253,199,125,89,89,220,253,165,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,18,205,253,253,253,253,253,253,253,253,248,226,209,239,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,175,253,253,253,253,253,253,253,253,253,253,253,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,25,117,202,253,253,253,242,240,251,233,173,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,253,240,104,36,29,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,170,253,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,253,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,253,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,120,243,249,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,253,199,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,204,248,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,159,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,4,0,0,0,0,65,253,240,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,122,161,0,0,0,4,188,253,133,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,148,253,230,11,0,0,89,253,216,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,191,253,180,18,0,0,27,215,253,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,176,253,207,8,0,0,0,115,253,179,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,199,253,226,46,0,0,0,54,251,253,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,254,254,148,91,91,112,96,222,255,243,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,238,253,253,253,253,253,253,253,219,124,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,76,146,105,65,93,248,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,253,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,248,253,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,198,253,175,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,253,238,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,228,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,245,253,194,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,253,221,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/Tools/Performance/Comparer/Shared/Shared.csproj b/Tools/Performance/Comparer/Shared/Shared.csproj new file mode 100644 index 0000000000..cda7a05f2 --- /dev/null +++ b/Tools/Performance/Comparer/Shared/Shared.csproj @@ -0,0 +1,80 @@ + + + + + Debug + AnyCPU + {1390F440-FFFA-45F3-A920-07FD4EEC8785} + Library + Properties + Shared + Shared + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\BenchmarkDotNet.0.9.4\lib\net45\BenchmarkDotNet.dll + True + + + + + + + + + + + + + + + + + + + + + True + True + Resources.resx + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/Shared/packages.config b/Tools/Performance/Comparer/Shared/packages.config new file mode 100644 index 0000000000..46606255b --- /dev/null +++ b/Tools/Performance/Comparer/Shared/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/packages/Accord.3.0.2/Accord.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.3.0.2/Accord.3.0.2.nupkg new file mode 100644 index 0000000000..bb2b88e24 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.3.0.2/Accord.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.3.0.2/build/Accord.dll.config b/Tools/Performance/Comparer/packages/Accord.3.0.2/build/Accord.dll.config new file mode 100644 index 0000000000..3ec0d20b5 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.3.0.2/build/Accord.dll.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.3.0.2/build/Accord.targets b/Tools/Performance/Comparer/packages/Accord.3.0.2/build/Accord.targets new file mode 100644 index 0000000000..47b13b6b5 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.3.0.2/build/Accord.targets @@ -0,0 +1,8 @@ + + + + Accord.dll.config + Always + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net35/Accord.dll b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net35/Accord.dll new file mode 100644 index 0000000000..5101248c3 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net35/Accord.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net35/Accord.xml b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net35/Accord.xml new file mode 100644 index 0000000000..780a9d885 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net35/Accord.xml @@ -0,0 +1,5402 @@ + + + + Accord + + + + + A delegate which is used by events notifying abount sent/received message. + + + Event sender. + Event arguments containing details about the transferred message. + + + + + Structure for representing a pair of coordinates of double type. + + + The structure is used to store a pair of floating point + coordinates with double precision. + + Sample usage: + + // assigning coordinates in the constructor + DoublePoint p1 = new DoublePoint( 10, 20 ); + // creating a point and assigning coordinates later + DoublePoint p2; + p2.X = 30; + p2.Y = 40; + // calculating distance between two points + double distance = p1.DistanceTo( p2 ); + + + + + + + X coordinate. + + + + + + Y coordinate. + + + + + + Initializes a new instance of the structure. + + + X axis coordinate. + Y axis coordinate. + + + + + Calculate Euclidean distance between two points. + + + Point to calculate distance to. + + Returns Euclidean distance between this point and + points. + + + + + Calculate squared Euclidean distance between two points. + + + Point to calculate distance to. + + Returns squared Euclidean distance between this point and + points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Equality operator - checks if two points have equal coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are equal. + + + + + Inequality operator - checks if two points have different coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another point to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Explicit conversion to . + + + Double precision point to convert to integer point. + + Returns new integer point which coordinates are explicitly converted + to integers from coordinates of the specified double precision point by + casting double values to integers value. + + + + + Explicit conversion to . + + + Double precision point to convert to single precision point. + + Returns new single precision point which coordinates are explicitly converted + to floats from coordinates of the specified double precision point by + casting double values to float value. + + + + + Rounds the double precision point. + + + Returns new integer point, which coordinates equal to whole numbers + nearest to the corresponding coordinates of the double precision point. + + + + + Get string representation of the class. + + + Returns string, which contains values of the point in readable form. + + + + + Calculate Euclidean norm of the vector comprised of the point's + coordinates - distance from (0, 0) in other words. + + + Returns point's distance from (0, 0) point. + + + + + Represents a double range with minimum and maximum values. + + + + The class represents a double range with inclusive limits - + both minimum and maximum values of the range are included into it. + Mathematical notation of such range is [min, max]. + + Sample usage: + + // create [0.25, 1.5] range + DoubleRange range1 = new DoubleRange( 0.25, 1.5 ); + // create [1.00, 2.25] range + DoubleRange range2 = new DoubleRange( 1.00, 2.25 ); + // check if values is inside of the first range + if ( range1.IsInside( 0.75 ) ) + { + // ... + } + // check if the second range is inside of the first range + if ( range1.IsInside( range2 ) ) + { + // ... + } + // check if two ranges overlap + if ( range1.IsOverlapping( range2 ) ) + { + // ... + } + + + + + + + Initializes a new instance of the class. + + + Minimum value of the range. + Maximum value of the range. + + + + + Check if the specified value is inside of the range. + + + Value to check. + + True if the specified value is inside of the range or + false otherwise. + + + + + Check if the specified range is inside of the range. + + + Range to check. + + True if the specified range is inside of the range or + false otherwise. + + + + + Check if the specified range overlaps with the range. + + + Range to check for overlapping. + + True if the specified range overlaps with the range or + false otherwise. + + + + + Convert the signle precision range to integer range. + + + Specifies if inner integer range must be returned or outer range. + + Returns integer version of the range. + + If is set to , then the + returned integer range will always fit inside of the current single precision range. + If it is set to , then current single precision range will always + fit into the returned integer range. + + + + + Equality operator - checks if two ranges have equal min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are equal. + + + + + Inequality operator - checks if two ranges have different min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another range to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains min/max values of the range in readable form. + + + + + Minimum value of the range. + + + The property represents minimum value (left side limit) or the range - + [min, max]. + + + + + Maximum value of the range. + + + The property represents maximum value (right side limit) or the range - + [min, max]. + + + + + Length of the range (deffirence between maximum and minimum values). + + + + + Event arguments holding a buffer sent or received during some communication process. + + + + + Initializes a new instance of the class. + + + Message being transfered during communication process. + + + + + Initializes a new instance of the class. + + + Buffer containing the message being transferred during communication process. + Starting index of the message within the buffer. + Length of the message within the buffer. + + + + + Get the transfered message. + + + Returns copy of the transfered message. + + + + + Get the transferred message as string. + + + Returns string encoding the transferred message. + + + + + Length of the transfered message. + + + + + Connection failed exception. + + + The exception is thrown in the case if connection to device + has failed. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Connection lost exception. + + + The exception is thrown in the case if connection to device + is lost. When the exception is caught, user may need to reconnect to the device. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Not connected exception. + + + The exception is thrown in the case if connection to device + is not established, but user requests for its services. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Device busy exception. + + + The exception is thrown in the case if access to certain device + is not available due to the fact that it is currently busy handling other request/connection. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Device error exception. + + + The exception is thrown in the case if some error happens with a device, which + may need to be reported to user. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Structure for representing a pair of coordinates of integer type. + + + The structure is used to store a pair of integer coordinates. + + Sample usage: + + // assigning coordinates in the constructor + IntPoint p1 = new IntPoint( 10, 20 ); + // creating a point and assigning coordinates later + IntPoint p2; + p2.X = 30; + p2.Y = 40; + // calculating distance between two points + float distance = p1.DistanceTo( p2 ); + + + + + + + X coordinate. + + + + + + Y coordinate. + + + + + + Initializes a new instance of the structure. + + + X axis coordinate. + Y axis coordinate. + + + + + Calculate Euclidean distance between two points. + + + Point to calculate distance to. + + Returns Euclidean distance between this point and + points. + + + + + Calculate squared Euclidean distance between two points. + + + Point to calculate distance to. + + Returns squared Euclidean distance between this point and + points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Equality operator - checks if two points have equal coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are equal. + + + + + Inequality operator - checks if two points have different coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another point to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Implicit conversion to . + + + Integer point to convert to single precision point. + + Returns new single precision point which coordinates are implicitly converted + to floats from coordinates of the specified integer point. + + + + + Implicit conversion to . + + + Integer point to convert to double precision point. + + Returns new double precision point which coordinates are implicitly converted + to doubles from coordinates of the specified integer point. + + + + + Get string representation of the class. + + + Returns string, which contains values of the point in readable form. + + + + + Calculate Euclidean norm of the vector comprised of the point's + coordinates - distance from (0, 0) in other words. + + + Returns point's distance from (0, 0) point. + + + + + Represents an integer range with minimum and maximum values. + + + + The class represents an integer range with inclusive limits - + both minimum and maximum values of the range are included into it. + Mathematical notation of such range is [min, max]. + + Sample usage: + + // create [1, 10] range + IntRange range1 = new IntRange( 1, 10 ); + // create [5, 15] range + IntRange range2 = new IntRange( 5, 15 ); + // check if values is inside of the first range + if ( range1.IsInside( 7 ) ) + { + // ... + } + // check if the second range is inside of the first range + if ( range1.IsInside( range2 ) ) + { + // ... + } + // check if two ranges overlap + if ( range1.IsOverlapping( range2 ) ) + { + // ... + } + + + + + + + Initializes a new instance of the structure. + + + Minimum value of the range. + Maximum value of the range. + + + + + Check if the specified value is inside of the range. + + + Value to check. + + True if the specified value is inside of the range or + false otherwise. + + + + + Check if the specified range is inside of the range. + + + Range to check. + + True if the specified range is inside of the range or + false otherwise. + + + + + Check if the specified range overlaps with the range. + + + Range to check for overlapping. + + True if the specified range overlaps with the range or + false otherwise. + + + + + Implicit conversion to . + + + Integer range to convert to single precision range. + + Returns new single precision range which min/max values are implicitly converted + to floats from min/max values of the specified integer range. + + + + + Equality operator - checks if two ranges have equal min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are equal. + + + + + Inequality operator - checks if two ranges have different min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another range to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains min/max values of the range in readable form. + + + + + Minimum value of the range. + + + The property represents minimum value (left side limit) or the range - + [min, max]. + + + + + Maximum value of the range. + + + The property represents maximum value (right side limit) or the range - + [min, max]. + + + + + Length of the range (deffirence between maximum and minimum values). + + + + + The class provides support for parallel computations, paralleling loop's iterations. + + + The class allows to parallel loop's iteration computing them in separate threads, + what allows their simultaneous execution on multiple CPUs/cores. + + + + + + Executes a for-loop in which iterations may run in parallel. + + + Loop's start index. + Loop's stop index. + Loop's body. + + The method is used to parallel for-loop running its iterations in + different threads. The start and stop parameters define loop's + starting and ending loop's indexes. The number of iterations is equal to stop - start. + + + Sample usage: + + Parallel.For( 0, 20, delegate( int i ) + // which is equivalent to + // for ( int i = 0; i < 20; i++ ) + { + System.Diagnostics.Debug.WriteLine( "Iteration: " + i ); + // ... + } ); + + + + + + + Number of threads used for parallel computations. + + + The property sets how many worker threads are created for paralleling + loops' computations. + + By default the property is set to number of CPU's in the system + (see ). + + + + + + Delegate defining for-loop's body. + + + Loop's index. + + + + + Structure for representing a pair of coordinates of float type. + + + The structure is used to store a pair of floating point + coordinates with single precision. + + Sample usage: + + // assigning coordinates in the constructor + Point p1 = new Point( 10, 20 ); + // creating a point and assigning coordinates later + Point p2; + p2.X = 30; + p2.Y = 40; + // calculating distance between two points + float distance = p1.DistanceTo( p2 ); + + + + + + + X coordinate. + + + + + + Y coordinate. + + + + + + Initializes a new instance of the structure. + + + X axis coordinate. + Y axis coordinate. + + + + + Calculate Euclidean distance between two points. + + + Point to calculate distance to. + + Returns Euclidean distance between this point and + points. + + + + + Calculate squared Euclidean distance between two points. + + + Point to calculate distance to. + + Returns squared Euclidean distance between this point and + points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Equality operator - checks if two points have equal coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are equal. + + + + + Inequality operator - checks if two points have different coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another point to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Explicit conversion to . + + + Single precision point to convert to integer point. + + Returns new integer point which coordinates are explicitly converted + to integers from coordinates of the specified single precision point by + casting float values to integers value. + + + + + Implicit conversion to . + + + Single precision point to convert to double precision point. + + Returns new double precision point which coordinates are implicitly converted + to doubles from coordinates of the specified single precision point. + + + + + Rounds the single precision point. + + + Returns new integer point, which coordinates equal to whole numbers + nearest to the corresponding coordinates of the single precision point. + + + + + Get string representation of the class. + + + Returns string, which contains values of the point in readable form. + + + + + Calculate Euclidean norm of the vector comprised of the point's + coordinates - distance from (0, 0) in other words. + + + Returns point's distance from (0, 0) point. + + + + + Evaluator of expressions written in reverse polish notation. + + + The class evaluates expressions writen in reverse postfix polish notation. + + The list of supported functuins is: + + Arithmetic functions: +, -, *, /; + sin - sine; + cos - cosine; + ln - natural logarithm; + exp - exponent; + sqrt - square root. + + + Arguments for these functions could be as usual constants, written as numbers, as variables, + writen as $<var_number> ($2, for example). The variable number is zero based index + of variables array. + + Sample usage: + + // expression written in polish notation + string expression = "2 $0 / 3 $1 * +"; + // variables for the expression + double[] vars = new double[] { 3, 4 }; + // expression evaluation + double result = PolishExpression.Evaluate( expression, vars ); + + + + + + + Evaluates specified expression. + + + Expression written in postfix polish notation. + Variables for the expression. + + Evaluated value of the expression. + + Unsupported function is used in the expression. + Incorrect postfix polish expression. + + + + + Represents a range with minimum and maximum values, which are single precision numbers (floats). + + + + The class represents a single precision range with inclusive limits - + both minimum and maximum values of the range are included into it. + Mathematical notation of such range is [min, max]. + + Sample usage: + + // create [0.25, 1.5] range + Range range1 = new Range( 0.25f, 1.5f ); + // create [1.00, 2.25] range + Range range2 = new Range( 1.00f, 2.25f ); + // check if values is inside of the first range + if ( range1.IsInside( 0.75f ) ) + { + // ... + } + // check if the second range is inside of the first range + if ( range1.IsInside( range2 ) ) + { + // ... + } + // check if two ranges overlap + if ( range1.IsOverlapping( range2 ) ) + { + // ... + } + + + + + + + Initializes a new instance of the structure. + + + Minimum value of the range. + Maximum value of the range. + + + + + Check if the specified value is inside of the range. + + + Value to check. + + True if the specified value is inside of the range or + false otherwise. + + + + + Check if the specified range is inside of the range. + + + Range to check. + + True if the specified range is inside of the range or + false otherwise. + + + + + Check if the specified range overlaps with the range. + + + Range to check for overlapping. + + True if the specified range overlaps with the range or + false otherwise. + + + + + Convert the signle precision range to integer range. + + + Specifies if inner integer range must be returned or outer range. + + Returns integer version of the range. + + If is set to , then the + returned integer range will always fit inside of the current single precision range. + If it is set to , then current single precision range will always + fit into the returned integer range. + + + + + Equality operator - checks if two ranges have equal min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are equal. + + + + + Inequality operator - checks if two ranges have different min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another range to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains min/max values of the range in readable form. + + + + + Minimum value of the range. + + + The property represents minimum value (left side limit) or the range - + [min, max]. + + + + + Maximum value of the range. + + + The property represents maximum value (right side limit) or the range - + [min, max]. + + + + + Length of the range (deffirence between maximum and minimum values). + + + + + Set of systems tools. + + + The class is a container of different system tools, which are used + across the framework. Some of these tools are platform specific, so their + implementation is different on different platform, like .NET and Mono. + + + + + + Copy block of unmanaged memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's value of - pointer to destination. + + This function is required because of the fact that .NET does + not provide any way to copy unmanaged blocks, but provides only methods to + copy from unmanaged memory to managed memory and vise versa. + + + + + Copy block of unmanaged memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's value of - pointer to destination. + + This function is required because of the fact that .NET does + not provide any way to copy unmanaged blocks, but provides only methods to + copy from unmanaged memory to managed memory and vise versa. + + + + + Fill memory region with specified value. + + + Destination pointer. + Filler byte's value. + Memory block's length to fill. + + Return's value of - pointer to destination. + + + + + Fill memory region with specified value. + + + Destination pointer. + Filler byte's value. + Memory block's length to fill. + + Return's value of - pointer to destination. + + + + + Thread safe version of the class. + + + The class inherits the and overrides + its random numbers generation methods providing thread safety by guarding call + to the base class with a lock. See documentation to for + additional information about the base class. + + + + + Initializes a new instance of the class. + + + See for more information. + + + + + Initializes a new instance of the class. + + + A number used to calculate a starting value for the pseudo-random number sequence. + If a negative number is specified, the absolute value of the number is used. + + + See for more information. + + + + + Returns a nonnegative random number. + + + Returns a 32-bit signed integer greater than or equal to zero and less than + . + + See for more information. + + + + + Returns a nonnegative random number less than the specified maximum. + + + The exclusive upper bound of the random number to be generated. + must be greater than or equal to zero. + + Returns a 32-bit signed integer greater than or equal to zero, and less than ; + that is, the range of return values ordinarily includes zero but not . + + See for more information. + + + + + Returns a random number within a specified range. + + + The inclusive lower bound of the random number returned. + The exclusive upper bound of the random number returned. + must be greater than or equal to . + + Returns a 32-bit signed integer greater than or equal to and less + than ; that is, the range of return values includes + but not . + + See for more information. + + + + + Fills the elements of a specified array of bytes with random numbers. + + + An array of bytes to contain random numbers. + + See for more information. + + + + + Returns a random number between 0.0 and 1.0. + + + Returns a double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + See for more information. + + + + + Specifies that an argument, in a method or function, + must be greater than zero. + + + + + + Specifies that an argument, in a method or function, + must be real (double). + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets the minimum allowed field value. + + + + + + Gets the maximum allowed field value. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be lesser than zero. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be lesser than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be greater than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be real between 0 and 1. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer bigger than zero. + + + + + + Specifies that an argument, in a method or function, + must be an integer. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets the minimum allowed field value. + + + + + + Gets the maximum allowed field value. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer less than zero. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer smaller than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer bigger than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Runtime cast. + + + The target type. + The source type. + + + + + Initializes a new instance of the struct. + + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Gets the value being casted. + + + + + + Runtime cast. + + + The target type. + + + + + Initializes a new instance of the struct. + + The value. + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Gets the value being casted. + + + + + + Red-black tree specialized for key-based value retrieval. + + + + See . + + + The type of the key. + The type of the value. + + + + + Red-black tree. + + + + + A red–black tree is a data structure which is a type of self-balancing binary + search tree. Balance is preserved by painting each node of the tree with one of + two colors (typically called 'red' and 'black') in a way that satisfies certain + properties, which collectively constrain how unbalanced the tree can become in + the worst case. When the tree is modified, the new tree is subsequently rearranged + and repainted to restore the coloring properties. The properties are designed in + such a way that this rearranging and recoloring can be performed efficiently. + + + The balancing of the tree is not perfect but it is good enough to allow it to + guarantee searching in O(log n) time, where n is the total number of elements + in the tree. The insertion and deletion operations, along with the tree rearrangement + and recoloring, are also performed in O(log n) time. + + + Tracking the color of each node requires only 1 bit of information per node because + there are only two colors. The tree does not contain any other data specific to its + being a red–black tree so its memory footprint is almost identical to a classic + (uncolored) binary search tree. + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, + http://ab-initio.mit.edu/nlopt + + Wikipedia, The Free Encyclopedia. Red-black tree. Available on: + http://en.wikipedia.org/wiki/Red%E2%80%93black_tree + + + + The type of the value to be stored. + + + + + Constructs a new using the + default for type . + + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + + + + Constructs a new using the + default for type . + + + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Removes all nodes from the tree. + + + + + + Adds a new item to the tree. If the element already + belongs to this tree, no new element will be added. + + + The item to be added. + + The node containing the added item. + + + + + Adds a new item to the tree. If the element already + belongs to this tree, no new element will be added. + + + The node to be added to the tree. + + + + + Attempts to remove an element from the tree. + + + The item to be removed. + + + True if the element was in the tree and was removed; false otherwise. + + + + + + Removes a node from the tree. + + + The node to be removed. + + + True if the element was in the tree and was removed; false otherwise. + + + + + + Removes a node from the tree. + + + The key of the node to be removed. + + + A reference to the removed node, if the item was in the tree; otherwise, null. + + + + + + Removes a node from the tree. + + + The node to be removed. + + + A reference to the removed node. + + + + + + Copies the nodes of this tree to an array, starting at a + particular array index. + + + + The one-dimensional array that is the destination of the elements + copied from this tree. The array must have zero-based indexing. + + + + The zero-based index in at which copying begins. + + + + + + Copies the elements of this tree to an array, starting at a + particular array index. + + + + The one-dimensional array that is the destination of the elements + copied from this tree. The array must have zero-based indexing. + + + + The zero-based index in at which copying begins. + + + + + + Returns an enumerator that iterates through this tree in-order. + + + + An object that can + be used to traverse through this tree using in-order traversal. + + + + + + Returns an enumerator that iterates through this tree in-order. + + + + An object that can + be used to traverse through this tree using in-order traversal. + + + + + + Determines whether this tree contains the specified item. + + + The item to be looked for. + + + true if the element was found inside the tree; otherwise, false. + + + + + + Determines whether this tree contains the specified item. + + + The item to be looked for. + + + true if the element was found inside the tree; otherwise, false. + + + + + + Attempts to find a node that contains the specified key. + + + The key whose node is to be found. + + + A containing the desired + if it is present in the dictionary; otherwise, returns null. + + + + + + Finds the greatest point in the subtree rooted at + that is less than or equal to (<=) k. In other words, finds either + k or a number immediately below it. + + + The subtree where search will take place. + A reference value to be found. + + + The node containing the given value or + its immediately smaller neighboring number present in the tree. + + + + + + Finds the greatest point in the + tree that is less than or equal to (<=) k. + In other words, finds either k or a number immediately + below it. + + + A reference for the value to be found. + + + The node containing the given value or + its immediately smaller neighboring number present in the tree. + + + + + + Finds the greatest point in the subtree rooted at + that is less than (<) k. In other words, finds a number stored in + the tree that is immediately below k. + + + The subtree where search will take place. + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the greatest point in the + tree that is less than (<) k. In other words, finds + a number stored in the tree that is immediately below k. + + + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the smallest point in the subtree rooted at + that is greater than (>) k. In other words, finds a number stored in + the tree that is immediately above k. + + + The subtree where search will take place. + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the smallest point in the in the + tree that is greater than (>) k. In other words, finds a + number stored in the tree that is immediately above k. + + + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the minimum element stored in the tree. + + + + The that + holds the minimum element in the tree. + + + + + + Finds the maximum element stored in the tree. + + + + The that + holds the maximum element in the tree. + + + + + + Gets the node that contains the next in-order value coming + after the value contained in the given . + + + The current node. + + + The node that contains a value that is immediately greater than + the current value contained in the given . + + + + + + Gets the node that contains the previous in-order value coming + before the value contained in the given . + + + The current node. + + + The node that contains a value that is immediately less than + the current value contained in the given . + + + + + + Forces a re-balance of the tree by removing and inserting the same node. + + + The node to be re-balanced. + + The same node, or a new one if it had to be recreated. + + + + + Gets the number of nodes contained in this red-black tree. + + + + + + Gets the + root node of this red-black tree. + + + + + + Gets the for this red black tree. + + + + + + Gets a value indicating whether this instance is read only. + In a , this returns false. + + + + Returns false. + + + + + + Constructs a new using the default + for the key type . + + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + + + + Constructs a new using the default + for the key type . + + + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Vanilla key-based comparer for . + + + The key type in the key-value pair. + The value type in the key-value pair. + + + + + Initializes a new instance of the class. + + + The comparer to be used to compare keys. + + + + + Initializes a new instance of the class. + + + + + + Compares two objects and returns a value indicating whether + one is less than, equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Compares two objects and returns a value indicating whether + one is less than, equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Returns a default sort order comparer for the + key-value pair specified by the generic argument. + + + + + + Two-way dictionary for efficient lookups by both key and value. This + can be used to represent a one-to-one relation among two object types. + + + The type of right keys in the dictionary. + The type of left keys in the dictionary. + + + + + Minimum IReadOnlyDictionary implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Minimum IReadOnlyCollection implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Determines whether the dictionary contains the specified key. + + + + + + Tries to get a value. + + + + + + Gets the keys. + + + + + + Gets the values. + + + + + + Gets the value associated with the specified key. + + + + + + Initializes a new instance of the class + that is empty, has the default initial capacity, and uses the default equality comparer + for the key type. + + + + + + Initializes a new instance of the class + that is empty, has the specified initial capacity, and uses the default equality comparer + for the key type. + + + The initial number of elements that this dictionary can contain. + + + + + Initializes a new instance of the class + that contains elements copied from the specified dictionary and uses the default equality + comparer for the key type. + + + The dictionary whose elements are copied to the new . + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an object for the object. + + + + An object for the object. + + + + + + Adds an element with the provided key and value to the . + + + The object to use as the key of the element to add. + The object to use as the value of the element to add. + + + + + Adds an element with the provided key and value to the object. + + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + + Adds an item to the . + + + The object to add to the . + + + + + Determines whether the contains an element with the specified key. + + + The key to locate in the . + + + true if the contains an element with the key; otherwise, false. + + + + + + Determines whether the contains a specific value. + + + The object to locate in the . + + + true if is found in the ; otherwise, false. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. + + + true if the object that implements contains an element with the specified key; otherwise, false. + + + + + + Removes the element with the specified key from the . + + + The key of the element to remove. + + + true if the element is successfully removed; otherwise, false. This method also returns false if was not found in the original . + + + + + + Removes the element with the specified key from the object. + + + The key of the element to remove. + + + + + Removes the first occurrence of a specific object from the . + + + The object to remove from the . + + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + + Determines whether the object contains an element with the specified key. + + + The key to locate in the object. + + + true if the contains an element with the key; otherwise, false. + + + + + + Removes all items from the . + + + + + + Gets the reverse dictionary that maps values back to keys. + + + + + + Gets the number of elements contained in this . + + + + + + Gets an object that can be used to synchronize access to the . + + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + + + + Gets a value indicating whether the object has a fixed size. + + + + + + Gets a value indicating whether the is read-only. + + + + + + Gets or sets the element with the specified key. + + + The left key. + + + + + Gets or sets the element with the specified key. + + + The left key. + + + + + Gets an containing the keys of the . + + + + + + Gets an containing the keys of the . + + + + + + Gets an containing the keys of the . + + + + + + Gets an containing the values in the . + + + + + + Gets an containing the values in the . + + + + + + Gets an containing the values in the . + + + + + + Minimum CancellationToken implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Gets or sets a value indicating whether this instance can be cancelled. + + + + + + Gets or sets a value indicating whether cancellation has been requested. + + + + + + Gets an empty token. + + + + + + Complex number wrapper class. + + + The class encapsulates complex number and provides + set of different operators to manipulate it, like adding, subtraction, + multiplication, etc. + + Sample usage: + + // define two complex numbers + Complex c1 = new Complex( 3, 9 ); + Complex c2 = new Complex( 8, 3 ); + // sum + Complex s1 = Complex.Add( c1, c2 ); + Complex s2 = c1 + c2; + Complex s3 = c1 + 5; + // difference + Complex d1 = Complex.Subtract( c1, c2 ); + Complex d2 = c1 - c2; + Complex d3 = c1 - 2; + + + + + + + Real part of the complex number. + + + + + Imaginary part of the complex number. + + + + + A double-precision complex number that represents zero. + + + + + A double-precision complex number that represents one. + + + + + A double-precision complex number that represents the squere root of (-1). + + + + + Initializes a new instance of the class. + + + Real part. + Imaginary part. + + + + + Initializes a new instance of the class. + + + Source complex number. + + + + + Adds two complex numbers. + + + A instance. + A instance. + + Returns new instance containing the sum of specified + complex numbers. + + + + + Adds scalar value to a complex number. + + + A instance. + A scalar value. + + Returns new instance containing the sum of specified + complex number and scalar value. + + + + + Adds two complex numbers and puts the result into the third complex number. + + + A instance. + A instance. + A instance to hold the result. + + + + + Adds scalar value to a complex number and puts the result into another complex number. + + + A instance. + A scalar value. + A instance to hold the result. + + + + + Subtracts one complex number from another. + + + A instance to subtract from. + A instance to be subtracted. + + Returns new instance containing the subtraction result (a - b). + + + + + Subtracts a scalar from a complex number. + + + A instance to subtract from. + A scalar value to be subtracted. + + Returns new instance containing the subtraction result (a - s). + + + + + Subtracts a complex number from a scalar value. + + + A scalar value to subtract from. + A instance to be subtracted. + + Returns new instance containing the subtraction result (s - a). + + + + + Subtracts one complex number from another and puts the result in the third complex number. + + + A instance to subtract from. + A instance to be subtracted. + A instance to hold the result. + + + + + Subtracts a scalar value from a complex number and puts the result into another complex number. + + + A instance to subtract from. + A scalar value to be subtracted. + A instance to hold the result. + + + + + Subtracts a complex number from a scalar value and puts the result into another complex number. + + + A scalar value to subtract from. + A instance to be subtracted. + A instance to hold the result. + + + + + Multiplies two complex numbers. + + + A instance. + A instance. + + Returns new instance containing the result of multiplication. + + + + + Multiplies a complex number by a scalar value. + + + A instance. + A scalar value. + + Returns new instance containing the result of multiplication. + + + + + Multiplies two complex numbers and puts the result in a third complex number. + + + A instance. + A instance. + A instance to hold the result. + + + + + Multiplies a complex number by a scalar value and puts the result into another complex number. + + + A instance. + A scalar value. + A instance to hold the result. + + + + + Divides one complex number by another complex number. + + + A instance. + A instance. + + Returns new instance containing the result. + + Can not divide by zero. + + + + + Divides a complex number by a scalar value. + + + A instance. + A scalar value. + + Returns new instance containing the result. + + Can not divide by zero. + + + + + Divides a scalar value by a complex number. + + + A scalar value. + A instance. + + Returns new instance containing the result. + + Can not divide by zero. + + + + + Divides one complex number by another complex number and puts the result in a third complex number. + + + A instance. + A instance. + A instance to hold the result. + + Can not divide by zero. + + + + + Divides a complex number by a scalar value and puts the result into another complex number. + + + A instance. + A scalar value. + A instance to hold the result. + + Can not divide by zero. + + + + + Divides a scalar value by a complex number and puts the result into another complex number. + + + A instance. + A scalar value. + A instance to hold the result. + + Can not divide by zero. + + + + + Negates a complex number. + + + A instance. + + Returns new instance containing the negated values. + + + + + Tests whether two complex numbers are approximately equal using default tolerance value. + + + A instance. + A instance. + + Return if the two vectors are approximately equal or otherwise. + + The default tolerance value, which is used for the test, equals to 8.8817841970012523233891E-16. + + + + + Tests whether two complex numbers are approximately equal given a tolerance value. + + + A instance. + A instance. + The tolerance value used to test approximate equality. + + The default tolerance value, which is used for the test, equals to 8.8817841970012523233891E-16. + + + + + Converts the specified string to its equivalent. + + + A string representation of a complex number. + + Returns new instance that represents the complex number + specified by the parameter. + + String representation of the complex number is not correctly formatted. + + + + + Try to convert the specified string to its equivalent. + + + A string representation of a complex number. + + instance to output the result to. + + Returns boolean value that indicates if the parse was successful or not. + + + + + Calculates square root of a complex number. + + + A instance. + + Returns new instance containing the square root of the specified + complex number. + + + + + Calculates natural (base e) logarithm of a complex number. + + + A instance. + + Returns new instance containing the natural logarithm of the specified + complex number. + + + + + Calculates exponent (e raised to the specified power) of a complex number. + + + A instance. + + Returns new instance containing the exponent of the specified + complex number. + + + + + Calculates Sine value of the complex number. + + + A instance. + + Returns new instance containing the Sine value of the specified + complex number. + + + + + Calculates Cosine value of the complex number. + + + A instance. + + Returns new instance containing the Cosine value of the specified + complex number. + + + + + Calculates Tangent value of the complex number. + + + A instance. + + Returns new instance containing the Tangent value of the specified + complex number. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + Returns a value indicating whether this instance is equal to the specified object. + + + An object to compare to this instance. + + Returns if is a and has the same values as this instance or otherwise. + + + + + Returns a string representation of this object. + + + A string representation of this object. + + + + + Tests whether two specified complex numbers are equal. + + + The left-hand complex number. + The right-hand complex number. + + Returns if the two complex numbers are equal or otherwise. + + + + + Tests whether two specified complex numbers are not equal. + + + The left-hand complex number. + The right-hand complex number. + + Returns if the two complex numbers are not equal or otherwise. + + + + + Negates the complex number. + + + A instance. + + Returns new instance containing the negated values. + + + + + Adds two complex numbers. + + + A instance. + A instance. + + Returns new instance containing the sum. + + + + + Adds a complex number and a scalar value. + + + A instance. + A scalar value. + + Returns new instance containing the sum. + + + + + Adds a complex number and a scalar value. + + + A instance. + A scalar value. + + Returns new instance containing the sum. + + + + + Subtracts one complex number from another complex number. + + + A instance. + A instance. + + Returns new instance containing the difference. + + + + + Subtracts a scalar value from a complex number. + + + A instance. + A scalar value. + + Returns new instance containing the difference. + + + + + Subtracts a complex number from a scalar value. + + + A scalar value. + A instance. + + Returns new instance containing the difference. + + + + + Multiplies two complex numbers. + + + A instance. + A instance. + + Returns new instance containing the result of multiplication. + + + + + Multiplies a complex number by a scalar value. + + + A scalar value. + A instance. + + Returns new instance containing the result of multiplication. + + + + + Multiplies a complex number by a scalar value. + + + A instance. + A scalar value. + + Returns new instance containing the result of multiplication. + + + + + Divides one complex number by another complex number. + + + A instance. + A instance. + + A new Complex instance containing the result. + Returns new instance containing the result of division. + + + + + Divides a complex number by a scalar value. + + + A instance. + A scalar value. + + Returns new instance containing the result of division. + + + + + Divides a scalar value by a complex number. + + + A instance. + A scalar value. + + Returns new instance containing the result of division. + + + + + Converts from a single-precision real number to a complex number. + + + Single-precision real number to convert to complex number. + + Returns new instance containing complex number with + real part initialized to the specified value. + + + + + Converts from a double-precision real number to a complex number. + + + Double-precision real number to convert to complex number. + + Returns new instance containing complex number with + real part initialized to the specified value. + + + + + Creates an exact copy of this object. + + + Returns clone of the complex number. + + + + + Creates an exact copy of this object. + + + Returns clone of the complex number. + + + + + Populates a with the data needed to serialize the target object. + + + The to populate with data. + The destination (see ) for this serialization. + + + + + Magnitude value of the complex number. + + + Magnitude of the complex number, which equals to Sqrt( Re * Re + Im * Im ). + + + + + Phase value of the complex number. + + + Phase of the complex number, which equals to Atan( Im / Re ). + + + + + Squared magnitude value of the complex number. + + + + + Minimum Lazy implementation for .NET 3.5 to make + Accord.NET work. This is not a complete implementation. + + + + + + Initializes a new instance of the class. + + + + + + Adds the specified item. + + + + + + Gets the enumerator. + + + + + + Gets the enumerator. + + + + + + Counts this instance. + + + + + + Minimum AggregateException implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exceptions that are the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The + that holds the serialized object data about the exception being thrown. + The + that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Minimum ISet implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The set. + + + + + Performs an implicit conversion from to ISet. + + + The set. + + + The result of the conversion. + + + + + + Performs an implicit conversion from ISet to . + + + The set. + + + The result of the conversion. + + + + + + Adds the specified item. + + + The item. + + + + + Clears this instance. + + + + + + Determines whether this instance contains the specified item. + + + The item. + + + true if the set contains the specified item; otherwise, false. + + + + + + Copies the elements of this set to an array. + + + The array. + Index of the array. + + + + + Removes the specified item. + + + The item. + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Determines whether this set contains the + exact same elements as another set. + + + The other set. + + + + + Gets the number of elements in this set. + + + + + + Gets a value indicating whether this instance is read only. + + + + true if this instance is read only; otherwise, false. + + + + + + Minimum Lazy implementation for .NET 3.5 to make + Accord.NET work. This is not a complete implementation. + + + + + + Initializes a new instance of the class. + + + A function which creates the instance value on first access. + + + + + Initializes a new instance of the class. + + + A function which creates the instance value on first access. + Needs to be true. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the lazily initialized value for this instance. + + + + + + Gets a value that indicates whether a value has been created for this Lazy{T} instance. + + + + + + Minimum Parallel Tasks implementation for .NET 3.5 to make + Accord.NET work. This is nowhere a functional implementation + and exists only to provide compile-time compatibility with + previous framework versions. + + + + + + Parallel for mock-up. The provided + code will NOT be run in parallel. + + + + + + Loop body delegate. + + + + + + Minimum SortedSet implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Initializes a new instance of the class. + + + + + + Determines whether the set contains the specified value. + + + The value. + + + true if this object contains the specified value; otherwise, false. + + + + + + Adds the specified value. + + + The value. + + + + + Gets the enumerator. + + + + + + Minimum SpinLock implementation for .NET 3.5 to make + Accord.NET work. This is not a complete implementation. + + + + + + Acquires the lock. + + + + + + Releases the lock. + + + + + + Gets whether the lock is currently held by any thread. + + + + + + Minimum ThreadLocal implementation for .NET 3.5 to make + Accord.NET work. This is not a complete implementation. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Gets or sets the value. + + + + + + Minimum Tuple implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Initializes a new instance of the class. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + The parameter is null. + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + Gets or sets the item 1. + + + + + + Gets or sets the item 2. + + + + + + Minimum Tuple implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Initializes a new instance of the class. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + The parameter is null. + + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + Gets or sets the item 1. + + + + + Gets or sets the item 2. + + + + + + Gets or sets the item 3. + + + + + + Minimum Tuple implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Creates the specified tuple. + + + + + + Creates the specified tuple. + + + + + + Static class for utility extension methods. + + + + + + Copies a collection by calling the ICloneable.Clone method for each element inside it. + + + + The collection to be cloned. + + A copy of the collection where each element has also been copied. + + + + + Creates and adds multiple + objects with the given names at once. + + + The + to add in. + The names of the to + be created and added. + + + + DataTable table = new DataTable(); + + // Add multiple columns at once: + table.Columns.Add("columnName1", "columnName2"); + + + + + + + Gets a the value of a + associated with a particular enumeration value. + + + The enumeration type. + The enumeration value. + + The string value stored in the value's description attribute. + + + + + Reads a struct from a stream. + + + + + + Gets the underlying buffer position for a StreamReader. + + + A StreamReader whose position will be retrieved. + + The current offset from the beginning of the + file that the StreamReader is currently located into. + + + + + Deserializes the specified stream into an object graph, but locates + types by searching all loaded assemblies and ignoring their versions. + + + The binary formatter. + The stream from which to deserialize the object graph. + + The top (root) of the object graph. + + + + + Algorithm Convergence Exception. + + + The algorithm convergence exception is thrown in cases where a iterative + algorithm could not converge to a finite solution. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Dimension Mismatch Exception. + + + The dimension mismatch exception is thrown in cases where a method expects + a matrix or array object having specific or compatible dimensions, such as the inner matrix + dimensions in matrix multiplication. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + The name of the parameter that caused the current exception. + + + + + Initializes a new instance of the class. + + + The name of the parameter that caused the current exception. + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Non-Positive Definite Matrix Exception. + + + The non-positive definite matrix exception is thrown in cases where a method + expects a matrix to have only positive eigenvalues, such when dealing with covariance matrices. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Non-Symmetric Matrix Exception. + + + The not symmetric matrix exception is thrown in cases where a method + expects a matrix to be symmetric but it is not. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Singular Matrix Exception. + + + The singular matrix exception is thrown in cases where a method which + performs matrix inversions has encountered a non-invertible matrix during the process. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Read-only keyed collection wrapper. + + + + This collection implements a read-only keyed collection. Read-only collections + can not be changed once they are created and are useful for presenting information + to the user without allowing alteration. A keyed collection is a collection whose + elements can be retrieved by key or by index. + + + The types of the keys in the dictionary. + The type of values in the dictionary. + + + + + Initializes a new instance of the + class. + + + + + + When implemented in a derived class, extracts the key from the specified element. + + + The element from which to extract the key. + + The key for the specified element. + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Determines whether the contains an element with the specified key. + + + The key to locate in the . + + + true if the contains an element with the key; otherwise, false. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. + + + true if the object that implements contains an element with the specified key; otherwise, false. + + + + + + Determines whether the contains a specific value. + + + The object to locate in the . + + + true if is found in the ; otherwise, false. + + + + + + Copies the elements of the ICollection to an Array, starting at a particular Array index. + + + The one-dimensional Array that is the destination of the elements copied from ICollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + Not supported. + + + This collection is read-only + + + + + Gets an containing the keys of the . + + + An containing the keys of the object that implements . + + + + + Gets an containing the values in the . + + + An containing the values in the object that implements . + + + + + Gets or sets the element with the specified key. + + + The key. + + This collection is read-only + + + + + Returns true. + + + + + + Read-only dictionary wrapper. + + + + This collection implements a read-only dictionary. Read-only collections + can not be changed once they are created and are useful for presenting + information to the user without allowing alteration. + + + The types of the keys in the dictionary. + The type of values in the dictionary. + + + + + Constructs a new read-only wrapper around a . + + + The dictionary to wrap. + + + + + Does nothing, as this collection is read-only. + + + + + + Determines whether the + contains an element with the specified key. + + + The key to locate in the . + + + true if the contains + an element with the key; otherwise, false. + + + + + + Does nothing, as this collection is read-only. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + + + When this method returns, the value associated with the specified key, if + the key is found; otherwise, the default value for the type of the value + parameter. This parameter is passed uninitialized. + + + true if the + contains an element with the specified key; otherwise, false. + + + + + Does nothing, as this collection is read-only. + + + + + + Does nothing, as this collection is read-only. + + + + + + Determines whether the + contains an element with the specified key. + + + The key to locate in the . + + + true if the + contains an element with the key; otherwise, false. + + + + + + Copies the entire to a + compatible one-dimensional Array, starting at the specified index of + the target array. + + + + The one-dimensional Array that is the destination + of the elements copied from . The + Array must have zero-based indexing. + + + The zero-based index in array at which copying begins. + + + + + Does nothing, as this collection is read-only. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets an containing the keys of + the . + + + The keys. + + + + + Gets an containing the values in + the . + + + + An containing the + values in the . + + + + + + Gets the element with the specified key. Set is not supported. + + + The element with the specified key. + + + + + Gets the number of elements contained in this + . + + + + + + Always returns true. + + + + + + Sorted dictionary based on a red-black tree. + + + The type of keys in the collection. + The type of the values in the collection + + + + + Creates a new + using the default comparer for the key + type. + + + + + + Creates a new . + + + + + + Adds an element with the provided key and value to the . + + + The object to use as the key of the element to add. + The object to use as the value of the element to add. + + + + + Adds an element with the provided key and value to the dictionary. + + + + The key-value pair + containing the desired key and the value to be added. + + + + + + Removes the element with the specified key from the dictionary. + + + The key of the element to remove. + + + true if the element is successfully removed; otherwise, false. + This method also returns false if was not found + in the original dictionary. + + + + + + Removes the first occurrence of a specific object from the dictionary. + + + The object to remove from the dictionary. + + + true if was successfully removed from + the dictionary; otherwise, false. This method also returns false if + is not found in the original dictionary. + + + + + + Determines whether the dictionary contains an element with the specified key. + + + The key to locate in the dictionary. + + + true if the dictionary contains an element with the key; otherwise, false. + + + + + + Determines whether the dictionary contains a specific value. + + + The object to locate in the dictionary. + + + true if is found in the dictionary; otherwise, false. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + + When this method returns, the value associated with the specified key, + if the key is found; otherwise, the default value for the type of the + parameter. This parameter is passed + uninitialized. + + + + true if the dictionary contains an element with the specified key; otherwise, false. + + + + + + Removes all elements from the dictionary. + + + + + + Copies the elements of this dictionary to an array, starting at a particular array index. + + + + The one-dimensional Array that is the destination of the elements + copied from ICollection. The array must have zero-based indexing. + The zero-based index in array at which copying begins. + + + + + Returns an enumerator that iterates through the dictionary. + + + + An + object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the dictionary. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the pair with the minimum key stored in the dictionary. + + + + The with + the minimum key present in the dictionary. + + + + + + Gets the pair with the maximum key stored in the dictionary. + + + + The with + the minimum key present in the dictionary. + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate ancestor of the given . + + + The key whose ancestor must be found. + + + The key-value pair whose key is the immediate ancestor of . + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate ancestor of the given . + + + The key whose ancestor must be found. + + The key-value pair whose key is the immediate ancestor of + , returned as an out parameter. + + + + True if there was an ancestor in the dictionary; false otherwise. + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate successor to the given . + + + The key whose successor must be found. + + + The key-value pair whose key is the immediate successor of . + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate successor to the given . + + + The key whose successor must be found. + + The key-value pair whose key is the immediate sucessor of + , returned as an out parameter. + + + + True if there was a successor in the dictionary; false otherwise. + + + + + + Gets an + containing the keys of the . + + + + + + Gets an + containing the values of the . + + + + + + Gets or sets the element with the specified key. + + + The key. + + The requested key was not found in the present tree. + + + + + Gets the number of elements on this dictionary. + + + + + + Gets a value indicating whether this instance is read only. + + + + Returns false. + + + + + + Possible node colors for s. + + + + + + Red node. + + + + + + Black node. + + + + + + node. + + + The type of the value to be stored. + + + + + Constructs a new empty node. + + + + + + Constructs a node containing the given . + + + + + + Gets or sets a reference to this node's parent node. + + + + + + Gets or sets a reference to this node's right child. + + + + + + Gets or sets a reference to this node's left child. + + + + + + Gets or sets this node's color. + + + + + + Gets or sets the value associated with this node. + + + + + + node. + + + The type of the key that identifies the value. + The type of the values stored in this node. + + + + + Constructs a new empty node. + + + + + + Constructs a new node containing the given + key and value pair. + + + + + + Constructs a new node containing the given + key and value pair. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net40/Accord.dll b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net40/Accord.dll new file mode 100644 index 0000000000..633f9e7f6 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net40/Accord.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net40/Accord.xml b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net40/Accord.xml new file mode 100644 index 0000000000..63116e6b5 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net40/Accord.xml @@ -0,0 +1,4177 @@ + + + + Accord + + + + + A delegate which is used by events notifying abount sent/received message. + + + Event sender. + Event arguments containing details about the transferred message. + + + + + Structure for representing a pair of coordinates of double type. + + + The structure is used to store a pair of floating point + coordinates with double precision. + + Sample usage: + + // assigning coordinates in the constructor + DoublePoint p1 = new DoublePoint( 10, 20 ); + // creating a point and assigning coordinates later + DoublePoint p2; + p2.X = 30; + p2.Y = 40; + // calculating distance between two points + double distance = p1.DistanceTo( p2 ); + + + + + + + X coordinate. + + + + + + Y coordinate. + + + + + + Initializes a new instance of the structure. + + + X axis coordinate. + Y axis coordinate. + + + + + Calculate Euclidean distance between two points. + + + Point to calculate distance to. + + Returns Euclidean distance between this point and + points. + + + + + Calculate squared Euclidean distance between two points. + + + Point to calculate distance to. + + Returns squared Euclidean distance between this point and + points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Equality operator - checks if two points have equal coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are equal. + + + + + Inequality operator - checks if two points have different coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another point to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Explicit conversion to . + + + Double precision point to convert to integer point. + + Returns new integer point which coordinates are explicitly converted + to integers from coordinates of the specified double precision point by + casting double values to integers value. + + + + + Explicit conversion to . + + + Double precision point to convert to single precision point. + + Returns new single precision point which coordinates are explicitly converted + to floats from coordinates of the specified double precision point by + casting double values to float value. + + + + + Rounds the double precision point. + + + Returns new integer point, which coordinates equal to whole numbers + nearest to the corresponding coordinates of the double precision point. + + + + + Get string representation of the class. + + + Returns string, which contains values of the point in readable form. + + + + + Calculate Euclidean norm of the vector comprised of the point's + coordinates - distance from (0, 0) in other words. + + + Returns point's distance from (0, 0) point. + + + + + Represents a double range with minimum and maximum values. + + + + The class represents a double range with inclusive limits - + both minimum and maximum values of the range are included into it. + Mathematical notation of such range is [min, max]. + + Sample usage: + + // create [0.25, 1.5] range + DoubleRange range1 = new DoubleRange( 0.25, 1.5 ); + // create [1.00, 2.25] range + DoubleRange range2 = new DoubleRange( 1.00, 2.25 ); + // check if values is inside of the first range + if ( range1.IsInside( 0.75 ) ) + { + // ... + } + // check if the second range is inside of the first range + if ( range1.IsInside( range2 ) ) + { + // ... + } + // check if two ranges overlap + if ( range1.IsOverlapping( range2 ) ) + { + // ... + } + + + + + + + Initializes a new instance of the class. + + + Minimum value of the range. + Maximum value of the range. + + + + + Check if the specified value is inside of the range. + + + Value to check. + + True if the specified value is inside of the range or + false otherwise. + + + + + Check if the specified range is inside of the range. + + + Range to check. + + True if the specified range is inside of the range or + false otherwise. + + + + + Check if the specified range overlaps with the range. + + + Range to check for overlapping. + + True if the specified range overlaps with the range or + false otherwise. + + + + + Convert the signle precision range to integer range. + + + Specifies if inner integer range must be returned or outer range. + + Returns integer version of the range. + + If is set to , then the + returned integer range will always fit inside of the current single precision range. + If it is set to , then current single precision range will always + fit into the returned integer range. + + + + + Equality operator - checks if two ranges have equal min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are equal. + + + + + Inequality operator - checks if two ranges have different min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another range to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains min/max values of the range in readable form. + + + + + Minimum value of the range. + + + The property represents minimum value (left side limit) or the range - + [min, max]. + + + + + Maximum value of the range. + + + The property represents maximum value (right side limit) or the range - + [min, max]. + + + + + Length of the range (deffirence between maximum and minimum values). + + + + + Event arguments holding a buffer sent or received during some communication process. + + + + + Initializes a new instance of the class. + + + Message being transfered during communication process. + + + + + Initializes a new instance of the class. + + + Buffer containing the message being transferred during communication process. + Starting index of the message within the buffer. + Length of the message within the buffer. + + + + + Get the transfered message. + + + Returns copy of the transfered message. + + + + + Get the transferred message as string. + + + Returns string encoding the transferred message. + + + + + Length of the transfered message. + + + + + Connection failed exception. + + + The exception is thrown in the case if connection to device + has failed. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Connection lost exception. + + + The exception is thrown in the case if connection to device + is lost. When the exception is caught, user may need to reconnect to the device. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Not connected exception. + + + The exception is thrown in the case if connection to device + is not established, but user requests for its services. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Device busy exception. + + + The exception is thrown in the case if access to certain device + is not available due to the fact that it is currently busy handling other request/connection. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Device error exception. + + + The exception is thrown in the case if some error happens with a device, which + may need to be reported to user. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Structure for representing a pair of coordinates of integer type. + + + The structure is used to store a pair of integer coordinates. + + Sample usage: + + // assigning coordinates in the constructor + IntPoint p1 = new IntPoint( 10, 20 ); + // creating a point and assigning coordinates later + IntPoint p2; + p2.X = 30; + p2.Y = 40; + // calculating distance between two points + float distance = p1.DistanceTo( p2 ); + + + + + + + X coordinate. + + + + + + Y coordinate. + + + + + + Initializes a new instance of the structure. + + + X axis coordinate. + Y axis coordinate. + + + + + Calculate Euclidean distance between two points. + + + Point to calculate distance to. + + Returns Euclidean distance between this point and + points. + + + + + Calculate squared Euclidean distance between two points. + + + Point to calculate distance to. + + Returns squared Euclidean distance between this point and + points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Equality operator - checks if two points have equal coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are equal. + + + + + Inequality operator - checks if two points have different coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another point to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Implicit conversion to . + + + Integer point to convert to single precision point. + + Returns new single precision point which coordinates are implicitly converted + to floats from coordinates of the specified integer point. + + + + + Implicit conversion to . + + + Integer point to convert to double precision point. + + Returns new double precision point which coordinates are implicitly converted + to doubles from coordinates of the specified integer point. + + + + + Get string representation of the class. + + + Returns string, which contains values of the point in readable form. + + + + + Calculate Euclidean norm of the vector comprised of the point's + coordinates - distance from (0, 0) in other words. + + + Returns point's distance from (0, 0) point. + + + + + Represents an integer range with minimum and maximum values. + + + + The class represents an integer range with inclusive limits - + both minimum and maximum values of the range are included into it. + Mathematical notation of such range is [min, max]. + + Sample usage: + + // create [1, 10] range + IntRange range1 = new IntRange( 1, 10 ); + // create [5, 15] range + IntRange range2 = new IntRange( 5, 15 ); + // check if values is inside of the first range + if ( range1.IsInside( 7 ) ) + { + // ... + } + // check if the second range is inside of the first range + if ( range1.IsInside( range2 ) ) + { + // ... + } + // check if two ranges overlap + if ( range1.IsOverlapping( range2 ) ) + { + // ... + } + + + + + + + Initializes a new instance of the structure. + + + Minimum value of the range. + Maximum value of the range. + + + + + Check if the specified value is inside of the range. + + + Value to check. + + True if the specified value is inside of the range or + false otherwise. + + + + + Check if the specified range is inside of the range. + + + Range to check. + + True if the specified range is inside of the range or + false otherwise. + + + + + Check if the specified range overlaps with the range. + + + Range to check for overlapping. + + True if the specified range overlaps with the range or + false otherwise. + + + + + Implicit conversion to . + + + Integer range to convert to single precision range. + + Returns new single precision range which min/max values are implicitly converted + to floats from min/max values of the specified integer range. + + + + + Equality operator - checks if two ranges have equal min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are equal. + + + + + Inequality operator - checks if two ranges have different min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another range to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains min/max values of the range in readable form. + + + + + Minimum value of the range. + + + The property represents minimum value (left side limit) or the range - + [min, max]. + + + + + Maximum value of the range. + + + The property represents maximum value (right side limit) or the range - + [min, max]. + + + + + Length of the range (deffirence between maximum and minimum values). + + + + + The class provides support for parallel computations, paralleling loop's iterations. + + + The class allows to parallel loop's iteration computing them in separate threads, + what allows their simultaneous execution on multiple CPUs/cores. + + + + + + Executes a for-loop in which iterations may run in parallel. + + + Loop's start index. + Loop's stop index. + Loop's body. + + The method is used to parallel for-loop running its iterations in + different threads. The start and stop parameters define loop's + starting and ending loop's indexes. The number of iterations is equal to stop - start. + + + Sample usage: + + Parallel.For( 0, 20, delegate( int i ) + // which is equivalent to + // for ( int i = 0; i < 20; i++ ) + { + System.Diagnostics.Debug.WriteLine( "Iteration: " + i ); + // ... + } ); + + + + + + + Number of threads used for parallel computations. + + + The property sets how many worker threads are created for paralleling + loops' computations. + + By default the property is set to number of CPU's in the system + (see ). + + + + + + Delegate defining for-loop's body. + + + Loop's index. + + + + + Structure for representing a pair of coordinates of float type. + + + The structure is used to store a pair of floating point + coordinates with single precision. + + Sample usage: + + // assigning coordinates in the constructor + Point p1 = new Point( 10, 20 ); + // creating a point and assigning coordinates later + Point p2; + p2.X = 30; + p2.Y = 40; + // calculating distance between two points + float distance = p1.DistanceTo( p2 ); + + + + + + + X coordinate. + + + + + + Y coordinate. + + + + + + Initializes a new instance of the structure. + + + X axis coordinate. + Y axis coordinate. + + + + + Calculate Euclidean distance between two points. + + + Point to calculate distance to. + + Returns Euclidean distance between this point and + points. + + + + + Calculate squared Euclidean distance between two points. + + + Point to calculate distance to. + + Returns squared Euclidean distance between this point and + points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Equality operator - checks if two points have equal coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are equal. + + + + + Inequality operator - checks if two points have different coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another point to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Explicit conversion to . + + + Single precision point to convert to integer point. + + Returns new integer point which coordinates are explicitly converted + to integers from coordinates of the specified single precision point by + casting float values to integers value. + + + + + Implicit conversion to . + + + Single precision point to convert to double precision point. + + Returns new double precision point which coordinates are implicitly converted + to doubles from coordinates of the specified single precision point. + + + + + Rounds the single precision point. + + + Returns new integer point, which coordinates equal to whole numbers + nearest to the corresponding coordinates of the single precision point. + + + + + Get string representation of the class. + + + Returns string, which contains values of the point in readable form. + + + + + Calculate Euclidean norm of the vector comprised of the point's + coordinates - distance from (0, 0) in other words. + + + Returns point's distance from (0, 0) point. + + + + + Evaluator of expressions written in reverse polish notation. + + + The class evaluates expressions writen in reverse postfix polish notation. + + The list of supported functuins is: + + Arithmetic functions: +, -, *, /; + sin - sine; + cos - cosine; + ln - natural logarithm; + exp - exponent; + sqrt - square root. + + + Arguments for these functions could be as usual constants, written as numbers, as variables, + writen as $<var_number> ($2, for example). The variable number is zero based index + of variables array. + + Sample usage: + + // expression written in polish notation + string expression = "2 $0 / 3 $1 * +"; + // variables for the expression + double[] vars = new double[] { 3, 4 }; + // expression evaluation + double result = PolishExpression.Evaluate( expression, vars ); + + + + + + + Evaluates specified expression. + + + Expression written in postfix polish notation. + Variables for the expression. + + Evaluated value of the expression. + + Unsupported function is used in the expression. + Incorrect postfix polish expression. + + + + + Represents a range with minimum and maximum values, which are single precision numbers (floats). + + + + The class represents a single precision range with inclusive limits - + both minimum and maximum values of the range are included into it. + Mathematical notation of such range is [min, max]. + + Sample usage: + + // create [0.25, 1.5] range + Range range1 = new Range( 0.25f, 1.5f ); + // create [1.00, 2.25] range + Range range2 = new Range( 1.00f, 2.25f ); + // check if values is inside of the first range + if ( range1.IsInside( 0.75f ) ) + { + // ... + } + // check if the second range is inside of the first range + if ( range1.IsInside( range2 ) ) + { + // ... + } + // check if two ranges overlap + if ( range1.IsOverlapping( range2 ) ) + { + // ... + } + + + + + + + Initializes a new instance of the structure. + + + Minimum value of the range. + Maximum value of the range. + + + + + Check if the specified value is inside of the range. + + + Value to check. + + True if the specified value is inside of the range or + false otherwise. + + + + + Check if the specified range is inside of the range. + + + Range to check. + + True if the specified range is inside of the range or + false otherwise. + + + + + Check if the specified range overlaps with the range. + + + Range to check for overlapping. + + True if the specified range overlaps with the range or + false otherwise. + + + + + Convert the signle precision range to integer range. + + + Specifies if inner integer range must be returned or outer range. + + Returns integer version of the range. + + If is set to , then the + returned integer range will always fit inside of the current single precision range. + If it is set to , then current single precision range will always + fit into the returned integer range. + + + + + Equality operator - checks if two ranges have equal min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are equal. + + + + + Inequality operator - checks if two ranges have different min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another range to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains min/max values of the range in readable form. + + + + + Minimum value of the range. + + + The property represents minimum value (left side limit) or the range - + [min, max]. + + + + + Maximum value of the range. + + + The property represents maximum value (right side limit) or the range - + [min, max]. + + + + + Length of the range (deffirence between maximum and minimum values). + + + + + Set of systems tools. + + + The class is a container of different system tools, which are used + across the framework. Some of these tools are platform specific, so their + implementation is different on different platform, like .NET and Mono. + + + + + + Copy block of unmanaged memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's value of - pointer to destination. + + This function is required because of the fact that .NET does + not provide any way to copy unmanaged blocks, but provides only methods to + copy from unmanaged memory to managed memory and vise versa. + + + + + Copy block of unmanaged memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's value of - pointer to destination. + + This function is required because of the fact that .NET does + not provide any way to copy unmanaged blocks, but provides only methods to + copy from unmanaged memory to managed memory and vise versa. + + + + + Fill memory region with specified value. + + + Destination pointer. + Filler byte's value. + Memory block's length to fill. + + Return's value of - pointer to destination. + + + + + Fill memory region with specified value. + + + Destination pointer. + Filler byte's value. + Memory block's length to fill. + + Return's value of - pointer to destination. + + + + + Thread safe version of the class. + + + The class inherits the and overrides + its random numbers generation methods providing thread safety by guarding call + to the base class with a lock. See documentation to for + additional information about the base class. + + + + + Initializes a new instance of the class. + + + See for more information. + + + + + Initializes a new instance of the class. + + + A number used to calculate a starting value for the pseudo-random number sequence. + If a negative number is specified, the absolute value of the number is used. + + + See for more information. + + + + + Returns a nonnegative random number. + + + Returns a 32-bit signed integer greater than or equal to zero and less than + . + + See for more information. + + + + + Returns a nonnegative random number less than the specified maximum. + + + The exclusive upper bound of the random number to be generated. + must be greater than or equal to zero. + + Returns a 32-bit signed integer greater than or equal to zero, and less than ; + that is, the range of return values ordinarily includes zero but not . + + See for more information. + + + + + Returns a random number within a specified range. + + + The inclusive lower bound of the random number returned. + The exclusive upper bound of the random number returned. + must be greater than or equal to . + + Returns a 32-bit signed integer greater than or equal to and less + than ; that is, the range of return values includes + but not . + + See for more information. + + + + + Fills the elements of a specified array of bytes with random numbers. + + + An array of bytes to contain random numbers. + + See for more information. + + + + + Returns a random number between 0.0 and 1.0. + + + Returns a double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + See for more information. + + + + + Specifies that an argument, in a method or function, + must be greater than zero. + + + + + + Specifies that an argument, in a method or function, + must be real (double). + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets the minimum allowed field value. + + + + + + Gets the maximum allowed field value. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be lesser than zero. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be lesser than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be greater than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be real between 0 and 1. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer bigger than zero. + + + + + + Specifies that an argument, in a method or function, + must be an integer. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets the minimum allowed field value. + + + + + + Gets the maximum allowed field value. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer less than zero. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer smaller than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer bigger than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Runtime cast. + + + The target type. + The source type. + + + + + Initializes a new instance of the struct. + + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Gets the value being casted. + + + + + + Runtime cast. + + + The target type. + + + + + Initializes a new instance of the struct. + + The value. + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Gets the value being casted. + + + + + + Red-black tree specialized for key-based value retrieval. + + + + See . + + + The type of the key. + The type of the value. + + + + + Red-black tree. + + + + + A red–black tree is a data structure which is a type of self-balancing binary + search tree. Balance is preserved by painting each node of the tree with one of + two colors (typically called 'red' and 'black') in a way that satisfies certain + properties, which collectively constrain how unbalanced the tree can become in + the worst case. When the tree is modified, the new tree is subsequently rearranged + and repainted to restore the coloring properties. The properties are designed in + such a way that this rearranging and recoloring can be performed efficiently. + + + The balancing of the tree is not perfect but it is good enough to allow it to + guarantee searching in O(log n) time, where n is the total number of elements + in the tree. The insertion and deletion operations, along with the tree rearrangement + and recoloring, are also performed in O(log n) time. + + + Tracking the color of each node requires only 1 bit of information per node because + there are only two colors. The tree does not contain any other data specific to its + being a red–black tree so its memory footprint is almost identical to a classic + (uncolored) binary search tree. + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, + http://ab-initio.mit.edu/nlopt + + Wikipedia, The Free Encyclopedia. Red-black tree. Available on: + http://en.wikipedia.org/wiki/Red%E2%80%93black_tree + + + + The type of the value to be stored. + + + + + Constructs a new using the + default for type . + + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + + + + Constructs a new using the + default for type . + + + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Removes all nodes from the tree. + + + + + + Adds a new item to the tree. If the element already + belongs to this tree, no new element will be added. + + + The item to be added. + + The node containing the added item. + + + + + Adds a new item to the tree. If the element already + belongs to this tree, no new element will be added. + + + The node to be added to the tree. + + + + + Attempts to remove an element from the tree. + + + The item to be removed. + + + True if the element was in the tree and was removed; false otherwise. + + + + + + Removes a node from the tree. + + + The node to be removed. + + + True if the element was in the tree and was removed; false otherwise. + + + + + + Removes a node from the tree. + + + The key of the node to be removed. + + + A reference to the removed node, if the item was in the tree; otherwise, null. + + + + + + Removes a node from the tree. + + + The node to be removed. + + + A reference to the removed node. + + + + + + Copies the nodes of this tree to an array, starting at a + particular array index. + + + + The one-dimensional array that is the destination of the elements + copied from this tree. The array must have zero-based indexing. + + + + The zero-based index in at which copying begins. + + + + + + Copies the elements of this tree to an array, starting at a + particular array index. + + + + The one-dimensional array that is the destination of the elements + copied from this tree. The array must have zero-based indexing. + + + + The zero-based index in at which copying begins. + + + + + + Returns an enumerator that iterates through this tree in-order. + + + + An object that can + be used to traverse through this tree using in-order traversal. + + + + + + Returns an enumerator that iterates through this tree in-order. + + + + An object that can + be used to traverse through this tree using in-order traversal. + + + + + + Determines whether this tree contains the specified item. + + + The item to be looked for. + + + true if the element was found inside the tree; otherwise, false. + + + + + + Determines whether this tree contains the specified item. + + + The item to be looked for. + + + true if the element was found inside the tree; otherwise, false. + + + + + + Attempts to find a node that contains the specified key. + + + The key whose node is to be found. + + + A containing the desired + if it is present in the dictionary; otherwise, returns null. + + + + + + Finds the greatest point in the subtree rooted at + that is less than or equal to (<=) k. In other words, finds either + k or a number immediately below it. + + + The subtree where search will take place. + A reference value to be found. + + + The node containing the given value or + its immediately smaller neighboring number present in the tree. + + + + + + Finds the greatest point in the + tree that is less than or equal to (<=) k. + In other words, finds either k or a number immediately + below it. + + + A reference for the value to be found. + + + The node containing the given value or + its immediately smaller neighboring number present in the tree. + + + + + + Finds the greatest point in the subtree rooted at + that is less than (<) k. In other words, finds a number stored in + the tree that is immediately below k. + + + The subtree where search will take place. + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the greatest point in the + tree that is less than (<) k. In other words, finds + a number stored in the tree that is immediately below k. + + + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the smallest point in the subtree rooted at + that is greater than (>) k. In other words, finds a number stored in + the tree that is immediately above k. + + + The subtree where search will take place. + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the smallest point in the in the + tree that is greater than (>) k. In other words, finds a + number stored in the tree that is immediately above k. + + + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the minimum element stored in the tree. + + + + The that + holds the minimum element in the tree. + + + + + + Finds the maximum element stored in the tree. + + + + The that + holds the maximum element in the tree. + + + + + + Gets the node that contains the next in-order value coming + after the value contained in the given . + + + The current node. + + + The node that contains a value that is immediately greater than + the current value contained in the given . + + + + + + Gets the node that contains the previous in-order value coming + before the value contained in the given . + + + The current node. + + + The node that contains a value that is immediately less than + the current value contained in the given . + + + + + + Forces a re-balance of the tree by removing and inserting the same node. + + + The node to be re-balanced. + + The same node, or a new one if it had to be recreated. + + + + + Gets the number of nodes contained in this red-black tree. + + + + + + Gets the + root node of this red-black tree. + + + + + + Gets the for this red black tree. + + + + + + Gets a value indicating whether this instance is read only. + In a , this returns false. + + + + Returns false. + + + + + + Constructs a new using the default + for the key type . + + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + + + + Constructs a new using the default + for the key type . + + + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Vanilla key-based comparer for . + + + The key type in the key-value pair. + The value type in the key-value pair. + + + + + Initializes a new instance of the class. + + + The comparer to be used to compare keys. + + + + + Initializes a new instance of the class. + + + + + + Compares two objects and returns a value indicating whether + one is less than, equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Compares two objects and returns a value indicating whether + one is less than, equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Returns a default sort order comparer for the + key-value pair specified by the generic argument. + + + + + + Two-way dictionary for efficient lookups by both key and value. This + can be used to represent a one-to-one relation among two object types. + + + The type of right keys in the dictionary. + The type of left keys in the dictionary. + + + + + Minimum IReadOnlyDictionary implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Minimum IReadOnlyCollection implementation for .NET 3.5 to + make Accord.NET work. This is not a complete implementation. + + + + + + Determines whether the dictionary contains the specified key. + + + + + + Tries to get a value. + + + + + + Gets the keys. + + + + + + Gets the values. + + + + + + Gets the value associated with the specified key. + + + + + + Initializes a new instance of the class + that is empty, has the default initial capacity, and uses the default equality comparer + for the key type. + + + + + + Initializes a new instance of the class + that is empty, has the specified initial capacity, and uses the default equality comparer + for the key type. + + + The initial number of elements that this dictionary can contain. + + + + + Initializes a new instance of the class + that contains elements copied from the specified dictionary and uses the default equality + comparer for the key type. + + + The dictionary whose elements are copied to the new . + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an object for the object. + + + + An object for the object. + + + + + + Adds an element with the provided key and value to the . + + + The object to use as the key of the element to add. + The object to use as the value of the element to add. + + + + + Adds an element with the provided key and value to the object. + + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + + Adds an item to the . + + + The object to add to the . + + + + + Determines whether the contains an element with the specified key. + + + The key to locate in the . + + + true if the contains an element with the key; otherwise, false. + + + + + + Determines whether the contains a specific value. + + + The object to locate in the . + + + true if is found in the ; otherwise, false. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. + + + true if the object that implements contains an element with the specified key; otherwise, false. + + + + + + Removes the element with the specified key from the . + + + The key of the element to remove. + + + true if the element is successfully removed; otherwise, false. This method also returns false if was not found in the original . + + + + + + Removes the element with the specified key from the object. + + + The key of the element to remove. + + + + + Removes the first occurrence of a specific object from the . + + + The object to remove from the . + + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + + Determines whether the object contains an element with the specified key. + + + The key to locate in the object. + + + true if the contains an element with the key; otherwise, false. + + + + + + Removes all items from the . + + + + + + Gets the reverse dictionary that maps values back to keys. + + + + + + Gets the number of elements contained in this . + + + + + + Gets an object that can be used to synchronize access to the . + + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + + + + Gets a value indicating whether the object has a fixed size. + + + + + + Gets a value indicating whether the is read-only. + + + + + + Gets or sets the element with the specified key. + + + The left key. + + + + + Gets or sets the element with the specified key. + + + The left key. + + + + + Gets an containing the keys of the . + + + + + + Gets an containing the keys of the . + + + + + + Gets an containing the keys of the . + + + + + + Gets an containing the values in the . + + + + + + Gets an containing the values in the . + + + + + + Gets an containing the values in the . + + + + + + Static class for utility extension methods. + + + + + + Copies a collection by calling the ICloneable.Clone method for each element inside it. + + + + The collection to be cloned. + + A copy of the collection where each element has also been copied. + + + + + Creates and adds multiple + objects with the given names at once. + + + The + to add in. + The names of the to + be created and added. + + + + DataTable table = new DataTable(); + + // Add multiple columns at once: + table.Columns.Add("columnName1", "columnName2"); + + + + + + + Gets a the value of a + associated with a particular enumeration value. + + + The enumeration type. + The enumeration value. + + The string value stored in the value's description attribute. + + + + + Reads a struct from a stream. + + + + + + Gets the underlying buffer position for a StreamReader. + + + A StreamReader whose position will be retrieved. + + The current offset from the beginning of the + file that the StreamReader is currently located into. + + + + + Deserializes the specified stream into an object graph, but locates + types by searching all loaded assemblies and ignoring their versions. + + + The binary formatter. + The stream from which to deserialize the object graph. + + The top (root) of the object graph. + + + + + Algorithm Convergence Exception. + + + The algorithm convergence exception is thrown in cases where a iterative + algorithm could not converge to a finite solution. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Dimension Mismatch Exception. + + + The dimension mismatch exception is thrown in cases where a method expects + a matrix or array object having specific or compatible dimensions, such as the inner matrix + dimensions in matrix multiplication. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + The name of the parameter that caused the current exception. + + + + + Initializes a new instance of the class. + + + The name of the parameter that caused the current exception. + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Non-Positive Definite Matrix Exception. + + + The non-positive definite matrix exception is thrown in cases where a method + expects a matrix to have only positive eigenvalues, such when dealing with covariance matrices. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Non-Symmetric Matrix Exception. + + + The not symmetric matrix exception is thrown in cases where a method + expects a matrix to be symmetric but it is not. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Singular Matrix Exception. + + + The singular matrix exception is thrown in cases where a method which + performs matrix inversions has encountered a non-invertible matrix during the process. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Read-only keyed collection wrapper. + + + + This collection implements a read-only keyed collection. Read-only collections + can not be changed once they are created and are useful for presenting information + to the user without allowing alteration. A keyed collection is a collection whose + elements can be retrieved by key or by index. + + + The types of the keys in the dictionary. + The type of values in the dictionary. + + + + + Initializes a new instance of the + class. + + + + + + When implemented in a derived class, extracts the key from the specified element. + + + The element from which to extract the key. + + The key for the specified element. + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Determines whether the contains an element with the specified key. + + + The key to locate in the . + + + true if the contains an element with the key; otherwise, false. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. + + + true if the object that implements contains an element with the specified key; otherwise, false. + + + + + + Determines whether the contains a specific value. + + + The object to locate in the . + + + true if is found in the ; otherwise, false. + + + + + + Copies the elements of the ICollection to an Array, starting at a particular Array index. + + + The one-dimensional Array that is the destination of the elements copied from ICollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + Not supported. + + + This collection is read-only + + + + + Gets an containing the keys of the . + + + An containing the keys of the object that implements . + + + + + Gets an containing the values in the . + + + An containing the values in the object that implements . + + + + + Gets or sets the element with the specified key. + + + The key. + + This collection is read-only + + + + + Returns true. + + + + + + Read-only dictionary wrapper. + + + + This collection implements a read-only dictionary. Read-only collections + can not be changed once they are created and are useful for presenting + information to the user without allowing alteration. + + + The types of the keys in the dictionary. + The type of values in the dictionary. + + + + + Constructs a new read-only wrapper around a . + + + The dictionary to wrap. + + + + + Does nothing, as this collection is read-only. + + + + + + Determines whether the + contains an element with the specified key. + + + The key to locate in the . + + + true if the contains + an element with the key; otherwise, false. + + + + + + Does nothing, as this collection is read-only. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + + + When this method returns, the value associated with the specified key, if + the key is found; otherwise, the default value for the type of the value + parameter. This parameter is passed uninitialized. + + + true if the + contains an element with the specified key; otherwise, false. + + + + + Does nothing, as this collection is read-only. + + + + + + Does nothing, as this collection is read-only. + + + + + + Determines whether the + contains an element with the specified key. + + + The key to locate in the . + + + true if the + contains an element with the key; otherwise, false. + + + + + + Copies the entire to a + compatible one-dimensional Array, starting at the specified index of + the target array. + + + + The one-dimensional Array that is the destination + of the elements copied from . The + Array must have zero-based indexing. + + + The zero-based index in array at which copying begins. + + + + + Does nothing, as this collection is read-only. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets an containing the keys of + the . + + + The keys. + + + + + Gets an containing the values in + the . + + + + An containing the + values in the . + + + + + + Gets the element with the specified key. Set is not supported. + + + The element with the specified key. + + + + + Gets the number of elements contained in this + . + + + + + + Always returns true. + + + + + + Sorted dictionary based on a red-black tree. + + + The type of keys in the collection. + The type of the values in the collection + + + + + Creates a new + using the default comparer for the key + type. + + + + + + Creates a new . + + + + + + Adds an element with the provided key and value to the . + + + The object to use as the key of the element to add. + The object to use as the value of the element to add. + + + + + Adds an element with the provided key and value to the dictionary. + + + + The key-value pair + containing the desired key and the value to be added. + + + + + + Removes the element with the specified key from the dictionary. + + + The key of the element to remove. + + + true if the element is successfully removed; otherwise, false. + This method also returns false if was not found + in the original dictionary. + + + + + + Removes the first occurrence of a specific object from the dictionary. + + + The object to remove from the dictionary. + + + true if was successfully removed from + the dictionary; otherwise, false. This method also returns false if + is not found in the original dictionary. + + + + + + Determines whether the dictionary contains an element with the specified key. + + + The key to locate in the dictionary. + + + true if the dictionary contains an element with the key; otherwise, false. + + + + + + Determines whether the dictionary contains a specific value. + + + The object to locate in the dictionary. + + + true if is found in the dictionary; otherwise, false. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + + When this method returns, the value associated with the specified key, + if the key is found; otherwise, the default value for the type of the + parameter. This parameter is passed + uninitialized. + + + + true if the dictionary contains an element with the specified key; otherwise, false. + + + + + + Removes all elements from the dictionary. + + + + + + Copies the elements of this dictionary to an array, starting at a particular array index. + + + + The one-dimensional Array that is the destination of the elements + copied from ICollection. The array must have zero-based indexing. + The zero-based index in array at which copying begins. + + + + + Returns an enumerator that iterates through the dictionary. + + + + An + object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the dictionary. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the pair with the minimum key stored in the dictionary. + + + + The with + the minimum key present in the dictionary. + + + + + + Gets the pair with the maximum key stored in the dictionary. + + + + The with + the minimum key present in the dictionary. + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate ancestor of the given . + + + The key whose ancestor must be found. + + + The key-value pair whose key is the immediate ancestor of . + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate ancestor of the given . + + + The key whose ancestor must be found. + + The key-value pair whose key is the immediate ancestor of + , returned as an out parameter. + + + + True if there was an ancestor in the dictionary; false otherwise. + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate successor to the given . + + + The key whose successor must be found. + + + The key-value pair whose key is the immediate successor of . + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate successor to the given . + + + The key whose successor must be found. + + The key-value pair whose key is the immediate sucessor of + , returned as an out parameter. + + + + True if there was a successor in the dictionary; false otherwise. + + + + + + Gets an + containing the keys of the . + + + + + + Gets an + containing the values of the . + + + + + + Gets or sets the element with the specified key. + + + The key. + + The requested key was not found in the present tree. + + + + + Gets the number of elements on this dictionary. + + + + + + Gets a value indicating whether this instance is read only. + + + + Returns false. + + + + + + Possible node colors for s. + + + + + + Red node. + + + + + + Black node. + + + + + + node. + + + The type of the value to be stored. + + + + + Constructs a new empty node. + + + + + + Constructs a node containing the given . + + + + + + Gets or sets a reference to this node's parent node. + + + + + + Gets or sets a reference to this node's right child. + + + + + + Gets or sets a reference to this node's left child. + + + + + + Gets or sets this node's color. + + + + + + Gets or sets the value associated with this node. + + + + + + node. + + + The type of the key that identifies the value. + The type of the values stored in this node. + + + + + Constructs a new empty node. + + + + + + Constructs a new node containing the given + key and value pair. + + + + + + Constructs a new node containing the given + key and value pair. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net45/Accord.dll b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net45/Accord.dll new file mode 100644 index 0000000000..bb436b6e7 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net45/Accord.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net45/Accord.xml b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net45/Accord.xml new file mode 100644 index 0000000000..eee83f3dc --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.3.0.2/lib/net45/Accord.xml @@ -0,0 +1,4133 @@ + + + + Accord + + + + + A delegate which is used by events notifying abount sent/received message. + + + Event sender. + Event arguments containing details about the transferred message. + + + + + Structure for representing a pair of coordinates of double type. + + + The structure is used to store a pair of floating point + coordinates with double precision. + + Sample usage: + + // assigning coordinates in the constructor + DoublePoint p1 = new DoublePoint( 10, 20 ); + // creating a point and assigning coordinates later + DoublePoint p2; + p2.X = 30; + p2.Y = 40; + // calculating distance between two points + double distance = p1.DistanceTo( p2 ); + + + + + + + X coordinate. + + + + + + Y coordinate. + + + + + + Initializes a new instance of the structure. + + + X axis coordinate. + Y axis coordinate. + + + + + Calculate Euclidean distance between two points. + + + Point to calculate distance to. + + Returns Euclidean distance between this point and + points. + + + + + Calculate squared Euclidean distance between two points. + + + Point to calculate distance to. + + Returns squared Euclidean distance between this point and + points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Equality operator - checks if two points have equal coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are equal. + + + + + Inequality operator - checks if two points have different coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another point to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Explicit conversion to . + + + Double precision point to convert to integer point. + + Returns new integer point which coordinates are explicitly converted + to integers from coordinates of the specified double precision point by + casting double values to integers value. + + + + + Explicit conversion to . + + + Double precision point to convert to single precision point. + + Returns new single precision point which coordinates are explicitly converted + to floats from coordinates of the specified double precision point by + casting double values to float value. + + + + + Rounds the double precision point. + + + Returns new integer point, which coordinates equal to whole numbers + nearest to the corresponding coordinates of the double precision point. + + + + + Get string representation of the class. + + + Returns string, which contains values of the point in readable form. + + + + + Calculate Euclidean norm of the vector comprised of the point's + coordinates - distance from (0, 0) in other words. + + + Returns point's distance from (0, 0) point. + + + + + Represents a double range with minimum and maximum values. + + + + The class represents a double range with inclusive limits - + both minimum and maximum values of the range are included into it. + Mathematical notation of such range is [min, max]. + + Sample usage: + + // create [0.25, 1.5] range + DoubleRange range1 = new DoubleRange( 0.25, 1.5 ); + // create [1.00, 2.25] range + DoubleRange range2 = new DoubleRange( 1.00, 2.25 ); + // check if values is inside of the first range + if ( range1.IsInside( 0.75 ) ) + { + // ... + } + // check if the second range is inside of the first range + if ( range1.IsInside( range2 ) ) + { + // ... + } + // check if two ranges overlap + if ( range1.IsOverlapping( range2 ) ) + { + // ... + } + + + + + + + Initializes a new instance of the class. + + + Minimum value of the range. + Maximum value of the range. + + + + + Check if the specified value is inside of the range. + + + Value to check. + + True if the specified value is inside of the range or + false otherwise. + + + + + Check if the specified range is inside of the range. + + + Range to check. + + True if the specified range is inside of the range or + false otherwise. + + + + + Check if the specified range overlaps with the range. + + + Range to check for overlapping. + + True if the specified range overlaps with the range or + false otherwise. + + + + + Convert the signle precision range to integer range. + + + Specifies if inner integer range must be returned or outer range. + + Returns integer version of the range. + + If is set to , then the + returned integer range will always fit inside of the current single precision range. + If it is set to , then current single precision range will always + fit into the returned integer range. + + + + + Equality operator - checks if two ranges have equal min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are equal. + + + + + Inequality operator - checks if two ranges have different min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another range to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains min/max values of the range in readable form. + + + + + Minimum value of the range. + + + The property represents minimum value (left side limit) or the range - + [min, max]. + + + + + Maximum value of the range. + + + The property represents maximum value (right side limit) or the range - + [min, max]. + + + + + Length of the range (deffirence between maximum and minimum values). + + + + + Event arguments holding a buffer sent or received during some communication process. + + + + + Initializes a new instance of the class. + + + Message being transfered during communication process. + + + + + Initializes a new instance of the class. + + + Buffer containing the message being transferred during communication process. + Starting index of the message within the buffer. + Length of the message within the buffer. + + + + + Get the transfered message. + + + Returns copy of the transfered message. + + + + + Get the transferred message as string. + + + Returns string encoding the transferred message. + + + + + Length of the transfered message. + + + + + Connection failed exception. + + + The exception is thrown in the case if connection to device + has failed. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Connection lost exception. + + + The exception is thrown in the case if connection to device + is lost. When the exception is caught, user may need to reconnect to the device. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Not connected exception. + + + The exception is thrown in the case if connection to device + is not established, but user requests for its services. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Device busy exception. + + + The exception is thrown in the case if access to certain device + is not available due to the fact that it is currently busy handling other request/connection. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Device error exception. + + + The exception is thrown in the case if some error happens with a device, which + may need to be reported to user. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Structure for representing a pair of coordinates of integer type. + + + The structure is used to store a pair of integer coordinates. + + Sample usage: + + // assigning coordinates in the constructor + IntPoint p1 = new IntPoint( 10, 20 ); + // creating a point and assigning coordinates later + IntPoint p2; + p2.X = 30; + p2.Y = 40; + // calculating distance between two points + float distance = p1.DistanceTo( p2 ); + + + + + + + X coordinate. + + + + + + Y coordinate. + + + + + + Initializes a new instance of the structure. + + + X axis coordinate. + Y axis coordinate. + + + + + Calculate Euclidean distance between two points. + + + Point to calculate distance to. + + Returns Euclidean distance between this point and + points. + + + + + Calculate squared Euclidean distance between two points. + + + Point to calculate distance to. + + Returns squared Euclidean distance between this point and + points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Equality operator - checks if two points have equal coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are equal. + + + + + Inequality operator - checks if two points have different coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another point to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Implicit conversion to . + + + Integer point to convert to single precision point. + + Returns new single precision point which coordinates are implicitly converted + to floats from coordinates of the specified integer point. + + + + + Implicit conversion to . + + + Integer point to convert to double precision point. + + Returns new double precision point which coordinates are implicitly converted + to doubles from coordinates of the specified integer point. + + + + + Get string representation of the class. + + + Returns string, which contains values of the point in readable form. + + + + + Calculate Euclidean norm of the vector comprised of the point's + coordinates - distance from (0, 0) in other words. + + + Returns point's distance from (0, 0) point. + + + + + Represents an integer range with minimum and maximum values. + + + + The class represents an integer range with inclusive limits - + both minimum and maximum values of the range are included into it. + Mathematical notation of such range is [min, max]. + + Sample usage: + + // create [1, 10] range + IntRange range1 = new IntRange( 1, 10 ); + // create [5, 15] range + IntRange range2 = new IntRange( 5, 15 ); + // check if values is inside of the first range + if ( range1.IsInside( 7 ) ) + { + // ... + } + // check if the second range is inside of the first range + if ( range1.IsInside( range2 ) ) + { + // ... + } + // check if two ranges overlap + if ( range1.IsOverlapping( range2 ) ) + { + // ... + } + + + + + + + Initializes a new instance of the structure. + + + Minimum value of the range. + Maximum value of the range. + + + + + Check if the specified value is inside of the range. + + + Value to check. + + True if the specified value is inside of the range or + false otherwise. + + + + + Check if the specified range is inside of the range. + + + Range to check. + + True if the specified range is inside of the range or + false otherwise. + + + + + Check if the specified range overlaps with the range. + + + Range to check for overlapping. + + True if the specified range overlaps with the range or + false otherwise. + + + + + Implicit conversion to . + + + Integer range to convert to single precision range. + + Returns new single precision range which min/max values are implicitly converted + to floats from min/max values of the specified integer range. + + + + + Equality operator - checks if two ranges have equal min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are equal. + + + + + Inequality operator - checks if two ranges have different min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another range to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains min/max values of the range in readable form. + + + + + Minimum value of the range. + + + The property represents minimum value (left side limit) or the range - + [min, max]. + + + + + Maximum value of the range. + + + The property represents maximum value (right side limit) or the range - + [min, max]. + + + + + Length of the range (deffirence between maximum and minimum values). + + + + + The class provides support for parallel computations, paralleling loop's iterations. + + + The class allows to parallel loop's iteration computing them in separate threads, + what allows their simultaneous execution on multiple CPUs/cores. + + + + + + Executes a for-loop in which iterations may run in parallel. + + + Loop's start index. + Loop's stop index. + Loop's body. + + The method is used to parallel for-loop running its iterations in + different threads. The start and stop parameters define loop's + starting and ending loop's indexes. The number of iterations is equal to stop - start. + + + Sample usage: + + Parallel.For( 0, 20, delegate( int i ) + // which is equivalent to + // for ( int i = 0; i < 20; i++ ) + { + System.Diagnostics.Debug.WriteLine( "Iteration: " + i ); + // ... + } ); + + + + + + + Number of threads used for parallel computations. + + + The property sets how many worker threads are created for paralleling + loops' computations. + + By default the property is set to number of CPU's in the system + (see ). + + + + + + Delegate defining for-loop's body. + + + Loop's index. + + + + + Structure for representing a pair of coordinates of float type. + + + The structure is used to store a pair of floating point + coordinates with single precision. + + Sample usage: + + // assigning coordinates in the constructor + Point p1 = new Point( 10, 20 ); + // creating a point and assigning coordinates later + Point p2; + p2.X = 30; + p2.Y = 40; + // calculating distance between two points + float distance = p1.DistanceTo( p2 ); + + + + + + + X coordinate. + + + + + + Y coordinate. + + + + + + Initializes a new instance of the structure. + + + X axis coordinate. + Y axis coordinate. + + + + + Calculate Euclidean distance between two points. + + + Point to calculate distance to. + + Returns Euclidean distance between this point and + points. + + + + + Calculate squared Euclidean distance between two points. + + + Point to calculate distance to. + + Returns squared Euclidean distance between this point and + points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Addition operator - adds values of two points. + + + First point for addition. + Second point for addition. + + Returns new point which coordinates equal to sum of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Subtraction operator - subtracts values of two points. + + + Point to subtract from. + Point to subtract. + + Returns new point which coordinates equal to difference of corresponding + coordinates of specified points. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Addition operator - adds scalar to the specified point. + + + Point to increase coordinates of. + Value to add to coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point increased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Subtraction operator - subtracts scalar from the specified point. + + + Point to decrease coordinates of. + Value to subtract from coordinates of the specified point. + + Returns new point which coordinates equal to coordinates of + the specified point decreased by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Multiplication operator - multiplies coordinates of the specified point by scalar value. + + + Point to multiply coordinates of. + Multiplication factor. + + Returns new point which coordinates equal to coordinates of + the specified point multiplied by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Division operator - divides coordinates of the specified point by scalar value. + + + Point to divide coordinates of. + Division factor. + + Returns new point which coordinates equal to coordinates of + the specified point divided by specified value. + + + + + Equality operator - checks if two points have equal coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are equal. + + + + + Inequality operator - checks if two points have different coordinates. + + + First point to check. + Second point to check. + + Returns if coordinates of specified + points are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another point to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Explicit conversion to . + + + Single precision point to convert to integer point. + + Returns new integer point which coordinates are explicitly converted + to integers from coordinates of the specified single precision point by + casting float values to integers value. + + + + + Implicit conversion to . + + + Single precision point to convert to double precision point. + + Returns new double precision point which coordinates are implicitly converted + to doubles from coordinates of the specified single precision point. + + + + + Rounds the single precision point. + + + Returns new integer point, which coordinates equal to whole numbers + nearest to the corresponding coordinates of the single precision point. + + + + + Get string representation of the class. + + + Returns string, which contains values of the point in readable form. + + + + + Calculate Euclidean norm of the vector comprised of the point's + coordinates - distance from (0, 0) in other words. + + + Returns point's distance from (0, 0) point. + + + + + Evaluator of expressions written in reverse polish notation. + + + The class evaluates expressions writen in reverse postfix polish notation. + + The list of supported functuins is: + + Arithmetic functions: +, -, *, /; + sin - sine; + cos - cosine; + ln - natural logarithm; + exp - exponent; + sqrt - square root. + + + Arguments for these functions could be as usual constants, written as numbers, as variables, + writen as $<var_number> ($2, for example). The variable number is zero based index + of variables array. + + Sample usage: + + // expression written in polish notation + string expression = "2 $0 / 3 $1 * +"; + // variables for the expression + double[] vars = new double[] { 3, 4 }; + // expression evaluation + double result = PolishExpression.Evaluate( expression, vars ); + + + + + + + Evaluates specified expression. + + + Expression written in postfix polish notation. + Variables for the expression. + + Evaluated value of the expression. + + Unsupported function is used in the expression. + Incorrect postfix polish expression. + + + + + Represents a range with minimum and maximum values, which are single precision numbers (floats). + + + + The class represents a single precision range with inclusive limits - + both minimum and maximum values of the range are included into it. + Mathematical notation of such range is [min, max]. + + Sample usage: + + // create [0.25, 1.5] range + Range range1 = new Range( 0.25f, 1.5f ); + // create [1.00, 2.25] range + Range range2 = new Range( 1.00f, 2.25f ); + // check if values is inside of the first range + if ( range1.IsInside( 0.75f ) ) + { + // ... + } + // check if the second range is inside of the first range + if ( range1.IsInside( range2 ) ) + { + // ... + } + // check if two ranges overlap + if ( range1.IsOverlapping( range2 ) ) + { + // ... + } + + + + + + + Initializes a new instance of the structure. + + + Minimum value of the range. + Maximum value of the range. + + + + + Check if the specified value is inside of the range. + + + Value to check. + + True if the specified value is inside of the range or + false otherwise. + + + + + Check if the specified range is inside of the range. + + + Range to check. + + True if the specified range is inside of the range or + false otherwise. + + + + + Check if the specified range overlaps with the range. + + + Range to check for overlapping. + + True if the specified range overlaps with the range or + false otherwise. + + + + + Convert the signle precision range to integer range. + + + Specifies if inner integer range must be returned or outer range. + + Returns integer version of the range. + + If is set to , then the + returned integer range will always fit inside of the current single precision range. + If it is set to , then current single precision range will always + fit into the returned integer range. + + + + + Equality operator - checks if two ranges have equal min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are equal. + + + + + Inequality operator - checks if two ranges have different min/max values. + + + First range to check. + Second range to check. + + Returns if min/max values of specified + ranges are not equal. + + + + + Check if this instance of equal to the specified one. + + + Another range to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains min/max values of the range in readable form. + + + + + Minimum value of the range. + + + The property represents minimum value (left side limit) or the range - + [min, max]. + + + + + Maximum value of the range. + + + The property represents maximum value (right side limit) or the range - + [min, max]. + + + + + Length of the range (deffirence between maximum and minimum values). + + + + + Set of systems tools. + + + The class is a container of different system tools, which are used + across the framework. Some of these tools are platform specific, so their + implementation is different on different platform, like .NET and Mono. + + + + + + Copy block of unmanaged memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's value of - pointer to destination. + + This function is required because of the fact that .NET does + not provide any way to copy unmanaged blocks, but provides only methods to + copy from unmanaged memory to managed memory and vise versa. + + + + + Copy block of unmanaged memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's value of - pointer to destination. + + This function is required because of the fact that .NET does + not provide any way to copy unmanaged blocks, but provides only methods to + copy from unmanaged memory to managed memory and vise versa. + + + + + Fill memory region with specified value. + + + Destination pointer. + Filler byte's value. + Memory block's length to fill. + + Return's value of - pointer to destination. + + + + + Fill memory region with specified value. + + + Destination pointer. + Filler byte's value. + Memory block's length to fill. + + Return's value of - pointer to destination. + + + + + Thread safe version of the class. + + + The class inherits the and overrides + its random numbers generation methods providing thread safety by guarding call + to the base class with a lock. See documentation to for + additional information about the base class. + + + + + Initializes a new instance of the class. + + + See for more information. + + + + + Initializes a new instance of the class. + + + A number used to calculate a starting value for the pseudo-random number sequence. + If a negative number is specified, the absolute value of the number is used. + + + See for more information. + + + + + Returns a nonnegative random number. + + + Returns a 32-bit signed integer greater than or equal to zero and less than + . + + See for more information. + + + + + Returns a nonnegative random number less than the specified maximum. + + + The exclusive upper bound of the random number to be generated. + must be greater than or equal to zero. + + Returns a 32-bit signed integer greater than or equal to zero, and less than ; + that is, the range of return values ordinarily includes zero but not . + + See for more information. + + + + + Returns a random number within a specified range. + + + The inclusive lower bound of the random number returned. + The exclusive upper bound of the random number returned. + must be greater than or equal to . + + Returns a 32-bit signed integer greater than or equal to and less + than ; that is, the range of return values includes + but not . + + See for more information. + + + + + Fills the elements of a specified array of bytes with random numbers. + + + An array of bytes to contain random numbers. + + See for more information. + + + + + Returns a random number between 0.0 and 1.0. + + + Returns a double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + See for more information. + + + + + Specifies that an argument, in a method or function, + must be greater than zero. + + + + + + Specifies that an argument, in a method or function, + must be real (double). + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets the minimum allowed field value. + + + + + + Gets the maximum allowed field value. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be lesser than zero. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be lesser than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be greater than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be real between 0 and 1. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer bigger than zero. + + + + + + Specifies that an argument, in a method or function, + must be an integer. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets the minimum allowed field value. + + + + + + Gets the maximum allowed field value. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer less than zero. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer smaller than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Specifies that an argument, in a method or function, + must be an integer bigger than or equal to zero. + + + + + + Initializes a new instance of the class. + + + + + + Runtime cast. + + + The target type. + The source type. + + + + + Initializes a new instance of the struct. + + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Gets the value being casted. + + + + + + Runtime cast. + + + The target type. + + + + + Initializes a new instance of the struct. + + The value. + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Gets the value being casted. + + + + + + Red-black tree specialized for key-based value retrieval. + + + + See . + + + The type of the key. + The type of the value. + + + + + Red-black tree. + + + + + A red–black tree is a data structure which is a type of self-balancing binary + search tree. Balance is preserved by painting each node of the tree with one of + two colors (typically called 'red' and 'black') in a way that satisfies certain + properties, which collectively constrain how unbalanced the tree can become in + the worst case. When the tree is modified, the new tree is subsequently rearranged + and repainted to restore the coloring properties. The properties are designed in + such a way that this rearranging and recoloring can be performed efficiently. + + + The balancing of the tree is not perfect but it is good enough to allow it to + guarantee searching in O(log n) time, where n is the total number of elements + in the tree. The insertion and deletion operations, along with the tree rearrangement + and recoloring, are also performed in O(log n) time. + + + Tracking the color of each node requires only 1 bit of information per node because + there are only two colors. The tree does not contain any other data specific to its + being a red–black tree so its memory footprint is almost identical to a classic + (uncolored) binary search tree. + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, + http://ab-initio.mit.edu/nlopt + + Wikipedia, The Free Encyclopedia. Red-black tree. Available on: + http://en.wikipedia.org/wiki/Red%E2%80%93black_tree + + + + The type of the value to be stored. + + + + + Constructs a new using the + default for type . + + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + + + + Constructs a new using the + default for type . + + + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Removes all nodes from the tree. + + + + + + Adds a new item to the tree. If the element already + belongs to this tree, no new element will be added. + + + The item to be added. + + The node containing the added item. + + + + + Adds a new item to the tree. If the element already + belongs to this tree, no new element will be added. + + + The node to be added to the tree. + + + + + Attempts to remove an element from the tree. + + + The item to be removed. + + + True if the element was in the tree and was removed; false otherwise. + + + + + + Removes a node from the tree. + + + The node to be removed. + + + True if the element was in the tree and was removed; false otherwise. + + + + + + Removes a node from the tree. + + + The key of the node to be removed. + + + A reference to the removed node, if the item was in the tree; otherwise, null. + + + + + + Removes a node from the tree. + + + The node to be removed. + + + A reference to the removed node. + + + + + + Copies the nodes of this tree to an array, starting at a + particular array index. + + + + The one-dimensional array that is the destination of the elements + copied from this tree. The array must have zero-based indexing. + + + + The zero-based index in at which copying begins. + + + + + + Copies the elements of this tree to an array, starting at a + particular array index. + + + + The one-dimensional array that is the destination of the elements + copied from this tree. The array must have zero-based indexing. + + + + The zero-based index in at which copying begins. + + + + + + Returns an enumerator that iterates through this tree in-order. + + + + An object that can + be used to traverse through this tree using in-order traversal. + + + + + + Returns an enumerator that iterates through this tree in-order. + + + + An object that can + be used to traverse through this tree using in-order traversal. + + + + + + Determines whether this tree contains the specified item. + + + The item to be looked for. + + + true if the element was found inside the tree; otherwise, false. + + + + + + Determines whether this tree contains the specified item. + + + The item to be looked for. + + + true if the element was found inside the tree; otherwise, false. + + + + + + Attempts to find a node that contains the specified key. + + + The key whose node is to be found. + + + A containing the desired + if it is present in the dictionary; otherwise, returns null. + + + + + + Finds the greatest point in the subtree rooted at + that is less than or equal to (<=) k. In other words, finds either + k or a number immediately below it. + + + The subtree where search will take place. + A reference value to be found. + + + The node containing the given value or + its immediately smaller neighboring number present in the tree. + + + + + + Finds the greatest point in the + tree that is less than or equal to (<=) k. + In other words, finds either k or a number immediately + below it. + + + A reference for the value to be found. + + + The node containing the given value or + its immediately smaller neighboring number present in the tree. + + + + + + Finds the greatest point in the subtree rooted at + that is less than (<) k. In other words, finds a number stored in + the tree that is immediately below k. + + + The subtree where search will take place. + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the greatest point in the + tree that is less than (<) k. In other words, finds + a number stored in the tree that is immediately below k. + + + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the smallest point in the subtree rooted at + that is greater than (>) k. In other words, finds a number stored in + the tree that is immediately above k. + + + The subtree where search will take place. + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the smallest point in the in the + tree that is greater than (>) k. In other words, finds a + number stored in the tree that is immediately above k. + + + A reference value to be found. + + + The node containing an element that is immediately below . + + + + + + Finds the minimum element stored in the tree. + + + + The that + holds the minimum element in the tree. + + + + + + Finds the maximum element stored in the tree. + + + + The that + holds the maximum element in the tree. + + + + + + Gets the node that contains the next in-order value coming + after the value contained in the given . + + + The current node. + + + The node that contains a value that is immediately greater than + the current value contained in the given . + + + + + + Gets the node that contains the previous in-order value coming + before the value contained in the given . + + + The current node. + + + The node that contains a value that is immediately less than + the current value contained in the given . + + + + + + Forces a re-balance of the tree by removing and inserting the same node. + + + The node to be re-balanced. + + The same node, or a new one if it had to be recreated. + + + + + Gets the number of nodes contained in this red-black tree. + + + + + + Gets the + root node of this red-black tree. + + + + + + Gets the for this red black tree. + + + + + + Gets a value indicating whether this instance is read only. + In a , this returns false. + + + + Returns false. + + + + + + Constructs a new using the default + for the key type . + + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + + + + Constructs a new using the default + for the key type . + + + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Constructs a new using + the provided implementation. + + + + The element comparer to be used to order elements in the tree. + + Pass true to allow duplicate elements + in the tree; false otherwise. + + + + + Vanilla key-based comparer for . + + + The key type in the key-value pair. + The value type in the key-value pair. + + + + + Initializes a new instance of the class. + + + The comparer to be used to compare keys. + + + + + Initializes a new instance of the class. + + + + + + Compares two objects and returns a value indicating whether + one is less than, equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Compares two objects and returns a value indicating whether + one is less than, equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Returns a default sort order comparer for the + key-value pair specified by the generic argument. + + + + + + Two-way dictionary for efficient lookups by both key and value. This + can be used to represent a one-to-one relation among two object types. + + + The type of right keys in the dictionary. + The type of left keys in the dictionary. + + + + + Initializes a new instance of the class + that is empty, has the default initial capacity, and uses the default equality comparer + for the key type. + + + + + + Initializes a new instance of the class + that is empty, has the specified initial capacity, and uses the default equality comparer + for the key type. + + + The initial number of elements that this dictionary can contain. + + + + + Initializes a new instance of the class + that contains elements copied from the specified dictionary and uses the default equality + comparer for the key type. + + + The dictionary whose elements are copied to the new . + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an object for the object. + + + + An object for the object. + + + + + + Adds an element with the provided key and value to the . + + + The object to use as the key of the element to add. + The object to use as the value of the element to add. + + + + + Adds an element with the provided key and value to the object. + + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + + Adds an item to the . + + + The object to add to the . + + + + + Determines whether the contains an element with the specified key. + + + The key to locate in the . + + + true if the contains an element with the key; otherwise, false. + + + + + + Determines whether the contains a specific value. + + + The object to locate in the . + + + true if is found in the ; otherwise, false. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. + + + true if the object that implements contains an element with the specified key; otherwise, false. + + + + + + Removes the element with the specified key from the . + + + The key of the element to remove. + + + true if the element is successfully removed; otherwise, false. This method also returns false if was not found in the original . + + + + + + Removes the element with the specified key from the object. + + + The key of the element to remove. + + + + + Removes the first occurrence of a specific object from the . + + + The object to remove from the . + + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + + Determines whether the object contains an element with the specified key. + + + The key to locate in the object. + + + true if the contains an element with the key; otherwise, false. + + + + + + Removes all items from the . + + + + + + Gets the reverse dictionary that maps values back to keys. + + + + + + Gets the number of elements contained in this . + + + + + + Gets an object that can be used to synchronize access to the . + + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + + + + Gets a value indicating whether the object has a fixed size. + + + + + + Gets a value indicating whether the is read-only. + + + + + + Gets or sets the element with the specified key. + + + The left key. + + + + + Gets or sets the element with the specified key. + + + The left key. + + + + + Gets an containing the keys of the . + + + + + + Gets an containing the keys of the . + + + + + + Gets an containing the keys of the . + + + + + + Gets an containing the values in the . + + + + + + Gets an containing the values in the . + + + + + + Gets an containing the values in the . + + + + + + Static class for utility extension methods. + + + + + + Copies a collection by calling the ICloneable.Clone method for each element inside it. + + + + The collection to be cloned. + + A copy of the collection where each element has also been copied. + + + + + Creates and adds multiple + objects with the given names at once. + + + The + to add in. + The names of the to + be created and added. + + + + DataTable table = new DataTable(); + + // Add multiple columns at once: + table.Columns.Add("columnName1", "columnName2"); + + + + + + + Gets a the value of a + associated with a particular enumeration value. + + + The enumeration type. + The enumeration value. + + The string value stored in the value's description attribute. + + + + + Reads a struct from a stream. + + + + + + Gets the underlying buffer position for a StreamReader. + + + A StreamReader whose position will be retrieved. + + The current offset from the beginning of the + file that the StreamReader is currently located into. + + + + + Deserializes the specified stream into an object graph, but locates + types by searching all loaded assemblies and ignoring their versions. + + + The binary formatter. + The stream from which to deserialize the object graph. + + The top (root) of the object graph. + + + + + Algorithm Convergence Exception. + + + The algorithm convergence exception is thrown in cases where a iterative + algorithm could not converge to a finite solution. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Dimension Mismatch Exception. + + + The dimension mismatch exception is thrown in cases where a method expects + a matrix or array object having specific or compatible dimensions, such as the inner matrix + dimensions in matrix multiplication. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + The name of the parameter that caused the current exception. + + + + + Initializes a new instance of the class. + + + The name of the parameter that caused the current exception. + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Non-Positive Definite Matrix Exception. + + + The non-positive definite matrix exception is thrown in cases where a method + expects a matrix to have only positive eigenvalues, such when dealing with covariance matrices. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Non-Symmetric Matrix Exception. + + + The not symmetric matrix exception is thrown in cases where a method + expects a matrix to be symmetric but it is not. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Singular Matrix Exception. + + + The singular matrix exception is thrown in cases where a method which + performs matrix inversions has encountered a non-invertible matrix during the process. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + Read-only keyed collection wrapper. + + + + This collection implements a read-only keyed collection. Read-only collections + can not be changed once they are created and are useful for presenting information + to the user without allowing alteration. A keyed collection is a collection whose + elements can be retrieved by key or by index. + + + The types of the keys in the dictionary. + The type of values in the dictionary. + + + + + Initializes a new instance of the + class. + + + + + + When implemented in a derived class, extracts the key from the specified element. + + + The element from which to extract the key. + + The key for the specified element. + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Determines whether the contains an element with the specified key. + + + The key to locate in the . + + + true if the contains an element with the key; otherwise, false. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. + + + true if the object that implements contains an element with the specified key; otherwise, false. + + + + + + Determines whether the contains a specific value. + + + The object to locate in the . + + + true if is found in the ; otherwise, false. + + + + + + Copies the elements of the ICollection to an Array, starting at a particular Array index. + + + The one-dimensional Array that is the destination of the elements copied from ICollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + This method is not supported, as this is a read-only collection. + + + This collection is read-only + + + + + Not supported. + + + This collection is read-only + + + + + Gets an containing the keys of the . + + + An containing the keys of the object that implements . + + + + + Gets an containing the values in the . + + + An containing the values in the object that implements . + + + + + Gets or sets the element with the specified key. + + + The key. + + This collection is read-only + + + + + Returns true. + + + + + + Read-only dictionary wrapper. + + + + This collection implements a read-only dictionary. Read-only collections + can not be changed once they are created and are useful for presenting + information to the user without allowing alteration. + + + The types of the keys in the dictionary. + The type of values in the dictionary. + + + + + Constructs a new read-only wrapper around a . + + + The dictionary to wrap. + + + + + Does nothing, as this collection is read-only. + + + + + + Determines whether the + contains an element with the specified key. + + + The key to locate in the . + + + true if the contains + an element with the key; otherwise, false. + + + + + + Does nothing, as this collection is read-only. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + + + When this method returns, the value associated with the specified key, if + the key is found; otherwise, the default value for the type of the value + parameter. This parameter is passed uninitialized. + + + true if the + contains an element with the specified key; otherwise, false. + + + + + Does nothing, as this collection is read-only. + + + + + + Does nothing, as this collection is read-only. + + + + + + Determines whether the + contains an element with the specified key. + + + The key to locate in the . + + + true if the + contains an element with the key; otherwise, false. + + + + + + Copies the entire to a + compatible one-dimensional Array, starting at the specified index of + the target array. + + + + The one-dimensional Array that is the destination + of the elements copied from . The + Array must have zero-based indexing. + + + The zero-based index in array at which copying begins. + + + + + Does nothing, as this collection is read-only. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets an containing the keys of + the . + + + The keys. + + + + + Gets an containing the values in + the . + + + + An containing the + values in the . + + + + + + Gets the element with the specified key. Set is not supported. + + + The element with the specified key. + + + + + Gets the number of elements contained in this + . + + + + + + Always returns true. + + + + + + Sorted dictionary based on a red-black tree. + + + The type of keys in the collection. + The type of the values in the collection + + + + + Creates a new + using the default comparer for the key + type. + + + + + + Creates a new . + + + + + + Adds an element with the provided key and value to the . + + + The object to use as the key of the element to add. + The object to use as the value of the element to add. + + + + + Adds an element with the provided key and value to the dictionary. + + + + The key-value pair + containing the desired key and the value to be added. + + + + + + Removes the element with the specified key from the dictionary. + + + The key of the element to remove. + + + true if the element is successfully removed; otherwise, false. + This method also returns false if was not found + in the original dictionary. + + + + + + Removes the first occurrence of a specific object from the dictionary. + + + The object to remove from the dictionary. + + + true if was successfully removed from + the dictionary; otherwise, false. This method also returns false if + is not found in the original dictionary. + + + + + + Determines whether the dictionary contains an element with the specified key. + + + The key to locate in the dictionary. + + + true if the dictionary contains an element with the key; otherwise, false. + + + + + + Determines whether the dictionary contains a specific value. + + + The object to locate in the dictionary. + + + true if is found in the dictionary; otherwise, false. + + + + + + Gets the value associated with the specified key. + + + The key whose value to get. + + When this method returns, the value associated with the specified key, + if the key is found; otherwise, the default value for the type of the + parameter. This parameter is passed + uninitialized. + + + + true if the dictionary contains an element with the specified key; otherwise, false. + + + + + + Removes all elements from the dictionary. + + + + + + Copies the elements of this dictionary to an array, starting at a particular array index. + + + + The one-dimensional Array that is the destination of the elements + copied from ICollection. The array must have zero-based indexing. + The zero-based index in array at which copying begins. + + + + + Returns an enumerator that iterates through the dictionary. + + + + An + object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the dictionary. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the pair with the minimum key stored in the dictionary. + + + + The with + the minimum key present in the dictionary. + + + + + + Gets the pair with the maximum key stored in the dictionary. + + + + The with + the minimum key present in the dictionary. + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate ancestor of the given . + + + The key whose ancestor must be found. + + + The key-value pair whose key is the immediate ancestor of . + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate ancestor of the given . + + + The key whose ancestor must be found. + + The key-value pair whose key is the immediate ancestor of + , returned as an out parameter. + + + + True if there was an ancestor in the dictionary; false otherwise. + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate successor to the given . + + + The key whose successor must be found. + + + The key-value pair whose key is the immediate successor of . + + + + + + Gets the next key-value pair in the dictionary whose key is + the immediate successor to the given . + + + The key whose successor must be found. + + The key-value pair whose key is the immediate sucessor of + , returned as an out parameter. + + + + True if there was a successor in the dictionary; false otherwise. + + + + + + Gets an + containing the keys of the . + + + + + + Gets an + containing the values of the . + + + + + + Gets or sets the element with the specified key. + + + The key. + + The requested key was not found in the present tree. + + + + + Gets the number of elements on this dictionary. + + + + + + Gets a value indicating whether this instance is read only. + + + + Returns false. + + + + + + Possible node colors for s. + + + + + + Red node. + + + + + + Black node. + + + + + + node. + + + The type of the value to be stored. + + + + + Constructs a new empty node. + + + + + + Constructs a node containing the given . + + + + + + Gets or sets a reference to this node's parent node. + + + + + + Gets or sets a reference to this node's right child. + + + + + + Gets or sets a reference to this node's left child. + + + + + + Gets or sets this node's color. + + + + + + Gets or sets the value associated with this node. + + + + + + node. + + + The type of the key that identifies the value. + The type of the values stored in this node. + + + + + Constructs a new empty node. + + + + + + Constructs a new node containing the given + key and value pair. + + + + + + Constructs a new node containing the given + key and value pair. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/Accord.Audio.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/Accord.Audio.3.0.2.nupkg new file mode 100644 index 0000000000..844195d58 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/Accord.Audio.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audio.dll b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audio.dll new file mode 100644 index 0000000000..a38844cbf Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audio.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audio.xml b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audio.xml new file mode 100644 index 0000000000..c5d2a5b87 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audio.xml @@ -0,0 +1,3326 @@ + + + + Accord.Audio + + + + + Information about a audio frame. + + + This is a base class, which keeps basic information about a frame sample, like its + sampling rate, bits per sample, etc. Classes, which inherit from this, may define more properties + describing certain audio formats. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Number of channels. + + + + + + Sampling rate. + + + + + + Number of bits per audio sample. + + + + + + Frame's index. + + + + + + Total frames in the audio. + + + + + + Audio decoder interface, which specifies set of methods that should + be implemented by audio decoders for different file formats. + + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + Implementation of this method is supposed to read audio's header, + checking for correct audio format and reading its attributes. + + Implementations of this method may throw + exception to report about unrecognized audio + format, exception to report about incorrectly + formatted audio or exception to report if + certain formats are not supported. + + + + + + Decode all frames. + + + Returns the decoded signal. + + Implementations of this method may throw + exception in the case if no audio + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted audio. + + + + + + Decode a number of frames. + + + Audio frame index to start decoding. + The number of frames to decode. + + Returns the decoded signal. + + Implementations of this method may throw + exception in the case if no audio + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted audio. + + + + + + Close decoding of previously opened stream. + + + Implementations of this method don't close stream itself, but just close + decoding cleaning all associated data with it. + + + + + Audio encoder interface, which specifies set of methods that should + be implemented by audio encoders for different file formats. + + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + Implementation of this method is supposed to read audio's header, + checking for correct audio format and reading its attributes. + + Implementations of this method may throw + exception to report about unrecognized audio + format, exception to report about incorrectly + formatted audio or exception to report if + certain formats are not supported. + + + + + + Encode all frames. + + + Returns the encoded signal. + + Implementations of this method may throw + exception in the case if no audio + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted audio. + + + + + + Close encoding of previously opened stream. + + + Implementations of this method don't close stream itself, but just close + decoding cleaning all associated data with it. + + + + + Custom function signal generator. + + + + + + Common interface for signal generators. + + + + + + Generates a signal with the given number of samples. + + + The number of samples to generate. + + The generated signal + + + + + Gets or sets the sampling rate used to create signals. + + + + + + Gets or sets the number of channels of the created signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Constructs a new signal generator. + + + + + + Generates a signal. + + + + + + Gets or sets the windowing function to be + applied to each element in the window. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Sine signal generator. + + + + + + Constructs a new Cosine Signal Generator. + + + + + + Constructs a new Cosine Signal Generator. + + + + + + Generates a signal. + + + + + + Gets or sets the Frequency of the sine signal. + + + + + + Gets or sets the Amplitude of the sine signal. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Software mixer for audio sources. + + + + + + Audio Source interface. + + + This interface is implemented by objects which can + generate or capture sounds. Examples are sound card capture + ports, microphones, wave file decoders and others. + + + + + + + Seeks a frame. + + + + This method may throw an NotSupportedException if the source + does not allow repositioning. + + + + + + Start audio source. + + + Starts audio source and return execution to caller. Audio source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signals audio source to stop its work. + + + Signals audio source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait until audio source has stopped. + + + Waits for audio source stopping after it was signaled to stop using + method. + + + + + Stop audio source. + + + Stops audio source aborting its thread. + + + + + New frame block event. + + + This event is used to notify clients about new available audio frame. + + Since audio source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed audio frame, but audio source is responsible for + disposing its own original copy after notifying of clients. + + + + + + Audio source error event. + + + This event is used to notify clients about any type of errors occurred in + audio source object, for example internal exceptions. + + + + + Audio source. + + + The meaning of the property depends on particular audio source. + Depending on audio source it may be a file name, driver guid, URL or any + other string describing the audio source. + + + + + Amount of samples to be read on each frame. + + + + + + Gets the number of audio channels in the source. + + + + + + Gets or sets the sample rate for the source. + + + + Changing this property may throw an NotSupportedException if + the underlying source does not allow resampling. + + + + + + Gets a Boolean value indicating if the source allows repositioning. + + + + + + Received frames count. + + + Number of frames the audio source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the audio source provided from the moment of the last + access to the property. + + + + + + User data. + + + The property allows to associate user data with audio source object. + + + + + State of the audio source. + + + Current state of audio source object - running or not. + + + + + Initializes a new instance of the class. + + + The audio sources to be mixed. + + + + + Initializes a new instance of the class. + + + The audio sources to be mixed. + + + + + Not supported. + + + + + + Start audio source. + + + Starts audio source and return execution to caller. Audio source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signals audio source to stop its work. + + + Signals audio source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for audio source has stopped. + + + Waits for source stopping after it was signaled to stop using + method. + + + + + Stop audio source. + + + Stops audio source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Worker thread. + + + + + + Notifies client about new block of frames. + + + New frame's audio. + + + + + Notifies client about new block of frames. + + + New frame's audio. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + New frame event. + + + Notifies clients about new available frame from audio source. + + Since audio source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed audio frame, because the audio source disposes its + own original copy after notifying of clients. + + + + + + Audio source error event. + + + This event is used to notify clients about any type of errors occurred in + audio source object, for example internal exceptions. + + + + + Gets a string representing this instance. + + + + + + Amount of samples to be read on each frame. + + + + + + Gets the sample rate for the source. + + + + + Gets the number of audio channels in the source. + + + + + + Returns false, as this source doesn't allows repositioning. + + + + + + Received frames count. + + + Number of frames the audio source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the audio source provided from the moment of the last + access to the property. + + + + + + User data. + + + The property allows to associate user data with audio source object. + + + + + State of the audio source. + + + Current state of audio source object - running or not. + + + + + Arguments for audio source error event from audio source. + + + + + + Initializes a new instance of the class. + + + Error description. + + + + + Represents an event with no event data. + + + + + Audio source error description. + + + + + + Arguments for new block event from audio source. + + + + + + Initializes a new instance of the class. + + + New frame index. + The number of frames to play. + + + + + Represents an event with no event data. + + + + + + New block from audio source. + + + + + + Gets how many frames + are going to be played. + + + + + + Arguments for new frame request from an audio output device. + + + + + + Initializes a new instance of the class. + + + The number of samples being requested. + + + + + Initializes a new instance of the class. + + + The initial buffer. + + + + + Gets or sets the buffer to be played in the audio source. + + + + + + Gets or sets whether the playing should stop. + + + + + + Gets the number of samples which should be placed in the buffer. + + + + + + Optional field to inform the player which + is the current index of the frame being played. + + + + + + Arguments for new block event from audio source. + + + + + + Initializes a new instance of the class. + + + New signal frame. + + + + + New Frame from audio source. + + + + + + Audio related exception. + + + The exception is thrown in the case of some audio related issues, like + failure of initializing codec, compression, etc. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + + Unsupported sample format exception. + + + + + The unsupported sample format exception is thrown in the case when a signal + is passed to a signal processing routine which is not prepared to handle its + format. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + + Base signal processing filter + + + + + + Audio processing filter interface. + + + The interface defines the set of methods, which should be + provided by all signal processing filters. Methods of this interface + keep the source signal unchanged and return the result of signal processing + filter as new signal. + + + + + Apply filter to an audio signal. + + + Source signal to apply filter to. + + Returns filter's result obtained by applying the filter to + the source sample. + + The method keeps the source sample unchanged and returns the + the result of the signal processing filter as new sample. + + + + + Apply filter to a windowed audio signal. + + + Source signal to apply filter to. + + Returns filter's result obtained by applying the filter to + the source sample. + + The method keeps the source sample unchanged and returns the + the result of the signal processing filter as new sample. + + + + + Applies the filter to a signal. + + + + + + Creates a new signal from the given signal parameters. This + method can be overridden on child classes to modify how + output signals are created. + + + + + + Applies the filter to a windowed signal. + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Invalid signal properties exception. + + + + + The invalid signal properties exception is thrown in the case when + user provides a signal which do not have the properties expected by + a particular signal processing routine. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + + Arguments for audio source error event from audio source. + + + + + + Initializes a new instance of the class. + + + Error description. + + + + + Represents an event with no event data. + + + + + Audio source error description. + + + + + + Base complex signal processing filter. + + + + + + Audio processing filter, which operates with Fourier transformed + complex audio signal. + + + The interface defines the set of methods, which should be + provided by all signal processing filter, which operate with Fourier + transformed complex image. + + + + + Apply filter to complex signal. + + + Complex signal to apply filter to. + + + + + Apply filter to a windowed complex signal. + + + Complex signal to apply filter to. + + + + + Applies the filter to a signal. + + + + + + Applies the filter to a windowed signal. + + + + + + Processes the filter. + + + + + + Comb filter. + + + + + + Creates a new Comb filter. + + + + + + Processes the filter. + + + + + + Gets or sets the current BPM for the underlying impulse generator. + + + + + + Gets or sets the length of the comb filter. + + + + + + Gets or sets the number of channels for the filter. + + + + + + Differential Rectification filter. + + + + + + Constructs a new Differential Rectification filter. + + + + + + Processes the filter. + + + + + + Hilbert transform based envelope detector. + + + + + This method works by creating the analytic signal of the input by + using a Hilbert transform. An analytic signal is a complex signal, + where the real part is the original signal and the imaginary part + is the Hilbert transform of the original signal. + + The complex envelope of a signal can be found by taking the absolute + (magnitude) value of the analytic signal. + + References: http://en.wikipedia.org/wiki/Hilbert_transform + + + + + + + Constructs a new Envelope filter. + + + + + Processes the filter. + + + + + Filter banks segregates signals into different parts to be further processed. + The most common filter bank is the band-pass filter bank. + + + + + + Apply filter to complex signal. + + + Complex signal to apply filter to. + + + + Apply filter to a windowed complex signal. + + + Windowed complex signal to apply filter to. + + + + Number of filters in the bank. + + + + + Base in-place signal processing filter + + + + + + In-place audio processing filter interface. + + + The interface defines the set of methods, which should be + provided by all signal processing filters. Methods of this interface + operate in-place and alter the original source signal. + + + + + Apply filter to an audio signal. + + + Source signal to apply filter to. + + The method alters the original signal to store + the result of this signal processing filter. + + + + + Apply filter to a windowed audio signal. + + + Source signal to apply filter to. + + The method alters the original signal to store + the result of this signal processing filter. + + + + + Applies the filter to a signal. + + + + + + Apply filter to an audio signal. + + + Source signal to apply filter to. + + + The method alters the original signal to store + the result of this signal processing filter. + + + + + + Creates a new signal from the given signal parameters. This + method can be overridden on child classes to modify how + output signals are created. + + + + + + Applies the filter to a windowed signal. + + + + + + Apply filter to a windowed audio signal. + + + Source signal to apply filter to. + + + The method alters the original signal to store + the result of this signal processing filter. + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Volume adjustment filter. + + + + + + Constructs a new Volume adjustment filter using the given alpha. + + + Volume multiplier. + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the volume multiplier. + + + + + + Time-domain envelope detector. + + + + + To extract the envelope of a time-domain signal, we must first compute + the absolute signal values and then pass it through a low-pass filter. + + + + + + Constructs a new Envelope filter + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Alpha + + + + + + Extracts specified channel of a multiple-channel signal and returns it as a mono signal. + + + + + + Creates a new filter. + + + The index of the channel to be extracted. + + + + + Creates a new signal from the given signal parameters. This + method can be overridden on child classes to modify how + output signals are created. + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the index of the channel + that should be extracted from signals. + + + + + + High-pass band filter + + + + + + Constructs a new High-Pass filter using the given alpha. + + + Band pass alpha. + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the high-pass alpha. + + + + + + Low band pass filter. + + + + + + Constructs a new Low-Pass Filter using the given alpha. + + + Band pass alpha. + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the low-pass alpha. + + + + + + Wave Rectifier filter. + + + + + + Constructs a new Wave rectifier. + + + + + + Applies the filter to a signal. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets whether half rectification should be performed. + + + + + + Impulse train signal generator. + + + + + + Creates a new Impulse Signal Generator. + + + + + + Creates a new Impulse Signal Generator. + + + + + + Generates the given number of samples. + + + + + + Gets or sets the number of channels to generate. + + + + + + Gets or sets the sampling rate of channels to generate. + + + + + + Gets or sets the number of pulses to generate in the signal. + + + + + + Gets or sets the sample format for created signals. + + + + + + Gets or sets the beats per minute for the pulses. + + + + + + Audio Output Interface + + + This interface is implemented by objects which + can reproduce sounds. Examples are sound card outputs, wave + file encoders/writers and special purpose encoders. + + + + + + + Starts playing the buffer + + + + + + Stops playing the buffer + + + + + + Signals audio output to stop its work. + + + Signals audio output to stop its background thread, stop to + request new frames and free resources. + + + + + Wait until audio output has stopped. + + + Waits for audio output stopping after it was signaled to stop using + method. + + + + + Audio output. + + + + + The meaning of the property depends on particular audio output. + Depending on audio source it may be a file name, driver guid, URL + or any other string describing the audio source. + + + + + + Indicates a block of frames have started execution. + + + + + + Indicates all frames have been played and the audio finished. + + + + + + Indicates the audio output is requesting a new sample. + + + + + + Gets a value indicating whether this instance is playing audio. + + + true if this instance is running; otherwise, false. + + + + + + Audio output error event. + + + This event is used to notify clients about any type of errors occurred in + audio output object, for example internal exceptions. + + + + + Virtual Metronome. + + + + Objects from this class acts as virtual metronomes. If connected + to a beat detector, it can be used to determine the tempo (in + beats per minute) of a signal. It can also be used in manual mode + by calling method. For more details, see the + Beat detection sample application which comes together with the + framework. + + + + + + Constructs a new Metronome. + + + + + + Taps the metronome (for tempo detection) + + + + + + Starts the metronome. + + + + + + Stops the metronome. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets or sets the Beats per Minute for this metronome. + + + + + + Gets whether the metronome is currently detecting the tempo being tapped. + + + + + + Fired when the metronome has figured the tapped tempo. + + + + + + Metronome tick. + + + + + + Synchronizing object for thread safety. + + + + + + Static methods to convert between different sample formats. + + + + + Code is mainly based on information available on the original + C source code pa_converters.c from Portable Audio I/O Library. + + This class try to be as fast as possible without using unsafe code. + + + Dither isn't currently supported. Currently supported conversions + are 'to' and 'from' conversions between the following most common + PCM format: + + + Integer 8-bit (byte) + Integer 16-bit (Int16) + Integer 32-bit (Int32) + Single precision 32-bit floating point (float) + + + + + To use it, just call Convert. The compiler will automatically detect + which method to call based on your data types. + + + // Suppose we have a collection of samples in PCM-16 format + // and wish to convert it into IEEE-32 floating point format: + + int[] pcm16Samples = new int [3] { 1, 2, 3 }; // source + float[] floatSamples = new float[3]; // target + + // Call convert passing the source samples. Converted + // IEEE samples in will be stored in the target array. + SampleConverter.Convert(pcm16samples, floatSamples); + + + + + + + Converts a matrix of unsigned 8-bit byte samples + into a array of 16-bit short integer samples. + + + The original sample. + The resulting sample. + + + + + Converts an array of unsigned 8-bit byte samples + into an array of 16-bit short integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a unsigned 8-bit byte sample + into a 16-bit short integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of unsigned 8-bit byte samples + into a matrix of 32-bit integer samples. + + + The original sample. + The resulting sample. + + + + + Converts an array of unsigned 8-bit byte samples + into an array of 32-bit integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a unsigned 8-bit byte sample + into a 32-bit integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of unsigned 8-bit byte samples + into a matrix of 32-bit floating-point samples. + + + The original sample. + The resulting sample. + + + + + Converts an array of unsigned 8-bit byte samples + into an array of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a unsigned 8-bit byte sample + into a 32-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 8-bit unsigned byte sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 32-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 32-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 32-bit signed integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 32-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 64-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 64-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 64-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 8-bit unsigned byte sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 16-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 16-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 16-bit signed integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 32-bit float-point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 32-bit float-point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 32-bit float-point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit float samples + into a matrix of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit float samples + into a array of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit float sample + into a 8-bit unsigned byte sample. + + The original sample. + The resulting sample. + + + + Converts a matrix of 32-bit float samples + into a matrix of 16-bit integer samples. + + The original sample. + The resulting sample. + + + + Converts a array of 32-bit float samples + into a array of 16-bit integer samples. + + The original sample. + The resulting sample. + + + + Converts a 32-bit float sample + into a 16-bit integer sample. + + The original sample. + The resulting sample. + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 32-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Specifies the format of each sample in a signal. + + + + + + Specifies the format is 8 bit, unsigned. + + + + + + Specifies the format is 8 bit, signed. + + + + + + Specifies the format is 16 bit, signed. + + + + + + Specifies the format is 32 bit, signed. + + + + + + Specifies the format is 32 bit, represented by + single-precision IEEE floating-point numbers. + + + + + + Specifies the format is 64 bit, represented by + double-precision IEEE floating-point numbers. + + + + + + Specifies the format is 128 bit, represented by + complex numbers with real and imaginary parts as + double-precision IEEE floating-point numbers. + + + + + + Represents a discrete signal (measured in time). + + + + + A real discrete-time signal is defined as any real-valued + function of the integers. + + In signal processing, sampling is the reduction of a continuous + signal to a discrete signal. A common example is the conversion + of a sound wave (a continuous-time signal) to a sequence of samples + (a discrete-time signal). + + + A sample refers to a value or set of values at a point in time + and/or space. + + Sample usage: + + // create an empty audio signal + Signal signal = new Signal( channels, length, sampleRate, format ); + + + + float[,] data = + { + { 0.00f, 0.2f }, + { 0.32f, 0.1f }, + { 0.22f, 0.2f }, + { 0.12f, 0.42f }, + { -0.12f, 0.1f }, + { -0.22f, 0.2f }, + }; + + // or create an audio signal from an array of audio frames + Signal target = Signal.FromArray(data, sampleRate: 8000); + + + + For an example on how to decode a signal from a Wave file, please + take a look on the WaveDecoder and WaveFileAudioSource documentation. + + + + + + + + Constructs a new signal. + + + The raw data for the signal. + The number of channels for the signal. + The length of the signal. + The sample format for the signal. + The sample date of the signal. + + + + + Constructs a new Signal. + + + The number of channels for the signal. + The length of the signal. + The sample format for the signal. + The sample date of the signal. + + + + + Computes the signal energy. + + + + + + Gets the value of the specified sample in the Signal. + + + The channel's index of the sample to set. + The position of the sample to set. + A floating-point value ranging from -1 to 1 representing + the retrieved value. Conversion is performed automatically from + the underlying signal sample format if supported. + + + + + Sets the value of the specified sample in the Signal. + + + The channel's index of the sample to set. + The position of the sample to set. + A floating-point value ranging from -1 to 1 + specifying the value to set. Conversion will be done automatically + to the underlying signal sample format if supported. + + + + + Creates a new Signal from a float array. + + + + + + Converts this signal to a ComplexSignal object. + + + + + + Creates a new Signal from a float array. + + + + + + Creates a new Signal from a float array. + + + + + + Copies this signal to a given array. + + + + + + Copies this signal to a given array. + + + + + + Copies this signal to a given array. + + + + + + Converts this signal into a array of floating-point samples. + + + An array of single-precision floating-point samples. + + + + + Converts this signal into a array of floating-point samples. + + + An array of single-precision floating-point samples. + + + + + Gets the number of samples contained in a signal of given duration and sampling rate. + + + + + + Gets the duration of each sample in a signal with the given number of samples and sampling rate. + + + + + + Gets the size (in bits) of a sample format. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations + before the is reclaimed by garbage collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets the sample format used by this signal. + + + The signal's sample format. + + + + + Gets the signal duration in milliseconds. + + + + + + Gets the number of samples in each channel of this signal, + as known as the number of frames in the signal. + + + + + + Gets the total number of samples in this signal. + + + + + + Gets the number of samples per second for this signal. + + + + + + Gets the number of channels of this signal. + + + + + + Gets the raw binary data representing the signal. + + + + + + Gets a pointer to the first sample of the signal. + + + + + + Complex signal status. + + + + + + Normal state. + + + + + + Analytic form (Hilbert Transformed) + + + + + + Frequency form (Fourier transformed) + + + + + + Complex audio signal. + + + + + A complex discrete-time signal is any complex-valued function + of integers. This class is used to keep audio signals represented + in complex numbers so they are suitable to be converted to and + from the frequency domain in either analytic or Fourier transformed + forms. + + + References: + + + Wikipedia, The Free Encyclopedia. Analytics Signal. Available on: + http://en.wikipedia.org/wiki/Analytic_signal + + + + + + If your signal has a length that is a power of two, you can use the + following code directly to create your audio signal and obtain its + spectrogram: + + + // Create complex audio signal + ComplexSignal complexSignal = ComplexSignal.FromSignal( signal ); + + // Do forward Fourier transformation + complexSignal.ForwardFourierTransform( ); + + // Generate spectrogram + complexSignal.ToBitmap(512,512); + + + + However, if your signal is too lengthy, or if your signal is not yet in a power of + two size, you can use a temporal window to slice your signal into smaller cuts, as + shown below. In the example, an audio file is being read and its contents are being + decoded and stored into a Signal object. Afterwards, an audio window is being used + to cut the signal into smaller, power-of-two size signals which can then be transformed + into the frequency (Fourier) domain. + + + string fileName = "audio.wav"; + + WaveDecoder sourceDecoder = new WaveDecoder(fileName); + + // Decode the file and store into a signal + Signal sourceSignal = sourceDecoder.Decode(); + + // Create Hamming window so that signal will fit into power of 2: + RaisedCosineWindow window = RaisedCosineWindow.Hamming(1024); + + // Splits the source signal by walking each 512 samples, then creating + // a 1024 sample window. Note that this will result in overlapped windows. + Signal[] windows = sourceSignal.Split(window, 512); + + // You might need to import Accord.Math in order to call this: + ComplexSignal[] complex = windows.Apply(ComplexSignal.FromSignal); + + // Forward to the Fourier domain + complex.ForwardFourierTransform(); + + + + + + + + Constructs a new Complex Signal + + + + + + Constructs a new Complex Signal + + + + + + Constructs a new Complex Signal + + + + + + Converts the complex signal to a complex array. + + + + + + Extracts a channel from the signal. + + + + + + Copies an array of samples to a signal's channel. + + + + + + Applies forward fast Fourier transformation to the complex signal. + + + + + + Applies backward fast Fourier transformation to the complex signal. + + + + + + Applies forward Hilbert transformation to the complex signal. + + + + + Applies backward Hilbert transformation to the complex signal. + + + + + Create multichannel complex signal from floating-point matrix. + + + Source multichannel float array (matrix). + + Returns an instance of complex signal. + + + + + Create multichannel complex signal from floating-point matrix. + + + Source multichannel float array (matrix). + Sampling rate for the signal. + + Returns an instance of complex signal. + + + + + Create complex signal from complex array. + + + Source complex array. + Sample rate of the signal. + + Returns an instance of complex signal. + + + + + Create complex signal from complex array. + + + Source complex array. + Sample rate of the signal. + Status of the signal. + + Returns an instance of complex signal. + + + + + Combines a set of windows into one full signal. + + + + + Gets the status of the signal - Fourier transformed, + Hilbert transformed (analytic) or real. + + + + + + Cosine signal generator. + + + + + + Constructs a new cosine Signal Generator. + + + + + + Constructs a new cosine Signal Generator. + + + + + + Generates a signal. + + + + + + Gets or sets the Frequency of the cosine signal. + + + + + + Gets or sets the Amplitude of the cosine signal. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Square Signal Generator + + + + + Creates a new Square Signal Generator. + + + + + + Generates a signal. + + + + + + Gets or sets the Frequency of the squared signal. + + + + + + Gets or sets the Amplitude of the squared signal. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Tool functions for audio processing. + + + + + + Interleaves the channels into a single array. + + + + + + Interleaves the channels into a single array. + + + + + + Computes the Magnitude spectrum of a complex signal. + + + + + + Computes the Power spectrum of a complex signal. + + + + + + Computes the Phase spectrum of a complex signal. + + + + + + Creates an evenly spaced frequency vector (assuming a symmetric FFT) + + + + + + Gets the spectral resolution for a signal of given sampling rate and number of samples. + + + + + + Gets the power Cepstrum for a complex signal. + + + + + + Computes the Root-Mean-Square (RMS) value of the given samples. + + + The samples. + + The root-mean-square value of the samples. + + + + + Computes the Root-Mean-Square (RMS) value of the given samples. + + + The samples. + The start index. + The number of samples, starting at start index, to compute. + + The root-mean-square value of the samples. + + + + + Computes the maximum value of the given samples. + + + The samples. + + The maximum value of the samples + + + + + Computes the maximum value of the given samples. + + + The samples. + The start index. + The number of samples, starting at start index, to compute. + + The maximum value of the samples + + + + + Finds the peaks of a signal. + + + The samples. + + The index of the peaks found in the sample. + + + + + Finds the peaks of a signal. + + + The samples. + + The index of the peaks found in the sample. + + + + + Serializes (converts) any object to a byte array. + + + The object to be serialized. + The byte array containing the serialized object. + + + + + Deserializes (converts) a byte array to a given structure type. + + + + This is a potentiality unsafe operation. + + + The byte array containing the serialized object. + The object stored in the byte array. + + + + + Deserializes (converts) a byte array to a given structure type. + + + + This is a potentiality unsafe operation. + + + The byte array containing the serialized object. + The starting position in the rawData array where the object is located. + The object stored in the byte array. + + + + + Blackman window. + + + + By common convention, the unqualified term Blackman window refers to α=0.16. + + + + + + Base abstract class for signal windows. + + + + + + Spectral Window + + + + + + Splits a signal using the current window. + + + + + + Splits a complex signal using the current window. + + + + + + Splits a signal using the current window. + + + + + + Splits a signal using the current window. + + + + + + Gets the Window's length + + + + + + Gets the Window's duration + + + + + + Constructs a new Window. + + + + + + Constructs a new Window. + + + + + + Constructs a new Window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Gets the window length. + + + + + + Gets the Window duration. + + + + + + Gets or sets values for the Window function. + + + + + + Constructs a new Blackman window. + + + The length for the window. + + + + + Constructs a new Blackman window. + + + Blackman's alpha + The length for the window. + + + + + Rectangular Window. + + + + + The rectangular window (sometimes known as the boxcar or Dirichlet window) + is the simplest window, equivalent to replacing all but N values of a data + sequence by zeros, making it appear as though the waveform suddenly turns + on and off. + + + References: + + + Wikipedia, The Free Encyclopedia. Window function. Available on: + http://en.wikipedia.org/wiki/Window_function + + + + + + + Constructs a new Rectangular Window. + + + + + + Constructs a new Rectangular Window. + + + + + + Splits a signal using the current window. + + + + + + Splits a complex signal using the current window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Gets the Window's length. + + + + + + Gets the Window's duration. + + + + + + Raised Cosine Window. + + + + + The "raised cosine" window is a family of temporal windows, from which + the most known representative members are the Hann and Hamming windows. + + + References: + + + Wikipedia, The Free Encyclopedia. Window function. Available on: + http://en.wikipedia.org/wiki/Window_function + + + + + + + Constructs a new Raised Cosine Window + + + + + + Constructs a new Raised Cosine Window + + + + + + Constructs a new Raised Cosine Window + + + + + + Creates a new Hamming Window. + + + + + + Creates a new Hann Window. + + + + + + Creates a new Hann Window. + + + + + + Creates a new Rectangular Window. + + + The size of the window. + + + + + Extension methods. + + + + + + Applies forward fast Fourier transformation to a complex signal array. + + + + + + Applies backward fast Fourier transformation to a complex signal array. + + + + + + Applies forward fast Hilbert transformation to a complex signal array. + + + + + + Applies backward fast Hilbert transformation to a complex signal array. + + + + + + Splits a signal using a window + + + + + + Splits a signal using a window + + + + + + Splits a signal using a window + + + + + + Splits a signal using a window + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audition.dll b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audition.dll new file mode 100644 index 0000000000..40702dc3a Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audition.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audition.xml b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audition.xml new file mode 100644 index 0000000000..9abed319c --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net35/Accord.Audition.xml @@ -0,0 +1,70 @@ + + + + Accord.Audition + + + + + Energy-based beat detector. + + + + + References: + + + Frederic Patin, Beat Detection Algorithms. Available on: + http://www.gamedev.net/reference/programming/features/beatdetection. + + + + + + + + Common interface for Beat detectors. + + + + + Raised when a beat has been detected. + + + + + Creates a new Energy-based beat detector. + + + The size for the buffer. + + + + + Detects if there is a beat in the given signal. + + + A signal (window). + + + + + Raised when a beat has been detected. + + + + + + Gets or sets whether the detector should + compute the best sensitivity automatically. + + + + + + Gets or sets the sensitivity of the detector. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audio.dll b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audio.dll new file mode 100644 index 0000000000..23b3b57bb Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audio.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audio.xml b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audio.xml new file mode 100644 index 0000000000..c5d2a5b87 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audio.xml @@ -0,0 +1,3326 @@ + + + + Accord.Audio + + + + + Information about a audio frame. + + + This is a base class, which keeps basic information about a frame sample, like its + sampling rate, bits per sample, etc. Classes, which inherit from this, may define more properties + describing certain audio formats. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Number of channels. + + + + + + Sampling rate. + + + + + + Number of bits per audio sample. + + + + + + Frame's index. + + + + + + Total frames in the audio. + + + + + + Audio decoder interface, which specifies set of methods that should + be implemented by audio decoders for different file formats. + + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + Implementation of this method is supposed to read audio's header, + checking for correct audio format and reading its attributes. + + Implementations of this method may throw + exception to report about unrecognized audio + format, exception to report about incorrectly + formatted audio or exception to report if + certain formats are not supported. + + + + + + Decode all frames. + + + Returns the decoded signal. + + Implementations of this method may throw + exception in the case if no audio + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted audio. + + + + + + Decode a number of frames. + + + Audio frame index to start decoding. + The number of frames to decode. + + Returns the decoded signal. + + Implementations of this method may throw + exception in the case if no audio + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted audio. + + + + + + Close decoding of previously opened stream. + + + Implementations of this method don't close stream itself, but just close + decoding cleaning all associated data with it. + + + + + Audio encoder interface, which specifies set of methods that should + be implemented by audio encoders for different file formats. + + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + Implementation of this method is supposed to read audio's header, + checking for correct audio format and reading its attributes. + + Implementations of this method may throw + exception to report about unrecognized audio + format, exception to report about incorrectly + formatted audio or exception to report if + certain formats are not supported. + + + + + + Encode all frames. + + + Returns the encoded signal. + + Implementations of this method may throw + exception in the case if no audio + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted audio. + + + + + + Close encoding of previously opened stream. + + + Implementations of this method don't close stream itself, but just close + decoding cleaning all associated data with it. + + + + + Custom function signal generator. + + + + + + Common interface for signal generators. + + + + + + Generates a signal with the given number of samples. + + + The number of samples to generate. + + The generated signal + + + + + Gets or sets the sampling rate used to create signals. + + + + + + Gets or sets the number of channels of the created signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Constructs a new signal generator. + + + + + + Generates a signal. + + + + + + Gets or sets the windowing function to be + applied to each element in the window. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Sine signal generator. + + + + + + Constructs a new Cosine Signal Generator. + + + + + + Constructs a new Cosine Signal Generator. + + + + + + Generates a signal. + + + + + + Gets or sets the Frequency of the sine signal. + + + + + + Gets or sets the Amplitude of the sine signal. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Software mixer for audio sources. + + + + + + Audio Source interface. + + + This interface is implemented by objects which can + generate or capture sounds. Examples are sound card capture + ports, microphones, wave file decoders and others. + + + + + + + Seeks a frame. + + + + This method may throw an NotSupportedException if the source + does not allow repositioning. + + + + + + Start audio source. + + + Starts audio source and return execution to caller. Audio source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signals audio source to stop its work. + + + Signals audio source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait until audio source has stopped. + + + Waits for audio source stopping after it was signaled to stop using + method. + + + + + Stop audio source. + + + Stops audio source aborting its thread. + + + + + New frame block event. + + + This event is used to notify clients about new available audio frame. + + Since audio source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed audio frame, but audio source is responsible for + disposing its own original copy after notifying of clients. + + + + + + Audio source error event. + + + This event is used to notify clients about any type of errors occurred in + audio source object, for example internal exceptions. + + + + + Audio source. + + + The meaning of the property depends on particular audio source. + Depending on audio source it may be a file name, driver guid, URL or any + other string describing the audio source. + + + + + Amount of samples to be read on each frame. + + + + + + Gets the number of audio channels in the source. + + + + + + Gets or sets the sample rate for the source. + + + + Changing this property may throw an NotSupportedException if + the underlying source does not allow resampling. + + + + + + Gets a Boolean value indicating if the source allows repositioning. + + + + + + Received frames count. + + + Number of frames the audio source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the audio source provided from the moment of the last + access to the property. + + + + + + User data. + + + The property allows to associate user data with audio source object. + + + + + State of the audio source. + + + Current state of audio source object - running or not. + + + + + Initializes a new instance of the class. + + + The audio sources to be mixed. + + + + + Initializes a new instance of the class. + + + The audio sources to be mixed. + + + + + Not supported. + + + + + + Start audio source. + + + Starts audio source and return execution to caller. Audio source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signals audio source to stop its work. + + + Signals audio source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for audio source has stopped. + + + Waits for source stopping after it was signaled to stop using + method. + + + + + Stop audio source. + + + Stops audio source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Worker thread. + + + + + + Notifies client about new block of frames. + + + New frame's audio. + + + + + Notifies client about new block of frames. + + + New frame's audio. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + New frame event. + + + Notifies clients about new available frame from audio source. + + Since audio source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed audio frame, because the audio source disposes its + own original copy after notifying of clients. + + + + + + Audio source error event. + + + This event is used to notify clients about any type of errors occurred in + audio source object, for example internal exceptions. + + + + + Gets a string representing this instance. + + + + + + Amount of samples to be read on each frame. + + + + + + Gets the sample rate for the source. + + + + + Gets the number of audio channels in the source. + + + + + + Returns false, as this source doesn't allows repositioning. + + + + + + Received frames count. + + + Number of frames the audio source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the audio source provided from the moment of the last + access to the property. + + + + + + User data. + + + The property allows to associate user data with audio source object. + + + + + State of the audio source. + + + Current state of audio source object - running or not. + + + + + Arguments for audio source error event from audio source. + + + + + + Initializes a new instance of the class. + + + Error description. + + + + + Represents an event with no event data. + + + + + Audio source error description. + + + + + + Arguments for new block event from audio source. + + + + + + Initializes a new instance of the class. + + + New frame index. + The number of frames to play. + + + + + Represents an event with no event data. + + + + + + New block from audio source. + + + + + + Gets how many frames + are going to be played. + + + + + + Arguments for new frame request from an audio output device. + + + + + + Initializes a new instance of the class. + + + The number of samples being requested. + + + + + Initializes a new instance of the class. + + + The initial buffer. + + + + + Gets or sets the buffer to be played in the audio source. + + + + + + Gets or sets whether the playing should stop. + + + + + + Gets the number of samples which should be placed in the buffer. + + + + + + Optional field to inform the player which + is the current index of the frame being played. + + + + + + Arguments for new block event from audio source. + + + + + + Initializes a new instance of the class. + + + New signal frame. + + + + + New Frame from audio source. + + + + + + Audio related exception. + + + The exception is thrown in the case of some audio related issues, like + failure of initializing codec, compression, etc. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + + Unsupported sample format exception. + + + + + The unsupported sample format exception is thrown in the case when a signal + is passed to a signal processing routine which is not prepared to handle its + format. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + + Base signal processing filter + + + + + + Audio processing filter interface. + + + The interface defines the set of methods, which should be + provided by all signal processing filters. Methods of this interface + keep the source signal unchanged and return the result of signal processing + filter as new signal. + + + + + Apply filter to an audio signal. + + + Source signal to apply filter to. + + Returns filter's result obtained by applying the filter to + the source sample. + + The method keeps the source sample unchanged and returns the + the result of the signal processing filter as new sample. + + + + + Apply filter to a windowed audio signal. + + + Source signal to apply filter to. + + Returns filter's result obtained by applying the filter to + the source sample. + + The method keeps the source sample unchanged and returns the + the result of the signal processing filter as new sample. + + + + + Applies the filter to a signal. + + + + + + Creates a new signal from the given signal parameters. This + method can be overridden on child classes to modify how + output signals are created. + + + + + + Applies the filter to a windowed signal. + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Invalid signal properties exception. + + + + + The invalid signal properties exception is thrown in the case when + user provides a signal which do not have the properties expected by + a particular signal processing routine. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + + Arguments for audio source error event from audio source. + + + + + + Initializes a new instance of the class. + + + Error description. + + + + + Represents an event with no event data. + + + + + Audio source error description. + + + + + + Base complex signal processing filter. + + + + + + Audio processing filter, which operates with Fourier transformed + complex audio signal. + + + The interface defines the set of methods, which should be + provided by all signal processing filter, which operate with Fourier + transformed complex image. + + + + + Apply filter to complex signal. + + + Complex signal to apply filter to. + + + + + Apply filter to a windowed complex signal. + + + Complex signal to apply filter to. + + + + + Applies the filter to a signal. + + + + + + Applies the filter to a windowed signal. + + + + + + Processes the filter. + + + + + + Comb filter. + + + + + + Creates a new Comb filter. + + + + + + Processes the filter. + + + + + + Gets or sets the current BPM for the underlying impulse generator. + + + + + + Gets or sets the length of the comb filter. + + + + + + Gets or sets the number of channels for the filter. + + + + + + Differential Rectification filter. + + + + + + Constructs a new Differential Rectification filter. + + + + + + Processes the filter. + + + + + + Hilbert transform based envelope detector. + + + + + This method works by creating the analytic signal of the input by + using a Hilbert transform. An analytic signal is a complex signal, + where the real part is the original signal and the imaginary part + is the Hilbert transform of the original signal. + + The complex envelope of a signal can be found by taking the absolute + (magnitude) value of the analytic signal. + + References: http://en.wikipedia.org/wiki/Hilbert_transform + + + + + + + Constructs a new Envelope filter. + + + + + Processes the filter. + + + + + Filter banks segregates signals into different parts to be further processed. + The most common filter bank is the band-pass filter bank. + + + + + + Apply filter to complex signal. + + + Complex signal to apply filter to. + + + + Apply filter to a windowed complex signal. + + + Windowed complex signal to apply filter to. + + + + Number of filters in the bank. + + + + + Base in-place signal processing filter + + + + + + In-place audio processing filter interface. + + + The interface defines the set of methods, which should be + provided by all signal processing filters. Methods of this interface + operate in-place and alter the original source signal. + + + + + Apply filter to an audio signal. + + + Source signal to apply filter to. + + The method alters the original signal to store + the result of this signal processing filter. + + + + + Apply filter to a windowed audio signal. + + + Source signal to apply filter to. + + The method alters the original signal to store + the result of this signal processing filter. + + + + + Applies the filter to a signal. + + + + + + Apply filter to an audio signal. + + + Source signal to apply filter to. + + + The method alters the original signal to store + the result of this signal processing filter. + + + + + + Creates a new signal from the given signal parameters. This + method can be overridden on child classes to modify how + output signals are created. + + + + + + Applies the filter to a windowed signal. + + + + + + Apply filter to a windowed audio signal. + + + Source signal to apply filter to. + + + The method alters the original signal to store + the result of this signal processing filter. + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Volume adjustment filter. + + + + + + Constructs a new Volume adjustment filter using the given alpha. + + + Volume multiplier. + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the volume multiplier. + + + + + + Time-domain envelope detector. + + + + + To extract the envelope of a time-domain signal, we must first compute + the absolute signal values and then pass it through a low-pass filter. + + + + + + Constructs a new Envelope filter + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Alpha + + + + + + Extracts specified channel of a multiple-channel signal and returns it as a mono signal. + + + + + + Creates a new filter. + + + The index of the channel to be extracted. + + + + + Creates a new signal from the given signal parameters. This + method can be overridden on child classes to modify how + output signals are created. + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the index of the channel + that should be extracted from signals. + + + + + + High-pass band filter + + + + + + Constructs a new High-Pass filter using the given alpha. + + + Band pass alpha. + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the high-pass alpha. + + + + + + Low band pass filter. + + + + + + Constructs a new Low-Pass Filter using the given alpha. + + + Band pass alpha. + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the low-pass alpha. + + + + + + Wave Rectifier filter. + + + + + + Constructs a new Wave rectifier. + + + + + + Applies the filter to a signal. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets whether half rectification should be performed. + + + + + + Impulse train signal generator. + + + + + + Creates a new Impulse Signal Generator. + + + + + + Creates a new Impulse Signal Generator. + + + + + + Generates the given number of samples. + + + + + + Gets or sets the number of channels to generate. + + + + + + Gets or sets the sampling rate of channels to generate. + + + + + + Gets or sets the number of pulses to generate in the signal. + + + + + + Gets or sets the sample format for created signals. + + + + + + Gets or sets the beats per minute for the pulses. + + + + + + Audio Output Interface + + + This interface is implemented by objects which + can reproduce sounds. Examples are sound card outputs, wave + file encoders/writers and special purpose encoders. + + + + + + + Starts playing the buffer + + + + + + Stops playing the buffer + + + + + + Signals audio output to stop its work. + + + Signals audio output to stop its background thread, stop to + request new frames and free resources. + + + + + Wait until audio output has stopped. + + + Waits for audio output stopping after it was signaled to stop using + method. + + + + + Audio output. + + + + + The meaning of the property depends on particular audio output. + Depending on audio source it may be a file name, driver guid, URL + or any other string describing the audio source. + + + + + + Indicates a block of frames have started execution. + + + + + + Indicates all frames have been played and the audio finished. + + + + + + Indicates the audio output is requesting a new sample. + + + + + + Gets a value indicating whether this instance is playing audio. + + + true if this instance is running; otherwise, false. + + + + + + Audio output error event. + + + This event is used to notify clients about any type of errors occurred in + audio output object, for example internal exceptions. + + + + + Virtual Metronome. + + + + Objects from this class acts as virtual metronomes. If connected + to a beat detector, it can be used to determine the tempo (in + beats per minute) of a signal. It can also be used in manual mode + by calling method. For more details, see the + Beat detection sample application which comes together with the + framework. + + + + + + Constructs a new Metronome. + + + + + + Taps the metronome (for tempo detection) + + + + + + Starts the metronome. + + + + + + Stops the metronome. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets or sets the Beats per Minute for this metronome. + + + + + + Gets whether the metronome is currently detecting the tempo being tapped. + + + + + + Fired when the metronome has figured the tapped tempo. + + + + + + Metronome tick. + + + + + + Synchronizing object for thread safety. + + + + + + Static methods to convert between different sample formats. + + + + + Code is mainly based on information available on the original + C source code pa_converters.c from Portable Audio I/O Library. + + This class try to be as fast as possible without using unsafe code. + + + Dither isn't currently supported. Currently supported conversions + are 'to' and 'from' conversions between the following most common + PCM format: + + + Integer 8-bit (byte) + Integer 16-bit (Int16) + Integer 32-bit (Int32) + Single precision 32-bit floating point (float) + + + + + To use it, just call Convert. The compiler will automatically detect + which method to call based on your data types. + + + // Suppose we have a collection of samples in PCM-16 format + // and wish to convert it into IEEE-32 floating point format: + + int[] pcm16Samples = new int [3] { 1, 2, 3 }; // source + float[] floatSamples = new float[3]; // target + + // Call convert passing the source samples. Converted + // IEEE samples in will be stored in the target array. + SampleConverter.Convert(pcm16samples, floatSamples); + + + + + + + Converts a matrix of unsigned 8-bit byte samples + into a array of 16-bit short integer samples. + + + The original sample. + The resulting sample. + + + + + Converts an array of unsigned 8-bit byte samples + into an array of 16-bit short integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a unsigned 8-bit byte sample + into a 16-bit short integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of unsigned 8-bit byte samples + into a matrix of 32-bit integer samples. + + + The original sample. + The resulting sample. + + + + + Converts an array of unsigned 8-bit byte samples + into an array of 32-bit integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a unsigned 8-bit byte sample + into a 32-bit integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of unsigned 8-bit byte samples + into a matrix of 32-bit floating-point samples. + + + The original sample. + The resulting sample. + + + + + Converts an array of unsigned 8-bit byte samples + into an array of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a unsigned 8-bit byte sample + into a 32-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 8-bit unsigned byte sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 32-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 32-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 32-bit signed integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 32-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 64-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 64-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 64-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 8-bit unsigned byte sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 16-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 16-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 16-bit signed integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 32-bit float-point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 32-bit float-point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 32-bit float-point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit float samples + into a matrix of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit float samples + into a array of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit float sample + into a 8-bit unsigned byte sample. + + The original sample. + The resulting sample. + + + + Converts a matrix of 32-bit float samples + into a matrix of 16-bit integer samples. + + The original sample. + The resulting sample. + + + + Converts a array of 32-bit float samples + into a array of 16-bit integer samples. + + The original sample. + The resulting sample. + + + + Converts a 32-bit float sample + into a 16-bit integer sample. + + The original sample. + The resulting sample. + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 32-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Specifies the format of each sample in a signal. + + + + + + Specifies the format is 8 bit, unsigned. + + + + + + Specifies the format is 8 bit, signed. + + + + + + Specifies the format is 16 bit, signed. + + + + + + Specifies the format is 32 bit, signed. + + + + + + Specifies the format is 32 bit, represented by + single-precision IEEE floating-point numbers. + + + + + + Specifies the format is 64 bit, represented by + double-precision IEEE floating-point numbers. + + + + + + Specifies the format is 128 bit, represented by + complex numbers with real and imaginary parts as + double-precision IEEE floating-point numbers. + + + + + + Represents a discrete signal (measured in time). + + + + + A real discrete-time signal is defined as any real-valued + function of the integers. + + In signal processing, sampling is the reduction of a continuous + signal to a discrete signal. A common example is the conversion + of a sound wave (a continuous-time signal) to a sequence of samples + (a discrete-time signal). + + + A sample refers to a value or set of values at a point in time + and/or space. + + Sample usage: + + // create an empty audio signal + Signal signal = new Signal( channels, length, sampleRate, format ); + + + + float[,] data = + { + { 0.00f, 0.2f }, + { 0.32f, 0.1f }, + { 0.22f, 0.2f }, + { 0.12f, 0.42f }, + { -0.12f, 0.1f }, + { -0.22f, 0.2f }, + }; + + // or create an audio signal from an array of audio frames + Signal target = Signal.FromArray(data, sampleRate: 8000); + + + + For an example on how to decode a signal from a Wave file, please + take a look on the WaveDecoder and WaveFileAudioSource documentation. + + + + + + + + Constructs a new signal. + + + The raw data for the signal. + The number of channels for the signal. + The length of the signal. + The sample format for the signal. + The sample date of the signal. + + + + + Constructs a new Signal. + + + The number of channels for the signal. + The length of the signal. + The sample format for the signal. + The sample date of the signal. + + + + + Computes the signal energy. + + + + + + Gets the value of the specified sample in the Signal. + + + The channel's index of the sample to set. + The position of the sample to set. + A floating-point value ranging from -1 to 1 representing + the retrieved value. Conversion is performed automatically from + the underlying signal sample format if supported. + + + + + Sets the value of the specified sample in the Signal. + + + The channel's index of the sample to set. + The position of the sample to set. + A floating-point value ranging from -1 to 1 + specifying the value to set. Conversion will be done automatically + to the underlying signal sample format if supported. + + + + + Creates a new Signal from a float array. + + + + + + Converts this signal to a ComplexSignal object. + + + + + + Creates a new Signal from a float array. + + + + + + Creates a new Signal from a float array. + + + + + + Copies this signal to a given array. + + + + + + Copies this signal to a given array. + + + + + + Copies this signal to a given array. + + + + + + Converts this signal into a array of floating-point samples. + + + An array of single-precision floating-point samples. + + + + + Converts this signal into a array of floating-point samples. + + + An array of single-precision floating-point samples. + + + + + Gets the number of samples contained in a signal of given duration and sampling rate. + + + + + + Gets the duration of each sample in a signal with the given number of samples and sampling rate. + + + + + + Gets the size (in bits) of a sample format. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations + before the is reclaimed by garbage collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets the sample format used by this signal. + + + The signal's sample format. + + + + + Gets the signal duration in milliseconds. + + + + + + Gets the number of samples in each channel of this signal, + as known as the number of frames in the signal. + + + + + + Gets the total number of samples in this signal. + + + + + + Gets the number of samples per second for this signal. + + + + + + Gets the number of channels of this signal. + + + + + + Gets the raw binary data representing the signal. + + + + + + Gets a pointer to the first sample of the signal. + + + + + + Complex signal status. + + + + + + Normal state. + + + + + + Analytic form (Hilbert Transformed) + + + + + + Frequency form (Fourier transformed) + + + + + + Complex audio signal. + + + + + A complex discrete-time signal is any complex-valued function + of integers. This class is used to keep audio signals represented + in complex numbers so they are suitable to be converted to and + from the frequency domain in either analytic or Fourier transformed + forms. + + + References: + + + Wikipedia, The Free Encyclopedia. Analytics Signal. Available on: + http://en.wikipedia.org/wiki/Analytic_signal + + + + + + If your signal has a length that is a power of two, you can use the + following code directly to create your audio signal and obtain its + spectrogram: + + + // Create complex audio signal + ComplexSignal complexSignal = ComplexSignal.FromSignal( signal ); + + // Do forward Fourier transformation + complexSignal.ForwardFourierTransform( ); + + // Generate spectrogram + complexSignal.ToBitmap(512,512); + + + + However, if your signal is too lengthy, or if your signal is not yet in a power of + two size, you can use a temporal window to slice your signal into smaller cuts, as + shown below. In the example, an audio file is being read and its contents are being + decoded and stored into a Signal object. Afterwards, an audio window is being used + to cut the signal into smaller, power-of-two size signals which can then be transformed + into the frequency (Fourier) domain. + + + string fileName = "audio.wav"; + + WaveDecoder sourceDecoder = new WaveDecoder(fileName); + + // Decode the file and store into a signal + Signal sourceSignal = sourceDecoder.Decode(); + + // Create Hamming window so that signal will fit into power of 2: + RaisedCosineWindow window = RaisedCosineWindow.Hamming(1024); + + // Splits the source signal by walking each 512 samples, then creating + // a 1024 sample window. Note that this will result in overlapped windows. + Signal[] windows = sourceSignal.Split(window, 512); + + // You might need to import Accord.Math in order to call this: + ComplexSignal[] complex = windows.Apply(ComplexSignal.FromSignal); + + // Forward to the Fourier domain + complex.ForwardFourierTransform(); + + + + + + + + Constructs a new Complex Signal + + + + + + Constructs a new Complex Signal + + + + + + Constructs a new Complex Signal + + + + + + Converts the complex signal to a complex array. + + + + + + Extracts a channel from the signal. + + + + + + Copies an array of samples to a signal's channel. + + + + + + Applies forward fast Fourier transformation to the complex signal. + + + + + + Applies backward fast Fourier transformation to the complex signal. + + + + + + Applies forward Hilbert transformation to the complex signal. + + + + + Applies backward Hilbert transformation to the complex signal. + + + + + Create multichannel complex signal from floating-point matrix. + + + Source multichannel float array (matrix). + + Returns an instance of complex signal. + + + + + Create multichannel complex signal from floating-point matrix. + + + Source multichannel float array (matrix). + Sampling rate for the signal. + + Returns an instance of complex signal. + + + + + Create complex signal from complex array. + + + Source complex array. + Sample rate of the signal. + + Returns an instance of complex signal. + + + + + Create complex signal from complex array. + + + Source complex array. + Sample rate of the signal. + Status of the signal. + + Returns an instance of complex signal. + + + + + Combines a set of windows into one full signal. + + + + + Gets the status of the signal - Fourier transformed, + Hilbert transformed (analytic) or real. + + + + + + Cosine signal generator. + + + + + + Constructs a new cosine Signal Generator. + + + + + + Constructs a new cosine Signal Generator. + + + + + + Generates a signal. + + + + + + Gets or sets the Frequency of the cosine signal. + + + + + + Gets or sets the Amplitude of the cosine signal. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Square Signal Generator + + + + + Creates a new Square Signal Generator. + + + + + + Generates a signal. + + + + + + Gets or sets the Frequency of the squared signal. + + + + + + Gets or sets the Amplitude of the squared signal. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Tool functions for audio processing. + + + + + + Interleaves the channels into a single array. + + + + + + Interleaves the channels into a single array. + + + + + + Computes the Magnitude spectrum of a complex signal. + + + + + + Computes the Power spectrum of a complex signal. + + + + + + Computes the Phase spectrum of a complex signal. + + + + + + Creates an evenly spaced frequency vector (assuming a symmetric FFT) + + + + + + Gets the spectral resolution for a signal of given sampling rate and number of samples. + + + + + + Gets the power Cepstrum for a complex signal. + + + + + + Computes the Root-Mean-Square (RMS) value of the given samples. + + + The samples. + + The root-mean-square value of the samples. + + + + + Computes the Root-Mean-Square (RMS) value of the given samples. + + + The samples. + The start index. + The number of samples, starting at start index, to compute. + + The root-mean-square value of the samples. + + + + + Computes the maximum value of the given samples. + + + The samples. + + The maximum value of the samples + + + + + Computes the maximum value of the given samples. + + + The samples. + The start index. + The number of samples, starting at start index, to compute. + + The maximum value of the samples + + + + + Finds the peaks of a signal. + + + The samples. + + The index of the peaks found in the sample. + + + + + Finds the peaks of a signal. + + + The samples. + + The index of the peaks found in the sample. + + + + + Serializes (converts) any object to a byte array. + + + The object to be serialized. + The byte array containing the serialized object. + + + + + Deserializes (converts) a byte array to a given structure type. + + + + This is a potentiality unsafe operation. + + + The byte array containing the serialized object. + The object stored in the byte array. + + + + + Deserializes (converts) a byte array to a given structure type. + + + + This is a potentiality unsafe operation. + + + The byte array containing the serialized object. + The starting position in the rawData array where the object is located. + The object stored in the byte array. + + + + + Blackman window. + + + + By common convention, the unqualified term Blackman window refers to α=0.16. + + + + + + Base abstract class for signal windows. + + + + + + Spectral Window + + + + + + Splits a signal using the current window. + + + + + + Splits a complex signal using the current window. + + + + + + Splits a signal using the current window. + + + + + + Splits a signal using the current window. + + + + + + Gets the Window's length + + + + + + Gets the Window's duration + + + + + + Constructs a new Window. + + + + + + Constructs a new Window. + + + + + + Constructs a new Window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Gets the window length. + + + + + + Gets the Window duration. + + + + + + Gets or sets values for the Window function. + + + + + + Constructs a new Blackman window. + + + The length for the window. + + + + + Constructs a new Blackman window. + + + Blackman's alpha + The length for the window. + + + + + Rectangular Window. + + + + + The rectangular window (sometimes known as the boxcar or Dirichlet window) + is the simplest window, equivalent to replacing all but N values of a data + sequence by zeros, making it appear as though the waveform suddenly turns + on and off. + + + References: + + + Wikipedia, The Free Encyclopedia. Window function. Available on: + http://en.wikipedia.org/wiki/Window_function + + + + + + + Constructs a new Rectangular Window. + + + + + + Constructs a new Rectangular Window. + + + + + + Splits a signal using the current window. + + + + + + Splits a complex signal using the current window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Gets the Window's length. + + + + + + Gets the Window's duration. + + + + + + Raised Cosine Window. + + + + + The "raised cosine" window is a family of temporal windows, from which + the most known representative members are the Hann and Hamming windows. + + + References: + + + Wikipedia, The Free Encyclopedia. Window function. Available on: + http://en.wikipedia.org/wiki/Window_function + + + + + + + Constructs a new Raised Cosine Window + + + + + + Constructs a new Raised Cosine Window + + + + + + Constructs a new Raised Cosine Window + + + + + + Creates a new Hamming Window. + + + + + + Creates a new Hann Window. + + + + + + Creates a new Hann Window. + + + + + + Creates a new Rectangular Window. + + + The size of the window. + + + + + Extension methods. + + + + + + Applies forward fast Fourier transformation to a complex signal array. + + + + + + Applies backward fast Fourier transformation to a complex signal array. + + + + + + Applies forward fast Hilbert transformation to a complex signal array. + + + + + + Applies backward fast Hilbert transformation to a complex signal array. + + + + + + Splits a signal using a window + + + + + + Splits a signal using a window + + + + + + Splits a signal using a window + + + + + + Splits a signal using a window + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audition.dll b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audition.dll new file mode 100644 index 0000000000..f4eb3630a Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audition.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audition.xml b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audition.xml new file mode 100644 index 0000000000..9abed319c --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net40/Accord.Audition.xml @@ -0,0 +1,70 @@ + + + + Accord.Audition + + + + + Energy-based beat detector. + + + + + References: + + + Frederic Patin, Beat Detection Algorithms. Available on: + http://www.gamedev.net/reference/programming/features/beatdetection. + + + + + + + + Common interface for Beat detectors. + + + + + Raised when a beat has been detected. + + + + + Creates a new Energy-based beat detector. + + + The size for the buffer. + + + + + Detects if there is a beat in the given signal. + + + A signal (window). + + + + + Raised when a beat has been detected. + + + + + + Gets or sets whether the detector should + compute the best sensitivity automatically. + + + + + + Gets or sets the sensitivity of the detector. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audio.dll b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audio.dll new file mode 100644 index 0000000000..09b7efb68 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audio.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audio.xml b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audio.xml new file mode 100644 index 0000000000..c5d2a5b87 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audio.xml @@ -0,0 +1,3326 @@ + + + + Accord.Audio + + + + + Information about a audio frame. + + + This is a base class, which keeps basic information about a frame sample, like its + sampling rate, bits per sample, etc. Classes, which inherit from this, may define more properties + describing certain audio formats. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Number of channels. + + + + + + Sampling rate. + + + + + + Number of bits per audio sample. + + + + + + Frame's index. + + + + + + Total frames in the audio. + + + + + + Audio decoder interface, which specifies set of methods that should + be implemented by audio decoders for different file formats. + + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + Implementation of this method is supposed to read audio's header, + checking for correct audio format and reading its attributes. + + Implementations of this method may throw + exception to report about unrecognized audio + format, exception to report about incorrectly + formatted audio or exception to report if + certain formats are not supported. + + + + + + Decode all frames. + + + Returns the decoded signal. + + Implementations of this method may throw + exception in the case if no audio + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted audio. + + + + + + Decode a number of frames. + + + Audio frame index to start decoding. + The number of frames to decode. + + Returns the decoded signal. + + Implementations of this method may throw + exception in the case if no audio + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted audio. + + + + + + Close decoding of previously opened stream. + + + Implementations of this method don't close stream itself, but just close + decoding cleaning all associated data with it. + + + + + Audio encoder interface, which specifies set of methods that should + be implemented by audio encoders for different file formats. + + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + Implementation of this method is supposed to read audio's header, + checking for correct audio format and reading its attributes. + + Implementations of this method may throw + exception to report about unrecognized audio + format, exception to report about incorrectly + formatted audio or exception to report if + certain formats are not supported. + + + + + + Encode all frames. + + + Returns the encoded signal. + + Implementations of this method may throw + exception in the case if no audio + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted audio. + + + + + + Close encoding of previously opened stream. + + + Implementations of this method don't close stream itself, but just close + decoding cleaning all associated data with it. + + + + + Custom function signal generator. + + + + + + Common interface for signal generators. + + + + + + Generates a signal with the given number of samples. + + + The number of samples to generate. + + The generated signal + + + + + Gets or sets the sampling rate used to create signals. + + + + + + Gets or sets the number of channels of the created signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Constructs a new signal generator. + + + + + + Generates a signal. + + + + + + Gets or sets the windowing function to be + applied to each element in the window. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Sine signal generator. + + + + + + Constructs a new Cosine Signal Generator. + + + + + + Constructs a new Cosine Signal Generator. + + + + + + Generates a signal. + + + + + + Gets or sets the Frequency of the sine signal. + + + + + + Gets or sets the Amplitude of the sine signal. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Software mixer for audio sources. + + + + + + Audio Source interface. + + + This interface is implemented by objects which can + generate or capture sounds. Examples are sound card capture + ports, microphones, wave file decoders and others. + + + + + + + Seeks a frame. + + + + This method may throw an NotSupportedException if the source + does not allow repositioning. + + + + + + Start audio source. + + + Starts audio source and return execution to caller. Audio source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signals audio source to stop its work. + + + Signals audio source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait until audio source has stopped. + + + Waits for audio source stopping after it was signaled to stop using + method. + + + + + Stop audio source. + + + Stops audio source aborting its thread. + + + + + New frame block event. + + + This event is used to notify clients about new available audio frame. + + Since audio source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed audio frame, but audio source is responsible for + disposing its own original copy after notifying of clients. + + + + + + Audio source error event. + + + This event is used to notify clients about any type of errors occurred in + audio source object, for example internal exceptions. + + + + + Audio source. + + + The meaning of the property depends on particular audio source. + Depending on audio source it may be a file name, driver guid, URL or any + other string describing the audio source. + + + + + Amount of samples to be read on each frame. + + + + + + Gets the number of audio channels in the source. + + + + + + Gets or sets the sample rate for the source. + + + + Changing this property may throw an NotSupportedException if + the underlying source does not allow resampling. + + + + + + Gets a Boolean value indicating if the source allows repositioning. + + + + + + Received frames count. + + + Number of frames the audio source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the audio source provided from the moment of the last + access to the property. + + + + + + User data. + + + The property allows to associate user data with audio source object. + + + + + State of the audio source. + + + Current state of audio source object - running or not. + + + + + Initializes a new instance of the class. + + + The audio sources to be mixed. + + + + + Initializes a new instance of the class. + + + The audio sources to be mixed. + + + + + Not supported. + + + + + + Start audio source. + + + Starts audio source and return execution to caller. Audio source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signals audio source to stop its work. + + + Signals audio source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for audio source has stopped. + + + Waits for source stopping after it was signaled to stop using + method. + + + + + Stop audio source. + + + Stops audio source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Worker thread. + + + + + + Notifies client about new block of frames. + + + New frame's audio. + + + + + Notifies client about new block of frames. + + + New frame's audio. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + New frame event. + + + Notifies clients about new available frame from audio source. + + Since audio source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed audio frame, because the audio source disposes its + own original copy after notifying of clients. + + + + + + Audio source error event. + + + This event is used to notify clients about any type of errors occurred in + audio source object, for example internal exceptions. + + + + + Gets a string representing this instance. + + + + + + Amount of samples to be read on each frame. + + + + + + Gets the sample rate for the source. + + + + + Gets the number of audio channels in the source. + + + + + + Returns false, as this source doesn't allows repositioning. + + + + + + Received frames count. + + + Number of frames the audio source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the audio source provided from the moment of the last + access to the property. + + + + + + User data. + + + The property allows to associate user data with audio source object. + + + + + State of the audio source. + + + Current state of audio source object - running or not. + + + + + Arguments for audio source error event from audio source. + + + + + + Initializes a new instance of the class. + + + Error description. + + + + + Represents an event with no event data. + + + + + Audio source error description. + + + + + + Arguments for new block event from audio source. + + + + + + Initializes a new instance of the class. + + + New frame index. + The number of frames to play. + + + + + Represents an event with no event data. + + + + + + New block from audio source. + + + + + + Gets how many frames + are going to be played. + + + + + + Arguments for new frame request from an audio output device. + + + + + + Initializes a new instance of the class. + + + The number of samples being requested. + + + + + Initializes a new instance of the class. + + + The initial buffer. + + + + + Gets or sets the buffer to be played in the audio source. + + + + + + Gets or sets whether the playing should stop. + + + + + + Gets the number of samples which should be placed in the buffer. + + + + + + Optional field to inform the player which + is the current index of the frame being played. + + + + + + Arguments for new block event from audio source. + + + + + + Initializes a new instance of the class. + + + New signal frame. + + + + + New Frame from audio source. + + + + + + Audio related exception. + + + The exception is thrown in the case of some audio related issues, like + failure of initializing codec, compression, etc. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + + Unsupported sample format exception. + + + + + The unsupported sample format exception is thrown in the case when a signal + is passed to a signal processing routine which is not prepared to handle its + format. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + + Base signal processing filter + + + + + + Audio processing filter interface. + + + The interface defines the set of methods, which should be + provided by all signal processing filters. Methods of this interface + keep the source signal unchanged and return the result of signal processing + filter as new signal. + + + + + Apply filter to an audio signal. + + + Source signal to apply filter to. + + Returns filter's result obtained by applying the filter to + the source sample. + + The method keeps the source sample unchanged and returns the + the result of the signal processing filter as new sample. + + + + + Apply filter to a windowed audio signal. + + + Source signal to apply filter to. + + Returns filter's result obtained by applying the filter to + the source sample. + + The method keeps the source sample unchanged and returns the + the result of the signal processing filter as new sample. + + + + + Applies the filter to a signal. + + + + + + Creates a new signal from the given signal parameters. This + method can be overridden on child classes to modify how + output signals are created. + + + + + + Applies the filter to a windowed signal. + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Invalid signal properties exception. + + + + + The invalid signal properties exception is thrown in the case when + user provides a signal which do not have the properties expected by + a particular signal processing routine. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + + Arguments for audio source error event from audio source. + + + + + + Initializes a new instance of the class. + + + Error description. + + + + + Represents an event with no event data. + + + + + Audio source error description. + + + + + + Base complex signal processing filter. + + + + + + Audio processing filter, which operates with Fourier transformed + complex audio signal. + + + The interface defines the set of methods, which should be + provided by all signal processing filter, which operate with Fourier + transformed complex image. + + + + + Apply filter to complex signal. + + + Complex signal to apply filter to. + + + + + Apply filter to a windowed complex signal. + + + Complex signal to apply filter to. + + + + + Applies the filter to a signal. + + + + + + Applies the filter to a windowed signal. + + + + + + Processes the filter. + + + + + + Comb filter. + + + + + + Creates a new Comb filter. + + + + + + Processes the filter. + + + + + + Gets or sets the current BPM for the underlying impulse generator. + + + + + + Gets or sets the length of the comb filter. + + + + + + Gets or sets the number of channels for the filter. + + + + + + Differential Rectification filter. + + + + + + Constructs a new Differential Rectification filter. + + + + + + Processes the filter. + + + + + + Hilbert transform based envelope detector. + + + + + This method works by creating the analytic signal of the input by + using a Hilbert transform. An analytic signal is a complex signal, + where the real part is the original signal and the imaginary part + is the Hilbert transform of the original signal. + + The complex envelope of a signal can be found by taking the absolute + (magnitude) value of the analytic signal. + + References: http://en.wikipedia.org/wiki/Hilbert_transform + + + + + + + Constructs a new Envelope filter. + + + + + Processes the filter. + + + + + Filter banks segregates signals into different parts to be further processed. + The most common filter bank is the band-pass filter bank. + + + + + + Apply filter to complex signal. + + + Complex signal to apply filter to. + + + + Apply filter to a windowed complex signal. + + + Windowed complex signal to apply filter to. + + + + Number of filters in the bank. + + + + + Base in-place signal processing filter + + + + + + In-place audio processing filter interface. + + + The interface defines the set of methods, which should be + provided by all signal processing filters. Methods of this interface + operate in-place and alter the original source signal. + + + + + Apply filter to an audio signal. + + + Source signal to apply filter to. + + The method alters the original signal to store + the result of this signal processing filter. + + + + + Apply filter to a windowed audio signal. + + + Source signal to apply filter to. + + The method alters the original signal to store + the result of this signal processing filter. + + + + + Applies the filter to a signal. + + + + + + Apply filter to an audio signal. + + + Source signal to apply filter to. + + + The method alters the original signal to store + the result of this signal processing filter. + + + + + + Creates a new signal from the given signal parameters. This + method can be overridden on child classes to modify how + output signals are created. + + + + + + Applies the filter to a windowed signal. + + + + + + Apply filter to a windowed audio signal. + + + Source signal to apply filter to. + + + The method alters the original signal to store + the result of this signal processing filter. + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Volume adjustment filter. + + + + + + Constructs a new Volume adjustment filter using the given alpha. + + + Volume multiplier. + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the volume multiplier. + + + + + + Time-domain envelope detector. + + + + + To extract the envelope of a time-domain signal, we must first compute + the absolute signal values and then pass it through a low-pass filter. + + + + + + Constructs a new Envelope filter + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Alpha + + + + + + Extracts specified channel of a multiple-channel signal and returns it as a mono signal. + + + + + + Creates a new filter. + + + The index of the channel to be extracted. + + + + + Creates a new signal from the given signal parameters. This + method can be overridden on child classes to modify how + output signals are created. + + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the index of the channel + that should be extracted from signals. + + + + + + High-pass band filter + + + + + + Constructs a new High-Pass filter using the given alpha. + + + Band pass alpha. + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the high-pass alpha. + + + + + + Low band pass filter. + + + + + + Constructs a new Low-Pass Filter using the given alpha. + + + Band pass alpha. + + + + + Processes the filter. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets the low-pass alpha. + + + + + + Wave Rectifier filter. + + + + + + Constructs a new Wave rectifier. + + + + + + Applies the filter to a signal. + + + + + + Format translations dictionary. + + + The format translations. + + + The dictionary defines which sample formats are supported for + source signals and which sample format will be used for resulting signal. + + + + + + Gets or sets whether half rectification should be performed. + + + + + + Impulse train signal generator. + + + + + + Creates a new Impulse Signal Generator. + + + + + + Creates a new Impulse Signal Generator. + + + + + + Generates the given number of samples. + + + + + + Gets or sets the number of channels to generate. + + + + + + Gets or sets the sampling rate of channels to generate. + + + + + + Gets or sets the number of pulses to generate in the signal. + + + + + + Gets or sets the sample format for created signals. + + + + + + Gets or sets the beats per minute for the pulses. + + + + + + Audio Output Interface + + + This interface is implemented by objects which + can reproduce sounds. Examples are sound card outputs, wave + file encoders/writers and special purpose encoders. + + + + + + + Starts playing the buffer + + + + + + Stops playing the buffer + + + + + + Signals audio output to stop its work. + + + Signals audio output to stop its background thread, stop to + request new frames and free resources. + + + + + Wait until audio output has stopped. + + + Waits for audio output stopping after it was signaled to stop using + method. + + + + + Audio output. + + + + + The meaning of the property depends on particular audio output. + Depending on audio source it may be a file name, driver guid, URL + or any other string describing the audio source. + + + + + + Indicates a block of frames have started execution. + + + + + + Indicates all frames have been played and the audio finished. + + + + + + Indicates the audio output is requesting a new sample. + + + + + + Gets a value indicating whether this instance is playing audio. + + + true if this instance is running; otherwise, false. + + + + + + Audio output error event. + + + This event is used to notify clients about any type of errors occurred in + audio output object, for example internal exceptions. + + + + + Virtual Metronome. + + + + Objects from this class acts as virtual metronomes. If connected + to a beat detector, it can be used to determine the tempo (in + beats per minute) of a signal. It can also be used in manual mode + by calling method. For more details, see the + Beat detection sample application which comes together with the + framework. + + + + + + Constructs a new Metronome. + + + + + + Taps the metronome (for tempo detection) + + + + + + Starts the metronome. + + + + + + Stops the metronome. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets or sets the Beats per Minute for this metronome. + + + + + + Gets whether the metronome is currently detecting the tempo being tapped. + + + + + + Fired when the metronome has figured the tapped tempo. + + + + + + Metronome tick. + + + + + + Synchronizing object for thread safety. + + + + + + Static methods to convert between different sample formats. + + + + + Code is mainly based on information available on the original + C source code pa_converters.c from Portable Audio I/O Library. + + This class try to be as fast as possible without using unsafe code. + + + Dither isn't currently supported. Currently supported conversions + are 'to' and 'from' conversions between the following most common + PCM format: + + + Integer 8-bit (byte) + Integer 16-bit (Int16) + Integer 32-bit (Int32) + Single precision 32-bit floating point (float) + + + + + To use it, just call Convert. The compiler will automatically detect + which method to call based on your data types. + + + // Suppose we have a collection of samples in PCM-16 format + // and wish to convert it into IEEE-32 floating point format: + + int[] pcm16Samples = new int [3] { 1, 2, 3 }; // source + float[] floatSamples = new float[3]; // target + + // Call convert passing the source samples. Converted + // IEEE samples in will be stored in the target array. + SampleConverter.Convert(pcm16samples, floatSamples); + + + + + + + Converts a matrix of unsigned 8-bit byte samples + into a array of 16-bit short integer samples. + + + The original sample. + The resulting sample. + + + + + Converts an array of unsigned 8-bit byte samples + into an array of 16-bit short integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a unsigned 8-bit byte sample + into a 16-bit short integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of unsigned 8-bit byte samples + into a matrix of 32-bit integer samples. + + + The original sample. + The resulting sample. + + + + + Converts an array of unsigned 8-bit byte samples + into an array of 32-bit integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a unsigned 8-bit byte sample + into a 32-bit integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of unsigned 8-bit byte samples + into a matrix of 32-bit floating-point samples. + + + The original sample. + The resulting sample. + + + + + Converts an array of unsigned 8-bit byte samples + into an array of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a unsigned 8-bit byte sample + into a 32-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 8-bit unsigned byte sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 32-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 32-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 32-bit signed integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 32-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 16-bit integer samples + into a matrix of 64-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 16-bit integer samples + into a array of 64-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 16-bit integer sample + into a 64-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 8-bit unsigned byte sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 16-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 16-bit signed integer samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 16-bit signed integer sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 32-bit float-point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 32-bit float-point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 32-bit float-point sample. + + + The original sample. + The resulting sample. + + + + + Converts a matrix of signed 32-bit float samples + into a matrix of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit float samples + into a array of 8-bit unsigned byte samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit float sample + into a 8-bit unsigned byte sample. + + The original sample. + The resulting sample. + + + + Converts a matrix of 32-bit float samples + into a matrix of 16-bit integer samples. + + The original sample. + The resulting sample. + + + + Converts a array of 32-bit float samples + into a array of 16-bit integer samples. + + The original sample. + The resulting sample. + + + + Converts a 32-bit float sample + into a 16-bit integer sample. + + The original sample. + The resulting sample. + + + + Converts a matrix of signed 32-bit integer samples + into a matrix of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a array of signed 32-bit integer samples + into a array of 32-bit floating point samples. + + + The original sample. + The resulting sample. + + + + + Converts a signed 32-bit integer sample + into a 32-bit floating point sample. + + + The original sample. + The resulting sample. + + + + + Specifies the format of each sample in a signal. + + + + + + Specifies the format is 8 bit, unsigned. + + + + + + Specifies the format is 8 bit, signed. + + + + + + Specifies the format is 16 bit, signed. + + + + + + Specifies the format is 32 bit, signed. + + + + + + Specifies the format is 32 bit, represented by + single-precision IEEE floating-point numbers. + + + + + + Specifies the format is 64 bit, represented by + double-precision IEEE floating-point numbers. + + + + + + Specifies the format is 128 bit, represented by + complex numbers with real and imaginary parts as + double-precision IEEE floating-point numbers. + + + + + + Represents a discrete signal (measured in time). + + + + + A real discrete-time signal is defined as any real-valued + function of the integers. + + In signal processing, sampling is the reduction of a continuous + signal to a discrete signal. A common example is the conversion + of a sound wave (a continuous-time signal) to a sequence of samples + (a discrete-time signal). + + + A sample refers to a value or set of values at a point in time + and/or space. + + Sample usage: + + // create an empty audio signal + Signal signal = new Signal( channels, length, sampleRate, format ); + + + + float[,] data = + { + { 0.00f, 0.2f }, + { 0.32f, 0.1f }, + { 0.22f, 0.2f }, + { 0.12f, 0.42f }, + { -0.12f, 0.1f }, + { -0.22f, 0.2f }, + }; + + // or create an audio signal from an array of audio frames + Signal target = Signal.FromArray(data, sampleRate: 8000); + + + + For an example on how to decode a signal from a Wave file, please + take a look on the WaveDecoder and WaveFileAudioSource documentation. + + + + + + + + Constructs a new signal. + + + The raw data for the signal. + The number of channels for the signal. + The length of the signal. + The sample format for the signal. + The sample date of the signal. + + + + + Constructs a new Signal. + + + The number of channels for the signal. + The length of the signal. + The sample format for the signal. + The sample date of the signal. + + + + + Computes the signal energy. + + + + + + Gets the value of the specified sample in the Signal. + + + The channel's index of the sample to set. + The position of the sample to set. + A floating-point value ranging from -1 to 1 representing + the retrieved value. Conversion is performed automatically from + the underlying signal sample format if supported. + + + + + Sets the value of the specified sample in the Signal. + + + The channel's index of the sample to set. + The position of the sample to set. + A floating-point value ranging from -1 to 1 + specifying the value to set. Conversion will be done automatically + to the underlying signal sample format if supported. + + + + + Creates a new Signal from a float array. + + + + + + Converts this signal to a ComplexSignal object. + + + + + + Creates a new Signal from a float array. + + + + + + Creates a new Signal from a float array. + + + + + + Copies this signal to a given array. + + + + + + Copies this signal to a given array. + + + + + + Copies this signal to a given array. + + + + + + Converts this signal into a array of floating-point samples. + + + An array of single-precision floating-point samples. + + + + + Converts this signal into a array of floating-point samples. + + + An array of single-precision floating-point samples. + + + + + Gets the number of samples contained in a signal of given duration and sampling rate. + + + + + + Gets the duration of each sample in a signal with the given number of samples and sampling rate. + + + + + + Gets the size (in bits) of a sample format. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations + before the is reclaimed by garbage collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets the sample format used by this signal. + + + The signal's sample format. + + + + + Gets the signal duration in milliseconds. + + + + + + Gets the number of samples in each channel of this signal, + as known as the number of frames in the signal. + + + + + + Gets the total number of samples in this signal. + + + + + + Gets the number of samples per second for this signal. + + + + + + Gets the number of channels of this signal. + + + + + + Gets the raw binary data representing the signal. + + + + + + Gets a pointer to the first sample of the signal. + + + + + + Complex signal status. + + + + + + Normal state. + + + + + + Analytic form (Hilbert Transformed) + + + + + + Frequency form (Fourier transformed) + + + + + + Complex audio signal. + + + + + A complex discrete-time signal is any complex-valued function + of integers. This class is used to keep audio signals represented + in complex numbers so they are suitable to be converted to and + from the frequency domain in either analytic or Fourier transformed + forms. + + + References: + + + Wikipedia, The Free Encyclopedia. Analytics Signal. Available on: + http://en.wikipedia.org/wiki/Analytic_signal + + + + + + If your signal has a length that is a power of two, you can use the + following code directly to create your audio signal and obtain its + spectrogram: + + + // Create complex audio signal + ComplexSignal complexSignal = ComplexSignal.FromSignal( signal ); + + // Do forward Fourier transformation + complexSignal.ForwardFourierTransform( ); + + // Generate spectrogram + complexSignal.ToBitmap(512,512); + + + + However, if your signal is too lengthy, or if your signal is not yet in a power of + two size, you can use a temporal window to slice your signal into smaller cuts, as + shown below. In the example, an audio file is being read and its contents are being + decoded and stored into a Signal object. Afterwards, an audio window is being used + to cut the signal into smaller, power-of-two size signals which can then be transformed + into the frequency (Fourier) domain. + + + string fileName = "audio.wav"; + + WaveDecoder sourceDecoder = new WaveDecoder(fileName); + + // Decode the file and store into a signal + Signal sourceSignal = sourceDecoder.Decode(); + + // Create Hamming window so that signal will fit into power of 2: + RaisedCosineWindow window = RaisedCosineWindow.Hamming(1024); + + // Splits the source signal by walking each 512 samples, then creating + // a 1024 sample window. Note that this will result in overlapped windows. + Signal[] windows = sourceSignal.Split(window, 512); + + // You might need to import Accord.Math in order to call this: + ComplexSignal[] complex = windows.Apply(ComplexSignal.FromSignal); + + // Forward to the Fourier domain + complex.ForwardFourierTransform(); + + + + + + + + Constructs a new Complex Signal + + + + + + Constructs a new Complex Signal + + + + + + Constructs a new Complex Signal + + + + + + Converts the complex signal to a complex array. + + + + + + Extracts a channel from the signal. + + + + + + Copies an array of samples to a signal's channel. + + + + + + Applies forward fast Fourier transformation to the complex signal. + + + + + + Applies backward fast Fourier transformation to the complex signal. + + + + + + Applies forward Hilbert transformation to the complex signal. + + + + + Applies backward Hilbert transformation to the complex signal. + + + + + Create multichannel complex signal from floating-point matrix. + + + Source multichannel float array (matrix). + + Returns an instance of complex signal. + + + + + Create multichannel complex signal from floating-point matrix. + + + Source multichannel float array (matrix). + Sampling rate for the signal. + + Returns an instance of complex signal. + + + + + Create complex signal from complex array. + + + Source complex array. + Sample rate of the signal. + + Returns an instance of complex signal. + + + + + Create complex signal from complex array. + + + Source complex array. + Sample rate of the signal. + Status of the signal. + + Returns an instance of complex signal. + + + + + Combines a set of windows into one full signal. + + + + + Gets the status of the signal - Fourier transformed, + Hilbert transformed (analytic) or real. + + + + + + Cosine signal generator. + + + + + + Constructs a new cosine Signal Generator. + + + + + + Constructs a new cosine Signal Generator. + + + + + + Generates a signal. + + + + + + Gets or sets the Frequency of the cosine signal. + + + + + + Gets or sets the Amplitude of the cosine signal. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Square Signal Generator + + + + + Creates a new Square Signal Generator. + + + + + + Generates a signal. + + + + + + Gets or sets the Frequency of the squared signal. + + + + + + Gets or sets the Amplitude of the squared signal. + + + + + + Gets or sets the Sampling Rate of the generated signals. + + + + + + Gets or sets the number of channels for the generated signals. + + + + + + Gets or sets the sample format for created signals. + + + + + + Tool functions for audio processing. + + + + + + Interleaves the channels into a single array. + + + + + + Interleaves the channels into a single array. + + + + + + Computes the Magnitude spectrum of a complex signal. + + + + + + Computes the Power spectrum of a complex signal. + + + + + + Computes the Phase spectrum of a complex signal. + + + + + + Creates an evenly spaced frequency vector (assuming a symmetric FFT) + + + + + + Gets the spectral resolution for a signal of given sampling rate and number of samples. + + + + + + Gets the power Cepstrum for a complex signal. + + + + + + Computes the Root-Mean-Square (RMS) value of the given samples. + + + The samples. + + The root-mean-square value of the samples. + + + + + Computes the Root-Mean-Square (RMS) value of the given samples. + + + The samples. + The start index. + The number of samples, starting at start index, to compute. + + The root-mean-square value of the samples. + + + + + Computes the maximum value of the given samples. + + + The samples. + + The maximum value of the samples + + + + + Computes the maximum value of the given samples. + + + The samples. + The start index. + The number of samples, starting at start index, to compute. + + The maximum value of the samples + + + + + Finds the peaks of a signal. + + + The samples. + + The index of the peaks found in the sample. + + + + + Finds the peaks of a signal. + + + The samples. + + The index of the peaks found in the sample. + + + + + Serializes (converts) any object to a byte array. + + + The object to be serialized. + The byte array containing the serialized object. + + + + + Deserializes (converts) a byte array to a given structure type. + + + + This is a potentiality unsafe operation. + + + The byte array containing the serialized object. + The object stored in the byte array. + + + + + Deserializes (converts) a byte array to a given structure type. + + + + This is a potentiality unsafe operation. + + + The byte array containing the serialized object. + The starting position in the rawData array where the object is located. + The object stored in the byte array. + + + + + Blackman window. + + + + By common convention, the unqualified term Blackman window refers to α=0.16. + + + + + + Base abstract class for signal windows. + + + + + + Spectral Window + + + + + + Splits a signal using the current window. + + + + + + Splits a complex signal using the current window. + + + + + + Splits a signal using the current window. + + + + + + Splits a signal using the current window. + + + + + + Gets the Window's length + + + + + + Gets the Window's duration + + + + + + Constructs a new Window. + + + + + + Constructs a new Window. + + + + + + Constructs a new Window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Gets the window length. + + + + + + Gets the Window duration. + + + + + + Gets or sets values for the Window function. + + + + + + Constructs a new Blackman window. + + + The length for the window. + + + + + Constructs a new Blackman window. + + + Blackman's alpha + The length for the window. + + + + + Rectangular Window. + + + + + The rectangular window (sometimes known as the boxcar or Dirichlet window) + is the simplest window, equivalent to replacing all but N values of a data + sequence by zeros, making it appear as though the waveform suddenly turns + on and off. + + + References: + + + Wikipedia, The Free Encyclopedia. Window function. Available on: + http://en.wikipedia.org/wiki/Window_function + + + + + + + Constructs a new Rectangular Window. + + + + + + Constructs a new Rectangular Window. + + + + + + Splits a signal using the current window. + + + + + + Splits a complex signal using the current window. + + + + + + Splits a signal using the window. + + + + + + Splits a signal using the window. + + + + + + Gets the Window's length. + + + + + + Gets the Window's duration. + + + + + + Raised Cosine Window. + + + + + The "raised cosine" window is a family of temporal windows, from which + the most known representative members are the Hann and Hamming windows. + + + References: + + + Wikipedia, The Free Encyclopedia. Window function. Available on: + http://en.wikipedia.org/wiki/Window_function + + + + + + + Constructs a new Raised Cosine Window + + + + + + Constructs a new Raised Cosine Window + + + + + + Constructs a new Raised Cosine Window + + + + + + Creates a new Hamming Window. + + + + + + Creates a new Hann Window. + + + + + + Creates a new Hann Window. + + + + + + Creates a new Rectangular Window. + + + The size of the window. + + + + + Extension methods. + + + + + + Applies forward fast Fourier transformation to a complex signal array. + + + + + + Applies backward fast Fourier transformation to a complex signal array. + + + + + + Applies forward fast Hilbert transformation to a complex signal array. + + + + + + Applies backward fast Hilbert transformation to a complex signal array. + + + + + + Splits a signal using a window + + + + + + Splits a signal using a window + + + + + + Splits a signal using a window + + + + + + Splits a signal using a window + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audition.dll b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audition.dll new file mode 100644 index 0000000000..4bb5d97a5 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audition.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audition.xml b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audition.xml new file mode 100644 index 0000000000..9abed319c --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Audio.3.0.2/lib/net45/Accord.Audition.xml @@ -0,0 +1,70 @@ + + + + Accord.Audition + + + + + Energy-based beat detector. + + + + + References: + + + Frederic Patin, Beat Detection Algorithms. Available on: + http://www.gamedev.net/reference/programming/features/beatdetection. + + + + + + + + Common interface for Beat detectors. + + + + + Raised when a beat has been detected. + + + + + Creates a new Energy-based beat detector. + + + The size for the buffer. + + + + + Detects if there is a beat in the given signal. + + + A signal (window). + + + + + Raised when a beat has been detected. + + + + + + Gets or sets whether the detector should + compute the best sensitivity automatically. + + + + + + Gets or sets the sensitivity of the detector. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/Accord.Controls.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/Accord.Controls.3.0.2.nupkg new file mode 100644 index 0000000000..017023fb9 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/Accord.Controls.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net35/Accord.Controls.dll b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net35/Accord.Controls.dll new file mode 100644 index 0000000000..7473afcab Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net35/Accord.Controls.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net35/Accord.Controls.xml b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net35/Accord.Controls.xml new file mode 100644 index 0000000000..7228136eb --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net35/Accord.Controls.xml @@ -0,0 +1,3096 @@ + + + + Accord.Controls + + + + + Chart control. + + + The chart control allows to display multiple charts at time + of different types: dots, lines, connected dots. + + Sample usage: + + // create data series array + double[,] testValues = new double[10, 2]; + // fill data series + for ( int i = 0; i < 10; i++ ) + { + testValues[i, 0] = i; // X values + testValues[i, 1] = Math.Sin( i / 18.0 * Math.PI ); // Y values + } + // add new data series to the chart + chart.AddDataSeries( "Test", Color.DarkGreen, Chart.SeriesType.ConnectedDots, 3 ); + // set X range to display + chart.RangeX = new AForge.Range( 0, 9 ); + // update the chart + chart.UpdateDataSeries( "Test", testValues ); + + + + + + + Required designer variable. + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Add data series to the chart. + + + Data series name. + Data series color. + Data series type. + Width (depends on the data series type, see remarks). + + Adds new empty data series to the collection of data series. To update this + series the method should be used. + + The meaning of the width parameter depends on the data series type: + + Line - width of the line; + Dots - size of dots (rectangular dots with specified width and the same height); + Connected dots - size of dots (dots are connected with one pixel width line). + + + + + + + + Add data series to the chart. + + + Data series name. + Data series color. + Data series type. + Width (depends on the data series type, see remarks). + Specifies if should be updated. + + Adds new empty data series to the collection of data series. + + The updateYRange parameter specifies if the data series may affect displayable + Y range. If the value is set to false, then displayable Y range is not updated, but used the + range, which was specified by user (see property). In the case if the + value is set to true, the displayable Y range is recalculated to fully fit the new data + series. + + + + + + Update data series on the chart. + + + Data series name to update. + Data series values. + + + + + Remove data series from the chart. + + + Data series name to remove. + + + + + Remove all data series from the chart. + + + + + Update Y range. + + + + + Chart's X range. + + + The value sets the X range of data to be displayed on the chart. + + + + + Chart's Y range. + + + The value sets the Y range of data to be displayed on the chart. + + + + + Chart series type enumeration. + + + + + Line style. + + + + + Dots style. + + + + + Connected dots style. + + + + + The class provides simple API for enumerating available joysticks and checking their + current status. + + + The class provides simple access to joysticks (game controllers) through using + Win32 API, which allows to enumerate available devices and query their status (state of all buttons, + axes, etc). + + Sample usage: + + // enumerate available devices + List<Joystick.DeviceInfo> devices = Joystick.GetAvailableDevices( ); + + foreach ( Joystick.DeviceInfo di in devices ) + { + System.Diagnostics.Debug.WriteLine( + string.Format( "{0} : {1} ({2} axes, {3} buttons)", + di.ID, di.Name, di.Axes, di.Buttons ) ); + } + + + // create new joystick and initialize it + Joystick joystick = new Joystick( 0 ); + // get its current status + Joystick.Status status = joystick.GetCurrentStatus( ); + // check if 1st button is pressed + if ( status.IsButtonPressed( Joystick.Buttons.Button1 ) ) + { + // 1st button is pressed + } + + + + + + + Get list of available joysticks connected to the system. + + + Returns list containing information about available joysticks connected to + the system. + + + + + Initializes a new instance of the class. + + + This constructor does not make initialization of any joystick + device, so method should be used before querying joystick + status or properties. + + + + + Initializes a new instance of the class. + + + Joystick ID to initialize, [0, 15]. + + This constructor initializes joystick with specified ID using + method, so the object becomes ready for querying joystick's + status. + + + + + Initialize joystick with the specified ID. + + + Joystick's ID to initialize, [0, 15]. + + + + Invalid joystick ID was specified. It must be in [0, 15] range. + The requested joystick is not connected to the system. + + + + + Get joystick's status. + + + Returns current status of initialized joystick, which provides information + about current state of all axes, buttons and point of view. + + Before using this method the joystick object needs to be initialized + using method or constructor. + + The requested joystick is not connected to the system. + Joystick was not initialized. + + + + + Information about initialized joystick. + + + The property keeps information about joystick, which was + initialized using method. If no joystick was initialized, + then accessing this property will generate + exception. + + Joystick was not initialized. + + + + + Information about joystick connected to the system. + + + + + + Joystick ID, [0..15]. + + + + + Joystick name. + + + + + Number of joystick axes. + + + + + Number of joystick buttons. + + + + + Class describing current joystick's status. + + + All joystick axes' positions are measured in [-1, 1] range, where + 0 corresponds to center position - axis is not deflected (directed) to any side. + + + + + Check if certain button (or combination of buttons) is pressed. + + + Button to check state of. + + Returns if the specified button is pressed or + otherwise. + + + + + Position of X axis, [-1, 1]. + + + + + Position of Y axis, [-1, 1]. + + + + + Position of Z axis, [-1, 1]. + + + + + Position of R axis - 4th joystick's axes, [-1, 1]. + + + + + Position of U axis - 5th joystick's axes, [-1, 1]. + + + + + Position of V axis - 6th joystick's axes, [-1, 1]. + + + + + Joystick buttons' state. + + + + + Current point of view state, [0, 359]. + + + + + + Flags enumeration of joystick buttons. + + + + + 1st button. + + + + + 2nd button. + + + + + 3rd button. + + + + + 4th button. + + + + + 5th button. + + + + + 6th button. + + + + + 7th button. + + + + + 8th button. + + + + + 9th button. + + + + + 10th button. + + + + + 11th button. + + + + + 12th button. + + + + + 13th button. + + + + + 14th button. + + + + + 15th button. + + + + + 16th button. + + + + + Array data type (i.e. jagged or multidimensional). + + + + + + Simple array type (i.e. double[]). + + + + + + Jagged array type (i.e. double[][]). + + + + + + Multidimensional array type (i.e. double[,]) + + + + + + Represents a data bondable, customized view of two dimensional array + + + + + + Initializes a new ArrayDataView from array. + + + array of data. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + array of data. + collection of column names. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + array of data. + collection of column names. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + Array of data. + Collection of column names. + Collection of row names. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + Array of data. + Collection of column names. + Collection of row names. + + + + + Resets the data binding. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Multidimensional arrays do not support Array copying. + + + + + + Gets the array enumerator. + + + + + Raised when the list changes. + + + + Gets the column names for the array currently bound. + + + + + + Gets the row names for the array currently bound. + + + + + + Gets or sets the array currently bound. + + + + + + Gets the type of the array currently bound. + + + + + + Gets the number of rows in the data-bound array. + + + + + + Gets the number of columns in the data-bound array. + + + + + + Arrays do not allow for member insertion. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Arrays do not allow member removal. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Gets whether this view allows editing. Always true. + + + + + + This view is read only. + + + + + + Gets a row from this view. + + + + + + Arrays are always fixed size. + + + + + + Returns false. + + + + + + Gets the length of the array. + + + + + + Does nothing. + + + + + + Provides an abstraction of array values. + + + + + + Constructs a new Array Property Descriptor. + + + A title for the array. + The type of the property being displayed. + The index to display. + + + + + Gets a value from the array. + + + + + + Sets a value to the array. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + + + Returns the name of the array. + + + + + + Returns the type of ArrayRowView. + + + + + + Returns false. + + + + + + Gets the type of the underlying multidimensional array. + + + + + + Represents a row from array view. + + + + + + Initializes a new instance of the class. + + + + + + Gets the value at the specified position of this row. + + + The column index of the element to get. + + + + + Sets a value to the element at the specified position of this row. + + + The index of the element to set. + The new value for the specified element. + + + + + Returns null. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns null. + + + + + + Gets the owner ArrayDataView. + + + + + + Does nothing. + + + + + + Gets the values of the multidimensional array as properties. + + + + + + Returns null. + + + + + Returns null. + + + + + Returns null. + + + + + Gets the name of this class. + + + + + Does nothing. + + + + + Does nothing. + + + + + Does nothing. + + + + + Gets the row name. + + + + + + Gets the error message for the property with the given name. + + + + + + Gets an error message indicating what is wrong with this object. + + + + An error message indicating what is wrong with this object. The default is an empty string (""). + + + + + + Provides an abstraction of the confusion matrix values. + + + + + + Initializes a new instance of the class. + + + The name for the column. + Index of the column. + + + + + Gets a value from the array. + + + + + + Not supported. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + + + Gets the index of the column being represented. + + + + + + Returns the name of the array. + + + + + + Returns the type of ArrayRowView. + + + + + + Returns true. + + + + + + Returns System.Double. + + + + + + Represents a row from a . + + + + + + Returns null. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns null. + + + + + + Gets the owner ArrayDataView. + + + + + + Does nothing. + + + + + + Gets the values of the multidimensional array as properties. + + + + + + Gets the value for a given element in this row. + + + The column index of an element. + + The element at this row located at position . + + + + + Returns null. + + + + + Returns null. + + + + + Returns null. + + + + + Gets the name of this class. + + + + + Gets the owner of this row. + + + + + + Gets the index for this row. + + + + + + Gets the row's header. + + + + + + Represents a data bondable, customized view of a + confusion matrix. + + + + + + Initializes a new instance of the class. + + + The confusion matrix. + + + + + Initializes a new instance of the class. + + + The confusion matrix. + + + + + Resets the data binding. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Multidimensional arrays do not support Array copying. + + + + + + Multidimensional arrays do not support Array copying. + + + + + + Gets the array enumerator. + + + + + + Gets the Confusion Matrix being shown. + + + + + + Gets or sets whether the control should + display proportions instead of counts. + + + + + + Gets the names for the columns in the matrix. + + + + + + Gets the names for the rows in the matrix. + + + + + + Occurs when the list changes or an item in the list changes. + + + + + + Arrays do not allow for member insertion. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns true. + + + + + + Gets whether this view allows editing. Always true. + + + + + + This view is read only. + + + + + + Gets a row from this view. + + + + + + Arrays are always fixed size. + + + + + + Returns false. + + + + + + Gets the length of the array. + + + + + + Does nothing. + + + + + + Provides an abstraction for array names. + + + + + + Constructs a new Array Property Descriptor. + + + A title for the array. + + + + + Gets a value from the array. + + + + + + Sets a value to the array. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + + + Returns the name of the array. + + + + + + Returns the type of ArrayRowView. + + + + + + Returns false. + + + + + + Gets the type of the underlying multidimensional array. + + + + + + Data Series Box for quickly displaying a form with a time + series plot on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Create some data + string[] labels = { "1", "2", "3" }; + double[] data = { 100.0, 150.0, 42.0 }; + + // Display it onscreen + DataBarBox.Show(labels, data).Hold(); + + + + + + + + + Sets the window title of the data series box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets properties for the graph being shown. + + + The actions to be performed to the graph pane. + + + + + Displays a bar plot. + + + The text labels for the bars. + The value at each bar. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Histogram Box for quickly displaying a form with a histogram + on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Generate some normally distributed samples + double[] data = NormalDistribution.Standard.Generate(100); + + // Display it onscreen + HistogramBox.Show(data).Hold(); + + + + + + + + + Blocks the caller until the form is closed. + + + + + + Sets size of the scatter plot window. + + + The desired width. + The desired height. + + This instance, for fluent programming. + + + + + Sets the window title of the histogram box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets the bins width in the histogram. + + + The bin width to be used. + + + + + Sets the number of bins in the histogram. + + + The number of bins to be used. + + + + + Displays an histogram with the specified data. + + + The histogram values. + + + + + Displays a histogram with the specified data. + + + The title for the histogram window. + The histogram values. + + + + + Displays a histogram. + + + The histogram to show. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the + control used to display data in this box. + + + The histogram view control. + + + + + Color sequence for displaying categorical images. + + + + + References: + + + C.A. Glasbey, G.W.A.M. van der Heijden, V.F.K. Toh, A.J. Gray. (2007). + Color displays for categorical images, Color Research and Application, 32, 304-309 + Available in: http://www.bioss.ac.uk/staff/chris/colorpaper.pdf + + + + + + + Gets a list of the first 32 perceptually distinct + colors as detected in the investigation by [Glasbey et al]. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The number of colors to generate. + + + + + Initializes a new instance of the class. + + The number of colors to generate. + If set to true white color is skipped. + If set to true generates a sequence of random colors. + + + + + Gets the with specified index. + + + + + + Returns an enumerator that iterates through the color collection. + + + An object that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through the color collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the with specified index. + + + + + + Gets the number of colors in this sequence. + + + + + + Type converter for + and objects. + + + + + + Returns true. + + + + + + Creates an instance of the type that this is associated with, using the specified context, given a set of property values for the object. + + + An that provides a format context. + An of new property values. + + + An representing the given , or null if the object cannot be created. This method always returns null. + + + + + + Returns true. + + + + + + Returns a collection of properties for the type of array specified by the value parameter, using the specified context and attributes. + + + An that provides a format context. + An that specifies the type of array for which to get properties. + An array of type that is used as a filter. + + + A with the properties that are exposed for this data type, or null if there are no properties. + + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + An that provides a format context. + A that represents the type you want to convert from. + + + true if this converter can perform the conversion; otherwise, false. + + + + + + Returns whether this converter can convert the object to the specified type, using the specified context. + + + An that provides a format context. + A that represents the type you want to convert to. + + + true if this converter can perform the conversion; otherwise, false. + + + + + + Converts the given value object to the specified type, using the specified context and culture information. + + + An that provides a format context. + A . If null is passed, the current culture is assumed. + The to convert. + The to convert the parameter to. + + + An that represents the converted value. + + + + The parameter is null. + + + + The conversion cannot be performed. + + + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that provides a format context. + The to use as the current culture. + The to convert. + + + An that represents the converted value. + + + The conversion cannot be performed. + + + + + Assign this converter to the AForge types. This method + should be called before an AForge range type can be + bound to controls such as the PropertyGrid. + + + + + + Data Series Box for quickly displaying a form with a time + series plot on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + + Sets the window title of the data series box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets properties for the graph being shown. + + + The actions to be performed to the graph pane. + + + + + Sets the data labels for the values being shown. + + + The text labels. + The text size. + + + + + Displays a scatter plot with the specified data. + + + The title for the data. + The data series. + + + + + Displays a scatter plot with the specified data. + + + The x-values for the data series. + The data series. + + + + + Displays a scatter plot with the specified data. + + + The x-values for the data series. + The data series. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The functions argument range to be plotted. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The number of points to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The maximum value for the functions argument parameter. + The minimum value for the functions argument parameter. + The step size to use during plotting. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Data Grid Box for quickly displaying a form with a DataGridView + on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Create some data + double[,] data = Matrix.Identity(5); + + // Display it onscreen + DataGridBox.Show(data).Hold(); + + + + + + + + + Sets the cell font size. + + + + + + Sets the visibility of the column headers. + + + + + + Sets the visibility of the row headers. + + + + + + Sets the auto-size mode for the columns. + + + + + + Sets the auto-size mode for the rows. + + + + + + Blocks the caller until the form is closed. + + + + + + Closes the form. + + + + + + Sets the window title of the data grid box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Displays a Data Grid View with the specified data. + + + The source object to display. + The title for the data window. + + The Data Grid Box being shown. + + + + + Displays a Data Grid View with the specified data. + + + The source table to display. + + The Data Grid Box being shown. + + + + + Displays a Data Grid View with the specified data. + + + The array to be displayed. + A collection of column names to be displayed. + A collection of row names to be displayed. + The title for the data window. + + The Data Grid Box being shown. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the control contained + in this box. As it runs on a different thread, any + operations needs to be invoked on the control's thread. + + + + + + Denavit Hartenberg Viewer. + + + + This class can be used to visualize a D-H model as bitmaps. + + + + + + Initializes a new instance of the class. + + + Width of the drawing window + Height of the drawing window + + + + + Makes a list of all the models contained on a + ModelCombinator. This function is recursive. + + + + ModelCombinator model in which to extract all the models. + + List of already extracted models. It accumulates all the + models at each call of this function. + + Returns a list of all the models contained in the + ModelCombinator 'model' plus all previously extracted models + + + + + Computes the three images of a list of ModelCombinator + + + List of arguments of models to be drawn + + This function assumes that the models have already been calculated. + + + + + Computes the three images of a list of models + + + List of arguments of models + + + + + Method to draw arrows to indicate the axis. + + + Graphics variable to use to draw. + Text to draw on the top of the arrow. + Text to draw on the right arrow. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the color of the links between joints + + + + + + Gets or sets the color of the joints + + + + + + Gets or sets the color of the last joint of a model + + + + + + Gets or sets the color of the first joint of a model + + + + + + Gets or sets the color of the rendering surface background + + + + + + Gets or sets the value to scale the drawing of the model to fit the window. Default is 1. + + + + + + Gets or sets the radius of the joints circles. Default is 8. + + + + + + Gets or sets the arrows indicating the axes on each drawing represented as a Rectangle object. + + + + + + Image of the model viewed on the XY plane. + + + + + + Image of the model viewed on the YZ plane. + + + + + + Image of the model viewed on the XZ plane. + + + + + + Type editor for numeric collections. + + + + This class can be used to edit numeric collections + more easily in property grids. + + + + + + Initializes a new instance of the class. + + + + + + Edits the specified object's value using the editor style indicated by the method. + + + An that can be used to gain additional context information. + An that this editor can use to obtain services. + The object to edit. + + + The new value of the object. If the value of the object has not changed, this should return the same object it was passed. + + + + + + Gets the editor style used by the method. + + + An that can be used to gain additional context information. + + + A value that indicates the style of editor used by the method. If the does not support this method, then will return . + + + + + + Gets the items in the collection as a . + + + The collection object being edited. + + The items contained in . + + + + + Sets the items in the collection. + + + The collection object being edited. + The objects to be added in the collection. + + + + + Gets the type of the items contained in the collection. + + + + + + Gets the type of the collection. + + + + + + Numeric collection editor. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The editor. + The value. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Component visualization control. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Forces a update of the scatter plot. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the underlying scatter plot being shown by this control. + + + + + + Gets a reference to the underlying ZedGraph + control used to draw the scatter plot. + + + + + + Gets or sets whether this control should present + the individual proportion for each component, or + the cumulative proportion in a single line curve. + + + + + + Decision Tree (DT) Viewer. + + + + + + Initializes a new instance of the class. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets or sets the currently displayed + Decision Tree. + + + The decision tree being displayed. + + + + + Gets or sets the codebook to be used when + displaying the tree. Using a codebook avoids + showing integer labels which may be difficult + to interpret. + + + + + + Extension methods for Windows Forms' controls. + + + + + + Enables the display of recursively nested properties + in the Windows.Forms' DataGridView control. + + + The to enable nested properties. + True to use nested properties, false otherwise. + + + This method will register a custom cell formatting event in the DataGridView and + retrieve any nested property specified in the column's DataPropertyName property + using reflection. This method is based on th idea by Antonio Bello, originally + shared in: + + http://www.developer-corner.com/2007/07/datagridview-how-to-bind-nested-objects_18.html + + + + + + + Histogram visualization control. + + + + + + Constructs a new instance of the HistogramView. + + + + + + Forces a update of the Histogram bins. + + + + + + Forces the update of the trackbar control. + + + + + + Resets custom settings for a fixed number of bins or bin width. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets a reference to the underlying ZedGraph + control used to draw the histogram. + + + + + + Gets the trackbar which controls + the histogram bins' width. + + + + + + Gets or sets a fixed bin width to be used by + the histogram view. Setting this value to null + will set the histogram to the default position. + + + + + + Gets or sets a fixed number of bins to be used by + the histogram view. Setting this value to null + will set the histogram to the default position. + + + + + + Gets the underlying histogram being shown by this control. + + + + + + Gets or sets a data source for this control. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets or sets the member of the data source + to be displayed, if applicable. + + + + + + Gets or sets the format used to display + the histogram values on screen. + + + + + + Scatter plot Box for quickly displaying a form with a scatter + plot on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Create unlabeled (x,y) points + double[,] points = + { + { 1, 1 }, { 1, 4 }, + { 4, 1 }, { 4, 4 }, + }; + + // Display them onscreen + ScatterplotBox.Show(points).Hold(); + + // Create labels for the points + int[] classes = { 0, 1, 0, 1 }; + + // Display it onscreen with labels + ScatterplotBox.Show(points, classes).Hold(); + + + + + + + + + + + Blocks the caller until the form is closed. + + + + + + Sets the size of the symbols in the scatter plot. + + + The desired symbol size. + + This instance, for fluent programming. + + + + + Sets the window title of the scatterplot box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets size of the scatter plot window. + + + The desired width. + The desired height. + + This instance, for fluent programming. + + + + + Sets whether to show lines connecting + sequential points in the scatter plot. + + + + + + Sets whether to remove the grace space + between the axis labels and points. + + + + + + Displays a scatter plot with the specified data. + + + The x-values for the data. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + The x-values for the data. + The y-values for the data. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + The x-values for the data. + The y-values for the data. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + The x-values for the data. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot. + + + The scatter plot to show. + + + + + Displays a scatter plot. + + + The function to plot. + The maximum value for the functions argument parameter. + The minimum value for the functions argument parameter. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The function to plot. + The functions argument range to be plotted. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The function to plot. + The functions argument range to be plotted. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The functions argument range to be plotted. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The number of points to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The maximum value for the functions argument parameter. + The minimum value for the functions argument parameter. + The step size to use during plotting. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the + control used to display data in this box. + + + The scatter plot view control. + + + + + Scatter plot visualization control. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Forces a update of the scatter plot. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the underlying scatter plot being shown by this control. + + + + + + Gets or sets a data source for this control. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets a reference to the underlying ZedGraph + control used to draw the scatter plot. + + + + + + Gets or sets whether to show lines connecting + sequential points in the scatter plot. + + + + + + Gets or sets the size of the symbols displayed + on each point. Setting to zero hides the symbols. + + + + + + Gets or sets whether to remove the grace + space between the axis labels and points. + + + + + + Property comparer. + + The type of the elements to compare. + + + + Constructs a new property comparer. + + + + + Compares two values. + + + + + Sets the property being sorted and the sorting direction. + + + + + Sortable binding list. + + The type of the elements in the list. + + + + + Constructs a new SortableBindingList. + + + + + Constructs a new SortableBindingList. + + + + + Sorts the items. + + + + + Removes any sort applied. + + + + + Searches for the index of a item with a specific property descriptor and value + + + + + Returns true. + + + + + Gets whether this list is sorted. + + + + + Gets the current property being sorted. + + + + + Gets the sort order direction. + + + + + Returns true. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net40/Accord.Controls.dll b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net40/Accord.Controls.dll new file mode 100644 index 0000000000..0434ba96d Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net40/Accord.Controls.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net40/Accord.Controls.xml b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net40/Accord.Controls.xml new file mode 100644 index 0000000000..7228136eb --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net40/Accord.Controls.xml @@ -0,0 +1,3096 @@ + + + + Accord.Controls + + + + + Chart control. + + + The chart control allows to display multiple charts at time + of different types: dots, lines, connected dots. + + Sample usage: + + // create data series array + double[,] testValues = new double[10, 2]; + // fill data series + for ( int i = 0; i < 10; i++ ) + { + testValues[i, 0] = i; // X values + testValues[i, 1] = Math.Sin( i / 18.0 * Math.PI ); // Y values + } + // add new data series to the chart + chart.AddDataSeries( "Test", Color.DarkGreen, Chart.SeriesType.ConnectedDots, 3 ); + // set X range to display + chart.RangeX = new AForge.Range( 0, 9 ); + // update the chart + chart.UpdateDataSeries( "Test", testValues ); + + + + + + + Required designer variable. + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Add data series to the chart. + + + Data series name. + Data series color. + Data series type. + Width (depends on the data series type, see remarks). + + Adds new empty data series to the collection of data series. To update this + series the method should be used. + + The meaning of the width parameter depends on the data series type: + + Line - width of the line; + Dots - size of dots (rectangular dots with specified width and the same height); + Connected dots - size of dots (dots are connected with one pixel width line). + + + + + + + + Add data series to the chart. + + + Data series name. + Data series color. + Data series type. + Width (depends on the data series type, see remarks). + Specifies if should be updated. + + Adds new empty data series to the collection of data series. + + The updateYRange parameter specifies if the data series may affect displayable + Y range. If the value is set to false, then displayable Y range is not updated, but used the + range, which was specified by user (see property). In the case if the + value is set to true, the displayable Y range is recalculated to fully fit the new data + series. + + + + + + Update data series on the chart. + + + Data series name to update. + Data series values. + + + + + Remove data series from the chart. + + + Data series name to remove. + + + + + Remove all data series from the chart. + + + + + Update Y range. + + + + + Chart's X range. + + + The value sets the X range of data to be displayed on the chart. + + + + + Chart's Y range. + + + The value sets the Y range of data to be displayed on the chart. + + + + + Chart series type enumeration. + + + + + Line style. + + + + + Dots style. + + + + + Connected dots style. + + + + + The class provides simple API for enumerating available joysticks and checking their + current status. + + + The class provides simple access to joysticks (game controllers) through using + Win32 API, which allows to enumerate available devices and query their status (state of all buttons, + axes, etc). + + Sample usage: + + // enumerate available devices + List<Joystick.DeviceInfo> devices = Joystick.GetAvailableDevices( ); + + foreach ( Joystick.DeviceInfo di in devices ) + { + System.Diagnostics.Debug.WriteLine( + string.Format( "{0} : {1} ({2} axes, {3} buttons)", + di.ID, di.Name, di.Axes, di.Buttons ) ); + } + + + // create new joystick and initialize it + Joystick joystick = new Joystick( 0 ); + // get its current status + Joystick.Status status = joystick.GetCurrentStatus( ); + // check if 1st button is pressed + if ( status.IsButtonPressed( Joystick.Buttons.Button1 ) ) + { + // 1st button is pressed + } + + + + + + + Get list of available joysticks connected to the system. + + + Returns list containing information about available joysticks connected to + the system. + + + + + Initializes a new instance of the class. + + + This constructor does not make initialization of any joystick + device, so method should be used before querying joystick + status or properties. + + + + + Initializes a new instance of the class. + + + Joystick ID to initialize, [0, 15]. + + This constructor initializes joystick with specified ID using + method, so the object becomes ready for querying joystick's + status. + + + + + Initialize joystick with the specified ID. + + + Joystick's ID to initialize, [0, 15]. + + + + Invalid joystick ID was specified. It must be in [0, 15] range. + The requested joystick is not connected to the system. + + + + + Get joystick's status. + + + Returns current status of initialized joystick, which provides information + about current state of all axes, buttons and point of view. + + Before using this method the joystick object needs to be initialized + using method or constructor. + + The requested joystick is not connected to the system. + Joystick was not initialized. + + + + + Information about initialized joystick. + + + The property keeps information about joystick, which was + initialized using method. If no joystick was initialized, + then accessing this property will generate + exception. + + Joystick was not initialized. + + + + + Information about joystick connected to the system. + + + + + + Joystick ID, [0..15]. + + + + + Joystick name. + + + + + Number of joystick axes. + + + + + Number of joystick buttons. + + + + + Class describing current joystick's status. + + + All joystick axes' positions are measured in [-1, 1] range, where + 0 corresponds to center position - axis is not deflected (directed) to any side. + + + + + Check if certain button (or combination of buttons) is pressed. + + + Button to check state of. + + Returns if the specified button is pressed or + otherwise. + + + + + Position of X axis, [-1, 1]. + + + + + Position of Y axis, [-1, 1]. + + + + + Position of Z axis, [-1, 1]. + + + + + Position of R axis - 4th joystick's axes, [-1, 1]. + + + + + Position of U axis - 5th joystick's axes, [-1, 1]. + + + + + Position of V axis - 6th joystick's axes, [-1, 1]. + + + + + Joystick buttons' state. + + + + + Current point of view state, [0, 359]. + + + + + + Flags enumeration of joystick buttons. + + + + + 1st button. + + + + + 2nd button. + + + + + 3rd button. + + + + + 4th button. + + + + + 5th button. + + + + + 6th button. + + + + + 7th button. + + + + + 8th button. + + + + + 9th button. + + + + + 10th button. + + + + + 11th button. + + + + + 12th button. + + + + + 13th button. + + + + + 14th button. + + + + + 15th button. + + + + + 16th button. + + + + + Array data type (i.e. jagged or multidimensional). + + + + + + Simple array type (i.e. double[]). + + + + + + Jagged array type (i.e. double[][]). + + + + + + Multidimensional array type (i.e. double[,]) + + + + + + Represents a data bondable, customized view of two dimensional array + + + + + + Initializes a new ArrayDataView from array. + + + array of data. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + array of data. + collection of column names. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + array of data. + collection of column names. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + Array of data. + Collection of column names. + Collection of row names. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + Array of data. + Collection of column names. + Collection of row names. + + + + + Resets the data binding. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Multidimensional arrays do not support Array copying. + + + + + + Gets the array enumerator. + + + + + Raised when the list changes. + + + + Gets the column names for the array currently bound. + + + + + + Gets the row names for the array currently bound. + + + + + + Gets or sets the array currently bound. + + + + + + Gets the type of the array currently bound. + + + + + + Gets the number of rows in the data-bound array. + + + + + + Gets the number of columns in the data-bound array. + + + + + + Arrays do not allow for member insertion. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Arrays do not allow member removal. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Gets whether this view allows editing. Always true. + + + + + + This view is read only. + + + + + + Gets a row from this view. + + + + + + Arrays are always fixed size. + + + + + + Returns false. + + + + + + Gets the length of the array. + + + + + + Does nothing. + + + + + + Provides an abstraction of array values. + + + + + + Constructs a new Array Property Descriptor. + + + A title for the array. + The type of the property being displayed. + The index to display. + + + + + Gets a value from the array. + + + + + + Sets a value to the array. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + + + Returns the name of the array. + + + + + + Returns the type of ArrayRowView. + + + + + + Returns false. + + + + + + Gets the type of the underlying multidimensional array. + + + + + + Represents a row from array view. + + + + + + Initializes a new instance of the class. + + + + + + Gets the value at the specified position of this row. + + + The column index of the element to get. + + + + + Sets a value to the element at the specified position of this row. + + + The index of the element to set. + The new value for the specified element. + + + + + Returns null. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns null. + + + + + + Gets the owner ArrayDataView. + + + + + + Does nothing. + + + + + + Gets the values of the multidimensional array as properties. + + + + + + Returns null. + + + + + Returns null. + + + + + Returns null. + + + + + Gets the name of this class. + + + + + Does nothing. + + + + + Does nothing. + + + + + Does nothing. + + + + + Gets the row name. + + + + + + Gets the error message for the property with the given name. + + + + + + Gets an error message indicating what is wrong with this object. + + + + An error message indicating what is wrong with this object. The default is an empty string (""). + + + + + + Provides an abstraction of the confusion matrix values. + + + + + + Initializes a new instance of the class. + + + The name for the column. + Index of the column. + + + + + Gets a value from the array. + + + + + + Not supported. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + + + Gets the index of the column being represented. + + + + + + Returns the name of the array. + + + + + + Returns the type of ArrayRowView. + + + + + + Returns true. + + + + + + Returns System.Double. + + + + + + Represents a row from a . + + + + + + Returns null. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns null. + + + + + + Gets the owner ArrayDataView. + + + + + + Does nothing. + + + + + + Gets the values of the multidimensional array as properties. + + + + + + Gets the value for a given element in this row. + + + The column index of an element. + + The element at this row located at position . + + + + + Returns null. + + + + + Returns null. + + + + + Returns null. + + + + + Gets the name of this class. + + + + + Gets the owner of this row. + + + + + + Gets the index for this row. + + + + + + Gets the row's header. + + + + + + Represents a data bondable, customized view of a + confusion matrix. + + + + + + Initializes a new instance of the class. + + + The confusion matrix. + + + + + Initializes a new instance of the class. + + + The confusion matrix. + + + + + Resets the data binding. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Multidimensional arrays do not support Array copying. + + + + + + Multidimensional arrays do not support Array copying. + + + + + + Gets the array enumerator. + + + + + + Gets the Confusion Matrix being shown. + + + + + + Gets or sets whether the control should + display proportions instead of counts. + + + + + + Gets the names for the columns in the matrix. + + + + + + Gets the names for the rows in the matrix. + + + + + + Occurs when the list changes or an item in the list changes. + + + + + + Arrays do not allow for member insertion. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns true. + + + + + + Gets whether this view allows editing. Always true. + + + + + + This view is read only. + + + + + + Gets a row from this view. + + + + + + Arrays are always fixed size. + + + + + + Returns false. + + + + + + Gets the length of the array. + + + + + + Does nothing. + + + + + + Provides an abstraction for array names. + + + + + + Constructs a new Array Property Descriptor. + + + A title for the array. + + + + + Gets a value from the array. + + + + + + Sets a value to the array. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + + + Returns the name of the array. + + + + + + Returns the type of ArrayRowView. + + + + + + Returns false. + + + + + + Gets the type of the underlying multidimensional array. + + + + + + Data Series Box for quickly displaying a form with a time + series plot on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Create some data + string[] labels = { "1", "2", "3" }; + double[] data = { 100.0, 150.0, 42.0 }; + + // Display it onscreen + DataBarBox.Show(labels, data).Hold(); + + + + + + + + + Sets the window title of the data series box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets properties for the graph being shown. + + + The actions to be performed to the graph pane. + + + + + Displays a bar plot. + + + The text labels for the bars. + The value at each bar. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Histogram Box for quickly displaying a form with a histogram + on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Generate some normally distributed samples + double[] data = NormalDistribution.Standard.Generate(100); + + // Display it onscreen + HistogramBox.Show(data).Hold(); + + + + + + + + + Blocks the caller until the form is closed. + + + + + + Sets size of the scatter plot window. + + + The desired width. + The desired height. + + This instance, for fluent programming. + + + + + Sets the window title of the histogram box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets the bins width in the histogram. + + + The bin width to be used. + + + + + Sets the number of bins in the histogram. + + + The number of bins to be used. + + + + + Displays an histogram with the specified data. + + + The histogram values. + + + + + Displays a histogram with the specified data. + + + The title for the histogram window. + The histogram values. + + + + + Displays a histogram. + + + The histogram to show. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the + control used to display data in this box. + + + The histogram view control. + + + + + Color sequence for displaying categorical images. + + + + + References: + + + C.A. Glasbey, G.W.A.M. van der Heijden, V.F.K. Toh, A.J. Gray. (2007). + Color displays for categorical images, Color Research and Application, 32, 304-309 + Available in: http://www.bioss.ac.uk/staff/chris/colorpaper.pdf + + + + + + + Gets a list of the first 32 perceptually distinct + colors as detected in the investigation by [Glasbey et al]. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The number of colors to generate. + + + + + Initializes a new instance of the class. + + The number of colors to generate. + If set to true white color is skipped. + If set to true generates a sequence of random colors. + + + + + Gets the with specified index. + + + + + + Returns an enumerator that iterates through the color collection. + + + An object that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through the color collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the with specified index. + + + + + + Gets the number of colors in this sequence. + + + + + + Type converter for + and objects. + + + + + + Returns true. + + + + + + Creates an instance of the type that this is associated with, using the specified context, given a set of property values for the object. + + + An that provides a format context. + An of new property values. + + + An representing the given , or null if the object cannot be created. This method always returns null. + + + + + + Returns true. + + + + + + Returns a collection of properties for the type of array specified by the value parameter, using the specified context and attributes. + + + An that provides a format context. + An that specifies the type of array for which to get properties. + An array of type that is used as a filter. + + + A with the properties that are exposed for this data type, or null if there are no properties. + + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + An that provides a format context. + A that represents the type you want to convert from. + + + true if this converter can perform the conversion; otherwise, false. + + + + + + Returns whether this converter can convert the object to the specified type, using the specified context. + + + An that provides a format context. + A that represents the type you want to convert to. + + + true if this converter can perform the conversion; otherwise, false. + + + + + + Converts the given value object to the specified type, using the specified context and culture information. + + + An that provides a format context. + A . If null is passed, the current culture is assumed. + The to convert. + The to convert the parameter to. + + + An that represents the converted value. + + + + The parameter is null. + + + + The conversion cannot be performed. + + + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that provides a format context. + The to use as the current culture. + The to convert. + + + An that represents the converted value. + + + The conversion cannot be performed. + + + + + Assign this converter to the AForge types. This method + should be called before an AForge range type can be + bound to controls such as the PropertyGrid. + + + + + + Data Series Box for quickly displaying a form with a time + series plot on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + + Sets the window title of the data series box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets properties for the graph being shown. + + + The actions to be performed to the graph pane. + + + + + Sets the data labels for the values being shown. + + + The text labels. + The text size. + + + + + Displays a scatter plot with the specified data. + + + The title for the data. + The data series. + + + + + Displays a scatter plot with the specified data. + + + The x-values for the data series. + The data series. + + + + + Displays a scatter plot with the specified data. + + + The x-values for the data series. + The data series. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The functions argument range to be plotted. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The number of points to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The maximum value for the functions argument parameter. + The minimum value for the functions argument parameter. + The step size to use during plotting. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Data Grid Box for quickly displaying a form with a DataGridView + on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Create some data + double[,] data = Matrix.Identity(5); + + // Display it onscreen + DataGridBox.Show(data).Hold(); + + + + + + + + + Sets the cell font size. + + + + + + Sets the visibility of the column headers. + + + + + + Sets the visibility of the row headers. + + + + + + Sets the auto-size mode for the columns. + + + + + + Sets the auto-size mode for the rows. + + + + + + Blocks the caller until the form is closed. + + + + + + Closes the form. + + + + + + Sets the window title of the data grid box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Displays a Data Grid View with the specified data. + + + The source object to display. + The title for the data window. + + The Data Grid Box being shown. + + + + + Displays a Data Grid View with the specified data. + + + The source table to display. + + The Data Grid Box being shown. + + + + + Displays a Data Grid View with the specified data. + + + The array to be displayed. + A collection of column names to be displayed. + A collection of row names to be displayed. + The title for the data window. + + The Data Grid Box being shown. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the control contained + in this box. As it runs on a different thread, any + operations needs to be invoked on the control's thread. + + + + + + Denavit Hartenberg Viewer. + + + + This class can be used to visualize a D-H model as bitmaps. + + + + + + Initializes a new instance of the class. + + + Width of the drawing window + Height of the drawing window + + + + + Makes a list of all the models contained on a + ModelCombinator. This function is recursive. + + + + ModelCombinator model in which to extract all the models. + + List of already extracted models. It accumulates all the + models at each call of this function. + + Returns a list of all the models contained in the + ModelCombinator 'model' plus all previously extracted models + + + + + Computes the three images of a list of ModelCombinator + + + List of arguments of models to be drawn + + This function assumes that the models have already been calculated. + + + + + Computes the three images of a list of models + + + List of arguments of models + + + + + Method to draw arrows to indicate the axis. + + + Graphics variable to use to draw. + Text to draw on the top of the arrow. + Text to draw on the right arrow. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the color of the links between joints + + + + + + Gets or sets the color of the joints + + + + + + Gets or sets the color of the last joint of a model + + + + + + Gets or sets the color of the first joint of a model + + + + + + Gets or sets the color of the rendering surface background + + + + + + Gets or sets the value to scale the drawing of the model to fit the window. Default is 1. + + + + + + Gets or sets the radius of the joints circles. Default is 8. + + + + + + Gets or sets the arrows indicating the axes on each drawing represented as a Rectangle object. + + + + + + Image of the model viewed on the XY plane. + + + + + + Image of the model viewed on the YZ plane. + + + + + + Image of the model viewed on the XZ plane. + + + + + + Type editor for numeric collections. + + + + This class can be used to edit numeric collections + more easily in property grids. + + + + + + Initializes a new instance of the class. + + + + + + Edits the specified object's value using the editor style indicated by the method. + + + An that can be used to gain additional context information. + An that this editor can use to obtain services. + The object to edit. + + + The new value of the object. If the value of the object has not changed, this should return the same object it was passed. + + + + + + Gets the editor style used by the method. + + + An that can be used to gain additional context information. + + + A value that indicates the style of editor used by the method. If the does not support this method, then will return . + + + + + + Gets the items in the collection as a . + + + The collection object being edited. + + The items contained in . + + + + + Sets the items in the collection. + + + The collection object being edited. + The objects to be added in the collection. + + + + + Gets the type of the items contained in the collection. + + + + + + Gets the type of the collection. + + + + + + Numeric collection editor. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The editor. + The value. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Component visualization control. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Forces a update of the scatter plot. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the underlying scatter plot being shown by this control. + + + + + + Gets a reference to the underlying ZedGraph + control used to draw the scatter plot. + + + + + + Gets or sets whether this control should present + the individual proportion for each component, or + the cumulative proportion in a single line curve. + + + + + + Decision Tree (DT) Viewer. + + + + + + Initializes a new instance of the class. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets or sets the currently displayed + Decision Tree. + + + The decision tree being displayed. + + + + + Gets or sets the codebook to be used when + displaying the tree. Using a codebook avoids + showing integer labels which may be difficult + to interpret. + + + + + + Extension methods for Windows Forms' controls. + + + + + + Enables the display of recursively nested properties + in the Windows.Forms' DataGridView control. + + + The to enable nested properties. + True to use nested properties, false otherwise. + + + This method will register a custom cell formatting event in the DataGridView and + retrieve any nested property specified in the column's DataPropertyName property + using reflection. This method is based on th idea by Antonio Bello, originally + shared in: + + http://www.developer-corner.com/2007/07/datagridview-how-to-bind-nested-objects_18.html + + + + + + + Histogram visualization control. + + + + + + Constructs a new instance of the HistogramView. + + + + + + Forces a update of the Histogram bins. + + + + + + Forces the update of the trackbar control. + + + + + + Resets custom settings for a fixed number of bins or bin width. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets a reference to the underlying ZedGraph + control used to draw the histogram. + + + + + + Gets the trackbar which controls + the histogram bins' width. + + + + + + Gets or sets a fixed bin width to be used by + the histogram view. Setting this value to null + will set the histogram to the default position. + + + + + + Gets or sets a fixed number of bins to be used by + the histogram view. Setting this value to null + will set the histogram to the default position. + + + + + + Gets the underlying histogram being shown by this control. + + + + + + Gets or sets a data source for this control. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets or sets the member of the data source + to be displayed, if applicable. + + + + + + Gets or sets the format used to display + the histogram values on screen. + + + + + + Scatter plot Box for quickly displaying a form with a scatter + plot on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Create unlabeled (x,y) points + double[,] points = + { + { 1, 1 }, { 1, 4 }, + { 4, 1 }, { 4, 4 }, + }; + + // Display them onscreen + ScatterplotBox.Show(points).Hold(); + + // Create labels for the points + int[] classes = { 0, 1, 0, 1 }; + + // Display it onscreen with labels + ScatterplotBox.Show(points, classes).Hold(); + + + + + + + + + + + Blocks the caller until the form is closed. + + + + + + Sets the size of the symbols in the scatter plot. + + + The desired symbol size. + + This instance, for fluent programming. + + + + + Sets the window title of the scatterplot box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets size of the scatter plot window. + + + The desired width. + The desired height. + + This instance, for fluent programming. + + + + + Sets whether to show lines connecting + sequential points in the scatter plot. + + + + + + Sets whether to remove the grace space + between the axis labels and points. + + + + + + Displays a scatter plot with the specified data. + + + The x-values for the data. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + The x-values for the data. + The y-values for the data. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + The x-values for the data. + The y-values for the data. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + The x-values for the data. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot. + + + The scatter plot to show. + + + + + Displays a scatter plot. + + + The function to plot. + The maximum value for the functions argument parameter. + The minimum value for the functions argument parameter. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The function to plot. + The functions argument range to be plotted. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The function to plot. + The functions argument range to be plotted. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The functions argument range to be plotted. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The number of points to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The maximum value for the functions argument parameter. + The minimum value for the functions argument parameter. + The step size to use during plotting. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the + control used to display data in this box. + + + The scatter plot view control. + + + + + Scatter plot visualization control. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Forces a update of the scatter plot. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the underlying scatter plot being shown by this control. + + + + + + Gets or sets a data source for this control. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets a reference to the underlying ZedGraph + control used to draw the scatter plot. + + + + + + Gets or sets whether to show lines connecting + sequential points in the scatter plot. + + + + + + Gets or sets the size of the symbols displayed + on each point. Setting to zero hides the symbols. + + + + + + Gets or sets whether to remove the grace + space between the axis labels and points. + + + + + + Property comparer. + + The type of the elements to compare. + + + + Constructs a new property comparer. + + + + + Compares two values. + + + + + Sets the property being sorted and the sorting direction. + + + + + Sortable binding list. + + The type of the elements in the list. + + + + + Constructs a new SortableBindingList. + + + + + Constructs a new SortableBindingList. + + + + + Sorts the items. + + + + + Removes any sort applied. + + + + + Searches for the index of a item with a specific property descriptor and value + + + + + Returns true. + + + + + Gets whether this list is sorted. + + + + + Gets the current property being sorted. + + + + + Gets the sort order direction. + + + + + Returns true. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net45/Accord.Controls.dll b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net45/Accord.Controls.dll new file mode 100644 index 0000000000..52032f64f Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net45/Accord.Controls.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net45/Accord.Controls.xml b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net45/Accord.Controls.xml new file mode 100644 index 0000000000..7228136eb --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.3.0.2/lib/net45/Accord.Controls.xml @@ -0,0 +1,3096 @@ + + + + Accord.Controls + + + + + Chart control. + + + The chart control allows to display multiple charts at time + of different types: dots, lines, connected dots. + + Sample usage: + + // create data series array + double[,] testValues = new double[10, 2]; + // fill data series + for ( int i = 0; i < 10; i++ ) + { + testValues[i, 0] = i; // X values + testValues[i, 1] = Math.Sin( i / 18.0 * Math.PI ); // Y values + } + // add new data series to the chart + chart.AddDataSeries( "Test", Color.DarkGreen, Chart.SeriesType.ConnectedDots, 3 ); + // set X range to display + chart.RangeX = new AForge.Range( 0, 9 ); + // update the chart + chart.UpdateDataSeries( "Test", testValues ); + + + + + + + Required designer variable. + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Add data series to the chart. + + + Data series name. + Data series color. + Data series type. + Width (depends on the data series type, see remarks). + + Adds new empty data series to the collection of data series. To update this + series the method should be used. + + The meaning of the width parameter depends on the data series type: + + Line - width of the line; + Dots - size of dots (rectangular dots with specified width and the same height); + Connected dots - size of dots (dots are connected with one pixel width line). + + + + + + + + Add data series to the chart. + + + Data series name. + Data series color. + Data series type. + Width (depends on the data series type, see remarks). + Specifies if should be updated. + + Adds new empty data series to the collection of data series. + + The updateYRange parameter specifies if the data series may affect displayable + Y range. If the value is set to false, then displayable Y range is not updated, but used the + range, which was specified by user (see property). In the case if the + value is set to true, the displayable Y range is recalculated to fully fit the new data + series. + + + + + + Update data series on the chart. + + + Data series name to update. + Data series values. + + + + + Remove data series from the chart. + + + Data series name to remove. + + + + + Remove all data series from the chart. + + + + + Update Y range. + + + + + Chart's X range. + + + The value sets the X range of data to be displayed on the chart. + + + + + Chart's Y range. + + + The value sets the Y range of data to be displayed on the chart. + + + + + Chart series type enumeration. + + + + + Line style. + + + + + Dots style. + + + + + Connected dots style. + + + + + The class provides simple API for enumerating available joysticks and checking their + current status. + + + The class provides simple access to joysticks (game controllers) through using + Win32 API, which allows to enumerate available devices and query their status (state of all buttons, + axes, etc). + + Sample usage: + + // enumerate available devices + List<Joystick.DeviceInfo> devices = Joystick.GetAvailableDevices( ); + + foreach ( Joystick.DeviceInfo di in devices ) + { + System.Diagnostics.Debug.WriteLine( + string.Format( "{0} : {1} ({2} axes, {3} buttons)", + di.ID, di.Name, di.Axes, di.Buttons ) ); + } + + + // create new joystick and initialize it + Joystick joystick = new Joystick( 0 ); + // get its current status + Joystick.Status status = joystick.GetCurrentStatus( ); + // check if 1st button is pressed + if ( status.IsButtonPressed( Joystick.Buttons.Button1 ) ) + { + // 1st button is pressed + } + + + + + + + Get list of available joysticks connected to the system. + + + Returns list containing information about available joysticks connected to + the system. + + + + + Initializes a new instance of the class. + + + This constructor does not make initialization of any joystick + device, so method should be used before querying joystick + status or properties. + + + + + Initializes a new instance of the class. + + + Joystick ID to initialize, [0, 15]. + + This constructor initializes joystick with specified ID using + method, so the object becomes ready for querying joystick's + status. + + + + + Initialize joystick with the specified ID. + + + Joystick's ID to initialize, [0, 15]. + + + + Invalid joystick ID was specified. It must be in [0, 15] range. + The requested joystick is not connected to the system. + + + + + Get joystick's status. + + + Returns current status of initialized joystick, which provides information + about current state of all axes, buttons and point of view. + + Before using this method the joystick object needs to be initialized + using method or constructor. + + The requested joystick is not connected to the system. + Joystick was not initialized. + + + + + Information about initialized joystick. + + + The property keeps information about joystick, which was + initialized using method. If no joystick was initialized, + then accessing this property will generate + exception. + + Joystick was not initialized. + + + + + Information about joystick connected to the system. + + + + + + Joystick ID, [0..15]. + + + + + Joystick name. + + + + + Number of joystick axes. + + + + + Number of joystick buttons. + + + + + Class describing current joystick's status. + + + All joystick axes' positions are measured in [-1, 1] range, where + 0 corresponds to center position - axis is not deflected (directed) to any side. + + + + + Check if certain button (or combination of buttons) is pressed. + + + Button to check state of. + + Returns if the specified button is pressed or + otherwise. + + + + + Position of X axis, [-1, 1]. + + + + + Position of Y axis, [-1, 1]. + + + + + Position of Z axis, [-1, 1]. + + + + + Position of R axis - 4th joystick's axes, [-1, 1]. + + + + + Position of U axis - 5th joystick's axes, [-1, 1]. + + + + + Position of V axis - 6th joystick's axes, [-1, 1]. + + + + + Joystick buttons' state. + + + + + Current point of view state, [0, 359]. + + + + + + Flags enumeration of joystick buttons. + + + + + 1st button. + + + + + 2nd button. + + + + + 3rd button. + + + + + 4th button. + + + + + 5th button. + + + + + 6th button. + + + + + 7th button. + + + + + 8th button. + + + + + 9th button. + + + + + 10th button. + + + + + 11th button. + + + + + 12th button. + + + + + 13th button. + + + + + 14th button. + + + + + 15th button. + + + + + 16th button. + + + + + Array data type (i.e. jagged or multidimensional). + + + + + + Simple array type (i.e. double[]). + + + + + + Jagged array type (i.e. double[][]). + + + + + + Multidimensional array type (i.e. double[,]) + + + + + + Represents a data bondable, customized view of two dimensional array + + + + + + Initializes a new ArrayDataView from array. + + + array of data. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + array of data. + collection of column names. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + array of data. + collection of column names. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + Array of data. + Collection of column names. + Collection of row names. + + + + + Initializes a new ArrayDataView from array with custom column names. + + + Array of data. + Collection of column names. + Collection of row names. + + + + + Resets the data binding. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Multidimensional arrays do not support Array copying. + + + + + + Gets the array enumerator. + + + + + Raised when the list changes. + + + + Gets the column names for the array currently bound. + + + + + + Gets the row names for the array currently bound. + + + + + + Gets or sets the array currently bound. + + + + + + Gets the type of the array currently bound. + + + + + + Gets the number of rows in the data-bound array. + + + + + + Gets the number of columns in the data-bound array. + + + + + + Arrays do not allow for member insertion. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Arrays do not allow member removal. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Gets whether this view allows editing. Always true. + + + + + + This view is read only. + + + + + + Gets a row from this view. + + + + + + Arrays are always fixed size. + + + + + + Returns false. + + + + + + Gets the length of the array. + + + + + + Does nothing. + + + + + + Provides an abstraction of array values. + + + + + + Constructs a new Array Property Descriptor. + + + A title for the array. + The type of the property being displayed. + The index to display. + + + + + Gets a value from the array. + + + + + + Sets a value to the array. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + + + Returns the name of the array. + + + + + + Returns the type of ArrayRowView. + + + + + + Returns false. + + + + + + Gets the type of the underlying multidimensional array. + + + + + + Represents a row from array view. + + + + + + Initializes a new instance of the class. + + + + + + Gets the value at the specified position of this row. + + + The column index of the element to get. + + + + + Sets a value to the element at the specified position of this row. + + + The index of the element to set. + The new value for the specified element. + + + + + Returns null. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns null. + + + + + + Gets the owner ArrayDataView. + + + + + + Does nothing. + + + + + + Gets the values of the multidimensional array as properties. + + + + + + Returns null. + + + + + Returns null. + + + + + Returns null. + + + + + Gets the name of this class. + + + + + Does nothing. + + + + + Does nothing. + + + + + Does nothing. + + + + + Gets the row name. + + + + + + Gets the error message for the property with the given name. + + + + + + Gets an error message indicating what is wrong with this object. + + + + An error message indicating what is wrong with this object. The default is an empty string (""). + + + + + + Provides an abstraction of the confusion matrix values. + + + + + + Initializes a new instance of the class. + + + The name for the column. + Index of the column. + + + + + Gets a value from the array. + + + + + + Not supported. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + + + Gets the index of the column being represented. + + + + + + Returns the name of the array. + + + + + + Returns the type of ArrayRowView. + + + + + + Returns true. + + + + + + Returns System.Double. + + + + + + Represents a row from a . + + + + + + Returns null. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns null. + + + + + + Gets the owner ArrayDataView. + + + + + + Does nothing. + + + + + + Gets the values of the multidimensional array as properties. + + + + + + Gets the value for a given element in this row. + + + The column index of an element. + + The element at this row located at position . + + + + + Returns null. + + + + + Returns null. + + + + + Returns null. + + + + + Gets the name of this class. + + + + + Gets the owner of this row. + + + + + + Gets the index for this row. + + + + + + Gets the row's header. + + + + + + Represents a data bondable, customized view of a + confusion matrix. + + + + + + Initializes a new instance of the class. + + + The confusion matrix. + + + + + Initializes a new instance of the class. + + + The confusion matrix. + + + + + Resets the data binding. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Multidimensional arrays do not support Array copying. + + + + + + Multidimensional arrays do not support Array copying. + + + + + + Gets the array enumerator. + + + + + + Gets the Confusion Matrix being shown. + + + + + + Gets or sets whether the control should + display proportions instead of counts. + + + + + + Gets the names for the columns in the matrix. + + + + + + Gets the names for the rows in the matrix. + + + + + + Occurs when the list changes or an item in the list changes. + + + + + + Arrays do not allow for member insertion. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Does nothing. + + + + + + Returns true. + + + + + + Gets whether this view allows editing. Always true. + + + + + + This view is read only. + + + + + + Gets a row from this view. + + + + + + Arrays are always fixed size. + + + + + + Returns false. + + + + + + Gets the length of the array. + + + + + + Does nothing. + + + + + + Provides an abstraction for array names. + + + + + + Constructs a new Array Property Descriptor. + + + A title for the array. + + + + + Gets a value from the array. + + + + + + Sets a value to the array. + + + + + + Returns false. + + + + + + Does nothing. + + + + + + Returns false. + + + + + + + + Returns the name of the array. + + + + + + Returns the type of ArrayRowView. + + + + + + Returns false. + + + + + + Gets the type of the underlying multidimensional array. + + + + + + Data Series Box for quickly displaying a form with a time + series plot on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Create some data + string[] labels = { "1", "2", "3" }; + double[] data = { 100.0, 150.0, 42.0 }; + + // Display it onscreen + DataBarBox.Show(labels, data).Hold(); + + + + + + + + + Sets the window title of the data series box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets properties for the graph being shown. + + + The actions to be performed to the graph pane. + + + + + Displays a bar plot. + + + The text labels for the bars. + The value at each bar. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Histogram Box for quickly displaying a form with a histogram + on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Generate some normally distributed samples + double[] data = NormalDistribution.Standard.Generate(100); + + // Display it onscreen + HistogramBox.Show(data).Hold(); + + + + + + + + + Blocks the caller until the form is closed. + + + + + + Sets size of the scatter plot window. + + + The desired width. + The desired height. + + This instance, for fluent programming. + + + + + Sets the window title of the histogram box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets the bins width in the histogram. + + + The bin width to be used. + + + + + Sets the number of bins in the histogram. + + + The number of bins to be used. + + + + + Displays an histogram with the specified data. + + + The histogram values. + + + + + Displays a histogram with the specified data. + + + The title for the histogram window. + The histogram values. + + + + + Displays a histogram. + + + The histogram to show. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the + control used to display data in this box. + + + The histogram view control. + + + + + Color sequence for displaying categorical images. + + + + + References: + + + C.A. Glasbey, G.W.A.M. van der Heijden, V.F.K. Toh, A.J. Gray. (2007). + Color displays for categorical images, Color Research and Application, 32, 304-309 + Available in: http://www.bioss.ac.uk/staff/chris/colorpaper.pdf + + + + + + + Gets a list of the first 32 perceptually distinct + colors as detected in the investigation by [Glasbey et al]. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The number of colors to generate. + + + + + Initializes a new instance of the class. + + The number of colors to generate. + If set to true white color is skipped. + If set to true generates a sequence of random colors. + + + + + Gets the with specified index. + + + + + + Returns an enumerator that iterates through the color collection. + + + An object that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through the color collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the with specified index. + + + + + + Gets the number of colors in this sequence. + + + + + + Type converter for + and objects. + + + + + + Returns true. + + + + + + Creates an instance of the type that this is associated with, using the specified context, given a set of property values for the object. + + + An that provides a format context. + An of new property values. + + + An representing the given , or null if the object cannot be created. This method always returns null. + + + + + + Returns true. + + + + + + Returns a collection of properties for the type of array specified by the value parameter, using the specified context and attributes. + + + An that provides a format context. + An that specifies the type of array for which to get properties. + An array of type that is used as a filter. + + + A with the properties that are exposed for this data type, or null if there are no properties. + + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + An that provides a format context. + A that represents the type you want to convert from. + + + true if this converter can perform the conversion; otherwise, false. + + + + + + Returns whether this converter can convert the object to the specified type, using the specified context. + + + An that provides a format context. + A that represents the type you want to convert to. + + + true if this converter can perform the conversion; otherwise, false. + + + + + + Converts the given value object to the specified type, using the specified context and culture information. + + + An that provides a format context. + A . If null is passed, the current culture is assumed. + The to convert. + The to convert the parameter to. + + + An that represents the converted value. + + + + The parameter is null. + + + + The conversion cannot be performed. + + + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that provides a format context. + The to use as the current culture. + The to convert. + + + An that represents the converted value. + + + The conversion cannot be performed. + + + + + Assign this converter to the AForge types. This method + should be called before an AForge range type can be + bound to controls such as the PropertyGrid. + + + + + + Data Series Box for quickly displaying a form with a time + series plot on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + + Sets the window title of the data series box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets properties for the graph being shown. + + + The actions to be performed to the graph pane. + + + + + Sets the data labels for the values being shown. + + + The text labels. + The text size. + + + + + Displays a scatter plot with the specified data. + + + The title for the data. + The data series. + + + + + Displays a scatter plot with the specified data. + + + The x-values for the data series. + The data series. + + + + + Displays a scatter plot with the specified data. + + + The x-values for the data series. + The data series. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The functions argument range to be plotted. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The number of points to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The maximum value for the functions argument parameter. + The minimum value for the functions argument parameter. + The step size to use during plotting. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Data Grid Box for quickly displaying a form with a DataGridView + on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Create some data + double[,] data = Matrix.Identity(5); + + // Display it onscreen + DataGridBox.Show(data).Hold(); + + + + + + + + + Sets the cell font size. + + + + + + Sets the visibility of the column headers. + + + + + + Sets the visibility of the row headers. + + + + + + Sets the auto-size mode for the columns. + + + + + + Sets the auto-size mode for the rows. + + + + + + Blocks the caller until the form is closed. + + + + + + Closes the form. + + + + + + Sets the window title of the data grid box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Displays a Data Grid View with the specified data. + + + The source object to display. + The title for the data window. + + The Data Grid Box being shown. + + + + + Displays a Data Grid View with the specified data. + + + The source table to display. + + The Data Grid Box being shown. + + + + + Displays a Data Grid View with the specified data. + + + The array to be displayed. + A collection of column names to be displayed. + A collection of row names to be displayed. + The title for the data window. + + The Data Grid Box being shown. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the control contained + in this box. As it runs on a different thread, any + operations needs to be invoked on the control's thread. + + + + + + Denavit Hartenberg Viewer. + + + + This class can be used to visualize a D-H model as bitmaps. + + + + + + Initializes a new instance of the class. + + + Width of the drawing window + Height of the drawing window + + + + + Makes a list of all the models contained on a + ModelCombinator. This function is recursive. + + + + ModelCombinator model in which to extract all the models. + + List of already extracted models. It accumulates all the + models at each call of this function. + + Returns a list of all the models contained in the + ModelCombinator 'model' plus all previously extracted models + + + + + Computes the three images of a list of ModelCombinator + + + List of arguments of models to be drawn + + This function assumes that the models have already been calculated. + + + + + Computes the three images of a list of models + + + List of arguments of models + + + + + Method to draw arrows to indicate the axis. + + + Graphics variable to use to draw. + Text to draw on the top of the arrow. + Text to draw on the right arrow. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the color of the links between joints + + + + + + Gets or sets the color of the joints + + + + + + Gets or sets the color of the last joint of a model + + + + + + Gets or sets the color of the first joint of a model + + + + + + Gets or sets the color of the rendering surface background + + + + + + Gets or sets the value to scale the drawing of the model to fit the window. Default is 1. + + + + + + Gets or sets the radius of the joints circles. Default is 8. + + + + + + Gets or sets the arrows indicating the axes on each drawing represented as a Rectangle object. + + + + + + Image of the model viewed on the XY plane. + + + + + + Image of the model viewed on the YZ plane. + + + + + + Image of the model viewed on the XZ plane. + + + + + + Type editor for numeric collections. + + + + This class can be used to edit numeric collections + more easily in property grids. + + + + + + Initializes a new instance of the class. + + + + + + Edits the specified object's value using the editor style indicated by the method. + + + An that can be used to gain additional context information. + An that this editor can use to obtain services. + The object to edit. + + + The new value of the object. If the value of the object has not changed, this should return the same object it was passed. + + + + + + Gets the editor style used by the method. + + + An that can be used to gain additional context information. + + + A value that indicates the style of editor used by the method. If the does not support this method, then will return . + + + + + + Gets the items in the collection as a . + + + The collection object being edited. + + The items contained in . + + + + + Sets the items in the collection. + + + The collection object being edited. + The objects to be added in the collection. + + + + + Gets the type of the items contained in the collection. + + + + + + Gets the type of the collection. + + + + + + Numeric collection editor. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The editor. + The value. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Component visualization control. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Forces a update of the scatter plot. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the underlying scatter plot being shown by this control. + + + + + + Gets a reference to the underlying ZedGraph + control used to draw the scatter plot. + + + + + + Gets or sets whether this control should present + the individual proportion for each component, or + the cumulative proportion in a single line curve. + + + + + + Decision Tree (DT) Viewer. + + + + + + Initializes a new instance of the class. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets or sets the currently displayed + Decision Tree. + + + The decision tree being displayed. + + + + + Gets or sets the codebook to be used when + displaying the tree. Using a codebook avoids + showing integer labels which may be difficult + to interpret. + + + + + + Extension methods for Windows Forms' controls. + + + + + + Enables the display of recursively nested properties + in the Windows.Forms' DataGridView control. + + + The to enable nested properties. + True to use nested properties, false otherwise. + + + This method will register a custom cell formatting event in the DataGridView and + retrieve any nested property specified in the column's DataPropertyName property + using reflection. This method is based on th idea by Antonio Bello, originally + shared in: + + http://www.developer-corner.com/2007/07/datagridview-how-to-bind-nested-objects_18.html + + + + + + + Histogram visualization control. + + + + + + Constructs a new instance of the HistogramView. + + + + + + Forces a update of the Histogram bins. + + + + + + Forces the update of the trackbar control. + + + + + + Resets custom settings for a fixed number of bins or bin width. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets a reference to the underlying ZedGraph + control used to draw the histogram. + + + + + + Gets the trackbar which controls + the histogram bins' width. + + + + + + Gets or sets a fixed bin width to be used by + the histogram view. Setting this value to null + will set the histogram to the default position. + + + + + + Gets or sets a fixed number of bins to be used by + the histogram view. Setting this value to null + will set the histogram to the default position. + + + + + + Gets the underlying histogram being shown by this control. + + + + + + Gets or sets a data source for this control. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets or sets the member of the data source + to be displayed, if applicable. + + + + + + Gets or sets the format used to display + the histogram values on screen. + + + + + + Scatter plot Box for quickly displaying a form with a scatter + plot on it in the same spirit as System.Windows.Forms.MessageBox. + + + + + // Create unlabeled (x,y) points + double[,] points = + { + { 1, 1 }, { 1, 4 }, + { 4, 1 }, { 4, 4 }, + }; + + // Display them onscreen + ScatterplotBox.Show(points).Hold(); + + // Create labels for the points + int[] classes = { 0, 1, 0, 1 }; + + // Display it onscreen with labels + ScatterplotBox.Show(points, classes).Hold(); + + + + + + + + + + + Blocks the caller until the form is closed. + + + + + + Sets the size of the symbols in the scatter plot. + + + The desired symbol size. + + This instance, for fluent programming. + + + + + Sets the window title of the scatterplot box. + + + The desired title text for the window. + + This instance, for fluent programming. + + + + + Sets size of the scatter plot window. + + + The desired width. + The desired height. + + This instance, for fluent programming. + + + + + Sets whether to show lines connecting + sequential points in the scatter plot. + + + + + + Sets whether to remove the grace space + between the axis labels and points. + + + + + + Displays a scatter plot with the specified data. + + + The x-values for the data. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + The x-values for the data. + The y-values for the data. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + The x-values for the data. + The y-values for the data. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + The x-values for the data. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot with the specified data. + + + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + + + + + Displays a scatter plot with the specified data. + + + The title for the plot window. + A two column matrix containing the (x,y) data pairs as rows. + The corresponding labels for the (x,y) pairs. + + + + + Displays a scatter plot. + + + The scatter plot to show. + + + + + Displays a scatter plot. + + + The function to plot. + The maximum value for the functions argument parameter. + The minimum value for the functions argument parameter. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The function to plot. + The functions argument range to be plotted. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The function to plot. + The functions argument range to be plotted. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The functions argument range to be plotted. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The number of points to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The step size to use during plotting. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + + + + + Displays a scatter plot. + + + The title for the plot window. + The function to plot. + The maximum value for the functions argument parameter. + The minimum value for the functions argument parameter. + The step size to use during plotting. + + + + + Holds the execution until the window has been closed. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the + control used to display data in this box. + + + The scatter plot view control. + + + + + Scatter plot visualization control. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Constructs a new instance of the ScatterplotView. + + + + + + Forces a update of the scatter plot. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets the underlying scatter plot being shown by this control. + + + + + + Gets or sets a data source for this control. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets or sets the member of the data source + to be shown, if applicable. + + + + + + Gets a reference to the underlying ZedGraph + control used to draw the scatter plot. + + + + + + Gets or sets whether to show lines connecting + sequential points in the scatter plot. + + + + + + Gets or sets the size of the symbols displayed + on each point. Setting to zero hides the symbols. + + + + + + Gets or sets whether to remove the grace + space between the axis labels and points. + + + + + + Property comparer. + + The type of the elements to compare. + + + + Constructs a new property comparer. + + + + + Compares two values. + + + + + Sets the property being sorted and the sorting direction. + + + + + Sortable binding list. + + The type of the elements in the list. + + + + + Constructs a new SortableBindingList. + + + + + Constructs a new SortableBindingList. + + + + + Sorts the items. + + + + + Removes any sort applied. + + + + + Searches for the index of a item with a specific property descriptor and value + + + + + Returns true. + + + + + Gets whether this list is sorted. + + + + + Gets the current property being sorted. + + + + + Gets the sort order direction. + + + + + Returns true. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/Accord.Controls.Audio.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/Accord.Controls.Audio.3.0.2.nupkg new file mode 100644 index 0000000000..b0b834e80 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/Accord.Controls.Audio.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net35/Accord.Controls.Audio.dll b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net35/Accord.Controls.Audio.dll new file mode 100644 index 0000000000..ef7d13b86 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net35/Accord.Controls.Audio.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net35/Accord.Controls.Audio.xml b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net35/Accord.Controls.Audio.xml new file mode 100644 index 0000000000..00955d0fe --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net35/Accord.Controls.Audio.xml @@ -0,0 +1,257 @@ + + + + Accord.Controls.Audio + + + + + Wavechart Box. + + + + + + Blocks the caller until the form is closed. + + + + + + Displays a Wavechart with the specified signal. + + + The signal object to display. + The channel to be displayed. + If set to true, the caller will continue + executing while the form is shown on screen. If set to false, + the caller will be blocked until the user closes the form. Default + is false. + The title for the data window. + + The Data Grid Box being shown. + + + + + Displays a Wavechart with the specified signal. + + + If set to true, the caller will continue + executing while the form is shown on screen. If set to false, + the caller will be blocked until the user closes the form. Default + is false. + + The signal to be displayed. + The title for the data window. + + The Data Grid Box being shown. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Waveform chart control. + + + The Waveform chart control allows to display multiple + waveforms at time. + + Sample usage: + + // create data series array + float[] testValues = new float[128]; + // fill data series + for ( int i = 0; i < 128; i++ ) + { + testValues[i] = Math.Sin( i / 18.0 * Math.PI ); + } + // add new waveform to the chart + chart.AddWaveform( "Test", Color.DarkGreen, 3 ); + // update the chart + chart.UpdateWaveform( "Test", testValues ); + + + + + + + Required designer variable. + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Paints the background of the control. + + + A that contains information about the control to paint. + + + + + Paints the control. + + + + + + Raises the event. + + + An that contains the event data. + + + + + Add Waveform to the chart. + + + Waveform name. + Waveform color. + Waveform width. + + Adds new empty waveform to the collection of waves. To update this + wave the method should be used. + + + + + + Add Waveform to the chart. + + + Waveform name. + Waveform color. + Waveform width. + Specifies if should be updated. + + Adds new empty waveform to the collection of waves. To update this + wave the method should be used. + + + Adds new empty data series to the collection of data series. + + The updateYRange parameter specifies if the waveform may affect displayable + Y range. If the value is set to false, then displayable Y range is not updated, but used the + range, which was specified by user (see property). In the case if the + value is set to true, the displayable Y range is recalculated to fully fit the new data + series. + + + + + + Update Waveform on the chart. + + + Data series name to update. + Data series values. + + + + + Update Waveform on the chart. + + + Data series name to update. + Data series values. + The number of samples in the array. + + + + + Remove a Waveform from the chart. + + + Waveform name to remove. + + + + + Remove all waveforms from the chart. + + + + + + Update Y range. + + + + + + Gets or sets the background color for the control. + + + A that represents the + background color of the control. The default is the value of the + + property. + + + + + + + + + + Chart's X range. + + + The value sets the X range of data to be displayed on the chart. + + + + + Chart's Y range. + + + The value sets the Y range of data to be displayed on the chart. + + + + + Gets or sets a value indicating whether to + create a simple wave chart only (no scaling). + + + true to enable simple mode; otherwise, false. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net40/Accord.Controls.Audio.dll b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net40/Accord.Controls.Audio.dll new file mode 100644 index 0000000000..88b1085aa Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net40/Accord.Controls.Audio.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net40/Accord.Controls.Audio.xml b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net40/Accord.Controls.Audio.xml new file mode 100644 index 0000000000..00955d0fe --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net40/Accord.Controls.Audio.xml @@ -0,0 +1,257 @@ + + + + Accord.Controls.Audio + + + + + Wavechart Box. + + + + + + Blocks the caller until the form is closed. + + + + + + Displays a Wavechart with the specified signal. + + + The signal object to display. + The channel to be displayed. + If set to true, the caller will continue + executing while the form is shown on screen. If set to false, + the caller will be blocked until the user closes the form. Default + is false. + The title for the data window. + + The Data Grid Box being shown. + + + + + Displays a Wavechart with the specified signal. + + + If set to true, the caller will continue + executing while the form is shown on screen. If set to false, + the caller will be blocked until the user closes the form. Default + is false. + + The signal to be displayed. + The title for the data window. + + The Data Grid Box being shown. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Waveform chart control. + + + The Waveform chart control allows to display multiple + waveforms at time. + + Sample usage: + + // create data series array + float[] testValues = new float[128]; + // fill data series + for ( int i = 0; i < 128; i++ ) + { + testValues[i] = Math.Sin( i / 18.0 * Math.PI ); + } + // add new waveform to the chart + chart.AddWaveform( "Test", Color.DarkGreen, 3 ); + // update the chart + chart.UpdateWaveform( "Test", testValues ); + + + + + + + Required designer variable. + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Paints the background of the control. + + + A that contains information about the control to paint. + + + + + Paints the control. + + + + + + Raises the event. + + + An that contains the event data. + + + + + Add Waveform to the chart. + + + Waveform name. + Waveform color. + Waveform width. + + Adds new empty waveform to the collection of waves. To update this + wave the method should be used. + + + + + + Add Waveform to the chart. + + + Waveform name. + Waveform color. + Waveform width. + Specifies if should be updated. + + Adds new empty waveform to the collection of waves. To update this + wave the method should be used. + + + Adds new empty data series to the collection of data series. + + The updateYRange parameter specifies if the waveform may affect displayable + Y range. If the value is set to false, then displayable Y range is not updated, but used the + range, which was specified by user (see property). In the case if the + value is set to true, the displayable Y range is recalculated to fully fit the new data + series. + + + + + + Update Waveform on the chart. + + + Data series name to update. + Data series values. + + + + + Update Waveform on the chart. + + + Data series name to update. + Data series values. + The number of samples in the array. + + + + + Remove a Waveform from the chart. + + + Waveform name to remove. + + + + + Remove all waveforms from the chart. + + + + + + Update Y range. + + + + + + Gets or sets the background color for the control. + + + A that represents the + background color of the control. The default is the value of the + + property. + + + + + + + + + + Chart's X range. + + + The value sets the X range of data to be displayed on the chart. + + + + + Chart's Y range. + + + The value sets the Y range of data to be displayed on the chart. + + + + + Gets or sets a value indicating whether to + create a simple wave chart only (no scaling). + + + true to enable simple mode; otherwise, false. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net45/Accord.Controls.Audio.dll b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net45/Accord.Controls.Audio.dll new file mode 100644 index 0000000000..48bda15f6 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net45/Accord.Controls.Audio.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net45/Accord.Controls.Audio.xml b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net45/Accord.Controls.Audio.xml new file mode 100644 index 0000000000..00955d0fe --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.Audio.3.0.2/lib/net45/Accord.Controls.Audio.xml @@ -0,0 +1,257 @@ + + + + Accord.Controls.Audio + + + + + Wavechart Box. + + + + + + Blocks the caller until the form is closed. + + + + + + Displays a Wavechart with the specified signal. + + + The signal object to display. + The channel to be displayed. + If set to true, the caller will continue + executing while the form is shown on screen. If set to false, + the caller will be blocked until the user closes the form. Default + is false. + The title for the data window. + + The Data Grid Box being shown. + + + + + Displays a Wavechart with the specified signal. + + + If set to true, the caller will continue + executing while the form is shown on screen. If set to false, + the caller will be blocked until the user closes the form. Default + is false. + + The signal to be displayed. + The title for the data window. + + The Data Grid Box being shown. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Waveform chart control. + + + The Waveform chart control allows to display multiple + waveforms at time. + + Sample usage: + + // create data series array + float[] testValues = new float[128]; + // fill data series + for ( int i = 0; i < 128; i++ ) + { + testValues[i] = Math.Sin( i / 18.0 * Math.PI ); + } + // add new waveform to the chart + chart.AddWaveform( "Test", Color.DarkGreen, 3 ); + // update the chart + chart.UpdateWaveform( "Test", testValues ); + + + + + + + Required designer variable. + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Paints the background of the control. + + + A that contains information about the control to paint. + + + + + Paints the control. + + + + + + Raises the event. + + + An that contains the event data. + + + + + Add Waveform to the chart. + + + Waveform name. + Waveform color. + Waveform width. + + Adds new empty waveform to the collection of waves. To update this + wave the method should be used. + + + + + + Add Waveform to the chart. + + + Waveform name. + Waveform color. + Waveform width. + Specifies if should be updated. + + Adds new empty waveform to the collection of waves. To update this + wave the method should be used. + + + Adds new empty data series to the collection of data series. + + The updateYRange parameter specifies if the waveform may affect displayable + Y range. If the value is set to false, then displayable Y range is not updated, but used the + range, which was specified by user (see property). In the case if the + value is set to true, the displayable Y range is recalculated to fully fit the new data + series. + + + + + + Update Waveform on the chart. + + + Data series name to update. + Data series values. + + + + + Update Waveform on the chart. + + + Data series name to update. + Data series values. + The number of samples in the array. + + + + + Remove a Waveform from the chart. + + + Waveform name to remove. + + + + + Remove all waveforms from the chart. + + + + + + Update Y range. + + + + + + Gets or sets the background color for the control. + + + A that represents the + background color of the control. The default is the value of the + + property. + + + + + + + + + + Chart's X range. + + + The value sets the X range of data to be displayed on the chart. + + + + + Chart's Y range. + + + The value sets the Y range of data to be displayed on the chart. + + + + + Gets or sets a value indicating whether to + create a simple wave chart only (no scaling). + + + true to enable simple mode; otherwise, false. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/Accord.Controls.Imaging.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/Accord.Controls.Imaging.3.0.2.nupkg new file mode 100644 index 0000000000..7d10d76ac Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/Accord.Controls.Imaging.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net35/Accord.Controls.Imaging.dll b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net35/Accord.Controls.Imaging.dll new file mode 100644 index 0000000000..47a449368 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net35/Accord.Controls.Imaging.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net35/Accord.Controls.Imaging.xml b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net35/Accord.Controls.Imaging.xml new file mode 100644 index 0000000000..5a1ba2bee --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net35/Accord.Controls.Imaging.xml @@ -0,0 +1,1409 @@ + + + + Accord.Controls.Imaging + + + + + Color slider control. + + + The control represent a color slider, which allows selecting + one or two values in the [0, 255] range. The application of this control + includes mostly areas of image processing and computer vision, where it is required + to select color threshold or ranges for different type of color filtering. + + Depending on the control's , it has different look and may suite + different tasks. See documentation to for information + about available type and possible control's looks. + + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + Specifies if disposing was invoked by user's code. + + + + + An event, to notify about changes of or properties. + + + The event is fired after changes of or property, + which is caused by user dragging the corresponding control’s arrow (slider). + + + + + + Start color for gradient filling. + + + See documentation to enumeration for information about + the usage of this property. + + + + + End color for gradient filling. + + + See documentation to enumeration for information about + the usage of this property. + + + + + Color to fill control's background in filtered zones. + + + See documentation to enumeration for information about + the usage of this property. + + + + + Specifies control's type. + + + See documentation to enumeration for information about + the usage of this property. + + + + + Minimum selected value, [0, 255]. + + + + + + Maximum selected value, [0, 255]. + + + + + + Single or Double arrow slider control. + + + The property specifies if the slider has one or two selection arrows (sliders). + + The single arrow allows only to specify one value, which is set by + property. The single arrow slider is useful for applications, where it is required to select + color threshold, for example. + + The double arrow allows to specify two values, which are set by + and properties. The double arrow slider is useful for applications, where it is + required to select filtering color range, for example. + + + + + + Enumeration of color slider types. + + + + The slider's type supposes the control's + background filled with gradient startting from color and ending + with color. The color does not have + impact on control's look. + + This type allows as one-arrow, as two-arrows control. + + Sample control's look: + + + The slider's type supposes the control's + background filled with gradient startting from color and ending + with color. In addition the areas, which are outside of + [, ] range, are filled with color. + + This type allows only two-arrows control. + + Sample control's look: + + + The slider's type supposes the + control's background filled with gradient startting from color + and ending with color. In addition the area, which is inside of + [, ] range, is filled with color. + + This type allows only two-arrows control. + + Sample control's look: + + + The slider's type supposes filling areas + outside of [, ] range with and + inside the range with . The color does not + have impact on control's look. + + This type allows as one-arrow, as two-arrows control. + + Sample control's look: + + + + + + + Gradient color slider type. + + + + + Inner gradient color slider type. + + + + + Outer gradient color slider type. + + + + + Threshold color slider type. + + + + + Arguments of histogram events. + + + + + Initializes a new instance of the class. + + + Histogram's index under mouse pointer. + + + + + Initializes a new instance of the class. + + + Min histogram's index in selection. + Max histogram's index in selection. + + + + + Min histogram's index in selection. + + + + + Max histogram's index in selection. + + + + + Histogram's index under mouse pointer. + + + + + Delegate for histogram events handlers. + + + Sender object. + Event arguments. + + + + + Histogram control. + + + The control displays histograms represented with integer arrays, + where each array's element keeps occurrence number of the corresponding element. + + + Sample usage: + + // create array with histogram values + int[] histogramValues = new int[] { 3, 8, 53, 57, 79, 69, ... }; + // set values to histogram control + histogram.Values = histogramValues; + + + Sample control's look: + + + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Paint the control. + + + Data for Paint event. + + + + + Histogram's color. + + + + + + Allow mouse selection or not. + + + In the case if mouse selection is allowed, the control will + fire and events + and provide information about the selection. + + + + + Logarithmic view or not. + + + In the case if logarihmic view is selected, then the control + will display base 10 logarithm of values. + + By default the property is set to false - none logarithmic view. + + + + + Vertical view or not. + + + The property determines if histogram should be displayed vertically or + not (horizontally). + + By default the property is set to false - horizontal view. + + + + + Histogram values. + + + Non-negative histogram values. + + Histogram values should be non-negative. + + + + + Mouse position changed event. + + + The event is fired only if the property is set + to true. The passed to event handler class is initialized + with property only, which is histogram value's + index pointed by mouse. + + + + + Mouse selection changed event. + + + The event is fired only if the property is set + to true. The passed to event handler class is initialized + with and properties + only, which represent selection range - min and max indexes. + + + + + Hue picker control. + + + The control allows selecting hue value (or range) from HSL color space. Hue values + are integer values in the [0, 359] range. + + If control's type is set to , then it allows selecting single + hue value and looks like this:
+ +
+ + If control's type is set to , then it allows selecting range + of hue values and looks like this:
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + Specifies if disposing was invoked by user's code. + + + + + Paint the controls. + + + Paint event arguments. + + + + + An event, to notify about changes of or properties. + + + The event is fired after changes of its , or + properties, which is caused by user dragging the corresponding hue picker's bullets. + + + + + + Selected value of the hue picker control in mode. + + + + + Minimum selected value of the hue picker control in mode. + + + + + Maximum selected value of the hue picker control in mode. + + + + + Current type of the hue picker control. + + + See enumeration for description of the available types. + + + + + Enumeration of hue picker types. + + + + The type provides single bullet to drag, which allows + selecting single hue value. The value is accessible through property. + + The type provides two bullets to drag, which correspond + to minimum and maximum values of the hue range. These values are accessible through + and properties. + + + + + + Selecting single hue value. + + + + + Selecting hue values range. + + + + + Manipulator control. + + + + The manipulator control can be used to mimic behaviour of analogue joystick using + regular mouse. By dragging manipulator away from control's centre, it fires + event notifying about its X/Y coordinates (or about R/Theta coordinates in Polar coordinates system). + + + For example, in robotics applications the control can be used to drive robots. If user drags manipulator + further from centre (increasing distance between centre and manipulator), then higher power (speed) should be + set for robot's motors. But dragging it in different directions away from centre should result in changing + robot's direction: straight forward, backward, turning right or left, etc.
+ +
+ + Another possible application of the control is to control position of some device, etc. + For example, the control could be used with pan-tilt camera - by dragging control away from centre, + the camera may rotate in one of the directions.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + Clean up any resources being used. + + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Determines if the control has square or round look. + + + + The control has a square look if the property is set to , + otherwise it has round look. + + Default value is set to . + + + + + + Determines if horizontal axis should be drawn or not. + + + + Default value is set to . + + + + + + Determines if vertical axis should be drawn or not. + + + + Default value is set to . + + + + + + Determines behaviour of manipulator, when mouse button is released. + + + + The property controls behaviour of manipulator on releasing mouse button. If + the property is set to , then position of manipulator is reset + to (0, 0), when mouse button is released. Otherwise manipulator stays on the place, + where it was left. + + Default value is set to . + + + + + + Color used for drawing borders and axis's. + + + + Default value is set to . + + + + + + Background color used for filling top left quarter of the control. + + + + Default value is set to . + + + + + + Background color used for filling top right quarter of the control. + + + + Default value is set to . + + + + + + Background color used for filling bottom left quarter of the control. + + + + Default value is set to . + + + + + + Background color used for filling bottom right quarter of the control. + + + + Default value is set to . + + + + + + Color used for filling manipulator. + + + + Default value is set to . + + + + + + Current manipulator's position. + + + The property equals to current manipulator's position. Both X and Y values + are in the [-1, 1] range and represented in + Cartesian coordinate system. + + + + + + Event used for notification about manipulator's position changes. + + + + + Class, which summarizes arguments of manipulator's position change event. + + + Properties of this class allow to get: + + X/Y coordinates of manipulator in + Cartesian coordinate system, + where X axis is directed from center of the control to the right and Y axis is directed from + center to the top. Both coordinates are measured in [-1, 1] range. + Theta and R coordinates of manipulator in + Polar coordinate system. + + + + + + + Initializes a new instance of the class. + + + X coordinate of manipulator, [-1, 1]. + Y coordinate of manipulator, [-1, 1]. + + + + + X coordinate of manipulator, [-1, 1]. + + + + + Y coordinate of manipulator, [-1, 1]. + + + + + Theta coordinate of manipulator in Polar coordinate system, [0, 359]. + + + + + R (radius) coordinate of manipulator in Polar coordinate system, [0, 1]. + + + + + Delegate used for notification about manipulator's position changes. + + + Event sender - object sending the event. + Event arguments - current manipulator's position. + + + + + Picture box control for displaying an image. + + + This control is inherited from System.Windows.Forms.PictureBox and is + aimed to resolve one of its issues - inability to display images with high color depth, + like 16 bpp grayscale, 48 bpp and 64 bpp color images. .NET framework does not handle + 16 bpp grayscale images at all, throwing exception when user tries to display them. Color + images with 48 bpp and 64 bpp are "kind of" supported, but only maximum of 13 bits for each + color plane are allowed. Therefore this control is created, which allows to display as + 16 bpp grayscale images, as 48 bpp and 64 bpp color images. + + To display high color depth images, the control does internal conversion of them + to lower color depth images - 8 bpp grayscale, 24 bpp and 32 bpp color images respectively. In + the case source image already has low color depth, it is displayed without any conversions. + + + + + + + Gets or sets the image that the PictureBox displays. + + + The property is used to set image to be displayed or to get currently + displayed image. + + In the case if source image has high color depth, like 16 bpp grayscale image, + 48 bpp or 64 bpp color image, it is converted to lower color depth before displaying - + to 8 bpp grayscale, 24 bpp or 32 bpp color image respectively. + + During color conversion the original source image is kept unmodified, but internal + converted copy is created. The property always returns original source image. + + + + + + Slider control. + + + + The control represents a slider, which can be dragged in the [-1, 1] range. + Default position of the slider is set 0, which corresponds to center of the control.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Determines behaviour of manipulator, when mouse button is released. + + + + The property controls behaviour of manipulator on releasing mouse button. If + the property is set to , then position of manipulator is reset + to 0, when mouse button is released. Otherwise manipulator stays on the place, + where it was left. + + Default value is set to . + + + + + + Color used for drawing borders. + + + + Default value is set to . + + + + + + Background color used for filling area corresponding to positive values. + + + + Default value is set to . + + + + + + Background color used for filling area corresponding to negative values. + + + + Default value is set to . + + + + + + Color used for filling manipulator. + + + + Default value is set to . + + + + + + Defines if control has horizontal or vertical look. + + + + Default value is set to . + + + + + + Current manipulator's position, [-1, 1]. + + + The property equals to current manipulator's position. + + + + + + Event used for notification about manipulator's position changes. + + + + + Delegate used for notification about manipulator's position changes. + + + Event sender - object sending the event. + Current position of manipulator. + + + + + Video source player control. + + + The control is aimed to play video sources, which implement + interface. To start playing a video + the property should be initialized first and then + method should be called. In the case if user needs to + perform some sort of image processing with video frames before they are displayed, + the event may be used. + + Sample usage: + + // set new frame event handler if we need processing of new frames + playerControl.NewFrame += new VideoSourcePlayer.NewFrameHandler( this.playerControl_NewFrame ); + + // create video source + IVideoSource videoSource = new ... + // start playing it + playerControl.VideoSource = videoSource; + playerControl.Start( ); + ... + + // new frame event handler + private void playerControl_NewFrame( object sender, ref Bitmap image ) + { + // process new frame somehow ... + + // Note: it may be even changed, so the control will display the result + // of image processing done here + } + + + + + + + Initializes a new instance of the class. + + + + + Start video source and displaying its frames. + + + + + Stop video source. + + + The method stops video source by calling its + method, which abourts internal video source's thread. Use and + for more polite video source stopping, which gives a chance for + video source to perform proper shut down and clean up. + + + + + + Signal video source to stop. + + + Use method to wait until video source + stops. + + + + + Wait for video source has stopped. + + + Waits for video source stopping after it was signaled to stop using + method. If was not called, then + it will be called automatically. + + + + + Get clone of current video frame displayed by the control. + + + Returns copy of the video frame, which is currently displayed + by the control - the last video frame received from video source. If the + control did not receive any video frames yet, then the method returns + . + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Auto size control or not. + + + The property specifies if the control should be autosized or not. + If the property is set to , then the control will change its size according to + video size and control will change its position automatically to be in the center + of parent's control. + + Setting the property to has no effect if + property is set to . + + + + + + Gets or sets whether the player should keep the aspect ratio of the images being shown. + + + + + + Control's border color. + + + Specifies color of the border drawn around video frame. + + + + + Video source to play. + + + The property sets the video source to play. After setting the property the + method should be used to start playing the video source. + + Trying to change video source while currently set video source is still playing + will generate an exception. Use property to check if current video + source is still playing or or and + methods to stop current video source. + + + Video source can not be changed while current video source is still running. + + + + + State of the current video source. + + + Current state of the current video source object - running or not. + + + + + New frame event. + + + The event is fired on each new frame received from video source. The + event is fired right after receiving and before displaying, what gives user a chance to + perform some image processing on the new frame and/or update it. + + Users should not keep references of the passed to the event handler image. + If user needs to keep the image, it should be cloned, since the original image will be disposed + by the control when it is required. + + + + + + Playing finished event. + + + The event is fired when/if video playing finishes. The reason of video + stopping is provided as an argument to the event handler. + + + + + Delegate to notify about new frame. + + + Event sender. + New frame. + + + + + Angle Box control. + + + + + + Initializes a new instance of the class. + + + + + + Raises the event. + + + An that contains the event data. + + + + + Raises the event. + + + A that contains the event data. + + + + + Clean up any resources being used. + + + true if managed resources should be disposed; otherwise, false. + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets or sets the angle to be displayed. + + + The angle. + + + + + Point Box control. + + + + + + Initializes a new instance of the class. + + + + + + Raises the event. + + + An that contains the event data. + + + + + Raises the event. + + + A that contains the event data. + + + + + Clean up any resources being used. + + + true if managed resources should be disposed; otherwise, false. + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets or sets the x-coordinate + of the displayed point. + + + The point's x-coordinate. + + + + + Gets or sets the y-coordinate + of the displayed point. + + + The point's y-coordinate. + + + + + Displays images in a similar way to System.Windows.Forms.MessageBox. + + + + + + Displays an image on the screen. + + + The image to show. + The width of the image. + The height of the image. + + + + + Displays an image on the screen. + + + The image to show. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image. + The height of the image. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image. + The height of the image. + The width of the image box. + The height of the image box. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image box. + The height of the image box. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + The width of the image box. + The height of the image box. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + + + + + Displays an image on the screen. + + + The image to show. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + The background color to use in the window. + Default is . + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + The background color to use in the window. + Default is . + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + The background color to use in the window. + Default is . + + + + + Initializes a new instance of the class. + + + + + + Raises the event. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net40/Accord.Controls.Imaging.dll b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net40/Accord.Controls.Imaging.dll new file mode 100644 index 0000000000..1096e09f7 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net40/Accord.Controls.Imaging.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net40/Accord.Controls.Imaging.xml b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net40/Accord.Controls.Imaging.xml new file mode 100644 index 0000000000..5a1ba2bee --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net40/Accord.Controls.Imaging.xml @@ -0,0 +1,1409 @@ + + + + Accord.Controls.Imaging + + + + + Color slider control. + + + The control represent a color slider, which allows selecting + one or two values in the [0, 255] range. The application of this control + includes mostly areas of image processing and computer vision, where it is required + to select color threshold or ranges for different type of color filtering. + + Depending on the control's , it has different look and may suite + different tasks. See documentation to for information + about available type and possible control's looks. + + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + Specifies if disposing was invoked by user's code. + + + + + An event, to notify about changes of or properties. + + + The event is fired after changes of or property, + which is caused by user dragging the corresponding control’s arrow (slider). + + + + + + Start color for gradient filling. + + + See documentation to enumeration for information about + the usage of this property. + + + + + End color for gradient filling. + + + See documentation to enumeration for information about + the usage of this property. + + + + + Color to fill control's background in filtered zones. + + + See documentation to enumeration for information about + the usage of this property. + + + + + Specifies control's type. + + + See documentation to enumeration for information about + the usage of this property. + + + + + Minimum selected value, [0, 255]. + + + + + + Maximum selected value, [0, 255]. + + + + + + Single or Double arrow slider control. + + + The property specifies if the slider has one or two selection arrows (sliders). + + The single arrow allows only to specify one value, which is set by + property. The single arrow slider is useful for applications, where it is required to select + color threshold, for example. + + The double arrow allows to specify two values, which are set by + and properties. The double arrow slider is useful for applications, where it is + required to select filtering color range, for example. + + + + + + Enumeration of color slider types. + + + + The slider's type supposes the control's + background filled with gradient startting from color and ending + with color. The color does not have + impact on control's look. + + This type allows as one-arrow, as two-arrows control. + + Sample control's look: + + + The slider's type supposes the control's + background filled with gradient startting from color and ending + with color. In addition the areas, which are outside of + [, ] range, are filled with color. + + This type allows only two-arrows control. + + Sample control's look: + + + The slider's type supposes the + control's background filled with gradient startting from color + and ending with color. In addition the area, which is inside of + [, ] range, is filled with color. + + This type allows only two-arrows control. + + Sample control's look: + + + The slider's type supposes filling areas + outside of [, ] range with and + inside the range with . The color does not + have impact on control's look. + + This type allows as one-arrow, as two-arrows control. + + Sample control's look: + + + + + + + Gradient color slider type. + + + + + Inner gradient color slider type. + + + + + Outer gradient color slider type. + + + + + Threshold color slider type. + + + + + Arguments of histogram events. + + + + + Initializes a new instance of the class. + + + Histogram's index under mouse pointer. + + + + + Initializes a new instance of the class. + + + Min histogram's index in selection. + Max histogram's index in selection. + + + + + Min histogram's index in selection. + + + + + Max histogram's index in selection. + + + + + Histogram's index under mouse pointer. + + + + + Delegate for histogram events handlers. + + + Sender object. + Event arguments. + + + + + Histogram control. + + + The control displays histograms represented with integer arrays, + where each array's element keeps occurrence number of the corresponding element. + + + Sample usage: + + // create array with histogram values + int[] histogramValues = new int[] { 3, 8, 53, 57, 79, 69, ... }; + // set values to histogram control + histogram.Values = histogramValues; + + + Sample control's look: + + + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Paint the control. + + + Data for Paint event. + + + + + Histogram's color. + + + + + + Allow mouse selection or not. + + + In the case if mouse selection is allowed, the control will + fire and events + and provide information about the selection. + + + + + Logarithmic view or not. + + + In the case if logarihmic view is selected, then the control + will display base 10 logarithm of values. + + By default the property is set to false - none logarithmic view. + + + + + Vertical view or not. + + + The property determines if histogram should be displayed vertically or + not (horizontally). + + By default the property is set to false - horizontal view. + + + + + Histogram values. + + + Non-negative histogram values. + + Histogram values should be non-negative. + + + + + Mouse position changed event. + + + The event is fired only if the property is set + to true. The passed to event handler class is initialized + with property only, which is histogram value's + index pointed by mouse. + + + + + Mouse selection changed event. + + + The event is fired only if the property is set + to true. The passed to event handler class is initialized + with and properties + only, which represent selection range - min and max indexes. + + + + + Hue picker control. + + + The control allows selecting hue value (or range) from HSL color space. Hue values + are integer values in the [0, 359] range. + + If control's type is set to , then it allows selecting single + hue value and looks like this:
+ +
+ + If control's type is set to , then it allows selecting range + of hue values and looks like this:
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + Specifies if disposing was invoked by user's code. + + + + + Paint the controls. + + + Paint event arguments. + + + + + An event, to notify about changes of or properties. + + + The event is fired after changes of its , or + properties, which is caused by user dragging the corresponding hue picker's bullets. + + + + + + Selected value of the hue picker control in mode. + + + + + Minimum selected value of the hue picker control in mode. + + + + + Maximum selected value of the hue picker control in mode. + + + + + Current type of the hue picker control. + + + See enumeration for description of the available types. + + + + + Enumeration of hue picker types. + + + + The type provides single bullet to drag, which allows + selecting single hue value. The value is accessible through property. + + The type provides two bullets to drag, which correspond + to minimum and maximum values of the hue range. These values are accessible through + and properties. + + + + + + Selecting single hue value. + + + + + Selecting hue values range. + + + + + Manipulator control. + + + + The manipulator control can be used to mimic behaviour of analogue joystick using + regular mouse. By dragging manipulator away from control's centre, it fires + event notifying about its X/Y coordinates (or about R/Theta coordinates in Polar coordinates system). + + + For example, in robotics applications the control can be used to drive robots. If user drags manipulator + further from centre (increasing distance between centre and manipulator), then higher power (speed) should be + set for robot's motors. But dragging it in different directions away from centre should result in changing + robot's direction: straight forward, backward, turning right or left, etc.
+ +
+ + Another possible application of the control is to control position of some device, etc. + For example, the control could be used with pan-tilt camera - by dragging control away from centre, + the camera may rotate in one of the directions.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + Clean up any resources being used. + + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Determines if the control has square or round look. + + + + The control has a square look if the property is set to , + otherwise it has round look. + + Default value is set to . + + + + + + Determines if horizontal axis should be drawn or not. + + + + Default value is set to . + + + + + + Determines if vertical axis should be drawn or not. + + + + Default value is set to . + + + + + + Determines behaviour of manipulator, when mouse button is released. + + + + The property controls behaviour of manipulator on releasing mouse button. If + the property is set to , then position of manipulator is reset + to (0, 0), when mouse button is released. Otherwise manipulator stays on the place, + where it was left. + + Default value is set to . + + + + + + Color used for drawing borders and axis's. + + + + Default value is set to . + + + + + + Background color used for filling top left quarter of the control. + + + + Default value is set to . + + + + + + Background color used for filling top right quarter of the control. + + + + Default value is set to . + + + + + + Background color used for filling bottom left quarter of the control. + + + + Default value is set to . + + + + + + Background color used for filling bottom right quarter of the control. + + + + Default value is set to . + + + + + + Color used for filling manipulator. + + + + Default value is set to . + + + + + + Current manipulator's position. + + + The property equals to current manipulator's position. Both X and Y values + are in the [-1, 1] range and represented in + Cartesian coordinate system. + + + + + + Event used for notification about manipulator's position changes. + + + + + Class, which summarizes arguments of manipulator's position change event. + + + Properties of this class allow to get: + + X/Y coordinates of manipulator in + Cartesian coordinate system, + where X axis is directed from center of the control to the right and Y axis is directed from + center to the top. Both coordinates are measured in [-1, 1] range. + Theta and R coordinates of manipulator in + Polar coordinate system. + + + + + + + Initializes a new instance of the class. + + + X coordinate of manipulator, [-1, 1]. + Y coordinate of manipulator, [-1, 1]. + + + + + X coordinate of manipulator, [-1, 1]. + + + + + Y coordinate of manipulator, [-1, 1]. + + + + + Theta coordinate of manipulator in Polar coordinate system, [0, 359]. + + + + + R (radius) coordinate of manipulator in Polar coordinate system, [0, 1]. + + + + + Delegate used for notification about manipulator's position changes. + + + Event sender - object sending the event. + Event arguments - current manipulator's position. + + + + + Picture box control for displaying an image. + + + This control is inherited from System.Windows.Forms.PictureBox and is + aimed to resolve one of its issues - inability to display images with high color depth, + like 16 bpp grayscale, 48 bpp and 64 bpp color images. .NET framework does not handle + 16 bpp grayscale images at all, throwing exception when user tries to display them. Color + images with 48 bpp and 64 bpp are "kind of" supported, but only maximum of 13 bits for each + color plane are allowed. Therefore this control is created, which allows to display as + 16 bpp grayscale images, as 48 bpp and 64 bpp color images. + + To display high color depth images, the control does internal conversion of them + to lower color depth images - 8 bpp grayscale, 24 bpp and 32 bpp color images respectively. In + the case source image already has low color depth, it is displayed without any conversions. + + + + + + + Gets or sets the image that the PictureBox displays. + + + The property is used to set image to be displayed or to get currently + displayed image. + + In the case if source image has high color depth, like 16 bpp grayscale image, + 48 bpp or 64 bpp color image, it is converted to lower color depth before displaying - + to 8 bpp grayscale, 24 bpp or 32 bpp color image respectively. + + During color conversion the original source image is kept unmodified, but internal + converted copy is created. The property always returns original source image. + + + + + + Slider control. + + + + The control represents a slider, which can be dragged in the [-1, 1] range. + Default position of the slider is set 0, which corresponds to center of the control.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Determines behaviour of manipulator, when mouse button is released. + + + + The property controls behaviour of manipulator on releasing mouse button. If + the property is set to , then position of manipulator is reset + to 0, when mouse button is released. Otherwise manipulator stays on the place, + where it was left. + + Default value is set to . + + + + + + Color used for drawing borders. + + + + Default value is set to . + + + + + + Background color used for filling area corresponding to positive values. + + + + Default value is set to . + + + + + + Background color used for filling area corresponding to negative values. + + + + Default value is set to . + + + + + + Color used for filling manipulator. + + + + Default value is set to . + + + + + + Defines if control has horizontal or vertical look. + + + + Default value is set to . + + + + + + Current manipulator's position, [-1, 1]. + + + The property equals to current manipulator's position. + + + + + + Event used for notification about manipulator's position changes. + + + + + Delegate used for notification about manipulator's position changes. + + + Event sender - object sending the event. + Current position of manipulator. + + + + + Video source player control. + + + The control is aimed to play video sources, which implement + interface. To start playing a video + the property should be initialized first and then + method should be called. In the case if user needs to + perform some sort of image processing with video frames before they are displayed, + the event may be used. + + Sample usage: + + // set new frame event handler if we need processing of new frames + playerControl.NewFrame += new VideoSourcePlayer.NewFrameHandler( this.playerControl_NewFrame ); + + // create video source + IVideoSource videoSource = new ... + // start playing it + playerControl.VideoSource = videoSource; + playerControl.Start( ); + ... + + // new frame event handler + private void playerControl_NewFrame( object sender, ref Bitmap image ) + { + // process new frame somehow ... + + // Note: it may be even changed, so the control will display the result + // of image processing done here + } + + + + + + + Initializes a new instance of the class. + + + + + Start video source and displaying its frames. + + + + + Stop video source. + + + The method stops video source by calling its + method, which abourts internal video source's thread. Use and + for more polite video source stopping, which gives a chance for + video source to perform proper shut down and clean up. + + + + + + Signal video source to stop. + + + Use method to wait until video source + stops. + + + + + Wait for video source has stopped. + + + Waits for video source stopping after it was signaled to stop using + method. If was not called, then + it will be called automatically. + + + + + Get clone of current video frame displayed by the control. + + + Returns copy of the video frame, which is currently displayed + by the control - the last video frame received from video source. If the + control did not receive any video frames yet, then the method returns + . + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Auto size control or not. + + + The property specifies if the control should be autosized or not. + If the property is set to , then the control will change its size according to + video size and control will change its position automatically to be in the center + of parent's control. + + Setting the property to has no effect if + property is set to . + + + + + + Gets or sets whether the player should keep the aspect ratio of the images being shown. + + + + + + Control's border color. + + + Specifies color of the border drawn around video frame. + + + + + Video source to play. + + + The property sets the video source to play. After setting the property the + method should be used to start playing the video source. + + Trying to change video source while currently set video source is still playing + will generate an exception. Use property to check if current video + source is still playing or or and + methods to stop current video source. + + + Video source can not be changed while current video source is still running. + + + + + State of the current video source. + + + Current state of the current video source object - running or not. + + + + + New frame event. + + + The event is fired on each new frame received from video source. The + event is fired right after receiving and before displaying, what gives user a chance to + perform some image processing on the new frame and/or update it. + + Users should not keep references of the passed to the event handler image. + If user needs to keep the image, it should be cloned, since the original image will be disposed + by the control when it is required. + + + + + + Playing finished event. + + + The event is fired when/if video playing finishes. The reason of video + stopping is provided as an argument to the event handler. + + + + + Delegate to notify about new frame. + + + Event sender. + New frame. + + + + + Angle Box control. + + + + + + Initializes a new instance of the class. + + + + + + Raises the event. + + + An that contains the event data. + + + + + Raises the event. + + + A that contains the event data. + + + + + Clean up any resources being used. + + + true if managed resources should be disposed; otherwise, false. + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets or sets the angle to be displayed. + + + The angle. + + + + + Point Box control. + + + + + + Initializes a new instance of the class. + + + + + + Raises the event. + + + An that contains the event data. + + + + + Raises the event. + + + A that contains the event data. + + + + + Clean up any resources being used. + + + true if managed resources should be disposed; otherwise, false. + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets or sets the x-coordinate + of the displayed point. + + + The point's x-coordinate. + + + + + Gets or sets the y-coordinate + of the displayed point. + + + The point's y-coordinate. + + + + + Displays images in a similar way to System.Windows.Forms.MessageBox. + + + + + + Displays an image on the screen. + + + The image to show. + The width of the image. + The height of the image. + + + + + Displays an image on the screen. + + + The image to show. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image. + The height of the image. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image. + The height of the image. + The width of the image box. + The height of the image box. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image box. + The height of the image box. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + The width of the image box. + The height of the image box. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + + + + + Displays an image on the screen. + + + The image to show. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + The background color to use in the window. + Default is . + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + The background color to use in the window. + Default is . + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + The background color to use in the window. + Default is . + + + + + Initializes a new instance of the class. + + + + + + Raises the event. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net45/Accord.Controls.Imaging.dll b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net45/Accord.Controls.Imaging.dll new file mode 100644 index 0000000000..ffe0598b6 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net45/Accord.Controls.Imaging.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net45/Accord.Controls.Imaging.xml b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net45/Accord.Controls.Imaging.xml new file mode 100644 index 0000000000..5a1ba2bee --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.Imaging.3.0.2/lib/net45/Accord.Controls.Imaging.xml @@ -0,0 +1,1409 @@ + + + + Accord.Controls.Imaging + + + + + Color slider control. + + + The control represent a color slider, which allows selecting + one or two values in the [0, 255] range. The application of this control + includes mostly areas of image processing and computer vision, where it is required + to select color threshold or ranges for different type of color filtering. + + Depending on the control's , it has different look and may suite + different tasks. See documentation to for information + about available type and possible control's looks. + + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + Specifies if disposing was invoked by user's code. + + + + + An event, to notify about changes of or properties. + + + The event is fired after changes of or property, + which is caused by user dragging the corresponding control’s arrow (slider). + + + + + + Start color for gradient filling. + + + See documentation to enumeration for information about + the usage of this property. + + + + + End color for gradient filling. + + + See documentation to enumeration for information about + the usage of this property. + + + + + Color to fill control's background in filtered zones. + + + See documentation to enumeration for information about + the usage of this property. + + + + + Specifies control's type. + + + See documentation to enumeration for information about + the usage of this property. + + + + + Minimum selected value, [0, 255]. + + + + + + Maximum selected value, [0, 255]. + + + + + + Single or Double arrow slider control. + + + The property specifies if the slider has one or two selection arrows (sliders). + + The single arrow allows only to specify one value, which is set by + property. The single arrow slider is useful for applications, where it is required to select + color threshold, for example. + + The double arrow allows to specify two values, which are set by + and properties. The double arrow slider is useful for applications, where it is + required to select filtering color range, for example. + + + + + + Enumeration of color slider types. + + + + The slider's type supposes the control's + background filled with gradient startting from color and ending + with color. The color does not have + impact on control's look. + + This type allows as one-arrow, as two-arrows control. + + Sample control's look: + + + The slider's type supposes the control's + background filled with gradient startting from color and ending + with color. In addition the areas, which are outside of + [, ] range, are filled with color. + + This type allows only two-arrows control. + + Sample control's look: + + + The slider's type supposes the + control's background filled with gradient startting from color + and ending with color. In addition the area, which is inside of + [, ] range, is filled with color. + + This type allows only two-arrows control. + + Sample control's look: + + + The slider's type supposes filling areas + outside of [, ] range with and + inside the range with . The color does not + have impact on control's look. + + This type allows as one-arrow, as two-arrows control. + + Sample control's look: + + + + + + + Gradient color slider type. + + + + + Inner gradient color slider type. + + + + + Outer gradient color slider type. + + + + + Threshold color slider type. + + + + + Arguments of histogram events. + + + + + Initializes a new instance of the class. + + + Histogram's index under mouse pointer. + + + + + Initializes a new instance of the class. + + + Min histogram's index in selection. + Max histogram's index in selection. + + + + + Min histogram's index in selection. + + + + + Max histogram's index in selection. + + + + + Histogram's index under mouse pointer. + + + + + Delegate for histogram events handlers. + + + Sender object. + Event arguments. + + + + + Histogram control. + + + The control displays histograms represented with integer arrays, + where each array's element keeps occurrence number of the corresponding element. + + + Sample usage: + + // create array with histogram values + int[] histogramValues = new int[] { 3, 8, 53, 57, 79, 69, ... }; + // set values to histogram control + histogram.Values = histogramValues; + + + Sample control's look: + + + + + + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Paint the control. + + + Data for Paint event. + + + + + Histogram's color. + + + + + + Allow mouse selection or not. + + + In the case if mouse selection is allowed, the control will + fire and events + and provide information about the selection. + + + + + Logarithmic view or not. + + + In the case if logarihmic view is selected, then the control + will display base 10 logarithm of values. + + By default the property is set to false - none logarithmic view. + + + + + Vertical view or not. + + + The property determines if histogram should be displayed vertically or + not (horizontally). + + By default the property is set to false - horizontal view. + + + + + Histogram values. + + + Non-negative histogram values. + + Histogram values should be non-negative. + + + + + Mouse position changed event. + + + The event is fired only if the property is set + to true. The passed to event handler class is initialized + with property only, which is histogram value's + index pointed by mouse. + + + + + Mouse selection changed event. + + + The event is fired only if the property is set + to true. The passed to event handler class is initialized + with and properties + only, which represent selection range - min and max indexes. + + + + + Hue picker control. + + + The control allows selecting hue value (or range) from HSL color space. Hue values + are integer values in the [0, 359] range. + + If control's type is set to , then it allows selecting single + hue value and looks like this:
+ +
+ + If control's type is set to , then it allows selecting range + of hue values and looks like this:
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + + Dispose the object. + + + Specifies if disposing was invoked by user's code. + + + + + Paint the controls. + + + Paint event arguments. + + + + + An event, to notify about changes of or properties. + + + The event is fired after changes of its , or + properties, which is caused by user dragging the corresponding hue picker's bullets. + + + + + + Selected value of the hue picker control in mode. + + + + + Minimum selected value of the hue picker control in mode. + + + + + Maximum selected value of the hue picker control in mode. + + + + + Current type of the hue picker control. + + + See enumeration for description of the available types. + + + + + Enumeration of hue picker types. + + + + The type provides single bullet to drag, which allows + selecting single hue value. The value is accessible through property. + + The type provides two bullets to drag, which correspond + to minimum and maximum values of the hue range. These values are accessible through + and properties. + + + + + + Selecting single hue value. + + + + + Selecting hue values range. + + + + + Manipulator control. + + + + The manipulator control can be used to mimic behaviour of analogue joystick using + regular mouse. By dragging manipulator away from control's centre, it fires + event notifying about its X/Y coordinates (or about R/Theta coordinates in Polar coordinates system). + + + For example, in robotics applications the control can be used to drive robots. If user drags manipulator + further from centre (increasing distance between centre and manipulator), then higher power (speed) should be + set for robot's motors. But dragging it in different directions away from centre should result in changing + robot's direction: straight forward, backward, turning right or left, etc.
+ +
+ + Another possible application of the control is to control position of some device, etc. + For example, the control could be used with pan-tilt camera - by dragging control away from centre, + the camera may rotate in one of the directions.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + Clean up any resources being used. + + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Determines if the control has square or round look. + + + + The control has a square look if the property is set to , + otherwise it has round look. + + Default value is set to . + + + + + + Determines if horizontal axis should be drawn or not. + + + + Default value is set to . + + + + + + Determines if vertical axis should be drawn or not. + + + + Default value is set to . + + + + + + Determines behaviour of manipulator, when mouse button is released. + + + + The property controls behaviour of manipulator on releasing mouse button. If + the property is set to , then position of manipulator is reset + to (0, 0), when mouse button is released. Otherwise manipulator stays on the place, + where it was left. + + Default value is set to . + + + + + + Color used for drawing borders and axis's. + + + + Default value is set to . + + + + + + Background color used for filling top left quarter of the control. + + + + Default value is set to . + + + + + + Background color used for filling top right quarter of the control. + + + + Default value is set to . + + + + + + Background color used for filling bottom left quarter of the control. + + + + Default value is set to . + + + + + + Background color used for filling bottom right quarter of the control. + + + + Default value is set to . + + + + + + Color used for filling manipulator. + + + + Default value is set to . + + + + + + Current manipulator's position. + + + The property equals to current manipulator's position. Both X and Y values + are in the [-1, 1] range and represented in + Cartesian coordinate system. + + + + + + Event used for notification about manipulator's position changes. + + + + + Class, which summarizes arguments of manipulator's position change event. + + + Properties of this class allow to get: + + X/Y coordinates of manipulator in + Cartesian coordinate system, + where X axis is directed from center of the control to the right and Y axis is directed from + center to the top. Both coordinates are measured in [-1, 1] range. + Theta and R coordinates of manipulator in + Polar coordinate system. + + + + + + + Initializes a new instance of the class. + + + X coordinate of manipulator, [-1, 1]. + Y coordinate of manipulator, [-1, 1]. + + + + + X coordinate of manipulator, [-1, 1]. + + + + + Y coordinate of manipulator, [-1, 1]. + + + + + Theta coordinate of manipulator in Polar coordinate system, [0, 359]. + + + + + R (radius) coordinate of manipulator in Polar coordinate system, [0, 1]. + + + + + Delegate used for notification about manipulator's position changes. + + + Event sender - object sending the event. + Event arguments - current manipulator's position. + + + + + Picture box control for displaying an image. + + + This control is inherited from System.Windows.Forms.PictureBox and is + aimed to resolve one of its issues - inability to display images with high color depth, + like 16 bpp grayscale, 48 bpp and 64 bpp color images. .NET framework does not handle + 16 bpp grayscale images at all, throwing exception when user tries to display them. Color + images with 48 bpp and 64 bpp are "kind of" supported, but only maximum of 13 bits for each + color plane are allowed. Therefore this control is created, which allows to display as + 16 bpp grayscale images, as 48 bpp and 64 bpp color images. + + To display high color depth images, the control does internal conversion of them + to lower color depth images - 8 bpp grayscale, 24 bpp and 32 bpp color images respectively. In + the case source image already has low color depth, it is displayed without any conversions. + + + + + + + Gets or sets the image that the PictureBox displays. + + + The property is used to set image to be displayed or to get currently + displayed image. + + In the case if source image has high color depth, like 16 bpp grayscale image, + 48 bpp or 64 bpp color image, it is converted to lower color depth before displaying - + to 8 bpp grayscale, 24 bpp or 32 bpp color image respectively. + + During color conversion the original source image is kept unmodified, but internal + converted copy is created. The property always returns original source image. + + + + + + Slider control. + + + + The control represents a slider, which can be dragged in the [-1, 1] range. + Default position of the slider is set 0, which corresponds to center of the control.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Determines behaviour of manipulator, when mouse button is released. + + + + The property controls behaviour of manipulator on releasing mouse button. If + the property is set to , then position of manipulator is reset + to 0, when mouse button is released. Otherwise manipulator stays on the place, + where it was left. + + Default value is set to . + + + + + + Color used for drawing borders. + + + + Default value is set to . + + + + + + Background color used for filling area corresponding to positive values. + + + + Default value is set to . + + + + + + Background color used for filling area corresponding to negative values. + + + + Default value is set to . + + + + + + Color used for filling manipulator. + + + + Default value is set to . + + + + + + Defines if control has horizontal or vertical look. + + + + Default value is set to . + + + + + + Current manipulator's position, [-1, 1]. + + + The property equals to current manipulator's position. + + + + + + Event used for notification about manipulator's position changes. + + + + + Delegate used for notification about manipulator's position changes. + + + Event sender - object sending the event. + Current position of manipulator. + + + + + Video source player control. + + + The control is aimed to play video sources, which implement + interface. To start playing a video + the property should be initialized first and then + method should be called. In the case if user needs to + perform some sort of image processing with video frames before they are displayed, + the event may be used. + + Sample usage: + + // set new frame event handler if we need processing of new frames + playerControl.NewFrame += new VideoSourcePlayer.NewFrameHandler( this.playerControl_NewFrame ); + + // create video source + IVideoSource videoSource = new ... + // start playing it + playerControl.VideoSource = videoSource; + playerControl.Start( ); + ... + + // new frame event handler + private void playerControl_NewFrame( object sender, ref Bitmap image ) + { + // process new frame somehow ... + + // Note: it may be even changed, so the control will display the result + // of image processing done here + } + + + + + + + Initializes a new instance of the class. + + + + + Start video source and displaying its frames. + + + + + Stop video source. + + + The method stops video source by calling its + method, which abourts internal video source's thread. Use and + for more polite video source stopping, which gives a chance for + video source to perform proper shut down and clean up. + + + + + + Signal video source to stop. + + + Use method to wait until video source + stops. + + + + + Wait for video source has stopped. + + + Waits for video source stopping after it was signaled to stop using + method. If was not called, then + it will be called automatically. + + + + + Get clone of current video frame displayed by the control. + + + Returns copy of the video frame, which is currently displayed + by the control - the last video frame received from video source. If the + control did not receive any video frames yet, then the method returns + . + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Auto size control or not. + + + The property specifies if the control should be autosized or not. + If the property is set to , then the control will change its size according to + video size and control will change its position automatically to be in the center + of parent's control. + + Setting the property to has no effect if + property is set to . + + + + + + Gets or sets whether the player should keep the aspect ratio of the images being shown. + + + + + + Control's border color. + + + Specifies color of the border drawn around video frame. + + + + + Video source to play. + + + The property sets the video source to play. After setting the property the + method should be used to start playing the video source. + + Trying to change video source while currently set video source is still playing + will generate an exception. Use property to check if current video + source is still playing or or and + methods to stop current video source. + + + Video source can not be changed while current video source is still running. + + + + + State of the current video source. + + + Current state of the current video source object - running or not. + + + + + New frame event. + + + The event is fired on each new frame received from video source. The + event is fired right after receiving and before displaying, what gives user a chance to + perform some image processing on the new frame and/or update it. + + Users should not keep references of the passed to the event handler image. + If user needs to keep the image, it should be cloned, since the original image will be disposed + by the control when it is required. + + + + + + Playing finished event. + + + The event is fired when/if video playing finishes. The reason of video + stopping is provided as an argument to the event handler. + + + + + Delegate to notify about new frame. + + + Event sender. + New frame. + + + + + Angle Box control. + + + + + + Initializes a new instance of the class. + + + + + + Raises the event. + + + An that contains the event data. + + + + + Raises the event. + + + A that contains the event data. + + + + + Clean up any resources being used. + + + true if managed resources should be disposed; otherwise, false. + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets or sets the angle to be displayed. + + + The angle. + + + + + Point Box control. + + + + + + Initializes a new instance of the class. + + + + + + Raises the event. + + + An that contains the event data. + + + + + Raises the event. + + + A that contains the event data. + + + + + Clean up any resources being used. + + + true if managed resources should be disposed; otherwise, false. + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Gets or sets the x-coordinate + of the displayed point. + + + The point's x-coordinate. + + + + + Gets or sets the y-coordinate + of the displayed point. + + + The point's y-coordinate. + + + + + Displays images in a similar way to System.Windows.Forms.MessageBox. + + + + + + Displays an image on the screen. + + + The image to show. + The width of the image. + The height of the image. + + + + + Displays an image on the screen. + + + The image to show. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image. + The height of the image. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image. + The height of the image. + The width of the image box. + The height of the image box. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image box. + The height of the image box. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + The width of the image box. + The height of the image box. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + + + + + Displays an image on the screen. + + + The image to show. + + + + + Displays an image on the screen. + + + The image to show. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The image to show. + How to display the image inside the image box. + The background color to use in the window. + Default is . + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + The background color to use in the window. + Default is . + + + + + Displays an image on the screen. + + + The text to display in the title bar of the image box. + The image to show. + How to display the image inside the image box. + The width of the image box. + The height of the image box. + The background color to use in the window. + Default is . + + + + + Initializes a new instance of the class. + + + + + + Raises the event. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/Accord.Controls.Vision.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/Accord.Controls.Vision.3.0.2.nupkg new file mode 100644 index 0000000000..95e623f3d Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/Accord.Controls.Vision.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net35/Accord.Controls.Vision.dll b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net35/Accord.Controls.Vision.dll new file mode 100644 index 0000000000..b575ca6ae Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net35/Accord.Controls.Vision.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net35/Accord.Controls.Vision.xml b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net35/Accord.Controls.Vision.xml new file mode 100644 index 0000000000..94e4b1f7b --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net35/Accord.Controls.Vision.xml @@ -0,0 +1,740 @@ + + + + Accord.Controls.Vision + + + + + Head movements. + + + + + + Moving head to the left. + + + + + + Moving head to the right. + + + + + + Moving head up. + + + + + + Moving head down. + + + + + + Provides data to face movement events. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the x-coordinate of the face's center. + + + + + + Gets or sets the y-coordinate of the face's center. + + + + + + Face-based tracking controller. + + + + + + Initializes a new instance of the class. + + + + + + Calibrates the specified movement using current positions. + + + The movement to be calibrated. + + + + + Starts processing the source + stream and sending events. + + + + + + Stops sending events. + + + + + + Resets the controller. + + + + + + Called when the face being tracked leaves the scene. + + + + + + Called when a face enters the scene. + + + + + + Called when a head movement is detected. + + + + + + Called when [property changed]. + + The name. + + + + + Releases the unmanaged resources used by the + + and optionally releases the managed resources. + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Gets or sets the object used to marshal event-handler calls that + are issued when the head object position has been updated. + + + The representing the object + used to marshal the event-handler calls that are issued when the head + position has been updated. The default is null. + + + + + Gets or sets the video device used to track objects. + + + The used to track objects. + + + + + Gets the used to + track the head object in the video stream. + + + The active object tracker. + + + + + Gets the used to + detect the head object in the video stream. + + + The active object detector. + + + + + Gets the current face's center point. + + + + + + Gets or sets the maximum position + for horizontal scale calibration. + + + + + + Gets or sets the minimum position + for horizontal scale calibration. + + + + + + Gets or sets the maximum position + for vertical scale calibration. + + + + + + Gets or sets the minimum position + for vertical scale calibration. + + + + + + Gets a value indicating whether this instance is + attempting to detect faces in the video stream. + + + + true if this instance is detecting; otherwise, false. + + + + + + Gets a value indicating whether this instance is + actually tracking an object in the video stream. + + + + true if this instance is tracking; otherwise, false. + + + + + + Gets a value indicating whether this instance + is currently processing and sending events. + + + + true if this instance is processing + and sending events; otherwise, false. + + + + + + Occurs when the face moves in the video scene. + + + + + + Occurs when a face enters the video scene. + + + + + + Occurs when a face leaves the video scene. + + + + + + Gets or sets the collection of currency managers for the . + + + + The collection of + objects for this . + + + + + + Gets the collection of data-binding objects for this . + + + + The for this . + + + + + + Occurs when a property value changes. + + + + + + Head-based tracking controller. + + + + + + Initializes a new instance of the class. + + + + + + Resets the controller. + + + + + + Starts processing the video source. + + + + + + Stops the video source. + + + + + + Signal the video source to stop. + + + + + + Waits until the video source has stopped. + + + + + + Calibrates the specified movement using current positions. + + The movement to be calibrated. + + + + + Called when a head movement is detected. + + + + + + Called when the face being tracked leaves the scene. + + + + + + Called when a face enters the scene. + + + + + + Called when [property changed]. + + The name. + + + + Releases the unmanaged resources used by the + + and optionally releases the managed resources. + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Gets the used to + track the head object in the video stream. + + + The active object tracker. + + + + + Gets the used to + detect the head object in the video stream. + + + The active object detector. + + + + + Gets the current head position. + + + + + + Gets the current head tilting angle. + + + + + + Gets the current head scale. + + + + + + Gets or sets the maximum position + for horizontal scale calibration. + + + + + + Gets or sets the minimum position + for horizontal scale calibration. + + + + + + Gets or sets the maximum position + for vertical scale calibration. + + + + + + Gets or sets the minimum position + for vertical scale calibration. + + + + + + Gets or sets the maximum area + for proximity scale calibration. + + + + + + Gets or sets the minimum area + for proximity scale calibration. + + + + + + Gets or sets the maximum angle + for head tilting calibration. + + + + + + Gets or sets the minimum angle + for head tilting calibration. + + + + + + Gets or sets the object used to marshal event-handler calls that + are issued when the head object position has been updated. + + + The representing the object + used to marshal the event-handler calls that are issued when the head + position has been updated. The default is null. + + + + + Gets or sets the video device used to track objects. + + + The used to track objects. + + + + + Gets a value indicating whether this instance is + attempting to detect faces in the video stream. + + + + true if this instance is detecting; otherwise, false. + + + + + + Gets a value indicating whether this instance is + actually tracking an object in the video stream. + + + + true if this instance is tracking; otherwise, false. + + + + + + Occurs when the head moves in the video scene. + + + + + Occurs when a head enters the video scene. + + + + + Occurs when a head leaves the video scene. + + + + + Gets a value indicating whether this instance + is currently processing and sending events. + + + true if this instance is processing + and sending events; otherwise, false. + + + + + + Gets or sets the collection of currency managers for the . + + + + The collection of objects for this . + + + + + Gets the collection of data-binding objects for this . + + + + The for this . + + + + + Occurs when a property value changes. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Video source. + + + The meaning of the property depends on particular video source. + Depending on video source it may be a file name, URL or any other string + describing the video source. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source error event. + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + New frame event. + + This event is used to notify clients about new available video frame. + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, but video source is responsible for + disposing its own original copy after notifying of clients. + + + + + + Provides data to head movement events. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the x-coordinate of the head. + + + + + + Gets or sets the y-coordinate of the head. + + + The Y. + + + + + Gets or sets the scale of the head. + + + The scale. + + + + + Gets or sets the tilting angle of the head. + + + The angle. + + + + + Head movements. + + + + + Moving head to the left. + + + + + + Moving head to the right. + + + + + + Moving head up. + + + + + + Moving head down. + + + + + + Moving head forward. + + + + + + Moving head backward. + + + + + + Tilting head to the left. + + + + + + Tilting head to the right. + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net40/Accord.Controls.Vision.dll b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net40/Accord.Controls.Vision.dll new file mode 100644 index 0000000000..7dbda0c0f Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net40/Accord.Controls.Vision.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net40/Accord.Controls.Vision.xml b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net40/Accord.Controls.Vision.xml new file mode 100644 index 0000000000..94e4b1f7b --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net40/Accord.Controls.Vision.xml @@ -0,0 +1,740 @@ + + + + Accord.Controls.Vision + + + + + Head movements. + + + + + + Moving head to the left. + + + + + + Moving head to the right. + + + + + + Moving head up. + + + + + + Moving head down. + + + + + + Provides data to face movement events. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the x-coordinate of the face's center. + + + + + + Gets or sets the y-coordinate of the face's center. + + + + + + Face-based tracking controller. + + + + + + Initializes a new instance of the class. + + + + + + Calibrates the specified movement using current positions. + + + The movement to be calibrated. + + + + + Starts processing the source + stream and sending events. + + + + + + Stops sending events. + + + + + + Resets the controller. + + + + + + Called when the face being tracked leaves the scene. + + + + + + Called when a face enters the scene. + + + + + + Called when a head movement is detected. + + + + + + Called when [property changed]. + + The name. + + + + + Releases the unmanaged resources used by the + + and optionally releases the managed resources. + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Gets or sets the object used to marshal event-handler calls that + are issued when the head object position has been updated. + + + The representing the object + used to marshal the event-handler calls that are issued when the head + position has been updated. The default is null. + + + + + Gets or sets the video device used to track objects. + + + The used to track objects. + + + + + Gets the used to + track the head object in the video stream. + + + The active object tracker. + + + + + Gets the used to + detect the head object in the video stream. + + + The active object detector. + + + + + Gets the current face's center point. + + + + + + Gets or sets the maximum position + for horizontal scale calibration. + + + + + + Gets or sets the minimum position + for horizontal scale calibration. + + + + + + Gets or sets the maximum position + for vertical scale calibration. + + + + + + Gets or sets the minimum position + for vertical scale calibration. + + + + + + Gets a value indicating whether this instance is + attempting to detect faces in the video stream. + + + + true if this instance is detecting; otherwise, false. + + + + + + Gets a value indicating whether this instance is + actually tracking an object in the video stream. + + + + true if this instance is tracking; otherwise, false. + + + + + + Gets a value indicating whether this instance + is currently processing and sending events. + + + + true if this instance is processing + and sending events; otherwise, false. + + + + + + Occurs when the face moves in the video scene. + + + + + + Occurs when a face enters the video scene. + + + + + + Occurs when a face leaves the video scene. + + + + + + Gets or sets the collection of currency managers for the . + + + + The collection of + objects for this . + + + + + + Gets the collection of data-binding objects for this . + + + + The for this . + + + + + + Occurs when a property value changes. + + + + + + Head-based tracking controller. + + + + + + Initializes a new instance of the class. + + + + + + Resets the controller. + + + + + + Starts processing the video source. + + + + + + Stops the video source. + + + + + + Signal the video source to stop. + + + + + + Waits until the video source has stopped. + + + + + + Calibrates the specified movement using current positions. + + The movement to be calibrated. + + + + + Called when a head movement is detected. + + + + + + Called when the face being tracked leaves the scene. + + + + + + Called when a face enters the scene. + + + + + + Called when [property changed]. + + The name. + + + + Releases the unmanaged resources used by the + + and optionally releases the managed resources. + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Gets the used to + track the head object in the video stream. + + + The active object tracker. + + + + + Gets the used to + detect the head object in the video stream. + + + The active object detector. + + + + + Gets the current head position. + + + + + + Gets the current head tilting angle. + + + + + + Gets the current head scale. + + + + + + Gets or sets the maximum position + for horizontal scale calibration. + + + + + + Gets or sets the minimum position + for horizontal scale calibration. + + + + + + Gets or sets the maximum position + for vertical scale calibration. + + + + + + Gets or sets the minimum position + for vertical scale calibration. + + + + + + Gets or sets the maximum area + for proximity scale calibration. + + + + + + Gets or sets the minimum area + for proximity scale calibration. + + + + + + Gets or sets the maximum angle + for head tilting calibration. + + + + + + Gets or sets the minimum angle + for head tilting calibration. + + + + + + Gets or sets the object used to marshal event-handler calls that + are issued when the head object position has been updated. + + + The representing the object + used to marshal the event-handler calls that are issued when the head + position has been updated. The default is null. + + + + + Gets or sets the video device used to track objects. + + + The used to track objects. + + + + + Gets a value indicating whether this instance is + attempting to detect faces in the video stream. + + + + true if this instance is detecting; otherwise, false. + + + + + + Gets a value indicating whether this instance is + actually tracking an object in the video stream. + + + + true if this instance is tracking; otherwise, false. + + + + + + Occurs when the head moves in the video scene. + + + + + Occurs when a head enters the video scene. + + + + + Occurs when a head leaves the video scene. + + + + + Gets a value indicating whether this instance + is currently processing and sending events. + + + true if this instance is processing + and sending events; otherwise, false. + + + + + + Gets or sets the collection of currency managers for the . + + + + The collection of objects for this . + + + + + Gets the collection of data-binding objects for this . + + + + The for this . + + + + + Occurs when a property value changes. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Video source. + + + The meaning of the property depends on particular video source. + Depending on video source it may be a file name, URL or any other string + describing the video source. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source error event. + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + New frame event. + + This event is used to notify clients about new available video frame. + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, but video source is responsible for + disposing its own original copy after notifying of clients. + + + + + + Provides data to head movement events. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the x-coordinate of the head. + + + + + + Gets or sets the y-coordinate of the head. + + + The Y. + + + + + Gets or sets the scale of the head. + + + The scale. + + + + + Gets or sets the tilting angle of the head. + + + The angle. + + + + + Head movements. + + + + + Moving head to the left. + + + + + + Moving head to the right. + + + + + + Moving head up. + + + + + + Moving head down. + + + + + + Moving head forward. + + + + + + Moving head backward. + + + + + + Tilting head to the left. + + + + + + Tilting head to the right. + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net45/Accord.Controls.Vision.dll b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net45/Accord.Controls.Vision.dll new file mode 100644 index 0000000000..a4436d196 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net45/Accord.Controls.Vision.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net45/Accord.Controls.Vision.xml b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net45/Accord.Controls.Vision.xml new file mode 100644 index 0000000000..94e4b1f7b --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Controls.Vision.3.0.2/lib/net45/Accord.Controls.Vision.xml @@ -0,0 +1,740 @@ + + + + Accord.Controls.Vision + + + + + Head movements. + + + + + + Moving head to the left. + + + + + + Moving head to the right. + + + + + + Moving head up. + + + + + + Moving head down. + + + + + + Provides data to face movement events. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the x-coordinate of the face's center. + + + + + + Gets or sets the y-coordinate of the face's center. + + + + + + Face-based tracking controller. + + + + + + Initializes a new instance of the class. + + + + + + Calibrates the specified movement using current positions. + + + The movement to be calibrated. + + + + + Starts processing the source + stream and sending events. + + + + + + Stops sending events. + + + + + + Resets the controller. + + + + + + Called when the face being tracked leaves the scene. + + + + + + Called when a face enters the scene. + + + + + + Called when a head movement is detected. + + + + + + Called when [property changed]. + + The name. + + + + + Releases the unmanaged resources used by the + + and optionally releases the managed resources. + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Gets or sets the object used to marshal event-handler calls that + are issued when the head object position has been updated. + + + The representing the object + used to marshal the event-handler calls that are issued when the head + position has been updated. The default is null. + + + + + Gets or sets the video device used to track objects. + + + The used to track objects. + + + + + Gets the used to + track the head object in the video stream. + + + The active object tracker. + + + + + Gets the used to + detect the head object in the video stream. + + + The active object detector. + + + + + Gets the current face's center point. + + + + + + Gets or sets the maximum position + for horizontal scale calibration. + + + + + + Gets or sets the minimum position + for horizontal scale calibration. + + + + + + Gets or sets the maximum position + for vertical scale calibration. + + + + + + Gets or sets the minimum position + for vertical scale calibration. + + + + + + Gets a value indicating whether this instance is + attempting to detect faces in the video stream. + + + + true if this instance is detecting; otherwise, false. + + + + + + Gets a value indicating whether this instance is + actually tracking an object in the video stream. + + + + true if this instance is tracking; otherwise, false. + + + + + + Gets a value indicating whether this instance + is currently processing and sending events. + + + + true if this instance is processing + and sending events; otherwise, false. + + + + + + Occurs when the face moves in the video scene. + + + + + + Occurs when a face enters the video scene. + + + + + + Occurs when a face leaves the video scene. + + + + + + Gets or sets the collection of currency managers for the . + + + + The collection of + objects for this . + + + + + + Gets the collection of data-binding objects for this . + + + + The for this . + + + + + + Occurs when a property value changes. + + + + + + Head-based tracking controller. + + + + + + Initializes a new instance of the class. + + + + + + Resets the controller. + + + + + + Starts processing the video source. + + + + + + Stops the video source. + + + + + + Signal the video source to stop. + + + + + + Waits until the video source has stopped. + + + + + + Calibrates the specified movement using current positions. + + The movement to be calibrated. + + + + + Called when a head movement is detected. + + + + + + Called when the face being tracked leaves the scene. + + + + + + Called when a face enters the scene. + + + + + + Called when [property changed]. + + The name. + + + + Releases the unmanaged resources used by the + + and optionally releases the managed resources. + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Gets the used to + track the head object in the video stream. + + + The active object tracker. + + + + + Gets the used to + detect the head object in the video stream. + + + The active object detector. + + + + + Gets the current head position. + + + + + + Gets the current head tilting angle. + + + + + + Gets the current head scale. + + + + + + Gets or sets the maximum position + for horizontal scale calibration. + + + + + + Gets or sets the minimum position + for horizontal scale calibration. + + + + + + Gets or sets the maximum position + for vertical scale calibration. + + + + + + Gets or sets the minimum position + for vertical scale calibration. + + + + + + Gets or sets the maximum area + for proximity scale calibration. + + + + + + Gets or sets the minimum area + for proximity scale calibration. + + + + + + Gets or sets the maximum angle + for head tilting calibration. + + + + + + Gets or sets the minimum angle + for head tilting calibration. + + + + + + Gets or sets the object used to marshal event-handler calls that + are issued when the head object position has been updated. + + + The representing the object + used to marshal the event-handler calls that are issued when the head + position has been updated. The default is null. + + + + + Gets or sets the video device used to track objects. + + + The used to track objects. + + + + + Gets a value indicating whether this instance is + attempting to detect faces in the video stream. + + + + true if this instance is detecting; otherwise, false. + + + + + + Gets a value indicating whether this instance is + actually tracking an object in the video stream. + + + + true if this instance is tracking; otherwise, false. + + + + + + Occurs when the head moves in the video scene. + + + + + Occurs when a head enters the video scene. + + + + + Occurs when a head leaves the video scene. + + + + + Gets a value indicating whether this instance + is currently processing and sending events. + + + true if this instance is processing + and sending events; otherwise, false. + + + + + + Gets or sets the collection of currency managers for the . + + + + The collection of objects for this . + + + + + Gets the collection of data-binding objects for this . + + + + The for this . + + + + + Occurs when a property value changes. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Video source. + + + The meaning of the property depends on particular video source. + Depending on video source it may be a file name, URL or any other string + describing the video source. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source error event. + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + New frame event. + + This event is used to notify clients about new available video frame. + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, but video source is responsible for + disposing its own original copy after notifying of clients. + + + + + + Provides data to head movement events. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the x-coordinate of the head. + + + + + + Gets or sets the y-coordinate of the head. + + + The Y. + + + + + Gets or sets the scale of the head. + + + The scale. + + + + + Gets or sets the tilting angle of the head. + + + The angle. + + + + + Head movements. + + + + + Moving head to the left. + + + + + + Moving head to the right. + + + + + + Moving head up. + + + + + + Moving head down. + + + + + + Moving head forward. + + + + + + Moving head backward. + + + + + + Tilting head to the left. + + + + + + Tilting head to the right. + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/Accord.DirectSound.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/Accord.DirectSound.3.0.2.nupkg new file mode 100644 index 0000000000..37b124027 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/Accord.DirectSound.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net35/Accord.Audio.DirectSound.dll b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net35/Accord.Audio.DirectSound.dll new file mode 100644 index 0000000000..f512a53a5 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net35/Accord.Audio.DirectSound.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net35/Accord.Audio.DirectSound.xml b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net35/Accord.Audio.DirectSound.xml new file mode 100644 index 0000000000..30e8f8a4f --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net35/Accord.Audio.DirectSound.xml @@ -0,0 +1,1217 @@ + + + + Accord.Audio.DirectSound + + + + + Audio source for local audio capture device (i.e. a microphone). + + + + This audio source captures audio data + obtained from a local audio capture device such as the microphone. The audio + is captured using DirectSound through SlimDX. + + For instructions on how to list capture devices, please see + the documentation page. + + + + Sample usage: + + + // Create default capture device + AudioCaptureDevice source = new AudioCaptureDevice(); + + // Specify capturing options + source.DesiredFrameSize = 4096; + source.SampleRate = 22050; + + // Specify the callback function which will be + // called once a sample is completely available + source.NewFrame += source_NewFrame; + + // Start capturing + source.Start(); + + // ... + + // The callback function should determine what + // should be done with the samples being caught + private void source_NewFrame(object sender, NewFrameEventArgs eventArgs) + { + // Read current frame... + Signal s = eventArgs.Signal; + + // Process/play/record it + // ... + } + + + For more details regarding usage, please check one of + the Audio sample applications accompanying the framework. + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Global identifier of the audio capture device. + + + + + Initializes a new instance of the class. + + + Global identifier of the audio capture device. + The device name or description string. + + + + + Start audio source. + + + Starts audio source and return execution to caller. audio source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signals audio source to stop its work. + + + Signals audio source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for audio source has stopped. + + + Waits for source stopping after it was signaled to stop using + method. + + + + + Stop audio source. + + + Stops audio source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Worker thread. + + + + + + Notifies client about new block of frames. + + + New frame's audio. + + + + + This source does not support seeking. + + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + New frame event. + + + Notifies clients about new available frame from audio source. + + Since audio source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed audio frame, because the audio source disposes its + own original copy after notifying of clients. + + + + + + Audio source error event. + + + This event is used to notify clients about any type of errors occurred in + audio source object, for example internal exceptions. + + + + + Audio source. + + + Audio source is represented by Guid of audio capture device. + + + + + Gets or sets the sample format used by the device. + + + + + + Gets or sets the desired frame size. + + + + + Gets the number of audio channels captured by + the device. Currently, only a single channel + is supported. + + + + + + Received frames count. + + + Number of frames the audio source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the audio source provided from the moment of the last + access to the property. + + + + + + User data. + + + The property allows to associate user data with audio source object. + + + + + State of the audio source. + + + Current state of audio source object - running or not. + + + + + Gets whether this audio source supports seeking. + + + + + + Gets or sets the desired sample rate for this capturing device. + + + + + + Audio Device Category. + + + + + + Capture audio device, such as a microphone or audio-in. + + + + + + Output audio device, such as speakers or headphone jacks. + + + + + + Audio Device Collection + + + + Objects of this class may be used to iterate through available audio + devices present in the system. For example, by creating a specifying + AudioDeviceCategory.Output to its constructor, it will be possible + to iterate through all available output devices detected by DirectSound. + To list capture devices, use + AudioDeviceCategory.Capture instead. + + + The source code below shows a typical usage of AudioDeviceCollection. + + + // Create a new AudioDeviceCollection to list output devices: + var collection = new AudioDeviceCollection(AudioDeviceCategory.Output); + + // Print all devices available in the system + foreach (var device in collection) + Console.WriteLine(device.ToString()); + + // Get the default audio device in the system + var defaultDevice = collection.Default; + + + + + + + Creates a class containing + devices of the given category. + + + The category of the devices. + + + + + Returns an enumerator that iterates through the device collection. + + + + A that + can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the device collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Gets the default audio device of the chosen + category. + + + The default audio device of the chosen category. + + + + + Gets the category + of the audio devices listed by this collection. + + + + + + Audio output device for local audio playback (i.e. a sound card port). + + + + This audio output sends audio data + to a local output device such as a sound card. The audio is reproduced + using DirectSound through SlimDX. + + For instructions on how to list output devices, please see + the documentation page. + + + + Sample usage: + + + // To create an audio output device, DirectSound requires a handle to + // the parent form of the application (or other application handle). In + // Windows.Forms, this could be achieved by providing the Handle property + // of the currently displayed form. + + int sampleRate = 22000; // 22kHz + int channels = 2; // stereo + + // Create the audio output device with the desired values + AudioOutputDevice output = new AudioOutputDevice(Handle, sampleRate, channels); + + // The output device works at real time, and as such, forms a queue of audio + // samples to be played (more specifically, a buffer). When this buffer starts + // to get empty, the output will ask the application for more samples of it + // should stop playing. To ask for more samples, the output device will fire + // an event which should be handled by the user: + + output.NewFrameRequested += output_NewFrameRequested; + + // It is also possible to configure an event to be fired when the device + // has stopped playing and when it has just started playing a frame. Those + // are mainly used for reporting status to GUI controls. + output.Stopped += output_Stopped; + output.FramePlayingStarted += output_FramePlayingStarted; + + // Start playing + output.Play(); + + + For more details regarding usage, please check one of + the Audio sample applications accompanying the framework. + + + + + + + + + Constructs a new Audio Output Device. + + + The owner window handle. + The sampling rate of the device. + The number of channels of the device. + + + + + Constructs a new Audio Output Device. + + + Global identifier of the audio output device. + The owner window handle. + The sampling rate of the device. + The number of channels of the device. + + + + + Starts playing the current buffer. + + + + + + Starts playing the current buffer. + + + + + + Worker thread. + + + + + + Stops playing the current buffer. + + + + + + Signals audio output to stop its work. + + + Signals audio output to stop its background thread, stop to + ask for new frames and free resources. + + + + + Wait for audio output has stopped. + + + Waits for output stopping after it was signaled to stop using + method. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets a value indicating whether this instance is playing audio. + + + + true if this instance is running; otherwise, false. + + + + + + Gets the sampling rate for the current output device. + + + + + + Gets the number of channels for the current output device. + + + + + + Gets the parent owner form for the device. + + + + + + Audio output. + + + Audio output is represented by Guid of audio output device. + + + + + Raised when a frame starts playing. + + + + + + Raised when a frame starts playing. + + + + + + Indicates all frames have been played and the audio finished. + + + + + + Audio output error event. + + + This event is used to notify clients about any type of errors occurred in + audio output object, for example internal exceptions. + + + + + Audio device information. + + + + This class holds information about a particular audio device, + such as a microphone, audio card port or anything else which + could be detected by DirectSound. Objects from this class + are typically obtained through a + collection. + + + + + + + + Returns a representing the audio device. + + + + A that represents the audio device. + + + + + + Gets the description of the device. + + + The description of the device. + + + + + Gets the unique id of the device. + + + The Global Unique Identifier of the device. + + + + + Extension methods. + + + + + + Converts a sample format into an appropriate . + + + The sample format. + + + + + Converts a and bits per sample information + into an appropriate . + + + The wave format tag. + The bits per sample. + + + + + Wave audio file decoder. + + + + + // Let's decode a Wave audio file + UnmanagedMemoryStream sourceStream = ... + + // Create a decoder for the source stream + WaveDecoder sourceDecoder = new WaveDecoder(sourceStream); + + // At this point, we can query some properties of the audio file: + int channels = sourceDecoder.Channels; + int samples = sourceDecoder.Samples; + int frames = sourceDecoder.Frames; + int duration = sourceDecoder.Duration; + int rate = sourceDecoder.SampleRate; + int bps = sourceDecoder.BitsPerSample; + + // Decode the signal in the source stream + Signal sourceSignal = sourceDecoder.Decode(); + + + + + + + Constructs a new Wave decoder. + + + + + Constructs a new Wave decoder. + + + + + Constructs a new Wave decoder. + + + + + Opens the specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Path of file to open as stream. + + Returns number of frames found in the specified stream. + + + + + Navigates to a position in this Wave stream. + + + The index of the sample to navigate to. + + + + + Decodes the Wave stream into a Signal object. + + + + + + Decodes the Wave stream into a Signal object. + + + The number of frames to decode. + + + + + Decodes the Wave stream into a Signal object. + + + Audio frame index to start decoding. + The number of frames to decode. + + Returns the decoded signal. + + + + + Closes the underlying stream. + + + + + + Reads a maximum of count samples from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Reads a maximum of count frames from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Reads a maximum of count frames from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Reads a maximum of count frames from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Gets the current frame within + the current decoder stream. + + + + + + Gets the number of channels of + the underlying Wave stream. + + + + + + Gets the number of frames of + the underlying Wave stream. + + + + + + Gets the number of samples of + the underlying Wave stream. + + + + + + Gets the sample rate for + the underlying Wave stream. + + + + + + Gets the underlying Wave stream. + + + + + + Gets the total number of bytes + read by this Wave encoder. + + + + + + Gets the total time span duration (in + milliseconds) read by this encoder. + + + + + + Gets the average bits per second + of the underlying Wave stream. + + + + + + Gets the bits per sample of + the underlying Wave stream. + + + + + + Wave audio file encoder. + + + + + // Create a stream to hold our encoded audio + MemoryStream destinationStream = new MemoryStream(); + + // Create a encoder for the destination stream + WaveEncoder encoder = new WaveEncoder(destinationStream); + + // Encode the signal to the destination stream + encoder.Encode(sourceSignal); + + + + + + + Constructs a new Wave encoder. + + + + + + Constructs a new Wave encoder. + + + A file stream to store the encoded data. + + + + + Constructs a new Wave encoder. + + + A stream to store the encoded data. + + + + + Constructs a new Wave encoder. + + + The path to a file to store the encoded data. + + + + + Opens the specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Path of file to open as stream. + + Returns number of frames found in the specified stream. + + + + + Closes the underlying stream. + + + + + + Encodes the Wave stream into a Signal object. + + + + + + Gets the underlying Wave stream. + + + + + + Gets the number of channels + of the active Wave stream. + + + + + + Gets the total number of frames + written by this Wave encoder. + + + + + + Gets the total number of samples + written by this Wave encoder. + + + + + + Gets the sample rate of + the underlying Wave stream. + + + + + + Gets the total number of bytes + written by this Wave encoder. + + + + + + Gets the total time span duration (in + milliseconds) written by this encoder. + + + + + + Gets the average bits per second + of the underlying Wave stream. + + + + + + Gets the bits per sample of + the underlying Wave stream. + + + + + + Gets the sample format used by the encoder. + + + + + + Read audio samples from a Wave file. + + + + This audio source reads audio samples + from Wave files. Internally, it uses the class + to automatically decode Wave files into audio signals. + + + + Sample usage: + + + // Create the Wave file audio source + WaveFileAudioSource source = new WaveFileAudioSource("audiofile.wav"); + + // Specify the callback function which will be + // called once a sample is completely available + source.NewFrame += source_NewFrame; + + // Start capturing + source.Start(); + + // ... + + // The callback function should determine what + // should be done with the samples being caught + private void source_NewFrame(object sender, NewFrameEventArgs eventArgs) + { + // Read current frame... + Signal s = eventArgs.Signal; + + // Process/play/record it + // ... + } + + + + + + + + + + Starts reading from the source. + + + + + + Signals the source to stop. + + + + + + Blocks the calling thread until the source has stopped. + + + + + + Stops the source. + + + + + + Constructs a new Wave file audio source. + + + The path for the underlying source. + + + + + Constructs a new Wave file audio source. + + + The stream containing a Wave file. + + + + + Free resource. + + + + + + Worker thread. + + + + + + Navigates to a given position within the source. + + + The frame position to navigate to. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and + unmanaged resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Event raised when a new frame has arrived. + + + + + + Event raised when an error occurs in the audio source. + + + + + + Gets or sets the file source path. + + + + + + Gets or sets the desired frame size to use when reading this source. + + + + + + Gets the number of audio channels in the wave file. + + + + + + Gets the quantity of frames received. + + + + + + Gets the quantity of bytes received. + + + + + + Gets or sets a user-defined tag associated with this object. + + + + + + Gets whether this source is active or not. + + + + + + Gets whether the current source supports seeking. + + + + + + Gets the sampling rate for this source. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net40/Accord.Audio.DirectSound.dll b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net40/Accord.Audio.DirectSound.dll new file mode 100644 index 0000000000..b2e9fa92e Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net40/Accord.Audio.DirectSound.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net40/Accord.Audio.DirectSound.xml b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net40/Accord.Audio.DirectSound.xml new file mode 100644 index 0000000000..30e8f8a4f --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net40/Accord.Audio.DirectSound.xml @@ -0,0 +1,1217 @@ + + + + Accord.Audio.DirectSound + + + + + Audio source for local audio capture device (i.e. a microphone). + + + + This audio source captures audio data + obtained from a local audio capture device such as the microphone. The audio + is captured using DirectSound through SlimDX. + + For instructions on how to list capture devices, please see + the documentation page. + + + + Sample usage: + + + // Create default capture device + AudioCaptureDevice source = new AudioCaptureDevice(); + + // Specify capturing options + source.DesiredFrameSize = 4096; + source.SampleRate = 22050; + + // Specify the callback function which will be + // called once a sample is completely available + source.NewFrame += source_NewFrame; + + // Start capturing + source.Start(); + + // ... + + // The callback function should determine what + // should be done with the samples being caught + private void source_NewFrame(object sender, NewFrameEventArgs eventArgs) + { + // Read current frame... + Signal s = eventArgs.Signal; + + // Process/play/record it + // ... + } + + + For more details regarding usage, please check one of + the Audio sample applications accompanying the framework. + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Global identifier of the audio capture device. + + + + + Initializes a new instance of the class. + + + Global identifier of the audio capture device. + The device name or description string. + + + + + Start audio source. + + + Starts audio source and return execution to caller. audio source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signals audio source to stop its work. + + + Signals audio source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for audio source has stopped. + + + Waits for source stopping after it was signaled to stop using + method. + + + + + Stop audio source. + + + Stops audio source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Worker thread. + + + + + + Notifies client about new block of frames. + + + New frame's audio. + + + + + This source does not support seeking. + + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + New frame event. + + + Notifies clients about new available frame from audio source. + + Since audio source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed audio frame, because the audio source disposes its + own original copy after notifying of clients. + + + + + + Audio source error event. + + + This event is used to notify clients about any type of errors occurred in + audio source object, for example internal exceptions. + + + + + Audio source. + + + Audio source is represented by Guid of audio capture device. + + + + + Gets or sets the sample format used by the device. + + + + + + Gets or sets the desired frame size. + + + + + Gets the number of audio channels captured by + the device. Currently, only a single channel + is supported. + + + + + + Received frames count. + + + Number of frames the audio source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the audio source provided from the moment of the last + access to the property. + + + + + + User data. + + + The property allows to associate user data with audio source object. + + + + + State of the audio source. + + + Current state of audio source object - running or not. + + + + + Gets whether this audio source supports seeking. + + + + + + Gets or sets the desired sample rate for this capturing device. + + + + + + Audio Device Category. + + + + + + Capture audio device, such as a microphone or audio-in. + + + + + + Output audio device, such as speakers or headphone jacks. + + + + + + Audio Device Collection + + + + Objects of this class may be used to iterate through available audio + devices present in the system. For example, by creating a specifying + AudioDeviceCategory.Output to its constructor, it will be possible + to iterate through all available output devices detected by DirectSound. + To list capture devices, use + AudioDeviceCategory.Capture instead. + + + The source code below shows a typical usage of AudioDeviceCollection. + + + // Create a new AudioDeviceCollection to list output devices: + var collection = new AudioDeviceCollection(AudioDeviceCategory.Output); + + // Print all devices available in the system + foreach (var device in collection) + Console.WriteLine(device.ToString()); + + // Get the default audio device in the system + var defaultDevice = collection.Default; + + + + + + + Creates a class containing + devices of the given category. + + + The category of the devices. + + + + + Returns an enumerator that iterates through the device collection. + + + + A that + can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the device collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Gets the default audio device of the chosen + category. + + + The default audio device of the chosen category. + + + + + Gets the category + of the audio devices listed by this collection. + + + + + + Audio output device for local audio playback (i.e. a sound card port). + + + + This audio output sends audio data + to a local output device such as a sound card. The audio is reproduced + using DirectSound through SlimDX. + + For instructions on how to list output devices, please see + the documentation page. + + + + Sample usage: + + + // To create an audio output device, DirectSound requires a handle to + // the parent form of the application (or other application handle). In + // Windows.Forms, this could be achieved by providing the Handle property + // of the currently displayed form. + + int sampleRate = 22000; // 22kHz + int channels = 2; // stereo + + // Create the audio output device with the desired values + AudioOutputDevice output = new AudioOutputDevice(Handle, sampleRate, channels); + + // The output device works at real time, and as such, forms a queue of audio + // samples to be played (more specifically, a buffer). When this buffer starts + // to get empty, the output will ask the application for more samples of it + // should stop playing. To ask for more samples, the output device will fire + // an event which should be handled by the user: + + output.NewFrameRequested += output_NewFrameRequested; + + // It is also possible to configure an event to be fired when the device + // has stopped playing and when it has just started playing a frame. Those + // are mainly used for reporting status to GUI controls. + output.Stopped += output_Stopped; + output.FramePlayingStarted += output_FramePlayingStarted; + + // Start playing + output.Play(); + + + For more details regarding usage, please check one of + the Audio sample applications accompanying the framework. + + + + + + + + + Constructs a new Audio Output Device. + + + The owner window handle. + The sampling rate of the device. + The number of channels of the device. + + + + + Constructs a new Audio Output Device. + + + Global identifier of the audio output device. + The owner window handle. + The sampling rate of the device. + The number of channels of the device. + + + + + Starts playing the current buffer. + + + + + + Starts playing the current buffer. + + + + + + Worker thread. + + + + + + Stops playing the current buffer. + + + + + + Signals audio output to stop its work. + + + Signals audio output to stop its background thread, stop to + ask for new frames and free resources. + + + + + Wait for audio output has stopped. + + + Waits for output stopping after it was signaled to stop using + method. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets a value indicating whether this instance is playing audio. + + + + true if this instance is running; otherwise, false. + + + + + + Gets the sampling rate for the current output device. + + + + + + Gets the number of channels for the current output device. + + + + + + Gets the parent owner form for the device. + + + + + + Audio output. + + + Audio output is represented by Guid of audio output device. + + + + + Raised when a frame starts playing. + + + + + + Raised when a frame starts playing. + + + + + + Indicates all frames have been played and the audio finished. + + + + + + Audio output error event. + + + This event is used to notify clients about any type of errors occurred in + audio output object, for example internal exceptions. + + + + + Audio device information. + + + + This class holds information about a particular audio device, + such as a microphone, audio card port or anything else which + could be detected by DirectSound. Objects from this class + are typically obtained through a + collection. + + + + + + + + Returns a representing the audio device. + + + + A that represents the audio device. + + + + + + Gets the description of the device. + + + The description of the device. + + + + + Gets the unique id of the device. + + + The Global Unique Identifier of the device. + + + + + Extension methods. + + + + + + Converts a sample format into an appropriate . + + + The sample format. + + + + + Converts a and bits per sample information + into an appropriate . + + + The wave format tag. + The bits per sample. + + + + + Wave audio file decoder. + + + + + // Let's decode a Wave audio file + UnmanagedMemoryStream sourceStream = ... + + // Create a decoder for the source stream + WaveDecoder sourceDecoder = new WaveDecoder(sourceStream); + + // At this point, we can query some properties of the audio file: + int channels = sourceDecoder.Channels; + int samples = sourceDecoder.Samples; + int frames = sourceDecoder.Frames; + int duration = sourceDecoder.Duration; + int rate = sourceDecoder.SampleRate; + int bps = sourceDecoder.BitsPerSample; + + // Decode the signal in the source stream + Signal sourceSignal = sourceDecoder.Decode(); + + + + + + + Constructs a new Wave decoder. + + + + + Constructs a new Wave decoder. + + + + + Constructs a new Wave decoder. + + + + + Opens the specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Path of file to open as stream. + + Returns number of frames found in the specified stream. + + + + + Navigates to a position in this Wave stream. + + + The index of the sample to navigate to. + + + + + Decodes the Wave stream into a Signal object. + + + + + + Decodes the Wave stream into a Signal object. + + + The number of frames to decode. + + + + + Decodes the Wave stream into a Signal object. + + + Audio frame index to start decoding. + The number of frames to decode. + + Returns the decoded signal. + + + + + Closes the underlying stream. + + + + + + Reads a maximum of count samples from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Reads a maximum of count frames from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Reads a maximum of count frames from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Reads a maximum of count frames from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Gets the current frame within + the current decoder stream. + + + + + + Gets the number of channels of + the underlying Wave stream. + + + + + + Gets the number of frames of + the underlying Wave stream. + + + + + + Gets the number of samples of + the underlying Wave stream. + + + + + + Gets the sample rate for + the underlying Wave stream. + + + + + + Gets the underlying Wave stream. + + + + + + Gets the total number of bytes + read by this Wave encoder. + + + + + + Gets the total time span duration (in + milliseconds) read by this encoder. + + + + + + Gets the average bits per second + of the underlying Wave stream. + + + + + + Gets the bits per sample of + the underlying Wave stream. + + + + + + Wave audio file encoder. + + + + + // Create a stream to hold our encoded audio + MemoryStream destinationStream = new MemoryStream(); + + // Create a encoder for the destination stream + WaveEncoder encoder = new WaveEncoder(destinationStream); + + // Encode the signal to the destination stream + encoder.Encode(sourceSignal); + + + + + + + Constructs a new Wave encoder. + + + + + + Constructs a new Wave encoder. + + + A file stream to store the encoded data. + + + + + Constructs a new Wave encoder. + + + A stream to store the encoded data. + + + + + Constructs a new Wave encoder. + + + The path to a file to store the encoded data. + + + + + Opens the specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Path of file to open as stream. + + Returns number of frames found in the specified stream. + + + + + Closes the underlying stream. + + + + + + Encodes the Wave stream into a Signal object. + + + + + + Gets the underlying Wave stream. + + + + + + Gets the number of channels + of the active Wave stream. + + + + + + Gets the total number of frames + written by this Wave encoder. + + + + + + Gets the total number of samples + written by this Wave encoder. + + + + + + Gets the sample rate of + the underlying Wave stream. + + + + + + Gets the total number of bytes + written by this Wave encoder. + + + + + + Gets the total time span duration (in + milliseconds) written by this encoder. + + + + + + Gets the average bits per second + of the underlying Wave stream. + + + + + + Gets the bits per sample of + the underlying Wave stream. + + + + + + Gets the sample format used by the encoder. + + + + + + Read audio samples from a Wave file. + + + + This audio source reads audio samples + from Wave files. Internally, it uses the class + to automatically decode Wave files into audio signals. + + + + Sample usage: + + + // Create the Wave file audio source + WaveFileAudioSource source = new WaveFileAudioSource("audiofile.wav"); + + // Specify the callback function which will be + // called once a sample is completely available + source.NewFrame += source_NewFrame; + + // Start capturing + source.Start(); + + // ... + + // The callback function should determine what + // should be done with the samples being caught + private void source_NewFrame(object sender, NewFrameEventArgs eventArgs) + { + // Read current frame... + Signal s = eventArgs.Signal; + + // Process/play/record it + // ... + } + + + + + + + + + + Starts reading from the source. + + + + + + Signals the source to stop. + + + + + + Blocks the calling thread until the source has stopped. + + + + + + Stops the source. + + + + + + Constructs a new Wave file audio source. + + + The path for the underlying source. + + + + + Constructs a new Wave file audio source. + + + The stream containing a Wave file. + + + + + Free resource. + + + + + + Worker thread. + + + + + + Navigates to a given position within the source. + + + The frame position to navigate to. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and + unmanaged resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Event raised when a new frame has arrived. + + + + + + Event raised when an error occurs in the audio source. + + + + + + Gets or sets the file source path. + + + + + + Gets or sets the desired frame size to use when reading this source. + + + + + + Gets the number of audio channels in the wave file. + + + + + + Gets the quantity of frames received. + + + + + + Gets the quantity of bytes received. + + + + + + Gets or sets a user-defined tag associated with this object. + + + + + + Gets whether this source is active or not. + + + + + + Gets whether the current source supports seeking. + + + + + + Gets the sampling rate for this source. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net45/Accord.Audio.DirectSound.dll b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net45/Accord.Audio.DirectSound.dll new file mode 100644 index 0000000000..9d02bf40b Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net45/Accord.Audio.DirectSound.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net45/Accord.Audio.DirectSound.xml b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net45/Accord.Audio.DirectSound.xml new file mode 100644 index 0000000000..30e8f8a4f --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.DirectSound.3.0.2/lib/net45/Accord.Audio.DirectSound.xml @@ -0,0 +1,1217 @@ + + + + Accord.Audio.DirectSound + + + + + Audio source for local audio capture device (i.e. a microphone). + + + + This audio source captures audio data + obtained from a local audio capture device such as the microphone. The audio + is captured using DirectSound through SlimDX. + + For instructions on how to list capture devices, please see + the documentation page. + + + + Sample usage: + + + // Create default capture device + AudioCaptureDevice source = new AudioCaptureDevice(); + + // Specify capturing options + source.DesiredFrameSize = 4096; + source.SampleRate = 22050; + + // Specify the callback function which will be + // called once a sample is completely available + source.NewFrame += source_NewFrame; + + // Start capturing + source.Start(); + + // ... + + // The callback function should determine what + // should be done with the samples being caught + private void source_NewFrame(object sender, NewFrameEventArgs eventArgs) + { + // Read current frame... + Signal s = eventArgs.Signal; + + // Process/play/record it + // ... + } + + + For more details regarding usage, please check one of + the Audio sample applications accompanying the framework. + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Global identifier of the audio capture device. + + + + + Initializes a new instance of the class. + + + Global identifier of the audio capture device. + The device name or description string. + + + + + Start audio source. + + + Starts audio source and return execution to caller. audio source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signals audio source to stop its work. + + + Signals audio source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for audio source has stopped. + + + Waits for source stopping after it was signaled to stop using + method. + + + + + Stop audio source. + + + Stops audio source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Worker thread. + + + + + + Notifies client about new block of frames. + + + New frame's audio. + + + + + This source does not support seeking. + + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + New frame event. + + + Notifies clients about new available frame from audio source. + + Since audio source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed audio frame, because the audio source disposes its + own original copy after notifying of clients. + + + + + + Audio source error event. + + + This event is used to notify clients about any type of errors occurred in + audio source object, for example internal exceptions. + + + + + Audio source. + + + Audio source is represented by Guid of audio capture device. + + + + + Gets or sets the sample format used by the device. + + + + + + Gets or sets the desired frame size. + + + + + Gets the number of audio channels captured by + the device. Currently, only a single channel + is supported. + + + + + + Received frames count. + + + Number of frames the audio source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the audio source provided from the moment of the last + access to the property. + + + + + + User data. + + + The property allows to associate user data with audio source object. + + + + + State of the audio source. + + + Current state of audio source object - running or not. + + + + + Gets whether this audio source supports seeking. + + + + + + Gets or sets the desired sample rate for this capturing device. + + + + + + Audio Device Category. + + + + + + Capture audio device, such as a microphone or audio-in. + + + + + + Output audio device, such as speakers or headphone jacks. + + + + + + Audio Device Collection + + + + Objects of this class may be used to iterate through available audio + devices present in the system. For example, by creating a specifying + AudioDeviceCategory.Output to its constructor, it will be possible + to iterate through all available output devices detected by DirectSound. + To list capture devices, use + AudioDeviceCategory.Capture instead. + + + The source code below shows a typical usage of AudioDeviceCollection. + + + // Create a new AudioDeviceCollection to list output devices: + var collection = new AudioDeviceCollection(AudioDeviceCategory.Output); + + // Print all devices available in the system + foreach (var device in collection) + Console.WriteLine(device.ToString()); + + // Get the default audio device in the system + var defaultDevice = collection.Default; + + + + + + + Creates a class containing + devices of the given category. + + + The category of the devices. + + + + + Returns an enumerator that iterates through the device collection. + + + + A that + can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the device collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Gets the default audio device of the chosen + category. + + + The default audio device of the chosen category. + + + + + Gets the category + of the audio devices listed by this collection. + + + + + + Audio output device for local audio playback (i.e. a sound card port). + + + + This audio output sends audio data + to a local output device such as a sound card. The audio is reproduced + using DirectSound through SlimDX. + + For instructions on how to list output devices, please see + the documentation page. + + + + Sample usage: + + + // To create an audio output device, DirectSound requires a handle to + // the parent form of the application (or other application handle). In + // Windows.Forms, this could be achieved by providing the Handle property + // of the currently displayed form. + + int sampleRate = 22000; // 22kHz + int channels = 2; // stereo + + // Create the audio output device with the desired values + AudioOutputDevice output = new AudioOutputDevice(Handle, sampleRate, channels); + + // The output device works at real time, and as such, forms a queue of audio + // samples to be played (more specifically, a buffer). When this buffer starts + // to get empty, the output will ask the application for more samples of it + // should stop playing. To ask for more samples, the output device will fire + // an event which should be handled by the user: + + output.NewFrameRequested += output_NewFrameRequested; + + // It is also possible to configure an event to be fired when the device + // has stopped playing and when it has just started playing a frame. Those + // are mainly used for reporting status to GUI controls. + output.Stopped += output_Stopped; + output.FramePlayingStarted += output_FramePlayingStarted; + + // Start playing + output.Play(); + + + For more details regarding usage, please check one of + the Audio sample applications accompanying the framework. + + + + + + + + + Constructs a new Audio Output Device. + + + The owner window handle. + The sampling rate of the device. + The number of channels of the device. + + + + + Constructs a new Audio Output Device. + + + Global identifier of the audio output device. + The owner window handle. + The sampling rate of the device. + The number of channels of the device. + + + + + Starts playing the current buffer. + + + + + + Starts playing the current buffer. + + + + + + Worker thread. + + + + + + Stops playing the current buffer. + + + + + + Signals audio output to stop its work. + + + Signals audio output to stop its background thread, stop to + ask for new frames and free resources. + + + + + Wait for audio output has stopped. + + + Waits for output stopping after it was signaled to stop using + method. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets a value indicating whether this instance is playing audio. + + + + true if this instance is running; otherwise, false. + + + + + + Gets the sampling rate for the current output device. + + + + + + Gets the number of channels for the current output device. + + + + + + Gets the parent owner form for the device. + + + + + + Audio output. + + + Audio output is represented by Guid of audio output device. + + + + + Raised when a frame starts playing. + + + + + + Raised when a frame starts playing. + + + + + + Indicates all frames have been played and the audio finished. + + + + + + Audio output error event. + + + This event is used to notify clients about any type of errors occurred in + audio output object, for example internal exceptions. + + + + + Audio device information. + + + + This class holds information about a particular audio device, + such as a microphone, audio card port or anything else which + could be detected by DirectSound. Objects from this class + are typically obtained through a + collection. + + + + + + + + Returns a representing the audio device. + + + + A that represents the audio device. + + + + + + Gets the description of the device. + + + The description of the device. + + + + + Gets the unique id of the device. + + + The Global Unique Identifier of the device. + + + + + Extension methods. + + + + + + Converts a sample format into an appropriate . + + + The sample format. + + + + + Converts a and bits per sample information + into an appropriate . + + + The wave format tag. + The bits per sample. + + + + + Wave audio file decoder. + + + + + // Let's decode a Wave audio file + UnmanagedMemoryStream sourceStream = ... + + // Create a decoder for the source stream + WaveDecoder sourceDecoder = new WaveDecoder(sourceStream); + + // At this point, we can query some properties of the audio file: + int channels = sourceDecoder.Channels; + int samples = sourceDecoder.Samples; + int frames = sourceDecoder.Frames; + int duration = sourceDecoder.Duration; + int rate = sourceDecoder.SampleRate; + int bps = sourceDecoder.BitsPerSample; + + // Decode the signal in the source stream + Signal sourceSignal = sourceDecoder.Decode(); + + + + + + + Constructs a new Wave decoder. + + + + + Constructs a new Wave decoder. + + + + + Constructs a new Wave decoder. + + + + + Opens the specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Path of file to open as stream. + + Returns number of frames found in the specified stream. + + + + + Navigates to a position in this Wave stream. + + + The index of the sample to navigate to. + + + + + Decodes the Wave stream into a Signal object. + + + + + + Decodes the Wave stream into a Signal object. + + + The number of frames to decode. + + + + + Decodes the Wave stream into a Signal object. + + + Audio frame index to start decoding. + The number of frames to decode. + + Returns the decoded signal. + + + + + Closes the underlying stream. + + + + + + Reads a maximum of count samples from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Reads a maximum of count frames from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Reads a maximum of count frames from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Reads a maximum of count frames from the current stream, and writes the data to buffer, beginning at index. + + + When this method returns, this parameter contains the specified byte array with the values between index and (index + count -1) replaced by the 8 bit frames read from the current source. + + The amount of frames to read. + The number of reads performed on the stream. + + + + Gets the current frame within + the current decoder stream. + + + + + + Gets the number of channels of + the underlying Wave stream. + + + + + + Gets the number of frames of + the underlying Wave stream. + + + + + + Gets the number of samples of + the underlying Wave stream. + + + + + + Gets the sample rate for + the underlying Wave stream. + + + + + + Gets the underlying Wave stream. + + + + + + Gets the total number of bytes + read by this Wave encoder. + + + + + + Gets the total time span duration (in + milliseconds) read by this encoder. + + + + + + Gets the average bits per second + of the underlying Wave stream. + + + + + + Gets the bits per sample of + the underlying Wave stream. + + + + + + Wave audio file encoder. + + + + + // Create a stream to hold our encoded audio + MemoryStream destinationStream = new MemoryStream(); + + // Create a encoder for the destination stream + WaveEncoder encoder = new WaveEncoder(destinationStream); + + // Encode the signal to the destination stream + encoder.Encode(sourceSignal); + + + + + + + Constructs a new Wave encoder. + + + + + + Constructs a new Wave encoder. + + + A file stream to store the encoded data. + + + + + Constructs a new Wave encoder. + + + A stream to store the encoded data. + + + + + Constructs a new Wave encoder. + + + The path to a file to store the encoded data. + + + + + Opens the specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Stream to open. + + Returns number of frames found in the specified stream. + + + + + Open specified stream. + + + Path of file to open as stream. + + Returns number of frames found in the specified stream. + + + + + Closes the underlying stream. + + + + + + Encodes the Wave stream into a Signal object. + + + + + + Gets the underlying Wave stream. + + + + + + Gets the number of channels + of the active Wave stream. + + + + + + Gets the total number of frames + written by this Wave encoder. + + + + + + Gets the total number of samples + written by this Wave encoder. + + + + + + Gets the sample rate of + the underlying Wave stream. + + + + + + Gets the total number of bytes + written by this Wave encoder. + + + + + + Gets the total time span duration (in + milliseconds) written by this encoder. + + + + + + Gets the average bits per second + of the underlying Wave stream. + + + + + + Gets the bits per sample of + the underlying Wave stream. + + + + + + Gets the sample format used by the encoder. + + + + + + Read audio samples from a Wave file. + + + + This audio source reads audio samples + from Wave files. Internally, it uses the class + to automatically decode Wave files into audio signals. + + + + Sample usage: + + + // Create the Wave file audio source + WaveFileAudioSource source = new WaveFileAudioSource("audiofile.wav"); + + // Specify the callback function which will be + // called once a sample is completely available + source.NewFrame += source_NewFrame; + + // Start capturing + source.Start(); + + // ... + + // The callback function should determine what + // should be done with the samples being caught + private void source_NewFrame(object sender, NewFrameEventArgs eventArgs) + { + // Read current frame... + Signal s = eventArgs.Signal; + + // Process/play/record it + // ... + } + + + + + + + + + + Starts reading from the source. + + + + + + Signals the source to stop. + + + + + + Blocks the calling thread until the source has stopped. + + + + + + Stops the source. + + + + + + Constructs a new Wave file audio source. + + + The path for the underlying source. + + + + + Constructs a new Wave file audio source. + + + The stream containing a Wave file. + + + + + Free resource. + + + + + + Worker thread. + + + + + + Navigates to a given position within the source. + + + The frame position to navigate to. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and + unmanaged resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Event raised when a new frame has arrived. + + + + + + Event raised when an error occurs in the audio source. + + + + + + Gets or sets the file source path. + + + + + + Gets or sets the desired frame size to use when reading this source. + + + + + + Gets the number of audio channels in the wave file. + + + + + + Gets the quantity of frames received. + + + + + + Gets the quantity of bytes received. + + + + + + Gets or sets a user-defined tag associated with this object. + + + + + + Gets whether this source is active or not. + + + + + + Gets whether the current source supports seeking. + + + + + + Gets the sampling rate for this source. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/Accord.Fuzzy.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/Accord.Fuzzy.3.0.2.nupkg new file mode 100644 index 0000000000..11409c74a Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/Accord.Fuzzy.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net35/Accord.Fuzzy.dll b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net35/Accord.Fuzzy.dll new file mode 100644 index 0000000000..dd178db0f Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net35/Accord.Fuzzy.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net35/Accord.Fuzzy.xml b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net35/Accord.Fuzzy.xml new file mode 100644 index 0000000000..e6ce116ba --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net35/Accord.Fuzzy.xml @@ -0,0 +1,1559 @@ + + + + Accord.Fuzzy + + + + + This class represents a fuzzy clause, a linguistic expression of the type "Variable IS Value". + + + A Fuzzy Clause is used to verify if a linguistic variable can be considered + as a specific value at a specific moment. Linguistic variables can only assume value of + their linguistic labels. Because of the nature of the Fuzzy Logic, a Variable can be + several of its labels at the same time, with different membership values. + + For example, a linguistic variable "temperature" can be "hot" with a membership 0.3 + and "warm" with a membership 0.7 at the same time. To obtain those memberships, Fuzzy Clauses + "temperature is hot" and "temperature is war" can be built. + + Typically Fuzzy Clauses are used to build Fuzzy Rules (). + + Sample usage: + + // create a linguistic variable to represent temperature + LinguisticVariable lvTemperature = new LinguisticVariable("Temperature", 0, 80 ); + + // create the linguistic labels (fuzzy sets) that compose the temperature + TrapezoidalFunction function1 = new TrapezoidalFunction(10, 15, TrapezoidalFunction.EdgeType.Right); + FuzzySet fsCold = new FuzzySet("Cold", function1); + TrapezoidalFunction function2 = new TrapezoidalFunction(10, 15, 20, 25); + FuzzySet fsCool = new FuzzySet("Cool", function2); + TrapezoidalFunction function3 = new TrapezoidalFunction(20, 25, 30, 35); + FuzzySet fsWarm = new FuzzySet("Warm", function3); + TrapezoidalFunction function4 = new TrapezoidalFunction(30, 35, TrapezoidalFunction.EdgeType.Left); + FuzzySet fsHot = new FuzzySet("Hot", function4); + + // adding labels to the variable + lvTemperature.AddLabel(fsCold); + lvTemperature.AddLabel(fsCool); + lvTemperature.AddLabel(fsWarm); + lvTemperature.AddLabel(fsHot); + + // creating the Clause + Clause fuzzyClause = new Clause(lvTemperature, fsHot); + // setting the numerical input of the variable to evaluate the Clause + lvTemperature.NumericInput = 35; + float result = fuzzyClause.Evaluate(); + Console.WriteLine(result.ToString()); + + + + + + + Initializes a new instance of the class. + + + Linguistic variable of the clause. + + Label of the linguistic variable, a fuzzy set used as label into the linguistic variable. + + The label indicated was not found in the linguistic variable. + + + + + Evaluates the fuzzy clause. + + + Degree of membership [0..1] of the clause. + + + + + Returns the fuzzy clause in its linguistic representation. + + + A string representing the fuzzy clause. + + + + + Gets the of the . + + + + + Gets the of the . + + + + + This class implements the centroid defuzzification method. + + + In many applications, a Fuzzy Inference System is used to perform linguistic + computation, but at the end of the inference process, a numerical value is needed. It does + not mean that the system needs precision, but simply that a numerical value is required, + most of the times because it will be used to control another system that needs the number. + To obtain this numer, a defuzzification method is performed. + + This class implements the centroid defuzzification method. The output of a Fuzzy + Inference System is a set of rules (see ) with firing strength greater + than zero. Those firing strength apply a constraint to the consequent fuzzy sets + (see ) of the rules. Putting all those fuzzy sets togheter results + in a a shape that is the linguistic output meaning. + + + The centroid method calculates the center of the area of this shape to obtain the + numerical representation of the output. It uses a numerical approximation, so a number + of intervals must be choosen. As the number of intervals grow, the precision of the + numerical ouput grows. + + + For a sample usage of the see + class. + + + + + + Interface which specifies set of methods required to be implemented by all defuzzification methods + that can be used in Fuzzy Inference Systems. + + + In many applications, a Fuzzy Inference System is used to perform linguistic computation, + but at the end of the inference process, a numerical value is needed. It does not mean that the system + needs precision, but simply that a numerical value is required, most of the times because it will be used to + control another system that needs the number. To obtain this numer, a defuzzification method is performed. + + Several deffuzification methods were proposed, and they can be created as classes that + implements this interface. + + + + + Defuzzification method to obtain the numerical representation of a fuzzy output. + + + A containing the output of + several rules of a Fuzzy Inference System. + A operator to be used when constraining + the label to the firing strength. + + The numerical representation of the fuzzy output. + + + + + Initializes a new instance of the class. + + + Number of segments that the speech universe will be splited + to perform the numerical approximation of the center of area. + + + + + Centroid method to obtain the numerical representation of a fuzzy output. The numerical + value will be the center of the shape formed by the several fuzzy labels with their + constraints. + + + A containing the output of several + rules of a Fuzzy Inference System. + A operator to be used when constraining + the label to the firing strength. + + The numerical representation of the fuzzy output. + + The numerical output is unavaliable. All memberships are zero. + + + + + The class represents the output of a Fuzzy Inference System. + + + The class keeps set of rule's output - pairs with the output fuzzy label + and the rule's firing strength. + + + + Sample usage: + + // linguistic labels (fuzzy sets) that compose the distances + FuzzySet fsNear = new FuzzySet( "Near", + new TrapezoidalFunction( 15, 50, TrapezoidalFunction.EdgeType.Right ) ); + FuzzySet fsMedium = new FuzzySet( "Medium", + new TrapezoidalFunction( 15, 50, 60, 100 ) ); + FuzzySet fsFar = new FuzzySet( "Far", + new TrapezoidalFunction( 60, 100, TrapezoidalFunction.EdgeType.Left ) ); + + // front distance (input) + LinguisticVariable lvFront = new LinguisticVariable( "FrontalDistance", 0, 120 ); + lvFront.AddLabel( fsNear ); + lvFront.AddLabel( fsMedium ); + lvFront.AddLabel( fsFar ); + + // linguistic labels (fuzzy sets) that compose the angle + FuzzySet fsZero = new FuzzySet( "Zero", + new TrapezoidalFunction( -10, 5, 5, 10 ) ); + FuzzySet fsLP = new FuzzySet( "LittlePositive", + new TrapezoidalFunction( 5, 10, 20, 25 ) ); + FuzzySet fsP = new FuzzySet( "Positive", + new TrapezoidalFunction( 20, 25, 35, 40 ) ); + FuzzySet fsVP = new FuzzySet( "VeryPositive", + new TrapezoidalFunction( 35, 40, TrapezoidalFunction.EdgeType.Left ) ); + + // angle + LinguisticVariable lvAngle = new LinguisticVariable( "Angle", -10, 50 ); + lvAngle.AddLabel( fsZero ); + lvAngle.AddLabel( fsLP ); + lvAngle.AddLabel( fsP ); + lvAngle.AddLabel( fsVP ); + + // the database + Database fuzzyDB = new Database( ); + fuzzyDB.AddVariable( lvFront ); + fuzzyDB.AddVariable( lvAngle ); + + // creating the inference system + InferenceSystem IS = new InferenceSystem( fuzzyDB, new CentroidDefuzzifier( 1000 ) ); + + // going straight + IS.NewRule( "Rule 1", "IF FrontalDistance IS Far THEN Angle IS Zero" ); + // turning left + IS.NewRule( "Rule 2", "IF FrontalDistance IS Near THEN Angle IS Positive" ); + + ... + // inference section + + // setting inputs + IS.SetInput( "FrontalDistance", 20 ); + + // getting outputs + try + { + FuzzyOutput fuzzyOutput = IS.ExecuteInference ( "Angle" ); + + // showing the fuzzy output + foreach ( FuzzyOutput.OutputConstraint oc in fuzzyOutput.OutputList ) + { + Console.WriteLine( oc.Label + " - " + oc.FiringStrength.ToString( ) ); + } + } + catch ( Exception ) + { + ... + } + + + + + + + Initializes a new instance of the class. + + + A representing a Fuzzy Inference System's output. + + + + + Adds an output to the Fuzzy Output. + + + The name of a label representing a fuzzy rule's output. + The firing strength [0..1] of a fuzzy rule. + + The label indicated was not found in the linguistic variable. + + + + + Removes all the linguistic variables of the database. + + + + + + A list with of a Fuzzy Inference System's output. + + + + + + Gets the acting as a Fuzzy Inference System Output. + + + + + + Inner class to store the pair fuzzy label / firing strength of + a fuzzy output. + + + + + Initializes a new instance of the class. + + + A string representing the output label of a . + The firing strength of a , to be applied to its output label. + + + + + The representing the output label of a . + + + + + + The firing strength of a , to be applied to its output label. + + + + + + This class represents a Fuzzy Inference System. + + + A Fuzzy Inference System is a model capable of executing fuzzy computing. + It is mainly composed by a with the linguistic variables + (see ) and a + with the fuzzy rules (see ) that represent the behavior of the system. + The typical operation of a Fuzzy Inference System is: + + Get the numeric inputs; + Use the with the linguistic variables + (see ) to obtain linguistic meaning for each + numerical input; + Verify which rules (see ) of the are + activated by the input; + Combine the consequent of the activated rules to obtain a ; + Use some defuzzifier (see ) to obtain a numerical output. + + + + The following sample usage is a Fuzzy Inference System that controls an + auto guided vehicle avoing frontal collisions: + + // linguistic labels (fuzzy sets) that compose the distances + FuzzySet fsNear = new FuzzySet( "Near", + new TrapezoidalFunction( 15, 50, TrapezoidalFunction.EdgeType.Right ) ); + FuzzySet fsMedium = new FuzzySet( "Medium", + new TrapezoidalFunction( 15, 50, 60, 100 ) ); + FuzzySet fsFar = new FuzzySet( "Far", + new TrapezoidalFunction( 60, 100, TrapezoidalFunction.EdgeType.Left ) ); + + // front distance (input) + LinguisticVariable lvFront = new LinguisticVariable( "FrontalDistance", 0, 120 ); + lvFront.AddLabel( fsNear ); + lvFront.AddLabel( fsMedium ); + lvFront.AddLabel( fsFar ); + + // linguistic labels (fuzzy sets) that compose the angle + FuzzySet fsZero = new FuzzySet( "Zero", + new TrapezoidalFunction( -10, 5, 5, 10 ) ); + FuzzySet fsLP = new FuzzySet( "LittlePositive", + new TrapezoidalFunction( 5, 10, 20, 25 ) ); + FuzzySet fsP = new FuzzySet( "Positive", + new TrapezoidalFunction( 20, 25, 35, 40 ) ); + FuzzySet fsVP = new FuzzySet( "VeryPositive", + new TrapezoidalFunction( 35, 40, TrapezoidalFunction.EdgeType.Left ) ); + + // angle + LinguisticVariable lvAngle = new LinguisticVariable( "Angle", -10, 50 ); + lvAngle.AddLabel( fsZero ); + lvAngle.AddLabel( fsLP ); + lvAngle.AddLabel( fsP ); + lvAngle.AddLabel( fsVP ); + + // the database + Database fuzzyDB = new Database( ); + fuzzyDB.AddVariable( lvFront ); + fuzzyDB.AddVariable( lvAngle ); + + // creating the inference system + InferenceSystem IS = new InferenceSystem( fuzzyDB, new CentroidDefuzzifier( 1000 ) ); + + // going Straight + IS.NewRule( "Rule 1", "IF FrontalDistance IS Far THEN Angle IS Zero" ); + // Turning Left + IS.NewRule( "Rule 2", "IF FrontalDistance IS Near THEN Angle IS Positive" ); + + ... + // inference section + + // setting inputs + IS.SetInput( "FrontalDistance", 20 ); + + // getting outputs + try + { + float newAngle = IS.Evaluate( "Angle" ); + } + catch ( Exception ) + { + ... + } + + + + + + + Initializes a new Fuzzy . + + + A fuzzy containing the system linguistic variables. + A defuzzyfier method used to evaluate the numeric uotput of the system. + + + + + Initializes a new Fuzzy . + + + A fuzzy containing the system linguistic + variables. + A defuzzyfier method used to evaluate the numeric otput + of the system. + A operator used to evaluate the norms + in the . For more information of the norm evaluation see . + A operator used to evaluate the + conorms in the . For more information of the conorm evaluation see . + + + + + Creates a new and add it to the of the + . + + + Name of the to create. + A string representing the fuzzy rule. + + The new reference. + + + + + Sets a numerical input for one of the linguistic variables of the . + + + Name of the . + Numeric value to be used as input. + + The variable indicated in + was not found in the database. + + + + + Gets one of the of the . + + + Name of the to get. + + The variable indicated in + was not found in the database. + + + + + Gets one of the Rules of the . + + + Name of the to get. + + The rule indicated in + was not found in the rulebase. + + + + + Executes the fuzzy inference, obtaining a numerical output for a choosen output + linguistic variable. + + + Name of the to evaluate. + + The numerical output of the Fuzzy Inference System for the choosen variable. + + The variable indicated was not found in the database. + + + + + Executes the fuzzy inference, obtaining the of the system for the required + . + + + Name of the to evaluate. + + A containing the fuzzy output of the system for the + specified in . + + The variable indicated was not found in the database. + + + + + Membership function used in fuzzy singletons: fuzzy sets that have just one point with membership value 1. + + + Sometimes it is needed to represent crisp (classical) number in the fuzzy domain. Several approaches + can be used, like adding some uncertain (fuzziness) in the original number (the number one, for instance, can be seen as a + with -0.5, 1.0 and 0.5 parameters). Another approach is to declare fuzzy singletons: fuzzy sets with only one point returning a none zero membership. + + While trapezoidal and half trapezoidal are classic functions used in fuzzy functions, this class supports any function + or approximation that can be represented as a sequence of lines. + + Sample usage: + + // creating the instance + SingletonFunction membershipFunction = new SingletonFunction( 10 ); + // getting membership for several points + for ( int i = 0; i < 20; i++ ) + Console.WriteLine( membershipFunction.GetMembership( i ) ); + + + + + + + Interface which specifies set of methods required to be implemented by all membership + functions. + + + All membership functions must implement this interface, which is used by + class to calculate value's membership to a particular fuzzy set. + + + + + + Calculate membership of a given value to the fuzzy set. + + + Value which membership will to be calculated. + + Degree of membership [0..1] of the value to the fuzzy set. + + + + + The leftmost x value of the membership function. + + + + + The rightmost x value of the membership function. + + + + + The unique point where the membership value is 1. + + + + + Initializes a new instance of the class. + + + Support is the only value of x where the membership function is 1. + + + + + Calculate membership of a given value to the singleton function. + + + Value which membership will to be calculated. + + Degree of membership {0,1} since singletons do not admit memberships different from 0 and 1. + + + + + The leftmost x value of the membership function, the same value of the support. + + + + + + The rightmost x value of the membership function, the same value of the support. + + + + + + NOT operator, used to calculate the complement of a fuzzy set. + + + The NOT operator definition is (1 - m) for all the values of membership m of the fuzzy set. + + Sample usage: + + // creating a fuzzy sets to represent Cool (Temperature) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + + // getting membership + float m1 = fsCool.GetMembership( 15 ); + + // computing the membership of "NOT Cool" + NotOperator NOT = new NotOperator( ); + float result = NOT.Evaluate( m1 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Interface with the common methods of Fuzzy Unary Operator. + + + All fuzzy operators that act as a Unary Operator (NOT, VERY, LITTLE) must implement this interface. + + + + + + Calculates the numerical result of a Unary operation applied to one + fuzzy membership value. + + + A fuzzy membership value, [0..1]. + + The numerical result of the operation applied to . + + + + + Calculates the numerical result of the NOT operation applied to + a fuzzy membership value. + + + A fuzzy membership value, [0..1]. + + The numerical result of the unary operation NOT applied to . + + + + + The class represents a fuzzy rulebase, a set of fuzzy rules used in a Fuzzy Inference System. + + + + + + Initializes a new instance of the class. + + + + + + Adds a fuzzy rule to the database. + + + A fuzzy to add to the database. + + The fuzzy rule was not initialized. + The fuzzy rule name already exists in the rulebase. + + + + + Removes all the fuzzy rules of the database. + + + + + + Returns an existing fuzzy rule from the rulebase. + + + Name of the fuzzy to retrieve. + + Reference to named . + + The rule indicated in ruleName was not found in the rulebase. + + + + + Gets all the rules of the rulebase. + + + An array with all the rulebase rules. + + + + + The class represents a fuzzy database, a set of linguistic variables used in a Fuzzy + Inference System. + + + + + + Initializes a new instance of the class. + + + + + + Adds a linguistic variable to the database. + + + A linguistic variable to add. + + The linguistic variable was not initialized. + The linguistic variable name already exists in the database. + + + + + Removes all the linguistic variables of the database. + + + + + + Returns an existing linguistic variable from the database. + + + Name of the linguistic variable to retrieve. + + Reference to named . + + The variable indicated was not found in the database. + + + + + Maximum CoNorm, used to calculate the linguistic value of a OR operation. + + + The maximum CoNorm uses a maximum operator to compute the OR + among two fuzzy memberships. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool (Temperature) and Near (Distance) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsNear = new FuzzySet( "Near", function2 ); + + // getting memberships + float m1 = fsCool.GetMembership( 15 ); + float m2 = fsNear.GetMembership( 35 ); + + // computing the membership of "Cool OR Near" + MaximumCoNorm OR = new MaximumCoNorm( ); + float result = OR.Evaluate( m1, m2 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Interface with the common methods of a Fuzzy CoNorm. + + + All fuzzy operators that act as a CoNorm must implement this interface. + + + + + + Calculates the numerical result of a CoNorm (OR) operation applied to + two fuzzy membership values. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result the operation OR applied to + and . + + + + + Calculates the numerical result of the OR operation applied to + two fuzzy membership values. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result of the binary operation OR applied to + and . + + + + + This class represents a Fuzzy Rule, a linguistic expression representing some behavioral + aspect of a Fuzzy Inference System. + + + + A Fuzzy Rule is a fuzzy linguistic instruction that can be executed by a fuzzy system. + The format of the Fuzzy Rule is: + + + IF antecedent THEN consequent + + The antecedent is composed by a set of fuzzy clauses (see ) connected + by fuzzy operations, like AND or OR. The operator NOT can be used to negate expressions: + + ...Clause1 AND (Clause2 OR Clause3) AND NOT Clause4 ... + + Fuzzy clauses are written in form Variable IS Value. The NOT operator can be used to negate linguistic values as well:
+ ...Variable1 IS Value1 AND Variable2 IS NOT Value2 ...
+ + The consequent is a single of fuzzy clauses (). To perform the + linguistic computing, the evaluates the clauses and then applies the fuzzy + operators. Once this is done a value representing the confidence in the antecedent being + true is obtained, and this is called firing strength of the . + + The firing strength is used to discover with how much confidence the consequent + of a rule is true. + + Sample usage: + + // create the linguistic labels (fuzzy sets) that compose the temperature + TrapezoidalFunction function1 = new TrapezoidalFunction( + 10, 15, TrapezoidalFunction.EdgeType.Right ); + FuzzySet fsCold = new FuzzySet( "Cold", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 10, 15, 20, 25 ); + FuzzySet fsCool = new FuzzySet( "Cool", function2 ); + TrapezoidalFunction function3 = new TrapezoidalFunction( 20, 25, 30, 35 ); + FuzzySet fsWarm = new FuzzySet( "Warm", function3 ); + TrapezoidalFunction function4 = new TrapezoidalFunction( + 30, 35, TrapezoidalFunction.EdgeType.Left ); + FuzzySet fsHot = new FuzzySet( "Hot", function4 ); + + // create a linguistic variable to represent steel temperature + LinguisticVariable lvSteel = new LinguisticVariable( "Steel", 0, 80 ); + // adding labels to the variable + lvSteel.AddLabel( fsCold ); + lvSteel.AddLabel( fsCool ); + lvSteel.AddLabel( fsWarm ); + lvSteel.AddLabel( fsHot ); + + // create a linguistic variable to represent stove temperature + LinguisticVariable lvStove = new LinguisticVariable( "Stove", 0, 80 ); + // adding labels to the variable + lvStove.AddLabel( fsCold ); + lvStove.AddLabel( fsCool ); + lvStove.AddLabel( fsWarm ); + lvStove.AddLabel( fsHot ); + + // create the linguistic labels (fuzzy sets) that compose the pressure + TrapezoidalFunction function5 = new TrapezoidalFunction( + 20, 40, TrapezoidalFunction.EdgeType.Right ); + FuzzySet fsLow = new FuzzySet( "Low", function5 ); + TrapezoidalFunction function6 = new TrapezoidalFunction( 20, 40, 60, 80 ); + FuzzySet fsMedium = new FuzzySet( "Medium", function6 ); + TrapezoidalFunction function7 = new TrapezoidalFunction( + 60, 80, TrapezoidalFunction.EdgeType.Left ); + FuzzySet fsHigh = new FuzzySet( "High", function7 ); + // create a linguistic variable to represent pressure + LinguisticVariable lvPressure = new LinguisticVariable( "Pressure", 0, 100 ); + // adding labels to the variable + lvPressure.AddLabel( fsLow ); + lvPressure.AddLabel( fsMedium ); + lvPressure.AddLabel( fsHigh ); + + // create a linguistic variable database + Database db = new Database( ); + db.AddVariable( lvSteel ); + db.AddVariable( lvStove ); + db.AddVariable( lvPressure ); + + // sample rules just to test the expression parsing + Rule r1 = new Rule( db, "Test1", "IF Steel is not Cold and Stove is Hot then Pressure is Low" ); + Rule r2 = new Rule( db, "Test2", "IF Steel is Cold and not (Stove is Warm or Stove is Hot) then Pressure is Medium" ); + Rule r3 = new Rule( db, "Test3", "IF Steel is Cold and Stove is Warm or Stove is Hot then Pressure is High" ); + + // testing the firing strength + lvSteel.NumericInput = 12; + lvStove.NumericInput = 35; + float result = r1.EvaluateFiringStrength( ); + Console.WriteLine( result.ToString( ) ); + +
+ +
+ + + Initializes a new instance of the class. + + + A fuzzy containig the linguistic variables + (see ) that will be used in the Rule. + + Name of this . + + A string representing the . It must be a "IF..THEN" statement. + For a more detailed description see class. + + A class that implements a interface to + evaluate the AND operations of the Rule. + + A class that implements a interface + to evaluate the OR operations of the Rule. + + + + + Initializes a new instance of the class using as + CoNorm the and as Norm the . + + + A fuzzy containig the linguistic variables + (see ) that will be used in the . + + Name of this . + + A string representing the . It must be a "IF..THEN" + statement. For a more detailed description see class. + + + + + Converts the RPN fuzzy expression into a string representation. + + + String representation of the RPN fuzzy expression. + + + + + Defines the priority of the fuzzy operators. + + + A fuzzy operator or openning parenthesis. + + A number indicating the priority of the operator, and zero for openning + parenthesis. + + + + + Converts the Fuzzy Rule to RPN (Reverse Polish Notation). For debug proposes, the string representation of the + RPN expression can be acessed by calling method. + + + + + + Performs a preprocessing on the rule, placing unary operators in proper position and breaking the string + space separated tokens. + + + Rule in string format. + + An array of strings with tokens of the rule. + + + + + Evaluates the firing strength of the Rule, the degree of confidence that the consequent of this Rule + must be executed. + + + The firing strength [0..1] of the Rule. + + + + + The name of the fuzzy rule. + + + + + + The fuzzy that represents the consequent of the . + + + + + + The class represents a linguistic variable. + + + Linguistic variables are variables that store linguistic values (labels). Fuzzy Inference Systems (FIS) + use a set of linguistic variables, called the FIS database, to execute fuzzy computation (computing with words). A linguistic + variable has a name and is composed by a set of called its linguistic labels. When declaring fuzzy + statements in a FIS, a linguistic variable can be only assigned or compared to one of its labels. + + Let us consider, for example, a linguistic variable temperature. In a given application, temperature can be + cold, cool, warm or hot. Those will be the variable's linguistic labels, each one a fuzzy set with its own membership + function. Ideally, the labels will represent concepts related to the variable's meaning. Futhermore, fuzzy statements like + "temperature is warm" or "temperature is not cold" can be used to build a Fuzzy Inference Systems. + + + Sample usage: + + // create a linguistic variable to represent temperature + LinguisticVariable lvTemperature = new LinguisticVariable( "Temperature", 0, 80 ); + + // create the linguistic labels (fuzzy sets) that compose the temperature + TrapezoidalFunction function1 = new TrapezoidalFunction( 10, 15, TrapezoidalFunction.EdgeType.Right ); + FuzzySet fsCold = new FuzzySet( "Cold", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 10, 15, 20, 25 ); + FuzzySet fsCool = new FuzzySet( "Cool", function2 ); + TrapezoidalFunction function3 = new TrapezoidalFunction( 20, 25, 30, 35 ); + FuzzySet fsWarm = new FuzzySet( "Warm", function3 ); + TrapezoidalFunction function4 = new TrapezoidalFunction( 30, 35, TrapezoidalFunction.EdgeType.Left ); + FuzzySet fsHot = new FuzzySet( "Hot" , function4 ); + + // adding labels to the variable + lvTemperature.AddLabel( fsCold ); + lvTemperature.AddLabel( fsCool ); + lvTemperature.AddLabel( fsWarm ); + lvTemperature.AddLabel( fsHot ); + + // showing the shape of the linguistic variable - the shape of its labels memberships from start to end + Console.WriteLine( "Cold; Cool; Warm; Hot" ); + for ( float x = 0; x < 80; x += 0.2 ) + { + float y1 = lvTemperature.GetLabelMembership( "Cold", x ); + float y2 = lvTemperature.GetLabelMembership( "Cool", x ); + float y3 = lvTemperature.GetLabelMembership( "Warm", x ); + float y4 = lvTemperature.GetLabelMembership( "Hot" , x ); + + Console.WriteLine( String.Format( "{0:N}; {1:N}; {2:N}; {3:N}", y1, y2, y3, y4 ) ); + } + + + + + + + Initializes a new instance of the class. + + + Name of the linguistic variable. + + Left limit of the valid variable range. + + Right limit of the valid variable range. + + + + + Adds a linguistic label to the variable. + + + A that will be a linguistic label of the linguistic variable. + + Linguistic labels are fuzzy sets (). Each + label of the variable must have a unique name. The range of the label + (left and right limits) cannot be greater than + the linguistic variable range (start/end). + + The fuzzy set was not initialized. + The linguistic label name already exists in the linguistic variable. + The left limit of the fuzzy set can not be lower than the linguistic variable's starting point. + "The right limit of the fuzzy set can not be greater than the linguistic variable's ending point." + + + + + Removes all the linguistic labels of the linguistic variable. + + + + + + Returns an existing label from the linguistic variable. + + + Name of the label to retrieve. + + Reference to named label (). + + The label indicated was not found in the linguistic variable. + + + + + Calculate the membership of a given value to a given label. Used to evaluate linguistics clauses like + "X IS A", where X is a value and A is a linguistic label. + + + Label (fuzzy set) to evaluate value's membership. + Value which label's membership will to be calculated. + + Degree of membership [0..1] of the value to the label (fuzzy set). + + The label indicated in labelName was not found in the linguistic variable. + + + + + Numerical value of the input of this linguistic variable. + + + + + Name of the linguistic variable. + + + + + Left limit of the valid variable range. + + + + + Right limit of the valid variable range. + + + + + The class represents a fuzzy set. + + + The fuzzy sets are the base for all fuzzy applications. In a classical set, the membership of + a given value to the set can always be defined as true (1) or false (0). In fuzzy sets, this membership can be + a value in the range [0..1], representing the imprecision existent in many real world applications. + + Let us consider, for example, fuzzy sets representing some temperature. In a given application, there is the + need to represent a cool and warm temperature. Like in real life, the precise point when the temperature changes from + cool to warm is not easy to find, and does not makes sense. If we consider the cool around 20 degrees and warm around + 30 degrees, it is not simple to find a break point. If we take the mean, we can consider values greater than or equal + 25 to be warm. But we can still consider 25 a bit cool. And a bit warm at the same time. This is where fuzzy sets can + help. + + Fuzzy sets are often used to compose Linguistic Variables, used in Fuzzy Inference Systems. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool and Warm + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsWarm = new FuzzySet( "Warm", function2 ); + + // show membership to the Cool set for some values + Console.WriteLine( "COOL" ); + for ( int i = 13; i <= 28; i++ ) + Console.WriteLine( fsCool.GetMembership( i ) ); + + // show membership to the Warm set for some values + Console.WriteLine( "WARM" ); + for ( int i = 23; i <= 38; i++ ) + Console.WriteLine( fsWarm.GetMembership( i ) ); + + + + + + + Initializes a new instance of the class. + + + Name of the fuzzy set. + Membership function that will define the shape of the fuzzy set. + + + + + Calculate membership of a given value to the fuzzy set. + + + Value which membership needs to be calculated. + + Degree of membership [0..1] of the value to the fuzzy set. + + + + + Name of the fuzzy set. + + + + + The leftmost x value of the fuzzy set's membership function. + + + + + + The rightmost x value of the fuzzy set's membership function. + + + + + + Membership function composed by several connected linear functions. + + + The piecewise linear is a generic function used by many specific fuzzy membership + functions, like the trappezoidal function. This class must + be instantiated with a sequence of points representing the edges of each one of the lines composing the + piecewise function. + + The x-axis points must be ordered (crescent), so the function will use each X value + as an ending point for one line and starting point of the next. + + While trapezoidal and half trapezoidal are classic functions used in fuzzy functions, this class supports any function + or approximation that can be represented as a sequence of lines. + + Sample usage: + + // creating an array of points representing a typical trapezoidal function /-\ + Point [] points = new Point[4]; + // point where membership starts to rise + points[0] = new Point( 10, 0 ); + // maximum membership (1) reached at the second point + points[1] = new Point( 20, 1 ); + // membership starts to fall at the third point + points[2] = new Point( 30, 1 ); + // membership gets to zero at the last point + points[3] = new Point( 40, 0 ); + // creating the instance + PiecewiseLinearFunction membershipFunction = new PiecewiseLinearFunction( points ); + // getting membership for several points + for ( int i = 5; i < 45; i++ ) + Console.WriteLine( membershipFunction.GetMembership( i ) ); + + + + + + + Vector of (X,Y) coordinates for end/start of each line. + + + + + Initializes a new instance of the class. + + + This constructor must be used only by inherited classes to create the + points vector after the instantiation. + + + + + Initializes a new instance of the class. + + + Array of (X,Y) coordinates of each start/end of the lines. + + Specified point must be in crescent order on X axis and their Y value + must be in the range of [0, 1]. + + Points must be in crescent order on X axis. + Y value of points must be in the range of [0, 1]. + + + + + Calculate membership of a given value to the piecewise function. + + + Value which membership will to be calculated. + + Degree of membership [0..1] of the value to the fuzzy set. + + Points of the membership function are not initialized. + + + + + The leftmost x value of the membership function, given by the first (X,Y) coordinate. + + + Points of the membership function are not initialized. + + + + + The rightmost x value of the membership function, given by the last (X,Y) coordinate. + + + Points of the membership function are not initialized. + + + + + Membership function in the shape of a trapezoid. Can be a half trapzoid if the left or the right side is missing. + + + Since the can represent any piece wise linear + function, it can represent trapezoids too. But as trapezoids are largely used in the creation of + Linguistic Variables, this class simplifies the creation of them. + + Sample usage: + + // creating a typical triangular fuzzy set /\ + TrapezoidalFunction function1 = new TrapezoidalFunction( 10, 20, 30 ); + // creating a right fuzzy set, the rigth side of the set is fuzzy but the left is opened + TrapezoidalFunction function2 = new TrapezoidalFunction( 10, 20, 30, TrapezoidalFunction.EdgeType.Right ); + + + + + + + A private constructor used only to reuse code inside of this default constructor. + + + Size of points vector to create. This size depends of the shape of the + trapezoid. + + + + + Initializes a new instance of the class. + + With four points the shape is known as flat fuzzy number or fuzzy interval (/--\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value. + X value where the degree of membership starts to fall. + X value where the degree of membership reaches the minimum value. + The maximum value that the membership will reach, [0, 1]. + The minimum value that the membership will reach, [0, 1]. + + + + + Initializes a new instance of the class. + + With four points the shape is known as flat fuzzy number or fuzzy interval (/--\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value. + X value where the degree of membership starts to fall. + X value where the degree of membership reaches the minimum value. + + + Maximum membership value is set to 1.0 and the minimum is set to 0.0. + + + + + + Initializes a new instance of the class. + + With three points the shape is known as triangular fuzzy number or just fuzzy number (/\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value and starts to fall. + X value where the degree of membership reaches the minimum value. + The maximum value that the membership will reach, [0, 1]. + The minimum value that the membership will reach, [0, 1]. + + + + + Initializes a new instance of the class. + + With three points the shape is known as triangular fuzzy number or just fuzzy number (/\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value and starts to fall. + X value where the degree of membership reaches the minimum value. + + + Maximum membership value is set to 1.0 and the minimum is set to 0.0. + + + + + + Initializes a new instance of the class. + + With two points and an edge this shape can be a left fuzzy number (/) or a right fuzzy number (\). + + + Edge = Left: X value where the degree of membership starts to raise. + Edge = Right: X value where the function starts, with maximum degree of membership. + Edge = Left: X value where the degree of membership reaches the maximum. + Edge = Right: X value where the degree of membership reaches minimum value. + The maximum value that the membership will reach, [0, 1]. + The minimum value that the membership will reach, [0, 1]. + Trapezoid's . + + + + + Initializes a new instance of the class. + + With three points and an edge this shape can be a left fuzzy number (/--) or a right fuzzy number (--\). + + + Edge = Left: X value where the degree of membership starts to raise. + Edge = Right: X value where the function starts, with maximum degree of membership. + Edge = Left: X value where the degree of membership reaches the maximum. + Edge = Right: X value where the degree of membership reaches minimum value. + Trapezoid's . + + + Maximum membership value is set to 1.0 and the minimum is set to 0.0. + + + + + + Enumeration used to create trapezoidal membership functions with half trapezoids. + + + If the value is Left, the trapezoid has the left edge, but right + is open (/--). If the value is Right, the trapezoid has the right edge, but left + is open (--\). + + + + + The fuzzy side of the trapezoid is at the left side. + + + + + The fuzzy side of the trapezoid is at the right side. + + + + + Product Norm, used to calculate the linguistic value of a AND operation. + + + The product Norm uses a multiplication operator to compute the + AND among two fuzzy memberships. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool (Temperature) and Near (Distance) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsNear = new FuzzySet( "Near", function2 ); + + // getting memberships + float m1 = fsCool.GetMembership( 15 ); + float m2 = fsNear.GetMembership( 35 ); + + // computing the membership of "Cool AND Near" + ProductNorm AND = new ProductNorm( ); + float result = AND.Evaluate( m1, m2 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Interface with the common methods of a Fuzzy Norm. + + + All fuzzy operators that act as a Norm must implement this interface. + + + + + + Calculates the numerical result of a Norm (AND) operation applied to + two fuzzy membership values. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result the operation AND applied to + and . + + + + + Calculates the numerical result of the AND operation applied to + two fuzzy membership values using the product rule. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result of the AND operation applied to + and . + + + + + Minimum Norm, used to calculate the linguistic value of a AND operation. + + + The minimum Norm uses a minimum operator to compute the AND + among two fuzzy memberships. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool (Temperature) and Near (Distance) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsNear = new FuzzySet( "Near", function2 ); + + // getting memberships + float m1 = fsCool.GetMembership( 15 ); + float m2 = fsNear.GetMembership( 35 ); + + // computing the membership of "Cool AND Near" + MinimumNorm AND = new MinimumNorm( ); + float result = AND.Evaluate( m1, m2 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Calculates the numerical result of the AND operation applied to + two fuzzy membership values using the minimum rule. + + + A fuzzy membership value, [0..1]. + + A fuzzy membership value, [0..1]. + + The numerical result of the AND operation applied to + and . + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net40/Accord.Fuzzy.dll b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net40/Accord.Fuzzy.dll new file mode 100644 index 0000000000..78adb6570 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net40/Accord.Fuzzy.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net40/Accord.Fuzzy.xml b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net40/Accord.Fuzzy.xml new file mode 100644 index 0000000000..e6ce116ba --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net40/Accord.Fuzzy.xml @@ -0,0 +1,1559 @@ + + + + Accord.Fuzzy + + + + + This class represents a fuzzy clause, a linguistic expression of the type "Variable IS Value". + + + A Fuzzy Clause is used to verify if a linguistic variable can be considered + as a specific value at a specific moment. Linguistic variables can only assume value of + their linguistic labels. Because of the nature of the Fuzzy Logic, a Variable can be + several of its labels at the same time, with different membership values. + + For example, a linguistic variable "temperature" can be "hot" with a membership 0.3 + and "warm" with a membership 0.7 at the same time. To obtain those memberships, Fuzzy Clauses + "temperature is hot" and "temperature is war" can be built. + + Typically Fuzzy Clauses are used to build Fuzzy Rules (). + + Sample usage: + + // create a linguistic variable to represent temperature + LinguisticVariable lvTemperature = new LinguisticVariable("Temperature", 0, 80 ); + + // create the linguistic labels (fuzzy sets) that compose the temperature + TrapezoidalFunction function1 = new TrapezoidalFunction(10, 15, TrapezoidalFunction.EdgeType.Right); + FuzzySet fsCold = new FuzzySet("Cold", function1); + TrapezoidalFunction function2 = new TrapezoidalFunction(10, 15, 20, 25); + FuzzySet fsCool = new FuzzySet("Cool", function2); + TrapezoidalFunction function3 = new TrapezoidalFunction(20, 25, 30, 35); + FuzzySet fsWarm = new FuzzySet("Warm", function3); + TrapezoidalFunction function4 = new TrapezoidalFunction(30, 35, TrapezoidalFunction.EdgeType.Left); + FuzzySet fsHot = new FuzzySet("Hot", function4); + + // adding labels to the variable + lvTemperature.AddLabel(fsCold); + lvTemperature.AddLabel(fsCool); + lvTemperature.AddLabel(fsWarm); + lvTemperature.AddLabel(fsHot); + + // creating the Clause + Clause fuzzyClause = new Clause(lvTemperature, fsHot); + // setting the numerical input of the variable to evaluate the Clause + lvTemperature.NumericInput = 35; + float result = fuzzyClause.Evaluate(); + Console.WriteLine(result.ToString()); + + + + + + + Initializes a new instance of the class. + + + Linguistic variable of the clause. + + Label of the linguistic variable, a fuzzy set used as label into the linguistic variable. + + The label indicated was not found in the linguistic variable. + + + + + Evaluates the fuzzy clause. + + + Degree of membership [0..1] of the clause. + + + + + Returns the fuzzy clause in its linguistic representation. + + + A string representing the fuzzy clause. + + + + + Gets the of the . + + + + + Gets the of the . + + + + + This class implements the centroid defuzzification method. + + + In many applications, a Fuzzy Inference System is used to perform linguistic + computation, but at the end of the inference process, a numerical value is needed. It does + not mean that the system needs precision, but simply that a numerical value is required, + most of the times because it will be used to control another system that needs the number. + To obtain this numer, a defuzzification method is performed. + + This class implements the centroid defuzzification method. The output of a Fuzzy + Inference System is a set of rules (see ) with firing strength greater + than zero. Those firing strength apply a constraint to the consequent fuzzy sets + (see ) of the rules. Putting all those fuzzy sets togheter results + in a a shape that is the linguistic output meaning. + + + The centroid method calculates the center of the area of this shape to obtain the + numerical representation of the output. It uses a numerical approximation, so a number + of intervals must be choosen. As the number of intervals grow, the precision of the + numerical ouput grows. + + + For a sample usage of the see + class. + + + + + + Interface which specifies set of methods required to be implemented by all defuzzification methods + that can be used in Fuzzy Inference Systems. + + + In many applications, a Fuzzy Inference System is used to perform linguistic computation, + but at the end of the inference process, a numerical value is needed. It does not mean that the system + needs precision, but simply that a numerical value is required, most of the times because it will be used to + control another system that needs the number. To obtain this numer, a defuzzification method is performed. + + Several deffuzification methods were proposed, and they can be created as classes that + implements this interface. + + + + + Defuzzification method to obtain the numerical representation of a fuzzy output. + + + A containing the output of + several rules of a Fuzzy Inference System. + A operator to be used when constraining + the label to the firing strength. + + The numerical representation of the fuzzy output. + + + + + Initializes a new instance of the class. + + + Number of segments that the speech universe will be splited + to perform the numerical approximation of the center of area. + + + + + Centroid method to obtain the numerical representation of a fuzzy output. The numerical + value will be the center of the shape formed by the several fuzzy labels with their + constraints. + + + A containing the output of several + rules of a Fuzzy Inference System. + A operator to be used when constraining + the label to the firing strength. + + The numerical representation of the fuzzy output. + + The numerical output is unavaliable. All memberships are zero. + + + + + The class represents the output of a Fuzzy Inference System. + + + The class keeps set of rule's output - pairs with the output fuzzy label + and the rule's firing strength. + + + + Sample usage: + + // linguistic labels (fuzzy sets) that compose the distances + FuzzySet fsNear = new FuzzySet( "Near", + new TrapezoidalFunction( 15, 50, TrapezoidalFunction.EdgeType.Right ) ); + FuzzySet fsMedium = new FuzzySet( "Medium", + new TrapezoidalFunction( 15, 50, 60, 100 ) ); + FuzzySet fsFar = new FuzzySet( "Far", + new TrapezoidalFunction( 60, 100, TrapezoidalFunction.EdgeType.Left ) ); + + // front distance (input) + LinguisticVariable lvFront = new LinguisticVariable( "FrontalDistance", 0, 120 ); + lvFront.AddLabel( fsNear ); + lvFront.AddLabel( fsMedium ); + lvFront.AddLabel( fsFar ); + + // linguistic labels (fuzzy sets) that compose the angle + FuzzySet fsZero = new FuzzySet( "Zero", + new TrapezoidalFunction( -10, 5, 5, 10 ) ); + FuzzySet fsLP = new FuzzySet( "LittlePositive", + new TrapezoidalFunction( 5, 10, 20, 25 ) ); + FuzzySet fsP = new FuzzySet( "Positive", + new TrapezoidalFunction( 20, 25, 35, 40 ) ); + FuzzySet fsVP = new FuzzySet( "VeryPositive", + new TrapezoidalFunction( 35, 40, TrapezoidalFunction.EdgeType.Left ) ); + + // angle + LinguisticVariable lvAngle = new LinguisticVariable( "Angle", -10, 50 ); + lvAngle.AddLabel( fsZero ); + lvAngle.AddLabel( fsLP ); + lvAngle.AddLabel( fsP ); + lvAngle.AddLabel( fsVP ); + + // the database + Database fuzzyDB = new Database( ); + fuzzyDB.AddVariable( lvFront ); + fuzzyDB.AddVariable( lvAngle ); + + // creating the inference system + InferenceSystem IS = new InferenceSystem( fuzzyDB, new CentroidDefuzzifier( 1000 ) ); + + // going straight + IS.NewRule( "Rule 1", "IF FrontalDistance IS Far THEN Angle IS Zero" ); + // turning left + IS.NewRule( "Rule 2", "IF FrontalDistance IS Near THEN Angle IS Positive" ); + + ... + // inference section + + // setting inputs + IS.SetInput( "FrontalDistance", 20 ); + + // getting outputs + try + { + FuzzyOutput fuzzyOutput = IS.ExecuteInference ( "Angle" ); + + // showing the fuzzy output + foreach ( FuzzyOutput.OutputConstraint oc in fuzzyOutput.OutputList ) + { + Console.WriteLine( oc.Label + " - " + oc.FiringStrength.ToString( ) ); + } + } + catch ( Exception ) + { + ... + } + + + + + + + Initializes a new instance of the class. + + + A representing a Fuzzy Inference System's output. + + + + + Adds an output to the Fuzzy Output. + + + The name of a label representing a fuzzy rule's output. + The firing strength [0..1] of a fuzzy rule. + + The label indicated was not found in the linguistic variable. + + + + + Removes all the linguistic variables of the database. + + + + + + A list with of a Fuzzy Inference System's output. + + + + + + Gets the acting as a Fuzzy Inference System Output. + + + + + + Inner class to store the pair fuzzy label / firing strength of + a fuzzy output. + + + + + Initializes a new instance of the class. + + + A string representing the output label of a . + The firing strength of a , to be applied to its output label. + + + + + The representing the output label of a . + + + + + + The firing strength of a , to be applied to its output label. + + + + + + This class represents a Fuzzy Inference System. + + + A Fuzzy Inference System is a model capable of executing fuzzy computing. + It is mainly composed by a with the linguistic variables + (see ) and a + with the fuzzy rules (see ) that represent the behavior of the system. + The typical operation of a Fuzzy Inference System is: + + Get the numeric inputs; + Use the with the linguistic variables + (see ) to obtain linguistic meaning for each + numerical input; + Verify which rules (see ) of the are + activated by the input; + Combine the consequent of the activated rules to obtain a ; + Use some defuzzifier (see ) to obtain a numerical output. + + + + The following sample usage is a Fuzzy Inference System that controls an + auto guided vehicle avoing frontal collisions: + + // linguistic labels (fuzzy sets) that compose the distances + FuzzySet fsNear = new FuzzySet( "Near", + new TrapezoidalFunction( 15, 50, TrapezoidalFunction.EdgeType.Right ) ); + FuzzySet fsMedium = new FuzzySet( "Medium", + new TrapezoidalFunction( 15, 50, 60, 100 ) ); + FuzzySet fsFar = new FuzzySet( "Far", + new TrapezoidalFunction( 60, 100, TrapezoidalFunction.EdgeType.Left ) ); + + // front distance (input) + LinguisticVariable lvFront = new LinguisticVariable( "FrontalDistance", 0, 120 ); + lvFront.AddLabel( fsNear ); + lvFront.AddLabel( fsMedium ); + lvFront.AddLabel( fsFar ); + + // linguistic labels (fuzzy sets) that compose the angle + FuzzySet fsZero = new FuzzySet( "Zero", + new TrapezoidalFunction( -10, 5, 5, 10 ) ); + FuzzySet fsLP = new FuzzySet( "LittlePositive", + new TrapezoidalFunction( 5, 10, 20, 25 ) ); + FuzzySet fsP = new FuzzySet( "Positive", + new TrapezoidalFunction( 20, 25, 35, 40 ) ); + FuzzySet fsVP = new FuzzySet( "VeryPositive", + new TrapezoidalFunction( 35, 40, TrapezoidalFunction.EdgeType.Left ) ); + + // angle + LinguisticVariable lvAngle = new LinguisticVariable( "Angle", -10, 50 ); + lvAngle.AddLabel( fsZero ); + lvAngle.AddLabel( fsLP ); + lvAngle.AddLabel( fsP ); + lvAngle.AddLabel( fsVP ); + + // the database + Database fuzzyDB = new Database( ); + fuzzyDB.AddVariable( lvFront ); + fuzzyDB.AddVariable( lvAngle ); + + // creating the inference system + InferenceSystem IS = new InferenceSystem( fuzzyDB, new CentroidDefuzzifier( 1000 ) ); + + // going Straight + IS.NewRule( "Rule 1", "IF FrontalDistance IS Far THEN Angle IS Zero" ); + // Turning Left + IS.NewRule( "Rule 2", "IF FrontalDistance IS Near THEN Angle IS Positive" ); + + ... + // inference section + + // setting inputs + IS.SetInput( "FrontalDistance", 20 ); + + // getting outputs + try + { + float newAngle = IS.Evaluate( "Angle" ); + } + catch ( Exception ) + { + ... + } + + + + + + + Initializes a new Fuzzy . + + + A fuzzy containing the system linguistic variables. + A defuzzyfier method used to evaluate the numeric uotput of the system. + + + + + Initializes a new Fuzzy . + + + A fuzzy containing the system linguistic + variables. + A defuzzyfier method used to evaluate the numeric otput + of the system. + A operator used to evaluate the norms + in the . For more information of the norm evaluation see . + A operator used to evaluate the + conorms in the . For more information of the conorm evaluation see . + + + + + Creates a new and add it to the of the + . + + + Name of the to create. + A string representing the fuzzy rule. + + The new reference. + + + + + Sets a numerical input for one of the linguistic variables of the . + + + Name of the . + Numeric value to be used as input. + + The variable indicated in + was not found in the database. + + + + + Gets one of the of the . + + + Name of the to get. + + The variable indicated in + was not found in the database. + + + + + Gets one of the Rules of the . + + + Name of the to get. + + The rule indicated in + was not found in the rulebase. + + + + + Executes the fuzzy inference, obtaining a numerical output for a choosen output + linguistic variable. + + + Name of the to evaluate. + + The numerical output of the Fuzzy Inference System for the choosen variable. + + The variable indicated was not found in the database. + + + + + Executes the fuzzy inference, obtaining the of the system for the required + . + + + Name of the to evaluate. + + A containing the fuzzy output of the system for the + specified in . + + The variable indicated was not found in the database. + + + + + Membership function used in fuzzy singletons: fuzzy sets that have just one point with membership value 1. + + + Sometimes it is needed to represent crisp (classical) number in the fuzzy domain. Several approaches + can be used, like adding some uncertain (fuzziness) in the original number (the number one, for instance, can be seen as a + with -0.5, 1.0 and 0.5 parameters). Another approach is to declare fuzzy singletons: fuzzy sets with only one point returning a none zero membership. + + While trapezoidal and half trapezoidal are classic functions used in fuzzy functions, this class supports any function + or approximation that can be represented as a sequence of lines. + + Sample usage: + + // creating the instance + SingletonFunction membershipFunction = new SingletonFunction( 10 ); + // getting membership for several points + for ( int i = 0; i < 20; i++ ) + Console.WriteLine( membershipFunction.GetMembership( i ) ); + + + + + + + Interface which specifies set of methods required to be implemented by all membership + functions. + + + All membership functions must implement this interface, which is used by + class to calculate value's membership to a particular fuzzy set. + + + + + + Calculate membership of a given value to the fuzzy set. + + + Value which membership will to be calculated. + + Degree of membership [0..1] of the value to the fuzzy set. + + + + + The leftmost x value of the membership function. + + + + + The rightmost x value of the membership function. + + + + + The unique point where the membership value is 1. + + + + + Initializes a new instance of the class. + + + Support is the only value of x where the membership function is 1. + + + + + Calculate membership of a given value to the singleton function. + + + Value which membership will to be calculated. + + Degree of membership {0,1} since singletons do not admit memberships different from 0 and 1. + + + + + The leftmost x value of the membership function, the same value of the support. + + + + + + The rightmost x value of the membership function, the same value of the support. + + + + + + NOT operator, used to calculate the complement of a fuzzy set. + + + The NOT operator definition is (1 - m) for all the values of membership m of the fuzzy set. + + Sample usage: + + // creating a fuzzy sets to represent Cool (Temperature) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + + // getting membership + float m1 = fsCool.GetMembership( 15 ); + + // computing the membership of "NOT Cool" + NotOperator NOT = new NotOperator( ); + float result = NOT.Evaluate( m1 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Interface with the common methods of Fuzzy Unary Operator. + + + All fuzzy operators that act as a Unary Operator (NOT, VERY, LITTLE) must implement this interface. + + + + + + Calculates the numerical result of a Unary operation applied to one + fuzzy membership value. + + + A fuzzy membership value, [0..1]. + + The numerical result of the operation applied to . + + + + + Calculates the numerical result of the NOT operation applied to + a fuzzy membership value. + + + A fuzzy membership value, [0..1]. + + The numerical result of the unary operation NOT applied to . + + + + + The class represents a fuzzy rulebase, a set of fuzzy rules used in a Fuzzy Inference System. + + + + + + Initializes a new instance of the class. + + + + + + Adds a fuzzy rule to the database. + + + A fuzzy to add to the database. + + The fuzzy rule was not initialized. + The fuzzy rule name already exists in the rulebase. + + + + + Removes all the fuzzy rules of the database. + + + + + + Returns an existing fuzzy rule from the rulebase. + + + Name of the fuzzy to retrieve. + + Reference to named . + + The rule indicated in ruleName was not found in the rulebase. + + + + + Gets all the rules of the rulebase. + + + An array with all the rulebase rules. + + + + + The class represents a fuzzy database, a set of linguistic variables used in a Fuzzy + Inference System. + + + + + + Initializes a new instance of the class. + + + + + + Adds a linguistic variable to the database. + + + A linguistic variable to add. + + The linguistic variable was not initialized. + The linguistic variable name already exists in the database. + + + + + Removes all the linguistic variables of the database. + + + + + + Returns an existing linguistic variable from the database. + + + Name of the linguistic variable to retrieve. + + Reference to named . + + The variable indicated was not found in the database. + + + + + Maximum CoNorm, used to calculate the linguistic value of a OR operation. + + + The maximum CoNorm uses a maximum operator to compute the OR + among two fuzzy memberships. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool (Temperature) and Near (Distance) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsNear = new FuzzySet( "Near", function2 ); + + // getting memberships + float m1 = fsCool.GetMembership( 15 ); + float m2 = fsNear.GetMembership( 35 ); + + // computing the membership of "Cool OR Near" + MaximumCoNorm OR = new MaximumCoNorm( ); + float result = OR.Evaluate( m1, m2 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Interface with the common methods of a Fuzzy CoNorm. + + + All fuzzy operators that act as a CoNorm must implement this interface. + + + + + + Calculates the numerical result of a CoNorm (OR) operation applied to + two fuzzy membership values. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result the operation OR applied to + and . + + + + + Calculates the numerical result of the OR operation applied to + two fuzzy membership values. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result of the binary operation OR applied to + and . + + + + + This class represents a Fuzzy Rule, a linguistic expression representing some behavioral + aspect of a Fuzzy Inference System. + + + + A Fuzzy Rule is a fuzzy linguistic instruction that can be executed by a fuzzy system. + The format of the Fuzzy Rule is: + + + IF antecedent THEN consequent + + The antecedent is composed by a set of fuzzy clauses (see ) connected + by fuzzy operations, like AND or OR. The operator NOT can be used to negate expressions: + + ...Clause1 AND (Clause2 OR Clause3) AND NOT Clause4 ... + + Fuzzy clauses are written in form Variable IS Value. The NOT operator can be used to negate linguistic values as well:
+ ...Variable1 IS Value1 AND Variable2 IS NOT Value2 ...
+ + The consequent is a single of fuzzy clauses (). To perform the + linguistic computing, the evaluates the clauses and then applies the fuzzy + operators. Once this is done a value representing the confidence in the antecedent being + true is obtained, and this is called firing strength of the . + + The firing strength is used to discover with how much confidence the consequent + of a rule is true. + + Sample usage: + + // create the linguistic labels (fuzzy sets) that compose the temperature + TrapezoidalFunction function1 = new TrapezoidalFunction( + 10, 15, TrapezoidalFunction.EdgeType.Right ); + FuzzySet fsCold = new FuzzySet( "Cold", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 10, 15, 20, 25 ); + FuzzySet fsCool = new FuzzySet( "Cool", function2 ); + TrapezoidalFunction function3 = new TrapezoidalFunction( 20, 25, 30, 35 ); + FuzzySet fsWarm = new FuzzySet( "Warm", function3 ); + TrapezoidalFunction function4 = new TrapezoidalFunction( + 30, 35, TrapezoidalFunction.EdgeType.Left ); + FuzzySet fsHot = new FuzzySet( "Hot", function4 ); + + // create a linguistic variable to represent steel temperature + LinguisticVariable lvSteel = new LinguisticVariable( "Steel", 0, 80 ); + // adding labels to the variable + lvSteel.AddLabel( fsCold ); + lvSteel.AddLabel( fsCool ); + lvSteel.AddLabel( fsWarm ); + lvSteel.AddLabel( fsHot ); + + // create a linguistic variable to represent stove temperature + LinguisticVariable lvStove = new LinguisticVariable( "Stove", 0, 80 ); + // adding labels to the variable + lvStove.AddLabel( fsCold ); + lvStove.AddLabel( fsCool ); + lvStove.AddLabel( fsWarm ); + lvStove.AddLabel( fsHot ); + + // create the linguistic labels (fuzzy sets) that compose the pressure + TrapezoidalFunction function5 = new TrapezoidalFunction( + 20, 40, TrapezoidalFunction.EdgeType.Right ); + FuzzySet fsLow = new FuzzySet( "Low", function5 ); + TrapezoidalFunction function6 = new TrapezoidalFunction( 20, 40, 60, 80 ); + FuzzySet fsMedium = new FuzzySet( "Medium", function6 ); + TrapezoidalFunction function7 = new TrapezoidalFunction( + 60, 80, TrapezoidalFunction.EdgeType.Left ); + FuzzySet fsHigh = new FuzzySet( "High", function7 ); + // create a linguistic variable to represent pressure + LinguisticVariable lvPressure = new LinguisticVariable( "Pressure", 0, 100 ); + // adding labels to the variable + lvPressure.AddLabel( fsLow ); + lvPressure.AddLabel( fsMedium ); + lvPressure.AddLabel( fsHigh ); + + // create a linguistic variable database + Database db = new Database( ); + db.AddVariable( lvSteel ); + db.AddVariable( lvStove ); + db.AddVariable( lvPressure ); + + // sample rules just to test the expression parsing + Rule r1 = new Rule( db, "Test1", "IF Steel is not Cold and Stove is Hot then Pressure is Low" ); + Rule r2 = new Rule( db, "Test2", "IF Steel is Cold and not (Stove is Warm or Stove is Hot) then Pressure is Medium" ); + Rule r3 = new Rule( db, "Test3", "IF Steel is Cold and Stove is Warm or Stove is Hot then Pressure is High" ); + + // testing the firing strength + lvSteel.NumericInput = 12; + lvStove.NumericInput = 35; + float result = r1.EvaluateFiringStrength( ); + Console.WriteLine( result.ToString( ) ); + +
+ +
+ + + Initializes a new instance of the class. + + + A fuzzy containig the linguistic variables + (see ) that will be used in the Rule. + + Name of this . + + A string representing the . It must be a "IF..THEN" statement. + For a more detailed description see class. + + A class that implements a interface to + evaluate the AND operations of the Rule. + + A class that implements a interface + to evaluate the OR operations of the Rule. + + + + + Initializes a new instance of the class using as + CoNorm the and as Norm the . + + + A fuzzy containig the linguistic variables + (see ) that will be used in the . + + Name of this . + + A string representing the . It must be a "IF..THEN" + statement. For a more detailed description see class. + + + + + Converts the RPN fuzzy expression into a string representation. + + + String representation of the RPN fuzzy expression. + + + + + Defines the priority of the fuzzy operators. + + + A fuzzy operator or openning parenthesis. + + A number indicating the priority of the operator, and zero for openning + parenthesis. + + + + + Converts the Fuzzy Rule to RPN (Reverse Polish Notation). For debug proposes, the string representation of the + RPN expression can be acessed by calling method. + + + + + + Performs a preprocessing on the rule, placing unary operators in proper position and breaking the string + space separated tokens. + + + Rule in string format. + + An array of strings with tokens of the rule. + + + + + Evaluates the firing strength of the Rule, the degree of confidence that the consequent of this Rule + must be executed. + + + The firing strength [0..1] of the Rule. + + + + + The name of the fuzzy rule. + + + + + + The fuzzy that represents the consequent of the . + + + + + + The class represents a linguistic variable. + + + Linguistic variables are variables that store linguistic values (labels). Fuzzy Inference Systems (FIS) + use a set of linguistic variables, called the FIS database, to execute fuzzy computation (computing with words). A linguistic + variable has a name and is composed by a set of called its linguistic labels. When declaring fuzzy + statements in a FIS, a linguistic variable can be only assigned or compared to one of its labels. + + Let us consider, for example, a linguistic variable temperature. In a given application, temperature can be + cold, cool, warm or hot. Those will be the variable's linguistic labels, each one a fuzzy set with its own membership + function. Ideally, the labels will represent concepts related to the variable's meaning. Futhermore, fuzzy statements like + "temperature is warm" or "temperature is not cold" can be used to build a Fuzzy Inference Systems. + + + Sample usage: + + // create a linguistic variable to represent temperature + LinguisticVariable lvTemperature = new LinguisticVariable( "Temperature", 0, 80 ); + + // create the linguistic labels (fuzzy sets) that compose the temperature + TrapezoidalFunction function1 = new TrapezoidalFunction( 10, 15, TrapezoidalFunction.EdgeType.Right ); + FuzzySet fsCold = new FuzzySet( "Cold", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 10, 15, 20, 25 ); + FuzzySet fsCool = new FuzzySet( "Cool", function2 ); + TrapezoidalFunction function3 = new TrapezoidalFunction( 20, 25, 30, 35 ); + FuzzySet fsWarm = new FuzzySet( "Warm", function3 ); + TrapezoidalFunction function4 = new TrapezoidalFunction( 30, 35, TrapezoidalFunction.EdgeType.Left ); + FuzzySet fsHot = new FuzzySet( "Hot" , function4 ); + + // adding labels to the variable + lvTemperature.AddLabel( fsCold ); + lvTemperature.AddLabel( fsCool ); + lvTemperature.AddLabel( fsWarm ); + lvTemperature.AddLabel( fsHot ); + + // showing the shape of the linguistic variable - the shape of its labels memberships from start to end + Console.WriteLine( "Cold; Cool; Warm; Hot" ); + for ( float x = 0; x < 80; x += 0.2 ) + { + float y1 = lvTemperature.GetLabelMembership( "Cold", x ); + float y2 = lvTemperature.GetLabelMembership( "Cool", x ); + float y3 = lvTemperature.GetLabelMembership( "Warm", x ); + float y4 = lvTemperature.GetLabelMembership( "Hot" , x ); + + Console.WriteLine( String.Format( "{0:N}; {1:N}; {2:N}; {3:N}", y1, y2, y3, y4 ) ); + } + + + + + + + Initializes a new instance of the class. + + + Name of the linguistic variable. + + Left limit of the valid variable range. + + Right limit of the valid variable range. + + + + + Adds a linguistic label to the variable. + + + A that will be a linguistic label of the linguistic variable. + + Linguistic labels are fuzzy sets (). Each + label of the variable must have a unique name. The range of the label + (left and right limits) cannot be greater than + the linguistic variable range (start/end). + + The fuzzy set was not initialized. + The linguistic label name already exists in the linguistic variable. + The left limit of the fuzzy set can not be lower than the linguistic variable's starting point. + "The right limit of the fuzzy set can not be greater than the linguistic variable's ending point." + + + + + Removes all the linguistic labels of the linguistic variable. + + + + + + Returns an existing label from the linguistic variable. + + + Name of the label to retrieve. + + Reference to named label (). + + The label indicated was not found in the linguistic variable. + + + + + Calculate the membership of a given value to a given label. Used to evaluate linguistics clauses like + "X IS A", where X is a value and A is a linguistic label. + + + Label (fuzzy set) to evaluate value's membership. + Value which label's membership will to be calculated. + + Degree of membership [0..1] of the value to the label (fuzzy set). + + The label indicated in labelName was not found in the linguistic variable. + + + + + Numerical value of the input of this linguistic variable. + + + + + Name of the linguistic variable. + + + + + Left limit of the valid variable range. + + + + + Right limit of the valid variable range. + + + + + The class represents a fuzzy set. + + + The fuzzy sets are the base for all fuzzy applications. In a classical set, the membership of + a given value to the set can always be defined as true (1) or false (0). In fuzzy sets, this membership can be + a value in the range [0..1], representing the imprecision existent in many real world applications. + + Let us consider, for example, fuzzy sets representing some temperature. In a given application, there is the + need to represent a cool and warm temperature. Like in real life, the precise point when the temperature changes from + cool to warm is not easy to find, and does not makes sense. If we consider the cool around 20 degrees and warm around + 30 degrees, it is not simple to find a break point. If we take the mean, we can consider values greater than or equal + 25 to be warm. But we can still consider 25 a bit cool. And a bit warm at the same time. This is where fuzzy sets can + help. + + Fuzzy sets are often used to compose Linguistic Variables, used in Fuzzy Inference Systems. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool and Warm + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsWarm = new FuzzySet( "Warm", function2 ); + + // show membership to the Cool set for some values + Console.WriteLine( "COOL" ); + for ( int i = 13; i <= 28; i++ ) + Console.WriteLine( fsCool.GetMembership( i ) ); + + // show membership to the Warm set for some values + Console.WriteLine( "WARM" ); + for ( int i = 23; i <= 38; i++ ) + Console.WriteLine( fsWarm.GetMembership( i ) ); + + + + + + + Initializes a new instance of the class. + + + Name of the fuzzy set. + Membership function that will define the shape of the fuzzy set. + + + + + Calculate membership of a given value to the fuzzy set. + + + Value which membership needs to be calculated. + + Degree of membership [0..1] of the value to the fuzzy set. + + + + + Name of the fuzzy set. + + + + + The leftmost x value of the fuzzy set's membership function. + + + + + + The rightmost x value of the fuzzy set's membership function. + + + + + + Membership function composed by several connected linear functions. + + + The piecewise linear is a generic function used by many specific fuzzy membership + functions, like the trappezoidal function. This class must + be instantiated with a sequence of points representing the edges of each one of the lines composing the + piecewise function. + + The x-axis points must be ordered (crescent), so the function will use each X value + as an ending point for one line and starting point of the next. + + While trapezoidal and half trapezoidal are classic functions used in fuzzy functions, this class supports any function + or approximation that can be represented as a sequence of lines. + + Sample usage: + + // creating an array of points representing a typical trapezoidal function /-\ + Point [] points = new Point[4]; + // point where membership starts to rise + points[0] = new Point( 10, 0 ); + // maximum membership (1) reached at the second point + points[1] = new Point( 20, 1 ); + // membership starts to fall at the third point + points[2] = new Point( 30, 1 ); + // membership gets to zero at the last point + points[3] = new Point( 40, 0 ); + // creating the instance + PiecewiseLinearFunction membershipFunction = new PiecewiseLinearFunction( points ); + // getting membership for several points + for ( int i = 5; i < 45; i++ ) + Console.WriteLine( membershipFunction.GetMembership( i ) ); + + + + + + + Vector of (X,Y) coordinates for end/start of each line. + + + + + Initializes a new instance of the class. + + + This constructor must be used only by inherited classes to create the + points vector after the instantiation. + + + + + Initializes a new instance of the class. + + + Array of (X,Y) coordinates of each start/end of the lines. + + Specified point must be in crescent order on X axis and their Y value + must be in the range of [0, 1]. + + Points must be in crescent order on X axis. + Y value of points must be in the range of [0, 1]. + + + + + Calculate membership of a given value to the piecewise function. + + + Value which membership will to be calculated. + + Degree of membership [0..1] of the value to the fuzzy set. + + Points of the membership function are not initialized. + + + + + The leftmost x value of the membership function, given by the first (X,Y) coordinate. + + + Points of the membership function are not initialized. + + + + + The rightmost x value of the membership function, given by the last (X,Y) coordinate. + + + Points of the membership function are not initialized. + + + + + Membership function in the shape of a trapezoid. Can be a half trapzoid if the left or the right side is missing. + + + Since the can represent any piece wise linear + function, it can represent trapezoids too. But as trapezoids are largely used in the creation of + Linguistic Variables, this class simplifies the creation of them. + + Sample usage: + + // creating a typical triangular fuzzy set /\ + TrapezoidalFunction function1 = new TrapezoidalFunction( 10, 20, 30 ); + // creating a right fuzzy set, the rigth side of the set is fuzzy but the left is opened + TrapezoidalFunction function2 = new TrapezoidalFunction( 10, 20, 30, TrapezoidalFunction.EdgeType.Right ); + + + + + + + A private constructor used only to reuse code inside of this default constructor. + + + Size of points vector to create. This size depends of the shape of the + trapezoid. + + + + + Initializes a new instance of the class. + + With four points the shape is known as flat fuzzy number or fuzzy interval (/--\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value. + X value where the degree of membership starts to fall. + X value where the degree of membership reaches the minimum value. + The maximum value that the membership will reach, [0, 1]. + The minimum value that the membership will reach, [0, 1]. + + + + + Initializes a new instance of the class. + + With four points the shape is known as flat fuzzy number or fuzzy interval (/--\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value. + X value where the degree of membership starts to fall. + X value where the degree of membership reaches the minimum value. + + + Maximum membership value is set to 1.0 and the minimum is set to 0.0. + + + + + + Initializes a new instance of the class. + + With three points the shape is known as triangular fuzzy number or just fuzzy number (/\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value and starts to fall. + X value where the degree of membership reaches the minimum value. + The maximum value that the membership will reach, [0, 1]. + The minimum value that the membership will reach, [0, 1]. + + + + + Initializes a new instance of the class. + + With three points the shape is known as triangular fuzzy number or just fuzzy number (/\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value and starts to fall. + X value where the degree of membership reaches the minimum value. + + + Maximum membership value is set to 1.0 and the minimum is set to 0.0. + + + + + + Initializes a new instance of the class. + + With two points and an edge this shape can be a left fuzzy number (/) or a right fuzzy number (\). + + + Edge = Left: X value where the degree of membership starts to raise. + Edge = Right: X value where the function starts, with maximum degree of membership. + Edge = Left: X value where the degree of membership reaches the maximum. + Edge = Right: X value where the degree of membership reaches minimum value. + The maximum value that the membership will reach, [0, 1]. + The minimum value that the membership will reach, [0, 1]. + Trapezoid's . + + + + + Initializes a new instance of the class. + + With three points and an edge this shape can be a left fuzzy number (/--) or a right fuzzy number (--\). + + + Edge = Left: X value where the degree of membership starts to raise. + Edge = Right: X value where the function starts, with maximum degree of membership. + Edge = Left: X value where the degree of membership reaches the maximum. + Edge = Right: X value where the degree of membership reaches minimum value. + Trapezoid's . + + + Maximum membership value is set to 1.0 and the minimum is set to 0.0. + + + + + + Enumeration used to create trapezoidal membership functions with half trapezoids. + + + If the value is Left, the trapezoid has the left edge, but right + is open (/--). If the value is Right, the trapezoid has the right edge, but left + is open (--\). + + + + + The fuzzy side of the trapezoid is at the left side. + + + + + The fuzzy side of the trapezoid is at the right side. + + + + + Product Norm, used to calculate the linguistic value of a AND operation. + + + The product Norm uses a multiplication operator to compute the + AND among two fuzzy memberships. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool (Temperature) and Near (Distance) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsNear = new FuzzySet( "Near", function2 ); + + // getting memberships + float m1 = fsCool.GetMembership( 15 ); + float m2 = fsNear.GetMembership( 35 ); + + // computing the membership of "Cool AND Near" + ProductNorm AND = new ProductNorm( ); + float result = AND.Evaluate( m1, m2 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Interface with the common methods of a Fuzzy Norm. + + + All fuzzy operators that act as a Norm must implement this interface. + + + + + + Calculates the numerical result of a Norm (AND) operation applied to + two fuzzy membership values. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result the operation AND applied to + and . + + + + + Calculates the numerical result of the AND operation applied to + two fuzzy membership values using the product rule. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result of the AND operation applied to + and . + + + + + Minimum Norm, used to calculate the linguistic value of a AND operation. + + + The minimum Norm uses a minimum operator to compute the AND + among two fuzzy memberships. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool (Temperature) and Near (Distance) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsNear = new FuzzySet( "Near", function2 ); + + // getting memberships + float m1 = fsCool.GetMembership( 15 ); + float m2 = fsNear.GetMembership( 35 ); + + // computing the membership of "Cool AND Near" + MinimumNorm AND = new MinimumNorm( ); + float result = AND.Evaluate( m1, m2 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Calculates the numerical result of the AND operation applied to + two fuzzy membership values using the minimum rule. + + + A fuzzy membership value, [0..1]. + + A fuzzy membership value, [0..1]. + + The numerical result of the AND operation applied to + and . + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net45/Accord.Fuzzy.dll b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net45/Accord.Fuzzy.dll new file mode 100644 index 0000000000..94b2f24de Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net45/Accord.Fuzzy.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net45/Accord.Fuzzy.xml b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net45/Accord.Fuzzy.xml new file mode 100644 index 0000000000..e6ce116ba --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Fuzzy.3.0.2/lib/net45/Accord.Fuzzy.xml @@ -0,0 +1,1559 @@ + + + + Accord.Fuzzy + + + + + This class represents a fuzzy clause, a linguistic expression of the type "Variable IS Value". + + + A Fuzzy Clause is used to verify if a linguistic variable can be considered + as a specific value at a specific moment. Linguistic variables can only assume value of + their linguistic labels. Because of the nature of the Fuzzy Logic, a Variable can be + several of its labels at the same time, with different membership values. + + For example, a linguistic variable "temperature" can be "hot" with a membership 0.3 + and "warm" with a membership 0.7 at the same time. To obtain those memberships, Fuzzy Clauses + "temperature is hot" and "temperature is war" can be built. + + Typically Fuzzy Clauses are used to build Fuzzy Rules (). + + Sample usage: + + // create a linguistic variable to represent temperature + LinguisticVariable lvTemperature = new LinguisticVariable("Temperature", 0, 80 ); + + // create the linguistic labels (fuzzy sets) that compose the temperature + TrapezoidalFunction function1 = new TrapezoidalFunction(10, 15, TrapezoidalFunction.EdgeType.Right); + FuzzySet fsCold = new FuzzySet("Cold", function1); + TrapezoidalFunction function2 = new TrapezoidalFunction(10, 15, 20, 25); + FuzzySet fsCool = new FuzzySet("Cool", function2); + TrapezoidalFunction function3 = new TrapezoidalFunction(20, 25, 30, 35); + FuzzySet fsWarm = new FuzzySet("Warm", function3); + TrapezoidalFunction function4 = new TrapezoidalFunction(30, 35, TrapezoidalFunction.EdgeType.Left); + FuzzySet fsHot = new FuzzySet("Hot", function4); + + // adding labels to the variable + lvTemperature.AddLabel(fsCold); + lvTemperature.AddLabel(fsCool); + lvTemperature.AddLabel(fsWarm); + lvTemperature.AddLabel(fsHot); + + // creating the Clause + Clause fuzzyClause = new Clause(lvTemperature, fsHot); + // setting the numerical input of the variable to evaluate the Clause + lvTemperature.NumericInput = 35; + float result = fuzzyClause.Evaluate(); + Console.WriteLine(result.ToString()); + + + + + + + Initializes a new instance of the class. + + + Linguistic variable of the clause. + + Label of the linguistic variable, a fuzzy set used as label into the linguistic variable. + + The label indicated was not found in the linguistic variable. + + + + + Evaluates the fuzzy clause. + + + Degree of membership [0..1] of the clause. + + + + + Returns the fuzzy clause in its linguistic representation. + + + A string representing the fuzzy clause. + + + + + Gets the of the . + + + + + Gets the of the . + + + + + This class implements the centroid defuzzification method. + + + In many applications, a Fuzzy Inference System is used to perform linguistic + computation, but at the end of the inference process, a numerical value is needed. It does + not mean that the system needs precision, but simply that a numerical value is required, + most of the times because it will be used to control another system that needs the number. + To obtain this numer, a defuzzification method is performed. + + This class implements the centroid defuzzification method. The output of a Fuzzy + Inference System is a set of rules (see ) with firing strength greater + than zero. Those firing strength apply a constraint to the consequent fuzzy sets + (see ) of the rules. Putting all those fuzzy sets togheter results + in a a shape that is the linguistic output meaning. + + + The centroid method calculates the center of the area of this shape to obtain the + numerical representation of the output. It uses a numerical approximation, so a number + of intervals must be choosen. As the number of intervals grow, the precision of the + numerical ouput grows. + + + For a sample usage of the see + class. + + + + + + Interface which specifies set of methods required to be implemented by all defuzzification methods + that can be used in Fuzzy Inference Systems. + + + In many applications, a Fuzzy Inference System is used to perform linguistic computation, + but at the end of the inference process, a numerical value is needed. It does not mean that the system + needs precision, but simply that a numerical value is required, most of the times because it will be used to + control another system that needs the number. To obtain this numer, a defuzzification method is performed. + + Several deffuzification methods were proposed, and they can be created as classes that + implements this interface. + + + + + Defuzzification method to obtain the numerical representation of a fuzzy output. + + + A containing the output of + several rules of a Fuzzy Inference System. + A operator to be used when constraining + the label to the firing strength. + + The numerical representation of the fuzzy output. + + + + + Initializes a new instance of the class. + + + Number of segments that the speech universe will be splited + to perform the numerical approximation of the center of area. + + + + + Centroid method to obtain the numerical representation of a fuzzy output. The numerical + value will be the center of the shape formed by the several fuzzy labels with their + constraints. + + + A containing the output of several + rules of a Fuzzy Inference System. + A operator to be used when constraining + the label to the firing strength. + + The numerical representation of the fuzzy output. + + The numerical output is unavaliable. All memberships are zero. + + + + + The class represents the output of a Fuzzy Inference System. + + + The class keeps set of rule's output - pairs with the output fuzzy label + and the rule's firing strength. + + + + Sample usage: + + // linguistic labels (fuzzy sets) that compose the distances + FuzzySet fsNear = new FuzzySet( "Near", + new TrapezoidalFunction( 15, 50, TrapezoidalFunction.EdgeType.Right ) ); + FuzzySet fsMedium = new FuzzySet( "Medium", + new TrapezoidalFunction( 15, 50, 60, 100 ) ); + FuzzySet fsFar = new FuzzySet( "Far", + new TrapezoidalFunction( 60, 100, TrapezoidalFunction.EdgeType.Left ) ); + + // front distance (input) + LinguisticVariable lvFront = new LinguisticVariable( "FrontalDistance", 0, 120 ); + lvFront.AddLabel( fsNear ); + lvFront.AddLabel( fsMedium ); + lvFront.AddLabel( fsFar ); + + // linguistic labels (fuzzy sets) that compose the angle + FuzzySet fsZero = new FuzzySet( "Zero", + new TrapezoidalFunction( -10, 5, 5, 10 ) ); + FuzzySet fsLP = new FuzzySet( "LittlePositive", + new TrapezoidalFunction( 5, 10, 20, 25 ) ); + FuzzySet fsP = new FuzzySet( "Positive", + new TrapezoidalFunction( 20, 25, 35, 40 ) ); + FuzzySet fsVP = new FuzzySet( "VeryPositive", + new TrapezoidalFunction( 35, 40, TrapezoidalFunction.EdgeType.Left ) ); + + // angle + LinguisticVariable lvAngle = new LinguisticVariable( "Angle", -10, 50 ); + lvAngle.AddLabel( fsZero ); + lvAngle.AddLabel( fsLP ); + lvAngle.AddLabel( fsP ); + lvAngle.AddLabel( fsVP ); + + // the database + Database fuzzyDB = new Database( ); + fuzzyDB.AddVariable( lvFront ); + fuzzyDB.AddVariable( lvAngle ); + + // creating the inference system + InferenceSystem IS = new InferenceSystem( fuzzyDB, new CentroidDefuzzifier( 1000 ) ); + + // going straight + IS.NewRule( "Rule 1", "IF FrontalDistance IS Far THEN Angle IS Zero" ); + // turning left + IS.NewRule( "Rule 2", "IF FrontalDistance IS Near THEN Angle IS Positive" ); + + ... + // inference section + + // setting inputs + IS.SetInput( "FrontalDistance", 20 ); + + // getting outputs + try + { + FuzzyOutput fuzzyOutput = IS.ExecuteInference ( "Angle" ); + + // showing the fuzzy output + foreach ( FuzzyOutput.OutputConstraint oc in fuzzyOutput.OutputList ) + { + Console.WriteLine( oc.Label + " - " + oc.FiringStrength.ToString( ) ); + } + } + catch ( Exception ) + { + ... + } + + + + + + + Initializes a new instance of the class. + + + A representing a Fuzzy Inference System's output. + + + + + Adds an output to the Fuzzy Output. + + + The name of a label representing a fuzzy rule's output. + The firing strength [0..1] of a fuzzy rule. + + The label indicated was not found in the linguistic variable. + + + + + Removes all the linguistic variables of the database. + + + + + + A list with of a Fuzzy Inference System's output. + + + + + + Gets the acting as a Fuzzy Inference System Output. + + + + + + Inner class to store the pair fuzzy label / firing strength of + a fuzzy output. + + + + + Initializes a new instance of the class. + + + A string representing the output label of a . + The firing strength of a , to be applied to its output label. + + + + + The representing the output label of a . + + + + + + The firing strength of a , to be applied to its output label. + + + + + + This class represents a Fuzzy Inference System. + + + A Fuzzy Inference System is a model capable of executing fuzzy computing. + It is mainly composed by a with the linguistic variables + (see ) and a + with the fuzzy rules (see ) that represent the behavior of the system. + The typical operation of a Fuzzy Inference System is: + + Get the numeric inputs; + Use the with the linguistic variables + (see ) to obtain linguistic meaning for each + numerical input; + Verify which rules (see ) of the are + activated by the input; + Combine the consequent of the activated rules to obtain a ; + Use some defuzzifier (see ) to obtain a numerical output. + + + + The following sample usage is a Fuzzy Inference System that controls an + auto guided vehicle avoing frontal collisions: + + // linguistic labels (fuzzy sets) that compose the distances + FuzzySet fsNear = new FuzzySet( "Near", + new TrapezoidalFunction( 15, 50, TrapezoidalFunction.EdgeType.Right ) ); + FuzzySet fsMedium = new FuzzySet( "Medium", + new TrapezoidalFunction( 15, 50, 60, 100 ) ); + FuzzySet fsFar = new FuzzySet( "Far", + new TrapezoidalFunction( 60, 100, TrapezoidalFunction.EdgeType.Left ) ); + + // front distance (input) + LinguisticVariable lvFront = new LinguisticVariable( "FrontalDistance", 0, 120 ); + lvFront.AddLabel( fsNear ); + lvFront.AddLabel( fsMedium ); + lvFront.AddLabel( fsFar ); + + // linguistic labels (fuzzy sets) that compose the angle + FuzzySet fsZero = new FuzzySet( "Zero", + new TrapezoidalFunction( -10, 5, 5, 10 ) ); + FuzzySet fsLP = new FuzzySet( "LittlePositive", + new TrapezoidalFunction( 5, 10, 20, 25 ) ); + FuzzySet fsP = new FuzzySet( "Positive", + new TrapezoidalFunction( 20, 25, 35, 40 ) ); + FuzzySet fsVP = new FuzzySet( "VeryPositive", + new TrapezoidalFunction( 35, 40, TrapezoidalFunction.EdgeType.Left ) ); + + // angle + LinguisticVariable lvAngle = new LinguisticVariable( "Angle", -10, 50 ); + lvAngle.AddLabel( fsZero ); + lvAngle.AddLabel( fsLP ); + lvAngle.AddLabel( fsP ); + lvAngle.AddLabel( fsVP ); + + // the database + Database fuzzyDB = new Database( ); + fuzzyDB.AddVariable( lvFront ); + fuzzyDB.AddVariable( lvAngle ); + + // creating the inference system + InferenceSystem IS = new InferenceSystem( fuzzyDB, new CentroidDefuzzifier( 1000 ) ); + + // going Straight + IS.NewRule( "Rule 1", "IF FrontalDistance IS Far THEN Angle IS Zero" ); + // Turning Left + IS.NewRule( "Rule 2", "IF FrontalDistance IS Near THEN Angle IS Positive" ); + + ... + // inference section + + // setting inputs + IS.SetInput( "FrontalDistance", 20 ); + + // getting outputs + try + { + float newAngle = IS.Evaluate( "Angle" ); + } + catch ( Exception ) + { + ... + } + + + + + + + Initializes a new Fuzzy . + + + A fuzzy containing the system linguistic variables. + A defuzzyfier method used to evaluate the numeric uotput of the system. + + + + + Initializes a new Fuzzy . + + + A fuzzy containing the system linguistic + variables. + A defuzzyfier method used to evaluate the numeric otput + of the system. + A operator used to evaluate the norms + in the . For more information of the norm evaluation see . + A operator used to evaluate the + conorms in the . For more information of the conorm evaluation see . + + + + + Creates a new and add it to the of the + . + + + Name of the to create. + A string representing the fuzzy rule. + + The new reference. + + + + + Sets a numerical input for one of the linguistic variables of the . + + + Name of the . + Numeric value to be used as input. + + The variable indicated in + was not found in the database. + + + + + Gets one of the of the . + + + Name of the to get. + + The variable indicated in + was not found in the database. + + + + + Gets one of the Rules of the . + + + Name of the to get. + + The rule indicated in + was not found in the rulebase. + + + + + Executes the fuzzy inference, obtaining a numerical output for a choosen output + linguistic variable. + + + Name of the to evaluate. + + The numerical output of the Fuzzy Inference System for the choosen variable. + + The variable indicated was not found in the database. + + + + + Executes the fuzzy inference, obtaining the of the system for the required + . + + + Name of the to evaluate. + + A containing the fuzzy output of the system for the + specified in . + + The variable indicated was not found in the database. + + + + + Membership function used in fuzzy singletons: fuzzy sets that have just one point with membership value 1. + + + Sometimes it is needed to represent crisp (classical) number in the fuzzy domain. Several approaches + can be used, like adding some uncertain (fuzziness) in the original number (the number one, for instance, can be seen as a + with -0.5, 1.0 and 0.5 parameters). Another approach is to declare fuzzy singletons: fuzzy sets with only one point returning a none zero membership. + + While trapezoidal and half trapezoidal are classic functions used in fuzzy functions, this class supports any function + or approximation that can be represented as a sequence of lines. + + Sample usage: + + // creating the instance + SingletonFunction membershipFunction = new SingletonFunction( 10 ); + // getting membership for several points + for ( int i = 0; i < 20; i++ ) + Console.WriteLine( membershipFunction.GetMembership( i ) ); + + + + + + + Interface which specifies set of methods required to be implemented by all membership + functions. + + + All membership functions must implement this interface, which is used by + class to calculate value's membership to a particular fuzzy set. + + + + + + Calculate membership of a given value to the fuzzy set. + + + Value which membership will to be calculated. + + Degree of membership [0..1] of the value to the fuzzy set. + + + + + The leftmost x value of the membership function. + + + + + The rightmost x value of the membership function. + + + + + The unique point where the membership value is 1. + + + + + Initializes a new instance of the class. + + + Support is the only value of x where the membership function is 1. + + + + + Calculate membership of a given value to the singleton function. + + + Value which membership will to be calculated. + + Degree of membership {0,1} since singletons do not admit memberships different from 0 and 1. + + + + + The leftmost x value of the membership function, the same value of the support. + + + + + + The rightmost x value of the membership function, the same value of the support. + + + + + + NOT operator, used to calculate the complement of a fuzzy set. + + + The NOT operator definition is (1 - m) for all the values of membership m of the fuzzy set. + + Sample usage: + + // creating a fuzzy sets to represent Cool (Temperature) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + + // getting membership + float m1 = fsCool.GetMembership( 15 ); + + // computing the membership of "NOT Cool" + NotOperator NOT = new NotOperator( ); + float result = NOT.Evaluate( m1 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Interface with the common methods of Fuzzy Unary Operator. + + + All fuzzy operators that act as a Unary Operator (NOT, VERY, LITTLE) must implement this interface. + + + + + + Calculates the numerical result of a Unary operation applied to one + fuzzy membership value. + + + A fuzzy membership value, [0..1]. + + The numerical result of the operation applied to . + + + + + Calculates the numerical result of the NOT operation applied to + a fuzzy membership value. + + + A fuzzy membership value, [0..1]. + + The numerical result of the unary operation NOT applied to . + + + + + The class represents a fuzzy rulebase, a set of fuzzy rules used in a Fuzzy Inference System. + + + + + + Initializes a new instance of the class. + + + + + + Adds a fuzzy rule to the database. + + + A fuzzy to add to the database. + + The fuzzy rule was not initialized. + The fuzzy rule name already exists in the rulebase. + + + + + Removes all the fuzzy rules of the database. + + + + + + Returns an existing fuzzy rule from the rulebase. + + + Name of the fuzzy to retrieve. + + Reference to named . + + The rule indicated in ruleName was not found in the rulebase. + + + + + Gets all the rules of the rulebase. + + + An array with all the rulebase rules. + + + + + The class represents a fuzzy database, a set of linguistic variables used in a Fuzzy + Inference System. + + + + + + Initializes a new instance of the class. + + + + + + Adds a linguistic variable to the database. + + + A linguistic variable to add. + + The linguistic variable was not initialized. + The linguistic variable name already exists in the database. + + + + + Removes all the linguistic variables of the database. + + + + + + Returns an existing linguistic variable from the database. + + + Name of the linguistic variable to retrieve. + + Reference to named . + + The variable indicated was not found in the database. + + + + + Maximum CoNorm, used to calculate the linguistic value of a OR operation. + + + The maximum CoNorm uses a maximum operator to compute the OR + among two fuzzy memberships. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool (Temperature) and Near (Distance) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsNear = new FuzzySet( "Near", function2 ); + + // getting memberships + float m1 = fsCool.GetMembership( 15 ); + float m2 = fsNear.GetMembership( 35 ); + + // computing the membership of "Cool OR Near" + MaximumCoNorm OR = new MaximumCoNorm( ); + float result = OR.Evaluate( m1, m2 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Interface with the common methods of a Fuzzy CoNorm. + + + All fuzzy operators that act as a CoNorm must implement this interface. + + + + + + Calculates the numerical result of a CoNorm (OR) operation applied to + two fuzzy membership values. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result the operation OR applied to + and . + + + + + Calculates the numerical result of the OR operation applied to + two fuzzy membership values. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result of the binary operation OR applied to + and . + + + + + This class represents a Fuzzy Rule, a linguistic expression representing some behavioral + aspect of a Fuzzy Inference System. + + + + A Fuzzy Rule is a fuzzy linguistic instruction that can be executed by a fuzzy system. + The format of the Fuzzy Rule is: + + + IF antecedent THEN consequent + + The antecedent is composed by a set of fuzzy clauses (see ) connected + by fuzzy operations, like AND or OR. The operator NOT can be used to negate expressions: + + ...Clause1 AND (Clause2 OR Clause3) AND NOT Clause4 ... + + Fuzzy clauses are written in form Variable IS Value. The NOT operator can be used to negate linguistic values as well:
+ ...Variable1 IS Value1 AND Variable2 IS NOT Value2 ...
+ + The consequent is a single of fuzzy clauses (). To perform the + linguistic computing, the evaluates the clauses and then applies the fuzzy + operators. Once this is done a value representing the confidence in the antecedent being + true is obtained, and this is called firing strength of the . + + The firing strength is used to discover with how much confidence the consequent + of a rule is true. + + Sample usage: + + // create the linguistic labels (fuzzy sets) that compose the temperature + TrapezoidalFunction function1 = new TrapezoidalFunction( + 10, 15, TrapezoidalFunction.EdgeType.Right ); + FuzzySet fsCold = new FuzzySet( "Cold", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 10, 15, 20, 25 ); + FuzzySet fsCool = new FuzzySet( "Cool", function2 ); + TrapezoidalFunction function3 = new TrapezoidalFunction( 20, 25, 30, 35 ); + FuzzySet fsWarm = new FuzzySet( "Warm", function3 ); + TrapezoidalFunction function4 = new TrapezoidalFunction( + 30, 35, TrapezoidalFunction.EdgeType.Left ); + FuzzySet fsHot = new FuzzySet( "Hot", function4 ); + + // create a linguistic variable to represent steel temperature + LinguisticVariable lvSteel = new LinguisticVariable( "Steel", 0, 80 ); + // adding labels to the variable + lvSteel.AddLabel( fsCold ); + lvSteel.AddLabel( fsCool ); + lvSteel.AddLabel( fsWarm ); + lvSteel.AddLabel( fsHot ); + + // create a linguistic variable to represent stove temperature + LinguisticVariable lvStove = new LinguisticVariable( "Stove", 0, 80 ); + // adding labels to the variable + lvStove.AddLabel( fsCold ); + lvStove.AddLabel( fsCool ); + lvStove.AddLabel( fsWarm ); + lvStove.AddLabel( fsHot ); + + // create the linguistic labels (fuzzy sets) that compose the pressure + TrapezoidalFunction function5 = new TrapezoidalFunction( + 20, 40, TrapezoidalFunction.EdgeType.Right ); + FuzzySet fsLow = new FuzzySet( "Low", function5 ); + TrapezoidalFunction function6 = new TrapezoidalFunction( 20, 40, 60, 80 ); + FuzzySet fsMedium = new FuzzySet( "Medium", function6 ); + TrapezoidalFunction function7 = new TrapezoidalFunction( + 60, 80, TrapezoidalFunction.EdgeType.Left ); + FuzzySet fsHigh = new FuzzySet( "High", function7 ); + // create a linguistic variable to represent pressure + LinguisticVariable lvPressure = new LinguisticVariable( "Pressure", 0, 100 ); + // adding labels to the variable + lvPressure.AddLabel( fsLow ); + lvPressure.AddLabel( fsMedium ); + lvPressure.AddLabel( fsHigh ); + + // create a linguistic variable database + Database db = new Database( ); + db.AddVariable( lvSteel ); + db.AddVariable( lvStove ); + db.AddVariable( lvPressure ); + + // sample rules just to test the expression parsing + Rule r1 = new Rule( db, "Test1", "IF Steel is not Cold and Stove is Hot then Pressure is Low" ); + Rule r2 = new Rule( db, "Test2", "IF Steel is Cold and not (Stove is Warm or Stove is Hot) then Pressure is Medium" ); + Rule r3 = new Rule( db, "Test3", "IF Steel is Cold and Stove is Warm or Stove is Hot then Pressure is High" ); + + // testing the firing strength + lvSteel.NumericInput = 12; + lvStove.NumericInput = 35; + float result = r1.EvaluateFiringStrength( ); + Console.WriteLine( result.ToString( ) ); + +
+ +
+ + + Initializes a new instance of the class. + + + A fuzzy containig the linguistic variables + (see ) that will be used in the Rule. + + Name of this . + + A string representing the . It must be a "IF..THEN" statement. + For a more detailed description see class. + + A class that implements a interface to + evaluate the AND operations of the Rule. + + A class that implements a interface + to evaluate the OR operations of the Rule. + + + + + Initializes a new instance of the class using as + CoNorm the and as Norm the . + + + A fuzzy containig the linguistic variables + (see ) that will be used in the . + + Name of this . + + A string representing the . It must be a "IF..THEN" + statement. For a more detailed description see class. + + + + + Converts the RPN fuzzy expression into a string representation. + + + String representation of the RPN fuzzy expression. + + + + + Defines the priority of the fuzzy operators. + + + A fuzzy operator or openning parenthesis. + + A number indicating the priority of the operator, and zero for openning + parenthesis. + + + + + Converts the Fuzzy Rule to RPN (Reverse Polish Notation). For debug proposes, the string representation of the + RPN expression can be acessed by calling method. + + + + + + Performs a preprocessing on the rule, placing unary operators in proper position and breaking the string + space separated tokens. + + + Rule in string format. + + An array of strings with tokens of the rule. + + + + + Evaluates the firing strength of the Rule, the degree of confidence that the consequent of this Rule + must be executed. + + + The firing strength [0..1] of the Rule. + + + + + The name of the fuzzy rule. + + + + + + The fuzzy that represents the consequent of the . + + + + + + The class represents a linguistic variable. + + + Linguistic variables are variables that store linguistic values (labels). Fuzzy Inference Systems (FIS) + use a set of linguistic variables, called the FIS database, to execute fuzzy computation (computing with words). A linguistic + variable has a name and is composed by a set of called its linguistic labels. When declaring fuzzy + statements in a FIS, a linguistic variable can be only assigned or compared to one of its labels. + + Let us consider, for example, a linguistic variable temperature. In a given application, temperature can be + cold, cool, warm or hot. Those will be the variable's linguistic labels, each one a fuzzy set with its own membership + function. Ideally, the labels will represent concepts related to the variable's meaning. Futhermore, fuzzy statements like + "temperature is warm" or "temperature is not cold" can be used to build a Fuzzy Inference Systems. + + + Sample usage: + + // create a linguistic variable to represent temperature + LinguisticVariable lvTemperature = new LinguisticVariable( "Temperature", 0, 80 ); + + // create the linguistic labels (fuzzy sets) that compose the temperature + TrapezoidalFunction function1 = new TrapezoidalFunction( 10, 15, TrapezoidalFunction.EdgeType.Right ); + FuzzySet fsCold = new FuzzySet( "Cold", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 10, 15, 20, 25 ); + FuzzySet fsCool = new FuzzySet( "Cool", function2 ); + TrapezoidalFunction function3 = new TrapezoidalFunction( 20, 25, 30, 35 ); + FuzzySet fsWarm = new FuzzySet( "Warm", function3 ); + TrapezoidalFunction function4 = new TrapezoidalFunction( 30, 35, TrapezoidalFunction.EdgeType.Left ); + FuzzySet fsHot = new FuzzySet( "Hot" , function4 ); + + // adding labels to the variable + lvTemperature.AddLabel( fsCold ); + lvTemperature.AddLabel( fsCool ); + lvTemperature.AddLabel( fsWarm ); + lvTemperature.AddLabel( fsHot ); + + // showing the shape of the linguistic variable - the shape of its labels memberships from start to end + Console.WriteLine( "Cold; Cool; Warm; Hot" ); + for ( float x = 0; x < 80; x += 0.2 ) + { + float y1 = lvTemperature.GetLabelMembership( "Cold", x ); + float y2 = lvTemperature.GetLabelMembership( "Cool", x ); + float y3 = lvTemperature.GetLabelMembership( "Warm", x ); + float y4 = lvTemperature.GetLabelMembership( "Hot" , x ); + + Console.WriteLine( String.Format( "{0:N}; {1:N}; {2:N}; {3:N}", y1, y2, y3, y4 ) ); + } + + + + + + + Initializes a new instance of the class. + + + Name of the linguistic variable. + + Left limit of the valid variable range. + + Right limit of the valid variable range. + + + + + Adds a linguistic label to the variable. + + + A that will be a linguistic label of the linguistic variable. + + Linguistic labels are fuzzy sets (). Each + label of the variable must have a unique name. The range of the label + (left and right limits) cannot be greater than + the linguistic variable range (start/end). + + The fuzzy set was not initialized. + The linguistic label name already exists in the linguistic variable. + The left limit of the fuzzy set can not be lower than the linguistic variable's starting point. + "The right limit of the fuzzy set can not be greater than the linguistic variable's ending point." + + + + + Removes all the linguistic labels of the linguistic variable. + + + + + + Returns an existing label from the linguistic variable. + + + Name of the label to retrieve. + + Reference to named label (). + + The label indicated was not found in the linguistic variable. + + + + + Calculate the membership of a given value to a given label. Used to evaluate linguistics clauses like + "X IS A", where X is a value and A is a linguistic label. + + + Label (fuzzy set) to evaluate value's membership. + Value which label's membership will to be calculated. + + Degree of membership [0..1] of the value to the label (fuzzy set). + + The label indicated in labelName was not found in the linguistic variable. + + + + + Numerical value of the input of this linguistic variable. + + + + + Name of the linguistic variable. + + + + + Left limit of the valid variable range. + + + + + Right limit of the valid variable range. + + + + + The class represents a fuzzy set. + + + The fuzzy sets are the base for all fuzzy applications. In a classical set, the membership of + a given value to the set can always be defined as true (1) or false (0). In fuzzy sets, this membership can be + a value in the range [0..1], representing the imprecision existent in many real world applications. + + Let us consider, for example, fuzzy sets representing some temperature. In a given application, there is the + need to represent a cool and warm temperature. Like in real life, the precise point when the temperature changes from + cool to warm is not easy to find, and does not makes sense. If we consider the cool around 20 degrees and warm around + 30 degrees, it is not simple to find a break point. If we take the mean, we can consider values greater than or equal + 25 to be warm. But we can still consider 25 a bit cool. And a bit warm at the same time. This is where fuzzy sets can + help. + + Fuzzy sets are often used to compose Linguistic Variables, used in Fuzzy Inference Systems. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool and Warm + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsWarm = new FuzzySet( "Warm", function2 ); + + // show membership to the Cool set for some values + Console.WriteLine( "COOL" ); + for ( int i = 13; i <= 28; i++ ) + Console.WriteLine( fsCool.GetMembership( i ) ); + + // show membership to the Warm set for some values + Console.WriteLine( "WARM" ); + for ( int i = 23; i <= 38; i++ ) + Console.WriteLine( fsWarm.GetMembership( i ) ); + + + + + + + Initializes a new instance of the class. + + + Name of the fuzzy set. + Membership function that will define the shape of the fuzzy set. + + + + + Calculate membership of a given value to the fuzzy set. + + + Value which membership needs to be calculated. + + Degree of membership [0..1] of the value to the fuzzy set. + + + + + Name of the fuzzy set. + + + + + The leftmost x value of the fuzzy set's membership function. + + + + + + The rightmost x value of the fuzzy set's membership function. + + + + + + Membership function composed by several connected linear functions. + + + The piecewise linear is a generic function used by many specific fuzzy membership + functions, like the trappezoidal function. This class must + be instantiated with a sequence of points representing the edges of each one of the lines composing the + piecewise function. + + The x-axis points must be ordered (crescent), so the function will use each X value + as an ending point for one line and starting point of the next. + + While trapezoidal and half trapezoidal are classic functions used in fuzzy functions, this class supports any function + or approximation that can be represented as a sequence of lines. + + Sample usage: + + // creating an array of points representing a typical trapezoidal function /-\ + Point [] points = new Point[4]; + // point where membership starts to rise + points[0] = new Point( 10, 0 ); + // maximum membership (1) reached at the second point + points[1] = new Point( 20, 1 ); + // membership starts to fall at the third point + points[2] = new Point( 30, 1 ); + // membership gets to zero at the last point + points[3] = new Point( 40, 0 ); + // creating the instance + PiecewiseLinearFunction membershipFunction = new PiecewiseLinearFunction( points ); + // getting membership for several points + for ( int i = 5; i < 45; i++ ) + Console.WriteLine( membershipFunction.GetMembership( i ) ); + + + + + + + Vector of (X,Y) coordinates for end/start of each line. + + + + + Initializes a new instance of the class. + + + This constructor must be used only by inherited classes to create the + points vector after the instantiation. + + + + + Initializes a new instance of the class. + + + Array of (X,Y) coordinates of each start/end of the lines. + + Specified point must be in crescent order on X axis and their Y value + must be in the range of [0, 1]. + + Points must be in crescent order on X axis. + Y value of points must be in the range of [0, 1]. + + + + + Calculate membership of a given value to the piecewise function. + + + Value which membership will to be calculated. + + Degree of membership [0..1] of the value to the fuzzy set. + + Points of the membership function are not initialized. + + + + + The leftmost x value of the membership function, given by the first (X,Y) coordinate. + + + Points of the membership function are not initialized. + + + + + The rightmost x value of the membership function, given by the last (X,Y) coordinate. + + + Points of the membership function are not initialized. + + + + + Membership function in the shape of a trapezoid. Can be a half trapzoid if the left or the right side is missing. + + + Since the can represent any piece wise linear + function, it can represent trapezoids too. But as trapezoids are largely used in the creation of + Linguistic Variables, this class simplifies the creation of them. + + Sample usage: + + // creating a typical triangular fuzzy set /\ + TrapezoidalFunction function1 = new TrapezoidalFunction( 10, 20, 30 ); + // creating a right fuzzy set, the rigth side of the set is fuzzy but the left is opened + TrapezoidalFunction function2 = new TrapezoidalFunction( 10, 20, 30, TrapezoidalFunction.EdgeType.Right ); + + + + + + + A private constructor used only to reuse code inside of this default constructor. + + + Size of points vector to create. This size depends of the shape of the + trapezoid. + + + + + Initializes a new instance of the class. + + With four points the shape is known as flat fuzzy number or fuzzy interval (/--\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value. + X value where the degree of membership starts to fall. + X value where the degree of membership reaches the minimum value. + The maximum value that the membership will reach, [0, 1]. + The minimum value that the membership will reach, [0, 1]. + + + + + Initializes a new instance of the class. + + With four points the shape is known as flat fuzzy number or fuzzy interval (/--\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value. + X value where the degree of membership starts to fall. + X value where the degree of membership reaches the minimum value. + + + Maximum membership value is set to 1.0 and the minimum is set to 0.0. + + + + + + Initializes a new instance of the class. + + With three points the shape is known as triangular fuzzy number or just fuzzy number (/\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value and starts to fall. + X value where the degree of membership reaches the minimum value. + The maximum value that the membership will reach, [0, 1]. + The minimum value that the membership will reach, [0, 1]. + + + + + Initializes a new instance of the class. + + With three points the shape is known as triangular fuzzy number or just fuzzy number (/\). + + + X value where the degree of membership starts to raise. + X value where the degree of membership reaches the maximum value and starts to fall. + X value where the degree of membership reaches the minimum value. + + + Maximum membership value is set to 1.0 and the minimum is set to 0.0. + + + + + + Initializes a new instance of the class. + + With two points and an edge this shape can be a left fuzzy number (/) or a right fuzzy number (\). + + + Edge = Left: X value where the degree of membership starts to raise. + Edge = Right: X value where the function starts, with maximum degree of membership. + Edge = Left: X value where the degree of membership reaches the maximum. + Edge = Right: X value where the degree of membership reaches minimum value. + The maximum value that the membership will reach, [0, 1]. + The minimum value that the membership will reach, [0, 1]. + Trapezoid's . + + + + + Initializes a new instance of the class. + + With three points and an edge this shape can be a left fuzzy number (/--) or a right fuzzy number (--\). + + + Edge = Left: X value where the degree of membership starts to raise. + Edge = Right: X value where the function starts, with maximum degree of membership. + Edge = Left: X value where the degree of membership reaches the maximum. + Edge = Right: X value where the degree of membership reaches minimum value. + Trapezoid's . + + + Maximum membership value is set to 1.0 and the minimum is set to 0.0. + + + + + + Enumeration used to create trapezoidal membership functions with half trapezoids. + + + If the value is Left, the trapezoid has the left edge, but right + is open (/--). If the value is Right, the trapezoid has the right edge, but left + is open (--\). + + + + + The fuzzy side of the trapezoid is at the left side. + + + + + The fuzzy side of the trapezoid is at the right side. + + + + + Product Norm, used to calculate the linguistic value of a AND operation. + + + The product Norm uses a multiplication operator to compute the + AND among two fuzzy memberships. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool (Temperature) and Near (Distance) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsNear = new FuzzySet( "Near", function2 ); + + // getting memberships + float m1 = fsCool.GetMembership( 15 ); + float m2 = fsNear.GetMembership( 35 ); + + // computing the membership of "Cool AND Near" + ProductNorm AND = new ProductNorm( ); + float result = AND.Evaluate( m1, m2 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Interface with the common methods of a Fuzzy Norm. + + + All fuzzy operators that act as a Norm must implement this interface. + + + + + + Calculates the numerical result of a Norm (AND) operation applied to + two fuzzy membership values. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result the operation AND applied to + and . + + + + + Calculates the numerical result of the AND operation applied to + two fuzzy membership values using the product rule. + + + A fuzzy membership value, [0..1]. + A fuzzy membership value, [0..1]. + + The numerical result of the AND operation applied to + and . + + + + + Minimum Norm, used to calculate the linguistic value of a AND operation. + + + The minimum Norm uses a minimum operator to compute the AND + among two fuzzy memberships. + + Sample usage: + + // creating 2 fuzzy sets to represent Cool (Temperature) and Near (Distance) + TrapezoidalFunction function1 = new TrapezoidalFunction( 13, 18, 23, 28 ); + FuzzySet fsCool = new FuzzySet( "Cool", function1 ); + TrapezoidalFunction function2 = new TrapezoidalFunction( 23, 28, 33, 38 ); + FuzzySet fsNear = new FuzzySet( "Near", function2 ); + + // getting memberships + float m1 = fsCool.GetMembership( 15 ); + float m2 = fsNear.GetMembership( 35 ); + + // computing the membership of "Cool AND Near" + MinimumNorm AND = new MinimumNorm( ); + float result = AND.Evaluate( m1, m2 ); + + // show result + Console.WriteLine( result ); + + + + + + + + + Calculates the numerical result of the AND operation applied to + two fuzzy membership values using the minimum rule. + + + A fuzzy membership value, [0..1]. + + A fuzzy membership value, [0..1]. + + The numerical result of the AND operation applied to + and . + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/Accord.Genetic.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/Accord.Genetic.3.0.2.nupkg new file mode 100644 index 0000000000..0b7df4e4a Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/Accord.Genetic.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net35/Accord.Genetic.dll b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net35/Accord.Genetic.dll new file mode 100644 index 0000000000..84530b387 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net35/Accord.Genetic.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net35/Accord.Genetic.xml b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net35/Accord.Genetic.xml new file mode 100644 index 0000000000..5d8c11341 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net35/Accord.Genetic.xml @@ -0,0 +1,2563 @@ + + + + Accord.Genetic + + + + + Binary chromosome, which supports length from 2 till 64. + + + The binary chromosome is the simplest type of chromosomes, + which is represented by a set of bits. Maximum number of bits comprising + the chromosome is 64. + + + + + Chromosomes' base class. + + + The base class provides implementation of some + methods and properties, which are identical to all types of chromosomes. + + + + + Chromosome interface. + + + The interfase should be implemented by all classes, which implement + particular chromosome type. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome class. + + + + + Clone the chromosome. + + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing its part randomly. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging some parts of chromosomes. + + + + + Evaluate chromosome with specified fitness function. + + + Fitness function to use for evaluation of the chromosome. + + Calculates chromosome's fitness using the specifed fitness function. + + + + + Chromosome's fintess value. + + + The fitness value represents chromosome's usefulness - the greater the + value, the more useful it. + + + + + Chromosome's fintess value. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome class. + + + + + Clone the chromosome. + + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing its part randomly. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging some parts of chromosomes. + + + + + Evaluate chromosome with specified fitness function. + + + Fitness function to use for evaluation of the chromosome. + + Calculates chromosome's fitness using the specifed fitness function. + + + + + Compare two chromosomes. + + + Binary chromosome to compare to. + + Returns comparison result, which equals to 0 if fitness values + of both chromosomes are equal, 1 if fitness value of this chromosome + is less than fitness value of the specified chromosome, -1 otherwise. + + + + + Chromosome's fintess value. + + + Fitness value (usefulness) of the chromosome calculate by calling + method. The greater the value, the more useful the chromosome. + + + + + + Chromosome's maximum length. + + + Maxim chromosome's length in bits, which is supported + by the class + + + + + Chromosome's length in bits. + + + + + Numerical chromosome's value. + + + + + Random number generator for chromosoms generation, crossover, mutation, etc. + + + + + Initializes a new instance of the class. + + + Chromosome's length in bits, [2, ]. + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Get string representation of the chromosome. + + + Returns string representation of the chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing randomly + one of its bits. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + range of bits between these chromosomes. + + + + + Chromosome's length. + + + Length of the chromosome in bits. + + + + + Chromosome's value. + + + Current numerical value of the chromosome. + + + + + Max possible chromosome's value. + + + Maximum possible numerical value, which may be represented + by the chromosome of current length. + + + + + Double array chromosome. + + + Double array chromosome represents array of double values. + Array length is in the range of [2, 65536]. + + + See documentation to and methods + for information regarding implemented mutation and crossover operators. + + + + + + Chromosome's maximum length. + + + Maxim chromosome's length in array elements. + + + + + Chromosome generator. + + + This random number generator is used to initialize chromosome's genes, + which is done by calling method. + + + + + Mutation multiplier generator. + + + This random number generator is used to generate random multiplier values, + which are used to multiply chromosome's genes during mutation. + + + + + Mutation addition generator. + + + This random number generator is used to generate random addition values, + which are used to add to chromosome's genes during mutation. + + + + + Random number generator for crossover and mutation points selection. + + + This random number generator is used to select crossover + and mutation points. + + + + + Chromosome's length in number of elements. + + + + + Chromosome's value. + + + + + Initializes a new instance of the class. + + + Chromosome generator - random number generator, which is + used to initialize chromosome's genes, which is done by calling method + or in class constructor. + Mutation multiplier generator - random number + generator, which is used to generate random multiplier values, which are used to + multiply chromosome's genes during mutation. + Mutation addition generator - random number + generator, which is used to generate random addition values, which are used to + add to chromosome's genes during mutation. + Chromosome's length in array elements, [2, ]. + + The constructor initializes the new chromosome randomly by calling + method. + + + + + Initializes a new instance of the class. + + + Chromosome generator - random number generator, which is + used to initialize chromosome's genes, which is done by calling method + or in class constructor. + Mutation multiplier generator - random number + generator, which is used to generate random multiplier values, which are used to + multiply chromosome's genes during mutation. + Mutation addition generator - random number + generator, which is used to generate random addition values, which are used to + add to chromosome's genes during mutation. + Values used to initialize the chromosome. + + The constructor initializes the new chromosome with specified values. + + + Invalid length of values array. + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Get string representation of the chromosome. + + + Returns string representation of the chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, adding random number + to chromosome's gene or multiplying the gene by random number. These random + numbers are generated with help of mutation + multiplier and mutation + addition generators. + + The exact type of mutation applied to the particular gene + is selected randomly each time and depends on . + Before mutation is done a random number is generated in [0, 1] range - if the + random number is smaller than , then multiplication + mutation is done, otherwise addition mutation. + + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes, selecting + randomly the exact type of crossover to perform, which depends on . + Before crossover is done a random number is generated in [0, 1] range - if the + random number is smaller than , then the first crossover + type is used, otherwise second type is used. + + The first crossover type is based on interchanging + range of genes (array elements) between these chromosomes and is known + as one point crossover. A crossover point is selected randomly and chromosomes + interchange genes, which start from the selected point. + + The second crossover type is aimed to produce one child, which genes' + values are between corresponding genes of parents, and another child, which genes' + values are outside of the range formed by corresponding genes of parents. + Let take, for example, two genes with 1.0 and 3.0 valueû (of course chromosomes have + more genes, but for simplicity lets think about one). First of all we randomly choose + a factor in the [0, 1] range, let's take 0.4. Then, for each pair of genes (we have + one pair) we calculate difference value, which is 2.0 in our case. In the result we’ll + have two children – one between and one outside of the range formed by parents genes' values. + We may have 1.8 and 3.8 children, or we may have 0.2 and 2.2 children. As we can see + we add/subtract (chosen randomly) difference * factor. So, this gives us exploration + in between and in near outside. The randomly chosen factor is applied to all genes + of the chromosomes participating in crossover. + + + + + + Chromosome's length. + + + Length of the chromosome in array elements. + + + + + Chromosome's value. + + + Current value of the chromosome. + + + + + Mutation balancer to control mutation type, [0, 1]. + + + The property controls type of mutation, which is used more + frequently. A radnom number is generated each time before doing mutation - + if the random number is smaller than the specified balance value, then one + mutation type is used, otherwse another. See method + for more information. + + Default value is set to 0.5. + + + + + + Crossover balancer to control crossover type, [0, 1]. + + + The property controls type of crossover, which is used more + frequently. A radnom number is generated each time before doing crossover - + if the random number is smaller than the specified balance value, then one + crossover type is used, otherwse another. See method + for more information. + + Default value is set to 0.5. + + + + + + Genetic programming gene, which represents arithmetic functions, common mathematical functions + and arguments. + + + Extended gene function may represent arithmetic functions (+, -, *, /), + some common mathematical functions (sin, cos, ln, exp, sqrt) or an argument to functions. + This class is used by Genetic Programming (or Gene Expression Programming) + chromosomes to build arbitrary expressions with help of genetic operators. + + + + + + Genetic Programming's gene interface. + + + This is a gene interface, which is used for building chromosomes + in Genetic Programming (GP) and Gene Expression Programming (GEP). + + + + + + Clone gene. + + + The method clones gene returning the exact copy of it. + + + + + Randomize gene with random type and value. + + + The method randomizes a gene, setting its type and value randomly. + + + + + Randomize gene with random value. + + + Gene type to set. + + The method randomizes a gene, setting its value randomly, but type + is set to the specified one. + + + + + Creates new gene with random type and value. + + + The method creates new randomly initialized gene . + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Creates new gene with certain type and random value. + + + Gene type to create. + + The method creates new gene with specified type, but random value. + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Gene type. + + + The property represents type of a gene - function, argument, etc. + + + + + + Arguments count. + + + Arguments count of a particular function gene. + + + + + Maximum arguments count. + + + Maximum arguments count of a function gene. The property may be used + by chromosomes' classes to allocate correctly memory for functions' arguments, + for example. + + + + + Number of different functions supported by the class. + + + + + Random number generator for chromosoms generation. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + + The constructor creates randomly initialized gene with random type + and value by calling method. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + Gene type to set. + + The constructor creates randomly initialized gene with random + value and preset gene type. + + + + + Get string representation of the gene. + + + Returns string representation of the gene. + + + + + Clone the gene. + + + The method clones the chromosome returning the exact copy of it. + + + + + Randomize gene with random type and value. + + + The method randomizes the gene, setting its type and value randomly. + + + + + Randomize gene with random value. + + + Gene type to set. + + The method randomizes a gene, setting its value randomly, but type + is set to the specified one. + + + + + Creates new gene with random type and value. + + + The method creates new randomly initialized gene . + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Creates new gene with certain type and random value. + + + Gene type to create. + + The method creates new gene with specified type, but random value. + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Gene type. + + + The property represents type of a gene - function, argument, etc. + + + + + + Arguments count. + + + Arguments count of a particular function gene. + + + + + Maximum arguments count. + + + Maximum arguments count of a function gene supported by the class. + The property may be used by chromosomes' classes to allocate correctly memory for + functions' arguments, for example. + + + + + Enumeration of supported functions. + + + + + Addition operator. + + + + + Suntraction operator. + + + + + Multiplication operator. + + + + + Division operator. + + + + + Sine function. + + + + + Cosine function. + + + + + Natural logarithm function. + + + + + Exponent function. + + + + + Square root function. + + + + + The chromosome represents a Gene Expression, which is used for + different tasks of Genetic Expression Programming (GEP). + + + This type of chromosome represents combination of ideas taken from + Genetic Algorithms (GA), where chromosomes are linear structures of fixed length, and + Genetic Programming (GP), where chromosomes are expression trees. The GEP chromosome + is also a fixed length linear structure, but with some additional features which + make it possible to generate valid expression tree from any GEP chromosome. + + The theory of Gene Expression Programming is well described in the next paper: + Ferreira, C., 2001. Gene Expression Programming: A New Adaptive Algorithm for Solving + Problems. Complex Systems, Vol. 13, issue 2: 87-129. A copy of the paper may be + obtained on the + gene expression programming web site. + + + + + + Length of GEP chromosome's head. + + + GEP chromosome's head is a part of chromosome, which may contain both + functions' and arguments' nodes. The rest of chromosome (tail) may contain only arguments' nodes. + + + + + + GEP chromosome's length. + + + The variable keeps chromosome's length, but not expression length represented by the + chromosome. + + + + + Array of chromosome's genes. + + + + + Random generator used for chromosoms' generation. + + + + + Initializes a new instance of the class. + + + A gene, which is used as generator for the genetic tree. + Length of GEP chromosome's head (see ). + + This constructor creates a randomly generated GEP chromosome, + which has all genes of the same type and properties as the specified . + + + + + + Initializes a new instance of the class. + + + Source GEP chromosome to clone from. + + + + + Get string representation of the chromosome by providing its expression in + reverse polish notation (postfix notation). + + + Returns string representation of the expression represented by the GEP + chromosome. + + + + + Get string representation of the chromosome. + + + Returns the chromosome in native linear representation. + + The method is used for debugging mostly. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Get tree representation of the chromosome. + + + Returns expression's tree represented by the chromosome. + + The method builds expression's tree for the native linear representation + of the GEP chromosome. + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation by calling on of the methods + randomly: , , . + + + + + + Usual gene mutation. + + + The method performs usual gene mutation by randomly changing randomly selected + gene. + + + + + Transposition of IS elements (insertion sequence). + + + The method performs transposition of IS elements by copying randomly selected region + of genes into chromosome's head (into randomly selected position). First gene of the chromosome's head + is not affected - can not be selected as target point. + + + + + Root transposition. + + + The method performs root transposition of the GEP chromosome - inserting + new root of the chromosome and shifting existing one. The method first of all randomly selects + a function gene in chromosome's head - starting point of the sequence to put into chromosome's + head. Then it randomly selects the length of the sequence making sure that the entire sequence is + located within head. Once the starting point and the length of the sequence are known, it is copied + into chromosome's head shifting existing elements in the head. + + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs one-point or two-point crossover selecting + them randomly with equal probability. + + + + + One-point recombination (crossover). + + + Pair chromosome to crossover with. + + + + + Two point recombination (crossover). + + + Pair chromosome to crossover with. + + + + + Swap parts of two chromosomes. + + + First chromosome participating in genes' interchange. + Second chromosome participating in genes' interchange. + Index of the first gene in the interchange sequence. + Length of the interchange sequence - number of genes + to interchange. + + The method performs interchanging of genes between two chromosomes + starting from the position. + + + + + Tree chromosome represents a tree of genes, which is is used for + different tasks of Genetic Programming (GP). + + + This type of chromosome represents a tree, where each node + is represented by containing . + Depending on type of genes used to build the tree, it may represent different + types of expressions aimed to solve different type of tasks. For example, a + particular implementation of interface may represent + simple algebraic operations and their arguments. + + + See documentation to implementations for additional + information about possible Genetic Programming trees. + + + + + + Random generator used for chromosoms' generation. + + + + + Initializes a new instance of the class. + + + A gene, which is used as generator for the genetic tree. + + This constructor creates a randomly generated genetic tree, + which has all genes of the same type and properties as the specified . + + + + + + Initializes a new instance of the class. + + + Source genetic tree to clone from. + + This constructor creates new genetic tree as a copy of the + specified tree. + + + + + Get string representation of the chromosome by providing its expression in + reverse polish notation (postfix notation). + + + Returns string representation of the genetic tree. + + The method returns string representation of the tree's root node + (see ). + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Generate chromosome's subtree of specified level. + + + Sub tree's node to generate. + Sub tree's level to generate. + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation by regenerating tree's + randomly selected node. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + randomly selected sub trees. + + + + + Crossover helper routine - selects random node of chromosomes tree and + swaps it with specified node. + + + + + Trim tree node, so its depth does not exceed specified level. + + + + + Maximum initial level of genetic trees, [1, 25]. + + + The property sets maximum possible initial depth of new + genetic programming tree. For example, if it is set to 1, then largest initial + tree may have a root and one level of children. + + Default value is set to 3. + + + + + + Maximum level of genetic trees, [1, 50]. + + + The property sets maximum possible depth of + genetic programming tree, which may be created with mutation and crossover operators. + This property guarantees that genetic programmin tree will never have + higher depth, than the specified value. + + Default value is set to 5. + + + + + + Represents tree node of genetic programming tree. + + + In genetic programming a chromosome is represented by a tree, which + is represented by class. The + class represents single node of such genetic programming tree. + + Each node may or may not have children. This means that particular node of a genetic + programming tree may represent its sub tree or even entire tree. + + + + + + Gene represented by the chromosome. + + + + + List of node's children. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Get string representation of the node. + + + Returns string representation of the node. + + String representation of the node lists all node's children and + then the node itself. Such node's string representations equals to + its reverse polish notation. + + For example, if nodes value is '+' and its children are '3' and '5', then + nodes string representation is "3 5 +". + + + + + + Clone the tree node. + + + Returns exact clone of the node. + + + + + Types of genes in Genetic Programming. + + + + + Function gene - represents function to be executed. + + + + + Argument gene - represents argument of function. + + + + + Genetic programming gene, which represents simple arithmetic functions and arguments. + + + Simple gene function may represent an arithmetic function (+, -, *, /) or + an argument to function. This class is used by Genetic Programming (or Gene Expression Programming) + chromosomes to build arbitrary expressions with help of genetic operators. + + + + + + Number of different functions supported by the class. + + + + + Random number generator for chromosoms generation. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + + The constructor creates randomly initialized gene with random type + and value by calling method. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + Gene type to set. + + The constructor creates randomly initialized gene with random + value and preset gene type. + + + + + Get string representation of the gene. + + + Returns string representation of the gene. + + + + + Clone the gene. + + + The method clones the chromosome returning the exact copy of it. + + + + + Randomize gene with random type and value. + + + The method randomizes the gene, setting its type and value randomly. + + + + + Randomize gene with random value. + + + Gene type to set. + + The method randomizes a gene, setting its value randomly, but type + is set to the specified one. + + + + + Creates new gene with random type and value. + + + The method creates new randomly initialized gene . + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Creates new gene with certain type and random value. + + + Gene type to create. + + The method creates new gene with specified type, but random value. + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Gene type. + + + The property represents type of a gene - function, argument, etc. + + + + + + Arguments count. + + + Arguments count of a particular function gene. + + + + + Maximum arguments count. + + + Maximum arguments count of a function gene supported by the class. + The property may be used by chromosomes' classes to allocate correctly memory for + functions' arguments, for example. + + + + + Enumeration of supported functions. + + + + + Addition operator. + + + + + Suntraction operator. + + + + + Multiplication operator. + + + + + Division operator. + + + + + Permutation chromosome. + + + Permutation chromosome is based on short array chromosome, + but has two features: + + all genes are unique within chromosome, i.e. there are no two genes + with the same value; + maximum value of each gene is equal to chromosome length minus 1. + + + + + + + Short array chromosome. + + + Short array chromosome represents array of unsigned short values. + Array length is in the range of [2, 65536]. + + + + + Chromosome's maximum length. + + + Maxim chromosome's length in array elements. + + + + + Chromosome's length in number of elements. + + + + + Maximum value of chromosome's gene (element). + + + + + Chromosome's value. + + + + + Random number generator for chromosoms generation, crossover, mutation, etc. + + + + + Initializes a new instance of the class. + + + Chromosome's length in array elements, [2, ]. + + This constructor initializes chromosome setting genes' maximum value to + maximum posible value of type. + + + + + Initializes a new instance of the class. + + + Chromosome's length in array elements, [2, ]. + Maximum value of chromosome's gene (array element). + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Get string representation of the chromosome. + + + Returns string representation of the chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing randomly + one of its genes (array elements). + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + range of genes (array elements) between these chromosomes. + + + + + Chromosome's length. + + + Length of the chromosome in array elements. + + + + + Chromosome's value. + + + Current value of the chromosome. + + + + + Max possible value of single chromosomes element - gene. + + + Maximum possible numerical value, which may be represented + by single chromosome's gene (array element). + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, swapping two randomly + chosen genes (array elements). + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + some parts between these chromosomes. + + + + + Fitness function interface. + + + The interface should be implemented by all fitness function + classes, which are supposed to be used for calculation of chromosomes + fitness values. All fitness functions should return positive (greater + then zero) value, which indicates how good is the evaluated chromosome - + the greater the value, the better the chromosome. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + Base class for one dimensional function optimizations. + + The class is aimed to be used for one dimensional function + optimization problems. It implements all methods of + interface and requires overriding only one method - + , which represents the + function to optimize. + + The optimization function should be greater + than 0 on the specified optimization range. + + The class works only with binary chromosomes (). + + Sample usage: + + // define optimization function + public class UserFunction : OptimizationFunction1D + { + public UserFunction( ) : + base( new Range( 0, 255 ) ) { } + + public override double OptimizationFunction( double x ) + { + return Math.Cos( x / 23 ) * Math.Sin( x / 50 ) + 2; + } + } + ... + // create genetic population + Population population = new Population( 40, + new BinaryChromosome( 32 ), + new UserFunction( ), + new EliteSelection( ) ); + + while ( true ) + { + // run one epoch of the population + population.RunEpoch( ); + // ... + } + + + + + + + Initializes a new instance of the class. + + + Specifies range for optimization. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype. + + + Chromosome, which genoteype should be + translated to phenotype. + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome. + + The method returns double value, which represents function's + input point encoded by the specified chromosome. + + + + + Function to optimize. + + + Function's input value. + + Returns function output value. + + The method should be overloaded by inherited class to + specify the optimization function. + + + + + Optimization range. + + + Defines function's input range. The function's extreme point will + be searched in this range only. + + + + + + Optimization mode. + + + Defines optimization mode - what kind of extreme point to search. + + + + + Optimization modes. + + + The enumeration defines optimization modes for + the one dimensional function optimization. + + + + + Search for function's maximum value. + + + + + Search for function's minimum value. + + + + Base class for two dimenstional function optimization. + + The class is aimed to be used for two dimensional function + optimization problems. It implements all methods of + interface and requires overriding only one method - + , which represents the + function to optimize. + + The optimization function should be greater + than 0 on the specified optimization range. + + The class works only with binary chromosomes (). + + Sample usage: + + // define optimization function + public class UserFunction : OptimizationFunction2D + { + public UserFunction( ) : + base( new Range( -4, 4 ), new Range( -4, 4 ) ) { } + + public override double OptimizationFunction( double x, double y ) + { + return ( Math.Cos( y ) * x * y ) / ( 2 - Math.Sin( x ) ); + } + } + ... + // create genetic population + Population population = new Population( 40, + new BinaryChromosome( 32 ), + new UserFunction( ), + new EliteSelection( ) ); + // run one epoch of the population + population.RunEpoch( ); + + + + + + + Initializes a new instance of the class. + + + Specifies X variable's range. + Specifies Y variable's range. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype + + + Chromosome, which genoteype should be + translated to phenotype + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome + + The method returns array of two double values, which + represent function's input point (X and Y) encoded by the specified + chromosome. + + + + + Function to optimize. + + + Function X input value. + Function Y input value. + + Returns function output value. + + The method should be overloaded by inherited class to + specify the optimization function. + + + + + X variable's optimization range. + + + Defines function's X range. The function's extreme will + be searched in this range only. + + + + + + Y variable's optimization range. + + + Defines function's Y range. The function's extreme will + be searched in this range only. + + + + + + Optimization mode. + + + Defines optimization mode - what kind of extreme to search. + + + + + Optimization modes. + + + The enumeration defines optimization modes for + the two dimensional function optimization. + + + + + Search for function's maximum value. + + + + + Search for function's minimum value. + + + + + Fitness function for symbolic regression (function approximation) problem + + + The fitness function calculates fitness value of + GP and GEP + chromosomes with the aim of solving symbolic regression problem. The fitness function's + value is computed as: + 100.0 / ( error + 1 ) + where error equals to the sum of absolute differences between function values (computed using + the function encoded by chromosome) and input values (function to be approximated). + + Sample usage: + + // constants + double[] constants = new double[5] { 1, 2, 3, 5, 7 }; + // function to be approximated + double[,] data = new double[5, 2] { + {1, 1}, {2, 3}, {3, 6}, {4, 10}, {5, 15} }; + // create population + Population population = new Population( 100, + new GPTreeChromosome( new SimpleGeneFunction( 1 + constants.Length ) ), + new SymbolicRegressionFitness( data, constants ), + new EliteSelection( ) ); + // run one epoch of the population + population.RunEpoch( ); + + + + + + + Initializes a new instance of the class. + + + Function to be approximated. + Array of constants to be used as additional + paramters for genetic expression. + + The parameter defines the function to be approximated and + represents a two dimensional array of (x, y) points. + + The parameter is an array of constants, which can be used as + additional variables for a genetic expression. The actual amount of variables for + genetic expression equals to the amount of constants plus one - the x variable. + + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype . + + + Chromosome, which genoteype should be + translated to phenotype. + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome. + + The method returns string value, which represents approximation + expression written in polish postfix notation. + + + + + Fitness function for times series prediction problem + + + The fitness function calculates fitness value of + GP and GEP + chromosomes with the aim of solving times series prediction problem using + sliding window method. The fitness function's value is computed as: + 100.0 / ( error + 1 ) + where error equals to the sum of absolute differences between predicted value + and actual future value. + + Sample usage: + + // number of points from the past used to predict new one + int windowSize = 5; + // time series to predict + double[] data = new double[13] { 1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79 }; + // constants + double[] constants = new double[10] { 1, 2, 3, 5, 7, 11, 13, 17, 19, 23 }; + // create population + Population population = new Population( 100, + new GPTreeChromosome( new SimpleGeneFunction( windowSize + constants.Length ) ), + new TimeSeriesPredictionFitness( data, windowSize, 1, constants ), + new EliteSelection( ) ); + // run one epoch of the population + population.RunEpoch( ); + + + + + + + Initializes a new instance of the class. + + + Time series to be predicted. + Window size - number of past samples used + to predict future value. + Prediction size - number of values to be predicted. These + values are excluded from training set. + Array of constants to be used as additional + paramters for genetic expression. + + The parameter is a one dimensional array, which defines times + series to predict. The amount of learning samples is equal to the number of samples + in the provided time series, minus window size, minus prediction size. + + The parameter specifies the amount of samples, which should + be excluded from training set. This set of samples may be used for future verification + of the prediction model. + + The parameter is an array of constants, which can be used as + additional variables for a genetic expression. The actual amount of variables for + genetic expression equals to the amount of constants plus the window size. + + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype. + + + Chromosome, which genoteype should be + translated to phenotype. + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome. + + The method returns string value, which represents prediction + expression written in polish postfix notation. + + The interpretation of the prediction expression is very simple. For example, let's + take a look at sample expression, which was received with window size equal to 5: + $0 $1 - $5 / $2 * + The above expression in postfix polish notation should be interpreted as a next expression: + ( ( x[t - 1] - x[t - 2] ) / const1 ) * x[t - 3] + + + + + + + Population of chromosomes. + + + The class represents population - collection of individuals (chromosomes) + and provides functionality for common population's life cycle - population growing + with help of genetic operators and selection of chromosomes to new generation + with help of selection algorithm. The class may work with any type of chromosomes + implementing interface, use any type of fitness functions + implementing interface and use any type of selection + algorithms implementing interface. + + + + + + Initializes a new instance of the class. + + + Initial size of population. + Ancestor chromosome to use for population creatioin. + Fitness function to use for calculating + chromosome's fitness values. + Selection algorithm to use for selection + chromosome's to new generation. + + Creates new population of specified size. The specified ancestor + becomes first member of the population and is used to create other members + with same parameters, which were used for ancestor's creation. + + Too small population's size was specified. The + exception is thrown in the case if is smaller than 2. + + + + + Regenerate population. + + + The method regenerates population filling it with random chromosomes. + + + + + Do crossover in the population. + + + The method walks through the population and performs crossover operator + taking each two chromosomes in the order of their presence in the population. + The total amount of paired chromosomes is determined by + crossover rate. + + + + + Do mutation in the population. + + + The method walks through the population and performs mutation operator + taking each chromosome one by one. The total amount of mutated chromosomes is + determined by mutation rate. + + + + + Do selection. + + + The method applies selection operator to the current population. Using + specified selection algorithm it selects members to the new generation from current + generates and adds certain amount of random members, if is required + (see ). + + + + + Run one epoch of the population. + + + The method runs one epoch of the population, doing crossover, mutation + and selection by calling , and + . + + + + + Shuffle randomly current population. + + + Population shuffling may be useful in cases when selection + operator results in not random order of chromosomes (for example, after elite + selection population may be ordered in ascending/descending order). + + + + + Add chromosome to the population. + + + Chromosome to add to the population. + + The method adds specified chromosome to the current population. + Manual adding of chromosome maybe useful, when it is required to add some initialized + chromosomes instead of random. + + Adding chromosome manually should be done very carefully, since it + may break the population. The manually added chromosome must have the same type + and initialization parameters as the ancestor passed to constructor. + + + + + + Perform migration between two populations. + + + Population to do migration with. + Number of chromosomes from each population to migrate. + Selection algorithm used to select chromosomes to migrate. + + The method performs migration between two populations - current and the + specified one. During migration + specified number of chromosomes is choosen from + each population using specified selection algorithms + and put into another population replacing worst members there. + + + + + Resize population to the new specified size. + + + New size of population. + + The method does resizing of population. In the case if population + should grow, it just adds missing number of random members. In the case if + population should get smaller, the population's + selection method is used to reduce the population. + + Too small population's size was specified. The + exception is thrown in the case if is smaller than 2. + + + + + Resize population to the new specified size. + + + New size of population. + Selection algorithm to use in the case + if population should get smaller. + + The method does resizing of population. In the case if population + should grow, it just adds missing number of random members. In the case if + population should get smaller, the specified selection method is used to + reduce the population. + + Too small population's size was specified. The + exception is thrown in the case if is smaller than 2. + + + + + Crossover rate, [0.1, 1]. + + + The value determines the amount of chromosomes which participate + in crossover. + + Default value is set to 0.75. + + + + + + Mutation rate, [0.1, 1]. + + + The value determines the amount of chromosomes which participate + in mutation. + + Defaul value is set to 0.1. + + + + + Random selection portion, [0, 0.9]. + + + The value determines the amount of chromosomes which will be + randomly generated for the new population. The property controls the amount + of chromosomes, which are selected to a new population using + selection operator, and amount of random + chromosomes added to the new population. + + Default value is set to 0. + + + + + Determines of auto shuffling is on or off. + + + The property specifies if automatic shuffling needs to be done + on each epoch by calling + method. + + Default value is set to . + + + + + Selection method to use with the population. + + + The property sets selection method which is used to select + population members for a new population - filter population after reproduction + was done with operators like crossover and mutations. + + + + + Fitness function to apply to the population. + + + The property sets fitness function, which is used to evaluate + usefulness of population's chromosomes. Setting new fitness function causes recalculation + of fitness values for all population's members and new best member will be found. + + + + + + Maximum fitness of the population. + + + The property keeps maximum fitness of chromosomes currently existing + in the population. + + The property is recalculate only after selection + or migration was done. + + + + + + Summary fitness of the population. + + + The property keeps summary fitness of all chromosome existing in the + population. + + The property is recalculate only after selection + or migration was done. + + + + + + Average fitness of the population. + + + The property keeps average fitness of all chromosome existing in the + population. + + The property is recalculate only after selection + or migration was done. + + + + + + Best chromosome of the population. + + + The property keeps the best chromosome existing in the population + or if all chromosomes have 0 fitness. + + The property is recalculate only after selection + or migration was done. + + + + + + Size of the population. + + + The property keeps initial (minimal) size of population. + Population always returns to this size after selection operator was applied, + which happens after or methods + call. + + + + + Get chromosome with specified index. + + + Chromosome's index to retrieve. + + Allows to access individuals of the population. + + + + + Elite selection method. + + + Elite selection method selects specified amount of + best chromosomes to the next generation. + + + + + Genetic selection method interface. + + + The interface should be implemented by all classes, which + implement genetic selection algorithm. These algorithms select members of + current generation, which should be kept in the new generation. Basically, + these algorithms filter provided population keeping only specified amount of + members. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population according to the implemented + selection algorithm. + + + + + Initializes a new instance of the class. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population keeping only specified amount of best + chromosomes. + + + + + Rank selection method. + + + The algorithm selects chromosomes to the new generation depending on + their fitness values - the better fitness value chromosome has, the more chances + it has to become member of the new generation. Each chromosome can be selected + several times to the new generation. + + This algorithm is similar to Roulette Wheel + Selection algorithm, but the difference is in "wheel" and its sectors' size + calculation method. The size of the wheel equals to size * ( size + 1 ) / 2, + where size is the current size of population. The worst chromosome has its sector's + size equal to 1, the next chromosome has its sector's size equal to 2, etc. + + + + + + Initializes a new instance of the class. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population keeping only those chromosomes, which + won "roulette" game. + + + + + Roulette wheel selection method. + + + The algorithm selects chromosomes to the new generation according to + their fitness values - the more fitness value chromosome has, the more chances + it has to become member of new generation. Each chromosome can be selected + several times to the new generation. + + The "roulette's wheel" is divided into sectors, which size is proportional to + the fitness values of chromosomes - the size of the wheel is the sum of all fitness + values, size of each sector equals to fitness value of chromosome. + + + + + + Initializes a new instance of the class. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population keeping only those chromosomes, which + won "roulette" game. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net40/Accord.Genetic.dll b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net40/Accord.Genetic.dll new file mode 100644 index 0000000000..418ecfe11 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net40/Accord.Genetic.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net40/Accord.Genetic.xml b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net40/Accord.Genetic.xml new file mode 100644 index 0000000000..5d8c11341 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net40/Accord.Genetic.xml @@ -0,0 +1,2563 @@ + + + + Accord.Genetic + + + + + Binary chromosome, which supports length from 2 till 64. + + + The binary chromosome is the simplest type of chromosomes, + which is represented by a set of bits. Maximum number of bits comprising + the chromosome is 64. + + + + + Chromosomes' base class. + + + The base class provides implementation of some + methods and properties, which are identical to all types of chromosomes. + + + + + Chromosome interface. + + + The interfase should be implemented by all classes, which implement + particular chromosome type. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome class. + + + + + Clone the chromosome. + + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing its part randomly. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging some parts of chromosomes. + + + + + Evaluate chromosome with specified fitness function. + + + Fitness function to use for evaluation of the chromosome. + + Calculates chromosome's fitness using the specifed fitness function. + + + + + Chromosome's fintess value. + + + The fitness value represents chromosome's usefulness - the greater the + value, the more useful it. + + + + + Chromosome's fintess value. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome class. + + + + + Clone the chromosome. + + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing its part randomly. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging some parts of chromosomes. + + + + + Evaluate chromosome with specified fitness function. + + + Fitness function to use for evaluation of the chromosome. + + Calculates chromosome's fitness using the specifed fitness function. + + + + + Compare two chromosomes. + + + Binary chromosome to compare to. + + Returns comparison result, which equals to 0 if fitness values + of both chromosomes are equal, 1 if fitness value of this chromosome + is less than fitness value of the specified chromosome, -1 otherwise. + + + + + Chromosome's fintess value. + + + Fitness value (usefulness) of the chromosome calculate by calling + method. The greater the value, the more useful the chromosome. + + + + + + Chromosome's maximum length. + + + Maxim chromosome's length in bits, which is supported + by the class + + + + + Chromosome's length in bits. + + + + + Numerical chromosome's value. + + + + + Random number generator for chromosoms generation, crossover, mutation, etc. + + + + + Initializes a new instance of the class. + + + Chromosome's length in bits, [2, ]. + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Get string representation of the chromosome. + + + Returns string representation of the chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing randomly + one of its bits. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + range of bits between these chromosomes. + + + + + Chromosome's length. + + + Length of the chromosome in bits. + + + + + Chromosome's value. + + + Current numerical value of the chromosome. + + + + + Max possible chromosome's value. + + + Maximum possible numerical value, which may be represented + by the chromosome of current length. + + + + + Double array chromosome. + + + Double array chromosome represents array of double values. + Array length is in the range of [2, 65536]. + + + See documentation to and methods + for information regarding implemented mutation and crossover operators. + + + + + + Chromosome's maximum length. + + + Maxim chromosome's length in array elements. + + + + + Chromosome generator. + + + This random number generator is used to initialize chromosome's genes, + which is done by calling method. + + + + + Mutation multiplier generator. + + + This random number generator is used to generate random multiplier values, + which are used to multiply chromosome's genes during mutation. + + + + + Mutation addition generator. + + + This random number generator is used to generate random addition values, + which are used to add to chromosome's genes during mutation. + + + + + Random number generator for crossover and mutation points selection. + + + This random number generator is used to select crossover + and mutation points. + + + + + Chromosome's length in number of elements. + + + + + Chromosome's value. + + + + + Initializes a new instance of the class. + + + Chromosome generator - random number generator, which is + used to initialize chromosome's genes, which is done by calling method + or in class constructor. + Mutation multiplier generator - random number + generator, which is used to generate random multiplier values, which are used to + multiply chromosome's genes during mutation. + Mutation addition generator - random number + generator, which is used to generate random addition values, which are used to + add to chromosome's genes during mutation. + Chromosome's length in array elements, [2, ]. + + The constructor initializes the new chromosome randomly by calling + method. + + + + + Initializes a new instance of the class. + + + Chromosome generator - random number generator, which is + used to initialize chromosome's genes, which is done by calling method + or in class constructor. + Mutation multiplier generator - random number + generator, which is used to generate random multiplier values, which are used to + multiply chromosome's genes during mutation. + Mutation addition generator - random number + generator, which is used to generate random addition values, which are used to + add to chromosome's genes during mutation. + Values used to initialize the chromosome. + + The constructor initializes the new chromosome with specified values. + + + Invalid length of values array. + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Get string representation of the chromosome. + + + Returns string representation of the chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, adding random number + to chromosome's gene or multiplying the gene by random number. These random + numbers are generated with help of mutation + multiplier and mutation + addition generators. + + The exact type of mutation applied to the particular gene + is selected randomly each time and depends on . + Before mutation is done a random number is generated in [0, 1] range - if the + random number is smaller than , then multiplication + mutation is done, otherwise addition mutation. + + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes, selecting + randomly the exact type of crossover to perform, which depends on . + Before crossover is done a random number is generated in [0, 1] range - if the + random number is smaller than , then the first crossover + type is used, otherwise second type is used. + + The first crossover type is based on interchanging + range of genes (array elements) between these chromosomes and is known + as one point crossover. A crossover point is selected randomly and chromosomes + interchange genes, which start from the selected point. + + The second crossover type is aimed to produce one child, which genes' + values are between corresponding genes of parents, and another child, which genes' + values are outside of the range formed by corresponding genes of parents. + Let take, for example, two genes with 1.0 and 3.0 valueû (of course chromosomes have + more genes, but for simplicity lets think about one). First of all we randomly choose + a factor in the [0, 1] range, let's take 0.4. Then, for each pair of genes (we have + one pair) we calculate difference value, which is 2.0 in our case. In the result we’ll + have two children – one between and one outside of the range formed by parents genes' values. + We may have 1.8 and 3.8 children, or we may have 0.2 and 2.2 children. As we can see + we add/subtract (chosen randomly) difference * factor. So, this gives us exploration + in between and in near outside. The randomly chosen factor is applied to all genes + of the chromosomes participating in crossover. + + + + + + Chromosome's length. + + + Length of the chromosome in array elements. + + + + + Chromosome's value. + + + Current value of the chromosome. + + + + + Mutation balancer to control mutation type, [0, 1]. + + + The property controls type of mutation, which is used more + frequently. A radnom number is generated each time before doing mutation - + if the random number is smaller than the specified balance value, then one + mutation type is used, otherwse another. See method + for more information. + + Default value is set to 0.5. + + + + + + Crossover balancer to control crossover type, [0, 1]. + + + The property controls type of crossover, which is used more + frequently. A radnom number is generated each time before doing crossover - + if the random number is smaller than the specified balance value, then one + crossover type is used, otherwse another. See method + for more information. + + Default value is set to 0.5. + + + + + + Genetic programming gene, which represents arithmetic functions, common mathematical functions + and arguments. + + + Extended gene function may represent arithmetic functions (+, -, *, /), + some common mathematical functions (sin, cos, ln, exp, sqrt) or an argument to functions. + This class is used by Genetic Programming (or Gene Expression Programming) + chromosomes to build arbitrary expressions with help of genetic operators. + + + + + + Genetic Programming's gene interface. + + + This is a gene interface, which is used for building chromosomes + in Genetic Programming (GP) and Gene Expression Programming (GEP). + + + + + + Clone gene. + + + The method clones gene returning the exact copy of it. + + + + + Randomize gene with random type and value. + + + The method randomizes a gene, setting its type and value randomly. + + + + + Randomize gene with random value. + + + Gene type to set. + + The method randomizes a gene, setting its value randomly, but type + is set to the specified one. + + + + + Creates new gene with random type and value. + + + The method creates new randomly initialized gene . + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Creates new gene with certain type and random value. + + + Gene type to create. + + The method creates new gene with specified type, but random value. + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Gene type. + + + The property represents type of a gene - function, argument, etc. + + + + + + Arguments count. + + + Arguments count of a particular function gene. + + + + + Maximum arguments count. + + + Maximum arguments count of a function gene. The property may be used + by chromosomes' classes to allocate correctly memory for functions' arguments, + for example. + + + + + Number of different functions supported by the class. + + + + + Random number generator for chromosoms generation. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + + The constructor creates randomly initialized gene with random type + and value by calling method. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + Gene type to set. + + The constructor creates randomly initialized gene with random + value and preset gene type. + + + + + Get string representation of the gene. + + + Returns string representation of the gene. + + + + + Clone the gene. + + + The method clones the chromosome returning the exact copy of it. + + + + + Randomize gene with random type and value. + + + The method randomizes the gene, setting its type and value randomly. + + + + + Randomize gene with random value. + + + Gene type to set. + + The method randomizes a gene, setting its value randomly, but type + is set to the specified one. + + + + + Creates new gene with random type and value. + + + The method creates new randomly initialized gene . + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Creates new gene with certain type and random value. + + + Gene type to create. + + The method creates new gene with specified type, but random value. + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Gene type. + + + The property represents type of a gene - function, argument, etc. + + + + + + Arguments count. + + + Arguments count of a particular function gene. + + + + + Maximum arguments count. + + + Maximum arguments count of a function gene supported by the class. + The property may be used by chromosomes' classes to allocate correctly memory for + functions' arguments, for example. + + + + + Enumeration of supported functions. + + + + + Addition operator. + + + + + Suntraction operator. + + + + + Multiplication operator. + + + + + Division operator. + + + + + Sine function. + + + + + Cosine function. + + + + + Natural logarithm function. + + + + + Exponent function. + + + + + Square root function. + + + + + The chromosome represents a Gene Expression, which is used for + different tasks of Genetic Expression Programming (GEP). + + + This type of chromosome represents combination of ideas taken from + Genetic Algorithms (GA), where chromosomes are linear structures of fixed length, and + Genetic Programming (GP), where chromosomes are expression trees. The GEP chromosome + is also a fixed length linear structure, but with some additional features which + make it possible to generate valid expression tree from any GEP chromosome. + + The theory of Gene Expression Programming is well described in the next paper: + Ferreira, C., 2001. Gene Expression Programming: A New Adaptive Algorithm for Solving + Problems. Complex Systems, Vol. 13, issue 2: 87-129. A copy of the paper may be + obtained on the + gene expression programming web site. + + + + + + Length of GEP chromosome's head. + + + GEP chromosome's head is a part of chromosome, which may contain both + functions' and arguments' nodes. The rest of chromosome (tail) may contain only arguments' nodes. + + + + + + GEP chromosome's length. + + + The variable keeps chromosome's length, but not expression length represented by the + chromosome. + + + + + Array of chromosome's genes. + + + + + Random generator used for chromosoms' generation. + + + + + Initializes a new instance of the class. + + + A gene, which is used as generator for the genetic tree. + Length of GEP chromosome's head (see ). + + This constructor creates a randomly generated GEP chromosome, + which has all genes of the same type and properties as the specified . + + + + + + Initializes a new instance of the class. + + + Source GEP chromosome to clone from. + + + + + Get string representation of the chromosome by providing its expression in + reverse polish notation (postfix notation). + + + Returns string representation of the expression represented by the GEP + chromosome. + + + + + Get string representation of the chromosome. + + + Returns the chromosome in native linear representation. + + The method is used for debugging mostly. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Get tree representation of the chromosome. + + + Returns expression's tree represented by the chromosome. + + The method builds expression's tree for the native linear representation + of the GEP chromosome. + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation by calling on of the methods + randomly: , , . + + + + + + Usual gene mutation. + + + The method performs usual gene mutation by randomly changing randomly selected + gene. + + + + + Transposition of IS elements (insertion sequence). + + + The method performs transposition of IS elements by copying randomly selected region + of genes into chromosome's head (into randomly selected position). First gene of the chromosome's head + is not affected - can not be selected as target point. + + + + + Root transposition. + + + The method performs root transposition of the GEP chromosome - inserting + new root of the chromosome and shifting existing one. The method first of all randomly selects + a function gene in chromosome's head - starting point of the sequence to put into chromosome's + head. Then it randomly selects the length of the sequence making sure that the entire sequence is + located within head. Once the starting point and the length of the sequence are known, it is copied + into chromosome's head shifting existing elements in the head. + + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs one-point or two-point crossover selecting + them randomly with equal probability. + + + + + One-point recombination (crossover). + + + Pair chromosome to crossover with. + + + + + Two point recombination (crossover). + + + Pair chromosome to crossover with. + + + + + Swap parts of two chromosomes. + + + First chromosome participating in genes' interchange. + Second chromosome participating in genes' interchange. + Index of the first gene in the interchange sequence. + Length of the interchange sequence - number of genes + to interchange. + + The method performs interchanging of genes between two chromosomes + starting from the position. + + + + + Tree chromosome represents a tree of genes, which is is used for + different tasks of Genetic Programming (GP). + + + This type of chromosome represents a tree, where each node + is represented by containing . + Depending on type of genes used to build the tree, it may represent different + types of expressions aimed to solve different type of tasks. For example, a + particular implementation of interface may represent + simple algebraic operations and their arguments. + + + See documentation to implementations for additional + information about possible Genetic Programming trees. + + + + + + Random generator used for chromosoms' generation. + + + + + Initializes a new instance of the class. + + + A gene, which is used as generator for the genetic tree. + + This constructor creates a randomly generated genetic tree, + which has all genes of the same type and properties as the specified . + + + + + + Initializes a new instance of the class. + + + Source genetic tree to clone from. + + This constructor creates new genetic tree as a copy of the + specified tree. + + + + + Get string representation of the chromosome by providing its expression in + reverse polish notation (postfix notation). + + + Returns string representation of the genetic tree. + + The method returns string representation of the tree's root node + (see ). + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Generate chromosome's subtree of specified level. + + + Sub tree's node to generate. + Sub tree's level to generate. + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation by regenerating tree's + randomly selected node. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + randomly selected sub trees. + + + + + Crossover helper routine - selects random node of chromosomes tree and + swaps it with specified node. + + + + + Trim tree node, so its depth does not exceed specified level. + + + + + Maximum initial level of genetic trees, [1, 25]. + + + The property sets maximum possible initial depth of new + genetic programming tree. For example, if it is set to 1, then largest initial + tree may have a root and one level of children. + + Default value is set to 3. + + + + + + Maximum level of genetic trees, [1, 50]. + + + The property sets maximum possible depth of + genetic programming tree, which may be created with mutation and crossover operators. + This property guarantees that genetic programmin tree will never have + higher depth, than the specified value. + + Default value is set to 5. + + + + + + Represents tree node of genetic programming tree. + + + In genetic programming a chromosome is represented by a tree, which + is represented by class. The + class represents single node of such genetic programming tree. + + Each node may or may not have children. This means that particular node of a genetic + programming tree may represent its sub tree or even entire tree. + + + + + + Gene represented by the chromosome. + + + + + List of node's children. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Get string representation of the node. + + + Returns string representation of the node. + + String representation of the node lists all node's children and + then the node itself. Such node's string representations equals to + its reverse polish notation. + + For example, if nodes value is '+' and its children are '3' and '5', then + nodes string representation is "3 5 +". + + + + + + Clone the tree node. + + + Returns exact clone of the node. + + + + + Types of genes in Genetic Programming. + + + + + Function gene - represents function to be executed. + + + + + Argument gene - represents argument of function. + + + + + Genetic programming gene, which represents simple arithmetic functions and arguments. + + + Simple gene function may represent an arithmetic function (+, -, *, /) or + an argument to function. This class is used by Genetic Programming (or Gene Expression Programming) + chromosomes to build arbitrary expressions with help of genetic operators. + + + + + + Number of different functions supported by the class. + + + + + Random number generator for chromosoms generation. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + + The constructor creates randomly initialized gene with random type + and value by calling method. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + Gene type to set. + + The constructor creates randomly initialized gene with random + value and preset gene type. + + + + + Get string representation of the gene. + + + Returns string representation of the gene. + + + + + Clone the gene. + + + The method clones the chromosome returning the exact copy of it. + + + + + Randomize gene with random type and value. + + + The method randomizes the gene, setting its type and value randomly. + + + + + Randomize gene with random value. + + + Gene type to set. + + The method randomizes a gene, setting its value randomly, but type + is set to the specified one. + + + + + Creates new gene with random type and value. + + + The method creates new randomly initialized gene . + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Creates new gene with certain type and random value. + + + Gene type to create. + + The method creates new gene with specified type, but random value. + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Gene type. + + + The property represents type of a gene - function, argument, etc. + + + + + + Arguments count. + + + Arguments count of a particular function gene. + + + + + Maximum arguments count. + + + Maximum arguments count of a function gene supported by the class. + The property may be used by chromosomes' classes to allocate correctly memory for + functions' arguments, for example. + + + + + Enumeration of supported functions. + + + + + Addition operator. + + + + + Suntraction operator. + + + + + Multiplication operator. + + + + + Division operator. + + + + + Permutation chromosome. + + + Permutation chromosome is based on short array chromosome, + but has two features: + + all genes are unique within chromosome, i.e. there are no two genes + with the same value; + maximum value of each gene is equal to chromosome length minus 1. + + + + + + + Short array chromosome. + + + Short array chromosome represents array of unsigned short values. + Array length is in the range of [2, 65536]. + + + + + Chromosome's maximum length. + + + Maxim chromosome's length in array elements. + + + + + Chromosome's length in number of elements. + + + + + Maximum value of chromosome's gene (element). + + + + + Chromosome's value. + + + + + Random number generator for chromosoms generation, crossover, mutation, etc. + + + + + Initializes a new instance of the class. + + + Chromosome's length in array elements, [2, ]. + + This constructor initializes chromosome setting genes' maximum value to + maximum posible value of type. + + + + + Initializes a new instance of the class. + + + Chromosome's length in array elements, [2, ]. + Maximum value of chromosome's gene (array element). + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Get string representation of the chromosome. + + + Returns string representation of the chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing randomly + one of its genes (array elements). + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + range of genes (array elements) between these chromosomes. + + + + + Chromosome's length. + + + Length of the chromosome in array elements. + + + + + Chromosome's value. + + + Current value of the chromosome. + + + + + Max possible value of single chromosomes element - gene. + + + Maximum possible numerical value, which may be represented + by single chromosome's gene (array element). + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, swapping two randomly + chosen genes (array elements). + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + some parts between these chromosomes. + + + + + Fitness function interface. + + + The interface should be implemented by all fitness function + classes, which are supposed to be used for calculation of chromosomes + fitness values. All fitness functions should return positive (greater + then zero) value, which indicates how good is the evaluated chromosome - + the greater the value, the better the chromosome. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + Base class for one dimensional function optimizations. + + The class is aimed to be used for one dimensional function + optimization problems. It implements all methods of + interface and requires overriding only one method - + , which represents the + function to optimize. + + The optimization function should be greater + than 0 on the specified optimization range. + + The class works only with binary chromosomes (). + + Sample usage: + + // define optimization function + public class UserFunction : OptimizationFunction1D + { + public UserFunction( ) : + base( new Range( 0, 255 ) ) { } + + public override double OptimizationFunction( double x ) + { + return Math.Cos( x / 23 ) * Math.Sin( x / 50 ) + 2; + } + } + ... + // create genetic population + Population population = new Population( 40, + new BinaryChromosome( 32 ), + new UserFunction( ), + new EliteSelection( ) ); + + while ( true ) + { + // run one epoch of the population + population.RunEpoch( ); + // ... + } + + + + + + + Initializes a new instance of the class. + + + Specifies range for optimization. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype. + + + Chromosome, which genoteype should be + translated to phenotype. + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome. + + The method returns double value, which represents function's + input point encoded by the specified chromosome. + + + + + Function to optimize. + + + Function's input value. + + Returns function output value. + + The method should be overloaded by inherited class to + specify the optimization function. + + + + + Optimization range. + + + Defines function's input range. The function's extreme point will + be searched in this range only. + + + + + + Optimization mode. + + + Defines optimization mode - what kind of extreme point to search. + + + + + Optimization modes. + + + The enumeration defines optimization modes for + the one dimensional function optimization. + + + + + Search for function's maximum value. + + + + + Search for function's minimum value. + + + + Base class for two dimenstional function optimization. + + The class is aimed to be used for two dimensional function + optimization problems. It implements all methods of + interface and requires overriding only one method - + , which represents the + function to optimize. + + The optimization function should be greater + than 0 on the specified optimization range. + + The class works only with binary chromosomes (). + + Sample usage: + + // define optimization function + public class UserFunction : OptimizationFunction2D + { + public UserFunction( ) : + base( new Range( -4, 4 ), new Range( -4, 4 ) ) { } + + public override double OptimizationFunction( double x, double y ) + { + return ( Math.Cos( y ) * x * y ) / ( 2 - Math.Sin( x ) ); + } + } + ... + // create genetic population + Population population = new Population( 40, + new BinaryChromosome( 32 ), + new UserFunction( ), + new EliteSelection( ) ); + // run one epoch of the population + population.RunEpoch( ); + + + + + + + Initializes a new instance of the class. + + + Specifies X variable's range. + Specifies Y variable's range. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype + + + Chromosome, which genoteype should be + translated to phenotype + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome + + The method returns array of two double values, which + represent function's input point (X and Y) encoded by the specified + chromosome. + + + + + Function to optimize. + + + Function X input value. + Function Y input value. + + Returns function output value. + + The method should be overloaded by inherited class to + specify the optimization function. + + + + + X variable's optimization range. + + + Defines function's X range. The function's extreme will + be searched in this range only. + + + + + + Y variable's optimization range. + + + Defines function's Y range. The function's extreme will + be searched in this range only. + + + + + + Optimization mode. + + + Defines optimization mode - what kind of extreme to search. + + + + + Optimization modes. + + + The enumeration defines optimization modes for + the two dimensional function optimization. + + + + + Search for function's maximum value. + + + + + Search for function's minimum value. + + + + + Fitness function for symbolic regression (function approximation) problem + + + The fitness function calculates fitness value of + GP and GEP + chromosomes with the aim of solving symbolic regression problem. The fitness function's + value is computed as: + 100.0 / ( error + 1 ) + where error equals to the sum of absolute differences between function values (computed using + the function encoded by chromosome) and input values (function to be approximated). + + Sample usage: + + // constants + double[] constants = new double[5] { 1, 2, 3, 5, 7 }; + // function to be approximated + double[,] data = new double[5, 2] { + {1, 1}, {2, 3}, {3, 6}, {4, 10}, {5, 15} }; + // create population + Population population = new Population( 100, + new GPTreeChromosome( new SimpleGeneFunction( 1 + constants.Length ) ), + new SymbolicRegressionFitness( data, constants ), + new EliteSelection( ) ); + // run one epoch of the population + population.RunEpoch( ); + + + + + + + Initializes a new instance of the class. + + + Function to be approximated. + Array of constants to be used as additional + paramters for genetic expression. + + The parameter defines the function to be approximated and + represents a two dimensional array of (x, y) points. + + The parameter is an array of constants, which can be used as + additional variables for a genetic expression. The actual amount of variables for + genetic expression equals to the amount of constants plus one - the x variable. + + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype . + + + Chromosome, which genoteype should be + translated to phenotype. + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome. + + The method returns string value, which represents approximation + expression written in polish postfix notation. + + + + + Fitness function for times series prediction problem + + + The fitness function calculates fitness value of + GP and GEP + chromosomes with the aim of solving times series prediction problem using + sliding window method. The fitness function's value is computed as: + 100.0 / ( error + 1 ) + where error equals to the sum of absolute differences between predicted value + and actual future value. + + Sample usage: + + // number of points from the past used to predict new one + int windowSize = 5; + // time series to predict + double[] data = new double[13] { 1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79 }; + // constants + double[] constants = new double[10] { 1, 2, 3, 5, 7, 11, 13, 17, 19, 23 }; + // create population + Population population = new Population( 100, + new GPTreeChromosome( new SimpleGeneFunction( windowSize + constants.Length ) ), + new TimeSeriesPredictionFitness( data, windowSize, 1, constants ), + new EliteSelection( ) ); + // run one epoch of the population + population.RunEpoch( ); + + + + + + + Initializes a new instance of the class. + + + Time series to be predicted. + Window size - number of past samples used + to predict future value. + Prediction size - number of values to be predicted. These + values are excluded from training set. + Array of constants to be used as additional + paramters for genetic expression. + + The parameter is a one dimensional array, which defines times + series to predict. The amount of learning samples is equal to the number of samples + in the provided time series, minus window size, minus prediction size. + + The parameter specifies the amount of samples, which should + be excluded from training set. This set of samples may be used for future verification + of the prediction model. + + The parameter is an array of constants, which can be used as + additional variables for a genetic expression. The actual amount of variables for + genetic expression equals to the amount of constants plus the window size. + + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype. + + + Chromosome, which genoteype should be + translated to phenotype. + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome. + + The method returns string value, which represents prediction + expression written in polish postfix notation. + + The interpretation of the prediction expression is very simple. For example, let's + take a look at sample expression, which was received with window size equal to 5: + $0 $1 - $5 / $2 * + The above expression in postfix polish notation should be interpreted as a next expression: + ( ( x[t - 1] - x[t - 2] ) / const1 ) * x[t - 3] + + + + + + + Population of chromosomes. + + + The class represents population - collection of individuals (chromosomes) + and provides functionality for common population's life cycle - population growing + with help of genetic operators and selection of chromosomes to new generation + with help of selection algorithm. The class may work with any type of chromosomes + implementing interface, use any type of fitness functions + implementing interface and use any type of selection + algorithms implementing interface. + + + + + + Initializes a new instance of the class. + + + Initial size of population. + Ancestor chromosome to use for population creatioin. + Fitness function to use for calculating + chromosome's fitness values. + Selection algorithm to use for selection + chromosome's to new generation. + + Creates new population of specified size. The specified ancestor + becomes first member of the population and is used to create other members + with same parameters, which were used for ancestor's creation. + + Too small population's size was specified. The + exception is thrown in the case if is smaller than 2. + + + + + Regenerate population. + + + The method regenerates population filling it with random chromosomes. + + + + + Do crossover in the population. + + + The method walks through the population and performs crossover operator + taking each two chromosomes in the order of their presence in the population. + The total amount of paired chromosomes is determined by + crossover rate. + + + + + Do mutation in the population. + + + The method walks through the population and performs mutation operator + taking each chromosome one by one. The total amount of mutated chromosomes is + determined by mutation rate. + + + + + Do selection. + + + The method applies selection operator to the current population. Using + specified selection algorithm it selects members to the new generation from current + generates and adds certain amount of random members, if is required + (see ). + + + + + Run one epoch of the population. + + + The method runs one epoch of the population, doing crossover, mutation + and selection by calling , and + . + + + + + Shuffle randomly current population. + + + Population shuffling may be useful in cases when selection + operator results in not random order of chromosomes (for example, after elite + selection population may be ordered in ascending/descending order). + + + + + Add chromosome to the population. + + + Chromosome to add to the population. + + The method adds specified chromosome to the current population. + Manual adding of chromosome maybe useful, when it is required to add some initialized + chromosomes instead of random. + + Adding chromosome manually should be done very carefully, since it + may break the population. The manually added chromosome must have the same type + and initialization parameters as the ancestor passed to constructor. + + + + + + Perform migration between two populations. + + + Population to do migration with. + Number of chromosomes from each population to migrate. + Selection algorithm used to select chromosomes to migrate. + + The method performs migration between two populations - current and the + specified one. During migration + specified number of chromosomes is choosen from + each population using specified selection algorithms + and put into another population replacing worst members there. + + + + + Resize population to the new specified size. + + + New size of population. + + The method does resizing of population. In the case if population + should grow, it just adds missing number of random members. In the case if + population should get smaller, the population's + selection method is used to reduce the population. + + Too small population's size was specified. The + exception is thrown in the case if is smaller than 2. + + + + + Resize population to the new specified size. + + + New size of population. + Selection algorithm to use in the case + if population should get smaller. + + The method does resizing of population. In the case if population + should grow, it just adds missing number of random members. In the case if + population should get smaller, the specified selection method is used to + reduce the population. + + Too small population's size was specified. The + exception is thrown in the case if is smaller than 2. + + + + + Crossover rate, [0.1, 1]. + + + The value determines the amount of chromosomes which participate + in crossover. + + Default value is set to 0.75. + + + + + + Mutation rate, [0.1, 1]. + + + The value determines the amount of chromosomes which participate + in mutation. + + Defaul value is set to 0.1. + + + + + Random selection portion, [0, 0.9]. + + + The value determines the amount of chromosomes which will be + randomly generated for the new population. The property controls the amount + of chromosomes, which are selected to a new population using + selection operator, and amount of random + chromosomes added to the new population. + + Default value is set to 0. + + + + + Determines of auto shuffling is on or off. + + + The property specifies if automatic shuffling needs to be done + on each epoch by calling + method. + + Default value is set to . + + + + + Selection method to use with the population. + + + The property sets selection method which is used to select + population members for a new population - filter population after reproduction + was done with operators like crossover and mutations. + + + + + Fitness function to apply to the population. + + + The property sets fitness function, which is used to evaluate + usefulness of population's chromosomes. Setting new fitness function causes recalculation + of fitness values for all population's members and new best member will be found. + + + + + + Maximum fitness of the population. + + + The property keeps maximum fitness of chromosomes currently existing + in the population. + + The property is recalculate only after selection + or migration was done. + + + + + + Summary fitness of the population. + + + The property keeps summary fitness of all chromosome existing in the + population. + + The property is recalculate only after selection + or migration was done. + + + + + + Average fitness of the population. + + + The property keeps average fitness of all chromosome existing in the + population. + + The property is recalculate only after selection + or migration was done. + + + + + + Best chromosome of the population. + + + The property keeps the best chromosome existing in the population + or if all chromosomes have 0 fitness. + + The property is recalculate only after selection + or migration was done. + + + + + + Size of the population. + + + The property keeps initial (minimal) size of population. + Population always returns to this size after selection operator was applied, + which happens after or methods + call. + + + + + Get chromosome with specified index. + + + Chromosome's index to retrieve. + + Allows to access individuals of the population. + + + + + Elite selection method. + + + Elite selection method selects specified amount of + best chromosomes to the next generation. + + + + + Genetic selection method interface. + + + The interface should be implemented by all classes, which + implement genetic selection algorithm. These algorithms select members of + current generation, which should be kept in the new generation. Basically, + these algorithms filter provided population keeping only specified amount of + members. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population according to the implemented + selection algorithm. + + + + + Initializes a new instance of the class. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population keeping only specified amount of best + chromosomes. + + + + + Rank selection method. + + + The algorithm selects chromosomes to the new generation depending on + their fitness values - the better fitness value chromosome has, the more chances + it has to become member of the new generation. Each chromosome can be selected + several times to the new generation. + + This algorithm is similar to Roulette Wheel + Selection algorithm, but the difference is in "wheel" and its sectors' size + calculation method. The size of the wheel equals to size * ( size + 1 ) / 2, + where size is the current size of population. The worst chromosome has its sector's + size equal to 1, the next chromosome has its sector's size equal to 2, etc. + + + + + + Initializes a new instance of the class. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population keeping only those chromosomes, which + won "roulette" game. + + + + + Roulette wheel selection method. + + + The algorithm selects chromosomes to the new generation according to + their fitness values - the more fitness value chromosome has, the more chances + it has to become member of new generation. Each chromosome can be selected + several times to the new generation. + + The "roulette's wheel" is divided into sectors, which size is proportional to + the fitness values of chromosomes - the size of the wheel is the sum of all fitness + values, size of each sector equals to fitness value of chromosome. + + + + + + Initializes a new instance of the class. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population keeping only those chromosomes, which + won "roulette" game. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net45/Accord.Genetic.dll b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net45/Accord.Genetic.dll new file mode 100644 index 0000000000..301b864c0 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net45/Accord.Genetic.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net45/Accord.Genetic.xml b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net45/Accord.Genetic.xml new file mode 100644 index 0000000000..5d8c11341 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Genetic.3.0.2/lib/net45/Accord.Genetic.xml @@ -0,0 +1,2563 @@ + + + + Accord.Genetic + + + + + Binary chromosome, which supports length from 2 till 64. + + + The binary chromosome is the simplest type of chromosomes, + which is represented by a set of bits. Maximum number of bits comprising + the chromosome is 64. + + + + + Chromosomes' base class. + + + The base class provides implementation of some + methods and properties, which are identical to all types of chromosomes. + + + + + Chromosome interface. + + + The interfase should be implemented by all classes, which implement + particular chromosome type. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome class. + + + + + Clone the chromosome. + + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing its part randomly. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging some parts of chromosomes. + + + + + Evaluate chromosome with specified fitness function. + + + Fitness function to use for evaluation of the chromosome. + + Calculates chromosome's fitness using the specifed fitness function. + + + + + Chromosome's fintess value. + + + The fitness value represents chromosome's usefulness - the greater the + value, the more useful it. + + + + + Chromosome's fintess value. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome class. + + + + + Clone the chromosome. + + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing its part randomly. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging some parts of chromosomes. + + + + + Evaluate chromosome with specified fitness function. + + + Fitness function to use for evaluation of the chromosome. + + Calculates chromosome's fitness using the specifed fitness function. + + + + + Compare two chromosomes. + + + Binary chromosome to compare to. + + Returns comparison result, which equals to 0 if fitness values + of both chromosomes are equal, 1 if fitness value of this chromosome + is less than fitness value of the specified chromosome, -1 otherwise. + + + + + Chromosome's fintess value. + + + Fitness value (usefulness) of the chromosome calculate by calling + method. The greater the value, the more useful the chromosome. + + + + + + Chromosome's maximum length. + + + Maxim chromosome's length in bits, which is supported + by the class + + + + + Chromosome's length in bits. + + + + + Numerical chromosome's value. + + + + + Random number generator for chromosoms generation, crossover, mutation, etc. + + + + + Initializes a new instance of the class. + + + Chromosome's length in bits, [2, ]. + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Get string representation of the chromosome. + + + Returns string representation of the chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing randomly + one of its bits. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + range of bits between these chromosomes. + + + + + Chromosome's length. + + + Length of the chromosome in bits. + + + + + Chromosome's value. + + + Current numerical value of the chromosome. + + + + + Max possible chromosome's value. + + + Maximum possible numerical value, which may be represented + by the chromosome of current length. + + + + + Double array chromosome. + + + Double array chromosome represents array of double values. + Array length is in the range of [2, 65536]. + + + See documentation to and methods + for information regarding implemented mutation and crossover operators. + + + + + + Chromosome's maximum length. + + + Maxim chromosome's length in array elements. + + + + + Chromosome generator. + + + This random number generator is used to initialize chromosome's genes, + which is done by calling method. + + + + + Mutation multiplier generator. + + + This random number generator is used to generate random multiplier values, + which are used to multiply chromosome's genes during mutation. + + + + + Mutation addition generator. + + + This random number generator is used to generate random addition values, + which are used to add to chromosome's genes during mutation. + + + + + Random number generator for crossover and mutation points selection. + + + This random number generator is used to select crossover + and mutation points. + + + + + Chromosome's length in number of elements. + + + + + Chromosome's value. + + + + + Initializes a new instance of the class. + + + Chromosome generator - random number generator, which is + used to initialize chromosome's genes, which is done by calling method + or in class constructor. + Mutation multiplier generator - random number + generator, which is used to generate random multiplier values, which are used to + multiply chromosome's genes during mutation. + Mutation addition generator - random number + generator, which is used to generate random addition values, which are used to + add to chromosome's genes during mutation. + Chromosome's length in array elements, [2, ]. + + The constructor initializes the new chromosome randomly by calling + method. + + + + + Initializes a new instance of the class. + + + Chromosome generator - random number generator, which is + used to initialize chromosome's genes, which is done by calling method + or in class constructor. + Mutation multiplier generator - random number + generator, which is used to generate random multiplier values, which are used to + multiply chromosome's genes during mutation. + Mutation addition generator - random number + generator, which is used to generate random addition values, which are used to + add to chromosome's genes during mutation. + Values used to initialize the chromosome. + + The constructor initializes the new chromosome with specified values. + + + Invalid length of values array. + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Get string representation of the chromosome. + + + Returns string representation of the chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, adding random number + to chromosome's gene or multiplying the gene by random number. These random + numbers are generated with help of mutation + multiplier and mutation + addition generators. + + The exact type of mutation applied to the particular gene + is selected randomly each time and depends on . + Before mutation is done a random number is generated in [0, 1] range - if the + random number is smaller than , then multiplication + mutation is done, otherwise addition mutation. + + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes, selecting + randomly the exact type of crossover to perform, which depends on . + Before crossover is done a random number is generated in [0, 1] range - if the + random number is smaller than , then the first crossover + type is used, otherwise second type is used. + + The first crossover type is based on interchanging + range of genes (array elements) between these chromosomes and is known + as one point crossover. A crossover point is selected randomly and chromosomes + interchange genes, which start from the selected point. + + The second crossover type is aimed to produce one child, which genes' + values are between corresponding genes of parents, and another child, which genes' + values are outside of the range formed by corresponding genes of parents. + Let take, for example, two genes with 1.0 and 3.0 valueû (of course chromosomes have + more genes, but for simplicity lets think about one). First of all we randomly choose + a factor in the [0, 1] range, let's take 0.4. Then, for each pair of genes (we have + one pair) we calculate difference value, which is 2.0 in our case. In the result we’ll + have two children – one between and one outside of the range formed by parents genes' values. + We may have 1.8 and 3.8 children, or we may have 0.2 and 2.2 children. As we can see + we add/subtract (chosen randomly) difference * factor. So, this gives us exploration + in between and in near outside. The randomly chosen factor is applied to all genes + of the chromosomes participating in crossover. + + + + + + Chromosome's length. + + + Length of the chromosome in array elements. + + + + + Chromosome's value. + + + Current value of the chromosome. + + + + + Mutation balancer to control mutation type, [0, 1]. + + + The property controls type of mutation, which is used more + frequently. A radnom number is generated each time before doing mutation - + if the random number is smaller than the specified balance value, then one + mutation type is used, otherwse another. See method + for more information. + + Default value is set to 0.5. + + + + + + Crossover balancer to control crossover type, [0, 1]. + + + The property controls type of crossover, which is used more + frequently. A radnom number is generated each time before doing crossover - + if the random number is smaller than the specified balance value, then one + crossover type is used, otherwse another. See method + for more information. + + Default value is set to 0.5. + + + + + + Genetic programming gene, which represents arithmetic functions, common mathematical functions + and arguments. + + + Extended gene function may represent arithmetic functions (+, -, *, /), + some common mathematical functions (sin, cos, ln, exp, sqrt) or an argument to functions. + This class is used by Genetic Programming (or Gene Expression Programming) + chromosomes to build arbitrary expressions with help of genetic operators. + + + + + + Genetic Programming's gene interface. + + + This is a gene interface, which is used for building chromosomes + in Genetic Programming (GP) and Gene Expression Programming (GEP). + + + + + + Clone gene. + + + The method clones gene returning the exact copy of it. + + + + + Randomize gene with random type and value. + + + The method randomizes a gene, setting its type and value randomly. + + + + + Randomize gene with random value. + + + Gene type to set. + + The method randomizes a gene, setting its value randomly, but type + is set to the specified one. + + + + + Creates new gene with random type and value. + + + The method creates new randomly initialized gene . + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Creates new gene with certain type and random value. + + + Gene type to create. + + The method creates new gene with specified type, but random value. + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Gene type. + + + The property represents type of a gene - function, argument, etc. + + + + + + Arguments count. + + + Arguments count of a particular function gene. + + + + + Maximum arguments count. + + + Maximum arguments count of a function gene. The property may be used + by chromosomes' classes to allocate correctly memory for functions' arguments, + for example. + + + + + Number of different functions supported by the class. + + + + + Random number generator for chromosoms generation. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + + The constructor creates randomly initialized gene with random type + and value by calling method. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + Gene type to set. + + The constructor creates randomly initialized gene with random + value and preset gene type. + + + + + Get string representation of the gene. + + + Returns string representation of the gene. + + + + + Clone the gene. + + + The method clones the chromosome returning the exact copy of it. + + + + + Randomize gene with random type and value. + + + The method randomizes the gene, setting its type and value randomly. + + + + + Randomize gene with random value. + + + Gene type to set. + + The method randomizes a gene, setting its value randomly, but type + is set to the specified one. + + + + + Creates new gene with random type and value. + + + The method creates new randomly initialized gene . + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Creates new gene with certain type and random value. + + + Gene type to create. + + The method creates new gene with specified type, but random value. + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Gene type. + + + The property represents type of a gene - function, argument, etc. + + + + + + Arguments count. + + + Arguments count of a particular function gene. + + + + + Maximum arguments count. + + + Maximum arguments count of a function gene supported by the class. + The property may be used by chromosomes' classes to allocate correctly memory for + functions' arguments, for example. + + + + + Enumeration of supported functions. + + + + + Addition operator. + + + + + Suntraction operator. + + + + + Multiplication operator. + + + + + Division operator. + + + + + Sine function. + + + + + Cosine function. + + + + + Natural logarithm function. + + + + + Exponent function. + + + + + Square root function. + + + + + The chromosome represents a Gene Expression, which is used for + different tasks of Genetic Expression Programming (GEP). + + + This type of chromosome represents combination of ideas taken from + Genetic Algorithms (GA), where chromosomes are linear structures of fixed length, and + Genetic Programming (GP), where chromosomes are expression trees. The GEP chromosome + is also a fixed length linear structure, but with some additional features which + make it possible to generate valid expression tree from any GEP chromosome. + + The theory of Gene Expression Programming is well described in the next paper: + Ferreira, C., 2001. Gene Expression Programming: A New Adaptive Algorithm for Solving + Problems. Complex Systems, Vol. 13, issue 2: 87-129. A copy of the paper may be + obtained on the + gene expression programming web site. + + + + + + Length of GEP chromosome's head. + + + GEP chromosome's head is a part of chromosome, which may contain both + functions' and arguments' nodes. The rest of chromosome (tail) may contain only arguments' nodes. + + + + + + GEP chromosome's length. + + + The variable keeps chromosome's length, but not expression length represented by the + chromosome. + + + + + Array of chromosome's genes. + + + + + Random generator used for chromosoms' generation. + + + + + Initializes a new instance of the class. + + + A gene, which is used as generator for the genetic tree. + Length of GEP chromosome's head (see ). + + This constructor creates a randomly generated GEP chromosome, + which has all genes of the same type and properties as the specified . + + + + + + Initializes a new instance of the class. + + + Source GEP chromosome to clone from. + + + + + Get string representation of the chromosome by providing its expression in + reverse polish notation (postfix notation). + + + Returns string representation of the expression represented by the GEP + chromosome. + + + + + Get string representation of the chromosome. + + + Returns the chromosome in native linear representation. + + The method is used for debugging mostly. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Get tree representation of the chromosome. + + + Returns expression's tree represented by the chromosome. + + The method builds expression's tree for the native linear representation + of the GEP chromosome. + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation by calling on of the methods + randomly: , , . + + + + + + Usual gene mutation. + + + The method performs usual gene mutation by randomly changing randomly selected + gene. + + + + + Transposition of IS elements (insertion sequence). + + + The method performs transposition of IS elements by copying randomly selected region + of genes into chromosome's head (into randomly selected position). First gene of the chromosome's head + is not affected - can not be selected as target point. + + + + + Root transposition. + + + The method performs root transposition of the GEP chromosome - inserting + new root of the chromosome and shifting existing one. The method first of all randomly selects + a function gene in chromosome's head - starting point of the sequence to put into chromosome's + head. Then it randomly selects the length of the sequence making sure that the entire sequence is + located within head. Once the starting point and the length of the sequence are known, it is copied + into chromosome's head shifting existing elements in the head. + + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs one-point or two-point crossover selecting + them randomly with equal probability. + + + + + One-point recombination (crossover). + + + Pair chromosome to crossover with. + + + + + Two point recombination (crossover). + + + Pair chromosome to crossover with. + + + + + Swap parts of two chromosomes. + + + First chromosome participating in genes' interchange. + Second chromosome participating in genes' interchange. + Index of the first gene in the interchange sequence. + Length of the interchange sequence - number of genes + to interchange. + + The method performs interchanging of genes between two chromosomes + starting from the position. + + + + + Tree chromosome represents a tree of genes, which is is used for + different tasks of Genetic Programming (GP). + + + This type of chromosome represents a tree, where each node + is represented by containing . + Depending on type of genes used to build the tree, it may represent different + types of expressions aimed to solve different type of tasks. For example, a + particular implementation of interface may represent + simple algebraic operations and their arguments. + + + See documentation to implementations for additional + information about possible Genetic Programming trees. + + + + + + Random generator used for chromosoms' generation. + + + + + Initializes a new instance of the class. + + + A gene, which is used as generator for the genetic tree. + + This constructor creates a randomly generated genetic tree, + which has all genes of the same type and properties as the specified . + + + + + + Initializes a new instance of the class. + + + Source genetic tree to clone from. + + This constructor creates new genetic tree as a copy of the + specified tree. + + + + + Get string representation of the chromosome by providing its expression in + reverse polish notation (postfix notation). + + + Returns string representation of the genetic tree. + + The method returns string representation of the tree's root node + (see ). + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Generate chromosome's subtree of specified level. + + + Sub tree's node to generate. + Sub tree's level to generate. + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation by regenerating tree's + randomly selected node. + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + randomly selected sub trees. + + + + + Crossover helper routine - selects random node of chromosomes tree and + swaps it with specified node. + + + + + Trim tree node, so its depth does not exceed specified level. + + + + + Maximum initial level of genetic trees, [1, 25]. + + + The property sets maximum possible initial depth of new + genetic programming tree. For example, if it is set to 1, then largest initial + tree may have a root and one level of children. + + Default value is set to 3. + + + + + + Maximum level of genetic trees, [1, 50]. + + + The property sets maximum possible depth of + genetic programming tree, which may be created with mutation and crossover operators. + This property guarantees that genetic programmin tree will never have + higher depth, than the specified value. + + Default value is set to 5. + + + + + + Represents tree node of genetic programming tree. + + + In genetic programming a chromosome is represented by a tree, which + is represented by class. The + class represents single node of such genetic programming tree. + + Each node may or may not have children. This means that particular node of a genetic + programming tree may represent its sub tree or even entire tree. + + + + + + Gene represented by the chromosome. + + + + + List of node's children. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Get string representation of the node. + + + Returns string representation of the node. + + String representation of the node lists all node's children and + then the node itself. Such node's string representations equals to + its reverse polish notation. + + For example, if nodes value is '+' and its children are '3' and '5', then + nodes string representation is "3 5 +". + + + + + + Clone the tree node. + + + Returns exact clone of the node. + + + + + Types of genes in Genetic Programming. + + + + + Function gene - represents function to be executed. + + + + + Argument gene - represents argument of function. + + + + + Genetic programming gene, which represents simple arithmetic functions and arguments. + + + Simple gene function may represent an arithmetic function (+, -, *, /) or + an argument to function. This class is used by Genetic Programming (or Gene Expression Programming) + chromosomes to build arbitrary expressions with help of genetic operators. + + + + + + Number of different functions supported by the class. + + + + + Random number generator for chromosoms generation. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + + The constructor creates randomly initialized gene with random type + and value by calling method. + + + + + Initializes a new instance of the class. + + + Total amount of variables in the task which is supposed + to be solved. + Gene type to set. + + The constructor creates randomly initialized gene with random + value and preset gene type. + + + + + Get string representation of the gene. + + + Returns string representation of the gene. + + + + + Clone the gene. + + + The method clones the chromosome returning the exact copy of it. + + + + + Randomize gene with random type and value. + + + The method randomizes the gene, setting its type and value randomly. + + + + + Randomize gene with random value. + + + Gene type to set. + + The method randomizes a gene, setting its value randomly, but type + is set to the specified one. + + + + + Creates new gene with random type and value. + + + The method creates new randomly initialized gene . + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Creates new gene with certain type and random value. + + + Gene type to create. + + The method creates new gene with specified type, but random value. + The method is useful as factory method for those classes, which work with gene's interface, + but not with particular gene class. + + + + + + Gene type. + + + The property represents type of a gene - function, argument, etc. + + + + + + Arguments count. + + + Arguments count of a particular function gene. + + + + + Maximum arguments count. + + + Maximum arguments count of a function gene supported by the class. + The property may be used by chromosomes' classes to allocate correctly memory for + functions' arguments, for example. + + + + + Enumeration of supported functions. + + + + + Addition operator. + + + + + Suntraction operator. + + + + + Multiplication operator. + + + + + Division operator. + + + + + Permutation chromosome. + + + Permutation chromosome is based on short array chromosome, + but has two features: + + all genes are unique within chromosome, i.e. there are no two genes + with the same value; + maximum value of each gene is equal to chromosome length minus 1. + + + + + + + Short array chromosome. + + + Short array chromosome represents array of unsigned short values. + Array length is in the range of [2, 65536]. + + + + + Chromosome's maximum length. + + + Maxim chromosome's length in array elements. + + + + + Chromosome's length in number of elements. + + + + + Maximum value of chromosome's gene (element). + + + + + Chromosome's value. + + + + + Random number generator for chromosoms generation, crossover, mutation, etc. + + + + + Initializes a new instance of the class. + + + Chromosome's length in array elements, [2, ]. + + This constructor initializes chromosome setting genes' maximum value to + maximum posible value of type. + + + + + Initializes a new instance of the class. + + + Chromosome's length in array elements, [2, ]. + Maximum value of chromosome's gene (array element). + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Get string representation of the chromosome. + + + Returns string representation of the chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, changing randomly + one of its genes (array elements). + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + range of genes (array elements) between these chromosomes. + + + + + Chromosome's length. + + + Length of the chromosome in array elements. + + + + + Chromosome's value. + + + Current value of the chromosome. + + + + + Max possible value of single chromosomes element - gene. + + + Maximum possible numerical value, which may be represented + by single chromosome's gene (array element). + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Source chromosome to copy. + + This is a copy constructor, which creates the exact copy + of specified chromosome. + + + + + Generate random chromosome value. + + + Regenerates chromosome's value using random number generator. + + + + + + Create new random chromosome with same parameters (factory method). + + + The method creates new chromosome of the same type, but randomly + initialized. The method is useful as factory method for those classes, which work + with chromosome's interface, but not with particular chromosome type. + + + + + Clone the chromosome. + + + Return's clone of the chromosome. + + The method clones the chromosome returning the exact copy of it. + + + + + + Mutation operator. + + + The method performs chromosome's mutation, swapping two randomly + chosen genes (array elements). + + + + + Crossover operator. + + + Pair chromosome to crossover with. + + The method performs crossover between two chromosomes – interchanging + some parts between these chromosomes. + + + + + Fitness function interface. + + + The interface should be implemented by all fitness function + classes, which are supposed to be used for calculation of chromosomes + fitness values. All fitness functions should return positive (greater + then zero) value, which indicates how good is the evaluated chromosome - + the greater the value, the better the chromosome. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + Base class for one dimensional function optimizations. + + The class is aimed to be used for one dimensional function + optimization problems. It implements all methods of + interface and requires overriding only one method - + , which represents the + function to optimize. + + The optimization function should be greater + than 0 on the specified optimization range. + + The class works only with binary chromosomes (). + + Sample usage: + + // define optimization function + public class UserFunction : OptimizationFunction1D + { + public UserFunction( ) : + base( new Range( 0, 255 ) ) { } + + public override double OptimizationFunction( double x ) + { + return Math.Cos( x / 23 ) * Math.Sin( x / 50 ) + 2; + } + } + ... + // create genetic population + Population population = new Population( 40, + new BinaryChromosome( 32 ), + new UserFunction( ), + new EliteSelection( ) ); + + while ( true ) + { + // run one epoch of the population + population.RunEpoch( ); + // ... + } + + + + + + + Initializes a new instance of the class. + + + Specifies range for optimization. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype. + + + Chromosome, which genoteype should be + translated to phenotype. + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome. + + The method returns double value, which represents function's + input point encoded by the specified chromosome. + + + + + Function to optimize. + + + Function's input value. + + Returns function output value. + + The method should be overloaded by inherited class to + specify the optimization function. + + + + + Optimization range. + + + Defines function's input range. The function's extreme point will + be searched in this range only. + + + + + + Optimization mode. + + + Defines optimization mode - what kind of extreme point to search. + + + + + Optimization modes. + + + The enumeration defines optimization modes for + the one dimensional function optimization. + + + + + Search for function's maximum value. + + + + + Search for function's minimum value. + + + + Base class for two dimenstional function optimization. + + The class is aimed to be used for two dimensional function + optimization problems. It implements all methods of + interface and requires overriding only one method - + , which represents the + function to optimize. + + The optimization function should be greater + than 0 on the specified optimization range. + + The class works only with binary chromosomes (). + + Sample usage: + + // define optimization function + public class UserFunction : OptimizationFunction2D + { + public UserFunction( ) : + base( new Range( -4, 4 ), new Range( -4, 4 ) ) { } + + public override double OptimizationFunction( double x, double y ) + { + return ( Math.Cos( y ) * x * y ) / ( 2 - Math.Sin( x ) ); + } + } + ... + // create genetic population + Population population = new Population( 40, + new BinaryChromosome( 32 ), + new UserFunction( ), + new EliteSelection( ) ); + // run one epoch of the population + population.RunEpoch( ); + + + + + + + Initializes a new instance of the class. + + + Specifies X variable's range. + Specifies Y variable's range. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype + + + Chromosome, which genoteype should be + translated to phenotype + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome + + The method returns array of two double values, which + represent function's input point (X and Y) encoded by the specified + chromosome. + + + + + Function to optimize. + + + Function X input value. + Function Y input value. + + Returns function output value. + + The method should be overloaded by inherited class to + specify the optimization function. + + + + + X variable's optimization range. + + + Defines function's X range. The function's extreme will + be searched in this range only. + + + + + + Y variable's optimization range. + + + Defines function's Y range. The function's extreme will + be searched in this range only. + + + + + + Optimization mode. + + + Defines optimization mode - what kind of extreme to search. + + + + + Optimization modes. + + + The enumeration defines optimization modes for + the two dimensional function optimization. + + + + + Search for function's maximum value. + + + + + Search for function's minimum value. + + + + + Fitness function for symbolic regression (function approximation) problem + + + The fitness function calculates fitness value of + GP and GEP + chromosomes with the aim of solving symbolic regression problem. The fitness function's + value is computed as: + 100.0 / ( error + 1 ) + where error equals to the sum of absolute differences between function values (computed using + the function encoded by chromosome) and input values (function to be approximated). + + Sample usage: + + // constants + double[] constants = new double[5] { 1, 2, 3, 5, 7 }; + // function to be approximated + double[,] data = new double[5, 2] { + {1, 1}, {2, 3}, {3, 6}, {4, 10}, {5, 15} }; + // create population + Population population = new Population( 100, + new GPTreeChromosome( new SimpleGeneFunction( 1 + constants.Length ) ), + new SymbolicRegressionFitness( data, constants ), + new EliteSelection( ) ); + // run one epoch of the population + population.RunEpoch( ); + + + + + + + Initializes a new instance of the class. + + + Function to be approximated. + Array of constants to be used as additional + paramters for genetic expression. + + The parameter defines the function to be approximated and + represents a two dimensional array of (x, y) points. + + The parameter is an array of constants, which can be used as + additional variables for a genetic expression. The actual amount of variables for + genetic expression equals to the amount of constants plus one - the x variable. + + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype . + + + Chromosome, which genoteype should be + translated to phenotype. + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome. + + The method returns string value, which represents approximation + expression written in polish postfix notation. + + + + + Fitness function for times series prediction problem + + + The fitness function calculates fitness value of + GP and GEP + chromosomes with the aim of solving times series prediction problem using + sliding window method. The fitness function's value is computed as: + 100.0 / ( error + 1 ) + where error equals to the sum of absolute differences between predicted value + and actual future value. + + Sample usage: + + // number of points from the past used to predict new one + int windowSize = 5; + // time series to predict + double[] data = new double[13] { 1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79 }; + // constants + double[] constants = new double[10] { 1, 2, 3, 5, 7, 11, 13, 17, 19, 23 }; + // create population + Population population = new Population( 100, + new GPTreeChromosome( new SimpleGeneFunction( windowSize + constants.Length ) ), + new TimeSeriesPredictionFitness( data, windowSize, 1, constants ), + new EliteSelection( ) ); + // run one epoch of the population + population.RunEpoch( ); + + + + + + + Initializes a new instance of the class. + + + Time series to be predicted. + Window size - number of past samples used + to predict future value. + Prediction size - number of values to be predicted. These + values are excluded from training set. + Array of constants to be used as additional + paramters for genetic expression. + + The parameter is a one dimensional array, which defines times + series to predict. The amount of learning samples is equal to the number of samples + in the provided time series, minus window size, minus prediction size. + + The parameter specifies the amount of samples, which should + be excluded from training set. This set of samples may be used for future verification + of the prediction model. + + The parameter is an array of constants, which can be used as + additional variables for a genetic expression. The actual amount of variables for + genetic expression equals to the amount of constants plus the window size. + + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Translates genotype to phenotype. + + + Chromosome, which genoteype should be + translated to phenotype. + + Returns chromosome's fenotype - the actual solution + encoded by the chromosome. + + The method returns string value, which represents prediction + expression written in polish postfix notation. + + The interpretation of the prediction expression is very simple. For example, let's + take a look at sample expression, which was received with window size equal to 5: + $0 $1 - $5 / $2 * + The above expression in postfix polish notation should be interpreted as a next expression: + ( ( x[t - 1] - x[t - 2] ) / const1 ) * x[t - 3] + + + + + + + Population of chromosomes. + + + The class represents population - collection of individuals (chromosomes) + and provides functionality for common population's life cycle - population growing + with help of genetic operators and selection of chromosomes to new generation + with help of selection algorithm. The class may work with any type of chromosomes + implementing interface, use any type of fitness functions + implementing interface and use any type of selection + algorithms implementing interface. + + + + + + Initializes a new instance of the class. + + + Initial size of population. + Ancestor chromosome to use for population creatioin. + Fitness function to use for calculating + chromosome's fitness values. + Selection algorithm to use for selection + chromosome's to new generation. + + Creates new population of specified size. The specified ancestor + becomes first member of the population and is used to create other members + with same parameters, which were used for ancestor's creation. + + Too small population's size was specified. The + exception is thrown in the case if is smaller than 2. + + + + + Regenerate population. + + + The method regenerates population filling it with random chromosomes. + + + + + Do crossover in the population. + + + The method walks through the population and performs crossover operator + taking each two chromosomes in the order of their presence in the population. + The total amount of paired chromosomes is determined by + crossover rate. + + + + + Do mutation in the population. + + + The method walks through the population and performs mutation operator + taking each chromosome one by one. The total amount of mutated chromosomes is + determined by mutation rate. + + + + + Do selection. + + + The method applies selection operator to the current population. Using + specified selection algorithm it selects members to the new generation from current + generates and adds certain amount of random members, if is required + (see ). + + + + + Run one epoch of the population. + + + The method runs one epoch of the population, doing crossover, mutation + and selection by calling , and + . + + + + + Shuffle randomly current population. + + + Population shuffling may be useful in cases when selection + operator results in not random order of chromosomes (for example, after elite + selection population may be ordered in ascending/descending order). + + + + + Add chromosome to the population. + + + Chromosome to add to the population. + + The method adds specified chromosome to the current population. + Manual adding of chromosome maybe useful, when it is required to add some initialized + chromosomes instead of random. + + Adding chromosome manually should be done very carefully, since it + may break the population. The manually added chromosome must have the same type + and initialization parameters as the ancestor passed to constructor. + + + + + + Perform migration between two populations. + + + Population to do migration with. + Number of chromosomes from each population to migrate. + Selection algorithm used to select chromosomes to migrate. + + The method performs migration between two populations - current and the + specified one. During migration + specified number of chromosomes is choosen from + each population using specified selection algorithms + and put into another population replacing worst members there. + + + + + Resize population to the new specified size. + + + New size of population. + + The method does resizing of population. In the case if population + should grow, it just adds missing number of random members. In the case if + population should get smaller, the population's + selection method is used to reduce the population. + + Too small population's size was specified. The + exception is thrown in the case if is smaller than 2. + + + + + Resize population to the new specified size. + + + New size of population. + Selection algorithm to use in the case + if population should get smaller. + + The method does resizing of population. In the case if population + should grow, it just adds missing number of random members. In the case if + population should get smaller, the specified selection method is used to + reduce the population. + + Too small population's size was specified. The + exception is thrown in the case if is smaller than 2. + + + + + Crossover rate, [0.1, 1]. + + + The value determines the amount of chromosomes which participate + in crossover. + + Default value is set to 0.75. + + + + + + Mutation rate, [0.1, 1]. + + + The value determines the amount of chromosomes which participate + in mutation. + + Defaul value is set to 0.1. + + + + + Random selection portion, [0, 0.9]. + + + The value determines the amount of chromosomes which will be + randomly generated for the new population. The property controls the amount + of chromosomes, which are selected to a new population using + selection operator, and amount of random + chromosomes added to the new population. + + Default value is set to 0. + + + + + Determines of auto shuffling is on or off. + + + The property specifies if automatic shuffling needs to be done + on each epoch by calling + method. + + Default value is set to . + + + + + Selection method to use with the population. + + + The property sets selection method which is used to select + population members for a new population - filter population after reproduction + was done with operators like crossover and mutations. + + + + + Fitness function to apply to the population. + + + The property sets fitness function, which is used to evaluate + usefulness of population's chromosomes. Setting new fitness function causes recalculation + of fitness values for all population's members and new best member will be found. + + + + + + Maximum fitness of the population. + + + The property keeps maximum fitness of chromosomes currently existing + in the population. + + The property is recalculate only after selection + or migration was done. + + + + + + Summary fitness of the population. + + + The property keeps summary fitness of all chromosome existing in the + population. + + The property is recalculate only after selection + or migration was done. + + + + + + Average fitness of the population. + + + The property keeps average fitness of all chromosome existing in the + population. + + The property is recalculate only after selection + or migration was done. + + + + + + Best chromosome of the population. + + + The property keeps the best chromosome existing in the population + or if all chromosomes have 0 fitness. + + The property is recalculate only after selection + or migration was done. + + + + + + Size of the population. + + + The property keeps initial (minimal) size of population. + Population always returns to this size after selection operator was applied, + which happens after or methods + call. + + + + + Get chromosome with specified index. + + + Chromosome's index to retrieve. + + Allows to access individuals of the population. + + + + + Elite selection method. + + + Elite selection method selects specified amount of + best chromosomes to the next generation. + + + + + Genetic selection method interface. + + + The interface should be implemented by all classes, which + implement genetic selection algorithm. These algorithms select members of + current generation, which should be kept in the new generation. Basically, + these algorithms filter provided population keeping only specified amount of + members. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population according to the implemented + selection algorithm. + + + + + Initializes a new instance of the class. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population keeping only specified amount of best + chromosomes. + + + + + Rank selection method. + + + The algorithm selects chromosomes to the new generation depending on + their fitness values - the better fitness value chromosome has, the more chances + it has to become member of the new generation. Each chromosome can be selected + several times to the new generation. + + This algorithm is similar to Roulette Wheel + Selection algorithm, but the difference is in "wheel" and its sectors' size + calculation method. The size of the wheel equals to size * ( size + 1 ) / 2, + where size is the current size of population. The worst chromosome has its sector's + size equal to 1, the next chromosome has its sector's size equal to 2, etc. + + + + + + Initializes a new instance of the class. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population keeping only those chromosomes, which + won "roulette" game. + + + + + Roulette wheel selection method. + + + The algorithm selects chromosomes to the new generation according to + their fitness values - the more fitness value chromosome has, the more chances + it has to become member of new generation. Each chromosome can be selected + several times to the new generation. + + The "roulette's wheel" is divided into sectors, which size is proportional to + the fitness values of chromosomes - the size of the wheel is the sum of all fitness + values, size of each sector equals to fitness value of chromosome. + + + + + + Initializes a new instance of the class. + + + + + Apply selection to the specified population. + + + Population, which should be filtered. + The amount of chromosomes to keep. + + Filters specified population keeping only those chromosomes, which + won "roulette" game. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/Accord.IO.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/Accord.IO.3.0.2.nupkg new file mode 100644 index 0000000000..5151e1be0 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/Accord.IO.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net35/Accord.IO.dll b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net35/Accord.IO.dll new file mode 100644 index 0000000000..47ef27297 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net35/Accord.IO.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net35/Accord.IO.xml b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net35/Accord.IO.xml new file mode 100644 index 0000000000..7bb9be967 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net35/Accord.IO.xml @@ -0,0 +1,2178 @@ + + + + Accord.IO + + + + + Represents a reader that provides fast, non-cached, forward-only access to CSV data. + + + + + + Defines the default buffer size. + + + + + + Defines the default delimiter character separating each field. + + + + + + Defines the default quote character wrapping every field. + + + + + + Defines the default escape character letting insert quotation characters inside a quoted field. + + + + + + Defines the default comment character indicating that a line is commented out. + + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The buffer size in bytes. + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field. If set to zero, the + delimiter will be detected from the file automatically. Default is '\0' (zero). + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field. If set to zero, the + delimiter will be detected from the file automatically. Default is '\0' (zero). + The buffer size in bytes. + + + + + Creates a new CsvReader to read from a string. + + + The text containing the fields in the CSV format. + if field names are located on the first non commented line, otherwise, . + + + + + Raises the event. + + + The that contains the event data. + + + + + Gets the field headers. + + + The field headers or an empty array if headers are not supported. + + + The instance has been disposed of. + + + + + + Reads the entire stream into a DataTable. + + + A System.DataTable containing the read values. + + + + + Reads the entire stream into a DataTable. + + + A System.DataTable containing the read values. + + + + + Reads the entire stream into a list of records. + + + A list containing all records in the file. + + + + + Gets the field index for the provided header. + + The header to look for. + The field index for the provided header. -1 if not found. + + The instance has been disposed of. + + + + + Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array. + + + The one-dimensional that is the destination of the fields of the current record. + + + is . + + + + + + Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array. + + + The one-dimensional that is the destination of the fields of the current record. + The zero-based index in at which copying begins. + + + is . + + + is les than zero or is equal to or greater than the length . + + + No current record. + + + The number of fields in the record is greater than the available space from to the end of . + + + + + + Gets the current raw CSV data. + + + Used for exception handling purposes. + + The current raw CSV data. + + + + + Ensures that the reader is initialized. + + + + + Indicates whether the specified Unicode character is categorized as white space. + + A Unicode character. + if is white space; otherwise, . + + + + Moves to the specified record index. + + + The record index. + + true if the operation was successful; otherwise, false. + + + The instance has been disposed of. + + + + + + Reads the next record. + + + if a record has been successfully reads; otherwise, . + + + The instance has been disposed of. + + + + + + Parses a new line delimiter. + + + The starting position of the parsing. Will contain the resulting end position. + + if a new line delimiter was found; otherwise, . + + + The instance has been disposed of. + + + + + + Determines whether the character at the specified position is a new line delimiter. + + + The position of the character to verify. + + + if the character at the specified position is a new line delimiter; otherwise, . + + + + + + Fills the buffer with data from the reader. + + if data was successfully read; otherwise, . + + The instance has been disposed of. + + + + + Reads the field at the specified index. + Any unread fields with an inferior index will also be read as part of the required parsing. + + The field index. + Indicates if the reader is currently initializing. + Indicates if the value(s) are discarded. + + The field at the specified index. + A indicates that an error occured or that the last field has been reached during initialization. + + + is out of range. + + + There is no current record. + + + The CSV data appears to be missing a field. + + + The CSV data appears to be malformed. + + + The instance has been disposed of. + + + + + Reads the next record. + + + Indicates if the reader will proceed to the next record after having read headers. + if it stops after having read headers; otherwise, . + + + Indicates if the reader will skip directly to the next line without parsing the current one. + To be used when an error occurs. + + if a record has been successfully reads; otherwise, . + + The instance has been disposed of. + + + + + Skips empty and commented lines. + If the end of the buffer is reached, its content be discarded and filled again from the reader. + + + The position in the buffer where to start parsing. + Will contains the resulting position after the operation. + + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Worker method. + Skips empty and commented lines. + + + The position in the buffer where to start parsing. + Will contains the resulting position after the operation. + + + The instance has been disposed of. + + + + + Skips whitespace characters. + + The starting position of the parsing. Will contain the resulting end position. + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Skips ahead to the next NewLine character. + If the end of the buffer is reached, its content be discarded and filled again from the reader. + + + The position in the buffer where to start parsing. + Will contain the resulting position after the operation. + + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Handles a parsing error. + + The parsing error that occured. + The current position in the buffer. + + is . + + + + + Handles a missing field error. + + The partially parsed value, if available. + The missing field index. + The current position in the raw data. + + The resulting value according to . + If the action is set to , + then the parse error will be handled according to . + + + + + Validates the state of the data reader. + + The validations to accomplish. + + No current record. + + + This operation is invalid when the reader is closed. + + + + + Copy the value of the specified field to an array. + + The index of the field. + The offset in the field value. + The destination array where the field value will be copied. + The destination array offset. + The number of characters to copy from the field value. + + + + + Returns an that can iterate through CSV records. + + An that can iterate through CSV records. + + The instance has been disposed of. + + + + + Contains the disposed status flag. + + + + + Contains the locking object for multi-threading purpose. + + + + + Raises the event. + + A that contains the event data. + + + + Checks if the instance has been disposed of, and if it has, throws an ; otherwise, does nothing. + + + The instance has been disposed of. + + + Derived classes should call this method at the start of all methods and properties that should not be accessed after a call to . + + + + + Releases all resources used by the instance. + + + Calls with the disposing parameter set to to free unmanaged and managed resources. + + + + + Closes the Object. + + + + + + Releases the unmanaged resources used by this instance and optionally releases the managed resources. + + + to release both managed and unmanaged resources; to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the instance is reclaimed by garbage collection. + + + + + Occurs when there is an error while parsing the CSV stream. + + + + + + Gets the comment character indicating that + a line is commented out. Default is '#'. + + + The comment character indicating that a line is commented out. + + + + + Gets the escape character letting insert quotation + characters inside a quoted field. Default is '"'. + + + The escape character letting insert quotation characters inside a quoted field. + + + + + Gets the delimiter character separating each field. If + set to zero ('\0') the reader will try to guess the + delimiter character automatically from the first line + of the file. + + + The delimiter character separating each field. + + + + + Gets the quotation character wrapping + every field. Default is '"'. + + + The quotation character wrapping every field. + + + + + Indicates if field names are located on the first non commented line. + + + if field names are located on the first non commented line, otherwise, . + + + + + Indicates if spaces at the start and end of a field + are trimmed. Default is to trim unquoted fields only. + + + if spaces at the start and end of a field are trimmed, otherwise, . + + + + + Gets the buffer size. + + + + + + Gets or sets the default action to take when a parsing error has occured. + + + The default action to take when a parsing error has occured. + + + + + Gets or sets the action to take when a field is missing. + + + The action to take when a field is missing. + + + + + Gets or sets a value indicating if the reader supports multiline fields. + + + A value indicating if the reader supports multiline field. + + + + + Gets or sets a value indicating if the reader will skip empty lines. + + + A value indicating if the reader will skip empty lines. + + + + + Gets or sets the default header name when it is an empty string or only whitespaces. + The header index will be appended to the specified name. Default is "Column". + + + The default header name when it is an empty string or only whitespaces. + + + + + Gets the maximum number of fields to retrieve for each record. + + + The maximum number of fields to retrieve for each record. + + + The instance has been disposed of. + + + + + + Gets a value that indicates whether the current stream position is at the end of the stream. + + + if the current stream position is at the end of the stream; otherwise . + + + + + Gets the current record index in the CSV file. + + + The current record index in the CSV file. + + + + + Indicates if one or more field are missing for the current record. + Resets after each successful record read. + + + + + + Indicates if a parse error occurred for the current record. + Resets after each successful record read. + + + + + + Gets the field with the specified name and record position. must be . + + + + The field with the specified name and record position. + + + + is or an empty string. + + + The CSV does not have headers ( property is ). + + + not found. + + + Record index must be > 0. + + + Cannot move to a previous record in forward-only mode. + + + Cannot read record at . + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + + Gets the field at the specified index and record position. + + + The field at the specified index and record position. + A is returned if the field cannot be found for the record. + + + must be included in [0, [. + + + Record index must be > 0. + + + Cannot move to a previous record in forward-only mode. + + + Cannot read record at . + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + + Gets the field with the specified name. must be . + + + The field with the specified name. + + + is or an empty string. + + + The CSV does not have headers ( property is ). + + + not found. + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Gets the field at the specified index. + + The field at the specified index. + + must be included in [0, [. + + + No record read yet. Call ReadLine() first. + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Occurs when the instance is disposed of. + + + + + Gets a value indicating whether the instance has been disposed of. + + + if the instance has been disposed of; otherwise, . + + + + + Defines the data reader validations. + + + + + + No validation. + + + + + + Validate that the data reader is initialized. + + + + + + Validate that the data reader is not closed. + + + + + + Supports a simple iteration over the records of a . + + + + + Contains the enumerated . + + + + + Contains the current record. + + + + + Contains the current record index. + + + + + Initializes a new instance of the class. + + The to iterate over. + + is a . + + + + + Advances the enumerator to the next record of the CSV. + + if the enumerator was successfully advanced to the next record, if the enumerator has passed the end of the CSV. + + + + Sets the enumerator to its initial position, which is before the first record in the CSV. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets the current record. + + + + + Gets the current record. + + + + + Writer for CSV data. + + + + + + Initializes a new instance of the class. + + + A pointing to the CSV file. + + + + + Initializes a new instance of the class. + + + A pointing to the CSV file. + The field delimiter character to separate values in the CSV file. + If set to zero, will use the system's default text separator. Default is '\0' (zero). + + + + + Initializes a new instance of the + class to write the CSV fields to a in-memory string. + + + A to write to. + + + + + Initializes a new instance of the + class to write the CSV fields to a in-memory string. + + + A to write to. + The field delimiter character to separate values in the CSV file. + If set to zero, will use the system's default text separator. Default is '\0' (zero). + + + + + Writes the column names of a data table as the headers of the CSV file. + + + A DataTable whose columns names will be written as headers. + + + + + Writes the specified matrix in CSV format. + + + The matrix data type. + The table to be written. + + + + + Writes the specified matrix in CSV format. + + + The matrix data type. + The table to be written. + + + + + Writes the specified table in a CSV format. + + + The data table to be written. + + + + + Writes the specified fields in a CSV format. + + + The fields to be written. + + + + + Writes the specified fields in a CSV format. + + + The fields to be written. + An optional comment for the line. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Finalizes an instance of the class. + + + + + + Releases unmanaged and - optionally - managed resources. + + + true to release both managed and + unmanaged resources; false to release only unmanaged resources. + + + + + + Gets the writer. + + + + The writer. + + + + + + Gets or sets the comment character indicating that a line is commented out. + + + The comment character indicating that a line is commented out. + + + + + Gets or sets the escape character letting insert quotation characters inside a quoted field. + + + The escape character letting insert quotation characters inside a quoted field. + + + + + Gets or sets the delimiter character separating each field. + + + The delimiter character separating each field. + + + + + Gets or sets the quotation character wrapping every field. + + + The quotation character wrapping every field. + + + + + Gets or sets the format provider to use when converting + data-types to text representations. Default is to use + CultureInfo.InvariantCulture. + + + + The format provider. + + + + + + Provides data for the event. + + + + + + Initializes a new instance of the ParseErrorEventArgs class. + + + The error that occurred. + The default action to take. + + + + + Gets the error that occurred. + + + The error that occurred. + + + + + Gets or sets the action to take. + + + The action to take. + + + + + Represents the exception that is thrown when a CSV file is malformed. + + + + + + Initializes a new instance of the MalformedCsvException class. + + + + + + Initializes a new instance of the MalformedCsvException class. + + + The message that describes the error. + + + + + Initializes a new instance of the MalformedCsvException class. + + + The message that describes the error. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MalformedCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + + + + + Initializes a new instance of the MalformedCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MalformedCsvException class with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + When overridden in a derived class, sets the with information about the exception. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Gets the raw data when the error occurred. + + + The raw data when the error occurred. + + + + + Gets the current position in the raw data. + + + The current position in the raw data. + + + + + Gets the current record index. + + + The current record index. + + + + + Gets the current field index. + + + The current record index. + + + + + Gets a message that describes the current exception. + + + A message that describes the current exception. + + + + + Represents the exception that is thrown when a there is a missing field in a record of the CSV file. + + + + MissingFieldException would have been a better name, but there is already a . + + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The message that describes the error. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The message that describes the error. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MissingFieldCsvException class with serialized data. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Data types which can be contained in a IDX data file. + + + + + + + + byte (0x08) + + + + + + sbyte (0x09) + + + + + + short (0x0B) + + + + + + int (0x0C) + + + + + + float (0x0D) + + + + + + double (0x0E) + + + + + + Reader for IDX files (such as MNIST's digit database). + + + + + + Creates a new . + + + The path for the IDX file. + + + + + Creates a new . + + + The path for the IDX file. + + Pass true if the stream contains + a compressed (.gz) file. Default is true. + + + + + Creates a new . + + + The input stream containing the IDX file. + + + + + Creates a new . + + + The input stream containing the IDX file. + + Pass true if the stream contains + a compressed (.gz) file. Default is true. + + + + + Reads the next sample into the given array. + + + The array to contain the samples. + + How many bytes were read. + + + + + Reads the next sample as a value. + + + A single number containing the sample. + + + + + Reads the next sample as a vector. + + + A unidimensional array containing the sample. + + + + + Reads the next sample as a matrix. + + + A multidimensional array containing the sample. + + + + + Reads the next sample as a value. + + + The data type to be used. + + A single number containing the sample. + + + + + Reads the next sample as a vector. + + + The data type to be used. + + A unidimensional array containing the sample. + + + + + Reads the next sample as a matrix. + + + The data type to be used. + + A multidimensional array containing the sample. + + + + + Reads all samples in the file, starting from the current position, as matrices. + + + The data type to be used. + + + An array containing all samples from the current point until the end of the stream. + + + + + + Reads all samples in the file, starting from the current position, as vectors. + + + The data type to be used. + + + An array containing all samples from the current point until the end of the stream. + + + + + + Reads all samples in the file, starting from the current position, as vectors. + + + The data type to be used. + + + An array containing all samples from the current point until the end of the stream. + + + + + + Translates the given to a .NET . + + + The type to be translated. + + + A .NET that represents the . + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + MNIST's magic number. See remarks for more details + + + + + The magic number is an integer (MSB first). The first 2 bytes + are always 0. The third byte codes the type of the data. The + 4-th byte codes the number of dimensions of the vector/matrix: + 1 for vectors, 2 for matrices. + + + + + Code + Meaning + + + 0x08unsigned byte + + 0x09signed byte + + 0x0Bshort (2 bytes) + + 0x0Cint (4 bytes) + + 0x0Dfloat (4 bytes) + + 0x0Edouble (8 bytes) + + + + + + + Gets the type of the data stored in this file. + + + + + + Gets the number of dimensions for the samples. + + + + + + Gets the number of samples stored in this file. + + + + + + Returns the underlying stream. + + + + + + Excel file reader using Microsoft Jet Database Engine. + + + + + This class requires the Microsoft Access Database Engine + to work. The download is available from Microsoft under + the name "Microsoft Access Database Engine 2010 Redistributable", + available in both 32-bit (x86) and 64-bit (x64) versions. + + + By default, the redistributable package will only install + if it is the same as the current version of Microsoft Office + installed in the machine (i.e. ACE 32-bit can not be installed + with 64-bit office and vice-versa). To overcome this limitation + and install both versions of the ACE drivers, specify /passive + as a command line argument when installing the packages. + + + + + + // Create a new reader, opening a given path + ExcelReader reader = new ExcelReader(path); + + // Afterwards, we can query the file for all + // worksheets within the specified workbook: + string[] sheets = reader.GetWorksheetList(); + + // Finally, we can request an specific sheet: + DataTable table = reader.GetWorksheet(sheets[1]); + + // Now, we have loaded the Excel file into a DataTable. We + // can go further and transform it into a matrix to start + // running other algorithms on it: + + double[,] matrix = table.ToMatrix(); + + // We can also do it retrieving the name for each column: + string[] columnNames; matrix = table.ToMatrix(out columnNames); + + // Or we can extract specific columns into single arrays: + double[] column = table.Columns[0].ToArray(); + + // PS: you might need to import the Accord.Math namespace in + // order to be able to call the ToMatrix extension methods. + + + + + + + Creates a new spreadsheet reader. + + + The stream containing the spreadsheet file. + True if the file should be treated as .xlsx file, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The stream containing the spreadsheet file. + True if the file should be treated as .xlsx file, false otherwise. Default is true. + True if the spreadsheet contains headers, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The stream containing the spreadsheet file. + True if the file should be treated as .xlsx file, false otherwise. Default is true. + True if the spreadsheet contains headers, false otherwise. Default is true. + True to read "intermixed" data columns as text, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The path of for the spreadsheet file. + + + + + Creates a new spreadsheet reader. + + + The path of for the spreadsheet file. + True if the spreadsheet contains headers, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The path of for the spreadsheet file. + True if the spreadsheet contains headers, false otherwise. Default is true. + True to read "intermixed" data columns as text, false otherwise. Default is true. + + + + + Gets the list of worksheets in the spreadsheet. + + + + + + Gets the list of columns in a worksheet. + + + + + + Gets an worksheet as a data table. + + + + + + Gets an worksheet as a data table. + + + + + + Gets the entire worksheet as a data set. + + + + + + Gets the data provider used by the reader. + + + + + + Gets the Excel version used by the reader. + + + + + + Gets whether the workbook has column headers. + + + + + + Gets whether the data contains mixed string and numeric data. + + + + + + Gets the names of the distinct sheets + that are contained in the Excel file. + + + + + + Specifies the action to take when a field is missing. + + + + + + Treat as a parsing error. + + + + + + Replaces by an empty value. + + + + + + Replaces by a null value (). + + + + + + Specifies the action to take when a parsing error has occurred. + + + + + + Raises the event. + + + + + + Tries to advance to next line. + + + + + + Throws an exception. + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Buffer size must be 1 or more.. + + + + + Looks up a localized string similar to Cannot move to a previous record in forward-only mode.. + + + + + Looks up a localized string similar to Cannot read record at index '{0}'.. + + + + + Looks up a localized string similar to Enumeration has either not started or has already finished.. + + + + + Looks up a localized string similar to Collection was modified; enumeration operation may not execute.. + + + + + Looks up a localized string similar to '{0}' field header not found.. + + + + + Looks up a localized string similar to Field index must be included in [0, FieldCount[. Specified field index was : '{0}'.. + + + + + Looks up a localized string similar to The CSV appears to be corrupt near record '{0}' field '{1} at position '{2}'. Current raw data : '{3}'.. + + + + + Looks up a localized string similar to '{0}' is not a supported missing field action.. + + + + + Looks up a localized string similar to No current record.. + + + + + Looks up a localized string similar to The CSV does not have headers (CsvReader.HasHeaders property is false).. + + + + + Looks up a localized string similar to The number of fields in the record is greater than the available space from index to the end of the destination array.. + + + + + Looks up a localized string similar to '{0}' is not a valid ParseErrorAction while inside a ParseError event.. + + + + + Looks up a localized string similar to '{0}' is not a supported ParseErrorAction.. + + + + + Looks up a localized string similar to This operation is invalid when the reader is closed.. + + + + + Looks up a localized string similar to Record index must be 0 or more.. + + + + + Reader for data files containing samples in libsvm's sparse format. + + + + + The following example shows how to read all sparse samples from a file + and retrieve them as a dense multidimensional vector. + + + // Suppose we are going to read a sparse sample file containing + // samples which have an actual dimension of 4. Since the samples + // are in a sparse format, each entry in the file will probably + // have a much lesser number of elements. + // + int sampleSize = 4; + + // Create a new Sparse Sample Reader to read any given file, + // passing the correct dense sample size in the constructor + // + SparseReader reader = new SparseReader(file, Encoding.Default, sampleSize); + + // Declare a vector to obtain the label + // of each of the samples in the file + // + int[] labels = null; + + // Declare a vector to obtain the description (or comments) + // about each of the samples in the file, if present. + // + string[] descriptions = null; + + // Read the sparse samples and store them in a dense vector array + double[][] samples = reader.ReadToEnd(out labels, out descriptions); + + + Additionally, it is also possible to read each sample + individually and sequentially. For this, we can use a while + loop until we reach the end of the stream. + + + // Suppose we are going to read a sparse sample file containing + // samples which have an actual dimension of 4. Since the samples + // are in a sparse format, each entry in the file will probably + // have a much lesser number of elements. + // + int sampleSize = 4; + + // Create a new Sparse Sample Reader to read any given file, + // passing the correct dense sample size in the constructor + // + SparseReader reader = new SparseReader(file, Encoding.Default, sampleSize); + + // Declare some variables to receive each sample + // + int label = 0; + string description; + double[] sample; + + // Read a single sample from the file + sample = reader.ReadDense(out label, out description); + + // Read all other samples from the file + while (!reader.EndOfStream) + { + sample = reader.ReadDense(out label, out description); + } + + + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + The character encoding to use. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + The character encoding to use. + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + The character encoding to use. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + A StreamReader containing the file to be read. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + The character encoding to use. + + + + + Initializes a new instance of the class. + + + A StreamReader containing the file to be read. + + + + + Reads a sparse sample from the current stream + and returns it as a sparse vector. + + + The label of the sample. + An optional description accompanying the sample. + A vector in sparse representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a sparse vector. + + + The label of the sample. + A vector in sparse representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a dense vector. + + + The label of the sample. + An optional description accompanying the sample. + + A vector in dense representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a dense vector. + + + The output value associated with the sample. + An optional description accompanying the sample. + + A vector in dense representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a dense vector. + + + The label of the sample. + A vector in dense representation containing the sample. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' labels. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' output values. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' labels. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' output values. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' labels. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' output values. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' labels. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' labels. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Returns the underlying stream. + + + + + + Gets or sets whether to include an intercept term + (bias) value at the beginning of each new sample. + Default is null (don't include anything). + + + + + + Gets the number of features present in this dataset. Please + note that, when using the sparse representation, it is not + strictly necessary to know this value. + + + + + + Gets a value that indicates whether the current + stream position is at the end of the stream. + + + + + + Field trimming options. + + + + + + Do not trim any fields. + + + + + + Only trim unquoted fields. + + + + + + Only Trim quoted fields. + + + + + + Trim all fields (quoted and unquoted). + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net40/Accord.IO.dll b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net40/Accord.IO.dll new file mode 100644 index 0000000000..e4f94e439 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net40/Accord.IO.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net40/Accord.IO.xml b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net40/Accord.IO.xml new file mode 100644 index 0000000000..7bb9be967 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net40/Accord.IO.xml @@ -0,0 +1,2178 @@ + + + + Accord.IO + + + + + Represents a reader that provides fast, non-cached, forward-only access to CSV data. + + + + + + Defines the default buffer size. + + + + + + Defines the default delimiter character separating each field. + + + + + + Defines the default quote character wrapping every field. + + + + + + Defines the default escape character letting insert quotation characters inside a quoted field. + + + + + + Defines the default comment character indicating that a line is commented out. + + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The buffer size in bytes. + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field. If set to zero, the + delimiter will be detected from the file automatically. Default is '\0' (zero). + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field. If set to zero, the + delimiter will be detected from the file automatically. Default is '\0' (zero). + The buffer size in bytes. + + + + + Creates a new CsvReader to read from a string. + + + The text containing the fields in the CSV format. + if field names are located on the first non commented line, otherwise, . + + + + + Raises the event. + + + The that contains the event data. + + + + + Gets the field headers. + + + The field headers or an empty array if headers are not supported. + + + The instance has been disposed of. + + + + + + Reads the entire stream into a DataTable. + + + A System.DataTable containing the read values. + + + + + Reads the entire stream into a DataTable. + + + A System.DataTable containing the read values. + + + + + Reads the entire stream into a list of records. + + + A list containing all records in the file. + + + + + Gets the field index for the provided header. + + The header to look for. + The field index for the provided header. -1 if not found. + + The instance has been disposed of. + + + + + Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array. + + + The one-dimensional that is the destination of the fields of the current record. + + + is . + + + + + + Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array. + + + The one-dimensional that is the destination of the fields of the current record. + The zero-based index in at which copying begins. + + + is . + + + is les than zero or is equal to or greater than the length . + + + No current record. + + + The number of fields in the record is greater than the available space from to the end of . + + + + + + Gets the current raw CSV data. + + + Used for exception handling purposes. + + The current raw CSV data. + + + + + Ensures that the reader is initialized. + + + + + Indicates whether the specified Unicode character is categorized as white space. + + A Unicode character. + if is white space; otherwise, . + + + + Moves to the specified record index. + + + The record index. + + true if the operation was successful; otherwise, false. + + + The instance has been disposed of. + + + + + + Reads the next record. + + + if a record has been successfully reads; otherwise, . + + + The instance has been disposed of. + + + + + + Parses a new line delimiter. + + + The starting position of the parsing. Will contain the resulting end position. + + if a new line delimiter was found; otherwise, . + + + The instance has been disposed of. + + + + + + Determines whether the character at the specified position is a new line delimiter. + + + The position of the character to verify. + + + if the character at the specified position is a new line delimiter; otherwise, . + + + + + + Fills the buffer with data from the reader. + + if data was successfully read; otherwise, . + + The instance has been disposed of. + + + + + Reads the field at the specified index. + Any unread fields with an inferior index will also be read as part of the required parsing. + + The field index. + Indicates if the reader is currently initializing. + Indicates if the value(s) are discarded. + + The field at the specified index. + A indicates that an error occured or that the last field has been reached during initialization. + + + is out of range. + + + There is no current record. + + + The CSV data appears to be missing a field. + + + The CSV data appears to be malformed. + + + The instance has been disposed of. + + + + + Reads the next record. + + + Indicates if the reader will proceed to the next record after having read headers. + if it stops after having read headers; otherwise, . + + + Indicates if the reader will skip directly to the next line without parsing the current one. + To be used when an error occurs. + + if a record has been successfully reads; otherwise, . + + The instance has been disposed of. + + + + + Skips empty and commented lines. + If the end of the buffer is reached, its content be discarded and filled again from the reader. + + + The position in the buffer where to start parsing. + Will contains the resulting position after the operation. + + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Worker method. + Skips empty and commented lines. + + + The position in the buffer where to start parsing. + Will contains the resulting position after the operation. + + + The instance has been disposed of. + + + + + Skips whitespace characters. + + The starting position of the parsing. Will contain the resulting end position. + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Skips ahead to the next NewLine character. + If the end of the buffer is reached, its content be discarded and filled again from the reader. + + + The position in the buffer where to start parsing. + Will contain the resulting position after the operation. + + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Handles a parsing error. + + The parsing error that occured. + The current position in the buffer. + + is . + + + + + Handles a missing field error. + + The partially parsed value, if available. + The missing field index. + The current position in the raw data. + + The resulting value according to . + If the action is set to , + then the parse error will be handled according to . + + + + + Validates the state of the data reader. + + The validations to accomplish. + + No current record. + + + This operation is invalid when the reader is closed. + + + + + Copy the value of the specified field to an array. + + The index of the field. + The offset in the field value. + The destination array where the field value will be copied. + The destination array offset. + The number of characters to copy from the field value. + + + + + Returns an that can iterate through CSV records. + + An that can iterate through CSV records. + + The instance has been disposed of. + + + + + Contains the disposed status flag. + + + + + Contains the locking object for multi-threading purpose. + + + + + Raises the event. + + A that contains the event data. + + + + Checks if the instance has been disposed of, and if it has, throws an ; otherwise, does nothing. + + + The instance has been disposed of. + + + Derived classes should call this method at the start of all methods and properties that should not be accessed after a call to . + + + + + Releases all resources used by the instance. + + + Calls with the disposing parameter set to to free unmanaged and managed resources. + + + + + Closes the Object. + + + + + + Releases the unmanaged resources used by this instance and optionally releases the managed resources. + + + to release both managed and unmanaged resources; to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the instance is reclaimed by garbage collection. + + + + + Occurs when there is an error while parsing the CSV stream. + + + + + + Gets the comment character indicating that + a line is commented out. Default is '#'. + + + The comment character indicating that a line is commented out. + + + + + Gets the escape character letting insert quotation + characters inside a quoted field. Default is '"'. + + + The escape character letting insert quotation characters inside a quoted field. + + + + + Gets the delimiter character separating each field. If + set to zero ('\0') the reader will try to guess the + delimiter character automatically from the first line + of the file. + + + The delimiter character separating each field. + + + + + Gets the quotation character wrapping + every field. Default is '"'. + + + The quotation character wrapping every field. + + + + + Indicates if field names are located on the first non commented line. + + + if field names are located on the first non commented line, otherwise, . + + + + + Indicates if spaces at the start and end of a field + are trimmed. Default is to trim unquoted fields only. + + + if spaces at the start and end of a field are trimmed, otherwise, . + + + + + Gets the buffer size. + + + + + + Gets or sets the default action to take when a parsing error has occured. + + + The default action to take when a parsing error has occured. + + + + + Gets or sets the action to take when a field is missing. + + + The action to take when a field is missing. + + + + + Gets or sets a value indicating if the reader supports multiline fields. + + + A value indicating if the reader supports multiline field. + + + + + Gets or sets a value indicating if the reader will skip empty lines. + + + A value indicating if the reader will skip empty lines. + + + + + Gets or sets the default header name when it is an empty string or only whitespaces. + The header index will be appended to the specified name. Default is "Column". + + + The default header name when it is an empty string or only whitespaces. + + + + + Gets the maximum number of fields to retrieve for each record. + + + The maximum number of fields to retrieve for each record. + + + The instance has been disposed of. + + + + + + Gets a value that indicates whether the current stream position is at the end of the stream. + + + if the current stream position is at the end of the stream; otherwise . + + + + + Gets the current record index in the CSV file. + + + The current record index in the CSV file. + + + + + Indicates if one or more field are missing for the current record. + Resets after each successful record read. + + + + + + Indicates if a parse error occurred for the current record. + Resets after each successful record read. + + + + + + Gets the field with the specified name and record position. must be . + + + + The field with the specified name and record position. + + + + is or an empty string. + + + The CSV does not have headers ( property is ). + + + not found. + + + Record index must be > 0. + + + Cannot move to a previous record in forward-only mode. + + + Cannot read record at . + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + + Gets the field at the specified index and record position. + + + The field at the specified index and record position. + A is returned if the field cannot be found for the record. + + + must be included in [0, [. + + + Record index must be > 0. + + + Cannot move to a previous record in forward-only mode. + + + Cannot read record at . + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + + Gets the field with the specified name. must be . + + + The field with the specified name. + + + is or an empty string. + + + The CSV does not have headers ( property is ). + + + not found. + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Gets the field at the specified index. + + The field at the specified index. + + must be included in [0, [. + + + No record read yet. Call ReadLine() first. + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Occurs when the instance is disposed of. + + + + + Gets a value indicating whether the instance has been disposed of. + + + if the instance has been disposed of; otherwise, . + + + + + Defines the data reader validations. + + + + + + No validation. + + + + + + Validate that the data reader is initialized. + + + + + + Validate that the data reader is not closed. + + + + + + Supports a simple iteration over the records of a . + + + + + Contains the enumerated . + + + + + Contains the current record. + + + + + Contains the current record index. + + + + + Initializes a new instance of the class. + + The to iterate over. + + is a . + + + + + Advances the enumerator to the next record of the CSV. + + if the enumerator was successfully advanced to the next record, if the enumerator has passed the end of the CSV. + + + + Sets the enumerator to its initial position, which is before the first record in the CSV. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets the current record. + + + + + Gets the current record. + + + + + Writer for CSV data. + + + + + + Initializes a new instance of the class. + + + A pointing to the CSV file. + + + + + Initializes a new instance of the class. + + + A pointing to the CSV file. + The field delimiter character to separate values in the CSV file. + If set to zero, will use the system's default text separator. Default is '\0' (zero). + + + + + Initializes a new instance of the + class to write the CSV fields to a in-memory string. + + + A to write to. + + + + + Initializes a new instance of the + class to write the CSV fields to a in-memory string. + + + A to write to. + The field delimiter character to separate values in the CSV file. + If set to zero, will use the system's default text separator. Default is '\0' (zero). + + + + + Writes the column names of a data table as the headers of the CSV file. + + + A DataTable whose columns names will be written as headers. + + + + + Writes the specified matrix in CSV format. + + + The matrix data type. + The table to be written. + + + + + Writes the specified matrix in CSV format. + + + The matrix data type. + The table to be written. + + + + + Writes the specified table in a CSV format. + + + The data table to be written. + + + + + Writes the specified fields in a CSV format. + + + The fields to be written. + + + + + Writes the specified fields in a CSV format. + + + The fields to be written. + An optional comment for the line. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Finalizes an instance of the class. + + + + + + Releases unmanaged and - optionally - managed resources. + + + true to release both managed and + unmanaged resources; false to release only unmanaged resources. + + + + + + Gets the writer. + + + + The writer. + + + + + + Gets or sets the comment character indicating that a line is commented out. + + + The comment character indicating that a line is commented out. + + + + + Gets or sets the escape character letting insert quotation characters inside a quoted field. + + + The escape character letting insert quotation characters inside a quoted field. + + + + + Gets or sets the delimiter character separating each field. + + + The delimiter character separating each field. + + + + + Gets or sets the quotation character wrapping every field. + + + The quotation character wrapping every field. + + + + + Gets or sets the format provider to use when converting + data-types to text representations. Default is to use + CultureInfo.InvariantCulture. + + + + The format provider. + + + + + + Provides data for the event. + + + + + + Initializes a new instance of the ParseErrorEventArgs class. + + + The error that occurred. + The default action to take. + + + + + Gets the error that occurred. + + + The error that occurred. + + + + + Gets or sets the action to take. + + + The action to take. + + + + + Represents the exception that is thrown when a CSV file is malformed. + + + + + + Initializes a new instance of the MalformedCsvException class. + + + + + + Initializes a new instance of the MalformedCsvException class. + + + The message that describes the error. + + + + + Initializes a new instance of the MalformedCsvException class. + + + The message that describes the error. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MalformedCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + + + + + Initializes a new instance of the MalformedCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MalformedCsvException class with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + When overridden in a derived class, sets the with information about the exception. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Gets the raw data when the error occurred. + + + The raw data when the error occurred. + + + + + Gets the current position in the raw data. + + + The current position in the raw data. + + + + + Gets the current record index. + + + The current record index. + + + + + Gets the current field index. + + + The current record index. + + + + + Gets a message that describes the current exception. + + + A message that describes the current exception. + + + + + Represents the exception that is thrown when a there is a missing field in a record of the CSV file. + + + + MissingFieldException would have been a better name, but there is already a . + + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The message that describes the error. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The message that describes the error. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MissingFieldCsvException class with serialized data. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Data types which can be contained in a IDX data file. + + + + + + + + byte (0x08) + + + + + + sbyte (0x09) + + + + + + short (0x0B) + + + + + + int (0x0C) + + + + + + float (0x0D) + + + + + + double (0x0E) + + + + + + Reader for IDX files (such as MNIST's digit database). + + + + + + Creates a new . + + + The path for the IDX file. + + + + + Creates a new . + + + The path for the IDX file. + + Pass true if the stream contains + a compressed (.gz) file. Default is true. + + + + + Creates a new . + + + The input stream containing the IDX file. + + + + + Creates a new . + + + The input stream containing the IDX file. + + Pass true if the stream contains + a compressed (.gz) file. Default is true. + + + + + Reads the next sample into the given array. + + + The array to contain the samples. + + How many bytes were read. + + + + + Reads the next sample as a value. + + + A single number containing the sample. + + + + + Reads the next sample as a vector. + + + A unidimensional array containing the sample. + + + + + Reads the next sample as a matrix. + + + A multidimensional array containing the sample. + + + + + Reads the next sample as a value. + + + The data type to be used. + + A single number containing the sample. + + + + + Reads the next sample as a vector. + + + The data type to be used. + + A unidimensional array containing the sample. + + + + + Reads the next sample as a matrix. + + + The data type to be used. + + A multidimensional array containing the sample. + + + + + Reads all samples in the file, starting from the current position, as matrices. + + + The data type to be used. + + + An array containing all samples from the current point until the end of the stream. + + + + + + Reads all samples in the file, starting from the current position, as vectors. + + + The data type to be used. + + + An array containing all samples from the current point until the end of the stream. + + + + + + Reads all samples in the file, starting from the current position, as vectors. + + + The data type to be used. + + + An array containing all samples from the current point until the end of the stream. + + + + + + Translates the given to a .NET . + + + The type to be translated. + + + A .NET that represents the . + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + MNIST's magic number. See remarks for more details + + + + + The magic number is an integer (MSB first). The first 2 bytes + are always 0. The third byte codes the type of the data. The + 4-th byte codes the number of dimensions of the vector/matrix: + 1 for vectors, 2 for matrices. + + + + + Code + Meaning + + + 0x08unsigned byte + + 0x09signed byte + + 0x0Bshort (2 bytes) + + 0x0Cint (4 bytes) + + 0x0Dfloat (4 bytes) + + 0x0Edouble (8 bytes) + + + + + + + Gets the type of the data stored in this file. + + + + + + Gets the number of dimensions for the samples. + + + + + + Gets the number of samples stored in this file. + + + + + + Returns the underlying stream. + + + + + + Excel file reader using Microsoft Jet Database Engine. + + + + + This class requires the Microsoft Access Database Engine + to work. The download is available from Microsoft under + the name "Microsoft Access Database Engine 2010 Redistributable", + available in both 32-bit (x86) and 64-bit (x64) versions. + + + By default, the redistributable package will only install + if it is the same as the current version of Microsoft Office + installed in the machine (i.e. ACE 32-bit can not be installed + with 64-bit office and vice-versa). To overcome this limitation + and install both versions of the ACE drivers, specify /passive + as a command line argument when installing the packages. + + + + + + // Create a new reader, opening a given path + ExcelReader reader = new ExcelReader(path); + + // Afterwards, we can query the file for all + // worksheets within the specified workbook: + string[] sheets = reader.GetWorksheetList(); + + // Finally, we can request an specific sheet: + DataTable table = reader.GetWorksheet(sheets[1]); + + // Now, we have loaded the Excel file into a DataTable. We + // can go further and transform it into a matrix to start + // running other algorithms on it: + + double[,] matrix = table.ToMatrix(); + + // We can also do it retrieving the name for each column: + string[] columnNames; matrix = table.ToMatrix(out columnNames); + + // Or we can extract specific columns into single arrays: + double[] column = table.Columns[0].ToArray(); + + // PS: you might need to import the Accord.Math namespace in + // order to be able to call the ToMatrix extension methods. + + + + + + + Creates a new spreadsheet reader. + + + The stream containing the spreadsheet file. + True if the file should be treated as .xlsx file, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The stream containing the spreadsheet file. + True if the file should be treated as .xlsx file, false otherwise. Default is true. + True if the spreadsheet contains headers, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The stream containing the spreadsheet file. + True if the file should be treated as .xlsx file, false otherwise. Default is true. + True if the spreadsheet contains headers, false otherwise. Default is true. + True to read "intermixed" data columns as text, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The path of for the spreadsheet file. + + + + + Creates a new spreadsheet reader. + + + The path of for the spreadsheet file. + True if the spreadsheet contains headers, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The path of for the spreadsheet file. + True if the spreadsheet contains headers, false otherwise. Default is true. + True to read "intermixed" data columns as text, false otherwise. Default is true. + + + + + Gets the list of worksheets in the spreadsheet. + + + + + + Gets the list of columns in a worksheet. + + + + + + Gets an worksheet as a data table. + + + + + + Gets an worksheet as a data table. + + + + + + Gets the entire worksheet as a data set. + + + + + + Gets the data provider used by the reader. + + + + + + Gets the Excel version used by the reader. + + + + + + Gets whether the workbook has column headers. + + + + + + Gets whether the data contains mixed string and numeric data. + + + + + + Gets the names of the distinct sheets + that are contained in the Excel file. + + + + + + Specifies the action to take when a field is missing. + + + + + + Treat as a parsing error. + + + + + + Replaces by an empty value. + + + + + + Replaces by a null value (). + + + + + + Specifies the action to take when a parsing error has occurred. + + + + + + Raises the event. + + + + + + Tries to advance to next line. + + + + + + Throws an exception. + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Buffer size must be 1 or more.. + + + + + Looks up a localized string similar to Cannot move to a previous record in forward-only mode.. + + + + + Looks up a localized string similar to Cannot read record at index '{0}'.. + + + + + Looks up a localized string similar to Enumeration has either not started or has already finished.. + + + + + Looks up a localized string similar to Collection was modified; enumeration operation may not execute.. + + + + + Looks up a localized string similar to '{0}' field header not found.. + + + + + Looks up a localized string similar to Field index must be included in [0, FieldCount[. Specified field index was : '{0}'.. + + + + + Looks up a localized string similar to The CSV appears to be corrupt near record '{0}' field '{1} at position '{2}'. Current raw data : '{3}'.. + + + + + Looks up a localized string similar to '{0}' is not a supported missing field action.. + + + + + Looks up a localized string similar to No current record.. + + + + + Looks up a localized string similar to The CSV does not have headers (CsvReader.HasHeaders property is false).. + + + + + Looks up a localized string similar to The number of fields in the record is greater than the available space from index to the end of the destination array.. + + + + + Looks up a localized string similar to '{0}' is not a valid ParseErrorAction while inside a ParseError event.. + + + + + Looks up a localized string similar to '{0}' is not a supported ParseErrorAction.. + + + + + Looks up a localized string similar to This operation is invalid when the reader is closed.. + + + + + Looks up a localized string similar to Record index must be 0 or more.. + + + + + Reader for data files containing samples in libsvm's sparse format. + + + + + The following example shows how to read all sparse samples from a file + and retrieve them as a dense multidimensional vector. + + + // Suppose we are going to read a sparse sample file containing + // samples which have an actual dimension of 4. Since the samples + // are in a sparse format, each entry in the file will probably + // have a much lesser number of elements. + // + int sampleSize = 4; + + // Create a new Sparse Sample Reader to read any given file, + // passing the correct dense sample size in the constructor + // + SparseReader reader = new SparseReader(file, Encoding.Default, sampleSize); + + // Declare a vector to obtain the label + // of each of the samples in the file + // + int[] labels = null; + + // Declare a vector to obtain the description (or comments) + // about each of the samples in the file, if present. + // + string[] descriptions = null; + + // Read the sparse samples and store them in a dense vector array + double[][] samples = reader.ReadToEnd(out labels, out descriptions); + + + Additionally, it is also possible to read each sample + individually and sequentially. For this, we can use a while + loop until we reach the end of the stream. + + + // Suppose we are going to read a sparse sample file containing + // samples which have an actual dimension of 4. Since the samples + // are in a sparse format, each entry in the file will probably + // have a much lesser number of elements. + // + int sampleSize = 4; + + // Create a new Sparse Sample Reader to read any given file, + // passing the correct dense sample size in the constructor + // + SparseReader reader = new SparseReader(file, Encoding.Default, sampleSize); + + // Declare some variables to receive each sample + // + int label = 0; + string description; + double[] sample; + + // Read a single sample from the file + sample = reader.ReadDense(out label, out description); + + // Read all other samples from the file + while (!reader.EndOfStream) + { + sample = reader.ReadDense(out label, out description); + } + + + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + The character encoding to use. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + The character encoding to use. + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + The character encoding to use. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + A StreamReader containing the file to be read. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + The character encoding to use. + + + + + Initializes a new instance of the class. + + + A StreamReader containing the file to be read. + + + + + Reads a sparse sample from the current stream + and returns it as a sparse vector. + + + The label of the sample. + An optional description accompanying the sample. + A vector in sparse representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a sparse vector. + + + The label of the sample. + A vector in sparse representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a dense vector. + + + The label of the sample. + An optional description accompanying the sample. + + A vector in dense representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a dense vector. + + + The output value associated with the sample. + An optional description accompanying the sample. + + A vector in dense representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a dense vector. + + + The label of the sample. + A vector in dense representation containing the sample. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' labels. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' output values. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' labels. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' output values. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' labels. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' output values. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' labels. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' labels. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Returns the underlying stream. + + + + + + Gets or sets whether to include an intercept term + (bias) value at the beginning of each new sample. + Default is null (don't include anything). + + + + + + Gets the number of features present in this dataset. Please + note that, when using the sparse representation, it is not + strictly necessary to know this value. + + + + + + Gets a value that indicates whether the current + stream position is at the end of the stream. + + + + + + Field trimming options. + + + + + + Do not trim any fields. + + + + + + Only trim unquoted fields. + + + + + + Only Trim quoted fields. + + + + + + Trim all fields (quoted and unquoted). + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net45/Accord.IO.dll b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net45/Accord.IO.dll new file mode 100644 index 0000000000..6673ccc6f Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net45/Accord.IO.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net45/Accord.IO.xml b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net45/Accord.IO.xml new file mode 100644 index 0000000000..7bb9be967 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.IO.3.0.2/lib/net45/Accord.IO.xml @@ -0,0 +1,2178 @@ + + + + Accord.IO + + + + + Represents a reader that provides fast, non-cached, forward-only access to CSV data. + + + + + + Defines the default buffer size. + + + + + + Defines the default delimiter character separating each field. + + + + + + Defines the default quote character wrapping every field. + + + + + + Defines the default escape character letting insert quotation characters inside a quoted field. + + + + + + Defines the default comment character indicating that a line is commented out. + + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The buffer size in bytes. + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field. If set to zero, the + delimiter will be detected from the file automatically. Default is '\0' (zero). + + + + + Initializes a new instance of the CsvReader class. + + + A pointing to the CSV file. + if field names are located on the first non commented line, otherwise, . + The delimiter character separating each field. If set to zero, the + delimiter will be detected from the file automatically. Default is '\0' (zero). + The buffer size in bytes. + + + + + Creates a new CsvReader to read from a string. + + + The text containing the fields in the CSV format. + if field names are located on the first non commented line, otherwise, . + + + + + Raises the event. + + + The that contains the event data. + + + + + Gets the field headers. + + + The field headers or an empty array if headers are not supported. + + + The instance has been disposed of. + + + + + + Reads the entire stream into a DataTable. + + + A System.DataTable containing the read values. + + + + + Reads the entire stream into a DataTable. + + + A System.DataTable containing the read values. + + + + + Reads the entire stream into a list of records. + + + A list containing all records in the file. + + + + + Gets the field index for the provided header. + + The header to look for. + The field index for the provided header. -1 if not found. + + The instance has been disposed of. + + + + + Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array. + + + The one-dimensional that is the destination of the fields of the current record. + + + is . + + + + + + Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array. + + + The one-dimensional that is the destination of the fields of the current record. + The zero-based index in at which copying begins. + + + is . + + + is les than zero or is equal to or greater than the length . + + + No current record. + + + The number of fields in the record is greater than the available space from to the end of . + + + + + + Gets the current raw CSV data. + + + Used for exception handling purposes. + + The current raw CSV data. + + + + + Ensures that the reader is initialized. + + + + + Indicates whether the specified Unicode character is categorized as white space. + + A Unicode character. + if is white space; otherwise, . + + + + Moves to the specified record index. + + + The record index. + + true if the operation was successful; otherwise, false. + + + The instance has been disposed of. + + + + + + Reads the next record. + + + if a record has been successfully reads; otherwise, . + + + The instance has been disposed of. + + + + + + Parses a new line delimiter. + + + The starting position of the parsing. Will contain the resulting end position. + + if a new line delimiter was found; otherwise, . + + + The instance has been disposed of. + + + + + + Determines whether the character at the specified position is a new line delimiter. + + + The position of the character to verify. + + + if the character at the specified position is a new line delimiter; otherwise, . + + + + + + Fills the buffer with data from the reader. + + if data was successfully read; otherwise, . + + The instance has been disposed of. + + + + + Reads the field at the specified index. + Any unread fields with an inferior index will also be read as part of the required parsing. + + The field index. + Indicates if the reader is currently initializing. + Indicates if the value(s) are discarded. + + The field at the specified index. + A indicates that an error occured or that the last field has been reached during initialization. + + + is out of range. + + + There is no current record. + + + The CSV data appears to be missing a field. + + + The CSV data appears to be malformed. + + + The instance has been disposed of. + + + + + Reads the next record. + + + Indicates if the reader will proceed to the next record after having read headers. + if it stops after having read headers; otherwise, . + + + Indicates if the reader will skip directly to the next line without parsing the current one. + To be used when an error occurs. + + if a record has been successfully reads; otherwise, . + + The instance has been disposed of. + + + + + Skips empty and commented lines. + If the end of the buffer is reached, its content be discarded and filled again from the reader. + + + The position in the buffer where to start parsing. + Will contains the resulting position after the operation. + + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Worker method. + Skips empty and commented lines. + + + The position in the buffer where to start parsing. + Will contains the resulting position after the operation. + + + The instance has been disposed of. + + + + + Skips whitespace characters. + + The starting position of the parsing. Will contain the resulting end position. + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Skips ahead to the next NewLine character. + If the end of the buffer is reached, its content be discarded and filled again from the reader. + + + The position in the buffer where to start parsing. + Will contain the resulting position after the operation. + + if the end of the reader has not been reached; otherwise, . + + The instance has been disposed of. + + + + + Handles a parsing error. + + The parsing error that occured. + The current position in the buffer. + + is . + + + + + Handles a missing field error. + + The partially parsed value, if available. + The missing field index. + The current position in the raw data. + + The resulting value according to . + If the action is set to , + then the parse error will be handled according to . + + + + + Validates the state of the data reader. + + The validations to accomplish. + + No current record. + + + This operation is invalid when the reader is closed. + + + + + Copy the value of the specified field to an array. + + The index of the field. + The offset in the field value. + The destination array where the field value will be copied. + The destination array offset. + The number of characters to copy from the field value. + + + + + Returns an that can iterate through CSV records. + + An that can iterate through CSV records. + + The instance has been disposed of. + + + + + Contains the disposed status flag. + + + + + Contains the locking object for multi-threading purpose. + + + + + Raises the event. + + A that contains the event data. + + + + Checks if the instance has been disposed of, and if it has, throws an ; otherwise, does nothing. + + + The instance has been disposed of. + + + Derived classes should call this method at the start of all methods and properties that should not be accessed after a call to . + + + + + Releases all resources used by the instance. + + + Calls with the disposing parameter set to to free unmanaged and managed resources. + + + + + Closes the Object. + + + + + + Releases the unmanaged resources used by this instance and optionally releases the managed resources. + + + to release both managed and unmanaged resources; to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the instance is reclaimed by garbage collection. + + + + + Occurs when there is an error while parsing the CSV stream. + + + + + + Gets the comment character indicating that + a line is commented out. Default is '#'. + + + The comment character indicating that a line is commented out. + + + + + Gets the escape character letting insert quotation + characters inside a quoted field. Default is '"'. + + + The escape character letting insert quotation characters inside a quoted field. + + + + + Gets the delimiter character separating each field. If + set to zero ('\0') the reader will try to guess the + delimiter character automatically from the first line + of the file. + + + The delimiter character separating each field. + + + + + Gets the quotation character wrapping + every field. Default is '"'. + + + The quotation character wrapping every field. + + + + + Indicates if field names are located on the first non commented line. + + + if field names are located on the first non commented line, otherwise, . + + + + + Indicates if spaces at the start and end of a field + are trimmed. Default is to trim unquoted fields only. + + + if spaces at the start and end of a field are trimmed, otherwise, . + + + + + Gets the buffer size. + + + + + + Gets or sets the default action to take when a parsing error has occured. + + + The default action to take when a parsing error has occured. + + + + + Gets or sets the action to take when a field is missing. + + + The action to take when a field is missing. + + + + + Gets or sets a value indicating if the reader supports multiline fields. + + + A value indicating if the reader supports multiline field. + + + + + Gets or sets a value indicating if the reader will skip empty lines. + + + A value indicating if the reader will skip empty lines. + + + + + Gets or sets the default header name when it is an empty string or only whitespaces. + The header index will be appended to the specified name. Default is "Column". + + + The default header name when it is an empty string or only whitespaces. + + + + + Gets the maximum number of fields to retrieve for each record. + + + The maximum number of fields to retrieve for each record. + + + The instance has been disposed of. + + + + + + Gets a value that indicates whether the current stream position is at the end of the stream. + + + if the current stream position is at the end of the stream; otherwise . + + + + + Gets the current record index in the CSV file. + + + The current record index in the CSV file. + + + + + Indicates if one or more field are missing for the current record. + Resets after each successful record read. + + + + + + Indicates if a parse error occurred for the current record. + Resets after each successful record read. + + + + + + Gets the field with the specified name and record position. must be . + + + + The field with the specified name and record position. + + + + is or an empty string. + + + The CSV does not have headers ( property is ). + + + not found. + + + Record index must be > 0. + + + Cannot move to a previous record in forward-only mode. + + + Cannot read record at . + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + + Gets the field at the specified index and record position. + + + The field at the specified index and record position. + A is returned if the field cannot be found for the record. + + + must be included in [0, [. + + + Record index must be > 0. + + + Cannot move to a previous record in forward-only mode. + + + Cannot read record at . + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + + Gets the field with the specified name. must be . + + + The field with the specified name. + + + is or an empty string. + + + The CSV does not have headers ( property is ). + + + not found. + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Gets the field at the specified index. + + The field at the specified index. + + must be included in [0, [. + + + No record read yet. Call ReadLine() first. + + + The CSV appears to be corrupt at the current position. + + + The instance has been disposed of. + + + + + Occurs when the instance is disposed of. + + + + + Gets a value indicating whether the instance has been disposed of. + + + if the instance has been disposed of; otherwise, . + + + + + Defines the data reader validations. + + + + + + No validation. + + + + + + Validate that the data reader is initialized. + + + + + + Validate that the data reader is not closed. + + + + + + Supports a simple iteration over the records of a . + + + + + Contains the enumerated . + + + + + Contains the current record. + + + + + Contains the current record index. + + + + + Initializes a new instance of the class. + + The to iterate over. + + is a . + + + + + Advances the enumerator to the next record of the CSV. + + if the enumerator was successfully advanced to the next record, if the enumerator has passed the end of the CSV. + + + + Sets the enumerator to its initial position, which is before the first record in the CSV. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets the current record. + + + + + Gets the current record. + + + + + Writer for CSV data. + + + + + + Initializes a new instance of the class. + + + A pointing to the CSV file. + + + + + Initializes a new instance of the class. + + + A pointing to the CSV file. + The field delimiter character to separate values in the CSV file. + If set to zero, will use the system's default text separator. Default is '\0' (zero). + + + + + Initializes a new instance of the + class to write the CSV fields to a in-memory string. + + + A to write to. + + + + + Initializes a new instance of the + class to write the CSV fields to a in-memory string. + + + A to write to. + The field delimiter character to separate values in the CSV file. + If set to zero, will use the system's default text separator. Default is '\0' (zero). + + + + + Writes the column names of a data table as the headers of the CSV file. + + + A DataTable whose columns names will be written as headers. + + + + + Writes the specified matrix in CSV format. + + + The matrix data type. + The table to be written. + + + + + Writes the specified matrix in CSV format. + + + The matrix data type. + The table to be written. + + + + + Writes the specified table in a CSV format. + + + The data table to be written. + + + + + Writes the specified fields in a CSV format. + + + The fields to be written. + + + + + Writes the specified fields in a CSV format. + + + The fields to be written. + An optional comment for the line. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Finalizes an instance of the class. + + + + + + Releases unmanaged and - optionally - managed resources. + + + true to release both managed and + unmanaged resources; false to release only unmanaged resources. + + + + + + Gets the writer. + + + + The writer. + + + + + + Gets or sets the comment character indicating that a line is commented out. + + + The comment character indicating that a line is commented out. + + + + + Gets or sets the escape character letting insert quotation characters inside a quoted field. + + + The escape character letting insert quotation characters inside a quoted field. + + + + + Gets or sets the delimiter character separating each field. + + + The delimiter character separating each field. + + + + + Gets or sets the quotation character wrapping every field. + + + The quotation character wrapping every field. + + + + + Gets or sets the format provider to use when converting + data-types to text representations. Default is to use + CultureInfo.InvariantCulture. + + + + The format provider. + + + + + + Provides data for the event. + + + + + + Initializes a new instance of the ParseErrorEventArgs class. + + + The error that occurred. + The default action to take. + + + + + Gets the error that occurred. + + + The error that occurred. + + + + + Gets or sets the action to take. + + + The action to take. + + + + + Represents the exception that is thrown when a CSV file is malformed. + + + + + + Initializes a new instance of the MalformedCsvException class. + + + + + + Initializes a new instance of the MalformedCsvException class. + + + The message that describes the error. + + + + + Initializes a new instance of the MalformedCsvException class. + + + The message that describes the error. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MalformedCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + + + + + Initializes a new instance of the MalformedCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MalformedCsvException class with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + When overridden in a derived class, sets the with information about the exception. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Gets the raw data when the error occurred. + + + The raw data when the error occurred. + + + + + Gets the current position in the raw data. + + + The current position in the raw data. + + + + + Gets the current record index. + + + The current record index. + + + + + Gets the current field index. + + + The current record index. + + + + + Gets a message that describes the current exception. + + + A message that describes the current exception. + + + + + Represents the exception that is thrown when a there is a missing field in a record of the CSV file. + + + + MissingFieldException would have been a better name, but there is already a . + + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The message that describes the error. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The message that describes the error. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + + + + + Initializes a new instance of the MissingFieldCsvException class. + + + The raw data when the error occured. + The current position in the raw data. + The current record index. + The current field index. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the MissingFieldCsvException class with serialized data. + + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + + Data types which can be contained in a IDX data file. + + + + + + + + byte (0x08) + + + + + + sbyte (0x09) + + + + + + short (0x0B) + + + + + + int (0x0C) + + + + + + float (0x0D) + + + + + + double (0x0E) + + + + + + Reader for IDX files (such as MNIST's digit database). + + + + + + Creates a new . + + + The path for the IDX file. + + + + + Creates a new . + + + The path for the IDX file. + + Pass true if the stream contains + a compressed (.gz) file. Default is true. + + + + + Creates a new . + + + The input stream containing the IDX file. + + + + + Creates a new . + + + The input stream containing the IDX file. + + Pass true if the stream contains + a compressed (.gz) file. Default is true. + + + + + Reads the next sample into the given array. + + + The array to contain the samples. + + How many bytes were read. + + + + + Reads the next sample as a value. + + + A single number containing the sample. + + + + + Reads the next sample as a vector. + + + A unidimensional array containing the sample. + + + + + Reads the next sample as a matrix. + + + A multidimensional array containing the sample. + + + + + Reads the next sample as a value. + + + The data type to be used. + + A single number containing the sample. + + + + + Reads the next sample as a vector. + + + The data type to be used. + + A unidimensional array containing the sample. + + + + + Reads the next sample as a matrix. + + + The data type to be used. + + A multidimensional array containing the sample. + + + + + Reads all samples in the file, starting from the current position, as matrices. + + + The data type to be used. + + + An array containing all samples from the current point until the end of the stream. + + + + + + Reads all samples in the file, starting from the current position, as vectors. + + + The data type to be used. + + + An array containing all samples from the current point until the end of the stream. + + + + + + Reads all samples in the file, starting from the current position, as vectors. + + + The data type to be used. + + + An array containing all samples from the current point until the end of the stream. + + + + + + Translates the given to a .NET . + + + The type to be translated. + + + A .NET that represents the . + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + MNIST's magic number. See remarks for more details + + + + + The magic number is an integer (MSB first). The first 2 bytes + are always 0. The third byte codes the type of the data. The + 4-th byte codes the number of dimensions of the vector/matrix: + 1 for vectors, 2 for matrices. + + + + + Code + Meaning + + + 0x08unsigned byte + + 0x09signed byte + + 0x0Bshort (2 bytes) + + 0x0Cint (4 bytes) + + 0x0Dfloat (4 bytes) + + 0x0Edouble (8 bytes) + + + + + + + Gets the type of the data stored in this file. + + + + + + Gets the number of dimensions for the samples. + + + + + + Gets the number of samples stored in this file. + + + + + + Returns the underlying stream. + + + + + + Excel file reader using Microsoft Jet Database Engine. + + + + + This class requires the Microsoft Access Database Engine + to work. The download is available from Microsoft under + the name "Microsoft Access Database Engine 2010 Redistributable", + available in both 32-bit (x86) and 64-bit (x64) versions. + + + By default, the redistributable package will only install + if it is the same as the current version of Microsoft Office + installed in the machine (i.e. ACE 32-bit can not be installed + with 64-bit office and vice-versa). To overcome this limitation + and install both versions of the ACE drivers, specify /passive + as a command line argument when installing the packages. + + + + + + // Create a new reader, opening a given path + ExcelReader reader = new ExcelReader(path); + + // Afterwards, we can query the file for all + // worksheets within the specified workbook: + string[] sheets = reader.GetWorksheetList(); + + // Finally, we can request an specific sheet: + DataTable table = reader.GetWorksheet(sheets[1]); + + // Now, we have loaded the Excel file into a DataTable. We + // can go further and transform it into a matrix to start + // running other algorithms on it: + + double[,] matrix = table.ToMatrix(); + + // We can also do it retrieving the name for each column: + string[] columnNames; matrix = table.ToMatrix(out columnNames); + + // Or we can extract specific columns into single arrays: + double[] column = table.Columns[0].ToArray(); + + // PS: you might need to import the Accord.Math namespace in + // order to be able to call the ToMatrix extension methods. + + + + + + + Creates a new spreadsheet reader. + + + The stream containing the spreadsheet file. + True if the file should be treated as .xlsx file, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The stream containing the spreadsheet file. + True if the file should be treated as .xlsx file, false otherwise. Default is true. + True if the spreadsheet contains headers, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The stream containing the spreadsheet file. + True if the file should be treated as .xlsx file, false otherwise. Default is true. + True if the spreadsheet contains headers, false otherwise. Default is true. + True to read "intermixed" data columns as text, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The path of for the spreadsheet file. + + + + + Creates a new spreadsheet reader. + + + The path of for the spreadsheet file. + True if the spreadsheet contains headers, false otherwise. Default is true. + + + + + Creates a new spreadsheet reader. + + + The path of for the spreadsheet file. + True if the spreadsheet contains headers, false otherwise. Default is true. + True to read "intermixed" data columns as text, false otherwise. Default is true. + + + + + Gets the list of worksheets in the spreadsheet. + + + + + + Gets the list of columns in a worksheet. + + + + + + Gets an worksheet as a data table. + + + + + + Gets an worksheet as a data table. + + + + + + Gets the entire worksheet as a data set. + + + + + + Gets the data provider used by the reader. + + + + + + Gets the Excel version used by the reader. + + + + + + Gets whether the workbook has column headers. + + + + + + Gets whether the data contains mixed string and numeric data. + + + + + + Gets the names of the distinct sheets + that are contained in the Excel file. + + + + + + Specifies the action to take when a field is missing. + + + + + + Treat as a parsing error. + + + + + + Replaces by an empty value. + + + + + + Replaces by a null value (). + + + + + + Specifies the action to take when a parsing error has occurred. + + + + + + Raises the event. + + + + + + Tries to advance to next line. + + + + + + Throws an exception. + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Buffer size must be 1 or more.. + + + + + Looks up a localized string similar to Cannot move to a previous record in forward-only mode.. + + + + + Looks up a localized string similar to Cannot read record at index '{0}'.. + + + + + Looks up a localized string similar to Enumeration has either not started or has already finished.. + + + + + Looks up a localized string similar to Collection was modified; enumeration operation may not execute.. + + + + + Looks up a localized string similar to '{0}' field header not found.. + + + + + Looks up a localized string similar to Field index must be included in [0, FieldCount[. Specified field index was : '{0}'.. + + + + + Looks up a localized string similar to The CSV appears to be corrupt near record '{0}' field '{1} at position '{2}'. Current raw data : '{3}'.. + + + + + Looks up a localized string similar to '{0}' is not a supported missing field action.. + + + + + Looks up a localized string similar to No current record.. + + + + + Looks up a localized string similar to The CSV does not have headers (CsvReader.HasHeaders property is false).. + + + + + Looks up a localized string similar to The number of fields in the record is greater than the available space from index to the end of the destination array.. + + + + + Looks up a localized string similar to '{0}' is not a valid ParseErrorAction while inside a ParseError event.. + + + + + Looks up a localized string similar to '{0}' is not a supported ParseErrorAction.. + + + + + Looks up a localized string similar to This operation is invalid when the reader is closed.. + + + + + Looks up a localized string similar to Record index must be 0 or more.. + + + + + Reader for data files containing samples in libsvm's sparse format. + + + + + The following example shows how to read all sparse samples from a file + and retrieve them as a dense multidimensional vector. + + + // Suppose we are going to read a sparse sample file containing + // samples which have an actual dimension of 4. Since the samples + // are in a sparse format, each entry in the file will probably + // have a much lesser number of elements. + // + int sampleSize = 4; + + // Create a new Sparse Sample Reader to read any given file, + // passing the correct dense sample size in the constructor + // + SparseReader reader = new SparseReader(file, Encoding.Default, sampleSize); + + // Declare a vector to obtain the label + // of each of the samples in the file + // + int[] labels = null; + + // Declare a vector to obtain the description (or comments) + // about each of the samples in the file, if present. + // + string[] descriptions = null; + + // Read the sparse samples and store them in a dense vector array + double[][] samples = reader.ReadToEnd(out labels, out descriptions); + + + Additionally, it is also possible to read each sample + individually and sequentially. For this, we can use a while + loop until we reach the end of the stream. + + + // Suppose we are going to read a sparse sample file containing + // samples which have an actual dimension of 4. Since the samples + // are in a sparse format, each entry in the file will probably + // have a much lesser number of elements. + // + int sampleSize = 4; + + // Create a new Sparse Sample Reader to read any given file, + // passing the correct dense sample size in the constructor + // + SparseReader reader = new SparseReader(file, Encoding.Default, sampleSize); + + // Declare some variables to receive each sample + // + int label = 0; + string description; + double[] sample; + + // Read a single sample from the file + sample = reader.ReadDense(out label, out description); + + // Read all other samples from the file + while (!reader.EndOfStream) + { + sample = reader.ReadDense(out label, out description); + } + + + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + The character encoding to use. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The file stream to be read. + The character encoding to use. + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + The character encoding to use. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + A StreamReader containing the file to be read. + The size of the feature vectors stored in the file. + + + + + Initializes a new instance of the class. + + + The complete file path to be read. + The character encoding to use. + + + + + Initializes a new instance of the class. + + + A StreamReader containing the file to be read. + + + + + Reads a sparse sample from the current stream + and returns it as a sparse vector. + + + The label of the sample. + An optional description accompanying the sample. + A vector in sparse representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a sparse vector. + + + The label of the sample. + A vector in sparse representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a dense vector. + + + The label of the sample. + An optional description accompanying the sample. + + A vector in dense representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a dense vector. + + + The output value associated with the sample. + An optional description accompanying the sample. + + A vector in dense representation containing the sample. + + + + + Reads a sparse sample from the current stream + and returns it as a dense vector. + + + The label of the sample. + A vector in dense representation containing the sample. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' labels. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' output values. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' labels. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + An array containing the samples' output values. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' labels. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' output values. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' labels. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Reads samples from the current position to the end of the stream. + + + True to return the feature vectors in a + sparse representation, false to return them as dense vectors. + An array containing the samples' labels. + An array containing the samples' descriptions. + + An array of dense feature vectors. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Returns the underlying stream. + + + + + + Gets or sets whether to include an intercept term + (bias) value at the beginning of each new sample. + Default is null (don't include anything). + + + + + + Gets the number of features present in this dataset. Please + note that, when using the sparse representation, it is not + strictly necessary to know this value. + + + + + + Gets a value that indicates whether the current + stream position is at the end of the stream. + + + + + + Field trimming options. + + + + + + Do not trim any fields. + + + + + + Only trim unquoted fields. + + + + + + Only Trim quoted fields. + + + + + + Trim all fields (quoted and unquoted). + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/Accord.Imaging.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/Accord.Imaging.3.0.2.nupkg new file mode 100644 index 0000000000..8eda0e19f Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/Accord.Imaging.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net35/Accord.Imaging.dll b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net35/Accord.Imaging.dll new file mode 100644 index 0000000000..d7511f02c Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net35/Accord.Imaging.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net35/Accord.Imaging.xml b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net35/Accord.Imaging.xml new file mode 100644 index 0000000000..2d397c2e3 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net35/Accord.Imaging.xml @@ -0,0 +1,28464 @@ + + + + Accord.Imaging + + + + + Image's blob. + + + The class represents a blob - part of another images. The + class encapsulates the blob itself and information about its position + in parent image. + + The class is not responsible for blob's image disposing, so it should be + done manually when it is required. + + + + + + Initializes a new instance of the class. + + + Blob's ID in the original image. + Blob's rectangle in the original image. + + This constructor leaves property not initialized. The blob's + image may be extracted later using + or method. + + + + + Initializes a new instance of the class. + + + Source blob to copy. + + This copy constructor leaves property not initialized. The blob's + image may be extracted later using + or method. + + + + + Blob's image. + + + The property keeps blob's image. In the case if it equals to null, + the image may be extracted using + or method. + + + + + Blob's image size. + + + The property specifies size of the blob's image. + If the property is set to , the blob's image size equals to the + size of original image. If the property is set to , the blob's + image size equals to size of actual blob. + + + + + Blob's rectangle in the original image. + + + The property specifies position of the blob in the original image + and its size. + + + + + Blob's ID in the original image. + + + + + Blob's area. + + + The property equals to blob's area measured in number of pixels + contained by the blob. + + + + + Blob's fullness, [0, 1]. + + + The property equals to blob's fullness, which is calculated + as Area / ( Width * Height ). If it equals to 1, then + it means that entire blob's rectangle is filled by blob's pixel (no + blank areas), which is true only for rectangles. If it equals to 0.5, + for example, then it means that only half of the bounding rectangle is filled + by blob's pixels. + + + + + Blob's center of gravity point. + + + The property keeps center of gravity point, which is calculated as + mean value of X and Y coordinates of blob's points. + + + + + Blob's mean color. + + + The property keeps mean color of pixels comprising the blob. + + + + + Blob color's standard deviation. + + + The property keeps standard deviation of pixels' colors comprising the blob. + + + + + Blob counter - counts objects in image, which are separated by black background. + + + The class counts and extracts stand alone objects in + images using connected components labeling algorithm. + + The algorithm treats all pixels with values less or equal to + as background, but pixels with higher values are treated as objects' pixels. + + For blobs' searching the class supports 8 bpp indexed grayscale images and + 24/32 bpp color images that are at least two pixels wide. Images that are one + pixel wide can be processed if they are rotated first, or they can be processed + with . + See documentation about for information about which + pixel formats are supported for extraction of blobs. + + Sample usage: + + // create an instance of blob counter algorithm + BlobCounter bc = new BlobCounter( ); + // process binary image + bc.ProcessImage( image ); + Rectangle[] rects = bc.GetObjectsRectangles( ); + // process blobs + foreach ( Rectangle rect in rects ) + { + // ... + } + + + + + + + Base class for different blob counting algorithms. + + + The class is abstract and serves as a base for different blob counting algorithms. + Classes, which inherit from this base class, require to implement + method, which does actual building of object's label's map. + + For blobs' searcing usually all inherited classes accept binary images, which are actually + grayscale thresholded images. But the exact supported format should be checked in particular class, + inheriting from the base class. For blobs' extraction the class supports grayscale (8 bpp indexed) + and color images (24 and 32 bpp). + + Sample usage: + + // create an instance of blob counter algorithm + BlobCounterBase bc = new ... + // set filtering options + bc.FilterBlobs = true; + bc.MinWidth = 5; + bc.MinHeight = 5; + // process binary image + bc.ProcessImage( image ); + Blob[] blobs = bc.GetObjects( image, false ); + // process blobs + foreach ( Blob blob in blobs ) + { + // ... + // blob.Rectangle - blob's rectangle + // blob.Image - blob's image + } + + + + + + + Objects count. + + + + + Objects' labels. + + + + + Width of processed image. + + + + + Height of processed image. + + + + + Initializes a new instance of the class. + + + Creates new instance of the class with + an empty objects map. Before using methods, which provide information about blobs + or extract them, the , + or + method should be called to collect objects map. + + + + + Initializes a new instance of the class. + + + Binary image to look for objects in. + + Creates new instance of the class with + initialized objects map built by calling method. + + + + + Initializes a new instance of the class. + + + Binary image data to look for objects in. + + Creates new instance of the class with + initialized objects map built by calling method. + + + + + Initializes a new instance of the class. + + + Unmanaged binary image to look for objects in. + + Creates new instance of the class with + initialized objects map built by calling method. + + + + + Build objects map. + + + Source binary image. + + Processes the image and builds objects map, which is used later to extracts blobs. + + Unsupported pixel format of the source image. + + + + + Build objects map. + + + Source binary image data. + + Processes the image and builds objects map, which is used later to extracts blobs. + + Unsupported pixel format of the source image. + + + + + Build object map from raw image data. + + + Source unmanaged binary image data. + + Processes the image and builds objects map, which is used later to extracts blobs. + + Unsupported pixel format of the source image. + Thrown by some inherited classes if some image property other + than the pixel format is not supported. See that class's documentation or the exception message for details. + + + + + Get objects' rectangles. + + + Returns array of objects' rectangles. + + The method returns array of objects rectangles. Before calling the + method, the , + or method should be called, which will + build objects map. + + No image was processed before, so objects' rectangles + can not be collected. + + + + + Get objects' information. + + + Returns array of partially initialized blobs (without property initialized). + + By the amount of provided information, the method is between and + methods. The method provides array of blobs without initialized their image. + Blob's image may be extracted later using + or method. + + + + + // create blob counter and process image + BlobCounter bc = new BlobCounter( sourceImage ); + // specify sort order + bc.ObjectsOrder = ObjectsOrder.Size; + // get objects' information (blobs without image) + Blob[] blobs = bc.GetObjectInformation( ); + // process blobs + foreach ( Blob blob in blobs ) + { + // check blob's properties + if ( blob.Rectangle.Width > 50 ) + { + // the blob looks interesting, let's extract it + bc.ExtractBlobsImage( sourceImage, blob ); + } + } + + + + No image was processed before, so objects' information + can not be collected. + + + + + Get blobs. + + + Source image to extract objects from. + + Returns array of blobs. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + The method returns array of blobs. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so objects + can not be collected. + + + + + Get blobs. + + + Source unmanaged image to extract objects from. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + Returns array of blobs. + + The method returns array of blobs. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so objects + can not be collected. + + + + + Extract blob's image. + + + Source image to extract blob's image from. + Blob which is required to be extracted. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + The method is used to extract image of partially initialized blob, which + was provided by method. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so blob + can not be extracted. + + + + + Extract blob's image. + + + Source unmanaged image to extract blob's image from. + Blob which is required to be extracted. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + The method is used to extract image of partially initialized blob, which + was provided by method. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so blob + can not be extracted. + + + + + Get list of points on the left and right edges of the blob. + + + Blob to collect edge points for. + List of points on the left edge of the blob. + List of points on the right edge of the blob. + + The method scans each line of the blob and finds the most left and the + most right points for it adding them to appropriate lists. The method may be very + useful in conjunction with different routines from , + which allow finding convex hull or quadrilateral's corners. + + Both lists of points are sorted by Y coordinate - points with smaller Y + value go first. + + + No image was processed before, so blob + can not be extracted. + + + + + Get list of points on the top and bottom edges of the blob. + + + Blob to collect edge points for. + List of points on the top edge of the blob. + List of points on the bottom edge of the blob. + + The method scans each column of the blob and finds the most top and the + most bottom points for it adding them to appropriate lists. The method may be very + useful in conjunction with different routines from , + which allow finding convex hull or quadrilateral's corners. + + Both lists of points are sorted by X coordinate - points with smaller X + value go first. + + + No image was processed before, so blob + can not be extracted. + + + + + Get list of object's edge points. + + + Blob to collect edge points for. + + Returns unsorted list of blob's edge points. + + The method scans each row and column of the blob and finds the + most top/bottom/left/right points. The method returns similar result as if results of + both and + methods were combined, but each edge point occurs only once in the list. + + Edge points in the returned list are not ordered. This makes the list unusable + for visualization with methods, which draw polygon or poly-line. But the returned list + can be used with such algorithms, like convex hull search, shape analyzer, etc. + + + No image was processed before, so blob + can not be extracted. + + + + + Actual objects map building. + + + Unmanaged image to process. + + By the time this method is called bitmap's pixel format is not + yet checked, so this should be done by the class inheriting from the base class. + and members are initialized + before the method is called, so these members may be used safely. + + + + + Objects count. + + + Number of objects (blobs) found by method. + + + + + + Objects' labels. + + + The array of width * height size, which holds + labels for all objects. Background is represented with 0 value, + but objects are represented with labels starting from 1. + + + + + Objects sort order. + + + The property specifies objects' sort order, which are provided + by , , etc. + + + + + + Specifies if blobs should be filtered. + + + If the property is equal to false, then there is no any additional + post processing after image was processed. If the property is set to true, then + blobs filtering is done right after image processing routine. If + is set, then custom blobs' filtering is done, which is implemented by user. Otherwise + blobs are filtered according to dimensions specified in , + , and properties. + + Default value is set to . + + + + + Specifies if size filetering should be coupled or not. + + + In uncoupled filtering mode, objects are filtered out in the case if + their width is smaller than or height is smaller than + . But in coupled filtering mode, objects are filtered out in + the case if their width is smaller than and height is + smaller than . In both modes the idea with filtering by objects' + maximum size is the same as filtering by objects' minimum size. + + Default value is set to , what means uncoupled filtering by size. + + + + + + Minimum allowed width of blob. + + + The property specifies minimum object's width acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Minimum allowed height of blob. + + + The property specifies minimum object's height acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Maximum allowed width of blob. + + + The property specifies maximum object's width acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Maximum allowed height of blob. + + + The property specifies maximum object's height acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Custom blobs' filter to use. + + + The property specifies custom blobs' filtering routine to use. It has + effect only in the case if property is set to . + + When custom blobs' filtering routine is set, it has priority over default filtering done + with , , and . + + + + + + Initializes a new instance of the class. + + + Creates new instance of the class with + an empty objects map. Before using methods, which provide information about blobs + or extract them, the , + or + method should be called to collect objects map. + + + + + Initializes a new instance of the class. + + + Image to look for objects in. + + + + + Initializes a new instance of the class. + + + Image data to look for objects in. + + + + + Initializes a new instance of the class. + + + Unmanaged image to look for objects in. + + + + + Actual objects map building. + + + Unmanaged image to process. + + The method supports 8 bpp indexed grayscale images and 24/32 bpp color images. + + Unsupported pixel format of the source image. + Cannot process images that are one pixel wide. Rotate the image + or use . + + + + + Background threshold's value. + + + The property sets threshold value for distinguishing between background + pixel and objects' pixels. All pixel with values less or equal to this property are + treated as background, but pixels with higher values are treated as objects' pixels. + + In the case of colour images a pixel is treated as objects' pixel if any of its + RGB values are higher than corresponding values of this threshold. + + For processing grayscale image, set the property with all RGB components eqaul. + + Default value is set to (0, 0, 0) - black colour. + + + + + Possible object orders. + + + The enumeration defines possible sorting orders of objects, found by blob + counting classes. + + + + + Unsorted order (as it is collected by algorithm). + + + + + Objects are sorted by size in descending order (bigger objects go first). + Size is calculated as Width * Height. + + + + + Objects are sorted by area in descending order (bigger objects go first). + + + + + Objects are sorted by Y coordinate, then by X coordinate in ascending order + (smaller coordinates go first). + + + + + Objects are sorted by X coordinate, then by Y coordinate in ascending order + (smaller coordinates go first). + + + + + Block match class keeps information about found block match. The class is + used with block matching algorithms implementing + interface. + + + + + + Initializes a new instance of the class. + + + Reference point in source image. + Match point in search image (point of a found match). + Similarity between blocks in source and search images, [0..1]. + + + + + Reference point in source image. + + + + + Match point in search image (point of a found match). + + + + + Similarity between blocks in source and search images, [0..1]. + + + + + Color dithering using Burkes error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Burkes coefficients. Error is diffused + on 7 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + + / 32 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 8 colors table + Color[] colorTable = ciq.CalculatePalette( image, 8 ); + // create dithering routine + BurkesColorDithering dithering = new BurkesColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Base class for error diffusion color dithering, where error is diffused to + adjacent neighbor pixels. + + + The class does error diffusion to adjacent neighbor pixels + using specified set of coefficients. These coefficients are represented by + 2 dimensional jugged array, where first array of coefficients is for + right-standing pixels, but the rest of arrays are for bottom-standing pixels. + All arrays except the first one should have odd number of coefficients. + + Suppose that error diffusion coefficients are represented by the next + jugged array: + + + int[][] coefficients = new int[2][] { + new int[1] { 7 }, + new int[3] { 3, 5, 1 } + }; + + + The above coefficients are used to diffuse error over the next neighbor + pixels (* marks current pixel, coefficients are placed to corresponding + neighbor pixels): + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The image processing routine accepts 24/32 bpp color images for processing. + + Sample usage: + + // create dithering routine + ColorErrorDiffusionToAdjacentNeighbors dithering = new ColorErrorDiffusionToAdjacentNeighbors( + new int[3][] { + new int[2] { 5, 3 }, + new int[5] { 2, 4, 5, 4, 2 }, + new int[3] { 2, 3, 2 } + } ); + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + + + + + Base class for error diffusion color dithering. + + + The class is the base class for color dithering algorithms based on + error diffusion. + + Color dithering with error diffusion is based on the idea that each pixel from the specified source + image is substituted with a best matching color (or better say with color's index) from the specified color + table. However, the error (difference between color value in the source image and the best matching color) + is diffused to neighbor pixels of the source image, which affects the way those pixels are substituted by colors + from the specified table. + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + + + + + Current processing X coordinate. + + + + + Current processing Y coordinate. + + + + + Processing image's width. + + + + + Processing image's height. + + + + + Processing image's stride (line size). + + + + + Processing image's pixel size in bytes. + + + + + Initializes a new instance of the class. + + + + + + Do error diffusion. + + + Error value of red component. + Error value of green component. + Error value of blue component. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized in protected members. + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Color table to use for image dithering. Must contain 2-256 colors. + + + Color table size determines format of the resulting image produced by this + image processing routine. If color table contains 16 color or less, then result image will have + 4 bpp indexed pixel format. If color table contains more than 16 colors, then result image will + have 8 bpp indexed pixel format. + + By default the property is initialized with default 16 colors, which are: + Black, Dark Blue, Dark Green, Dark Cyan, Dark Red, Dark Magenta, Dark Khaki, Light Gray, + Gray, Blue, Green, Cyan, Red, Magenta, Yellow and White. + + + Color table length must be in the [2, 256] range. + + + + + Use color caching during color dithering or not. + + + The property specifies if internal cache of already processed colors should be used or not. + For each pixel in the original image the color dithering routine does search in target color palette to find + the best matching color. To avoid doing the search again and again for already processed colors, the class may + use internal dictionary which maps colors of original image to indexes in target color palette. + + + The property provides a trade off. On one hand it may speedup color dithering routine, but on another + hand it increases memory usage. Also cache usage may not be efficient for very small target color tables. + + Default value is set to . + + + + + + Initializes a new instance of the class. + + + Diffusion coefficients (see + for more information). + + + + + Do error diffusion. + + + Error value of red component. + Error value of green component. + Error value of blue component. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized by base class. + + + + + Diffusion coefficients. + + + Set of coefficients, which are used for error diffusion to + pixel's neighbors. + + + + + Initializes a new instance of the class. + + + + + + Color quantization tools. + + + The class contains methods aimed to simplify work with color quantization + algorithms implementing interface. Using its methods it is possible + to calculate reduced color palette for the specified image or reduce colors to the specified number. + + Sample usage: + + // instantiate the images' color quantization class + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // get 16 color palette for a given image + Color[] colorTable = ciq.CalculatePalette( image, 16 ); + + // ... or just reduce colors in the specified image + Bitmap newImage = ciq.ReduceColors( image, 16 ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Color quantization algorithm to use for processing images. + + + + + Calculate reduced color palette for the specified image. + + + Image to calculate palette for. + Palette size to calculate. + + Return reduced color palette for the specified image. + + See for details. + + + + + Calculate reduced color palette for the specified image. + + + Image to calculate palette for. + Palette size to calculate. + + Return reduced color palette for the specified image. + + The method processes the specified image and feeds color value of each pixel + to the specified color quantization algorithm. Finally it returns color palette built by + that algorithm. + + Unsupported format of the source image - it must 24 or 32 bpp color image. + + + + + Create an image with reduced number of colors. + + + Source image to process. + Number of colors to get in the output image, [2, 256]. + + Returns image with reduced number of colors. + + See for details. + + + + + Create an image with reduced number of colors. + + + Source image to process. + Number of colors to get in the output image, [2, 256]. + + Returns image with reduced number of colors. + + The method creates an image, which looks similar to the specified image, but contains + reduced number of colors. First, target color palette is calculated using + method and then a new image is created, where pixels from the given source image are substituted by + best matching colors from calculated color table. + + The output image has 4 bpp or 8 bpp indexed pixel format depending on the target palette size - + 4 bpp for palette size 16 or less; 8 bpp otherwise. + + + Unsupported format of the source image - it must 24 or 32 bpp color image. + Invalid size of the target color palette. + + + + + Create an image with reduced number of colors using the specified palette. + + + Source image to process. + Target color palette. Must contatin 2-256 colors. + + Returns image with reduced number of colors. + + See for details. + + + + + Create an image with reduced number of colors using the specified palette. + + + Source image to process. + Target color palette. Must contatin 2-256 colors. + + Returns image with reduced number of colors. + + The method creates an image, which looks similar to the specified image, but contains + reduced number of colors. Is substitutes every pixel of the source image with the closest matching color + in the specified paletter. + + The output image has 4 bpp or 8 bpp indexed pixel format depending on the target palette size - + 4 bpp for palette size 16 or less; 8 bpp otherwise. + + + Unsupported format of the source image - it must 24 or 32 bpp color image. + Invalid size of the target color palette. + + + + + Color quantization algorithm used by this class to build color palettes for the specified images. + + + + + + Use color caching during color reduction or not. + + + The property has effect only for methods like and + specifies if internal cache of already processed colors should be used or not. For each pixel in the original + image the color reduction routine does search in target color palette to find the best matching color. + To avoid doing the search again and again for already processed colors, the class may use internal dictionary + which maps colors of original image to indexes in target color palette. + + + The property provides a trade off. On one hand it may speedup color reduction routine, but on another + hand it increases memory usage. Also cache usage may not be efficient for very small target color tables. + + Default value is set to . + + + + + + Color dithering using Floyd-Steinberg error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Floyd-Steinberg + coefficients. Error is diffused on 4 neighbor pixels with the next coefficients: + + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 16 colors table + Color[] colorTable = ciq.CalculatePalette( image, 16 ); + // create dithering routine + FloydSteinbergColorDithering dithering = new FloydSteinbergColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Interface which is implemented by different color quantization algorithms. + + + The interface defines set of methods, which are to be implemented by different + color quantization algorithms - algorithms which are aimed to provide reduced color table/palette + for a color image. + + See documentation to particular implementation of the interface for additional information + about the algorithm. + + + + + + Process color by a color quantization algorithm. + + + Color to process. + + Depending on particular implementation of interface, + this method may simply process the specified color or store it in internal list for + later color palette calculation. + + + + + Get palette of the specified size. + + + Palette size to return. + + Returns reduced color palette for the accumulated/processed colors. + + The method must be called after continuously calling method and + returns reduced color palette for colors accumulated/processed so far. + + + + + Clear internals of the algorithm, like accumulated color table, etc. + + + The methods resets internal state of a color quantization algorithm returning + it to initial state. + + + + + Color dithering using Jarvis, Judice and Ninke error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Jarvis-Judice-Ninke coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 7 | 5 | + | 3 | 5 | 7 | 5 | 3 | + | 1 | 3 | 5 | 3 | 1 | + + / 48 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 32 colors table + Color[] colorTable = ciq.CalculatePalette( image, 32 ); + // create dithering routine + JarvisJudiceNinkeColorDithering dithering = new JarvisJudiceNinkeColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Median cut color quantization algorithm. + + + The class implements median cut + color quantization algorithm. + + See also class, which may simplify processing of images. + + Sample usage: + + // create the color quantization algorithm + IColorQuantizer quantizer = new MedianCutQuantizer( ); + // process colors (taken from image for example) + for ( int i = 0; i < pixelsToProcess; i++ ) + { + quantizer.AddColor( /* pixel color */ ); + } + // get palette reduced to 16 colors + Color[] palette = quantizer.GetPalette( 16 ); + + + + + + + + + Add color to the list of processed colors. + + + Color to add to the internal list. + + The method adds the specified color into internal list of processed colors. The list + is used later by method to build reduced color table of the specified size. + + + + + + Get paletter of the specified size. + + + Palette size to get. + + Returns reduced palette of the specified size, which covers colors processed so far. + + The method must be called after continuously calling method and + returns reduced color palette for colors accumulated/processed so far. + + + + + Clear internal state of the color quantization algorithm by clearing the list of colors + so far processed. + + + + + + Color dithering with a thresold matrix (ordered dithering). + + + The class implements ordered color dithering as described on + Wikipedia. + The algorithm achieves dithering by applying a threshold map on + the pixels displayed, causing some of the pixels to be rendered at a different color, depending on + how far in between the color is of available color entries. + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 256 colors table + Color[] colorTable = ciq.CalculatePalette( image, 256 ); + // create dithering routine + OrderedColorDithering dithering = new OrderedColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Threshold matrix (see property). + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Threshold matrix - values to add source image's values. + + + The property keeps a threshold matrix, which is applied to values of a source image + to dither. By adding these values to the source image the algorithm produces the effect when pixels + of the same color in source image may have different color in the result image (which depends on pixel's + position). This threshold map is also known as an index matrix or Bayer matrix. + + By default the property is inialized with the below matrix: + + 2 18 6 22 + 26 10 30 14 + 8 24 4 20 + 32 16 28 12 + + + + + + + + Color table to use for image dithering. Must contain 2-256 colors. + + + Color table size determines format of the resulting image produced by this + image processing routine. If color table contains 16 color or less, then result image will have + 4 bpp indexed pixel format. If color table contains more than 16 colors, then result image will + have 8 bpp indexed pixel format. + + By default the property is initialized with default 16 colors, which are: + Black, Dark Blue, Dark Green, Dark Cyan, Dark Red, Dark Magenta, Dark Khaki, Light Gray, + Gray, Blue, Green, Cyan, Red, Magenta, Yellow and White. + + + Color table length must be in the [2, 256] range. + + + + + Use color caching during color dithering or not. + + + The property specifies if internal cache of already processed colors should be used or not. + For each pixel in the original image the color dithering routine does search in target color palette to find + the best matching color. To avoid doing the search again and again for already processed colors, the class may + use internal dictionary which maps colors of original image to indexes in target color palette. + + + The property provides a trade off. On one hand it may speedup color dithering routine, but on another + hand it increases memory usage. Also cache usage may not be efficient for very small target color tables. + + Default value is set to . + + + + + + Color dithering using Sierra error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Sierra coefficients. Error is diffused + on 10 neighbor pixels with next coefficients: + + | * | 5 | 3 | + | 2 | 4 | 5 | 4 | 2 | + | 2 | 3 | 2 | + + / 32 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create dithering routine (use default color table) + SierraColorDithering dithering = new SierraColorDithering( ); + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Color dithering using Stucki error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Stucki coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + | 1 | 2 | 4 | 2 | 1 | + + / 42 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 64 colors table + Color[] colorTable = ciq.CalculatePalette( image, 64 ); + // create dithering routine + StuckiColorDithering dithering = new StuckiColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + RGB components. + + + The class encapsulates RGB color components. + PixelFormat.Format24bppRgb + actually means BGR format. + + + + + + Index of red component. + + + + + Index of green component. + + + + + Index of blue component. + + + + + Index of alpha component for ARGB images. + + + + + Red component. + + + + + Green component. + + + + + Blue component. + + + + + Alpha component. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Red component. + Green component. + Blue component. + + + + + Initializes a new instance of the class. + + + Red component. + Green component. + Blue component. + Alpha component. + + + + + Initializes a new instance of the class. + + + Initialize from specified color. + + + + + Color value of the class. + + + + + HSL components. + + + The class encapsulates HSL color components. + + + + + Hue component. + + + Hue is measured in the range of [0, 359]. + + + + + Saturation component. + + + Saturation is measured in the range of [0, 1]. + + + + + Luminance value. + + + Luminance is measured in the range of [0, 1]. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Hue component. + Saturation component. + Luminance component. + + + + + Convert from RGB to HSL color space. + + + Source color in RGB color space. + Destination color in HSL color space. + + See HSL and HSV Wiki + for information about the algorithm to convert from RGB to HSL. + + + + + Convert from RGB to HSL color space. + + + Source color in RGB color space. + + Returns instance, which represents converted color value. + + + + + Convert from HSL to RGB color space. + + + Source color in HSL color space. + Destination color in RGB color space. + + + + + Convert the color to RGB color space. + + + Returns instance, which represents converted color value. + + + + + YCbCr components. + + + The class encapsulates YCbCr color components. + + + + + Index of Y component. + + + + + Index of Cb component. + + + + + Index of Cr component. + + + + + Y component. + + + + + Cb component. + + + + + Cr component. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Y component. + Cb component. + Cr component. + + + + + Convert from RGB to YCbCr color space (Rec 601-1 specification). + + + Source color in RGB color space. + Destination color in YCbCr color space. + + + + + Convert from RGB to YCbCr color space (Rec 601-1 specification). + + + Source color in RGB color space. + + Returns instance, which represents converted color value. + + + + + Convert from YCbCr to RGB color space. + + + Source color in YCbCr color space. + Destination color in RGB color space. + + + + + Convert the color to RGB color space. + + + Returns instance, which represents converted color value. + + + + + Filtering of frequencies outside of specified range in complex Fourier + transformed image. + + + The filer keeps only specified range of frequencies in complex + Fourier transformed image. The rest of frequencies are zeroed. + + Sample usage: + + // create complex image + ComplexImage complexImage = ComplexImage.FromBitmap( image ); + // do forward Fourier transformation + complexImage.ForwardFourierTransform( ); + // create filter + FrequencyFilter filter = new FrequencyFilter( new IntRange( 20, 128 ) ); + // apply filter + filter.Apply( complexImage ); + // do backward Fourier transformation + complexImage.BackwardFourierTransform( ); + // get complex image as bitmat + Bitmap fourierImage = complexImage.ToBitmap( ); + + + Initial image: + + Fourier image: + + + + + + + Image processing filter, which operates with Fourier transformed + complex image. + + + The interface defines the set of methods, which should be + provided by all image processing filter, which operate with Fourier + transformed complex image. + + + + + Apply filter to complex image. + + + Complex image to apply filter to. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Range of frequencies to keep. + + + + + Apply filter to complex image. + + + Complex image to apply filter to. + + The source complex image should be Fourier transformed. + + + + + Range of frequencies to keep. + + + The range specifies the range of frequencies to keep. Values is frequencies + outside of this range are zeroed. + + Default value is set to [0, 1024]. + + + + + Complex image. + + + The class is used to keep image represented in complex numbers sutable for Fourier + transformations. + + Sample usage: + + // create complex image + ComplexImage complexImage = ComplexImage.FromBitmap( image ); + // do forward Fourier transformation + complexImage.ForwardFourierTransform( ); + // get complex image as bitmat + Bitmap fourierImage = complexImage.ToBitmap( ); + + + Initial image: + + Fourier image: + + + + + + + Initializes a new instance of the class. + + + Image width. + Image height. + + The constractor is protected, what makes it imposible to instantiate this + class directly. To create an instance of this class or + method should be used. + + + + + Clone the complex image. + + + Returns copy of the complex image. + + + + + Create complex image from grayscale bitmap. + + + Source grayscale bitmap (8 bpp indexed). + + Returns an instance of complex image. + + The source image has incorrect pixel format. + Image width and height should be power of 2. + + + + + Create complex image from grayscale bitmap. + + + Source image data (8 bpp indexed). + + Returns an instance of complex image. + + The source image has incorrect pixel format. + Image width and height should be power of 2. + + + + + Convert complex image to bitmap. + + + Returns grayscale bitmap. + + + + + Applies forward fast Fourier transformation to the complex image. + + + + + + Applies backward fast Fourier transformation to the complex image. + + + + + + Image width. + + + + + + Image height. + + + + + + Status of the image - Fourier transformed or not. + + + + + + Complex image's data. + + + Return's 2D array of [height, width] size, which keeps image's + complex data. + + + + + Skew angle checker for scanned documents. + + + The class implements document's skew checking algorithm, which is based + on Hough line transformation. The algorithm + is based on searching for text base lines - black line of text bottoms' followed + by white line below. + + The routine supposes that a white-background document is provided + with black letters. The algorithm is not supposed for any type of objects, but for + document images with text. + + The range of angles to detect is controlled by property. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create instance of skew checker + DocumentSkewChecker skewChecker = new DocumentSkewChecker( ); + // get documents skew angle + double angle = skewChecker.GetSkewAngle( documentImage ); + // create rotation filter + RotateBilinear rotationFilter = new RotateBilinear( -angle ); + rotationFilter.FillColor = Color.White; + // rotate image applying the filter + Bitmap rotatedImage = rotationFilter.Apply( documentImage ); + + + Initial image: + + Deskewed image: + + + + + + + + + Initializes a new instance of the class. + + + + + Get skew angle of the provided document image. + + + Document's image to get skew angle of. + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's image to get skew angle of. + Image's rectangle to process (used to exclude processing of + regions, which are not relevant to skew detection). + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's image data to get skew angle of. + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's image data to get skew angle of. + Image's rectangle to process (used to exclude processing of + regions, which are not relevant to skew detection). + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's unmanaged image to get skew angle of. + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's unmanaged image to get skew angle of. + Image's rectangle to process (used to exclude processing of + regions, which are not relevant to skew detection). + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Steps per degree, [1, 10]. + + + The value defines quality of Hough transform and its ability to detect + line slope precisely. + + Default value is set to 1. + + + + + + Maximum skew angle to detect, [0, 45] degrees. + + + The value sets maximum document's skew angle to detect. + Document's skew angle can be as positive (rotated counter clockwise), as negative + (rotated clockwise). So setting this value to 25, for example, will lead to + [-25, 25] degrees detection range. + + Scanned documents usually have skew in the [-20, 20] degrees range. + + Default value is set to 30. + + + + + + Minimum angle to detect skew in degrees. + + + The property is deprecated and setting it has not any effect. + Use property instead. + + + + + Maximum angle to detect skew in degrees. + + + The property is deprecated and setting it has not any effect. + Use property instead. + + + + + Radius for searching local peak value, [1, 10]. + + + The value determines radius around a map's value, which is analyzed to determine + if the map's value is a local maximum in specified area. + + Default value is set to 4. + + + + + Drawing primitives. + + + The class allows to do drawing of some primitives directly on + locked image data or unmanaged image. + + All methods of this class support drawing only on color 24/32 bpp images and + on grayscale 8 bpp indexed images. + + When it comes to alpha blending for 24/32 bpp images, all calculations are done + as described on Wikipeadia + (see "over" operator). + + + + + + Fill rectangle on the specified image. + + + Source image data to draw on. + Rectangle's coordinates to fill. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Fill rectangle on the specified image. + + + Source image to draw on. + Rectangle's coordinates to fill. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Draw rectangle on the specified image. + + + Source image data to draw on. + Rectangle's coordinates to draw. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Draw rectangle on the specified image. + + + Source image to draw on. + Rectangle's coordinates to draw. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Draw a line on the specified image. + + + Source image data to draw on. + The first point to connect. + The second point to connect. + Line's color. + + The source image has incorrect pixel format. + + + + + Draw a line on the specified image. + + + Source image to draw on. + The first point to connect. + The second point to connect. + Line's color. + + The source image has incorrect pixel format. + + + + + Draw a polygon on the specified image. + + + Source image data to draw on. + Points of the polygon to draw. + Polygon's color. + + The method draws a polygon by connecting all points from the + first one to the last one and then connecting the last point with the first one. + + + + + + Draw a polygon on the specified image. + + + Source image to draw on. + Points of the polygon to draw. + Polygon's color. + + The method draws a polygon by connecting all points from the + first one to the last one and then connecting the last point with the first one. + + + + + + Draw a polyline on the specified image. + + + Source image data to draw on. + Points of the polyline to draw. + polyline's color. + + The method draws a polyline by connecting all points from the + first one to the last one. Unlike + method, this method does not connect the last point with the first one. + + + + + + Draw a polyline on the specified image. + + + Source image to draw on. + Points of the polyline to draw. + polyline's color. + + The method draws a polyline by connecting all points from the + first one to the last one. Unlike + method, this method does not connect the last point with the first one. + + + + + + Unsupported image format exception. + + + The unsupported image format exception is thrown in the case when + user passes an image of certain format to an image processing routine, which does + not support the format. Check documentation of the image processing routine + to discover which formats are supported by the routine. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Invalid image properties exception. + + + The invalid image properties exception is thrown in the case when + user provides an image with certain properties, which are treated as invalid by + particular image processing routine. Another case when this exception is + thrown is the case when user tries to access some properties of an image (or + of a recently processed image by some routine), which are not valid for that image. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Block matching implementation with the exhaustive search algorithm. + + + The class implements exhaustive search block matching algorithm + (see documentation for for information about + block matching algorithms). Exhaustive search algorithm tests each possible + location of block within search window trying to find a match with minimal + difference. + + Because of the exhaustive nature of the algorithm, high performance + should not be expected in the case if big number of reference points is provided + or big block size and search radius are specified. Minimizing theses values increases + performance. But too small block size and search radius may affect quality. + + The class processes only grayscale (8 bpp indexed) and color (24 bpp) images. + + Sample usage: + + // collect reference points using corners detector (for example) + SusanCornersDetector scd = new SusanCornersDetector( 30, 18 ); + List<IntPoint> points = scd.ProcessImage( sourceImage ); + + // create block matching algorithm's instance + ExhaustiveBlockMatching bm = new ExhaustiveBlockMatching( 8, 12 ); + // process images searching for block matchings + List<BlockMatch> matches = bm.ProcessImage( sourceImage, points, searchImage ); + + // draw displacement vectors + BitmapData data = sourceImage.LockBits( + new Rectangle( 0, 0, sourceImage.Width, sourceImage.Height ), + ImageLockMode.ReadWrite, sourceImage.PixelFormat ); + + foreach ( BlockMatch match in matches ) + { + // highlight the original point in source image + Drawing.FillRectangle( data, + new Rectangle( match.SourcePoint.X - 1, match.SourcePoint.Y - 1, 3, 3 ), + Color.Yellow ); + // draw line to the point in search image + Drawing.Line( data, match.SourcePoint, match.MatchPoint, Color.Red ); + + // check similarity + if ( match.Similarity > 0.98f ) + { + // process block with high similarity somehow special + } + } + + sourceImage.UnlockBits( data ); + + + Test image 1 (source): + + Test image 2 (search): + + Result image: + + + + + + + Block matching interface. + + + The interface specifies set of methods, which should be implemented by different + block matching algorithms. + + Block matching algorithms work with two images - source and search image - and + a set of reference points. For each provided reference point, the algorithm takes + a block from source image (reference point is a coordinate of block's center) and finds + the best match for it in search image providing its coordinate (search is done within + search window of specified size). In other words, block matching algorithm tries to + find new coordinates in search image of specified reference points in source image. + + + + + + + Process images matching blocks between them. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. + + + + + Process images matching blocks between them. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. + + + + + Process images matching blocks between them. + + + Source unmanaged image with reference points. + List of reference points to be matched. + Unmanaged image in which the reference points will be looked for. + + Returns list of found block matches. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Block size to search for. + Search radius. + + + + + Process images matching blocks between hem. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. The list is sorted by similarity + of found matches in descending order. + + Source and search images sizes must match. + Source images can be grayscale (8 bpp indexed) or color (24 bpp) image only. + Source and search images must have same pixel format. + + + + + Process images matching blocks between them. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. The list is sorted by similarity + of found matches in descending order. + + Source and search images sizes must match. + Source images can be grayscale (8 bpp indexed) or color (24 bpp) image only. + Source and search images must have same pixel format. + + + + + Process images matching blocks between them. + + + Source unmanaged image with reference points. + List of reference points to be matched. + Unmanaged image in which the reference points will be looked for. + + Returns list of found block matches. The list is sorted by similarity + of found matches in descending order. + + Source and search images sizes must match. + Source images can be grayscale (8 bpp indexed) or color (24 bpp) image only. + Source and search images must have same pixel format. + + + + + Search radius. + + + The value specifies the shift from reference point in all + four directions, used to search for the best matching block. + + Default value is set to 12. + + + + + + Block size to search for. + + + The value specifies block size to search for. For each provided + reference pointer, a square block of this size is taken from the source image + (reference point becomes the coordinate of block's center) and the best match + is searched in second image within specified search + radius. + + Default value is set to 16. + + + + + + Similarity threshold, [0..1]. + + + The property sets the minimal acceptable similarity between blocks + in source and search images. If similarity is lower than this value, + then the candidate block in search image is not treated as a match for the block + in source image. + + + Default value is set to 0.9. + + + + + + Exhaustive template matching. + + + The class implements exhaustive template matching algorithm, + which performs complete scan of source image, comparing each pixel with corresponding + pixel of template. + + The class processes only grayscale 8 bpp and color 24 bpp images. + + Sample usage: + + // create template matching algorithm's instance + ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching( 0.9f ); + // find all matchings with specified above similarity + TemplateMatch[] matchings = tm.ProcessImage( sourceImage, templateImage ); + // highlight found matchings + BitmapData data = sourceImage.LockBits( + new Rectangle( 0, 0, sourceImage.Width, sourceImage.Height ), + ImageLockMode.ReadWrite, sourceImage.PixelFormat ); + foreach ( TemplateMatch m in matchings ) + { + Drawing.Rectangle( data, m.Rectangle, Color.White ); + // do something else with matching + } + sourceImage.UnlockBits( data ); + + + The class also can be used to get similarity level between two image of the same + size, which can be useful to get information about how different/similar are images: + + // create template matching algorithm's instance + // use zero similarity to make sure algorithm will provide anything + ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching( 0 ); + // compare two images + TemplateMatch[] matchings = tm.ProcessImage( image1, image2 ); + // check similarity level + if ( matchings[0].Similarity > 0.95f ) + { + // do something with quite similar images + } + + + + + + + + Template matching algorithm's interface. + + + The interface specifies set of methods, which should be implemented by different + template matching algorithms - algorithms, which search for the given template in specified + image. + + + + + Process image looking for matchings with specified template. + + + Source image to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found matchings. + + + + + Process image looking for matchings with specified template. + + + Source image data to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found matchings. + + + + + Process image looking for matchings with specified template. + + + Unmanaged source image to process. + Unmanaged template image to search for. + Rectangle in source image to search template for. + + Returns array of found matchings. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Similarity threshold. + + + + + Process image looking for matchings with specified template. + + + Source image to process. + Template image to search for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Source image to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Source image data to process. + Template image to search for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Source image data to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Unmanaged source image to process. + Unmanaged template image to search for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Unmanaged source image to process. + Unmanaged template image to search for. + Rectangle in source image to search template for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than search zone. + + + + + Similarity threshold, [0..1]. + + + The property sets the minimal acceptable similarity between template + and potential found candidate. If similarity is lower than this value, + then object is not treated as matching with template. + + + Default value is set to 0.9. + + + + + + Add fillter - add pixel values of two images. + + + The add filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the sum value of corresponding pixels from provided images (if sum is greater + than maximum allowed value, 255 or 65535, then it is truncated to that maximum). + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Add filter = new Add( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Base class for filters, which operate with two images of the same size and format and + may be applied directly to the source image. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing or + applied directly to the source image without changing its size and pixel format. + + The base class is aimed for such type of filters, which require additional image + to process the source image. The additional image is set by + or property and must have the same size and pixel format + as source image. See documentation of particular inherited class for information + about overlay image purpose. + + + + + + + Base class for filters, which may be applied directly to the source image. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing or + applied directly to the source image without changing its size and pixel format. + + + + + + Image processing filter interface. + + + The interface defines the set of methods, which should be + provided by all image processing filters. Methods of this interface + keep the source image unchanged and returt the result of image processing + filter as new image. + + + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image. + + + Image in unmanaged memory. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image. + + + Source image to be processed. + Destination image to store filter's result. + + The method keeps the source image unchanged and puts the + the result of image processing filter into destination image. + + The destination image must have the size, which is expected by + the filter. + + + In the case if destination image has incorrect + size. + + + + + In-place filter interface. + + + The interface defines the set of methods, which should be + implemented by filters, which are capable to do image processing + directly on the source image. Not all image processing filters + can be applied directly to the source image - only filters, which do not + change image's dimension and pixel format, can be applied directly to the + source image. + + + + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image in unmanaged memory. + + + Image in unmanaged memory. + + The method applies filter directly to the provided image data. + + + + + Interface which provides information about image processing filter. + + + The interface defines set of properties, which provide different type + of information about image processing filters implementing interface + or another filter's interface. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + Keys of this dictionary defines all pixel formats which are supported for source + images, but corresponding values define what will be resulting pixel format. For + example, if value Format16bppGrayScale + is put into the dictionary with the + Format48bppRgb key, then it means + that the filter accepts color 48 bpp image and produces 16 bpp grayscale image as a result + of image processing. + + The information provided by this property is mostly actual for filters, which can not + be applied directly to the source image, but provide new image a result. Since usually all + filters implement interface, the information provided by this property + (if filter also implements interface) may be useful to + user to resolve filter's capabilities. + + Sample usage: + + // get filter's IFilterInformation interface + IFilterInformation info = (IFilterInformation) filter; + // check if the filter supports our image's format + if ( info.FormatTranslations.ContainsKey( image.PixelFormat ) + { + // format is supported, check what will be result of image processing + PixelFormat resultingFormat = info.FormatTranslations[image.PixelFormat]; + } + /// + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + + Source and overlay images have different pixel formats and/or size. + Overlay image is not set. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + Overlay image size and pixel format is checked by this base class, before + passing execution to inherited class. + + + + + Overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Unmanaged overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Difference filter - get the difference between overlay and source images. + + + The difference filter takes two images (source and + overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to absolute difference between corresponding pixels from provided images. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + In the case if images with alpha channel are used (32 or 64 bpp), visualization + of the result image may seem a bit unexpected - most probably nothing will be seen + (in the case if image is displayed according to its alpha channel). This may be + caused by the fact that after differencing the entire alpha channel will be zeroed + (zero difference between alpha channels), what means that the resulting image will be + 100% transparent. + + Sample usage: + + // create filter + Difference filter = new Difference( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Intersect filter - get MIN of pixels in two images. + + + The intersect filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the minimum value of corresponding pixels from provided images. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Intersect filter = new Intersect( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Merge filter - get MAX of pixels in two images. + + + The merge filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the maximum value of corresponding pixels from provided images. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Merge filter = new Merge( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Morph filter. + + + The filter combines two images by taking + specified percent of pixels' intensities from source + image and the rest from overlay image. For example, if the + source percent value is set to 0.8, then each pixel + of the result image equals to 0.8 * source + 0.2 * overlay, where source + and overlay are corresponding pixels' values in source and overlay images. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + Morph filter = new Morph( overlayImage ); + filter.SourcePercent = 0.75; + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Percent of source image to keep, [0, 1]. + + + The property specifies the percentage of source pixels' to take. The + rest is taken from an overlay image. + + + + + Move towards filter. + + + The result of this filter is an image, which is based on source image, + but updated in the way to decrease diffirence with overlay image - source image is + moved towards overlay image. The update equation is defined in the next way: + res = src + Min( Abs( ovr - src ), step ) * Sign( ovr - src ). + + The bigger is step size value the more resulting + image will look like overlay image. For example, in the case if step size is equal + to 255 (or 65535 for images with 16 bits per channel), the resulting image will be + equal to overlay image regardless of source image's pixel values. In the case if step + size is set to 1, the resulting image will very little differ from the source image. + But, in the case if the filter is applied repeatedly to the resulting image again and + again, it will become equal to overlay image in maximum 255 (65535 for images with 16 + bits per channel) iterations. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + MoveTowards filter = new MoveTowards( overlayImage, 20 ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + Initializes a new instance of the class + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Overlay image. + Step size. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + Step size. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Step size, [0, 65535]. + + + + The property defines the maximum amount of changes per pixel in the source image. + + Default value is set to 1. + + + + + + Stereo anaglyph filter. + + + The image processing filter produces stereo anaglyph images which are + aimed to be viewed through anaglyph glasses with red filter over the left eye and + cyan over the right. + + + + The stereo image is produced by combining two images of the same scene taken + from a bit different points. The right image must be provided to the filter using + property, but the left image must be provided to + method, which creates the anaglyph image. + + The filter accepts 24 bpp color images for processing. + + See enumeration for the list of supported anaglyph algorithms. + + Sample usage: + + // create filter + StereoAnaglyph filter = new StereoAnaglyph( ); + // set right image as overlay + filter.Overlay = rightImage + // apply the filter (providing left image) + Bitmap resultImage = filter.Apply( leftImage ); + + + Source image (left): + + Overlay image (right): + + Result image: + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Algorithm to use for creating anaglyph images. + + + + + Process the filter on the specified image. + + + Source image data (left image). + Overlay image data (right image). + + + + + Algorithm to use for creating anaglyph images. + + + Default value is set to . + + + + + Format translations dictionary. + + + + + Enumeration of algorithms for creating anaglyph images. + + + See anaglyph methods comparison for + descipton of different algorithms. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.299*Rl+0.587*Gl+0.114*Bl; + Ga=0; + Ba=0.299*Rr+0.587*Gr+0.114*Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.299*Rl+0.587*Gl+0.114*Bl; + Ga=0.299*Rr+0.587*Gr+0.114*Br; + Ba=0.299*Rr+0.587*Gr+0.114*Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=Rl; + Ga=Gr; + Ba=Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.299*Rl+0.587*Gl+0.114*Bl; + Ga=Gr; + Ba=Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.7*Gl+0.3*Bl; + Ga=Gr; + Ba=Br. + + + + + + Subtract filter - subtract pixel values of two images. + + + The subtract filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the difference value of corresponding pixels from provided images (if difference is less + than minimum allowed value, 0, then it is truncated to that minimum value). + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Subtract filter = new Subtract( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Calculate difference between two images and threshold it. + + + The filter produces similar result as applying filter and + then filter - thresholded difference between two images. Result of this + image processing routine may be useful in motion detection applications or finding areas of significant + difference. + + The filter accepts 8 and 24/32color images for processing. + In the case of color images, the image processing routine differences sum over 3 RGB channels (Manhattan distance), i.e. + |diffR| + |diffG| + |diffB|. + + + Sample usage: + + // create filter + ThresholdedDifference filter = new ThresholdedDifference( 60 ); + // apply the filter + filter.OverlayImage = backgroundImage; + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Background image: + + Result image: + + + + + + + + + Base class for filters, which operate with two images of the same size and format and + produce new image as a result. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing. + + The base class is aimed for such type of filters, which require additional image + to process the source image. The additional image is set by + or property and must have the same size and pixel format + as source image. See documentation of particular inherited class for information + about overlay image purpose. + + + + + + + Base class for filters, which produce new image of the same size as a + result of image processing. + + + The abstract class is the base class for all filters, which + do image processing creating new image with the same size as source. + Filters based on this class cannot be applied directly to the source + image, which is kept unchanged. + + The base class itself does not define supported pixel formats of source + image and resulting pixel formats of destination image. Filters inheriting from + this base class, should specify supported pixel formats and their transformations + overriding abstract property. + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + Destination image data + + Overlay image size and pixel format is checked by this base class, before + passing execution to inherited class. + + + + + Overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Unmanaged overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Difference threshold (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + Destination image data + + + + + Difference threshold. + + + The property specifies difference threshold. If difference between pixels of processing image + and overlay image is greater than this value, then corresponding pixel of result image is set to white; otherwise + black. + + + Default value is set to 15. + + + + + Number of pixels which were set to white in destination image during last image processing call. + + + The property may be useful to determine amount of difference between two images which, + for example, may be treated as amount of motion in motion detection applications, etc. + + + + + Format translations dictionary. + + + See for more information. + + + + + Calculate Euclidean difference between two images and threshold it. + + + The filter produces similar to , however it uses + Euclidean distance for finding difference between pixel values instead of Manhattan distance. Result of this + image processing routine may be useful in motion detection applications or finding areas of significant + difference. + + The filter accepts 8 and 24/32color images for processing. + + Sample usage: + + // create filter + ThresholdedEuclideanDifference filter = new ThresholdedEuclideanDifference( 60 ); + // apply the filter + filter.OverlayImage = backgroundImage; + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Background image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Difference threshold (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + Destination image data + + + + + Difference threshold. + + + The property specifies difference threshold. If difference between pixels of processing image + and overlay image is greater than this value, then corresponding pixel of result image is set to white; otherwise + black. + + + Default value is set to 15. + + + + + Number of pixels which were set to white in destination image during last image processing call. + + + The property may be useful to determine amount of difference between two images which, + for example, may be treated as amount of motion in motion detection applications, etc. + + + + + Format translations dictionary. + + + See for more information. + + + + + Adaptive thresholding using the internal image. + + + The image processing routine implements local thresholding technique described + by Derek Bradley and Gerhard Roth in the "Adaptive Thresholding Using the Integral Image" paper. + + + The brief idea of the algorithm is that every image's pixel is set to black if its brightness + is t percent lower (see ) than the average brightness + of surrounding pixels in the window of the specified size (see ), othwerwise it is set + to white. + + Sample usage: + + // create the filter + BradleyLocalThresholding filter = new BradleyLocalThresholding( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Window size to calculate average value of pixels for. + + + The property specifies window size around processing pixel, which determines number of + neighbor pixels to use for calculating their average brightness. + + Default value is set to 41. + + The value should be odd. + + + + + + Brightness difference limit between processing pixel and average value across neighbors. + + + The property specifies what is the allowed difference percent between processing pixel + and average brightness of neighbor pixels in order to be set white. If the value of the + current pixel is t percent (this property value) lower than the average then it is set + to black, otherwise it is set to white. + + Default value is set to 0.15. + + + + + + Format translations dictionary. + + + See for more information. + + + + + Iterative threshold search and binarization. + + + + The algorithm works in the following way: + + select any start threshold; + compute average value of Background (µB) and Object (µO) values: + 1) all pixels with a value that is below threshold, belong to the Background values; + 2) all pixels greater or equal threshold, belong to the Object values. + + calculate new thresghold: (µB + µO) / 2; + if |oldThreshold - newThreshold| is less than a given manimum allowed error, then stop iteration process + and create the binary image with the new threshold. + + + + For additional information see Digital Image Processing, Gonzalez/Woods. Ch.10 page:599. + + The filter accepts 8 and 16 bpp grayscale images for processing. + + Since the filter can be applied as to 8 bpp and to 16 bpp images, + the initial value of property should be set appropriately to the + pixel format. In the case of 8 bpp images the threshold value is in the [0, 255] range, but + in the case of 16 bpp images the threshold value is in the [0, 65535] range. + + Sample usage: + + // create filter + IterativeThreshold filter = new IterativeThreshold( 2, 128 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image (calculated threshold is 102): + + + + + + + + + + Threshold binarization. + + + The filter does image binarization using specified threshold value. All pixels + with intensities equal or higher than threshold value are converted to white pixels. All other + pixels with intensities below threshold value are converted to black pixels. + + The filter accepts 8 and 16 bpp grayscale images for processing. + + Since the filter can be applied as to 8 bpp and to 16 bpp images, + the value should be set appropriately to the pixel format. + In the case of 8 bpp images the threshold value is in the [0, 255] range, but in the case + of 16 bpp images the threshold value is in the [0, 65535] range. + + Sample usage: + + // create filter + Threshold filter = new Threshold( 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Base class for filters, which may be applied directly to the source image or its part. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing or + applied directly to the source image (or its part) without changing its size and + pixel format. + + + + + + In-place partial filter interface. + + + The interface defines the set of methods, which should be + implemented by filters, which are capable to do image processing + directly on the source image. Not all image processing filters + can be applied directly to the source image - only filters, which do not + change image dimension and pixel format, can be applied directly to the + source image. + + The interface also supports partial image filtering, allowing to specify + image rectangle, which should be filtered. + + + + + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by filter. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by filter. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image in unmanaged memory. + + + Image in unmanaged memory. + Image rectangle for processing by filter. + + The method applies filter directly to the provided image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Threshold value. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Threshold value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + Default value is set to 128. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Minimum allowed error, that ends the iteration process. + + + + + Initializes a new instance of the class. + + + Minimum allowed error, that ends the iteration process. + Initial threshold value. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should + 8 bpp grayscale (indexed) or 16 bpp grayscale image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should + 8 bpp grayscale (indexed) or 16 bpp grayscale image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should + 8 bpp grayscale (indexed) or 16 bpp grayscale image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Minimum error, value when iterative threshold search is stopped. + + + Default value is set to 0. + + + + + Otsu thresholding. + + + The class implements Otsu thresholding, which is described in + N. Otsu, "A threshold selection method from gray-level histograms", IEEE Trans. Systems, + Man and Cybernetics 9(1), pp. 62–66, 1979. + + This implementation instead of minimizing the weighted within-class variance + does maximization of between-class variance, what gives the same result. The approach is + described in this presentation. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + OtsuThreshold filter = new OtsuThreshold( ); + // apply the filter + filter.ApplyInPlace( image ); + // check threshold value + byte t = filter.ThresholdValue; + // ... + + + Initial image: + + Result image (calculated threshold is 97): + + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + The property is read only and represents the value, which + was automaticaly calculated using Otsu algorithm. + + + + + Threshold using Simple Image Statistics (SIS). + + + The filter performs image thresholding calculating threshold automatically + using simple image statistics method. For each pixel: + + two gradients are calculated - ex = |I(x + 1, y) - I(x - 1, y)| and + |I(x, y + 1) - I(x, y - 1)|; + weight is calculated as maximum of two gradients; + sum of weights is updated (weightTotal += weight); + sum of weighted pixel values is updated (total += weight * I(x, y)). + + The result threshold is calculated as sum of weighted pixel values divided by sum of weight. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SISThreshold filter = new SISThreshold( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image (calculated threshold is 127): + + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + The property is read only and represents the value, which + was automaticaly calculated using image statistics. + + + + + Base class for image resizing filters. + + + The abstract class is the base class for all filters, + which implement image rotation algorithms. + + + + + + Base class for filters, which may produce new image of different size as a + result of image processing. + + + The abstract class is the base class for all filters, which + do image processing creating new image of the size, which may differ from the + size of source image. Filters based on this class cannot be applied directly + to the source image, which is kept unchanged. + + The base class itself does not define supported pixel formats of source + image and resulting pixel formats of destination image. Filters inheriting from + this base class, should specify supported pixel formats and their transformations + overriding abstract property. + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + New image width. + + + + + New image height. + + + + + Initializes a new instance of the class. + + + Width of the new resized image. + Height of the new resize image. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Width of the new resized image. + + + + + + Height of the new resized image. + + + + + + Base class for image rotation filters. + + + The abstract class is the base class for all filters, + which implement rotating algorithms. + + + + + Rotation angle. + + + + + Keep image size or not. + + + + + Fill color. + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property to false. + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Rotation angle, [0, 360]. + + + + + Keep image size or not. + + + The property determines if source image's size will be kept + as it is or not. If the value is set to false, then the new image will have + new dimension according to rotation angle. If the valus is set to + true, then the new image will have the same size, which means that some parts + of the image may be clipped because of rotation. + + + + + + Fill color. + + + The fill color is used to fill areas of destination image, + which don't have corresponsing pixels in source image. + + + + + Base class for filters, which require source image backup to make them applicable to + source image (or its part) directly. + + + The base class is used for filters, which can not do + direct manipulations with source image. To make effect of in-place filtering, + these filters create a background copy of the original image (done by this + base class) and then do manipulations with it putting result back to the original + source image. + + The background copy of the source image is created only in the case of in-place + filtering. Otherwise background copy is not created - source image is processed and result is + put to destination image. + + The base class is for those filters, which support as filtering entire image, as + partial filtering of specified rectangle only. + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Ordered dithering using Bayer matrix. + + + The filter represents filter initialized + with the next threshold matrix: + + byte[,] matrix = new byte[4, 4] + { + { 0, 192, 48, 240 }, + { 128, 64, 176, 112 }, + { 32, 224, 16, 208 }, + { 160, 96, 144, 80 } + }; + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + BayerDithering filter = new BayerDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Binarization with thresholds matrix. + + + Idea of the filter is the same as idea of filter - + change pixel value to white, if its intensity is equal or higher than threshold value, or + to black otherwise. But instead of using single threshold value for all pixel, the filter + uses matrix of threshold values. Processing image is divided to adjacent windows of matrix + size each. For pixels binarization inside of each window, corresponding threshold values are + used from specified threshold matrix. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create binarization matrix + byte[,] matrix = new byte[4, 4] + { + { 95, 233, 127, 255 }, + { 159, 31, 191, 63 }, + { 111, 239, 79, 207 }, + { 175, 47, 143, 15 } + }; + // create filter + OrderedDithering filter = new OrderedDithering( matrix ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Thresholds matrix. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Initializes a new instance of the class. + + + + + + Dithering using Burkes error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Burkes coefficients. Error is diffused + on 7 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + + / 32 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + BurkesDithering filter = new BurkesDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Base class for error diffusion dithering, where error is diffused to + adjacent neighbor pixels. + + + The class does error diffusion to adjacent neighbor pixels + using specified set of coefficients. These coefficients are represented by + 2 dimensional jugged array, where first array of coefficients is for + right-standing pixels, but the rest of arrays are for bottom-standing pixels. + All arrays except the first one should have odd number of coefficients. + + Suppose that error diffusion coefficients are represented by the next + jugged array: + + + int[][] coefficients = new int[2][] { + new int[1] { 7 }, + new int[3] { 3, 5, 1 } + }; + + + The above coefficients are used to diffuse error over the next neighbor + pixels (* marks current pixel, coefficients are placed to corresponding + neighbor pixels): + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + ErrorDiffusionToAdjacentNeighbors filter = new ErrorDiffusionToAdjacentNeighbors( + new int[3][] { + new int[2] { 5, 3 }, + new int[5] { 2, 4, 5, 4, 2 }, + new int[3] { 2, 3, 2 } + } ); + // apply the filter + filter.ApplyInPlace( image ); + + + + + + + Base class for error diffusion dithering. + + + The class is the base class for binarization algorithms based on + error diffusion. + + Binarization with error diffusion in its idea is similar to binarization based on thresholding + of pixels' cumulative value (see ). Each pixel is binarized based not only + on its own value, but on values of some surrounding pixels. During pixel's binarization, its binarization + error is distributed (diffused) to some neighbor pixels with some coefficients. This error diffusion + updates neighbor pixels changing their values, what affects their upcoming binarization. Error diffuses + only on unprocessed yet neighbor pixels, which are right and bottom pixels usually (in the case if image + processing is done from upper left corner to bottom right corner). Binarization error equals + to processing pixel value, if it is below threshold value, or pixel value minus 255 otherwise. + + The filter accepts 8 bpp grayscale images for processing. + + + + + + Current processing X coordinate. + + + + + Current processing Y coordinate. + + + + + Processing X start position. + + + + + Processing Y start position. + + + + + Processing X stop position. + + + + + Processing Y stop position. + + + + + Processing image's stride (line size). + + + + + Initializes a new instance of the class. + + + + + + Do error diffusion. + + + Current error value. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized in protected members. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Threshold value. + + + Default value is 128. + + + + + Format translations dictionary. + + + + + Initializes a new instance of the class. + + + Diffusion coefficients. + + + + + Do error diffusion. + + + Current error value. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized by base class. + + + + + Diffusion coefficients. + + + Set of coefficients, which are used for error diffusion to + pixel's neighbors. + + + + + Initializes a new instance of the class. + + + + + + Dithering using Floyd-Steinberg error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Floyd-Steinberg + coefficients. Error is diffused on 4 neighbor pixels with next coefficients: + + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + FloydSteinbergDithering filter = new FloydSteinbergDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Dithering using Jarvis, Judice and Ninke error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Jarvis-Judice-Ninke coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 7 | 5 | + | 3 | 5 | 7 | 5 | 3 | + | 1 | 3 | 5 | 3 | 1 | + + / 48 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + JarvisJudiceNinkeDithering filter = new JarvisJudiceNinkeDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Dithering using Sierra error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Sierra coefficients. Error is diffused + on 10 neighbor pixels with next coefficients: + + | * | 5 | 3 | + | 2 | 4 | 5 | 4 | 2 | + | 2 | 3 | 2 | + + / 32 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SierraDithering filter = new SierraDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Dithering using Stucki error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Stucki coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + | 1 | 2 | 4 | 2 | 1 | + + / 42 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + StuckiDithering filter = new StuckiDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Threshold binarization with error carry. + + + The filter is similar to filter in the way, + that it also uses threshold value for image binarization. Unlike regular threshold + filter, this filter uses cumulative pixel value in comparing with threshold value. + If cumulative pixel value is below threshold value, then image pixel becomes black. + If cumulative pixel value is equal or higher than threshold value, then image pixel + becomes white and cumulative pixel value is decreased by 255. In the beginning of each + image line the cumulative value is reset to 0. + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + Threshold filter = new Threshold( 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Threshold value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + Default value is 128. + + + + + Generic Bayer fileter image processing routine. + + + The class implements Bayer filter + routine, which creates color image out of grayscale image produced by image sensor built with + Bayer color matrix. + + This Bayer filter implementation is made generic by allowing user to specify used + Bayer pattern. This makes it slower. For optimized version + of the Bayer filter see class, which implements Bayer filter + specifically optimized for some well known patterns. + + The filter accepts 8 bpp grayscale images and produces 24 bpp RGB image. + + Sample usage: + + // create filter + BayerFilter filter = new BayerFilter( ); + // apply the filter + Bitmap rgbImage = filter.Apply( image ); + + + Source image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Specifies if demosaicing must be done or not. + + + The property specifies if color demosaicing must be done or not. + If the property is set to , then pixels of the result color image + are colored according to the Bayer pattern used, i.e. every pixel + of the source grayscale image is copied to corresponding color plane of the result image. + If the property is set to , then pixels of the result image + are set to color, which is obtained by averaging color components from the 3x3 window - pixel + itself plus 8 surrounding neighbors. + + Default value is set to . + + + + + + Specifies Bayer pattern used for decoding color image. + + + The property specifies 2x2 array of RGB color indexes, which set the + Bayer patter used for decoding color image. + + By default the property is set to: + + new int[2, 2] { { RGB.G, RGB.R }, { RGB.B, RGB.G } } + , + which corresponds to + + G R + B G + + pattern. + + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Set of Bayer patterns supported by . + + + + + Pattern:

+ G R
+ B G +
+
+ + + Pattern:

+ B G
+ G R +
+
+ + + Optimized Bayer fileter image processing routine. + + + The class implements Bayer filter + routine, which creates color image out of grayscale image produced by image sensor built with + Bayer color matrix. + + This class does all the same as class. However this version is + optimized for some well known patterns defined in enumeration. + Also this class processes images with even width and height only. Image size must be at least 2x2 pixels. + + + The filter accepts 8 bpp grayscale images and produces 24 bpp RGB image. + + Sample usage: + + // create filter + BayerFilter filter = new BayerFilter( ); + // apply the filter + Bitmap rgbImage = filter.Apply( image ); + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Bayer pattern of source images to decode. + + + The property specifies Bayer pattern of source images to be + decoded into color images. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Brightness adjusting in RGB color space. + + + The filter operates in RGB color space and adjusts + pixels' brightness by increasing every pixel's RGB values by the specified + adjust value. The filter is based on + filter and simply sets all input ranges to (0, 255-) and + all output range to (, 255) in the case if the adjust value is positive. + If the adjust value is negative, then all input ranges are set to + (-, 255 ) and all output ranges are set to + ( 0, 255+). + + See documentation for more information about the base filter. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + BrightnessCorrection filter = new BrightnessCorrection( -50 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Brightness adjust value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Brightness adjust value, [-255, 255]. + + + Default value is set to 10, which corresponds to increasing + RGB values of each pixel by 10. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Channels filters. + + + The filter does color channels' filtering by clearing (filling with + specified values) values, which are inside/outside of the specified value's + range. The filter allows to fill certain ranges of RGB color channels with specified + value. + + The filter is similar to , but operates with not + entire pixels, but with their RGB values individually. This means that pixel itself may + not be filtered (will be kept), but one of its RGB values may be filtered if they are + inside/outside of specified range. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + ChannelFiltering filter = new ChannelFiltering( ); + // set channels' ranges to keep + filter.Red = new IntRange( 0, 255 ); + filter.Green = new IntRange( 100, 255 ); + filter.Blue = new IntRange( 100, 255 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Red channel's filtering range. + Green channel's filtering range. + Blue channel's filtering range. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Calculate filtering map. + + + Filtering range. + Fillter value. + Fill outside or inside the range. + Filtering map. + + + + + Format translations dictionary. + + + + + Red channel's range. + + + + + Red fill value. + + + + + Green channel's range. + + + + + Green fill value. + + + + + Blue channel's range. + + + + + Blue fill value. + + + + + Determines, if red channel should be filled inside or outside filtering range. + + + Default value is set to . + + + + + Determines, if green channel should be filled inside or outside filtering range. + + + Default value is set to . + + + + + Determines, if blue channel should be filled inside or outside filtering range. + + + Default value is set to . + + + + + Color filtering. + + + The filter filters pixels inside/outside of specified RGB color range - + it keeps pixels with colors inside/outside of specified range and fills the rest with + specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + ColorFiltering filter = new ColorFiltering( ); + // set color ranges to keep + filter.Red = new IntRange( 100, 255 ); + filter.Green = new IntRange( 0, 75 ); + filter.Blue = new IntRange( 0, 75 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Red components filtering range. + Green components filtering range. + Blue components filtering range. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Range of red color component. + + + + + Range of green color component. + + + + + Range of blue color component. + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside of specified + color ranges. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Color remapping. + + + The filter allows to remap colors of the image. Unlike filter + the filter allow to do non-linear remapping. For each pixel of specified image the filter changes + its values (value of each color plane) to values, which are stored in remapping arrays by corresponding + indexes. For example, if pixel's RGB value equals to (32, 96, 128), the filter will change it to + ([32], [96], [128]). + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create map + byte[] map = new byte[256]; + for ( int i = 0; i < 256; i++ ) + { + map[i] = (byte) Math.Min( 255, Math.Pow( 2, (double) i / 32 ) ); + } + // create filter + ColorRemapping filter = new ColorRemapping( map, map, map ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Initializes the filter without any remapping. All + pixel values are mapped to the same values. + + + + + Initializes a new instance of the class. + + + Red map. + Green map. + Blue map. + + + + + Initializes a new instance of the class. + + + Gray map. + + This constructor is supposed for grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Remapping array for red color plane. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's red value r to [r]. + + A map should be array with 256 value. + + + + + Remapping array for green color plane. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's green value g to [g]. + + A map should be array with 256 value. + + + + + Remapping array for blue color plane. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's blue value b to [b]. + + A map should be array with 256 value. + + + + + Remapping array for gray color. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's value g to [g]. + + The gray map is for grayscale images only. + + A map should be array with 256 value. + + + + + Contrast adjusting in RGB color space. + + + The filter operates in RGB color space and adjusts + pixels' contrast value by increasing RGB values of bright pixel and decreasing + RGB values of dark pixels (or vise versa if contrast needs to be decreased). + The filter is based on + filter and simply sets all input ranges to (, 255-) and + all output range to (0, 255) in the case if the factor value is positive. + If the factor value is negative, then all input ranges are set to + (0, 255 ) and all output ranges are set to + (-, 255_). + + See documentation forr more information about the base filter. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + ContrastCorrection filter = new ContrastCorrection( 15 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Contrast adjusting factor. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Contrast adjusting factor, [-127, 127]. + + + Factor which is used to adjust contrast. Factor values greater than + 0 increase contrast making light areas lighter and dark areas darker. Factor values + less than 0 decrease contrast - decreasing variety of contrast. + + Default value is set to 10. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Contrast stretching filter. + + + Contrast stretching (or as it is often called normalization) is a simple image enhancement + technique that attempts to improve the contrast in an image by 'stretching' the range of intensity values + it contains to span a desired range of values, e.g. the full range of pixel values that the image type + concerned allows. It differs from the more sophisticated histogram equalization + in that it can only apply a linear scaling function to the image pixel values. + + The result of this filter may be achieved by using class, which allows to + get pixels' intensities histogram, and filter, which does linear correction + of pixel's intensities. + + The filter accepts 8 bpp grayscale and 24 bpp color images. + + Sample usage: + + // create filter + ContrastStretch filter = new ContrastStretch( ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Source image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Euclidean color filtering. + + + The filter filters pixels, which color is inside/outside + of RGB sphere with specified center and radius - it keeps pixels with + colors inside/outside of the specified sphere and fills the rest with + specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + EuclideanColorFiltering filter = new EuclideanColorFiltering( ); + // set center colol and radius + filter.CenterColor = new RGB( 215, 30, 30 ); + filter.Radius = 100; + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + RGB sphere's center. + RGB sphere's radius. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + RGB sphere's radius, [0, 450]. + + + Default value is 100. + + + + + RGB sphere's center. + + + Default value is (255, 255, 255) - white color. + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside specified + RGB sphere. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Extract RGB channel from image. + + + Extracts specified channel of color image and returns + it as grayscale image. + + The filter accepts 24, 32, 48 and 64 bpp color images and produces + 8 (if source is 24 or 32 bpp image) or 16 (if source is 48 or 64 bpp image) + bpp grayscale image. + + Sample usage: + + // create filter + ExtractChannel filter = new ExtractChannel( RGB.G ); + // apply the filter + Bitmap channelImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + ARGB channel to extract. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + Can not extract alpha channel from none ARGB image. The + exception is throw, when alpha channel is requested from RGB image. + + + + + Format translations dictionary. + + + + + ARGB channel to extract. + + + Default value is set to . + + Invalid channel is specified. + + + + + Gamma correction filter. + + + The filter performs gamma correction + of specified image in RGB color space. Each pixels' value is converted using the Vout=Ving + equation, where g is gamma value. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + GammaCorrection filter = new GammaCorrection( 0.5 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Gamma value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Gamma value, [0.1, 5.0]. + + + Default value is set to 2.2. + + + + + Base class for image grayscaling. + + + This class is the base class for image grayscaling. Other + classes should inherit from this class and specify RGB + coefficients used for color image conversion to grayscale. + + The filter accepts 24, 32, 48 and 64 bpp color images and produces + 8 (if source is 24 or 32 bpp image) or 16 (if source is 48 or 64 bpp image) + bpp grayscale image. + + Sample usage: + + // create grayscale filter (BT709) + Grayscale filter = new Grayscale( 0.2125, 0.7154, 0.0721 ); + // apply the filter + Bitmap grayImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + Portion of red channel's value to use during conversion from RGB to grayscale. + + + + + + Portion of green channel's value to use during conversion from RGB to grayscale. + + + + + + Portion of blue channel's value to use during conversion from RGB to grayscale. + + + + + + Initializes a new instance of the class. + + + Red coefficient. + Green coefficient. + Blue coefficient. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + Set of predefined common grayscaling algorithms, which have + already initialized grayscaling coefficients. + + + + + + Grayscale image using BT709 algorithm. + + + + The instance uses BT709 algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.2125; + Green: 0.7154; + Blue: 0.0721. + + + Sample usage: + + + // apply the filter + Bitmap grayImage = Grayscale.CommonAlgorithms.BT709.Apply( image ); + + + + + + + Grayscale image using R-Y algorithm. + + + + The instance uses R-Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.5; + Green: 0.419; + Blue: 0.081. + + + Sample usage: + + + // apply the filter + Bitmap grayImage = Grayscale.CommonAlgorithms.RMY.Apply( image ); + + + + + + + Grayscale image using Y algorithm. + + + + The instance uses Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.299; + Green: 0.587; + Blue: 0.114. + + + Sample usage: + + + // apply the filter + Bitmap grayImage = Grayscale.CommonAlgorithms.Y.Apply( image ); + + + + + + + Grayscale image using BT709 algorithm. + + + The class uses BT709 algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.2125; + Green: 0.7154; + Blue: 0.0721. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Grayscale image using R-Y algorithm. + + + The class uses R-Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.5; + Green: 0.419; + Blue: 0.081. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Convert grayscale image to RGB. + + + The filter creates color image from specified grayscale image + initializing all RGB channels to the same value - pixel's intensity of grayscale image. + + The filter accepts 8 bpp grayscale images and produces + 24 bpp RGB image. + + Sample usage: + + // create filter + GrayscaleToRGB filter = new GrayscaleToRGB( ); + // apply the filter + Bitmap rgbImage = filter.Apply( image ); + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Grayscale image using Y algorithm. + + + The class uses Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.299; + Green: 0.587; + Blue: 0.114. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Histogram equalization filter. + + + The filter does histogram equalization increasing local contrast in images. The effect + of histogram equalization can be better seen on images, where pixel values have close contrast values. + Through this adjustment, pixels intensities can be better distributed on the histogram. This allows for + areas of lower local contrast to gain a higher contrast without affecting the global contrast. + + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + For color images the histogram equalization is applied to each color plane separately. + + Sample usage: + + // create filter + HistogramEqualization filter = new HistogramEqualization( ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Source image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Invert image. + + + The filter inverts colored and grayscale images. + + The filter accepts 8, 16 bpp grayscale and 24, 48 bpp color images for processing. + + Sample usage: + + // create filter + Invert filter = new Invert( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Linear correction of RGB channels. + + + The filter performs linear correction of RGB channels by mapping specified + channels' input ranges to output ranges. It is similar to the + , but the remapping is linear. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + LevelsLinear filter = new LevelsLinear( ); + // set ranges + filter.InRed = new IntRange( 30, 230 ); + filter.InGreen = new IntRange( 50, 240 ); + filter.InBlue = new IntRange( 10, 210 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Calculate conversion map. + + + Input range. + Output range. + Conversion map. + + + + + Format translations dictionary. + + + + + Red component's input range. + + + + + Green component's input range. + + + + + Blue component's input range. + + + + + Gray component's input range. + + + + + Input range for RGB components. + + + The property allows to set red, green and blue input ranges to the same value. + + + + + Red component's output range. + + + + + Green component's output range. + + + + + Blue component's output range. + + + + + Gray component's output range. + + + + + Output range for RGB components. + + + The property allows to set red, green and blue output ranges to the same value. + + + + + Linear correction of RGB channels for images, which have 16 bpp planes (16 bit gray images or 48/64 bit colour images). + + + The filter performs linear correction of RGB channels by mapping specified + channels' input ranges to output ranges. This version of the filter processes only images + with 16 bpp colour planes. See for 8 bpp version. + + The filter accepts 16 bpp grayscale and 48/64 bpp colour images for processing. + + Sample usage: + + // create filter + LevelsLinear16bpp filter = new LevelsLinear16bpp( ); + // set ranges + filter.InRed = new IntRange( 3000, 42000 ); + filter.InGreen = new IntRange( 5000, 37500 ); + filter.InBlue = new IntRange( 1000, 60000 ); + // apply the filter + filter.ApplyInPlace( image ); + + + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Calculate conversion map. + + + Input range. + Output range. + Conversion map. + + + + + Format translations dictionary. + + + + + Red component's input range. + + + + + Green component's input range. + + + + + Blue component's input range. + + + + + Gray component's input range. + + + + + Input range for RGB components. + + + The property allows to set red, green and blue input ranges to the same value. + + + + + Red component's output range. + + + + + Green component's output range. + + + + + Blue component's output range. + + + + + Gray component's output range. + + + + + Output range for RGB components. + + + The property allows to set red, green and blue output ranges to the same value. + + + + + Replace RGB channel of color imgae. + + + Replaces specified RGB channel of color image with + specified grayscale image. + + The filter is quite useful in conjunction with filter + (however may be used alone in some cases). Using the filter + it is possible to extract one of RGB channel, perform some image processing with it and then + put it back into the original color image. + + The filter accepts 24, 32, 48 and 64 bpp color images for processing. + + Sample usage: + + // extract red channel + ExtractChannel extractFilter = new ExtractChannel( RGB.R ); + Bitmap channel = extractFilter.Apply( image ); + // threshold channel + Threshold thresholdFilter = new Threshold( 230 ); + thresholdFilter.ApplyInPlace( channel ); + // put the channel back + ReplaceChannel replaceFilter = new ReplaceChannel( RGB.R, channel ); + replaceFilter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + ARGB channel to replace. + + + + + Initializes a new instance of the class. + + + ARGB channel to replace. + Channel image to use for replacement. + + + + + Initializes a new instance of the class. + + + RGB channel to replace. + Unmanaged channel image to use for replacement. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + Channel image was not specified. + Channel image size does not match source + image size. + Channel image's format does not correspond to format of the source image. + + Can not replace alpha channel of none ARGB image. The + exception is throw, when alpha channel is requested to be replaced in RGB image. + + + + + Format translations dictionary. + + + + + ARGB channel to replace. + + + Default value is set to . + + Invalid channel is specified. + + + + + Grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8 bpp indexed or 16 bpp grayscale image. + + + + + Unmanaged grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8 bpp indexed or 16 bpp grayscale image. + + + + + Rotate RGB channels. + + + The filter rotates RGB channels: red channel is replaced with green, + green channel is replaced with blue, blue channel is replaced with red. + + The filter accepts 24/32 bpp color images for processing. + + Sample usage: + + // create filter + RotateChannels filter = new RotateChannels( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Sepia filter - old brown photo. + + + The filter makes an image look like an old brown photo. The main + idea of the algorithm: + + transform to YIQ color space; + modify it; + transform back to RGB. + + + + 1) RGB -> YIQ: + + Y = 0.299 * R + 0.587 * G + 0.114 * B + I = 0.596 * R - 0.274 * G - 0.322 * B + Q = 0.212 * R - 0.523 * G + 0.311 * B + + + + + 2) update: + + I = 51 + Q = 0 + + + + + 3) YIQ -> RGB: + + R = 1.0 * Y + 0.956 * I + 0.621 * Q + G = 1.0 * Y - 0.272 * I - 0.647 * Q + B = 1.0 * Y - 1.105 * I + 1.702 * Q + + + + The filter accepts 24/32 bpp color images for processing. + + Sample usage: + + // create filter + Sepia filter = new Sepia( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Simple posterization of an image. + + + The class implements simple posterization of an image by splitting + each color plane into adjacent areas of the specified size. After the process + is done, each color plane will contain maximum of 256/PosterizationInterval levels. + For example, if grayscale image is posterized with posterization interval equal to 64, + then result image will contain maximum of 4 tones. If color image is posterized with the + same posterization interval, then it will contain maximum of 43=64 colors. + See property to get information about the way how to control + color used to fill posterization areas. + + Posterization is a process in photograph development which converts normal photographs + into an image consisting of distinct, but flat, areas of different tones or colors. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images. + + Sample usage: + + // create filter + SimplePosterization filter = new SimplePosterization( ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Specifies filling type of posterization areas. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Posterization interval, which specifies size of posterization areas. + + + The property specifies size of adjacent posterization areas + for each color plane. The value has direct effect on the amount of colors + in the result image. For example, if grayscale image is posterized with posterization + interval equal to 64, then result image will contain maximum of 4 tones. If color + image is posterized with same posterization interval, then it will contain maximum + of 43=64 colors. + + Default value is set to 64. + + + + + + Posterization filling type. + + + The property controls the color, which is used to substitute + colors within the same posterization interval - minimum, maximum or average value. + + + Default value is set to . + + + + + + Format translations dictionary. + + + + + Enumeration of possible types of filling posterized areas. + + + + + Fill area with minimum color's value. + + + + + Fill area with maximum color's value. + + + + + Fill area with average color's value. + + + + + Blur filter. + + + The filter performs convolution filter using + the blur kernel: + + + 1 2 3 2 1 + 2 4 5 4 2 + 3 5 6 5 3 + 2 4 5 4 2 + 1 2 3 2 1 + + + For the list of supported pixel formats, see the documentation to + filter. + + By default this filter sets property to + , so the alpha channel of 32 bpp and 64 bpp images is blurred as well. + + + Sample usage: + + // create filter + Blur filter = new Blur( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Convolution filter. + + + The filter implements convolution operator, which calculates each pixel + of the result image as weighted sum of the correspond pixel and its neighbors in the source + image. The weights are set by convolution kernel. The weighted + sum is divided by before putting it into result image and also + may be thresholded using value. + + Convolution is a simple mathematical operation which is fundamental to many common + image processing filters. Depending on the type of provided kernel, the filter may produce + different results, like blur image, sharpen it, find edges, etc. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. Note: depending on the value of + property, the alpha channel is either copied as is or processed with the kernel. + + Sample usage: + + // define emboss kernel + int[,] kernel = { + { -2, -1, 0 }, + { -1, 1, 1 }, + { 0, 1, 2 } }; + // create filter + Convolution filter = new Convolution( kernel ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Convolution kernel. + + Using this constructor (specifying only convolution kernel), + division factor will be calculated automatically + summing all kernel values. In the case if kernel's sum equals to zero, + division factor will be assigned to 1. + + Invalid kernel size is specified. Kernel must be + square, its width/height should be odd and should be in the [3, 25] range. + + + + + Initializes a new instance of the class. + + + Convolution kernel. + Divisor, used used to divide weighted sum. + + Invalid kernel size is specified. Kernel must be + square, its width/height should be odd and should be in the [3, 25] range. + Divisor can not be equal to zero. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Convolution kernel. + + + + Convolution kernel must be square and its width/height + should be odd and should be in the [3, 99] range. + + Setting convolution kernel through this property does not + affect - it is not recalculated automatically. + + + Invalid kernel size is specified. + + + + + Division factor. + + + The value is used to divide convolution - weighted sum + of pixels is divided by this value. + + The value may be calculated automatically in the case if constructor + with one parameter is used (). + + + Divisor can not be equal to zero. + + + + + Threshold to add to weighted sum. + + + The property specifies threshold value, which is added to each weighted + sum of pixels. The value is added right after division was done by + value. + + Default value is set to 0. + + + + + + Use dynamic divisor for edges or not. + + + The property specifies how to handle edges. If it is set to + , then the same divisor (which is specified by + property or calculated automatically) will be applied both for non-edge regions + and for edge regions. If the value is set to , then dynamically + calculated divisor will be used for edge regions, which is sum of those kernel + elements, which are taken into account for particular processed pixel + (elements, which are not outside image). + + Default value is set to . + + + + + + Specifies if alpha channel must be processed or just copied. + + + The property specifies the way how alpha channel is handled for 32 bpp + and 64 bpp images. If the property is set to , then alpha + channel's values are just copied as is. If the property is set to + then alpha channel is convolved using the specified kernel same way as RGB channels. + + Default value is set to . + + + + + + Initializes a new instance of the class. + + + + + Simple edge detector. + + + The filter performs convolution filter using + the edges kernel: + + + 0 -1 0 + -1 4 -1 + 0 -1 0 + + + For the list of supported pixel formats, see the documentation to + filter. + + Sample usage: + + // create filter + Edges filter = new Edges( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + Gaussian blur filter. + + + The filter performs convolution filter using + the kernel, which is calculate with the help of + method and then converted to integer kernel by dividing all elements by the element with the + smallest value. Using the kernel the convolution filter is known as Gaussian blur. + + Using property it is possible to configure + sigma value of Gaussian function. + + For the list of supported pixel formats, see the documentation to + filter. + + By default this filter sets property to + , so the alpha channel of 32 bpp and 64 bpp images is blurred as well. + + + Sample usage: + + // create filter with kernel size equal to 11 + // and Gaussia sigma value equal to 4.0 + GaussianBlur filter = new GaussianBlur( 4, 11 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + Kernel size. + + + + + Gaussian sigma value, [0.5, 5.0]. + + + Sigma value for Gaussian function used to calculate + the kernel. + + Default value is set to 1.4. + + + + + + Kernel size, [3, 21]. + + + Size of Gaussian kernel. + + Default value is set to 5. + + + + + + Mean filter. + + + The filter performs each pixel value's averaging with its 8 neighbors, which is + convolution filter using the mean kernel: + + + 1 1 1 + 1 1 1 + 1 1 1 + + + For the list of supported pixel formats, see the documentation to + filter. + + With the above kernel the convolution filter is just calculates each pixel's value + in result image as average of 9 corresponding pixels in the source image. + + By default this filter sets property to + , so the alpha channel of 32 bpp and 64 bpp images is blurred as well. + + + Sample usage: + + // create filter + Mean filter = new Mean( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + Sharpen filter + + + The filter performs convolution filter using + the sharpen kernel: + + + 0 -1 0 + -1 5 -1 + 0 -1 0 + + + For the list of supported pixel formats, see the documentation to + filter. + + Sample usage: + + // create filter + Sharpen filter = new Sharpen( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + Gaussian sharpen filter. + + + The filter performs convolution filter using + the kernel, which is calculate with the help of + method and then converted to integer sharpening kernel. First of all the integer kernel + is calculated from by dividing all elements by + the element with the smallest value. Then the integer kernel is converted to sharpen kernel by + negating all kernel's elements (multiplying with -1), but the central kernel's element + is calculated as 2 * sum - centralElement, where sum is the sum off elements + in the integer kernel before negating. + + For the list of supported pixel formats, see the documentation to + filter. + + Sample usage: + + // create filter with kernel size equal to 11 + // and Gaussia sigma value equal to 4.0 + GaussianSharpen filter = new GaussianSharpen( 4, 11 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + Kernel size. + + + + + Gaussian sigma value, [0.5, 5.0]. + + + Sigma value for Gaussian function used to calculate + the kernel. + + Default value is set to 1.4. + + + + + + Kernel size, [3, 5]. + + + Size of Gaussian kernel. + + Default value is set to 5. + + + + + + Canny edge detector. + + + The filter searches for objects' edges by applying Canny edge detector. + The implementation follows + Bill Green's Canny edge detection tutorial. + + The implemented canny edge detector has one difference with the above linked algorithm. + The difference is in hysteresis step, which is a bit simplified (getting faster as a result). On the + hysteresis step each pixel is compared with two threshold values: and + . If pixel's value is greater or equal to , then + it is kept as edge pixel. If pixel's value is greater or equal to , then + it is kept as edge pixel only if there is at least one neighbouring pixel (8 neighbours are checked) which + has value greater or equal to ; otherwise it is none edge pixel. In the case + if pixel's value is less than , then it is marked as none edge immediately. + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + CannyEdgeDetector filter = new CannyEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Low threshold. + High threshold. + + + + + Initializes a new instance of the class. + + + Low threshold. + High threshold. + Gaussian sigma. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Low threshold. + + + Low threshold value used for hysteresis + (see tutorial + for more information). + + Default value is set to 20. + + + + + + High threshold. + + + High threshold value used for hysteresis + (see tutorial + for more information). + + Default value is set to 100. + + + + + + Gaussian sigma. + + + Sigma value for Gaussian bluring. + + + + + Gaussian size. + + + Size of Gaussian kernel. + + + + + Difference edge detector. + + + The filter finds objects' edges by calculating maximum difference + between pixels in 4 directions around the processing pixel. + + Suppose 3x3 square element of the source image (x - is currently processed + pixel): + + P1 P2 P3 + P8 x P4 + P7 P6 P5 + + The corresponding pixel of the result image equals to: + + max( |P1-P5|, |P2-P6|, |P3-P7|, |P4-P8| ) + + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + DifferenceEdgeDetector filter = new DifferenceEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Homogenity edge detector. + + + The filter finds objects' edges by calculating maximum difference + of processing pixel with neighboring pixels in 8 direction. + + Suppose 3x3 square element of the source image (x - is currently processed + pixel): + + P1 P2 P3 + P8 x P4 + P7 P6 P5 + + The corresponding pixel of the result image equals to: + + max( |x-P1|, |x-P2|, |x-P3|, |x-P4|, + |x-P5|, |x-P6|, |x-P7|, |x-P8| ) + + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + HomogenityEdgeDetector filter = new HomogenityEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Sobel edge detector. + + + The filter searches for objects' edges by applying Sobel operator. + + Each pixel of the result image is calculated as approximated absolute gradient + magnitude for corresponding pixel of the source image: + + |G| = |Gx| + |Gy] , + + where Gx and Gy are calculate utilizing Sobel convolution kernels: + + Gx Gy + -1 0 +1 +1 +2 +1 + -2 0 +2 0 0 0 + -1 0 +1 -1 -2 -1 + + Using the above kernel the approximated magnitude for pixel x is calculate using + the next equation: + + P1 P2 P3 + P8 x P4 + P7 P6 P5 + + |G| = |P1 + 2P2 + P3 - P7 - 2P6 - P5| + + |P3 + 2P4 + P5 - P1 - 2P8 - P7| + + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SobelEdgeDetector filter = new SobelEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Scale intensity or not. + + + The property determines if edges' pixels intensities of the result image + should be scaled in the range of the lowest and the highest possible intensity + values. + + Default value is set to . + + + + + + Filter iterator. + + + Filter iterator performs specified amount of filter's iterations. + The filter take the specified base filter and applies it + to source image specified amount of times. + + The filter itself does not have any restrictions to pixel format of source + image. This is set by base filter. + + The filter does image processing using only + interface of the specified base filter. This means + that this filter may not utilize all potential features of the base filter, like + in-place processing (see ) and region based processing + (see ). To utilize those features, it is required to + do filter's iteration manually. + + Sample usage (morphological thinning): + + // create filter sequence + FiltersSequence filterSequence = new FiltersSequence( ); + // add 8 thinning filters with different structuring elements + filterSequence.Add( new HitAndMiss( + new short [,] { { 0, 0, 0 }, { -1, 1, -1 }, { 1, 1, 1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { -1, 0, 0 }, { 1, 1, 0 }, { -1, 1, -1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 1, -1, 0 }, { 1, 1, 0 }, { 1, -1, 0 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { -1, 1, -1 }, { 1, 1, 0 }, { -1, 0, 0 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 1, 1, 1 }, { -1, 1, -1 }, { 0, 0, 0 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { -1, 1, -1 }, { 0, 1, 1 }, { 0, 0, -1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 0, -1, 1 }, { 0, 1, 1 }, { 0, -1, 1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 0, 0, -1 }, { 0, 1, 1 }, { -1, 1, -1 } }, + HitAndMiss.Modes.Thinning ) ); + // create filter iterator for 10 iterations + FilterIterator filter = new FilterIterator( filterSequence, 10 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Filter to iterate. + + + + + Initializes a new instance of the class. + + + Filter to iterate. + Iterations amount. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + The filter provides format translation dictionary taken from + filter. + + + + + + Base filter. + + + The base filter is the filter to be applied specified amount of iterations to + a specified image. + + + + + Iterations amount, [1, 255]. + + + The amount of times to apply specified filter to a specified image. + + Default value is set to 1. + + + + + + Filters' collection to apply to an image in sequence. + + + The class represents collection of filters, which need to be applied + to an image in sequence. Using the class user may specify set of filters, which will + be applied to source image one by one in the order user defines them. + + The class itself does not define which pixel formats are accepted for the source + image and which pixel formats may be produced by the filter. Format of acceptable source + and possible output is defined by filters, which added to the sequence. + + Sample usage: + + // create filter, which is binarization sequence + FiltersSequence filter = new FiltersSequence( + new GrayscaleBT709( ), + new Threshold( ) + ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Sequence of filters to apply. + + + + + Add new filter to the sequence. + + + Filter to add to the sequence. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + No filters were added into the filters' sequence. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + No filters were added into the filters' sequence. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + No filters were added into the filters' sequence. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have width, height and pixel format as it is expected by + the final filter in the sequence. + + + No filters were added into the filters' sequence. + + + + + Get filter at the specified index. + + + Index of filter to get. + + Returns filter at specified index. + + + + + Flood filling with specified color starting from specified point. + + + The filter performs image's area filling (4 directional) starting + from the specified point. It fills + the area of the pointed color, but also fills other colors, which + are similar to the pointed within specified tolerance. + The area is filled using specified fill color. + + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + PointedColorFloodFill filter = new PointedColorFloodFill( ); + // configure the filter + filter.Tolerance = Color.FromArgb( 150, 92, 92 ); + filter.FillColor = Color.FromArgb( 255, 255, 255 ); + filter.StartingPoint = new IntPoint( 150, 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Fill color. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Flood fill tolerance. + + + The tolerance value determines which colors to fill. If the + value is set to 0, then only color of the pointed pixel + is filled. If the value is not 0, then other colors may be filled as well, + which are similar to the color of the pointed pixel within the specified + tolerance. + + The tolerance value is specified as , + where each component (R, G and B) represents tolerance for the corresponding + component of color. This allows to set different tolerances for red, green + and blue components. + + + + + + Fill color. + + + The fill color is used to fill image's area starting from the + specified point. + + For grayscale images the color needs to be specified with all three + RGB values set to the same value, (128, 128, 128) for example. + + Default value is set to black. + + + + + + Point to start filling from. + + + The property allows to set the starting point, where filling is + started from. + + Default value is set to (0, 0). + + + + + + Flood filling with mean color starting from specified point. + + + The filter performs image's area filling (4 directional) starting + from the specified point. It fills + the area of the pointed color, but also fills other colors, which + are similar to the pointed within specified tolerance. + The area is filled using its mean color. + + + The filter is similar to filter, but instead + of filling the are with specified color, it fills the area with its mean color. This means + that this is a two pass filter - first pass is to calculate the mean value and the second pass is to + fill the area. Unlike to filter, this filter has nothing + to do in the case if zero tolerance is specified. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + PointedMeanFloodFill filter = new PointedMeanFloodFill( ); + // configre the filter + filter.Tolerance = Color.FromArgb( 150, 92, 92 ); + filter.StartingPoint = new IntPoint( 150, 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Flood fill tolerance. + + + The tolerance value determines the level of similarity between + colors to fill and the pointed color. If the value is set to zero, then the + filter does nothing, since the filling area contains only one color and its + filling with mean is meaningless. + + The tolerance value is specified as , + where each component (R, G and B) represents tolerance for the corresponding + component of color. This allows to set different tolerances for red, green + and blue components. + + Default value is set to (16, 16, 16). + + + + + + Point to start filling from. + + + The property allows to set the starting point, where filling is + started from. + + Default value is set to (0, 0). + + + + + + Color filtering in HSL color space. + + + The filter operates in HSL color space and filters + pixels, which color is inside/outside of the specified HSL range - + it keeps pixels with colors inside/outside of the specified range and fills the + rest with specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + HSLFiltering filter = new HSLFiltering( ); + // set color ranges to keep + filter.Hue = new IntRange( 335, 0 ); + filter.Saturation = new Range( 0.6f, 1 ); + filter.Luminance = new Range( 0.1f, 1 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + Sample usage with saturation update only: + + // create filter + HSLFiltering filter = new HSLFiltering( ); + // configure the filter + filter.Hue = new IntRange( 340, 20 ); + filter.UpdateLuminance = false; + filter.UpdateHue = false; + // apply the filter + filter.ApplyInPlace( image ); + + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Range of hue component. + Range of saturation component. + Range of luminance component. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Range of hue component, [0, 359]. + + + Because of hue values are cycled, the minimum value of the hue + range may have bigger integer value than the maximum value, for example [330, 30]. + + + + + Range of saturation component, [0, 1]. + + + + + Range of luminance component, [0, 1]. + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside specified + color range. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Determines, if hue value of filtered pixels should be updated. + + + The property specifies if hue of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if saturation value of filtered pixels should be updated. + + + The property specifies if saturation of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if luminance value of filtered pixels should be updated. + + + The property specifies if luminance of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Luminance and saturation linear correction. + + + The filter operates in HSL color space and provides + with the facility of luminance and saturation linear correction - mapping specified channels' + input ranges to specified output ranges. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + HSLLinear filter = new HSLLinear( ); + // configure the filter + filter.InLuminance = new Range( 0, 0.85f ); + filter.OutSaturation = new Range( 0.25f, 1 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Luminance input range. + + + Luminance component is measured in the range of [0, 1]. + + + + + Luminance output range. + + + Luminance component is measured in the range of [0, 1]. + + + + + Saturation input range. + + + Saturation component is measured in the range of [0, 1]. + + + + + Saturation output range. + + + Saturation component is measured in the range of [0, 1]. + + + + + Format translations dictionary. + + + + + Hue modifier. + + + The filter operates in HSL color space and updates + pixels' hue values setting it to the specified value (luminance and + saturation are kept unchanged). The result of the filter looks like the image + is observed through a glass of the given color. + + The filter accepts 24 and 32 bpp color images for processing. + Sample usage: + + // create filter + HueModifier filter = new HueModifier( 180 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Hue value to set. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Hue value to set, [0, 359]. + + + Default value is set to 0. + + + + + Saturation adjusting in HSL color space. + + + The filter operates in HSL color space and adjusts + pixels' saturation value, increasing it or decreasing by specified percentage. + The filters is based on filter, passing work to it after + recalculating saturation adjust value to input/output + ranges of the filter. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + SaturationCorrection filter = new SaturationCorrection( -0.5f ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Saturation adjust value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Saturation adjust value, [-1, 1]. + + + Default value is set to 0.1, which corresponds to increasing + saturation by 10%. + + + + + Format translations dictionary. + + + + + Flat field correction filter. + + + The goal of flat-field correction is to remove artifacts from 2-D images that + are caused by variations in the pixel-to-pixel sensitivity of the detector and/or by distortions + in the optical path. The filter requires two images for the input - source image, which represents + acquisition of some objects (using microscope, for example), and background image, which is taken + without any objects presented. The source image is corrected using the formula: src = bgMean * src / bg, + where src - source image's pixel value, bg - background image's pixel value, bgMean - mean + value of background image. + + If background image is not provided, then it will be automatically generated on each filter run + from source image. The automatically generated background image is produced running Gaussian Blur on the + original image with (sigma value is set to 5, kernel size is set to 21). Before blurring the original image + is resized to 1/3 of its original size and then the result of blurring is resized back to the original size. + + + The class processes only grayscale (8 bpp indexed) and color (24 bpp) images. + + Sample usage: + + // create filter + FlatFieldCorrection filter = new FlatFieldCorrection( bgImage ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Source image: + + Background image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + This constructor does not set background image, which means that background + image will be generated on the fly on each filter run. The automatically generated background + image is produced running Gaussian Blur on the original image with (sigma value is set to 5, + kernel size is set to 21). Before blurring the original image is resized to 1/3 of its original size + and then the result of blurring is resized back to the original size. + + + + + Initializes a new instance of the class. + + + Background image used for flat field correction. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Background image used for flat field correction. + + + The property sets the background image (without any objects), which will be used + for illumination correction of an image passed to the filter. + + The background image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one background image is allowed: managed or unmanaged. + + + + + + Background image used for flat field correction. + + + The property sets the background image (without any objects), which will be used + for illumination correction of an image passed to the filter. + + The background image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one background image is allowed: managed or unmanaged. + + + + + + Format translations dictionary. + + + See for more information. + + + + + Bottop-hat operator from Mathematical Morphology. + + + Bottom-hat morphological operator subtracts + input image from the result of morphological closing on the + the input image. + + Applied to binary image, the filter allows to get all object parts, which were + added by closing filter, but were not removed after that due + to formed connections/fillings. + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + BottomHat filter = new BottomHat( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Structuring element to pass to operator. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Closing operator from Mathematical Morphology. + + + Closing morphology operator equals to dilatation followed + by erosion. + + Applied to binary image, the filter may be used connect or fill objects. Since dilatation is used + first, it may connect/fill object areas. Then erosion restores objects. But since dilatation may connect + something before, erosion may not remove after that because of the formed connection. + + See documentation to and classes for more + information and list of supported pixel formats. + + Sample usage: + + // create filter + Closing filter = new Closing( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element for both and + classes - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + See documentation to and + classes for information about structuring element constraints. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Format translations dictionary. + + + + + Dilatation operator from Mathematical Morphology. + + + The filter assigns maximum value of surrounding pixels to each pixel of + the result image. Surrounding pixels, which should be processed, are specified by + structuring element: 1 - to process the neighbor, -1 - to skip it. + + The filter especially useful for binary image processing, where it allows to grow + separate objects or join objects. + + For processing image with 3x3 structuring element, there are different optimizations + available, like and . + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + Dilatation filter = new Dilatation( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + Structuring elemement for the dilatation morphological operator + must be square matrix with odd size in the range of [3, 99]. + + Invalid size of structuring element. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Erosion operator from Mathematical Morphology. + + + The filter assigns minimum value of surrounding pixels to each pixel of + the result image. Surrounding pixels, which should be processed, are specified by + structuring element: 1 - to process the neighbor, -1 - to skip it. + + The filter especially useful for binary image processing, where it removes pixels, which + are not surrounded by specified amount of neighbors. It gives ability to remove noisy pixels + (stand-alone pixels) or shrink objects. + + For processing image with 3x3 structuring element, there are different optimizations + available, like and . + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + Erosion filter = new Erosion( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + Structuring elemement for the erosion morphological operator + must be square matrix with odd size in the range of [3, 99]. + + Invalid size of structuring element. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Hit-And-Miss operator from Mathematical Morphology. + + + The hit-and-miss filter represents generalization of + and filters by extending flexibility of structuring element and + providing different modes of its work. Structuring element may contain: + + 1 - foreground; + 0 - background; + -1 - don't care. + + + + Filter's mode is set by property. The list of modes and its + documentation may be found in enumeration. + + The filter accepts 8 bpp grayscale images for processing. Note: grayscale images are treated + as binary with 0 value equals to black and 255 value equals to white. + + Sample usage: + + // define kernel to remove pixels on the right side of objects + // (pixel is removed, if there is white pixel on the left and + // black pixel on the right) + short[,] se = new short[,] { + { -1, -1, -1 }, + { 1, 1, 0 }, + { -1, -1, -1 } + }; + // create filter + HitAndMiss filter = new HitAndMiss( se, HitAndMiss.Modes.Thinning ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Structuring element. + + Structuring elemement for the hit-and-miss morphological operator + must be square matrix with odd size in the range of [3, 99]. + + Invalid size of structuring element. + + + + + Initializes a new instance of the class. + + + Structuring element. + Operation mode. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Operation mode. + + + Mode to use for the filter. See enumeration + for the list of available modes and their documentation. + + Default mode is set to . + + + + + Hit and Miss modes. + + + Bellow is a list of modes meaning depending on pixel's correspondence + to specified structuring element: + + - on match pixel is set to white, otherwise to black; + - on match pixel is set to black, otherwise not changed. + - on match pixel is set to white, otherwise not changed. + + + + + + + Hit and miss mode. + + + + + Thinning mode. + + + + + Thickening mode. + + + + + Opening operator from Mathematical Morphology. + + + Opening morphology operator equals to erosion followed + by dilatation. + + Applied to binary image, the filter may be used for removing small object keeping big objects + unchanged. Since erosion is used first, it removes all small objects. Then dilatation restores big + objects, which were not removed by erosion. + + See documentation to and classes for more + information and list of supported pixel formats. + + Sample usage: + + // create filter + Opening filter = new Opening( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element for both and + classes - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + See documentation to and + classes for information about structuring element constraints. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Format translations dictionary. + + + + + Binary dilatation operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for binary images (containing black and white pixels) processed + with 3x3 structuring element. This makes this filter ideal for growing objects in binary + images – it puts white pixel to the destination image in the case if there is at least + one white neighbouring pixel in the source image. + + See filter, which represents generic version of + dilatation filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale (binary) images for processing. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Binary erosion operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for binary images (containing black and white pixels) processed + with 3x3 structuring element. This makes this filter ideal for removing noise in binary + images – it removes all white pixels, which are neighbouring with at least one blank pixel. + + + See filter, which represents generic version of + erosion filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale (binary) images for processing. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Dilatation operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for grayscale image processing with 3x3 structuring element. + + See filter, which represents generic version of + dilatation filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale images for processing. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Erosion operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for grayscale image processing with 3x3 structuring element. + + See filter, which represents generic version of + erosion filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale images for processing. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Top-hat operator from Mathematical Morphology. + + + Top-hat morphological operator subtracts + result of morphological opening on the input image + from the input image itself. + + Applied to binary image, the filter allows to get all those object (their parts) + which were removed by opening filter, but never restored. + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + TopHat filter = new TopHat( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Structuring element to pass to operator. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Additive noise filter. + + + The filter adds random value to each pixel of the source image. + The distribution of random values can be specified by random generator. + + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create random generator + IRandomNumberGenerator generator = new UniformGenerator( new Range( -50, 50 ) ); + // create filter + AdditiveNoise filter = new AdditiveNoise( generator ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Random number genertor used to add noise. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Random number genertor used to add noise. + + + Default generator is uniform generator in the range of (-10, 10). + + + + + Salt and pepper noise. + + + The filter adds random salt and pepper noise - sets + maximum or minimum values to randomly selected pixels. + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + SaltAndPepperNoise filter = new SaltAndPepperNoise( 10 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Amount of noise to generate in percents, [0, 100]. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Amount of noise to generate in percents, [0, 100]. + + + + + + Extract normalized RGB channel from color image. + + + Extracts specified normalized RGB channel of color image and returns + it as grayscale image. + + Normalized RGB color space is defined as: + + r = R / (R + G + B ), + g = G / (R + G + B ), + b = B / (R + G + B ), + + where R, G and B are components of RGB color space and + r, g and b are components of normalized RGB color space. + + + The filter accepts 24, 32, 48 and 64 bpp color images and produces + 8 (if source is 24 or 32 bpp image) or 16 (if source is 48 or 64 bpp image) + bpp grayscale image. + + Sample usage: + + // create filter + ExtractNormalizedRGBChannel filter = new ExtractNormalizedRGBChannel( RGB.G ); + // apply the filter + Bitmap channelImage = filter.Apply( image ); + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Normalized RGB channel to extract. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Normalized RGB channel to extract. + + + Default value is set to . + + Invalid channel is specified. + + + + + Apply mask to the specified image. + + + The filter applies mask to the specified image - keeps all pixels + in the image if corresponding pixels/values of the mask are not equal to 0. For all + 0 pixels/values in mask, corresponding pixels in the source image are set to 0. + + Mask can be specified as .NET's managed Bitmap, as + UnmanagedImage or as byte array. + In the case if mask is specified as image, it must be 8 bpp grayscale image. In all case + mask size must be the same as size of the image to process. + + The filter accepts 8/16 bpp grayscale and 24/32/48/64 bpp color images for processing. + + + + + + Initializes a new instance of the class. + + + Mask image to use. + + + + + Initializes a new instance of the class. + + + Unmanaged mask image to use. + + + + + Initializes a new instance of the class. + + + to use. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + None of the possible mask properties were set. Need to provide mask before applying the filter. + Invalid size of provided mask. Its size must be the same as the size of the image to mask. + + + + + Mask image to apply. + + + The property specifies mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Unmanaged mask image to apply. + + + The property specifies unmanaged mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Mask to apply. + + + The property specifies mask array to use. Size of the array must + be the same size as the size of the source image to process - its 0th dimension + must be equal to image's height and its 1st dimension must be equal to width. For + example, for 640x480 image, the mask array must be defined as: + + byte[,] mask = new byte[480, 640]; + + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Blobs filtering by size. + + + The filter performs filtering of blobs by their size in the specified + source image - all blobs, which are smaller or bigger then specified limits, are + removed from the image. + + The image processing filter treats all none black pixels as objects' + pixels and all black pixel as background. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + BlobsFiltering filter = new BlobsFiltering( ); + // configure filter + filter.CoupledSizeFiltering = true; + filter.MinWidth = 70; + filter.MinHeight = 70; + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Minimum allowed width of blob. + Minimum allowed height of blob. + Maximum allowed width of blob. + Maximum allowed height of blob. + + This constructor creates an instance of class + with property set to false. + + + + + Initializes a new instance of the class. + + + Minimum allowed width of blob. + Minimum allowed height of blob. + Maximum allowed width of blob. + Maximum allowed height of blob. + Specifies if size filetering should be coupled or not. + + For information about coupled filtering mode see documentation for + property of + class. + + + + + Initializes a new instance of the class. + + + Custom blobs' filtering routine to use + (see ). + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Specifies if size filetering should be coupled or not. + + + See documentation for property + of class for more information. + + + + + Minimum allowed width of blob. + + + + + + Minimum allowed height of blob. + + + + + + Maximum allowed width of blob. + + + + + + Maximum allowed height of blob. + + + + + + Custom blobs' filter to use. + + + See for information + about custom blobs' filtering routine. + + + + + Fill areas outiside of specified region. + + + + The filter fills areas outside of specified region using the specified color. + + The filter accepts 8bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + CanvasCrop filter = new CanvasCrop( new Rectangle( + 5, 5, image.Width - 10, image.Height - 10 ), Color.Red ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + Region to keep. + + + + + Initializes a new instance of the class. + + + Region to keep. + RGB color to use for filling areas outside of specified region in color images. + + + + + Initializes a new instance of the class. + + + Region to keep. + Gray color to use for filling areas outside of specified region in grayscale images. + + + + + Initializes a new instance of the class. + + + Region to keep. + RGB color to use for filling areas outside of specified region in color images. + Gray color to use for filling areas outside of specified region in grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + RGB fill color. + + + The color is used to fill areas out of specified region in color images. + + Default value is set to white - RGB(255, 255, 255). + + + + + Gray fill color. + + + The color is used to fill areas out of specified region in grayscale images. + + Default value is set to white - 255. + + + + + Region to keep. + + + Pixels inside of the specified region will keep their values, but + pixels outside of the region will be filled with specified color. + + + + + Fill areas iniside of the specified region. + + + + The filter fills areas inside of specified region using the specified color. + + The filter accepts 8bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + CanvasFill filter = new CanvasFill( new Rectangle( + 5, 5, image.Width - 10, image.Height - 10 ), Color.Red ); + // apply the filter + filter.ApplyInPlace( image ); + + + + + + + + + Initializes a new instance of the class. + + + Region to fill. + + + + + Initializes a new instance of the class. + + + Region to fill. + RGB color to use for filling areas inside of specified region in color images. + + + + + Initializes a new instance of the class. + + + Region to fill. + Gray color to use for filling areas inside of specified region in grayscale images. + + + + + Initializes a new instance of the class. + + + Region to fill. + RGB color to use for filling areas inside of specified region in color images. + Gray color to use for filling areas inside of specified region in grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + RGB fill color. + + + The color is used to fill areas out of specified region in color images. + + Default value is set to white - RGB(255, 255, 255). + + + + + Gray fill color. + + + The color is used to fill areas out of specified region in grayscale images. + + Default value is set to white - 255. + + + + + Region to fill. + + + Pixels inside of the specified region will be filled with specified color. + + + + + Move canvas to the specified point. + + + + The filter moves canvas to the specified area filling unused empty areas with specified color. + + The filter accepts 8/16 bpp grayscale images and 24/32/48/64 bpp color image + for processing. + + Sample usage: + + // create filter + CanvasMove filter = new CanvasMove( new IntPoint( -50, -50 ), Color.Green ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Point to move the canvas to. + + + + + Initializes a new instance of the class. + + + Point to move the canvas. + RGB color to use for filling areas empty areas in color images. + + + + + Initializes a new instance of the class. + + + Point to move the canvas. + Gray color to use for filling empty areas in grayscale images. + + + + + Initializes a new instance of the class. + + + Point to move the canvas. + RGB color to use for filling areas empty areas in color images. + Gray color to use for filling empty areas in grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + RGB fill color. + + + The color is used to fill empty areas in color images. + + Default value is set to white - ARGB(255, 255, 255, 255). + + + + + Gray fill color. + + + The color is used to fill empty areas in grayscale images. + + Default value is set to white - 255. + + + + + Point to move the canvas to. + + + + + + Connected components labeling. + + + The filter performs labeling of objects in the source image. It colors + each separate object using different color. The image processing filter treats all none + black pixels as objects' pixels and all black pixel as background. + + The filter accepts 8 bpp grayscale images and 24/32 bpp color images and produces + 24 bpp RGB image. + + Sample usage: + + // create filter + ConnectedComponentsLabeling filter = new ConnectedComponentsLabeling( ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + // check objects count + int objectCount = filter.ObjectCount; + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Blob counter used to locate separate blobs. + + + The property allows to set blob counter to use for blobs' localization. + + Default value is set to . + + + + + + Colors used to color the binary image. + + + + + Specifies if blobs should be filtered. + + + See documentation for property + of class for more information. + + + + + Specifies if size filetering should be coupled or not. + + + See documentation for property + of class for more information. + + + + + Minimum allowed width of blob. + + + + + + Minimum allowed height of blob. + + + + + + Maximum allowed width of blob. + + + + + + Maximum allowed height of blob. + + + + + + Objects count. + + + The amount of objects found in the last processed image. + + + + + Filter to mark (highlight) corners of objects. + + + + The filter highlights corners of objects on the image using provided corners + detection algorithm. + + The filter accepts 8 bpp grayscale and 24/32 color images for processing. + + Sample usage: + + // create corner detector's instance + SusanCornersDetector scd = new SusanCornersDetector( ); + // create corner maker filter + CornersMarker filter = new CornersMarker( scd, Color.Red ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Interface of corners' detection algorithm. + + + + + Initializes a new instance of the class. + + + Interface of corners' detection algorithm. + Marker's color used to mark corner. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Color used to mark corners. + + + + + Interface of corners' detection algorithm used to detect corners. + + + + + Extract the biggest blob from image. + + + The filter locates the biggest blob in the source image and extracts it. + The filter also can use the source image for the biggest blob's location only, but extract it from + another image, which is set using property. The original image + usually is the source of the processed image. + + The filter accepts 8 bpp grayscale images and 24/32 color images for processing as source image passed to + method and also for the . + + Sample usage: + + // create filter + ExtractBiggestBlob filter = new ExtractBiggestBlob( ); + // apply the filter + Bitmap biggestBlobsImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Apply filter to an image. + + + Source image to get biggest blob from. + + Returns image of the biggest blob. + + Unsupported pixel format of the source image. + Unsupported pixel format of the original image. + Source and original images must have the same size. + The source image does not contain any blobs. + + + + + Apply filter to an image. + + + Source image to get biggest blob from. + + Returns image of the biggest blob. + + Unsupported pixel format of the source image. + Unsupported pixel format of the original image. + Source and original images must have the same size. + The source image does not contain any blobs. + + + + + Apply filter to an image (not implemented). + + + Image in unmanaged memory. + + Returns filter's result obtained by applying the filter to + the source image. + + The method is not implemented. + + + + + Apply filter to an image (not implemented). + + + Source image to be processed. + Destination image to store filter's result. + + The method is not implemented. + + + + + Position of the extracted blob. + + + After applying the filter this property keeps position of the extracted + blob in the source image. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Original image, which is the source of the processed image where the biggest blob is searched for. + + + The property may be set to . In this case the biggest blob + is extracted from the image, which is passed to image. + + + + + + Fill holes in objects in binary image. + + + The filter allows to fill black holes in white object in a binary image. + It is possible to specify maximum holes' size to fill using + and properties. + + The filter accepts binary image only, which are represented as 8 bpp images. + + Sample usage: + + // create and configure the filter + FillHoles filter = new FillHoles( ); + filter.MaxHoleHeight = 20; + filter.MaxHoleWidth = 20; + filter.CoupledSizeFiltering = false; + // apply the filter + Bitmap result = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Specifies if size filetering should be coupled or not. + + + In uncoupled filtering mode, holes are filled in the case if + their width is smaller than or equal to or height is smaller than + or equal to . But in coupled filtering mode, holes are filled only in + the case if both width and height are smaller or equal to the corresponding value. + + Default value is set to , what means coupled filtering by size. + + + + + + Maximum width of a hole to fill. + + + All holes, which have width greater than this value, are kept unfilled. + See for additional information. + + Default value is set to . + + + + + Maximum height of a hole to fill. + + + All holes, which have height greater than this value, are kept unfilled. + See for additional information. + + Default value is set to . + + + + + Format translations dictionary. + + + + + Horizontal run length smoothing algorithm. + + + The class implements horizontal run length smoothing algorithm, which + is described in: K.Y. Wong, R.G. Casey and F.M. Wahl, "Document analysis system," + IBM J. Res. Devel., Vol. 26, NO. 6,111). 647-656, 1982. + + Unlike the original description of this algorithm, this implementation must be applied + to inverted binary images containing document, i.e. white text on black background. So this + implementation fills horizontal black gaps between white pixels. + + This algorithm is usually used together with , + and then further analysis of white blobs. + + The filter accepts 8 bpp grayscale images, which are supposed to be binary inverted documents. + + Sample usage: + + // create filter + HorizontalRunLengthSmoothing hrls = new HorizontalRunLengthSmoothing( 32 ); + // apply the filter + hrls.ApplyInPlace( image ); + + + Source image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum gap size to fill (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Maximum gap size to fill (in pixels). + + + The property specifies maximum horizontal gap between white pixels to fill. + If number of black pixels between some white pixels is bigger than this value, then those + black pixels are left as is; otherwise the gap is filled with white pixels. + + + Default value is set to 10. Minimum value is 1. Maximum value is 1000. + + + + + Process gaps between objects and image borders or not. + + + The property sets if gaps between image borders and objects must be treated as + gaps between objects and also filled. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Image warp effect filter. + + + The image processing filter implements a warping filter, which + sets pixels in destination image to values from source image taken with specified offset + (see ). + + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // build warp map + int width = image.Width; + int height = image.Height; + + IntPoint[,] warpMap = new IntPoint[height, width]; + + int size = 8; + int maxOffset = -size + 1; + + for ( int y = 0; y < height; y++ ) + { + for ( int x = 0; x < width; x++ ) + { + int dx = ( x / size ) * size - x; + int dy = ( y / size ) * size - y; + + if ( dx + dy <= maxOffset ) + { + dx = ( x / size + 1 ) * size - 1 - x; + } + + warpMap[y, x] = new IntPoint( dx, dy ); + } + } + // create filter + ImageWarp filter = new ImageWarp( warpMap ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Map used for warping images (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Map used for warping images. + + + The property sets displacement map used for warping images. + The map sets offsets of pixels in source image, which are used to set values in destination + image. In other words, each pixel in destination image is set to the same value + as pixel in source image with corresponding offset (coordinates of pixel in source image + are calculated as sum of destination coordinate and corresponding value from warp map). + + + The map array is accessed using [y, x] indexing, i.e. + first dimension in the map array corresponds to Y axis of image. + + If the map is smaller or bigger than the image to process, then only minimum + overlapping area of the image is processed. This allows to prepare single big map and reuse + it for a set of images for creating similar effects. + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Jitter filter. + + + The filter moves each pixel of a source image in + random direction within a window of specified radius. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + Jitter filter = new Jitter( 4 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Jittering radius. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Jittering radius, [1, 10] + + + Determines radius in which pixels can move. + + Default value is set to 2. + + + + + + Apply filter according to the specified mask. + + + The image processing routine applies the specified to + a source image according to the specified mask - if a pixel/value in the specified mask image/array + is set to 0, then the original pixel's value is kept; otherwise the pixel is filtered using the + specified base filter. + + Mask can be specified as .NET's managed Bitmap, as + UnmanagedImage or as byte array. + In the case if mask is specified as image, it must be 8 bpp grayscale image. In all case + mask size must be the same as size of the image to process. + + Pixel formats accepted by this filter are specified by the . + + Sample usage: + + // create the filter + MaskedFilter maskedFilter = new MaskedFilter( new Sepia( ), maskImage ); + // apply the filter + maskedFilter.ApplyInPlace( image ); + + + Initial image: + + Mask image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Base filter to apply to the specified source image. + Mask image to use. + + + + + Initializes a new instance of the class. + + + Base filter to apply to the specified source image. + Unmanaged mask image to use. + + + + + Initializes a new instance of the class. + + + Base filter to apply to the specified source image. + to use. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + None of the possible mask properties were set. Need to provide mask before applying the filter. + Invalid size of provided mask. Its size must be the same as the size of the image to mask. + + + + + Base filter to apply to the source image. + + + The property specifies base filter which is applied to the specified source + image (to all pixels which have corresponding none 0 value in mask image/array). + + The base filter must implement interface. + + The base filter must never change image's pixel format. For example, if source + image's pixel format is 24 bpp color image, then it must stay the same after the base + filter is applied. + + The base filter must never change size of the source image. + + + Base filter can not be set to null. + The specified base filter must implement IFilterInformation interface. + The specified filter must never change pixel format. + + + + + Mask image to apply. + + + The property specifies mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Unmanaged mask image to apply. + + + The property specifies unmanaged mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Mask to apply. + + + The property specifies mask array to use. Size of the array must + be the same size as the size of the source image to process - its 0th dimension + must be equal to image's height and its 1st dimension must be equal to width. For + example, for 640x480 image, the mask array must be defined as: + + byte[,] mask = new byte[480, 640]; + + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + The property returns format translation table from the + . + + + + + + Mirroring filter. + + + The filter mirrors image around X and/or Y axis (horizontal and vertical + mirroring). + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + Mirror filter = new Mirror( false, true ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Specifies if mirroring should be done for X axis. + Specifies if mirroring should be done for Y axis + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Specifies if mirroring should be done for X axis (horizontal mirroring). + + + + + + Specifies if mirroring should be done for Y axis (vertical mirroring). + + + + + + Oil painting filter. + + + Processing source image the filter changes each pixels' value + to the value of pixel with the most frequent intensity within window of the + specified size. Going through the window the filters + finds which intensity of pixels is the most frequent. Then it updates value + of the pixel in the center of the window to the value with the most frequent + intensity. The update procedure creates the effect of oil painting. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + OilPainting filter = new OilPainting( 15 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Brush size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Brush size, [3, 21]. + + + Window size to search for most frequent pixels' intensity. + + Default value is set to 5. + + + + + Pixellate filter. + + + The filter processes an image creating the effect of an image with larger + pixels - pixellated image. The effect is achieved by filling image's rectangles of the + specified size by the color, which is mean color value for the corresponding rectangle. + The size of rectangles to process is set by and + properties. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + Pixellate filter = new Pixellate( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Pixel size. + + + + + Initializes a new instance of the class. + + + Pixel width. + Pixel height. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Pixel width, [2, 32]. + + + Default value is set to 8. + + + + + + + + Pixel height, [2, 32]. + + + Default value is set to 8. + + + + + + + + Pixel size, [2, 32]. + + + The property is used to set both and + simultaneously. + + + + + Simple skeletonization filter. + + + The filter build simple objects' skeletons by thinning them until + they have one pixel wide "bones" horizontally and vertically. The filter uses + and colors to distinguish + between object and background. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SimpleSkeletonization filter = new SimpleSkeletonization( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Background pixel color. + Foreground pixel color. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Background pixel color. + + + The property sets background (none object) color to look for. + + Default value is set to 0 - black. + + + + + Foreground pixel color. + + + The property sets objects' (none background) color to look for. + + Default value is set to 255 - white. + + + + + Textured filter - filter an image using texture. + + + The filter is similar to filter in its + nature, but instead of working with source image and overly, it uses provided + filters to create images to merge (see and + properties). In addition, it uses a bit more complex formula for calculation + of destination pixel's value, which gives greater amount of flexibility:
+ dst = * ( src1 * textureValue + src2 * ( 1.0 - textureValue ) ) + * src2, + where src1 is value of pixel from the image produced by , + src2 is value of pixel from the image produced by , + dst is value of pixel in a destination image and textureValue is corresponding value + from provided texture (see or ).
+ + It is possible to set to . In this case + original source image will be used instead of result produced by the second filter. + + The filter 24 bpp color images for processing. + + Sample usage #1: + + // create filter + TexturedFilter filter = new TexturedFilter( new CloudsTexture( ), + new HueModifier( 50 ) ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Sample usage #2: + + // create filter + TexturedFilter filter = new TexturedFilter( new CloudsTexture( ), + new GrayscaleBT709( ), new Sepia( ) ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image #1: + + Result image #2: + +
+ +
+ + + Initializes a new instance of the class. + + + Generated texture. + First filter. + + + + + Initializes a new instance of the class. + + + Generated texture. + First filter. + Second filter. + + + + + Initializes a new instance of the class. + + + Texture generator. + First filter. + + + + + Initializes a new instance of the class. + + + Texture generator. + First filter. + Second filter. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + Texture size does not match image size. + Filters should not change image dimension. + + + + + Format translations dictionary. + + + See for more information. + + + + + Filter level value, [0, 1]. + + + Filtering factor determines portion of the destionation image, which is formed + as a result of merging source images using specified texture. + + Default value is set to 1.0. + + See class description for more details. + + + + + + Preserve level value + + + Preserving factor determines portion taken from the image produced + by (or from original source) without applying textured + merge to it. + + Default value is set to 0.0. + + See class description for more details. + + + + + + Generated texture. + + + Two dimensional array of texture intensities. + + Size of the provided texture should be the same as size of images, which will + be passed to the filter. + + The property has priority over this property - if + generator is specified than the static generated texture is not used. + + + + + + Texture generator. + + + Generator used to generate texture. + + The property has priority over the property. + + + + + + First filter. + + + Filter, which is used to produce first image for the merge. The filter + needs to implement interface, so it could be possible + to get information about the filter. The filter must be able to process color 24 bpp + images and produce color 24 bpp or grayscale 8 bppp images as result. + + + The specified filter does not support 24 bpp color images. + The specified filter does not produce image of supported format. + The specified filter does not implement IFilterInformation interface. + + + + + Second filter + + + Filter, which is used to produce second image for the merge. The filter + needs to implement interface, so it could be possible + to get information about the filter. The filter must be able to process color 24 bpp + images and produce color 24 bpp or grayscale 8 bppp images as result. + + The filter may be set to . In this case original source image + is used as a second image for the merge. + + + The specified filter does not support 24 bpp color images. + The specified filter does not produce image of supported format. + The specified filter does not implement IFilterInformation interface. + + + + + Merge two images using factors from texture. + + + The filter is similar to filter in its idea, but + instead of using single value for balancing amount of source's and overlay's image + values (see ), the filter uses texture, which determines + the amount to take from source image and overlay image. + + The filter uses specified texture to adjust values using the next formula:
+ dst = src * textureValue + ovr * ( 1.0 - textureValue ),
+ where src is value of pixel in a source image, ovr is value of pixel in + overlay image, dst is value of pixel in a destination image and + textureValue is corresponding value from provided texture (see or + ).
+ + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage #1: + + // create filter + TexturedMerge filter = new TexturedMerge( new TextileTexture( ) ); + // create an overlay image to merge with + filter.OverlayImage = new Bitmap( image.Width, image.Height, + PixelFormat.Format24bppRgb ); + // fill the overlay image with solid color + PointedColorFloodFill fillFilter = new PointedColorFloodFill( Color.DarkKhaki ); + fillFilter.ApplyInPlace( filter.OverlayImage ); + // apply the merge filter + filter.ApplyInPlace( image ); + + + Sample usage #2: + + // create filter + TexturedMerge filter = new TexturedMerge( new CloudsTexture( ) ); + // create 2 images with modified Hue + HueModifier hm1 = new HueModifier( 50 ); + HueModifier hm2 = new HueModifier( 200 ); + filter.OverlayImage = hm2.Apply( image ); + hm1.ApplyInPlace( image ); + // apply the merge filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image #1: + + Result image #2: + +
+ +
+ + + Initializes a new instance of the class. + + + Generated texture. + + + + + Initializes a new instance of the class. + + + Texture generator. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + See for more information. + + + + + Generated texture. + + + Two dimensional array of texture intensities. + + In the case if image passed to the filter is smaller or + larger than the specified texture, than image's region is processed, which equals to the + minimum overlapping area. + + The property has priority over this property - if + generator is specified than the static generated texture is not used. + + + + + + Texture generator. + + + Generator used to generate texture. + + The property has priority over the property. + + + + + + Texturer filter. + + + Adjust pixels’ color values using factors from the given texture. In conjunction with different type + of texture generators, the filter may produce different type of interesting effects. + + The filter uses specified texture to adjust values using the next formula:
+ dst = src * + src * * textureValue,
+ where src is value of pixel in a source image, dst is value of pixel in a destination image and + textureValue is corresponding value from provided texture (see or + ). Using and values it is possible + to control the portion of source data affected by texture. +
+ + In most cases the and properties are set in such + way, that + = 1. But there is no limitations actually + for those values, so their sum may be as greater, as lower than 1 in order create different type of + effects. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + Texturer filter = new Texturer( new TextileTexture( ), 0.3, 0.7 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + +
+ +
+ + + Initializes a new instance of the class. + + + Generated texture. + + + + + Initializes a new instance of the class. + + + Generated texture. + Filter level value (see property). + Preserve level value (see property). + + + + + Initializes a new instance of the class. + + + Texture generator. + + + + + Initializes a new instance of the class. + + + Texture generator. + Filter level value (see property). + Preserve level value (see property). + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See for more information. + + + + + Filter level value. + + + Filtering factor determines image fraction to filter - to multiply + by values from the provided texture. + + Default value is set to 0.5. + + See class description for more details. + + + + + + Preserve level value. + + + Preserving factor determines image fraction to keep from filtering. + + Default value is set to 0.5. + + See class description for more details. + + + + + + Generated texture. + + + Two dimensional array of texture intensities. + + In the case if image passed to the filter is smaller or + larger than the specified texture, than image's region is processed, which equals to the + minimum overlapping area. + + The property has priority over this property - if + generator is specified than the static generated texture is not used. + + + + + + Texture generator. + + + Generator used to generate texture. + + The property has priority over the property. + + + + + + Vertical run length smoothing algorithm. + + + The class implements vertical run length smoothing algorithm, which + is described in: K.Y. Wong, R.G. Casey and F.M. Wahl, "Document analysis system," + IBM J. Res. Devel., Vol. 26, NO. 6,111). 647-656, 1982. + + Unlike the original description of this algorithm, this implementation must be applied + to inverted binary images containing document, i.e. white text on black background. So this + implementation fills vertical black gaps between white pixels. + + This algorithm is usually used together with , + and then further analysis of white blobs. + + The filter accepts 8 bpp grayscale images, which are supposed to be binary inverted documents. + + Sample usage: + + // create filter + VerticalRunLengthSmoothing vrls = new VerticalRunLengthSmoothing( 32 ); + // apply the filter + vrls.ApplyInPlace( image ); + + + Source image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum gap size to fill (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Maximum gap size to fill (in pixels). + + + The property specifies maximum vertical gap between white pixels to fill. + If number of black pixels between some white pixels is bigger than this value, then those + black pixels are left as is; otherwise the gap is filled with white pixels. + + + Default value is set to 10. Minimum value is 1. Maximum value is 1000. + + + + + Process gaps between objects and image borders or not. + + + The property sets if gaps between image borders and objects must be treated as + gaps between objects and also filled. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Simple water wave effect filter. + + + The image processing filter implements simple water wave effect. Using + properties of the class, it is possible to set number of vertical/horizontal waves, + as well as their amplitude. + + Bilinear interpolation is used to create smooth effect. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + WaterWave filter = new WaterWave( ); + filter.HorizontalWavesCount = 10; + filter.HorizontalWavesAmplitude = 5; + filter.VerticalWavesCount = 3; + filter.VerticalWavesAmplitude = 15; + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Number of horizontal waves, [1, 10000]. + + + Default value is set to 5. + + + + + Number of vertical waves, [1, 10000]. + + + Default value is set to 5. + + + + + Amplitude of horizontal waves measured in pixels, [0, 10000]. + + + Default value is set to 10. + + + + + Amplitude of vertical waves measured in pixels, [0, 10000]. + + + Default value is set to 10. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Adaptive Smoothing - noise removal with edges preserving. + + + The filter is aimed to perform image smoothing, but keeping sharp edges. + This makes it applicable to additive noise removal and smoothing objects' interiors, but + not applicable for spikes (salt and pepper noise) removal. + + The next calculations are done for each pixel: + + weights are calculate for 9 pixels - pixel itself and 8 neighbors: + + w(x, y) = exp( -1 * (Gx^2 + Gy^2) / (2 * factor^2) ) + Gx(x, y) = (I(x + 1, y) - I(x - 1, y)) / 2 + Gy(x, y) = (I(x, y + 1) - I(x, y - 1)) / 2 + , + where factor is a configurable value determining smoothing's quality. + sum of 9 weights is calclated (weightTotal); + sum of 9 weighted pixel values is calculatd (total); + destination pixel is calculated as total / weightTotal. + + + Description of the filter was found in "An Edge Detection Technique Using + the Facet Model and Parameterized Relaxation Labeling" by Ioannis Matalas, Student Member, + IEEE, Ralph Benjamin, and Richard Kitney. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + AdaptiveSmoothing filter = new AdaptiveSmoothing( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Factor value. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Factor value. + + + Factor determining smoothing quality (see + documentation). + + Default value is set to 3. + + + + + + Bilateral filter implementation - edge preserving smoothing and noise reduction that uses chromatic and spatial factors. + + + + Bilateral filter conducts "selective" Gaussian smoothing of areas of same color (domains) which removes noise and contrast artifacts + while preserving sharp edges. + + Two major parameters and define the result of the filter. + By changing these parameters you may achieve either only noise reduction with little change to the + image or get nice looking effect to the entire image. + + Although the filter can use parallel processing large values + (greater than 25) on high resolution images may decrease speed of processing. Also on high + resolution images small values (less than 9) may not provide noticeable + results. + + More details on the algorithm can be found by following this + link. + + The filter accepts 8 bpp grayscale images and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + BilateralSmoothing filter = new BilateralSmoothing( ); + filter.KernelSize = 7; + filter.SpatialFactor = 10; + filter.ColorFactor = 60; + filter.ColorPower = 0.5; + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Specifies if exception must be thrown in the case a large + kernel size is used which may lead + to significant performance issues. + + + + Default value is set to . + + + + + + Enable or not parallel processing on multi-core CPUs. + + + If the property is set to , then this image processing + routine will run in parallel on the systems with multiple core/CPUs. The + is used to make it parallel. + + Default value is set to . + + + + + + Size of a square for limiting surrounding pixels that take part in calculations, [3, 255]. + + + The greater the value the more is the general power of the filter. Small values + (less than 9) on high resolution images (3000 pixels wide) do not give significant results. + Large values increase the number of calculations and degrade performance. + + The value of this property must be an odd integer in the [3, 255] range if + is set to or in the [3, 25] range + otherwise. + + Default value is set to 9. + + + The specified value is out of range (see + eception message for details). + The value of this must be an odd integer. + + + + + Determines smoothing power within a color domain (neighbor pixels of similar color), >= 1. + + + + Default value is set to 10. + + + + + + Exponent power, used in Spatial function calculation, >= 1. + + + + Default value is set to 2. + + + + + + Determines the variance of color for a color domain, >= 1. + + + + Default value is set to 50. + + + + + + Exponent power, used in Color function calculation, >= 1. + + + + Default value is set to 2. + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Conservative smoothing. + + + The filter implements conservative smoothing, which is a noise reduction + technique that derives its name from the fact that it employs a simple, fast filtering + algorithm that sacrifices noise suppression power in order to preserve the high spatial + frequency detail (e.g. sharp edges) in an image. It is explicitly designed to remove noise + spikes - isolated pixels of exceptionally low or high pixel intensity + (salt and pepper noise). + + If the filter finds a pixel which has minimum/maximum value compared to its surrounding + pixel, then its value is replaced by minimum/maximum value of those surrounding pixel. + For example, lets suppose the filter uses kernel size of 3x3, + which means each pixel has 8 surrounding pixel. If pixel's value is smaller than any value + of surrounding pixels, then the value of the pixel is replaced by minimum value of those surrounding + pixels. + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + ConservativeSmoothing filter = new ConservativeSmoothing( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Kernel size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Kernel size, [3, 25]. + + + Determines the size of pixel's square used for smoothing. + + Default value is set to 3. + + The value should be odd. + + + + + + Median filter. + + + The median filter is normally used to reduce noise in an image, somewhat like + the mean filter. However, it often does a better job than the mean + filter of preserving useful detail in the image. + + Each pixel of the original source image is replaced with the median of neighboring pixel + values. The median is calculated by first sorting all the pixel values from the surrounding + neighborhood into numerical order and then replacing the pixel being considered with the + middle pixel value. + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + Median filter = new Median( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Processing square size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Processing square size for the median filter, [3, 25]. + + + Default value is set to 3. + + The value should be odd. + + + + + + Performs backward quadrilateral transformation into an area in destination image. + + + The class implements backward quadrilateral transformation algorithm, + which allows to transform any rectangular image into any quadrilateral area + in a given destination image. The idea of the algorithm is based on homogeneous + transformation and its math is described by Paul Heckbert in his + "Projective Mappings for Image Warping" paper. + + + The image processing routines implements similar math to , + but performs it in backward direction. + + The image processing filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // define quadrilateral's corners + List<IntPoint> corners = new List<IntPoint>( ); + corners.Add( new IntPoint( 99, 99 ) ); + corners.Add( new IntPoint( 156, 79 ) ); + corners.Add( new IntPoint( 184, 126 ) ); + corners.Add( new IntPoint( 122, 150 ) ); + // create filter + BackwardQuadrilateralTransformation filter = + new BackwardQuadrilateralTransformation( sourceImage, corners ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Source image: + + Destination image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Source image to be transformed into specified quadrilateral + (see ). + + + + + Initializes a new instance of the class. + + + Source unmanaged image to be transformed into specified quadrilateral + (see ). + + + + + Initializes a new instance of the class. + + + Source image to be transformed into specified quadrilateral + (see ). + Quadrilateral in destination image to transform into. + + + + + Initializes a new instance of the class. + + + Source unmanaged image to be transformed into specified quadrilateral + (see ). + Quadrilateral in destination image to transform into. + + + + + Process the filter on the specified image. + + + Image data to process by the filter. + + Destination quadrilateral was not set. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Source image to be transformed into specified quadrilateral. + + + The property sets the source image, which will be transformed + to the specified quadrilateral and put into destination image the filter is applied to. + + The source image must have the same pixel format as a destination image the filter + is applied to. Otherwise exception will be generated when filter is applied. + + Setting this property will clear the property - + only one source image is allowed: managed or unmanaged. + + + + + + Source unmanaged image to be transformed into specified quadrilateral. + + + The property sets the source image, which will be transformed + to the specified quadrilateral and put into destination image the filter is applied to. + + The source image must have the same pixel format as a destination image the filter + is applied to. Otherwise exception will be generated when filter is applied. + + Setting this property will clear the property - + only one source image is allowed: managed or unmanaged. + + + + + + Quadrilateral in destination image to transform into. + + + The property specifies 4 corners of a quadrilateral area + in destination image where the source image will be transformed into. + + + + + + Specifies if bilinear interpolation should be used or not. + + + Default value is set to - interpolation + is used. + + + + + + Crop an image. + + + + The filter crops an image providing a new image, which contains only the specified + rectangle of the original image. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Crop filter = new Crop( new Rectangle( 75, 75, 320, 240 ) ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Rectangle to crop. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rectangle to crop. + + + + + Performs quadrilateral transformation of an area in a given source image. + + + The class implements quadrilateral transformation algorithm, + which allows to transform any quadrilateral from a given source image + to a rectangular image. The idea of the algorithm is based on homogeneous + transformation and its math is described by Paul Heckbert in his + "Projective Mappings for Image Warping" paper. + + + The image processing filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // define quadrilateral's corners + List<IntPoint> corners = new List<IntPoint>( ); + corners.Add( new IntPoint( 99, 99 ) ); + corners.Add( new IntPoint( 156, 79 ) ); + corners.Add( new IntPoint( 184, 126 ) ); + corners.Add( new IntPoint( 122, 150 ) ); + // create filter + QuadrilateralTransformation filter = + new QuadrilateralTransformation( corners, 200, 200 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + New image width. + + + + + New image height. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + Source quadrilateral was not set. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + Default value is set to . + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Specifies if bilinear interpolation should be used or not. + + + Default value is set to - interpolation + is used. + + + + + + Performs quadrilateral transformation using bilinear algorithm for interpolation. + + + The class is deprecated and should be used instead. + + + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + The specified quadrilateral's corners are outside of the given image. + + + + + Format translations dictionary. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Performs quadrilateral transformation using nearest neighbor algorithm for interpolation. + + + The class is deprecated and should be used instead. + + + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + The specified quadrilateral's corners are outside of the given image. + + + + + Format translations dictionary. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Resize image using bicubic interpolation algorithm. + + + The class implements image resizing filter using bicubic + interpolation algorithm. It uses bicubic kernel W(x) as described on + Wikipedia + (coefficient a is set to -0.5). + + The filter accepts 8 grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + ResizeBicubic filter = new ResizeBicubic( 400, 300 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Width of new image. + Height of new image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Resize image using bilinear interpolation algorithm. + + + The class implements image resizing filter using bilinear + interpolation algorithm. + + The filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + ResizeBilinear filter = new ResizeBilinear( 400, 300 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Width of the new image. + Height of the new image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Resize image using nearest neighbor algorithm. + + + The class implements image resizing filter using nearest + neighbor algorithm, which does not assume any interpolation. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + ResizeNearestNeighbor filter = new ResizeNearestNeighbor( 400, 300 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Width of the new image. + Height of the new image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rotate image using bicubic interpolation. + + + The class implements image rotation filter using bicubic + interpolation algorithm. It uses bicubic kernel W(x) as described on + Wikipedia + (coefficient a is set to -0.5). + + Rotation is performed in counterclockwise direction. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateBicubic filter = new RotateBicubic( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property + to . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rotate image using bilinear interpolation. + + + Rotation is performed in counterclockwise direction. + + The class implements image rotation filter using bilinear + interpolation algorithm. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateBilinear filter = new RotateBilinear( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property + to . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rotate image using nearest neighbor algorithm. + + + The class implements image rotation filter using nearest + neighbor algorithm, which does not assume any interpolation. + + Rotation is performed in counterclockwise direction. + + The filter accepts 8/16 bpp grayscale images and 24/48 bpp color image + for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateNearestNeighbor filter = new RotateNearestNeighbor( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property to + . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Shrink an image by removing specified color from its boundaries. + + + Removes pixels with specified color from image boundaries making + the image smaller in size. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + Shrink filter = new Shrink( Color.Black ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Color to remove from boundaries. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Color to remove from boundaries. + + + + + + Performs quadrilateral transformation of an area in the source image. + + + The class implements simple algorithm described by + Olivier Thill + for transforming quadrilateral area from a source image into rectangular image. + The idea of the algorithm is based on finding for each line of destination + rectangular image a corresponding line connecting "left" and "right" sides of + quadrilateral in a source image. Then the line is linearly transformed into the + line in destination image. + + Due to simplicity of the algorithm it does not do any correction for perspective. + + + To make sure the algorithm works correctly, it is preferred if the + "left-top" corner of the quadrilateral (screen coordinates system) is + specified first in the list of quadrilateral's corners. At least + user need to make sure that the "left" side (side connecting first and the last + corner) and the "right" side (side connecting second and third corners) are + not horizontal. + + Use to avoid the above mentioned limitations, + which is a more advanced quadrilateral transformation algorithms (although a bit more + computationally expensive). + + The image processing filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // define quadrilateral's corners + List<IntPoint> corners = new List<IntPoint>( ); + corners.Add( new IntPoint( 99, 99 ) ); + corners.Add( new IntPoint( 156, 79 ) ); + corners.Add( new IntPoint( 184, 126 ) ); + corners.Add( new IntPoint( 122, 150 ) ); + // create filter + SimpleQuadrilateralTransformation filter = + new SimpleQuadrilateralTransformation( corners, 200, 200 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + New image width. + + + + + New image height. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + Source quadrilateral was not set. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + Default value is set to . + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + See documentation to the + class itself for additional information. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Specifies if bilinear interpolation should be used or not. + + + Default value is set to - interpolation + is used. + + + + + + Transform polar image into rectangle. + + + The image processing routine is opposite transformation to the one done by + routine, i.e. transformation from polar image into rectangle. The produced effect is similar to GIMP's + "Polar Coordinates" distortion filter (or its equivalent in Photoshop). + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + TransformFromPolar filter = new TransformFromPolar( ); + filter.OffsetAngle = 0; + filter.CirlceDepth = 1; + filter.UseOriginalImageSize = false; + filter.NewSize = new Size( 360, 120 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Circularity coefficient of the mapping, [0, 1]. + + + The property specifies circularity coefficient of the mapping to be done. + If the coefficient is set to 1, then destination image will be produced by mapping + ideal circle from the source image, which is placed in source image's centre and its + radius equals to the minimum distance from centre to the image’s edge. If the coefficient + is set to 0, then the mapping will use entire area of the source image (circle will + be extended into direction of edges). Changing the property from 0 to 1 user may balance + circularity of the produced output. + + Default value is set to 1. + + + + + + Offset angle used to shift mapping, [-360, 360] degrees. + + + The property specifies offset angle, which can be used to shift + mapping in clockwise direction. For example, if user sets this property to 30, then + start of polar mapping is shifted by 30 degrees in clockwise direction. + + Default value is set to 0. + + + + + + Specifies direction of mapping. + + + The property specifies direction of mapping source image. If the + property is set to , the image is mapped in clockwise direction; + otherwise in counter clockwise direction. + + Default value is set to . + + + + + + Specifies if centre of the source image should to top or bottom of the result image. + + + The property specifies position of the source image's centre in the destination image. + If the property is set to , then it goes to the top of the result image; + otherwise it goes to the bottom. + + Default value is set to . + + + + + + Size of destination image. + + + The property specifies size of result image produced by this image + processing routine in the case if property + is set to . + + Both width and height must be in the [1, 10000] range. + + Default value is set to 200 x 200. + + + + + + Use source image size for destination or not. + + + The property specifies if the image processing routine should create destination + image of the same size as original image or of the size specified by + property. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Transform rectangle image into circle (to polar coordinates). + + + The image processing routine does transformation of the source image into + circle (polar transformation). The produced effect is similar to GIMP's "Polar Coordinates" + distortion filter (or its equivalent in Photoshop). + + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + TransformToPolar filter = new TransformToPolar( ); + filter.OffsetAngle = 0; + filter.CirlceDepth = 1; + filter.UseOriginalImageSize = false; + filter.NewSize = new Size( 200, 200 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Circularity coefficient of the mapping, [0, 1]. + + + The property specifies circularity coefficient of the mapping to be done. + If the coefficient is set to 1, then the mapping will produce ideal circle. If the coefficient + is set to 0, then the mapping will occupy entire area of the destination image (circle will + be extended into direction of edges). Changing the property from 0 to 1 user may balance + circularity of the produced output. + + + Default value is set to 1. + + + + + + Offset angle used to shift mapping, [-360, 360] degrees. + + + The property specifies offset angle, which can be used to shift + mapping in counter clockwise direction. For example, if user sets this property to 30, then + start of polar mapping is shifted by 30 degrees in counter clockwise direction. + + Default value is set to 0. + + + + + + Specifies direction of mapping. + + + The property specifies direction of mapping source image's X axis. If the + property is set to , the image is mapped in clockwise direction; + otherwise in counter clockwise direction. + + Default value is set to . + + + + + + Specifies if top of the source image should go to center or edge of the result image. + + + The property specifies position of the source image's top line in the destination + image. If the property is set to , then it goes to the center of the result image; + otherwise it goes to the edge. + + Default value is set to . + + + + + + Fill color to use for unprocessed areas. + + + The property specifies fill color, which is used to fill unprocessed areas. + In the case if is greater than 0, then there will be some areas on + the image's edge, which are not filled by the produced "circular" image, but are filled by + the specified color. + + + Default value is set to . + + + + + + Size of destination image. + + + The property specifies size of result image produced by this image + processing routine in the case if property + is set to . + + Both width and height must be in the [1, 10000] range. + + Default value is set to 200 x 200. + + + + + + Use source image size for destination or not. + + + The property specifies if the image processing routine should create destination + image of the same size as original image or of the size specified by + property. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Extract YCbCr channel from image. + + + The filter extracts specified YCbCr channel of color image and returns + it in the form of grayscale image. + + The filter accepts 24 and 32 bpp color images and produces + 8 bpp grayscale images. + + Sample usage: + + // create filter + YCbCrExtractChannel filter = new YCbCrExtractChannel( YCbCr.CrIndex ); + // apply the filter + Bitmap crChannel = filter.Apply( image ); + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + YCbCr channel to extract. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + YCbCr channel to extract. + + + Default value is set to (Y channel). + + Invalid channel was specified. + + + + + Color filtering in YCbCr color space. + + + The filter operates in YCbCr color space and filters + pixels, which color is inside/outside of the specified YCbCr range - + it keeps pixels with colors inside/outside of the specified range and fills the + rest with specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + YCbCrFiltering filter = new YCbCrFiltering( ); + // set color ranges to keep + filter.Cb = new Range( -0.2f, 0.0f ); + filter.Cr = new Range( 0.26f, 0.5f ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Range of Y component. + Range of Cb component. + Range of Cr component. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Range of Y component, [0, 1]. + + + + + + Range of Cb component, [-0.5, 0.5]. + + + + + + Range of Cr component, [-0.5, 0.5]. + + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside specified + color range. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Determines, if Y value of filtered pixels should be updated. + + + The property specifies if Y channel of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if Cb value of filtered pixels should be updated. + + + The property specifies if Cb channel of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if Cr value of filtered pixels should be updated. + + + The property specifies if Cr channel of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Linear correction of YCbCr channels. + + + The filter operates in YCbCr color space and provides + with the facility of linear correction of its channels - mapping specified channels' + input ranges to specified output ranges. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + YCbCrLinear filter = new YCbCrLinear( ); + // configure the filter + filter.InCb = new Range( -0.276f, 0.163f ); + filter.InCr = new Range( -0.202f, 0.500f ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Y component's input range. + + + Y component is measured in the range of [0, 1]. + + + + + Cb component's input range. + + + Cb component is measured in the range of [-0.5, 0.5]. + + + + + Cr component's input range. + + + Cr component is measured in the range of [-0.5, 0.5]. + + + + + Y component's output range. + + + Y component is measured in the range of [0, 1]. + + + + + Cb component's output range. + + + Cb component is measured in the range of [-0.5, 0.5]. + + + + + Cr component's output range. + + + Cr component is measured in the range of [-0.5, 0.5]. + + + + + Format translations dictionary. + + + + + Replace channel of YCbCr color space. + + + Replaces specified YCbCr channel of color image with + specified grayscale imge. + + The filter is quite useful in conjunction with filter + (however may be used alone in some cases). Using the filter + it is possible to extract one of YCbCr channel, perform some image processing with it and then + put it back into the original color image. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create YCbCrExtractChannel filter for channel extracting + YCbCrExtractChannel extractFilter = new YCbCrExtractChannel( + YCbCr.CbIndex ); + // extract Cb channel + Bitmap cbChannel = extractFilter.Apply( image ); + // invert the channel + Invert invertFilter = new Invert( ); + invertFilter.ApplyInPlace( cbChannel ); + // put the channel back into the source image + YCbCrReplaceChannel replaceFilter = new YCbCrReplaceChannel( + YCbCr.CbIndex, cbChannel ); + replaceFilter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + YCbCr channel to replace. + + + + + Initializes a new instance of the class. + + + YCbCr channel to replace. + Channel image to use for replacement. + + + + + Initializes a new instance of the class. + + + YCbCr channel to replace. + Unmanaged channel image to use for replacement. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + Channel image was not specified. + Channel image size does not match source + image size. + + + + + Format translations dictionary. + + + + + YCbCr channel to replace. + + + Default value is set to (Y channel). + + Invalid channel was specified. + + + + + Grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8bpp indexed image (grayscale). + + + + + Unmanaged grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8bpp indexed image (grayscale). + + + + + Information about FITS image's frame. + + + + + Information about image's frame. + + + This is a base class, which keeps basic information about image, like its width, + height, etc. Classes, which inherit from this, may define more properties describing certain + image formats. + + + + + Image's width. + + + + + Image's height. + + + + + Number of bits per image's pixel. + + + + + Frame's index. + + + + + Total frames in the image. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Image's width. + Image's height. + Number of bits per image's pixel. + Frame's index. + Total frames in the image. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Image's width. + + + + + Image's height. + + + + + Number of bits per image's pixel. + + + + + Frame's index. + + + Some image formats support storing multiple frames in one image file. + The property specifies index of a particular frame. + + + + + Total frames in the image. + + + Some image formats support storing multiple frames in one image file. + The property specifies total number of frames in image file. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Image's width. + Image's height. + Number of bits per image's pixel. + Frame's index. + Total frames in the image. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Original bits per pixel. + + + The property specifies original number of bits per image's pixel. For + FITS images the value may be equal to 8, 16, 32, -32 (32 bit image with float data + type for pixel encoding), -64 (64 bit image with double data type for pixel encoding). + + + + + + Minimum data value found during parsing FITS image. + + + Minimum and maximum data values are used to scale image's data converting + them from original bits per pixel format to + supported bits per pixel format. + + + + + Maximum data value found during parsing FITS image. + + + Minimum and maximum data values are used to scale image's data converting + them from original bits per pixel format to + supported bits per pixel format. + + + + + Telescope used for object's observation. + + + + + Object acquired during observation. + + + + + Observer doing object's acquiring. + + + + + Instrument used for observation. + + + + + FITS image format decoder. + + + The FITS (an acronym derived from "Flexible Image Transport System") format + is an astronomical image and table format created and supported by NASA. FITS is the most + commonly used in astronomy and is designed specifically for scientific data. Different astronomical + organizations keep their images acquired using telescopes and other equipment in FITS format. + + The class extracts image frames only from the main data section of FITS file. + 2D (single frame) and 3D (series of frames) data structures are supported. + + During image reading/parsing, its data are scaled using minimum and maximum values of + the source image data. FITS tags are not used for this purpose - data are scaled from the + [min, max] range found to the range of supported image format ([0, 255] for 8 bpp grayscale + or [0, 65535] for 16 bpp grayscale image). + + + + + + Image decoder interface, which specifies set of methods, which should be + implemented by image decoders for different file formats. + + + The interface specifies set of methods, which are suitable not + only for simple one-frame image formats. The interface also defines methods + to work with image formats designed to store multiple frames and image formats + which provide different type of image description (like acquisition + parameters, etc). + + + + + + Decode first frame of image from the specified stream. + + + Source stream, which contains encoded image. + + Returns decoded image frame. + + + For one-frame image formats the method is supposed to decode single + available frame. For multi-frame image formats the first frame should be + decoded. + + Implementations of this method may throw + exception to report about unrecognized image + format, exception to report about incorrectly + formatted image or exception to report if + certain formats are not supported. + + + + + + Open specified stream. + + + Stream to open. + + Returns number of images found in the specified stream. + + Implementation of this method is supposed to read image's header, + checking for correct image format and reading its atributes. + + Implementations of this method may throw + exception to report about unrecognized image + format, exception to report about incorrectly + formatted image or exception to report if + certain formats are not supported. + + + + + + Decode specified frame. + + + Image frame to decode. + Receives information about decoded frame. + + Returns decoded frame. + + Implementations of this method may throw + exception in the case if no image + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted image. + + + + + + Close decoding of previously opened stream. + + + Implementations of this method don't close stream itself, but just close + decoding cleaning all associated data with it. + + + + + Decode first frame of FITS image. + + + Source stream, which contains encoded image. + + Returns decoded image frame. + + Not a FITS image format. + Format of the FITS image is not supported. + The stream contains invalid (broken) FITS image. + + + + + Open specified stream. + + + Stream to open. + + Returns number of images found in the specified stream. + + Not a FITS image format. + Format of the FITS image is not supported. + The stream contains invalid (broken) FITS image. + + + + + Decode specified frame. + + + Image frame to decode. + Receives information about decoded frame. + + Returns decoded frame. + + No image stream was opened previously. + Stream does not contain frame with specified index. + The stream contains invalid (broken) FITS image. + + + + + Close decoding of previously opened stream. + + + The method does not close stream itself, but just closes + decoding cleaning all associated data with it. + + + + + Image decoder to decode different custom image file formats. + + + The class represent a help class, which simplifies decoding of image + files finding appropriate image decoder automatically (using list of registered + image decoders). Instead of using required image decoder directly, users may use this + class, which will find required decoder by file's extension. + + By default the class registers on its own all decoders, which are available in + AForge.Imaging.Formats library. If user has implementation of his own image decoders, he + needs to register them using method to be able to use them through + the class. + + If the class can not find appropriate decode in the list of registered + decoders, it passes file to .NET's image decoder for decoding. + + Sample usage: + + // sample file name + string fileName = "myFile.pnm"; + // decode image file + Bitmap = ImageDecoder.DecodeFromFile( fileName ); + + + + + + + + + + Register image decoder for a specified file extension. + + + File extension to register decoder for ("bmp", for example). + Image decoder to use for the specified file extension. + + The method allows to register image decoder object, which should be used + to decode images from files with the specified extension. + + + + + Decode first frame for the specified file. + + + File name to read image from. + + Return decoded image. In the case if file format support multiple + frames, the method return the first frame. + + The method uses table of registered image decoders to find the one, + which should be used for the specified file. If there is not appropriate decoder + found, the method uses default .NET's image decoding routine (see + ). + + + + + Decode first frame for the specified file. + + + File name to read image from. + Information about the decoded image. + + Return decoded image. In the case if file format support multiple + frames, the method return the first frame. + + The method uses table of registered image decoders to find the one, + which should be used for the specified file. If there is not appropriate decoder + found, the method uses default .NET's image decoding routine (see + ). + + + + + Information about PNM image's frame. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Image's width. + Image's height. + Number of bits per image's pixel. + Frame's index. + Total frames in the image. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + PNM file version (format), [1, 6]. + + + + + Maximum pixel's value in source PNM image. + + + The value is used to scale image's data converting them + from original data range to the range of + supported bits per pixel format. + + + + + PNM image format decoder. + + + The PNM (an acronym derived from "Portable Any Map") format is an + abstraction of the PBM, PGM and PPM formats. I.e. the name "PNM" refers collectively + to PBM (binary images), PGM (grayscale images) and PPM (color image) image formats. + + Image in PNM format can be found in different scientific databases and laboratories, + for example Yale Face Database and AT&T Face Database. + + Only PNM images of P5 (binary encoded PGM) and P6 (binary encoded PPM) formats + are supported at this point. + + The maximum supported pixel value is 255 at this point. + + The class supports only one-frame PNM images. As it is specified in format + specification, the multi-frame PNM images has appeared starting from 2000. + + + + + + + Decode first frame of PNM image. + + + Source stream, which contains encoded image. + + Returns decoded image frame. + + Not a PNM image format. + Format of the PNM image is not supported. + The stream contains invalid (broken) PNM image. + + + + + Open specified stream. + + + Stream to open. + + Returns number of images found in the specified stream. + + Not a PNM image format. + Format of the PNM image is not supported. + The stream contains invalid (broken) PNM image. + + + + + Decode specified frame. + + + Image frame to decode. + Receives information about decoded frame. + + Returns decoded frame. + + No image stream was opened previously. + Stream does not contain frame with specified index. + The stream contains invalid (broken) PNM image. + + + + + Close decoding of previously opened stream. + + + The method does not close stream itself, but just closes + decoding cleaning all associated data with it. + + + + + Set of tools used internally in AForge.Imaging.Formats library. + + + + + Create and initialize new grayscale image. + + + Image width. + Image height. + + Returns new created grayscale image. + + AForge.Imaging.Image.CreateGrayscaleImage() function + could be used instead, which does the some. But it was not used to get + rid of dependency on AForge.Imaing library. + + + + + Read specified amount of bytes from the specified stream. + + + Source sream to read data from. + Buffer to read data into. + Offset in buffer to put data into. + Number of bytes to read. + + Returns total number of bytes read. It may be smaller than requested amount only + in the case if end of stream was reached. + + This tool function guarantees that requested number of bytes + was read from the source stream (.NET streams don't guarantee this and may return less bytes + than it was requested). Only in the case if end of stream was reached, the function + may return with less bytes read. + + + + + + Horizontal intensity statistics. + + + The class provides information about horizontal distribution + of pixel intensities, which may be used to locate objects, their centers, etc. + + + The class accepts grayscale (8 bpp indexed and 16 bpp) and color (24, 32, 48 and 64 bpp) images. + In the case of 32 and 64 bpp color images, the alpha channel is not processed - statistics is not + gathered for this channel. + + Sample usage: + + // collect statistics + HorizontalIntensityStatistics his = new HorizontalIntensityStatistics( sourceImage ); + // get gray histogram (for grayscale image) + Histogram histogram = his.Gray; + // output some histogram's information + System.Diagnostics.Debug.WriteLine( "Mean = " + histogram.Mean ); + System.Diagnostics.Debug.WriteLine( "Min = " + histogram.Min ); + System.Diagnostics.Debug.WriteLine( "Max = " + histogram.Max ); + + + Sample grayscale image with its horizontal intensity histogram: + + + + + + + + + Initializes a new instance of the class. + + + Source image. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source image data. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Gather horizontal intensity statistics for specified image. + + + Source image. + + + + + Histogram for red channel. + + + + + + Histogram for green channel. + + + + + + Histogram for blue channel. + + + + + + Histogram for gray channel (intensities). + + + + + + Value wich specifies if the processed image was color or grayscale. + + + If the property equals to true, then the + property should be used to retrieve histogram for the processed grayscale image. + Otherwise , and property + should be used to retrieve histogram for particular RGB channel of the processed + color image. + + + + + Hough circle. + + + Represents circle of Hough transform. + + + + + + + Circle center's X coordinate. + + + + + Circle center's Y coordinate. + + + + + Circle's radius. + + + + + Line's absolute intensity. + + + + + Line's relative intensity. + + + + + Initializes a new instance of the class. + + + Circle's X coordinate. + Circle's Y coordinate. + Circle's radius. + Circle's absolute intensity. + Circle's relative intensity. + + + + + Compare the object with another instance of this class. + + + Object to compare with. + + A signed number indicating the relative values of this instance and value: 1) greater than zero - + this instance is greater than value; 2) zero - this instance is equal to value; + 3) greater than zero - this instance is less than value. + + The sort order is descending. + + + Object are compared using their intensity value. + + + + + + Hough circle transformation. + + + The class implements Hough circle transformation, which allows to detect + circles of specified radius in an image. + + The class accepts binary images for processing, which are represented by 8 bpp grayscale images. + All black pixels (0 pixel's value) are treated as background, but pixels with different value are + treated as circles' pixels. + + Sample usage: + + HoughCircleTransformation circleTransform = new HoughCircleTransformation( 35 ); + // apply Hough circle transform + circleTransform.ProcessImage( sourceImage ); + Bitmap houghCirlceImage = circleTransform.ToBitmap( ); + // get circles using relative intensity + HoughCircle[] circles = circleTransform.GetCirclesByRelativeIntensity( 0.5 ); + + foreach ( HoughCircle circle in circles ) + { + // ... + } + + + Initial image: + + Hough circle transformation image: + + + + + + + + + Initializes a new instance of the class. + + + Circles' radius to detect. + + + + + Process an image building Hough map. + + + Source image to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image data to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source unmanaged image to process. + + Unsupported pixel format of the source image. + + + + + Ñonvert Hough map to bitmap. + + + Returns 8 bppp grayscale bitmap, which shows Hough map. + + Hough transformation was not yet done by calling + ProcessImage() method. + + + + + Get specified amount of circles with highest intensity. + + + Amount of circles to get. + + Returns arrary of most intesive circles. If there are no circles detected, + the returned array has zero length. + + + + + Get circles with relative intensity higher then specified value. + + + Minimum relative intesity of circles. + + Returns arrary of most intesive circles. If there are no circles detected, + the returned array has zero length. + + + + + Minimum circle's intensity in Hough map to recognize a circle. + + + The value sets minimum intensity level for a circle. If a value in Hough + map has lower intensity, then it is not treated as a circle. + + Default value is set to 10. + + + + + Radius for searching local peak value. + + + The value determines radius around a map's value, which is analyzed to determine + if the map's value is a local maximum in specified area. + + Default value is set to 4. Minimum value is 1. Maximum value is 10. + + + + + Maximum found intensity in Hough map. + + + The property provides maximum found circle's intensity. + + + + + Found circles count. + + + The property provides total number of found circles, which intensity is higher (or equal to), + than the requested minimum intensity. + + + + + Hough line. + + + Represents line of Hough Line transformation using + polar coordinates. + See Wikipedia + for information on how to convert polar coordinates to Cartesian coordinates. + + + Hough Line transformation does not provide + information about lines start and end points, only slope and distance from image's center. Using + only provided information it is not possible to draw the detected line as it exactly appears on + the source image. But it is possible to draw a line through the entire image, which contains the + source line (see sample code below). + + + Sample code to draw detected Hough lines: + + HoughLineTransformation lineTransform = new HoughLineTransformation( ); + // apply Hough line transofrm + lineTransform.ProcessImage( sourceImage ); + Bitmap houghLineImage = lineTransform.ToBitmap( ); + // get lines using relative intensity + HoughLine[] lines = lineTransform.GetLinesByRelativeIntensity( 0.5 ); + + foreach ( HoughLine line in lines ) + { + // get line's radius and theta values + int r = line.Radius; + double t = line.Theta; + + // check if line is in lower part of the image + if ( r < 0 ) + { + t += 180; + r = -r; + } + + // convert degrees to radians + t = ( t / 180 ) * Math.PI; + + // get image centers (all coordinate are measured relative + // to center) + int w2 = image.Width /2; + int h2 = image.Height / 2; + + double x0 = 0, x1 = 0, y0 = 0, y1 = 0; + + if ( line.Theta != 0 ) + { + // none-vertical line + x0 = -w2; // most left point + x1 = w2; // most right point + + // calculate corresponding y values + y0 = ( -Math.Cos( t ) * x0 + r ) / Math.Sin( t ); + y1 = ( -Math.Cos( t ) * x1 + r ) / Math.Sin( t ); + } + else + { + // vertical line + x0 = line.Radius; + x1 = line.Radius; + + y0 = h2; + y1 = -h2; + } + + // draw line on the image + Drawing.Line( sourceData, + new IntPoint( (int) x0 + w2, h2 - (int) y0 ), + new IntPoint( (int) x1 + w2, h2 - (int) y1 ), + Color.Red ); + } + + + To clarify meaning of and values + of detected Hough lines, let's take a look at the below sample image and + corresponding values of radius and theta for the lines on the image: + + + + + Detected radius and theta values (color in corresponding colors): + + Theta = 90, R = 125, I = 249; + Theta = 0, R = -170, I = 187 (converts to Theta = 180, R = 170); + Theta = 90, R = -58, I = 163 (converts to Theta = 270, R = 58); + Theta = 101, R = -101, I = 130 (converts to Theta = 281, R = 101); + Theta = 0, R = 43, I = 112; + Theta = 45, R = 127, I = 82. + + + + + + + + + + + Line's slope - angle between polar axis and line's radius (normal going + from pole to the line). Measured in degrees, [0, 180). + + + + + Line's distance from image center, (−∞, +∞). + + + Negative line's radius means, that the line resides in lower + part of the polar coordinates system. This means that value + should be increased by 180 degrees and radius should be made positive. + + + + + + Line's absolute intensity, (0, +∞). + + + Line's absolute intensity is a measure, which equals + to number of pixels detected on the line. This value is bigger for longer + lines. + + The value may not be 100% reliable to measure exact number of pixels + on the line. Although these value correlate a lot (which means they are very close + in most cases), the intensity value may slightly vary. + + + + + + Line's relative intensity, (0, 1]. + + + Line's relative intensity is relation of line's + value to maximum found intensity. For the longest line (line with highest intesity) the + relative intensity is set to 1. If line's relative is set 0.5, for example, this means + its intensity is half of maximum found intensity. + + + + + + Initializes a new instance of the class. + + + Line's slope. + Line's distance from image center. + Line's absolute intensity. + Line's relative intensity. + + + + + Compare the object with another instance of this class. + + + Object to compare with. + + A signed number indicating the relative values of this instance and value: 1) greater than zero - + this instance is greater than value; 2) zero - this instance is equal to value; + 3) greater than zero - this instance is less than value. + + The sort order is descending. + + + Object are compared using their intensity value. + + + + + + Hough line transformation. + + + The class implements Hough line transformation, which allows to detect + straight lines in an image. Lines, which are found by the class, are provided in + polar coordinates system - + lines' distances from image's center and lines' slopes are provided. + The pole of polar coordinates system is put into processing image's center and the polar + axis is directed to the right from the pole. Lines' slope is measured in degrees and + is actually represented by angle between polar axis and line's radius (normal going + from pole to the line), which is measured in counter-clockwise direction. + + + Found lines may have negative radius. + This means, that the line resides in lower part of the polar coordinates system + and its value should be increased by 180 degrees and + radius should be made positive. + + + The class accepts binary images for processing, which are represented by 8 bpp grayscale images. + All black pixels (0 pixel's value) are treated as background, but pixels with different value are + treated as lines' pixels. + + See also documentation to class for additional information + about Hough Lines. + + Sample usage: + + HoughLineTransformation lineTransform = new HoughLineTransformation( ); + // apply Hough line transofrm + lineTransform.ProcessImage( sourceImage ); + Bitmap houghLineImage = lineTransform.ToBitmap( ); + // get lines using relative intensity + HoughLine[] lines = lineTransform.GetLinesByRelativeIntensity( 0.5 ); + + foreach ( HoughLine line in lines ) + { + // ... + } + + + Initial image: + + Hough line transformation image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Process an image building Hough map. + + + Source image to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image to process. + Image's rectangle to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image data to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image data to process. + Image's rectangle to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source unmanaged image to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source unmanaged image to process. + Image's rectangle to process. + + Unsupported pixel format of the source image. + + + + + Convert Hough map to bitmap. + + + Returns 8 bppp grayscale bitmap, which shows Hough map. + + Hough transformation was not yet done by calling + ProcessImage() method. + + + + + Get specified amount of lines with highest intensity. + + + Amount of lines to get. + + Returns array of most intesive lines. If there are no lines detected, + the returned array has zero length. + + + + + Get lines with relative intensity higher then specified value. + + + Minimum relative intesity of lines. + + Returns array of lines. If there are no lines detected, + the returned array has zero length. + + + + + Steps per degree. + + + The value defines quality of Hough line transformation and its ability to detect + lines' slope precisely. + + Default value is set to 1. Minimum value is 1. Maximum value is 10. + + + + + Minimum line's intensity in Hough map to recognize a line. + + + The value sets minimum intensity level for a line. If a value in Hough + map has lower intensity, then it is not treated as a line. + + Default value is set to 10. + + + + + Radius for searching local peak value. + + + The value determines radius around a map's value, which is analyzed to determine + if the map's value is a local maximum in specified area. + + Default value is set to 4. Minimum value is 1. Maximum value is 10. + + + + + Maximum found intensity in Hough map. + + + The property provides maximum found line's intensity. + + + + + Found lines count. + + + The property provides total number of found lines, which intensity is higher (or equal to), + than the requested minimum intensity. + + + + + Interface for custom blobs' filters used for filtering blobs after + blob counting. + + + The interface should be implemented by classes, which perform + custom blobs' filtering different from default filtering implemented in + . See + for additional information. + + + + + + Check specified blob and decide if should be kept or not. + + + Blob to check. + + Return if the blob should be kept or + if it should be removed. + + + + + Corners detector's interface. + + + The interface specifies set of methods, which should be implemented by different + corners detection algorithms. + + + + + Process image looking for corners. + + + Source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + + Unmanaged source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Core image relatad methods. + + + All methods of this class are static and represent general routines + used by different image processing classes. + + + + + Check if specified 8 bpp image is grayscale. + + + Image to check. + + Returns true if the image is grayscale or false otherwise. + + The methods checks if the image is a grayscale image of 256 gradients. + The method first examines if the image's pixel format is + Format8bppIndexed + and then it examines its palette to check if the image is grayscale or not. + + + + + Create and initialize new 8 bpp grayscale image. + + + Image width. + Image height. + + Returns the created grayscale image. + + The method creates new 8 bpp grayscale image and initializes its palette. + Grayscale image is represented as + Format8bppIndexed + image with palette initialized to 256 gradients of gray color. + + + + + Set pallete of the 8 bpp indexed image to grayscale. + + + Image to initialize. + + The method initializes palette of + Format8bppIndexed + image with 256 gradients of gray color. + + Provided image is not 8 bpp indexed image. + + + + + Clone image. + + + Source image. + Pixel format of result image. + + Returns clone of the source image with specified pixel format. + + The original Bitmap.Clone() + does not produce the desired result - it does not create a clone with specified pixel format. + More of it, the original method does not create an actual clone - it does not create a copy + of the image. That is why this method was implemented to provide the functionality. + + + + + Clone image. + + + Source image. + + Return clone of the source image. + + The original Bitmap.Clone() + does not produce the desired result - it does not create an actual clone (it does not create a copy + of the image). That is why this method was implemented to provide the functionality. + + + + + Clone image. + + + Source image data. + + Clones image from source image data. The message does not clone pallete in the + case if the source image has indexed pixel format. + + + + + Format an image. + + + Source image to format. + + Formats the image to one of the formats, which are supported + by the AForge.Imaging library. The image is left untouched in the + case if it is already of + Format24bppRgb or + Format32bppRgb or + Format32bppArgb or + Format48bppRgb or + Format64bppArgb + format or it is grayscale, otherwise the image + is converted to Format24bppRgb + format. + + The method is deprecated and method should + be used instead with specifying desired pixel format. + + + + + + Load bitmap from file. + + + File name to load bitmap from. + + Returns loaded bitmap. + + The method is provided as an alternative of + method to solve the issues of locked file. The standard .NET's method locks the source file until + image's object is disposed, so the file can not be deleted or overwritten. This method workarounds the issue and + does not lock the source file. + + Sample usage: + + Bitmap image = AForge.Imaging.Image.FromFile( "test.jpg" ); + + + + + + + Convert bitmap with 16 bits per plane to a bitmap with 8 bits per plane. + + + Source image to convert. + + Returns new image which is a copy of the source image but with 8 bits per plane. + + The routine does the next pixel format conversions: + + Format16bppGrayScale to + Format8bppIndexed with grayscale palette; + Format48bppRgb to + Format24bppRgb; + Format64bppArgb to + Format32bppArgb; + Format64bppPArgb to + Format32bppPArgb. + + + + Invalid pixel format of the source image. + + + + + Convert bitmap with 8 bits per plane to a bitmap with 16 bits per plane. + + + Source image to convert. + + Returns new image which is a copy of the source image but with 16 bits per plane. + + The routine does the next pixel format conversions: + + Format8bppIndexed (grayscale palette assumed) to + Format16bppGrayScale; + Format24bppRgb to + Format48bppRgb; + Format32bppArgb to + Format64bppArgb; + Format32bppPArgb to + Format64bppPArgb. + + + + Invalid pixel format of the source image. + + + + + Gather statistics about image in RGB color space. + + + The class is used to accumulate statistical values about images, + like histogram, mean, standard deviation, etc. for each color channel in RGB color + space. + + The class accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // gather statistics + ImageStatistics stat = new ImageStatistics( image ); + // get red channel's histogram + Histogram red = stat.Red; + // check mean value of red channel + if ( red.Mean > 128 ) + { + // do further processing + } + + + + + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Unmanaged image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Histogram of red channel. + + + The property is valid only for color images + (see property). + + + + + Histogram of green channel. + + + The property is valid only for color images + (see property). + + + + + Histogram of blue channel. + + + The property is valid only for color images + (see property). + + + + + Histogram of gray channel. + + + The property is valid only for grayscale images + (see property). + + + + + Histogram of red channel excluding black pixels. + + + The property keeps statistics about red channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for color images + (see property). + + + + + Histogram of green channel excluding black pixels. + + + The property keeps statistics about green channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for color images + (see property). + + + + + Histogram of blue channel excluding black pixels + + + The property keeps statistics about blue channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for color images + (see property). + + + + + Histogram of gray channel channel excluding black pixels. + + + The property keeps statistics about gray channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for grayscale images + (see property). + + + + + Total pixels count in the processed image. + + + + + + Total pixels count in the processed image excluding black pixels. + + + + + + Value wich specifies if the processed image was color or grayscale. + + + If the value is set to then + property should be used to get statistics information about image. Otherwise + , and properties should be used + for color images. + + + + + Gather statistics about image in HSL color space. + + + The class is used to accumulate statistical values about images, + like histogram, mean, standard deviation, etc. for each HSL color channel. + + The class accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // gather statistics + ImageStatisticsHSL stat = new ImageStatisticsHSL( image ); + // get saturation channel's histogram + ContinuousHistogram saturation = stat.Saturation; + // check mean value of saturation channel + if ( saturation.Mean > 0.5 ) + { + // do further processing + } + + + + + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Unmanaged image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Histogram of saturation channel. + + + + + + Histogram of luminance channel. + + + + + + Histogram of saturation channel excluding black pixels. + + + The property keeps statistics about saturation channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Histogram of luminance channel excluding black pixels. + + + The property keeps statistics about luminance channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Total pixels count in the processed image. + + + + + + Total pixels count in the processed image excluding black pixels. + + + + + + Gather statistics about image in YCbCr color space. + + + The class is used to accumulate statistical values about images, + like histogram, mean, standard deviation, etc. for each YCbCr color channel. + + The class accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // gather statistics + ImageStatisticsYCbCr stat = new ImageStatisticsYCbCr( image ); + // get Y channel's histogram + ContinuousHistogram y = stat.Y; + // check mean value of Y channel + if ( y.Mean > 0.5 ) + { + // do further processing + } + + + + + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Unmanaged image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Histogram of Y channel. + + + + + + Histogram of Cb channel. + + + + + + Histogram of Cr channel. + + + + + + Histogram of Y channel excluding black pixels. + + + The property keeps statistics about Y channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Histogram of Cb channel excluding black pixels + + + The property keeps statistics about Cb channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Histogram of Cr channel excluding black pixels + + + The property keeps statistics about Cr channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Total pixels count in the processed image. + + + + + + Total pixels count in the processed image excluding black pixels. + + + + + + Integral image. + + + The class implements integral image concept, which is described by + Viola and Jones in: P. Viola and M. J. Jones, "Robust real-time face detection", + Int. Journal of Computer Vision 57(2), pp. 137–154, 2004. + + "An integral image I of an input image G is defined as the image in which the + intensity at a pixel position is equal to the sum of the intensities of all the pixels + above and to the left of that position in the original image." + + The intensity at position (x, y) can be written as: + + x y + I(x,y) = SUM( SUM( G(i,j) ) ) + i=0 j=0 + + + The class uses 32-bit integers to represent integral image. + + The class processes only grayscale (8 bpp indexed) images. + + This class contains two versions of each method: safe and unsafe. Safe methods do + checks of provided coordinates and ensure that these coordinates belong to the image, what makes + these methods slower. Unsafe methods do not do coordinates' checks and rely that these + coordinates belong to the image, what makes these methods faster. + + Sample usage: + + // create integral image + IntegralImage im = IntegralImage.FromBitmap( image ); + // get pixels' mean value in the specified rectangle + float mean = im.GetRectangleMean( 10, 10, 20, 30 ) + + + + + + + Intergral image's array. + + + See remarks to property. + + + + + Initializes a new instance of the class. + + + Image width. + Image height. + + The constractor is protected, what makes it imposible to instantiate this + class directly. To create an instance of this class or + method should be used. + + + + + Construct integral image from source grayscale image. + + + Source grayscale image. + + Returns integral image. + + The source image has incorrect pixel format. + + + + + Construct integral image from source grayscale image. + + + Source image data. + + Returns integral image. + + The source image has incorrect pixel format. + + + + + Construct integral image from source grayscale image. + + + Source unmanaged image. + + Returns integral image. + + The source image has incorrect pixel format. + + + + + Calculate sum of pixels in the specified rectangle. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns sum of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate horizontal (X) haar wavelet at the specified point. + + + X coordinate of the point to calculate wavelet at. + Y coordinate of the point to calculate wavelet at. + Wavelet size to calculate. + + Returns value of the horizontal wavelet at the specified point. + + The method calculates horizontal wavelet, which is a difference + of two horizontally adjacent boxes' sums, i.e. A-B. A is the sum of rectangle with coordinates + (x, y-radius, x+radius-1, y+radius-1). B is the sum of rectangle with coordinates + (x-radius, y-radius, x-1, y+radiys-1). + + + + + Calculate vertical (Y) haar wavelet at the specified point. + + + X coordinate of the point to calculate wavelet at. + Y coordinate of the point to calculate wavelet at. + Wavelet size to calculate. + + Returns value of the vertical wavelet at the specified point. + + The method calculates vertical wavelet, which is a difference + of two vertical adjacent boxes' sums, i.e. A-B. A is the sum of rectangle with coordinates + (x-radius, y, x+radius-1, y+radius-1). B is the sum of rectangle with coordinates + (x-radius, y-radius, x+radius-1, y-1). + + + + + Calculate sum of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns sum of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate sum of pixels in the specified rectangle. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns sum of pixels in the specified rectangle. + + The method calculates sum of pixels in square rectangle with + odd width and height. In the case if it is required to calculate sum of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Calculate sum of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns sum of pixels in the specified rectangle. + + The method calculates sum of pixels in square rectangle with + odd width and height. In the case if it is required to calculate sum of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Calculate mean value of pixels in the specified rectangle. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns mean value of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate mean value of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns mean value of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate mean value of pixels in the specified rectangle. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns mean value of pixels in the specified rectangle. + + The method calculates mean value of pixels in square rectangle with + odd width and height. In the case if it is required to calculate mean value of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Calculate mean value of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns mean value of pixels in the specified rectangle. + + The method calculates mean value of pixels in square rectangle with + odd width and height. In the case if it is required to calculate mean value of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Width of the source image the integral image was constructed for. + + + + + Height of the source image the integral image was constructed for. + + + + + Provides access to internal array keeping integral image data. + + + + The array should be accessed by [y, x] indexing. + + The array's size is [+1, +1]. The first + row and column are filled with zeros, what is done for more efficient calculation of + rectangles' sums. + + + + + + Interpolation routines. + + + + + + Bicubic kernel. + + + X value. + + Bicubic cooefficient. + + The function implements bicubic kernel W(x) as described on + Wikipedia + (coefficient a is set to -0.5). + + + + + Internal memory manager used by image processing routines. + + + The memory manager supports memory allocation/deallocation + caching. Caching means that memory blocks may be not freed on request, but + kept for later reuse. + + + + + Allocate unmanaged memory. + + + Memory size to allocate. + + Return's pointer to the allocated memory buffer. + + The method allocates requested amount of memory and returns pointer to it. It may avoid allocation + in the case some caching scheme is uses and there is already enough allocated memory available. + + There is insufficient memory to satisfy the request. + + + + + Free unmanaged memory. + + + Pointer to memory buffer to free. + + This method may skip actual deallocation of memory and keep it for future requests, + if some caching scheme is used. + + + + + Force freeing unused memory. + + + Frees and removes from cache memory blocks, which are not used by users. + + Returns number of freed memory blocks. + + + + + Maximum amount of memory blocks to keep in cache. + + + The value specifies the amount of memory blocks, which could be + cached by the memory manager. + + Default value is set to 3. Maximum value is 10. + + + + + + Current amount of memory blocks in cache. + + + + + + Amount of busy memory blocks in cache (which were not freed yet by user). + + + + + + Amount of free memory blocks in cache (which are not busy by users). + + + + + + Amount of cached memory in bytes. + + + + + + Maximum memory block's size in bytes, which could be cached. + + + Memory blocks, which size is greater than this value, are not cached. + + + + + Minimum memory block's size in bytes, which could be cached. + + + Memory blocks, which size is less than this value, are not cached. + + + + + Moravec corners detector. + + + The class implements Moravec corners detector. For information about algorithm's + details its description + should be studied. + + Due to limitations of Moravec corners detector (anisotropic response, etc.) its usage is limited + to certain cases only. + + The class processes only grayscale 8 bpp and color 24/32 bpp images. + + Sample usage: + + // create corner detector's instance + MoravecCornersDetector mcd = new MoravecCornersDetector( ); + // process image searching for corners + List<IntPoint> corners = scd.ProcessImage( image ); + // process points + foreach ( IntPoint corner in corners ) + { + // ... + } + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Threshold value, which is used to filter out uninteresting points. + + + + + Initializes a new instance of the class. + + + Threshold value, which is used to filter out uninteresting points. + Window size used to determine if point is interesting. + + + + + Process image looking for corners. + + + Source image to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Unmanaged source image to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Window size used to determine if point is interesting, [3, 15]. + + + The value specifies window size, which is used for initial searching of + corners candidates and then for searching local maximums. + + Default value is set to 3. + + + Setting value is not odd. + + + + + Threshold value, which is used to filter out uninteresting points. + + + The value is used to filter uninteresting points - points which have value below + specified threshold value are treated as not corners candidates. Increasing this value decreases + the amount of detected point. + + Default value is set to 500. + + + + + + Searching of quadrilateral/triangle corners. + + + The class searches for quadrilateral's/triangle's corners on the specified image. + It first collects edge points of the object and then uses + to find corners + the quadrilateral/triangle. + + The class treats all black pixels as background (none-object) and + all none-black pixels as object. + + The class processes grayscale 8 bpp and color 24/32 bpp images. + + Sample usage: + + // get corners of the quadrilateral + QuadrilateralFinder qf = new QuadrilateralFinder( ); + List<IntPoint> corners = qf.ProcessImage( image ); + + // lock image to draw on it with AForge.NET's methods + // (or draw directly on image without locking if it is unmanaged image) + BitmapData data = image.LockBits( new Rectangle( 0, 0, image.Width, image.Height ), + ImageLockMode.ReadWrite, image.PixelFormat ); + + Drawing.Polygon( data, corners, Color.Red ); + for ( int i = 0; i < corners.Count; i++ ) + { + Drawing.FillRectangle( data, + new Rectangle( corners[i].X - 2, corners[i].Y - 2, 5, 5 ), + Color.FromArgb( i * 32 + 127 + 32, i * 64, i * 64 ) ); + } + + image.UnlockBits( data ); + + + Source image: + + Result image: + + + + + + + Find corners of quadrilateral/triangular area in the specified image. + + + Source image to search quadrilateral for. + + Returns a list of points, which are corners of the quadrilateral/triangular area found + in the specified image. The first point in the list is the point with lowest + X coordinate (and with lowest Y if there are several points with the same X value). + Points are in clockwise order (screen coordinates system). + + Unsupported pixel format of the source image. + + + + + Find corners of quadrilateral/triangular area in the specified image. + + + Source image data to search quadrilateral for. + + Returns a list of points, which are corners of the quadrilateral/triangular area found + in the specified image. The first point in the list is the point with lowest + X coordinate (and with lowest Y if there are several points with the same X value). + Points are in clockwise order (screen coordinates system). + + Unsupported pixel format of the source image. + + + + + Find corners of quadrilateral/triangular area in the specified image. + + + Source image to search quadrilateral for. + + Returns a list of points, which are corners of the quadrilateral/triangular area found + in the specified image. The first point in the list is the point with lowest + X coordinate (and with lowest Y if there are several points with the same X value). + Points are in clockwise order (screen coordinates system). + + Unsupported pixel format of the source image. + + + + + Blob counter based on recursion. + + + The class counts and extracts stand alone objects in + images using recursive version of connected components labeling + algorithm. + + The algorithm treats all pixels with values less or equal to + as background, but pixels with higher values are treated as objects' pixels. + + Since this algorithm is based on recursion, it is + required to be careful with its application to big images with big blobs, + because in this case recursion will require big stack size and may lead + to stack overflow. The recursive version may be applied (and may be even + faster than ) to an image with small blobs - + "star sky" image (or small cells, for example, etc). + + For blobs' searching the class supports 8 bpp indexed grayscale images and + 24/32 bpp color images. + See documentation about for information about which + pixel formats are supported for extraction of blobs. + + Sample usage: + + // create an instance of blob counter algorithm + RecursiveBlobCounter bc = new RecursiveBlobCounter( ); + // process binary image + bc.ProcessImage( image ); + Rectangle[] rects = bc.GetObjectsRectangles( ); + // process blobs + foreach ( Rectangle rect in rects ) + { + // ... + } + + + + + + + Initializes a new instance of the class. + + + Creates new instance of the class with + an empty objects map. Before using methods, which provide information about blobs + or extract them, the , + or + method should be called to collect objects map. + + + + + Initializes a new instance of the class. + + + Image to look for objects in. + + + + + Initializes a new instance of the class. + + + Image data to look for objects in. + + + + + Initializes a new instance of the class. + + + Unmanaged image to look for objects in. + + + + + Actual objects map building. + + + Unmanaged image to process. + + The method supports 8 bpp indexed grayscale images and 24/32 bpp color images. + + Unsupported pixel format of the source image. + + + + + Background threshold's value. + + + The property sets threshold value for distinguishing between background + pixel and objects' pixels. All pixel with values less or equal to this property are + treated as background, but pixels with higher values are treated as objects' pixels. + + In the case of colour images a pixel is treated as objects' pixel if any of its + RGB values are higher than corresponding values of this threshold. + + For processing grayscale image, set the property with all RGB components eqaul. + + Default value is set to (0, 0, 0) - black colour. + + + + + Susan corners detector. + + + The class implements Susan corners detector, which is described by + S.M. Smith in: S.M. Smith, "SUSAN - a new approach to low level image processing", + Internal Technical Report TR95SMS1, Defense Research Agency, Chobham Lane, Chertsey, + Surrey, UK, 1995. + + Some implementation notes: + + Analyzing each pixel and searching for its USAN area, the 7x7 mask is used, + which is comprised of 37 pixels. The mask has circle shape: + + xxx + xxxxx + xxxxxxx + xxxxxxx + xxxxxxx + xxxxx + xxx + + + In the case if USAN's center of mass has the same coordinates as nucleus + (central point), the pixel is not a corner. + For noise suppression the 5x5 square window is used. + + The class processes only grayscale 8 bpp and color 24/32 bpp images. + In the case of color image, it is converted to grayscale internally using + filter. + + Sample usage: + + // create corners detector's instance + SusanCornersDetector scd = new SusanCornersDetector( ); + // process image searching for corners + List<IntPoint> corners = scd.ProcessImage( image ); + // process points + foreach ( IntPoint corner in corners ) + { + // ... + } + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Brightness difference threshold. + Geometrical threshold. + + + + + Process image looking for corners. + + + Source image to process. + + Returns list of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Unmanaged source image to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Brightness difference threshold. + + + The brightness difference threshold controls the amount + of pixels, which become part of USAN area. If difference between central + pixel (nucleus) and surrounding pixel is not higher than difference threshold, + then that pixel becomes part of USAN. + + Increasing this value decreases the amount of detected corners. + + Default value is set to 25. + + + + + + Geometrical threshold. + + + The geometrical threshold sets the maximum number of pixels + in USAN area around corner. If potential corner has USAN with more pixels, than + it is not a corner. + + Decreasing this value decreases the amount of detected corners - only sharp corners + are detected. Increasing this value increases the amount of detected corners, but + also increases amount of flat corners, which may be not corners at all. + + Default value is set to 18, which is half of maximum amount of pixels in USAN. + + + + + + Template match class keeps information about found template match. The class is + used with template matching algorithms implementing + interface. + + + + + Initializes a new instance of the class. + + + Rectangle of the matching area. + Similarity between template and found matching, [0..1]. + + + + + Rectangle of the matching area. + + + + + Similarity between template and found matching, [0..1]. + + + + + Clouds texture. + + + The texture generator creates textures with effect of clouds. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + CloudsTexture textureGenerator = new CloudsTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Texture generator interface. + + + Each texture generator generates a 2-D texture of the specified size and returns + it as two dimensional array of intensities in the range of [0, 1] - texture's values. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of texture's intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Resets the generator - resets all internal variables, regenerates + internal random numbers, etc. + + + + + Initializes a new instance of the class. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Labirinth texture. + + + The texture generator creates textures with effect of labyrinth. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + LabyrinthTexture textureGenerator = new LabyrinthTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Marble texture. + + + The texture generator creates textures with effect of marble. + The and properties allow to control the look + of marble texture in X/Y directions. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + MarbleTexture textureGenerator = new MarbleTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + X period value. + Y period value. + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + X period value, ≥ 2. + + + Default value is set to 5. + + + + + Y period value, ≥ 2. + + + Default value is set to 10. + + + + + Textile texture. + + + The texture generator creates textures with effect of textile. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + TextileTexture textureGenerator = new TextileTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Texture tools. + + + The class represents collection of different texture tools, like + converting a texture to/from grayscale image. + + Sample usage: + + // create texture generator + WoodTexture textureGenerator = new WoodTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + + + + + Convert texture to grayscale bitmap. + + + Texture to convert to bitmap. + + Returns bitmap of the texture. + + + + + Convert grayscale bitmap to texture. + + + Image to convert to texture. + + Returns texture as 2D float array. + + Only grayscale (8 bpp indexed images) are supported. + + + + + Convert grayscale bitmap to texture + + + Image data to convert to texture + + Returns texture as 2D float array. + + Only grayscale (8 bpp indexed images) are supported. + + + + + Convert grayscale bitmap to texture. + + + Image data to convert to texture. + + Returns texture as 2D float array. + + Only grayscale (8 bpp indexed images) are supported. + + + + + Wood texture. + + + The texture generator creates textures with effect of + rings on trunk's shear. The property allows to specify the + desired amount of wood rings. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + WoodTexture textureGenerator = new WoodTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Wood rings amount. + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Wood rings amount, ≥ 3. + + + The property sets the amount of wood rings, which make effect of + rings on trunk's shear. + + Default value is set to 12. + + + + + Image in unmanaged memory. + + + + The class represents wrapper of an image in unmanaged memory. Using this class + it is possible as to allocate new image in unmanaged memory, as to just wrap provided + pointer to unmanaged memory, where an image is stored. + + Usage of unmanaged images is mostly beneficial when it is required to apply multiple + image processing routines to a single image. In such scenario usage of .NET managed images + usually leads to worse performance, because each routine needs to lock managed image + before image processing is done and then unlock it after image processing is done. Without + these lock/unlock there is no way to get direct access to managed image's data, which means + there is no way to do fast image processing. So, usage of managed images lead to overhead, which + is caused by locks/unlock. Unmanaged images are represented internally using unmanaged memory + buffer. This means that it is not required to do any locks/unlocks in order to get access to image + data (no overhead). + + Sample usage: + + // sample 1 - wrapping .NET image into unmanaged without + // making extra copy of image in memory + BitmapData imageData = image.LockBits( + new Rectangle( 0, 0, image.Width, image.Height ), + ImageLockMode.ReadWrite, image.PixelFormat ); + + try + { + UnmanagedImage unmanagedImage = new UnmanagedImage( imageData ) ); + // apply several routines to the unmanaged image + } + finally + { + image.UnlockBits( imageData ); + } + + + // sample 2 - converting .NET image into unmanaged + UnmanagedImage unmanagedImage = UnmanagedImage.FromManagedImage( image ); + // apply several routines to the unmanaged image + ... + // conver to managed image if it is required to display it at some point of time + Bitmap managedImage = unmanagedImage.ToManagedImage( ); + + + + + + + Initializes a new instance of the class. + + + Pointer to image data in unmanaged memory. + Image width in pixels. + Image height in pixels. + Image stride (line size in bytes). + Image pixel format. + + Using this constructor, make sure all specified image attributes are correct + and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + this may lead to exceptions working with the unmanaged memory. + + + + + Initializes a new instance of the class. + + + Locked bitmap data. + + Unlike method, this constructor does not make + copy of managed image. This means that managed image must stay locked for the time of using the instance + of unamanged image. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + Frees unmanaged resources used by the object. The object becomes unusable + after that. + + The method needs to be called only in the case if unmanaged image was allocated + using method. In the case if the class instance was created using constructor, + this method does not free unmanaged memory. + + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Clone the unmanaged images. + + + Returns clone of the unmanaged image. + + The method does complete cloning of the object. + + + + + Copy unmanaged image. + + + Destination image to copy this image to. + + The method copies current unmanaged image to the specified image. + Size and pixel format of the destination image must be exactly the same. + + Destination image has different size or pixel format. + + + + + Allocate new image in unmanaged memory. + + + Image width. + Image height. + Image pixel format. + + Return image allocated in unmanaged memory. + + Allocate new image with specified attributes in unmanaged memory. + + The method supports only + Format8bppIndexed, + Format16bppGrayScale, + Format24bppRgb, + Format32bppRgb, + Format32bppArgb, + Format32bppPArgb, + Format48bppRgb, + Format64bppArgb and + Format64bppPArgb pixel formats. + In the case if Format8bppIndexed + format is specified, pallete is not not created for the image (supposed that it is + 8 bpp grayscale image). + + + + Unsupported pixel format was specified. + Invalid image size was specified. + + + + + Create managed image from the unmanaged. + + + Returns managed copy of the unmanaged image. + + The method creates a managed copy of the unmanaged image with the + same size and pixel format (it calls specifying + for the makeCopy parameter). + + + + + Create managed image from the unmanaged. + + + Make a copy of the unmanaged image or not. + + Returns managed copy of the unmanaged image. + + If the is set to , then the method + creates a managed copy of the unmanaged image, so the managed image stays valid even when the unmanaged + image gets disposed. However, setting this parameter to creates a managed image which is + just a wrapper around the unmanaged image. So if unmanaged image is disposed, the + managed image becomes no longer valid and accessing it will generate an exception. + + The unmanaged image has some invalid properties, which results + in failure of converting it to managed image. This may happen if user used the + constructor specifying some + invalid parameters. + + + + + Create unmanaged image from the specified managed image. + + + Source managed image. + + Returns new unmanaged image, which is a copy of source managed image. + + The method creates an exact copy of specified managed image, but allocated + in unmanaged memory. + + Unsupported pixel format of source image. + + + + + Create unmanaged image from the specified managed image. + + + Source locked image data. + + Returns new unmanaged image, which is a copy of source managed image. + + The method creates an exact copy of specified managed image, but allocated + in unmanaged memory. This means that managed image may be unlocked right after call to this + method. + + Unsupported pixel format of source image. + + + + + Collect pixel values from the specified list of coordinates. + + + List of coordinates to collect pixels' value from. + + Returns array of pixels' values from the specified coordinates. + + The method goes through the specified list of points and for each point retrievs + corresponding pixel's value from the unmanaged image. + + For grayscale image the output array has the same length as number of points in the + specified list of points. For color image the output array has triple length, containing pixels' + values in RGB order. + + The method does not make any checks for valid coordinates and leaves this up to user. + If specified coordinates are out of image's bounds, the result is not predictable (crash in most cases). + + + This method is supposed for images with 8 bpp channels only (8 bpp grayscale image and + 24/32 bpp color images). + + + Unsupported pixel format of the source image. Use Collect16bppPixelValues() method for + images with 16 bpp channels. + + + + + Collect coordinates of none black pixels in the image. + + + Returns list of points, which have other than black color. + + + + + Collect coordinates of none black pixels within specified rectangle of the image. + + + Image's rectangle to process. + + Returns list of points, which have other than black color. + + + + + Set pixels with the specified coordinates to the specified color. + + + List of points to set color for. + Color to set for the specified points. + + For images having 16 bpp per color plane, the method extends the specified color + value to 16 bit by multiplying it by 256. + + + + + Set pixel with the specified coordinates to the specified color. + + + Point's coordiates to set color for. + Color to set for the pixel. + + See for more information. + + + + + Set pixel with the specified coordinates to the specified color. + + + X coordinate of the pixel to set. + Y coordinate of the pixel to set. + Color to set for the pixel. + + For images having 16 bpp per color plane, the method extends the specified color + value to 16 bit by multiplying it by 256. + + For grayscale images this method will calculate intensity value based on the below formula: + + 0.2125 * Red + 0.7154 * Green + 0.0721 * Blue + + + + + + + + Set pixel with the specified coordinates to the specified value. + + + X coordinate of the pixel to set. + Y coordinate of the pixel to set. + Pixel value to set. + + The method sets all color components of the pixel to the specified value. + If it is a grayscale image, then pixel's intensity is set to the specified value. + If it is a color image, then pixel's R/G/B components are set to the same specified value + (if an image has alpha channel, then it is set to maximum value - 255 or 65535). + + For images having 16 bpp per color plane, the method extends the specified color + value to 16 bit by multiplying it by 256. + + + + + + Get color of the pixel with the specified coordinates. + + + Point's coordiates to get color of. + + Return pixel's color at the specified coordinates. + + See for more information. + + + + + Get color of the pixel with the specified coordinates. + + + X coordinate of the pixel to get. + Y coordinate of the pixel to get. + + Return pixel's color at the specified coordinates. + + + In the case if the image has 8 bpp grayscale format, the method will return a color with + all R/G/B components set to same value, which is grayscale intensity. + + The method supports only 8 bpp grayscale images and 24/32 bpp color images so far. + + + The specified pixel coordinate is out of image's bounds. + Pixel format of this image is not supported by the method. + + + + + Collect pixel values from the specified list of coordinates. + + + List of coordinates to collect pixels' value from. + + Returns array of pixels' values from the specified coordinates. + + The method goes through the specified list of points and for each point retrievs + corresponding pixel's value from the unmanaged image. + + For grayscale image the output array has the same length as number of points in the + specified list of points. For color image the output array has triple length, containing pixels' + values in RGB order. + + The method does not make any checks for valid coordinates and leaves this up to user. + If specified coordinates are out of image's bounds, the result is not predictable (crash in most cases). + + + This method is supposed for images with 16 bpp channels only (16 bpp grayscale image and + 48/64 bpp color images). + + + Unsupported pixel format of the source image. Use Collect8bppPixelValues() method for + images with 8 bpp channels. + + + + + Pointer to image data in unmanaged memory. + + + + + Image width in pixels. + + + + + Image height in pixels. + + + + + Image stride (line size in bytes). + + + + + Image pixel format. + + + + + Vertical intensity statistics. + + + The class provides information about vertical distribution + of pixel intensities, which may be used to locate objects, their centers, etc. + + + The class accepts grayscale (8 bpp indexed and 16 bpp) and color (24, 32, 48 and 64 bpp) images. + In the case of 32 and 64 bpp color images, the alpha channel is not processed - statistics is not + gathered for this channel. + + Sample usage: + + // collect statistics + VerticalIntensityStatistics vis = new VerticalIntensityStatistics( sourceImage ); + // get gray histogram (for grayscale image) + Histogram histogram = vis.Gray; + // output some histogram's information + System.Diagnostics.Debug.WriteLine( "Mean = " + histogram.Mean ); + System.Diagnostics.Debug.WriteLine( "Min = " + histogram.Min ); + System.Diagnostics.Debug.WriteLine( "Max = " + histogram.Max ); + + + Sample grayscale image with its vertical intensity histogram: + + + + + + + + + Initializes a new instance of the class. + + + Source image. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source image data. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Gather vertical intensity statistics for specified image. + + + Source image. + + + + + Histogram for red channel. + + + + + + Histogram for green channel. + + + + + + Histogram for blue channel. + + + + + + Histogram for gray channel (intensities). + + + + + + Value wich specifies if the processed image was color or grayscale. + + + If the property equals to true, then the + property should be used to retrieve histogram for the processed grayscale image. + Otherwise , and property + should be used to retrieve histogram for particular RGB channel of the processed + color image. + + + + + Bag of Visual Words + + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + This class uses the + SURF features detector to determine a coded representation + for a given image. + + + It is also possible to use other feature detectors with this + class. For this, please refer to + for more details and examples. + + + + + The following example shows how to create and use a BoW with + default parameters. + + + int numberOfWords = 32; + + // Create bag-of-words (BoW) with the given number of words + BagOfVisualWords bow = new BagOfVisualWords(numberOfWords); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + By default, the BoW uses K-Means to cluster feature vectors. The next + example demonstrates how to use a different clustering algorithm when + computing the BoW. The example will be given using the + Binary Split clustering algorithm. + + + int numberOfWords = 32; + + // Create an alternative clustering algorithm + BinarySplit binarySplit = new BinarySplit(numberOfWords); + + // Create bag-of-words (BoW) with the clustering algorithm + BagOfVisualWords bow = new BagOfVisualWords(binarySplit); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + + + + + + Bag of Visual Words + + + + The type to be used with this class, + such as . + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + This class can uses any feature + detector to determine a coded representation for a given image. + + + For a simpler, non-generic version of the Bag-of-Words model which + defaults to the SURF + features detector, please see + + + + + + The following example shows how to use a BoW model with the + . + + + int numberOfWords = 32; + + // Create bag-of-words (BoW) with the given SURF detector + var bow = new BagOfVisualWords<SpeededUpRobustFeaturePoint>( + new SpeededUpRobustFeaturesDetector(), numberOfWords); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + The following example shows how to create a BoW which works with any + of corner detector, such as : + + + int numberOfWords = 16; + + // Create a Harris corners detector + var harris = new HarrisCornersDetector(); + + // Create an adapter to convert corners to visual features + CornerFeaturesDetector detector = new CornerFeaturesDetector(harris); + + // Create a bag-of-words (BoW) with the corners detector and number of words + var bow = new BagOfVisualWords<CornerFeaturePoint>(detector, numberOfWords); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + + + + + + + + + + Bag of Visual Words + + + + The type to be used with this class, + such as . + + The feature type of the , such + as . + + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + This class can uses any feature + detector to determine a coded representation for a given image. + + + This is the most generic version for the BoW model, which can accept any + choice of for any kind of point, + even non-numeric ones. This class can also support any clustering algorithm + as well. + + + + + In this example, we will create a Bag-of-Words to operate on byte[] vectors, + which otherwise wouldn't be supported by the simpler BoW version. Those byte vectors + are composed of binary features detected by a . + In order to cluster those features, we will be using a + algorithm with a matching template argument to make all constructors happy: + + + // Create a new FAST Corners Detector + FastCornersDetector fast = new FastCornersDetector(); + + // Create a Fast Retina Keypoint (FREAK) detector using FAST + FastRetinaKeypointDetector freak = new FastRetinaKeypointDetector(fast); + + // Create a K-Modes clustering algorithm which can operate on byte[] + var kmodes = new KModes<byte[]>(numberOfWords, Distance.BitwiseHamming); + + // Finally, create bag-of-words (BoW) with the given number of words + var bow = new BagOfVisualWords<FastRetinaKeypoint, byte[]>(freak, kmodes); + + // Create the BoW codebook using a set of training images + bow.Compute(images); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + + + + Constructs a new . + + + The feature detector to use. + The clustering algorithm to use. + + + + + Computes the Bag of Words model. + + + The set of images to initialize the model. + Convergence rate for the k-means algorithm. Default is 1e-5. + + The list of feature points detected in all images. + + + + + Gets the codeword representation of a given image. + + + The image to be processed. + + A double vector with the same length as words + in the code book. + + + + + Gets the codeword representation of a given image. + + + The image to be processed. + + A double vector with the same length as words + in the code book. + + + + + Gets the codeword representation of a given image. + + + The interest points of the image. + + A double vector with the same length as words + in the code book. + + + + + Saves the bag of words to a stream. + + + The stream to which the bow is to be serialized. + + + + + Saves the bag of words to a file. + + + The path to the file to which the bow is to be serialized. + + + + + Gets the number of words in this codebook. + + + + + + Gets the clustering algorithm used to create this model. + + + + + + Gets the SURF + feature point detector used to identify visual features in images. + + + + + + Constructs a new . + + + The feature detector to use. + The number of codewords. + + + + + Constructs a new . + + + The feature detector to use. + The clustering algorithm to use. + + + + + Constructs a new using a + surf + feature detector to identify features. + + + The number of codewords. + + + + + Constructs a new using a + surf + feature detector to identify features. + + + The clustering algorithm to use. + + + + + Loads a bag of words from a stream. + + + The stream from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a file. + + + The path to the file from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a stream. + + + The stream from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a file. + + + The path to the file from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a stream. + + + The stream from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a file. + + + The path to the file from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Gets the SURF + feature point detector used to identify visual features in images. + + + + + + Border following algorithm for contour extraction. + + + + + // Create a new border following algorithm + BorderFollowing bf = new BorderFollowing(); + + // Get all points in the contour of the image. + List<IntPoint> contour = bf.FindContour(grayscaleImage); + + // Mark all points in the contour point list in blue + new PointsMarker(contour, Color.Blue).ApplyInPlace(image); + + // Show the result + ImageBox.Show(image); + + + + The resulting image is shown below. + + + + + + + + + Common interface for contour extraction algorithm. + + + + + + Extracts the contour from a single object in a grayscale image. + + A grayscale image. + A list of s defining a contour. + + + + + Extracts the contour from a single object in a grayscale image. + + A grayscale image. + A list of s defining a contour. + + + + + Extracts the contour from a single object in a grayscale image. + + A grayscale image. + A list of s defining a contour. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The pixel value threshold above which a pixel + is considered black (belonging to the object). Default is zero. + + + + + Extracts the contour from a single object in a grayscale image. + + + A grayscale image. + A list of s defining a contour. + + + + + Extracts the contour from a single object in a grayscale image. + + + A grayscale image. + + + A list of s defining a contour. + + + + + + Extracts the contour from a single object in a grayscale image. + + + A grayscale image. + A list of s defining a contour. + + + + + Gets or sets the pixel value threshold above which a pixel + is considered white (belonging to the object). Default is zero. + + + + + + Contains classes and methods to convert between different image representations, + such as between common images, numeric matrices and arrays. + + + + + The image converters are able to convert to and from images defined as byte, + double and float multi-dimensional matrices, jagged matrices, and even + images represented as flat arrays. It is also possible to convert images defined as + series of individual pixel colors into s, and back from those + s into any of the aforementioned representations. Support for + AForge.NET's UnmanagedImage is also available. + + + + The namespace class diagram is shown below. + + + + + + + Jagged array to Bitmap converter. + + + + + This class can convert double and float arrays to either Grayscale + or color Bitmap images. Color images should be represented as an + array of pixel values for the final image. The actual dimensions + of the image should be specified in the class constructor. + + + When this class is converting from or + , the values of the + and properties are ignored and no scaling operation + is performed. + + + + + This example converts a single array of double-precision floating- + point numbers with values from 0 to 1 into a grayscale image. + + + // Create an array representation + // of a 4x4 image with a inner 2x2 + // square drawn in the middle + + double[] pixels = + { + 0, 0, 0, 0, + 0, 1, 1, 0, + 0, 1, 1, 0, + 0, 0, 0, 0, + }; + + // Create the converter to create a Bitmap from the array + ArrayToImage conv = new ArrayToImage(width: 4, height: 4); + + // Declare an image and store the pixels on it + Bitmap image; conv.Convert(pixels, out image); + + // Show the image on screen + image = new ResizeNearestNeighbor(320, 320).Apply(image); + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + + + The resulting image is shown below. + + + + + + + + + Public interface for image converter algorithms. + + + Input image type. + Output image type. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Initializes a new instance of the class. + + + The width of the image to be created. + The height of the image to be created. + + + + + Initializes a new instance of the class. + + + The width of the image to be created. + The height of the image to be created. + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties are ignored. The + resulting image from upon calling this method will always be 32-bit ARGB. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the height of the image + stored in the double array. + + + + + + Gets or sets the width of the image + stored in the double array. + + + + + + Multidimensional array to Bitmap converter. + + + + This class can convert double and float multidimensional arrays + (matrices) to Grayscale bitmaps. The color representation of the + values contained in the matrices must be specified through the + Min and Max properties of the class or class constructor. + + + + + This example converts a multidimensional array of double-precision + floating-point numbers with values from 0 to 1 into a grayscale image. + + + // Create a matrix representation + // of a 4x4 image with a inner 2x2 + // square drawn in the middle + + double[,] pixels = + { + { 0, 0, 0, 0 }, + { 0, 1, 1, 0 }, + { 0, 1, 1, 0 }, + { 0, 0, 0, 0 }, + }; + + // Create the converter to convert the matrix to a image + MatrixToImage conv = new MatrixToImage(min: 0, max: 1); + + // Declare an image and store the pixels on it + Bitmap image; conv.Convert(pixels, out image); + + // Show the image on screen + image = new ResizeNearestNeighbor(320, 320).Apply(image); + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + + + The resulting image is shown below. + + + + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Initializes a new instance of the class. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the desired output format of the image. + + + + + + Bitmap to jagged array converter. + + + + This class converts images to single or jagged arrays of + either double-precision or single-precision floating-point + values. + + + + + This example converts a 16x16 Bitmap image into + a double[] array with values between 0 and 1. + + + // Obtain a 16x16 bitmap image + // Bitmap image = ... + + // Show on screen + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + // Create the converter to convert the image to an + // array containing only values between 0 and 1 + ImageToArray conv = new ImageToArray(min: 0, max: 1); + + // Convert the image and store it in the array + double[] array; conv.Convert(image, out array); + + // Show the array on screen + ImageBox.Show(array, 16, 16, PictureBoxSizeMode.Zoom); /// + + + The resulting image is shown below. + + + + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + The channel to extract. Default is 0. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the channel to be extracted. + + + + + + Bitmap to multidimensional matrix converter. + + + + This class converts images to multidimensional matrices of + either double-precision or single-precision floating-point + values. + + + + + This example converts a 16x16 Bitmap image into + a double[,] array with values between 0 and 1. + + + // Obtain an image + // Bitmap image = ... + + // Show on screen + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + // Create the converter to convert the image to a + // matrix containing only values between 0 and 1 + ImageToMatrix conv = new ImageToMatrix(min: 0, max: 1); + + // Convert the image and store it in the matrix + double[,] matrix; conv.Convert(image, out matrix); + + // Show the matrix on screen as an image + ImageBox.Show(matrix, PictureBoxSizeMode.Zoom); + + + The resulting image is shown below. + + + + + Additionally, the image can also be shown in alternative + representations such as text or data tables. + + + + // Show the matrix on screen as a .NET multidimensional array + MessageBox.Show(matrix.ToString(CSharpMatrixFormatProvider.InvariantCulture)); + + // Show the matrix on screen as a table + DataGridBox.Show(matrix, nonBlocking: true) + .SetAutoSizeColumns(DataGridViewAutoSizeColumnsMode.Fill) + .SetAutoSizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders) + .SetDefaultFontSize(5) + .WaitForClose(); + + + + The resulting images are shown below. + + + + + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + The channel to extract. Default is 0. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. When + converting to byte, the and + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. When + converting to byte, the and + are ignored. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the channel to be extracted. + + + + + + Difference of Gaussians filter. + + + + + In imaging science, the difference of Gaussians is a feature + enhancement algorithm that involves the subtraction of one blurred + version of an original image from another, less blurred version of + the original. + + + In the simple case of grayscale images, the blurred images are + obtained by convolving the original grayscale images with Gaussian + kernels having differing standard deviations. Blurring an image using + a Gaussian kernel suppresses only high-frequency spatial information. + Subtracting one image from the other preserves spatial information that + lies between the range of frequencies that are preserved in the two blurred + images. Thus, the difference of Gaussians is a band-pass filter that + discards all but a handful of spatial frequencies that are present in the + original grayscale image. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + Wikipedia contributors. "Difference of Gaussians." Wikipedia, The Free + Encyclopedia. Wikipedia, The Free Encyclopedia, 1 Jun. 2013. Web. 10 Feb. + 2014. + + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Difference of Gaussians + var DoG = new DifferenceOfGaussians(); + + // Apply the filter + Bitmap result = DoG.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The first window size. Default is 3 + The second window size. Default is 4. + + + + + Initializes a new instance of the class. + + + The window size for the first Gaussian. Default is 3 + The window size for the second Gaussian. Default is 4. + + The sigma for the first Gaussian. Default is 0.4. + The sigma for the second Gaussian. Default is 0.4 + + + + + Initializes a new instance of the class. + + + The window size for the first Gaussian. Default is 3 + The window size for the second Gaussian. Default is 4. + + The sigma for both Gaussian filters. Default is 0.4. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Gets or sets the first Gaussian filter. + + + + + + Gets or sets the second Gaussian filter. + + + + + + Gets or sets the subtract filter used to compute + the difference of the two Gaussian blurs. + + + + + + Format translations dictionary. + + + + + + Fast Variance filter. + + + + The Fast Variance filter replaces each pixel in an image by its + neighborhood online variance. This filter differs from the + filter because it uses only a single pass + over the image. + + + + + Bitmap image = ... // Lena's picture + + // Create a new Variance filter: + var variance = new FastVariance(); + + // Compute the filter + Bitmap result = variance.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The radius neighborhood used to compute a pixel's local variance. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the radius of the neighborhood + used to compute a pixel's local variance. + + + + + + Format translations dictionary. + + + + + + High boost filter. + + + + + The High-boost filter can be used to emphasize high frequency + components (i.e. points of contrast) without removing the low + frequency ones. + + + This filter implementation has been contributed by Diego Catalano. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The boost value. Default is 8. + + + + + Initializes a new instance of the class. + + + The boost value. Default is 8. + The kernel size. Default is 3. + + + + + Kernel size, [3, 21]. + + + Size of Gaussian kernel. + + Default value is set to 5. + + + + + + Gets or sets the boost value. Default is 9. + + + + + + RG Chromaticity. + + + + + References: + + + Wikipedia contributors. "rg chromaticity." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Rg_chromaticity + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Sauvola Threshold. + + + + + The Sauvola filter is a variation of the + thresholding filter. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + Sauvola, Jaakko, and Matti Pietikäinen. "Adaptive document image binarization." + Pattern Recognition 33.2 (2000): 225-236. + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Sauvola threshold: + var sauvola = new SauvolaThreshold(); + + // Compute the filter + Bitmap result = sauvola.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the filter convolution + radius. Default is 15. + + + + + + Gets or sets the user-defined + parameter k. Default is 0.5. + + + + + + Gets or sets the dynamic range of the + standard deviation, R. Default is 128. + + + + + + Format translations dictionary. + + + + + + Filter to mark (highlight) lines in a image. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Color used to mark corners. + + + + + Gets or sets the set of points to mark. + + + + + Gets or sets the width of the points to be drawn. + + + + + Niblack Threshold. + + + + + The Niblack filter is a local thresholding algorithm that separates + white and black pixels given the local mean and standard deviation + for the current window. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + W. Niblack, An Introduction to Digital Image Processing, pp. 115-116. + Prentice Hall, 1986. + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Niblack threshold: + var niblack = new NiblackThreshold(); + + // Compute the filter + Bitmap result = niblack.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the filter convolution + radius. Default is 15. + + + + + + Gets or sets the user-defined + parameter k. Default is 0.2. + + + + + + Gets or sets the mean offset C. This value should + be between 0 and 255. The default value is 0. + + + + + + Format translations dictionary. + + + + + + Rotate image using nearest neighbor algorithm. + + + The class implements image rotation filter using nearest + neighbor algorithm, which does not assume any interpolation. + + Rotation is performed in counterclockwise direction. + + The filter accepts 8/16 bpp grayscale images and 24/48 bpp color image + for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateNearestNeighbor filter = new RotateNearestNeighbor( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property to + . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + White Patch filter for color normalization. + + + + + Bitmap image = ... // Lena's famous picture + + // Create the White Patch filter + var whitePatch = new WhitePatch(); + + // Apply the filter + Bitmap result = grayWorld.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Gray World filter for color normalization. + + + + + The grey world normalization makes the assumption that changes in the + lighting spectrum can be modeled by three constant factors applied to + the red, green and blue channels of color[2]. More specifically, a change + in illuminated color can be modeled as a scaling α, β and γ in the R, + G and B color channels and as such the grey world algorithm is invariant + to illumination color variations. + + + References: + + + Wikipedia Contributors, "Color normalization". Available at + http://en.wikipedia.org/wiki/Color_normalization + + Jose M. Buenaposada; Luis Baumela. Variations of Grey World for + face tracking (Report). + + + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Gray World filter + var grayWorld = new GrayWorld(); + + // Apply the filter + Bitmap result = grayWorld.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Kuwahara filter. + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Kuwahara filter + Kuwahara kuwahara = new Kuwahara(); + + // Apply the Kuwahara filter + Bitmap result = kuwahara.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Gets the size of the kernel used in the Kuwahara filter. This + should be odd and greater than or equal to five. Default is 5. + + + + + + Gets the size of each of the four inner blocks used in the + Kuwahara filter. This is always half the + kernel size minus one. + + + + The size of the each inner block, or k / 2 - 1 + where k is the kernel size. + + + + + + Format translations dictionary. + + + + + + Wolf Jolion Threshold. + + + + + The Wolf-Jolion threshold filter is a variation + of the filter. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + + C. Wolf, J.M. Jolion, F. Chassaing. "Text Localization, Enhancement and + Binarization in Multimedia Documents." Proceedings of the 16th International + Conference on Pattern Recognition, 2002. + Available in http://liris.cnrs.fr/christian.wolf/papers/icpr2002v.pdf + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Wolf-Joulion threshold: + var wolfJoulion = new WolfJoulionThreshold(); + + // Compute the filter + Bitmap result = wolfJoulion.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the filter convolution + radius. Default is 15. + + + + + + Gets or sets the user-defined + parameter k. Default is 0.5. + + + + + + Gets or sets the dynamic range of the + standard deviation, R. Default is 128. + + + + + + Format translations dictionary. + + + + + + Common interface for feature descriptors. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Standard feature descriptor for feature vectors. + + + + + + Initializes a new instance of the structure. + + + The feature vector. + + + + + Performs an implicit conversion from + to . + + + The value to be converted. + + + The result of the conversion. + + + + + + Performs a conversion from + to . + + + + + + Performs an implicit conversion from + to . + + + The value to be converted. + + + The result of the conversion. + + + + + + Performs a conversion from + to . + + + + + + Performs a conversion from + to . + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Standard feature descriptor for generic feature vectors. + + + The type of feature vector, such as . + + + + + Initializes a new instance of the struct. + + + The feature vector. + + + + + Performs an implicit conversion from + to . + + + The value to be converted. + + + The result of the conversion. + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Nearest neighbor feature point matching algorithm. + + + + + This class matches feature points using a + k-Nearest Neighbors algorithm. + + + + + + + + + Constructs a new + K-Nearest Neighbors matching algorithm. + + + The number of neighbors to use when matching points. + The distance function to consider between points. + + + + + Matches two sets of feature points. + + + + + + Matches two sets of feature points. + + + + + + Creates a nearest neighbor algorithm with the feature points as + inputs and their respective indices a the corresponding output. + + + + + + Gets or sets the number k of nearest neighbors. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets a minimum relevance threshold + used to find matching pairs. Default is 0. + + + + + + Objective Fidelity Criteria. + + + + + References: + + + H.T. Yalazan, J.D. Yucel. "A new objective fidelity criterion + for image processing." Proceedings of the 16th International + Conference on Pattern Recognition, 2002. + + + + + + Bitmap ori = ... // Original picture + Bitmap recon = ... // Reconstructed picture + + // Create a new Objective fidelity comparer: + var of = new ObjectiveFidelity(ori, recon); + + // Get the results + long errorTotal = of.ErrorTotal; + double msr = of.MeanSquareError; + double snr = of.SignalToNoiseRatio; + double psnr = of.PeakSignalToNoiseRatio; + double dsnr = of.DerivativeSignalNoiseRatio; + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The first image to be compared. + The second image that will be compared. + + + + + Initializes a new instance of the class. + + + The first image to be compared. + The second image that will be compared. + + + + + Initializes a new instance of the class. + + + The first image to be compared. + The second image that will be compared. + + + + + Compute objective fidelity metrics. + + + The first image to be compared. + The second image that will be compared. + + + + + Compute objective fidelity metrics. + + + The first image to be compared. + The second image that will be compared. + + + + + Compute objective fidelity metrics. + + + The first image to be compared. + The second image that will be compared. + + + + + Gets the total error between the two images. + + + + + + Gets the average error between the two images. + + + + + + Gets the root mean square error between the two images. + + + + + + Gets the signal to noise ratio. + + + + + + Gets the peak signal to noise ratio. + + + + + + Gets the derivative signal to noise ratio. + + + + + + Gets the level used in peak signal to noise ratio. + + + + + + Static tool functions for imaging. + + + + + + Computes the sum of all pixels + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + + The sum of all pixels within the region. + + + + + Computes the mean pixel value + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + + The mean pixel value within the region. + + + + + Computes the pixel scatter + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + The region pixel mean. + + The scatter value within the region. + + + + + Computes the pixel variance + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + The region pixel mean. + + The variance value within the region. + + + + + Compass convolution filter. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + Exponential filter. + + + + Simple exp image filter. Applies the + function for each pixel in the image, clipping values as needed. + The resultant image can be converted back using the + filter. + + + + + Bitmap input = ... + + // Apply log + Logarithm log = new Logarithm(); + Bitmap output = log.Apply(input); + + // Revert log + Exponential exp = new Exponential(); + Bitmap reconstruction = exp.Apply(output); + + // Show results on screen + ImageBox.Show("input", input); + ImageBox.Show("output", output); + ImageBox.Show("reconstruction", reconstruction); + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Log filter. + + + + Simple log image filter. Applies the + function for each pixel in the image, clipping values as needed. + The resultant image can be converted back using the + filter. + + + + + Bitmap input = ... + + // Apply log + Logarithm log = new Logarithm(); + Bitmap output = log.Apply(input); + + // Revert log + Exponential exp = new Exponential(); + Bitmap reconstruction = exp.Apply(output); + + // Show results on screen + ImageBox.Show("input", input); + ImageBox.Show("output", output); + ImageBox.Show("reconstruction", reconstruction); + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Robinson's Edge Detector + + + + + Robinson's edge detector is a variation of + Kirsch's detector using different convolution masks. Both are examples + of compass convolution filters. + + + + + Bitmap image = ... // Lena's picture + + // Create a new Robinson's edge detector: + var robinson = new RobinsonEdgeDetector(); + + // Compute the image edges + Bitmap edges = robinson.Apply(image); + + // Show on screen + ImageBox.Show(edges); + + + + The resulting image is shown below: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets the North direction Robinson kernel mask. + + + + + + Gets the Northwest direction Robinson kernel mask. + + + + + + Gets the West direction Robinson kernel mask. + + + + + + Gets the Southwest direction Robinson kernel mask. + + + + + + Gets the South direction Robinson kernel mask. + + + + + + Gets the Southeast direction Robinson kernel mask. + + + + + + Gets the East direction Robinson kernel mask. + + + + + + Gets the Northeast direction Robinson kernel mask. + + + + + + Format translations dictionary. + + + + + + Gabor filter. + + + + + In image processing, a Gabor filter, named after Dennis Gabor, is a linear + filter used for edge detection. Frequency and orientation representations + of Gabor filters are similar to those of the human visual system, and they + have been found to be particularly appropriate for texture representation + and discrimination. In the spatial domain, a 2D Gabor filter is a Gaussian + kernel function modulated by a sinusoidal plane wave. The Gabor filters are + self-similar: all filters can be generated from one mother wavelet by dilation + and rotation. + + + + References: + + + Wikipedia Contributors, "Gabor filter". Available at + http://en.wikipedia.org/wiki/Gabor_filter + + + + + + The following example applies a Gabor filter to detect lines + at a 45 degrees from the following image: + + + + + Bitmap input = ...; + + // Create a new Gabor filter + GaborFilter filter = new GaborFilter(); + + // Apply the filter + Bitmap output = filter.Apply(input); + + // Show the output + ImageBox.Show(output); + + + + The resulting image is shown below. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the size of the filter. Default is 3. + + + + + + Gets or sets the Gaussian variance for the filter. Default is 2. + + + + + + Gets or sets the orientation for the filter, in radians. Default is 0.6. + + + + + + Gets or sets the wavelength for the filter. Default is 4.0. + + + + + + Gets or sets the aspect ratio for the filter. Default is 0.3. + + + + + + Gets or sets the phase offset for the filter. Default is 1.0. + + + + + + Format translations dictionary. + + + + + + Kirsch's Edge Detector + + + + + The Kirsch operator or Kirsch compass kernel + is a non-linear edge detector that finds the maximum edge strength in a few + predetermined directions. It is named after the computer scientist Russell + A. Kirsch. + + + References: + + + Wikipedia contributors. "Kirsch operator." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Kirsch_operator + + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Kirsch's edge detector: + var kirsch = new KirschEdgeDetector(); + + // Compute the image edges + Bitmap edges = kirsch.Apply(image); + + // Show on screen + ImageBox.Show(edges); + + + + The resulting image is shown below: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets the North direction Kirsch kernel mask. + + + + + + Gets the Northwest direction Kirsch kernel mask. + + + + + + Gets the West direction Kirsch kernel mask. + + + + + + Gets the Southwest direction Kirsch kernel mask. + + + + + + Gets the South direction Kirsch kernel mask. + + + + + + Gets the Southeast direction Kirsch kernel mask. + + + + + + Gets the East direction Kirsch kernel mask. + + + + + + Gets the Northeast direction Kirsch kernel mask. + + + + + + Format translations dictionary. + + + + + + Variance filter. + + + + The Variance filter replaces each pixel in an image by its + neighborhood variance. The end result can be regarded as an + border enhancement, making the Variance filter suitable to + be used as an edge detection mechanism. + + + + + Bitmap image = ... // Lena's picture + + // Create a new Variance filter: + var variance = new Variance(); + + // Compute the filter + Bitmap result = variance.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The radius neighborhood used to compute a pixel's local variance. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the radius of the neighborhood + used to compute a pixel's local variance. + + + + + + Format translations dictionary. + + + + + + Co-occurrence Degree. + + + + + + Find co-occurrences at 0° degrees. + + + + + + Find co-occurrences at 45° degrees. + + + + + + Find co-occurrences at 90° degrees. + + + + + + Find co-occurrences at 135° degrees. + + + + + + Gray-Level Co-occurrence Matrix (GLCM). + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The distance at which the texture should be analyzed. + + + + + Initializes a new instance of the class. + + + The distance at which the texture should be analyzed. + The direction to look for co-occurrences. + + + + + Initializes a new instance of the class. + + + The distance at which the texture should be analyzed. + The direction to look for co-occurrences. + Whether the maximum value of gray should be + automatically computed from the image. Default is true. + Whether the produced GLCM should be normalized, + dividing each element by the number of pairs. Default is true. + + + + + Computes the Gray-level Co-occurrence Matrix (GLCM) + for the given source image. + + + The source image. + + A square matrix of double-precision values containing + the GLCM for the given . + + + + + Computes the Gray-level Co-occurrence Matrix for the given matrix. + + + The source image. + A region of the source image where + the GLCM should be computed for. + + A square matrix of double-precision values containing the GLCM for the + of the given . + + + + + Gets or sets whether the maximum value of gray should be + automatically computed from the image. If set to false, + the maximum gray value will be assumed 255. + + + + + + Gets or sets whether the produced GLCM should be normalized, + dividing each element by the number of pairs. Default is true. + + + + true if the GLCM should be normalized; otherwise, false. + + + + + + Gets or sets the direction at which the co-occurrence should be found. + + + + + + Gets or sets the distance at which the + texture should be analyzed. Default is 1. + + + + + + Gets the number of pairs registered during the + last computed GLCM. + + + + + + Gray-Level Difference Method (GLDM). + + + + Computes an gray-level histogram of difference + values between adjacent pixels in an image. + + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + Whether the maximum value of gray should be + automatically computed from the image. Default is true. + + + + + Computes the Gray-level Difference Method (GLDM) + Histogram for the given source image. + + + The source image. + + An histogram containing co-occurrences + for every gray level in . + + + + + Gets or sets whether the maximum value of gray should be + automatically computed from the image. If set to false, + the maximum gray value will be assumed 255. + + + + + + Gets or sets the direction at which the co-occurrence should be found. + + + + + + Gray-Level Run-Length Matrix. + + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + Whether the maximum value of gray should be + automatically computed from the image. Default is true. + + + + + Computes the Gray-level Run-length for the given image source. + + + The source image. + + An array of run-length vectors containing level counts + for every width pixel in . + + + + + Gets or sets whether the maximum value of gray should be + automatically computed from the image. If set to false, + the maximum gray value will be assumed 255. + + + + + + Gets or sets the direction at which the co-occurrence should be found. + + + + + + Gets the number of primitives found in the last + call to . + + + + + + Common interface for feature points. + + + + + + Common interface for feature points. + + + + + + Gets or sets the x-coordinate of this point. + + + + + + Gets or sets the y-coordinate of this point. + + + + + + 's operation modes. + + + + + + Features will be combined using + . + + + + + + Features will be combined using + . + + + + + + Features will be combined using + . + + + + + + Features will be combined using + . + + + + + + Haralick textural feature extractor. + + + + + + Common interface for feature detectors. + + + + + + Common interface for feature detectors. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Initializes a new instance of the class. + + + + The angulation degrees on which the Haralick's + features should be computed. Default is to use all directions. + + + + + Initializes a new instance of the class. + + + + The size of a computing cell, measured in pixels. + Default is 0 (use whole image at once). + + Whether to normalize generated + histograms. Default is false. + + + + + Initializes a new instance of the class. + + + + The size of a computing cell, measured in pixels. + Default is 0 (use whole image at once). + + Whether to normalize generated + histograms. Default is true. + + The angulation degrees on which the Haralick's + features should be computed. Default is to use all directions. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found features points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the size of a cell, in pixels. + + + + + + Gets the s which should + be computed by this Haralick textural feature extractor. + Default is . + + + + + + Gets or sets the mode of operation of this + Haralick's textural + feature extractor. + + + + The mode determines how the different features captured + by the are combined. + + + + A value from the enumeration + specifying how the different features should be combined. + + + + + + Gets or sets the number of features to extract using + the . By default, only + the first 13 original Haralick's features will be used. + + + + + + Gets the set of local binary patterns computed for each + cell in the last call to . + + + + + + Gets the Gray-level + Co-occurrence Matrix (GLCM) generated during the last + call to . + + + + + + Gets or sets whether to normalize final + histogram feature vectors. Default is false. + + + + + + Haralick's Texture Features. + + + + + Haralick's texture features are based on measures derived from + Gray-level Co-occurrence + matrices (GLCM). + + Whether considering the intensity or grayscale values of the image + or various dimensions of color, the co-occurrence matrix can measure + the texture of the image. Because co-occurrence matrices are typically + large and sparse, various metrics of the matrix are often taken to get + a more useful set of features. Features generated using this technique + are usually called Haralick features, after R. M. Haralick, attributed to + his paper Textural features for image classification (1973). + + + This class encompasses most of the features derived on Haralick's original + paper. All features are lazy-evaluated until needed; but may also be + combined in a single feature vector by calling . + + + References: + + + Wikipedia Contributors, "Co-occurrence matrix". Available at + http://en.wikipedia.org/wiki/Co-occurrence_matrix + + Robert M Haralick, K Shanmugam, Its'hak Dinstein; "Textural + Features for Image Classification". IEEE Transactions on Systems, Man, + and Cybernetics. SMC-3 (6): 610–621, 1973. Available at: + + http://www.makseq.com/materials/lib/Articles-Books/Filters/Texture/Co-occurrence/haralick73.pdf + + + + + + + + + + + Initializes a new instance of the class. + + + The co-occurrence matrix to compute features from. + + + + + Creates a feature vector with + the chosen feature functions. + + + How many features to include in the vector. Default is 13. + + A vector with Haralick's features up + to the given number passed as input. + + + + + Gets the number of gray levels in the + original image. This is the number of + dimensions of the co-occurrence matrix. + + + + + + Gets the matrix sum. + + + + + + Gets the matrix mean μ. + + + + + + Gets the marginal probability vector + obtained by summing the rows of p(i,j), + given as px(i) = Σj p(i,j). + + + + + + Gets the marginal probability vector + obtained by summing the columns of p(i,j), + given as py(j) = Σi p(i,j). + + + + + + Gets μx, the mean value of the + vector. + + + + + + Gets μ_y, the mean value of the + vector. + + + + + + Gets σx, the variance of the + vector. + + + + + + Gets σy, the variance of the + vector. + + + + + + Gets Hx, the entropy of the + vector. + + + + + + Gets Hy, the entropy of the + vector. + + + + + + Gets p(x+y)(k), the sum + of elements whose indices sum to k. + + + + + + Gets p(x-y) (k), the sum of elements + whose absolute indices diferences equals to k. + + + + + + Gets Haralick's first textural feature, + the Angular Second Momentum. + + + + + + Gets Haralick's second textural feature, + the Contrast. + + + + + + Gets Haralick's third textural feature, + the Correlation. + + + + + + Gets Haralick's fourth textural feature, + the Sum of Squares: Variance. + + + + + + Gets Haralick's fifth textural feature, + the Inverse Difference Moment. + + + + + + Gets Haralick's sixth textural feature, + the Sum Average. + + + + + + Gets Haralick's seventh textural feature, + the Sum Variance. + + + + + + Gets Haralick's eighth textural feature, + the Sum Entropy. + + + + + + Gets Haralick's ninth textural feature, + the Entropy. + + + + + + Gets Haralick's tenth textural feature, + the Difference Variance. + + + + + + Gets Haralick's eleventh textural feature, + the Difference Entropy. + + + + + + Gets Haralick's twelfth textural feature, + the First Information Measure. + + + + + + Gets Haralick's thirteenth textural feature, + the Second Information Measure. + + + + + + Gets Haralick's fourteenth textural feature, + the Maximal Correlation Coefficient. + + + + + + Gets Haralick's first textural feature, the + Angular Second Momentum, also known as Energy + or Homogeneity. + + + + + + Gets a variation of Haralick's second textural feature, + the Contrast with Absolute values (instead of squares). + + + + + + Gets Haralick's second textural feature, + the Contrast. + + + + + + Gets Haralick's third textural feature, + the Correlation. + + + + + + Gets Haralick's fourth textural feature, + the Sum of Squares: Variance. + + + + + + Gets Haralick's fifth textural feature, the Inverse + Difference Moment, also known as Local Homogeneity. + Can be regarded as a complement to . + + + + + + Gets a variation of Haralick's fifth textural feature, + the Texture Homogeneity. Can be regarded as a complement + to . + + + + + + Gets Haralick's sixth textural feature, + the Sum Average. + + + + + + Gets Haralick's seventh textural feature, + the Sum Variance. + + + + + + Gets Haralick's eighth textural feature, + the Sum Entropy. + + + + + + Gets Haralick's ninth textural feature, + the Entropy. + + + + + + Gets Haralick's tenth textural feature, + the Difference Variance. + + + + + + Gets Haralick's eleventh textural feature, + the Difference Entropy. + + + + + + Gets Haralick's twelfth textural feature, + the First Information Measure. + + + + + + Gets Haralick's thirteenth textural feature, + the Second Information Measure. + + + + + + Gets Haralick's fourteenth textural feature, + the Maximal Correlation Coefficient. + + + + + + Gets the Cluster Shade textural feature. + + + + + + Gets the Cluster Prominence textural feature. + + + + + + Feature dictionary. Associates a set of Haralick features to a given degree + used to compute the originating GLCM. + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the + class with serialized data. + + + A + object containing the information required to serialize this + . + A + structure containing the source and destination of the serialized stream + associated with this . + + + + + Combines features generated from different + GLCMs computed using different angulations + by concatenating them into a single vector. + + + The number of Haralick's original features to compute. + + A single vector containing all values computed from + the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size d * n. All features from different + degrees will be concatenated into this single result vector. + + + + + + Combines features generated from different + GLCMs computed using different angulations + by averaging them into a single vector. + + + The number of Haralick's original features to compute. + + A single vector containing the average of the values + computed from the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size n. All features from different + degrees will be averaged into this single result vector. + + + + + + Combines features generated from different + GLCMs computed using different angulations + by averaging them into a single vector. + + + The number of Haralick's original features to compute. + + A single vector containing the average of the values + computed from the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size 2*n*d. Each even index will have + the average of a given feature, and the subsequent odd index will contain + the range of this feature. + + + + + + Combines features generated from different + GLCMs computed using different angulations + by averaging them into a single vector, normalizing them to be between -1 and 1. + + + The number of Haralick's original features to compute. + + A single vector containing the averaged and normalized values + computed from the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size n. All features will be averaged, and + the mean will be scaled to be in a [-1,1] interval. + + + + + + Local Binary Patterns. + + + + + Local binary patterns (LBP) is a type of feature used for classification + in computer vision. LBP is the particular case of the Texture Spectrum + model proposed in 1990. LBP was first described in 1994. It has since + been found to be a powerful feature for texture classification; it has + further been determined that when LBP is combined with the Histogram of + oriented gradients (HOG) classifier, it improves the detection performance + considerably on some datasets. + + + References: + + + Wikipedia Contributors, "Local Binary Patterns". Available at + http://en.wikipedia.org/wiki/Local_binary_patterns + + + + + + + + Initializes a new instance of the class. + + + + The size of a block, measured in cells. Default is 3. + + The size of a cell, measured in pixels. If set to zero, the entire + image will be used at once, forming a single block. Default is 6. + + Whether to normalize generated histograms. Default is true. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found features points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the size of a cell, in pixels. + + + + + + Gets the size of a block, in pixels. + + + + + + Gets the set of local binary patterns computed for each + pixel in the last call to to . + + + + + + Gets the histogram computed at each cell. + + + + + + Gets or sets whether to normalize final + histogram feature vectors. Default is true. + + + + + + SURF Feature descriptor types. + + + + + + Do not compute descriptors. + + + + + + Compute standard 512-bit descriptors. + + + + + + Compute extended 1024-bit descriptors. + + + + + + Fast Retina Keypoint (FREAK) detector. + + + + The FREAK algorithm is a binary based interest point descriptor algorithm + that relies in another corner + + + + + In the following example, we will see how can we extract binary descriptor + vectors from a given image using the Fast Retina Keypoint Detector together + a FAST corners detection algorithm. + + + Bitmap lena = Resources.lena512; + + // The freak detector can be used with any other corners detection + // algorithm. The default corners detection method used is the FAST + // corners detection. So, let's start creating this detector first: + // + var detector = new FastCornersDetector(60); + + // Now that we have a corners detector, we can pass it to the FREAK + // feature extraction algorithm. Please note that if we leave this + // parameter empty, FAST will be used by default. + // + var freak = new FastRetinaKeypointDetector(detector); + + // Now, all we have to do is to process our image: + List<FastRetinaKeypoint> points = freak.ProcessImage(lena); + + // Afterwards, we should obtain 83 feature points. We can inspect + // the feature points visually using the FeaturesMarker class as + // + FeaturesMarker marker = new FeaturesMarker(points, scale: 20); + + // And showing it on screen with + ImageBox.Show(marker.Apply(lena)); + + // We can also inspect the feature vectors (descriptors) associated + // with each feature point. In order to get a descriptor vector for + // any given point, we can use + // + byte[] feature = points[42].Descriptor; + + // By default, feature vectors will have 64 bytes in length. We can also + // display those vectors in more readable formats such as HEX or base64 + // + string hex = points[42].ToHex(); + string b64 = points[42].ToBase64(); + + // The above base64 result should be: + // + // "3W8M/ev///ffbr/+v3f34vz//7X+f0609v//+++/1+jfq/e83/X5/+6ft3//b4uaPZf7ePb3n/P93/rIbZlf+g==" + // + + + + The resulting image is shown below: + + + + + + + + + + + + + Initializes a new instance of the class. + + + The detection threshold for the + FAST detector. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + A corners detector. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Gets the + feature descriptor for the last processed image. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the corners detector used to generate features. + + + + + + Gets or sets a value indicating whether all feature points + should have their descriptors computed after being detected. + Default is to compute standard descriptors. + + + true if to compute orientation; otherwise, false. + + + + + Gets or sets the number of octaves to use when + building the feature descriptor. Default is 4. + + + + + + Gets or sets the scale used when building + the feature descriptor. Default is 22. + + + + + + Fast Retina Keypoint (FREAK) point. + + + + In order to extract feature points from an image using FREAK, + please take a look on the + documentation page. + + + + + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + + + + + Converts the binary descriptor to + string of hexadecimal values. + + + A string containing an hexadecimal + value representing this point's descriptor. + + + + + Converts the binary descriptor + to a string of binary values. + + + A string containing a binary value + representing this point's descriptor. + + + + + Converts the binary descriptor to base64. + + + A string containing the base64 + representation of the descriptor. + + + + + Converts the feature point to a . + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Gets or sets the x-coordinate of this point. + + + + + + Gets or sets the y-coordinate of this point. + + + + + + Gets or sets the scale of the point. + + + + + + Gets or sets the orientation of this point in angles. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Fast Retina Keypoint (FREAK) descriptor. + + + + + Based on original implementation by A. Alahi, R. Ortiz, and P. + Vandergheynst, distributed under a BSD style license. + + + In order to extract feature points from an image using FREAK, + please take a look on the + documentation page. + + + References: + + + A. Alahi, R. Ortiz, and P. Vandergheynst. FREAK: Fast Retina Keypoint. In IEEE Conference on + Computer Vision and Pattern Recognition, CVPR 2012 Open Source Award Winner. + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Describes the specified point (i.e. computes and + sets the orientation and descriptor vector fields + of the . + + + The point to be described. + + + + + Gets or sets whether the orientation is normalized. + + + + + + Gets or sets whether the scale is normalized. + + + + + + Gets or sets whether to compute the standard 512-bit + descriptors or extended 1024-bit + + + + + + Gets the of + the original source's feature detector. + + + The integral image from where the + features have been detected. + + + + + Gets the of + the original source's feature detector. + + + The integral image from where the + features have been detected. + + + + + Pattern scale resolution. + + + + + Pattern orientation resolution. + + + + + + Number of pattern points. + + + + + + Smallest keypoint size. + + + + + + Look-up table for the pattern points (position + + sigma of all points at all scales and orientation) + + + + + + Histograms of Oriented Gradients [experimental]. + + + + + This class is currently very experimental. Use with care. + + + References: + + + Navneet Dalal and Bill Triggs, "Histograms of Oriented Gradients for Human Detection", + CVPR 2005. Available at: + http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf + + + + + + + Initializes a new instance of the class. + + + The number of histogram bins. + The size of a block, measured in cells. + The size of a cell, measured in pixels. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the size of a cell, in pixels. + + + + + + Gets the size of a block, in pixels. + + + + + + Gets the number of histogram bins. + + + + + + Gets the matrix of orientations generated in + the last call to . + + + + + + Gets the matrix of magnitudes generated in + the last call to . + + + + + + Gets the histogram computed at each cell. + + + + + + Gets or sets whether to normalize final + histogram feature vectors. Default is true. + + + + + + Response filter. + + + + + In SURF, the scale-space is divided into a number of octaves, + where an octave refers to a series of + response maps covering a doubling of scale. + + In the traditional approach to constructing a scale-space, + the image size is varied and the Gaussian filter is repeatedly + applied to smooth subsequent layers. The SURF approach leaves + the original image unchanged and varies only the filter size. + + + + + + Creates the initial map of responses according to + the specified number of octaves and initial step. + + + + + + Updates the response filter definitions + without recreating objects. + + + + + + Computes the filter using the specified + Integral Image. + + + The integral image. + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through this collection. + + + An object that can be used to iterate through the collection. + + + + + + Response Layer. + + + + + + Initializes a new instance of the class. + + + + + + Updates the response layer definitions + without recreating objects. + + + + + + Computes the filter for the specified integral image. + + + The integral image. + + + + + Gets the width of the filter. + + + + + + Gets the height of the filter. + + + + + + Gets the filter step. + + + + + + Gets the filter size. + + + + + + Gets the responses computed from the filter. + + + + + + Gets the Laplacian computed from the filter. + + + + + + Nearest neighbor feature point matching algorithm. + + + + + This class matches feature points using a + k-Nearest Neighbors algorithm. + + + + + + + + + Constructs a new + K-Nearest Neighbors matching algorithm. + + + The number of neighbors to use when matching points. + + + + + Constructs a new + K-Nearest Neighbors matching algorithm. + + + The number of neighbors to use when matching points. + The distance function to consider between points. + + + + + Creates a nearest neighbor algorithm with the feature points as + inputs and their respective indices a the corresponding output. + + + + + + Corner feature point. + + + + + + Initializes a new instance of the class. + + + + + + Gets the X position of the point. + + + + + + Gets the Y position of the point. + + + + + + Gets the descriptor vector + associated with this point. + + + + + + Feature detector based on corners. + + + + This class can be used as an adapter for classes implementing + AForge.NET's ICornersDetector interface, so they can be used + where an is needed. + + + + For an example on how to use this class, please take a look + on the example section for . + + + + + + + + Initializes a new instance of the class. + + + A corners detector. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Gets the corners detector used to generate features. + + + + + + Hu's set of invariant image moments. + + + + + In image processing, computer vision and related fields, an image moment is + a certain particular weighted average (moment) of the image pixels' intensities, + or a function of such moments, usually chosen to have some attractive property + or interpretation. + + + Image moments are useful to describe objects after segmentation. Simple properties + of the image which are found via image moments include area (or total intensity), + its centroid, and information about its orientation. + + + Hu's set of invariant moments are invariant under translation, changes in scale, + and also rotation. The first moment, , is analogous to the moment + of inertia around the image's centroid, where the pixels' intensities are analogous + to physical density. The last one, I7, is skew invariant, which enables it to distinguish + mirror images of otherwise identical images. + + + References: + + + Wikipedia contributors. "Image moment." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Image_moment + + + + + + + Bitmap image = ...; + + // Compute the Hu moments of up to third order + HuMoments hu = new HuMoments(image, order: 3); + + + + + + + + + + Base class for image moments. + + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Gets or sets the maximum order of the moments. + + + + + + Common interface for image moments. + + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum moment order to be computed. + + + + + Initializes a new instance of the class. + + + The maximum moment order to be computed. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Computes the Hu moments from the specified central moments. + + + The central moments to use as base of calculations. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Hu moment of order 1. + + + + + + Hu moment of order 2. + + + + + + Hu moment of order 3. + + + + + + Hu moment of order 4. + + + + + + Hu moment of order 5. + + + + + + Hu moment of order 6. + + + + + + Hu moment of order 7. + + + + + + RANSAC Robust Fundamental Matrix Estimator. + + + + + Fitting a fundamental using RANSAC is pretty straightforward. Being a iterative method, + in a single iteration a random sample of four correspondences is selected from the + given correspondence points and a transformation F is then computed from those points. + + After a given number of iterations, the iteration which produced the largest number + of inliers is then selected as the best estimation for H. + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: + http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Projective/fundmatrix.m + + E. Dubrofsky. Homography Estimation. Master thesis. Available on: + http://www.cs.ubc.ca/~dubroe/courses/MastersEssay.pdf + + + + + + + Creates a new RANSAC homography estimator. + + + Inlier threshold. + Inlier probability. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The fundamental matrix relating x1 and x2. + + + + + Estimates a fundamental matrix with the given points. + + + + + + Compute inliers using the Symmetric Transfer Error, + + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Maximum cross-correlation feature point matching algorithm. + + + + + This class matches feature points by using a maximum cross-correlation measure. + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: + http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Match/matchbycorrelation.m + + + + http://www.instructor.com.br/unesp2006/premiados/PauloHenrique.pdf + + + + http://siddhantahuja.wordpress.com/2010/04/11/correlation-based-similarity-measures-summary/ + + + + + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Constructs the correlation matrix between selected points from two images. + + + + Rows correspond to points from the first image, columns correspond to points + in the second. + + + + + + Gets or sets the maximum distance to consider + points as correlated. + + + + + + Gets or sets the size of the correlation window. + + + + + + Combine channel filter. + + + + + + Constructs a new CombineChannel filter. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + See + for more information. + + + + + + Rectification filter for projective transformation. + + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + + + + + Computes the new image size. + + + + + + Process the image filter. + + + + + + Format translations dictionary. + + + + + + Gets or sets the Homography matrix used to map a image passed to + the filter to the overlay image specified at filter creation. + + + + + + Gets or sets the filling color used to fill blank spaces. + + + + The filling color will only be visible after the image is converted + to 24bpp. The alpha channel will be used internally by the filter. + + + + + + Central image moments. + + + + + In image processing, computer vision and related fields, an image moment is + a certain particular weighted average (moment) of the image pixels' intensities, + or a function of such moments, usually chosen to have some attractive property + or interpretation. + + + Image moments are useful to describe objects after segmentation. Simple properties + of the image which are found via image moments include area (or total intensity), + its centroid, and information about its orientation. + + + The central moments can be used to find the location, center of mass and the + dimensions of a given object within an image. + + + References: + + + Wikipedia contributors. "Image moment." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Image_moment + + + + + + + Bitmap image = ...; + + // Compute the center moments of up to third order + CentralMoments cm = new CentralMoments(image, order: 3); + + // Get size and orientation of the image + SizeF size = target.GetSize(); + float angle = target.GetOrientation(); + + + + + + + + + + Gets the default maximum moment order. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The raw moments to construct central moments. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the center moments from the specified raw moments. + + + The raw moments to use as base of calculations. + + + + + Computes the center moments for the specified image. + + + The image. + The region of interest in the image to compute moments for. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Gets the size of the ellipse containing the image. + + + The size of the ellipse containing the image. + + + + + Gets the orientation of the ellipse containing the image. + + + The angle of orientation of the ellipse, in radians. + + + + + Gets both size and orientation of the ellipse containing the image. + + + The angle of orientation of the ellipse, in radians. + The size of the ellipse containing the image. + + + + + Central moment of order (0,0). + + + + + + Central moment of order (1,0). + + + + + + Central moment of order (0,1). + + + + + + Central moment of order (1,1). + + + + + + Central moment of order (2,0). + + + + + + Central moment of order (0,2). + + + + + + Central moment of order (2,1). + + + + + + Central moment of order (1,2). + + + + + + Central moment of order (3,0). + + + + + + Central moment of order (0,3). + + + + + + Raw image moments. + + + + + In image processing, computer vision and related fields, an image moment is + a certain particular weighted average (moment) of the image pixels' intensities, + or a function of such moments, usually chosen to have some attractive property + or interpretation. + + + Image moments are useful to describe objects after segmentation. Simple properties + of the image which are found via image moments include area (or total intensity), + its centroid, and information about its orientation. + + + The raw moments are the most basic moments which can be computed from an image, + and can then be further processed to achieve or even + . + + + References: + + + Wikipedia contributors. "Image moment." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Image_moment + + + + + + + Bitmap image = ...; + + // Compute the raw moments of up to third order + RawMoments m = new RawMoments(image, order: 3); + + + + + + + + + + Gets the default maximum moment order. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Computes the raw moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + True to compute second order moments, false otherwise. + + + + + Computes the raw moments for the specified image. + + + The image. + The region of interest in the image to compute moments for. + + + + + Computes the raw moments for the specified image. + + + The image. + The region of interest in the image to compute moments for. + + + + + Resets all moments to zero. + + + + + + Raw moment of order (0,0). + + + + + + Raw moment of order (1,0). + + + + + + Raw moment of order (0,1). + + + + + + Raw moment of order (1,1). + + + + + + Raw moment of order (2,0). + + + + + + Raw moment of order (0,2). + + + + + + Raw moment of order (2,1). + + + + + + Raw moment of order (1,2). + + + + + + Raw moment of order (3,0). + + + + + + Raw moment of order (0,3). + + + + + + Inverse raw moment of order (0,0). + + + + + + Gets the X centroid of the image. + + + + + + Gets the Y centroid of the image. + + + + + + Gets the area (for binary images) or sum of + gray level (for grayscale images). + + + + + + Features from Accelerated Segment Test (FAST) corners detector. + + + + + In the FAST corner detection algorithm, a pixel is defined as a corner + if (in a circle surrounding the pixel), N or more contiguous pixels are + all significantly brighter then or all significantly darker than the center + pixel. The ordering of questions used to classify a pixel is learned using + the ID3 algorithm. + + + This detector has been shown to exhibit a high degree of repeatability. + + + The code is roughly based on the 9 valued FAST corner detection + algorithm implementation in C by Edward Rosten, which has been + published under a 3-clause BSD license and is freely available at: + http://svr-www.eng.cam.ac.uk/~er258/work/fast.html. + + + + References: + + + E. Rosten, T. Drummond. Fusing Points and Lines for High + Performance Tracking, ICCV 2005. + + E. Rosten, T. Drummond. Machine learning for high-speed + corner detection, ICCV 2005 + + + + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new FAST Corners Detector + FastCornersDetector fast = new FastCornersDetector() + { + Suppress = true, // suppress non-maximum points + Threshold = 40 // less leads to more corners + }; + + // Process the image looking for corners + List<IntPoint> points = fast.ProcessImage(image); + + // Create a filter to mark the corners + PointsMarker marker = new PointsMarker(points); + + // Apply the corner-marking filter + Bitmap markers = marker.Apply(image); + + // Show on the screen + ImageBox.Show(markers); + + + + The resulting image is shown below: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The suppression threshold. Decreasing this value + increases the number of points detected by the algorithm. Default is 20. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Gets or sets a value indicating whether non-maximum + points should be suppressed. Default is true. + + + true if non-maximum points should + be suppressed; otherwise, false. + + + + + Gets or sets the corner detection threshold. Increasing this value results in less corners, + whereas decreasing this value will result in more corners detected by the algorithm. + + + The corners threshold. + + + + + Gets the scores of the each corner detected in + the previous call to . + + + The scores of each last computed corner. + + + + + Filter to mark (highlight) feature points in a image. + + + + The filter highlights feature points on the image using a given set of points. + + The filter accepts 8 bpp grayscale and 24 color images for processing. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + Gets or sets the initial size for a feature point in the map. Default is 5. + + + + + + Gets or sets the set of points to mark. + + + + + + SURF Feature descriptor types. + + + + + + Do not compute descriptors. + + + + + + Compute standard descriptors. + + + + + + Compute extended descriptors. + + + + + + Speeded-up Robust Features (SURF) detector. + + + + + Based on original implementation in the OpenSURF computer vision library + by Christopher Evans (http://www.chrisevansdev.com). Used under the LGPL + with permission of the original author. + + + Be aware that the SURF algorithm is a patented algorithm by Anael Orlinski. + If you plan to use it in a commercial application, you may have to acquire + a license from the patent holder. + + + References: + + + E. Christopher. Notes on the OpenSURF Library. Available in: + http://sites.google.com/site/chrisevansdev/files/opensurf.pdf + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Spatial/harris.m + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The non-maximum suppression threshold. Default is 0.0002f. + + + + + Initializes a new instance of the class. + + + + The non-maximum suppression threshold. Default is 0.0002f. + + The number of octaves to use when building the + response filter. Each octave corresponds to a series of maps covering a + doubling of scale in the image. Default is 5. + + The initial step to use when building the + response filter. Default is 2. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the + feature descriptor for the last processed image. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + Unmanaged source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + Source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Gets or sets a value indicating whether all feature points + should have their orientation computed after being detected. + Default is true. + + + Computing orientation requires additional processing; + set this property to false to compute the orientation of only + selected points by using the + current feature descriptor for the last set of detected points. + + + true if to compute orientation; otherwise, false. + + + + + Gets or sets a value indicating whether all feature points + should have their descriptors computed after being detected. + Default is to compute standard descriptors. + + + Computing descriptors requires additional processing; + set this property to false to compute the descriptors of only + selected points by using the + current feature descriptor for the last set of detected points. + + + true if to compute orientation; otherwise, false. + + + + + Gets or sets the non-maximum suppression + threshold. Default is 0.0002. + + + The non-maximum suppression threshold. + + + + + Gets or sets the number of octaves to use when building + the response filter. + Each octave corresponds to a series of maps covering a + doubling of scale in the image. Default is 5. + + + + + + Gets or sets the initial step to use when building + the response filter. + Default is 2. + + + + + + Linear Gradient Blending filter. + + + + + The blending filter is able to blend two images using a homography matrix. + A linear alpha gradient is used to smooth out differences between the two + images, effectively blending them in two images. The gradient is computed + considering the distance between the centers of the two images. + + + The first image should be passed at the moment of creation of the Blending + filter as the overlay image. A second image may be projected on top of the + overlay image by calling the Apply method and passing the second image as + argument. + + + Currently the filter always produces 32bpp images, disregarding the format + of source images. The alpha layer is used as an intermediate mask in the + blending process. + + + + + // Let's start with two pictures that have been + // taken from slightly different points of view: + // + Bitmap img1 = Resources.dc_left; + Bitmap img2 = Resources.dc_right; + + // Those pictures are shown below: + ImageBox.Show(img1, PictureBoxSizeMode.Zoom, 640, 480); + ImageBox.Show(img2, PictureBoxSizeMode.Zoom, 640, 480); + + + + + + + // Step 1: Detect feature points using Surf Corners Detector + var surf = new SpeededUpRobustFeaturesDetector(); + + var points1 = surf.ProcessImage(img1); + var points2 = surf.ProcessImage(img2); + + // Step 2: Match feature points using a k-NN + var matcher = new KNearestNeighborMatching(5); + var matches = matcher.Match(points1, points2); + + // Step 3: Create the matrix using a robust estimator + var ransac = new RansacHomographyEstimator(0.001, 0.99); + MatrixH homographyMatrix = ransac.Estimate(matches); + + // Step 4: Project and blend using the homography + Blend blend = new Blend(homographyMatrix, img1); + + + // Compute the blending algorithm + Bitmap result = blend.Apply(img2); + + // Show on screen + ImageBox.Show(result, PictureBoxSizeMode.Zoom, 640, 480); + + + + The resulting image is shown below. + + + + + + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + The overlay image (also called the anchor). + + + + + Constructs a new Blend filter. + + + The overlay image (also called the anchor). + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + The overlay image (also called the anchor). + + + + + Computes the new image size. + + + + + + Process the image filter. + + + + + + Computes a distance metric used to compute the blending mask + + + + + Format translations dictionary. + + + + + + Gets or sets the Homography matrix used to map a image passed to + the filter to the overlay image specified at filter creation. + + + + + + Gets or sets the filling color used to fill blank spaces. + + + + The filling color will only be visible after the image is converted + to 24bpp. The alpha channel will be used internally by the filter. + + + + + + Gets or sets a value indicating whether to blend using a linear + gradient or just superimpose the two images with equal weights. + + + true to create a gradient; otherwise, false. Default is true. + + + + + Gets or sets a value indicating whether only the alpha channel + should be blended. This can be used together with a transparency + mask to selectively blend only portions of the image. + + + true to blend only the alpha channel; otherwise, false. Default is false. + + + + + Concatenation filter. + + + + Concatenates two images side by side in a single image. + + + + + + Creates a new concatenation filter. + + The first image to concatenate. + + + + Calculates new image size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Filter to mark (highlight) rectangles in a image. + + + + + + Initializes a new instance of the class. + + + The color to use to drawn the rectangles. + + + + + Initializes a new instance of the class. + + + Set of rectangles to be drawn. + + + + + Initializes a new instance of the class. + + + Set of rectangles to be drawn. + + + + + Initializes a new instance of the class. + + + Set of rectangles to be drawn. + The color to use to drawn the rectangles. + + + + + Applies the filter to the image. + + + + + Color used to mark pairs. + + + + + + Gets or sets the color used to fill + rectangles. Default is Transparent. + + + + + + The set of rectangles. + + + + + + Format translations dictionary. + + + + + + Filter to mark (highlight) pairs of points in a image. + + + + + + Initializes a new instance of the class. + + + Set of starting points. + Set of corresponding points. + + + + + Initializes a new instance of the class. + + + Set of starting points. + Set of corresponding points. + The color of the lines to be marked. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Color used to mark pairs. + + + + + + The first set of points. + + + + + + The corresponding points to the first set of points. + + + + + + Format translations dictionary. + + + + + + Filter to mark (highlight) points in a image. + + + + The filter highlights points on the image using a given set of points. + + The filter accepts 8 bpp grayscale, 24 and 32 bpp color images for processing. + + + + Sample usage: + + // Create a blob contour's instance + BlobCounter bc = new BlobCounter(image); + + // Extract blobs + Blob[] blobs = bc.GetObjectsInformation(); + bc.ExtractBlobsImage(bmp, blobs[0], true); + + // Extract blob's edge points + List<IntPoint> contour = bc.GetBlobsEdgePoints(blobs[0]); + + // Create a green, 2 pixel width points marker's instance + PointsMarker marker = new PointsMarker(contour, Color.Green, 2); + + // Apply the filter in a given color image + marker.ApplyInPlace(colorBlob); + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Color used to mark corners. + + + + + + Gets or sets the set of points to mark. + + + + + + Gets or sets the width of the points to be drawn. + + + + + + Wavelet transform filter. + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Haar Wavelet transform filter + var wavelet = new WaveletTransform(new Haar(1)); + + // Apply the Wavelet transformation + Bitmap result = wavelet.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + // Extract only one of the resulting images + var crop = new Crop(new Rectangle(0, 0, + image.Width / 2, image.Height / 2)); + + Bitmap quarter = crop.Apply(result); + + // Show on the screen + ImageBox.Show(quarter); + + + + The resulting image is shown below. + + + + + + + + Constructs a new Wavelet Transform filter. + + + A wavelet function. + + + + + Constructs a new Wavelet Transform filter. + + + A wavelet function. + True to perform backward transform, false otherwise. + + + + + Applies the filter to the image. + + + + + + Format translations dictionary. + + + + + + Gets or sets the Wavelet function + + + + + + Gets or sets whether the filter should be applied forward or backwards. + + + + + + Corners measures to be used in . + + + + + + Original Harris' measure. Requires the setting of + a parameter k (default is 0.04), which may be a + bit arbitrary and introduce more parameters to tune. + + + + + + Noble's measure. Does not require a parameter + and may be more stable. + + + + + + Harris Corners Detector. + + + + This class implements the Harris corners detector. + Sample usage: + + + // create corners detector's instance + HarrisCornersDetector hcd = new HarrisCornersDetector( ); + // process image searching for corners + Point[] corners = hcd.ProcessImage( image ); + // process points + foreach ( Point corner in corners ) + { + // ... + } + + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Spatial/harris.m + + C.G. Harris and M.J. Stephens. "A combined corner and edge detector", + Proceedings Fourth Alvey Vision Conference, Manchester. + pp 147-151, 1988. + + Alison Noble, "Descriptions of Image Surfaces", PhD thesis, Department + of Engineering Science, Oxford University 1989, p45. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Convolution with decomposed 1D kernel. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Gets or sets the measure to use when detecting corners. + + + + + + Harris parameter k. Default value is 0.04. + + + + + + Harris threshold. Default value is 20000. + + + + + + Gaussian smoothing sigma. Default value is 1.2. + + + + + + Non-maximum suppression window radius. Default value is 3. + + + + + + Joint representation of both Integral Image and Squared Integral Image. + + + + Using this representation, both structures can be created in a single pass + over the data. This is interesting for real time applications. This class + also accepts a channel parameter indicating the Integral Image should be + computed using a specified color channel. This avoids costly conversions. + + + + + + Constructs a new Integral image of the given size. + + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Gets the sum of the pixels in a rectangle of the Integral image. + + + The horizontal position of the rectangle x. + The vertical position of the rectangle y. + The rectangle's height h. + The rectangle's width w. + + The sum of all pixels contained in the rectangle, computed + as I[y, x] + I[y + h, x + w] - I[y + h, x] - I[y, x + w]. + + + + + Gets the sum of the squared pixels in a rectangle of the Integral image. + + + The horizontal position of the rectangle x. + The vertical position of the rectangle y. + The rectangle's height h. + The rectangle's width w. + + The sum of all pixels contained in the rectangle, computed + as I²[y, x] + I²[y + h, x + w] - I²[y + h, x] - I²[y, x + w]. + + + + + Gets the sum of the pixels in a tilted rectangle of the Integral image. + + + The horizontal position of the rectangle x. + The vertical position of the rectangle y. + The rectangle's height h. + The rectangle's width w. + + The sum of all pixels contained in the rectangle, computed + as T[y + w, x + w + 1] + T[y + h, x - h + 1] - T[y, x + 1] - T[y + w + h, x + w - h + 1]. + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations + before the is reclaimed by garbage collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets the image's width. + + + + + + Gets the image's height. + + + + + + Gets the Integral Image for values' sum. + + + + + + Gets the Integral Image for values' squared sum. + + + + + + Gets the Integral Image for tilted values' sum. + + + + + + Speeded-Up Robust Feature (SURF) Point. + + + + + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + The point's scale. + The point's laplacian value. + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + The point's scale. + The point's laplacian value. + The point's orientation angle. + The point's response value. + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + The point's scale. + The point's Laplacian value. + The SURF point descriptor. + The point's orientation angle. + The point's response value. + + + + + Converts the feature point to a . + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Gets or sets the x-coordinate of this point. + + + + + + Gets or sets the y-coordinate of this point. + + + + + + Gets or sets the scale of the point. + + + + + + Gets or sets the response of the detected feature (strength). + + + + + + Gets or sets the orientation of this point + measured anti-clockwise from the x-axis. + + + + + + Gets or sets the sign of laplacian for this point + (which may be useful for fast matching purposes). + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Encapsulates a 3-by-3 general transformation matrix + that represents a (possibly) non-linear transform. + + + + + Linear transformations are not the only ones that can be represented by + matrices. Using homogeneous coordinates, both affine transformations and + perspective projections on R^n can be represented as linear transformations + on R^n+1 (that is, n+1-dimensional real projective space). + + The general transformation matrix has 8 degrees of freedom, as the last + element is just a scale parameter. + + + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Resets this matrix to be the identity. + + + + + + Returns the inverse matrix, if this matrix is invertible. + + + + + + Gets the transpose of this transformation matrix. + + + The transposed version of this matrix, given by H'. + + + + Transforms the given points using this transformation matrix. + + + + + + Transforms the given points using this transformation matrix. + + + + + + Multiplies this matrix, returning a new matrix as result. + + + + + + Compares two objects for equality. + + + + + + Returns the hash code for this instance. + + + + + + Double[,] conversion. + + + + + + Single[,] conversion. + + + + + + Double[,] conversion. + + + + + + Single[,] conversion. + + + + + + Matrix multiplication. + + + + + + Gets the elements of this matrix. + + + + + + Gets the offset x + + + + + + Gets the offset y + + + + + + Gets whether this matrix is invertible. + + + + + + Gets whether this is an Affine transformation matrix. + + + + + + Gets whether this is the identity transformation. + + + + + + Represents an ordered pair of real x- and y-coordinates and scalar w that defines + a point in a two-dimensional plane using homogeneous coordinates. + + + + + In mathematics, homogeneous coordinates are a system of coordinates used in + projective geometry much as Cartesian coordinates are used in Euclidean geometry. + + They have the advantage that the coordinates of a point, even those at infinity, + can be represented using finite coordinates. Often formulas involving homogeneous + coordinates are simpler and more symmetric than their Cartesian counterparts. + + Homogeneous coordinates have a range of applications, including computer graphics, + where they allow affine transformations and, in general, projective transformations + to be easily represented by a matrix. + + + References: + + + http://alumnus.caltech.edu/~woody/docs/3dmatrix.html + + http://simply3d.wordpress.com/2009/05/29/homogeneous-coordinates/ + + + + + + + Creates a new point. + + + + + + Creates a new point. + + + + + + Creates a new point. + + + + + + Creates a new point. + + + + + + Transforms a point using a projection matrix. + + + + + + Normalizes the point to have unit scale. + + + + + + Converts the point to a array representation. + + + + + + Multiplication by scalar. + + + + + + Multiplication by scalar. + + + + + + Multiplies the point by a scalar. + + + + + + Subtraction. + + + + + + Subtracts the values of two points. + + + + + + Addition. + + + + + + Add the values of two points. + + + + + + Equality. + + + + + + Inequality + + + + + + PointF Conversion. + + + + + + Converts to a Integer point by computing the ceiling of the point coordinates. + + + + + + Converts to a Integer point by rounding the point coordinates. + + + + + + Converts to a Integer point by truncating the point coordinates. + + + + + + Compares two objects for equality. + + + + + + Returns the hash code for this instance. + + + + + + Returns the empty point. + + + + + + The first coordinate. + + + + + + The second coordinate. + + + + + + The inverse scaling factor for X and Y. + + + + + + Gets whether this point is normalized (w = 1). + + + + + + Gets whether this point is at infinity (w = 0). + + + + + + Gets whether this point is at the origin. + + + + + + RANSAC Robust Homography Matrix Estimator. + + + + + Fitting a homography using RANSAC is pretty straightforward. Being a iterative method, + in a single iteration a random sample of four correspondences is selected from the + given correspondence points and a homography H is then computed from those points. + + The original points are then transformed using this homography and their distances to + where those transforms should be is then computed and matching points can classified + as inliers and non-matching points as outliers. + + After a given number of iterations, the iteration which produced the largest number + of inliers is then selected as the best estimation for H. + + + References: + + + E. Dubrofsky. Homography Estimation. Master thesis. Available on: + http://www.cs.ubc.ca/~dubroe/courses/MastersEssay.pdf + + + + + + // Let's start with two pictures that have been + // taken from slightly different points of view: + // + Bitmap img1 = Resources.dc_left; + Bitmap img2 = Resources.dc_right; + + // Those pictures are shown below: + ImageBox.Show(img1, PictureBoxSizeMode.Zoom, 640, 480); + ImageBox.Show(img2, PictureBoxSizeMode.Zoom, 640, 480); + + + + + + + // Step 1: Detect feature points using Surf Corners Detector + var surf = new SpeededUpRobustFeaturesDetector(); + + var points1 = surf.ProcessImage(img1); + var points2 = surf.ProcessImage(img2); + + // Step 2: Match feature points using a k-NN + var matcher = new KNearestNeighborMatching(5); + var matches = matcher.Match(points1, points2); + + // Step 3: Create the matrix using a robust estimator + var ransac = new RansacHomographyEstimator(0.001, 0.99); + MatrixH homographyMatrix = ransac.Estimate(matches); + + // Step 4: Project and blend using the homography + Blend blend = new Blend(homographyMatrix, img1); + + + // Compute the blending algorithm + Bitmap result = blend.Apply(img2); + + // Show on screen + ImageBox.Show(result, PictureBoxSizeMode.Zoom, 640, 480); + + + + The resulting image is shown below. + + + + + + + + + + + Creates a new RANSAC homography estimator. + + + Inlier threshold. + Inlier probability. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Estimates a homography with the given points. + + + + + + Compute inliers using the Symmetric Transfer Error, + + + + + + Checks if the selected points will result in a degenerate homography. + + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Speeded-Up Robust Features (SURF) Descriptor. + + + + + + + + + Initializes a new instance of the class. + + + + The integral image which is the source of the feature points. + + + + + + Describes the specified point (i.e. computes and + sets the orientation and descriptor vector fields + of the . + + + The point to be described. + + + + + Describes all specified points (i.e. computes and + sets the orientation and descriptor vector fields + of each . + + + The list of points to be described. + + + + + Determine dominant orientation for the feature point. + + + + + + Determine dominant orientation for feature point. + + + + + + Construct descriptor vector for this interest point + + + + + + Get the value of the Gaussian with std dev sigma at the point (x,y) + + + + + + Get the value of the Gaussian with std dev sigma at the point (x,y) + + + + + Gaussian look-up table for sigma = 2.5 + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets a value indicating whether the features + described by this should + be invariant to rotation. Default is true. + + + true for rotation invariant features; false otherwise. + + + + + Gets or sets a value indicating whether the features + described by this should + be computed in extended form. Default is false. + + + true for extended features; false otherwise. + + + + + Gets the of + the original source's feature detector. + + + The integral image from where the + features have been detected. + + + + + Static tool functions for imaging. + + + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: + http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Match/matchbycorrelation.m + + + + + + + + Computes the center of a given rectangle. + + + + + Compares two rectangles for equality, considering an acceptance threshold. + + + + + Creates an homography matrix matching points + from a set of points to another. + + + + + Creates an homography matrix matching points + from a set of points to another. + + + + + + Creates the fundamental matrix between two + images from a set of points from each image. + + + + + + Creates the fundamental matrix between two + images from a set of points from each image. + + + + + + Creates the fundamental matrix between two + images from a set of points from each image. + + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Detects if three points are collinear. + + + + + + Detects if three points are collinear. + + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the minimum pixel value in the given image. + + + + + + Computes the minimum pixel value in the given image. + + + + + + Computes the minimum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts an image given as a matrix of pixel values into + a . + + + A matrix containing the grayscale pixel + values as bytes. + A of the same width + and height as the pixel matrix containing the given pixel values. + + + + + Converts an image given as a matrix of pixel values into + a . + + + A matrix containing the grayscale pixel + values as bytes. + A of the same width + and height as the pixel matrix containing the given pixel values. + + + + + Converts an image given as a array of pixel values into + a . + + + An array containing the grayscale pixel + values as doubles. + The width of the resulting image. + The height of the resulting image. + The minimum value representing a color value of 0. + The maximum value representing a color value of 255. + + A of given width and height + containing the given pixel values. + + + + + Converts an image given as a array of pixel values into + a . + + + An jagged array containing the pixel values + as double arrays. Each element of the arrays will be converted to + a R, G, B, A value. The bits per pixel of the resulting image + will be set according to the size of these arrays. + The width of the resulting image. + The height of the resulting image. + The minimum value representing a color value of 0. + The maximum value representing a color value of 255. + + A of given width and height + containing the given pixel values. + + + + + Converts an image given as a array of pixel values into + a . + + + An jagged array containing the pixel values + as double arrays. Each element of the arrays will be converted to + a R, G, B, A value. The bits per pixel of the resulting image + will be set according to the size of these arrays. + The width of the resulting image. + The height of the resulting image. + + A of given width and height + containing the given pixel values. + + + + + Multiplies a point by a transformation matrix. + + + + + + Multiplies a transformation matrix and a point. + + + + + + Computes the inner product of two points. + + + + + + Transforms the given points using this transformation matrix. + + + + + + Gets the image format most likely associated with a given file name. + + + The filename in the form "image.jpg". + + The most likely associated with + the given . + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net40/Accord.Imaging.dll b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net40/Accord.Imaging.dll new file mode 100644 index 0000000000..7e6477593 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net40/Accord.Imaging.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net40/Accord.Imaging.xml b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net40/Accord.Imaging.xml new file mode 100644 index 0000000000..efce14a5b --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net40/Accord.Imaging.xml @@ -0,0 +1,28470 @@ + + + + Accord.Imaging + + + + + Image's blob. + + + The class represents a blob - part of another images. The + class encapsulates the blob itself and information about its position + in parent image. + + The class is not responsible for blob's image disposing, so it should be + done manually when it is required. + + + + + + Initializes a new instance of the class. + + + Blob's ID in the original image. + Blob's rectangle in the original image. + + This constructor leaves property not initialized. The blob's + image may be extracted later using + or method. + + + + + Initializes a new instance of the class. + + + Source blob to copy. + + This copy constructor leaves property not initialized. The blob's + image may be extracted later using + or method. + + + + + Blob's image. + + + The property keeps blob's image. In the case if it equals to null, + the image may be extracted using + or method. + + + + + Blob's image size. + + + The property specifies size of the blob's image. + If the property is set to , the blob's image size equals to the + size of original image. If the property is set to , the blob's + image size equals to size of actual blob. + + + + + Blob's rectangle in the original image. + + + The property specifies position of the blob in the original image + and its size. + + + + + Blob's ID in the original image. + + + + + Blob's area. + + + The property equals to blob's area measured in number of pixels + contained by the blob. + + + + + Blob's fullness, [0, 1]. + + + The property equals to blob's fullness, which is calculated + as Area / ( Width * Height ). If it equals to 1, then + it means that entire blob's rectangle is filled by blob's pixel (no + blank areas), which is true only for rectangles. If it equals to 0.5, + for example, then it means that only half of the bounding rectangle is filled + by blob's pixels. + + + + + Blob's center of gravity point. + + + The property keeps center of gravity point, which is calculated as + mean value of X and Y coordinates of blob's points. + + + + + Blob's mean color. + + + The property keeps mean color of pixels comprising the blob. + + + + + Blob color's standard deviation. + + + The property keeps standard deviation of pixels' colors comprising the blob. + + + + + Blob counter - counts objects in image, which are separated by black background. + + + The class counts and extracts stand alone objects in + images using connected components labeling algorithm. + + The algorithm treats all pixels with values less or equal to + as background, but pixels with higher values are treated as objects' pixels. + + For blobs' searching the class supports 8 bpp indexed grayscale images and + 24/32 bpp color images that are at least two pixels wide. Images that are one + pixel wide can be processed if they are rotated first, or they can be processed + with . + See documentation about for information about which + pixel formats are supported for extraction of blobs. + + Sample usage: + + // create an instance of blob counter algorithm + BlobCounter bc = new BlobCounter( ); + // process binary image + bc.ProcessImage( image ); + Rectangle[] rects = bc.GetObjectsRectangles( ); + // process blobs + foreach ( Rectangle rect in rects ) + { + // ... + } + + + + + + + Base class for different blob counting algorithms. + + + The class is abstract and serves as a base for different blob counting algorithms. + Classes, which inherit from this base class, require to implement + method, which does actual building of object's label's map. + + For blobs' searcing usually all inherited classes accept binary images, which are actually + grayscale thresholded images. But the exact supported format should be checked in particular class, + inheriting from the base class. For blobs' extraction the class supports grayscale (8 bpp indexed) + and color images (24 and 32 bpp). + + Sample usage: + + // create an instance of blob counter algorithm + BlobCounterBase bc = new ... + // set filtering options + bc.FilterBlobs = true; + bc.MinWidth = 5; + bc.MinHeight = 5; + // process binary image + bc.ProcessImage( image ); + Blob[] blobs = bc.GetObjects( image, false ); + // process blobs + foreach ( Blob blob in blobs ) + { + // ... + // blob.Rectangle - blob's rectangle + // blob.Image - blob's image + } + + + + + + + Objects count. + + + + + Objects' labels. + + + + + Width of processed image. + + + + + Height of processed image. + + + + + Initializes a new instance of the class. + + + Creates new instance of the class with + an empty objects map. Before using methods, which provide information about blobs + or extract them, the , + or + method should be called to collect objects map. + + + + + Initializes a new instance of the class. + + + Binary image to look for objects in. + + Creates new instance of the class with + initialized objects map built by calling method. + + + + + Initializes a new instance of the class. + + + Binary image data to look for objects in. + + Creates new instance of the class with + initialized objects map built by calling method. + + + + + Initializes a new instance of the class. + + + Unmanaged binary image to look for objects in. + + Creates new instance of the class with + initialized objects map built by calling method. + + + + + Build objects map. + + + Source binary image. + + Processes the image and builds objects map, which is used later to extracts blobs. + + Unsupported pixel format of the source image. + + + + + Build objects map. + + + Source binary image data. + + Processes the image and builds objects map, which is used later to extracts blobs. + + Unsupported pixel format of the source image. + + + + + Build object map from raw image data. + + + Source unmanaged binary image data. + + Processes the image and builds objects map, which is used later to extracts blobs. + + Unsupported pixel format of the source image. + Thrown by some inherited classes if some image property other + than the pixel format is not supported. See that class's documentation or the exception message for details. + + + + + Get objects' rectangles. + + + Returns array of objects' rectangles. + + The method returns array of objects rectangles. Before calling the + method, the , + or method should be called, which will + build objects map. + + No image was processed before, so objects' rectangles + can not be collected. + + + + + Get objects' information. + + + Returns array of partially initialized blobs (without property initialized). + + By the amount of provided information, the method is between and + methods. The method provides array of blobs without initialized their image. + Blob's image may be extracted later using + or method. + + + + + // create blob counter and process image + BlobCounter bc = new BlobCounter( sourceImage ); + // specify sort order + bc.ObjectsOrder = ObjectsOrder.Size; + // get objects' information (blobs without image) + Blob[] blobs = bc.GetObjectInformation( ); + // process blobs + foreach ( Blob blob in blobs ) + { + // check blob's properties + if ( blob.Rectangle.Width > 50 ) + { + // the blob looks interesting, let's extract it + bc.ExtractBlobsImage( sourceImage, blob ); + } + } + + + + No image was processed before, so objects' information + can not be collected. + + + + + Get blobs. + + + Source image to extract objects from. + + Returns array of blobs. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + The method returns array of blobs. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so objects + can not be collected. + + + + + Get blobs. + + + Source unmanaged image to extract objects from. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + Returns array of blobs. + + The method returns array of blobs. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so objects + can not be collected. + + + + + Extract blob's image. + + + Source image to extract blob's image from. + Blob which is required to be extracted. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + The method is used to extract image of partially initialized blob, which + was provided by method. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so blob + can not be extracted. + + + + + Extract blob's image. + + + Source unmanaged image to extract blob's image from. + Blob which is required to be extracted. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + The method is used to extract image of partially initialized blob, which + was provided by method. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so blob + can not be extracted. + + + + + Get list of points on the left and right edges of the blob. + + + Blob to collect edge points for. + List of points on the left edge of the blob. + List of points on the right edge of the blob. + + The method scans each line of the blob and finds the most left and the + most right points for it adding them to appropriate lists. The method may be very + useful in conjunction with different routines from , + which allow finding convex hull or quadrilateral's corners. + + Both lists of points are sorted by Y coordinate - points with smaller Y + value go first. + + + No image was processed before, so blob + can not be extracted. + + + + + Get list of points on the top and bottom edges of the blob. + + + Blob to collect edge points for. + List of points on the top edge of the blob. + List of points on the bottom edge of the blob. + + The method scans each column of the blob and finds the most top and the + most bottom points for it adding them to appropriate lists. The method may be very + useful in conjunction with different routines from , + which allow finding convex hull or quadrilateral's corners. + + Both lists of points are sorted by X coordinate - points with smaller X + value go first. + + + No image was processed before, so blob + can not be extracted. + + + + + Get list of object's edge points. + + + Blob to collect edge points for. + + Returns unsorted list of blob's edge points. + + The method scans each row and column of the blob and finds the + most top/bottom/left/right points. The method returns similar result as if results of + both and + methods were combined, but each edge point occurs only once in the list. + + Edge points in the returned list are not ordered. This makes the list unusable + for visualization with methods, which draw polygon or poly-line. But the returned list + can be used with such algorithms, like convex hull search, shape analyzer, etc. + + + No image was processed before, so blob + can not be extracted. + + + + + Actual objects map building. + + + Unmanaged image to process. + + By the time this method is called bitmap's pixel format is not + yet checked, so this should be done by the class inheriting from the base class. + and members are initialized + before the method is called, so these members may be used safely. + + + + + Objects count. + + + Number of objects (blobs) found by method. + + + + + + Objects' labels. + + + The array of width * height size, which holds + labels for all objects. Background is represented with 0 value, + but objects are represented with labels starting from 1. + + + + + Objects sort order. + + + The property specifies objects' sort order, which are provided + by , , etc. + + + + + + Specifies if blobs should be filtered. + + + If the property is equal to false, then there is no any additional + post processing after image was processed. If the property is set to true, then + blobs filtering is done right after image processing routine. If + is set, then custom blobs' filtering is done, which is implemented by user. Otherwise + blobs are filtered according to dimensions specified in , + , and properties. + + Default value is set to . + + + + + Specifies if size filetering should be coupled or not. + + + In uncoupled filtering mode, objects are filtered out in the case if + their width is smaller than or height is smaller than + . But in coupled filtering mode, objects are filtered out in + the case if their width is smaller than and height is + smaller than . In both modes the idea with filtering by objects' + maximum size is the same as filtering by objects' minimum size. + + Default value is set to , what means uncoupled filtering by size. + + + + + + Minimum allowed width of blob. + + + The property specifies minimum object's width acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Minimum allowed height of blob. + + + The property specifies minimum object's height acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Maximum allowed width of blob. + + + The property specifies maximum object's width acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Maximum allowed height of blob. + + + The property specifies maximum object's height acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Custom blobs' filter to use. + + + The property specifies custom blobs' filtering routine to use. It has + effect only in the case if property is set to . + + When custom blobs' filtering routine is set, it has priority over default filtering done + with , , and . + + + + + + Initializes a new instance of the class. + + + Creates new instance of the class with + an empty objects map. Before using methods, which provide information about blobs + or extract them, the , + or + method should be called to collect objects map. + + + + + Initializes a new instance of the class. + + + Image to look for objects in. + + + + + Initializes a new instance of the class. + + + Image data to look for objects in. + + + + + Initializes a new instance of the class. + + + Unmanaged image to look for objects in. + + + + + Actual objects map building. + + + Unmanaged image to process. + + The method supports 8 bpp indexed grayscale images and 24/32 bpp color images. + + Unsupported pixel format of the source image. + Cannot process images that are one pixel wide. Rotate the image + or use . + + + + + Background threshold's value. + + + The property sets threshold value for distinguishing between background + pixel and objects' pixels. All pixel with values less or equal to this property are + treated as background, but pixels with higher values are treated as objects' pixels. + + In the case of colour images a pixel is treated as objects' pixel if any of its + RGB values are higher than corresponding values of this threshold. + + For processing grayscale image, set the property with all RGB components eqaul. + + Default value is set to (0, 0, 0) - black colour. + + + + + Possible object orders. + + + The enumeration defines possible sorting orders of objects, found by blob + counting classes. + + + + + Unsorted order (as it is collected by algorithm). + + + + + Objects are sorted by size in descending order (bigger objects go first). + Size is calculated as Width * Height. + + + + + Objects are sorted by area in descending order (bigger objects go first). + + + + + Objects are sorted by Y coordinate, then by X coordinate in ascending order + (smaller coordinates go first). + + + + + Objects are sorted by X coordinate, then by Y coordinate in ascending order + (smaller coordinates go first). + + + + + Block match class keeps information about found block match. The class is + used with block matching algorithms implementing + interface. + + + + + + Initializes a new instance of the class. + + + Reference point in source image. + Match point in search image (point of a found match). + Similarity between blocks in source and search images, [0..1]. + + + + + Reference point in source image. + + + + + Match point in search image (point of a found match). + + + + + Similarity between blocks in source and search images, [0..1]. + + + + + Color dithering using Burkes error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Burkes coefficients. Error is diffused + on 7 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + + / 32 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 8 colors table + Color[] colorTable = ciq.CalculatePalette( image, 8 ); + // create dithering routine + BurkesColorDithering dithering = new BurkesColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Base class for error diffusion color dithering, where error is diffused to + adjacent neighbor pixels. + + + The class does error diffusion to adjacent neighbor pixels + using specified set of coefficients. These coefficients are represented by + 2 dimensional jugged array, where first array of coefficients is for + right-standing pixels, but the rest of arrays are for bottom-standing pixels. + All arrays except the first one should have odd number of coefficients. + + Suppose that error diffusion coefficients are represented by the next + jugged array: + + + int[][] coefficients = new int[2][] { + new int[1] { 7 }, + new int[3] { 3, 5, 1 } + }; + + + The above coefficients are used to diffuse error over the next neighbor + pixels (* marks current pixel, coefficients are placed to corresponding + neighbor pixels): + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The image processing routine accepts 24/32 bpp color images for processing. + + Sample usage: + + // create dithering routine + ColorErrorDiffusionToAdjacentNeighbors dithering = new ColorErrorDiffusionToAdjacentNeighbors( + new int[3][] { + new int[2] { 5, 3 }, + new int[5] { 2, 4, 5, 4, 2 }, + new int[3] { 2, 3, 2 } + } ); + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + + + + + Base class for error diffusion color dithering. + + + The class is the base class for color dithering algorithms based on + error diffusion. + + Color dithering with error diffusion is based on the idea that each pixel from the specified source + image is substituted with a best matching color (or better say with color's index) from the specified color + table. However, the error (difference between color value in the source image and the best matching color) + is diffused to neighbor pixels of the source image, which affects the way those pixels are substituted by colors + from the specified table. + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + + + + + Current processing X coordinate. + + + + + Current processing Y coordinate. + + + + + Processing image's width. + + + + + Processing image's height. + + + + + Processing image's stride (line size). + + + + + Processing image's pixel size in bytes. + + + + + Initializes a new instance of the class. + + + + + + Do error diffusion. + + + Error value of red component. + Error value of green component. + Error value of blue component. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized in protected members. + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Color table to use for image dithering. Must contain 2-256 colors. + + + Color table size determines format of the resulting image produced by this + image processing routine. If color table contains 16 color or less, then result image will have + 4 bpp indexed pixel format. If color table contains more than 16 colors, then result image will + have 8 bpp indexed pixel format. + + By default the property is initialized with default 16 colors, which are: + Black, Dark Blue, Dark Green, Dark Cyan, Dark Red, Dark Magenta, Dark Khaki, Light Gray, + Gray, Blue, Green, Cyan, Red, Magenta, Yellow and White. + + + Color table length must be in the [2, 256] range. + + + + + Use color caching during color dithering or not. + + + The property specifies if internal cache of already processed colors should be used or not. + For each pixel in the original image the color dithering routine does search in target color palette to find + the best matching color. To avoid doing the search again and again for already processed colors, the class may + use internal dictionary which maps colors of original image to indexes in target color palette. + + + The property provides a trade off. On one hand it may speedup color dithering routine, but on another + hand it increases memory usage. Also cache usage may not be efficient for very small target color tables. + + Default value is set to . + + + + + + Initializes a new instance of the class. + + + Diffusion coefficients (see + for more information). + + + + + Do error diffusion. + + + Error value of red component. + Error value of green component. + Error value of blue component. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized by base class. + + + + + Diffusion coefficients. + + + Set of coefficients, which are used for error diffusion to + pixel's neighbors. + + + + + Initializes a new instance of the class. + + + + + + Color quantization tools. + + + The class contains methods aimed to simplify work with color quantization + algorithms implementing interface. Using its methods it is possible + to calculate reduced color palette for the specified image or reduce colors to the specified number. + + Sample usage: + + // instantiate the images' color quantization class + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // get 16 color palette for a given image + Color[] colorTable = ciq.CalculatePalette( image, 16 ); + + // ... or just reduce colors in the specified image + Bitmap newImage = ciq.ReduceColors( image, 16 ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Color quantization algorithm to use for processing images. + + + + + Calculate reduced color palette for the specified image. + + + Image to calculate palette for. + Palette size to calculate. + + Return reduced color palette for the specified image. + + See for details. + + + + + Calculate reduced color palette for the specified image. + + + Image to calculate palette for. + Palette size to calculate. + + Return reduced color palette for the specified image. + + The method processes the specified image and feeds color value of each pixel + to the specified color quantization algorithm. Finally it returns color palette built by + that algorithm. + + Unsupported format of the source image - it must 24 or 32 bpp color image. + + + + + Create an image with reduced number of colors. + + + Source image to process. + Number of colors to get in the output image, [2, 256]. + + Returns image with reduced number of colors. + + See for details. + + + + + Create an image with reduced number of colors. + + + Source image to process. + Number of colors to get in the output image, [2, 256]. + + Returns image with reduced number of colors. + + The method creates an image, which looks similar to the specified image, but contains + reduced number of colors. First, target color palette is calculated using + method and then a new image is created, where pixels from the given source image are substituted by + best matching colors from calculated color table. + + The output image has 4 bpp or 8 bpp indexed pixel format depending on the target palette size - + 4 bpp for palette size 16 or less; 8 bpp otherwise. + + + Unsupported format of the source image - it must 24 or 32 bpp color image. + Invalid size of the target color palette. + + + + + Create an image with reduced number of colors using the specified palette. + + + Source image to process. + Target color palette. Must contatin 2-256 colors. + + Returns image with reduced number of colors. + + See for details. + + + + + Create an image with reduced number of colors using the specified palette. + + + Source image to process. + Target color palette. Must contatin 2-256 colors. + + Returns image with reduced number of colors. + + The method creates an image, which looks similar to the specified image, but contains + reduced number of colors. Is substitutes every pixel of the source image with the closest matching color + in the specified paletter. + + The output image has 4 bpp or 8 bpp indexed pixel format depending on the target palette size - + 4 bpp for palette size 16 or less; 8 bpp otherwise. + + + Unsupported format of the source image - it must 24 or 32 bpp color image. + Invalid size of the target color palette. + + + + + Color quantization algorithm used by this class to build color palettes for the specified images. + + + + + + Use color caching during color reduction or not. + + + The property has effect only for methods like and + specifies if internal cache of already processed colors should be used or not. For each pixel in the original + image the color reduction routine does search in target color palette to find the best matching color. + To avoid doing the search again and again for already processed colors, the class may use internal dictionary + which maps colors of original image to indexes in target color palette. + + + The property provides a trade off. On one hand it may speedup color reduction routine, but on another + hand it increases memory usage. Also cache usage may not be efficient for very small target color tables. + + Default value is set to . + + + + + + Color dithering using Floyd-Steinberg error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Floyd-Steinberg + coefficients. Error is diffused on 4 neighbor pixels with the next coefficients: + + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 16 colors table + Color[] colorTable = ciq.CalculatePalette( image, 16 ); + // create dithering routine + FloydSteinbergColorDithering dithering = new FloydSteinbergColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Interface which is implemented by different color quantization algorithms. + + + The interface defines set of methods, which are to be implemented by different + color quantization algorithms - algorithms which are aimed to provide reduced color table/palette + for a color image. + + See documentation to particular implementation of the interface for additional information + about the algorithm. + + + + + + Process color by a color quantization algorithm. + + + Color to process. + + Depending on particular implementation of interface, + this method may simply process the specified color or store it in internal list for + later color palette calculation. + + + + + Get palette of the specified size. + + + Palette size to return. + + Returns reduced color palette for the accumulated/processed colors. + + The method must be called after continuously calling method and + returns reduced color palette for colors accumulated/processed so far. + + + + + Clear internals of the algorithm, like accumulated color table, etc. + + + The methods resets internal state of a color quantization algorithm returning + it to initial state. + + + + + Color dithering using Jarvis, Judice and Ninke error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Jarvis-Judice-Ninke coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 7 | 5 | + | 3 | 5 | 7 | 5 | 3 | + | 1 | 3 | 5 | 3 | 1 | + + / 48 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 32 colors table + Color[] colorTable = ciq.CalculatePalette( image, 32 ); + // create dithering routine + JarvisJudiceNinkeColorDithering dithering = new JarvisJudiceNinkeColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Median cut color quantization algorithm. + + + The class implements median cut + color quantization algorithm. + + See also class, which may simplify processing of images. + + Sample usage: + + // create the color quantization algorithm + IColorQuantizer quantizer = new MedianCutQuantizer( ); + // process colors (taken from image for example) + for ( int i = 0; i < pixelsToProcess; i++ ) + { + quantizer.AddColor( /* pixel color */ ); + } + // get palette reduced to 16 colors + Color[] palette = quantizer.GetPalette( 16 ); + + + + + + + + + Add color to the list of processed colors. + + + Color to add to the internal list. + + The method adds the specified color into internal list of processed colors. The list + is used later by method to build reduced color table of the specified size. + + + + + + Get paletter of the specified size. + + + Palette size to get. + + Returns reduced palette of the specified size, which covers colors processed so far. + + The method must be called after continuously calling method and + returns reduced color palette for colors accumulated/processed so far. + + + + + Clear internal state of the color quantization algorithm by clearing the list of colors + so far processed. + + + + + + Color dithering with a thresold matrix (ordered dithering). + + + The class implements ordered color dithering as described on + Wikipedia. + The algorithm achieves dithering by applying a threshold map on + the pixels displayed, causing some of the pixels to be rendered at a different color, depending on + how far in between the color is of available color entries. + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 256 colors table + Color[] colorTable = ciq.CalculatePalette( image, 256 ); + // create dithering routine + OrderedColorDithering dithering = new OrderedColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Threshold matrix (see property). + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Threshold matrix - values to add source image's values. + + + The property keeps a threshold matrix, which is applied to values of a source image + to dither. By adding these values to the source image the algorithm produces the effect when pixels + of the same color in source image may have different color in the result image (which depends on pixel's + position). This threshold map is also known as an index matrix or Bayer matrix. + + By default the property is inialized with the below matrix: + + 2 18 6 22 + 26 10 30 14 + 8 24 4 20 + 32 16 28 12 + + + + + + + + Color table to use for image dithering. Must contain 2-256 colors. + + + Color table size determines format of the resulting image produced by this + image processing routine. If color table contains 16 color or less, then result image will have + 4 bpp indexed pixel format. If color table contains more than 16 colors, then result image will + have 8 bpp indexed pixel format. + + By default the property is initialized with default 16 colors, which are: + Black, Dark Blue, Dark Green, Dark Cyan, Dark Red, Dark Magenta, Dark Khaki, Light Gray, + Gray, Blue, Green, Cyan, Red, Magenta, Yellow and White. + + + Color table length must be in the [2, 256] range. + + + + + Use color caching during color dithering or not. + + + The property specifies if internal cache of already processed colors should be used or not. + For each pixel in the original image the color dithering routine does search in target color palette to find + the best matching color. To avoid doing the search again and again for already processed colors, the class may + use internal dictionary which maps colors of original image to indexes in target color palette. + + + The property provides a trade off. On one hand it may speedup color dithering routine, but on another + hand it increases memory usage. Also cache usage may not be efficient for very small target color tables. + + Default value is set to . + + + + + + Color dithering using Sierra error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Sierra coefficients. Error is diffused + on 10 neighbor pixels with next coefficients: + + | * | 5 | 3 | + | 2 | 4 | 5 | 4 | 2 | + | 2 | 3 | 2 | + + / 32 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create dithering routine (use default color table) + SierraColorDithering dithering = new SierraColorDithering( ); + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Color dithering using Stucki error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Stucki coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + | 1 | 2 | 4 | 2 | 1 | + + / 42 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 64 colors table + Color[] colorTable = ciq.CalculatePalette( image, 64 ); + // create dithering routine + StuckiColorDithering dithering = new StuckiColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + RGB components. + + + The class encapsulates RGB color components. + PixelFormat.Format24bppRgb + actually means BGR format. + + + + + + Index of red component. + + + + + Index of green component. + + + + + Index of blue component. + + + + + Index of alpha component for ARGB images. + + + + + Red component. + + + + + Green component. + + + + + Blue component. + + + + + Alpha component. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Red component. + Green component. + Blue component. + + + + + Initializes a new instance of the class. + + + Red component. + Green component. + Blue component. + Alpha component. + + + + + Initializes a new instance of the class. + + + Initialize from specified color. + + + + + Color value of the class. + + + + + HSL components. + + + The class encapsulates HSL color components. + + + + + Hue component. + + + Hue is measured in the range of [0, 359]. + + + + + Saturation component. + + + Saturation is measured in the range of [0, 1]. + + + + + Luminance value. + + + Luminance is measured in the range of [0, 1]. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Hue component. + Saturation component. + Luminance component. + + + + + Convert from RGB to HSL color space. + + + Source color in RGB color space. + Destination color in HSL color space. + + See HSL and HSV Wiki + for information about the algorithm to convert from RGB to HSL. + + + + + Convert from RGB to HSL color space. + + + Source color in RGB color space. + + Returns instance, which represents converted color value. + + + + + Convert from HSL to RGB color space. + + + Source color in HSL color space. + Destination color in RGB color space. + + + + + Convert the color to RGB color space. + + + Returns instance, which represents converted color value. + + + + + YCbCr components. + + + The class encapsulates YCbCr color components. + + + + + Index of Y component. + + + + + Index of Cb component. + + + + + Index of Cr component. + + + + + Y component. + + + + + Cb component. + + + + + Cr component. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Y component. + Cb component. + Cr component. + + + + + Convert from RGB to YCbCr color space (Rec 601-1 specification). + + + Source color in RGB color space. + Destination color in YCbCr color space. + + + + + Convert from RGB to YCbCr color space (Rec 601-1 specification). + + + Source color in RGB color space. + + Returns instance, which represents converted color value. + + + + + Convert from YCbCr to RGB color space. + + + Source color in YCbCr color space. + Destination color in RGB color space. + + + + + Convert the color to RGB color space. + + + Returns instance, which represents converted color value. + + + + + Filtering of frequencies outside of specified range in complex Fourier + transformed image. + + + The filer keeps only specified range of frequencies in complex + Fourier transformed image. The rest of frequencies are zeroed. + + Sample usage: + + // create complex image + ComplexImage complexImage = ComplexImage.FromBitmap( image ); + // do forward Fourier transformation + complexImage.ForwardFourierTransform( ); + // create filter + FrequencyFilter filter = new FrequencyFilter( new IntRange( 20, 128 ) ); + // apply filter + filter.Apply( complexImage ); + // do backward Fourier transformation + complexImage.BackwardFourierTransform( ); + // get complex image as bitmat + Bitmap fourierImage = complexImage.ToBitmap( ); + + + Initial image: + + Fourier image: + + + + + + + Image processing filter, which operates with Fourier transformed + complex image. + + + The interface defines the set of methods, which should be + provided by all image processing filter, which operate with Fourier + transformed complex image. + + + + + Apply filter to complex image. + + + Complex image to apply filter to. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Range of frequencies to keep. + + + + + Apply filter to complex image. + + + Complex image to apply filter to. + + The source complex image should be Fourier transformed. + + + + + Range of frequencies to keep. + + + The range specifies the range of frequencies to keep. Values is frequencies + outside of this range are zeroed. + + Default value is set to [0, 1024]. + + + + + Complex image. + + + The class is used to keep image represented in complex numbers sutable for Fourier + transformations. + + Sample usage: + + // create complex image + ComplexImage complexImage = ComplexImage.FromBitmap( image ); + // do forward Fourier transformation + complexImage.ForwardFourierTransform( ); + // get complex image as bitmat + Bitmap fourierImage = complexImage.ToBitmap( ); + + + Initial image: + + Fourier image: + + + + + + + Initializes a new instance of the class. + + + Image width. + Image height. + + The constractor is protected, what makes it imposible to instantiate this + class directly. To create an instance of this class or + method should be used. + + + + + Clone the complex image. + + + Returns copy of the complex image. + + + + + Create complex image from grayscale bitmap. + + + Source grayscale bitmap (8 bpp indexed). + + Returns an instance of complex image. + + The source image has incorrect pixel format. + Image width and height should be power of 2. + + + + + Create complex image from grayscale bitmap. + + + Source image data (8 bpp indexed). + + Returns an instance of complex image. + + The source image has incorrect pixel format. + Image width and height should be power of 2. + + + + + Convert complex image to bitmap. + + + Returns grayscale bitmap. + + + + + Applies forward fast Fourier transformation to the complex image. + + + + + + Applies backward fast Fourier transformation to the complex image. + + + + + + Image width. + + + + + + Image height. + + + + + + Status of the image - Fourier transformed or not. + + + + + + Complex image's data. + + + Return's 2D array of [height, width] size, which keeps image's + complex data. + + + + + Skew angle checker for scanned documents. + + + The class implements document's skew checking algorithm, which is based + on Hough line transformation. The algorithm + is based on searching for text base lines - black line of text bottoms' followed + by white line below. + + The routine supposes that a white-background document is provided + with black letters. The algorithm is not supposed for any type of objects, but for + document images with text. + + The range of angles to detect is controlled by property. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create instance of skew checker + DocumentSkewChecker skewChecker = new DocumentSkewChecker( ); + // get documents skew angle + double angle = skewChecker.GetSkewAngle( documentImage ); + // create rotation filter + RotateBilinear rotationFilter = new RotateBilinear( -angle ); + rotationFilter.FillColor = Color.White; + // rotate image applying the filter + Bitmap rotatedImage = rotationFilter.Apply( documentImage ); + + + Initial image: + + Deskewed image: + + + + + + + + + Initializes a new instance of the class. + + + + + Get skew angle of the provided document image. + + + Document's image to get skew angle of. + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's image to get skew angle of. + Image's rectangle to process (used to exclude processing of + regions, which are not relevant to skew detection). + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's image data to get skew angle of. + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's image data to get skew angle of. + Image's rectangle to process (used to exclude processing of + regions, which are not relevant to skew detection). + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's unmanaged image to get skew angle of. + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's unmanaged image to get skew angle of. + Image's rectangle to process (used to exclude processing of + regions, which are not relevant to skew detection). + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Steps per degree, [1, 10]. + + + The value defines quality of Hough transform and its ability to detect + line slope precisely. + + Default value is set to 1. + + + + + + Maximum skew angle to detect, [0, 45] degrees. + + + The value sets maximum document's skew angle to detect. + Document's skew angle can be as positive (rotated counter clockwise), as negative + (rotated clockwise). So setting this value to 25, for example, will lead to + [-25, 25] degrees detection range. + + Scanned documents usually have skew in the [-20, 20] degrees range. + + Default value is set to 30. + + + + + + Minimum angle to detect skew in degrees. + + + The property is deprecated and setting it has not any effect. + Use property instead. + + + + + Maximum angle to detect skew in degrees. + + + The property is deprecated and setting it has not any effect. + Use property instead. + + + + + Radius for searching local peak value, [1, 10]. + + + The value determines radius around a map's value, which is analyzed to determine + if the map's value is a local maximum in specified area. + + Default value is set to 4. + + + + + Drawing primitives. + + + The class allows to do drawing of some primitives directly on + locked image data or unmanaged image. + + All methods of this class support drawing only on color 24/32 bpp images and + on grayscale 8 bpp indexed images. + + When it comes to alpha blending for 24/32 bpp images, all calculations are done + as described on Wikipeadia + (see "over" operator). + + + + + + Fill rectangle on the specified image. + + + Source image data to draw on. + Rectangle's coordinates to fill. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Fill rectangle on the specified image. + + + Source image to draw on. + Rectangle's coordinates to fill. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Draw rectangle on the specified image. + + + Source image data to draw on. + Rectangle's coordinates to draw. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Draw rectangle on the specified image. + + + Source image to draw on. + Rectangle's coordinates to draw. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Draw a line on the specified image. + + + Source image data to draw on. + The first point to connect. + The second point to connect. + Line's color. + + The source image has incorrect pixel format. + + + + + Draw a line on the specified image. + + + Source image to draw on. + The first point to connect. + The second point to connect. + Line's color. + + The source image has incorrect pixel format. + + + + + Draw a polygon on the specified image. + + + Source image data to draw on. + Points of the polygon to draw. + Polygon's color. + + The method draws a polygon by connecting all points from the + first one to the last one and then connecting the last point with the first one. + + + + + + Draw a polygon on the specified image. + + + Source image to draw on. + Points of the polygon to draw. + Polygon's color. + + The method draws a polygon by connecting all points from the + first one to the last one and then connecting the last point with the first one. + + + + + + Draw a polyline on the specified image. + + + Source image data to draw on. + Points of the polyline to draw. + polyline's color. + + The method draws a polyline by connecting all points from the + first one to the last one. Unlike + method, this method does not connect the last point with the first one. + + + + + + Draw a polyline on the specified image. + + + Source image to draw on. + Points of the polyline to draw. + polyline's color. + + The method draws a polyline by connecting all points from the + first one to the last one. Unlike + method, this method does not connect the last point with the first one. + + + + + + Unsupported image format exception. + + + The unsupported image format exception is thrown in the case when + user passes an image of certain format to an image processing routine, which does + not support the format. Check documentation of the image processing routine + to discover which formats are supported by the routine. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Invalid image properties exception. + + + The invalid image properties exception is thrown in the case when + user provides an image with certain properties, which are treated as invalid by + particular image processing routine. Another case when this exception is + thrown is the case when user tries to access some properties of an image (or + of a recently processed image by some routine), which are not valid for that image. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Block matching implementation with the exhaustive search algorithm. + + + The class implements exhaustive search block matching algorithm + (see documentation for for information about + block matching algorithms). Exhaustive search algorithm tests each possible + location of block within search window trying to find a match with minimal + difference. + + Because of the exhaustive nature of the algorithm, high performance + should not be expected in the case if big number of reference points is provided + or big block size and search radius are specified. Minimizing theses values increases + performance. But too small block size and search radius may affect quality. + + The class processes only grayscale (8 bpp indexed) and color (24 bpp) images. + + Sample usage: + + // collect reference points using corners detector (for example) + SusanCornersDetector scd = new SusanCornersDetector( 30, 18 ); + List<IntPoint> points = scd.ProcessImage( sourceImage ); + + // create block matching algorithm's instance + ExhaustiveBlockMatching bm = new ExhaustiveBlockMatching( 8, 12 ); + // process images searching for block matchings + List<BlockMatch> matches = bm.ProcessImage( sourceImage, points, searchImage ); + + // draw displacement vectors + BitmapData data = sourceImage.LockBits( + new Rectangle( 0, 0, sourceImage.Width, sourceImage.Height ), + ImageLockMode.ReadWrite, sourceImage.PixelFormat ); + + foreach ( BlockMatch match in matches ) + { + // highlight the original point in source image + Drawing.FillRectangle( data, + new Rectangle( match.SourcePoint.X - 1, match.SourcePoint.Y - 1, 3, 3 ), + Color.Yellow ); + // draw line to the point in search image + Drawing.Line( data, match.SourcePoint, match.MatchPoint, Color.Red ); + + // check similarity + if ( match.Similarity > 0.98f ) + { + // process block with high similarity somehow special + } + } + + sourceImage.UnlockBits( data ); + + + Test image 1 (source): + + Test image 2 (search): + + Result image: + + + + + + + Block matching interface. + + + The interface specifies set of methods, which should be implemented by different + block matching algorithms. + + Block matching algorithms work with two images - source and search image - and + a set of reference points. For each provided reference point, the algorithm takes + a block from source image (reference point is a coordinate of block's center) and finds + the best match for it in search image providing its coordinate (search is done within + search window of specified size). In other words, block matching algorithm tries to + find new coordinates in search image of specified reference points in source image. + + + + + + + Process images matching blocks between them. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. + + + + + Process images matching blocks between them. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. + + + + + Process images matching blocks between them. + + + Source unmanaged image with reference points. + List of reference points to be matched. + Unmanaged image in which the reference points will be looked for. + + Returns list of found block matches. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Block size to search for. + Search radius. + + + + + Process images matching blocks between hem. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. The list is sorted by similarity + of found matches in descending order. + + Source and search images sizes must match. + Source images can be grayscale (8 bpp indexed) or color (24 bpp) image only. + Source and search images must have same pixel format. + + + + + Process images matching blocks between them. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. The list is sorted by similarity + of found matches in descending order. + + Source and search images sizes must match. + Source images can be grayscale (8 bpp indexed) or color (24 bpp) image only. + Source and search images must have same pixel format. + + + + + Process images matching blocks between them. + + + Source unmanaged image with reference points. + List of reference points to be matched. + Unmanaged image in which the reference points will be looked for. + + Returns list of found block matches. The list is sorted by similarity + of found matches in descending order. + + Source and search images sizes must match. + Source images can be grayscale (8 bpp indexed) or color (24 bpp) image only. + Source and search images must have same pixel format. + + + + + Search radius. + + + The value specifies the shift from reference point in all + four directions, used to search for the best matching block. + + Default value is set to 12. + + + + + + Block size to search for. + + + The value specifies block size to search for. For each provided + reference pointer, a square block of this size is taken from the source image + (reference point becomes the coordinate of block's center) and the best match + is searched in second image within specified search + radius. + + Default value is set to 16. + + + + + + Similarity threshold, [0..1]. + + + The property sets the minimal acceptable similarity between blocks + in source and search images. If similarity is lower than this value, + then the candidate block in search image is not treated as a match for the block + in source image. + + + Default value is set to 0.9. + + + + + + Exhaustive template matching. + + + The class implements exhaustive template matching algorithm, + which performs complete scan of source image, comparing each pixel with corresponding + pixel of template. + + The class processes only grayscale 8 bpp and color 24 bpp images. + + Sample usage: + + // create template matching algorithm's instance + ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching( 0.9f ); + // find all matchings with specified above similarity + TemplateMatch[] matchings = tm.ProcessImage( sourceImage, templateImage ); + // highlight found matchings + BitmapData data = sourceImage.LockBits( + new Rectangle( 0, 0, sourceImage.Width, sourceImage.Height ), + ImageLockMode.ReadWrite, sourceImage.PixelFormat ); + foreach ( TemplateMatch m in matchings ) + { + Drawing.Rectangle( data, m.Rectangle, Color.White ); + // do something else with matching + } + sourceImage.UnlockBits( data ); + + + The class also can be used to get similarity level between two image of the same + size, which can be useful to get information about how different/similar are images: + + // create template matching algorithm's instance + // use zero similarity to make sure algorithm will provide anything + ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching( 0 ); + // compare two images + TemplateMatch[] matchings = tm.ProcessImage( image1, image2 ); + // check similarity level + if ( matchings[0].Similarity > 0.95f ) + { + // do something with quite similar images + } + + + + + + + + Template matching algorithm's interface. + + + The interface specifies set of methods, which should be implemented by different + template matching algorithms - algorithms, which search for the given template in specified + image. + + + + + Process image looking for matchings with specified template. + + + Source image to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found matchings. + + + + + Process image looking for matchings with specified template. + + + Source image data to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found matchings. + + + + + Process image looking for matchings with specified template. + + + Unmanaged source image to process. + Unmanaged template image to search for. + Rectangle in source image to search template for. + + Returns array of found matchings. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Similarity threshold. + + + + + Process image looking for matchings with specified template. + + + Source image to process. + Template image to search for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Source image to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Source image data to process. + Template image to search for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Source image data to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Unmanaged source image to process. + Unmanaged template image to search for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Unmanaged source image to process. + Unmanaged template image to search for. + Rectangle in source image to search template for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than search zone. + + + + + Similarity threshold, [0..1]. + + + The property sets the minimal acceptable similarity between template + and potential found candidate. If similarity is lower than this value, + then object is not treated as matching with template. + + + Default value is set to 0.9. + + + + + + Add fillter - add pixel values of two images. + + + The add filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the sum value of corresponding pixels from provided images (if sum is greater + than maximum allowed value, 255 or 65535, then it is truncated to that maximum). + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Add filter = new Add( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Base class for filters, which operate with two images of the same size and format and + may be applied directly to the source image. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing or + applied directly to the source image without changing its size and pixel format. + + The base class is aimed for such type of filters, which require additional image + to process the source image. The additional image is set by + or property and must have the same size and pixel format + as source image. See documentation of particular inherited class for information + about overlay image purpose. + + + + + + + Base class for filters, which may be applied directly to the source image. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing or + applied directly to the source image without changing its size and pixel format. + + + + + + Image processing filter interface. + + + The interface defines the set of methods, which should be + provided by all image processing filters. Methods of this interface + keep the source image unchanged and returt the result of image processing + filter as new image. + + + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image. + + + Image in unmanaged memory. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image. + + + Source image to be processed. + Destination image to store filter's result. + + The method keeps the source image unchanged and puts the + the result of image processing filter into destination image. + + The destination image must have the size, which is expected by + the filter. + + + In the case if destination image has incorrect + size. + + + + + In-place filter interface. + + + The interface defines the set of methods, which should be + implemented by filters, which are capable to do image processing + directly on the source image. Not all image processing filters + can be applied directly to the source image - only filters, which do not + change image's dimension and pixel format, can be applied directly to the + source image. + + + + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image in unmanaged memory. + + + Image in unmanaged memory. + + The method applies filter directly to the provided image data. + + + + + Interface which provides information about image processing filter. + + + The interface defines set of properties, which provide different type + of information about image processing filters implementing interface + or another filter's interface. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + Keys of this dictionary defines all pixel formats which are supported for source + images, but corresponding values define what will be resulting pixel format. For + example, if value Format16bppGrayScale + is put into the dictionary with the + Format48bppRgb key, then it means + that the filter accepts color 48 bpp image and produces 16 bpp grayscale image as a result + of image processing. + + The information provided by this property is mostly actual for filters, which can not + be applied directly to the source image, but provide new image a result. Since usually all + filters implement interface, the information provided by this property + (if filter also implements interface) may be useful to + user to resolve filter's capabilities. + + Sample usage: + + // get filter's IFilterInformation interface + IFilterInformation info = (IFilterInformation) filter; + // check if the filter supports our image's format + if ( info.FormatTranslations.ContainsKey( image.PixelFormat ) + { + // format is supported, check what will be result of image processing + PixelFormat resultingFormat = info.FormatTranslations[image.PixelFormat]; + } + /// + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + + Source and overlay images have different pixel formats and/or size. + Overlay image is not set. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + Overlay image size and pixel format is checked by this base class, before + passing execution to inherited class. + + + + + Overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Unmanaged overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Difference filter - get the difference between overlay and source images. + + + The difference filter takes two images (source and + overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to absolute difference between corresponding pixels from provided images. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + In the case if images with alpha channel are used (32 or 64 bpp), visualization + of the result image may seem a bit unexpected - most probably nothing will be seen + (in the case if image is displayed according to its alpha channel). This may be + caused by the fact that after differencing the entire alpha channel will be zeroed + (zero difference between alpha channels), what means that the resulting image will be + 100% transparent. + + Sample usage: + + // create filter + Difference filter = new Difference( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Intersect filter - get MIN of pixels in two images. + + + The intersect filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the minimum value of corresponding pixels from provided images. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Intersect filter = new Intersect( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Merge filter - get MAX of pixels in two images. + + + The merge filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the maximum value of corresponding pixels from provided images. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Merge filter = new Merge( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Morph filter. + + + The filter combines two images by taking + specified percent of pixels' intensities from source + image and the rest from overlay image. For example, if the + source percent value is set to 0.8, then each pixel + of the result image equals to 0.8 * source + 0.2 * overlay, where source + and overlay are corresponding pixels' values in source and overlay images. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + Morph filter = new Morph( overlayImage ); + filter.SourcePercent = 0.75; + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Percent of source image to keep, [0, 1]. + + + The property specifies the percentage of source pixels' to take. The + rest is taken from an overlay image. + + + + + Move towards filter. + + + The result of this filter is an image, which is based on source image, + but updated in the way to decrease diffirence with overlay image - source image is + moved towards overlay image. The update equation is defined in the next way: + res = src + Min( Abs( ovr - src ), step ) * Sign( ovr - src ). + + The bigger is step size value the more resulting + image will look like overlay image. For example, in the case if step size is equal + to 255 (or 65535 for images with 16 bits per channel), the resulting image will be + equal to overlay image regardless of source image's pixel values. In the case if step + size is set to 1, the resulting image will very little differ from the source image. + But, in the case if the filter is applied repeatedly to the resulting image again and + again, it will become equal to overlay image in maximum 255 (65535 for images with 16 + bits per channel) iterations. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + MoveTowards filter = new MoveTowards( overlayImage, 20 ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + Initializes a new instance of the class + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Overlay image. + Step size. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + Step size. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Step size, [0, 65535]. + + + + The property defines the maximum amount of changes per pixel in the source image. + + Default value is set to 1. + + + + + + Stereo anaglyph filter. + + + The image processing filter produces stereo anaglyph images which are + aimed to be viewed through anaglyph glasses with red filter over the left eye and + cyan over the right. + + + + The stereo image is produced by combining two images of the same scene taken + from a bit different points. The right image must be provided to the filter using + property, but the left image must be provided to + method, which creates the anaglyph image. + + The filter accepts 24 bpp color images for processing. + + See enumeration for the list of supported anaglyph algorithms. + + Sample usage: + + // create filter + StereoAnaglyph filter = new StereoAnaglyph( ); + // set right image as overlay + filter.Overlay = rightImage + // apply the filter (providing left image) + Bitmap resultImage = filter.Apply( leftImage ); + + + Source image (left): + + Overlay image (right): + + Result image: + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Algorithm to use for creating anaglyph images. + + + + + Process the filter on the specified image. + + + Source image data (left image). + Overlay image data (right image). + + + + + Algorithm to use for creating anaglyph images. + + + Default value is set to . + + + + + Format translations dictionary. + + + + + Enumeration of algorithms for creating anaglyph images. + + + See anaglyph methods comparison for + descipton of different algorithms. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.299*Rl+0.587*Gl+0.114*Bl; + Ga=0; + Ba=0.299*Rr+0.587*Gr+0.114*Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.299*Rl+0.587*Gl+0.114*Bl; + Ga=0.299*Rr+0.587*Gr+0.114*Br; + Ba=0.299*Rr+0.587*Gr+0.114*Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=Rl; + Ga=Gr; + Ba=Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.299*Rl+0.587*Gl+0.114*Bl; + Ga=Gr; + Ba=Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.7*Gl+0.3*Bl; + Ga=Gr; + Ba=Br. + + + + + + Subtract filter - subtract pixel values of two images. + + + The subtract filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the difference value of corresponding pixels from provided images (if difference is less + than minimum allowed value, 0, then it is truncated to that minimum value). + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Subtract filter = new Subtract( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Calculate difference between two images and threshold it. + + + The filter produces similar result as applying filter and + then filter - thresholded difference between two images. Result of this + image processing routine may be useful in motion detection applications or finding areas of significant + difference. + + The filter accepts 8 and 24/32color images for processing. + In the case of color images, the image processing routine differences sum over 3 RGB channels (Manhattan distance), i.e. + |diffR| + |diffG| + |diffB|. + + + Sample usage: + + // create filter + ThresholdedDifference filter = new ThresholdedDifference( 60 ); + // apply the filter + filter.OverlayImage = backgroundImage; + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Background image: + + Result image: + + + + + + + + + Base class for filters, which operate with two images of the same size and format and + produce new image as a result. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing. + + The base class is aimed for such type of filters, which require additional image + to process the source image. The additional image is set by + or property and must have the same size and pixel format + as source image. See documentation of particular inherited class for information + about overlay image purpose. + + + + + + + Base class for filters, which produce new image of the same size as a + result of image processing. + + + The abstract class is the base class for all filters, which + do image processing creating new image with the same size as source. + Filters based on this class cannot be applied directly to the source + image, which is kept unchanged. + + The base class itself does not define supported pixel formats of source + image and resulting pixel formats of destination image. Filters inheriting from + this base class, should specify supported pixel formats and their transformations + overriding abstract property. + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + Destination image data + + Overlay image size and pixel format is checked by this base class, before + passing execution to inherited class. + + + + + Overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Unmanaged overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Difference threshold (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + Destination image data + + + + + Difference threshold. + + + The property specifies difference threshold. If difference between pixels of processing image + and overlay image is greater than this value, then corresponding pixel of result image is set to white; otherwise + black. + + + Default value is set to 15. + + + + + Number of pixels which were set to white in destination image during last image processing call. + + + The property may be useful to determine amount of difference between two images which, + for example, may be treated as amount of motion in motion detection applications, etc. + + + + + Format translations dictionary. + + + See for more information. + + + + + Calculate Euclidean difference between two images and threshold it. + + + The filter produces similar to , however it uses + Euclidean distance for finding difference between pixel values instead of Manhattan distance. Result of this + image processing routine may be useful in motion detection applications or finding areas of significant + difference. + + The filter accepts 8 and 24/32color images for processing. + + Sample usage: + + // create filter + ThresholdedEuclideanDifference filter = new ThresholdedEuclideanDifference( 60 ); + // apply the filter + filter.OverlayImage = backgroundImage; + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Background image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Difference threshold (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + Destination image data + + + + + Difference threshold. + + + The property specifies difference threshold. If difference between pixels of processing image + and overlay image is greater than this value, then corresponding pixel of result image is set to white; otherwise + black. + + + Default value is set to 15. + + + + + Number of pixels which were set to white in destination image during last image processing call. + + + The property may be useful to determine amount of difference between two images which, + for example, may be treated as amount of motion in motion detection applications, etc. + + + + + Format translations dictionary. + + + See for more information. + + + + + Adaptive thresholding using the internal image. + + + The image processing routine implements local thresholding technique described + by Derek Bradley and Gerhard Roth in the "Adaptive Thresholding Using the Integral Image" paper. + + + The brief idea of the algorithm is that every image's pixel is set to black if its brightness + is t percent lower (see ) than the average brightness + of surrounding pixels in the window of the specified size (see ), othwerwise it is set + to white. + + Sample usage: + + // create the filter + BradleyLocalThresholding filter = new BradleyLocalThresholding( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Window size to calculate average value of pixels for. + + + The property specifies window size around processing pixel, which determines number of + neighbor pixels to use for calculating their average brightness. + + Default value is set to 41. + + The value should be odd. + + + + + + Brightness difference limit between processing pixel and average value across neighbors. + + + The property specifies what is the allowed difference percent between processing pixel + and average brightness of neighbor pixels in order to be set white. If the value of the + current pixel is t percent (this property value) lower than the average then it is set + to black, otherwise it is set to white. + + Default value is set to 0.15. + + + + + + Format translations dictionary. + + + See for more information. + + + + + Iterative threshold search and binarization. + + + + The algorithm works in the following way: + + select any start threshold; + compute average value of Background (µB) and Object (µO) values: + 1) all pixels with a value that is below threshold, belong to the Background values; + 2) all pixels greater or equal threshold, belong to the Object values. + + calculate new thresghold: (µB + µO) / 2; + if |oldThreshold - newThreshold| is less than a given manimum allowed error, then stop iteration process + and create the binary image with the new threshold. + + + + For additional information see Digital Image Processing, Gonzalez/Woods. Ch.10 page:599. + + The filter accepts 8 and 16 bpp grayscale images for processing. + + Since the filter can be applied as to 8 bpp and to 16 bpp images, + the initial value of property should be set appropriately to the + pixel format. In the case of 8 bpp images the threshold value is in the [0, 255] range, but + in the case of 16 bpp images the threshold value is in the [0, 65535] range. + + Sample usage: + + // create filter + IterativeThreshold filter = new IterativeThreshold( 2, 128 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image (calculated threshold is 102): + + + + + + + + + + Threshold binarization. + + + The filter does image binarization using specified threshold value. All pixels + with intensities equal or higher than threshold value are converted to white pixels. All other + pixels with intensities below threshold value are converted to black pixels. + + The filter accepts 8 and 16 bpp grayscale images for processing. + + Since the filter can be applied as to 8 bpp and to 16 bpp images, + the value should be set appropriately to the pixel format. + In the case of 8 bpp images the threshold value is in the [0, 255] range, but in the case + of 16 bpp images the threshold value is in the [0, 65535] range. + + Sample usage: + + // create filter + Threshold filter = new Threshold( 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Base class for filters, which may be applied directly to the source image or its part. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing or + applied directly to the source image (or its part) without changing its size and + pixel format. + + + + + + In-place partial filter interface. + + + The interface defines the set of methods, which should be + implemented by filters, which are capable to do image processing + directly on the source image. Not all image processing filters + can be applied directly to the source image - only filters, which do not + change image dimension and pixel format, can be applied directly to the + source image. + + The interface also supports partial image filtering, allowing to specify + image rectangle, which should be filtered. + + + + + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by filter. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by filter. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image in unmanaged memory. + + + Image in unmanaged memory. + Image rectangle for processing by filter. + + The method applies filter directly to the provided image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Threshold value. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Threshold value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + Default value is set to 128. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Minimum allowed error, that ends the iteration process. + + + + + Initializes a new instance of the class. + + + Minimum allowed error, that ends the iteration process. + Initial threshold value. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should + 8 bpp grayscale (indexed) or 16 bpp grayscale image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should + 8 bpp grayscale (indexed) or 16 bpp grayscale image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should + 8 bpp grayscale (indexed) or 16 bpp grayscale image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Minimum error, value when iterative threshold search is stopped. + + + Default value is set to 0. + + + + + Otsu thresholding. + + + The class implements Otsu thresholding, which is described in + N. Otsu, "A threshold selection method from gray-level histograms", IEEE Trans. Systems, + Man and Cybernetics 9(1), pp. 62–66, 1979. + + This implementation instead of minimizing the weighted within-class variance + does maximization of between-class variance, what gives the same result. The approach is + described in this presentation. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + OtsuThreshold filter = new OtsuThreshold( ); + // apply the filter + filter.ApplyInPlace( image ); + // check threshold value + byte t = filter.ThresholdValue; + // ... + + + Initial image: + + Result image (calculated threshold is 97): + + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + The property is read only and represents the value, which + was automaticaly calculated using Otsu algorithm. + + + + + Threshold using Simple Image Statistics (SIS). + + + The filter performs image thresholding calculating threshold automatically + using simple image statistics method. For each pixel: + + two gradients are calculated - ex = |I(x + 1, y) - I(x - 1, y)| and + |I(x, y + 1) - I(x, y - 1)|; + weight is calculated as maximum of two gradients; + sum of weights is updated (weightTotal += weight); + sum of weighted pixel values is updated (total += weight * I(x, y)). + + The result threshold is calculated as sum of weighted pixel values divided by sum of weight. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SISThreshold filter = new SISThreshold( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image (calculated threshold is 127): + + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + The property is read only and represents the value, which + was automaticaly calculated using image statistics. + + + + + Base class for image resizing filters. + + + The abstract class is the base class for all filters, + which implement image rotation algorithms. + + + + + + Base class for filters, which may produce new image of different size as a + result of image processing. + + + The abstract class is the base class for all filters, which + do image processing creating new image of the size, which may differ from the + size of source image. Filters based on this class cannot be applied directly + to the source image, which is kept unchanged. + + The base class itself does not define supported pixel formats of source + image and resulting pixel formats of destination image. Filters inheriting from + this base class, should specify supported pixel formats and their transformations + overriding abstract property. + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + New image width. + + + + + New image height. + + + + + Initializes a new instance of the class. + + + Width of the new resized image. + Height of the new resize image. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Width of the new resized image. + + + + + + Height of the new resized image. + + + + + + Base class for image rotation filters. + + + The abstract class is the base class for all filters, + which implement rotating algorithms. + + + + + Rotation angle. + + + + + Keep image size or not. + + + + + Fill color. + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property to false. + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Rotation angle, [0, 360]. + + + + + Keep image size or not. + + + The property determines if source image's size will be kept + as it is or not. If the value is set to false, then the new image will have + new dimension according to rotation angle. If the valus is set to + true, then the new image will have the same size, which means that some parts + of the image may be clipped because of rotation. + + + + + + Fill color. + + + The fill color is used to fill areas of destination image, + which don't have corresponsing pixels in source image. + + + + + Base class for filters, which require source image backup to make them applicable to + source image (or its part) directly. + + + The base class is used for filters, which can not do + direct manipulations with source image. To make effect of in-place filtering, + these filters create a background copy of the original image (done by this + base class) and then do manipulations with it putting result back to the original + source image. + + The background copy of the source image is created only in the case of in-place + filtering. Otherwise background copy is not created - source image is processed and result is + put to destination image. + + The base class is for those filters, which support as filtering entire image, as + partial filtering of specified rectangle only. + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Ordered dithering using Bayer matrix. + + + The filter represents filter initialized + with the next threshold matrix: + + byte[,] matrix = new byte[4, 4] + { + { 0, 192, 48, 240 }, + { 128, 64, 176, 112 }, + { 32, 224, 16, 208 }, + { 160, 96, 144, 80 } + }; + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + BayerDithering filter = new BayerDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Binarization with thresholds matrix. + + + Idea of the filter is the same as idea of filter - + change pixel value to white, if its intensity is equal or higher than threshold value, or + to black otherwise. But instead of using single threshold value for all pixel, the filter + uses matrix of threshold values. Processing image is divided to adjacent windows of matrix + size each. For pixels binarization inside of each window, corresponding threshold values are + used from specified threshold matrix. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create binarization matrix + byte[,] matrix = new byte[4, 4] + { + { 95, 233, 127, 255 }, + { 159, 31, 191, 63 }, + { 111, 239, 79, 207 }, + { 175, 47, 143, 15 } + }; + // create filter + OrderedDithering filter = new OrderedDithering( matrix ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Thresholds matrix. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Initializes a new instance of the class. + + + + + + Dithering using Burkes error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Burkes coefficients. Error is diffused + on 7 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + + / 32 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + BurkesDithering filter = new BurkesDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Base class for error diffusion dithering, where error is diffused to + adjacent neighbor pixels. + + + The class does error diffusion to adjacent neighbor pixels + using specified set of coefficients. These coefficients are represented by + 2 dimensional jugged array, where first array of coefficients is for + right-standing pixels, but the rest of arrays are for bottom-standing pixels. + All arrays except the first one should have odd number of coefficients. + + Suppose that error diffusion coefficients are represented by the next + jugged array: + + + int[][] coefficients = new int[2][] { + new int[1] { 7 }, + new int[3] { 3, 5, 1 } + }; + + + The above coefficients are used to diffuse error over the next neighbor + pixels (* marks current pixel, coefficients are placed to corresponding + neighbor pixels): + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + ErrorDiffusionToAdjacentNeighbors filter = new ErrorDiffusionToAdjacentNeighbors( + new int[3][] { + new int[2] { 5, 3 }, + new int[5] { 2, 4, 5, 4, 2 }, + new int[3] { 2, 3, 2 } + } ); + // apply the filter + filter.ApplyInPlace( image ); + + + + + + + Base class for error diffusion dithering. + + + The class is the base class for binarization algorithms based on + error diffusion. + + Binarization with error diffusion in its idea is similar to binarization based on thresholding + of pixels' cumulative value (see ). Each pixel is binarized based not only + on its own value, but on values of some surrounding pixels. During pixel's binarization, its binarization + error is distributed (diffused) to some neighbor pixels with some coefficients. This error diffusion + updates neighbor pixels changing their values, what affects their upcoming binarization. Error diffuses + only on unprocessed yet neighbor pixels, which are right and bottom pixels usually (in the case if image + processing is done from upper left corner to bottom right corner). Binarization error equals + to processing pixel value, if it is below threshold value, or pixel value minus 255 otherwise. + + The filter accepts 8 bpp grayscale images for processing. + + + + + + Current processing X coordinate. + + + + + Current processing Y coordinate. + + + + + Processing X start position. + + + + + Processing Y start position. + + + + + Processing X stop position. + + + + + Processing Y stop position. + + + + + Processing image's stride (line size). + + + + + Initializes a new instance of the class. + + + + + + Do error diffusion. + + + Current error value. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized in protected members. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Threshold value. + + + Default value is 128. + + + + + Format translations dictionary. + + + + + Initializes a new instance of the class. + + + Diffusion coefficients. + + + + + Do error diffusion. + + + Current error value. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized by base class. + + + + + Diffusion coefficients. + + + Set of coefficients, which are used for error diffusion to + pixel's neighbors. + + + + + Initializes a new instance of the class. + + + + + + Dithering using Floyd-Steinberg error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Floyd-Steinberg + coefficients. Error is diffused on 4 neighbor pixels with next coefficients: + + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + FloydSteinbergDithering filter = new FloydSteinbergDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Dithering using Jarvis, Judice and Ninke error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Jarvis-Judice-Ninke coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 7 | 5 | + | 3 | 5 | 7 | 5 | 3 | + | 1 | 3 | 5 | 3 | 1 | + + / 48 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + JarvisJudiceNinkeDithering filter = new JarvisJudiceNinkeDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Dithering using Sierra error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Sierra coefficients. Error is diffused + on 10 neighbor pixels with next coefficients: + + | * | 5 | 3 | + | 2 | 4 | 5 | 4 | 2 | + | 2 | 3 | 2 | + + / 32 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SierraDithering filter = new SierraDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Dithering using Stucki error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Stucki coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + | 1 | 2 | 4 | 2 | 1 | + + / 42 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + StuckiDithering filter = new StuckiDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Threshold binarization with error carry. + + + The filter is similar to filter in the way, + that it also uses threshold value for image binarization. Unlike regular threshold + filter, this filter uses cumulative pixel value in comparing with threshold value. + If cumulative pixel value is below threshold value, then image pixel becomes black. + If cumulative pixel value is equal or higher than threshold value, then image pixel + becomes white and cumulative pixel value is decreased by 255. In the beginning of each + image line the cumulative value is reset to 0. + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + Threshold filter = new Threshold( 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Threshold value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + Default value is 128. + + + + + Generic Bayer fileter image processing routine. + + + The class implements Bayer filter + routine, which creates color image out of grayscale image produced by image sensor built with + Bayer color matrix. + + This Bayer filter implementation is made generic by allowing user to specify used + Bayer pattern. This makes it slower. For optimized version + of the Bayer filter see class, which implements Bayer filter + specifically optimized for some well known patterns. + + The filter accepts 8 bpp grayscale images and produces 24 bpp RGB image. + + Sample usage: + + // create filter + BayerFilter filter = new BayerFilter( ); + // apply the filter + Bitmap rgbImage = filter.Apply( image ); + + + Source image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Specifies if demosaicing must be done or not. + + + The property specifies if color demosaicing must be done or not. + If the property is set to , then pixels of the result color image + are colored according to the Bayer pattern used, i.e. every pixel + of the source grayscale image is copied to corresponding color plane of the result image. + If the property is set to , then pixels of the result image + are set to color, which is obtained by averaging color components from the 3x3 window - pixel + itself plus 8 surrounding neighbors. + + Default value is set to . + + + + + + Specifies Bayer pattern used for decoding color image. + + + The property specifies 2x2 array of RGB color indexes, which set the + Bayer patter used for decoding color image. + + By default the property is set to: + + new int[2, 2] { { RGB.G, RGB.R }, { RGB.B, RGB.G } } + , + which corresponds to + + G R + B G + + pattern. + + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Set of Bayer patterns supported by . + + + + + Pattern:

+ G R
+ B G +
+
+ + + Pattern:

+ B G
+ G R +
+
+ + + Optimized Bayer fileter image processing routine. + + + The class implements Bayer filter + routine, which creates color image out of grayscale image produced by image sensor built with + Bayer color matrix. + + This class does all the same as class. However this version is + optimized for some well known patterns defined in enumeration. + Also this class processes images with even width and height only. Image size must be at least 2x2 pixels. + + + The filter accepts 8 bpp grayscale images and produces 24 bpp RGB image. + + Sample usage: + + // create filter + BayerFilter filter = new BayerFilter( ); + // apply the filter + Bitmap rgbImage = filter.Apply( image ); + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Bayer pattern of source images to decode. + + + The property specifies Bayer pattern of source images to be + decoded into color images. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Brightness adjusting in RGB color space. + + + The filter operates in RGB color space and adjusts + pixels' brightness by increasing every pixel's RGB values by the specified + adjust value. The filter is based on + filter and simply sets all input ranges to (0, 255-) and + all output range to (, 255) in the case if the adjust value is positive. + If the adjust value is negative, then all input ranges are set to + (-, 255 ) and all output ranges are set to + ( 0, 255+). + + See documentation for more information about the base filter. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + BrightnessCorrection filter = new BrightnessCorrection( -50 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Brightness adjust value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Brightness adjust value, [-255, 255]. + + + Default value is set to 10, which corresponds to increasing + RGB values of each pixel by 10. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Channels filters. + + + The filter does color channels' filtering by clearing (filling with + specified values) values, which are inside/outside of the specified value's + range. The filter allows to fill certain ranges of RGB color channels with specified + value. + + The filter is similar to , but operates with not + entire pixels, but with their RGB values individually. This means that pixel itself may + not be filtered (will be kept), but one of its RGB values may be filtered if they are + inside/outside of specified range. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + ChannelFiltering filter = new ChannelFiltering( ); + // set channels' ranges to keep + filter.Red = new IntRange( 0, 255 ); + filter.Green = new IntRange( 100, 255 ); + filter.Blue = new IntRange( 100, 255 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Red channel's filtering range. + Green channel's filtering range. + Blue channel's filtering range. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Calculate filtering map. + + + Filtering range. + Fillter value. + Fill outside or inside the range. + Filtering map. + + + + + Format translations dictionary. + + + + + Red channel's range. + + + + + Red fill value. + + + + + Green channel's range. + + + + + Green fill value. + + + + + Blue channel's range. + + + + + Blue fill value. + + + + + Determines, if red channel should be filled inside or outside filtering range. + + + Default value is set to . + + + + + Determines, if green channel should be filled inside or outside filtering range. + + + Default value is set to . + + + + + Determines, if blue channel should be filled inside or outside filtering range. + + + Default value is set to . + + + + + Color filtering. + + + The filter filters pixels inside/outside of specified RGB color range - + it keeps pixels with colors inside/outside of specified range and fills the rest with + specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + ColorFiltering filter = new ColorFiltering( ); + // set color ranges to keep + filter.Red = new IntRange( 100, 255 ); + filter.Green = new IntRange( 0, 75 ); + filter.Blue = new IntRange( 0, 75 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Red components filtering range. + Green components filtering range. + Blue components filtering range. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Range of red color component. + + + + + Range of green color component. + + + + + Range of blue color component. + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside of specified + color ranges. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Color remapping. + + + The filter allows to remap colors of the image. Unlike filter + the filter allow to do non-linear remapping. For each pixel of specified image the filter changes + its values (value of each color plane) to values, which are stored in remapping arrays by corresponding + indexes. For example, if pixel's RGB value equals to (32, 96, 128), the filter will change it to + ([32], [96], [128]). + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create map + byte[] map = new byte[256]; + for ( int i = 0; i < 256; i++ ) + { + map[i] = (byte) Math.Min( 255, Math.Pow( 2, (double) i / 32 ) ); + } + // create filter + ColorRemapping filter = new ColorRemapping( map, map, map ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Initializes the filter without any remapping. All + pixel values are mapped to the same values. + + + + + Initializes a new instance of the class. + + + Red map. + Green map. + Blue map. + + + + + Initializes a new instance of the class. + + + Gray map. + + This constructor is supposed for grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Remapping array for red color plane. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's red value r to [r]. + + A map should be array with 256 value. + + + + + Remapping array for green color plane. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's green value g to [g]. + + A map should be array with 256 value. + + + + + Remapping array for blue color plane. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's blue value b to [b]. + + A map should be array with 256 value. + + + + + Remapping array for gray color. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's value g to [g]. + + The gray map is for grayscale images only. + + A map should be array with 256 value. + + + + + Contrast adjusting in RGB color space. + + + The filter operates in RGB color space and adjusts + pixels' contrast value by increasing RGB values of bright pixel and decreasing + RGB values of dark pixels (or vise versa if contrast needs to be decreased). + The filter is based on + filter and simply sets all input ranges to (, 255-) and + all output range to (0, 255) in the case if the factor value is positive. + If the factor value is negative, then all input ranges are set to + (0, 255 ) and all output ranges are set to + (-, 255_). + + See documentation forr more information about the base filter. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + ContrastCorrection filter = new ContrastCorrection( 15 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Contrast adjusting factor. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Contrast adjusting factor, [-127, 127]. + + + Factor which is used to adjust contrast. Factor values greater than + 0 increase contrast making light areas lighter and dark areas darker. Factor values + less than 0 decrease contrast - decreasing variety of contrast. + + Default value is set to 10. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Contrast stretching filter. + + + Contrast stretching (or as it is often called normalization) is a simple image enhancement + technique that attempts to improve the contrast in an image by 'stretching' the range of intensity values + it contains to span a desired range of values, e.g. the full range of pixel values that the image type + concerned allows. It differs from the more sophisticated histogram equalization + in that it can only apply a linear scaling function to the image pixel values. + + The result of this filter may be achieved by using class, which allows to + get pixels' intensities histogram, and filter, which does linear correction + of pixel's intensities. + + The filter accepts 8 bpp grayscale and 24 bpp color images. + + Sample usage: + + // create filter + ContrastStretch filter = new ContrastStretch( ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Source image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Euclidean color filtering. + + + The filter filters pixels, which color is inside/outside + of RGB sphere with specified center and radius - it keeps pixels with + colors inside/outside of the specified sphere and fills the rest with + specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + EuclideanColorFiltering filter = new EuclideanColorFiltering( ); + // set center colol and radius + filter.CenterColor = new RGB( 215, 30, 30 ); + filter.Radius = 100; + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + RGB sphere's center. + RGB sphere's radius. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + RGB sphere's radius, [0, 450]. + + + Default value is 100. + + + + + RGB sphere's center. + + + Default value is (255, 255, 255) - white color. + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside specified + RGB sphere. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Extract RGB channel from image. + + + Extracts specified channel of color image and returns + it as grayscale image. + + The filter accepts 24, 32, 48 and 64 bpp color images and produces + 8 (if source is 24 or 32 bpp image) or 16 (if source is 48 or 64 bpp image) + bpp grayscale image. + + Sample usage: + + // create filter + ExtractChannel filter = new ExtractChannel( RGB.G ); + // apply the filter + Bitmap channelImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + ARGB channel to extract. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + Can not extract alpha channel from none ARGB image. The + exception is throw, when alpha channel is requested from RGB image. + + + + + Format translations dictionary. + + + + + ARGB channel to extract. + + + Default value is set to . + + Invalid channel is specified. + + + + + Gamma correction filter. + + + The filter performs gamma correction + of specified image in RGB color space. Each pixels' value is converted using the Vout=Ving + equation, where g is gamma value. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + GammaCorrection filter = new GammaCorrection( 0.5 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Gamma value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Gamma value, [0.1, 5.0]. + + + Default value is set to 2.2. + + + + + Base class for image grayscaling. + + + This class is the base class for image grayscaling. Other + classes should inherit from this class and specify RGB + coefficients used for color image conversion to grayscale. + + The filter accepts 24, 32, 48 and 64 bpp color images and produces + 8 (if source is 24 or 32 bpp image) or 16 (if source is 48 or 64 bpp image) + bpp grayscale image. + + Sample usage: + + // create grayscale filter (BT709) + Grayscale filter = new Grayscale( 0.2125, 0.7154, 0.0721 ); + // apply the filter + Bitmap grayImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + Portion of red channel's value to use during conversion from RGB to grayscale. + + + + + + Portion of green channel's value to use during conversion from RGB to grayscale. + + + + + + Portion of blue channel's value to use during conversion from RGB to grayscale. + + + + + + Initializes a new instance of the class. + + + Red coefficient. + Green coefficient. + Blue coefficient. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + Set of predefined common grayscaling algorithms, which have + already initialized grayscaling coefficients. + + + + + + Grayscale image using BT709 algorithm. + + + + The instance uses BT709 algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.2125; + Green: 0.7154; + Blue: 0.0721. + + + Sample usage: + + + // apply the filter + Bitmap grayImage = Grayscale.CommonAlgorithms.BT709.Apply( image ); + + + + + + + Grayscale image using R-Y algorithm. + + + + The instance uses R-Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.5; + Green: 0.419; + Blue: 0.081. + + + Sample usage: + + + // apply the filter + Bitmap grayImage = Grayscale.CommonAlgorithms.RMY.Apply( image ); + + + + + + + Grayscale image using Y algorithm. + + + + The instance uses Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.299; + Green: 0.587; + Blue: 0.114. + + + Sample usage: + + + // apply the filter + Bitmap grayImage = Grayscale.CommonAlgorithms.Y.Apply( image ); + + + + + + + Grayscale image using BT709 algorithm. + + + The class uses BT709 algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.2125; + Green: 0.7154; + Blue: 0.0721. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Grayscale image using R-Y algorithm. + + + The class uses R-Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.5; + Green: 0.419; + Blue: 0.081. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Convert grayscale image to RGB. + + + The filter creates color image from specified grayscale image + initializing all RGB channels to the same value - pixel's intensity of grayscale image. + + The filter accepts 8 bpp grayscale images and produces + 24 bpp RGB image. + + Sample usage: + + // create filter + GrayscaleToRGB filter = new GrayscaleToRGB( ); + // apply the filter + Bitmap rgbImage = filter.Apply( image ); + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Grayscale image using Y algorithm. + + + The class uses Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.299; + Green: 0.587; + Blue: 0.114. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Histogram equalization filter. + + + The filter does histogram equalization increasing local contrast in images. The effect + of histogram equalization can be better seen on images, where pixel values have close contrast values. + Through this adjustment, pixels intensities can be better distributed on the histogram. This allows for + areas of lower local contrast to gain a higher contrast without affecting the global contrast. + + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + For color images the histogram equalization is applied to each color plane separately. + + Sample usage: + + // create filter + HistogramEqualization filter = new HistogramEqualization( ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Source image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Invert image. + + + The filter inverts colored and grayscale images. + + The filter accepts 8, 16 bpp grayscale and 24, 48 bpp color images for processing. + + Sample usage: + + // create filter + Invert filter = new Invert( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Linear correction of RGB channels. + + + The filter performs linear correction of RGB channels by mapping specified + channels' input ranges to output ranges. It is similar to the + , but the remapping is linear. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + LevelsLinear filter = new LevelsLinear( ); + // set ranges + filter.InRed = new IntRange( 30, 230 ); + filter.InGreen = new IntRange( 50, 240 ); + filter.InBlue = new IntRange( 10, 210 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Calculate conversion map. + + + Input range. + Output range. + Conversion map. + + + + + Format translations dictionary. + + + + + Red component's input range. + + + + + Green component's input range. + + + + + Blue component's input range. + + + + + Gray component's input range. + + + + + Input range for RGB components. + + + The property allows to set red, green and blue input ranges to the same value. + + + + + Red component's output range. + + + + + Green component's output range. + + + + + Blue component's output range. + + + + + Gray component's output range. + + + + + Output range for RGB components. + + + The property allows to set red, green and blue output ranges to the same value. + + + + + Linear correction of RGB channels for images, which have 16 bpp planes (16 bit gray images or 48/64 bit colour images). + + + The filter performs linear correction of RGB channels by mapping specified + channels' input ranges to output ranges. This version of the filter processes only images + with 16 bpp colour planes. See for 8 bpp version. + + The filter accepts 16 bpp grayscale and 48/64 bpp colour images for processing. + + Sample usage: + + // create filter + LevelsLinear16bpp filter = new LevelsLinear16bpp( ); + // set ranges + filter.InRed = new IntRange( 3000, 42000 ); + filter.InGreen = new IntRange( 5000, 37500 ); + filter.InBlue = new IntRange( 1000, 60000 ); + // apply the filter + filter.ApplyInPlace( image ); + + + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Calculate conversion map. + + + Input range. + Output range. + Conversion map. + + + + + Format translations dictionary. + + + + + Red component's input range. + + + + + Green component's input range. + + + + + Blue component's input range. + + + + + Gray component's input range. + + + + + Input range for RGB components. + + + The property allows to set red, green and blue input ranges to the same value. + + + + + Red component's output range. + + + + + Green component's output range. + + + + + Blue component's output range. + + + + + Gray component's output range. + + + + + Output range for RGB components. + + + The property allows to set red, green and blue output ranges to the same value. + + + + + Replace RGB channel of color imgae. + + + Replaces specified RGB channel of color image with + specified grayscale image. + + The filter is quite useful in conjunction with filter + (however may be used alone in some cases). Using the filter + it is possible to extract one of RGB channel, perform some image processing with it and then + put it back into the original color image. + + The filter accepts 24, 32, 48 and 64 bpp color images for processing. + + Sample usage: + + // extract red channel + ExtractChannel extractFilter = new ExtractChannel( RGB.R ); + Bitmap channel = extractFilter.Apply( image ); + // threshold channel + Threshold thresholdFilter = new Threshold( 230 ); + thresholdFilter.ApplyInPlace( channel ); + // put the channel back + ReplaceChannel replaceFilter = new ReplaceChannel( RGB.R, channel ); + replaceFilter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + ARGB channel to replace. + + + + + Initializes a new instance of the class. + + + ARGB channel to replace. + Channel image to use for replacement. + + + + + Initializes a new instance of the class. + + + RGB channel to replace. + Unmanaged channel image to use for replacement. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + Channel image was not specified. + Channel image size does not match source + image size. + Channel image's format does not correspond to format of the source image. + + Can not replace alpha channel of none ARGB image. The + exception is throw, when alpha channel is requested to be replaced in RGB image. + + + + + Format translations dictionary. + + + + + ARGB channel to replace. + + + Default value is set to . + + Invalid channel is specified. + + + + + Grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8 bpp indexed or 16 bpp grayscale image. + + + + + Unmanaged grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8 bpp indexed or 16 bpp grayscale image. + + + + + Rotate RGB channels. + + + The filter rotates RGB channels: red channel is replaced with green, + green channel is replaced with blue, blue channel is replaced with red. + + The filter accepts 24/32 bpp color images for processing. + + Sample usage: + + // create filter + RotateChannels filter = new RotateChannels( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Sepia filter - old brown photo. + + + The filter makes an image look like an old brown photo. The main + idea of the algorithm: + + transform to YIQ color space; + modify it; + transform back to RGB. + + + + 1) RGB -> YIQ: + + Y = 0.299 * R + 0.587 * G + 0.114 * B + I = 0.596 * R - 0.274 * G - 0.322 * B + Q = 0.212 * R - 0.523 * G + 0.311 * B + + + + + 2) update: + + I = 51 + Q = 0 + + + + + 3) YIQ -> RGB: + + R = 1.0 * Y + 0.956 * I + 0.621 * Q + G = 1.0 * Y - 0.272 * I - 0.647 * Q + B = 1.0 * Y - 1.105 * I + 1.702 * Q + + + + The filter accepts 24/32 bpp color images for processing. + + Sample usage: + + // create filter + Sepia filter = new Sepia( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Simple posterization of an image. + + + The class implements simple posterization of an image by splitting + each color plane into adjacent areas of the specified size. After the process + is done, each color plane will contain maximum of 256/PosterizationInterval levels. + For example, if grayscale image is posterized with posterization interval equal to 64, + then result image will contain maximum of 4 tones. If color image is posterized with the + same posterization interval, then it will contain maximum of 43=64 colors. + See property to get information about the way how to control + color used to fill posterization areas. + + Posterization is a process in photograph development which converts normal photographs + into an image consisting of distinct, but flat, areas of different tones or colors. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images. + + Sample usage: + + // create filter + SimplePosterization filter = new SimplePosterization( ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Specifies filling type of posterization areas. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Posterization interval, which specifies size of posterization areas. + + + The property specifies size of adjacent posterization areas + for each color plane. The value has direct effect on the amount of colors + in the result image. For example, if grayscale image is posterized with posterization + interval equal to 64, then result image will contain maximum of 4 tones. If color + image is posterized with same posterization interval, then it will contain maximum + of 43=64 colors. + + Default value is set to 64. + + + + + + Posterization filling type. + + + The property controls the color, which is used to substitute + colors within the same posterization interval - minimum, maximum or average value. + + + Default value is set to . + + + + + + Format translations dictionary. + + + + + Enumeration of possible types of filling posterized areas. + + + + + Fill area with minimum color's value. + + + + + Fill area with maximum color's value. + + + + + Fill area with average color's value. + + + + + Blur filter. + + + The filter performs convolution filter using + the blur kernel: + + + 1 2 3 2 1 + 2 4 5 4 2 + 3 5 6 5 3 + 2 4 5 4 2 + 1 2 3 2 1 + + + For the list of supported pixel formats, see the documentation to + filter. + + By default this filter sets property to + , so the alpha channel of 32 bpp and 64 bpp images is blurred as well. + + + Sample usage: + + // create filter + Blur filter = new Blur( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Convolution filter. + + + The filter implements convolution operator, which calculates each pixel + of the result image as weighted sum of the correspond pixel and its neighbors in the source + image. The weights are set by convolution kernel. The weighted + sum is divided by before putting it into result image and also + may be thresholded using value. + + Convolution is a simple mathematical operation which is fundamental to many common + image processing filters. Depending on the type of provided kernel, the filter may produce + different results, like blur image, sharpen it, find edges, etc. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. Note: depending on the value of + property, the alpha channel is either copied as is or processed with the kernel. + + Sample usage: + + // define emboss kernel + int[,] kernel = { + { -2, -1, 0 }, + { -1, 1, 1 }, + { 0, 1, 2 } }; + // create filter + Convolution filter = new Convolution( kernel ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Convolution kernel. + + Using this constructor (specifying only convolution kernel), + division factor will be calculated automatically + summing all kernel values. In the case if kernel's sum equals to zero, + division factor will be assigned to 1. + + Invalid kernel size is specified. Kernel must be + square, its width/height should be odd and should be in the [3, 25] range. + + + + + Initializes a new instance of the class. + + + Convolution kernel. + Divisor, used used to divide weighted sum. + + Invalid kernel size is specified. Kernel must be + square, its width/height should be odd and should be in the [3, 25] range. + Divisor can not be equal to zero. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Convolution kernel. + + + + Convolution kernel must be square and its width/height + should be odd and should be in the [3, 99] range. + + Setting convolution kernel through this property does not + affect - it is not recalculated automatically. + + + Invalid kernel size is specified. + + + + + Division factor. + + + The value is used to divide convolution - weighted sum + of pixels is divided by this value. + + The value may be calculated automatically in the case if constructor + with one parameter is used (). + + + Divisor can not be equal to zero. + + + + + Threshold to add to weighted sum. + + + The property specifies threshold value, which is added to each weighted + sum of pixels. The value is added right after division was done by + value. + + Default value is set to 0. + + + + + + Use dynamic divisor for edges or not. + + + The property specifies how to handle edges. If it is set to + , then the same divisor (which is specified by + property or calculated automatically) will be applied both for non-edge regions + and for edge regions. If the value is set to , then dynamically + calculated divisor will be used for edge regions, which is sum of those kernel + elements, which are taken into account for particular processed pixel + (elements, which are not outside image). + + Default value is set to . + + + + + + Specifies if alpha channel must be processed or just copied. + + + The property specifies the way how alpha channel is handled for 32 bpp + and 64 bpp images. If the property is set to , then alpha + channel's values are just copied as is. If the property is set to + then alpha channel is convolved using the specified kernel same way as RGB channels. + + Default value is set to . + + + + + + Initializes a new instance of the class. + + + + + Simple edge detector. + + + The filter performs convolution filter using + the edges kernel: + + + 0 -1 0 + -1 4 -1 + 0 -1 0 + + + For the list of supported pixel formats, see the documentation to + filter. + + Sample usage: + + // create filter + Edges filter = new Edges( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + Gaussian blur filter. + + + The filter performs convolution filter using + the kernel, which is calculate with the help of + method and then converted to integer kernel by dividing all elements by the element with the + smallest value. Using the kernel the convolution filter is known as Gaussian blur. + + Using property it is possible to configure + sigma value of Gaussian function. + + For the list of supported pixel formats, see the documentation to + filter. + + By default this filter sets property to + , so the alpha channel of 32 bpp and 64 bpp images is blurred as well. + + + Sample usage: + + // create filter with kernel size equal to 11 + // and Gaussia sigma value equal to 4.0 + GaussianBlur filter = new GaussianBlur( 4, 11 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + Kernel size. + + + + + Gaussian sigma value, [0.5, 5.0]. + + + Sigma value for Gaussian function used to calculate + the kernel. + + Default value is set to 1.4. + + + + + + Kernel size, [3, 21]. + + + Size of Gaussian kernel. + + Default value is set to 5. + + + + + + Mean filter. + + + The filter performs each pixel value's averaging with its 8 neighbors, which is + convolution filter using the mean kernel: + + + 1 1 1 + 1 1 1 + 1 1 1 + + + For the list of supported pixel formats, see the documentation to + filter. + + With the above kernel the convolution filter is just calculates each pixel's value + in result image as average of 9 corresponding pixels in the source image. + + By default this filter sets property to + , so the alpha channel of 32 bpp and 64 bpp images is blurred as well. + + + Sample usage: + + // create filter + Mean filter = new Mean( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + Sharpen filter + + + The filter performs convolution filter using + the sharpen kernel: + + + 0 -1 0 + -1 5 -1 + 0 -1 0 + + + For the list of supported pixel formats, see the documentation to + filter. + + Sample usage: + + // create filter + Sharpen filter = new Sharpen( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + Gaussian sharpen filter. + + + The filter performs convolution filter using + the kernel, which is calculate with the help of + method and then converted to integer sharpening kernel. First of all the integer kernel + is calculated from by dividing all elements by + the element with the smallest value. Then the integer kernel is converted to sharpen kernel by + negating all kernel's elements (multiplying with -1), but the central kernel's element + is calculated as 2 * sum - centralElement, where sum is the sum off elements + in the integer kernel before negating. + + For the list of supported pixel formats, see the documentation to + filter. + + Sample usage: + + // create filter with kernel size equal to 11 + // and Gaussia sigma value equal to 4.0 + GaussianSharpen filter = new GaussianSharpen( 4, 11 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + Kernel size. + + + + + Gaussian sigma value, [0.5, 5.0]. + + + Sigma value for Gaussian function used to calculate + the kernel. + + Default value is set to 1.4. + + + + + + Kernel size, [3, 5]. + + + Size of Gaussian kernel. + + Default value is set to 5. + + + + + + Canny edge detector. + + + The filter searches for objects' edges by applying Canny edge detector. + The implementation follows + Bill Green's Canny edge detection tutorial. + + The implemented canny edge detector has one difference with the above linked algorithm. + The difference is in hysteresis step, which is a bit simplified (getting faster as a result). On the + hysteresis step each pixel is compared with two threshold values: and + . If pixel's value is greater or equal to , then + it is kept as edge pixel. If pixel's value is greater or equal to , then + it is kept as edge pixel only if there is at least one neighbouring pixel (8 neighbours are checked) which + has value greater or equal to ; otherwise it is none edge pixel. In the case + if pixel's value is less than , then it is marked as none edge immediately. + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + CannyEdgeDetector filter = new CannyEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Low threshold. + High threshold. + + + + + Initializes a new instance of the class. + + + Low threshold. + High threshold. + Gaussian sigma. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Low threshold. + + + Low threshold value used for hysteresis + (see tutorial + for more information). + + Default value is set to 20. + + + + + + High threshold. + + + High threshold value used for hysteresis + (see tutorial + for more information). + + Default value is set to 100. + + + + + + Gaussian sigma. + + + Sigma value for Gaussian bluring. + + + + + Gaussian size. + + + Size of Gaussian kernel. + + + + + Difference edge detector. + + + The filter finds objects' edges by calculating maximum difference + between pixels in 4 directions around the processing pixel. + + Suppose 3x3 square element of the source image (x - is currently processed + pixel): + + P1 P2 P3 + P8 x P4 + P7 P6 P5 + + The corresponding pixel of the result image equals to: + + max( |P1-P5|, |P2-P6|, |P3-P7|, |P4-P8| ) + + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + DifferenceEdgeDetector filter = new DifferenceEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Homogenity edge detector. + + + The filter finds objects' edges by calculating maximum difference + of processing pixel with neighboring pixels in 8 direction. + + Suppose 3x3 square element of the source image (x - is currently processed + pixel): + + P1 P2 P3 + P8 x P4 + P7 P6 P5 + + The corresponding pixel of the result image equals to: + + max( |x-P1|, |x-P2|, |x-P3|, |x-P4|, + |x-P5|, |x-P6|, |x-P7|, |x-P8| ) + + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + HomogenityEdgeDetector filter = new HomogenityEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Sobel edge detector. + + + The filter searches for objects' edges by applying Sobel operator. + + Each pixel of the result image is calculated as approximated absolute gradient + magnitude for corresponding pixel of the source image: + + |G| = |Gx| + |Gy] , + + where Gx and Gy are calculate utilizing Sobel convolution kernels: + + Gx Gy + -1 0 +1 +1 +2 +1 + -2 0 +2 0 0 0 + -1 0 +1 -1 -2 -1 + + Using the above kernel the approximated magnitude for pixel x is calculate using + the next equation: + + P1 P2 P3 + P8 x P4 + P7 P6 P5 + + |G| = |P1 + 2P2 + P3 - P7 - 2P6 - P5| + + |P3 + 2P4 + P5 - P1 - 2P8 - P7| + + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SobelEdgeDetector filter = new SobelEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Scale intensity or not. + + + The property determines if edges' pixels intensities of the result image + should be scaled in the range of the lowest and the highest possible intensity + values. + + Default value is set to . + + + + + + Filter iterator. + + + Filter iterator performs specified amount of filter's iterations. + The filter take the specified base filter and applies it + to source image specified amount of times. + + The filter itself does not have any restrictions to pixel format of source + image. This is set by base filter. + + The filter does image processing using only + interface of the specified base filter. This means + that this filter may not utilize all potential features of the base filter, like + in-place processing (see ) and region based processing + (see ). To utilize those features, it is required to + do filter's iteration manually. + + Sample usage (morphological thinning): + + // create filter sequence + FiltersSequence filterSequence = new FiltersSequence( ); + // add 8 thinning filters with different structuring elements + filterSequence.Add( new HitAndMiss( + new short [,] { { 0, 0, 0 }, { -1, 1, -1 }, { 1, 1, 1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { -1, 0, 0 }, { 1, 1, 0 }, { -1, 1, -1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 1, -1, 0 }, { 1, 1, 0 }, { 1, -1, 0 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { -1, 1, -1 }, { 1, 1, 0 }, { -1, 0, 0 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 1, 1, 1 }, { -1, 1, -1 }, { 0, 0, 0 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { -1, 1, -1 }, { 0, 1, 1 }, { 0, 0, -1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 0, -1, 1 }, { 0, 1, 1 }, { 0, -1, 1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 0, 0, -1 }, { 0, 1, 1 }, { -1, 1, -1 } }, + HitAndMiss.Modes.Thinning ) ); + // create filter iterator for 10 iterations + FilterIterator filter = new FilterIterator( filterSequence, 10 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Filter to iterate. + + + + + Initializes a new instance of the class. + + + Filter to iterate. + Iterations amount. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + The filter provides format translation dictionary taken from + filter. + + + + + + Base filter. + + + The base filter is the filter to be applied specified amount of iterations to + a specified image. + + + + + Iterations amount, [1, 255]. + + + The amount of times to apply specified filter to a specified image. + + Default value is set to 1. + + + + + + Filters' collection to apply to an image in sequence. + + + The class represents collection of filters, which need to be applied + to an image in sequence. Using the class user may specify set of filters, which will + be applied to source image one by one in the order user defines them. + + The class itself does not define which pixel formats are accepted for the source + image and which pixel formats may be produced by the filter. Format of acceptable source + and possible output is defined by filters, which added to the sequence. + + Sample usage: + + // create filter, which is binarization sequence + FiltersSequence filter = new FiltersSequence( + new GrayscaleBT709( ), + new Threshold( ) + ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Sequence of filters to apply. + + + + + Add new filter to the sequence. + + + Filter to add to the sequence. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + No filters were added into the filters' sequence. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + No filters were added into the filters' sequence. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + No filters were added into the filters' sequence. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have width, height and pixel format as it is expected by + the final filter in the sequence. + + + No filters were added into the filters' sequence. + + + + + Get filter at the specified index. + + + Index of filter to get. + + Returns filter at specified index. + + + + + Flood filling with specified color starting from specified point. + + + The filter performs image's area filling (4 directional) starting + from the specified point. It fills + the area of the pointed color, but also fills other colors, which + are similar to the pointed within specified tolerance. + The area is filled using specified fill color. + + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + PointedColorFloodFill filter = new PointedColorFloodFill( ); + // configure the filter + filter.Tolerance = Color.FromArgb( 150, 92, 92 ); + filter.FillColor = Color.FromArgb( 255, 255, 255 ); + filter.StartingPoint = new IntPoint( 150, 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Fill color. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Flood fill tolerance. + + + The tolerance value determines which colors to fill. If the + value is set to 0, then only color of the pointed pixel + is filled. If the value is not 0, then other colors may be filled as well, + which are similar to the color of the pointed pixel within the specified + tolerance. + + The tolerance value is specified as , + where each component (R, G and B) represents tolerance for the corresponding + component of color. This allows to set different tolerances for red, green + and blue components. + + + + + + Fill color. + + + The fill color is used to fill image's area starting from the + specified point. + + For grayscale images the color needs to be specified with all three + RGB values set to the same value, (128, 128, 128) for example. + + Default value is set to black. + + + + + + Point to start filling from. + + + The property allows to set the starting point, where filling is + started from. + + Default value is set to (0, 0). + + + + + + Flood filling with mean color starting from specified point. + + + The filter performs image's area filling (4 directional) starting + from the specified point. It fills + the area of the pointed color, but also fills other colors, which + are similar to the pointed within specified tolerance. + The area is filled using its mean color. + + + The filter is similar to filter, but instead + of filling the are with specified color, it fills the area with its mean color. This means + that this is a two pass filter - first pass is to calculate the mean value and the second pass is to + fill the area. Unlike to filter, this filter has nothing + to do in the case if zero tolerance is specified. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + PointedMeanFloodFill filter = new PointedMeanFloodFill( ); + // configre the filter + filter.Tolerance = Color.FromArgb( 150, 92, 92 ); + filter.StartingPoint = new IntPoint( 150, 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Flood fill tolerance. + + + The tolerance value determines the level of similarity between + colors to fill and the pointed color. If the value is set to zero, then the + filter does nothing, since the filling area contains only one color and its + filling with mean is meaningless. + + The tolerance value is specified as , + where each component (R, G and B) represents tolerance for the corresponding + component of color. This allows to set different tolerances for red, green + and blue components. + + Default value is set to (16, 16, 16). + + + + + + Point to start filling from. + + + The property allows to set the starting point, where filling is + started from. + + Default value is set to (0, 0). + + + + + + Color filtering in HSL color space. + + + The filter operates in HSL color space and filters + pixels, which color is inside/outside of the specified HSL range - + it keeps pixels with colors inside/outside of the specified range and fills the + rest with specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + HSLFiltering filter = new HSLFiltering( ); + // set color ranges to keep + filter.Hue = new IntRange( 335, 0 ); + filter.Saturation = new Range( 0.6f, 1 ); + filter.Luminance = new Range( 0.1f, 1 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + Sample usage with saturation update only: + + // create filter + HSLFiltering filter = new HSLFiltering( ); + // configure the filter + filter.Hue = new IntRange( 340, 20 ); + filter.UpdateLuminance = false; + filter.UpdateHue = false; + // apply the filter + filter.ApplyInPlace( image ); + + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Range of hue component. + Range of saturation component. + Range of luminance component. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Range of hue component, [0, 359]. + + + Because of hue values are cycled, the minimum value of the hue + range may have bigger integer value than the maximum value, for example [330, 30]. + + + + + Range of saturation component, [0, 1]. + + + + + Range of luminance component, [0, 1]. + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside specified + color range. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Determines, if hue value of filtered pixels should be updated. + + + The property specifies if hue of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if saturation value of filtered pixels should be updated. + + + The property specifies if saturation of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if luminance value of filtered pixels should be updated. + + + The property specifies if luminance of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Luminance and saturation linear correction. + + + The filter operates in HSL color space and provides + with the facility of luminance and saturation linear correction - mapping specified channels' + input ranges to specified output ranges. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + HSLLinear filter = new HSLLinear( ); + // configure the filter + filter.InLuminance = new Range( 0, 0.85f ); + filter.OutSaturation = new Range( 0.25f, 1 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Luminance input range. + + + Luminance component is measured in the range of [0, 1]. + + + + + Luminance output range. + + + Luminance component is measured in the range of [0, 1]. + + + + + Saturation input range. + + + Saturation component is measured in the range of [0, 1]. + + + + + Saturation output range. + + + Saturation component is measured in the range of [0, 1]. + + + + + Format translations dictionary. + + + + + Hue modifier. + + + The filter operates in HSL color space and updates + pixels' hue values setting it to the specified value (luminance and + saturation are kept unchanged). The result of the filter looks like the image + is observed through a glass of the given color. + + The filter accepts 24 and 32 bpp color images for processing. + Sample usage: + + // create filter + HueModifier filter = new HueModifier( 180 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Hue value to set. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Hue value to set, [0, 359]. + + + Default value is set to 0. + + + + + Saturation adjusting in HSL color space. + + + The filter operates in HSL color space and adjusts + pixels' saturation value, increasing it or decreasing by specified percentage. + The filters is based on filter, passing work to it after + recalculating saturation adjust value to input/output + ranges of the filter. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + SaturationCorrection filter = new SaturationCorrection( -0.5f ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Saturation adjust value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Saturation adjust value, [-1, 1]. + + + Default value is set to 0.1, which corresponds to increasing + saturation by 10%. + + + + + Format translations dictionary. + + + + + Flat field correction filter. + + + The goal of flat-field correction is to remove artifacts from 2-D images that + are caused by variations in the pixel-to-pixel sensitivity of the detector and/or by distortions + in the optical path. The filter requires two images for the input - source image, which represents + acquisition of some objects (using microscope, for example), and background image, which is taken + without any objects presented. The source image is corrected using the formula: src = bgMean * src / bg, + where src - source image's pixel value, bg - background image's pixel value, bgMean - mean + value of background image. + + If background image is not provided, then it will be automatically generated on each filter run + from source image. The automatically generated background image is produced running Gaussian Blur on the + original image with (sigma value is set to 5, kernel size is set to 21). Before blurring the original image + is resized to 1/3 of its original size and then the result of blurring is resized back to the original size. + + + The class processes only grayscale (8 bpp indexed) and color (24 bpp) images. + + Sample usage: + + // create filter + FlatFieldCorrection filter = new FlatFieldCorrection( bgImage ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Source image: + + Background image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + This constructor does not set background image, which means that background + image will be generated on the fly on each filter run. The automatically generated background + image is produced running Gaussian Blur on the original image with (sigma value is set to 5, + kernel size is set to 21). Before blurring the original image is resized to 1/3 of its original size + and then the result of blurring is resized back to the original size. + + + + + Initializes a new instance of the class. + + + Background image used for flat field correction. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Background image used for flat field correction. + + + The property sets the background image (without any objects), which will be used + for illumination correction of an image passed to the filter. + + The background image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one background image is allowed: managed or unmanaged. + + + + + + Background image used for flat field correction. + + + The property sets the background image (without any objects), which will be used + for illumination correction of an image passed to the filter. + + The background image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one background image is allowed: managed or unmanaged. + + + + + + Format translations dictionary. + + + See for more information. + + + + + Bottop-hat operator from Mathematical Morphology. + + + Bottom-hat morphological operator subtracts + input image from the result of morphological closing on the + the input image. + + Applied to binary image, the filter allows to get all object parts, which were + added by closing filter, but were not removed after that due + to formed connections/fillings. + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + BottomHat filter = new BottomHat( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Structuring element to pass to operator. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Closing operator from Mathematical Morphology. + + + Closing morphology operator equals to dilatation followed + by erosion. + + Applied to binary image, the filter may be used connect or fill objects. Since dilatation is used + first, it may connect/fill object areas. Then erosion restores objects. But since dilatation may connect + something before, erosion may not remove after that because of the formed connection. + + See documentation to and classes for more + information and list of supported pixel formats. + + Sample usage: + + // create filter + Closing filter = new Closing( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element for both and + classes - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + See documentation to and + classes for information about structuring element constraints. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Format translations dictionary. + + + + + Dilatation operator from Mathematical Morphology. + + + The filter assigns maximum value of surrounding pixels to each pixel of + the result image. Surrounding pixels, which should be processed, are specified by + structuring element: 1 - to process the neighbor, -1 - to skip it. + + The filter especially useful for binary image processing, where it allows to grow + separate objects or join objects. + + For processing image with 3x3 structuring element, there are different optimizations + available, like and . + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + Dilatation filter = new Dilatation( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + Structuring elemement for the dilatation morphological operator + must be square matrix with odd size in the range of [3, 99]. + + Invalid size of structuring element. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Erosion operator from Mathematical Morphology. + + + The filter assigns minimum value of surrounding pixels to each pixel of + the result image. Surrounding pixels, which should be processed, are specified by + structuring element: 1 - to process the neighbor, -1 - to skip it. + + The filter especially useful for binary image processing, where it removes pixels, which + are not surrounded by specified amount of neighbors. It gives ability to remove noisy pixels + (stand-alone pixels) or shrink objects. + + For processing image with 3x3 structuring element, there are different optimizations + available, like and . + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + Erosion filter = new Erosion( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + Structuring elemement for the erosion morphological operator + must be square matrix with odd size in the range of [3, 99]. + + Invalid size of structuring element. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Hit-And-Miss operator from Mathematical Morphology. + + + The hit-and-miss filter represents generalization of + and filters by extending flexibility of structuring element and + providing different modes of its work. Structuring element may contain: + + 1 - foreground; + 0 - background; + -1 - don't care. + + + + Filter's mode is set by property. The list of modes and its + documentation may be found in enumeration. + + The filter accepts 8 bpp grayscale images for processing. Note: grayscale images are treated + as binary with 0 value equals to black and 255 value equals to white. + + Sample usage: + + // define kernel to remove pixels on the right side of objects + // (pixel is removed, if there is white pixel on the left and + // black pixel on the right) + short[,] se = new short[,] { + { -1, -1, -1 }, + { 1, 1, 0 }, + { -1, -1, -1 } + }; + // create filter + HitAndMiss filter = new HitAndMiss( se, HitAndMiss.Modes.Thinning ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Structuring element. + + Structuring elemement for the hit-and-miss morphological operator + must be square matrix with odd size in the range of [3, 99]. + + Invalid size of structuring element. + + + + + Initializes a new instance of the class. + + + Structuring element. + Operation mode. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Operation mode. + + + Mode to use for the filter. See enumeration + for the list of available modes and their documentation. + + Default mode is set to . + + + + + Hit and Miss modes. + + + Bellow is a list of modes meaning depending on pixel's correspondence + to specified structuring element: + + - on match pixel is set to white, otherwise to black; + - on match pixel is set to black, otherwise not changed. + - on match pixel is set to white, otherwise not changed. + + + + + + + Hit and miss mode. + + + + + Thinning mode. + + + + + Thickening mode. + + + + + Opening operator from Mathematical Morphology. + + + Opening morphology operator equals to erosion followed + by dilatation. + + Applied to binary image, the filter may be used for removing small object keeping big objects + unchanged. Since erosion is used first, it removes all small objects. Then dilatation restores big + objects, which were not removed by erosion. + + See documentation to and classes for more + information and list of supported pixel formats. + + Sample usage: + + // create filter + Opening filter = new Opening( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element for both and + classes - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + See documentation to and + classes for information about structuring element constraints. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Format translations dictionary. + + + + + Binary dilatation operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for binary images (containing black and white pixels) processed + with 3x3 structuring element. This makes this filter ideal for growing objects in binary + images – it puts white pixel to the destination image in the case if there is at least + one white neighbouring pixel in the source image. + + See filter, which represents generic version of + dilatation filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale (binary) images for processing. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Binary erosion operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for binary images (containing black and white pixels) processed + with 3x3 structuring element. This makes this filter ideal for removing noise in binary + images – it removes all white pixels, which are neighbouring with at least one blank pixel. + + + See filter, which represents generic version of + erosion filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale (binary) images for processing. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Dilatation operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for grayscale image processing with 3x3 structuring element. + + See filter, which represents generic version of + dilatation filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale images for processing. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Erosion operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for grayscale image processing with 3x3 structuring element. + + See filter, which represents generic version of + erosion filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale images for processing. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Top-hat operator from Mathematical Morphology. + + + Top-hat morphological operator subtracts + result of morphological opening on the input image + from the input image itself. + + Applied to binary image, the filter allows to get all those object (their parts) + which were removed by opening filter, but never restored. + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + TopHat filter = new TopHat( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Structuring element to pass to operator. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Additive noise filter. + + + The filter adds random value to each pixel of the source image. + The distribution of random values can be specified by random generator. + + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create random generator + IRandomNumberGenerator generator = new UniformGenerator( new Range( -50, 50 ) ); + // create filter + AdditiveNoise filter = new AdditiveNoise( generator ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Random number genertor used to add noise. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Random number genertor used to add noise. + + + Default generator is uniform generator in the range of (-10, 10). + + + + + Salt and pepper noise. + + + The filter adds random salt and pepper noise - sets + maximum or minimum values to randomly selected pixels. + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + SaltAndPepperNoise filter = new SaltAndPepperNoise( 10 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Amount of noise to generate in percents, [0, 100]. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Amount of noise to generate in percents, [0, 100]. + + + + + + Extract normalized RGB channel from color image. + + + Extracts specified normalized RGB channel of color image and returns + it as grayscale image. + + Normalized RGB color space is defined as: + + r = R / (R + G + B ), + g = G / (R + G + B ), + b = B / (R + G + B ), + + where R, G and B are components of RGB color space and + r, g and b are components of normalized RGB color space. + + + The filter accepts 24, 32, 48 and 64 bpp color images and produces + 8 (if source is 24 or 32 bpp image) or 16 (if source is 48 or 64 bpp image) + bpp grayscale image. + + Sample usage: + + // create filter + ExtractNormalizedRGBChannel filter = new ExtractNormalizedRGBChannel( RGB.G ); + // apply the filter + Bitmap channelImage = filter.Apply( image ); + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Normalized RGB channel to extract. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Normalized RGB channel to extract. + + + Default value is set to . + + Invalid channel is specified. + + + + + Apply mask to the specified image. + + + The filter applies mask to the specified image - keeps all pixels + in the image if corresponding pixels/values of the mask are not equal to 0. For all + 0 pixels/values in mask, corresponding pixels in the source image are set to 0. + + Mask can be specified as .NET's managed Bitmap, as + UnmanagedImage or as byte array. + In the case if mask is specified as image, it must be 8 bpp grayscale image. In all case + mask size must be the same as size of the image to process. + + The filter accepts 8/16 bpp grayscale and 24/32/48/64 bpp color images for processing. + + + + + + Initializes a new instance of the class. + + + Mask image to use. + + + + + Initializes a new instance of the class. + + + Unmanaged mask image to use. + + + + + Initializes a new instance of the class. + + + to use. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + None of the possible mask properties were set. Need to provide mask before applying the filter. + Invalid size of provided mask. Its size must be the same as the size of the image to mask. + + + + + Mask image to apply. + + + The property specifies mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Unmanaged mask image to apply. + + + The property specifies unmanaged mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Mask to apply. + + + The property specifies mask array to use. Size of the array must + be the same size as the size of the source image to process - its 0th dimension + must be equal to image's height and its 1st dimension must be equal to width. For + example, for 640x480 image, the mask array must be defined as: + + byte[,] mask = new byte[480, 640]; + + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Blobs filtering by size. + + + The filter performs filtering of blobs by their size in the specified + source image - all blobs, which are smaller or bigger then specified limits, are + removed from the image. + + The image processing filter treats all none black pixels as objects' + pixels and all black pixel as background. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + BlobsFiltering filter = new BlobsFiltering( ); + // configure filter + filter.CoupledSizeFiltering = true; + filter.MinWidth = 70; + filter.MinHeight = 70; + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Minimum allowed width of blob. + Minimum allowed height of blob. + Maximum allowed width of blob. + Maximum allowed height of blob. + + This constructor creates an instance of class + with property set to false. + + + + + Initializes a new instance of the class. + + + Minimum allowed width of blob. + Minimum allowed height of blob. + Maximum allowed width of blob. + Maximum allowed height of blob. + Specifies if size filetering should be coupled or not. + + For information about coupled filtering mode see documentation for + property of + class. + + + + + Initializes a new instance of the class. + + + Custom blobs' filtering routine to use + (see ). + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Specifies if size filetering should be coupled or not. + + + See documentation for property + of class for more information. + + + + + Minimum allowed width of blob. + + + + + + Minimum allowed height of blob. + + + + + + Maximum allowed width of blob. + + + + + + Maximum allowed height of blob. + + + + + + Custom blobs' filter to use. + + + See for information + about custom blobs' filtering routine. + + + + + Fill areas outiside of specified region. + + + + The filter fills areas outside of specified region using the specified color. + + The filter accepts 8bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + CanvasCrop filter = new CanvasCrop( new Rectangle( + 5, 5, image.Width - 10, image.Height - 10 ), Color.Red ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + Region to keep. + + + + + Initializes a new instance of the class. + + + Region to keep. + RGB color to use for filling areas outside of specified region in color images. + + + + + Initializes a new instance of the class. + + + Region to keep. + Gray color to use for filling areas outside of specified region in grayscale images. + + + + + Initializes a new instance of the class. + + + Region to keep. + RGB color to use for filling areas outside of specified region in color images. + Gray color to use for filling areas outside of specified region in grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + RGB fill color. + + + The color is used to fill areas out of specified region in color images. + + Default value is set to white - RGB(255, 255, 255). + + + + + Gray fill color. + + + The color is used to fill areas out of specified region in grayscale images. + + Default value is set to white - 255. + + + + + Region to keep. + + + Pixels inside of the specified region will keep their values, but + pixels outside of the region will be filled with specified color. + + + + + Fill areas iniside of the specified region. + + + + The filter fills areas inside of specified region using the specified color. + + The filter accepts 8bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + CanvasFill filter = new CanvasFill( new Rectangle( + 5, 5, image.Width - 10, image.Height - 10 ), Color.Red ); + // apply the filter + filter.ApplyInPlace( image ); + + + + + + + + + Initializes a new instance of the class. + + + Region to fill. + + + + + Initializes a new instance of the class. + + + Region to fill. + RGB color to use for filling areas inside of specified region in color images. + + + + + Initializes a new instance of the class. + + + Region to fill. + Gray color to use for filling areas inside of specified region in grayscale images. + + + + + Initializes a new instance of the class. + + + Region to fill. + RGB color to use for filling areas inside of specified region in color images. + Gray color to use for filling areas inside of specified region in grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + RGB fill color. + + + The color is used to fill areas out of specified region in color images. + + Default value is set to white - RGB(255, 255, 255). + + + + + Gray fill color. + + + The color is used to fill areas out of specified region in grayscale images. + + Default value is set to white - 255. + + + + + Region to fill. + + + Pixels inside of the specified region will be filled with specified color. + + + + + Move canvas to the specified point. + + + + The filter moves canvas to the specified area filling unused empty areas with specified color. + + The filter accepts 8/16 bpp grayscale images and 24/32/48/64 bpp color image + for processing. + + Sample usage: + + // create filter + CanvasMove filter = new CanvasMove( new IntPoint( -50, -50 ), Color.Green ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Point to move the canvas to. + + + + + Initializes a new instance of the class. + + + Point to move the canvas. + RGB color to use for filling areas empty areas in color images. + + + + + Initializes a new instance of the class. + + + Point to move the canvas. + Gray color to use for filling empty areas in grayscale images. + + + + + Initializes a new instance of the class. + + + Point to move the canvas. + RGB color to use for filling areas empty areas in color images. + Gray color to use for filling empty areas in grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + RGB fill color. + + + The color is used to fill empty areas in color images. + + Default value is set to white - ARGB(255, 255, 255, 255). + + + + + Gray fill color. + + + The color is used to fill empty areas in grayscale images. + + Default value is set to white - 255. + + + + + Point to move the canvas to. + + + + + + Connected components labeling. + + + The filter performs labeling of objects in the source image. It colors + each separate object using different color. The image processing filter treats all none + black pixels as objects' pixels and all black pixel as background. + + The filter accepts 8 bpp grayscale images and 24/32 bpp color images and produces + 24 bpp RGB image. + + Sample usage: + + // create filter + ConnectedComponentsLabeling filter = new ConnectedComponentsLabeling( ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + // check objects count + int objectCount = filter.ObjectCount; + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Blob counter used to locate separate blobs. + + + The property allows to set blob counter to use for blobs' localization. + + Default value is set to . + + + + + + Colors used to color the binary image. + + + + + Specifies if blobs should be filtered. + + + See documentation for property + of class for more information. + + + + + Specifies if size filetering should be coupled or not. + + + See documentation for property + of class for more information. + + + + + Minimum allowed width of blob. + + + + + + Minimum allowed height of blob. + + + + + + Maximum allowed width of blob. + + + + + + Maximum allowed height of blob. + + + + + + Objects count. + + + The amount of objects found in the last processed image. + + + + + Filter to mark (highlight) corners of objects. + + + + The filter highlights corners of objects on the image using provided corners + detection algorithm. + + The filter accepts 8 bpp grayscale and 24/32 color images for processing. + + Sample usage: + + // create corner detector's instance + SusanCornersDetector scd = new SusanCornersDetector( ); + // create corner maker filter + CornersMarker filter = new CornersMarker( scd, Color.Red ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Interface of corners' detection algorithm. + + + + + Initializes a new instance of the class. + + + Interface of corners' detection algorithm. + Marker's color used to mark corner. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Color used to mark corners. + + + + + Interface of corners' detection algorithm used to detect corners. + + + + + Extract the biggest blob from image. + + + The filter locates the biggest blob in the source image and extracts it. + The filter also can use the source image for the biggest blob's location only, but extract it from + another image, which is set using property. The original image + usually is the source of the processed image. + + The filter accepts 8 bpp grayscale images and 24/32 color images for processing as source image passed to + method and also for the . + + Sample usage: + + // create filter + ExtractBiggestBlob filter = new ExtractBiggestBlob( ); + // apply the filter + Bitmap biggestBlobsImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Apply filter to an image. + + + Source image to get biggest blob from. + + Returns image of the biggest blob. + + Unsupported pixel format of the source image. + Unsupported pixel format of the original image. + Source and original images must have the same size. + The source image does not contain any blobs. + + + + + Apply filter to an image. + + + Source image to get biggest blob from. + + Returns image of the biggest blob. + + Unsupported pixel format of the source image. + Unsupported pixel format of the original image. + Source and original images must have the same size. + The source image does not contain any blobs. + + + + + Apply filter to an image (not implemented). + + + Image in unmanaged memory. + + Returns filter's result obtained by applying the filter to + the source image. + + The method is not implemented. + + + + + Apply filter to an image (not implemented). + + + Source image to be processed. + Destination image to store filter's result. + + The method is not implemented. + + + + + Position of the extracted blob. + + + After applying the filter this property keeps position of the extracted + blob in the source image. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Original image, which is the source of the processed image where the biggest blob is searched for. + + + The property may be set to . In this case the biggest blob + is extracted from the image, which is passed to image. + + + + + + Fill holes in objects in binary image. + + + The filter allows to fill black holes in white object in a binary image. + It is possible to specify maximum holes' size to fill using + and properties. + + The filter accepts binary image only, which are represented as 8 bpp images. + + Sample usage: + + // create and configure the filter + FillHoles filter = new FillHoles( ); + filter.MaxHoleHeight = 20; + filter.MaxHoleWidth = 20; + filter.CoupledSizeFiltering = false; + // apply the filter + Bitmap result = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Specifies if size filetering should be coupled or not. + + + In uncoupled filtering mode, holes are filled in the case if + their width is smaller than or equal to or height is smaller than + or equal to . But in coupled filtering mode, holes are filled only in + the case if both width and height are smaller or equal to the corresponding value. + + Default value is set to , what means coupled filtering by size. + + + + + + Maximum width of a hole to fill. + + + All holes, which have width greater than this value, are kept unfilled. + See for additional information. + + Default value is set to . + + + + + Maximum height of a hole to fill. + + + All holes, which have height greater than this value, are kept unfilled. + See for additional information. + + Default value is set to . + + + + + Format translations dictionary. + + + + + Horizontal run length smoothing algorithm. + + + The class implements horizontal run length smoothing algorithm, which + is described in: K.Y. Wong, R.G. Casey and F.M. Wahl, "Document analysis system," + IBM J. Res. Devel., Vol. 26, NO. 6,111). 647-656, 1982. + + Unlike the original description of this algorithm, this implementation must be applied + to inverted binary images containing document, i.e. white text on black background. So this + implementation fills horizontal black gaps between white pixels. + + This algorithm is usually used together with , + and then further analysis of white blobs. + + The filter accepts 8 bpp grayscale images, which are supposed to be binary inverted documents. + + Sample usage: + + // create filter + HorizontalRunLengthSmoothing hrls = new HorizontalRunLengthSmoothing( 32 ); + // apply the filter + hrls.ApplyInPlace( image ); + + + Source image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum gap size to fill (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Maximum gap size to fill (in pixels). + + + The property specifies maximum horizontal gap between white pixels to fill. + If number of black pixels between some white pixels is bigger than this value, then those + black pixels are left as is; otherwise the gap is filled with white pixels. + + + Default value is set to 10. Minimum value is 1. Maximum value is 1000. + + + + + Process gaps between objects and image borders or not. + + + The property sets if gaps between image borders and objects must be treated as + gaps between objects and also filled. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Image warp effect filter. + + + The image processing filter implements a warping filter, which + sets pixels in destination image to values from source image taken with specified offset + (see ). + + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // build warp map + int width = image.Width; + int height = image.Height; + + IntPoint[,] warpMap = new IntPoint[height, width]; + + int size = 8; + int maxOffset = -size + 1; + + for ( int y = 0; y < height; y++ ) + { + for ( int x = 0; x < width; x++ ) + { + int dx = ( x / size ) * size - x; + int dy = ( y / size ) * size - y; + + if ( dx + dy <= maxOffset ) + { + dx = ( x / size + 1 ) * size - 1 - x; + } + + warpMap[y, x] = new IntPoint( dx, dy ); + } + } + // create filter + ImageWarp filter = new ImageWarp( warpMap ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Map used for warping images (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Map used for warping images. + + + The property sets displacement map used for warping images. + The map sets offsets of pixels in source image, which are used to set values in destination + image. In other words, each pixel in destination image is set to the same value + as pixel in source image with corresponding offset (coordinates of pixel in source image + are calculated as sum of destination coordinate and corresponding value from warp map). + + + The map array is accessed using [y, x] indexing, i.e. + first dimension in the map array corresponds to Y axis of image. + + If the map is smaller or bigger than the image to process, then only minimum + overlapping area of the image is processed. This allows to prepare single big map and reuse + it for a set of images for creating similar effects. + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Jitter filter. + + + The filter moves each pixel of a source image in + random direction within a window of specified radius. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + Jitter filter = new Jitter( 4 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Jittering radius. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Jittering radius, [1, 10] + + + Determines radius in which pixels can move. + + Default value is set to 2. + + + + + + Apply filter according to the specified mask. + + + The image processing routine applies the specified to + a source image according to the specified mask - if a pixel/value in the specified mask image/array + is set to 0, then the original pixel's value is kept; otherwise the pixel is filtered using the + specified base filter. + + Mask can be specified as .NET's managed Bitmap, as + UnmanagedImage or as byte array. + In the case if mask is specified as image, it must be 8 bpp grayscale image. In all case + mask size must be the same as size of the image to process. + + Pixel formats accepted by this filter are specified by the . + + Sample usage: + + // create the filter + MaskedFilter maskedFilter = new MaskedFilter( new Sepia( ), maskImage ); + // apply the filter + maskedFilter.ApplyInPlace( image ); + + + Initial image: + + Mask image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Base filter to apply to the specified source image. + Mask image to use. + + + + + Initializes a new instance of the class. + + + Base filter to apply to the specified source image. + Unmanaged mask image to use. + + + + + Initializes a new instance of the class. + + + Base filter to apply to the specified source image. + to use. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + None of the possible mask properties were set. Need to provide mask before applying the filter. + Invalid size of provided mask. Its size must be the same as the size of the image to mask. + + + + + Base filter to apply to the source image. + + + The property specifies base filter which is applied to the specified source + image (to all pixels which have corresponding none 0 value in mask image/array). + + The base filter must implement interface. + + The base filter must never change image's pixel format. For example, if source + image's pixel format is 24 bpp color image, then it must stay the same after the base + filter is applied. + + The base filter must never change size of the source image. + + + Base filter can not be set to null. + The specified base filter must implement IFilterInformation interface. + The specified filter must never change pixel format. + + + + + Mask image to apply. + + + The property specifies mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Unmanaged mask image to apply. + + + The property specifies unmanaged mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Mask to apply. + + + The property specifies mask array to use. Size of the array must + be the same size as the size of the source image to process - its 0th dimension + must be equal to image's height and its 1st dimension must be equal to width. For + example, for 640x480 image, the mask array must be defined as: + + byte[,] mask = new byte[480, 640]; + + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + The property returns format translation table from the + . + + + + + + Mirroring filter. + + + The filter mirrors image around X and/or Y axis (horizontal and vertical + mirroring). + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + Mirror filter = new Mirror( false, true ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Specifies if mirroring should be done for X axis. + Specifies if mirroring should be done for Y axis + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Specifies if mirroring should be done for X axis (horizontal mirroring). + + + + + + Specifies if mirroring should be done for Y axis (vertical mirroring). + + + + + + Oil painting filter. + + + Processing source image the filter changes each pixels' value + to the value of pixel with the most frequent intensity within window of the + specified size. Going through the window the filters + finds which intensity of pixels is the most frequent. Then it updates value + of the pixel in the center of the window to the value with the most frequent + intensity. The update procedure creates the effect of oil painting. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + OilPainting filter = new OilPainting( 15 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Brush size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Brush size, [3, 21]. + + + Window size to search for most frequent pixels' intensity. + + Default value is set to 5. + + + + + Pixellate filter. + + + The filter processes an image creating the effect of an image with larger + pixels - pixellated image. The effect is achieved by filling image's rectangles of the + specified size by the color, which is mean color value for the corresponding rectangle. + The size of rectangles to process is set by and + properties. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + Pixellate filter = new Pixellate( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Pixel size. + + + + + Initializes a new instance of the class. + + + Pixel width. + Pixel height. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Pixel width, [2, 32]. + + + Default value is set to 8. + + + + + + + + Pixel height, [2, 32]. + + + Default value is set to 8. + + + + + + + + Pixel size, [2, 32]. + + + The property is used to set both and + simultaneously. + + + + + Simple skeletonization filter. + + + The filter build simple objects' skeletons by thinning them until + they have one pixel wide "bones" horizontally and vertically. The filter uses + and colors to distinguish + between object and background. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SimpleSkeletonization filter = new SimpleSkeletonization( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Background pixel color. + Foreground pixel color. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Background pixel color. + + + The property sets background (none object) color to look for. + + Default value is set to 0 - black. + + + + + Foreground pixel color. + + + The property sets objects' (none background) color to look for. + + Default value is set to 255 - white. + + + + + Textured filter - filter an image using texture. + + + The filter is similar to filter in its + nature, but instead of working with source image and overly, it uses provided + filters to create images to merge (see and + properties). In addition, it uses a bit more complex formula for calculation + of destination pixel's value, which gives greater amount of flexibility:
+ dst = * ( src1 * textureValue + src2 * ( 1.0 - textureValue ) ) + * src2, + where src1 is value of pixel from the image produced by , + src2 is value of pixel from the image produced by , + dst is value of pixel in a destination image and textureValue is corresponding value + from provided texture (see or ).
+ + It is possible to set to . In this case + original source image will be used instead of result produced by the second filter. + + The filter 24 bpp color images for processing. + + Sample usage #1: + + // create filter + TexturedFilter filter = new TexturedFilter( new CloudsTexture( ), + new HueModifier( 50 ) ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Sample usage #2: + + // create filter + TexturedFilter filter = new TexturedFilter( new CloudsTexture( ), + new GrayscaleBT709( ), new Sepia( ) ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image #1: + + Result image #2: + +
+ +
+ + + Initializes a new instance of the class. + + + Generated texture. + First filter. + + + + + Initializes a new instance of the class. + + + Generated texture. + First filter. + Second filter. + + + + + Initializes a new instance of the class. + + + Texture generator. + First filter. + + + + + Initializes a new instance of the class. + + + Texture generator. + First filter. + Second filter. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + Texture size does not match image size. + Filters should not change image dimension. + + + + + Format translations dictionary. + + + See for more information. + + + + + Filter level value, [0, 1]. + + + Filtering factor determines portion of the destionation image, which is formed + as a result of merging source images using specified texture. + + Default value is set to 1.0. + + See class description for more details. + + + + + + Preserve level value + + + Preserving factor determines portion taken from the image produced + by (or from original source) without applying textured + merge to it. + + Default value is set to 0.0. + + See class description for more details. + + + + + + Generated texture. + + + Two dimensional array of texture intensities. + + Size of the provided texture should be the same as size of images, which will + be passed to the filter. + + The property has priority over this property - if + generator is specified than the static generated texture is not used. + + + + + + Texture generator. + + + Generator used to generate texture. + + The property has priority over the property. + + + + + + First filter. + + + Filter, which is used to produce first image for the merge. The filter + needs to implement interface, so it could be possible + to get information about the filter. The filter must be able to process color 24 bpp + images and produce color 24 bpp or grayscale 8 bppp images as result. + + + The specified filter does not support 24 bpp color images. + The specified filter does not produce image of supported format. + The specified filter does not implement IFilterInformation interface. + + + + + Second filter + + + Filter, which is used to produce second image for the merge. The filter + needs to implement interface, so it could be possible + to get information about the filter. The filter must be able to process color 24 bpp + images and produce color 24 bpp or grayscale 8 bppp images as result. + + The filter may be set to . In this case original source image + is used as a second image for the merge. + + + The specified filter does not support 24 bpp color images. + The specified filter does not produce image of supported format. + The specified filter does not implement IFilterInformation interface. + + + + + Merge two images using factors from texture. + + + The filter is similar to filter in its idea, but + instead of using single value for balancing amount of source's and overlay's image + values (see ), the filter uses texture, which determines + the amount to take from source image and overlay image. + + The filter uses specified texture to adjust values using the next formula:
+ dst = src * textureValue + ovr * ( 1.0 - textureValue ),
+ where src is value of pixel in a source image, ovr is value of pixel in + overlay image, dst is value of pixel in a destination image and + textureValue is corresponding value from provided texture (see or + ).
+ + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage #1: + + // create filter + TexturedMerge filter = new TexturedMerge( new TextileTexture( ) ); + // create an overlay image to merge with + filter.OverlayImage = new Bitmap( image.Width, image.Height, + PixelFormat.Format24bppRgb ); + // fill the overlay image with solid color + PointedColorFloodFill fillFilter = new PointedColorFloodFill( Color.DarkKhaki ); + fillFilter.ApplyInPlace( filter.OverlayImage ); + // apply the merge filter + filter.ApplyInPlace( image ); + + + Sample usage #2: + + // create filter + TexturedMerge filter = new TexturedMerge( new CloudsTexture( ) ); + // create 2 images with modified Hue + HueModifier hm1 = new HueModifier( 50 ); + HueModifier hm2 = new HueModifier( 200 ); + filter.OverlayImage = hm2.Apply( image ); + hm1.ApplyInPlace( image ); + // apply the merge filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image #1: + + Result image #2: + +
+ +
+ + + Initializes a new instance of the class. + + + Generated texture. + + + + + Initializes a new instance of the class. + + + Texture generator. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + See for more information. + + + + + Generated texture. + + + Two dimensional array of texture intensities. + + In the case if image passed to the filter is smaller or + larger than the specified texture, than image's region is processed, which equals to the + minimum overlapping area. + + The property has priority over this property - if + generator is specified than the static generated texture is not used. + + + + + + Texture generator. + + + Generator used to generate texture. + + The property has priority over the property. + + + + + + Texturer filter. + + + Adjust pixels’ color values using factors from the given texture. In conjunction with different type + of texture generators, the filter may produce different type of interesting effects. + + The filter uses specified texture to adjust values using the next formula:
+ dst = src * + src * * textureValue,
+ where src is value of pixel in a source image, dst is value of pixel in a destination image and + textureValue is corresponding value from provided texture (see or + ). Using and values it is possible + to control the portion of source data affected by texture. +
+ + In most cases the and properties are set in such + way, that + = 1. But there is no limitations actually + for those values, so their sum may be as greater, as lower than 1 in order create different type of + effects. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + Texturer filter = new Texturer( new TextileTexture( ), 0.3, 0.7 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + +
+ +
+ + + Initializes a new instance of the class. + + + Generated texture. + + + + + Initializes a new instance of the class. + + + Generated texture. + Filter level value (see property). + Preserve level value (see property). + + + + + Initializes a new instance of the class. + + + Texture generator. + + + + + Initializes a new instance of the class. + + + Texture generator. + Filter level value (see property). + Preserve level value (see property). + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See for more information. + + + + + Filter level value. + + + Filtering factor determines image fraction to filter - to multiply + by values from the provided texture. + + Default value is set to 0.5. + + See class description for more details. + + + + + + Preserve level value. + + + Preserving factor determines image fraction to keep from filtering. + + Default value is set to 0.5. + + See class description for more details. + + + + + + Generated texture. + + + Two dimensional array of texture intensities. + + In the case if image passed to the filter is smaller or + larger than the specified texture, than image's region is processed, which equals to the + minimum overlapping area. + + The property has priority over this property - if + generator is specified than the static generated texture is not used. + + + + + + Texture generator. + + + Generator used to generate texture. + + The property has priority over the property. + + + + + + Vertical run length smoothing algorithm. + + + The class implements vertical run length smoothing algorithm, which + is described in: K.Y. Wong, R.G. Casey and F.M. Wahl, "Document analysis system," + IBM J. Res. Devel., Vol. 26, NO. 6,111). 647-656, 1982. + + Unlike the original description of this algorithm, this implementation must be applied + to inverted binary images containing document, i.e. white text on black background. So this + implementation fills vertical black gaps between white pixels. + + This algorithm is usually used together with , + and then further analysis of white blobs. + + The filter accepts 8 bpp grayscale images, which are supposed to be binary inverted documents. + + Sample usage: + + // create filter + VerticalRunLengthSmoothing vrls = new VerticalRunLengthSmoothing( 32 ); + // apply the filter + vrls.ApplyInPlace( image ); + + + Source image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum gap size to fill (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Maximum gap size to fill (in pixels). + + + The property specifies maximum vertical gap between white pixels to fill. + If number of black pixels between some white pixels is bigger than this value, then those + black pixels are left as is; otherwise the gap is filled with white pixels. + + + Default value is set to 10. Minimum value is 1. Maximum value is 1000. + + + + + Process gaps between objects and image borders or not. + + + The property sets if gaps between image borders and objects must be treated as + gaps between objects and also filled. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Simple water wave effect filter. + + + The image processing filter implements simple water wave effect. Using + properties of the class, it is possible to set number of vertical/horizontal waves, + as well as their amplitude. + + Bilinear interpolation is used to create smooth effect. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + WaterWave filter = new WaterWave( ); + filter.HorizontalWavesCount = 10; + filter.HorizontalWavesAmplitude = 5; + filter.VerticalWavesCount = 3; + filter.VerticalWavesAmplitude = 15; + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Number of horizontal waves, [1, 10000]. + + + Default value is set to 5. + + + + + Number of vertical waves, [1, 10000]. + + + Default value is set to 5. + + + + + Amplitude of horizontal waves measured in pixels, [0, 10000]. + + + Default value is set to 10. + + + + + Amplitude of vertical waves measured in pixels, [0, 10000]. + + + Default value is set to 10. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Adaptive Smoothing - noise removal with edges preserving. + + + The filter is aimed to perform image smoothing, but keeping sharp edges. + This makes it applicable to additive noise removal and smoothing objects' interiors, but + not applicable for spikes (salt and pepper noise) removal. + + The next calculations are done for each pixel: + + weights are calculate for 9 pixels - pixel itself and 8 neighbors: + + w(x, y) = exp( -1 * (Gx^2 + Gy^2) / (2 * factor^2) ) + Gx(x, y) = (I(x + 1, y) - I(x - 1, y)) / 2 + Gy(x, y) = (I(x, y + 1) - I(x, y - 1)) / 2 + , + where factor is a configurable value determining smoothing's quality. + sum of 9 weights is calclated (weightTotal); + sum of 9 weighted pixel values is calculatd (total); + destination pixel is calculated as total / weightTotal. + + + Description of the filter was found in "An Edge Detection Technique Using + the Facet Model and Parameterized Relaxation Labeling" by Ioannis Matalas, Student Member, + IEEE, Ralph Benjamin, and Richard Kitney. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + AdaptiveSmoothing filter = new AdaptiveSmoothing( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Factor value. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Factor value. + + + Factor determining smoothing quality (see + documentation). + + Default value is set to 3. + + + + + + Bilateral filter implementation - edge preserving smoothing and noise reduction that uses chromatic and spatial factors. + + + + Bilateral filter conducts "selective" Gaussian smoothing of areas of same color (domains) which removes noise and contrast artifacts + while preserving sharp edges. + + Two major parameters and define the result of the filter. + By changing these parameters you may achieve either only noise reduction with little change to the + image or get nice looking effect to the entire image. + + Although the filter can use parallel processing large values + (greater than 25) on high resolution images may decrease speed of processing. Also on high + resolution images small values (less than 9) may not provide noticeable + results. + + More details on the algorithm can be found by following this + link. + + The filter accepts 8 bpp grayscale images and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + BilateralSmoothing filter = new BilateralSmoothing( ); + filter.KernelSize = 7; + filter.SpatialFactor = 10; + filter.ColorFactor = 60; + filter.ColorPower = 0.5; + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Specifies if exception must be thrown in the case a large + kernel size is used which may lead + to significant performance issues. + + + + Default value is set to . + + + + + + Enable or not parallel processing on multi-core CPUs. + + + If the property is set to , then this image processing + routine will run in parallel on the systems with multiple core/CPUs. The + is used to make it parallel. + + Default value is set to . + + + + + + Size of a square for limiting surrounding pixels that take part in calculations, [3, 255]. + + + The greater the value the more is the general power of the filter. Small values + (less than 9) on high resolution images (3000 pixels wide) do not give significant results. + Large values increase the number of calculations and degrade performance. + + The value of this property must be an odd integer in the [3, 255] range if + is set to or in the [3, 25] range + otherwise. + + Default value is set to 9. + + + The specified value is out of range (see + eception message for details). + The value of this must be an odd integer. + + + + + Determines smoothing power within a color domain (neighbor pixels of similar color), >= 1. + + + + Default value is set to 10. + + + + + + Exponent power, used in Spatial function calculation, >= 1. + + + + Default value is set to 2. + + + + + + Determines the variance of color for a color domain, >= 1. + + + + Default value is set to 50. + + + + + + Exponent power, used in Color function calculation, >= 1. + + + + Default value is set to 2. + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Conservative smoothing. + + + The filter implements conservative smoothing, which is a noise reduction + technique that derives its name from the fact that it employs a simple, fast filtering + algorithm that sacrifices noise suppression power in order to preserve the high spatial + frequency detail (e.g. sharp edges) in an image. It is explicitly designed to remove noise + spikes - isolated pixels of exceptionally low or high pixel intensity + (salt and pepper noise). + + If the filter finds a pixel which has minimum/maximum value compared to its surrounding + pixel, then its value is replaced by minimum/maximum value of those surrounding pixel. + For example, lets suppose the filter uses kernel size of 3x3, + which means each pixel has 8 surrounding pixel. If pixel's value is smaller than any value + of surrounding pixels, then the value of the pixel is replaced by minimum value of those surrounding + pixels. + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + ConservativeSmoothing filter = new ConservativeSmoothing( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Kernel size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Kernel size, [3, 25]. + + + Determines the size of pixel's square used for smoothing. + + Default value is set to 3. + + The value should be odd. + + + + + + Median filter. + + + The median filter is normally used to reduce noise in an image, somewhat like + the mean filter. However, it often does a better job than the mean + filter of preserving useful detail in the image. + + Each pixel of the original source image is replaced with the median of neighboring pixel + values. The median is calculated by first sorting all the pixel values from the surrounding + neighborhood into numerical order and then replacing the pixel being considered with the + middle pixel value. + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + Median filter = new Median( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Processing square size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Processing square size for the median filter, [3, 25]. + + + Default value is set to 3. + + The value should be odd. + + + + + + Performs backward quadrilateral transformation into an area in destination image. + + + The class implements backward quadrilateral transformation algorithm, + which allows to transform any rectangular image into any quadrilateral area + in a given destination image. The idea of the algorithm is based on homogeneous + transformation and its math is described by Paul Heckbert in his + "Projective Mappings for Image Warping" paper. + + + The image processing routines implements similar math to , + but performs it in backward direction. + + The image processing filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // define quadrilateral's corners + List<IntPoint> corners = new List<IntPoint>( ); + corners.Add( new IntPoint( 99, 99 ) ); + corners.Add( new IntPoint( 156, 79 ) ); + corners.Add( new IntPoint( 184, 126 ) ); + corners.Add( new IntPoint( 122, 150 ) ); + // create filter + BackwardQuadrilateralTransformation filter = + new BackwardQuadrilateralTransformation( sourceImage, corners ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Source image: + + Destination image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Source image to be transformed into specified quadrilateral + (see ). + + + + + Initializes a new instance of the class. + + + Source unmanaged image to be transformed into specified quadrilateral + (see ). + + + + + Initializes a new instance of the class. + + + Source image to be transformed into specified quadrilateral + (see ). + Quadrilateral in destination image to transform into. + + + + + Initializes a new instance of the class. + + + Source unmanaged image to be transformed into specified quadrilateral + (see ). + Quadrilateral in destination image to transform into. + + + + + Process the filter on the specified image. + + + Image data to process by the filter. + + Destination quadrilateral was not set. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Source image to be transformed into specified quadrilateral. + + + The property sets the source image, which will be transformed + to the specified quadrilateral and put into destination image the filter is applied to. + + The source image must have the same pixel format as a destination image the filter + is applied to. Otherwise exception will be generated when filter is applied. + + Setting this property will clear the property - + only one source image is allowed: managed or unmanaged. + + + + + + Source unmanaged image to be transformed into specified quadrilateral. + + + The property sets the source image, which will be transformed + to the specified quadrilateral and put into destination image the filter is applied to. + + The source image must have the same pixel format as a destination image the filter + is applied to. Otherwise exception will be generated when filter is applied. + + Setting this property will clear the property - + only one source image is allowed: managed or unmanaged. + + + + + + Quadrilateral in destination image to transform into. + + + The property specifies 4 corners of a quadrilateral area + in destination image where the source image will be transformed into. + + + + + + Specifies if bilinear interpolation should be used or not. + + + Default value is set to - interpolation + is used. + + + + + + Crop an image. + + + + The filter crops an image providing a new image, which contains only the specified + rectangle of the original image. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Crop filter = new Crop( new Rectangle( 75, 75, 320, 240 ) ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Rectangle to crop. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rectangle to crop. + + + + + Performs quadrilateral transformation of an area in a given source image. + + + The class implements quadrilateral transformation algorithm, + which allows to transform any quadrilateral from a given source image + to a rectangular image. The idea of the algorithm is based on homogeneous + transformation and its math is described by Paul Heckbert in his + "Projective Mappings for Image Warping" paper. + + + The image processing filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // define quadrilateral's corners + List<IntPoint> corners = new List<IntPoint>( ); + corners.Add( new IntPoint( 99, 99 ) ); + corners.Add( new IntPoint( 156, 79 ) ); + corners.Add( new IntPoint( 184, 126 ) ); + corners.Add( new IntPoint( 122, 150 ) ); + // create filter + QuadrilateralTransformation filter = + new QuadrilateralTransformation( corners, 200, 200 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + New image width. + + + + + New image height. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + Source quadrilateral was not set. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + Default value is set to . + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Specifies if bilinear interpolation should be used or not. + + + Default value is set to - interpolation + is used. + + + + + + Performs quadrilateral transformation using bilinear algorithm for interpolation. + + + The class is deprecated and should be used instead. + + + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + The specified quadrilateral's corners are outside of the given image. + + + + + Format translations dictionary. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Performs quadrilateral transformation using nearest neighbor algorithm for interpolation. + + + The class is deprecated and should be used instead. + + + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + The specified quadrilateral's corners are outside of the given image. + + + + + Format translations dictionary. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Resize image using bicubic interpolation algorithm. + + + The class implements image resizing filter using bicubic + interpolation algorithm. It uses bicubic kernel W(x) as described on + Wikipedia + (coefficient a is set to -0.5). + + The filter accepts 8 grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + ResizeBicubic filter = new ResizeBicubic( 400, 300 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Width of new image. + Height of new image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Resize image using bilinear interpolation algorithm. + + + The class implements image resizing filter using bilinear + interpolation algorithm. + + The filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + ResizeBilinear filter = new ResizeBilinear( 400, 300 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Width of the new image. + Height of the new image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Resize image using nearest neighbor algorithm. + + + The class implements image resizing filter using nearest + neighbor algorithm, which does not assume any interpolation. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + ResizeNearestNeighbor filter = new ResizeNearestNeighbor( 400, 300 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Width of the new image. + Height of the new image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rotate image using bicubic interpolation. + + + The class implements image rotation filter using bicubic + interpolation algorithm. It uses bicubic kernel W(x) as described on + Wikipedia + (coefficient a is set to -0.5). + + Rotation is performed in counterclockwise direction. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateBicubic filter = new RotateBicubic( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property + to . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rotate image using bilinear interpolation. + + + Rotation is performed in counterclockwise direction. + + The class implements image rotation filter using bilinear + interpolation algorithm. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateBilinear filter = new RotateBilinear( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property + to . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rotate image using nearest neighbor algorithm. + + + The class implements image rotation filter using nearest + neighbor algorithm, which does not assume any interpolation. + + Rotation is performed in counterclockwise direction. + + The filter accepts 8/16 bpp grayscale images and 24/48 bpp color image + for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateNearestNeighbor filter = new RotateNearestNeighbor( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property to + . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Shrink an image by removing specified color from its boundaries. + + + Removes pixels with specified color from image boundaries making + the image smaller in size. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + Shrink filter = new Shrink( Color.Black ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Color to remove from boundaries. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Color to remove from boundaries. + + + + + + Performs quadrilateral transformation of an area in the source image. + + + The class implements simple algorithm described by + Olivier Thill + for transforming quadrilateral area from a source image into rectangular image. + The idea of the algorithm is based on finding for each line of destination + rectangular image a corresponding line connecting "left" and "right" sides of + quadrilateral in a source image. Then the line is linearly transformed into the + line in destination image. + + Due to simplicity of the algorithm it does not do any correction for perspective. + + + To make sure the algorithm works correctly, it is preferred if the + "left-top" corner of the quadrilateral (screen coordinates system) is + specified first in the list of quadrilateral's corners. At least + user need to make sure that the "left" side (side connecting first and the last + corner) and the "right" side (side connecting second and third corners) are + not horizontal. + + Use to avoid the above mentioned limitations, + which is a more advanced quadrilateral transformation algorithms (although a bit more + computationally expensive). + + The image processing filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // define quadrilateral's corners + List<IntPoint> corners = new List<IntPoint>( ); + corners.Add( new IntPoint( 99, 99 ) ); + corners.Add( new IntPoint( 156, 79 ) ); + corners.Add( new IntPoint( 184, 126 ) ); + corners.Add( new IntPoint( 122, 150 ) ); + // create filter + SimpleQuadrilateralTransformation filter = + new SimpleQuadrilateralTransformation( corners, 200, 200 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + New image width. + + + + + New image height. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + Source quadrilateral was not set. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + Default value is set to . + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + See documentation to the + class itself for additional information. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Specifies if bilinear interpolation should be used or not. + + + Default value is set to - interpolation + is used. + + + + + + Transform polar image into rectangle. + + + The image processing routine is opposite transformation to the one done by + routine, i.e. transformation from polar image into rectangle. The produced effect is similar to GIMP's + "Polar Coordinates" distortion filter (or its equivalent in Photoshop). + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + TransformFromPolar filter = new TransformFromPolar( ); + filter.OffsetAngle = 0; + filter.CirlceDepth = 1; + filter.UseOriginalImageSize = false; + filter.NewSize = new Size( 360, 120 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Circularity coefficient of the mapping, [0, 1]. + + + The property specifies circularity coefficient of the mapping to be done. + If the coefficient is set to 1, then destination image will be produced by mapping + ideal circle from the source image, which is placed in source image's centre and its + radius equals to the minimum distance from centre to the image’s edge. If the coefficient + is set to 0, then the mapping will use entire area of the source image (circle will + be extended into direction of edges). Changing the property from 0 to 1 user may balance + circularity of the produced output. + + Default value is set to 1. + + + + + + Offset angle used to shift mapping, [-360, 360] degrees. + + + The property specifies offset angle, which can be used to shift + mapping in clockwise direction. For example, if user sets this property to 30, then + start of polar mapping is shifted by 30 degrees in clockwise direction. + + Default value is set to 0. + + + + + + Specifies direction of mapping. + + + The property specifies direction of mapping source image. If the + property is set to , the image is mapped in clockwise direction; + otherwise in counter clockwise direction. + + Default value is set to . + + + + + + Specifies if centre of the source image should to top or bottom of the result image. + + + The property specifies position of the source image's centre in the destination image. + If the property is set to , then it goes to the top of the result image; + otherwise it goes to the bottom. + + Default value is set to . + + + + + + Size of destination image. + + + The property specifies size of result image produced by this image + processing routine in the case if property + is set to . + + Both width and height must be in the [1, 10000] range. + + Default value is set to 200 x 200. + + + + + + Use source image size for destination or not. + + + The property specifies if the image processing routine should create destination + image of the same size as original image or of the size specified by + property. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Transform rectangle image into circle (to polar coordinates). + + + The image processing routine does transformation of the source image into + circle (polar transformation). The produced effect is similar to GIMP's "Polar Coordinates" + distortion filter (or its equivalent in Photoshop). + + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + TransformToPolar filter = new TransformToPolar( ); + filter.OffsetAngle = 0; + filter.CirlceDepth = 1; + filter.UseOriginalImageSize = false; + filter.NewSize = new Size( 200, 200 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Circularity coefficient of the mapping, [0, 1]. + + + The property specifies circularity coefficient of the mapping to be done. + If the coefficient is set to 1, then the mapping will produce ideal circle. If the coefficient + is set to 0, then the mapping will occupy entire area of the destination image (circle will + be extended into direction of edges). Changing the property from 0 to 1 user may balance + circularity of the produced output. + + + Default value is set to 1. + + + + + + Offset angle used to shift mapping, [-360, 360] degrees. + + + The property specifies offset angle, which can be used to shift + mapping in counter clockwise direction. For example, if user sets this property to 30, then + start of polar mapping is shifted by 30 degrees in counter clockwise direction. + + Default value is set to 0. + + + + + + Specifies direction of mapping. + + + The property specifies direction of mapping source image's X axis. If the + property is set to , the image is mapped in clockwise direction; + otherwise in counter clockwise direction. + + Default value is set to . + + + + + + Specifies if top of the source image should go to center or edge of the result image. + + + The property specifies position of the source image's top line in the destination + image. If the property is set to , then it goes to the center of the result image; + otherwise it goes to the edge. + + Default value is set to . + + + + + + Fill color to use for unprocessed areas. + + + The property specifies fill color, which is used to fill unprocessed areas. + In the case if is greater than 0, then there will be some areas on + the image's edge, which are not filled by the produced "circular" image, but are filled by + the specified color. + + + Default value is set to . + + + + + + Size of destination image. + + + The property specifies size of result image produced by this image + processing routine in the case if property + is set to . + + Both width and height must be in the [1, 10000] range. + + Default value is set to 200 x 200. + + + + + + Use source image size for destination or not. + + + The property specifies if the image processing routine should create destination + image of the same size as original image or of the size specified by + property. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Extract YCbCr channel from image. + + + The filter extracts specified YCbCr channel of color image and returns + it in the form of grayscale image. + + The filter accepts 24 and 32 bpp color images and produces + 8 bpp grayscale images. + + Sample usage: + + // create filter + YCbCrExtractChannel filter = new YCbCrExtractChannel( YCbCr.CrIndex ); + // apply the filter + Bitmap crChannel = filter.Apply( image ); + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + YCbCr channel to extract. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + YCbCr channel to extract. + + + Default value is set to (Y channel). + + Invalid channel was specified. + + + + + Color filtering in YCbCr color space. + + + The filter operates in YCbCr color space and filters + pixels, which color is inside/outside of the specified YCbCr range - + it keeps pixels with colors inside/outside of the specified range and fills the + rest with specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + YCbCrFiltering filter = new YCbCrFiltering( ); + // set color ranges to keep + filter.Cb = new Range( -0.2f, 0.0f ); + filter.Cr = new Range( 0.26f, 0.5f ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Range of Y component. + Range of Cb component. + Range of Cr component. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Range of Y component, [0, 1]. + + + + + + Range of Cb component, [-0.5, 0.5]. + + + + + + Range of Cr component, [-0.5, 0.5]. + + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside specified + color range. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Determines, if Y value of filtered pixels should be updated. + + + The property specifies if Y channel of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if Cb value of filtered pixels should be updated. + + + The property specifies if Cb channel of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if Cr value of filtered pixels should be updated. + + + The property specifies if Cr channel of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Linear correction of YCbCr channels. + + + The filter operates in YCbCr color space and provides + with the facility of linear correction of its channels - mapping specified channels' + input ranges to specified output ranges. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + YCbCrLinear filter = new YCbCrLinear( ); + // configure the filter + filter.InCb = new Range( -0.276f, 0.163f ); + filter.InCr = new Range( -0.202f, 0.500f ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Y component's input range. + + + Y component is measured in the range of [0, 1]. + + + + + Cb component's input range. + + + Cb component is measured in the range of [-0.5, 0.5]. + + + + + Cr component's input range. + + + Cr component is measured in the range of [-0.5, 0.5]. + + + + + Y component's output range. + + + Y component is measured in the range of [0, 1]. + + + + + Cb component's output range. + + + Cb component is measured in the range of [-0.5, 0.5]. + + + + + Cr component's output range. + + + Cr component is measured in the range of [-0.5, 0.5]. + + + + + Format translations dictionary. + + + + + Replace channel of YCbCr color space. + + + Replaces specified YCbCr channel of color image with + specified grayscale imge. + + The filter is quite useful in conjunction with filter + (however may be used alone in some cases). Using the filter + it is possible to extract one of YCbCr channel, perform some image processing with it and then + put it back into the original color image. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create YCbCrExtractChannel filter for channel extracting + YCbCrExtractChannel extractFilter = new YCbCrExtractChannel( + YCbCr.CbIndex ); + // extract Cb channel + Bitmap cbChannel = extractFilter.Apply( image ); + // invert the channel + Invert invertFilter = new Invert( ); + invertFilter.ApplyInPlace( cbChannel ); + // put the channel back into the source image + YCbCrReplaceChannel replaceFilter = new YCbCrReplaceChannel( + YCbCr.CbIndex, cbChannel ); + replaceFilter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + YCbCr channel to replace. + + + + + Initializes a new instance of the class. + + + YCbCr channel to replace. + Channel image to use for replacement. + + + + + Initializes a new instance of the class. + + + YCbCr channel to replace. + Unmanaged channel image to use for replacement. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + Channel image was not specified. + Channel image size does not match source + image size. + + + + + Format translations dictionary. + + + + + YCbCr channel to replace. + + + Default value is set to (Y channel). + + Invalid channel was specified. + + + + + Grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8bpp indexed image (grayscale). + + + + + Unmanaged grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8bpp indexed image (grayscale). + + + + + Information about FITS image's frame. + + + + + Information about image's frame. + + + This is a base class, which keeps basic information about image, like its width, + height, etc. Classes, which inherit from this, may define more properties describing certain + image formats. + + + + + Image's width. + + + + + Image's height. + + + + + Number of bits per image's pixel. + + + + + Frame's index. + + + + + Total frames in the image. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Image's width. + Image's height. + Number of bits per image's pixel. + Frame's index. + Total frames in the image. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Image's width. + + + + + Image's height. + + + + + Number of bits per image's pixel. + + + + + Frame's index. + + + Some image formats support storing multiple frames in one image file. + The property specifies index of a particular frame. + + + + + Total frames in the image. + + + Some image formats support storing multiple frames in one image file. + The property specifies total number of frames in image file. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Image's width. + Image's height. + Number of bits per image's pixel. + Frame's index. + Total frames in the image. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Original bits per pixel. + + + The property specifies original number of bits per image's pixel. For + FITS images the value may be equal to 8, 16, 32, -32 (32 bit image with float data + type for pixel encoding), -64 (64 bit image with double data type for pixel encoding). + + + + + + Minimum data value found during parsing FITS image. + + + Minimum and maximum data values are used to scale image's data converting + them from original bits per pixel format to + supported bits per pixel format. + + + + + Maximum data value found during parsing FITS image. + + + Minimum and maximum data values are used to scale image's data converting + them from original bits per pixel format to + supported bits per pixel format. + + + + + Telescope used for object's observation. + + + + + Object acquired during observation. + + + + + Observer doing object's acquiring. + + + + + Instrument used for observation. + + + + + FITS image format decoder. + + + The FITS (an acronym derived from "Flexible Image Transport System") format + is an astronomical image and table format created and supported by NASA. FITS is the most + commonly used in astronomy and is designed specifically for scientific data. Different astronomical + organizations keep their images acquired using telescopes and other equipment in FITS format. + + The class extracts image frames only from the main data section of FITS file. + 2D (single frame) and 3D (series of frames) data structures are supported. + + During image reading/parsing, its data are scaled using minimum and maximum values of + the source image data. FITS tags are not used for this purpose - data are scaled from the + [min, max] range found to the range of supported image format ([0, 255] for 8 bpp grayscale + or [0, 65535] for 16 bpp grayscale image). + + + + + + Image decoder interface, which specifies set of methods, which should be + implemented by image decoders for different file formats. + + + The interface specifies set of methods, which are suitable not + only for simple one-frame image formats. The interface also defines methods + to work with image formats designed to store multiple frames and image formats + which provide different type of image description (like acquisition + parameters, etc). + + + + + + Decode first frame of image from the specified stream. + + + Source stream, which contains encoded image. + + Returns decoded image frame. + + + For one-frame image formats the method is supposed to decode single + available frame. For multi-frame image formats the first frame should be + decoded. + + Implementations of this method may throw + exception to report about unrecognized image + format, exception to report about incorrectly + formatted image or exception to report if + certain formats are not supported. + + + + + + Open specified stream. + + + Stream to open. + + Returns number of images found in the specified stream. + + Implementation of this method is supposed to read image's header, + checking for correct image format and reading its atributes. + + Implementations of this method may throw + exception to report about unrecognized image + format, exception to report about incorrectly + formatted image or exception to report if + certain formats are not supported. + + + + + + Decode specified frame. + + + Image frame to decode. + Receives information about decoded frame. + + Returns decoded frame. + + Implementations of this method may throw + exception in the case if no image + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted image. + + + + + + Close decoding of previously opened stream. + + + Implementations of this method don't close stream itself, but just close + decoding cleaning all associated data with it. + + + + + Decode first frame of FITS image. + + + Source stream, which contains encoded image. + + Returns decoded image frame. + + Not a FITS image format. + Format of the FITS image is not supported. + The stream contains invalid (broken) FITS image. + + + + + Open specified stream. + + + Stream to open. + + Returns number of images found in the specified stream. + + Not a FITS image format. + Format of the FITS image is not supported. + The stream contains invalid (broken) FITS image. + + + + + Decode specified frame. + + + Image frame to decode. + Receives information about decoded frame. + + Returns decoded frame. + + No image stream was opened previously. + Stream does not contain frame with specified index. + The stream contains invalid (broken) FITS image. + + + + + Close decoding of previously opened stream. + + + The method does not close stream itself, but just closes + decoding cleaning all associated data with it. + + + + + Image decoder to decode different custom image file formats. + + + The class represent a help class, which simplifies decoding of image + files finding appropriate image decoder automatically (using list of registered + image decoders). Instead of using required image decoder directly, users may use this + class, which will find required decoder by file's extension. + + By default the class registers on its own all decoders, which are available in + AForge.Imaging.Formats library. If user has implementation of his own image decoders, he + needs to register them using method to be able to use them through + the class. + + If the class can not find appropriate decode in the list of registered + decoders, it passes file to .NET's image decoder for decoding. + + Sample usage: + + // sample file name + string fileName = "myFile.pnm"; + // decode image file + Bitmap = ImageDecoder.DecodeFromFile( fileName ); + + + + + + + + + + Register image decoder for a specified file extension. + + + File extension to register decoder for ("bmp", for example). + Image decoder to use for the specified file extension. + + The method allows to register image decoder object, which should be used + to decode images from files with the specified extension. + + + + + Decode first frame for the specified file. + + + File name to read image from. + + Return decoded image. In the case if file format support multiple + frames, the method return the first frame. + + The method uses table of registered image decoders to find the one, + which should be used for the specified file. If there is not appropriate decoder + found, the method uses default .NET's image decoding routine (see + ). + + + + + Decode first frame for the specified file. + + + File name to read image from. + Information about the decoded image. + + Return decoded image. In the case if file format support multiple + frames, the method return the first frame. + + The method uses table of registered image decoders to find the one, + which should be used for the specified file. If there is not appropriate decoder + found, the method uses default .NET's image decoding routine (see + ). + + + + + Information about PNM image's frame. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Image's width. + Image's height. + Number of bits per image's pixel. + Frame's index. + Total frames in the image. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + PNM file version (format), [1, 6]. + + + + + Maximum pixel's value in source PNM image. + + + The value is used to scale image's data converting them + from original data range to the range of + supported bits per pixel format. + + + + + PNM image format decoder. + + + The PNM (an acronym derived from "Portable Any Map") format is an + abstraction of the PBM, PGM and PPM formats. I.e. the name "PNM" refers collectively + to PBM (binary images), PGM (grayscale images) and PPM (color image) image formats. + + Image in PNM format can be found in different scientific databases and laboratories, + for example Yale Face Database and AT&T Face Database. + + Only PNM images of P5 (binary encoded PGM) and P6 (binary encoded PPM) formats + are supported at this point. + + The maximum supported pixel value is 255 at this point. + + The class supports only one-frame PNM images. As it is specified in format + specification, the multi-frame PNM images has appeared starting from 2000. + + + + + + + Decode first frame of PNM image. + + + Source stream, which contains encoded image. + + Returns decoded image frame. + + Not a PNM image format. + Format of the PNM image is not supported. + The stream contains invalid (broken) PNM image. + + + + + Open specified stream. + + + Stream to open. + + Returns number of images found in the specified stream. + + Not a PNM image format. + Format of the PNM image is not supported. + The stream contains invalid (broken) PNM image. + + + + + Decode specified frame. + + + Image frame to decode. + Receives information about decoded frame. + + Returns decoded frame. + + No image stream was opened previously. + Stream does not contain frame with specified index. + The stream contains invalid (broken) PNM image. + + + + + Close decoding of previously opened stream. + + + The method does not close stream itself, but just closes + decoding cleaning all associated data with it. + + + + + Set of tools used internally in AForge.Imaging.Formats library. + + + + + Create and initialize new grayscale image. + + + Image width. + Image height. + + Returns new created grayscale image. + + AForge.Imaging.Image.CreateGrayscaleImage() function + could be used instead, which does the some. But it was not used to get + rid of dependency on AForge.Imaing library. + + + + + Read specified amount of bytes from the specified stream. + + + Source sream to read data from. + Buffer to read data into. + Offset in buffer to put data into. + Number of bytes to read. + + Returns total number of bytes read. It may be smaller than requested amount only + in the case if end of stream was reached. + + This tool function guarantees that requested number of bytes + was read from the source stream (.NET streams don't guarantee this and may return less bytes + than it was requested). Only in the case if end of stream was reached, the function + may return with less bytes read. + + + + + + Horizontal intensity statistics. + + + The class provides information about horizontal distribution + of pixel intensities, which may be used to locate objects, their centers, etc. + + + The class accepts grayscale (8 bpp indexed and 16 bpp) and color (24, 32, 48 and 64 bpp) images. + In the case of 32 and 64 bpp color images, the alpha channel is not processed - statistics is not + gathered for this channel. + + Sample usage: + + // collect statistics + HorizontalIntensityStatistics his = new HorizontalIntensityStatistics( sourceImage ); + // get gray histogram (for grayscale image) + Histogram histogram = his.Gray; + // output some histogram's information + System.Diagnostics.Debug.WriteLine( "Mean = " + histogram.Mean ); + System.Diagnostics.Debug.WriteLine( "Min = " + histogram.Min ); + System.Diagnostics.Debug.WriteLine( "Max = " + histogram.Max ); + + + Sample grayscale image with its horizontal intensity histogram: + + + + + + + + + Initializes a new instance of the class. + + + Source image. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source image data. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Gather horizontal intensity statistics for specified image. + + + Source image. + + + + + Histogram for red channel. + + + + + + Histogram for green channel. + + + + + + Histogram for blue channel. + + + + + + Histogram for gray channel (intensities). + + + + + + Value wich specifies if the processed image was color or grayscale. + + + If the property equals to true, then the + property should be used to retrieve histogram for the processed grayscale image. + Otherwise , and property + should be used to retrieve histogram for particular RGB channel of the processed + color image. + + + + + Hough circle. + + + Represents circle of Hough transform. + + + + + + + Circle center's X coordinate. + + + + + Circle center's Y coordinate. + + + + + Circle's radius. + + + + + Line's absolute intensity. + + + + + Line's relative intensity. + + + + + Initializes a new instance of the class. + + + Circle's X coordinate. + Circle's Y coordinate. + Circle's radius. + Circle's absolute intensity. + Circle's relative intensity. + + + + + Compare the object with another instance of this class. + + + Object to compare with. + + A signed number indicating the relative values of this instance and value: 1) greater than zero - + this instance is greater than value; 2) zero - this instance is equal to value; + 3) greater than zero - this instance is less than value. + + The sort order is descending. + + + Object are compared using their intensity value. + + + + + + Hough circle transformation. + + + The class implements Hough circle transformation, which allows to detect + circles of specified radius in an image. + + The class accepts binary images for processing, which are represented by 8 bpp grayscale images. + All black pixels (0 pixel's value) are treated as background, but pixels with different value are + treated as circles' pixels. + + Sample usage: + + HoughCircleTransformation circleTransform = new HoughCircleTransformation( 35 ); + // apply Hough circle transform + circleTransform.ProcessImage( sourceImage ); + Bitmap houghCirlceImage = circleTransform.ToBitmap( ); + // get circles using relative intensity + HoughCircle[] circles = circleTransform.GetCirclesByRelativeIntensity( 0.5 ); + + foreach ( HoughCircle circle in circles ) + { + // ... + } + + + Initial image: + + Hough circle transformation image: + + + + + + + + + Initializes a new instance of the class. + + + Circles' radius to detect. + + + + + Process an image building Hough map. + + + Source image to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image data to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source unmanaged image to process. + + Unsupported pixel format of the source image. + + + + + Ñonvert Hough map to bitmap. + + + Returns 8 bppp grayscale bitmap, which shows Hough map. + + Hough transformation was not yet done by calling + ProcessImage() method. + + + + + Get specified amount of circles with highest intensity. + + + Amount of circles to get. + + Returns arrary of most intesive circles. If there are no circles detected, + the returned array has zero length. + + + + + Get circles with relative intensity higher then specified value. + + + Minimum relative intesity of circles. + + Returns arrary of most intesive circles. If there are no circles detected, + the returned array has zero length. + + + + + Minimum circle's intensity in Hough map to recognize a circle. + + + The value sets minimum intensity level for a circle. If a value in Hough + map has lower intensity, then it is not treated as a circle. + + Default value is set to 10. + + + + + Radius for searching local peak value. + + + The value determines radius around a map's value, which is analyzed to determine + if the map's value is a local maximum in specified area. + + Default value is set to 4. Minimum value is 1. Maximum value is 10. + + + + + Maximum found intensity in Hough map. + + + The property provides maximum found circle's intensity. + + + + + Found circles count. + + + The property provides total number of found circles, which intensity is higher (or equal to), + than the requested minimum intensity. + + + + + Hough line. + + + Represents line of Hough Line transformation using + polar coordinates. + See Wikipedia + for information on how to convert polar coordinates to Cartesian coordinates. + + + Hough Line transformation does not provide + information about lines start and end points, only slope and distance from image's center. Using + only provided information it is not possible to draw the detected line as it exactly appears on + the source image. But it is possible to draw a line through the entire image, which contains the + source line (see sample code below). + + + Sample code to draw detected Hough lines: + + HoughLineTransformation lineTransform = new HoughLineTransformation( ); + // apply Hough line transofrm + lineTransform.ProcessImage( sourceImage ); + Bitmap houghLineImage = lineTransform.ToBitmap( ); + // get lines using relative intensity + HoughLine[] lines = lineTransform.GetLinesByRelativeIntensity( 0.5 ); + + foreach ( HoughLine line in lines ) + { + // get line's radius and theta values + int r = line.Radius; + double t = line.Theta; + + // check if line is in lower part of the image + if ( r < 0 ) + { + t += 180; + r = -r; + } + + // convert degrees to radians + t = ( t / 180 ) * Math.PI; + + // get image centers (all coordinate are measured relative + // to center) + int w2 = image.Width /2; + int h2 = image.Height / 2; + + double x0 = 0, x1 = 0, y0 = 0, y1 = 0; + + if ( line.Theta != 0 ) + { + // none-vertical line + x0 = -w2; // most left point + x1 = w2; // most right point + + // calculate corresponding y values + y0 = ( -Math.Cos( t ) * x0 + r ) / Math.Sin( t ); + y1 = ( -Math.Cos( t ) * x1 + r ) / Math.Sin( t ); + } + else + { + // vertical line + x0 = line.Radius; + x1 = line.Radius; + + y0 = h2; + y1 = -h2; + } + + // draw line on the image + Drawing.Line( sourceData, + new IntPoint( (int) x0 + w2, h2 - (int) y0 ), + new IntPoint( (int) x1 + w2, h2 - (int) y1 ), + Color.Red ); + } + + + To clarify meaning of and values + of detected Hough lines, let's take a look at the below sample image and + corresponding values of radius and theta for the lines on the image: + + + + + Detected radius and theta values (color in corresponding colors): + + Theta = 90, R = 125, I = 249; + Theta = 0, R = -170, I = 187 (converts to Theta = 180, R = 170); + Theta = 90, R = -58, I = 163 (converts to Theta = 270, R = 58); + Theta = 101, R = -101, I = 130 (converts to Theta = 281, R = 101); + Theta = 0, R = 43, I = 112; + Theta = 45, R = 127, I = 82. + + + + + + + + + + + Line's slope - angle between polar axis and line's radius (normal going + from pole to the line). Measured in degrees, [0, 180). + + + + + Line's distance from image center, (−∞, +∞). + + + Negative line's radius means, that the line resides in lower + part of the polar coordinates system. This means that value + should be increased by 180 degrees and radius should be made positive. + + + + + + Line's absolute intensity, (0, +∞). + + + Line's absolute intensity is a measure, which equals + to number of pixels detected on the line. This value is bigger for longer + lines. + + The value may not be 100% reliable to measure exact number of pixels + on the line. Although these value correlate a lot (which means they are very close + in most cases), the intensity value may slightly vary. + + + + + + Line's relative intensity, (0, 1]. + + + Line's relative intensity is relation of line's + value to maximum found intensity. For the longest line (line with highest intesity) the + relative intensity is set to 1. If line's relative is set 0.5, for example, this means + its intensity is half of maximum found intensity. + + + + + + Initializes a new instance of the class. + + + Line's slope. + Line's distance from image center. + Line's absolute intensity. + Line's relative intensity. + + + + + Compare the object with another instance of this class. + + + Object to compare with. + + A signed number indicating the relative values of this instance and value: 1) greater than zero - + this instance is greater than value; 2) zero - this instance is equal to value; + 3) greater than zero - this instance is less than value. + + The sort order is descending. + + + Object are compared using their intensity value. + + + + + + Hough line transformation. + + + The class implements Hough line transformation, which allows to detect + straight lines in an image. Lines, which are found by the class, are provided in + polar coordinates system - + lines' distances from image's center and lines' slopes are provided. + The pole of polar coordinates system is put into processing image's center and the polar + axis is directed to the right from the pole. Lines' slope is measured in degrees and + is actually represented by angle between polar axis and line's radius (normal going + from pole to the line), which is measured in counter-clockwise direction. + + + Found lines may have negative radius. + This means, that the line resides in lower part of the polar coordinates system + and its value should be increased by 180 degrees and + radius should be made positive. + + + The class accepts binary images for processing, which are represented by 8 bpp grayscale images. + All black pixels (0 pixel's value) are treated as background, but pixels with different value are + treated as lines' pixels. + + See also documentation to class for additional information + about Hough Lines. + + Sample usage: + + HoughLineTransformation lineTransform = new HoughLineTransformation( ); + // apply Hough line transofrm + lineTransform.ProcessImage( sourceImage ); + Bitmap houghLineImage = lineTransform.ToBitmap( ); + // get lines using relative intensity + HoughLine[] lines = lineTransform.GetLinesByRelativeIntensity( 0.5 ); + + foreach ( HoughLine line in lines ) + { + // ... + } + + + Initial image: + + Hough line transformation image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Process an image building Hough map. + + + Source image to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image to process. + Image's rectangle to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image data to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image data to process. + Image's rectangle to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source unmanaged image to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source unmanaged image to process. + Image's rectangle to process. + + Unsupported pixel format of the source image. + + + + + Convert Hough map to bitmap. + + + Returns 8 bppp grayscale bitmap, which shows Hough map. + + Hough transformation was not yet done by calling + ProcessImage() method. + + + + + Get specified amount of lines with highest intensity. + + + Amount of lines to get. + + Returns array of most intesive lines. If there are no lines detected, + the returned array has zero length. + + + + + Get lines with relative intensity higher then specified value. + + + Minimum relative intesity of lines. + + Returns array of lines. If there are no lines detected, + the returned array has zero length. + + + + + Steps per degree. + + + The value defines quality of Hough line transformation and its ability to detect + lines' slope precisely. + + Default value is set to 1. Minimum value is 1. Maximum value is 10. + + + + + Minimum line's intensity in Hough map to recognize a line. + + + The value sets minimum intensity level for a line. If a value in Hough + map has lower intensity, then it is not treated as a line. + + Default value is set to 10. + + + + + Radius for searching local peak value. + + + The value determines radius around a map's value, which is analyzed to determine + if the map's value is a local maximum in specified area. + + Default value is set to 4. Minimum value is 1. Maximum value is 10. + + + + + Maximum found intensity in Hough map. + + + The property provides maximum found line's intensity. + + + + + Found lines count. + + + The property provides total number of found lines, which intensity is higher (or equal to), + than the requested minimum intensity. + + + + + Interface for custom blobs' filters used for filtering blobs after + blob counting. + + + The interface should be implemented by classes, which perform + custom blobs' filtering different from default filtering implemented in + . See + for additional information. + + + + + + Check specified blob and decide if should be kept or not. + + + Blob to check. + + Return if the blob should be kept or + if it should be removed. + + + + + Corners detector's interface. + + + The interface specifies set of methods, which should be implemented by different + corners detection algorithms. + + + + + Process image looking for corners. + + + Source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + + Unmanaged source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Core image relatad methods. + + + All methods of this class are static and represent general routines + used by different image processing classes. + + + + + Check if specified 8 bpp image is grayscale. + + + Image to check. + + Returns true if the image is grayscale or false otherwise. + + The methods checks if the image is a grayscale image of 256 gradients. + The method first examines if the image's pixel format is + Format8bppIndexed + and then it examines its palette to check if the image is grayscale or not. + + + + + Create and initialize new 8 bpp grayscale image. + + + Image width. + Image height. + + Returns the created grayscale image. + + The method creates new 8 bpp grayscale image and initializes its palette. + Grayscale image is represented as + Format8bppIndexed + image with palette initialized to 256 gradients of gray color. + + + + + Set pallete of the 8 bpp indexed image to grayscale. + + + Image to initialize. + + The method initializes palette of + Format8bppIndexed + image with 256 gradients of gray color. + + Provided image is not 8 bpp indexed image. + + + + + Clone image. + + + Source image. + Pixel format of result image. + + Returns clone of the source image with specified pixel format. + + The original Bitmap.Clone() + does not produce the desired result - it does not create a clone with specified pixel format. + More of it, the original method does not create an actual clone - it does not create a copy + of the image. That is why this method was implemented to provide the functionality. + + + + + Clone image. + + + Source image. + + Return clone of the source image. + + The original Bitmap.Clone() + does not produce the desired result - it does not create an actual clone (it does not create a copy + of the image). That is why this method was implemented to provide the functionality. + + + + + Clone image. + + + Source image data. + + Clones image from source image data. The message does not clone pallete in the + case if the source image has indexed pixel format. + + + + + Format an image. + + + Source image to format. + + Formats the image to one of the formats, which are supported + by the AForge.Imaging library. The image is left untouched in the + case if it is already of + Format24bppRgb or + Format32bppRgb or + Format32bppArgb or + Format48bppRgb or + Format64bppArgb + format or it is grayscale, otherwise the image + is converted to Format24bppRgb + format. + + The method is deprecated and method should + be used instead with specifying desired pixel format. + + + + + + Load bitmap from file. + + + File name to load bitmap from. + + Returns loaded bitmap. + + The method is provided as an alternative of + method to solve the issues of locked file. The standard .NET's method locks the source file until + image's object is disposed, so the file can not be deleted or overwritten. This method workarounds the issue and + does not lock the source file. + + Sample usage: + + Bitmap image = AForge.Imaging.Image.FromFile( "test.jpg" ); + + + + + + + Convert bitmap with 16 bits per plane to a bitmap with 8 bits per plane. + + + Source image to convert. + + Returns new image which is a copy of the source image but with 8 bits per plane. + + The routine does the next pixel format conversions: + + Format16bppGrayScale to + Format8bppIndexed with grayscale palette; + Format48bppRgb to + Format24bppRgb; + Format64bppArgb to + Format32bppArgb; + Format64bppPArgb to + Format32bppPArgb. + + + + Invalid pixel format of the source image. + + + + + Convert bitmap with 8 bits per plane to a bitmap with 16 bits per plane. + + + Source image to convert. + + Returns new image which is a copy of the source image but with 16 bits per plane. + + The routine does the next pixel format conversions: + + Format8bppIndexed (grayscale palette assumed) to + Format16bppGrayScale; + Format24bppRgb to + Format48bppRgb; + Format32bppArgb to + Format64bppArgb; + Format32bppPArgb to + Format64bppPArgb. + + + + Invalid pixel format of the source image. + + + + + Gather statistics about image in RGB color space. + + + The class is used to accumulate statistical values about images, + like histogram, mean, standard deviation, etc. for each color channel in RGB color + space. + + The class accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // gather statistics + ImageStatistics stat = new ImageStatistics( image ); + // get red channel's histogram + Histogram red = stat.Red; + // check mean value of red channel + if ( red.Mean > 128 ) + { + // do further processing + } + + + + + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Unmanaged image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Histogram of red channel. + + + The property is valid only for color images + (see property). + + + + + Histogram of green channel. + + + The property is valid only for color images + (see property). + + + + + Histogram of blue channel. + + + The property is valid only for color images + (see property). + + + + + Histogram of gray channel. + + + The property is valid only for grayscale images + (see property). + + + + + Histogram of red channel excluding black pixels. + + + The property keeps statistics about red channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for color images + (see property). + + + + + Histogram of green channel excluding black pixels. + + + The property keeps statistics about green channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for color images + (see property). + + + + + Histogram of blue channel excluding black pixels + + + The property keeps statistics about blue channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for color images + (see property). + + + + + Histogram of gray channel channel excluding black pixels. + + + The property keeps statistics about gray channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for grayscale images + (see property). + + + + + Total pixels count in the processed image. + + + + + + Total pixels count in the processed image excluding black pixels. + + + + + + Value wich specifies if the processed image was color or grayscale. + + + If the value is set to then + property should be used to get statistics information about image. Otherwise + , and properties should be used + for color images. + + + + + Gather statistics about image in HSL color space. + + + The class is used to accumulate statistical values about images, + like histogram, mean, standard deviation, etc. for each HSL color channel. + + The class accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // gather statistics + ImageStatisticsHSL stat = new ImageStatisticsHSL( image ); + // get saturation channel's histogram + ContinuousHistogram saturation = stat.Saturation; + // check mean value of saturation channel + if ( saturation.Mean > 0.5 ) + { + // do further processing + } + + + + + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Unmanaged image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Histogram of saturation channel. + + + + + + Histogram of luminance channel. + + + + + + Histogram of saturation channel excluding black pixels. + + + The property keeps statistics about saturation channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Histogram of luminance channel excluding black pixels. + + + The property keeps statistics about luminance channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Total pixels count in the processed image. + + + + + + Total pixels count in the processed image excluding black pixels. + + + + + + Gather statistics about image in YCbCr color space. + + + The class is used to accumulate statistical values about images, + like histogram, mean, standard deviation, etc. for each YCbCr color channel. + + The class accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // gather statistics + ImageStatisticsYCbCr stat = new ImageStatisticsYCbCr( image ); + // get Y channel's histogram + ContinuousHistogram y = stat.Y; + // check mean value of Y channel + if ( y.Mean > 0.5 ) + { + // do further processing + } + + + + + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Unmanaged image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Histogram of Y channel. + + + + + + Histogram of Cb channel. + + + + + + Histogram of Cr channel. + + + + + + Histogram of Y channel excluding black pixels. + + + The property keeps statistics about Y channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Histogram of Cb channel excluding black pixels + + + The property keeps statistics about Cb channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Histogram of Cr channel excluding black pixels + + + The property keeps statistics about Cr channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Total pixels count in the processed image. + + + + + + Total pixels count in the processed image excluding black pixels. + + + + + + Integral image. + + + The class implements integral image concept, which is described by + Viola and Jones in: P. Viola and M. J. Jones, "Robust real-time face detection", + Int. Journal of Computer Vision 57(2), pp. 137–154, 2004. + + "An integral image I of an input image G is defined as the image in which the + intensity at a pixel position is equal to the sum of the intensities of all the pixels + above and to the left of that position in the original image." + + The intensity at position (x, y) can be written as: + + x y + I(x,y) = SUM( SUM( G(i,j) ) ) + i=0 j=0 + + + The class uses 32-bit integers to represent integral image. + + The class processes only grayscale (8 bpp indexed) images. + + This class contains two versions of each method: safe and unsafe. Safe methods do + checks of provided coordinates and ensure that these coordinates belong to the image, what makes + these methods slower. Unsafe methods do not do coordinates' checks and rely that these + coordinates belong to the image, what makes these methods faster. + + Sample usage: + + // create integral image + IntegralImage im = IntegralImage.FromBitmap( image ); + // get pixels' mean value in the specified rectangle + float mean = im.GetRectangleMean( 10, 10, 20, 30 ) + + + + + + + Intergral image's array. + + + See remarks to property. + + + + + Initializes a new instance of the class. + + + Image width. + Image height. + + The constractor is protected, what makes it imposible to instantiate this + class directly. To create an instance of this class or + method should be used. + + + + + Construct integral image from source grayscale image. + + + Source grayscale image. + + Returns integral image. + + The source image has incorrect pixel format. + + + + + Construct integral image from source grayscale image. + + + Source image data. + + Returns integral image. + + The source image has incorrect pixel format. + + + + + Construct integral image from source grayscale image. + + + Source unmanaged image. + + Returns integral image. + + The source image has incorrect pixel format. + + + + + Calculate sum of pixels in the specified rectangle. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns sum of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate horizontal (X) haar wavelet at the specified point. + + + X coordinate of the point to calculate wavelet at. + Y coordinate of the point to calculate wavelet at. + Wavelet size to calculate. + + Returns value of the horizontal wavelet at the specified point. + + The method calculates horizontal wavelet, which is a difference + of two horizontally adjacent boxes' sums, i.e. A-B. A is the sum of rectangle with coordinates + (x, y-radius, x+radius-1, y+radius-1). B is the sum of rectangle with coordinates + (x-radius, y-radius, x-1, y+radiys-1). + + + + + Calculate vertical (Y) haar wavelet at the specified point. + + + X coordinate of the point to calculate wavelet at. + Y coordinate of the point to calculate wavelet at. + Wavelet size to calculate. + + Returns value of the vertical wavelet at the specified point. + + The method calculates vertical wavelet, which is a difference + of two vertical adjacent boxes' sums, i.e. A-B. A is the sum of rectangle with coordinates + (x-radius, y, x+radius-1, y+radius-1). B is the sum of rectangle with coordinates + (x-radius, y-radius, x+radius-1, y-1). + + + + + Calculate sum of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns sum of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate sum of pixels in the specified rectangle. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns sum of pixels in the specified rectangle. + + The method calculates sum of pixels in square rectangle with + odd width and height. In the case if it is required to calculate sum of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Calculate sum of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns sum of pixels in the specified rectangle. + + The method calculates sum of pixels in square rectangle with + odd width and height. In the case if it is required to calculate sum of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Calculate mean value of pixels in the specified rectangle. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns mean value of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate mean value of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns mean value of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate mean value of pixels in the specified rectangle. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns mean value of pixels in the specified rectangle. + + The method calculates mean value of pixels in square rectangle with + odd width and height. In the case if it is required to calculate mean value of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Calculate mean value of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns mean value of pixels in the specified rectangle. + + The method calculates mean value of pixels in square rectangle with + odd width and height. In the case if it is required to calculate mean value of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Width of the source image the integral image was constructed for. + + + + + Height of the source image the integral image was constructed for. + + + + + Provides access to internal array keeping integral image data. + + + + The array should be accessed by [y, x] indexing. + + The array's size is [+1, +1]. The first + row and column are filled with zeros, what is done for more efficient calculation of + rectangles' sums. + + + + + + Interpolation routines. + + + + + + Bicubic kernel. + + + X value. + + Bicubic cooefficient. + + The function implements bicubic kernel W(x) as described on + Wikipedia + (coefficient a is set to -0.5). + + + + + Internal memory manager used by image processing routines. + + + The memory manager supports memory allocation/deallocation + caching. Caching means that memory blocks may be not freed on request, but + kept for later reuse. + + + + + Allocate unmanaged memory. + + + Memory size to allocate. + + Return's pointer to the allocated memory buffer. + + The method allocates requested amount of memory and returns pointer to it. It may avoid allocation + in the case some caching scheme is uses and there is already enough allocated memory available. + + There is insufficient memory to satisfy the request. + + + + + Free unmanaged memory. + + + Pointer to memory buffer to free. + + This method may skip actual deallocation of memory and keep it for future requests, + if some caching scheme is used. + + + + + Force freeing unused memory. + + + Frees and removes from cache memory blocks, which are not used by users. + + Returns number of freed memory blocks. + + + + + Maximum amount of memory blocks to keep in cache. + + + The value specifies the amount of memory blocks, which could be + cached by the memory manager. + + Default value is set to 3. Maximum value is 10. + + + + + + Current amount of memory blocks in cache. + + + + + + Amount of busy memory blocks in cache (which were not freed yet by user). + + + + + + Amount of free memory blocks in cache (which are not busy by users). + + + + + + Amount of cached memory in bytes. + + + + + + Maximum memory block's size in bytes, which could be cached. + + + Memory blocks, which size is greater than this value, are not cached. + + + + + Minimum memory block's size in bytes, which could be cached. + + + Memory blocks, which size is less than this value, are not cached. + + + + + Moravec corners detector. + + + The class implements Moravec corners detector. For information about algorithm's + details its description + should be studied. + + Due to limitations of Moravec corners detector (anisotropic response, etc.) its usage is limited + to certain cases only. + + The class processes only grayscale 8 bpp and color 24/32 bpp images. + + Sample usage: + + // create corner detector's instance + MoravecCornersDetector mcd = new MoravecCornersDetector( ); + // process image searching for corners + List<IntPoint> corners = scd.ProcessImage( image ); + // process points + foreach ( IntPoint corner in corners ) + { + // ... + } + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Threshold value, which is used to filter out uninteresting points. + + + + + Initializes a new instance of the class. + + + Threshold value, which is used to filter out uninteresting points. + Window size used to determine if point is interesting. + + + + + Process image looking for corners. + + + Source image to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Unmanaged source image to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Window size used to determine if point is interesting, [3, 15]. + + + The value specifies window size, which is used for initial searching of + corners candidates and then for searching local maximums. + + Default value is set to 3. + + + Setting value is not odd. + + + + + Threshold value, which is used to filter out uninteresting points. + + + The value is used to filter uninteresting points - points which have value below + specified threshold value are treated as not corners candidates. Increasing this value decreases + the amount of detected point. + + Default value is set to 500. + + + + + + Searching of quadrilateral/triangle corners. + + + The class searches for quadrilateral's/triangle's corners on the specified image. + It first collects edge points of the object and then uses + to find corners + the quadrilateral/triangle. + + The class treats all black pixels as background (none-object) and + all none-black pixels as object. + + The class processes grayscale 8 bpp and color 24/32 bpp images. + + Sample usage: + + // get corners of the quadrilateral + QuadrilateralFinder qf = new QuadrilateralFinder( ); + List<IntPoint> corners = qf.ProcessImage( image ); + + // lock image to draw on it with AForge.NET's methods + // (or draw directly on image without locking if it is unmanaged image) + BitmapData data = image.LockBits( new Rectangle( 0, 0, image.Width, image.Height ), + ImageLockMode.ReadWrite, image.PixelFormat ); + + Drawing.Polygon( data, corners, Color.Red ); + for ( int i = 0; i < corners.Count; i++ ) + { + Drawing.FillRectangle( data, + new Rectangle( corners[i].X - 2, corners[i].Y - 2, 5, 5 ), + Color.FromArgb( i * 32 + 127 + 32, i * 64, i * 64 ) ); + } + + image.UnlockBits( data ); + + + Source image: + + Result image: + + + + + + + Find corners of quadrilateral/triangular area in the specified image. + + + Source image to search quadrilateral for. + + Returns a list of points, which are corners of the quadrilateral/triangular area found + in the specified image. The first point in the list is the point with lowest + X coordinate (and with lowest Y if there are several points with the same X value). + Points are in clockwise order (screen coordinates system). + + Unsupported pixel format of the source image. + + + + + Find corners of quadrilateral/triangular area in the specified image. + + + Source image data to search quadrilateral for. + + Returns a list of points, which are corners of the quadrilateral/triangular area found + in the specified image. The first point in the list is the point with lowest + X coordinate (and with lowest Y if there are several points with the same X value). + Points are in clockwise order (screen coordinates system). + + Unsupported pixel format of the source image. + + + + + Find corners of quadrilateral/triangular area in the specified image. + + + Source image to search quadrilateral for. + + Returns a list of points, which are corners of the quadrilateral/triangular area found + in the specified image. The first point in the list is the point with lowest + X coordinate (and with lowest Y if there are several points with the same X value). + Points are in clockwise order (screen coordinates system). + + Unsupported pixel format of the source image. + + + + + Blob counter based on recursion. + + + The class counts and extracts stand alone objects in + images using recursive version of connected components labeling + algorithm. + + The algorithm treats all pixels with values less or equal to + as background, but pixels with higher values are treated as objects' pixels. + + Since this algorithm is based on recursion, it is + required to be careful with its application to big images with big blobs, + because in this case recursion will require big stack size and may lead + to stack overflow. The recursive version may be applied (and may be even + faster than ) to an image with small blobs - + "star sky" image (or small cells, for example, etc). + + For blobs' searching the class supports 8 bpp indexed grayscale images and + 24/32 bpp color images. + See documentation about for information about which + pixel formats are supported for extraction of blobs. + + Sample usage: + + // create an instance of blob counter algorithm + RecursiveBlobCounter bc = new RecursiveBlobCounter( ); + // process binary image + bc.ProcessImage( image ); + Rectangle[] rects = bc.GetObjectsRectangles( ); + // process blobs + foreach ( Rectangle rect in rects ) + { + // ... + } + + + + + + + Initializes a new instance of the class. + + + Creates new instance of the class with + an empty objects map. Before using methods, which provide information about blobs + or extract them, the , + or + method should be called to collect objects map. + + + + + Initializes a new instance of the class. + + + Image to look for objects in. + + + + + Initializes a new instance of the class. + + + Image data to look for objects in. + + + + + Initializes a new instance of the class. + + + Unmanaged image to look for objects in. + + + + + Actual objects map building. + + + Unmanaged image to process. + + The method supports 8 bpp indexed grayscale images and 24/32 bpp color images. + + Unsupported pixel format of the source image. + + + + + Background threshold's value. + + + The property sets threshold value for distinguishing between background + pixel and objects' pixels. All pixel with values less or equal to this property are + treated as background, but pixels with higher values are treated as objects' pixels. + + In the case of colour images a pixel is treated as objects' pixel if any of its + RGB values are higher than corresponding values of this threshold. + + For processing grayscale image, set the property with all RGB components eqaul. + + Default value is set to (0, 0, 0) - black colour. + + + + + Susan corners detector. + + + The class implements Susan corners detector, which is described by + S.M. Smith in: S.M. Smith, "SUSAN - a new approach to low level image processing", + Internal Technical Report TR95SMS1, Defense Research Agency, Chobham Lane, Chertsey, + Surrey, UK, 1995. + + Some implementation notes: + + Analyzing each pixel and searching for its USAN area, the 7x7 mask is used, + which is comprised of 37 pixels. The mask has circle shape: + + xxx + xxxxx + xxxxxxx + xxxxxxx + xxxxxxx + xxxxx + xxx + + + In the case if USAN's center of mass has the same coordinates as nucleus + (central point), the pixel is not a corner. + For noise suppression the 5x5 square window is used. + + The class processes only grayscale 8 bpp and color 24/32 bpp images. + In the case of color image, it is converted to grayscale internally using + filter. + + Sample usage: + + // create corners detector's instance + SusanCornersDetector scd = new SusanCornersDetector( ); + // process image searching for corners + List<IntPoint> corners = scd.ProcessImage( image ); + // process points + foreach ( IntPoint corner in corners ) + { + // ... + } + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Brightness difference threshold. + Geometrical threshold. + + + + + Process image looking for corners. + + + Source image to process. + + Returns list of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Unmanaged source image to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Brightness difference threshold. + + + The brightness difference threshold controls the amount + of pixels, which become part of USAN area. If difference between central + pixel (nucleus) and surrounding pixel is not higher than difference threshold, + then that pixel becomes part of USAN. + + Increasing this value decreases the amount of detected corners. + + Default value is set to 25. + + + + + + Geometrical threshold. + + + The geometrical threshold sets the maximum number of pixels + in USAN area around corner. If potential corner has USAN with more pixels, than + it is not a corner. + + Decreasing this value decreases the amount of detected corners - only sharp corners + are detected. Increasing this value increases the amount of detected corners, but + also increases amount of flat corners, which may be not corners at all. + + Default value is set to 18, which is half of maximum amount of pixels in USAN. + + + + + + Template match class keeps information about found template match. The class is + used with template matching algorithms implementing + interface. + + + + + Initializes a new instance of the class. + + + Rectangle of the matching area. + Similarity between template and found matching, [0..1]. + + + + + Rectangle of the matching area. + + + + + Similarity between template and found matching, [0..1]. + + + + + Clouds texture. + + + The texture generator creates textures with effect of clouds. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + CloudsTexture textureGenerator = new CloudsTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Texture generator interface. + + + Each texture generator generates a 2-D texture of the specified size and returns + it as two dimensional array of intensities in the range of [0, 1] - texture's values. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of texture's intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Resets the generator - resets all internal variables, regenerates + internal random numbers, etc. + + + + + Initializes a new instance of the class. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Labirinth texture. + + + The texture generator creates textures with effect of labyrinth. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + LabyrinthTexture textureGenerator = new LabyrinthTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Marble texture. + + + The texture generator creates textures with effect of marble. + The and properties allow to control the look + of marble texture in X/Y directions. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + MarbleTexture textureGenerator = new MarbleTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + X period value. + Y period value. + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + X period value, ≥ 2. + + + Default value is set to 5. + + + + + Y period value, ≥ 2. + + + Default value is set to 10. + + + + + Textile texture. + + + The texture generator creates textures with effect of textile. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + TextileTexture textureGenerator = new TextileTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Texture tools. + + + The class represents collection of different texture tools, like + converting a texture to/from grayscale image. + + Sample usage: + + // create texture generator + WoodTexture textureGenerator = new WoodTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + + + + + Convert texture to grayscale bitmap. + + + Texture to convert to bitmap. + + Returns bitmap of the texture. + + + + + Convert grayscale bitmap to texture. + + + Image to convert to texture. + + Returns texture as 2D float array. + + Only grayscale (8 bpp indexed images) are supported. + + + + + Convert grayscale bitmap to texture + + + Image data to convert to texture + + Returns texture as 2D float array. + + Only grayscale (8 bpp indexed images) are supported. + + + + + Convert grayscale bitmap to texture. + + + Image data to convert to texture. + + Returns texture as 2D float array. + + Only grayscale (8 bpp indexed images) are supported. + + + + + Wood texture. + + + The texture generator creates textures with effect of + rings on trunk's shear. The property allows to specify the + desired amount of wood rings. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + WoodTexture textureGenerator = new WoodTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Wood rings amount. + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Wood rings amount, ≥ 3. + + + The property sets the amount of wood rings, which make effect of + rings on trunk's shear. + + Default value is set to 12. + + + + + Image in unmanaged memory. + + + + The class represents wrapper of an image in unmanaged memory. Using this class + it is possible as to allocate new image in unmanaged memory, as to just wrap provided + pointer to unmanaged memory, where an image is stored. + + Usage of unmanaged images is mostly beneficial when it is required to apply multiple + image processing routines to a single image. In such scenario usage of .NET managed images + usually leads to worse performance, because each routine needs to lock managed image + before image processing is done and then unlock it after image processing is done. Without + these lock/unlock there is no way to get direct access to managed image's data, which means + there is no way to do fast image processing. So, usage of managed images lead to overhead, which + is caused by locks/unlock. Unmanaged images are represented internally using unmanaged memory + buffer. This means that it is not required to do any locks/unlocks in order to get access to image + data (no overhead). + + Sample usage: + + // sample 1 - wrapping .NET image into unmanaged without + // making extra copy of image in memory + BitmapData imageData = image.LockBits( + new Rectangle( 0, 0, image.Width, image.Height ), + ImageLockMode.ReadWrite, image.PixelFormat ); + + try + { + UnmanagedImage unmanagedImage = new UnmanagedImage( imageData ) ); + // apply several routines to the unmanaged image + } + finally + { + image.UnlockBits( imageData ); + } + + + // sample 2 - converting .NET image into unmanaged + UnmanagedImage unmanagedImage = UnmanagedImage.FromManagedImage( image ); + // apply several routines to the unmanaged image + ... + // conver to managed image if it is required to display it at some point of time + Bitmap managedImage = unmanagedImage.ToManagedImage( ); + + + + + + + Initializes a new instance of the class. + + + Pointer to image data in unmanaged memory. + Image width in pixels. + Image height in pixels. + Image stride (line size in bytes). + Image pixel format. + + Using this constructor, make sure all specified image attributes are correct + and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + this may lead to exceptions working with the unmanaged memory. + + + + + Initializes a new instance of the class. + + + Locked bitmap data. + + Unlike method, this constructor does not make + copy of managed image. This means that managed image must stay locked for the time of using the instance + of unamanged image. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + Frees unmanaged resources used by the object. The object becomes unusable + after that. + + The method needs to be called only in the case if unmanaged image was allocated + using method. In the case if the class instance was created using constructor, + this method does not free unmanaged memory. + + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Clone the unmanaged images. + + + Returns clone of the unmanaged image. + + The method does complete cloning of the object. + + + + + Copy unmanaged image. + + + Destination image to copy this image to. + + The method copies current unmanaged image to the specified image. + Size and pixel format of the destination image must be exactly the same. + + Destination image has different size or pixel format. + + + + + Allocate new image in unmanaged memory. + + + Image width. + Image height. + Image pixel format. + + Return image allocated in unmanaged memory. + + Allocate new image with specified attributes in unmanaged memory. + + The method supports only + Format8bppIndexed, + Format16bppGrayScale, + Format24bppRgb, + Format32bppRgb, + Format32bppArgb, + Format32bppPArgb, + Format48bppRgb, + Format64bppArgb and + Format64bppPArgb pixel formats. + In the case if Format8bppIndexed + format is specified, pallete is not not created for the image (supposed that it is + 8 bpp grayscale image). + + + + Unsupported pixel format was specified. + Invalid image size was specified. + + + + + Create managed image from the unmanaged. + + + Returns managed copy of the unmanaged image. + + The method creates a managed copy of the unmanaged image with the + same size and pixel format (it calls specifying + for the makeCopy parameter). + + + + + Create managed image from the unmanaged. + + + Make a copy of the unmanaged image or not. + + Returns managed copy of the unmanaged image. + + If the is set to , then the method + creates a managed copy of the unmanaged image, so the managed image stays valid even when the unmanaged + image gets disposed. However, setting this parameter to creates a managed image which is + just a wrapper around the unmanaged image. So if unmanaged image is disposed, the + managed image becomes no longer valid and accessing it will generate an exception. + + The unmanaged image has some invalid properties, which results + in failure of converting it to managed image. This may happen if user used the + constructor specifying some + invalid parameters. + + + + + Create unmanaged image from the specified managed image. + + + Source managed image. + + Returns new unmanaged image, which is a copy of source managed image. + + The method creates an exact copy of specified managed image, but allocated + in unmanaged memory. + + Unsupported pixel format of source image. + + + + + Create unmanaged image from the specified managed image. + + + Source locked image data. + + Returns new unmanaged image, which is a copy of source managed image. + + The method creates an exact copy of specified managed image, but allocated + in unmanaged memory. This means that managed image may be unlocked right after call to this + method. + + Unsupported pixel format of source image. + + + + + Collect pixel values from the specified list of coordinates. + + + List of coordinates to collect pixels' value from. + + Returns array of pixels' values from the specified coordinates. + + The method goes through the specified list of points and for each point retrievs + corresponding pixel's value from the unmanaged image. + + For grayscale image the output array has the same length as number of points in the + specified list of points. For color image the output array has triple length, containing pixels' + values in RGB order. + + The method does not make any checks for valid coordinates and leaves this up to user. + If specified coordinates are out of image's bounds, the result is not predictable (crash in most cases). + + + This method is supposed for images with 8 bpp channels only (8 bpp grayscale image and + 24/32 bpp color images). + + + Unsupported pixel format of the source image. Use Collect16bppPixelValues() method for + images with 16 bpp channels. + + + + + Collect coordinates of none black pixels in the image. + + + Returns list of points, which have other than black color. + + + + + Collect coordinates of none black pixels within specified rectangle of the image. + + + Image's rectangle to process. + + Returns list of points, which have other than black color. + + + + + Set pixels with the specified coordinates to the specified color. + + + List of points to set color for. + Color to set for the specified points. + + For images having 16 bpp per color plane, the method extends the specified color + value to 16 bit by multiplying it by 256. + + + + + Set pixel with the specified coordinates to the specified color. + + + Point's coordiates to set color for. + Color to set for the pixel. + + See for more information. + + + + + Set pixel with the specified coordinates to the specified color. + + + X coordinate of the pixel to set. + Y coordinate of the pixel to set. + Color to set for the pixel. + + For images having 16 bpp per color plane, the method extends the specified color + value to 16 bit by multiplying it by 256. + + For grayscale images this method will calculate intensity value based on the below formula: + + 0.2125 * Red + 0.7154 * Green + 0.0721 * Blue + + + + + + + + Set pixel with the specified coordinates to the specified value. + + + X coordinate of the pixel to set. + Y coordinate of the pixel to set. + Pixel value to set. + + The method sets all color components of the pixel to the specified value. + If it is a grayscale image, then pixel's intensity is set to the specified value. + If it is a color image, then pixel's R/G/B components are set to the same specified value + (if an image has alpha channel, then it is set to maximum value - 255 or 65535). + + For images having 16 bpp per color plane, the method extends the specified color + value to 16 bit by multiplying it by 256. + + + + + + Get color of the pixel with the specified coordinates. + + + Point's coordiates to get color of. + + Return pixel's color at the specified coordinates. + + See for more information. + + + + + Get color of the pixel with the specified coordinates. + + + X coordinate of the pixel to get. + Y coordinate of the pixel to get. + + Return pixel's color at the specified coordinates. + + + In the case if the image has 8 bpp grayscale format, the method will return a color with + all R/G/B components set to same value, which is grayscale intensity. + + The method supports only 8 bpp grayscale images and 24/32 bpp color images so far. + + + The specified pixel coordinate is out of image's bounds. + Pixel format of this image is not supported by the method. + + + + + Collect pixel values from the specified list of coordinates. + + + List of coordinates to collect pixels' value from. + + Returns array of pixels' values from the specified coordinates. + + The method goes through the specified list of points and for each point retrievs + corresponding pixel's value from the unmanaged image. + + For grayscale image the output array has the same length as number of points in the + specified list of points. For color image the output array has triple length, containing pixels' + values in RGB order. + + The method does not make any checks for valid coordinates and leaves this up to user. + If specified coordinates are out of image's bounds, the result is not predictable (crash in most cases). + + + This method is supposed for images with 16 bpp channels only (16 bpp grayscale image and + 48/64 bpp color images). + + + Unsupported pixel format of the source image. Use Collect8bppPixelValues() method for + images with 8 bpp channels. + + + + + Pointer to image data in unmanaged memory. + + + + + Image width in pixels. + + + + + Image height in pixels. + + + + + Image stride (line size in bytes). + + + + + Image pixel format. + + + + + Vertical intensity statistics. + + + The class provides information about vertical distribution + of pixel intensities, which may be used to locate objects, their centers, etc. + + + The class accepts grayscale (8 bpp indexed and 16 bpp) and color (24, 32, 48 and 64 bpp) images. + In the case of 32 and 64 bpp color images, the alpha channel is not processed - statistics is not + gathered for this channel. + + Sample usage: + + // collect statistics + VerticalIntensityStatistics vis = new VerticalIntensityStatistics( sourceImage ); + // get gray histogram (for grayscale image) + Histogram histogram = vis.Gray; + // output some histogram's information + System.Diagnostics.Debug.WriteLine( "Mean = " + histogram.Mean ); + System.Diagnostics.Debug.WriteLine( "Min = " + histogram.Min ); + System.Diagnostics.Debug.WriteLine( "Max = " + histogram.Max ); + + + Sample grayscale image with its vertical intensity histogram: + + + + + + + + + Initializes a new instance of the class. + + + Source image. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source image data. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Gather vertical intensity statistics for specified image. + + + Source image. + + + + + Histogram for red channel. + + + + + + Histogram for green channel. + + + + + + Histogram for blue channel. + + + + + + Histogram for gray channel (intensities). + + + + + + Value wich specifies if the processed image was color or grayscale. + + + If the property equals to true, then the + property should be used to retrieve histogram for the processed grayscale image. + Otherwise , and property + should be used to retrieve histogram for particular RGB channel of the processed + color image. + + + + + Bag of Visual Words + + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + This class uses the + SURF features detector to determine a coded representation + for a given image. + + + It is also possible to use other feature detectors with this + class. For this, please refer to + for more details and examples. + + + + + The following example shows how to create and use a BoW with + default parameters. + + + int numberOfWords = 32; + + // Create bag-of-words (BoW) with the given number of words + BagOfVisualWords bow = new BagOfVisualWords(numberOfWords); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + By default, the BoW uses K-Means to cluster feature vectors. The next + example demonstrates how to use a different clustering algorithm when + computing the BoW. The example will be given using the + Binary Split clustering algorithm. + + + int numberOfWords = 32; + + // Create an alternative clustering algorithm + BinarySplit binarySplit = new BinarySplit(numberOfWords); + + // Create bag-of-words (BoW) with the clustering algorithm + BagOfVisualWords bow = new BagOfVisualWords(binarySplit); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + + + + + + Bag of Visual Words + + + + The type to be used with this class, + such as . + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + This class can uses any feature + detector to determine a coded representation for a given image. + + + For a simpler, non-generic version of the Bag-of-Words model which + defaults to the SURF + features detector, please see + + + + + + The following example shows how to use a BoW model with the + . + + + int numberOfWords = 32; + + // Create bag-of-words (BoW) with the given SURF detector + var bow = new BagOfVisualWords<SpeededUpRobustFeaturePoint>( + new SpeededUpRobustFeaturesDetector(), numberOfWords); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + The following example shows how to create a BoW which works with any + of corner detector, such as : + + + int numberOfWords = 16; + + // Create a Harris corners detector + var harris = new HarrisCornersDetector(); + + // Create an adapter to convert corners to visual features + CornerFeaturesDetector detector = new CornerFeaturesDetector(harris); + + // Create a bag-of-words (BoW) with the corners detector and number of words + var bow = new BagOfVisualWords<CornerFeaturePoint>(detector, numberOfWords); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + + + + + + + + + + Bag of Visual Words + + + + The type to be used with this class, + such as . + + The feature type of the , such + as . + + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + This class can uses any feature + detector to determine a coded representation for a given image. + + + This is the most generic version for the BoW model, which can accept any + choice of for any kind of point, + even non-numeric ones. This class can also support any clustering algorithm + as well. + + + + + In this example, we will create a Bag-of-Words to operate on byte[] vectors, + which otherwise wouldn't be supported by the simpler BoW version. Those byte vectors + are composed of binary features detected by a . + In order to cluster those features, we will be using a + algorithm with a matching template argument to make all constructors happy: + + + // Create a new FAST Corners Detector + FastCornersDetector fast = new FastCornersDetector(); + + // Create a Fast Retina Keypoint (FREAK) detector using FAST + FastRetinaKeypointDetector freak = new FastRetinaKeypointDetector(fast); + + // Create a K-Modes clustering algorithm which can operate on byte[] + var kmodes = new KModes<byte[]>(numberOfWords, Distance.BitwiseHamming); + + // Finally, create bag-of-words (BoW) with the given number of words + var bow = new BagOfVisualWords<FastRetinaKeypoint, byte[]>(freak, kmodes); + + // Create the BoW codebook using a set of training images + bow.Compute(images); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + + + + Constructs a new . + + + The feature detector to use. + The clustering algorithm to use. + + + + + Computes the Bag of Words model. + + + The set of images to initialize the model. + Convergence rate for the k-means algorithm. Default is 1e-5. + + The list of feature points detected in all images. + + + + + Gets the codeword representation of a given image. + + + The image to be processed. + + A double vector with the same length as words + in the code book. + + + + + Gets the codeword representation of a given image. + + + The image to be processed. + + A double vector with the same length as words + in the code book. + + + + + Gets the codeword representation of a given image. + + + The interest points of the image. + + A double vector with the same length as words + in the code book. + + + + + Saves the bag of words to a stream. + + + The stream to which the bow is to be serialized. + + + + + Saves the bag of words to a file. + + + The path to the file to which the bow is to be serialized. + + + + + Gets the number of words in this codebook. + + + + + + Gets the clustering algorithm used to create this model. + + + + + + Gets the SURF + feature point detector used to identify visual features in images. + + + + + + Constructs a new . + + + The feature detector to use. + The number of codewords. + + + + + Constructs a new . + + + The feature detector to use. + The clustering algorithm to use. + + + + + Constructs a new using a + surf + feature detector to identify features. + + + The number of codewords. + + + + + Constructs a new using a + surf + feature detector to identify features. + + + The clustering algorithm to use. + + + + + Loads a bag of words from a stream. + + + The stream from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a file. + + + The path to the file from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a stream. + + + The stream from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a file. + + + The path to the file from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a stream. + + + The stream from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a file. + + + The path to the file from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Gets the SURF + feature point detector used to identify visual features in images. + + + + + + Border following algorithm for contour extraction. + + + + + // Create a new border following algorithm + BorderFollowing bf = new BorderFollowing(); + + // Get all points in the contour of the image. + List<IntPoint> contour = bf.FindContour(grayscaleImage); + + // Mark all points in the contour point list in blue + new PointsMarker(contour, Color.Blue).ApplyInPlace(image); + + // Show the result + ImageBox.Show(image); + + + + The resulting image is shown below. + + + + + + + + + Common interface for contour extraction algorithm. + + + + + + Extracts the contour from a single object in a grayscale image. + + A grayscale image. + A list of s defining a contour. + + + + + Extracts the contour from a single object in a grayscale image. + + A grayscale image. + A list of s defining a contour. + + + + + Extracts the contour from a single object in a grayscale image. + + A grayscale image. + A list of s defining a contour. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The pixel value threshold above which a pixel + is considered black (belonging to the object). Default is zero. + + + + + Extracts the contour from a single object in a grayscale image. + + + A grayscale image. + A list of s defining a contour. + + + + + Extracts the contour from a single object in a grayscale image. + + + A grayscale image. + + + A list of s defining a contour. + + + + + + Extracts the contour from a single object in a grayscale image. + + + A grayscale image. + A list of s defining a contour. + + + + + Gets or sets the pixel value threshold above which a pixel + is considered white (belonging to the object). Default is zero. + + + + + + Contains classes and methods to convert between different image representations, + such as between common images, numeric matrices and arrays. + + + + + The image converters are able to convert to and from images defined as byte, + double and float multi-dimensional matrices, jagged matrices, and even + images represented as flat arrays. It is also possible to convert images defined as + series of individual pixel colors into s, and back from those + s into any of the aforementioned representations. Support for + AForge.NET's UnmanagedImage is also available. + + + + The namespace class diagram is shown below. + + + + + + + Jagged array to Bitmap converter. + + + + + This class can convert double and float arrays to either Grayscale + or color Bitmap images. Color images should be represented as an + array of pixel values for the final image. The actual dimensions + of the image should be specified in the class constructor. + + + When this class is converting from or + , the values of the + and properties are ignored and no scaling operation + is performed. + + + + + This example converts a single array of double-precision floating- + point numbers with values from 0 to 1 into a grayscale image. + + + // Create an array representation + // of a 4x4 image with a inner 2x2 + // square drawn in the middle + + double[] pixels = + { + 0, 0, 0, 0, + 0, 1, 1, 0, + 0, 1, 1, 0, + 0, 0, 0, 0, + }; + + // Create the converter to create a Bitmap from the array + ArrayToImage conv = new ArrayToImage(width: 4, height: 4); + + // Declare an image and store the pixels on it + Bitmap image; conv.Convert(pixels, out image); + + // Show the image on screen + image = new ResizeNearestNeighbor(320, 320).Apply(image); + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + + + The resulting image is shown below. + + + + + + + + + Public interface for image converter algorithms. + + + Input image type. + Output image type. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Initializes a new instance of the class. + + + The width of the image to be created. + The height of the image to be created. + + + + + Initializes a new instance of the class. + + + The width of the image to be created. + The height of the image to be created. + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties are ignored. The + resulting image from upon calling this method will always be 32-bit ARGB. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the height of the image + stored in the double array. + + + + + + Gets or sets the width of the image + stored in the double array. + + + + + + Multidimensional array to Bitmap converter. + + + + This class can convert double and float multidimensional arrays + (matrices) to Grayscale bitmaps. The color representation of the + values contained in the matrices must be specified through the + Min and Max properties of the class or class constructor. + + + + + This example converts a multidimensional array of double-precision + floating-point numbers with values from 0 to 1 into a grayscale image. + + + // Create a matrix representation + // of a 4x4 image with a inner 2x2 + // square drawn in the middle + + double[,] pixels = + { + { 0, 0, 0, 0 }, + { 0, 1, 1, 0 }, + { 0, 1, 1, 0 }, + { 0, 0, 0, 0 }, + }; + + // Create the converter to convert the matrix to a image + MatrixToImage conv = new MatrixToImage(min: 0, max: 1); + + // Declare an image and store the pixels on it + Bitmap image; conv.Convert(pixels, out image); + + // Show the image on screen + image = new ResizeNearestNeighbor(320, 320).Apply(image); + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + + + The resulting image is shown below. + + + + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Initializes a new instance of the class. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the desired output format of the image. + + + + + + Bitmap to jagged array converter. + + + + This class converts images to single or jagged arrays of + either double-precision or single-precision floating-point + values. + + + + + This example converts a 16x16 Bitmap image into + a double[] array with values between 0 and 1. + + + // Obtain a 16x16 bitmap image + // Bitmap image = ... + + // Show on screen + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + // Create the converter to convert the image to an + // array containing only values between 0 and 1 + ImageToArray conv = new ImageToArray(min: 0, max: 1); + + // Convert the image and store it in the array + double[] array; conv.Convert(image, out array); + + // Show the array on screen + ImageBox.Show(array, 16, 16, PictureBoxSizeMode.Zoom); /// + + + The resulting image is shown below. + + + + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + The channel to extract. Default is 0. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the channel to be extracted. + + + + + + Bitmap to multidimensional matrix converter. + + + + This class converts images to multidimensional matrices of + either double-precision or single-precision floating-point + values. + + + + + This example converts a 16x16 Bitmap image into + a double[,] array with values between 0 and 1. + + + // Obtain an image + // Bitmap image = ... + + // Show on screen + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + // Create the converter to convert the image to a + // matrix containing only values between 0 and 1 + ImageToMatrix conv = new ImageToMatrix(min: 0, max: 1); + + // Convert the image and store it in the matrix + double[,] matrix; conv.Convert(image, out matrix); + + // Show the matrix on screen as an image + ImageBox.Show(matrix, PictureBoxSizeMode.Zoom); + + + The resulting image is shown below. + + + + + Additionally, the image can also be shown in alternative + representations such as text or data tables. + + + + // Show the matrix on screen as a .NET multidimensional array + MessageBox.Show(matrix.ToString(CSharpMatrixFormatProvider.InvariantCulture)); + + // Show the matrix on screen as a table + DataGridBox.Show(matrix, nonBlocking: true) + .SetAutoSizeColumns(DataGridViewAutoSizeColumnsMode.Fill) + .SetAutoSizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders) + .SetDefaultFontSize(5) + .WaitForClose(); + + + + The resulting images are shown below. + + + + + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + The channel to extract. Default is 0. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. When + converting to byte, the and + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. When + converting to byte, the and + are ignored. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the channel to be extracted. + + + + + + Difference of Gaussians filter. + + + + + In imaging science, the difference of Gaussians is a feature + enhancement algorithm that involves the subtraction of one blurred + version of an original image from another, less blurred version of + the original. + + + In the simple case of grayscale images, the blurred images are + obtained by convolving the original grayscale images with Gaussian + kernels having differing standard deviations. Blurring an image using + a Gaussian kernel suppresses only high-frequency spatial information. + Subtracting one image from the other preserves spatial information that + lies between the range of frequencies that are preserved in the two blurred + images. Thus, the difference of Gaussians is a band-pass filter that + discards all but a handful of spatial frequencies that are present in the + original grayscale image. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + Wikipedia contributors. "Difference of Gaussians." Wikipedia, The Free + Encyclopedia. Wikipedia, The Free Encyclopedia, 1 Jun. 2013. Web. 10 Feb. + 2014. + + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Difference of Gaussians + var DoG = new DifferenceOfGaussians(); + + // Apply the filter + Bitmap result = DoG.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The first window size. Default is 3 + The second window size. Default is 4. + + + + + Initializes a new instance of the class. + + + The window size for the first Gaussian. Default is 3 + The window size for the second Gaussian. Default is 4. + + The sigma for the first Gaussian. Default is 0.4. + The sigma for the second Gaussian. Default is 0.4 + + + + + Initializes a new instance of the class. + + + The window size for the first Gaussian. Default is 3 + The window size for the second Gaussian. Default is 4. + + The sigma for both Gaussian filters. Default is 0.4. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Gets or sets the first Gaussian filter. + + + + + + Gets or sets the second Gaussian filter. + + + + + + Gets or sets the subtract filter used to compute + the difference of the two Gaussian blurs. + + + + + + Format translations dictionary. + + + + + + Fast Variance filter. + + + + The Fast Variance filter replaces each pixel in an image by its + neighborhood online variance. This filter differs from the + filter because it uses only a single pass + over the image. + + + + + Bitmap image = ... // Lena's picture + + // Create a new Variance filter: + var variance = new FastVariance(); + + // Compute the filter + Bitmap result = variance.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The radius neighborhood used to compute a pixel's local variance. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the radius of the neighborhood + used to compute a pixel's local variance. + + + + + + Format translations dictionary. + + + + + + High boost filter. + + + + + The High-boost filter can be used to emphasize high frequency + components (i.e. points of contrast) without removing the low + frequency ones. + + + This filter implementation has been contributed by Diego Catalano. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The boost value. Default is 8. + + + + + Initializes a new instance of the class. + + + The boost value. Default is 8. + The kernel size. Default is 3. + + + + + Kernel size, [3, 21]. + + + Size of Gaussian kernel. + + Default value is set to 5. + + + + + + Gets or sets the boost value. Default is 9. + + + + + + RG Chromaticity. + + + + + References: + + + Wikipedia contributors. "rg chromaticity." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Rg_chromaticity + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Sauvola Threshold. + + + + + The Sauvola filter is a variation of the + thresholding filter. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + Sauvola, Jaakko, and Matti Pietikäinen. "Adaptive document image binarization." + Pattern Recognition 33.2 (2000): 225-236. + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Sauvola threshold: + var sauvola = new SauvolaThreshold(); + + // Compute the filter + Bitmap result = sauvola.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the filter convolution + radius. Default is 15. + + + + + + Gets or sets the user-defined + parameter k. Default is 0.5. + + + + + + Gets or sets the dynamic range of the + standard deviation, R. Default is 128. + + + + + + Format translations dictionary. + + + + + + Filter to mark (highlight) lines in a image. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Color used to mark corners. + + + + + Gets or sets the set of points to mark. + + + + + Gets or sets the width of the points to be drawn. + + + + + Niblack Threshold. + + + + + The Niblack filter is a local thresholding algorithm that separates + white and black pixels given the local mean and standard deviation + for the current window. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + W. Niblack, An Introduction to Digital Image Processing, pp. 115-116. + Prentice Hall, 1986. + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Niblack threshold: + var niblack = new NiblackThreshold(); + + // Compute the filter + Bitmap result = niblack.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the filter convolution + radius. Default is 15. + + + + + + Gets or sets the user-defined + parameter k. Default is 0.2. + + + + + + Gets or sets the mean offset C. This value should + be between 0 and 255. The default value is 0. + + + + + + Format translations dictionary. + + + + + + Rotate image using nearest neighbor algorithm. + + + The class implements image rotation filter using nearest + neighbor algorithm, which does not assume any interpolation. + + Rotation is performed in counterclockwise direction. + + The filter accepts 8/16 bpp grayscale images and 24/48 bpp color image + for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateNearestNeighbor filter = new RotateNearestNeighbor( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property to + . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + White Patch filter for color normalization. + + + + + Bitmap image = ... // Lena's famous picture + + // Create the White Patch filter + var whitePatch = new WhitePatch(); + + // Apply the filter + Bitmap result = grayWorld.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Gray World filter for color normalization. + + + + + The grey world normalization makes the assumption that changes in the + lighting spectrum can be modeled by three constant factors applied to + the red, green and blue channels of color[2]. More specifically, a change + in illuminated color can be modeled as a scaling α, β and γ in the R, + G and B color channels and as such the grey world algorithm is invariant + to illumination color variations. + + + References: + + + Wikipedia Contributors, "Color normalization". Available at + http://en.wikipedia.org/wiki/Color_normalization + + Jose M. Buenaposada; Luis Baumela. Variations of Grey World for + face tracking (Report). + + + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Gray World filter + var grayWorld = new GrayWorld(); + + // Apply the filter + Bitmap result = grayWorld.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Kuwahara filter. + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Kuwahara filter + Kuwahara kuwahara = new Kuwahara(); + + // Apply the Kuwahara filter + Bitmap result = kuwahara.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Gets the size of the kernel used in the Kuwahara filter. This + should be odd and greater than or equal to five. Default is 5. + + + + + + Gets the size of each of the four inner blocks used in the + Kuwahara filter. This is always half the + kernel size minus one. + + + + The size of the each inner block, or k / 2 - 1 + where k is the kernel size. + + + + + + Format translations dictionary. + + + + + + Wolf Jolion Threshold. + + + + + The Wolf-Jolion threshold filter is a variation + of the filter. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + + C. Wolf, J.M. Jolion, F. Chassaing. "Text Localization, Enhancement and + Binarization in Multimedia Documents." Proceedings of the 16th International + Conference on Pattern Recognition, 2002. + Available in http://liris.cnrs.fr/christian.wolf/papers/icpr2002v.pdf + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Wolf-Joulion threshold: + var wolfJoulion = new WolfJoulionThreshold(); + + // Compute the filter + Bitmap result = wolfJoulion.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the filter convolution + radius. Default is 15. + + + + + + Gets or sets the user-defined + parameter k. Default is 0.5. + + + + + + Gets or sets the dynamic range of the + standard deviation, R. Default is 128. + + + + + + Format translations dictionary. + + + + + + Common interface for feature descriptors. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Standard feature descriptor for feature vectors. + + + + + + Initializes a new instance of the structure. + + + The feature vector. + + + + + Performs an implicit conversion from + to . + + + The value to be converted. + + + The result of the conversion. + + + + + + Performs a conversion from + to . + + + + + + Performs an implicit conversion from + to . + + + The value to be converted. + + + The result of the conversion. + + + + + + Performs a conversion from + to . + + + + + + Performs a conversion from + to . + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Standard feature descriptor for generic feature vectors. + + + The type of feature vector, such as . + + + + + Initializes a new instance of the struct. + + + The feature vector. + + + + + Performs an implicit conversion from + to . + + + The value to be converted. + + + The result of the conversion. + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Nearest neighbor feature point matching algorithm. + + + + + This class matches feature points using a + k-Nearest Neighbors algorithm. + + + + + + + + + Constructs a new + K-Nearest Neighbors matching algorithm. + + + The number of neighbors to use when matching points. + The distance function to consider between points. + + + + + Matches two sets of feature points. + + + + + + Matches two sets of feature points. + + + + + + Matches two sets of feature points. + + + + + + Creates a nearest neighbor algorithm with the feature points as + inputs and their respective indices a the corresponding output. + + + + + + Gets or sets the number k of nearest neighbors. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets a minimum relevance threshold + used to find matching pairs. Default is 0. + + + + + + Objective Fidelity Criteria. + + + + + References: + + + H.T. Yalazan, J.D. Yucel. "A new objective fidelity criterion + for image processing." Proceedings of the 16th International + Conference on Pattern Recognition, 2002. + + + + + + Bitmap ori = ... // Original picture + Bitmap recon = ... // Reconstructed picture + + // Create a new Objective fidelity comparer: + var of = new ObjectiveFidelity(ori, recon); + + // Get the results + long errorTotal = of.ErrorTotal; + double msr = of.MeanSquareError; + double snr = of.SignalToNoiseRatio; + double psnr = of.PeakSignalToNoiseRatio; + double dsnr = of.DerivativeSignalNoiseRatio; + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The first image to be compared. + The second image that will be compared. + + + + + Initializes a new instance of the class. + + + The first image to be compared. + The second image that will be compared. + + + + + Initializes a new instance of the class. + + + The first image to be compared. + The second image that will be compared. + + + + + Compute objective fidelity metrics. + + + The first image to be compared. + The second image that will be compared. + + + + + Compute objective fidelity metrics. + + + The first image to be compared. + The second image that will be compared. + + + + + Compute objective fidelity metrics. + + + The first image to be compared. + The second image that will be compared. + + + + + Gets the total error between the two images. + + + + + + Gets the average error between the two images. + + + + + + Gets the root mean square error between the two images. + + + + + + Gets the signal to noise ratio. + + + + + + Gets the peak signal to noise ratio. + + + + + + Gets the derivative signal to noise ratio. + + + + + + Gets the level used in peak signal to noise ratio. + + + + + + Static tool functions for imaging. + + + + + + Computes the sum of all pixels + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + + The sum of all pixels within the region. + + + + + Computes the mean pixel value + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + + The mean pixel value within the region. + + + + + Computes the pixel scatter + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + The region pixel mean. + + The scatter value within the region. + + + + + Computes the pixel variance + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + The region pixel mean. + + The variance value within the region. + + + + + Compass convolution filter. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + Exponential filter. + + + + Simple exp image filter. Applies the + function for each pixel in the image, clipping values as needed. + The resultant image can be converted back using the + filter. + + + + + Bitmap input = ... + + // Apply log + Logarithm log = new Logarithm(); + Bitmap output = log.Apply(input); + + // Revert log + Exponential exp = new Exponential(); + Bitmap reconstruction = exp.Apply(output); + + // Show results on screen + ImageBox.Show("input", input); + ImageBox.Show("output", output); + ImageBox.Show("reconstruction", reconstruction); + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Log filter. + + + + Simple log image filter. Applies the + function for each pixel in the image, clipping values as needed. + The resultant image can be converted back using the + filter. + + + + + Bitmap input = ... + + // Apply log + Logarithm log = new Logarithm(); + Bitmap output = log.Apply(input); + + // Revert log + Exponential exp = new Exponential(); + Bitmap reconstruction = exp.Apply(output); + + // Show results on screen + ImageBox.Show("input", input); + ImageBox.Show("output", output); + ImageBox.Show("reconstruction", reconstruction); + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Robinson's Edge Detector + + + + + Robinson's edge detector is a variation of + Kirsch's detector using different convolution masks. Both are examples + of compass convolution filters. + + + + + Bitmap image = ... // Lena's picture + + // Create a new Robinson's edge detector: + var robinson = new RobinsonEdgeDetector(); + + // Compute the image edges + Bitmap edges = robinson.Apply(image); + + // Show on screen + ImageBox.Show(edges); + + + + The resulting image is shown below: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets the North direction Robinson kernel mask. + + + + + + Gets the Northwest direction Robinson kernel mask. + + + + + + Gets the West direction Robinson kernel mask. + + + + + + Gets the Southwest direction Robinson kernel mask. + + + + + + Gets the South direction Robinson kernel mask. + + + + + + Gets the Southeast direction Robinson kernel mask. + + + + + + Gets the East direction Robinson kernel mask. + + + + + + Gets the Northeast direction Robinson kernel mask. + + + + + + Format translations dictionary. + + + + + + Gabor filter. + + + + + In image processing, a Gabor filter, named after Dennis Gabor, is a linear + filter used for edge detection. Frequency and orientation representations + of Gabor filters are similar to those of the human visual system, and they + have been found to be particularly appropriate for texture representation + and discrimination. In the spatial domain, a 2D Gabor filter is a Gaussian + kernel function modulated by a sinusoidal plane wave. The Gabor filters are + self-similar: all filters can be generated from one mother wavelet by dilation + and rotation. + + + + References: + + + Wikipedia Contributors, "Gabor filter". Available at + http://en.wikipedia.org/wiki/Gabor_filter + + + + + + The following example applies a Gabor filter to detect lines + at a 45 degrees from the following image: + + + + + Bitmap input = ...; + + // Create a new Gabor filter + GaborFilter filter = new GaborFilter(); + + // Apply the filter + Bitmap output = filter.Apply(input); + + // Show the output + ImageBox.Show(output); + + + + The resulting image is shown below. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the size of the filter. Default is 3. + + + + + + Gets or sets the Gaussian variance for the filter. Default is 2. + + + + + + Gets or sets the orientation for the filter, in radians. Default is 0.6. + + + + + + Gets or sets the wavelength for the filter. Default is 4.0. + + + + + + Gets or sets the aspect ratio for the filter. Default is 0.3. + + + + + + Gets or sets the phase offset for the filter. Default is 1.0. + + + + + + Format translations dictionary. + + + + + + Kirsch's Edge Detector + + + + + The Kirsch operator or Kirsch compass kernel + is a non-linear edge detector that finds the maximum edge strength in a few + predetermined directions. It is named after the computer scientist Russell + A. Kirsch. + + + References: + + + Wikipedia contributors. "Kirsch operator." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Kirsch_operator + + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Kirsch's edge detector: + var kirsch = new KirschEdgeDetector(); + + // Compute the image edges + Bitmap edges = kirsch.Apply(image); + + // Show on screen + ImageBox.Show(edges); + + + + The resulting image is shown below: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets the North direction Kirsch kernel mask. + + + + + + Gets the Northwest direction Kirsch kernel mask. + + + + + + Gets the West direction Kirsch kernel mask. + + + + + + Gets the Southwest direction Kirsch kernel mask. + + + + + + Gets the South direction Kirsch kernel mask. + + + + + + Gets the Southeast direction Kirsch kernel mask. + + + + + + Gets the East direction Kirsch kernel mask. + + + + + + Gets the Northeast direction Kirsch kernel mask. + + + + + + Format translations dictionary. + + + + + + Variance filter. + + + + The Variance filter replaces each pixel in an image by its + neighborhood variance. The end result can be regarded as an + border enhancement, making the Variance filter suitable to + be used as an edge detection mechanism. + + + + + Bitmap image = ... // Lena's picture + + // Create a new Variance filter: + var variance = new Variance(); + + // Compute the filter + Bitmap result = variance.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The radius neighborhood used to compute a pixel's local variance. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the radius of the neighborhood + used to compute a pixel's local variance. + + + + + + Format translations dictionary. + + + + + + Co-occurrence Degree. + + + + + + Find co-occurrences at 0° degrees. + + + + + + Find co-occurrences at 45° degrees. + + + + + + Find co-occurrences at 90° degrees. + + + + + + Find co-occurrences at 135° degrees. + + + + + + Gray-Level Co-occurrence Matrix (GLCM). + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The distance at which the texture should be analyzed. + + + + + Initializes a new instance of the class. + + + The distance at which the texture should be analyzed. + The direction to look for co-occurrences. + + + + + Initializes a new instance of the class. + + + The distance at which the texture should be analyzed. + The direction to look for co-occurrences. + Whether the maximum value of gray should be + automatically computed from the image. Default is true. + Whether the produced GLCM should be normalized, + dividing each element by the number of pairs. Default is true. + + + + + Computes the Gray-level Co-occurrence Matrix (GLCM) + for the given source image. + + + The source image. + + A square matrix of double-precision values containing + the GLCM for the given . + + + + + Computes the Gray-level Co-occurrence Matrix for the given matrix. + + + The source image. + A region of the source image where + the GLCM should be computed for. + + A square matrix of double-precision values containing the GLCM for the + of the given . + + + + + Gets or sets whether the maximum value of gray should be + automatically computed from the image. If set to false, + the maximum gray value will be assumed 255. + + + + + + Gets or sets whether the produced GLCM should be normalized, + dividing each element by the number of pairs. Default is true. + + + + true if the GLCM should be normalized; otherwise, false. + + + + + + Gets or sets the direction at which the co-occurrence should be found. + + + + + + Gets or sets the distance at which the + texture should be analyzed. Default is 1. + + + + + + Gets the number of pairs registered during the + last computed GLCM. + + + + + + Gray-Level Difference Method (GLDM). + + + + Computes an gray-level histogram of difference + values between adjacent pixels in an image. + + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + Whether the maximum value of gray should be + automatically computed from the image. Default is true. + + + + + Computes the Gray-level Difference Method (GLDM) + Histogram for the given source image. + + + The source image. + + An histogram containing co-occurrences + for every gray level in . + + + + + Gets or sets whether the maximum value of gray should be + automatically computed from the image. If set to false, + the maximum gray value will be assumed 255. + + + + + + Gets or sets the direction at which the co-occurrence should be found. + + + + + + Gray-Level Run-Length Matrix. + + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + Whether the maximum value of gray should be + automatically computed from the image. Default is true. + + + + + Computes the Gray-level Run-length for the given image source. + + + The source image. + + An array of run-length vectors containing level counts + for every width pixel in . + + + + + Gets or sets whether the maximum value of gray should be + automatically computed from the image. If set to false, + the maximum gray value will be assumed 255. + + + + + + Gets or sets the direction at which the co-occurrence should be found. + + + + + + Gets the number of primitives found in the last + call to . + + + + + + Common interface for feature points. + + + + + + Common interface for feature points. + + + + + + Gets or sets the x-coordinate of this point. + + + + + + Gets or sets the y-coordinate of this point. + + + + + + 's operation modes. + + + + + + Features will be combined using + . + + + + + + Features will be combined using + . + + + + + + Features will be combined using + . + + + + + + Features will be combined using + . + + + + + + Haralick textural feature extractor. + + + + + + Common interface for feature detectors. + + + + + + Common interface for feature detectors. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Initializes a new instance of the class. + + + + The angulation degrees on which the Haralick's + features should be computed. Default is to use all directions. + + + + + Initializes a new instance of the class. + + + + The size of a computing cell, measured in pixels. + Default is 0 (use whole image at once). + + Whether to normalize generated + histograms. Default is false. + + + + + Initializes a new instance of the class. + + + + The size of a computing cell, measured in pixels. + Default is 0 (use whole image at once). + + Whether to normalize generated + histograms. Default is true. + + The angulation degrees on which the Haralick's + features should be computed. Default is to use all directions. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found features points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the size of a cell, in pixels. + + + + + + Gets the s which should + be computed by this Haralick textural feature extractor. + Default is . + + + + + + Gets or sets the mode of operation of this + Haralick's textural + feature extractor. + + + + The mode determines how the different features captured + by the are combined. + + + + A value from the enumeration + specifying how the different features should be combined. + + + + + + Gets or sets the number of features to extract using + the . By default, only + the first 13 original Haralick's features will be used. + + + + + + Gets the set of local binary patterns computed for each + cell in the last call to . + + + + + + Gets the Gray-level + Co-occurrence Matrix (GLCM) generated during the last + call to . + + + + + + Gets or sets whether to normalize final + histogram feature vectors. Default is false. + + + + + + Haralick's Texture Features. + + + + + Haralick's texture features are based on measures derived from + Gray-level Co-occurrence + matrices (GLCM). + + Whether considering the intensity or grayscale values of the image + or various dimensions of color, the co-occurrence matrix can measure + the texture of the image. Because co-occurrence matrices are typically + large and sparse, various metrics of the matrix are often taken to get + a more useful set of features. Features generated using this technique + are usually called Haralick features, after R. M. Haralick, attributed to + his paper Textural features for image classification (1973). + + + This class encompasses most of the features derived on Haralick's original + paper. All features are lazy-evaluated until needed; but may also be + combined in a single feature vector by calling . + + + References: + + + Wikipedia Contributors, "Co-occurrence matrix". Available at + http://en.wikipedia.org/wiki/Co-occurrence_matrix + + Robert M Haralick, K Shanmugam, Its'hak Dinstein; "Textural + Features for Image Classification". IEEE Transactions on Systems, Man, + and Cybernetics. SMC-3 (6): 610–621, 1973. Available at: + + http://www.makseq.com/materials/lib/Articles-Books/Filters/Texture/Co-occurrence/haralick73.pdf + + + + + + + + + + + Initializes a new instance of the class. + + + The co-occurrence matrix to compute features from. + + + + + Creates a feature vector with + the chosen feature functions. + + + How many features to include in the vector. Default is 13. + + A vector with Haralick's features up + to the given number passed as input. + + + + + Gets the number of gray levels in the + original image. This is the number of + dimensions of the co-occurrence matrix. + + + + + + Gets the matrix sum. + + + + + + Gets the matrix mean μ. + + + + + + Gets the marginal probability vector + obtained by summing the rows of p(i,j), + given as px(i) = Σj p(i,j). + + + + + + Gets the marginal probability vector + obtained by summing the columns of p(i,j), + given as py(j) = Σi p(i,j). + + + + + + Gets μx, the mean value of the + vector. + + + + + + Gets μ_y, the mean value of the + vector. + + + + + + Gets σx, the variance of the + vector. + + + + + + Gets σy, the variance of the + vector. + + + + + + Gets Hx, the entropy of the + vector. + + + + + + Gets Hy, the entropy of the + vector. + + + + + + Gets p(x+y)(k), the sum + of elements whose indices sum to k. + + + + + + Gets p(x-y) (k), the sum of elements + whose absolute indices diferences equals to k. + + + + + + Gets Haralick's first textural feature, + the Angular Second Momentum. + + + + + + Gets Haralick's second textural feature, + the Contrast. + + + + + + Gets Haralick's third textural feature, + the Correlation. + + + + + + Gets Haralick's fourth textural feature, + the Sum of Squares: Variance. + + + + + + Gets Haralick's fifth textural feature, + the Inverse Difference Moment. + + + + + + Gets Haralick's sixth textural feature, + the Sum Average. + + + + + + Gets Haralick's seventh textural feature, + the Sum Variance. + + + + + + Gets Haralick's eighth textural feature, + the Sum Entropy. + + + + + + Gets Haralick's ninth textural feature, + the Entropy. + + + + + + Gets Haralick's tenth textural feature, + the Difference Variance. + + + + + + Gets Haralick's eleventh textural feature, + the Difference Entropy. + + + + + + Gets Haralick's twelfth textural feature, + the First Information Measure. + + + + + + Gets Haralick's thirteenth textural feature, + the Second Information Measure. + + + + + + Gets Haralick's fourteenth textural feature, + the Maximal Correlation Coefficient. + + + + + + Gets Haralick's first textural feature, the + Angular Second Momentum, also known as Energy + or Homogeneity. + + + + + + Gets a variation of Haralick's second textural feature, + the Contrast with Absolute values (instead of squares). + + + + + + Gets Haralick's second textural feature, + the Contrast. + + + + + + Gets Haralick's third textural feature, + the Correlation. + + + + + + Gets Haralick's fourth textural feature, + the Sum of Squares: Variance. + + + + + + Gets Haralick's fifth textural feature, the Inverse + Difference Moment, also known as Local Homogeneity. + Can be regarded as a complement to . + + + + + + Gets a variation of Haralick's fifth textural feature, + the Texture Homogeneity. Can be regarded as a complement + to . + + + + + + Gets Haralick's sixth textural feature, + the Sum Average. + + + + + + Gets Haralick's seventh textural feature, + the Sum Variance. + + + + + + Gets Haralick's eighth textural feature, + the Sum Entropy. + + + + + + Gets Haralick's ninth textural feature, + the Entropy. + + + + + + Gets Haralick's tenth textural feature, + the Difference Variance. + + + + + + Gets Haralick's eleventh textural feature, + the Difference Entropy. + + + + + + Gets Haralick's twelfth textural feature, + the First Information Measure. + + + + + + Gets Haralick's thirteenth textural feature, + the Second Information Measure. + + + + + + Gets Haralick's fourteenth textural feature, + the Maximal Correlation Coefficient. + + + + + + Gets the Cluster Shade textural feature. + + + + + + Gets the Cluster Prominence textural feature. + + + + + + Feature dictionary. Associates a set of Haralick features to a given degree + used to compute the originating GLCM. + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the + class with serialized data. + + + A + object containing the information required to serialize this + . + A + structure containing the source and destination of the serialized stream + associated with this . + + + + + Combines features generated from different + GLCMs computed using different angulations + by concatenating them into a single vector. + + + The number of Haralick's original features to compute. + + A single vector containing all values computed from + the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size d * n. All features from different + degrees will be concatenated into this single result vector. + + + + + + Combines features generated from different + GLCMs computed using different angulations + by averaging them into a single vector. + + + The number of Haralick's original features to compute. + + A single vector containing the average of the values + computed from the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size n. All features from different + degrees will be averaged into this single result vector. + + + + + + Combines features generated from different + GLCMs computed using different angulations + by averaging them into a single vector. + + + The number of Haralick's original features to compute. + + A single vector containing the average of the values + computed from the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size 2*n*d. Each even index will have + the average of a given feature, and the subsequent odd index will contain + the range of this feature. + + + + + + Combines features generated from different + GLCMs computed using different angulations + by averaging them into a single vector, normalizing them to be between -1 and 1. + + + The number of Haralick's original features to compute. + + A single vector containing the averaged and normalized values + computed from the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size n. All features will be averaged, and + the mean will be scaled to be in a [-1,1] interval. + + + + + + Local Binary Patterns. + + + + + Local binary patterns (LBP) is a type of feature used for classification + in computer vision. LBP is the particular case of the Texture Spectrum + model proposed in 1990. LBP was first described in 1994. It has since + been found to be a powerful feature for texture classification; it has + further been determined that when LBP is combined with the Histogram of + oriented gradients (HOG) classifier, it improves the detection performance + considerably on some datasets. + + + References: + + + Wikipedia Contributors, "Local Binary Patterns". Available at + http://en.wikipedia.org/wiki/Local_binary_patterns + + + + + + + + Initializes a new instance of the class. + + + + The size of a block, measured in cells. Default is 3. + + The size of a cell, measured in pixels. If set to zero, the entire + image will be used at once, forming a single block. Default is 6. + + Whether to normalize generated histograms. Default is true. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found features points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the size of a cell, in pixels. + + + + + + Gets the size of a block, in pixels. + + + + + + Gets the set of local binary patterns computed for each + pixel in the last call to to . + + + + + + Gets the histogram computed at each cell. + + + + + + Gets or sets whether to normalize final + histogram feature vectors. Default is true. + + + + + + SURF Feature descriptor types. + + + + + + Do not compute descriptors. + + + + + + Compute standard 512-bit descriptors. + + + + + + Compute extended 1024-bit descriptors. + + + + + + Fast Retina Keypoint (FREAK) detector. + + + + The FREAK algorithm is a binary based interest point descriptor algorithm + that relies in another corner + + + + + In the following example, we will see how can we extract binary descriptor + vectors from a given image using the Fast Retina Keypoint Detector together + a FAST corners detection algorithm. + + + Bitmap lena = Resources.lena512; + + // The freak detector can be used with any other corners detection + // algorithm. The default corners detection method used is the FAST + // corners detection. So, let's start creating this detector first: + // + var detector = new FastCornersDetector(60); + + // Now that we have a corners detector, we can pass it to the FREAK + // feature extraction algorithm. Please note that if we leave this + // parameter empty, FAST will be used by default. + // + var freak = new FastRetinaKeypointDetector(detector); + + // Now, all we have to do is to process our image: + List<FastRetinaKeypoint> points = freak.ProcessImage(lena); + + // Afterwards, we should obtain 83 feature points. We can inspect + // the feature points visually using the FeaturesMarker class as + // + FeaturesMarker marker = new FeaturesMarker(points, scale: 20); + + // And showing it on screen with + ImageBox.Show(marker.Apply(lena)); + + // We can also inspect the feature vectors (descriptors) associated + // with each feature point. In order to get a descriptor vector for + // any given point, we can use + // + byte[] feature = points[42].Descriptor; + + // By default, feature vectors will have 64 bytes in length. We can also + // display those vectors in more readable formats such as HEX or base64 + // + string hex = points[42].ToHex(); + string b64 = points[42].ToBase64(); + + // The above base64 result should be: + // + // "3W8M/ev///ffbr/+v3f34vz//7X+f0609v//+++/1+jfq/e83/X5/+6ft3//b4uaPZf7ePb3n/P93/rIbZlf+g==" + // + + + + The resulting image is shown below: + + + + + + + + + + + + + Initializes a new instance of the class. + + + The detection threshold for the + FAST detector. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + A corners detector. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Gets the + feature descriptor for the last processed image. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the corners detector used to generate features. + + + + + + Gets or sets a value indicating whether all feature points + should have their descriptors computed after being detected. + Default is to compute standard descriptors. + + + true if to compute orientation; otherwise, false. + + + + + Gets or sets the number of octaves to use when + building the feature descriptor. Default is 4. + + + + + + Gets or sets the scale used when building + the feature descriptor. Default is 22. + + + + + + Fast Retina Keypoint (FREAK) point. + + + + In order to extract feature points from an image using FREAK, + please take a look on the + documentation page. + + + + + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + + + + + Converts the binary descriptor to + string of hexadecimal values. + + + A string containing an hexadecimal + value representing this point's descriptor. + + + + + Converts the binary descriptor + to a string of binary values. + + + A string containing a binary value + representing this point's descriptor. + + + + + Converts the binary descriptor to base64. + + + A string containing the base64 + representation of the descriptor. + + + + + Converts the feature point to a . + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Gets or sets the x-coordinate of this point. + + + + + + Gets or sets the y-coordinate of this point. + + + + + + Gets or sets the scale of the point. + + + + + + Gets or sets the orientation of this point in angles. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Fast Retina Keypoint (FREAK) descriptor. + + + + + Based on original implementation by A. Alahi, R. Ortiz, and P. + Vandergheynst, distributed under a BSD style license. + + + In order to extract feature points from an image using FREAK, + please take a look on the + documentation page. + + + References: + + + A. Alahi, R. Ortiz, and P. Vandergheynst. FREAK: Fast Retina Keypoint. In IEEE Conference on + Computer Vision and Pattern Recognition, CVPR 2012 Open Source Award Winner. + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Describes the specified point (i.e. computes and + sets the orientation and descriptor vector fields + of the . + + + The point to be described. + + + + + Gets or sets whether the orientation is normalized. + + + + + + Gets or sets whether the scale is normalized. + + + + + + Gets or sets whether to compute the standard 512-bit + descriptors or extended 1024-bit + + + + + + Gets the of + the original source's feature detector. + + + The integral image from where the + features have been detected. + + + + + Gets the of + the original source's feature detector. + + + The integral image from where the + features have been detected. + + + + + Pattern scale resolution. + + + + + Pattern orientation resolution. + + + + + + Number of pattern points. + + + + + + Smallest keypoint size. + + + + + + Look-up table for the pattern points (position + + sigma of all points at all scales and orientation) + + + + + + Histograms of Oriented Gradients [experimental]. + + + + + This class is currently very experimental. Use with care. + + + References: + + + Navneet Dalal and Bill Triggs, "Histograms of Oriented Gradients for Human Detection", + CVPR 2005. Available at: + http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf + + + + + + + Initializes a new instance of the class. + + + The number of histogram bins. + The size of a block, measured in cells. + The size of a cell, measured in pixels. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the size of a cell, in pixels. + + + + + + Gets the size of a block, in pixels. + + + + + + Gets the number of histogram bins. + + + + + + Gets the matrix of orientations generated in + the last call to . + + + + + + Gets the matrix of magnitudes generated in + the last call to . + + + + + + Gets the histogram computed at each cell. + + + + + + Gets or sets whether to normalize final + histogram feature vectors. Default is true. + + + + + + Response filter. + + + + + In SURF, the scale-space is divided into a number of octaves, + where an octave refers to a series of + response maps covering a doubling of scale. + + In the traditional approach to constructing a scale-space, + the image size is varied and the Gaussian filter is repeatedly + applied to smooth subsequent layers. The SURF approach leaves + the original image unchanged and varies only the filter size. + + + + + + Creates the initial map of responses according to + the specified number of octaves and initial step. + + + + + + Updates the response filter definitions + without recreating objects. + + + + + + Computes the filter using the specified + Integral Image. + + + The integral image. + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through this collection. + + + An object that can be used to iterate through the collection. + + + + + + Response Layer. + + + + + + Initializes a new instance of the class. + + + + + + Updates the response layer definitions + without recreating objects. + + + + + + Computes the filter for the specified integral image. + + + The integral image. + + + + + Gets the width of the filter. + + + + + + Gets the height of the filter. + + + + + + Gets the filter step. + + + + + + Gets the filter size. + + + + + + Gets the responses computed from the filter. + + + + + + Gets the Laplacian computed from the filter. + + + + + + Nearest neighbor feature point matching algorithm. + + + + + This class matches feature points using a + k-Nearest Neighbors algorithm. + + + + + + + + + Constructs a new + K-Nearest Neighbors matching algorithm. + + + The number of neighbors to use when matching points. + + + + + Constructs a new + K-Nearest Neighbors matching algorithm. + + + The number of neighbors to use when matching points. + The distance function to consider between points. + + + + + Creates a nearest neighbor algorithm with the feature points as + inputs and their respective indices a the corresponding output. + + + + + + Corner feature point. + + + + + + Initializes a new instance of the class. + + + + + + Gets the X position of the point. + + + + + + Gets the Y position of the point. + + + + + + Gets the descriptor vector + associated with this point. + + + + + + Feature detector based on corners. + + + + This class can be used as an adapter for classes implementing + AForge.NET's ICornersDetector interface, so they can be used + where an is needed. + + + + For an example on how to use this class, please take a look + on the example section for . + + + + + + + + Initializes a new instance of the class. + + + A corners detector. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Gets the corners detector used to generate features. + + + + + + Hu's set of invariant image moments. + + + + + In image processing, computer vision and related fields, an image moment is + a certain particular weighted average (moment) of the image pixels' intensities, + or a function of such moments, usually chosen to have some attractive property + or interpretation. + + + Image moments are useful to describe objects after segmentation. Simple properties + of the image which are found via image moments include area (or total intensity), + its centroid, and information about its orientation. + + + Hu's set of invariant moments are invariant under translation, changes in scale, + and also rotation. The first moment, , is analogous to the moment + of inertia around the image's centroid, where the pixels' intensities are analogous + to physical density. The last one, I7, is skew invariant, which enables it to distinguish + mirror images of otherwise identical images. + + + References: + + + Wikipedia contributors. "Image moment." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Image_moment + + + + + + + Bitmap image = ...; + + // Compute the Hu moments of up to third order + HuMoments hu = new HuMoments(image, order: 3); + + + + + + + + + + Base class for image moments. + + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Gets or sets the maximum order of the moments. + + + + + + Common interface for image moments. + + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum moment order to be computed. + + + + + Initializes a new instance of the class. + + + The maximum moment order to be computed. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Computes the Hu moments from the specified central moments. + + + The central moments to use as base of calculations. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Hu moment of order 1. + + + + + + Hu moment of order 2. + + + + + + Hu moment of order 3. + + + + + + Hu moment of order 4. + + + + + + Hu moment of order 5. + + + + + + Hu moment of order 6. + + + + + + Hu moment of order 7. + + + + + + RANSAC Robust Fundamental Matrix Estimator. + + + + + Fitting a fundamental using RANSAC is pretty straightforward. Being a iterative method, + in a single iteration a random sample of four correspondences is selected from the + given correspondence points and a transformation F is then computed from those points. + + After a given number of iterations, the iteration which produced the largest number + of inliers is then selected as the best estimation for H. + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: + http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Projective/fundmatrix.m + + E. Dubrofsky. Homography Estimation. Master thesis. Available on: + http://www.cs.ubc.ca/~dubroe/courses/MastersEssay.pdf + + + + + + + Creates a new RANSAC homography estimator. + + + Inlier threshold. + Inlier probability. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The fundamental matrix relating x1 and x2. + + + + + Estimates a fundamental matrix with the given points. + + + + + + Compute inliers using the Symmetric Transfer Error, + + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Maximum cross-correlation feature point matching algorithm. + + + + + This class matches feature points by using a maximum cross-correlation measure. + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: + http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Match/matchbycorrelation.m + + + + http://www.instructor.com.br/unesp2006/premiados/PauloHenrique.pdf + + + + http://siddhantahuja.wordpress.com/2010/04/11/correlation-based-similarity-measures-summary/ + + + + + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Constructs the correlation matrix between selected points from two images. + + + + Rows correspond to points from the first image, columns correspond to points + in the second. + + + + + + Gets or sets the maximum distance to consider + points as correlated. + + + + + + Gets or sets the size of the correlation window. + + + + + + Combine channel filter. + + + + + + Constructs a new CombineChannel filter. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + See + for more information. + + + + + + Rectification filter for projective transformation. + + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + + + + + Computes the new image size. + + + + + + Process the image filter. + + + + + + Format translations dictionary. + + + + + + Gets or sets the Homography matrix used to map a image passed to + the filter to the overlay image specified at filter creation. + + + + + + Gets or sets the filling color used to fill blank spaces. + + + + The filling color will only be visible after the image is converted + to 24bpp. The alpha channel will be used internally by the filter. + + + + + + Central image moments. + + + + + In image processing, computer vision and related fields, an image moment is + a certain particular weighted average (moment) of the image pixels' intensities, + or a function of such moments, usually chosen to have some attractive property + or interpretation. + + + Image moments are useful to describe objects after segmentation. Simple properties + of the image which are found via image moments include area (or total intensity), + its centroid, and information about its orientation. + + + The central moments can be used to find the location, center of mass and the + dimensions of a given object within an image. + + + References: + + + Wikipedia contributors. "Image moment." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Image_moment + + + + + + + Bitmap image = ...; + + // Compute the center moments of up to third order + CentralMoments cm = new CentralMoments(image, order: 3); + + // Get size and orientation of the image + SizeF size = target.GetSize(); + float angle = target.GetOrientation(); + + + + + + + + + + Gets the default maximum moment order. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The raw moments to construct central moments. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the center moments from the specified raw moments. + + + The raw moments to use as base of calculations. + + + + + Computes the center moments for the specified image. + + + The image. + The region of interest in the image to compute moments for. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Gets the size of the ellipse containing the image. + + + The size of the ellipse containing the image. + + + + + Gets the orientation of the ellipse containing the image. + + + The angle of orientation of the ellipse, in radians. + + + + + Gets both size and orientation of the ellipse containing the image. + + + The angle of orientation of the ellipse, in radians. + The size of the ellipse containing the image. + + + + + Central moment of order (0,0). + + + + + + Central moment of order (1,0). + + + + + + Central moment of order (0,1). + + + + + + Central moment of order (1,1). + + + + + + Central moment of order (2,0). + + + + + + Central moment of order (0,2). + + + + + + Central moment of order (2,1). + + + + + + Central moment of order (1,2). + + + + + + Central moment of order (3,0). + + + + + + Central moment of order (0,3). + + + + + + Raw image moments. + + + + + In image processing, computer vision and related fields, an image moment is + a certain particular weighted average (moment) of the image pixels' intensities, + or a function of such moments, usually chosen to have some attractive property + or interpretation. + + + Image moments are useful to describe objects after segmentation. Simple properties + of the image which are found via image moments include area (or total intensity), + its centroid, and information about its orientation. + + + The raw moments are the most basic moments which can be computed from an image, + and can then be further processed to achieve or even + . + + + References: + + + Wikipedia contributors. "Image moment." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Image_moment + + + + + + + Bitmap image = ...; + + // Compute the raw moments of up to third order + RawMoments m = new RawMoments(image, order: 3); + + + + + + + + + + Gets the default maximum moment order. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Computes the raw moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + True to compute second order moments, false otherwise. + + + + + Computes the raw moments for the specified image. + + + The image. + The region of interest in the image to compute moments for. + + + + + Computes the raw moments for the specified image. + + + The image. + The region of interest in the image to compute moments for. + + + + + Resets all moments to zero. + + + + + + Raw moment of order (0,0). + + + + + + Raw moment of order (1,0). + + + + + + Raw moment of order (0,1). + + + + + + Raw moment of order (1,1). + + + + + + Raw moment of order (2,0). + + + + + + Raw moment of order (0,2). + + + + + + Raw moment of order (2,1). + + + + + + Raw moment of order (1,2). + + + + + + Raw moment of order (3,0). + + + + + + Raw moment of order (0,3). + + + + + + Inverse raw moment of order (0,0). + + + + + + Gets the X centroid of the image. + + + + + + Gets the Y centroid of the image. + + + + + + Gets the area (for binary images) or sum of + gray level (for grayscale images). + + + + + + Features from Accelerated Segment Test (FAST) corners detector. + + + + + In the FAST corner detection algorithm, a pixel is defined as a corner + if (in a circle surrounding the pixel), N or more contiguous pixels are + all significantly brighter then or all significantly darker than the center + pixel. The ordering of questions used to classify a pixel is learned using + the ID3 algorithm. + + + This detector has been shown to exhibit a high degree of repeatability. + + + The code is roughly based on the 9 valued FAST corner detection + algorithm implementation in C by Edward Rosten, which has been + published under a 3-clause BSD license and is freely available at: + http://svr-www.eng.cam.ac.uk/~er258/work/fast.html. + + + + References: + + + E. Rosten, T. Drummond. Fusing Points and Lines for High + Performance Tracking, ICCV 2005. + + E. Rosten, T. Drummond. Machine learning for high-speed + corner detection, ICCV 2005 + + + + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new FAST Corners Detector + FastCornersDetector fast = new FastCornersDetector() + { + Suppress = true, // suppress non-maximum points + Threshold = 40 // less leads to more corners + }; + + // Process the image looking for corners + List<IntPoint> points = fast.ProcessImage(image); + + // Create a filter to mark the corners + PointsMarker marker = new PointsMarker(points); + + // Apply the corner-marking filter + Bitmap markers = marker.Apply(image); + + // Show on the screen + ImageBox.Show(markers); + + + + The resulting image is shown below: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The suppression threshold. Decreasing this value + increases the number of points detected by the algorithm. Default is 20. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Gets or sets a value indicating whether non-maximum + points should be suppressed. Default is true. + + + true if non-maximum points should + be suppressed; otherwise, false. + + + + + Gets or sets the corner detection threshold. Increasing this value results in less corners, + whereas decreasing this value will result in more corners detected by the algorithm. + + + The corners threshold. + + + + + Gets the scores of the each corner detected in + the previous call to . + + + The scores of each last computed corner. + + + + + Filter to mark (highlight) feature points in a image. + + + + The filter highlights feature points on the image using a given set of points. + + The filter accepts 8 bpp grayscale and 24 color images for processing. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + Gets or sets the initial size for a feature point in the map. Default is 5. + + + + + + Gets or sets the set of points to mark. + + + + + + SURF Feature descriptor types. + + + + + + Do not compute descriptors. + + + + + + Compute standard descriptors. + + + + + + Compute extended descriptors. + + + + + + Speeded-up Robust Features (SURF) detector. + + + + + Based on original implementation in the OpenSURF computer vision library + by Christopher Evans (http://www.chrisevansdev.com). Used under the LGPL + with permission of the original author. + + + Be aware that the SURF algorithm is a patented algorithm by Anael Orlinski. + If you plan to use it in a commercial application, you may have to acquire + a license from the patent holder. + + + References: + + + E. Christopher. Notes on the OpenSURF Library. Available in: + http://sites.google.com/site/chrisevansdev/files/opensurf.pdf + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Spatial/harris.m + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The non-maximum suppression threshold. Default is 0.0002f. + + + + + Initializes a new instance of the class. + + + + The non-maximum suppression threshold. Default is 0.0002f. + + The number of octaves to use when building the + response filter. Each octave corresponds to a series of maps covering a + doubling of scale in the image. Default is 5. + + The initial step to use when building the + response filter. Default is 2. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the + feature descriptor for the last processed image. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + Unmanaged source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + Source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Gets or sets a value indicating whether all feature points + should have their orientation computed after being detected. + Default is true. + + + Computing orientation requires additional processing; + set this property to false to compute the orientation of only + selected points by using the + current feature descriptor for the last set of detected points. + + + true if to compute orientation; otherwise, false. + + + + + Gets or sets a value indicating whether all feature points + should have their descriptors computed after being detected. + Default is to compute standard descriptors. + + + Computing descriptors requires additional processing; + set this property to false to compute the descriptors of only + selected points by using the + current feature descriptor for the last set of detected points. + + + true if to compute orientation; otherwise, false. + + + + + Gets or sets the non-maximum suppression + threshold. Default is 0.0002. + + + The non-maximum suppression threshold. + + + + + Gets or sets the number of octaves to use when building + the response filter. + Each octave corresponds to a series of maps covering a + doubling of scale in the image. Default is 5. + + + + + + Gets or sets the initial step to use when building + the response filter. + Default is 2. + + + + + + Linear Gradient Blending filter. + + + + + The blending filter is able to blend two images using a homography matrix. + A linear alpha gradient is used to smooth out differences between the two + images, effectively blending them in two images. The gradient is computed + considering the distance between the centers of the two images. + + + The first image should be passed at the moment of creation of the Blending + filter as the overlay image. A second image may be projected on top of the + overlay image by calling the Apply method and passing the second image as + argument. + + + Currently the filter always produces 32bpp images, disregarding the format + of source images. The alpha layer is used as an intermediate mask in the + blending process. + + + + + // Let's start with two pictures that have been + // taken from slightly different points of view: + // + Bitmap img1 = Resources.dc_left; + Bitmap img2 = Resources.dc_right; + + // Those pictures are shown below: + ImageBox.Show(img1, PictureBoxSizeMode.Zoom, 640, 480); + ImageBox.Show(img2, PictureBoxSizeMode.Zoom, 640, 480); + + + + + + + // Step 1: Detect feature points using Surf Corners Detector + var surf = new SpeededUpRobustFeaturesDetector(); + + var points1 = surf.ProcessImage(img1); + var points2 = surf.ProcessImage(img2); + + // Step 2: Match feature points using a k-NN + var matcher = new KNearestNeighborMatching(5); + var matches = matcher.Match(points1, points2); + + // Step 3: Create the matrix using a robust estimator + var ransac = new RansacHomographyEstimator(0.001, 0.99); + MatrixH homographyMatrix = ransac.Estimate(matches); + + // Step 4: Project and blend using the homography + Blend blend = new Blend(homographyMatrix, img1); + + + // Compute the blending algorithm + Bitmap result = blend.Apply(img2); + + // Show on screen + ImageBox.Show(result, PictureBoxSizeMode.Zoom, 640, 480); + + + + The resulting image is shown below. + + + + + + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + The overlay image (also called the anchor). + + + + + Constructs a new Blend filter. + + + The overlay image (also called the anchor). + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + The overlay image (also called the anchor). + + + + + Computes the new image size. + + + + + + Process the image filter. + + + + + + Computes a distance metric used to compute the blending mask + + + + + Format translations dictionary. + + + + + + Gets or sets the Homography matrix used to map a image passed to + the filter to the overlay image specified at filter creation. + + + + + + Gets or sets the filling color used to fill blank spaces. + + + + The filling color will only be visible after the image is converted + to 24bpp. The alpha channel will be used internally by the filter. + + + + + + Gets or sets a value indicating whether to blend using a linear + gradient or just superimpose the two images with equal weights. + + + true to create a gradient; otherwise, false. Default is true. + + + + + Gets or sets a value indicating whether only the alpha channel + should be blended. This can be used together with a transparency + mask to selectively blend only portions of the image. + + + true to blend only the alpha channel; otherwise, false. Default is false. + + + + + Concatenation filter. + + + + Concatenates two images side by side in a single image. + + + + + + Creates a new concatenation filter. + + The first image to concatenate. + + + + Calculates new image size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Filter to mark (highlight) rectangles in a image. + + + + + + Initializes a new instance of the class. + + + The color to use to drawn the rectangles. + + + + + Initializes a new instance of the class. + + + Set of rectangles to be drawn. + + + + + Initializes a new instance of the class. + + + Set of rectangles to be drawn. + + + + + Initializes a new instance of the class. + + + Set of rectangles to be drawn. + The color to use to drawn the rectangles. + + + + + Applies the filter to the image. + + + + + Color used to mark pairs. + + + + + + Gets or sets the color used to fill + rectangles. Default is Transparent. + + + + + + The set of rectangles. + + + + + + Format translations dictionary. + + + + + + Filter to mark (highlight) pairs of points in a image. + + + + + + Initializes a new instance of the class. + + + Set of starting points. + Set of corresponding points. + + + + + Initializes a new instance of the class. + + + Set of starting points. + Set of corresponding points. + The color of the lines to be marked. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Color used to mark pairs. + + + + + + The first set of points. + + + + + + The corresponding points to the first set of points. + + + + + + Format translations dictionary. + + + + + + Filter to mark (highlight) points in a image. + + + + The filter highlights points on the image using a given set of points. + + The filter accepts 8 bpp grayscale, 24 and 32 bpp color images for processing. + + + + Sample usage: + + // Create a blob contour's instance + BlobCounter bc = new BlobCounter(image); + + // Extract blobs + Blob[] blobs = bc.GetObjectsInformation(); + bc.ExtractBlobsImage(bmp, blobs[0], true); + + // Extract blob's edge points + List<IntPoint> contour = bc.GetBlobsEdgePoints(blobs[0]); + + // Create a green, 2 pixel width points marker's instance + PointsMarker marker = new PointsMarker(contour, Color.Green, 2); + + // Apply the filter in a given color image + marker.ApplyInPlace(colorBlob); + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Color used to mark corners. + + + + + + Gets or sets the set of points to mark. + + + + + + Gets or sets the width of the points to be drawn. + + + + + + Wavelet transform filter. + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Haar Wavelet transform filter + var wavelet = new WaveletTransform(new Haar(1)); + + // Apply the Wavelet transformation + Bitmap result = wavelet.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + // Extract only one of the resulting images + var crop = new Crop(new Rectangle(0, 0, + image.Width / 2, image.Height / 2)); + + Bitmap quarter = crop.Apply(result); + + // Show on the screen + ImageBox.Show(quarter); + + + + The resulting image is shown below. + + + + + + + + Constructs a new Wavelet Transform filter. + + + A wavelet function. + + + + + Constructs a new Wavelet Transform filter. + + + A wavelet function. + True to perform backward transform, false otherwise. + + + + + Applies the filter to the image. + + + + + + Format translations dictionary. + + + + + + Gets or sets the Wavelet function + + + + + + Gets or sets whether the filter should be applied forward or backwards. + + + + + + Corners measures to be used in . + + + + + + Original Harris' measure. Requires the setting of + a parameter k (default is 0.04), which may be a + bit arbitrary and introduce more parameters to tune. + + + + + + Noble's measure. Does not require a parameter + and may be more stable. + + + + + + Harris Corners Detector. + + + + This class implements the Harris corners detector. + Sample usage: + + + // create corners detector's instance + HarrisCornersDetector hcd = new HarrisCornersDetector( ); + // process image searching for corners + Point[] corners = hcd.ProcessImage( image ); + // process points + foreach ( Point corner in corners ) + { + // ... + } + + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Spatial/harris.m + + C.G. Harris and M.J. Stephens. "A combined corner and edge detector", + Proceedings Fourth Alvey Vision Conference, Manchester. + pp 147-151, 1988. + + Alison Noble, "Descriptions of Image Surfaces", PhD thesis, Department + of Engineering Science, Oxford University 1989, p45. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Convolution with decomposed 1D kernel. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Gets or sets the measure to use when detecting corners. + + + + + + Harris parameter k. Default value is 0.04. + + + + + + Harris threshold. Default value is 20000. + + + + + + Gaussian smoothing sigma. Default value is 1.2. + + + + + + Non-maximum suppression window radius. Default value is 3. + + + + + + Joint representation of both Integral Image and Squared Integral Image. + + + + Using this representation, both structures can be created in a single pass + over the data. This is interesting for real time applications. This class + also accepts a channel parameter indicating the Integral Image should be + computed using a specified color channel. This avoids costly conversions. + + + + + + Constructs a new Integral image of the given size. + + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Gets the sum of the pixels in a rectangle of the Integral image. + + + The horizontal position of the rectangle x. + The vertical position of the rectangle y. + The rectangle's height h. + The rectangle's width w. + + The sum of all pixels contained in the rectangle, computed + as I[y, x] + I[y + h, x + w] - I[y + h, x] - I[y, x + w]. + + + + + Gets the sum of the squared pixels in a rectangle of the Integral image. + + + The horizontal position of the rectangle x. + The vertical position of the rectangle y. + The rectangle's height h. + The rectangle's width w. + + The sum of all pixels contained in the rectangle, computed + as I²[y, x] + I²[y + h, x + w] - I²[y + h, x] - I²[y, x + w]. + + + + + Gets the sum of the pixels in a tilted rectangle of the Integral image. + + + The horizontal position of the rectangle x. + The vertical position of the rectangle y. + The rectangle's height h. + The rectangle's width w. + + The sum of all pixels contained in the rectangle, computed + as T[y + w, x + w + 1] + T[y + h, x - h + 1] - T[y, x + 1] - T[y + w + h, x + w - h + 1]. + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations + before the is reclaimed by garbage collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets the image's width. + + + + + + Gets the image's height. + + + + + + Gets the Integral Image for values' sum. + + + + + + Gets the Integral Image for values' squared sum. + + + + + + Gets the Integral Image for tilted values' sum. + + + + + + Speeded-Up Robust Feature (SURF) Point. + + + + + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + The point's scale. + The point's laplacian value. + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + The point's scale. + The point's laplacian value. + The point's orientation angle. + The point's response value. + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + The point's scale. + The point's Laplacian value. + The SURF point descriptor. + The point's orientation angle. + The point's response value. + + + + + Converts the feature point to a . + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Gets or sets the x-coordinate of this point. + + + + + + Gets or sets the y-coordinate of this point. + + + + + + Gets or sets the scale of the point. + + + + + + Gets or sets the response of the detected feature (strength). + + + + + + Gets or sets the orientation of this point + measured anti-clockwise from the x-axis. + + + + + + Gets or sets the sign of laplacian for this point + (which may be useful for fast matching purposes). + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Encapsulates a 3-by-3 general transformation matrix + that represents a (possibly) non-linear transform. + + + + + Linear transformations are not the only ones that can be represented by + matrices. Using homogeneous coordinates, both affine transformations and + perspective projections on R^n can be represented as linear transformations + on R^n+1 (that is, n+1-dimensional real projective space). + + The general transformation matrix has 8 degrees of freedom, as the last + element is just a scale parameter. + + + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Resets this matrix to be the identity. + + + + + + Returns the inverse matrix, if this matrix is invertible. + + + + + + Gets the transpose of this transformation matrix. + + + The transposed version of this matrix, given by H'. + + + + Transforms the given points using this transformation matrix. + + + + + + Transforms the given points using this transformation matrix. + + + + + + Multiplies this matrix, returning a new matrix as result. + + + + + + Compares two objects for equality. + + + + + + Returns the hash code for this instance. + + + + + + Double[,] conversion. + + + + + + Single[,] conversion. + + + + + + Double[,] conversion. + + + + + + Single[,] conversion. + + + + + + Matrix multiplication. + + + + + + Gets the elements of this matrix. + + + + + + Gets the offset x + + + + + + Gets the offset y + + + + + + Gets whether this matrix is invertible. + + + + + + Gets whether this is an Affine transformation matrix. + + + + + + Gets whether this is the identity transformation. + + + + + + Represents an ordered pair of real x- and y-coordinates and scalar w that defines + a point in a two-dimensional plane using homogeneous coordinates. + + + + + In mathematics, homogeneous coordinates are a system of coordinates used in + projective geometry much as Cartesian coordinates are used in Euclidean geometry. + + They have the advantage that the coordinates of a point, even those at infinity, + can be represented using finite coordinates. Often formulas involving homogeneous + coordinates are simpler and more symmetric than their Cartesian counterparts. + + Homogeneous coordinates have a range of applications, including computer graphics, + where they allow affine transformations and, in general, projective transformations + to be easily represented by a matrix. + + + References: + + + http://alumnus.caltech.edu/~woody/docs/3dmatrix.html + + http://simply3d.wordpress.com/2009/05/29/homogeneous-coordinates/ + + + + + + + Creates a new point. + + + + + + Creates a new point. + + + + + + Creates a new point. + + + + + + Creates a new point. + + + + + + Transforms a point using a projection matrix. + + + + + + Normalizes the point to have unit scale. + + + + + + Converts the point to a array representation. + + + + + + Multiplication by scalar. + + + + + + Multiplication by scalar. + + + + + + Multiplies the point by a scalar. + + + + + + Subtraction. + + + + + + Subtracts the values of two points. + + + + + + Addition. + + + + + + Add the values of two points. + + + + + + Equality. + + + + + + Inequality + + + + + + PointF Conversion. + + + + + + Converts to a Integer point by computing the ceiling of the point coordinates. + + + + + + Converts to a Integer point by rounding the point coordinates. + + + + + + Converts to a Integer point by truncating the point coordinates. + + + + + + Compares two objects for equality. + + + + + + Returns the hash code for this instance. + + + + + + Returns the empty point. + + + + + + The first coordinate. + + + + + + The second coordinate. + + + + + + The inverse scaling factor for X and Y. + + + + + + Gets whether this point is normalized (w = 1). + + + + + + Gets whether this point is at infinity (w = 0). + + + + + + Gets whether this point is at the origin. + + + + + + RANSAC Robust Homography Matrix Estimator. + + + + + Fitting a homography using RANSAC is pretty straightforward. Being a iterative method, + in a single iteration a random sample of four correspondences is selected from the + given correspondence points and a homography H is then computed from those points. + + The original points are then transformed using this homography and their distances to + where those transforms should be is then computed and matching points can classified + as inliers and non-matching points as outliers. + + After a given number of iterations, the iteration which produced the largest number + of inliers is then selected as the best estimation for H. + + + References: + + + E. Dubrofsky. Homography Estimation. Master thesis. Available on: + http://www.cs.ubc.ca/~dubroe/courses/MastersEssay.pdf + + + + + + // Let's start with two pictures that have been + // taken from slightly different points of view: + // + Bitmap img1 = Resources.dc_left; + Bitmap img2 = Resources.dc_right; + + // Those pictures are shown below: + ImageBox.Show(img1, PictureBoxSizeMode.Zoom, 640, 480); + ImageBox.Show(img2, PictureBoxSizeMode.Zoom, 640, 480); + + + + + + + // Step 1: Detect feature points using Surf Corners Detector + var surf = new SpeededUpRobustFeaturesDetector(); + + var points1 = surf.ProcessImage(img1); + var points2 = surf.ProcessImage(img2); + + // Step 2: Match feature points using a k-NN + var matcher = new KNearestNeighborMatching(5); + var matches = matcher.Match(points1, points2); + + // Step 3: Create the matrix using a robust estimator + var ransac = new RansacHomographyEstimator(0.001, 0.99); + MatrixH homographyMatrix = ransac.Estimate(matches); + + // Step 4: Project and blend using the homography + Blend blend = new Blend(homographyMatrix, img1); + + + // Compute the blending algorithm + Bitmap result = blend.Apply(img2); + + // Show on screen + ImageBox.Show(result, PictureBoxSizeMode.Zoom, 640, 480); + + + + The resulting image is shown below. + + + + + + + + + + + Creates a new RANSAC homography estimator. + + + Inlier threshold. + Inlier probability. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Estimates a homography with the given points. + + + + + + Compute inliers using the Symmetric Transfer Error, + + + + + + Checks if the selected points will result in a degenerate homography. + + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Speeded-Up Robust Features (SURF) Descriptor. + + + + + + + + + Initializes a new instance of the class. + + + + The integral image which is the source of the feature points. + + + + + + Describes the specified point (i.e. computes and + sets the orientation and descriptor vector fields + of the . + + + The point to be described. + + + + + Describes all specified points (i.e. computes and + sets the orientation and descriptor vector fields + of each . + + + The list of points to be described. + + + + + Determine dominant orientation for the feature point. + + + + + + Determine dominant orientation for feature point. + + + + + + Construct descriptor vector for this interest point + + + + + + Get the value of the Gaussian with std dev sigma at the point (x,y) + + + + + + Get the value of the Gaussian with std dev sigma at the point (x,y) + + + + + Gaussian look-up table for sigma = 2.5 + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets a value indicating whether the features + described by this should + be invariant to rotation. Default is true. + + + true for rotation invariant features; false otherwise. + + + + + Gets or sets a value indicating whether the features + described by this should + be computed in extended form. Default is false. + + + true for extended features; false otherwise. + + + + + Gets the of + the original source's feature detector. + + + The integral image from where the + features have been detected. + + + + + Static tool functions for imaging. + + + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: + http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Match/matchbycorrelation.m + + + + + + + + Computes the center of a given rectangle. + + + + + Compares two rectangles for equality, considering an acceptance threshold. + + + + + Creates an homography matrix matching points + from a set of points to another. + + + + + Creates an homography matrix matching points + from a set of points to another. + + + + + + Creates the fundamental matrix between two + images from a set of points from each image. + + + + + + Creates the fundamental matrix between two + images from a set of points from each image. + + + + + + Creates the fundamental matrix between two + images from a set of points from each image. + + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Detects if three points are collinear. + + + + + + Detects if three points are collinear. + + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the minimum pixel value in the given image. + + + + + + Computes the minimum pixel value in the given image. + + + + + + Computes the minimum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts an image given as a matrix of pixel values into + a . + + + A matrix containing the grayscale pixel + values as bytes. + A of the same width + and height as the pixel matrix containing the given pixel values. + + + + + Converts an image given as a matrix of pixel values into + a . + + + A matrix containing the grayscale pixel + values as bytes. + A of the same width + and height as the pixel matrix containing the given pixel values. + + + + + Converts an image given as a array of pixel values into + a . + + + An array containing the grayscale pixel + values as doubles. + The width of the resulting image. + The height of the resulting image. + The minimum value representing a color value of 0. + The maximum value representing a color value of 255. + + A of given width and height + containing the given pixel values. + + + + + Converts an image given as a array of pixel values into + a . + + + An jagged array containing the pixel values + as double arrays. Each element of the arrays will be converted to + a R, G, B, A value. The bits per pixel of the resulting image + will be set according to the size of these arrays. + The width of the resulting image. + The height of the resulting image. + The minimum value representing a color value of 0. + The maximum value representing a color value of 255. + + A of given width and height + containing the given pixel values. + + + + + Converts an image given as a array of pixel values into + a . + + + An jagged array containing the pixel values + as double arrays. Each element of the arrays will be converted to + a R, G, B, A value. The bits per pixel of the resulting image + will be set according to the size of these arrays. + The width of the resulting image. + The height of the resulting image. + + A of given width and height + containing the given pixel values. + + + + + Multiplies a point by a transformation matrix. + + + + + + Multiplies a transformation matrix and a point. + + + + + + Computes the inner product of two points. + + + + + + Transforms the given points using this transformation matrix. + + + + + + Gets the image format most likely associated with a given file name. + + + The filename in the form "image.jpg". + + The most likely associated with + the given . + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net45/Accord.Imaging.dll b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net45/Accord.Imaging.dll new file mode 100644 index 0000000000..5a0bad3d1 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net45/Accord.Imaging.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net45/Accord.Imaging.xml b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net45/Accord.Imaging.xml new file mode 100644 index 0000000000..efce14a5b --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Imaging.3.0.2/lib/net45/Accord.Imaging.xml @@ -0,0 +1,28470 @@ + + + + Accord.Imaging + + + + + Image's blob. + + + The class represents a blob - part of another images. The + class encapsulates the blob itself and information about its position + in parent image. + + The class is not responsible for blob's image disposing, so it should be + done manually when it is required. + + + + + + Initializes a new instance of the class. + + + Blob's ID in the original image. + Blob's rectangle in the original image. + + This constructor leaves property not initialized. The blob's + image may be extracted later using + or method. + + + + + Initializes a new instance of the class. + + + Source blob to copy. + + This copy constructor leaves property not initialized. The blob's + image may be extracted later using + or method. + + + + + Blob's image. + + + The property keeps blob's image. In the case if it equals to null, + the image may be extracted using + or method. + + + + + Blob's image size. + + + The property specifies size of the blob's image. + If the property is set to , the blob's image size equals to the + size of original image. If the property is set to , the blob's + image size equals to size of actual blob. + + + + + Blob's rectangle in the original image. + + + The property specifies position of the blob in the original image + and its size. + + + + + Blob's ID in the original image. + + + + + Blob's area. + + + The property equals to blob's area measured in number of pixels + contained by the blob. + + + + + Blob's fullness, [0, 1]. + + + The property equals to blob's fullness, which is calculated + as Area / ( Width * Height ). If it equals to 1, then + it means that entire blob's rectangle is filled by blob's pixel (no + blank areas), which is true only for rectangles. If it equals to 0.5, + for example, then it means that only half of the bounding rectangle is filled + by blob's pixels. + + + + + Blob's center of gravity point. + + + The property keeps center of gravity point, which is calculated as + mean value of X and Y coordinates of blob's points. + + + + + Blob's mean color. + + + The property keeps mean color of pixels comprising the blob. + + + + + Blob color's standard deviation. + + + The property keeps standard deviation of pixels' colors comprising the blob. + + + + + Blob counter - counts objects in image, which are separated by black background. + + + The class counts and extracts stand alone objects in + images using connected components labeling algorithm. + + The algorithm treats all pixels with values less or equal to + as background, but pixels with higher values are treated as objects' pixels. + + For blobs' searching the class supports 8 bpp indexed grayscale images and + 24/32 bpp color images that are at least two pixels wide. Images that are one + pixel wide can be processed if they are rotated first, or they can be processed + with . + See documentation about for information about which + pixel formats are supported for extraction of blobs. + + Sample usage: + + // create an instance of blob counter algorithm + BlobCounter bc = new BlobCounter( ); + // process binary image + bc.ProcessImage( image ); + Rectangle[] rects = bc.GetObjectsRectangles( ); + // process blobs + foreach ( Rectangle rect in rects ) + { + // ... + } + + + + + + + Base class for different blob counting algorithms. + + + The class is abstract and serves as a base for different blob counting algorithms. + Classes, which inherit from this base class, require to implement + method, which does actual building of object's label's map. + + For blobs' searcing usually all inherited classes accept binary images, which are actually + grayscale thresholded images. But the exact supported format should be checked in particular class, + inheriting from the base class. For blobs' extraction the class supports grayscale (8 bpp indexed) + and color images (24 and 32 bpp). + + Sample usage: + + // create an instance of blob counter algorithm + BlobCounterBase bc = new ... + // set filtering options + bc.FilterBlobs = true; + bc.MinWidth = 5; + bc.MinHeight = 5; + // process binary image + bc.ProcessImage( image ); + Blob[] blobs = bc.GetObjects( image, false ); + // process blobs + foreach ( Blob blob in blobs ) + { + // ... + // blob.Rectangle - blob's rectangle + // blob.Image - blob's image + } + + + + + + + Objects count. + + + + + Objects' labels. + + + + + Width of processed image. + + + + + Height of processed image. + + + + + Initializes a new instance of the class. + + + Creates new instance of the class with + an empty objects map. Before using methods, which provide information about blobs + or extract them, the , + or + method should be called to collect objects map. + + + + + Initializes a new instance of the class. + + + Binary image to look for objects in. + + Creates new instance of the class with + initialized objects map built by calling method. + + + + + Initializes a new instance of the class. + + + Binary image data to look for objects in. + + Creates new instance of the class with + initialized objects map built by calling method. + + + + + Initializes a new instance of the class. + + + Unmanaged binary image to look for objects in. + + Creates new instance of the class with + initialized objects map built by calling method. + + + + + Build objects map. + + + Source binary image. + + Processes the image and builds objects map, which is used later to extracts blobs. + + Unsupported pixel format of the source image. + + + + + Build objects map. + + + Source binary image data. + + Processes the image and builds objects map, which is used later to extracts blobs. + + Unsupported pixel format of the source image. + + + + + Build object map from raw image data. + + + Source unmanaged binary image data. + + Processes the image and builds objects map, which is used later to extracts blobs. + + Unsupported pixel format of the source image. + Thrown by some inherited classes if some image property other + than the pixel format is not supported. See that class's documentation or the exception message for details. + + + + + Get objects' rectangles. + + + Returns array of objects' rectangles. + + The method returns array of objects rectangles. Before calling the + method, the , + or method should be called, which will + build objects map. + + No image was processed before, so objects' rectangles + can not be collected. + + + + + Get objects' information. + + + Returns array of partially initialized blobs (without property initialized). + + By the amount of provided information, the method is between and + methods. The method provides array of blobs without initialized their image. + Blob's image may be extracted later using + or method. + + + + + // create blob counter and process image + BlobCounter bc = new BlobCounter( sourceImage ); + // specify sort order + bc.ObjectsOrder = ObjectsOrder.Size; + // get objects' information (blobs without image) + Blob[] blobs = bc.GetObjectInformation( ); + // process blobs + foreach ( Blob blob in blobs ) + { + // check blob's properties + if ( blob.Rectangle.Width > 50 ) + { + // the blob looks interesting, let's extract it + bc.ExtractBlobsImage( sourceImage, blob ); + } + } + + + + No image was processed before, so objects' information + can not be collected. + + + + + Get blobs. + + + Source image to extract objects from. + + Returns array of blobs. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + The method returns array of blobs. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so objects + can not be collected. + + + + + Get blobs. + + + Source unmanaged image to extract objects from. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + Returns array of blobs. + + The method returns array of blobs. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so objects + can not be collected. + + + + + Extract blob's image. + + + Source image to extract blob's image from. + Blob which is required to be extracted. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + The method is used to extract image of partially initialized blob, which + was provided by method. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so blob + can not be extracted. + + + + + Extract blob's image. + + + Source unmanaged image to extract blob's image from. + Blob which is required to be extracted. + Specifies size of blobs' image to extract. + If set to each blobs' image will have the same size as + the specified image. If set to each blobs' image will + have the size of its blob. + + The method is used to extract image of partially initialized blob, which + was provided by method. Before calling the + method, the , + or method should be called, which will build + objects map. + + The method supports 24/32 bpp color and 8 bpp indexed grayscale images. + + + Unsupported pixel format of the provided image. + No image was processed before, so blob + can not be extracted. + + + + + Get list of points on the left and right edges of the blob. + + + Blob to collect edge points for. + List of points on the left edge of the blob. + List of points on the right edge of the blob. + + The method scans each line of the blob and finds the most left and the + most right points for it adding them to appropriate lists. The method may be very + useful in conjunction with different routines from , + which allow finding convex hull or quadrilateral's corners. + + Both lists of points are sorted by Y coordinate - points with smaller Y + value go first. + + + No image was processed before, so blob + can not be extracted. + + + + + Get list of points on the top and bottom edges of the blob. + + + Blob to collect edge points for. + List of points on the top edge of the blob. + List of points on the bottom edge of the blob. + + The method scans each column of the blob and finds the most top and the + most bottom points for it adding them to appropriate lists. The method may be very + useful in conjunction with different routines from , + which allow finding convex hull or quadrilateral's corners. + + Both lists of points are sorted by X coordinate - points with smaller X + value go first. + + + No image was processed before, so blob + can not be extracted. + + + + + Get list of object's edge points. + + + Blob to collect edge points for. + + Returns unsorted list of blob's edge points. + + The method scans each row and column of the blob and finds the + most top/bottom/left/right points. The method returns similar result as if results of + both and + methods were combined, but each edge point occurs only once in the list. + + Edge points in the returned list are not ordered. This makes the list unusable + for visualization with methods, which draw polygon or poly-line. But the returned list + can be used with such algorithms, like convex hull search, shape analyzer, etc. + + + No image was processed before, so blob + can not be extracted. + + + + + Actual objects map building. + + + Unmanaged image to process. + + By the time this method is called bitmap's pixel format is not + yet checked, so this should be done by the class inheriting from the base class. + and members are initialized + before the method is called, so these members may be used safely. + + + + + Objects count. + + + Number of objects (blobs) found by method. + + + + + + Objects' labels. + + + The array of width * height size, which holds + labels for all objects. Background is represented with 0 value, + but objects are represented with labels starting from 1. + + + + + Objects sort order. + + + The property specifies objects' sort order, which are provided + by , , etc. + + + + + + Specifies if blobs should be filtered. + + + If the property is equal to false, then there is no any additional + post processing after image was processed. If the property is set to true, then + blobs filtering is done right after image processing routine. If + is set, then custom blobs' filtering is done, which is implemented by user. Otherwise + blobs are filtered according to dimensions specified in , + , and properties. + + Default value is set to . + + + + + Specifies if size filetering should be coupled or not. + + + In uncoupled filtering mode, objects are filtered out in the case if + their width is smaller than or height is smaller than + . But in coupled filtering mode, objects are filtered out in + the case if their width is smaller than and height is + smaller than . In both modes the idea with filtering by objects' + maximum size is the same as filtering by objects' minimum size. + + Default value is set to , what means uncoupled filtering by size. + + + + + + Minimum allowed width of blob. + + + The property specifies minimum object's width acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Minimum allowed height of blob. + + + The property specifies minimum object's height acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Maximum allowed width of blob. + + + The property specifies maximum object's width acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Maximum allowed height of blob. + + + The property specifies maximum object's height acceptable by blob counting + routine and has power only when property is set to + and custom blobs' filter is + set to . + + See documentation to for additional information. + + + + + + Custom blobs' filter to use. + + + The property specifies custom blobs' filtering routine to use. It has + effect only in the case if property is set to . + + When custom blobs' filtering routine is set, it has priority over default filtering done + with , , and . + + + + + + Initializes a new instance of the class. + + + Creates new instance of the class with + an empty objects map. Before using methods, which provide information about blobs + or extract them, the , + or + method should be called to collect objects map. + + + + + Initializes a new instance of the class. + + + Image to look for objects in. + + + + + Initializes a new instance of the class. + + + Image data to look for objects in. + + + + + Initializes a new instance of the class. + + + Unmanaged image to look for objects in. + + + + + Actual objects map building. + + + Unmanaged image to process. + + The method supports 8 bpp indexed grayscale images and 24/32 bpp color images. + + Unsupported pixel format of the source image. + Cannot process images that are one pixel wide. Rotate the image + or use . + + + + + Background threshold's value. + + + The property sets threshold value for distinguishing between background + pixel and objects' pixels. All pixel with values less or equal to this property are + treated as background, but pixels with higher values are treated as objects' pixels. + + In the case of colour images a pixel is treated as objects' pixel if any of its + RGB values are higher than corresponding values of this threshold. + + For processing grayscale image, set the property with all RGB components eqaul. + + Default value is set to (0, 0, 0) - black colour. + + + + + Possible object orders. + + + The enumeration defines possible sorting orders of objects, found by blob + counting classes. + + + + + Unsorted order (as it is collected by algorithm). + + + + + Objects are sorted by size in descending order (bigger objects go first). + Size is calculated as Width * Height. + + + + + Objects are sorted by area in descending order (bigger objects go first). + + + + + Objects are sorted by Y coordinate, then by X coordinate in ascending order + (smaller coordinates go first). + + + + + Objects are sorted by X coordinate, then by Y coordinate in ascending order + (smaller coordinates go first). + + + + + Block match class keeps information about found block match. The class is + used with block matching algorithms implementing + interface. + + + + + + Initializes a new instance of the class. + + + Reference point in source image. + Match point in search image (point of a found match). + Similarity between blocks in source and search images, [0..1]. + + + + + Reference point in source image. + + + + + Match point in search image (point of a found match). + + + + + Similarity between blocks in source and search images, [0..1]. + + + + + Color dithering using Burkes error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Burkes coefficients. Error is diffused + on 7 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + + / 32 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 8 colors table + Color[] colorTable = ciq.CalculatePalette( image, 8 ); + // create dithering routine + BurkesColorDithering dithering = new BurkesColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Base class for error diffusion color dithering, where error is diffused to + adjacent neighbor pixels. + + + The class does error diffusion to adjacent neighbor pixels + using specified set of coefficients. These coefficients are represented by + 2 dimensional jugged array, where first array of coefficients is for + right-standing pixels, but the rest of arrays are for bottom-standing pixels. + All arrays except the first one should have odd number of coefficients. + + Suppose that error diffusion coefficients are represented by the next + jugged array: + + + int[][] coefficients = new int[2][] { + new int[1] { 7 }, + new int[3] { 3, 5, 1 } + }; + + + The above coefficients are used to diffuse error over the next neighbor + pixels (* marks current pixel, coefficients are placed to corresponding + neighbor pixels): + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The image processing routine accepts 24/32 bpp color images for processing. + + Sample usage: + + // create dithering routine + ColorErrorDiffusionToAdjacentNeighbors dithering = new ColorErrorDiffusionToAdjacentNeighbors( + new int[3][] { + new int[2] { 5, 3 }, + new int[5] { 2, 4, 5, 4, 2 }, + new int[3] { 2, 3, 2 } + } ); + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + + + + + Base class for error diffusion color dithering. + + + The class is the base class for color dithering algorithms based on + error diffusion. + + Color dithering with error diffusion is based on the idea that each pixel from the specified source + image is substituted with a best matching color (or better say with color's index) from the specified color + table. However, the error (difference between color value in the source image and the best matching color) + is diffused to neighbor pixels of the source image, which affects the way those pixels are substituted by colors + from the specified table. + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + + + + + Current processing X coordinate. + + + + + Current processing Y coordinate. + + + + + Processing image's width. + + + + + Processing image's height. + + + + + Processing image's stride (line size). + + + + + Processing image's pixel size in bytes. + + + + + Initializes a new instance of the class. + + + + + + Do error diffusion. + + + Error value of red component. + Error value of green component. + Error value of blue component. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized in protected members. + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Color table to use for image dithering. Must contain 2-256 colors. + + + Color table size determines format of the resulting image produced by this + image processing routine. If color table contains 16 color or less, then result image will have + 4 bpp indexed pixel format. If color table contains more than 16 colors, then result image will + have 8 bpp indexed pixel format. + + By default the property is initialized with default 16 colors, which are: + Black, Dark Blue, Dark Green, Dark Cyan, Dark Red, Dark Magenta, Dark Khaki, Light Gray, + Gray, Blue, Green, Cyan, Red, Magenta, Yellow and White. + + + Color table length must be in the [2, 256] range. + + + + + Use color caching during color dithering or not. + + + The property specifies if internal cache of already processed colors should be used or not. + For each pixel in the original image the color dithering routine does search in target color palette to find + the best matching color. To avoid doing the search again and again for already processed colors, the class may + use internal dictionary which maps colors of original image to indexes in target color palette. + + + The property provides a trade off. On one hand it may speedup color dithering routine, but on another + hand it increases memory usage. Also cache usage may not be efficient for very small target color tables. + + Default value is set to . + + + + + + Initializes a new instance of the class. + + + Diffusion coefficients (see + for more information). + + + + + Do error diffusion. + + + Error value of red component. + Error value of green component. + Error value of blue component. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized by base class. + + + + + Diffusion coefficients. + + + Set of coefficients, which are used for error diffusion to + pixel's neighbors. + + + + + Initializes a new instance of the class. + + + + + + Color quantization tools. + + + The class contains methods aimed to simplify work with color quantization + algorithms implementing interface. Using its methods it is possible + to calculate reduced color palette for the specified image or reduce colors to the specified number. + + Sample usage: + + // instantiate the images' color quantization class + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // get 16 color palette for a given image + Color[] colorTable = ciq.CalculatePalette( image, 16 ); + + // ... or just reduce colors in the specified image + Bitmap newImage = ciq.ReduceColors( image, 16 ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Color quantization algorithm to use for processing images. + + + + + Calculate reduced color palette for the specified image. + + + Image to calculate palette for. + Palette size to calculate. + + Return reduced color palette for the specified image. + + See for details. + + + + + Calculate reduced color palette for the specified image. + + + Image to calculate palette for. + Palette size to calculate. + + Return reduced color palette for the specified image. + + The method processes the specified image and feeds color value of each pixel + to the specified color quantization algorithm. Finally it returns color palette built by + that algorithm. + + Unsupported format of the source image - it must 24 or 32 bpp color image. + + + + + Create an image with reduced number of colors. + + + Source image to process. + Number of colors to get in the output image, [2, 256]. + + Returns image with reduced number of colors. + + See for details. + + + + + Create an image with reduced number of colors. + + + Source image to process. + Number of colors to get in the output image, [2, 256]. + + Returns image with reduced number of colors. + + The method creates an image, which looks similar to the specified image, but contains + reduced number of colors. First, target color palette is calculated using + method and then a new image is created, where pixels from the given source image are substituted by + best matching colors from calculated color table. + + The output image has 4 bpp or 8 bpp indexed pixel format depending on the target palette size - + 4 bpp for palette size 16 or less; 8 bpp otherwise. + + + Unsupported format of the source image - it must 24 or 32 bpp color image. + Invalid size of the target color palette. + + + + + Create an image with reduced number of colors using the specified palette. + + + Source image to process. + Target color palette. Must contatin 2-256 colors. + + Returns image with reduced number of colors. + + See for details. + + + + + Create an image with reduced number of colors using the specified palette. + + + Source image to process. + Target color palette. Must contatin 2-256 colors. + + Returns image with reduced number of colors. + + The method creates an image, which looks similar to the specified image, but contains + reduced number of colors. Is substitutes every pixel of the source image with the closest matching color + in the specified paletter. + + The output image has 4 bpp or 8 bpp indexed pixel format depending on the target palette size - + 4 bpp for palette size 16 or less; 8 bpp otherwise. + + + Unsupported format of the source image - it must 24 or 32 bpp color image. + Invalid size of the target color palette. + + + + + Color quantization algorithm used by this class to build color palettes for the specified images. + + + + + + Use color caching during color reduction or not. + + + The property has effect only for methods like and + specifies if internal cache of already processed colors should be used or not. For each pixel in the original + image the color reduction routine does search in target color palette to find the best matching color. + To avoid doing the search again and again for already processed colors, the class may use internal dictionary + which maps colors of original image to indexes in target color palette. + + + The property provides a trade off. On one hand it may speedup color reduction routine, but on another + hand it increases memory usage. Also cache usage may not be efficient for very small target color tables. + + Default value is set to . + + + + + + Color dithering using Floyd-Steinberg error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Floyd-Steinberg + coefficients. Error is diffused on 4 neighbor pixels with the next coefficients: + + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 16 colors table + Color[] colorTable = ciq.CalculatePalette( image, 16 ); + // create dithering routine + FloydSteinbergColorDithering dithering = new FloydSteinbergColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Interface which is implemented by different color quantization algorithms. + + + The interface defines set of methods, which are to be implemented by different + color quantization algorithms - algorithms which are aimed to provide reduced color table/palette + for a color image. + + See documentation to particular implementation of the interface for additional information + about the algorithm. + + + + + + Process color by a color quantization algorithm. + + + Color to process. + + Depending on particular implementation of interface, + this method may simply process the specified color or store it in internal list for + later color palette calculation. + + + + + Get palette of the specified size. + + + Palette size to return. + + Returns reduced color palette for the accumulated/processed colors. + + The method must be called after continuously calling method and + returns reduced color palette for colors accumulated/processed so far. + + + + + Clear internals of the algorithm, like accumulated color table, etc. + + + The methods resets internal state of a color quantization algorithm returning + it to initial state. + + + + + Color dithering using Jarvis, Judice and Ninke error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Jarvis-Judice-Ninke coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 7 | 5 | + | 3 | 5 | 7 | 5 | 3 | + | 1 | 3 | 5 | 3 | 1 | + + / 48 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 32 colors table + Color[] colorTable = ciq.CalculatePalette( image, 32 ); + // create dithering routine + JarvisJudiceNinkeColorDithering dithering = new JarvisJudiceNinkeColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Median cut color quantization algorithm. + + + The class implements median cut + color quantization algorithm. + + See also class, which may simplify processing of images. + + Sample usage: + + // create the color quantization algorithm + IColorQuantizer quantizer = new MedianCutQuantizer( ); + // process colors (taken from image for example) + for ( int i = 0; i < pixelsToProcess; i++ ) + { + quantizer.AddColor( /* pixel color */ ); + } + // get palette reduced to 16 colors + Color[] palette = quantizer.GetPalette( 16 ); + + + + + + + + + Add color to the list of processed colors. + + + Color to add to the internal list. + + The method adds the specified color into internal list of processed colors. The list + is used later by method to build reduced color table of the specified size. + + + + + + Get paletter of the specified size. + + + Palette size to get. + + Returns reduced palette of the specified size, which covers colors processed so far. + + The method must be called after continuously calling method and + returns reduced color palette for colors accumulated/processed so far. + + + + + Clear internal state of the color quantization algorithm by clearing the list of colors + so far processed. + + + + + + Color dithering with a thresold matrix (ordered dithering). + + + The class implements ordered color dithering as described on + Wikipedia. + The algorithm achieves dithering by applying a threshold map on + the pixels displayed, causing some of the pixels to be rendered at a different color, depending on + how far in between the color is of available color entries. + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 256 colors table + Color[] colorTable = ciq.CalculatePalette( image, 256 ); + // create dithering routine + OrderedColorDithering dithering = new OrderedColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Threshold matrix (see property). + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Perform color dithering for the specified image. + + + Source image to do color dithering for. + + Returns color dithered image. See for information about format of + the result image. + + Unsupported pixel format of the source image. It must 24 or 32 bpp color image. + + + + + Threshold matrix - values to add source image's values. + + + The property keeps a threshold matrix, which is applied to values of a source image + to dither. By adding these values to the source image the algorithm produces the effect when pixels + of the same color in source image may have different color in the result image (which depends on pixel's + position). This threshold map is also known as an index matrix or Bayer matrix. + + By default the property is inialized with the below matrix: + + 2 18 6 22 + 26 10 30 14 + 8 24 4 20 + 32 16 28 12 + + + + + + + + Color table to use for image dithering. Must contain 2-256 colors. + + + Color table size determines format of the resulting image produced by this + image processing routine. If color table contains 16 color or less, then result image will have + 4 bpp indexed pixel format. If color table contains more than 16 colors, then result image will + have 8 bpp indexed pixel format. + + By default the property is initialized with default 16 colors, which are: + Black, Dark Blue, Dark Green, Dark Cyan, Dark Red, Dark Magenta, Dark Khaki, Light Gray, + Gray, Blue, Green, Cyan, Red, Magenta, Yellow and White. + + + Color table length must be in the [2, 256] range. + + + + + Use color caching during color dithering or not. + + + The property specifies if internal cache of already processed colors should be used or not. + For each pixel in the original image the color dithering routine does search in target color palette to find + the best matching color. To avoid doing the search again and again for already processed colors, the class may + use internal dictionary which maps colors of original image to indexes in target color palette. + + + The property provides a trade off. On one hand it may speedup color dithering routine, but on another + hand it increases memory usage. Also cache usage may not be efficient for very small target color tables. + + Default value is set to . + + + + + + Color dithering using Sierra error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Sierra coefficients. Error is diffused + on 10 neighbor pixels with next coefficients: + + | * | 5 | 3 | + | 2 | 4 | 5 | 4 | 2 | + | 2 | 3 | 2 | + + / 32 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create dithering routine (use default color table) + SierraColorDithering dithering = new SierraColorDithering( ); + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Color dithering using Stucki error diffusion. + + + The image processing routine represents color dithering algorithm, which is based on + error diffusion dithering with Stucki coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + | 1 | 2 | 4 | 2 | 1 | + + / 42 + + + The image processing routine accepts 24/32 bpp color images for processing. As a result this routine + produces 4 bpp or 8 bpp indexed image, which depends on size of the specified + color table - 4 bpp result for + color tables with 16 colors or less; 8 bpp result for larger color tables. + + Sample usage: + + // create color image quantization routine + ColorImageQuantizer ciq = new ColorImageQuantizer( new MedianCutQuantizer( ) ); + // create 64 colors table + Color[] colorTable = ciq.CalculatePalette( image, 64 ); + // create dithering routine + StuckiColorDithering dithering = new StuckiColorDithering( ); + dithering.ColorTable = colorTable; + // apply the dithering routine + Bitmap newImage = dithering.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + RGB components. + + + The class encapsulates RGB color components. + PixelFormat.Format24bppRgb + actually means BGR format. + + + + + + Index of red component. + + + + + Index of green component. + + + + + Index of blue component. + + + + + Index of alpha component for ARGB images. + + + + + Red component. + + + + + Green component. + + + + + Blue component. + + + + + Alpha component. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Red component. + Green component. + Blue component. + + + + + Initializes a new instance of the class. + + + Red component. + Green component. + Blue component. + Alpha component. + + + + + Initializes a new instance of the class. + + + Initialize from specified color. + + + + + Color value of the class. + + + + + HSL components. + + + The class encapsulates HSL color components. + + + + + Hue component. + + + Hue is measured in the range of [0, 359]. + + + + + Saturation component. + + + Saturation is measured in the range of [0, 1]. + + + + + Luminance value. + + + Luminance is measured in the range of [0, 1]. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Hue component. + Saturation component. + Luminance component. + + + + + Convert from RGB to HSL color space. + + + Source color in RGB color space. + Destination color in HSL color space. + + See HSL and HSV Wiki + for information about the algorithm to convert from RGB to HSL. + + + + + Convert from RGB to HSL color space. + + + Source color in RGB color space. + + Returns instance, which represents converted color value. + + + + + Convert from HSL to RGB color space. + + + Source color in HSL color space. + Destination color in RGB color space. + + + + + Convert the color to RGB color space. + + + Returns instance, which represents converted color value. + + + + + YCbCr components. + + + The class encapsulates YCbCr color components. + + + + + Index of Y component. + + + + + Index of Cb component. + + + + + Index of Cr component. + + + + + Y component. + + + + + Cb component. + + + + + Cr component. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Y component. + Cb component. + Cr component. + + + + + Convert from RGB to YCbCr color space (Rec 601-1 specification). + + + Source color in RGB color space. + Destination color in YCbCr color space. + + + + + Convert from RGB to YCbCr color space (Rec 601-1 specification). + + + Source color in RGB color space. + + Returns instance, which represents converted color value. + + + + + Convert from YCbCr to RGB color space. + + + Source color in YCbCr color space. + Destination color in RGB color space. + + + + + Convert the color to RGB color space. + + + Returns instance, which represents converted color value. + + + + + Filtering of frequencies outside of specified range in complex Fourier + transformed image. + + + The filer keeps only specified range of frequencies in complex + Fourier transformed image. The rest of frequencies are zeroed. + + Sample usage: + + // create complex image + ComplexImage complexImage = ComplexImage.FromBitmap( image ); + // do forward Fourier transformation + complexImage.ForwardFourierTransform( ); + // create filter + FrequencyFilter filter = new FrequencyFilter( new IntRange( 20, 128 ) ); + // apply filter + filter.Apply( complexImage ); + // do backward Fourier transformation + complexImage.BackwardFourierTransform( ); + // get complex image as bitmat + Bitmap fourierImage = complexImage.ToBitmap( ); + + + Initial image: + + Fourier image: + + + + + + + Image processing filter, which operates with Fourier transformed + complex image. + + + The interface defines the set of methods, which should be + provided by all image processing filter, which operate with Fourier + transformed complex image. + + + + + Apply filter to complex image. + + + Complex image to apply filter to. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Range of frequencies to keep. + + + + + Apply filter to complex image. + + + Complex image to apply filter to. + + The source complex image should be Fourier transformed. + + + + + Range of frequencies to keep. + + + The range specifies the range of frequencies to keep. Values is frequencies + outside of this range are zeroed. + + Default value is set to [0, 1024]. + + + + + Complex image. + + + The class is used to keep image represented in complex numbers sutable for Fourier + transformations. + + Sample usage: + + // create complex image + ComplexImage complexImage = ComplexImage.FromBitmap( image ); + // do forward Fourier transformation + complexImage.ForwardFourierTransform( ); + // get complex image as bitmat + Bitmap fourierImage = complexImage.ToBitmap( ); + + + Initial image: + + Fourier image: + + + + + + + Initializes a new instance of the class. + + + Image width. + Image height. + + The constractor is protected, what makes it imposible to instantiate this + class directly. To create an instance of this class or + method should be used. + + + + + Clone the complex image. + + + Returns copy of the complex image. + + + + + Create complex image from grayscale bitmap. + + + Source grayscale bitmap (8 bpp indexed). + + Returns an instance of complex image. + + The source image has incorrect pixel format. + Image width and height should be power of 2. + + + + + Create complex image from grayscale bitmap. + + + Source image data (8 bpp indexed). + + Returns an instance of complex image. + + The source image has incorrect pixel format. + Image width and height should be power of 2. + + + + + Convert complex image to bitmap. + + + Returns grayscale bitmap. + + + + + Applies forward fast Fourier transformation to the complex image. + + + + + + Applies backward fast Fourier transformation to the complex image. + + + + + + Image width. + + + + + + Image height. + + + + + + Status of the image - Fourier transformed or not. + + + + + + Complex image's data. + + + Return's 2D array of [height, width] size, which keeps image's + complex data. + + + + + Skew angle checker for scanned documents. + + + The class implements document's skew checking algorithm, which is based + on Hough line transformation. The algorithm + is based on searching for text base lines - black line of text bottoms' followed + by white line below. + + The routine supposes that a white-background document is provided + with black letters. The algorithm is not supposed for any type of objects, but for + document images with text. + + The range of angles to detect is controlled by property. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create instance of skew checker + DocumentSkewChecker skewChecker = new DocumentSkewChecker( ); + // get documents skew angle + double angle = skewChecker.GetSkewAngle( documentImage ); + // create rotation filter + RotateBilinear rotationFilter = new RotateBilinear( -angle ); + rotationFilter.FillColor = Color.White; + // rotate image applying the filter + Bitmap rotatedImage = rotationFilter.Apply( documentImage ); + + + Initial image: + + Deskewed image: + + + + + + + + + Initializes a new instance of the class. + + + + + Get skew angle of the provided document image. + + + Document's image to get skew angle of. + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's image to get skew angle of. + Image's rectangle to process (used to exclude processing of + regions, which are not relevant to skew detection). + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's image data to get skew angle of. + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's image data to get skew angle of. + Image's rectangle to process (used to exclude processing of + regions, which are not relevant to skew detection). + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's unmanaged image to get skew angle of. + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Get skew angle of the provided document image. + + + Document's unmanaged image to get skew angle of. + Image's rectangle to process (used to exclude processing of + regions, which are not relevant to skew detection). + + Returns document's skew angle. If the returned angle equals to -90, + then document skew detection has failed. + + Unsupported pixel format of the source image. + + + + + Steps per degree, [1, 10]. + + + The value defines quality of Hough transform and its ability to detect + line slope precisely. + + Default value is set to 1. + + + + + + Maximum skew angle to detect, [0, 45] degrees. + + + The value sets maximum document's skew angle to detect. + Document's skew angle can be as positive (rotated counter clockwise), as negative + (rotated clockwise). So setting this value to 25, for example, will lead to + [-25, 25] degrees detection range. + + Scanned documents usually have skew in the [-20, 20] degrees range. + + Default value is set to 30. + + + + + + Minimum angle to detect skew in degrees. + + + The property is deprecated and setting it has not any effect. + Use property instead. + + + + + Maximum angle to detect skew in degrees. + + + The property is deprecated and setting it has not any effect. + Use property instead. + + + + + Radius for searching local peak value, [1, 10]. + + + The value determines radius around a map's value, which is analyzed to determine + if the map's value is a local maximum in specified area. + + Default value is set to 4. + + + + + Drawing primitives. + + + The class allows to do drawing of some primitives directly on + locked image data or unmanaged image. + + All methods of this class support drawing only on color 24/32 bpp images and + on grayscale 8 bpp indexed images. + + When it comes to alpha blending for 24/32 bpp images, all calculations are done + as described on Wikipeadia + (see "over" operator). + + + + + + Fill rectangle on the specified image. + + + Source image data to draw on. + Rectangle's coordinates to fill. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Fill rectangle on the specified image. + + + Source image to draw on. + Rectangle's coordinates to fill. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Draw rectangle on the specified image. + + + Source image data to draw on. + Rectangle's coordinates to draw. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Draw rectangle on the specified image. + + + Source image to draw on. + Rectangle's coordinates to draw. + Rectangle's color. + + The source image has incorrect pixel format. + + + + + Draw a line on the specified image. + + + Source image data to draw on. + The first point to connect. + The second point to connect. + Line's color. + + The source image has incorrect pixel format. + + + + + Draw a line on the specified image. + + + Source image to draw on. + The first point to connect. + The second point to connect. + Line's color. + + The source image has incorrect pixel format. + + + + + Draw a polygon on the specified image. + + + Source image data to draw on. + Points of the polygon to draw. + Polygon's color. + + The method draws a polygon by connecting all points from the + first one to the last one and then connecting the last point with the first one. + + + + + + Draw a polygon on the specified image. + + + Source image to draw on. + Points of the polygon to draw. + Polygon's color. + + The method draws a polygon by connecting all points from the + first one to the last one and then connecting the last point with the first one. + + + + + + Draw a polyline on the specified image. + + + Source image data to draw on. + Points of the polyline to draw. + polyline's color. + + The method draws a polyline by connecting all points from the + first one to the last one. Unlike + method, this method does not connect the last point with the first one. + + + + + + Draw a polyline on the specified image. + + + Source image to draw on. + Points of the polyline to draw. + polyline's color. + + The method draws a polyline by connecting all points from the + first one to the last one. Unlike + method, this method does not connect the last point with the first one. + + + + + + Unsupported image format exception. + + + The unsupported image format exception is thrown in the case when + user passes an image of certain format to an image processing routine, which does + not support the format. Check documentation of the image processing routine + to discover which formats are supported by the routine. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Invalid image properties exception. + + + The invalid image properties exception is thrown in the case when + user provides an image with certain properties, which are treated as invalid by + particular image processing routine. Another case when this exception is + thrown is the case when user tries to access some properties of an image (or + of a recently processed image by some routine), which are not valid for that image. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + Name of the invalid parameter. + + + + + Block matching implementation with the exhaustive search algorithm. + + + The class implements exhaustive search block matching algorithm + (see documentation for for information about + block matching algorithms). Exhaustive search algorithm tests each possible + location of block within search window trying to find a match with minimal + difference. + + Because of the exhaustive nature of the algorithm, high performance + should not be expected in the case if big number of reference points is provided + or big block size and search radius are specified. Minimizing theses values increases + performance. But too small block size and search radius may affect quality. + + The class processes only grayscale (8 bpp indexed) and color (24 bpp) images. + + Sample usage: + + // collect reference points using corners detector (for example) + SusanCornersDetector scd = new SusanCornersDetector( 30, 18 ); + List<IntPoint> points = scd.ProcessImage( sourceImage ); + + // create block matching algorithm's instance + ExhaustiveBlockMatching bm = new ExhaustiveBlockMatching( 8, 12 ); + // process images searching for block matchings + List<BlockMatch> matches = bm.ProcessImage( sourceImage, points, searchImage ); + + // draw displacement vectors + BitmapData data = sourceImage.LockBits( + new Rectangle( 0, 0, sourceImage.Width, sourceImage.Height ), + ImageLockMode.ReadWrite, sourceImage.PixelFormat ); + + foreach ( BlockMatch match in matches ) + { + // highlight the original point in source image + Drawing.FillRectangle( data, + new Rectangle( match.SourcePoint.X - 1, match.SourcePoint.Y - 1, 3, 3 ), + Color.Yellow ); + // draw line to the point in search image + Drawing.Line( data, match.SourcePoint, match.MatchPoint, Color.Red ); + + // check similarity + if ( match.Similarity > 0.98f ) + { + // process block with high similarity somehow special + } + } + + sourceImage.UnlockBits( data ); + + + Test image 1 (source): + + Test image 2 (search): + + Result image: + + + + + + + Block matching interface. + + + The interface specifies set of methods, which should be implemented by different + block matching algorithms. + + Block matching algorithms work with two images - source and search image - and + a set of reference points. For each provided reference point, the algorithm takes + a block from source image (reference point is a coordinate of block's center) and finds + the best match for it in search image providing its coordinate (search is done within + search window of specified size). In other words, block matching algorithm tries to + find new coordinates in search image of specified reference points in source image. + + + + + + + Process images matching blocks between them. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. + + + + + Process images matching blocks between them. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. + + + + + Process images matching blocks between them. + + + Source unmanaged image with reference points. + List of reference points to be matched. + Unmanaged image in which the reference points will be looked for. + + Returns list of found block matches. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Block size to search for. + Search radius. + + + + + Process images matching blocks between hem. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. The list is sorted by similarity + of found matches in descending order. + + Source and search images sizes must match. + Source images can be grayscale (8 bpp indexed) or color (24 bpp) image only. + Source and search images must have same pixel format. + + + + + Process images matching blocks between them. + + + Source image with reference points. + List of reference points to be matched. + Image in which the reference points will be looked for. + + Returns list of found block matches. The list is sorted by similarity + of found matches in descending order. + + Source and search images sizes must match. + Source images can be grayscale (8 bpp indexed) or color (24 bpp) image only. + Source and search images must have same pixel format. + + + + + Process images matching blocks between them. + + + Source unmanaged image with reference points. + List of reference points to be matched. + Unmanaged image in which the reference points will be looked for. + + Returns list of found block matches. The list is sorted by similarity + of found matches in descending order. + + Source and search images sizes must match. + Source images can be grayscale (8 bpp indexed) or color (24 bpp) image only. + Source and search images must have same pixel format. + + + + + Search radius. + + + The value specifies the shift from reference point in all + four directions, used to search for the best matching block. + + Default value is set to 12. + + + + + + Block size to search for. + + + The value specifies block size to search for. For each provided + reference pointer, a square block of this size is taken from the source image + (reference point becomes the coordinate of block's center) and the best match + is searched in second image within specified search + radius. + + Default value is set to 16. + + + + + + Similarity threshold, [0..1]. + + + The property sets the minimal acceptable similarity between blocks + in source and search images. If similarity is lower than this value, + then the candidate block in search image is not treated as a match for the block + in source image. + + + Default value is set to 0.9. + + + + + + Exhaustive template matching. + + + The class implements exhaustive template matching algorithm, + which performs complete scan of source image, comparing each pixel with corresponding + pixel of template. + + The class processes only grayscale 8 bpp and color 24 bpp images. + + Sample usage: + + // create template matching algorithm's instance + ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching( 0.9f ); + // find all matchings with specified above similarity + TemplateMatch[] matchings = tm.ProcessImage( sourceImage, templateImage ); + // highlight found matchings + BitmapData data = sourceImage.LockBits( + new Rectangle( 0, 0, sourceImage.Width, sourceImage.Height ), + ImageLockMode.ReadWrite, sourceImage.PixelFormat ); + foreach ( TemplateMatch m in matchings ) + { + Drawing.Rectangle( data, m.Rectangle, Color.White ); + // do something else with matching + } + sourceImage.UnlockBits( data ); + + + The class also can be used to get similarity level between two image of the same + size, which can be useful to get information about how different/similar are images: + + // create template matching algorithm's instance + // use zero similarity to make sure algorithm will provide anything + ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching( 0 ); + // compare two images + TemplateMatch[] matchings = tm.ProcessImage( image1, image2 ); + // check similarity level + if ( matchings[0].Similarity > 0.95f ) + { + // do something with quite similar images + } + + + + + + + + Template matching algorithm's interface. + + + The interface specifies set of methods, which should be implemented by different + template matching algorithms - algorithms, which search for the given template in specified + image. + + + + + Process image looking for matchings with specified template. + + + Source image to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found matchings. + + + + + Process image looking for matchings with specified template. + + + Source image data to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found matchings. + + + + + Process image looking for matchings with specified template. + + + Unmanaged source image to process. + Unmanaged template image to search for. + Rectangle in source image to search template for. + + Returns array of found matchings. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Similarity threshold. + + + + + Process image looking for matchings with specified template. + + + Source image to process. + Template image to search for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Source image to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Source image data to process. + Template image to search for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Source image data to process. + Template image to search for. + Rectangle in source image to search template for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Unmanaged source image to process. + Unmanaged template image to search for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than source image. + + + + + Process image looking for matchings with specified template. + + + Unmanaged source image to process. + Unmanaged template image to search for. + Rectangle in source image to search template for. + + Returns array of found template matches. The array is sorted by similarity + of found matches in descending order. + + The source image has incorrect pixel format. + Template image is bigger than search zone. + + + + + Similarity threshold, [0..1]. + + + The property sets the minimal acceptable similarity between template + and potential found candidate. If similarity is lower than this value, + then object is not treated as matching with template. + + + Default value is set to 0.9. + + + + + + Add fillter - add pixel values of two images. + + + The add filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the sum value of corresponding pixels from provided images (if sum is greater + than maximum allowed value, 255 or 65535, then it is truncated to that maximum). + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Add filter = new Add( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Base class for filters, which operate with two images of the same size and format and + may be applied directly to the source image. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing or + applied directly to the source image without changing its size and pixel format. + + The base class is aimed for such type of filters, which require additional image + to process the source image. The additional image is set by + or property and must have the same size and pixel format + as source image. See documentation of particular inherited class for information + about overlay image purpose. + + + + + + + Base class for filters, which may be applied directly to the source image. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing or + applied directly to the source image without changing its size and pixel format. + + + + + + Image processing filter interface. + + + The interface defines the set of methods, which should be + provided by all image processing filters. Methods of this interface + keep the source image unchanged and returt the result of image processing + filter as new image. + + + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image. + + + Image in unmanaged memory. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image. + + + Source image to be processed. + Destination image to store filter's result. + + The method keeps the source image unchanged and puts the + the result of image processing filter into destination image. + + The destination image must have the size, which is expected by + the filter. + + + In the case if destination image has incorrect + size. + + + + + In-place filter interface. + + + The interface defines the set of methods, which should be + implemented by filters, which are capable to do image processing + directly on the source image. Not all image processing filters + can be applied directly to the source image - only filters, which do not + change image's dimension and pixel format, can be applied directly to the + source image. + + + + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image in unmanaged memory. + + + Image in unmanaged memory. + + The method applies filter directly to the provided image data. + + + + + Interface which provides information about image processing filter. + + + The interface defines set of properties, which provide different type + of information about image processing filters implementing interface + or another filter's interface. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + Keys of this dictionary defines all pixel formats which are supported for source + images, but corresponding values define what will be resulting pixel format. For + example, if value Format16bppGrayScale + is put into the dictionary with the + Format48bppRgb key, then it means + that the filter accepts color 48 bpp image and produces 16 bpp grayscale image as a result + of image processing. + + The information provided by this property is mostly actual for filters, which can not + be applied directly to the source image, but provide new image a result. Since usually all + filters implement interface, the information provided by this property + (if filter also implements interface) may be useful to + user to resolve filter's capabilities. + + Sample usage: + + // get filter's IFilterInformation interface + IFilterInformation info = (IFilterInformation) filter; + // check if the filter supports our image's format + if ( info.FormatTranslations.ContainsKey( image.PixelFormat ) + { + // format is supported, check what will be result of image processing + PixelFormat resultingFormat = info.FormatTranslations[image.PixelFormat]; + } + /// + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + + Source and overlay images have different pixel formats and/or size. + Overlay image is not set. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + Overlay image size and pixel format is checked by this base class, before + passing execution to inherited class. + + + + + Overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Unmanaged overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Difference filter - get the difference between overlay and source images. + + + The difference filter takes two images (source and + overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to absolute difference between corresponding pixels from provided images. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + In the case if images with alpha channel are used (32 or 64 bpp), visualization + of the result image may seem a bit unexpected - most probably nothing will be seen + (in the case if image is displayed according to its alpha channel). This may be + caused by the fact that after differencing the entire alpha channel will be zeroed + (zero difference between alpha channels), what means that the resulting image will be + 100% transparent. + + Sample usage: + + // create filter + Difference filter = new Difference( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Intersect filter - get MIN of pixels in two images. + + + The intersect filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the minimum value of corresponding pixels from provided images. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Intersect filter = new Intersect( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Merge filter - get MAX of pixels in two images. + + + The merge filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the maximum value of corresponding pixels from provided images. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Merge filter = new Merge( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Morph filter. + + + The filter combines two images by taking + specified percent of pixels' intensities from source + image and the rest from overlay image. For example, if the + source percent value is set to 0.8, then each pixel + of the result image equals to 0.8 * source + 0.2 * overlay, where source + and overlay are corresponding pixels' values in source and overlay images. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + Morph filter = new Morph( overlayImage ); + filter.SourcePercent = 0.75; + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Percent of source image to keep, [0, 1]. + + + The property specifies the percentage of source pixels' to take. The + rest is taken from an overlay image. + + + + + Move towards filter. + + + The result of this filter is an image, which is based on source image, + but updated in the way to decrease diffirence with overlay image - source image is + moved towards overlay image. The update equation is defined in the next way: + res = src + Min( Abs( ovr - src ), step ) * Sign( ovr - src ). + + The bigger is step size value the more resulting + image will look like overlay image. For example, in the case if step size is equal + to 255 (or 65535 for images with 16 bits per channel), the resulting image will be + equal to overlay image regardless of source image's pixel values. In the case if step + size is set to 1, the resulting image will very little differ from the source image. + But, in the case if the filter is applied repeatedly to the resulting image again and + again, it will become equal to overlay image in maximum 255 (65535 for images with 16 + bits per channel) iterations. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + MoveTowards filter = new MoveTowards( overlayImage, 20 ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + Initializes a new instance of the class + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Overlay image. + Step size. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + Step size. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Step size, [0, 65535]. + + + + The property defines the maximum amount of changes per pixel in the source image. + + Default value is set to 1. + + + + + + Stereo anaglyph filter. + + + The image processing filter produces stereo anaglyph images which are + aimed to be viewed through anaglyph glasses with red filter over the left eye and + cyan over the right. + + + + The stereo image is produced by combining two images of the same scene taken + from a bit different points. The right image must be provided to the filter using + property, but the left image must be provided to + method, which creates the anaglyph image. + + The filter accepts 24 bpp color images for processing. + + See enumeration for the list of supported anaglyph algorithms. + + Sample usage: + + // create filter + StereoAnaglyph filter = new StereoAnaglyph( ); + // set right image as overlay + filter.Overlay = rightImage + // apply the filter (providing left image) + Bitmap resultImage = filter.Apply( leftImage ); + + + Source image (left): + + Overlay image (right): + + Result image: + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Algorithm to use for creating anaglyph images. + + + + + Process the filter on the specified image. + + + Source image data (left image). + Overlay image data (right image). + + + + + Algorithm to use for creating anaglyph images. + + + Default value is set to . + + + + + Format translations dictionary. + + + + + Enumeration of algorithms for creating anaglyph images. + + + See anaglyph methods comparison for + descipton of different algorithms. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.299*Rl+0.587*Gl+0.114*Bl; + Ga=0; + Ba=0.299*Rr+0.587*Gr+0.114*Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.299*Rl+0.587*Gl+0.114*Bl; + Ga=0.299*Rr+0.587*Gr+0.114*Br; + Ba=0.299*Rr+0.587*Gr+0.114*Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=Rl; + Ga=Gr; + Ba=Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.299*Rl+0.587*Gl+0.114*Bl; + Ga=Gr; + Ba=Br. + + + + + + Creates anaglyph image using the below calculations: + + Ra=0.7*Gl+0.3*Bl; + Ga=Gr; + Ba=Br. + + + + + + Subtract filter - subtract pixel values of two images. + + + The subtract filter takes two images (source and overlay images) + of the same size and pixel format and produces an image, where each pixel equals + to the difference value of corresponding pixels from provided images (if difference is less + than minimum allowed value, 0, then it is truncated to that minimum value). + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Subtract filter = new Subtract( overlayImage ); + // apply the filter + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Overlay image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Overlay image + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + + + Calculate difference between two images and threshold it. + + + The filter produces similar result as applying filter and + then filter - thresholded difference between two images. Result of this + image processing routine may be useful in motion detection applications or finding areas of significant + difference. + + The filter accepts 8 and 24/32color images for processing. + In the case of color images, the image processing routine differences sum over 3 RGB channels (Manhattan distance), i.e. + |diffR| + |diffG| + |diffB|. + + + Sample usage: + + // create filter + ThresholdedDifference filter = new ThresholdedDifference( 60 ); + // apply the filter + filter.OverlayImage = backgroundImage; + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Background image: + + Result image: + + + + + + + + + Base class for filters, which operate with two images of the same size and format and + produce new image as a result. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing. + + The base class is aimed for such type of filters, which require additional image + to process the source image. The additional image is set by + or property and must have the same size and pixel format + as source image. See documentation of particular inherited class for information + about overlay image purpose. + + + + + + + Base class for filters, which produce new image of the same size as a + result of image processing. + + + The abstract class is the base class for all filters, which + do image processing creating new image with the same size as source. + Filters based on this class cannot be applied directly to the source + image, which is kept unchanged. + + The base class itself does not define supported pixel formats of source + image and resulting pixel formats of destination image. Filters inheriting from + this base class, should specify supported pixel formats and their transformations + overriding abstract property. + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Overlay image. + + + + + Initializes a new instance of the class. + + + Unmanaged overlay image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + Destination image data + + Overlay image size and pixel format is checked by this base class, before + passing execution to inherited class. + + + + + Overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Unmanaged overlay image. + + + + The property sets an overlay image, which will be used as the second image required + to process source image. See documentation of particular inherited class for information + about overlay image purpose. + + + Overlay image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one overlay image is allowed: managed or unmanaged. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Difference threshold (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + Destination image data + + + + + Difference threshold. + + + The property specifies difference threshold. If difference between pixels of processing image + and overlay image is greater than this value, then corresponding pixel of result image is set to white; otherwise + black. + + + Default value is set to 15. + + + + + Number of pixels which were set to white in destination image during last image processing call. + + + The property may be useful to determine amount of difference between two images which, + for example, may be treated as amount of motion in motion detection applications, etc. + + + + + Format translations dictionary. + + + See for more information. + + + + + Calculate Euclidean difference between two images and threshold it. + + + The filter produces similar to , however it uses + Euclidean distance for finding difference between pixel values instead of Manhattan distance. Result of this + image processing routine may be useful in motion detection applications or finding areas of significant + difference. + + The filter accepts 8 and 24/32color images for processing. + + Sample usage: + + // create filter + ThresholdedEuclideanDifference filter = new ThresholdedEuclideanDifference( 60 ); + // apply the filter + filter.OverlayImage = backgroundImage; + Bitmap resultImage = filter.Apply( sourceImage ); + + + Source image: + + Background image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Difference threshold (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + Destination image data + + + + + Difference threshold. + + + The property specifies difference threshold. If difference between pixels of processing image + and overlay image is greater than this value, then corresponding pixel of result image is set to white; otherwise + black. + + + Default value is set to 15. + + + + + Number of pixels which were set to white in destination image during last image processing call. + + + The property may be useful to determine amount of difference between two images which, + for example, may be treated as amount of motion in motion detection applications, etc. + + + + + Format translations dictionary. + + + See for more information. + + + + + Adaptive thresholding using the internal image. + + + The image processing routine implements local thresholding technique described + by Derek Bradley and Gerhard Roth in the "Adaptive Thresholding Using the Integral Image" paper. + + + The brief idea of the algorithm is that every image's pixel is set to black if its brightness + is t percent lower (see ) than the average brightness + of surrounding pixels in the window of the specified size (see ), othwerwise it is set + to white. + + Sample usage: + + // create the filter + BradleyLocalThresholding filter = new BradleyLocalThresholding( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Window size to calculate average value of pixels for. + + + The property specifies window size around processing pixel, which determines number of + neighbor pixels to use for calculating their average brightness. + + Default value is set to 41. + + The value should be odd. + + + + + + Brightness difference limit between processing pixel and average value across neighbors. + + + The property specifies what is the allowed difference percent between processing pixel + and average brightness of neighbor pixels in order to be set white. If the value of the + current pixel is t percent (this property value) lower than the average then it is set + to black, otherwise it is set to white. + + Default value is set to 0.15. + + + + + + Format translations dictionary. + + + See for more information. + + + + + Iterative threshold search and binarization. + + + + The algorithm works in the following way: + + select any start threshold; + compute average value of Background (µB) and Object (µO) values: + 1) all pixels with a value that is below threshold, belong to the Background values; + 2) all pixels greater or equal threshold, belong to the Object values. + + calculate new thresghold: (µB + µO) / 2; + if |oldThreshold - newThreshold| is less than a given manimum allowed error, then stop iteration process + and create the binary image with the new threshold. + + + + For additional information see Digital Image Processing, Gonzalez/Woods. Ch.10 page:599. + + The filter accepts 8 and 16 bpp grayscale images for processing. + + Since the filter can be applied as to 8 bpp and to 16 bpp images, + the initial value of property should be set appropriately to the + pixel format. In the case of 8 bpp images the threshold value is in the [0, 255] range, but + in the case of 16 bpp images the threshold value is in the [0, 65535] range. + + Sample usage: + + // create filter + IterativeThreshold filter = new IterativeThreshold( 2, 128 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image (calculated threshold is 102): + + + + + + + + + + Threshold binarization. + + + The filter does image binarization using specified threshold value. All pixels + with intensities equal or higher than threshold value are converted to white pixels. All other + pixels with intensities below threshold value are converted to black pixels. + + The filter accepts 8 and 16 bpp grayscale images for processing. + + Since the filter can be applied as to 8 bpp and to 16 bpp images, + the value should be set appropriately to the pixel format. + In the case of 8 bpp images the threshold value is in the [0, 255] range, but in the case + of 16 bpp images the threshold value is in the [0, 65535] range. + + Sample usage: + + // create filter + Threshold filter = new Threshold( 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Base class for filters, which may be applied directly to the source image or its part. + + + The abstract class is the base class for all filters, which can + be applied to an image producing new image as a result of image processing or + applied directly to the source image (or its part) without changing its size and + pixel format. + + + + + + In-place partial filter interface. + + + The interface defines the set of methods, which should be + implemented by filters, which are capable to do image processing + directly on the source image. Not all image processing filters + can be applied directly to the source image - only filters, which do not + change image dimension and pixel format, can be applied directly to the + source image. + + The interface also supports partial image filtering, allowing to specify + image rectangle, which should be filtered. + + + + + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by filter. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by filter. + + The method applies filter directly to the provided image data. + + + + + Apply filter to an image in unmanaged memory. + + + Image in unmanaged memory. + Image rectangle for processing by filter. + + The method applies filter directly to the provided image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Threshold value. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Threshold value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + Default value is set to 128. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Minimum allowed error, that ends the iteration process. + + + + + Initializes a new instance of the class. + + + Minimum allowed error, that ends the iteration process. + Initial threshold value. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should + 8 bpp grayscale (indexed) or 16 bpp grayscale image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should + 8 bpp grayscale (indexed) or 16 bpp grayscale image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should + 8 bpp grayscale (indexed) or 16 bpp grayscale image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Minimum error, value when iterative threshold search is stopped. + + + Default value is set to 0. + + + + + Otsu thresholding. + + + The class implements Otsu thresholding, which is described in + N. Otsu, "A threshold selection method from gray-level histograms", IEEE Trans. Systems, + Man and Cybernetics 9(1), pp. 62–66, 1979. + + This implementation instead of minimizing the weighted within-class variance + does maximization of between-class variance, what gives the same result. The approach is + described in this presentation. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + OtsuThreshold filter = new OtsuThreshold( ); + // apply the filter + filter.ApplyInPlace( image ); + // check threshold value + byte t = filter.ThresholdValue; + // ... + + + Initial image: + + Result image (calculated threshold is 97): + + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + The property is read only and represents the value, which + was automaticaly calculated using Otsu algorithm. + + + + + Threshold using Simple Image Statistics (SIS). + + + The filter performs image thresholding calculating threshold automatically + using simple image statistics method. For each pixel: + + two gradients are calculated - ex = |I(x + 1, y) - I(x - 1, y)| and + |I(x, y + 1) - I(x, y - 1)|; + weight is calculated as maximum of two gradients; + sum of weights is updated (weightTotal += weight); + sum of weighted pixel values is updated (total += weight * I(x, y)). + + The result threshold is calculated as sum of weighted pixel values divided by sum of weight. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SISThreshold filter = new SISThreshold( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image (calculated threshold is 127): + + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Calculate binarization threshold for the given image. + + + Image to calculate binarization threshold for. + Rectangle to calculate binarization threshold for. + + Returns binarization threshold. + + The method is used to calculate binarization threshold only. The threshold + later may be applied to the image using image processing filter. + + Source pixel format is not supported by the routine. It should be + 8 bpp grayscale (indexed) image. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + The property is read only and represents the value, which + was automaticaly calculated using image statistics. + + + + + Base class for image resizing filters. + + + The abstract class is the base class for all filters, + which implement image rotation algorithms. + + + + + + Base class for filters, which may produce new image of different size as a + result of image processing. + + + The abstract class is the base class for all filters, which + do image processing creating new image of the size, which may differ from the + size of source image. Filters based on this class cannot be applied directly + to the source image, which is kept unchanged. + + The base class itself does not define supported pixel formats of source + image and resulting pixel formats of destination image. Filters inheriting from + this base class, should specify supported pixel formats and their transformations + overriding abstract property. + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + New image width. + + + + + New image height. + + + + + Initializes a new instance of the class. + + + Width of the new resized image. + Height of the new resize image. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Width of the new resized image. + + + + + + Height of the new resized image. + + + + + + Base class for image rotation filters. + + + The abstract class is the base class for all filters, + which implement rotating algorithms. + + + + + Rotation angle. + + + + + Keep image size or not. + + + + + Fill color. + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property to false. + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Rotation angle, [0, 360]. + + + + + Keep image size or not. + + + The property determines if source image's size will be kept + as it is or not. If the value is set to false, then the new image will have + new dimension according to rotation angle. If the valus is set to + true, then the new image will have the same size, which means that some parts + of the image may be clipped because of rotation. + + + + + + Fill color. + + + The fill color is used to fill areas of destination image, + which don't have corresponsing pixels in source image. + + + + + Base class for filters, which require source image backup to make them applicable to + source image (or its part) directly. + + + The base class is used for filters, which can not do + direct manipulations with source image. To make effect of in-place filtering, + these filters create a background copy of the original image (done by this + base class) and then do manipulations with it putting result back to the original + source image. + + The background copy of the source image is created only in the case of in-place + filtering. Otherwise background copy is not created - source image is processed and result is + put to destination image. + + The base class is for those filters, which support as filtering entire image, as + partial filtering of specified rectangle only. + + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Ordered dithering using Bayer matrix. + + + The filter represents filter initialized + with the next threshold matrix: + + byte[,] matrix = new byte[4, 4] + { + { 0, 192, 48, 240 }, + { 128, 64, 176, 112 }, + { 32, 224, 16, 208 }, + { 160, 96, 144, 80 } + }; + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + BayerDithering filter = new BayerDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Binarization with thresholds matrix. + + + Idea of the filter is the same as idea of filter - + change pixel value to white, if its intensity is equal or higher than threshold value, or + to black otherwise. But instead of using single threshold value for all pixel, the filter + uses matrix of threshold values. Processing image is divided to adjacent windows of matrix + size each. For pixels binarization inside of each window, corresponding threshold values are + used from specified threshold matrix. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create binarization matrix + byte[,] matrix = new byte[4, 4] + { + { 95, 233, 127, 255 }, + { 159, 31, 191, 63 }, + { 111, 239, 79, 207 }, + { 175, 47, 143, 15 } + }; + // create filter + OrderedDithering filter = new OrderedDithering( matrix ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Thresholds matrix. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Initializes a new instance of the class. + + + + + + Dithering using Burkes error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Burkes coefficients. Error is diffused + on 7 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + + / 32 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + BurkesDithering filter = new BurkesDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Base class for error diffusion dithering, where error is diffused to + adjacent neighbor pixels. + + + The class does error diffusion to adjacent neighbor pixels + using specified set of coefficients. These coefficients are represented by + 2 dimensional jugged array, where first array of coefficients is for + right-standing pixels, but the rest of arrays are for bottom-standing pixels. + All arrays except the first one should have odd number of coefficients. + + Suppose that error diffusion coefficients are represented by the next + jugged array: + + + int[][] coefficients = new int[2][] { + new int[1] { 7 }, + new int[3] { 3, 5, 1 } + }; + + + The above coefficients are used to diffuse error over the next neighbor + pixels (* marks current pixel, coefficients are placed to corresponding + neighbor pixels): + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + ErrorDiffusionToAdjacentNeighbors filter = new ErrorDiffusionToAdjacentNeighbors( + new int[3][] { + new int[2] { 5, 3 }, + new int[5] { 2, 4, 5, 4, 2 }, + new int[3] { 2, 3, 2 } + } ); + // apply the filter + filter.ApplyInPlace( image ); + + + + + + + Base class for error diffusion dithering. + + + The class is the base class for binarization algorithms based on + error diffusion. + + Binarization with error diffusion in its idea is similar to binarization based on thresholding + of pixels' cumulative value (see ). Each pixel is binarized based not only + on its own value, but on values of some surrounding pixels. During pixel's binarization, its binarization + error is distributed (diffused) to some neighbor pixels with some coefficients. This error diffusion + updates neighbor pixels changing their values, what affects their upcoming binarization. Error diffuses + only on unprocessed yet neighbor pixels, which are right and bottom pixels usually (in the case if image + processing is done from upper left corner to bottom right corner). Binarization error equals + to processing pixel value, if it is below threshold value, or pixel value minus 255 otherwise. + + The filter accepts 8 bpp grayscale images for processing. + + + + + + Current processing X coordinate. + + + + + Current processing Y coordinate. + + + + + Processing X start position. + + + + + Processing Y start position. + + + + + Processing X stop position. + + + + + Processing Y stop position. + + + + + Processing image's stride (line size). + + + + + Initializes a new instance of the class. + + + + + + Do error diffusion. + + + Current error value. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized in protected members. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Threshold value. + + + Default value is 128. + + + + + Format translations dictionary. + + + + + Initializes a new instance of the class. + + + Diffusion coefficients. + + + + + Do error diffusion. + + + Current error value. + Pointer to current processing pixel. + + All parameters of the image and current processing pixel's coordinates + are initialized by base class. + + + + + Diffusion coefficients. + + + Set of coefficients, which are used for error diffusion to + pixel's neighbors. + + + + + Initializes a new instance of the class. + + + + + + Dithering using Floyd-Steinberg error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Floyd-Steinberg + coefficients. Error is diffused on 4 neighbor pixels with next coefficients: + + + | * | 7 | + | 3 | 5 | 1 | + + / 16 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + FloydSteinbergDithering filter = new FloydSteinbergDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Dithering using Jarvis, Judice and Ninke error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Jarvis-Judice-Ninke coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 7 | 5 | + | 3 | 5 | 7 | 5 | 3 | + | 1 | 3 | 5 | 3 | 1 | + + / 48 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + JarvisJudiceNinkeDithering filter = new JarvisJudiceNinkeDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Dithering using Sierra error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Sierra coefficients. Error is diffused + on 10 neighbor pixels with next coefficients: + + | * | 5 | 3 | + | 2 | 4 | 5 | 4 | 2 | + | 2 | 3 | 2 | + + / 32 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SierraDithering filter = new SierraDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Dithering using Stucki error diffusion. + + + The filter represents binarization filter, which is based on + error diffusion dithering with Stucki coefficients. Error is diffused + on 12 neighbor pixels with next coefficients: + + | * | 8 | 4 | + | 2 | 4 | 8 | 4 | 2 | + | 1 | 2 | 4 | 2 | 1 | + + / 42 + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + StuckiDithering filter = new StuckiDithering( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Threshold binarization with error carry. + + + The filter is similar to filter in the way, + that it also uses threshold value for image binarization. Unlike regular threshold + filter, this filter uses cumulative pixel value in comparing with threshold value. + If cumulative pixel value is below threshold value, then image pixel becomes black. + If cumulative pixel value is equal or higher than threshold value, then image pixel + becomes white and cumulative pixel value is decreased by 255. In the beginning of each + image line the cumulative value is reset to 0. + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + Threshold filter = new Threshold( 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Threshold value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Threshold value. + + + Default value is 128. + + + + + Generic Bayer fileter image processing routine. + + + The class implements Bayer filter + routine, which creates color image out of grayscale image produced by image sensor built with + Bayer color matrix. + + This Bayer filter implementation is made generic by allowing user to specify used + Bayer pattern. This makes it slower. For optimized version + of the Bayer filter see class, which implements Bayer filter + specifically optimized for some well known patterns. + + The filter accepts 8 bpp grayscale images and produces 24 bpp RGB image. + + Sample usage: + + // create filter + BayerFilter filter = new BayerFilter( ); + // apply the filter + Bitmap rgbImage = filter.Apply( image ); + + + Source image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Specifies if demosaicing must be done or not. + + + The property specifies if color demosaicing must be done or not. + If the property is set to , then pixels of the result color image + are colored according to the Bayer pattern used, i.e. every pixel + of the source grayscale image is copied to corresponding color plane of the result image. + If the property is set to , then pixels of the result image + are set to color, which is obtained by averaging color components from the 3x3 window - pixel + itself plus 8 surrounding neighbors. + + Default value is set to . + + + + + + Specifies Bayer pattern used for decoding color image. + + + The property specifies 2x2 array of RGB color indexes, which set the + Bayer patter used for decoding color image. + + By default the property is set to: + + new int[2, 2] { { RGB.G, RGB.R }, { RGB.B, RGB.G } } + , + which corresponds to + + G R + B G + + pattern. + + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Set of Bayer patterns supported by . + + + + + Pattern:

+ G R
+ B G +
+
+ + + Pattern:

+ B G
+ G R +
+
+ + + Optimized Bayer fileter image processing routine. + + + The class implements Bayer filter + routine, which creates color image out of grayscale image produced by image sensor built with + Bayer color matrix. + + This class does all the same as class. However this version is + optimized for some well known patterns defined in enumeration. + Also this class processes images with even width and height only. Image size must be at least 2x2 pixels. + + + The filter accepts 8 bpp grayscale images and produces 24 bpp RGB image. + + Sample usage: + + // create filter + BayerFilter filter = new BayerFilter( ); + // apply the filter + Bitmap rgbImage = filter.Apply( image ); + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Bayer pattern of source images to decode. + + + The property specifies Bayer pattern of source images to be + decoded into color images. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Brightness adjusting in RGB color space. + + + The filter operates in RGB color space and adjusts + pixels' brightness by increasing every pixel's RGB values by the specified + adjust value. The filter is based on + filter and simply sets all input ranges to (0, 255-) and + all output range to (, 255) in the case if the adjust value is positive. + If the adjust value is negative, then all input ranges are set to + (-, 255 ) and all output ranges are set to + ( 0, 255+). + + See documentation for more information about the base filter. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + BrightnessCorrection filter = new BrightnessCorrection( -50 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Brightness adjust value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Brightness adjust value, [-255, 255]. + + + Default value is set to 10, which corresponds to increasing + RGB values of each pixel by 10. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Channels filters. + + + The filter does color channels' filtering by clearing (filling with + specified values) values, which are inside/outside of the specified value's + range. The filter allows to fill certain ranges of RGB color channels with specified + value. + + The filter is similar to , but operates with not + entire pixels, but with their RGB values individually. This means that pixel itself may + not be filtered (will be kept), but one of its RGB values may be filtered if they are + inside/outside of specified range. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + ChannelFiltering filter = new ChannelFiltering( ); + // set channels' ranges to keep + filter.Red = new IntRange( 0, 255 ); + filter.Green = new IntRange( 100, 255 ); + filter.Blue = new IntRange( 100, 255 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Red channel's filtering range. + Green channel's filtering range. + Blue channel's filtering range. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Calculate filtering map. + + + Filtering range. + Fillter value. + Fill outside or inside the range. + Filtering map. + + + + + Format translations dictionary. + + + + + Red channel's range. + + + + + Red fill value. + + + + + Green channel's range. + + + + + Green fill value. + + + + + Blue channel's range. + + + + + Blue fill value. + + + + + Determines, if red channel should be filled inside or outside filtering range. + + + Default value is set to . + + + + + Determines, if green channel should be filled inside or outside filtering range. + + + Default value is set to . + + + + + Determines, if blue channel should be filled inside or outside filtering range. + + + Default value is set to . + + + + + Color filtering. + + + The filter filters pixels inside/outside of specified RGB color range - + it keeps pixels with colors inside/outside of specified range and fills the rest with + specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + ColorFiltering filter = new ColorFiltering( ); + // set color ranges to keep + filter.Red = new IntRange( 100, 255 ); + filter.Green = new IntRange( 0, 75 ); + filter.Blue = new IntRange( 0, 75 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Red components filtering range. + Green components filtering range. + Blue components filtering range. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Range of red color component. + + + + + Range of green color component. + + + + + Range of blue color component. + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside of specified + color ranges. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Color remapping. + + + The filter allows to remap colors of the image. Unlike filter + the filter allow to do non-linear remapping. For each pixel of specified image the filter changes + its values (value of each color plane) to values, which are stored in remapping arrays by corresponding + indexes. For example, if pixel's RGB value equals to (32, 96, 128), the filter will change it to + ([32], [96], [128]). + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create map + byte[] map = new byte[256]; + for ( int i = 0; i < 256; i++ ) + { + map[i] = (byte) Math.Min( 255, Math.Pow( 2, (double) i / 32 ) ); + } + // create filter + ColorRemapping filter = new ColorRemapping( map, map, map ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Initializes the filter without any remapping. All + pixel values are mapped to the same values. + + + + + Initializes a new instance of the class. + + + Red map. + Green map. + Blue map. + + + + + Initializes a new instance of the class. + + + Gray map. + + This constructor is supposed for grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Remapping array for red color plane. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's red value r to [r]. + + A map should be array with 256 value. + + + + + Remapping array for green color plane. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's green value g to [g]. + + A map should be array with 256 value. + + + + + Remapping array for blue color plane. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's blue value b to [b]. + + A map should be array with 256 value. + + + + + Remapping array for gray color. + + + The remapping array should contain 256 remapping values. The remapping occurs + by changing pixel's value g to [g]. + + The gray map is for grayscale images only. + + A map should be array with 256 value. + + + + + Contrast adjusting in RGB color space. + + + The filter operates in RGB color space and adjusts + pixels' contrast value by increasing RGB values of bright pixel and decreasing + RGB values of dark pixels (or vise versa if contrast needs to be decreased). + The filter is based on + filter and simply sets all input ranges to (, 255-) and + all output range to (0, 255) in the case if the factor value is positive. + If the factor value is negative, then all input ranges are set to + (0, 255 ) and all output ranges are set to + (-, 255_). + + See documentation forr more information about the base filter. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + ContrastCorrection filter = new ContrastCorrection( 15 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Contrast adjusting factor. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Contrast adjusting factor, [-127, 127]. + + + Factor which is used to adjust contrast. Factor values greater than + 0 increase contrast making light areas lighter and dark areas darker. Factor values + less than 0 decrease contrast - decreasing variety of contrast. + + Default value is set to 10. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Contrast stretching filter. + + + Contrast stretching (or as it is often called normalization) is a simple image enhancement + technique that attempts to improve the contrast in an image by 'stretching' the range of intensity values + it contains to span a desired range of values, e.g. the full range of pixel values that the image type + concerned allows. It differs from the more sophisticated histogram equalization + in that it can only apply a linear scaling function to the image pixel values. + + The result of this filter may be achieved by using class, which allows to + get pixels' intensities histogram, and filter, which does linear correction + of pixel's intensities. + + The filter accepts 8 bpp grayscale and 24 bpp color images. + + Sample usage: + + // create filter + ContrastStretch filter = new ContrastStretch( ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Source image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Euclidean color filtering. + + + The filter filters pixels, which color is inside/outside + of RGB sphere with specified center and radius - it keeps pixels with + colors inside/outside of the specified sphere and fills the rest with + specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + EuclideanColorFiltering filter = new EuclideanColorFiltering( ); + // set center colol and radius + filter.CenterColor = new RGB( 215, 30, 30 ); + filter.Radius = 100; + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + RGB sphere's center. + RGB sphere's radius. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + RGB sphere's radius, [0, 450]. + + + Default value is 100. + + + + + RGB sphere's center. + + + Default value is (255, 255, 255) - white color. + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside specified + RGB sphere. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Extract RGB channel from image. + + + Extracts specified channel of color image and returns + it as grayscale image. + + The filter accepts 24, 32, 48 and 64 bpp color images and produces + 8 (if source is 24 or 32 bpp image) or 16 (if source is 48 or 64 bpp image) + bpp grayscale image. + + Sample usage: + + // create filter + ExtractChannel filter = new ExtractChannel( RGB.G ); + // apply the filter + Bitmap channelImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + ARGB channel to extract. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + Can not extract alpha channel from none ARGB image. The + exception is throw, when alpha channel is requested from RGB image. + + + + + Format translations dictionary. + + + + + ARGB channel to extract. + + + Default value is set to . + + Invalid channel is specified. + + + + + Gamma correction filter. + + + The filter performs gamma correction + of specified image in RGB color space. Each pixels' value is converted using the Vout=Ving + equation, where g is gamma value. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + GammaCorrection filter = new GammaCorrection( 0.5 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Gamma value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Gamma value, [0.1, 5.0]. + + + Default value is set to 2.2. + + + + + Base class for image grayscaling. + + + This class is the base class for image grayscaling. Other + classes should inherit from this class and specify RGB + coefficients used for color image conversion to grayscale. + + The filter accepts 24, 32, 48 and 64 bpp color images and produces + 8 (if source is 24 or 32 bpp image) or 16 (if source is 48 or 64 bpp image) + bpp grayscale image. + + Sample usage: + + // create grayscale filter (BT709) + Grayscale filter = new Grayscale( 0.2125, 0.7154, 0.0721 ); + // apply the filter + Bitmap grayImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + Portion of red channel's value to use during conversion from RGB to grayscale. + + + + + + Portion of green channel's value to use during conversion from RGB to grayscale. + + + + + + Portion of blue channel's value to use during conversion from RGB to grayscale. + + + + + + Initializes a new instance of the class. + + + Red coefficient. + Green coefficient. + Blue coefficient. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + Set of predefined common grayscaling algorithms, which have + already initialized grayscaling coefficients. + + + + + + Grayscale image using BT709 algorithm. + + + + The instance uses BT709 algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.2125; + Green: 0.7154; + Blue: 0.0721. + + + Sample usage: + + + // apply the filter + Bitmap grayImage = Grayscale.CommonAlgorithms.BT709.Apply( image ); + + + + + + + Grayscale image using R-Y algorithm. + + + + The instance uses R-Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.5; + Green: 0.419; + Blue: 0.081. + + + Sample usage: + + + // apply the filter + Bitmap grayImage = Grayscale.CommonAlgorithms.RMY.Apply( image ); + + + + + + + Grayscale image using Y algorithm. + + + + The instance uses Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.299; + Green: 0.587; + Blue: 0.114. + + + Sample usage: + + + // apply the filter + Bitmap grayImage = Grayscale.CommonAlgorithms.Y.Apply( image ); + + + + + + + Grayscale image using BT709 algorithm. + + + The class uses BT709 algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.2125; + Green: 0.7154; + Blue: 0.0721. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Grayscale image using R-Y algorithm. + + + The class uses R-Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.5; + Green: 0.419; + Blue: 0.081. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Convert grayscale image to RGB. + + + The filter creates color image from specified grayscale image + initializing all RGB channels to the same value - pixel's intensity of grayscale image. + + The filter accepts 8 bpp grayscale images and produces + 24 bpp RGB image. + + Sample usage: + + // create filter + GrayscaleToRGB filter = new GrayscaleToRGB( ); + // apply the filter + Bitmap rgbImage = filter.Apply( image ); + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Grayscale image using Y algorithm. + + + The class uses Y algorithm to convert color image + to grayscale. The conversion coefficients are: + + Red: 0.299; + Green: 0.587; + Blue: 0.114. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Histogram equalization filter. + + + The filter does histogram equalization increasing local contrast in images. The effect + of histogram equalization can be better seen on images, where pixel values have close contrast values. + Through this adjustment, pixels intensities can be better distributed on the histogram. This allows for + areas of lower local contrast to gain a higher contrast without affecting the global contrast. + + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + For color images the histogram equalization is applied to each color plane separately. + + Sample usage: + + // create filter + HistogramEqualization filter = new HistogramEqualization( ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Source image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Invert image. + + + The filter inverts colored and grayscale images. + + The filter accepts 8, 16 bpp grayscale and 24, 48 bpp color images for processing. + + Sample usage: + + // create filter + Invert filter = new Invert( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Linear correction of RGB channels. + + + The filter performs linear correction of RGB channels by mapping specified + channels' input ranges to output ranges. It is similar to the + , but the remapping is linear. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + LevelsLinear filter = new LevelsLinear( ); + // set ranges + filter.InRed = new IntRange( 30, 230 ); + filter.InGreen = new IntRange( 50, 240 ); + filter.InBlue = new IntRange( 10, 210 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Calculate conversion map. + + + Input range. + Output range. + Conversion map. + + + + + Format translations dictionary. + + + + + Red component's input range. + + + + + Green component's input range. + + + + + Blue component's input range. + + + + + Gray component's input range. + + + + + Input range for RGB components. + + + The property allows to set red, green and blue input ranges to the same value. + + + + + Red component's output range. + + + + + Green component's output range. + + + + + Blue component's output range. + + + + + Gray component's output range. + + + + + Output range for RGB components. + + + The property allows to set red, green and blue output ranges to the same value. + + + + + Linear correction of RGB channels for images, which have 16 bpp planes (16 bit gray images or 48/64 bit colour images). + + + The filter performs linear correction of RGB channels by mapping specified + channels' input ranges to output ranges. This version of the filter processes only images + with 16 bpp colour planes. See for 8 bpp version. + + The filter accepts 16 bpp grayscale and 48/64 bpp colour images for processing. + + Sample usage: + + // create filter + LevelsLinear16bpp filter = new LevelsLinear16bpp( ); + // set ranges + filter.InRed = new IntRange( 3000, 42000 ); + filter.InGreen = new IntRange( 5000, 37500 ); + filter.InBlue = new IntRange( 1000, 60000 ); + // apply the filter + filter.ApplyInPlace( image ); + + + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Calculate conversion map. + + + Input range. + Output range. + Conversion map. + + + + + Format translations dictionary. + + + + + Red component's input range. + + + + + Green component's input range. + + + + + Blue component's input range. + + + + + Gray component's input range. + + + + + Input range for RGB components. + + + The property allows to set red, green and blue input ranges to the same value. + + + + + Red component's output range. + + + + + Green component's output range. + + + + + Blue component's output range. + + + + + Gray component's output range. + + + + + Output range for RGB components. + + + The property allows to set red, green and blue output ranges to the same value. + + + + + Replace RGB channel of color imgae. + + + Replaces specified RGB channel of color image with + specified grayscale image. + + The filter is quite useful in conjunction with filter + (however may be used alone in some cases). Using the filter + it is possible to extract one of RGB channel, perform some image processing with it and then + put it back into the original color image. + + The filter accepts 24, 32, 48 and 64 bpp color images for processing. + + Sample usage: + + // extract red channel + ExtractChannel extractFilter = new ExtractChannel( RGB.R ); + Bitmap channel = extractFilter.Apply( image ); + // threshold channel + Threshold thresholdFilter = new Threshold( 230 ); + thresholdFilter.ApplyInPlace( channel ); + // put the channel back + ReplaceChannel replaceFilter = new ReplaceChannel( RGB.R, channel ); + replaceFilter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + ARGB channel to replace. + + + + + Initializes a new instance of the class. + + + ARGB channel to replace. + Channel image to use for replacement. + + + + + Initializes a new instance of the class. + + + RGB channel to replace. + Unmanaged channel image to use for replacement. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + Channel image was not specified. + Channel image size does not match source + image size. + Channel image's format does not correspond to format of the source image. + + Can not replace alpha channel of none ARGB image. The + exception is throw, when alpha channel is requested to be replaced in RGB image. + + + + + Format translations dictionary. + + + + + ARGB channel to replace. + + + Default value is set to . + + Invalid channel is specified. + + + + + Grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8 bpp indexed or 16 bpp grayscale image. + + + + + Unmanaged grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8 bpp indexed or 16 bpp grayscale image. + + + + + Rotate RGB channels. + + + The filter rotates RGB channels: red channel is replaced with green, + green channel is replaced with blue, blue channel is replaced with red. + + The filter accepts 24/32 bpp color images for processing. + + Sample usage: + + // create filter + RotateChannels filter = new RotateChannels( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Sepia filter - old brown photo. + + + The filter makes an image look like an old brown photo. The main + idea of the algorithm: + + transform to YIQ color space; + modify it; + transform back to RGB. + + + + 1) RGB -> YIQ: + + Y = 0.299 * R + 0.587 * G + 0.114 * B + I = 0.596 * R - 0.274 * G - 0.322 * B + Q = 0.212 * R - 0.523 * G + 0.311 * B + + + + + 2) update: + + I = 51 + Q = 0 + + + + + 3) YIQ -> RGB: + + R = 1.0 * Y + 0.956 * I + 0.621 * Q + G = 1.0 * Y - 0.272 * I - 0.647 * Q + B = 1.0 * Y - 1.105 * I + 1.702 * Q + + + + The filter accepts 24/32 bpp color images for processing. + + Sample usage: + + // create filter + Sepia filter = new Sepia( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Simple posterization of an image. + + + The class implements simple posterization of an image by splitting + each color plane into adjacent areas of the specified size. After the process + is done, each color plane will contain maximum of 256/PosterizationInterval levels. + For example, if grayscale image is posterized with posterization interval equal to 64, + then result image will contain maximum of 4 tones. If color image is posterized with the + same posterization interval, then it will contain maximum of 43=64 colors. + See property to get information about the way how to control + color used to fill posterization areas. + + Posterization is a process in photograph development which converts normal photographs + into an image consisting of distinct, but flat, areas of different tones or colors. + + The filter accepts 8 bpp grayscale and 24/32 bpp color images. + + Sample usage: + + // create filter + SimplePosterization filter = new SimplePosterization( ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Specifies filling type of posterization areas. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Posterization interval, which specifies size of posterization areas. + + + The property specifies size of adjacent posterization areas + for each color plane. The value has direct effect on the amount of colors + in the result image. For example, if grayscale image is posterized with posterization + interval equal to 64, then result image will contain maximum of 4 tones. If color + image is posterized with same posterization interval, then it will contain maximum + of 43=64 colors. + + Default value is set to 64. + + + + + + Posterization filling type. + + + The property controls the color, which is used to substitute + colors within the same posterization interval - minimum, maximum or average value. + + + Default value is set to . + + + + + + Format translations dictionary. + + + + + Enumeration of possible types of filling posterized areas. + + + + + Fill area with minimum color's value. + + + + + Fill area with maximum color's value. + + + + + Fill area with average color's value. + + + + + Blur filter. + + + The filter performs convolution filter using + the blur kernel: + + + 1 2 3 2 1 + 2 4 5 4 2 + 3 5 6 5 3 + 2 4 5 4 2 + 1 2 3 2 1 + + + For the list of supported pixel formats, see the documentation to + filter. + + By default this filter sets property to + , so the alpha channel of 32 bpp and 64 bpp images is blurred as well. + + + Sample usage: + + // create filter + Blur filter = new Blur( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Convolution filter. + + + The filter implements convolution operator, which calculates each pixel + of the result image as weighted sum of the correspond pixel and its neighbors in the source + image. The weights are set by convolution kernel. The weighted + sum is divided by before putting it into result image and also + may be thresholded using value. + + Convolution is a simple mathematical operation which is fundamental to many common + image processing filters. Depending on the type of provided kernel, the filter may produce + different results, like blur image, sharpen it, find edges, etc. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. Note: depending on the value of + property, the alpha channel is either copied as is or processed with the kernel. + + Sample usage: + + // define emboss kernel + int[,] kernel = { + { -2, -1, 0 }, + { -1, 1, 1 }, + { 0, 1, 2 } }; + // create filter + Convolution filter = new Convolution( kernel ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Convolution kernel. + + Using this constructor (specifying only convolution kernel), + division factor will be calculated automatically + summing all kernel values. In the case if kernel's sum equals to zero, + division factor will be assigned to 1. + + Invalid kernel size is specified. Kernel must be + square, its width/height should be odd and should be in the [3, 25] range. + + + + + Initializes a new instance of the class. + + + Convolution kernel. + Divisor, used used to divide weighted sum. + + Invalid kernel size is specified. Kernel must be + square, its width/height should be odd and should be in the [3, 25] range. + Divisor can not be equal to zero. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Convolution kernel. + + + + Convolution kernel must be square and its width/height + should be odd and should be in the [3, 99] range. + + Setting convolution kernel through this property does not + affect - it is not recalculated automatically. + + + Invalid kernel size is specified. + + + + + Division factor. + + + The value is used to divide convolution - weighted sum + of pixels is divided by this value. + + The value may be calculated automatically in the case if constructor + with one parameter is used (). + + + Divisor can not be equal to zero. + + + + + Threshold to add to weighted sum. + + + The property specifies threshold value, which is added to each weighted + sum of pixels. The value is added right after division was done by + value. + + Default value is set to 0. + + + + + + Use dynamic divisor for edges or not. + + + The property specifies how to handle edges. If it is set to + , then the same divisor (which is specified by + property or calculated automatically) will be applied both for non-edge regions + and for edge regions. If the value is set to , then dynamically + calculated divisor will be used for edge regions, which is sum of those kernel + elements, which are taken into account for particular processed pixel + (elements, which are not outside image). + + Default value is set to . + + + + + + Specifies if alpha channel must be processed or just copied. + + + The property specifies the way how alpha channel is handled for 32 bpp + and 64 bpp images. If the property is set to , then alpha + channel's values are just copied as is. If the property is set to + then alpha channel is convolved using the specified kernel same way as RGB channels. + + Default value is set to . + + + + + + Initializes a new instance of the class. + + + + + Simple edge detector. + + + The filter performs convolution filter using + the edges kernel: + + + 0 -1 0 + -1 4 -1 + 0 -1 0 + + + For the list of supported pixel formats, see the documentation to + filter. + + Sample usage: + + // create filter + Edges filter = new Edges( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + Gaussian blur filter. + + + The filter performs convolution filter using + the kernel, which is calculate with the help of + method and then converted to integer kernel by dividing all elements by the element with the + smallest value. Using the kernel the convolution filter is known as Gaussian blur. + + Using property it is possible to configure + sigma value of Gaussian function. + + For the list of supported pixel formats, see the documentation to + filter. + + By default this filter sets property to + , so the alpha channel of 32 bpp and 64 bpp images is blurred as well. + + + Sample usage: + + // create filter with kernel size equal to 11 + // and Gaussia sigma value equal to 4.0 + GaussianBlur filter = new GaussianBlur( 4, 11 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + Kernel size. + + + + + Gaussian sigma value, [0.5, 5.0]. + + + Sigma value for Gaussian function used to calculate + the kernel. + + Default value is set to 1.4. + + + + + + Kernel size, [3, 21]. + + + Size of Gaussian kernel. + + Default value is set to 5. + + + + + + Mean filter. + + + The filter performs each pixel value's averaging with its 8 neighbors, which is + convolution filter using the mean kernel: + + + 1 1 1 + 1 1 1 + 1 1 1 + + + For the list of supported pixel formats, see the documentation to + filter. + + With the above kernel the convolution filter is just calculates each pixel's value + in result image as average of 9 corresponding pixels in the source image. + + By default this filter sets property to + , so the alpha channel of 32 bpp and 64 bpp images is blurred as well. + + + Sample usage: + + // create filter + Mean filter = new Mean( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + Sharpen filter + + + The filter performs convolution filter using + the sharpen kernel: + + + 0 -1 0 + -1 5 -1 + 0 -1 0 + + + For the list of supported pixel formats, see the documentation to + filter. + + Sample usage: + + // create filter + Sharpen filter = new Sharpen( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + Gaussian sharpen filter. + + + The filter performs convolution filter using + the kernel, which is calculate with the help of + method and then converted to integer sharpening kernel. First of all the integer kernel + is calculated from by dividing all elements by + the element with the smallest value. Then the integer kernel is converted to sharpen kernel by + negating all kernel's elements (multiplying with -1), but the central kernel's element + is calculated as 2 * sum - centralElement, where sum is the sum off elements + in the integer kernel before negating. + + For the list of supported pixel formats, see the documentation to + filter. + + Sample usage: + + // create filter with kernel size equal to 11 + // and Gaussia sigma value equal to 4.0 + GaussianSharpen filter = new GaussianSharpen( 4, 11 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + + + + + Initializes a new instance of the class. + + + Gaussian sigma value. + Kernel size. + + + + + Gaussian sigma value, [0.5, 5.0]. + + + Sigma value for Gaussian function used to calculate + the kernel. + + Default value is set to 1.4. + + + + + + Kernel size, [3, 5]. + + + Size of Gaussian kernel. + + Default value is set to 5. + + + + + + Canny edge detector. + + + The filter searches for objects' edges by applying Canny edge detector. + The implementation follows + Bill Green's Canny edge detection tutorial. + + The implemented canny edge detector has one difference with the above linked algorithm. + The difference is in hysteresis step, which is a bit simplified (getting faster as a result). On the + hysteresis step each pixel is compared with two threshold values: and + . If pixel's value is greater or equal to , then + it is kept as edge pixel. If pixel's value is greater or equal to , then + it is kept as edge pixel only if there is at least one neighbouring pixel (8 neighbours are checked) which + has value greater or equal to ; otherwise it is none edge pixel. In the case + if pixel's value is less than , then it is marked as none edge immediately. + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + CannyEdgeDetector filter = new CannyEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Low threshold. + High threshold. + + + + + Initializes a new instance of the class. + + + Low threshold. + High threshold. + Gaussian sigma. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Low threshold. + + + Low threshold value used for hysteresis + (see tutorial + for more information). + + Default value is set to 20. + + + + + + High threshold. + + + High threshold value used for hysteresis + (see tutorial + for more information). + + Default value is set to 100. + + + + + + Gaussian sigma. + + + Sigma value for Gaussian bluring. + + + + + Gaussian size. + + + Size of Gaussian kernel. + + + + + Difference edge detector. + + + The filter finds objects' edges by calculating maximum difference + between pixels in 4 directions around the processing pixel. + + Suppose 3x3 square element of the source image (x - is currently processed + pixel): + + P1 P2 P3 + P8 x P4 + P7 P6 P5 + + The corresponding pixel of the result image equals to: + + max( |P1-P5|, |P2-P6|, |P3-P7|, |P4-P8| ) + + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + DifferenceEdgeDetector filter = new DifferenceEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Homogenity edge detector. + + + The filter finds objects' edges by calculating maximum difference + of processing pixel with neighboring pixels in 8 direction. + + Suppose 3x3 square element of the source image (x - is currently processed + pixel): + + P1 P2 P3 + P8 x P4 + P7 P6 P5 + + The corresponding pixel of the result image equals to: + + max( |x-P1|, |x-P2|, |x-P3|, |x-P4|, + |x-P5|, |x-P6|, |x-P7|, |x-P8| ) + + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + HomogenityEdgeDetector filter = new HomogenityEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Sobel edge detector. + + + The filter searches for objects' edges by applying Sobel operator. + + Each pixel of the result image is calculated as approximated absolute gradient + magnitude for corresponding pixel of the source image: + + |G| = |Gx| + |Gy] , + + where Gx and Gy are calculate utilizing Sobel convolution kernels: + + Gx Gy + -1 0 +1 +1 +2 +1 + -2 0 +2 0 0 0 + -1 0 +1 -1 -2 -1 + + Using the above kernel the approximated magnitude for pixel x is calculate using + the next equation: + + P1 P2 P3 + P8 x P4 + P7 P6 P5 + + |G| = |P1 + 2P2 + P3 - P7 - 2P6 - P5| + + |P3 + 2P4 + P5 - P1 - 2P8 - P7| + + + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SobelEdgeDetector filter = new SobelEdgeDetector( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Scale intensity or not. + + + The property determines if edges' pixels intensities of the result image + should be scaled in the range of the lowest and the highest possible intensity + values. + + Default value is set to . + + + + + + Filter iterator. + + + Filter iterator performs specified amount of filter's iterations. + The filter take the specified base filter and applies it + to source image specified amount of times. + + The filter itself does not have any restrictions to pixel format of source + image. This is set by base filter. + + The filter does image processing using only + interface of the specified base filter. This means + that this filter may not utilize all potential features of the base filter, like + in-place processing (see ) and region based processing + (see ). To utilize those features, it is required to + do filter's iteration manually. + + Sample usage (morphological thinning): + + // create filter sequence + FiltersSequence filterSequence = new FiltersSequence( ); + // add 8 thinning filters with different structuring elements + filterSequence.Add( new HitAndMiss( + new short [,] { { 0, 0, 0 }, { -1, 1, -1 }, { 1, 1, 1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { -1, 0, 0 }, { 1, 1, 0 }, { -1, 1, -1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 1, -1, 0 }, { 1, 1, 0 }, { 1, -1, 0 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { -1, 1, -1 }, { 1, 1, 0 }, { -1, 0, 0 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 1, 1, 1 }, { -1, 1, -1 }, { 0, 0, 0 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { -1, 1, -1 }, { 0, 1, 1 }, { 0, 0, -1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 0, -1, 1 }, { 0, 1, 1 }, { 0, -1, 1 } }, + HitAndMiss.Modes.Thinning ) ); + filterSequence.Add( new HitAndMiss( + new short [,] { { 0, 0, -1 }, { 0, 1, 1 }, { -1, 1, -1 } }, + HitAndMiss.Modes.Thinning ) ); + // create filter iterator for 10 iterations + FilterIterator filter = new FilterIterator( filterSequence, 10 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Filter to iterate. + + + + + Initializes a new instance of the class. + + + Filter to iterate. + Iterations amount. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + The filter provides format translation dictionary taken from + filter. + + + + + + Base filter. + + + The base filter is the filter to be applied specified amount of iterations to + a specified image. + + + + + Iterations amount, [1, 255]. + + + The amount of times to apply specified filter to a specified image. + + Default value is set to 1. + + + + + + Filters' collection to apply to an image in sequence. + + + The class represents collection of filters, which need to be applied + to an image in sequence. Using the class user may specify set of filters, which will + be applied to source image one by one in the order user defines them. + + The class itself does not define which pixel formats are accepted for the source + image and which pixel formats may be produced by the filter. Format of acceptable source + and possible output is defined by filters, which added to the sequence. + + Sample usage: + + // create filter, which is binarization sequence + FiltersSequence filter = new FiltersSequence( + new GrayscaleBT709( ), + new Threshold( ) + ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Sequence of filters to apply. + + + + + Add new filter to the sequence. + + + Filter to add to the sequence. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + No filters were added into the filters' sequence. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + No filters were added into the filters' sequence. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + No filters were added into the filters' sequence. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have width, height and pixel format as it is expected by + the final filter in the sequence. + + + No filters were added into the filters' sequence. + + + + + Get filter at the specified index. + + + Index of filter to get. + + Returns filter at specified index. + + + + + Flood filling with specified color starting from specified point. + + + The filter performs image's area filling (4 directional) starting + from the specified point. It fills + the area of the pointed color, but also fills other colors, which + are similar to the pointed within specified tolerance. + The area is filled using specified fill color. + + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + PointedColorFloodFill filter = new PointedColorFloodFill( ); + // configure the filter + filter.Tolerance = Color.FromArgb( 150, 92, 92 ); + filter.FillColor = Color.FromArgb( 255, 255, 255 ); + filter.StartingPoint = new IntPoint( 150, 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Fill color. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Flood fill tolerance. + + + The tolerance value determines which colors to fill. If the + value is set to 0, then only color of the pointed pixel + is filled. If the value is not 0, then other colors may be filled as well, + which are similar to the color of the pointed pixel within the specified + tolerance. + + The tolerance value is specified as , + where each component (R, G and B) represents tolerance for the corresponding + component of color. This allows to set different tolerances for red, green + and blue components. + + + + + + Fill color. + + + The fill color is used to fill image's area starting from the + specified point. + + For grayscale images the color needs to be specified with all three + RGB values set to the same value, (128, 128, 128) for example. + + Default value is set to black. + + + + + + Point to start filling from. + + + The property allows to set the starting point, where filling is + started from. + + Default value is set to (0, 0). + + + + + + Flood filling with mean color starting from specified point. + + + The filter performs image's area filling (4 directional) starting + from the specified point. It fills + the area of the pointed color, but also fills other colors, which + are similar to the pointed within specified tolerance. + The area is filled using its mean color. + + + The filter is similar to filter, but instead + of filling the are with specified color, it fills the area with its mean color. This means + that this is a two pass filter - first pass is to calculate the mean value and the second pass is to + fill the area. Unlike to filter, this filter has nothing + to do in the case if zero tolerance is specified. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + PointedMeanFloodFill filter = new PointedMeanFloodFill( ); + // configre the filter + filter.Tolerance = Color.FromArgb( 150, 92, 92 ); + filter.StartingPoint = new IntPoint( 150, 100 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Flood fill tolerance. + + + The tolerance value determines the level of similarity between + colors to fill and the pointed color. If the value is set to zero, then the + filter does nothing, since the filling area contains only one color and its + filling with mean is meaningless. + + The tolerance value is specified as , + where each component (R, G and B) represents tolerance for the corresponding + component of color. This allows to set different tolerances for red, green + and blue components. + + Default value is set to (16, 16, 16). + + + + + + Point to start filling from. + + + The property allows to set the starting point, where filling is + started from. + + Default value is set to (0, 0). + + + + + + Color filtering in HSL color space. + + + The filter operates in HSL color space and filters + pixels, which color is inside/outside of the specified HSL range - + it keeps pixels with colors inside/outside of the specified range and fills the + rest with specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + HSLFiltering filter = new HSLFiltering( ); + // set color ranges to keep + filter.Hue = new IntRange( 335, 0 ); + filter.Saturation = new Range( 0.6f, 1 ); + filter.Luminance = new Range( 0.1f, 1 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + Sample usage with saturation update only: + + // create filter + HSLFiltering filter = new HSLFiltering( ); + // configure the filter + filter.Hue = new IntRange( 340, 20 ); + filter.UpdateLuminance = false; + filter.UpdateHue = false; + // apply the filter + filter.ApplyInPlace( image ); + + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Range of hue component. + Range of saturation component. + Range of luminance component. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Range of hue component, [0, 359]. + + + Because of hue values are cycled, the minimum value of the hue + range may have bigger integer value than the maximum value, for example [330, 30]. + + + + + Range of saturation component, [0, 1]. + + + + + Range of luminance component, [0, 1]. + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside specified + color range. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Determines, if hue value of filtered pixels should be updated. + + + The property specifies if hue of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if saturation value of filtered pixels should be updated. + + + The property specifies if saturation of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if luminance value of filtered pixels should be updated. + + + The property specifies if luminance of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Luminance and saturation linear correction. + + + The filter operates in HSL color space and provides + with the facility of luminance and saturation linear correction - mapping specified channels' + input ranges to specified output ranges. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + HSLLinear filter = new HSLLinear( ); + // configure the filter + filter.InLuminance = new Range( 0, 0.85f ); + filter.OutSaturation = new Range( 0.25f, 1 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Luminance input range. + + + Luminance component is measured in the range of [0, 1]. + + + + + Luminance output range. + + + Luminance component is measured in the range of [0, 1]. + + + + + Saturation input range. + + + Saturation component is measured in the range of [0, 1]. + + + + + Saturation output range. + + + Saturation component is measured in the range of [0, 1]. + + + + + Format translations dictionary. + + + + + Hue modifier. + + + The filter operates in HSL color space and updates + pixels' hue values setting it to the specified value (luminance and + saturation are kept unchanged). The result of the filter looks like the image + is observed through a glass of the given color. + + The filter accepts 24 and 32 bpp color images for processing. + Sample usage: + + // create filter + HueModifier filter = new HueModifier( 180 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Hue value to set. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Hue value to set, [0, 359]. + + + Default value is set to 0. + + + + + Saturation adjusting in HSL color space. + + + The filter operates in HSL color space and adjusts + pixels' saturation value, increasing it or decreasing by specified percentage. + The filters is based on filter, passing work to it after + recalculating saturation adjust value to input/output + ranges of the filter. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + SaturationCorrection filter = new SaturationCorrection( -0.5f ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Saturation adjust value. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Saturation adjust value, [-1, 1]. + + + Default value is set to 0.1, which corresponds to increasing + saturation by 10%. + + + + + Format translations dictionary. + + + + + Flat field correction filter. + + + The goal of flat-field correction is to remove artifacts from 2-D images that + are caused by variations in the pixel-to-pixel sensitivity of the detector and/or by distortions + in the optical path. The filter requires two images for the input - source image, which represents + acquisition of some objects (using microscope, for example), and background image, which is taken + without any objects presented. The source image is corrected using the formula: src = bgMean * src / bg, + where src - source image's pixel value, bg - background image's pixel value, bgMean - mean + value of background image. + + If background image is not provided, then it will be automatically generated on each filter run + from source image. The automatically generated background image is produced running Gaussian Blur on the + original image with (sigma value is set to 5, kernel size is set to 21). Before blurring the original image + is resized to 1/3 of its original size and then the result of blurring is resized back to the original size. + + + The class processes only grayscale (8 bpp indexed) and color (24 bpp) images. + + Sample usage: + + // create filter + FlatFieldCorrection filter = new FlatFieldCorrection( bgImage ); + // process image + filter.ApplyInPlace( sourceImage ); + + + Source image: + + Background image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + This constructor does not set background image, which means that background + image will be generated on the fly on each filter run. The automatically generated background + image is produced running Gaussian Blur on the original image with (sigma value is set to 5, + kernel size is set to 21). Before blurring the original image is resized to 1/3 of its original size + and then the result of blurring is resized back to the original size. + + + + + Initializes a new instance of the class. + + + Background image used for flat field correction. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Background image used for flat field correction. + + + The property sets the background image (without any objects), which will be used + for illumination correction of an image passed to the filter. + + The background image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one background image is allowed: managed or unmanaged. + + + + + + Background image used for flat field correction. + + + The property sets the background image (without any objects), which will be used + for illumination correction of an image passed to the filter. + + The background image must have the same size and pixel format as source image. + Otherwise exception will be generated when filter is applied to source image. + + Setting this property will clear the property - + only one background image is allowed: managed or unmanaged. + + + + + + Format translations dictionary. + + + See for more information. + + + + + Bottop-hat operator from Mathematical Morphology. + + + Bottom-hat morphological operator subtracts + input image from the result of morphological closing on the + the input image. + + Applied to binary image, the filter allows to get all object parts, which were + added by closing filter, but were not removed after that due + to formed connections/fillings. + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + BottomHat filter = new BottomHat( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Structuring element to pass to operator. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Closing operator from Mathematical Morphology. + + + Closing morphology operator equals to dilatation followed + by erosion. + + Applied to binary image, the filter may be used connect or fill objects. Since dilatation is used + first, it may connect/fill object areas. Then erosion restores objects. But since dilatation may connect + something before, erosion may not remove after that because of the formed connection. + + See documentation to and classes for more + information and list of supported pixel formats. + + Sample usage: + + // create filter + Closing filter = new Closing( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element for both and + classes - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + See documentation to and + classes for information about structuring element constraints. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Format translations dictionary. + + + + + Dilatation operator from Mathematical Morphology. + + + The filter assigns maximum value of surrounding pixels to each pixel of + the result image. Surrounding pixels, which should be processed, are specified by + structuring element: 1 - to process the neighbor, -1 - to skip it. + + The filter especially useful for binary image processing, where it allows to grow + separate objects or join objects. + + For processing image with 3x3 structuring element, there are different optimizations + available, like and . + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + Dilatation filter = new Dilatation( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + Structuring elemement for the dilatation morphological operator + must be square matrix with odd size in the range of [3, 99]. + + Invalid size of structuring element. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Erosion operator from Mathematical Morphology. + + + The filter assigns minimum value of surrounding pixels to each pixel of + the result image. Surrounding pixels, which should be processed, are specified by + structuring element: 1 - to process the neighbor, -1 - to skip it. + + The filter especially useful for binary image processing, where it removes pixels, which + are not surrounded by specified amount of neighbors. It gives ability to remove noisy pixels + (stand-alone pixels) or shrink objects. + + For processing image with 3x3 structuring element, there are different optimizations + available, like and . + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + Erosion filter = new Erosion( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + Structuring elemement for the erosion morphological operator + must be square matrix with odd size in the range of [3, 99]. + + Invalid size of structuring element. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Hit-And-Miss operator from Mathematical Morphology. + + + The hit-and-miss filter represents generalization of + and filters by extending flexibility of structuring element and + providing different modes of its work. Structuring element may contain: + + 1 - foreground; + 0 - background; + -1 - don't care. + + + + Filter's mode is set by property. The list of modes and its + documentation may be found in enumeration. + + The filter accepts 8 bpp grayscale images for processing. Note: grayscale images are treated + as binary with 0 value equals to black and 255 value equals to white. + + Sample usage: + + // define kernel to remove pixels on the right side of objects + // (pixel is removed, if there is white pixel on the left and + // black pixel on the right) + short[,] se = new short[,] { + { -1, -1, -1 }, + { 1, 1, 0 }, + { -1, -1, -1 } + }; + // create filter + HitAndMiss filter = new HitAndMiss( se, HitAndMiss.Modes.Thinning ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Structuring element. + + Structuring elemement for the hit-and-miss morphological operator + must be square matrix with odd size in the range of [3, 99]. + + Invalid size of structuring element. + + + + + Initializes a new instance of the class. + + + Structuring element. + Operation mode. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Operation mode. + + + Mode to use for the filter. See enumeration + for the list of available modes and their documentation. + + Default mode is set to . + + + + + Hit and Miss modes. + + + Bellow is a list of modes meaning depending on pixel's correspondence + to specified structuring element: + + - on match pixel is set to white, otherwise to black; + - on match pixel is set to black, otherwise not changed. + - on match pixel is set to white, otherwise not changed. + + + + + + + Hit and miss mode. + + + + + Thinning mode. + + + + + Thickening mode. + + + + + Opening operator from Mathematical Morphology. + + + Opening morphology operator equals to erosion followed + by dilatation. + + Applied to binary image, the filter may be used for removing small object keeping big objects + unchanged. Since erosion is used first, it removes all small objects. Then dilatation restores big + objects, which were not removed by erosion. + + See documentation to and classes for more + information and list of supported pixel formats. + + Sample usage: + + // create filter + Opening filter = new Opening( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + + Initializes a new instance of the class. + + + Initializes new instance of the class using + default structuring element for both and + classes - 3x3 structuring element with all elements equal to 1. + + + + + + Initializes a new instance of the class. + + + Structuring element. + + See documentation to and + classes for information about structuring element constraints. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Source image to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The filter accepts bitmap data as input and returns the result + of image processing filter as new image. The source image data are kept + unchanged. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + + Returns filter's result obtained by applying the filter to + the source image. + + The method keeps the source image unchanged and returns + the result of image processing filter as new image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image in unmanaged memory. + + + Source image in unmanaged memory to apply filter to. + Destination image in unmanaged memory to put result into. + + The method keeps the source image unchanged and puts result of image processing + into destination image. + + The destination image must have the same width and height as source image. Also + destination image must have pixel format, which is expected by particular filter (see + property for information about pixel format conversions). + + + Unsupported pixel format of the source image. + Incorrect destination pixel format. + Destination image has wrong width and/or height. + + + + + Apply filter to an image. + + + Image to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image. + + + Image data to apply filter to. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image. + + + Unmanaged image to apply filter to. + + The method applies the filter directly to the provided source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an image or its part. + + + Image data to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Apply filter to an unmanaged image or its part. + + + Unmanaged image to apply filter to. + Image rectangle for processing by the filter. + + The method applies the filter directly to the provided source image. + + Unsupported pixel format of the source image. + + + + + Format translations dictionary. + + + + + Binary dilatation operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for binary images (containing black and white pixels) processed + with 3x3 structuring element. This makes this filter ideal for growing objects in binary + images – it puts white pixel to the destination image in the case if there is at least + one white neighbouring pixel in the source image. + + See filter, which represents generic version of + dilatation filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale (binary) images for processing. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Binary erosion operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for binary images (containing black and white pixels) processed + with 3x3 structuring element. This makes this filter ideal for removing noise in binary + images – it removes all white pixels, which are neighbouring with at least one blank pixel. + + + See filter, which represents generic version of + erosion filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale (binary) images for processing. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Dilatation operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for grayscale image processing with 3x3 structuring element. + + See filter, which represents generic version of + dilatation filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale images for processing. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Erosion operator from Mathematical Morphology with 3x3 structuring element. + + + The filter represents an optimized version of + filter, which is aimed for grayscale image processing with 3x3 structuring element. + + See filter, which represents generic version of + erosion filter supporting custom structuring elements and wider range of image formats. + + The filter accepts 8 bpp grayscale images for processing. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + Processing rectangle mast be at least 3x3 in size. + + + + + Format translations dictionary. + + + + + Top-hat operator from Mathematical Morphology. + + + Top-hat morphological operator subtracts + result of morphological opening on the input image + from the input image itself. + + Applied to binary image, the filter allows to get all those object (their parts) + which were removed by opening filter, but never restored. + + The filter accepts 8 and 16 bpp grayscale images and 24 and 48 bpp + color images for processing. + + Sample usage: + + // create filter + TopHat filter = new TopHat( ); + // apply the filter + filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Structuring element to pass to operator. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Additive noise filter. + + + The filter adds random value to each pixel of the source image. + The distribution of random values can be specified by random generator. + + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create random generator + IRandomNumberGenerator generator = new UniformGenerator( new Range( -50, 50 ) ); + // create filter + AdditiveNoise filter = new AdditiveNoise( generator ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Random number genertor used to add noise. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Random number genertor used to add noise. + + + Default generator is uniform generator in the range of (-10, 10). + + + + + Salt and pepper noise. + + + The filter adds random salt and pepper noise - sets + maximum or minimum values to randomly selected pixels. + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + SaltAndPepperNoise filter = new SaltAndPepperNoise( 10 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Amount of noise to generate in percents, [0, 100]. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Amount of noise to generate in percents, [0, 100]. + + + + + + Extract normalized RGB channel from color image. + + + Extracts specified normalized RGB channel of color image and returns + it as grayscale image. + + Normalized RGB color space is defined as: + + r = R / (R + G + B ), + g = G / (R + G + B ), + b = B / (R + G + B ), + + where R, G and B are components of RGB color space and + r, g and b are components of normalized RGB color space. + + + The filter accepts 24, 32, 48 and 64 bpp color images and produces + 8 (if source is 24 or 32 bpp image) or 16 (if source is 48 or 64 bpp image) + bpp grayscale image. + + Sample usage: + + // create filter + ExtractNormalizedRGBChannel filter = new ExtractNormalizedRGBChannel( RGB.G ); + // apply the filter + Bitmap channelImage = filter.Apply( image ); + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Normalized RGB channel to extract. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Normalized RGB channel to extract. + + + Default value is set to . + + Invalid channel is specified. + + + + + Apply mask to the specified image. + + + The filter applies mask to the specified image - keeps all pixels + in the image if corresponding pixels/values of the mask are not equal to 0. For all + 0 pixels/values in mask, corresponding pixels in the source image are set to 0. + + Mask can be specified as .NET's managed Bitmap, as + UnmanagedImage or as byte array. + In the case if mask is specified as image, it must be 8 bpp grayscale image. In all case + mask size must be the same as size of the image to process. + + The filter accepts 8/16 bpp grayscale and 24/32/48/64 bpp color images for processing. + + + + + + Initializes a new instance of the class. + + + Mask image to use. + + + + + Initializes a new instance of the class. + + + Unmanaged mask image to use. + + + + + Initializes a new instance of the class. + + + to use. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + None of the possible mask properties were set. Need to provide mask before applying the filter. + Invalid size of provided mask. Its size must be the same as the size of the image to mask. + + + + + Mask image to apply. + + + The property specifies mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Unmanaged mask image to apply. + + + The property specifies unmanaged mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Mask to apply. + + + The property specifies mask array to use. Size of the array must + be the same size as the size of the source image to process - its 0th dimension + must be equal to image's height and its 1st dimension must be equal to width. For + example, for 640x480 image, the mask array must be defined as: + + byte[,] mask = new byte[480, 640]; + + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Blobs filtering by size. + + + The filter performs filtering of blobs by their size in the specified + source image - all blobs, which are smaller or bigger then specified limits, are + removed from the image. + + The image processing filter treats all none black pixels as objects' + pixels and all black pixel as background. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + BlobsFiltering filter = new BlobsFiltering( ); + // configure filter + filter.CoupledSizeFiltering = true; + filter.MinWidth = 70; + filter.MinHeight = 70; + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Minimum allowed width of blob. + Minimum allowed height of blob. + Maximum allowed width of blob. + Maximum allowed height of blob. + + This constructor creates an instance of class + with property set to false. + + + + + Initializes a new instance of the class. + + + Minimum allowed width of blob. + Minimum allowed height of blob. + Maximum allowed width of blob. + Maximum allowed height of blob. + Specifies if size filetering should be coupled or not. + + For information about coupled filtering mode see documentation for + property of + class. + + + + + Initializes a new instance of the class. + + + Custom blobs' filtering routine to use + (see ). + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Specifies if size filetering should be coupled or not. + + + See documentation for property + of class for more information. + + + + + Minimum allowed width of blob. + + + + + + Minimum allowed height of blob. + + + + + + Maximum allowed width of blob. + + + + + + Maximum allowed height of blob. + + + + + + Custom blobs' filter to use. + + + See for information + about custom blobs' filtering routine. + + + + + Fill areas outiside of specified region. + + + + The filter fills areas outside of specified region using the specified color. + + The filter accepts 8bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + CanvasCrop filter = new CanvasCrop( new Rectangle( + 5, 5, image.Width - 10, image.Height - 10 ), Color.Red ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + Region to keep. + + + + + Initializes a new instance of the class. + + + Region to keep. + RGB color to use for filling areas outside of specified region in color images. + + + + + Initializes a new instance of the class. + + + Region to keep. + Gray color to use for filling areas outside of specified region in grayscale images. + + + + + Initializes a new instance of the class. + + + Region to keep. + RGB color to use for filling areas outside of specified region in color images. + Gray color to use for filling areas outside of specified region in grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + RGB fill color. + + + The color is used to fill areas out of specified region in color images. + + Default value is set to white - RGB(255, 255, 255). + + + + + Gray fill color. + + + The color is used to fill areas out of specified region in grayscale images. + + Default value is set to white - 255. + + + + + Region to keep. + + + Pixels inside of the specified region will keep their values, but + pixels outside of the region will be filled with specified color. + + + + + Fill areas iniside of the specified region. + + + + The filter fills areas inside of specified region using the specified color. + + The filter accepts 8bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + CanvasFill filter = new CanvasFill( new Rectangle( + 5, 5, image.Width - 10, image.Height - 10 ), Color.Red ); + // apply the filter + filter.ApplyInPlace( image ); + + + + + + + + + Initializes a new instance of the class. + + + Region to fill. + + + + + Initializes a new instance of the class. + + + Region to fill. + RGB color to use for filling areas inside of specified region in color images. + + + + + Initializes a new instance of the class. + + + Region to fill. + Gray color to use for filling areas inside of specified region in grayscale images. + + + + + Initializes a new instance of the class. + + + Region to fill. + RGB color to use for filling areas inside of specified region in color images. + Gray color to use for filling areas inside of specified region in grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + RGB fill color. + + + The color is used to fill areas out of specified region in color images. + + Default value is set to white - RGB(255, 255, 255). + + + + + Gray fill color. + + + The color is used to fill areas out of specified region in grayscale images. + + Default value is set to white - 255. + + + + + Region to fill. + + + Pixels inside of the specified region will be filled with specified color. + + + + + Move canvas to the specified point. + + + + The filter moves canvas to the specified area filling unused empty areas with specified color. + + The filter accepts 8/16 bpp grayscale images and 24/32/48/64 bpp color image + for processing. + + Sample usage: + + // create filter + CanvasMove filter = new CanvasMove( new IntPoint( -50, -50 ), Color.Green ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Point to move the canvas to. + + + + + Initializes a new instance of the class. + + + Point to move the canvas. + RGB color to use for filling areas empty areas in color images. + + + + + Initializes a new instance of the class. + + + Point to move the canvas. + Gray color to use for filling empty areas in grayscale images. + + + + + Initializes a new instance of the class. + + + Point to move the canvas. + RGB color to use for filling areas empty areas in color images. + Gray color to use for filling empty areas in grayscale images. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + RGB fill color. + + + The color is used to fill empty areas in color images. + + Default value is set to white - ARGB(255, 255, 255, 255). + + + + + Gray fill color. + + + The color is used to fill empty areas in grayscale images. + + Default value is set to white - 255. + + + + + Point to move the canvas to. + + + + + + Connected components labeling. + + + The filter performs labeling of objects in the source image. It colors + each separate object using different color. The image processing filter treats all none + black pixels as objects' pixels and all black pixel as background. + + The filter accepts 8 bpp grayscale images and 24/32 bpp color images and produces + 24 bpp RGB image. + + Sample usage: + + // create filter + ConnectedComponentsLabeling filter = new ConnectedComponentsLabeling( ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + // check objects count + int objectCount = filter.ObjectCount; + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Blob counter used to locate separate blobs. + + + The property allows to set blob counter to use for blobs' localization. + + Default value is set to . + + + + + + Colors used to color the binary image. + + + + + Specifies if blobs should be filtered. + + + See documentation for property + of class for more information. + + + + + Specifies if size filetering should be coupled or not. + + + See documentation for property + of class for more information. + + + + + Minimum allowed width of blob. + + + + + + Minimum allowed height of blob. + + + + + + Maximum allowed width of blob. + + + + + + Maximum allowed height of blob. + + + + + + Objects count. + + + The amount of objects found in the last processed image. + + + + + Filter to mark (highlight) corners of objects. + + + + The filter highlights corners of objects on the image using provided corners + detection algorithm. + + The filter accepts 8 bpp grayscale and 24/32 color images for processing. + + Sample usage: + + // create corner detector's instance + SusanCornersDetector scd = new SusanCornersDetector( ); + // create corner maker filter + CornersMarker filter = new CornersMarker( scd, Color.Red ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Interface of corners' detection algorithm. + + + + + Initializes a new instance of the class. + + + Interface of corners' detection algorithm. + Marker's color used to mark corner. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + Color used to mark corners. + + + + + Interface of corners' detection algorithm used to detect corners. + + + + + Extract the biggest blob from image. + + + The filter locates the biggest blob in the source image and extracts it. + The filter also can use the source image for the biggest blob's location only, but extract it from + another image, which is set using property. The original image + usually is the source of the processed image. + + The filter accepts 8 bpp grayscale images and 24/32 color images for processing as source image passed to + method and also for the . + + Sample usage: + + // create filter + ExtractBiggestBlob filter = new ExtractBiggestBlob( ); + // apply the filter + Bitmap biggestBlobsImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Apply filter to an image. + + + Source image to get biggest blob from. + + Returns image of the biggest blob. + + Unsupported pixel format of the source image. + Unsupported pixel format of the original image. + Source and original images must have the same size. + The source image does not contain any blobs. + + + + + Apply filter to an image. + + + Source image to get biggest blob from. + + Returns image of the biggest blob. + + Unsupported pixel format of the source image. + Unsupported pixel format of the original image. + Source and original images must have the same size. + The source image does not contain any blobs. + + + + + Apply filter to an image (not implemented). + + + Image in unmanaged memory. + + Returns filter's result obtained by applying the filter to + the source image. + + The method is not implemented. + + + + + Apply filter to an image (not implemented). + + + Source image to be processed. + Destination image to store filter's result. + + The method is not implemented. + + + + + Position of the extracted blob. + + + After applying the filter this property keeps position of the extracted + blob in the source image. + + + + + Format translations dictionary. + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + + See for more information. + + + + + + Original image, which is the source of the processed image where the biggest blob is searched for. + + + The property may be set to . In this case the biggest blob + is extracted from the image, which is passed to image. + + + + + + Fill holes in objects in binary image. + + + The filter allows to fill black holes in white object in a binary image. + It is possible to specify maximum holes' size to fill using + and properties. + + The filter accepts binary image only, which are represented as 8 bpp images. + + Sample usage: + + // create and configure the filter + FillHoles filter = new FillHoles( ); + filter.MaxHoleHeight = 20; + filter.MaxHoleWidth = 20; + filter.CoupledSizeFiltering = false; + // apply the filter + Bitmap result = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Specifies if size filetering should be coupled or not. + + + In uncoupled filtering mode, holes are filled in the case if + their width is smaller than or equal to or height is smaller than + or equal to . But in coupled filtering mode, holes are filled only in + the case if both width and height are smaller or equal to the corresponding value. + + Default value is set to , what means coupled filtering by size. + + + + + + Maximum width of a hole to fill. + + + All holes, which have width greater than this value, are kept unfilled. + See for additional information. + + Default value is set to . + + + + + Maximum height of a hole to fill. + + + All holes, which have height greater than this value, are kept unfilled. + See for additional information. + + Default value is set to . + + + + + Format translations dictionary. + + + + + Horizontal run length smoothing algorithm. + + + The class implements horizontal run length smoothing algorithm, which + is described in: K.Y. Wong, R.G. Casey and F.M. Wahl, "Document analysis system," + IBM J. Res. Devel., Vol. 26, NO. 6,111). 647-656, 1982. + + Unlike the original description of this algorithm, this implementation must be applied + to inverted binary images containing document, i.e. white text on black background. So this + implementation fills horizontal black gaps between white pixels. + + This algorithm is usually used together with , + and then further analysis of white blobs. + + The filter accepts 8 bpp grayscale images, which are supposed to be binary inverted documents. + + Sample usage: + + // create filter + HorizontalRunLengthSmoothing hrls = new HorizontalRunLengthSmoothing( 32 ); + // apply the filter + hrls.ApplyInPlace( image ); + + + Source image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum gap size to fill (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Maximum gap size to fill (in pixels). + + + The property specifies maximum horizontal gap between white pixels to fill. + If number of black pixels between some white pixels is bigger than this value, then those + black pixels are left as is; otherwise the gap is filled with white pixels. + + + Default value is set to 10. Minimum value is 1. Maximum value is 1000. + + + + + Process gaps between objects and image borders or not. + + + The property sets if gaps between image borders and objects must be treated as + gaps between objects and also filled. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Image warp effect filter. + + + The image processing filter implements a warping filter, which + sets pixels in destination image to values from source image taken with specified offset + (see ). + + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // build warp map + int width = image.Width; + int height = image.Height; + + IntPoint[,] warpMap = new IntPoint[height, width]; + + int size = 8; + int maxOffset = -size + 1; + + for ( int y = 0; y < height; y++ ) + { + for ( int x = 0; x < width; x++ ) + { + int dx = ( x / size ) * size - x; + int dy = ( y / size ) * size - y; + + if ( dx + dy <= maxOffset ) + { + dx = ( x / size + 1 ) * size - 1 - x; + } + + warpMap[y, x] = new IntPoint( dx, dy ); + } + } + // create filter + ImageWarp filter = new ImageWarp( warpMap ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Map used for warping images (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Map used for warping images. + + + The property sets displacement map used for warping images. + The map sets offsets of pixels in source image, which are used to set values in destination + image. In other words, each pixel in destination image is set to the same value + as pixel in source image with corresponding offset (coordinates of pixel in source image + are calculated as sum of destination coordinate and corresponding value from warp map). + + + The map array is accessed using [y, x] indexing, i.e. + first dimension in the map array corresponds to Y axis of image. + + If the map is smaller or bigger than the image to process, then only minimum + overlapping area of the image is processed. This allows to prepare single big map and reuse + it for a set of images for creating similar effects. + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Jitter filter. + + + The filter moves each pixel of a source image in + random direction within a window of specified radius. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + Jitter filter = new Jitter( 4 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Jittering radius. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Jittering radius, [1, 10] + + + Determines radius in which pixels can move. + + Default value is set to 2. + + + + + + Apply filter according to the specified mask. + + + The image processing routine applies the specified to + a source image according to the specified mask - if a pixel/value in the specified mask image/array + is set to 0, then the original pixel's value is kept; otherwise the pixel is filtered using the + specified base filter. + + Mask can be specified as .NET's managed Bitmap, as + UnmanagedImage or as byte array. + In the case if mask is specified as image, it must be 8 bpp grayscale image. In all case + mask size must be the same as size of the image to process. + + Pixel formats accepted by this filter are specified by the . + + Sample usage: + + // create the filter + MaskedFilter maskedFilter = new MaskedFilter( new Sepia( ), maskImage ); + // apply the filter + maskedFilter.ApplyInPlace( image ); + + + Initial image: + + Mask image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Base filter to apply to the specified source image. + Mask image to use. + + + + + Initializes a new instance of the class. + + + Base filter to apply to the specified source image. + Unmanaged mask image to use. + + + + + Initializes a new instance of the class. + + + Base filter to apply to the specified source image. + to use. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + None of the possible mask properties were set. Need to provide mask before applying the filter. + Invalid size of provided mask. Its size must be the same as the size of the image to mask. + + + + + Base filter to apply to the source image. + + + The property specifies base filter which is applied to the specified source + image (to all pixels which have corresponding none 0 value in mask image/array). + + The base filter must implement interface. + + The base filter must never change image's pixel format. For example, if source + image's pixel format is 24 bpp color image, then it must stay the same after the base + filter is applied. + + The base filter must never change size of the source image. + + + Base filter can not be set to null. + The specified base filter must implement IFilterInformation interface. + The specified filter must never change pixel format. + + + + + Mask image to apply. + + + The property specifies mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Unmanaged mask image to apply. + + + The property specifies unmanaged mask image to use. The image must be grayscale + (8 bpp format) and have the same size as the source image to process. + + When the property is set, both and + properties are set to . + + + The mask image must be 8 bpp grayscale image. + + + + + Mask to apply. + + + The property specifies mask array to use. Size of the array must + be the same size as the size of the source image to process - its 0th dimension + must be equal to image's height and its 1st dimension must be equal to width. For + example, for 640x480 image, the mask array must be defined as: + + byte[,] mask = new byte[480, 640]; + + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + The property returns format translation table from the + . + + + + + + Mirroring filter. + + + The filter mirrors image around X and/or Y axis (horizontal and vertical + mirroring). + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + Mirror filter = new Mirror( false, true ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Specifies if mirroring should be done for X axis. + Specifies if mirroring should be done for Y axis + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Specifies if mirroring should be done for X axis (horizontal mirroring). + + + + + + Specifies if mirroring should be done for Y axis (vertical mirroring). + + + + + + Oil painting filter. + + + Processing source image the filter changes each pixels' value + to the value of pixel with the most frequent intensity within window of the + specified size. Going through the window the filters + finds which intensity of pixels is the most frequent. Then it updates value + of the pixel in the center of the window to the value with the most frequent + intensity. The update procedure creates the effect of oil painting. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + OilPainting filter = new OilPainting( 15 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Brush size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Brush size, [3, 21]. + + + Window size to search for most frequent pixels' intensity. + + Default value is set to 5. + + + + + Pixellate filter. + + + The filter processes an image creating the effect of an image with larger + pixels - pixellated image. The effect is achieved by filling image's rectangles of the + specified size by the color, which is mean color value for the corresponding rectangle. + The size of rectangles to process is set by and + properties. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + Pixellate filter = new Pixellate( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Pixel size. + + + + + Initializes a new instance of the class. + + + Pixel width. + Pixel height. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Pixel width, [2, 32]. + + + Default value is set to 8. + + + + + + + + Pixel height, [2, 32]. + + + Default value is set to 8. + + + + + + + + Pixel size, [2, 32]. + + + The property is used to set both and + simultaneously. + + + + + Simple skeletonization filter. + + + The filter build simple objects' skeletons by thinning them until + they have one pixel wide "bones" horizontally and vertically. The filter uses + and colors to distinguish + between object and background. + + The filter accepts 8 bpp grayscale images for processing. + + Sample usage: + + // create filter + SimpleSkeletonization filter = new SimpleSkeletonization( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Background pixel color. + Foreground pixel color. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Background pixel color. + + + The property sets background (none object) color to look for. + + Default value is set to 0 - black. + + + + + Foreground pixel color. + + + The property sets objects' (none background) color to look for. + + Default value is set to 255 - white. + + + + + Textured filter - filter an image using texture. + + + The filter is similar to filter in its + nature, but instead of working with source image and overly, it uses provided + filters to create images to merge (see and + properties). In addition, it uses a bit more complex formula for calculation + of destination pixel's value, which gives greater amount of flexibility:
+ dst = * ( src1 * textureValue + src2 * ( 1.0 - textureValue ) ) + * src2, + where src1 is value of pixel from the image produced by , + src2 is value of pixel from the image produced by , + dst is value of pixel in a destination image and textureValue is corresponding value + from provided texture (see or ).
+ + It is possible to set to . In this case + original source image will be used instead of result produced by the second filter. + + The filter 24 bpp color images for processing. + + Sample usage #1: + + // create filter + TexturedFilter filter = new TexturedFilter( new CloudsTexture( ), + new HueModifier( 50 ) ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Sample usage #2: + + // create filter + TexturedFilter filter = new TexturedFilter( new CloudsTexture( ), + new GrayscaleBT709( ), new Sepia( ) ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image #1: + + Result image #2: + +
+ +
+ + + Initializes a new instance of the class. + + + Generated texture. + First filter. + + + + + Initializes a new instance of the class. + + + Generated texture. + First filter. + Second filter. + + + + + Initializes a new instance of the class. + + + Texture generator. + First filter. + + + + + Initializes a new instance of the class. + + + Texture generator. + First filter. + Second filter. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + Texture size does not match image size. + Filters should not change image dimension. + + + + + Format translations dictionary. + + + See for more information. + + + + + Filter level value, [0, 1]. + + + Filtering factor determines portion of the destionation image, which is formed + as a result of merging source images using specified texture. + + Default value is set to 1.0. + + See class description for more details. + + + + + + Preserve level value + + + Preserving factor determines portion taken from the image produced + by (or from original source) without applying textured + merge to it. + + Default value is set to 0.0. + + See class description for more details. + + + + + + Generated texture. + + + Two dimensional array of texture intensities. + + Size of the provided texture should be the same as size of images, which will + be passed to the filter. + + The property has priority over this property - if + generator is specified than the static generated texture is not used. + + + + + + Texture generator. + + + Generator used to generate texture. + + The property has priority over the property. + + + + + + First filter. + + + Filter, which is used to produce first image for the merge. The filter + needs to implement interface, so it could be possible + to get information about the filter. The filter must be able to process color 24 bpp + images and produce color 24 bpp or grayscale 8 bppp images as result. + + + The specified filter does not support 24 bpp color images. + The specified filter does not produce image of supported format. + The specified filter does not implement IFilterInformation interface. + + + + + Second filter + + + Filter, which is used to produce second image for the merge. The filter + needs to implement interface, so it could be possible + to get information about the filter. The filter must be able to process color 24 bpp + images and produce color 24 bpp or grayscale 8 bppp images as result. + + The filter may be set to . In this case original source image + is used as a second image for the merge. + + + The specified filter does not support 24 bpp color images. + The specified filter does not produce image of supported format. + The specified filter does not implement IFilterInformation interface. + + + + + Merge two images using factors from texture. + + + The filter is similar to filter in its idea, but + instead of using single value for balancing amount of source's and overlay's image + values (see ), the filter uses texture, which determines + the amount to take from source image and overlay image. + + The filter uses specified texture to adjust values using the next formula:
+ dst = src * textureValue + ovr * ( 1.0 - textureValue ),
+ where src is value of pixel in a source image, ovr is value of pixel in + overlay image, dst is value of pixel in a destination image and + textureValue is corresponding value from provided texture (see or + ).
+ + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage #1: + + // create filter + TexturedMerge filter = new TexturedMerge( new TextileTexture( ) ); + // create an overlay image to merge with + filter.OverlayImage = new Bitmap( image.Width, image.Height, + PixelFormat.Format24bppRgb ); + // fill the overlay image with solid color + PointedColorFloodFill fillFilter = new PointedColorFloodFill( Color.DarkKhaki ); + fillFilter.ApplyInPlace( filter.OverlayImage ); + // apply the merge filter + filter.ApplyInPlace( image ); + + + Sample usage #2: + + // create filter + TexturedMerge filter = new TexturedMerge( new CloudsTexture( ) ); + // create 2 images with modified Hue + HueModifier hm1 = new HueModifier( 50 ); + HueModifier hm2 = new HueModifier( 200 ); + filter.OverlayImage = hm2.Apply( image ); + hm1.ApplyInPlace( image ); + // apply the merge filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image #1: + + Result image #2: + +
+ +
+ + + Initializes a new instance of the class. + + + Generated texture. + + + + + Initializes a new instance of the class. + + + Texture generator. + + + + + Process the filter on the specified image. + + + Source image data. + Overlay image data. + + + + + Format translations dictionary. + + + See for more information. + + + + + Generated texture. + + + Two dimensional array of texture intensities. + + In the case if image passed to the filter is smaller or + larger than the specified texture, than image's region is processed, which equals to the + minimum overlapping area. + + The property has priority over this property - if + generator is specified than the static generated texture is not used. + + + + + + Texture generator. + + + Generator used to generate texture. + + The property has priority over the property. + + + + + + Texturer filter. + + + Adjust pixels’ color values using factors from the given texture. In conjunction with different type + of texture generators, the filter may produce different type of interesting effects. + + The filter uses specified texture to adjust values using the next formula:
+ dst = src * + src * * textureValue,
+ where src is value of pixel in a source image, dst is value of pixel in a destination image and + textureValue is corresponding value from provided texture (see or + ). Using and values it is possible + to control the portion of source data affected by texture. +
+ + In most cases the and properties are set in such + way, that + = 1. But there is no limitations actually + for those values, so their sum may be as greater, as lower than 1 in order create different type of + effects. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + Texturer filter = new Texturer( new TextileTexture( ), 0.3, 0.7 ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + +
+ +
+ + + Initializes a new instance of the class. + + + Generated texture. + + + + + Initializes a new instance of the class. + + + Generated texture. + Filter level value (see property). + Preserve level value (see property). + + + + + Initializes a new instance of the class. + + + Texture generator. + + + + + Initializes a new instance of the class. + + + Texture generator. + Filter level value (see property). + Preserve level value (see property). + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + See for more information. + + + + + Filter level value. + + + Filtering factor determines image fraction to filter - to multiply + by values from the provided texture. + + Default value is set to 0.5. + + See class description for more details. + + + + + + Preserve level value. + + + Preserving factor determines image fraction to keep from filtering. + + Default value is set to 0.5. + + See class description for more details. + + + + + + Generated texture. + + + Two dimensional array of texture intensities. + + In the case if image passed to the filter is smaller or + larger than the specified texture, than image's region is processed, which equals to the + minimum overlapping area. + + The property has priority over this property - if + generator is specified than the static generated texture is not used. + + + + + + Texture generator. + + + Generator used to generate texture. + + The property has priority over the property. + + + + + + Vertical run length smoothing algorithm. + + + The class implements vertical run length smoothing algorithm, which + is described in: K.Y. Wong, R.G. Casey and F.M. Wahl, "Document analysis system," + IBM J. Res. Devel., Vol. 26, NO. 6,111). 647-656, 1982. + + Unlike the original description of this algorithm, this implementation must be applied + to inverted binary images containing document, i.e. white text on black background. So this + implementation fills vertical black gaps between white pixels. + + This algorithm is usually used together with , + and then further analysis of white blobs. + + The filter accepts 8 bpp grayscale images, which are supposed to be binary inverted documents. + + Sample usage: + + // create filter + VerticalRunLengthSmoothing vrls = new VerticalRunLengthSmoothing( 32 ); + // apply the filter + vrls.ApplyInPlace( image ); + + + Source image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum gap size to fill (see ). + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Maximum gap size to fill (in pixels). + + + The property specifies maximum vertical gap between white pixels to fill. + If number of black pixels between some white pixels is bigger than this value, then those + black pixels are left as is; otherwise the gap is filled with white pixels. + + + Default value is set to 10. Minimum value is 1. Maximum value is 1000. + + + + + Process gaps between objects and image borders or not. + + + The property sets if gaps between image borders and objects must be treated as + gaps between objects and also filled. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Simple water wave effect filter. + + + The image processing filter implements simple water wave effect. Using + properties of the class, it is possible to set number of vertical/horizontal waves, + as well as their amplitude. + + Bilinear interpolation is used to create smooth effect. + + The filter accepts 8 bpp grayscale images and 24/32 + color images for processing. + + Sample usage: + + // create filter + WaterWave filter = new WaterWave( ); + filter.HorizontalWavesCount = 10; + filter.HorizontalWavesAmplitude = 5; + filter.VerticalWavesCount = 3; + filter.VerticalWavesAmplitude = 15; + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Number of horizontal waves, [1, 10000]. + + + Default value is set to 5. + + + + + Number of vertical waves, [1, 10000]. + + + Default value is set to 5. + + + + + Amplitude of horizontal waves measured in pixels, [0, 10000]. + + + Default value is set to 10. + + + + + Amplitude of vertical waves measured in pixels, [0, 10000]. + + + Default value is set to 10. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Adaptive Smoothing - noise removal with edges preserving. + + + The filter is aimed to perform image smoothing, but keeping sharp edges. + This makes it applicable to additive noise removal and smoothing objects' interiors, but + not applicable for spikes (salt and pepper noise) removal. + + The next calculations are done for each pixel: + + weights are calculate for 9 pixels - pixel itself and 8 neighbors: + + w(x, y) = exp( -1 * (Gx^2 + Gy^2) / (2 * factor^2) ) + Gx(x, y) = (I(x + 1, y) - I(x - 1, y)) / 2 + Gy(x, y) = (I(x, y + 1) - I(x, y - 1)) / 2 + , + where factor is a configurable value determining smoothing's quality. + sum of 9 weights is calclated (weightTotal); + sum of 9 weighted pixel values is calculatd (total); + destination pixel is calculated as total / weightTotal. + + + Description of the filter was found in "An Edge Detection Technique Using + the Facet Model and Parameterized Relaxation Labeling" by Ioannis Matalas, Student Member, + IEEE, Ralph Benjamin, and Richard Kitney. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + AdaptiveSmoothing filter = new AdaptiveSmoothing( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Factor value. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Factor value. + + + Factor determining smoothing quality (see + documentation). + + Default value is set to 3. + + + + + + Bilateral filter implementation - edge preserving smoothing and noise reduction that uses chromatic and spatial factors. + + + + Bilateral filter conducts "selective" Gaussian smoothing of areas of same color (domains) which removes noise and contrast artifacts + while preserving sharp edges. + + Two major parameters and define the result of the filter. + By changing these parameters you may achieve either only noise reduction with little change to the + image or get nice looking effect to the entire image. + + Although the filter can use parallel processing large values + (greater than 25) on high resolution images may decrease speed of processing. Also on high + resolution images small values (less than 9) may not provide noticeable + results. + + More details on the algorithm can be found by following this + link. + + The filter accepts 8 bpp grayscale images and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + BilateralSmoothing filter = new BilateralSmoothing( ); + filter.KernelSize = 7; + filter.SpatialFactor = 10; + filter.ColorFactor = 60; + filter.ColorPower = 0.5; + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Specifies if exception must be thrown in the case a large + kernel size is used which may lead + to significant performance issues. + + + + Default value is set to . + + + + + + Enable or not parallel processing on multi-core CPUs. + + + If the property is set to , then this image processing + routine will run in parallel on the systems with multiple core/CPUs. The + is used to make it parallel. + + Default value is set to . + + + + + + Size of a square for limiting surrounding pixels that take part in calculations, [3, 255]. + + + The greater the value the more is the general power of the filter. Small values + (less than 9) on high resolution images (3000 pixels wide) do not give significant results. + Large values increase the number of calculations and degrade performance. + + The value of this property must be an odd integer in the [3, 255] range if + is set to or in the [3, 25] range + otherwise. + + Default value is set to 9. + + + The specified value is out of range (see + eception message for details). + The value of this must be an odd integer. + + + + + Determines smoothing power within a color domain (neighbor pixels of similar color), >= 1. + + + + Default value is set to 10. + + + + + + Exponent power, used in Spatial function calculation, >= 1. + + + + Default value is set to 2. + + + + + + Determines the variance of color for a color domain, >= 1. + + + + Default value is set to 50. + + + + + + Exponent power, used in Color function calculation, >= 1. + + + + Default value is set to 2. + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Conservative smoothing. + + + The filter implements conservative smoothing, which is a noise reduction + technique that derives its name from the fact that it employs a simple, fast filtering + algorithm that sacrifices noise suppression power in order to preserve the high spatial + frequency detail (e.g. sharp edges) in an image. It is explicitly designed to remove noise + spikes - isolated pixels of exceptionally low or high pixel intensity + (salt and pepper noise). + + If the filter finds a pixel which has minimum/maximum value compared to its surrounding + pixel, then its value is replaced by minimum/maximum value of those surrounding pixel. + For example, lets suppose the filter uses kernel size of 3x3, + which means each pixel has 8 surrounding pixel. If pixel's value is smaller than any value + of surrounding pixels, then the value of the pixel is replaced by minimum value of those surrounding + pixels. + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + ConservativeSmoothing filter = new ConservativeSmoothing( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Kernel size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Kernel size, [3, 25]. + + + Determines the size of pixel's square used for smoothing. + + Default value is set to 3. + + The value should be odd. + + + + + + Median filter. + + + The median filter is normally used to reduce noise in an image, somewhat like + the mean filter. However, it often does a better job than the mean + filter of preserving useful detail in the image. + + Each pixel of the original source image is replaced with the median of neighboring pixel + values. The median is calculated by first sorting all the pixel values from the surrounding + neighborhood into numerical order and then replacing the pixel being considered with the + middle pixel value. + + The filter accepts 8 bpp grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + Median filter = new Median( ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Processing square size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Processing square size for the median filter, [3, 25]. + + + Default value is set to 3. + + The value should be odd. + + + + + + Performs backward quadrilateral transformation into an area in destination image. + + + The class implements backward quadrilateral transformation algorithm, + which allows to transform any rectangular image into any quadrilateral area + in a given destination image. The idea of the algorithm is based on homogeneous + transformation and its math is described by Paul Heckbert in his + "Projective Mappings for Image Warping" paper. + + + The image processing routines implements similar math to , + but performs it in backward direction. + + The image processing filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // define quadrilateral's corners + List<IntPoint> corners = new List<IntPoint>( ); + corners.Add( new IntPoint( 99, 99 ) ); + corners.Add( new IntPoint( 156, 79 ) ); + corners.Add( new IntPoint( 184, 126 ) ); + corners.Add( new IntPoint( 122, 150 ) ); + // create filter + BackwardQuadrilateralTransformation filter = + new BackwardQuadrilateralTransformation( sourceImage, corners ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Source image: + + Destination image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Source image to be transformed into specified quadrilateral + (see ). + + + + + Initializes a new instance of the class. + + + Source unmanaged image to be transformed into specified quadrilateral + (see ). + + + + + Initializes a new instance of the class. + + + Source image to be transformed into specified quadrilateral + (see ). + Quadrilateral in destination image to transform into. + + + + + Initializes a new instance of the class. + + + Source unmanaged image to be transformed into specified quadrilateral + (see ). + Quadrilateral in destination image to transform into. + + + + + Process the filter on the specified image. + + + Image data to process by the filter. + + Destination quadrilateral was not set. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Source image to be transformed into specified quadrilateral. + + + The property sets the source image, which will be transformed + to the specified quadrilateral and put into destination image the filter is applied to. + + The source image must have the same pixel format as a destination image the filter + is applied to. Otherwise exception will be generated when filter is applied. + + Setting this property will clear the property - + only one source image is allowed: managed or unmanaged. + + + + + + Source unmanaged image to be transformed into specified quadrilateral. + + + The property sets the source image, which will be transformed + to the specified quadrilateral and put into destination image the filter is applied to. + + The source image must have the same pixel format as a destination image the filter + is applied to. Otherwise exception will be generated when filter is applied. + + Setting this property will clear the property - + only one source image is allowed: managed or unmanaged. + + + + + + Quadrilateral in destination image to transform into. + + + The property specifies 4 corners of a quadrilateral area + in destination image where the source image will be transformed into. + + + + + + Specifies if bilinear interpolation should be used or not. + + + Default value is set to - interpolation + is used. + + + + + + Crop an image. + + + + The filter crops an image providing a new image, which contains only the specified + rectangle of the original image. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + Crop filter = new Crop( new Rectangle( 75, 75, 320, 240 ) ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + Rectangle to crop. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rectangle to crop. + + + + + Performs quadrilateral transformation of an area in a given source image. + + + The class implements quadrilateral transformation algorithm, + which allows to transform any quadrilateral from a given source image + to a rectangular image. The idea of the algorithm is based on homogeneous + transformation and its math is described by Paul Heckbert in his + "Projective Mappings for Image Warping" paper. + + + The image processing filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // define quadrilateral's corners + List<IntPoint> corners = new List<IntPoint>( ); + corners.Add( new IntPoint( 99, 99 ) ); + corners.Add( new IntPoint( 156, 79 ) ); + corners.Add( new IntPoint( 184, 126 ) ); + corners.Add( new IntPoint( 122, 150 ) ); + // create filter + QuadrilateralTransformation filter = + new QuadrilateralTransformation( corners, 200, 200 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + New image width. + + + + + New image height. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + Source quadrilateral was not set. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + Default value is set to . + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Specifies if bilinear interpolation should be used or not. + + + Default value is set to - interpolation + is used. + + + + + + Performs quadrilateral transformation using bilinear algorithm for interpolation. + + + The class is deprecated and should be used instead. + + + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + The specified quadrilateral's corners are outside of the given image. + + + + + Format translations dictionary. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Performs quadrilateral transformation using nearest neighbor algorithm for interpolation. + + + The class is deprecated and should be used instead. + + + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + The specified quadrilateral's corners are outside of the given image. + + + + + Format translations dictionary. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Resize image using bicubic interpolation algorithm. + + + The class implements image resizing filter using bicubic + interpolation algorithm. It uses bicubic kernel W(x) as described on + Wikipedia + (coefficient a is set to -0.5). + + The filter accepts 8 grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter + ResizeBicubic filter = new ResizeBicubic( 400, 300 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Width of new image. + Height of new image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Resize image using bilinear interpolation algorithm. + + + The class implements image resizing filter using bilinear + interpolation algorithm. + + The filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // create filter + ResizeBilinear filter = new ResizeBilinear( 400, 300 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Width of the new image. + Height of the new image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Resize image using nearest neighbor algorithm. + + + The class implements image resizing filter using nearest + neighbor algorithm, which does not assume any interpolation. + + The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp + color images for processing. + + Sample usage: + + // create filter + ResizeNearestNeighbor filter = new ResizeNearestNeighbor( 400, 300 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Width of the new image. + Height of the new image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rotate image using bicubic interpolation. + + + The class implements image rotation filter using bicubic + interpolation algorithm. It uses bicubic kernel W(x) as described on + Wikipedia + (coefficient a is set to -0.5). + + Rotation is performed in counterclockwise direction. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateBicubic filter = new RotateBicubic( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property + to . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rotate image using bilinear interpolation. + + + Rotation is performed in counterclockwise direction. + + The class implements image rotation filter using bilinear + interpolation algorithm. + + The filter accepts 8 bpp grayscale images and 24 bpp + color images for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateBilinear filter = new RotateBilinear( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property + to . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Rotate image using nearest neighbor algorithm. + + + The class implements image rotation filter using nearest + neighbor algorithm, which does not assume any interpolation. + + Rotation is performed in counterclockwise direction. + + The filter accepts 8/16 bpp grayscale images and 24/48 bpp color image + for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateNearestNeighbor filter = new RotateNearestNeighbor( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property to + . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Shrink an image by removing specified color from its boundaries. + + + Removes pixels with specified color from image boundaries making + the image smaller in size. + + The filter accepts 8 bpp grayscale and 24 bpp color images for processing. + + Sample usage: + + // create filter + Shrink filter = new Shrink( Color.Black ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Color to remove from boundaries. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Color to remove from boundaries. + + + + + + Performs quadrilateral transformation of an area in the source image. + + + The class implements simple algorithm described by + Olivier Thill + for transforming quadrilateral area from a source image into rectangular image. + The idea of the algorithm is based on finding for each line of destination + rectangular image a corresponding line connecting "left" and "right" sides of + quadrilateral in a source image. Then the line is linearly transformed into the + line in destination image. + + Due to simplicity of the algorithm it does not do any correction for perspective. + + + To make sure the algorithm works correctly, it is preferred if the + "left-top" corner of the quadrilateral (screen coordinates system) is + specified first in the list of quadrilateral's corners. At least + user need to make sure that the "left" side (side connecting first and the last + corner) and the "right" side (side connecting second and third corners) are + not horizontal. + + Use to avoid the above mentioned limitations, + which is a more advanced quadrilateral transformation algorithms (although a bit more + computationally expensive). + + The image processing filter accepts 8 grayscale images and 24/32 bpp + color images for processing. + + Sample usage: + + // define quadrilateral's corners + List<IntPoint> corners = new List<IntPoint>( ); + corners.Add( new IntPoint( 99, 99 ) ); + corners.Add( new IntPoint( 156, 79 ) ); + corners.Add( new IntPoint( 184, 126 ) ); + corners.Add( new IntPoint( 122, 150 ) ); + // create filter + SimpleQuadrilateralTransformation filter = + new SimpleQuadrilateralTransformation( corners, 200, 200 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + New image width. + + + + + New image height. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + Width of the new transformed image. + Height of the new transformed image. + + This constructor sets to + , which means that destination image will have width and + height as specified by user. + + + + + Initializes a new instance of the class. + + + Corners of the source quadrilateral area. + + This constructor sets to + , which means that destination image will have width and + height automatically calculated based on property. + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + Source quadrilateral was not set. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Automatic calculation of destination image or not. + + + The property specifies how to calculate size of destination (transformed) + image. If the property is set to , then + and properties have effect and destination image's size is + specified by user. If the property is set to , then setting the above + mentioned properties does not have any effect, but destionation image's size is + automatically calculated from property - width and height + come from length of longest edges. + + + Default value is set to . + + + + + + Quadrilateral's corners in source image. + + + The property specifies four corners of the quadrilateral area + in the source image to be transformed. + + See documentation to the + class itself for additional information. + + + + + + Width of the new transformed image. + + + The property defines width of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's width + is calculated automatically based on property. + + + + + + Height of the new transformed image. + + + The property defines height of the destination image, which gets + transformed quadrilateral image. + + Setting the property does not have any effect, if + property is set to . In this case destination image's height + is calculated automatically based on property. + + + + + + Specifies if bilinear interpolation should be used or not. + + + Default value is set to - interpolation + is used. + + + + + + Transform polar image into rectangle. + + + The image processing routine is opposite transformation to the one done by + routine, i.e. transformation from polar image into rectangle. The produced effect is similar to GIMP's + "Polar Coordinates" distortion filter (or its equivalent in Photoshop). + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + TransformFromPolar filter = new TransformFromPolar( ); + filter.OffsetAngle = 0; + filter.CirlceDepth = 1; + filter.UseOriginalImageSize = false; + filter.NewSize = new Size( 360, 120 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Circularity coefficient of the mapping, [0, 1]. + + + The property specifies circularity coefficient of the mapping to be done. + If the coefficient is set to 1, then destination image will be produced by mapping + ideal circle from the source image, which is placed in source image's centre and its + radius equals to the minimum distance from centre to the image’s edge. If the coefficient + is set to 0, then the mapping will use entire area of the source image (circle will + be extended into direction of edges). Changing the property from 0 to 1 user may balance + circularity of the produced output. + + Default value is set to 1. + + + + + + Offset angle used to shift mapping, [-360, 360] degrees. + + + The property specifies offset angle, which can be used to shift + mapping in clockwise direction. For example, if user sets this property to 30, then + start of polar mapping is shifted by 30 degrees in clockwise direction. + + Default value is set to 0. + + + + + + Specifies direction of mapping. + + + The property specifies direction of mapping source image. If the + property is set to , the image is mapped in clockwise direction; + otherwise in counter clockwise direction. + + Default value is set to . + + + + + + Specifies if centre of the source image should to top or bottom of the result image. + + + The property specifies position of the source image's centre in the destination image. + If the property is set to , then it goes to the top of the result image; + otherwise it goes to the bottom. + + Default value is set to . + + + + + + Size of destination image. + + + The property specifies size of result image produced by this image + processing routine in the case if property + is set to . + + Both width and height must be in the [1, 10000] range. + + Default value is set to 200 x 200. + + + + + + Use source image size for destination or not. + + + The property specifies if the image processing routine should create destination + image of the same size as original image or of the size specified by + property. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Transform rectangle image into circle (to polar coordinates). + + + The image processing routine does transformation of the source image into + circle (polar transformation). The produced effect is similar to GIMP's "Polar Coordinates" + distortion filter (or its equivalent in Photoshop). + + + The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // create filter + TransformToPolar filter = new TransformToPolar( ); + filter.OffsetAngle = 0; + filter.CirlceDepth = 1; + filter.UseOriginalImageSize = false; + filter.NewSize = new Size( 200, 200 ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Calculates new image size. + + + Source image data. + + New image size - size of the destination image. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Circularity coefficient of the mapping, [0, 1]. + + + The property specifies circularity coefficient of the mapping to be done. + If the coefficient is set to 1, then the mapping will produce ideal circle. If the coefficient + is set to 0, then the mapping will occupy entire area of the destination image (circle will + be extended into direction of edges). Changing the property from 0 to 1 user may balance + circularity of the produced output. + + + Default value is set to 1. + + + + + + Offset angle used to shift mapping, [-360, 360] degrees. + + + The property specifies offset angle, which can be used to shift + mapping in counter clockwise direction. For example, if user sets this property to 30, then + start of polar mapping is shifted by 30 degrees in counter clockwise direction. + + Default value is set to 0. + + + + + + Specifies direction of mapping. + + + The property specifies direction of mapping source image's X axis. If the + property is set to , the image is mapped in clockwise direction; + otherwise in counter clockwise direction. + + Default value is set to . + + + + + + Specifies if top of the source image should go to center or edge of the result image. + + + The property specifies position of the source image's top line in the destination + image. If the property is set to , then it goes to the center of the result image; + otherwise it goes to the edge. + + Default value is set to . + + + + + + Fill color to use for unprocessed areas. + + + The property specifies fill color, which is used to fill unprocessed areas. + In the case if is greater than 0, then there will be some areas on + the image's edge, which are not filled by the produced "circular" image, but are filled by + the specified color. + + + Default value is set to . + + + + + + Size of destination image. + + + The property specifies size of result image produced by this image + processing routine in the case if property + is set to . + + Both width and height must be in the [1, 10000] range. + + Default value is set to 200 x 200. + + + + + + Use source image size for destination or not. + + + The property specifies if the image processing routine should create destination + image of the same size as original image or of the size specified by + property. + + Default value is set to . + + + + + + Format translations dictionary. + + + See + documentation for additional information. + + + + + Extract YCbCr channel from image. + + + The filter extracts specified YCbCr channel of color image and returns + it in the form of grayscale image. + + The filter accepts 24 and 32 bpp color images and produces + 8 bpp grayscale images. + + Sample usage: + + // create filter + YCbCrExtractChannel filter = new YCbCrExtractChannel( YCbCr.CrIndex ); + // apply the filter + Bitmap crChannel = filter.Apply( image ); + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + YCbCr channel to extract. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + YCbCr channel to extract. + + + Default value is set to (Y channel). + + Invalid channel was specified. + + + + + Color filtering in YCbCr color space. + + + The filter operates in YCbCr color space and filters + pixels, which color is inside/outside of the specified YCbCr range - + it keeps pixels with colors inside/outside of the specified range and fills the + rest with specified color. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + YCbCrFiltering filter = new YCbCrFiltering( ); + // set color ranges to keep + filter.Cb = new Range( -0.2f, 0.0f ); + filter.Cr = new Range( 0.26f, 0.5f ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Range of Y component. + Range of Cb component. + Range of Cr component. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Format translations dictionary. + + + + + Range of Y component, [0, 1]. + + + + + + Range of Cb component, [-0.5, 0.5]. + + + + + + Range of Cr component, [-0.5, 0.5]. + + + + + + Fill color used to fill filtered pixels. + + + + + Determines, if pixels should be filled inside or outside specified + color range. + + + Default value is set to , which means + the filter removes colors outside of the specified range. + + + + + Determines, if Y value of filtered pixels should be updated. + + + The property specifies if Y channel of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if Cb value of filtered pixels should be updated. + + + The property specifies if Cb channel of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Determines, if Cr value of filtered pixels should be updated. + + + The property specifies if Cr channel of filtered pixels should be + updated with value from fill color or not. + + Default value is set to . + + + + + Linear correction of YCbCr channels. + + + The filter operates in YCbCr color space and provides + with the facility of linear correction of its channels - mapping specified channels' + input ranges to specified output ranges. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create filter + YCbCrLinear filter = new YCbCrLinear( ); + // configure the filter + filter.InCb = new Range( -0.276f, 0.163f ); + filter.InCr = new Range( -0.202f, 0.500f ); + // apply the filter + filter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + + + + Y component's input range. + + + Y component is measured in the range of [0, 1]. + + + + + Cb component's input range. + + + Cb component is measured in the range of [-0.5, 0.5]. + + + + + Cr component's input range. + + + Cr component is measured in the range of [-0.5, 0.5]. + + + + + Y component's output range. + + + Y component is measured in the range of [0, 1]. + + + + + Cb component's output range. + + + Cb component is measured in the range of [-0.5, 0.5]. + + + + + Cr component's output range. + + + Cr component is measured in the range of [-0.5, 0.5]. + + + + + Format translations dictionary. + + + + + Replace channel of YCbCr color space. + + + Replaces specified YCbCr channel of color image with + specified grayscale imge. + + The filter is quite useful in conjunction with filter + (however may be used alone in some cases). Using the filter + it is possible to extract one of YCbCr channel, perform some image processing with it and then + put it back into the original color image. + + The filter accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // create YCbCrExtractChannel filter for channel extracting + YCbCrExtractChannel extractFilter = new YCbCrExtractChannel( + YCbCr.CbIndex ); + // extract Cb channel + Bitmap cbChannel = extractFilter.Apply( image ); + // invert the channel + Invert invertFilter = new Invert( ); + invertFilter.ApplyInPlace( cbChannel ); + // put the channel back into the source image + YCbCrReplaceChannel replaceFilter = new YCbCrReplaceChannel( + YCbCr.CbIndex, cbChannel ); + replaceFilter.ApplyInPlace( image ); + + + Initial image: + + Result image: + + + + + + + + + Initializes a new instance of the class. + + + YCbCr channel to replace. + + + + + Initializes a new instance of the class. + + + YCbCr channel to replace. + Channel image to use for replacement. + + + + + Initializes a new instance of the class. + + + YCbCr channel to replace. + Unmanaged channel image to use for replacement. + + + + + Process the filter on the specified image. + + + Source image data. + Image rectangle for processing by the filter. + + Channel image was not specified. + Channel image size does not match source + image size. + + + + + Format translations dictionary. + + + + + YCbCr channel to replace. + + + Default value is set to (Y channel). + + Invalid channel was specified. + + + + + Grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8bpp indexed image (grayscale). + + + + + Unmanaged grayscale image to use for channel replacement. + + + + Setting this property will clear the property - + only one channel image is allowed: managed or unmanaged. + + + Channel image should be 8bpp indexed image (grayscale). + + + + + Information about FITS image's frame. + + + + + Information about image's frame. + + + This is a base class, which keeps basic information about image, like its width, + height, etc. Classes, which inherit from this, may define more properties describing certain + image formats. + + + + + Image's width. + + + + + Image's height. + + + + + Number of bits per image's pixel. + + + + + Frame's index. + + + + + Total frames in the image. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Image's width. + Image's height. + Number of bits per image's pixel. + Frame's index. + Total frames in the image. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Image's width. + + + + + Image's height. + + + + + Number of bits per image's pixel. + + + + + Frame's index. + + + Some image formats support storing multiple frames in one image file. + The property specifies index of a particular frame. + + + + + Total frames in the image. + + + Some image formats support storing multiple frames in one image file. + The property specifies total number of frames in image file. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Image's width. + Image's height. + Number of bits per image's pixel. + Frame's index. + Total frames in the image. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Original bits per pixel. + + + The property specifies original number of bits per image's pixel. For + FITS images the value may be equal to 8, 16, 32, -32 (32 bit image with float data + type for pixel encoding), -64 (64 bit image with double data type for pixel encoding). + + + + + + Minimum data value found during parsing FITS image. + + + Minimum and maximum data values are used to scale image's data converting + them from original bits per pixel format to + supported bits per pixel format. + + + + + Maximum data value found during parsing FITS image. + + + Minimum and maximum data values are used to scale image's data converting + them from original bits per pixel format to + supported bits per pixel format. + + + + + Telescope used for object's observation. + + + + + Object acquired during observation. + + + + + Observer doing object's acquiring. + + + + + Instrument used for observation. + + + + + FITS image format decoder. + + + The FITS (an acronym derived from "Flexible Image Transport System") format + is an astronomical image and table format created and supported by NASA. FITS is the most + commonly used in astronomy and is designed specifically for scientific data. Different astronomical + organizations keep their images acquired using telescopes and other equipment in FITS format. + + The class extracts image frames only from the main data section of FITS file. + 2D (single frame) and 3D (series of frames) data structures are supported. + + During image reading/parsing, its data are scaled using minimum and maximum values of + the source image data. FITS tags are not used for this purpose - data are scaled from the + [min, max] range found to the range of supported image format ([0, 255] for 8 bpp grayscale + or [0, 65535] for 16 bpp grayscale image). + + + + + + Image decoder interface, which specifies set of methods, which should be + implemented by image decoders for different file formats. + + + The interface specifies set of methods, which are suitable not + only for simple one-frame image formats. The interface also defines methods + to work with image formats designed to store multiple frames and image formats + which provide different type of image description (like acquisition + parameters, etc). + + + + + + Decode first frame of image from the specified stream. + + + Source stream, which contains encoded image. + + Returns decoded image frame. + + + For one-frame image formats the method is supposed to decode single + available frame. For multi-frame image formats the first frame should be + decoded. + + Implementations of this method may throw + exception to report about unrecognized image + format, exception to report about incorrectly + formatted image or exception to report if + certain formats are not supported. + + + + + + Open specified stream. + + + Stream to open. + + Returns number of images found in the specified stream. + + Implementation of this method is supposed to read image's header, + checking for correct image format and reading its atributes. + + Implementations of this method may throw + exception to report about unrecognized image + format, exception to report about incorrectly + formatted image or exception to report if + certain formats are not supported. + + + + + + Decode specified frame. + + + Image frame to decode. + Receives information about decoded frame. + + Returns decoded frame. + + Implementations of this method may throw + exception in the case if no image + stream was opened previously, in the + case if stream does not contain frame with specified index or + exception to report about incorrectly formatted image. + + + + + + Close decoding of previously opened stream. + + + Implementations of this method don't close stream itself, but just close + decoding cleaning all associated data with it. + + + + + Decode first frame of FITS image. + + + Source stream, which contains encoded image. + + Returns decoded image frame. + + Not a FITS image format. + Format of the FITS image is not supported. + The stream contains invalid (broken) FITS image. + + + + + Open specified stream. + + + Stream to open. + + Returns number of images found in the specified stream. + + Not a FITS image format. + Format of the FITS image is not supported. + The stream contains invalid (broken) FITS image. + + + + + Decode specified frame. + + + Image frame to decode. + Receives information about decoded frame. + + Returns decoded frame. + + No image stream was opened previously. + Stream does not contain frame with specified index. + The stream contains invalid (broken) FITS image. + + + + + Close decoding of previously opened stream. + + + The method does not close stream itself, but just closes + decoding cleaning all associated data with it. + + + + + Image decoder to decode different custom image file formats. + + + The class represent a help class, which simplifies decoding of image + files finding appropriate image decoder automatically (using list of registered + image decoders). Instead of using required image decoder directly, users may use this + class, which will find required decoder by file's extension. + + By default the class registers on its own all decoders, which are available in + AForge.Imaging.Formats library. If user has implementation of his own image decoders, he + needs to register them using method to be able to use them through + the class. + + If the class can not find appropriate decode in the list of registered + decoders, it passes file to .NET's image decoder for decoding. + + Sample usage: + + // sample file name + string fileName = "myFile.pnm"; + // decode image file + Bitmap = ImageDecoder.DecodeFromFile( fileName ); + + + + + + + + + + Register image decoder for a specified file extension. + + + File extension to register decoder for ("bmp", for example). + Image decoder to use for the specified file extension. + + The method allows to register image decoder object, which should be used + to decode images from files with the specified extension. + + + + + Decode first frame for the specified file. + + + File name to read image from. + + Return decoded image. In the case if file format support multiple + frames, the method return the first frame. + + The method uses table of registered image decoders to find the one, + which should be used for the specified file. If there is not appropriate decoder + found, the method uses default .NET's image decoding routine (see + ). + + + + + Decode first frame for the specified file. + + + File name to read image from. + Information about the decoded image. + + Return decoded image. In the case if file format support multiple + frames, the method return the first frame. + + The method uses table of registered image decoders to find the one, + which should be used for the specified file. If there is not appropriate decoder + found, the method uses default .NET's image decoding routine (see + ). + + + + + Information about PNM image's frame. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Image's width. + Image's height. + Number of bits per image's pixel. + Frame's index. + Total frames in the image. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + PNM file version (format), [1, 6]. + + + + + Maximum pixel's value in source PNM image. + + + The value is used to scale image's data converting them + from original data range to the range of + supported bits per pixel format. + + + + + PNM image format decoder. + + + The PNM (an acronym derived from "Portable Any Map") format is an + abstraction of the PBM, PGM and PPM formats. I.e. the name "PNM" refers collectively + to PBM (binary images), PGM (grayscale images) and PPM (color image) image formats. + + Image in PNM format can be found in different scientific databases and laboratories, + for example Yale Face Database and AT&T Face Database. + + Only PNM images of P5 (binary encoded PGM) and P6 (binary encoded PPM) formats + are supported at this point. + + The maximum supported pixel value is 255 at this point. + + The class supports only one-frame PNM images. As it is specified in format + specification, the multi-frame PNM images has appeared starting from 2000. + + + + + + + Decode first frame of PNM image. + + + Source stream, which contains encoded image. + + Returns decoded image frame. + + Not a PNM image format. + Format of the PNM image is not supported. + The stream contains invalid (broken) PNM image. + + + + + Open specified stream. + + + Stream to open. + + Returns number of images found in the specified stream. + + Not a PNM image format. + Format of the PNM image is not supported. + The stream contains invalid (broken) PNM image. + + + + + Decode specified frame. + + + Image frame to decode. + Receives information about decoded frame. + + Returns decoded frame. + + No image stream was opened previously. + Stream does not contain frame with specified index. + The stream contains invalid (broken) PNM image. + + + + + Close decoding of previously opened stream. + + + The method does not close stream itself, but just closes + decoding cleaning all associated data with it. + + + + + Set of tools used internally in AForge.Imaging.Formats library. + + + + + Create and initialize new grayscale image. + + + Image width. + Image height. + + Returns new created grayscale image. + + AForge.Imaging.Image.CreateGrayscaleImage() function + could be used instead, which does the some. But it was not used to get + rid of dependency on AForge.Imaing library. + + + + + Read specified amount of bytes from the specified stream. + + + Source sream to read data from. + Buffer to read data into. + Offset in buffer to put data into. + Number of bytes to read. + + Returns total number of bytes read. It may be smaller than requested amount only + in the case if end of stream was reached. + + This tool function guarantees that requested number of bytes + was read from the source stream (.NET streams don't guarantee this and may return less bytes + than it was requested). Only in the case if end of stream was reached, the function + may return with less bytes read. + + + + + + Horizontal intensity statistics. + + + The class provides information about horizontal distribution + of pixel intensities, which may be used to locate objects, their centers, etc. + + + The class accepts grayscale (8 bpp indexed and 16 bpp) and color (24, 32, 48 and 64 bpp) images. + In the case of 32 and 64 bpp color images, the alpha channel is not processed - statistics is not + gathered for this channel. + + Sample usage: + + // collect statistics + HorizontalIntensityStatistics his = new HorizontalIntensityStatistics( sourceImage ); + // get gray histogram (for grayscale image) + Histogram histogram = his.Gray; + // output some histogram's information + System.Diagnostics.Debug.WriteLine( "Mean = " + histogram.Mean ); + System.Diagnostics.Debug.WriteLine( "Min = " + histogram.Min ); + System.Diagnostics.Debug.WriteLine( "Max = " + histogram.Max ); + + + Sample grayscale image with its horizontal intensity histogram: + + + + + + + + + Initializes a new instance of the class. + + + Source image. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source image data. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Gather horizontal intensity statistics for specified image. + + + Source image. + + + + + Histogram for red channel. + + + + + + Histogram for green channel. + + + + + + Histogram for blue channel. + + + + + + Histogram for gray channel (intensities). + + + + + + Value wich specifies if the processed image was color or grayscale. + + + If the property equals to true, then the + property should be used to retrieve histogram for the processed grayscale image. + Otherwise , and property + should be used to retrieve histogram for particular RGB channel of the processed + color image. + + + + + Hough circle. + + + Represents circle of Hough transform. + + + + + + + Circle center's X coordinate. + + + + + Circle center's Y coordinate. + + + + + Circle's radius. + + + + + Line's absolute intensity. + + + + + Line's relative intensity. + + + + + Initializes a new instance of the class. + + + Circle's X coordinate. + Circle's Y coordinate. + Circle's radius. + Circle's absolute intensity. + Circle's relative intensity. + + + + + Compare the object with another instance of this class. + + + Object to compare with. + + A signed number indicating the relative values of this instance and value: 1) greater than zero - + this instance is greater than value; 2) zero - this instance is equal to value; + 3) greater than zero - this instance is less than value. + + The sort order is descending. + + + Object are compared using their intensity value. + + + + + + Hough circle transformation. + + + The class implements Hough circle transformation, which allows to detect + circles of specified radius in an image. + + The class accepts binary images for processing, which are represented by 8 bpp grayscale images. + All black pixels (0 pixel's value) are treated as background, but pixels with different value are + treated as circles' pixels. + + Sample usage: + + HoughCircleTransformation circleTransform = new HoughCircleTransformation( 35 ); + // apply Hough circle transform + circleTransform.ProcessImage( sourceImage ); + Bitmap houghCirlceImage = circleTransform.ToBitmap( ); + // get circles using relative intensity + HoughCircle[] circles = circleTransform.GetCirclesByRelativeIntensity( 0.5 ); + + foreach ( HoughCircle circle in circles ) + { + // ... + } + + + Initial image: + + Hough circle transformation image: + + + + + + + + + Initializes a new instance of the class. + + + Circles' radius to detect. + + + + + Process an image building Hough map. + + + Source image to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image data to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source unmanaged image to process. + + Unsupported pixel format of the source image. + + + + + Ñonvert Hough map to bitmap. + + + Returns 8 bppp grayscale bitmap, which shows Hough map. + + Hough transformation was not yet done by calling + ProcessImage() method. + + + + + Get specified amount of circles with highest intensity. + + + Amount of circles to get. + + Returns arrary of most intesive circles. If there are no circles detected, + the returned array has zero length. + + + + + Get circles with relative intensity higher then specified value. + + + Minimum relative intesity of circles. + + Returns arrary of most intesive circles. If there are no circles detected, + the returned array has zero length. + + + + + Minimum circle's intensity in Hough map to recognize a circle. + + + The value sets minimum intensity level for a circle. If a value in Hough + map has lower intensity, then it is not treated as a circle. + + Default value is set to 10. + + + + + Radius for searching local peak value. + + + The value determines radius around a map's value, which is analyzed to determine + if the map's value is a local maximum in specified area. + + Default value is set to 4. Minimum value is 1. Maximum value is 10. + + + + + Maximum found intensity in Hough map. + + + The property provides maximum found circle's intensity. + + + + + Found circles count. + + + The property provides total number of found circles, which intensity is higher (or equal to), + than the requested minimum intensity. + + + + + Hough line. + + + Represents line of Hough Line transformation using + polar coordinates. + See Wikipedia + for information on how to convert polar coordinates to Cartesian coordinates. + + + Hough Line transformation does not provide + information about lines start and end points, only slope and distance from image's center. Using + only provided information it is not possible to draw the detected line as it exactly appears on + the source image. But it is possible to draw a line through the entire image, which contains the + source line (see sample code below). + + + Sample code to draw detected Hough lines: + + HoughLineTransformation lineTransform = new HoughLineTransformation( ); + // apply Hough line transofrm + lineTransform.ProcessImage( sourceImage ); + Bitmap houghLineImage = lineTransform.ToBitmap( ); + // get lines using relative intensity + HoughLine[] lines = lineTransform.GetLinesByRelativeIntensity( 0.5 ); + + foreach ( HoughLine line in lines ) + { + // get line's radius and theta values + int r = line.Radius; + double t = line.Theta; + + // check if line is in lower part of the image + if ( r < 0 ) + { + t += 180; + r = -r; + } + + // convert degrees to radians + t = ( t / 180 ) * Math.PI; + + // get image centers (all coordinate are measured relative + // to center) + int w2 = image.Width /2; + int h2 = image.Height / 2; + + double x0 = 0, x1 = 0, y0 = 0, y1 = 0; + + if ( line.Theta != 0 ) + { + // none-vertical line + x0 = -w2; // most left point + x1 = w2; // most right point + + // calculate corresponding y values + y0 = ( -Math.Cos( t ) * x0 + r ) / Math.Sin( t ); + y1 = ( -Math.Cos( t ) * x1 + r ) / Math.Sin( t ); + } + else + { + // vertical line + x0 = line.Radius; + x1 = line.Radius; + + y0 = h2; + y1 = -h2; + } + + // draw line on the image + Drawing.Line( sourceData, + new IntPoint( (int) x0 + w2, h2 - (int) y0 ), + new IntPoint( (int) x1 + w2, h2 - (int) y1 ), + Color.Red ); + } + + + To clarify meaning of and values + of detected Hough lines, let's take a look at the below sample image and + corresponding values of radius and theta for the lines on the image: + + + + + Detected radius and theta values (color in corresponding colors): + + Theta = 90, R = 125, I = 249; + Theta = 0, R = -170, I = 187 (converts to Theta = 180, R = 170); + Theta = 90, R = -58, I = 163 (converts to Theta = 270, R = 58); + Theta = 101, R = -101, I = 130 (converts to Theta = 281, R = 101); + Theta = 0, R = 43, I = 112; + Theta = 45, R = 127, I = 82. + + + + + + + + + + + Line's slope - angle between polar axis and line's radius (normal going + from pole to the line). Measured in degrees, [0, 180). + + + + + Line's distance from image center, (−∞, +∞). + + + Negative line's radius means, that the line resides in lower + part of the polar coordinates system. This means that value + should be increased by 180 degrees and radius should be made positive. + + + + + + Line's absolute intensity, (0, +∞). + + + Line's absolute intensity is a measure, which equals + to number of pixels detected on the line. This value is bigger for longer + lines. + + The value may not be 100% reliable to measure exact number of pixels + on the line. Although these value correlate a lot (which means they are very close + in most cases), the intensity value may slightly vary. + + + + + + Line's relative intensity, (0, 1]. + + + Line's relative intensity is relation of line's + value to maximum found intensity. For the longest line (line with highest intesity) the + relative intensity is set to 1. If line's relative is set 0.5, for example, this means + its intensity is half of maximum found intensity. + + + + + + Initializes a new instance of the class. + + + Line's slope. + Line's distance from image center. + Line's absolute intensity. + Line's relative intensity. + + + + + Compare the object with another instance of this class. + + + Object to compare with. + + A signed number indicating the relative values of this instance and value: 1) greater than zero - + this instance is greater than value; 2) zero - this instance is equal to value; + 3) greater than zero - this instance is less than value. + + The sort order is descending. + + + Object are compared using their intensity value. + + + + + + Hough line transformation. + + + The class implements Hough line transformation, which allows to detect + straight lines in an image. Lines, which are found by the class, are provided in + polar coordinates system - + lines' distances from image's center and lines' slopes are provided. + The pole of polar coordinates system is put into processing image's center and the polar + axis is directed to the right from the pole. Lines' slope is measured in degrees and + is actually represented by angle between polar axis and line's radius (normal going + from pole to the line), which is measured in counter-clockwise direction. + + + Found lines may have negative radius. + This means, that the line resides in lower part of the polar coordinates system + and its value should be increased by 180 degrees and + radius should be made positive. + + + The class accepts binary images for processing, which are represented by 8 bpp grayscale images. + All black pixels (0 pixel's value) are treated as background, but pixels with different value are + treated as lines' pixels. + + See also documentation to class for additional information + about Hough Lines. + + Sample usage: + + HoughLineTransformation lineTransform = new HoughLineTransformation( ); + // apply Hough line transofrm + lineTransform.ProcessImage( sourceImage ); + Bitmap houghLineImage = lineTransform.ToBitmap( ); + // get lines using relative intensity + HoughLine[] lines = lineTransform.GetLinesByRelativeIntensity( 0.5 ); + + foreach ( HoughLine line in lines ) + { + // ... + } + + + Initial image: + + Hough line transformation image: + + + + + + + + + Initializes a new instance of the class. + + + + + + Process an image building Hough map. + + + Source image to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image to process. + Image's rectangle to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image data to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source image data to process. + Image's rectangle to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source unmanaged image to process. + + Unsupported pixel format of the source image. + + + + + Process an image building Hough map. + + + Source unmanaged image to process. + Image's rectangle to process. + + Unsupported pixel format of the source image. + + + + + Convert Hough map to bitmap. + + + Returns 8 bppp grayscale bitmap, which shows Hough map. + + Hough transformation was not yet done by calling + ProcessImage() method. + + + + + Get specified amount of lines with highest intensity. + + + Amount of lines to get. + + Returns array of most intesive lines. If there are no lines detected, + the returned array has zero length. + + + + + Get lines with relative intensity higher then specified value. + + + Minimum relative intesity of lines. + + Returns array of lines. If there are no lines detected, + the returned array has zero length. + + + + + Steps per degree. + + + The value defines quality of Hough line transformation and its ability to detect + lines' slope precisely. + + Default value is set to 1. Minimum value is 1. Maximum value is 10. + + + + + Minimum line's intensity in Hough map to recognize a line. + + + The value sets minimum intensity level for a line. If a value in Hough + map has lower intensity, then it is not treated as a line. + + Default value is set to 10. + + + + + Radius for searching local peak value. + + + The value determines radius around a map's value, which is analyzed to determine + if the map's value is a local maximum in specified area. + + Default value is set to 4. Minimum value is 1. Maximum value is 10. + + + + + Maximum found intensity in Hough map. + + + The property provides maximum found line's intensity. + + + + + Found lines count. + + + The property provides total number of found lines, which intensity is higher (or equal to), + than the requested minimum intensity. + + + + + Interface for custom blobs' filters used for filtering blobs after + blob counting. + + + The interface should be implemented by classes, which perform + custom blobs' filtering different from default filtering implemented in + . See + for additional information. + + + + + + Check specified blob and decide if should be kept or not. + + + Blob to check. + + Return if the blob should be kept or + if it should be removed. + + + + + Corners detector's interface. + + + The interface specifies set of methods, which should be implemented by different + corners detection algorithms. + + + + + Process image looking for corners. + + + Source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + + Unmanaged source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Core image relatad methods. + + + All methods of this class are static and represent general routines + used by different image processing classes. + + + + + Check if specified 8 bpp image is grayscale. + + + Image to check. + + Returns true if the image is grayscale or false otherwise. + + The methods checks if the image is a grayscale image of 256 gradients. + The method first examines if the image's pixel format is + Format8bppIndexed + and then it examines its palette to check if the image is grayscale or not. + + + + + Create and initialize new 8 bpp grayscale image. + + + Image width. + Image height. + + Returns the created grayscale image. + + The method creates new 8 bpp grayscale image and initializes its palette. + Grayscale image is represented as + Format8bppIndexed + image with palette initialized to 256 gradients of gray color. + + + + + Set pallete of the 8 bpp indexed image to grayscale. + + + Image to initialize. + + The method initializes palette of + Format8bppIndexed + image with 256 gradients of gray color. + + Provided image is not 8 bpp indexed image. + + + + + Clone image. + + + Source image. + Pixel format of result image. + + Returns clone of the source image with specified pixel format. + + The original Bitmap.Clone() + does not produce the desired result - it does not create a clone with specified pixel format. + More of it, the original method does not create an actual clone - it does not create a copy + of the image. That is why this method was implemented to provide the functionality. + + + + + Clone image. + + + Source image. + + Return clone of the source image. + + The original Bitmap.Clone() + does not produce the desired result - it does not create an actual clone (it does not create a copy + of the image). That is why this method was implemented to provide the functionality. + + + + + Clone image. + + + Source image data. + + Clones image from source image data. The message does not clone pallete in the + case if the source image has indexed pixel format. + + + + + Format an image. + + + Source image to format. + + Formats the image to one of the formats, which are supported + by the AForge.Imaging library. The image is left untouched in the + case if it is already of + Format24bppRgb or + Format32bppRgb or + Format32bppArgb or + Format48bppRgb or + Format64bppArgb + format or it is grayscale, otherwise the image + is converted to Format24bppRgb + format. + + The method is deprecated and method should + be used instead with specifying desired pixel format. + + + + + + Load bitmap from file. + + + File name to load bitmap from. + + Returns loaded bitmap. + + The method is provided as an alternative of + method to solve the issues of locked file. The standard .NET's method locks the source file until + image's object is disposed, so the file can not be deleted or overwritten. This method workarounds the issue and + does not lock the source file. + + Sample usage: + + Bitmap image = AForge.Imaging.Image.FromFile( "test.jpg" ); + + + + + + + Convert bitmap with 16 bits per plane to a bitmap with 8 bits per plane. + + + Source image to convert. + + Returns new image which is a copy of the source image but with 8 bits per plane. + + The routine does the next pixel format conversions: + + Format16bppGrayScale to + Format8bppIndexed with grayscale palette; + Format48bppRgb to + Format24bppRgb; + Format64bppArgb to + Format32bppArgb; + Format64bppPArgb to + Format32bppPArgb. + + + + Invalid pixel format of the source image. + + + + + Convert bitmap with 8 bits per plane to a bitmap with 16 bits per plane. + + + Source image to convert. + + Returns new image which is a copy of the source image but with 16 bits per plane. + + The routine does the next pixel format conversions: + + Format8bppIndexed (grayscale palette assumed) to + Format16bppGrayScale; + Format24bppRgb to + Format48bppRgb; + Format32bppArgb to + Format64bppArgb; + Format32bppPArgb to + Format64bppPArgb. + + + + Invalid pixel format of the source image. + + + + + Gather statistics about image in RGB color space. + + + The class is used to accumulate statistical values about images, + like histogram, mean, standard deviation, etc. for each color channel in RGB color + space. + + The class accepts 8 bpp grayscale and 24/32 bpp color images for processing. + + Sample usage: + + // gather statistics + ImageStatistics stat = new ImageStatistics( image ); + // get red channel's histogram + Histogram red = stat.Red; + // check mean value of red channel + if ( red.Mean > 128 ) + { + // do further processing + } + + + + + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Unmanaged image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Histogram of red channel. + + + The property is valid only for color images + (see property). + + + + + Histogram of green channel. + + + The property is valid only for color images + (see property). + + + + + Histogram of blue channel. + + + The property is valid only for color images + (see property). + + + + + Histogram of gray channel. + + + The property is valid only for grayscale images + (see property). + + + + + Histogram of red channel excluding black pixels. + + + The property keeps statistics about red channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for color images + (see property). + + + + + Histogram of green channel excluding black pixels. + + + The property keeps statistics about green channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for color images + (see property). + + + + + Histogram of blue channel excluding black pixels + + + The property keeps statistics about blue channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for color images + (see property). + + + + + Histogram of gray channel channel excluding black pixels. + + + The property keeps statistics about gray channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + The property is valid only for grayscale images + (see property). + + + + + Total pixels count in the processed image. + + + + + + Total pixels count in the processed image excluding black pixels. + + + + + + Value wich specifies if the processed image was color or grayscale. + + + If the value is set to then + property should be used to get statistics information about image. Otherwise + , and properties should be used + for color images. + + + + + Gather statistics about image in HSL color space. + + + The class is used to accumulate statistical values about images, + like histogram, mean, standard deviation, etc. for each HSL color channel. + + The class accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // gather statistics + ImageStatisticsHSL stat = new ImageStatisticsHSL( image ); + // get saturation channel's histogram + ContinuousHistogram saturation = stat.Saturation; + // check mean value of saturation channel + if ( saturation.Mean > 0.5 ) + { + // do further processing + } + + + + + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Unmanaged image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Histogram of saturation channel. + + + + + + Histogram of luminance channel. + + + + + + Histogram of saturation channel excluding black pixels. + + + The property keeps statistics about saturation channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Histogram of luminance channel excluding black pixels. + + + The property keeps statistics about luminance channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Total pixels count in the processed image. + + + + + + Total pixels count in the processed image excluding black pixels. + + + + + + Gather statistics about image in YCbCr color space. + + + The class is used to accumulate statistical values about images, + like histogram, mean, standard deviation, etc. for each YCbCr color channel. + + The class accepts 24 and 32 bpp color images for processing. + + Sample usage: + + // gather statistics + ImageStatisticsYCbCr stat = new ImageStatisticsYCbCr( image ); + // get Y channel's histogram + ContinuousHistogram y = stat.Y; + // check mean value of Y channel + if ( y.Mean > 0.5 ) + { + // do further processing + } + + + + + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Unmanaged image to gather statistics about. + + Source pixel format is not supported. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask image which specifies areas to collect statistics for. + + The mask image must be a grayscale/binary (8bpp) image of the same size as the + specified source image, where black pixels (value 0) correspond to areas which should be excluded + from processing. So statistics is calculated only for pixels, which are none black in the mask image. + + + Source pixel format is not supported. + Mask image must be 8 bpp grayscale image. + Mask must have the same size as the source image to get statistics for. + + + + + Initializes a new instance of the class. + + + Image to gather statistics about. + Mask array which specifies areas to collect statistics for. + + The mask array must be of the same size as the specified source image, where 0 values + correspond to areas which should be excluded from processing. So statistics is calculated only for pixels, + which have none zero corresponding value in the mask. + + + Source pixel format is not supported. + Mask must have the same size as the source image to get statistics for. + + + + + Histogram of Y channel. + + + + + + Histogram of Cb channel. + + + + + + Histogram of Cr channel. + + + + + + Histogram of Y channel excluding black pixels. + + + The property keeps statistics about Y channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Histogram of Cb channel excluding black pixels + + + The property keeps statistics about Cb channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Histogram of Cr channel excluding black pixels + + + The property keeps statistics about Cr channel, which + excludes all black pixels, what affects mean, standard deviation, etc. + + + + + + Total pixels count in the processed image. + + + + + + Total pixels count in the processed image excluding black pixels. + + + + + + Integral image. + + + The class implements integral image concept, which is described by + Viola and Jones in: P. Viola and M. J. Jones, "Robust real-time face detection", + Int. Journal of Computer Vision 57(2), pp. 137–154, 2004. + + "An integral image I of an input image G is defined as the image in which the + intensity at a pixel position is equal to the sum of the intensities of all the pixels + above and to the left of that position in the original image." + + The intensity at position (x, y) can be written as: + + x y + I(x,y) = SUM( SUM( G(i,j) ) ) + i=0 j=0 + + + The class uses 32-bit integers to represent integral image. + + The class processes only grayscale (8 bpp indexed) images. + + This class contains two versions of each method: safe and unsafe. Safe methods do + checks of provided coordinates and ensure that these coordinates belong to the image, what makes + these methods slower. Unsafe methods do not do coordinates' checks and rely that these + coordinates belong to the image, what makes these methods faster. + + Sample usage: + + // create integral image + IntegralImage im = IntegralImage.FromBitmap( image ); + // get pixels' mean value in the specified rectangle + float mean = im.GetRectangleMean( 10, 10, 20, 30 ) + + + + + + + Intergral image's array. + + + See remarks to property. + + + + + Initializes a new instance of the class. + + + Image width. + Image height. + + The constractor is protected, what makes it imposible to instantiate this + class directly. To create an instance of this class or + method should be used. + + + + + Construct integral image from source grayscale image. + + + Source grayscale image. + + Returns integral image. + + The source image has incorrect pixel format. + + + + + Construct integral image from source grayscale image. + + + Source image data. + + Returns integral image. + + The source image has incorrect pixel format. + + + + + Construct integral image from source grayscale image. + + + Source unmanaged image. + + Returns integral image. + + The source image has incorrect pixel format. + + + + + Calculate sum of pixels in the specified rectangle. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns sum of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate horizontal (X) haar wavelet at the specified point. + + + X coordinate of the point to calculate wavelet at. + Y coordinate of the point to calculate wavelet at. + Wavelet size to calculate. + + Returns value of the horizontal wavelet at the specified point. + + The method calculates horizontal wavelet, which is a difference + of two horizontally adjacent boxes' sums, i.e. A-B. A is the sum of rectangle with coordinates + (x, y-radius, x+radius-1, y+radius-1). B is the sum of rectangle with coordinates + (x-radius, y-radius, x-1, y+radiys-1). + + + + + Calculate vertical (Y) haar wavelet at the specified point. + + + X coordinate of the point to calculate wavelet at. + Y coordinate of the point to calculate wavelet at. + Wavelet size to calculate. + + Returns value of the vertical wavelet at the specified point. + + The method calculates vertical wavelet, which is a difference + of two vertical adjacent boxes' sums, i.e. A-B. A is the sum of rectangle with coordinates + (x-radius, y, x+radius-1, y+radius-1). B is the sum of rectangle with coordinates + (x-radius, y-radius, x+radius-1, y-1). + + + + + Calculate sum of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns sum of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate sum of pixels in the specified rectangle. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns sum of pixels in the specified rectangle. + + The method calculates sum of pixels in square rectangle with + odd width and height. In the case if it is required to calculate sum of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Calculate sum of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns sum of pixels in the specified rectangle. + + The method calculates sum of pixels in square rectangle with + odd width and height. In the case if it is required to calculate sum of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Calculate mean value of pixels in the specified rectangle. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns mean value of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate mean value of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of left-top rectangle's corner. + Y coordinate of left-top rectangle's corner. + X coordinate of right-bottom rectangle's corner. + Y coordinate of right-bottom rectangle's corner. + + Returns mean value of pixels in the specified rectangle. + + Both specified points are included into the calculation rectangle. + + + + + Calculate mean value of pixels in the specified rectangle. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns mean value of pixels in the specified rectangle. + + The method calculates mean value of pixels in square rectangle with + odd width and height. In the case if it is required to calculate mean value of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Calculate mean value of pixels in the specified rectangle without checking it's coordinates. + + + X coordinate of central point of the rectangle. + Y coordinate of central point of the rectangle. + Radius of the rectangle. + + Returns mean value of pixels in the specified rectangle. + + The method calculates mean value of pixels in square rectangle with + odd width and height. In the case if it is required to calculate mean value of + 3x3 rectangle, then it is required to specify its center and radius equal to 1. + + + + + + Width of the source image the integral image was constructed for. + + + + + Height of the source image the integral image was constructed for. + + + + + Provides access to internal array keeping integral image data. + + + + The array should be accessed by [y, x] indexing. + + The array's size is [+1, +1]. The first + row and column are filled with zeros, what is done for more efficient calculation of + rectangles' sums. + + + + + + Interpolation routines. + + + + + + Bicubic kernel. + + + X value. + + Bicubic cooefficient. + + The function implements bicubic kernel W(x) as described on + Wikipedia + (coefficient a is set to -0.5). + + + + + Internal memory manager used by image processing routines. + + + The memory manager supports memory allocation/deallocation + caching. Caching means that memory blocks may be not freed on request, but + kept for later reuse. + + + + + Allocate unmanaged memory. + + + Memory size to allocate. + + Return's pointer to the allocated memory buffer. + + The method allocates requested amount of memory and returns pointer to it. It may avoid allocation + in the case some caching scheme is uses and there is already enough allocated memory available. + + There is insufficient memory to satisfy the request. + + + + + Free unmanaged memory. + + + Pointer to memory buffer to free. + + This method may skip actual deallocation of memory and keep it for future requests, + if some caching scheme is used. + + + + + Force freeing unused memory. + + + Frees and removes from cache memory blocks, which are not used by users. + + Returns number of freed memory blocks. + + + + + Maximum amount of memory blocks to keep in cache. + + + The value specifies the amount of memory blocks, which could be + cached by the memory manager. + + Default value is set to 3. Maximum value is 10. + + + + + + Current amount of memory blocks in cache. + + + + + + Amount of busy memory blocks in cache (which were not freed yet by user). + + + + + + Amount of free memory blocks in cache (which are not busy by users). + + + + + + Amount of cached memory in bytes. + + + + + + Maximum memory block's size in bytes, which could be cached. + + + Memory blocks, which size is greater than this value, are not cached. + + + + + Minimum memory block's size in bytes, which could be cached. + + + Memory blocks, which size is less than this value, are not cached. + + + + + Moravec corners detector. + + + The class implements Moravec corners detector. For information about algorithm's + details its description + should be studied. + + Due to limitations of Moravec corners detector (anisotropic response, etc.) its usage is limited + to certain cases only. + + The class processes only grayscale 8 bpp and color 24/32 bpp images. + + Sample usage: + + // create corner detector's instance + MoravecCornersDetector mcd = new MoravecCornersDetector( ); + // process image searching for corners + List<IntPoint> corners = scd.ProcessImage( image ); + // process points + foreach ( IntPoint corner in corners ) + { + // ... + } + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Threshold value, which is used to filter out uninteresting points. + + + + + Initializes a new instance of the class. + + + Threshold value, which is used to filter out uninteresting points. + Window size used to determine if point is interesting. + + + + + Process image looking for corners. + + + Source image to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Unmanaged source image to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Window size used to determine if point is interesting, [3, 15]. + + + The value specifies window size, which is used for initial searching of + corners candidates and then for searching local maximums. + + Default value is set to 3. + + + Setting value is not odd. + + + + + Threshold value, which is used to filter out uninteresting points. + + + The value is used to filter uninteresting points - points which have value below + specified threshold value are treated as not corners candidates. Increasing this value decreases + the amount of detected point. + + Default value is set to 500. + + + + + + Searching of quadrilateral/triangle corners. + + + The class searches for quadrilateral's/triangle's corners on the specified image. + It first collects edge points of the object and then uses + to find corners + the quadrilateral/triangle. + + The class treats all black pixels as background (none-object) and + all none-black pixels as object. + + The class processes grayscale 8 bpp and color 24/32 bpp images. + + Sample usage: + + // get corners of the quadrilateral + QuadrilateralFinder qf = new QuadrilateralFinder( ); + List<IntPoint> corners = qf.ProcessImage( image ); + + // lock image to draw on it with AForge.NET's methods + // (or draw directly on image without locking if it is unmanaged image) + BitmapData data = image.LockBits( new Rectangle( 0, 0, image.Width, image.Height ), + ImageLockMode.ReadWrite, image.PixelFormat ); + + Drawing.Polygon( data, corners, Color.Red ); + for ( int i = 0; i < corners.Count; i++ ) + { + Drawing.FillRectangle( data, + new Rectangle( corners[i].X - 2, corners[i].Y - 2, 5, 5 ), + Color.FromArgb( i * 32 + 127 + 32, i * 64, i * 64 ) ); + } + + image.UnlockBits( data ); + + + Source image: + + Result image: + + + + + + + Find corners of quadrilateral/triangular area in the specified image. + + + Source image to search quadrilateral for. + + Returns a list of points, which are corners of the quadrilateral/triangular area found + in the specified image. The first point in the list is the point with lowest + X coordinate (and with lowest Y if there are several points with the same X value). + Points are in clockwise order (screen coordinates system). + + Unsupported pixel format of the source image. + + + + + Find corners of quadrilateral/triangular area in the specified image. + + + Source image data to search quadrilateral for. + + Returns a list of points, which are corners of the quadrilateral/triangular area found + in the specified image. The first point in the list is the point with lowest + X coordinate (and with lowest Y if there are several points with the same X value). + Points are in clockwise order (screen coordinates system). + + Unsupported pixel format of the source image. + + + + + Find corners of quadrilateral/triangular area in the specified image. + + + Source image to search quadrilateral for. + + Returns a list of points, which are corners of the quadrilateral/triangular area found + in the specified image. The first point in the list is the point with lowest + X coordinate (and with lowest Y if there are several points with the same X value). + Points are in clockwise order (screen coordinates system). + + Unsupported pixel format of the source image. + + + + + Blob counter based on recursion. + + + The class counts and extracts stand alone objects in + images using recursive version of connected components labeling + algorithm. + + The algorithm treats all pixels with values less or equal to + as background, but pixels with higher values are treated as objects' pixels. + + Since this algorithm is based on recursion, it is + required to be careful with its application to big images with big blobs, + because in this case recursion will require big stack size and may lead + to stack overflow. The recursive version may be applied (and may be even + faster than ) to an image with small blobs - + "star sky" image (or small cells, for example, etc). + + For blobs' searching the class supports 8 bpp indexed grayscale images and + 24/32 bpp color images. + See documentation about for information about which + pixel formats are supported for extraction of blobs. + + Sample usage: + + // create an instance of blob counter algorithm + RecursiveBlobCounter bc = new RecursiveBlobCounter( ); + // process binary image + bc.ProcessImage( image ); + Rectangle[] rects = bc.GetObjectsRectangles( ); + // process blobs + foreach ( Rectangle rect in rects ) + { + // ... + } + + + + + + + Initializes a new instance of the class. + + + Creates new instance of the class with + an empty objects map. Before using methods, which provide information about blobs + or extract them, the , + or + method should be called to collect objects map. + + + + + Initializes a new instance of the class. + + + Image to look for objects in. + + + + + Initializes a new instance of the class. + + + Image data to look for objects in. + + + + + Initializes a new instance of the class. + + + Unmanaged image to look for objects in. + + + + + Actual objects map building. + + + Unmanaged image to process. + + The method supports 8 bpp indexed grayscale images and 24/32 bpp color images. + + Unsupported pixel format of the source image. + + + + + Background threshold's value. + + + The property sets threshold value for distinguishing between background + pixel and objects' pixels. All pixel with values less or equal to this property are + treated as background, but pixels with higher values are treated as objects' pixels. + + In the case of colour images a pixel is treated as objects' pixel if any of its + RGB values are higher than corresponding values of this threshold. + + For processing grayscale image, set the property with all RGB components eqaul. + + Default value is set to (0, 0, 0) - black colour. + + + + + Susan corners detector. + + + The class implements Susan corners detector, which is described by + S.M. Smith in: S.M. Smith, "SUSAN - a new approach to low level image processing", + Internal Technical Report TR95SMS1, Defense Research Agency, Chobham Lane, Chertsey, + Surrey, UK, 1995. + + Some implementation notes: + + Analyzing each pixel and searching for its USAN area, the 7x7 mask is used, + which is comprised of 37 pixels. The mask has circle shape: + + xxx + xxxxx + xxxxxxx + xxxxxxx + xxxxxxx + xxxxx + xxx + + + In the case if USAN's center of mass has the same coordinates as nucleus + (central point), the pixel is not a corner. + For noise suppression the 5x5 square window is used. + + The class processes only grayscale 8 bpp and color 24/32 bpp images. + In the case of color image, it is converted to grayscale internally using + filter. + + Sample usage: + + // create corners detector's instance + SusanCornersDetector scd = new SusanCornersDetector( ); + // process image searching for corners + List<IntPoint> corners = scd.ProcessImage( image ); + // process points + foreach ( IntPoint corner in corners ) + { + // ... + } + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Brightness difference threshold. + Geometrical threshold. + + + + + Process image looking for corners. + + + Source image to process. + + Returns list of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Process image looking for corners. + + + Unmanaged source image to process. + + Returns array of found corners (X-Y coordinates). + + The source image has incorrect pixel format. + + + + + Brightness difference threshold. + + + The brightness difference threshold controls the amount + of pixels, which become part of USAN area. If difference between central + pixel (nucleus) and surrounding pixel is not higher than difference threshold, + then that pixel becomes part of USAN. + + Increasing this value decreases the amount of detected corners. + + Default value is set to 25. + + + + + + Geometrical threshold. + + + The geometrical threshold sets the maximum number of pixels + in USAN area around corner. If potential corner has USAN with more pixels, than + it is not a corner. + + Decreasing this value decreases the amount of detected corners - only sharp corners + are detected. Increasing this value increases the amount of detected corners, but + also increases amount of flat corners, which may be not corners at all. + + Default value is set to 18, which is half of maximum amount of pixels in USAN. + + + + + + Template match class keeps information about found template match. The class is + used with template matching algorithms implementing + interface. + + + + + Initializes a new instance of the class. + + + Rectangle of the matching area. + Similarity between template and found matching, [0..1]. + + + + + Rectangle of the matching area. + + + + + Similarity between template and found matching, [0..1]. + + + + + Clouds texture. + + + The texture generator creates textures with effect of clouds. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + CloudsTexture textureGenerator = new CloudsTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Texture generator interface. + + + Each texture generator generates a 2-D texture of the specified size and returns + it as two dimensional array of intensities in the range of [0, 1] - texture's values. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of texture's intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Resets the generator - resets all internal variables, regenerates + internal random numbers, etc. + + + + + Initializes a new instance of the class. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Labirinth texture. + + + The texture generator creates textures with effect of labyrinth. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + LabyrinthTexture textureGenerator = new LabyrinthTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Marble texture. + + + The texture generator creates textures with effect of marble. + The and properties allow to control the look + of marble texture in X/Y directions. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + MarbleTexture textureGenerator = new MarbleTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + X period value. + Y period value. + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + X period value, ≥ 2. + + + Default value is set to 5. + + + + + Y period value, ≥ 2. + + + Default value is set to 10. + + + + + Textile texture. + + + The texture generator creates textures with effect of textile. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + TextileTexture textureGenerator = new TextileTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Texture tools. + + + The class represents collection of different texture tools, like + converting a texture to/from grayscale image. + + Sample usage: + + // create texture generator + WoodTexture textureGenerator = new WoodTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + + + + + Convert texture to grayscale bitmap. + + + Texture to convert to bitmap. + + Returns bitmap of the texture. + + + + + Convert grayscale bitmap to texture. + + + Image to convert to texture. + + Returns texture as 2D float array. + + Only grayscale (8 bpp indexed images) are supported. + + + + + Convert grayscale bitmap to texture + + + Image data to convert to texture + + Returns texture as 2D float array. + + Only grayscale (8 bpp indexed images) are supported. + + + + + Convert grayscale bitmap to texture. + + + Image data to convert to texture. + + Returns texture as 2D float array. + + Only grayscale (8 bpp indexed images) are supported. + + + + + Wood texture. + + + The texture generator creates textures with effect of + rings on trunk's shear. The property allows to specify the + desired amount of wood rings. + + The generator is based on the Perlin noise function. + + Sample usage: + + // create texture generator + WoodTexture textureGenerator = new WoodTexture( ); + // generate new texture + float[,] texture = textureGenerator.Generate( 320, 240 ); + // convert it to image to visualize + Bitmap textureImage = TextureTools.ToBitmap( texture ); + + + Result image: + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Wood rings amount. + + + + + Generate texture. + + + Texture's width. + Texture's height. + + Two dimensional array of intensities. + + Generates new texture of the specified size. + + + + + Reset generator. + + + Regenerates internal random numbers. + + + + + Wood rings amount, ≥ 3. + + + The property sets the amount of wood rings, which make effect of + rings on trunk's shear. + + Default value is set to 12. + + + + + Image in unmanaged memory. + + + + The class represents wrapper of an image in unmanaged memory. Using this class + it is possible as to allocate new image in unmanaged memory, as to just wrap provided + pointer to unmanaged memory, where an image is stored. + + Usage of unmanaged images is mostly beneficial when it is required to apply multiple + image processing routines to a single image. In such scenario usage of .NET managed images + usually leads to worse performance, because each routine needs to lock managed image + before image processing is done and then unlock it after image processing is done. Without + these lock/unlock there is no way to get direct access to managed image's data, which means + there is no way to do fast image processing. So, usage of managed images lead to overhead, which + is caused by locks/unlock. Unmanaged images are represented internally using unmanaged memory + buffer. This means that it is not required to do any locks/unlocks in order to get access to image + data (no overhead). + + Sample usage: + + // sample 1 - wrapping .NET image into unmanaged without + // making extra copy of image in memory + BitmapData imageData = image.LockBits( + new Rectangle( 0, 0, image.Width, image.Height ), + ImageLockMode.ReadWrite, image.PixelFormat ); + + try + { + UnmanagedImage unmanagedImage = new UnmanagedImage( imageData ) ); + // apply several routines to the unmanaged image + } + finally + { + image.UnlockBits( imageData ); + } + + + // sample 2 - converting .NET image into unmanaged + UnmanagedImage unmanagedImage = UnmanagedImage.FromManagedImage( image ); + // apply several routines to the unmanaged image + ... + // conver to managed image if it is required to display it at some point of time + Bitmap managedImage = unmanagedImage.ToManagedImage( ); + + + + + + + Initializes a new instance of the class. + + + Pointer to image data in unmanaged memory. + Image width in pixels. + Image height in pixels. + Image stride (line size in bytes). + Image pixel format. + + Using this constructor, make sure all specified image attributes are correct + and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + this may lead to exceptions working with the unmanaged memory. + + + + + Initializes a new instance of the class. + + + Locked bitmap data. + + Unlike method, this constructor does not make + copy of managed image. This means that managed image must stay locked for the time of using the instance + of unamanged image. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + Frees unmanaged resources used by the object. The object becomes unusable + after that. + + The method needs to be called only in the case if unmanaged image was allocated + using method. In the case if the class instance was created using constructor, + this method does not free unmanaged memory. + + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Clone the unmanaged images. + + + Returns clone of the unmanaged image. + + The method does complete cloning of the object. + + + + + Copy unmanaged image. + + + Destination image to copy this image to. + + The method copies current unmanaged image to the specified image. + Size and pixel format of the destination image must be exactly the same. + + Destination image has different size or pixel format. + + + + + Allocate new image in unmanaged memory. + + + Image width. + Image height. + Image pixel format. + + Return image allocated in unmanaged memory. + + Allocate new image with specified attributes in unmanaged memory. + + The method supports only + Format8bppIndexed, + Format16bppGrayScale, + Format24bppRgb, + Format32bppRgb, + Format32bppArgb, + Format32bppPArgb, + Format48bppRgb, + Format64bppArgb and + Format64bppPArgb pixel formats. + In the case if Format8bppIndexed + format is specified, pallete is not not created for the image (supposed that it is + 8 bpp grayscale image). + + + + Unsupported pixel format was specified. + Invalid image size was specified. + + + + + Create managed image from the unmanaged. + + + Returns managed copy of the unmanaged image. + + The method creates a managed copy of the unmanaged image with the + same size and pixel format (it calls specifying + for the makeCopy parameter). + + + + + Create managed image from the unmanaged. + + + Make a copy of the unmanaged image or not. + + Returns managed copy of the unmanaged image. + + If the is set to , then the method + creates a managed copy of the unmanaged image, so the managed image stays valid even when the unmanaged + image gets disposed. However, setting this parameter to creates a managed image which is + just a wrapper around the unmanaged image. So if unmanaged image is disposed, the + managed image becomes no longer valid and accessing it will generate an exception. + + The unmanaged image has some invalid properties, which results + in failure of converting it to managed image. This may happen if user used the + constructor specifying some + invalid parameters. + + + + + Create unmanaged image from the specified managed image. + + + Source managed image. + + Returns new unmanaged image, which is a copy of source managed image. + + The method creates an exact copy of specified managed image, but allocated + in unmanaged memory. + + Unsupported pixel format of source image. + + + + + Create unmanaged image from the specified managed image. + + + Source locked image data. + + Returns new unmanaged image, which is a copy of source managed image. + + The method creates an exact copy of specified managed image, but allocated + in unmanaged memory. This means that managed image may be unlocked right after call to this + method. + + Unsupported pixel format of source image. + + + + + Collect pixel values from the specified list of coordinates. + + + List of coordinates to collect pixels' value from. + + Returns array of pixels' values from the specified coordinates. + + The method goes through the specified list of points and for each point retrievs + corresponding pixel's value from the unmanaged image. + + For grayscale image the output array has the same length as number of points in the + specified list of points. For color image the output array has triple length, containing pixels' + values in RGB order. + + The method does not make any checks for valid coordinates and leaves this up to user. + If specified coordinates are out of image's bounds, the result is not predictable (crash in most cases). + + + This method is supposed for images with 8 bpp channels only (8 bpp grayscale image and + 24/32 bpp color images). + + + Unsupported pixel format of the source image. Use Collect16bppPixelValues() method for + images with 16 bpp channels. + + + + + Collect coordinates of none black pixels in the image. + + + Returns list of points, which have other than black color. + + + + + Collect coordinates of none black pixels within specified rectangle of the image. + + + Image's rectangle to process. + + Returns list of points, which have other than black color. + + + + + Set pixels with the specified coordinates to the specified color. + + + List of points to set color for. + Color to set for the specified points. + + For images having 16 bpp per color plane, the method extends the specified color + value to 16 bit by multiplying it by 256. + + + + + Set pixel with the specified coordinates to the specified color. + + + Point's coordiates to set color for. + Color to set for the pixel. + + See for more information. + + + + + Set pixel with the specified coordinates to the specified color. + + + X coordinate of the pixel to set. + Y coordinate of the pixel to set. + Color to set for the pixel. + + For images having 16 bpp per color plane, the method extends the specified color + value to 16 bit by multiplying it by 256. + + For grayscale images this method will calculate intensity value based on the below formula: + + 0.2125 * Red + 0.7154 * Green + 0.0721 * Blue + + + + + + + + Set pixel with the specified coordinates to the specified value. + + + X coordinate of the pixel to set. + Y coordinate of the pixel to set. + Pixel value to set. + + The method sets all color components of the pixel to the specified value. + If it is a grayscale image, then pixel's intensity is set to the specified value. + If it is a color image, then pixel's R/G/B components are set to the same specified value + (if an image has alpha channel, then it is set to maximum value - 255 or 65535). + + For images having 16 bpp per color plane, the method extends the specified color + value to 16 bit by multiplying it by 256. + + + + + + Get color of the pixel with the specified coordinates. + + + Point's coordiates to get color of. + + Return pixel's color at the specified coordinates. + + See for more information. + + + + + Get color of the pixel with the specified coordinates. + + + X coordinate of the pixel to get. + Y coordinate of the pixel to get. + + Return pixel's color at the specified coordinates. + + + In the case if the image has 8 bpp grayscale format, the method will return a color with + all R/G/B components set to same value, which is grayscale intensity. + + The method supports only 8 bpp grayscale images and 24/32 bpp color images so far. + + + The specified pixel coordinate is out of image's bounds. + Pixel format of this image is not supported by the method. + + + + + Collect pixel values from the specified list of coordinates. + + + List of coordinates to collect pixels' value from. + + Returns array of pixels' values from the specified coordinates. + + The method goes through the specified list of points and for each point retrievs + corresponding pixel's value from the unmanaged image. + + For grayscale image the output array has the same length as number of points in the + specified list of points. For color image the output array has triple length, containing pixels' + values in RGB order. + + The method does not make any checks for valid coordinates and leaves this up to user. + If specified coordinates are out of image's bounds, the result is not predictable (crash in most cases). + + + This method is supposed for images with 16 bpp channels only (16 bpp grayscale image and + 48/64 bpp color images). + + + Unsupported pixel format of the source image. Use Collect8bppPixelValues() method for + images with 8 bpp channels. + + + + + Pointer to image data in unmanaged memory. + + + + + Image width in pixels. + + + + + Image height in pixels. + + + + + Image stride (line size in bytes). + + + + + Image pixel format. + + + + + Vertical intensity statistics. + + + The class provides information about vertical distribution + of pixel intensities, which may be used to locate objects, their centers, etc. + + + The class accepts grayscale (8 bpp indexed and 16 bpp) and color (24, 32, 48 and 64 bpp) images. + In the case of 32 and 64 bpp color images, the alpha channel is not processed - statistics is not + gathered for this channel. + + Sample usage: + + // collect statistics + VerticalIntensityStatistics vis = new VerticalIntensityStatistics( sourceImage ); + // get gray histogram (for grayscale image) + Histogram histogram = vis.Gray; + // output some histogram's information + System.Diagnostics.Debug.WriteLine( "Mean = " + histogram.Mean ); + System.Diagnostics.Debug.WriteLine( "Min = " + histogram.Min ); + System.Diagnostics.Debug.WriteLine( "Max = " + histogram.Max ); + + + Sample grayscale image with its vertical intensity histogram: + + + + + + + + + Initializes a new instance of the class. + + + Source image. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source image data. + + Unsupported pixel format of the source image. + + + + + Initializes a new instance of the class. + + + Source unmanaged image. + + Unsupported pixel format of the source image. + + + + + Gather vertical intensity statistics for specified image. + + + Source image. + + + + + Histogram for red channel. + + + + + + Histogram for green channel. + + + + + + Histogram for blue channel. + + + + + + Histogram for gray channel (intensities). + + + + + + Value wich specifies if the processed image was color or grayscale. + + + If the property equals to true, then the + property should be used to retrieve histogram for the processed grayscale image. + Otherwise , and property + should be used to retrieve histogram for particular RGB channel of the processed + color image. + + + + + Bag of Visual Words + + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + This class uses the + SURF features detector to determine a coded representation + for a given image. + + + It is also possible to use other feature detectors with this + class. For this, please refer to + for more details and examples. + + + + + The following example shows how to create and use a BoW with + default parameters. + + + int numberOfWords = 32; + + // Create bag-of-words (BoW) with the given number of words + BagOfVisualWords bow = new BagOfVisualWords(numberOfWords); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + By default, the BoW uses K-Means to cluster feature vectors. The next + example demonstrates how to use a different clustering algorithm when + computing the BoW. The example will be given using the + Binary Split clustering algorithm. + + + int numberOfWords = 32; + + // Create an alternative clustering algorithm + BinarySplit binarySplit = new BinarySplit(numberOfWords); + + // Create bag-of-words (BoW) with the clustering algorithm + BagOfVisualWords bow = new BagOfVisualWords(binarySplit); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + + + + + + Bag of Visual Words + + + + The type to be used with this class, + such as . + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + This class can uses any feature + detector to determine a coded representation for a given image. + + + For a simpler, non-generic version of the Bag-of-Words model which + defaults to the SURF + features detector, please see + + + + + + The following example shows how to use a BoW model with the + . + + + int numberOfWords = 32; + + // Create bag-of-words (BoW) with the given SURF detector + var bow = new BagOfVisualWords<SpeededUpRobustFeaturePoint>( + new SpeededUpRobustFeaturesDetector(), numberOfWords); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + The following example shows how to create a BoW which works with any + of corner detector, such as : + + + int numberOfWords = 16; + + // Create a Harris corners detector + var harris = new HarrisCornersDetector(); + + // Create an adapter to convert corners to visual features + CornerFeaturesDetector detector = new CornerFeaturesDetector(harris); + + // Create a bag-of-words (BoW) with the corners detector and number of words + var bow = new BagOfVisualWords<CornerFeaturePoint>(detector, numberOfWords); + + // Create the BoW codebook using a set of training images + bow.Compute(imageArray); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + + + + + + + + + + Bag of Visual Words + + + + The type to be used with this class, + such as . + + The feature type of the , such + as . + + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + This class can uses any feature + detector to determine a coded representation for a given image. + + + This is the most generic version for the BoW model, which can accept any + choice of for any kind of point, + even non-numeric ones. This class can also support any clustering algorithm + as well. + + + + + In this example, we will create a Bag-of-Words to operate on byte[] vectors, + which otherwise wouldn't be supported by the simpler BoW version. Those byte vectors + are composed of binary features detected by a . + In order to cluster those features, we will be using a + algorithm with a matching template argument to make all constructors happy: + + + // Create a new FAST Corners Detector + FastCornersDetector fast = new FastCornersDetector(); + + // Create a Fast Retina Keypoint (FREAK) detector using FAST + FastRetinaKeypointDetector freak = new FastRetinaKeypointDetector(fast); + + // Create a K-Modes clustering algorithm which can operate on byte[] + var kmodes = new KModes<byte[]>(numberOfWords, Distance.BitwiseHamming); + + // Finally, create bag-of-words (BoW) with the given number of words + var bow = new BagOfVisualWords<FastRetinaKeypoint, byte[]>(freak, kmodes); + + // Create the BoW codebook using a set of training images + bow.Compute(images); + + // Create a fixed-length feature vector for a new image + double[] featureVector = bow.GetFeatureVector(image); + + + + + + + Constructs a new . + + + The feature detector to use. + The clustering algorithm to use. + + + + + Computes the Bag of Words model. + + + The set of images to initialize the model. + Convergence rate for the k-means algorithm. Default is 1e-5. + + The list of feature points detected in all images. + + + + + Gets the codeword representation of a given image. + + + The image to be processed. + + A double vector with the same length as words + in the code book. + + + + + Gets the codeword representation of a given image. + + + The image to be processed. + + A double vector with the same length as words + in the code book. + + + + + Gets the codeword representation of a given image. + + + The interest points of the image. + + A double vector with the same length as words + in the code book. + + + + + Saves the bag of words to a stream. + + + The stream to which the bow is to be serialized. + + + + + Saves the bag of words to a file. + + + The path to the file to which the bow is to be serialized. + + + + + Gets the number of words in this codebook. + + + + + + Gets the clustering algorithm used to create this model. + + + + + + Gets the SURF + feature point detector used to identify visual features in images. + + + + + + Constructs a new . + + + The feature detector to use. + The number of codewords. + + + + + Constructs a new . + + + The feature detector to use. + The clustering algorithm to use. + + + + + Constructs a new using a + surf + feature detector to identify features. + + + The number of codewords. + + + + + Constructs a new using a + surf + feature detector to identify features. + + + The clustering algorithm to use. + + + + + Loads a bag of words from a stream. + + + The stream from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a file. + + + The path to the file from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a stream. + + + The stream from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a file. + + + The path to the file from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a stream. + + + The stream from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Loads a bag of words from a file. + + + The path to the file from which the bow is to be deserialized. + + The deserialized bag of words. + + + + + Gets the SURF + feature point detector used to identify visual features in images. + + + + + + Border following algorithm for contour extraction. + + + + + // Create a new border following algorithm + BorderFollowing bf = new BorderFollowing(); + + // Get all points in the contour of the image. + List<IntPoint> contour = bf.FindContour(grayscaleImage); + + // Mark all points in the contour point list in blue + new PointsMarker(contour, Color.Blue).ApplyInPlace(image); + + // Show the result + ImageBox.Show(image); + + + + The resulting image is shown below. + + + + + + + + + Common interface for contour extraction algorithm. + + + + + + Extracts the contour from a single object in a grayscale image. + + A grayscale image. + A list of s defining a contour. + + + + + Extracts the contour from a single object in a grayscale image. + + A grayscale image. + A list of s defining a contour. + + + + + Extracts the contour from a single object in a grayscale image. + + A grayscale image. + A list of s defining a contour. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The pixel value threshold above which a pixel + is considered black (belonging to the object). Default is zero. + + + + + Extracts the contour from a single object in a grayscale image. + + + A grayscale image. + A list of s defining a contour. + + + + + Extracts the contour from a single object in a grayscale image. + + + A grayscale image. + + + A list of s defining a contour. + + + + + + Extracts the contour from a single object in a grayscale image. + + + A grayscale image. + A list of s defining a contour. + + + + + Gets or sets the pixel value threshold above which a pixel + is considered white (belonging to the object). Default is zero. + + + + + + Contains classes and methods to convert between different image representations, + such as between common images, numeric matrices and arrays. + + + + + The image converters are able to convert to and from images defined as byte, + double and float multi-dimensional matrices, jagged matrices, and even + images represented as flat arrays. It is also possible to convert images defined as + series of individual pixel colors into s, and back from those + s into any of the aforementioned representations. Support for + AForge.NET's UnmanagedImage is also available. + + + + The namespace class diagram is shown below. + + + + + + + Jagged array to Bitmap converter. + + + + + This class can convert double and float arrays to either Grayscale + or color Bitmap images. Color images should be represented as an + array of pixel values for the final image. The actual dimensions + of the image should be specified in the class constructor. + + + When this class is converting from or + , the values of the + and properties are ignored and no scaling operation + is performed. + + + + + This example converts a single array of double-precision floating- + point numbers with values from 0 to 1 into a grayscale image. + + + // Create an array representation + // of a 4x4 image with a inner 2x2 + // square drawn in the middle + + double[] pixels = + { + 0, 0, 0, 0, + 0, 1, 1, 0, + 0, 1, 1, 0, + 0, 0, 0, 0, + }; + + // Create the converter to create a Bitmap from the array + ArrayToImage conv = new ArrayToImage(width: 4, height: 4); + + // Declare an image and store the pixels on it + Bitmap image; conv.Convert(pixels, out image); + + // Show the image on screen + image = new ResizeNearestNeighbor(320, 320).Apply(image); + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + + + The resulting image is shown below. + + + + + + + + + Public interface for image converter algorithms. + + + Input image type. + Output image type. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Initializes a new instance of the class. + + + The width of the image to be created. + The height of the image to be created. + + + + + Initializes a new instance of the class. + + + The width of the image to be created. + The height of the image to be created. + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties are ignored. The + resulting image from upon calling this method will always be 32-bit ARGB. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + For byte transformations, the Min and Max properties + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the height of the image + stored in the double array. + + + + + + Gets or sets the width of the image + stored in the double array. + + + + + + Multidimensional array to Bitmap converter. + + + + This class can convert double and float multidimensional arrays + (matrices) to Grayscale bitmaps. The color representation of the + values contained in the matrices must be specified through the + Min and Max properties of the class or class constructor. + + + + + This example converts a multidimensional array of double-precision + floating-point numbers with values from 0 to 1 into a grayscale image. + + + // Create a matrix representation + // of a 4x4 image with a inner 2x2 + // square drawn in the middle + + double[,] pixels = + { + { 0, 0, 0, 0 }, + { 0, 1, 1, 0 }, + { 0, 1, 1, 0 }, + { 0, 0, 0, 0 }, + }; + + // Create the converter to convert the matrix to a image + MatrixToImage conv = new MatrixToImage(min: 0, max: 1); + + // Declare an image and store the pixels on it + Bitmap image; conv.Convert(pixels, out image); + + // Show the image on screen + image = new ResizeNearestNeighbor(320, 320).Apply(image); + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + + + The resulting image is shown below. + + + + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Initializes a new instance of the class. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the desired output format of the image. + + + + + + Bitmap to jagged array converter. + + + + This class converts images to single or jagged arrays of + either double-precision or single-precision floating-point + values. + + + + + This example converts a 16x16 Bitmap image into + a double[] array with values between 0 and 1. + + + // Obtain a 16x16 bitmap image + // Bitmap image = ... + + // Show on screen + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + // Create the converter to convert the image to an + // array containing only values between 0 and 1 + ImageToArray conv = new ImageToArray(min: 0, max: 1); + + // Convert the image and store it in the array + double[] array; conv.Convert(image, out array); + + // Show the array on screen + ImageBox.Show(array, 16, 16, PictureBoxSizeMode.Zoom); /// + + + The resulting image is shown below. + + + + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + The channel to extract. Default is 0. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the channel to be extracted. + + + + + + Bitmap to multidimensional matrix converter. + + + + This class converts images to multidimensional matrices of + either double-precision or single-precision floating-point + values. + + + + + This example converts a 16x16 Bitmap image into + a double[,] array with values between 0 and 1. + + + // Obtain an image + // Bitmap image = ... + + // Show on screen + ImageBox.Show(image, PictureBoxSizeMode.Zoom); + + // Create the converter to convert the image to a + // matrix containing only values between 0 and 1 + ImageToMatrix conv = new ImageToMatrix(min: 0, max: 1); + + // Convert the image and store it in the matrix + double[,] matrix; conv.Convert(image, out matrix); + + // Show the matrix on screen as an image + ImageBox.Show(matrix, PictureBoxSizeMode.Zoom); + + + The resulting image is shown below. + + + + + Additionally, the image can also be shown in alternative + representations such as text or data tables. + + + + // Show the matrix on screen as a .NET multidimensional array + MessageBox.Show(matrix.ToString(CSharpMatrixFormatProvider.InvariantCulture)); + + // Show the matrix on screen as a table + DataGridBox.Show(matrix, nonBlocking: true) + .SetAutoSizeColumns(DataGridViewAutoSizeColumnsMode.Fill) + .SetAutoSizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders) + .SetDefaultFontSize(5) + .WaitForClose(); + + + + The resulting images are shown below. + + + + + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + The channel to extract. Default is 0. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The minimum double value in the double array + associated with the darkest color. Default is 0. + + + The maximum double value in the double array + associated with the brightest color. Default is 1. + + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. When + converting to byte, the and + are ignored. + + + The input image to be converted. + The converted image. + + + + + Converts an image from one representation to another. When + converting to byte, the and + are ignored. + + + The input image to be converted. + The converted image. + + + + + Gets or sets the maximum double value in the + double array associated with the brightest color. + + + + + + Gets or sets the minimum double value in the + double array associated with the darkest color. + + + + + + Gets or sets the channel to be extracted. + + + + + + Difference of Gaussians filter. + + + + + In imaging science, the difference of Gaussians is a feature + enhancement algorithm that involves the subtraction of one blurred + version of an original image from another, less blurred version of + the original. + + + In the simple case of grayscale images, the blurred images are + obtained by convolving the original grayscale images with Gaussian + kernels having differing standard deviations. Blurring an image using + a Gaussian kernel suppresses only high-frequency spatial information. + Subtracting one image from the other preserves spatial information that + lies between the range of frequencies that are preserved in the two blurred + images. Thus, the difference of Gaussians is a band-pass filter that + discards all but a handful of spatial frequencies that are present in the + original grayscale image. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + Wikipedia contributors. "Difference of Gaussians." Wikipedia, The Free + Encyclopedia. Wikipedia, The Free Encyclopedia, 1 Jun. 2013. Web. 10 Feb. + 2014. + + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Difference of Gaussians + var DoG = new DifferenceOfGaussians(); + + // Apply the filter + Bitmap result = DoG.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The first window size. Default is 3 + The second window size. Default is 4. + + + + + Initializes a new instance of the class. + + + The window size for the first Gaussian. Default is 3 + The window size for the second Gaussian. Default is 4. + + The sigma for the first Gaussian. Default is 0.4. + The sigma for the second Gaussian. Default is 0.4 + + + + + Initializes a new instance of the class. + + + The window size for the first Gaussian. Default is 3 + The window size for the second Gaussian. Default is 4. + + The sigma for both Gaussian filters. Default is 0.4. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Gets or sets the first Gaussian filter. + + + + + + Gets or sets the second Gaussian filter. + + + + + + Gets or sets the subtract filter used to compute + the difference of the two Gaussian blurs. + + + + + + Format translations dictionary. + + + + + + Fast Variance filter. + + + + The Fast Variance filter replaces each pixel in an image by its + neighborhood online variance. This filter differs from the + filter because it uses only a single pass + over the image. + + + + + Bitmap image = ... // Lena's picture + + // Create a new Variance filter: + var variance = new FastVariance(); + + // Compute the filter + Bitmap result = variance.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The radius neighborhood used to compute a pixel's local variance. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the radius of the neighborhood + used to compute a pixel's local variance. + + + + + + Format translations dictionary. + + + + + + High boost filter. + + + + + The High-boost filter can be used to emphasize high frequency + components (i.e. points of contrast) without removing the low + frequency ones. + + + This filter implementation has been contributed by Diego Catalano. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The boost value. Default is 8. + + + + + Initializes a new instance of the class. + + + The boost value. Default is 8. + The kernel size. Default is 3. + + + + + Kernel size, [3, 21]. + + + Size of Gaussian kernel. + + Default value is set to 5. + + + + + + Gets or sets the boost value. Default is 9. + + + + + + RG Chromaticity. + + + + + References: + + + Wikipedia contributors. "rg chromaticity." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Rg_chromaticity + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Sauvola Threshold. + + + + + The Sauvola filter is a variation of the + thresholding filter. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + Sauvola, Jaakko, and Matti Pietikäinen. "Adaptive document image binarization." + Pattern Recognition 33.2 (2000): 225-236. + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Sauvola threshold: + var sauvola = new SauvolaThreshold(); + + // Compute the filter + Bitmap result = sauvola.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the filter convolution + radius. Default is 15. + + + + + + Gets or sets the user-defined + parameter k. Default is 0.5. + + + + + + Gets or sets the dynamic range of the + standard deviation, R. Default is 128. + + + + + + Format translations dictionary. + + + + + + Filter to mark (highlight) lines in a image. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Color used to mark corners. + + + + + Gets or sets the set of points to mark. + + + + + Gets or sets the width of the points to be drawn. + + + + + Niblack Threshold. + + + + + The Niblack filter is a local thresholding algorithm that separates + white and black pixels given the local mean and standard deviation + for the current window. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + W. Niblack, An Introduction to Digital Image Processing, pp. 115-116. + Prentice Hall, 1986. + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Niblack threshold: + var niblack = new NiblackThreshold(); + + // Compute the filter + Bitmap result = niblack.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the filter convolution + radius. Default is 15. + + + + + + Gets or sets the user-defined + parameter k. Default is 0.2. + + + + + + Gets or sets the mean offset C. This value should + be between 0 and 255. The default value is 0. + + + + + + Format translations dictionary. + + + + + + Rotate image using nearest neighbor algorithm. + + + The class implements image rotation filter using nearest + neighbor algorithm, which does not assume any interpolation. + + Rotation is performed in counterclockwise direction. + + The filter accepts 8/16 bpp grayscale images and 24/48 bpp color image + for processing. + + Sample usage: + + // create filter - rotate for 30 degrees keeping original image size + RotateNearestNeighbor filter = new RotateNearestNeighbor( 30, true ); + // apply the filter + Bitmap newImage = filter.Apply( image ); + + + Initial image: + + Result image: + + + + + + + + + + Initializes a new instance of the class. + + + Rotation angle. + + This constructor sets property to + . + + + + + + Initializes a new instance of the class. + + + Rotation angle. + Keep image size or not. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + White Patch filter for color normalization. + + + + + Bitmap image = ... // Lena's famous picture + + // Create the White Patch filter + var whitePatch = new WhitePatch(); + + // Apply the filter + Bitmap result = grayWorld.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Gray World filter for color normalization. + + + + + The grey world normalization makes the assumption that changes in the + lighting spectrum can be modeled by three constant factors applied to + the red, green and blue channels of color[2]. More specifically, a change + in illuminated color can be modeled as a scaling α, β and γ in the R, + G and B color channels and as such the grey world algorithm is invariant + to illumination color variations. + + + References: + + + Wikipedia Contributors, "Color normalization". Available at + http://en.wikipedia.org/wiki/Color_normalization + + Jose M. Buenaposada; Luis Baumela. Variations of Grey World for + face tracking (Report). + + + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Gray World filter + var grayWorld = new GrayWorld(); + + // Apply the filter + Bitmap result = grayWorld.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Kuwahara filter. + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Kuwahara filter + Kuwahara kuwahara = new Kuwahara(); + + // Apply the Kuwahara filter + Bitmap result = kuwahara.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Gets the size of the kernel used in the Kuwahara filter. This + should be odd and greater than or equal to five. Default is 5. + + + + + + Gets the size of each of the four inner blocks used in the + Kuwahara filter. This is always half the + kernel size minus one. + + + + The size of the each inner block, or k / 2 - 1 + where k is the kernel size. + + + + + + Format translations dictionary. + + + + + + Wolf Jolion Threshold. + + + + + The Wolf-Jolion threshold filter is a variation + of the filter. + + + This filter implementation has been contributed by Diego Catalano. + + + References: + + + + C. Wolf, J.M. Jolion, F. Chassaing. "Text Localization, Enhancement and + Binarization in Multimedia Documents." Proceedings of the 16th International + Conference on Pattern Recognition, 2002. + Available in http://liris.cnrs.fr/christian.wolf/papers/icpr2002v.pdf + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Wolf-Joulion threshold: + var wolfJoulion = new WolfJoulionThreshold(); + + // Compute the filter + Bitmap result = wolfJoulion.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the filter convolution + radius. Default is 15. + + + + + + Gets or sets the user-defined + parameter k. Default is 0.5. + + + + + + Gets or sets the dynamic range of the + standard deviation, R. Default is 128. + + + + + + Format translations dictionary. + + + + + + Common interface for feature descriptors. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Standard feature descriptor for feature vectors. + + + + + + Initializes a new instance of the structure. + + + The feature vector. + + + + + Performs an implicit conversion from + to . + + + The value to be converted. + + + The result of the conversion. + + + + + + Performs a conversion from + to . + + + + + + Performs an implicit conversion from + to . + + + The value to be converted. + + + The result of the conversion. + + + + + + Performs a conversion from + to . + + + + + + Performs a conversion from + to . + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Standard feature descriptor for generic feature vectors. + + + The type of feature vector, such as . + + + + + Initializes a new instance of the struct. + + + The feature vector. + + + + + Performs an implicit conversion from + to . + + + The value to be converted. + + + The result of the conversion. + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Nearest neighbor feature point matching algorithm. + + + + + This class matches feature points using a + k-Nearest Neighbors algorithm. + + + + + + + + + Constructs a new + K-Nearest Neighbors matching algorithm. + + + The number of neighbors to use when matching points. + The distance function to consider between points. + + + + + Matches two sets of feature points. + + + + + + Matches two sets of feature points. + + + + + + Matches two sets of feature points. + + + + + + Creates a nearest neighbor algorithm with the feature points as + inputs and their respective indices a the corresponding output. + + + + + + Gets or sets the number k of nearest neighbors. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets a minimum relevance threshold + used to find matching pairs. Default is 0. + + + + + + Objective Fidelity Criteria. + + + + + References: + + + H.T. Yalazan, J.D. Yucel. "A new objective fidelity criterion + for image processing." Proceedings of the 16th International + Conference on Pattern Recognition, 2002. + + + + + + Bitmap ori = ... // Original picture + Bitmap recon = ... // Reconstructed picture + + // Create a new Objective fidelity comparer: + var of = new ObjectiveFidelity(ori, recon); + + // Get the results + long errorTotal = of.ErrorTotal; + double msr = of.MeanSquareError; + double snr = of.SignalToNoiseRatio; + double psnr = of.PeakSignalToNoiseRatio; + double dsnr = of.DerivativeSignalNoiseRatio; + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The first image to be compared. + The second image that will be compared. + + + + + Initializes a new instance of the class. + + + The first image to be compared. + The second image that will be compared. + + + + + Initializes a new instance of the class. + + + The first image to be compared. + The second image that will be compared. + + + + + Compute objective fidelity metrics. + + + The first image to be compared. + The second image that will be compared. + + + + + Compute objective fidelity metrics. + + + The first image to be compared. + The second image that will be compared. + + + + + Compute objective fidelity metrics. + + + The first image to be compared. + The second image that will be compared. + + + + + Gets the total error between the two images. + + + + + + Gets the average error between the two images. + + + + + + Gets the root mean square error between the two images. + + + + + + Gets the signal to noise ratio. + + + + + + Gets the peak signal to noise ratio. + + + + + + Gets the derivative signal to noise ratio. + + + + + + Gets the level used in peak signal to noise ratio. + + + + + + Static tool functions for imaging. + + + + + + Computes the sum of all pixels + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + + The sum of all pixels within the region. + + + + + Computes the mean pixel value + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + + The mean pixel value within the region. + + + + + Computes the pixel scatter + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + The region pixel mean. + + The scatter value within the region. + + + + + Computes the pixel variance + within a given image region. + + + The image region. + The region width. + The region height. + The image stride. + The region pixel mean. + + The variance value within the region. + + + + + Compass convolution filter. + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + Exponential filter. + + + + Simple exp image filter. Applies the + function for each pixel in the image, clipping values as needed. + The resultant image can be converted back using the + filter. + + + + + Bitmap input = ... + + // Apply log + Logarithm log = new Logarithm(); + Bitmap output = log.Apply(input); + + // Revert log + Exponential exp = new Exponential(); + Bitmap reconstruction = exp.Apply(output); + + // Show results on screen + ImageBox.Show("input", input); + ImageBox.Show("output", output); + ImageBox.Show("reconstruction", reconstruction); + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Log filter. + + + + Simple log image filter. Applies the + function for each pixel in the image, clipping values as needed. + The resultant image can be converted back using the + filter. + + + + + Bitmap input = ... + + // Apply log + Logarithm log = new Logarithm(); + Bitmap output = log.Apply(input); + + // Revert log + Exponential exp = new Exponential(); + Bitmap reconstruction = exp.Apply(output); + + // Show results on screen + ImageBox.Show("input", input); + ImageBox.Show("output", output); + ImageBox.Show("reconstruction", reconstruction); + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Robinson's Edge Detector + + + + + Robinson's edge detector is a variation of + Kirsch's detector using different convolution masks. Both are examples + of compass convolution filters. + + + + + Bitmap image = ... // Lena's picture + + // Create a new Robinson's edge detector: + var robinson = new RobinsonEdgeDetector(); + + // Compute the image edges + Bitmap edges = robinson.Apply(image); + + // Show on screen + ImageBox.Show(edges); + + + + The resulting image is shown below: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets the North direction Robinson kernel mask. + + + + + + Gets the Northwest direction Robinson kernel mask. + + + + + + Gets the West direction Robinson kernel mask. + + + + + + Gets the Southwest direction Robinson kernel mask. + + + + + + Gets the South direction Robinson kernel mask. + + + + + + Gets the Southeast direction Robinson kernel mask. + + + + + + Gets the East direction Robinson kernel mask. + + + + + + Gets the Northeast direction Robinson kernel mask. + + + + + + Format translations dictionary. + + + + + + Gabor filter. + + + + + In image processing, a Gabor filter, named after Dennis Gabor, is a linear + filter used for edge detection. Frequency and orientation representations + of Gabor filters are similar to those of the human visual system, and they + have been found to be particularly appropriate for texture representation + and discrimination. In the spatial domain, a 2D Gabor filter is a Gaussian + kernel function modulated by a sinusoidal plane wave. The Gabor filters are + self-similar: all filters can be generated from one mother wavelet by dilation + and rotation. + + + + References: + + + Wikipedia Contributors, "Gabor filter". Available at + http://en.wikipedia.org/wiki/Gabor_filter + + + + + + The following example applies a Gabor filter to detect lines + at a 45 degrees from the following image: + + + + + Bitmap input = ...; + + // Create a new Gabor filter + GaborFilter filter = new GaborFilter(); + + // Apply the filter + Bitmap output = filter.Apply(input); + + // Show the output + ImageBox.Show(output); + + + + The resulting image is shown below. + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the size of the filter. Default is 3. + + + + + + Gets or sets the Gaussian variance for the filter. Default is 2. + + + + + + Gets or sets the orientation for the filter, in radians. Default is 0.6. + + + + + + Gets or sets the wavelength for the filter. Default is 4.0. + + + + + + Gets or sets the aspect ratio for the filter. Default is 0.3. + + + + + + Gets or sets the phase offset for the filter. Default is 1.0. + + + + + + Format translations dictionary. + + + + + + Kirsch's Edge Detector + + + + + The Kirsch operator or Kirsch compass kernel + is a non-linear edge detector that finds the maximum edge strength in a few + predetermined directions. It is named after the computer scientist Russell + A. Kirsch. + + + References: + + + Wikipedia contributors. "Kirsch operator." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Kirsch_operator + + + + + + + Bitmap image = ... // Lena's picture + + // Create a new Kirsch's edge detector: + var kirsch = new KirschEdgeDetector(); + + // Compute the image edges + Bitmap edges = kirsch.Apply(image); + + // Show on screen + ImageBox.Show(edges); + + + + The resulting image is shown below: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets the North direction Kirsch kernel mask. + + + + + + Gets the Northwest direction Kirsch kernel mask. + + + + + + Gets the West direction Kirsch kernel mask. + + + + + + Gets the Southwest direction Kirsch kernel mask. + + + + + + Gets the South direction Kirsch kernel mask. + + + + + + Gets the Southeast direction Kirsch kernel mask. + + + + + + Gets the East direction Kirsch kernel mask. + + + + + + Gets the Northeast direction Kirsch kernel mask. + + + + + + Format translations dictionary. + + + + + + Variance filter. + + + + The Variance filter replaces each pixel in an image by its + neighborhood variance. The end result can be regarded as an + border enhancement, making the Variance filter suitable to + be used as an edge detection mechanism. + + + + + Bitmap image = ... // Lena's picture + + // Create a new Variance filter: + var variance = new Variance(); + + // Compute the filter + Bitmap result = variance.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below: + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The radius neighborhood used to compute a pixel's local variance. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Gets or sets the radius of the neighborhood + used to compute a pixel's local variance. + + + + + + Format translations dictionary. + + + + + + Co-occurrence Degree. + + + + + + Find co-occurrences at 0° degrees. + + + + + + Find co-occurrences at 45° degrees. + + + + + + Find co-occurrences at 90° degrees. + + + + + + Find co-occurrences at 135° degrees. + + + + + + Gray-Level Co-occurrence Matrix (GLCM). + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The distance at which the texture should be analyzed. + + + + + Initializes a new instance of the class. + + + The distance at which the texture should be analyzed. + The direction to look for co-occurrences. + + + + + Initializes a new instance of the class. + + + The distance at which the texture should be analyzed. + The direction to look for co-occurrences. + Whether the maximum value of gray should be + automatically computed from the image. Default is true. + Whether the produced GLCM should be normalized, + dividing each element by the number of pairs. Default is true. + + + + + Computes the Gray-level Co-occurrence Matrix (GLCM) + for the given source image. + + + The source image. + + A square matrix of double-precision values containing + the GLCM for the given . + + + + + Computes the Gray-level Co-occurrence Matrix for the given matrix. + + + The source image. + A region of the source image where + the GLCM should be computed for. + + A square matrix of double-precision values containing the GLCM for the + of the given . + + + + + Gets or sets whether the maximum value of gray should be + automatically computed from the image. If set to false, + the maximum gray value will be assumed 255. + + + + + + Gets or sets whether the produced GLCM should be normalized, + dividing each element by the number of pairs. Default is true. + + + + true if the GLCM should be normalized; otherwise, false. + + + + + + Gets or sets the direction at which the co-occurrence should be found. + + + + + + Gets or sets the distance at which the + texture should be analyzed. Default is 1. + + + + + + Gets the number of pairs registered during the + last computed GLCM. + + + + + + Gray-Level Difference Method (GLDM). + + + + Computes an gray-level histogram of difference + values between adjacent pixels in an image. + + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + Whether the maximum value of gray should be + automatically computed from the image. Default is true. + + + + + Computes the Gray-level Difference Method (GLDM) + Histogram for the given source image. + + + The source image. + + An histogram containing co-occurrences + for every gray level in . + + + + + Gets or sets whether the maximum value of gray should be + automatically computed from the image. If set to false, + the maximum gray value will be assumed 255. + + + + + + Gets or sets the direction at which the co-occurrence should be found. + + + + + + Gray-Level Run-Length Matrix. + + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + + + + + Initializes a new instance of the class. + + + The direction at which the co-occurrence should be found. + Whether the maximum value of gray should be + automatically computed from the image. Default is true. + + + + + Computes the Gray-level Run-length for the given image source. + + + The source image. + + An array of run-length vectors containing level counts + for every width pixel in . + + + + + Gets or sets whether the maximum value of gray should be + automatically computed from the image. If set to false, + the maximum gray value will be assumed 255. + + + + + + Gets or sets the direction at which the co-occurrence should be found. + + + + + + Gets the number of primitives found in the last + call to . + + + + + + Common interface for feature points. + + + + + + Common interface for feature points. + + + + + + Gets or sets the x-coordinate of this point. + + + + + + Gets or sets the y-coordinate of this point. + + + + + + 's operation modes. + + + + + + Features will be combined using + . + + + + + + Features will be combined using + . + + + + + + Features will be combined using + . + + + + + + Features will be combined using + . + + + + + + Haralick textural feature extractor. + + + + + + Common interface for feature detectors. + + + + + + Common interface for feature detectors. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Initializes a new instance of the class. + + + + The angulation degrees on which the Haralick's + features should be computed. Default is to use all directions. + + + + + Initializes a new instance of the class. + + + + The size of a computing cell, measured in pixels. + Default is 0 (use whole image at once). + + Whether to normalize generated + histograms. Default is false. + + + + + Initializes a new instance of the class. + + + + The size of a computing cell, measured in pixels. + Default is 0 (use whole image at once). + + Whether to normalize generated + histograms. Default is true. + + The angulation degrees on which the Haralick's + features should be computed. Default is to use all directions. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found features points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the size of a cell, in pixels. + + + + + + Gets the s which should + be computed by this Haralick textural feature extractor. + Default is . + + + + + + Gets or sets the mode of operation of this + Haralick's textural + feature extractor. + + + + The mode determines how the different features captured + by the are combined. + + + + A value from the enumeration + specifying how the different features should be combined. + + + + + + Gets or sets the number of features to extract using + the . By default, only + the first 13 original Haralick's features will be used. + + + + + + Gets the set of local binary patterns computed for each + cell in the last call to . + + + + + + Gets the Gray-level + Co-occurrence Matrix (GLCM) generated during the last + call to . + + + + + + Gets or sets whether to normalize final + histogram feature vectors. Default is false. + + + + + + Haralick's Texture Features. + + + + + Haralick's texture features are based on measures derived from + Gray-level Co-occurrence + matrices (GLCM). + + Whether considering the intensity or grayscale values of the image + or various dimensions of color, the co-occurrence matrix can measure + the texture of the image. Because co-occurrence matrices are typically + large and sparse, various metrics of the matrix are often taken to get + a more useful set of features. Features generated using this technique + are usually called Haralick features, after R. M. Haralick, attributed to + his paper Textural features for image classification (1973). + + + This class encompasses most of the features derived on Haralick's original + paper. All features are lazy-evaluated until needed; but may also be + combined in a single feature vector by calling . + + + References: + + + Wikipedia Contributors, "Co-occurrence matrix". Available at + http://en.wikipedia.org/wiki/Co-occurrence_matrix + + Robert M Haralick, K Shanmugam, Its'hak Dinstein; "Textural + Features for Image Classification". IEEE Transactions on Systems, Man, + and Cybernetics. SMC-3 (6): 610–621, 1973. Available at: + + http://www.makseq.com/materials/lib/Articles-Books/Filters/Texture/Co-occurrence/haralick73.pdf + + + + + + + + + + + Initializes a new instance of the class. + + + The co-occurrence matrix to compute features from. + + + + + Creates a feature vector with + the chosen feature functions. + + + How many features to include in the vector. Default is 13. + + A vector with Haralick's features up + to the given number passed as input. + + + + + Gets the number of gray levels in the + original image. This is the number of + dimensions of the co-occurrence matrix. + + + + + + Gets the matrix sum. + + + + + + Gets the matrix mean μ. + + + + + + Gets the marginal probability vector + obtained by summing the rows of p(i,j), + given as px(i) = Σj p(i,j). + + + + + + Gets the marginal probability vector + obtained by summing the columns of p(i,j), + given as py(j) = Σi p(i,j). + + + + + + Gets μx, the mean value of the + vector. + + + + + + Gets μ_y, the mean value of the + vector. + + + + + + Gets σx, the variance of the + vector. + + + + + + Gets σy, the variance of the + vector. + + + + + + Gets Hx, the entropy of the + vector. + + + + + + Gets Hy, the entropy of the + vector. + + + + + + Gets p(x+y)(k), the sum + of elements whose indices sum to k. + + + + + + Gets p(x-y) (k), the sum of elements + whose absolute indices diferences equals to k. + + + + + + Gets Haralick's first textural feature, + the Angular Second Momentum. + + + + + + Gets Haralick's second textural feature, + the Contrast. + + + + + + Gets Haralick's third textural feature, + the Correlation. + + + + + + Gets Haralick's fourth textural feature, + the Sum of Squares: Variance. + + + + + + Gets Haralick's fifth textural feature, + the Inverse Difference Moment. + + + + + + Gets Haralick's sixth textural feature, + the Sum Average. + + + + + + Gets Haralick's seventh textural feature, + the Sum Variance. + + + + + + Gets Haralick's eighth textural feature, + the Sum Entropy. + + + + + + Gets Haralick's ninth textural feature, + the Entropy. + + + + + + Gets Haralick's tenth textural feature, + the Difference Variance. + + + + + + Gets Haralick's eleventh textural feature, + the Difference Entropy. + + + + + + Gets Haralick's twelfth textural feature, + the First Information Measure. + + + + + + Gets Haralick's thirteenth textural feature, + the Second Information Measure. + + + + + + Gets Haralick's fourteenth textural feature, + the Maximal Correlation Coefficient. + + + + + + Gets Haralick's first textural feature, the + Angular Second Momentum, also known as Energy + or Homogeneity. + + + + + + Gets a variation of Haralick's second textural feature, + the Contrast with Absolute values (instead of squares). + + + + + + Gets Haralick's second textural feature, + the Contrast. + + + + + + Gets Haralick's third textural feature, + the Correlation. + + + + + + Gets Haralick's fourth textural feature, + the Sum of Squares: Variance. + + + + + + Gets Haralick's fifth textural feature, the Inverse + Difference Moment, also known as Local Homogeneity. + Can be regarded as a complement to . + + + + + + Gets a variation of Haralick's fifth textural feature, + the Texture Homogeneity. Can be regarded as a complement + to . + + + + + + Gets Haralick's sixth textural feature, + the Sum Average. + + + + + + Gets Haralick's seventh textural feature, + the Sum Variance. + + + + + + Gets Haralick's eighth textural feature, + the Sum Entropy. + + + + + + Gets Haralick's ninth textural feature, + the Entropy. + + + + + + Gets Haralick's tenth textural feature, + the Difference Variance. + + + + + + Gets Haralick's eleventh textural feature, + the Difference Entropy. + + + + + + Gets Haralick's twelfth textural feature, + the First Information Measure. + + + + + + Gets Haralick's thirteenth textural feature, + the Second Information Measure. + + + + + + Gets Haralick's fourteenth textural feature, + the Maximal Correlation Coefficient. + + + + + + Gets the Cluster Shade textural feature. + + + + + + Gets the Cluster Prominence textural feature. + + + + + + Feature dictionary. Associates a set of Haralick features to a given degree + used to compute the originating GLCM. + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the + class with serialized data. + + + A + object containing the information required to serialize this + . + A + structure containing the source and destination of the serialized stream + associated with this . + + + + + Combines features generated from different + GLCMs computed using different angulations + by concatenating them into a single vector. + + + The number of Haralick's original features to compute. + + A single vector containing all values computed from + the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size d * n. All features from different + degrees will be concatenated into this single result vector. + + + + + + Combines features generated from different + GLCMs computed using different angulations + by averaging them into a single vector. + + + The number of Haralick's original features to compute. + + A single vector containing the average of the values + computed from the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size n. All features from different + degrees will be averaged into this single result vector. + + + + + + Combines features generated from different + GLCMs computed using different angulations + by averaging them into a single vector. + + + The number of Haralick's original features to compute. + + A single vector containing the average of the values + computed from the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size 2*n*d. Each even index will have + the average of a given feature, and the subsequent odd index will contain + the range of this feature. + + + + + + Combines features generated from different + GLCMs computed using different angulations + by averaging them into a single vector, normalizing them to be between -1 and 1. + + + The number of Haralick's original features to compute. + + A single vector containing the averaged and normalized values + computed from the different s. + + + If there are d degrees in this + collection, and n given to compute, the + generated vector will have size n. All features will be averaged, and + the mean will be scaled to be in a [-1,1] interval. + + + + + + Local Binary Patterns. + + + + + Local binary patterns (LBP) is a type of feature used for classification + in computer vision. LBP is the particular case of the Texture Spectrum + model proposed in 1990. LBP was first described in 1994. It has since + been found to be a powerful feature for texture classification; it has + further been determined that when LBP is combined with the Histogram of + oriented gradients (HOG) classifier, it improves the detection performance + considerably on some datasets. + + + References: + + + Wikipedia Contributors, "Local Binary Patterns". Available at + http://en.wikipedia.org/wiki/Local_binary_patterns + + + + + + + + Initializes a new instance of the class. + + + + The size of a block, measured in cells. Default is 3. + + The size of a cell, measured in pixels. If set to zero, the entire + image will be used at once, forming a single block. Default is 6. + + Whether to normalize generated histograms. Default is true. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found features points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the size of a cell, in pixels. + + + + + + Gets the size of a block, in pixels. + + + + + + Gets the set of local binary patterns computed for each + pixel in the last call to to . + + + + + + Gets the histogram computed at each cell. + + + + + + Gets or sets whether to normalize final + histogram feature vectors. Default is true. + + + + + + SURF Feature descriptor types. + + + + + + Do not compute descriptors. + + + + + + Compute standard 512-bit descriptors. + + + + + + Compute extended 1024-bit descriptors. + + + + + + Fast Retina Keypoint (FREAK) detector. + + + + The FREAK algorithm is a binary based interest point descriptor algorithm + that relies in another corner + + + + + In the following example, we will see how can we extract binary descriptor + vectors from a given image using the Fast Retina Keypoint Detector together + a FAST corners detection algorithm. + + + Bitmap lena = Resources.lena512; + + // The freak detector can be used with any other corners detection + // algorithm. The default corners detection method used is the FAST + // corners detection. So, let's start creating this detector first: + // + var detector = new FastCornersDetector(60); + + // Now that we have a corners detector, we can pass it to the FREAK + // feature extraction algorithm. Please note that if we leave this + // parameter empty, FAST will be used by default. + // + var freak = new FastRetinaKeypointDetector(detector); + + // Now, all we have to do is to process our image: + List<FastRetinaKeypoint> points = freak.ProcessImage(lena); + + // Afterwards, we should obtain 83 feature points. We can inspect + // the feature points visually using the FeaturesMarker class as + // + FeaturesMarker marker = new FeaturesMarker(points, scale: 20); + + // And showing it on screen with + ImageBox.Show(marker.Apply(lena)); + + // We can also inspect the feature vectors (descriptors) associated + // with each feature point. In order to get a descriptor vector for + // any given point, we can use + // + byte[] feature = points[42].Descriptor; + + // By default, feature vectors will have 64 bytes in length. We can also + // display those vectors in more readable formats such as HEX or base64 + // + string hex = points[42].ToHex(); + string b64 = points[42].ToBase64(); + + // The above base64 result should be: + // + // "3W8M/ev///ffbr/+v3f34vz//7X+f0609v//+++/1+jfq/e83/X5/+6ft3//b4uaPZf7ePb3n/P93/rIbZlf+g==" + // + + + + The resulting image is shown below: + + + + + + + + + + + + + Initializes a new instance of the class. + + + The detection threshold for the + FAST detector. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + A corners detector. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Gets the + feature descriptor for the last processed image. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the corners detector used to generate features. + + + + + + Gets or sets a value indicating whether all feature points + should have their descriptors computed after being detected. + Default is to compute standard descriptors. + + + true if to compute orientation; otherwise, false. + + + + + Gets or sets the number of octaves to use when + building the feature descriptor. Default is 4. + + + + + + Gets or sets the scale used when building + the feature descriptor. Default is 22. + + + + + + Fast Retina Keypoint (FREAK) point. + + + + In order to extract feature points from an image using FREAK, + please take a look on the + documentation page. + + + + + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + + + + + Converts the binary descriptor to + string of hexadecimal values. + + + A string containing an hexadecimal + value representing this point's descriptor. + + + + + Converts the binary descriptor + to a string of binary values. + + + A string containing a binary value + representing this point's descriptor. + + + + + Converts the binary descriptor to base64. + + + A string containing the base64 + representation of the descriptor. + + + + + Converts the feature point to a . + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Gets or sets the x-coordinate of this point. + + + + + + Gets or sets the y-coordinate of this point. + + + + + + Gets or sets the scale of the point. + + + + + + Gets or sets the orientation of this point in angles. + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Fast Retina Keypoint (FREAK) descriptor. + + + + + Based on original implementation by A. Alahi, R. Ortiz, and P. + Vandergheynst, distributed under a BSD style license. + + + In order to extract feature points from an image using FREAK, + please take a look on the + documentation page. + + + References: + + + A. Alahi, R. Ortiz, and P. Vandergheynst. FREAK: Fast Retina Keypoint. In IEEE Conference on + Computer Vision and Pattern Recognition, CVPR 2012 Open Source Award Winner. + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Describes the specified point (i.e. computes and + sets the orientation and descriptor vector fields + of the . + + + The point to be described. + + + + + Gets or sets whether the orientation is normalized. + + + + + + Gets or sets whether the scale is normalized. + + + + + + Gets or sets whether to compute the standard 512-bit + descriptors or extended 1024-bit + + + + + + Gets the of + the original source's feature detector. + + + The integral image from where the + features have been detected. + + + + + Gets the of + the original source's feature detector. + + + The integral image from where the + features have been detected. + + + + + Pattern scale resolution. + + + + + Pattern orientation resolution. + + + + + + Number of pattern points. + + + + + + Smallest keypoint size. + + + + + + Look-up table for the pattern points (position + + sigma of all points at all scales and orientation) + + + + + + Histograms of Oriented Gradients [experimental]. + + + + + This class is currently very experimental. Use with care. + + + References: + + + Navneet Dalal and Bill Triggs, "Histograms of Oriented Gradients for Human Detection", + CVPR 2005. Available at: + http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf + + + + + + + Initializes a new instance of the class. + + + The number of histogram bins. + The size of a block, measured in cells. + The size of a cell, measured in pixels. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the size of a cell, in pixels. + + + + + + Gets the size of a block, in pixels. + + + + + + Gets the number of histogram bins. + + + + + + Gets the matrix of orientations generated in + the last call to . + + + + + + Gets the matrix of magnitudes generated in + the last call to . + + + + + + Gets the histogram computed at each cell. + + + + + + Gets or sets whether to normalize final + histogram feature vectors. Default is true. + + + + + + Response filter. + + + + + In SURF, the scale-space is divided into a number of octaves, + where an octave refers to a series of + response maps covering a doubling of scale. + + In the traditional approach to constructing a scale-space, + the image size is varied and the Gaussian filter is repeatedly + applied to smooth subsequent layers. The SURF approach leaves + the original image unchanged and varies only the filter size. + + + + + + Creates the initial map of responses according to + the specified number of octaves and initial step. + + + + + + Updates the response filter definitions + without recreating objects. + + + + + + Computes the filter using the specified + Integral Image. + + + The integral image. + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through this collection. + + + An object that can be used to iterate through the collection. + + + + + + Response Layer. + + + + + + Initializes a new instance of the class. + + + + + + Updates the response layer definitions + without recreating objects. + + + + + + Computes the filter for the specified integral image. + + + The integral image. + + + + + Gets the width of the filter. + + + + + + Gets the height of the filter. + + + + + + Gets the filter step. + + + + + + Gets the filter size. + + + + + + Gets the responses computed from the filter. + + + + + + Gets the Laplacian computed from the filter. + + + + + + Nearest neighbor feature point matching algorithm. + + + + + This class matches feature points using a + k-Nearest Neighbors algorithm. + + + + + + + + + Constructs a new + K-Nearest Neighbors matching algorithm. + + + The number of neighbors to use when matching points. + + + + + Constructs a new + K-Nearest Neighbors matching algorithm. + + + The number of neighbors to use when matching points. + The distance function to consider between points. + + + + + Creates a nearest neighbor algorithm with the feature points as + inputs and their respective indices a the corresponding output. + + + + + + Corner feature point. + + + + + + Initializes a new instance of the class. + + + + + + Gets the X position of the point. + + + + + + Gets the Y position of the point. + + + + + + Gets the descriptor vector + associated with this point. + + + + + + Feature detector based on corners. + + + + This class can be used as an adapter for classes implementing + AForge.NET's ICornersDetector interface, so they can be used + where an is needed. + + + + For an example on how to use this class, please take a look + on the example section for . + + + + + + + + Initializes a new instance of the class. + + + A corners detector. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + + + Gets the corners detector used to generate features. + + + + + + Hu's set of invariant image moments. + + + + + In image processing, computer vision and related fields, an image moment is + a certain particular weighted average (moment) of the image pixels' intensities, + or a function of such moments, usually chosen to have some attractive property + or interpretation. + + + Image moments are useful to describe objects after segmentation. Simple properties + of the image which are found via image moments include area (or total intensity), + its centroid, and information about its orientation. + + + Hu's set of invariant moments are invariant under translation, changes in scale, + and also rotation. The first moment, , is analogous to the moment + of inertia around the image's centroid, where the pixels' intensities are analogous + to physical density. The last one, I7, is skew invariant, which enables it to distinguish + mirror images of otherwise identical images. + + + References: + + + Wikipedia contributors. "Image moment." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Image_moment + + + + + + + Bitmap image = ...; + + // Compute the Hu moments of up to third order + HuMoments hu = new HuMoments(image, order: 3); + + + + + + + + + + Base class for image moments. + + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Gets or sets the maximum order of the moments. + + + + + + Common interface for image moments. + + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum moment order to be computed. + + + + + Initializes a new instance of the class. + + + The maximum moment order to be computed. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Computes the Hu moments from the specified central moments. + + + The central moments to use as base of calculations. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Hu moment of order 1. + + + + + + Hu moment of order 2. + + + + + + Hu moment of order 3. + + + + + + Hu moment of order 4. + + + + + + Hu moment of order 5. + + + + + + Hu moment of order 6. + + + + + + Hu moment of order 7. + + + + + + RANSAC Robust Fundamental Matrix Estimator. + + + + + Fitting a fundamental using RANSAC is pretty straightforward. Being a iterative method, + in a single iteration a random sample of four correspondences is selected from the + given correspondence points and a transformation F is then computed from those points. + + After a given number of iterations, the iteration which produced the largest number + of inliers is then selected as the best estimation for H. + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: + http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Projective/fundmatrix.m + + E. Dubrofsky. Homography Estimation. Master thesis. Available on: + http://www.cs.ubc.ca/~dubroe/courses/MastersEssay.pdf + + + + + + + Creates a new RANSAC homography estimator. + + + Inlier threshold. + Inlier probability. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The fundamental matrix relating x1 and x2. + + + + + Estimates a fundamental matrix with the given points. + + + + + + Compute inliers using the Symmetric Transfer Error, + + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Maximum cross-correlation feature point matching algorithm. + + + + + This class matches feature points by using a maximum cross-correlation measure. + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: + http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Match/matchbycorrelation.m + + + + http://www.instructor.com.br/unesp2006/premiados/PauloHenrique.pdf + + + + http://siddhantahuja.wordpress.com/2010/04/11/correlation-based-similarity-measures-summary/ + + + + + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Constructs a new Correlation Matching algorithm. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Matches two sets of feature points computed from the given images. + + + + + + Constructs the correlation matrix between selected points from two images. + + + + Rows correspond to points from the first image, columns correspond to points + in the second. + + + + + + Gets or sets the maximum distance to consider + points as correlated. + + + + + + Gets or sets the size of the correlation window. + + + + + + Combine channel filter. + + + + + + Constructs a new CombineChannel filter. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + The dictionary defines, which pixel formats are supported for + source images and which pixel format will be used for resulting image. + + See + for more information. + + + + + + Rectification filter for projective transformation. + + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + + + + + Computes the new image size. + + + + + + Process the image filter. + + + + + + Format translations dictionary. + + + + + + Gets or sets the Homography matrix used to map a image passed to + the filter to the overlay image specified at filter creation. + + + + + + Gets or sets the filling color used to fill blank spaces. + + + + The filling color will only be visible after the image is converted + to 24bpp. The alpha channel will be used internally by the filter. + + + + + + Central image moments. + + + + + In image processing, computer vision and related fields, an image moment is + a certain particular weighted average (moment) of the image pixels' intensities, + or a function of such moments, usually chosen to have some attractive property + or interpretation. + + + Image moments are useful to describe objects after segmentation. Simple properties + of the image which are found via image moments include area (or total intensity), + its centroid, and information about its orientation. + + + The central moments can be used to find the location, center of mass and the + dimensions of a given object within an image. + + + References: + + + Wikipedia contributors. "Image moment." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Image_moment + + + + + + + Bitmap image = ...; + + // Compute the center moments of up to third order + CentralMoments cm = new CentralMoments(image, order: 3); + + // Get size and orientation of the image + SizeF size = target.GetSize(); + float angle = target.GetOrientation(); + + + + + + + + + + Gets the default maximum moment order. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The raw moments to construct central moments. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Initializes a new instance of the class. + + + The maximum order for the moments. + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Computes the center moments from the specified raw moments. + + + The raw moments to use as base of calculations. + + + + + Computes the center moments for the specified image. + + + The image. + The region of interest in the image to compute moments for. + + + + + Computes the center moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + + + + + Gets the size of the ellipse containing the image. + + + The size of the ellipse containing the image. + + + + + Gets the orientation of the ellipse containing the image. + + + The angle of orientation of the ellipse, in radians. + + + + + Gets both size and orientation of the ellipse containing the image. + + + The angle of orientation of the ellipse, in radians. + The size of the ellipse containing the image. + + + + + Central moment of order (0,0). + + + + + + Central moment of order (1,0). + + + + + + Central moment of order (0,1). + + + + + + Central moment of order (1,1). + + + + + + Central moment of order (2,0). + + + + + + Central moment of order (0,2). + + + + + + Central moment of order (2,1). + + + + + + Central moment of order (1,2). + + + + + + Central moment of order (3,0). + + + + + + Central moment of order (0,3). + + + + + + Raw image moments. + + + + + In image processing, computer vision and related fields, an image moment is + a certain particular weighted average (moment) of the image pixels' intensities, + or a function of such moments, usually chosen to have some attractive property + or interpretation. + + + Image moments are useful to describe objects after segmentation. Simple properties + of the image which are found via image moments include area (or total intensity), + its centroid, and information about its orientation. + + + The raw moments are the most basic moments which can be computed from an image, + and can then be further processed to achieve or even + . + + + References: + + + Wikipedia contributors. "Image moment." Wikipedia, The Free Encyclopedia. Wikipedia, + The Free Encyclopedia. Available at http://en.wikipedia.org/wiki/Image_moment + + + + + + + Bitmap image = ...; + + // Compute the raw moments of up to third order + RawMoments m = new RawMoments(image, order: 3); + + + + + + + + + + Gets the default maximum moment order. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Computes the raw moments for the specified image. + + + The image whose moments should be computed. + The region of interest in the image to compute moments for. + True to compute second order moments, false otherwise. + + + + + Computes the raw moments for the specified image. + + + The image. + The region of interest in the image to compute moments for. + + + + + Computes the raw moments for the specified image. + + + The image. + The region of interest in the image to compute moments for. + + + + + Resets all moments to zero. + + + + + + Raw moment of order (0,0). + + + + + + Raw moment of order (1,0). + + + + + + Raw moment of order (0,1). + + + + + + Raw moment of order (1,1). + + + + + + Raw moment of order (2,0). + + + + + + Raw moment of order (0,2). + + + + + + Raw moment of order (2,1). + + + + + + Raw moment of order (1,2). + + + + + + Raw moment of order (3,0). + + + + + + Raw moment of order (0,3). + + + + + + Inverse raw moment of order (0,0). + + + + + + Gets the X centroid of the image. + + + + + + Gets the Y centroid of the image. + + + + + + Gets the area (for binary images) or sum of + gray level (for grayscale images). + + + + + + Features from Accelerated Segment Test (FAST) corners detector. + + + + + In the FAST corner detection algorithm, a pixel is defined as a corner + if (in a circle surrounding the pixel), N or more contiguous pixels are + all significantly brighter then or all significantly darker than the center + pixel. The ordering of questions used to classify a pixel is learned using + the ID3 algorithm. + + + This detector has been shown to exhibit a high degree of repeatability. + + + The code is roughly based on the 9 valued FAST corner detection + algorithm implementation in C by Edward Rosten, which has been + published under a 3-clause BSD license and is freely available at: + http://svr-www.eng.cam.ac.uk/~er258/work/fast.html. + + + + References: + + + E. Rosten, T. Drummond. Fusing Points and Lines for High + Performance Tracking, ICCV 2005. + + E. Rosten, T. Drummond. Machine learning for high-speed + corner detection, ICCV 2005 + + + + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new FAST Corners Detector + FastCornersDetector fast = new FastCornersDetector() + { + Suppress = true, // suppress non-maximum points + Threshold = 40 // less leads to more corners + }; + + // Process the image looking for corners + List<IntPoint> points = fast.ProcessImage(image); + + // Create a filter to mark the corners + PointsMarker marker = new PointsMarker(points); + + // Apply the corner-marking filter + Bitmap markers = marker.Apply(image); + + // Show on the screen + ImageBox.Show(markers); + + + + The resulting image is shown below: + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The suppression threshold. Decreasing this value + increases the number of points detected by the algorithm. Default is 20. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Gets or sets a value indicating whether non-maximum + points should be suppressed. Default is true. + + + true if non-maximum points should + be suppressed; otherwise, false. + + + + + Gets or sets the corner detection threshold. Increasing this value results in less corners, + whereas decreasing this value will result in more corners detected by the algorithm. + + + The corners threshold. + + + + + Gets the scores of the each corner detected in + the previous call to . + + + The scores of each last computed corner. + + + + + Filter to mark (highlight) feature points in a image. + + + + The filter highlights feature points on the image using a given set of points. + + The filter accepts 8 bpp grayscale and 24 color images for processing. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + + Gets or sets the initial size for a feature point in the map. Default is 5. + + + + + + Gets or sets the set of points to mark. + + + + + + SURF Feature descriptor types. + + + + + + Do not compute descriptors. + + + + + + Compute standard descriptors. + + + + + + Compute extended descriptors. + + + + + + Speeded-up Robust Features (SURF) detector. + + + + + Based on original implementation in the OpenSURF computer vision library + by Christopher Evans (http://www.chrisevansdev.com). Used under the LGPL + with permission of the original author. + + + Be aware that the SURF algorithm is a patented algorithm by Anael Orlinski. + If you plan to use it in a commercial application, you may have to acquire + a license from the patent holder. + + + References: + + + E. Christopher. Notes on the OpenSURF Library. Available in: + http://sites.google.com/site/chrisevansdev/files/opensurf.pdf + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Spatial/harris.m + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The non-maximum suppression threshold. Default is 0.0002f. + + + + + Initializes a new instance of the class. + + + + The non-maximum suppression threshold. Default is 0.0002f. + + The number of octaves to use when building the + response filter. Each octave corresponds to a series of maps covering a + doubling of scale in the image. Default is 5. + + The initial step to use when building the + response filter. Default is 2. + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Gets the + feature descriptor for the last processed image. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for interest points. + + + Source image data to process. + + Returns list of found interest points. + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + Unmanaged source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + + + Process image looking for corners. + + Source image to process. + + Returns list of found corners (X-Y coordinates). + + + + + Gets or sets a value indicating whether all feature points + should have their orientation computed after being detected. + Default is true. + + + Computing orientation requires additional processing; + set this property to false to compute the orientation of only + selected points by using the + current feature descriptor for the last set of detected points. + + + true if to compute orientation; otherwise, false. + + + + + Gets or sets a value indicating whether all feature points + should have their descriptors computed after being detected. + Default is to compute standard descriptors. + + + Computing descriptors requires additional processing; + set this property to false to compute the descriptors of only + selected points by using the + current feature descriptor for the last set of detected points. + + + true if to compute orientation; otherwise, false. + + + + + Gets or sets the non-maximum suppression + threshold. Default is 0.0002. + + + The non-maximum suppression threshold. + + + + + Gets or sets the number of octaves to use when building + the response filter. + Each octave corresponds to a series of maps covering a + doubling of scale in the image. Default is 5. + + + + + + Gets or sets the initial step to use when building + the response filter. + Default is 2. + + + + + + Linear Gradient Blending filter. + + + + + The blending filter is able to blend two images using a homography matrix. + A linear alpha gradient is used to smooth out differences between the two + images, effectively blending them in two images. The gradient is computed + considering the distance between the centers of the two images. + + + The first image should be passed at the moment of creation of the Blending + filter as the overlay image. A second image may be projected on top of the + overlay image by calling the Apply method and passing the second image as + argument. + + + Currently the filter always produces 32bpp images, disregarding the format + of source images. The alpha layer is used as an intermediate mask in the + blending process. + + + + + // Let's start with two pictures that have been + // taken from slightly different points of view: + // + Bitmap img1 = Resources.dc_left; + Bitmap img2 = Resources.dc_right; + + // Those pictures are shown below: + ImageBox.Show(img1, PictureBoxSizeMode.Zoom, 640, 480); + ImageBox.Show(img2, PictureBoxSizeMode.Zoom, 640, 480); + + + + + + + // Step 1: Detect feature points using Surf Corners Detector + var surf = new SpeededUpRobustFeaturesDetector(); + + var points1 = surf.ProcessImage(img1); + var points2 = surf.ProcessImage(img2); + + // Step 2: Match feature points using a k-NN + var matcher = new KNearestNeighborMatching(5); + var matches = matcher.Match(points1, points2); + + // Step 3: Create the matrix using a robust estimator + var ransac = new RansacHomographyEstimator(0.001, 0.99); + MatrixH homographyMatrix = ransac.Estimate(matches); + + // Step 4: Project and blend using the homography + Blend blend = new Blend(homographyMatrix, img1); + + + // Compute the blending algorithm + Bitmap result = blend.Apply(img2); + + // Show on screen + ImageBox.Show(result, PictureBoxSizeMode.Zoom, 640, 480); + + + + The resulting image is shown below. + + + + + + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + The overlay image (also called the anchor). + + + + + Constructs a new Blend filter. + + + The overlay image (also called the anchor). + + + + + Constructs a new Blend filter. + + + The homography matrix mapping a second image to the overlay image. + The overlay image (also called the anchor). + + + + + Computes the new image size. + + + + + + Process the image filter. + + + + + + Computes a distance metric used to compute the blending mask + + + + + Format translations dictionary. + + + + + + Gets or sets the Homography matrix used to map a image passed to + the filter to the overlay image specified at filter creation. + + + + + + Gets or sets the filling color used to fill blank spaces. + + + + The filling color will only be visible after the image is converted + to 24bpp. The alpha channel will be used internally by the filter. + + + + + + Gets or sets a value indicating whether to blend using a linear + gradient or just superimpose the two images with equal weights. + + + true to create a gradient; otherwise, false. Default is true. + + + + + Gets or sets a value indicating whether only the alpha channel + should be blended. This can be used together with a transparency + mask to selectively blend only portions of the image. + + + true to blend only the alpha channel; otherwise, false. Default is false. + + + + + Concatenation filter. + + + + Concatenates two images side by side in a single image. + + + + + + Creates a new concatenation filter. + + The first image to concatenate. + + + + Calculates new image size. + + + + + Process the filter on the specified image. + + + Source image data. + Destination image data. + + + + + Format translations dictionary. + + + + + Filter to mark (highlight) rectangles in a image. + + + + + + Initializes a new instance of the class. + + + The color to use to drawn the rectangles. + + + + + Initializes a new instance of the class. + + + Set of rectangles to be drawn. + + + + + Initializes a new instance of the class. + + + Set of rectangles to be drawn. + + + + + Initializes a new instance of the class. + + + Set of rectangles to be drawn. + The color to use to drawn the rectangles. + + + + + Applies the filter to the image. + + + + + Color used to mark pairs. + + + + + + Gets or sets the color used to fill + rectangles. Default is Transparent. + + + + + + The set of rectangles. + + + + + + Format translations dictionary. + + + + + + Filter to mark (highlight) pairs of points in a image. + + + + + + Initializes a new instance of the class. + + + Set of starting points. + Set of corresponding points. + + + + + Initializes a new instance of the class. + + + Set of starting points. + Set of corresponding points. + The color of the lines to be marked. + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Color used to mark pairs. + + + + + + The first set of points. + + + + + + The corresponding points to the first set of points. + + + + + + Format translations dictionary. + + + + + + Filter to mark (highlight) points in a image. + + + + The filter highlights points on the image using a given set of points. + + The filter accepts 8 bpp grayscale, 24 and 32 bpp color images for processing. + + + + Sample usage: + + // Create a blob contour's instance + BlobCounter bc = new BlobCounter(image); + + // Extract blobs + Blob[] blobs = bc.GetObjectsInformation(); + bc.ExtractBlobsImage(bmp, blobs[0], true); + + // Extract blob's edge points + List<IntPoint> contour = bc.GetBlobsEdgePoints(blobs[0]); + + // Create a green, 2 pixel width points marker's instance + PointsMarker marker = new PointsMarker(contour, Color.Green, 2); + + // Apply the filter in a given color image + marker.ApplyInPlace(colorBlob); + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Process the filter on the specified image. + + + Source image data. + + + + + Format translations dictionary. + + + + + + Color used to mark corners. + + + + + + Gets or sets the set of points to mark. + + + + + + Gets or sets the width of the points to be drawn. + + + + + + Wavelet transform filter. + + + + + Bitmap image = ... // Lena's famous picture + + // Create a new Haar Wavelet transform filter + var wavelet = new WaveletTransform(new Haar(1)); + + // Apply the Wavelet transformation + Bitmap result = wavelet.Apply(image); + + // Show on the screen + ImageBox.Show(result); + + + + The resulting image is shown below. + + + + + // Extract only one of the resulting images + var crop = new Crop(new Rectangle(0, 0, + image.Width / 2, image.Height / 2)); + + Bitmap quarter = crop.Apply(result); + + // Show on the screen + ImageBox.Show(quarter); + + + + The resulting image is shown below. + + + + + + + + Constructs a new Wavelet Transform filter. + + + A wavelet function. + + + + + Constructs a new Wavelet Transform filter. + + + A wavelet function. + True to perform backward transform, false otherwise. + + + + + Applies the filter to the image. + + + + + + Format translations dictionary. + + + + + + Gets or sets the Wavelet function + + + + + + Gets or sets whether the filter should be applied forward or backwards. + + + + + + Corners measures to be used in . + + + + + + Original Harris' measure. Requires the setting of + a parameter k (default is 0.04), which may be a + bit arbitrary and introduce more parameters to tune. + + + + + + Noble's measure. Does not require a parameter + and may be more stable. + + + + + + Harris Corners Detector. + + + + This class implements the Harris corners detector. + Sample usage: + + + // create corners detector's instance + HarrisCornersDetector hcd = new HarrisCornersDetector( ); + // process image searching for corners + Point[] corners = hcd.ProcessImage( image ); + // process points + foreach ( Point corner in corners ) + { + // ... + } + + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Spatial/harris.m + + C.G. Harris and M.J. Stephens. "A combined corner and edge detector", + Proceedings Fourth Alvey Vision Conference, Manchester. + pp 147-151, 1988. + + Alison Noble, "Descriptions of Image Surfaces", PhD thesis, Department + of Engineering Science, Oxford University 1989, p45. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Convolution with decomposed 1D kernel. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Process image looking for corners. + + + Source image data to process. + + Returns list of found corners (X-Y coordinates). + + + The source image has incorrect pixel format. + + + + + + Gets or sets the measure to use when detecting corners. + + + + + + Harris parameter k. Default value is 0.04. + + + + + + Harris threshold. Default value is 20000. + + + + + + Gaussian smoothing sigma. Default value is 1.2. + + + + + + Non-maximum suppression window radius. Default value is 3. + + + + + + Joint representation of both Integral Image and Squared Integral Image. + + + + Using this representation, both structures can be created in a single pass + over the data. This is interesting for real time applications. This class + also accepts a channel parameter indicating the Integral Image should be + computed using a specified color channel. This avoids costly conversions. + + + + + + Constructs a new Integral image of the given size. + + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a Bitmap image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from a BitmapData image. + + + The source image from where the integral image should be computed. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Constructs a new Integral image from an unmanaged image. + + + The source image from where the integral image should be computed. + The image channel to consider in the computations. Default is 0. + True to compute the tilted version of the integral image, + false otherwise. Default is false. + + + The representation of + the source image. + + + + + Gets the sum of the pixels in a rectangle of the Integral image. + + + The horizontal position of the rectangle x. + The vertical position of the rectangle y. + The rectangle's height h. + The rectangle's width w. + + The sum of all pixels contained in the rectangle, computed + as I[y, x] + I[y + h, x + w] - I[y + h, x] - I[y, x + w]. + + + + + Gets the sum of the squared pixels in a rectangle of the Integral image. + + + The horizontal position of the rectangle x. + The vertical position of the rectangle y. + The rectangle's height h. + The rectangle's width w. + + The sum of all pixels contained in the rectangle, computed + as I²[y, x] + I²[y + h, x + w] - I²[y + h, x] - I²[y, x + w]. + + + + + Gets the sum of the pixels in a tilted rectangle of the Integral image. + + + The horizontal position of the rectangle x. + The vertical position of the rectangle y. + The rectangle's height h. + The rectangle's width w. + + The sum of all pixels contained in the rectangle, computed + as T[y + w, x + w + 1] + T[y + h, x - h + 1] - T[y, x + 1] - T[y + w + h, x + w - h + 1]. + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations + before the is reclaimed by garbage collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets the image's width. + + + + + + Gets the image's height. + + + + + + Gets the Integral Image for values' sum. + + + + + + Gets the Integral Image for values' squared sum. + + + + + + Gets the Integral Image for tilted values' sum. + + + + + + Speeded-Up Robust Feature (SURF) Point. + + + + + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + The point's scale. + The point's laplacian value. + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + The point's scale. + The point's laplacian value. + The point's orientation angle. + The point's response value. + + + + + Initializes a new instance of the class. + + + The x-coordinate of the point in the image. + The y-coordinate of the point in the image. + The point's scale. + The point's Laplacian value. + The SURF point descriptor. + The point's orientation angle. + The point's response value. + + + + + Converts the feature point to a . + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Converts this object into a . + + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Gets or sets the x-coordinate of this point. + + + + + + Gets or sets the y-coordinate of this point. + + + + + + Gets or sets the scale of the point. + + + + + + Gets or sets the response of the detected feature (strength). + + + + + + Gets or sets the orientation of this point + measured anti-clockwise from the x-axis. + + + + + + Gets or sets the sign of laplacian for this point + (which may be useful for fast matching purposes). + + + + + + Gets or sets the descriptor vector + associated with this point. + + + + + + Encapsulates a 3-by-3 general transformation matrix + that represents a (possibly) non-linear transform. + + + + + Linear transformations are not the only ones that can be represented by + matrices. Using homogeneous coordinates, both affine transformations and + perspective projections on R^n can be represented as linear transformations + on R^n+1 (that is, n+1-dimensional real projective space). + + The general transformation matrix has 8 degrees of freedom, as the last + element is just a scale parameter. + + + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Creates a new projective matrix. + + + + + + Resets this matrix to be the identity. + + + + + + Returns the inverse matrix, if this matrix is invertible. + + + + + + Gets the transpose of this transformation matrix. + + + The transposed version of this matrix, given by H'. + + + + Transforms the given points using this transformation matrix. + + + + + + Transforms the given points using this transformation matrix. + + + + + + Multiplies this matrix, returning a new matrix as result. + + + + + + Compares two objects for equality. + + + + + + Returns the hash code for this instance. + + + + + + Double[,] conversion. + + + + + + Single[,] conversion. + + + + + + Double[,] conversion. + + + + + + Single[,] conversion. + + + + + + Matrix multiplication. + + + + + + Gets the elements of this matrix. + + + + + + Gets the offset x + + + + + + Gets the offset y + + + + + + Gets whether this matrix is invertible. + + + + + + Gets whether this is an Affine transformation matrix. + + + + + + Gets whether this is the identity transformation. + + + + + + Represents an ordered pair of real x- and y-coordinates and scalar w that defines + a point in a two-dimensional plane using homogeneous coordinates. + + + + + In mathematics, homogeneous coordinates are a system of coordinates used in + projective geometry much as Cartesian coordinates are used in Euclidean geometry. + + They have the advantage that the coordinates of a point, even those at infinity, + can be represented using finite coordinates. Often formulas involving homogeneous + coordinates are simpler and more symmetric than their Cartesian counterparts. + + Homogeneous coordinates have a range of applications, including computer graphics, + where they allow affine transformations and, in general, projective transformations + to be easily represented by a matrix. + + + References: + + + http://alumnus.caltech.edu/~woody/docs/3dmatrix.html + + http://simply3d.wordpress.com/2009/05/29/homogeneous-coordinates/ + + + + + + + Creates a new point. + + + + + + Creates a new point. + + + + + + Creates a new point. + + + + + + Creates a new point. + + + + + + Transforms a point using a projection matrix. + + + + + + Normalizes the point to have unit scale. + + + + + + Converts the point to a array representation. + + + + + + Multiplication by scalar. + + + + + + Multiplication by scalar. + + + + + + Multiplies the point by a scalar. + + + + + + Subtraction. + + + + + + Subtracts the values of two points. + + + + + + Addition. + + + + + + Add the values of two points. + + + + + + Equality. + + + + + + Inequality + + + + + + PointF Conversion. + + + + + + Converts to a Integer point by computing the ceiling of the point coordinates. + + + + + + Converts to a Integer point by rounding the point coordinates. + + + + + + Converts to a Integer point by truncating the point coordinates. + + + + + + Compares two objects for equality. + + + + + + Returns the hash code for this instance. + + + + + + Returns the empty point. + + + + + + The first coordinate. + + + + + + The second coordinate. + + + + + + The inverse scaling factor for X and Y. + + + + + + Gets whether this point is normalized (w = 1). + + + + + + Gets whether this point is at infinity (w = 0). + + + + + + Gets whether this point is at the origin. + + + + + + RANSAC Robust Homography Matrix Estimator. + + + + + Fitting a homography using RANSAC is pretty straightforward. Being a iterative method, + in a single iteration a random sample of four correspondences is selected from the + given correspondence points and a homography H is then computed from those points. + + The original points are then transformed using this homography and their distances to + where those transforms should be is then computed and matching points can classified + as inliers and non-matching points as outliers. + + After a given number of iterations, the iteration which produced the largest number + of inliers is then selected as the best estimation for H. + + + References: + + + E. Dubrofsky. Homography Estimation. Master thesis. Available on: + http://www.cs.ubc.ca/~dubroe/courses/MastersEssay.pdf + + + + + + // Let's start with two pictures that have been + // taken from slightly different points of view: + // + Bitmap img1 = Resources.dc_left; + Bitmap img2 = Resources.dc_right; + + // Those pictures are shown below: + ImageBox.Show(img1, PictureBoxSizeMode.Zoom, 640, 480); + ImageBox.Show(img2, PictureBoxSizeMode.Zoom, 640, 480); + + + + + + + // Step 1: Detect feature points using Surf Corners Detector + var surf = new SpeededUpRobustFeaturesDetector(); + + var points1 = surf.ProcessImage(img1); + var points2 = surf.ProcessImage(img2); + + // Step 2: Match feature points using a k-NN + var matcher = new KNearestNeighborMatching(5); + var matches = matcher.Match(points1, points2); + + // Step 3: Create the matrix using a robust estimator + var ransac = new RansacHomographyEstimator(0.001, 0.99); + MatrixH homographyMatrix = ransac.Estimate(matches); + + // Step 4: Project and blend using the homography + Blend blend = new Blend(homographyMatrix, img1); + + + // Compute the blending algorithm + Bitmap result = blend.Apply(img2); + + // Show on screen + ImageBox.Show(result, PictureBoxSizeMode.Zoom, 640, 480); + + + + The resulting image is shown below. + + + + + + + + + + + Creates a new RANSAC homography estimator. + + + Inlier threshold. + Inlier probability. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Matches two sets of points using RANSAC. + + + The homography matrix matching x1 and x2. + + + + + Estimates a homography with the given points. + + + + + + Compute inliers using the Symmetric Transfer Error, + + + + + + Checks if the selected points will result in a degenerate homography. + + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Speeded-Up Robust Features (SURF) Descriptor. + + + + + + + + + Initializes a new instance of the class. + + + + The integral image which is the source of the feature points. + + + + + + Describes the specified point (i.e. computes and + sets the orientation and descriptor vector fields + of the . + + + The point to be described. + + + + + Describes all specified points (i.e. computes and + sets the orientation and descriptor vector fields + of each . + + + The list of points to be described. + + + + + Determine dominant orientation for the feature point. + + + + + + Determine dominant orientation for feature point. + + + + + + Construct descriptor vector for this interest point + + + + + + Get the value of the Gaussian with std dev sigma at the point (x,y) + + + + + + Get the value of the Gaussian with std dev sigma at the point (x,y) + + + + + Gaussian look-up table for sigma = 2.5 + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets a value indicating whether the features + described by this should + be invariant to rotation. Default is true. + + + true for rotation invariant features; false otherwise. + + + + + Gets or sets a value indicating whether the features + described by this should + be computed in extended form. Default is false. + + + true for extended features; false otherwise. + + + + + Gets the of + the original source's feature detector. + + + The integral image from where the + features have been detected. + + + + + Static tool functions for imaging. + + + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: + http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/Match/matchbycorrelation.m + + + + + + + + Computes the center of a given rectangle. + + + + + Compares two rectangles for equality, considering an acceptance threshold. + + + + + Creates an homography matrix matching points + from a set of points to another. + + + + + Creates an homography matrix matching points + from a set of points to another. + + + + + + Creates the fundamental matrix between two + images from a set of points from each image. + + + + + + Creates the fundamental matrix between two + images from a set of points from each image. + + + + + + Creates the fundamental matrix between two + images from a set of points from each image. + + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Normalizes a set of homogeneous points so that the origin is located + at the centroid and the mean distance to the origin is sqrt(2). + + + + + Detects if three points are collinear. + + + + + + Detects if three points are collinear. + + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the sum of the pixels in a given image. + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the arithmetic mean of the pixels in a given image. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the standard deviation of image pixels. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the minimum pixel value in the given image. + + + + + + Computes the minimum pixel value in the given image. + + + + + + Computes the minimum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Computes the maximum pixel value in the given image. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between -1 and 1. + + + + + + Converts a given image into a array of double-precision + floating-point numbers scaled between the given range. + + + + + + Converts an image given as a matrix of pixel values into + a . + + + A matrix containing the grayscale pixel + values as bytes. + A of the same width + and height as the pixel matrix containing the given pixel values. + + + + + Converts an image given as a matrix of pixel values into + a . + + + A matrix containing the grayscale pixel + values as bytes. + A of the same width + and height as the pixel matrix containing the given pixel values. + + + + + Converts an image given as a array of pixel values into + a . + + + An array containing the grayscale pixel + values as doubles. + The width of the resulting image. + The height of the resulting image. + The minimum value representing a color value of 0. + The maximum value representing a color value of 255. + + A of given width and height + containing the given pixel values. + + + + + Converts an image given as a array of pixel values into + a . + + + An jagged array containing the pixel values + as double arrays. Each element of the arrays will be converted to + a R, G, B, A value. The bits per pixel of the resulting image + will be set according to the size of these arrays. + The width of the resulting image. + The height of the resulting image. + The minimum value representing a color value of 0. + The maximum value representing a color value of 255. + + A of given width and height + containing the given pixel values. + + + + + Converts an image given as a array of pixel values into + a . + + + An jagged array containing the pixel values + as double arrays. Each element of the arrays will be converted to + a R, G, B, A value. The bits per pixel of the resulting image + will be set according to the size of these arrays. + The width of the resulting image. + The height of the resulting image. + + A of given width and height + containing the given pixel values. + + + + + Multiplies a point by a transformation matrix. + + + + + + Multiplies a transformation matrix and a point. + + + + + + Computes the inner product of two points. + + + + + + Transforms the given points using this transformation matrix. + + + + + + Gets the image format most likely associated with a given file name. + + + The filename in the form "image.jpg". + + The most likely associated with + the given . + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/Accord.MachineLearning.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/Accord.MachineLearning.3.0.2.nupkg new file mode 100644 index 0000000000..9fcba907b Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/Accord.MachineLearning.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net35/Accord.MachineLearning.dll b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net35/Accord.MachineLearning.dll new file mode 100644 index 0000000000..0ba2f7196 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net35/Accord.MachineLearning.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net35/Accord.MachineLearning.xml b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net35/Accord.MachineLearning.xml new file mode 100644 index 0000000000..ff867ca54 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net35/Accord.MachineLearning.xml @@ -0,0 +1,12575 @@ + + + + Accord.MachineLearning + + + + + Contains Boosting related techniques for creating classifier ensembles and other composition models. + + + + + The namespace class diagram is shown below. + + + + + + + + + Model construction (fitting) delegate. + + + The type of the model to be created. + The current weights for the input samples. + A model trained over the weighted samples. + + + + + AdaBoost learning algorithm. + + + The type of the model to be trained. + + + + + Initializes a new instance of the class. + + + The model to be learned. + + + + + Initializes a new instance of the class. + + + The model to be learned. + The model fitting function. + + + + + Runs the learning algorithm. + + + The input samples. + The corresponding output labels. + + The classifier error. + + + + + Runs the learning algorithm. + + + The input samples. + The corresponding output labels. + The weights for each of the samples. + + The classifier error. + + + + + Computes the error ratio, the number of + misclassifications divided by the total + number of samples in a dataset. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Gets or sets the relative tolerance used to + detect convergence of the learning algorithm. + + + + + + Gets or sets the error limit before learning stops. Default is 0.5. + + + + + + Gets or sets the fitting function which creates + and trains a model given a weighted data set. + + + + + + Common interface for Bag of Words objects. + + + The type of the element to be + converted to a fixed-length vector representation. + + + + + Gets the codeword representation of a given value. + + + The value to be processed. + + A double vector with the same length as words + in the code book. + + + + + Gets the number of words in this codebook. + + + + + + Bag of words. + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + + + + + + Constructs a new . + + + The texts to build the bag of words model from. + + + + + Constructs a new . + + + The texts to build the bag of words model from. + + + + + Constructs a new . + + + + + + Computes the Bag of Words model. + + + + + + Gets the codeword representation of a given text. + + + The text to be processed. + + An integer vector with the same length as words + in the code book. + + + + + Gets the number of words in this codebook. + + + + + + Gets the forward dictionary which translates + string tokens to integer labels. + + + + + + Gets the reverse dictionary which translates + integer labels into string tokens. + + + + + + Gets or sets the maximum number of occurrences of a word which + should be registered in the feature vector. Default is 1 (if a + word occurs, corresponding feature is set to 1). + + + + + + Naïve Bayes Classifier for arbitrary distributions. + + + + + A naive Bayes classifier is a simple probabilistic classifier based on applying Bayes' theorem + with strong (naive) independence assumptions. A more descriptive term for the underlying probability + model would be "independent feature model". + + In simple terms, a naive Bayes classifier assumes that the presence (or absence) of a particular + feature of a class is unrelated to the presence (or absence) of any other feature, given the class + variable. In spite of their naive design and apparently over-simplified assumptions, naive Bayes + classifiers have worked quite well in many complex real-world situations. + + + This class implements an arbitrary-distribution (real-valued) Naive-Bayes classifier. There is + also a special named constructor to create classifiers + assuming normal distributions for each variable. For a discrete (integer-valued) distribution + classifier, please see . + + + References: + + + Wikipedia contributors. "Naive Bayes classifier." Wikipedia, The Free Encyclopedia. + Wikipedia, The Free Encyclopedia, 16 Dec. 2011. Web. 5 Jan. 2012. + + + + + + + This page contains two examples, one using text and another one using normal double vectors. + The first example is the classic example given by Tom Mitchell. If you are not interested + in text or in this particular example, please jump to the second example below. + + + In the first example, we will be using a mixed-continuous version of the famous Play Tennis + example by Tom Mitchell (1998). In Mitchell's example, one would like to infer if a person + would play tennis or not based solely on four input variables. The original variables were + categorical, but in this example, two of them will be categorical and two will be continuous. + The rows, or instances presented below represent days on which the behavior of the person + has been registered and annotated, pretty much building our set of observation instances for + learning: + + + DataTable data = new DataTable("Mitchell's Tennis Example"); + + data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // We will set Temperature and Humidity to be continuous + data.Columns["Temperature"].DataType = typeof(double); // (degrees Celsius) + data.Columns["Humidity"].DataType = typeof(double); // (water percentage) + + data.Rows.Add( "D1", "Sunny", 38.0, 96.0, "Weak", "No" ); + data.Rows.Add( "D2", "Sunny", 39.0, 90.0, "Strong", "No" ); + data.Rows.Add( "D3", "Overcast", 38.0, 75.0, "Weak", "Yes" ); + data.Rows.Add( "D4", "Rain", 25.0, 87.0, "Weak", "Yes" ); + data.Rows.Add( "D5", "Rain", 12.0, 30.0, "Weak", "Yes" ); + data.Rows.Add( "D6", "Rain", 11.0, 35.0, "Strong", "No" ); + data.Rows.Add( "D7", "Overcast", 10.0, 40.0, "Strong", "Yes" ); + data.Rows.Add( "D8", "Sunny", 24.0, 90.0, "Weak", "No" ); + data.Rows.Add( "D9", "Sunny", 12.0, 26.0, "Weak", "Yes" ); + data.Rows.Add( "D10", "Rain", 25.0, 30.0, "Weak", "Yes" ); + data.Rows.Add( "D11", "Sunny", 26.0, 40.0, "Strong", "Yes" ); + data.Rows.Add( "D12", "Overcast", 27.0, 97.0, "Strong", "Yes" ); + data.Rows.Add( "D13", "Overcast", 39.0, 41.0, "Weak", "Yes" ); + data.Rows.Add( "D14", "Rain", 23.0, 98.0, "Strong", "No" ); + + + Obs: The DataTable representation is not required, and instead the NaiveBayes could + also be trained directly on double[] arrays containing the data. + + + In order to estimate a discrete Naive Bayes, we will first convert this problem to a more simpler + representation. Since some variables are categories, it does not matter if they are represented + as strings, or numbers, since both are just symbols for the event they represent. Since numbers + are more easily representable than text strings, we will convert the problem to use a discrete + alphabet through the use of a codebook. + + + A codebook effectively transforms any distinct possible value for a variable into an integer + symbol. For example, “Sunny” could as well be represented by the integer label 0, “Overcast” + by “1”, Rain by “2”, and the same goes by for the other variables. So: + + + // Create a new codification codebook to + // convert strings into integer symbols + Codification codebook = new Codification(data, + "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // Translate our training data into integer symbols using our codebook: + DataTable symbols = codebook.Apply(data); + double[][] inputs = symbols.ToArray("Outlook", "Temperature", "Humidity", "Wind"); + int[] outputs = symbols.ToIntArray("PlayTennis").GetColumn(0); + + + + Now that we already have our learning input/ouput pairs, we should specify our + Bayes model. We will be trying to build a model to predict the last column, entitled + “PlayTennis”. For this, we will be using the “Outlook”, “Temperature”, “Humidity” and + “Wind” as predictors (variables which will we will use for our decision). + + + + // Gather information about decision variables + IUnivariateDistribution[] priors = + { + new GeneralDiscreteDistribution(codebook["Outlook"].Symbols), // 3 possible values (Sunny, overcast, rain) + new NormalDistribution(), // Continuous value (Celsius) + new NormalDistribution(), // Continuous value (percentage) + new GeneralDiscreteDistribution(codebook["Wind"].Symbols) // 2 possible values (Weak, strong) + }; + + int inputCount = 4; // 4 variables (Outlook, Temperature, Humidity, Wind) + int classCount = codebook["PlayTennis"].Symbols; // 2 possible values (yes, no) + + // Create a new Naive Bayes classifiers for the two classes + var model = new NaiveBayes<IUnivariateDistribution>(classCount, inputCount, priors); + + // Compute the Naive Bayes model + model.Estimate(inputs, outputs); + + + Now that we have created and estimated our classifier, we + can query the classifier for new input samples through the method. + + + // We will be computing the output label for a sunny, cool, humid and windy day: + + double[] instance = new double[] + { + codebook.Translate(columnName:"Outlook", value:"Sunny"), + 12.0, + 90.0, + codebook.Translate(columnName:"Wind", value:"Strong") + }; + + // Now, we can feed this instance to our model + int output = model.Compute(instance, out logLikelihood); + + // Finally, the result can be translated back to one of the codewords using + string result = codebook.Translate("PlayTennis", output); // result is "No" + + + + + + + In this second example, we will be creating a simple multi-class + classification problem using integer vectors and learning a discrete + Naive Bayes on those vectors. + + + // Let's say we have the following data to be classified + // into three possible classes. Those are the samples: + // + double[][] inputs = + { + // input output + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 0, 0, 1, 0 }, // 0 + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 1, 1, 1, 1 }, // 2 + new double[] { 1, 0, 1, 1 }, // 2 + new double[] { 1, 1, 0, 1 }, // 2 + new double[] { 0, 1, 1, 1 }, // 2 + new double[] { 1, 1, 1, 1 }, // 2 + }; + + int[] outputs = // those are the class labels + { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, + }; + + // Create a new continuous naive Bayes model for 3 classes using 4-dimensional Gaussian distributions + var bayes = new NaiveBayes<NormalDistribution>(inputs: 4, classes: 3, initial: NormalDistribution.Standard); + + // Teach the Naive Bayes model. The error should be zero: + double error = bayes.Estimate(inputs, outputs, options: new NormalOptions + { + Regularization = 1e-5 // to avoid zero variances + }); + + // Now, let's test the model output for the first input sample: + int answer = bayes.Compute(new double[] { 0, 1, 1, 0 }); // should be 1 + + + + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + The prior probabilities for each output class. + + + + + Initializes the frequency tables of a Naïve Bayes Classifier. + + + The input data. + The corresponding output labels for the input data. + True to estimate class priors from the data, false otherwise. + The fitting options to be used in the density estimation. + + + + + Computes the error when predicting the given data. + + + The input values. + The output values. + + The percentage error of the prediction. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The most likely class for the instance. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The log-likelihood for the instance. + + The most likely class for the instance. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The log-likelihood for the instance. + The response probabilities for each class. + + The most likely class for the instance. + + + + + Saves the Naïve Bayes model to a stream. + + + The stream to which the Naïve Bayes model is to be serialized. + + + + + Saves the Naïve Bayes model to a stream. + + + The path to the file to which the Naïve Bayes model is to be serialized. + + + + + Gets the number of possible output classes. + + + + + + Gets the number of inputs in the model. + + + + + + Gets the probability distributions for each class and input. + + + A TDistribution[,] array in with each row corresponds to a + class, each column corresponds to an input variable. Each element + of this double[,] array is a probability distribution modeling + the occurrence of the input variable in the corresponding class. + + + + + Gets the prior beliefs for each class. + + + + + + Weighted Weak Classifier. + + + The type of the weak classifier. + + + + + Gets or sets the weight associated + with the weak . + + + + + + Gets or sets the weak + classifier associated with the . + + + + + + Boosted classification model. + + + The type of the weak classifier. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The initial boosting weights. + The initial weak classifiers. + + + + + Computes the output class label for a given input. + + + The input vector. + + The most likely class label for the given input. + + + + + Adds a new weak classifier and its corresponding + weight to the end of this boosted classifier. + + + The weight of the weak classifier. + The weak classifier + + + + + Returns an enumerator that iterates through this collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through this collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the list of weighted weak models + contained in this boosted classifier. + + + + + + Gets or sets the at the specified index. + + + + + + Contains Boosting related techniques for creating classifier ensembles and other composition models. + + + + + The namespace class diagram is shown below. + + + + + + + + + Simple classifier that based on decision margins that + are perpendicular to one of the space dimensions. + + + The type for the weak classifier model. + + + + + Common interface for Weak classifiers + used in Boosting mechanisms. + + + + + + + + Computes the output class label for a given input. + + + The input vector. + + The most likely class label for the given input. + + + + + Creates a new Weak classifier given a + classification model and its decision function. + + + The classifier. + The classifier decision function. + + + + + Computes the classifier decision for a given input. + + + The input vector. + + The model's decision label. + + + + + Gets or sets the weak decision model. + + + + + + Gets or sets the decision function used by the . + + + + + + Simple classifier that based on decision margins that + are perpendicular to one of the space dimensions. + + + + + + Initializes a new instance of the class. + + + The number of inputs for this classifier. + + + + + Computes the output class label for a given input. + + + The input vector. + + + The most likely class label for the given input. + + + + + + Teaches the stump classifier to recognize + the class labels of the given input samples. + + + The input vectors. + The class labels corresponding to each input vector. + The weights associated with each input vector. + + + + + Gets the decision threshold for this linear classifier. + + + + + + Gets the index of the attribute which this + classifier will use to compare against + . + + + + + + Gets the direction of the comparison + (if greater than or less than). + + + + + + Binary split clustering algorithm. + + + + How to perform clustering with Binary Split. + + + // Declare some observations + double[][] observations = + { + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + // Create a new binary split with 3 clusters + BinarySplit binarySplit = new BinarySplit(3); + + // Compute the algorithm, retrieving an integer array + // containing the labels for each of the observations + int[] labels = binarySplit.Compute(observations); + + // In order to classify new, unobserved instances, you can + // use the binarySplit.Clusters.Nearest method, as shown below: + int c = binarySplit.Clusters.Nearest(new double[] { 4, 1, 9) }); + + + + + + + + + Common interface for clustering algorithms. + + + The type of the data being clustered, such as . + + + + + + + + + + Divides the input data into a number of clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + The labelings for the input data. + + + + + + Gets the collection of clusters currently modeled by the clustering algorithm. + + + + + + Initializes a new instance of the Binary Split algorithm + + + The number of clusters to divide the input data into. + The distance function to use. Default is to + use the distance. + + + + + Initializes a new instance of the Binary Split algorithm + + + The number of clusters to divide the input data into. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + + + Gets the clusters. + + + + + + Gets the number of clusters. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets the dimensionality of the data space. + + + + + + Gaussian Mixture Model cluster. + + + + This class contains information about a Gaussian cluster found + during a estimation. Clusters + are often contained within a . + + + + + + + + + Gets the probability density function of the + underlying Gaussian probability distribution + evaluated in point x. + + + An observation. + + + The log-probability of x occurring + in the weighted Gaussian distribution. + + + + + + Gets the probability density function of the + underlying Gaussian probability distribution + evaluated in point x. + + + An observation. + + + The probability of x occurring + in the weighted Gaussian distribution. + + + + + + Gets a copy of the normal distribution associated with this cluster. + + + + + + Initializes a new instance of the class. + + + The owner collection. + The cluster index. + + + + + Gets the deviance of the points in relation to the cluster. + + + The input points. + + The deviance, measured as -2 * the log-likelihood + of the input points in this cluster. + + + + + Gets the label for this cluster. + + + + + + Gets the cluster's mean. + + + + + + Gets the cluster's variance-covariance matrix. + + + + + + Gets the mixture coefficient for the cluster distribution. + + + + + + Gaussian Mixture Model Cluster Collection. + + + + + This class contains information about all + Gaussian clusters found during a + estimation. + + Given a new sample, this class can be used to find the nearest cluster related + to this sample through the method. + + + + + + + + + Common interface for cluster collections. + + + The type of the data being clustered, such as . + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Gets the number of clusters in the collection. + + + + + + Initializes a new instance of the class. + + + The owner collection. + The list. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + A value between 0 and 1 representing + the confidence in the generated classification. + + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + The likelihood for each of the classes. + + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vectors. + + The index of the nearest cluster + to the given data point. + + + + + Gets the deviance of the points in relation to the model. + + + The input points. + + The deviance, measured as -2 * the log-likelihood of the input points. + + + + + Gets the mean vectors for the clusters. + + + + + + Gets the variance for each of the clusters. + + + + + + Gets the covariance matrices for each of the clusters. + + + + + + Gets the mixture coefficients for each cluster. + + + + + + Mean shift cluster collection. + + + + + + + + Common interface for cluster collections. + + + The type of the data being clustered, such as . + The type of the clusters considered by a clustering algorithm. + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + Initializes a new instance of the class. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Gets the number of clusters in the collection. + + + + + + Gets the modes of the clusters. + + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + Mean shift cluster. + + + + + + + + + Initializes a new instance of the class. + + + The owner. + The cluster index. + + + + + Gets the label for this cluster. + + + + + + Gets the mode of the cluster. + + + + + + k-Means cluster collection. + + + + + + + + Initializes a new instance of the class. + + + The number of clusters K. + The distance metric to consider. + + + + + Returns the closest cluster to an input vector. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest clusters to an input vector array. + + + The input vector array. + + + An array containing the index of the nearest cluster + to the corresponding point in the input array. + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets the clusters' centroids. + + + The clusters' centroids. + + + + + Gets the proportion of samples in each cluster. + + + + + + Gets the clusters' variance-covariance matrices. + + + The clusters' variance-covariance matrices. + + + + + Gets the number of clusters in the collection. + + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + k-Means' cluster. + + + + + + Computes the distortion of the cluster, measured + as the average distance between the cluster points + and its centroid. + + + The input points. + + The average distance between all points + in the cluster and the cluster centroid. + + + + + Initializes a new instance of the class. + + + The owner collection. + The cluster index. + + + + + Gets the label for this cluster. + + + + + + Gets the cluster's centroid. + + + + + + Gets the cluster's variance-covariance matrix. + + + + + + Gets the proportion of samples in the cluster. + + + + + + k-Modes cluster collection. + + + + + + + + Initializes a new instance of the class. + + + The number of clusters K. + The distance metric to use. + + + + + Returns the closest cluster to an input vector. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest clusters to an input vector array. + + + The input vector array. + + + An array containing the index of the nearest cluster + to the corresponding point in the input array. + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets the proportion of samples in each cluster. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets the clusters' centroids. + + + The clusters' centroids. + + + + + Gets the number of clusters in the collection. + + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + k-Modes' cluster. + + + + + + + + + Initializes a new instance of the class. + + + The owner. + The cluster index. + + + + + Computes the distortion of the cluster, measured + as the average distance between the cluster points + and its centroid. + + + The input points. + + The average distance between all points + in the cluster and the cluster centroid. + + + + + Gets the label for this cluster. + + + + + + Gets the cluster's centroid. + + + + + + Gets the proportion of samples in the cluster. + + + + + + Mean shift clustering algorithm. + + + + + Mean shift is a non-parametric feature-space analysis technique originally + presented in 1975 by Fukunaga and Hostetler. It is a procedure for locating + the maxima of a density function given discrete data sampled from that function. + The method iteratively seeks the location of the modes of the distribution using + local updates. + + As it is, the method would be intractable; however, some clever optimizations such as + the use of appropriate data structures and seeding strategies as shown in Lee (2011) + and Carreira-Perpinan (2006) can improve its computational speed. + + + References: + + + Wikipedia, The Free Encyclopedia. Mean-shift. Available on: + http://en.wikipedia.org/wiki/Mean-shift + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Conrad Lee. Scalable mean-shift clustering in a few lines of python. The + Sociograph blog, 2011. Available at: + http://sociograph.blogspot.com.br/2011/11/scalable-mean-shift-clustering-in-few.html + + Carreira-Perpinan, Miguel A. "Acceleration strategies for Gaussian mean-shift image + segmentation." Computer Vision and Pattern Recognition, 2006 IEEE Computer Society + Conference on. Vol. 1. IEEE, 2006. Available at: + http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=1640881 + + + + + + + // Declare some observations + double[][] observations = + { + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + // Create a uniform kernel density function + UniformKernel kernel = new UniformKernel(); + + // Create a new Mean-Shift algorithm for 3 dimensional samples + MeanShift meanShift = new MeanShift(dimension: 3, kernel: kernel, bandwidth: 1.5 ); + + // Compute the algorithm, retrieving an integer array + // containing the labels for each of the observations + int[] labels = meanShift.Compute(observations); + + // As a result, the first two observations should belong to the + // same cluster (thus having the same label). The same should + // happen to the next four observations and to the last three. + + + + The following example demonstrates how to use the Mean Shift algorithm + for color clustering. It is the same code which can be found in the + color clustering sample application. + + + + int pixelSize = 3; // RGB color pixel + double sigma = 0.06; // kernel bandwidth + + // Load a test image (shown below) + Bitmap image = ... + + // Create converters + ImageToArray imageToArray = new ImageToArray(min: -1, max: +1); + ArrayToImage arrayToImage = new ArrayToImage(image.Width, image.Height, min: -1, max: +1); + + // Transform the image into an array of pixel values + double[][] pixels; imageToArray.Convert(image, out pixels); + + // Create a MeanShift algorithm using given bandwidth + // and a Gaussian density kernel as kernel function. + MeanShift meanShift = new MeanShift(pixelSize, new GaussianKernel(3), sigma); + + + // Compute the mean-shift algorithm until the difference in + // shifting means between two iterations is below 0.05 + int[] idx = meanShift.Compute(pixels, 0.05, maxIterations: 10); + + + // Replace every pixel with its corresponding centroid + pixels.ApplyInPlace((x, i) => meanShift.Clusters.Modes[idx[i]]); + + // Retrieve the resulting image in a picture box + Bitmap result; arrayToImage.Convert(pixels, out result); + + + + The original image is shown below: + + + + + The resulting image will be: + + + + + + + + + + + + Creates a new algorithm. + + + The dimension of the samples to be clustered. + The bandwidth (also known as radius) to consider around samples. + The density kernel function to use. + + + + + Divides the input data into clusters. + + + The data where to compute the algorithm. + + + + + Divides the input data into clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-3. + + + + + Divides the input data into clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-3. + The maximum number of iterations. Default is 100. + + + + + Gets the clusters found by Mean Shift. + + + + + + Gets or sets the bandwidth (radius, or smoothness) + parameter to be used in the mean-shift algorithm. + + + + + + Gets or sets the maximum number of neighbors which should be + used to determine the direction of the mean-shift during the + computations. Default is zero (unlimited number of neighbors). + + + + + + Gets or sets whether the mean-shift can be shortcut + as soon as a mean enters the neighborhood of a local + maxima candidate. Default is true. + + + + + + Gets or sets whether the algorithm can use parallel + processing to speedup computations. Enabling parallel + processing can, however, result in different results + at each run. + + + + + + Gets the dimension of the samples being + modeled by this clustering algorithm. + + + + + + Gets or sets the maximum number of iterations to + be performed by the method. If set to zero, no + iteration limit will be imposed. Default is 0. + + + + + + Gets or sets the relative convergence threshold + for stopping the algorithm. Default is 1e-5. + + + + + + Contains discrete and continuous Decision Trees, with + support for automatic code generation, tree pruning and + the creation of decision rule sets. + + + + + + + + + + Numeric comparison category. + + + + + + The node does no comparison. + + + + + + The node compares for equality. + + + + + + The node compares for non-equality. + + + + + + The node compares for greater-than or equality. + + + + + + The node compares for greater-than. + + + + + + The node compares for less-than. + + + + + + The node compares for less-than or equality. + + + + + Extension methods for enumeration values. + + + + + + Returns a that represents this instance. + + + The comparison type. + + + A that represents this instance. + + + + + + Collection of decision nodes. A decision branch specifies the index of + an attribute whose current value should be compared against its children + nodes. The type of the comparison is specified in each child node. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The to whom + this belongs. + + + + + Initializes a new instance of the class. + + + Index of the attribute to be processed. + + The children nodes. Each child node should be + responsible for a possible value of a discrete attribute, or for + a region of a continuous-valued attribute. + + + + + Adds the elements of the specified collection to the end of the collection. + + + The child nodes to be added. + + + + + Gets or sets the index of the attribute to be + used in this stage of the decision process. + + + + + + Gets the attribute that is being used in + this stage of the decision process, given + by the current + + + + + + Gets or sets the decision node that contains this collection. + + + + + + Contains learning algorithms for inducing + Decision Trees. + + + + + + + + + + Contains classes to prune decision trees, removing + unneeded nodes in an attempt to improve generalization. + + + + + + + + + Contains sets of decision rules that can be created from + Decision + Trees. + + + + + + + + + + Antecedent expression for s. + + + + + + Creates a new instance of the class. + + + The variable index. + The comparison to be made using the value at + and . + The value to be compared against. + + + + + Checks if this antecedent applies to a given input. + + + An input vector. + + True if the input element at position + compares to using ; false + otherwise. + + + + + + Determines whether the specified + is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Determines whether the specified + is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in + hashing algorithms and data structures like a hash table. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Gets the index of the variable used as the + left hand side term of this expression. + + + + + + Gets the comparison being made between the variable + value at and . + + + + + + Gets the right hand side of this expression. + + + + + + Decision rule set. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + A set of decision rules. + + + + + Creates a new from a . + + + A . + + A that is completely + equivalent to the given + + + + + Computes the decision output for a given input. + + + An input vector. + + The decision output for the given + . + + + + + Adds a new to the set. + + + The to be added. + + + + + Adds a collection of new s to the set. + + + The collection of s to be added. + + + + + Removes all rules from this set. + + + + + + Removes a given rule from the set. + + + The to be removed. + + True if the rule was removed; false otherwise. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object + that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object + that can be used to iterate through the collection. + + + + + + Gets the number of possible output + classes covered by this decision set. + + + + + + Gets the number of rules in this set. + + + + + + Decision Rule. + + + + + + Initializes a new instance of the class. + + + The decision variables handled by this decision rule. + The output value, given after all antecedents are met. + The antecedent conditions that lead to the . + + + + + Initializes a new instance of the class. + + + The decision variables handled by this decision rule. + The output value, given after all antecedents are met. + The antecedent conditions that lead to the . + + + + + Initializes a new instance of the class. + + + The output value, given after all antecedents are met. + The antecedent conditions that lead to the . + + + + + Checks whether a the rule applies to a given input vector. + + + An input vector. + + True, if the input matches the rule + ; otherwise, false. + + + + + + Creates a new from a 's + . This node must be a leaf, cannot be the root, and + should have one output value. + + + A from a . + + A representing the given . + + + + + Gets whether this rule and another rule have + the same antecedents but different outputs. + + + + + True if the two rules are contradictory; + false otherwise. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Compares this instance to another . + + + + + + Implements the operator <. + + + + + + Implements the operator >. + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Gets the decision variables handled by this rule. + + + + + + Gets the expressions that + must be fulfilled in order for this rule to be applicable. + + + + + + Gets or sets the output of this decision rule, given + when all conditions are met. + + + + + + Gets the number of antecedents contained + in this . + + + + + + Decision Tree C# Writer. + + + + + + Initializes a new instance of the class. + + + + + + Creates a C# code for the tree. + + + + + + Reduced error pruning. + + + + + + Initializes a new instance of the class. + + + The tree to be pruned. + The pruning set inputs. + The pruning set outputs. + + + + + Computes one pass of the pruning algorithm. + + + + + + Error-based pruning. + + + + + References: + + + Lior Rokach, Oded Maimon. The Data Mining and Knowledge Discovery Handbook, + Chapter 9, Decision Trees. Springer, 2nd ed. 2010, XX, 1285 p. 40 illus. + Available at: http://www.ise.bgu.ac.il/faculty/liorr/hbchap9.pdf . + + + + + + + // Suppose you have the following input and output data + // and would like to learn the relationship between the + // inputs and outputs by using a Decision Tree: + + double[][] inputs = ... + int[] output = ... + + // To prune a decision tree, we need to split your data into + // training and pruning groups. Let's say we have 100 samples, + // and would like to reserve 50 samples for training, and 50 + // for pruning: + + // Gather the first half for the training set + var trainingInputs = inputs.Submatrix(0, 49); + var trainingOutput = output.Submatrix(0, 49); + + // Gather the second hand data for pruning + var pruningInputs = inputs.Submatrix(50, 99); + var pruningOutput = output.Submatrix(50, 99); + + + // Create the decision tree + DecisionTree tree = new DecisionTree( ... ); + + // Learn our tree using the training data + C45Learning c45 = new C45Learning(tree); + double error = c45.Run(trainingInputs, trainingOutput); + + + // Now we can attempt to prune the tree using the pruning groups + ErrorBasedPruning prune = new ErrorBasedPruning(tree, pruningInputs, pruningOutput); + + // Gain threshold + prune.Threshold = 0.1; + + double lastError; + double error = Double.PositiveInfinity; + + do + { + // Now we can start pruning the tree as + // long as the error doesn't increase + + lastError = error; + error = prune.Run(); + + } while (error < lastError); + + + + + + + Initializes a new instance of the class. + + + The tree to be pruned. + The pruning set inputs. + The pruning set outputs. + + + + + Computes one pass of the pruning algorithm. + + + + + + Attempts to prune a node's subtrees. + + + Whether the current node was changed or not. + + + + + Gets or sets the minimum allowed gain threshold + to prune the tree. Default is 0.01. + + + + + + Decision rule simplification algorithm. + + + + + + Initializes a new instance of the class. + + + The decision set to be simplified. + + + + + Computes the reduction algorithm. + + + A set of training inputs. + The outputs corresponding to each of the inputs. + + The average error after the reduction. + + + + + Computes the average decision error. + + + A set of input vectors. + A set of corresponding output vectors. + + The average misclassification rate. + + + + + Checks if two variables can be eliminated. + + + + + + Checks if two variables can be eliminated. + + + + + + Gets or sets the underlying hypothesis test + size parameter used to reject hypothesis. + + + + + + Boltzmann distribution exploration policy. + + + The class implements exploration policy base on Boltzmann distribution. + Acording to the policy, action a at state s is selected with the next probability: + + exp( Q( s, a ) / t ) + p( s, a ) = ----------------------------- + SUM( exp( Q( s, b ) / t ) ) + b + + where Q(s, a) is action's a estimation (usefulness) at state s and + t is . + + + + + + + + + + Exploration policy interface. + + + The interface describes exploration policies, which are used in Reinforcement + Learning to explore state space. + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Initializes a new instance of the class. + + + Termperature parameter of Boltzmann distribution. + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Termperature parameter of Boltzmann distribution, >0. + + + The property sets the balance between exploration and greedy actions. + If temperature is low, then the policy tends to be more greedy. + + + + + Epsilon greedy exploration policy. + + + The class implements epsilon greedy exploration policy. Acording to the policy, + the best action is chosen with probability 1-epsilon. Otherwise, + with probability epsilon, any other action, except the best one, is + chosen randomly. + + According to the policy, the epsilon value is known also as exploration rate. + + + + + + + + + + Initializes a new instance of the class. + + + Epsilon value (exploration rate). + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Epsilon value (exploration rate), [0, 1]. + + + The value determines the amount of exploration driven by the policy. + If the value is high, then the policy drives more to exploration - choosing random + action, which excludes the best one. If the value is low, then the policy is more + greedy - choosing the beat so far action. + + + + + + Roulette wheel exploration policy. + + + The class implements roulette whell exploration policy. Acording to the policy, + action a at state s is selected with the next probability: + + Q( s, a ) + p( s, a ) = ------------------ + SUM( Q( s, b ) ) + b + + where Q(s, a) is action's a estimation (usefulness) at state s. + + The exploration policy may be applied only in cases, when action estimates (usefulness) + are represented with positive value greater then 0. + + + + + + + + + + Initializes a new instance of the class. + + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Tabu search exploration policy. + + + The class implements simple tabu search exploration policy, + allowing to set certain actions as tabu for a specified amount of + iterations. The actual exploration and choosing from non-tabu actions + is done by base exploration policy. + + + + + + + + + Initializes a new instance of the class. + + + Total actions count. + Base exploration policy. + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). The action is choosed from + non-tabu actions only. + + + + + Reset tabu list. + + + Clears tabu list making all actions allowed. + + + + + Set tabu action. + + + Action to set tabu for. + Tabu time in iterations. + + + + + Base exploration policy. + + + Base exploration policy is the policy, which is used + to choose from non-tabu actions. + + + + + Robust circle estimator with RANSAC. + + + + + + Creates a new RANSAC 2D circle estimator. + + + Inlier threshold. + Inlier probability. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Solver types allowed in LibSVM/Liblinear model files. + + + + + + Unknown solver type. + + + + + + L2-regularized logistic regression in the primal (-s 0, L2R_LR). + + + + + + + + L2-regularized L2-loss support vector classification + in the dual (-s 1, L2R_L2LOSS_SVC_DUAL, the default). + + + + + + + + L2-regularized L2-loss support vector classification + in the primal (-s 2, L2R_L2LOSS_SVC). + + + + + + + + L2-regularized L1-loss support vector classification + in the dual (-s 3, L2R_L1LOSS_SVC_DUAL). + + + + + + + + Support vector classification by + Crammer and Singer (-s 4, MCSVM_CS). + + + + + + L1-regularized L2-loss support vector + classification (-s 5, L1R_L2LOSS_SVC). + + + + + + L1-regularized logistic regression (-s 6, L1R_LR). + + + + + + + + L2-regularized logistic regression in the dual (-s 7, L2R_LR_DUAL). + + + + + + + + L2-regularized L2-loss support vector regression + in the primal (-s 11, L2R_L2LOSS_SVR). + + + + + + L2-regularized L2-loss support vector regression + in the dual (-s 12, L2R_L2LOSS_SVR_DUAL). + + + + + + L2-regularized L1-loss support vector regression + in the dual (-s 13, L2R_L1LOSS_SVR_DUAL). + + + + + + Reads support vector machines + created from LibSVM or Liblinear. Not all solver types are supported. + + + + + + Creates a new object. + + + + + + Creates a that + attends the requisites specified in this model. + + + A that represents this model. + + + + + Creates a support + vector machine learning algorithm that attends the + requisites specified in this model. + + + + A that represents this model. + + + + + + Saves this model to disk using LibSVM's model format. + + + The path where the file should be written. + + + + + Saves this model to disk using LibSVM's model format. + + + The stream where the file should be written. + + + + + Loads a model specified using LibSVM's model format from disk. + + + The file path from where the model should be loaded. + + The stored on . + + + + + Loads a model specified using LibSVM's model format from a stream. + + + The stream from where the model should be loaded. + + The stored on . + + + + + Gets or sets the solver type used to create the model. + + + + + + Gets or sets the number of classes that + this classification model can handle. + + + + + + Gets or sets whether an initial double value should + be appended in the beginning of every feature vector. + If set to a negative number, this functionality is + disabled. Default is 0. + + + + + + Gets or sets the number of dimensions (features) + the classification or regression model can handle. + + + + + + Gets or sets the class label for each class + this classification model expects to handle. + + + + + + Gets or sets the vector of linear weights used + by this model, if it is a compact model. If this + is not a compact model, this will be set to null. + + + + + + + + Gets or sets the set of support vectors used + by this model. If the model is compact, this + will be set to null. + + + + + + + + Minimum (Mean) Distance Classifier. + + + + This is one of the simplest possible pattern recognition classifiers. + This classifier works by comparing a new input vector against the mean + value of the other classes. The class which is closer to this new input + vector is considered the winner, and the vector will be classified as + having the same label as this class. + + + + + + Initializes a new instance of the class. + + + The input points. + The output labels associated with each + input points. + + + + + Initializes a new instance of the class. + + + A distance function. Default is to use + the distance. + The input points. + The output labels associated with each + input points. + + + + + Computes the label for the given input. + + + The input value. + The distances from to the class means. + + The output label assigned to this point. + + + + + Computes the label for the given input. + + + A input. + + The output label assigned to this point. + + + + + K-Nearest Neighbor (k-NN) algorithm. + + + The type of the input data. + + + The k-nearest neighbor algorithm (k-NN) is a method for classifying objects + based on closest training examples in the feature space. It is amongst the simplest + of all machine learning algorithms: an object is classified by a majority vote of + its neighbors, with the object being assigned to the class most common amongst its + k nearest neighbors (k is a positive integer, typically small). + + If k = 1, then the object is simply assigned to the class of its nearest neighbor. + + + References: + + + Wikipedia contributors. "K-nearest neighbor algorithm." Wikipedia, The + Free Encyclopedia. Wikipedia, The Free Encyclopedia, 10 Oct. 2012. Web. + 9 Nov. 2012. http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm + + + + + + The following example shows how to create + and use a k-Nearest Neighbor algorithm to classify + a set of numeric vectors. + + + // Create some sample learning data. In this data, + // the first two instances belong to a class, the + // four next belong to another class and the last + // three to yet another. + + double[][] inputs = + { + // The first two are from class 0 + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + + // The next four are from class 1 + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + + // The last three are from class 2 + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + int[] outputs = + { + 0, 0, // First two from class 0 + 1, 1, 1, 1, // Next four from class 1 + 2, 2, 2 // Last three from class 2 + }; + + + // Now we will create the K-Nearest Neighbors algorithm. For this + // example, we will be choosing k = 4. This means that, for a given + // instance, its nearest 4 neighbors will be used to cast a decision. + KNearestNeighbors knn = new KNearestNeighbors(k: 4, classes: 3, + inputs: inputs, outputs: outputs); + + + // After the algorithm has been created, we can classify a new instance: + int answer = knn.Compute(new double[] { 11, 5, 4 }); // answer will be 2. + + + + The k-Nearest neighbor algorithm implementation in the + framework can also be used with any instance data type. For + such cases, the framework offers a generic version of the + classifier, as shown in the example below. + + + // The k-Nearest Neighbors algorithm can be used with + // any kind of data. In this example, we will see how + // it can be used to compare, for example, Strings. + + string[] inputs = + { + "Car", // class 0 + "Bar", // class 0 + "Jar", // class 0 + + "Charm", // class 1 + "Chair" // class 1 + }; + + int[] outputs = + { + 0, 0, 0, // First three are from class 0 + 1, 1, // And next two are from class 1 + }; + + + // Now we will create the K-Nearest Neighbors algorithm. For this + // example, we will be choosing k = 1. This means that, for a given + // instance, only its nearest neighbor will be used to cast a new + // decision. + + // In order to compare strings, we will be using Levenshtein's string distance + KNearestNeighbors<string> knn = new KNearestNeighbors<string>(k: 1, classes: 2, + inputs: inputs, outputs: outputs, distance: Distance.Levenshtein); + + + // After the algorithm has been created, we can use it: + int answer = knn.Compute("Chars"); // answer should be 1. + + + + + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + + The input data points. + The associated labels for the input points. + The distance measure to use in the decision. + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + + The input data points. + The associated labels for the input points. + The distance measure to use in the decision. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + + The most likely label for the given point. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + A value between 0 and 1 giving + the strength of the classification in relation to the + other classes. + + The most likely label for the given point. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + The distance score for each possible class. + + The most likely label for the given point. + + + + + Gets the top points that are the closest + to a given reference point. + + + The query point whose neighbors will be found. + The label for each neighboring point. + + + An array containing the top points that are + at the closest possible distance to . + + + + + + Gets the set of points given + as input of the algorithm. + + + The input points. + + + + + Gets the set of labels associated + with each point. + + + + + + Gets the number of class labels + handled by this classifier. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets the number of nearest + neighbors to be used in the decision. + + + The number of neighbors. + + + + + Fitting function delegate. + + + + The sample indexes to be used as training samples in + the model fitting procedure. + + The sample indexes to be used as validation samples in + the model fitting procedure. + + + The fitting function is called during the Bootstrap + procedure to fit a model with the given set of samples + for training and validation. + + + + + + Bootstrap method for generalization + performance measurements. + + + + + // This is a sample code on how to use Bootstrap estimate + // to assess the performance of Support Vector Machines. + + // Consider the example binary data. We will be trying + // to learn a XOR problem and see how well does SVMs + // perform on this data. + + double[][] data = + { + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + }; + + int[] xor = // result of xor for the sample input data + { + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + }; + + + // Create a new Bootstrap algorithm passing the set size and the number of resamplings + var bootstrap = new Bootstrap(size: data.Length, subsamples: 50); + + // Define a fitting function using Support Vector Machines. The objective of this + // function is to learn a SVM in the subset of the data indicated by the bootstrap. + + bootstrap.Fitting = delegate(int[] indicesTrain, int[] indicesValidation) + { + // The fitting function is passing the indices of the original set which + // should be considered training data and the indices of the original set + // which should be considered validation data. + + // Lets now grab the training data: + var trainingInputs = data.Submatrix(indicesTrain); + var trainingOutputs = xor.Submatrix(indicesTrain); + + // And now the validation data: + var validationInputs = data.Submatrix(indicesValidation); + var validationOutputs = xor.Submatrix(indicesValidation); + + + // Create a Kernel Support Vector Machine to operate on the set + var svm = new KernelSupportVectorMachine(new Polynomial(2), 2); + + // Create a training algorithm and learn the training data + var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs); + + double trainingError = smo.Run(); + + // Now we can compute the validation error on the validation data: + double validationError = smo.ComputeError(validationInputs, validationOutputs); + + // Return a new information structure containing the model and the errors achieved. + return new BootstrapValues(trainingError, validationError); + }; + + + // Compute the bootstrap estimate + var result = bootstrap.Compute(); + + // Finally, access the measured performance. + double trainingErrors = result.Training.Mean; + double validationErrors = result.Validation.Mean; + + // And compute the 0.632 estimate + double estimate = result.Estimate; + + + + + + + + + + + + + Creates a new Bootstrap estimation algorithm. + + + The size of the complete dataset. + The number B of bootstrap resamplings to perform. + + + + + Creates a new Bootstrap estimation algorithm. + + + The size of the complete dataset. + The number B of bootstrap resamplings to perform. + The number of samples in each subsample. Default + is to use the total number of samples in the population dataset.. + + + + + Creates a new Bootstrap estimation algorithm. + + + The size of the complete dataset. + The indices of the bootstrap samplings. + + + + + Gets the indices for the training and validation + sets for the specified validation fold index. + + + The index of the validation fold. + The indices for the observations in the training set. + The indices for the observations in the validation set. + + + + + Computes the cross validation algorithm. + + + + + + Gets the number of instances in training and validation + sets for the specified validation fold index. + + + The index of the bootstrap sample. + The number of instances in the training set. + The number of instances in the validation set. + + + + + Draws the bootstrap samples from the population. + + + The size of the samples to be drawn. + The number of samples to drawn. + The size of the samples to be drawn. + + The indices of the samples in the original set. + + + + + Gets the number B of bootstrap samplings + to be drawn from the population dataset. + + + + + + Gets the total number of samples in the population dataset. + + + + + + Gets the bootstrap samples drawn from + the population dataset as indices. + + + + + + Gets or sets the model fitting function. + + + The fitting function should accept an array of integers containing the + indexes for the training samples, an array of integers containing the + indexes for the validation samples and should return information about + the model fitted using those two subsets of the available data. + + + + + + Gets or sets a value indicating whether to use parallel + processing through the use of multiple threads or not. + Default is true. + + + true to use multiple threads; otherwise, false. + + + + + Bootstrap validation analysis results. + + + + + + Initializes a new instance of the class. + + + The that is creating this result. + The models created during the cross-validation runs. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Loads a result from a stream. + + + The stream from which the result is to be deserialized. + + The deserialized result. + + + + + Loads a result from a stream. + + + The path to the file from which the result is to be deserialized. + + The deserialized result. + + + + + Gets the + object used to generate this result. + + + + + + Gets the performance statistics for the training set. + + + + + + Gets the performance statistics for the validation set. + + + + + Gets the 0.632 bootstrap estimate. + + + + + + Information class to store the training and validation errors of a model. + + + + + The training value for the model. + The validation value for the model. + + + + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Gets the validation value for the model. + + + + + + Gets the variance of the validation + value for the model, if available. + + + + + + Gets the training value for the model. + + + + + + Gets the variance of the training + value for the model, if available. + + + + + + Gets or sets a tag for user-defined information. + + + + + + k-Modes algorithm. + + + + The k-Modes algorithm is a variant of the k-Means which instead of + locating means attempts to locate the modes of a set of points. As + the algorithm does not require explicit numeric manipulation of the + input points (such as addition and division to compute the means), + the algorithm can be used with arbitrary (generic) data structures. + + + + + + + + + + Initializes a new instance of KMeans algorithm + + + The number of clusters to divide input data. + The distance function to use. Default is to + use the distance. + + + + + Randomizes the clusters inside a dataset. + + + The data to randomize the algorithm. + True to use the k-means++ seeding algorithm. False otherwise. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + The average distance metric from the + data points to the clusters' centroids. + + + + + + Determines if the algorithm has converged by comparing the + centroids between two consecutive iterations. + + + The previous centroids. + The new centroids. + A convergence threshold. + + Returns if all centroids had a percentage change + less than . Returns otherwise. + + + + + Gets the clusters found by K-modes. + + + + + + Gets the number of clusters. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + k-Modes algorithm. + + + + + The k-Modes algorithm is a variant of the k-Means which instead of + locating means attempts to locate the modes of a set of points. As + the algorithm does not require explicit numeric manipulation of the + input points (such as addition and division to compute the means), + the algorithm can be used with arbitrary (generic) data structures. + + This is the specialized, non-generic version of the K-Modes algorithm + that is set to work on arrays. + + + + + + + + Initializes a new instance of K-Modes algorithm + + + The number of clusters to divide input data. + + + + + Modes for storing models. + + + + + + Stores a model on each iteration. This is the most + intensive method, but enables a quick restoration + of any point on the learning history. + + + + + + Stores only the model which had shown the minimum + validation value in the training history. All other + models are discarded and only their validation and + training values will be registered. + + + + + + Stores only the model which had shown the maximum + validation value in the training history. All other + models are discarded and only their validation and + training values will be registered. + + + + + + Early stopping training procedure. + + + + The early stopping training procedure monitors a validation set + during training to determine when a learning algorithm has stopped + learning and started to overfit data. This class keeps an history + of training and validation errors and will keep the best model found + during learning. + + + The type of the model to be trained. + + + + + Creates a new early stopping procedure object. + + + + + + Starts the model training, calling the + on each iteration. + + + True if the model training has converged, false otherwise. + + + + + Gets or sets the maximum number of iterations + performed by the early stopping algorithm. Default + is 0 (run until convergence). + + + + + + Gets or sets the minimum tolerance value used + to determine convergence. Default is 1e-5. + + + + + + Gets the history of training and validation values + registered at each iteration of the learning algorithm. + + + + + + Gets the model with minimum validation error found during learning. + + + + + + Gets the model with maximum validation error found during learning. + + + + + + Gets or sets the storage policy for the procedure. + + + + + Gets or sets the iteration function for the procedure. This + function will be called on each iteration and should run one + iteration of the learning algorithm for the given model. + + + + + + Range of parameters to be tested in a grid search. + + + + + + Constructs a new GridsearchRange object. + + + The name for this parameter. + The starting value for this range. + The end value for this range. + The step size for this range. + + + + + Constructs a new GridSearchRange object. + + + The name for this parameter. + The array of values to try. + + + + + Gets the array of GridSearchParameters to try. + + + + + + Gets or sets the name of the parameter from which the range belongs to. + + + + + + Gets or sets the range of values that should be tested for this parameter. + + + + + + GridSearchRange collection. + + + + + + Constructs a new collection of GridsearchRange objects. + + + + + + Returns the identifying value for an item on this collection. + + + + + + Adds a parameter range to the end of the GridsearchRangeCollection. + + + + + + Contains the name and value of a parameter that should be used during fitting. + + + + + + Constructs a new parameter. + + + The name for the parameter. + The value for the parameter. + + + + + Determines whether the specified object is equal + to the current GridSearchParameter object. + + + + + + Returns the hash code for this GridSearchParameter + + + + + + Compares two GridSearchParameters for equality. + + + + + + Compares two GridSearchParameters for inequality. + + + + + + Gets the name of the parameter + + + + + + Gets the value of the parameter. + + + + + + Grid search parameter collection. + + + + + + Constructs a new collection of GridsearchParameter objects. + + + + + + Constructs a new collection of GridsearchParameter objects. + + + + + + Returns the identifying value for an item on this collection. + + + + + + Training and validation errors of a model. + + + The type of the model. + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Gets the model. + + + + + + Gets the validation value for the model. + + + + + + Gets the variance of the validation + value for the model, if available. + + + + + + Gets the training value for the model. + + + + + + Gets the variance of the training + value for the model, if available. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Class for representing results acquired through + a k-fold cross-validation analysis. + + + The type of the model being analyzed. + + + + + Initializes a new instance of the class. + + + The that is creating this result. + The models created during the cross-validation runs. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Loads a result from a stream. + + + The stream from which the result is to be deserialized. + + The deserialized result. + + + + + Loads a result from a stream. + + + The path to the file from which the result is to be deserialized. + + The deserialized result. + + + + + Gets the + object used to generate this result. + + + + + + Gets the performance statistics for the training set. + + + + + + Gets the performance statistics for the validation set. + + + + + Gets the models created for each fold of the cross validation. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Information class to store the training and validation errors of a model. + + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The variance of the training values. + + + + + Summary statistics for a cross-validation trial. + + + + + + Create a new cross-validation statistics class. + + + The number of samples used to compute the statistics. + The performance statistics gathered during the run. + + + + + Create a new cross-validation statistics class. + + + The number of samples used to compute the statistics. + The performance statistics gathered during the run. + The variance of the statistics gathered during the run, if available. + + + + + Gets the values acquired during the cross-validation. + Most often those will be the errors for each folding. + + + + + + Gets the variance for each value acquired during the cross-validation. + Most often those will be the error variance for each folding. + + + + + + Gets the number of samples used to compute the variance + of the values acquired during the cross-validation. + + + + + + Gets the mean of the performance statistics. + + + + + + Gets the variance of the performance statistics. + + + + + + Gets the standard deviation of the performance statistics. + + + + + + Gets the pooled variance of the performance statistics. + + + + + + Gets the pooled standard deviation of the performance statistics. + + + + + + Gets or sets a tag for user-defined information. + + + + + + k-Fold cross-validation. + + + + + Cross-validation is a technique for estimating the performance of a predictive + model. It can be used to measure how the results of a statistical analysis will + generalize to an independent data set. It is mainly used in settings where the + goal is prediction, and one wants to estimate how accurately a predictive model + will perform in practice. + + One round of cross-validation involves partitioning a sample of data into + complementary subsets, performing the analysis on one subset (called the + training set), and validating the analysis on the other subset (called the + validation set or testing set). To reduce variability, multiple rounds of + cross-validation are performed using different partitions, and the validation + results are averaged over the rounds. + + + References: + + + Wikipedia, The Free Encyclopedia. Cross-validation (statistics). Available on: + http://en.wikipedia.org/wiki/Cross-validation_(statistics) + + + + + + // This is a sample code on how to use Cross-Validation + // to assess the performance of Support Vector Machines. + + // Consider the example binary data. We will be trying + // to learn a XOR problem and see how well does SVMs + // perform on this data. + + double[][] data = + { + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + }; + + int[] xor = // result of xor for the sample input data + { + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + }; + + + // Create a new Cross-validation algorithm passing the data set size and the number of folds + var crossvalidation = new CrossValidation(size: data.Length, folds: 3); + + // Define a fitting function using Support Vector Machines. The objective of this + // function is to learn a SVM in the subset of the data indicated by cross-validation. + + crossvalidation.Fitting = delegate(int k, int[] indicesTrain, int[] indicesValidation) + { + // The fitting function is passing the indices of the original set which + // should be considered training data and the indices of the original set + // which should be considered validation data. + + // Lets now grab the training data: + var trainingInputs = data.Submatrix(indicesTrain); + var trainingOutputs = xor.Submatrix(indicesTrain); + + // And now the validation data: + var validationInputs = data.Submatrix(indicesValidation); + var validationOutputs = xor.Submatrix(indicesValidation); + + + // Create a Kernel Support Vector Machine to operate on the set + var svm = new KernelSupportVectorMachine(new Polynomial(2), 2); + + // Create a training algorithm and learn the training data + var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs); + + double trainingError = smo.Run(); + + // Now we can compute the validation error on the validation data: + double validationError = smo.ComputeError(validationInputs, validationOutputs); + + // Return a new information structure containing the model and the errors achieved. + return new CrossValidationValues(svm, trainingError, validationError); + }; + + + // Compute the cross-validation + var result = crossvalidation.Compute(); + + // Finally, access the measured performance. + double trainingErrors = result.Training.Mean; + double validationErrors = result.Validation.Mean; + + + + + + + + + + + k-Fold cross-validation. + + + The type of the model being analyzed. + + + + Cross-validation is a technique for estimating the performance of a predictive + model. It can be used to measure how the results of a statistical analysis will + generalize to an independent data set. It is mainly used in settings where the + goal is prediction, and one wants to estimate how accurately a predictive model + will perform in practice. + + One round of cross-validation involves partitioning a sample of data into + complementary subsets, performing the analysis on one subset (called the + training set), and validating the analysis on the other subset (called the + validation set or testing set). To reduce variability, multiple rounds of + cross-validation are performed using different partitions, and the validation + results are averaged over the rounds. + + + References: + + + Wikipedia, The Free Encyclopedia. Cross-validation (statistics). Available on: + http://en.wikipedia.org/wiki/Cross-validation_(statistics) + + + + + + // This is a sample code on how to use Cross-Validation + // to access the performance of Support Vector Machines. + + // Consider the example binary data. We will be trying + // to learn a XOR problem and see how well does SVMs + // perform on this data. + + double[][] data = + { + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + }; + + int[] xor = // result of xor for the sample input data + { + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + }; + + + // Create a new Cross-validation algorithm passing the data set size and the number of folds + var crossvalidation = new CrossValidation<KernelSupportVectorMachine>(size: data.Length, folds: 3); + + // Define a fitting function using Support Vector Machines. The objective of this + // function is to learn a SVM in the subset of the data indicated by cross-validation. + + crossvalidation.Fitting = delegate(int k, int[] indicesTrain, int[] indicesValidation) + { + // The fitting function is passing the indices of the original set which + // should be considered training data and the indices of the original set + // which should be considered validation data. + + // Lets now grab the training data: + var trainingInputs = data.Submatrix(indicesTrain); + var trainingOutputs = xor.Submatrix(indicesTrain); + + // And now the validation data: + var validationInputs = data.Submatrix(indicesValidation); + var validationOutputs = xor.Submatrix(indicesValidation); + + + // Create a Kernel Support Vector Machine to operate on the set + var svm = new KernelSupportVectorMachine(new Polynomial(2), 2); + + // Create a training algorithm and learn the training data + var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs); + + double trainingError = smo.Run(); + + // Now we can compute the validation error on the validation data: + double validationError = smo.ComputeError(validationInputs, validationOutputs); + + // Return a new information structure containing the model and the errors achieved. + return new CrossValidationValues<KernelSupportVectorMachine>(svm, trainingError, validationError); + }; + + + // Compute the cross-validation + var result = crossvalidation.Compute(); + + // Finally, access the measured performance. + double trainingErrors = result.Training.Mean; + double validationErrors = result.Validation.Mean; + + + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + A vector containing class labels. + The number of different classes in . + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + An already created set of fold indices for each sample in a dataset. + The total number of folds referenced in the parameter. + + + + + Gets the indices for the training and validation + sets for the specified validation fold index. + + + The index of the validation fold. + The indices for the observations in the training set. + The indices for the observations in the validation set. + + + + + Gets the number of instances in training and validation + sets for the specified validation fold index. + + + The index of the validation fold. + The number of instances in the training set. + The number of instances in the validation set. + + + + + Computes the cross validation algorithm. + + + + + + Gets or sets the model fitting function. + + + The fitting function should accept an array of integers containing the + indexes for the training samples, an array of integers containing the + indexes for the validation samples and should return information about + the model fitted using those two subsets of the available data. + + + + + + Gets the array of data set indexes contained in each fold. + + + + + + Gets the array of fold indices for each point in the data set. + + + + + + Gets the number of folds in the k-fold cross validation. + + + + + + Gets the total number of data samples in the data set. + + + + + + Gets or sets a value indicating whether to use parallel + processing through the use of multiple threads or not. + Default is true. + + + true to use multiple threads; otherwise, false. + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + A vector containing class labels. + The number of different classes in . + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + An already created set of fold indices for each sample in a dataset. + The total number of folds referenced in the parameter. + + + + + Create cross-validation folds by generating a vector of random fold indices. + + + The number of points in the data set. + The number of folds in the cross-validation. + + A vector of indices defining the a fold for each point in the data set. + + + + + Create cross-validation folds by generating a vector of random fold indices, + making sure class labels get equally distributed among the folds. + + + A vector containing class labels. + The number of different classes in . + The number of folds in the cross-validation. + + A vector of indices defining the a fold for each point in the data set. + + + + + Fitting function delegate. + + + + The fold index. + + The sample indexes to be used as training samples in + the model fitting procedure. + + The sample indexes to be used as validation samples in + the model fitting procedure. + + + The fitting function is called during the Cross-validation + procedure to fit a model with the given set of samples for + training and validation. + + + + + + Attribute category. + + + + + + Attribute is discrete-valued. + + + + + + Attribute is continuous-valued. + + + + + + Decision attribute. + + + + + + Creates a new . + + + The name of the attribute. + The range of valid values for this attribute. Default is [0;1]. + + + + + Creates a new . + + + The name of the attribute. + The attribute's nature (i.e. real-valued or discrete-valued). + + + + + Creates a new . + + + The name of the attribute. + The range of valid values for this attribute. + + + + + Creates a new discrete-valued . + + + The name of the attribute. + The number of possible values for this attribute. + + + + + Creates a new continuous . + + + The name of the attribute. + + + + + Creates a new continuous . + + + The name of the attribute. + The range of valid values for this attribute. Default is [0;1]. + + + + + Creates a new discrete . + + + The name of the attribute. + The range of valid values for this attribute. + + + + + Creates a new discrete-valued . + + + The name of the attribute. + The number of possible values for this attribute. + + + + + Creates a set of decision variables from a codebook. + + + The codebook containing information about the variables. + The columns to consider as decision variables. + + An array of objects + initialized with the values from the codebook. + + + + + Gets the name of the attribute. + + + + + + Gets the nature of the attribute (i.e. real-valued or discrete-valued). + + + + + + Gets the valid range of the attribute. + + + + + + Collection of decision attributes. + + + + + + Initializes a new instance of the class. + + + The list to initialize the collection. + + + + + C4.5 Learning algorithm for Decision Trees. + + + + + References: + + + Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan + Kaufmann Publishers, 1993. + + Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan + Kaufmann Publishers, 1993. + + Quinlan, J. R. Improved use of continuous attributes in c4.5. Journal + of Artificial Intelligence Research, 4:77-90, 1996. + + Mitchell, T. M. Machine Learning. McGraw-Hill, 1997. pp. 55-58. + + Wikipedia, the free encyclopedia. ID3 algorithm. Available on + http://en.wikipedia.org/wiki/ID3_algorithm + + + + + + + + + // This example uses the Nursery Database available from the University of + // California Irvine repository of machine learning databases, available at + // + // http://archive.ics.uci.edu/ml/machine-learning-databases/nursery/nursery.names + // + // The description paragraph is listed as follows. + // + // Nursery Database was derived from a hierarchical decision model + // originally developed to rank applications for nursery schools. It + // was used during several years in 1980's when there was excessive + // enrollment to these schools in Ljubljana, Slovenia, and the + // rejected applications frequently needed an objective + // explanation. The final decision depended on three subproblems: + // occupation of parents and child's nursery, family structure and + // financial standing, and social and health picture of the family. + // The model was developed within expert system shell for decision + // making DEX (M. Bohanec, V. Rajkovic: Expert system for decision + // making. Sistemica 1(1), pp. 145-157, 1990.). + // + + // Let's begin by loading the raw data. This string variable contains + // the contents of the nursery.data file as a single, continuous text. + // + string nurseryData = Resources.nursery; + + // Those are the input columns available in the data + // + string[] inputColumns = + { + "parents", "has_nurs", "form", "children", + "housing", "finance", "social", "health" + }; + + // And this is the output, the last column of the data. + // + string outputColumn = "output"; + + + // Let's populate a data table with this information. + // + DataTable table = new DataTable("Nursery"); + table.Columns.Add(inputColumns); + table.Columns.Add(outputColumn); + + string[] lines = nurseryData.Split( + new[] { Environment.NewLine }, StringSplitOptions.None); + + foreach (var line in lines) + table.Rows.Add(line.Split(',')); + + + // Now, we have to convert the textual, categorical data found + // in the table to a more manageable discrete representation. + // + // For this, we will create a codebook to translate text to + // discrete integer symbols: + // + Codification codebook = new Codification(table); + + // And then convert all data into symbols + // + DataTable symbols = codebook.Apply(table); + double[][] inputs = symbols.ToArray(inputColumns); + int[] outputs = symbols.ToArray<int>(outputColumn); + + // From now on, we can start creating the decision tree. + // + var attributes = DecisionVariable.FromCodebook(codebook, inputColumns); + DecisionTree tree = new DecisionTree(attributes, outputClasses: 5); + + + // Now, let's create the C4.5 algorithm + C45Learning c45 = new C45Learning(tree); + + // and learn a decision tree. The value of + // the error variable below should be 0. + // + double error = c45.Run(inputs, outputs); + + + // To compute a decision for one of the input points, + // such as the 25-th example in the set, we can use + // + int y = tree.Compute(inputs[25]); + + // Finally, we can also convert our tree to a native + // function, improving efficiency considerably, with + // + Func<double[], int> func = tree.ToExpression().Compile(); + + // Again, to compute a new decision, we can just use + // + int z = func(inputs[25]); + + + + + + + Creates a new C4.5 learning algorithm. + + + The decision tree to be generated. + + + + + Runs the learning algorithm, creating a decision + tree modeling the given inputs and outputs. + + + The inputs. + The corresponding outputs. + + The error of the generated tree. + + + + + Computes the prediction error for the tree + over a given set of input and outputs. + + + The input points. + The corresponding output labels. + + The percentage error of the prediction. + + + + + Gets or sets the maximum allowed + height when learning a tree. + + + + + + Gets or sets the step at which the samples will + be divided when dividing continuous columns in + binary classes. Default is 1. + + + + + + Gets or sets how many times one single variable can be + integrated into the decision process. In the original + ID3 algorithm, a variable can join only one time per + decision path (path from the root to a leaf). + + + + + + Static class for common information measures. + + + + + + Computes the split information measure. + + + The total number of samples. + The partitioning. + The split information for the given partitions. + + + + + ID3 (Iterative Dichotomizer 3) learning algorithm + for Decision Trees. + + + + + References: + + + Quinlan, J. R 1986. Induction of Decision Trees. + Mach. Learn. 1, 1 (Mar. 1986), 81-106. + + Mitchell, T. M. Machine Learning. McGraw-Hill, 1997. pp. 55-58. + + Wikipedia, the free encyclopedia. ID3 algorithm. Available on + http://en.wikipedia.org/wiki/ID3_algorithm + + + + + + + In this example, we will be using the famous Play Tennis example by Tom Mitchell (1998). + In Mitchell's example, one would like to infer if a person would play tennis or not + based solely on four input variables. Those variables are all categorical, meaning that + there is no order between the possible values for the variable (i.e. there is no order + relationship between Sunny and Rain, one is not bigger nor smaller than the other, but are + just distinct). Moreover, the rows, or instances presented above represent days on which the + behavior of the person has been registered and annotated, pretty much building our set of + observation instances for learning: + + + DataTable data = new DataTable("Mitchell's Tennis Example"); + + data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + data.Rows.Add( "D1", "Sunny", "Hot", "High", "Weak", "No" ); + data.Rows.Add( "D2", "Sunny", "Hot", "High", "Strong", "No" ); + data.Rows.Add( "D3", "Overcast", "Hot", "High", "Weak", "Yes" ); + data.Rows.Add( "D4", "Rain", "Mild", "High", "Weak", "Yes" ); + data.Rows.Add( "D5", "Rain", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D6", "Rain", "Cool", "Normal", "Strong", "No" ); + data.Rows.Add( "D7", "Overcast", "Cool", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D8", "Sunny", "Mild", "High", "Weak", "No" ); + data.Rows.Add( "D9", "Sunny", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D10", "Rain", "Mild", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D11", "Sunny", "Mild", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D12", "Overcast", "Mild", "High", "Strong", "Yes" ); + data.Rows.Add( "D13", "Overcast", "Hot", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D14", "Rain", "Mild", "High", "Strong", "No" ); + + + + In order to try to learn a decision tree, we will first convert this problem to a more simpler + representation. Since all variables are categories, it does not matter if they are represented + as strings, or numbers, since both are just symbols for the event they represent. Since numbers + are more easily representable than text string, we will convert the problem to use a discrete + alphabet through the use of a codebook. + + + A codebook effectively transforms any distinct possible value for a variable into an integer + symbol. For example, “Sunny” could as well be represented by the integer label 0, “Overcast” + by “1”, Rain by “2”, and the same goes by for the other variables. So: + + + // Create a new codification codebook to + // convert strings into integer symbols + Codification codebook = new Codification(data, + "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // Translate our training data into integer symbols using our codebook: + DataTable symbols = codebook.Apply(data); + int[][] inputs = symbols.ToArray<int>("Outlook", "Temperature", "Humidity", "Wind"); + int[] outputs = symbols.ToArray<int>("PlayTennis"); + + + + Now that we already have our learning input/ouput pairs, we should specify our + decision tree. We will be trying to build a tree to predict the last column, entitled + “PlayTennis”. For this, we will be using the “Outlook”, “Temperature”, “Humidity” and + “Wind” as predictors (variables which will we will use for our decision). Since those + are categorical, we must specify, at the moment of creation of our tree, the + characteristics of each of those variables. So: + + + + // Gather information about decision variables + DecisionVariable[] attributes = + { + new DecisionVariable("Outlook", 3), // 3 possible values (Sunny, overcast, rain) + new DecisionVariable("Temperature", 3), // 3 possible values (Hot, mild, cool) + new DecisionVariable("Humidity", 2), // 2 possible values (High, normal) + new DecisionVariable("Wind", 2) // 2 possible values (Weak, strong) + }; + + int classCount = 2; // 2 possible output values for playing tennis: yes or no + + //Create the decision tree using the attributes and classes + DecisionTree tree = new DecisionTree(attributes, classCount); + + + Now we have created our decision tree. Unfortunately, it is not really very useful, + since we haven't taught it the problem we are trying to predict. So now we must instantiate + a learning algorithm to make it useful. For this task, in which we have only categorical + variables, the simplest choice is to use the ID3 algorithm by Quinlan. Let’s do it: + + + // Create a new instance of the ID3 algorithm + ID3Learning id3learning = new ID3Learning(tree); + + // Learn the training instances! + id3learning.Run(inputs, outputs); + + + The tree can now be queried for new examples through its + method. For example, we can use: + + + string answer = codebook.Translate("PlayTennis", + tree.Compute(codebook.Translate("Sunny", "Hot", "High", "Strong"))); + + + In the above example, answer will be "No". + + + + + + + + + + Creates a new ID3 learning algorithm. + + + The decision tree to be generated. + + + + + Runs the learning algorithm, creating a decision + tree modeling the given inputs and outputs. + + + The inputs. + The corresponding outputs. + + The error of the generated tree. + + + + + Computes the prediction error for the tree + over a given set of input and outputs. + + + The input points. + The corresponding output labels. + + The percentage error of the prediction. + + + + + Gets or sets the maximum allowed height when + learning a tree. If set to zero, no limit will + be applied. Default is zero. + + + + + + Gets or sets whether all nodes are obligated to provide + a true decision value. If set to false, some leaf nodes + may contain null. Default is false. + + + + + + Gets or sets how many times one single variable can be + integrated into the decision process. In the original + ID3 algorithm, a variable can join only one time per + decision path (path from the root to a leaf). + + + + + + Decision tree. + + + + + Represent a decision tree which can be compiled to + code at run-time. For sample usage and example of + learning, please see the + ID3 learning algorithm for decision trees. + + + + + + + + + Creates a new to process + the given and the given + number of possible . + + + An array specifying the attributes to be processed by this tree. + The number of possible output classes for the given attributes. + + + + + Computes the decision for a given input. + + + The input data. + + A predicted class for the given input. + + + + + Computes the tree decision for a given input. + + + The input data. + + A predicted class for the given input. + + + + + Computes the tree decision for a given input. + + + The input data. + The node where the decision starts. + + A predicted class for the given input. + + + + + Returns an enumerator that iterates through the tree. + + + + An object that can be + used to iterate through the collection. + + + + + + Traverse the tree using a tree + traversal method. Can be iterated with a foreach loop. + + + The tree traversal method. Common methods are + available in the static class. + + An object which can be used to + traverse the tree using the chosen traversal method. + + + + + Traverse a subtree using a tree + traversal method. Can be iterated with a foreach loop. + + + The tree traversal method. Common methods are + available in the static class. + The root of the subtree to be traversed. + + An object which can be used to + traverse the tree using the chosen traversal method. + + + + + Transforms the tree into a set of decision rules. + + + A created from this tree. + + + + + Generates a C# class implementing the decision tree. + + + The name for the generated class. + + A string containing the generated class. + + + + + Generates a C# class implementing the decision tree. + + + The name for the generated class. + The where the class should be written. + + + + + Computes the height of the tree, defined as the + greatest distance (in links) between the tree's + root node and its leaves. + + + The tree's height. + + + + + Loads a tree from a file. + + + The path to the file from which the tree is to be deserialized. + + The deserialized tree. + + + + + Saves the tree to a stream. + + + The stream to which the tree is to be serialized. + + + + + Loads a tree from a stream. + + + The stream from which the tree is to be deserialized. + + The deserialized tree. + + + + + Loads a tree from a file. + + + The path to the tree from which the machine is to be deserialized. + + The deserialized tree. + + + + + Gets or sets the root node for this tree. + + + + + + Gets the collection of attributes processed by this tree. + + + + + + Gets the number of distinct output + classes classified by this tree. + + + + + + Gets the number of input attributes + expected by this tree. + + + + + + Decision Tree (DT) Node. + + + + Each node of a decision tree can play two roles. When a node is not a leaf, it + contains a with a collection of child nodes. The + branch specifies an attribute index, indicating which column from the data set + (the attribute) should be compared against its children values. The type of the + comparison is specified by each of the children. When a node is a leaf, it will + contain the output value which should be decided for when the node is reached. + + + + + + + + Creates a new decision node. + + + The owner tree for this node. + + + + + Computes whether a value satisfies + the condition imposed by this node. + + + The value x. + + true if the value satisfies this node's + condition; otherwise, false. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Computes the height of the node, defined as the + distance (in number of links) between the tree's + root node and this node. + + + The node's height. + + + + + Returns an enumerator that iterates through the node's subtree. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the node's subtree. + + + + An object that can be used to iterate through the collection. + + + + + + Gets or sets the value this node responds to + whenever this node acts as a child node. This + value is set only when the node has a parent. + + + + + + Gets or sets the type of the comparison which + should be done against . + + + + + + If this is a leaf node, gets or sets the output + value to be decided when this node is reached. + + + + + + If this is not a leaf node, gets or sets the collection + of child nodes for this node, together with the attribute + determining the reasoning process for those children. + + + + + + Gets or sets the parent of this node. If this is a root + node, the parent is null. + + + + + + Gets the containing this node. + + + + + + Gets a value indicating whether this instance is a root node (has no parent). + + + true if this instance is a root; otherwise, false. + + + + + Gets a value indicating whether this instance is a leaf (has no children). + + + true if this instance is a leaf; otherwise, false. + + + + + Gaussian mixture model clustering. + + + + Gaussian Mixture Models are one of most widely used model-based + clustering methods. This specialized class provides a wrap-up + around the + + Mixture<NormalDistribution> distribution and provides + mixture initialization using the K-Means clustering algorithm. + + + + + // Create a new Gaussian Mixture Model with 2 components + GaussianMixtureModel gmm = new GaussianMixtureModel(2); + + // Compute the model (estimate) + gmm.Compute(samples, 0.0001); + + // Get classification for a new sample + int c = gmm.Gaussians.Nearest(sample); + + + + + + + Gets a copy of the mixture distribution modeled by this Gaussian Mixture Model. + + + + + + Initializes a new instance of the class. + + + + The number of clusters in the clusterization problem. This will be + used to set the number of components in the mixture model. + + + + + Initializes a new instance of the class. + + + + The initial solution as a K-Means clustering. + + + + + Initializes a new instance of the class. + + + + The initial solution as a mixture of normal distributions. + + + + + Initializes a new instance of the class. + + + + The initial solution as a mixture of normal distributions. + + + + + Initializes the model with initial values obtained + through a run of the K-Means clustering algorithm. + + + + + + Initializes the model with initial values obtained + through a run of the K-Means clustering algorithm. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Returns the most likely clusters of an observation. + + + An input observation. + + + The index of the most likely cluster + of the given observation. + + + + + Returns the most likely clusters of an observation. + + + An input observation. + The likelihood responses for each cluster. + + + The index of the most likely cluster + of the given observation. + + + + + Returns the most likely clusters for an array of observations. + + + An set of observations. + + + An array containing the index of the most likely cluster + for each of the given observations. + + + + + Gets the Gaussian components of the mixture model. + + + + + + Options for Gaussian Mixture Model fitting. + + + + This class provides different options that can be passed to a + object when calling its + + method. + + + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + + + The convergence threshold. + + + + + Gets or sets the maximum number of iterations + to be performed by the Expectation-Maximization + algorithm. Default is zero (iterate until convergence). + + + + + + Gets or sets whether to make computations using the log + -domain. This might improve accuracy on large datasets. + + + + + + Gets or sets the sample weights. If set to null, + the data will be assumed equal weights. Default + is null. + + + + + + Gets or sets the fitting options for the component + Gaussian distributions of the mixture model. + + + The fitting options for inner Gaussian distributions. + + + + + Naïve Bayes Classifier. + + + + + A naive Bayes classifier is a simple probabilistic classifier based on applying Bayes' theorem + with strong (naive) independence assumptions. A more descriptive term for the underlying probability + model would be "independent feature model". + + In simple terms, a naive Bayes classifier assumes that the presence (or absence) of a particular + feature of a class is unrelated to the presence (or absence) of any other feature, given the class + variable. In spite of their naive design and apparently over-simplified assumptions, naive Bayes + classifiers have worked quite well in many complex real-world situations. + + + This class implements a discrete (integer-valued) Naive-Bayes classifier. There is also a + special named constructor to create classifiers assuming normal + distributions for each variable. For arbitrary distribution classifiers, please see + . + + + References: + + + Wikipedia contributors. "Naive Bayes classifier." Wikipedia, The Free Encyclopedia. + Wikipedia, The Free Encyclopedia, 16 Dec. 2011. Web. 5 Jan. 2012. + + + + + + + In this example, we will be using the famous Play Tennis example by Tom Mitchell (1998). + In Mitchell's example, one would like to infer if a person would play tennis or not + based solely on four input variables. Those variables are all categorical, meaning that + there is no order between the possible values for the variable (i.e. there is no order + relationship between Sunny and Rain, one is not bigger nor smaller than the other, but are + just distinct). Moreover, the rows, or instances presented below represent days on which the + behavior of the person has been registered and annotated, pretty much building our set of + observation instances for learning: + + + DataTable data = new DataTable("Mitchell's Tennis Example"); + + data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + data.Rows.Add( "D1", "Sunny", "Hot", "High", "Weak", "No" ); + data.Rows.Add( "D2", "Sunny", "Hot", "High", "Strong", "No" ); + data.Rows.Add( "D3", "Overcast", "Hot", "High", "Weak", "Yes" ); + data.Rows.Add( "D4", "Rain", "Mild", "High", "Weak", "Yes" ); + data.Rows.Add( "D5", "Rain", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D6", "Rain", "Cool", "Normal", "Strong", "No" ); + data.Rows.Add( "D7", "Overcast", "Cool", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D8", "Sunny", "Mild", "High", "Weak", "No" ); + data.Rows.Add( "D9", "Sunny", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D10", "Rain", "Mild", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D11", "Sunny", "Mild", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D12", "Overcast", "Mild", "High", "Strong", "Yes" ); + data.Rows.Add( "D13", "Overcast", "Hot", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D14", "Rain", "Mild", "High", "Strong", "No" ); + + + Obs: The DataTable representation is not required, and instead the NaiveBayes could + also be trained directly on integer arrays containing the integer codewords. + + + In order to estimate a discrete Naive Bayes, we will first convert this problem to a more simpler + representation. Since all variables are categories, it does not matter if they are represented + as strings, or numbers, since both are just symbols for the event they represent. Since numbers + are more easily representable than text strings, we will convert the problem to use a discrete + alphabet through the use of a codebook. + + + A codebook effectively transforms any distinct possible value for a variable into an integer + symbol. For example, “Sunny” could as well be represented by the integer label 0, “Overcast” + by “1”, Rain by “2”, and the same goes by for the other variables. So: + + + // Create a new codification codebook to + // convert strings into integer symbols + Codification codebook = new Codification(data, + "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // Translate our training data into integer symbols using our codebook: + DataTable symbols = codebook.Apply(data); + int[][] inputs = symbols.ToIntArray("Outlook", "Temperature", "Humidity", "Wind"); + int[] outputs = symbols.ToIntArray("PlayTennis").GetColumn(0); + + + + Now that we already have our learning input/ouput pairs, we should specify our + Bayes model. We will be trying to build a model to predict the last column, entitled + “PlayTennis”. For this, we will be using the “Outlook”, “Temperature”, “Humidity” and + “Wind” as predictors (variables which will we will use for our decision). Since those + are categorical, we must specify, at the moment of creation of our Bayes model, the + number of each possible symbols for those variables. + + + + // Gather information about decision variables + int[] symbolCounts = + { + codebook["Outlook"].Symbols, // 3 possible values (Sunny, overcast, rain) + codebook["Temperature"].Symbols, // 3 possible values (Hot, mild, cool) + codebook["Humidity"].Symbols, // 2 possible values (High, normal) + codebook["Wind"].Symbols // 2 possible values (Weak, strong) + }; + + int classCount = codebook["PlayTennis"].Symbols; // 2 possible values (yes, no) + + // Create a new Naive Bayes classifiers for the two classes + NaiveBayes target = new NaiveBayes(classCount, symbolCounts); + + // Compute the Naive Bayes model + target.Estimate(inputs, outputs); + + + Now that we have created and estimated our classifier, we + can query the classifier for new input samples through the method. + + + // We will be computing the label for a sunny, cool, humid and windy day: + int[] instance = codebook.Translate("Sunny", "Cool", "High", "Strong"); + + // Now, we can feed this instance to our model + int output = model.Compute(instance, out logLikelihood); + + // Finally, the result can be translated back to one of the codewords using + string result = codebook.Translate("PlayTennis", output); // result is "No" + + + + + + + + In this second example, we will be creating a simple multi-class + classification problem using integer vectors and learning a discrete + Naive Bayes on those vectors. + + + // Let's say we have the following data to be classified + // into three possible classes. Those are the samples: + // + int[][] inputs = + { + // input output + new int[] { 0, 1, 1, 0 }, // 0 + new int[] { 0, 1, 0, 0 }, // 0 + new int[] { 0, 0, 1, 0 }, // 0 + new int[] { 0, 1, 1, 0 }, // 0 + new int[] { 0, 1, 0, 0 }, // 0 + new int[] { 1, 0, 0, 0 }, // 1 + new int[] { 1, 0, 0, 0 }, // 1 + new int[] { 1, 0, 0, 1 }, // 1 + new int[] { 0, 0, 0, 1 }, // 1 + new int[] { 0, 0, 0, 1 }, // 1 + new int[] { 1, 1, 1, 1 }, // 2 + new int[] { 1, 0, 1, 1 }, // 2 + new int[] { 1, 1, 0, 1 }, // 2 + new int[] { 0, 1, 1, 1 }, // 2 + new int[] { 1, 1, 1, 1 }, // 2 + }; + + int[] outputs = // those are the class labels + { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, + }; + + // Create a discrete naive Bayes model for 3 classes and 4 binary inputs + var bayes = new NaiveBayes(classes: 3, symbols: new int[] { 2, 2, 2, 2 }); + + // Teach the model. The error should be zero: + double error = bayes.Estimate(inputs, outputs); + + // Now, let's test the model output for the first input sample: + int answer = bayes.Compute(new int[] { 0, 1, 1, 0 }); // should be 1 + + + + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of symbols for each input variable. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The prior probabilities for each output class. + The number of symbols for each input variable. + + + + + Initializes the frequency tables of a Naïve Bayes Classifier. + + + The input data. + The corresponding output labels for the input data. + True to estimate class priors from the data, false otherwise. + + The amount of regularization to be used in the m-estimator. + Default is 1e-5. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The most likely class for the instance. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The log-likelihood for the instance. + The response probabilities for each class. + The most likely class for the instance. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Saves the Naïve Bayes model to a stream. + + + The stream to which the Naïve Bayes model is to be serialized. + + + + + Saves the Naïve Bayes model to a stream. + + + The path to the file to which the Naïve Bayes model is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a stream. + + + The stream from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Gets the number of possible output classes. + + + + + + Gets the number of inputs in the model. + + + + + + Gets the number of symbols for each input in the model. + + + + + + Gets the tables of log-probabilities for the frequency of + occurrence of each symbol for each class and input. + + + A double[,] array in with each row corresponds to a + class, each column corresponds to an input variable. Each + element of this double[,] array is a frequency table containing + the frequency of each symbol for the corresponding variable as + a double[] array. + + + + + Gets the prior beliefs for each class. + + + + + + K-Nearest Neighbor (k-NN) algorithm. + + + + For more detailed documentation, including examples and code snippets, + please take a look on the documentation + page. + + + + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + + The input data points. + The associated labels for the input points. + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + + The input data points. + The associated labels for the input points. + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + The input data points. + The associated labels for the input points. + The distance measure to use. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + The distance score for each possible class. + + The most likely label for the given point. + + + + + Gets the top points that are the closest + to a given reference point. + + + The query point whose neighbors will be found. + The label for each neighboring point. + + + An array containing the top points that are + at the closest possible distance to . + + + + + + Creates a new algorithm from an existing + . The tree must have been created using the input + points and the point's class labels as the associated node information. + + + The containing the input points and their integer labels. + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + The input data points. + The associated labels for the input points. + + A algorithm initialized from the tree. + + + + + Split-Set Validation. + + + + This is the non-generic version of the . For + greater flexibility, consider using . + + + + + + + + + + Split-Set Validation. + + + The type of the model being analyzed. + + + + + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + The output labels to be balanced between the sets. + + + + + Computes the split-set validation algorithm. + + + + + + Gets the group labels assigned to each of the data samples. + + + + + + Gets the desired proportion of cases in + the training set in comparison to the + testing set. + + + + + + Gets or sets a value indicating whether the prevalence of + an output label should be balanced between training and + testing sets. + + + + true if this instance is stratified; otherwise, false. + + + + + + Gets the indices of elements in the validation set. + + + + + + Gets the indices of elements in the training set. + + + + + + Get or sets the model fitting function. + + + + + + Gets or sets the performance estimation function. + + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + The output labels to be balanced between the sets. + + + + + Summary statistics for a Split-set validation trial. + + + + + + Create a new split-set statistics class. + + + The generated model. + The number of samples used to compute the statistic. + The performance statistic gathered during the run. + The variance of the performance statistic during the run. + + + + + Gets the model created with the + + + + + Gets the values acquired during the cross-validation. + Most often those will be the errors for each folding. + + + + + + Gets the variance for each value acquired during the cross-validation. + Most often those will be the error variance for each folding. + + + + + + Gets the number of samples used to compute the variance + of the values acquired during the validation. + + + + + + Gets the standard deviation of the performance statistic. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Summary statistics for a Split-set validation trial. + + + + + + Create a new split-set statistics class. + + + The generated model. + The number of samples used to compute the statistic. + The performance statistic gathered during the run. + The variance of the performance statistic during the run. + + + + + Create a new split-set statistics class. + + + The generated model. + The number of samples used to compute the statistic. + The performance statistic gathered during the run. + The variance of the performance statistic during the run. + + + + + Class for representing results acquired through a + split-set + validation analysis. + + + The type of the model being analyzed. + + + + + Initializes a new instance of the class. + + + The that is creating this result. + The training set statistics. + The testing set statistics. + + + + + Gets the + object used to generate this result. + + + + + + Gets the performance statistics for the training set. + + + + + + Gets the performance statistics for the validation set. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Fitting function delegate. + + + + + + Evaluating function delegate. + + + + + + Delegate for grid search fitting functions. + + + The type of the model to fit. + + The collection of parameters to be used in the fitting process. + The error (or any other performance measure) returned by the model. + The model fitted to the data using the given parameters. + + + + + Grid search procedure for automatic parameter tuning. + + + + Grid Search tries to find the best combination of parameters across + a range of possible values that produces the best fit model. If there + are two parameters, each with 10 possible values, Grid Search will try + an exhaustive evaluation of the model using every combination of points, + resulting in 100 model fits. + + + The type of the model to be tuned. + + + How to fit a Kernel Support Vector Machine using Grid Search. + + // Example binary data + double[][] inputs = + { + new double[] { -1, -1 }, + new double[] { -1, 1 }, + new double[] { 1, -1 }, + new double[] { 1, 1 } + }; + + int[] xor = // xor labels + { + -1, 1, 1, -1 + }; + + // Declare the parameters and ranges to be searched + GridSearchRange[] ranges = + { + new GridSearchRange("complexity", new double[] { 0.00000001, 5.20, 0.30, 0.50 } ), + new GridSearchRange("degree", new double[] { 1, 10, 2, 3, 4, 5 } ), + new GridSearchRange("constant", new double[] { 0, 1, 2 } ) + }; + + + // Instantiate a new Grid Search algorithm for Kernel Support Vector Machines + var gridsearch = new GridSearch<KernelSupportVectorMachine>(ranges); + + // Set the fitting function for the algorithm + gridsearch.Fitting = delegate(GridSearchParameterCollection parameters, out double error) + { + // The parameters to be tried will be passed as a function parameter. + int degree = (int)parameters["degree"].Value; + double constant = parameters["constant"].Value; + double complexity = parameters["complexity"].Value; + + // Use the parameters to build the SVM model + Polynomial kernel = new Polynomial(degree, constant); + KernelSupportVectorMachine ksvm = new KernelSupportVectorMachine(kernel, 2); + + // Create a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(ksvm, inputs, xor); + smo.Complexity = complexity; + + // Measure the model performance to return as an out parameter + error = smo.Run(); + + return ksvm; // Return the current model + }; + + + // Declare some out variables to pass to the grid search algorithm + GridSearchParameterCollection bestParameters; double minError; + + // Compute the grid search to find the best Support Vector Machine + KernelSupportVectorMachine bestModel = gridsearch.Compute(out bestParameters, out minError); + + + + + + + Constructs a new Grid search algorithm. + + + The range of parameters to search. + + + + + Searches for the best combination of parameters that results in the most accurate model. + + + The best combination of parameters found by the grid search. + The minimum error of the best model found by the grid search. + The best model found during the grid search. + + + + + Searches for the best combination of parameters that results in the most accurate model. + + + The results found during the grid search. + + + + + A function that fits a model using the given parameters. + + + + + + The range of parameters to consider during search. + + + + + + Contains results from the grid-search procedure. + + + The type of the model to be tuned. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets all combination of parameters tried. + + + + + + Gets all models created during the search. + + + + + + Gets the error for each of the created models. + + + + + + Gets the index of the best found model + in the collection. + + + + + + Gets the best model found. + + + + + + Gets the best parameter combination found. + + + + + + Gets the minimum error found. + + + + + + Gets the size of the grid used in the grid-search. + + + + + + k-Means clustering algorithm. + + + + + In statistics and machine learning, k-means clustering is a method + of cluster analysis which aims to partition n observations into k + clusters in which each observation belongs to the cluster with the + nearest mean. + + It is similar to the expectation-maximization algorithm for mixtures + of Gaussians in that they both attempt to find the centers of natural + clusters in the data as well as in the iterative refinement approach + employed by both algorithms. + + + The algorithm is composed of the following steps: + + + Place K points into the space represented by the objects that are + being clustered. These points represent initial group centroids. + + + Assign each object to the group that has the closest centroid. + + + When all objects have been assigned, recalculate the positions + of the K centroids. + + + Repeat Steps 2 and 3 until the centroids no longer move. This + produces a separation of the objects into groups from which the + metric to be minimized can be calculated. + + + + + This particular implementation uses the squared Euclidean distance + as a similarity measure in order to form clusters. + + + References: + + + Wikipedia, The Free Encyclopedia. K-means clustering. Available on: + http://en.wikipedia.org/wiki/K-means_clustering + + Matteo Matteucci. A Tutorial on Clustering Algorithms. Available on: + http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/kmeans.html + + + + How to perform clustering with K-Means. + + // Declare some observations + double[][] observations = + { + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + // Create a new K-Means algorithm with 3 clusters + KMeans kmeans = new KMeans(3); + + // Compute the algorithm, retrieving an integer array + // containing the labels for each of the observations + int[] labels = kmeans.Compute(observations); + + // As result, the first two observations should belong to the + // same cluster (thus having the same label). The same should + // happen to the next four observations and to the last three. + + // In order to classify new, unobserved instances, you can + // use the kmeans.Clusters.Nearest method, as shown below: + int c = kmeans.Clusters.Nearest(new double[] { 4, 1, 9) }); + + + + The following example demonstrates how to use the Mean Shift algorithm + for color clustering. It is the same code which can be found in the + color clustering sample application. + + + + int k = 5; + + // Load a test image (shown below) + Bitmap image = ... + + // Create converters + ImageToArray imageToArray = new ImageToArray(min: -1, max: +1); + ArrayToImage arrayToImage = new ArrayToImage(image.Width, image.Height, min: -1, max: +1); + + // Transform the image into an array of pixel values + double[][] pixels; imageToArray.Convert(image, out pixels); + + + // Create a K-Means algorithm using given k and a + // square Euclidean distance as distance metric. + KMeans kmeans = new KMeans(k, Distance.SquareEuclidean); + + // Compute the K-Means algorithm until the difference in + // cluster centroids between two iterations is below 0.05 + int[] idx = kmeans.Compute(pixels, 0.05); + + + // Replace every pixel with its corresponding centroid + pixels.ApplyInPlace((x, i) => kmeans.Clusters.Centroids[idx[i]]); + + // Retrieve the resulting image in a picture box + Bitmap result; arrayToImage.Convert(pixels, out result); + + + + The original image is shown below: + + + + + The resulting image will be: + + + + + + + + + + + + + Initializes a new instance of the K-Means algorithm + + + The number of clusters to divide the input data into. + + + + + Initializes a new instance of the KMeans algorithm + + + The number of clusters to divide the input data into. + The distance function to use. Default is to + use the distance. + + + + + Randomizes the clusters inside a dataset. + + + The data to randomize the algorithm. + + + + + Randomizes the clusters inside a dataset. + + + The data to randomize the algorithm. + True to use the k-means++ seeding algorithm. False otherwise. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + Pass true to compute additional information + when the algorithm finishes, such as cluster variances and proportions; false + otherwise. Default is true. + + + + + Performs the actual clustering, given a set of data points and + a convergence threshold. The remaining parameters must be set + before returning the method. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + Pass true to compute additional information + when the algorithm finishes, such as cluster variances and proportions; false + otherwise. Default is true. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + Pass true to compute additional information + when the algorithm finishes, such as cluster variances and proportions; false + otherwise. Default is true. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Determines if the algorithm has converged by comparing the + centroids between two consecutive iterations. + + + The previous centroids. + The new centroids. + A convergence threshold. + + Returns if all centroids had a percentage change + less than . Returns otherwise. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Gets the clusters found by K-means. + + + + + + Gets the number of clusters. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets whether covariance matrices for + the clusters should be computed at the end of + an iteration. Default is true. + + + + + + Gets or sets whether to use the k-means++ seeding + algorithm to improve the initial solution of the + clustering. Default is true. + + + + + + Gets or sets the maximum number of iterations to + be performed by the method. If set to zero, no + iteration limit will be imposed. Default is 0. + + + + + + Gets or sets the relative convergence threshold + for stopping the algorithm. Default is 1e-5. + + + + + + Gets the number of iterations performed in the + last call to this class' Compute methods. + + + + + + QLearning learning algorithm. + + + The class provides implementation of Q-Learning algorithm, known as + off-policy Temporal Difference control. + + + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + + Action estimates are randomized in the case of this constructor + is used. + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + Randomize action estimates or not. + + The randomize parameter specifies if initial action estimates should be randomized + with small values or not. Randomization of action values may be useful, when greedy exploration + policies are used. In this case randomization ensures that actions of the same type are not chosen always. + + + + + Get next action from the specified state. + + + Current state to get an action for. + + Returns the action for the state. + + The method returns an action according to current + exploration policy. + + + + + Update Q-function's value for the previous state-action pair. + + + Previous state. + Action, which leads from previous to the next state. + Reward value, received by taking specified action from previous state. + Next state. + + + + + Amount of possible states. + + + + + + Amount of possible actions. + + + + + + Exploration policy. + + + Policy, which is used to select actions. + + + + + Learning rate, [0, 1]. + + + The value determines the amount of updates Q-function receives + during learning. The greater the value, the more updates the function receives. + The lower the value, the less updates it receives. + + + + + Discount factor, [0, 1]. + + + Discount factor for the expected summary reward. The value serves as + multiplier for the expected reward. So if the value is set to 1, + then the expected summary reward is not discounted. If the value is getting + smaller, then smaller amount of the expected reward is used for actions' + estimates update. + + + + + Multipurpose RANSAC algorithm. + + + The model type to be trained by RANSAC. + + + + RANSAC is an abbreviation for "RANdom SAmple Consensus". It is an iterative + method to estimate parameters of a mathematical model from a set of observed + data which contains outliers. It is a non-deterministic algorithm in the sense + that it produces a reasonable result only with a certain probability, with this + probability increasing as more iterations are allowed. + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: http://www.csse.uwa.edu.au/~pk/research/matlabfns + + Wikipedia, The Free Encyclopedia. RANSAC. Available on: + http://en.wikipedia.org/wiki/RANSAC + + + + + + + + Constructs a new RANSAC algorithm. + + + + The minimum number of samples from the data + required by the fitting function to fit a model. + + + + + + Constructs a new RANSAC algorithm. + + + + The minimum number of samples from the data + required by the fitting function to fit a model. + + + The minimum distance between a data point and + the model used to decide whether the point is + an inlier or not. + + + + + + Constructs a new RANSAC algorithm. + + + + The minimum number of samples from the data + required by the fitting function to fit a model. + + + The minimum distance between a data point and + the model used to decide whether the point is + an inlier or not. + + + The probability of obtaining a random sample of + the input points that contains no outliers. + + + + + + Computes the model using the RANSAC algorithm. + + + The total number of points in the data set. + + + + + Computes the model using the RANSAC algorithm. + + + The total number of points in the data set. + The indexes of the outlier points in the data set. + + + + + Model fitting function. + + + + + + Degenerative set detection function. + + + + + + Distance function. + + + + + + Gets or sets the minimum distance between a data point and + the model used to decide whether the point is an inlier or not. + + + + + + Gets or sets the minimum number of samples from the data + required by the fitting function to fit a model. + + + + + + Maximum number of attempts to select a + non-degenerate data set. Default is 100. + + + + The default value is 100. + + + + + + Maximum number of iterations. Default is 1000. + + + + The default value is 1000. + + + + + + Gets or sets the probability of obtaining a random + sample of the input points that contains no outliers. + Default is 0.99. + + + + + + Robust line estimator with RANSAC. + + + + + + Creates a new RANSAC line estimator. + + + Inlier threshold. + Inlier probability. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Robust plane estimator with RANSAC. + + + + + + Creates a new RANSAC 3D plane estimator. + + + Inlier threshold. + Inlier probability. + + + + + Produces a robust estimation of the plane + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The plane passing through the points. + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Sarsa learning algorithm. + + + The class provides implementation of Sarse algorithm, known as + on-policy Temporal Difference control. + + + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + + Action estimates are randomized in the case of this constructor + is used. + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + Randomize action estimates or not. + + The randomize parameter specifies if initial action estimates should be randomized + with small values or not. Randomization of action values may be useful, when greedy exploration + policies are used. In this case randomization ensures that actions of the same type are not chosen always. + + + + + Get next action from the specified state. + + + Current state to get an action for. + + Returns the action for the state. + + The method returns an action according to current + exploration policy. + + + + + Update Q-function's value for the previous state-action pair. + + + Curren state. + Action, which lead from previous to the next state. + Reward value, received by taking specified action from previous state. + Next state. + Next action. + + Updates Q-function's value for the previous state-action pair in + the case if the next state is non terminal. + + + + + Update Q-function's value for the previous state-action pair. + + + Curren state. + Action, which lead from previous to the next state. + Reward value, received by taking specified action from previous state. + + Updates Q-function's value for the previous state-action pair in + the case if the next state is terminal. + + + + + Amount of possible states. + + + + + + Amount of possible actions. + + + + + + Exploration policy. + + + Policy, which is used to select actions. + + + + + Learning rate, [0, 1]. + + + The value determines the amount of updates Q-function receives + during learning. The greater the value, the more updates the function receives. + The lower the value, the less updates it receives. + + + + + Discount factor, [0, 1]. + + + Discount factor for the expected summary reward. The value serves as + multiplier for the expected reward. So if the value is set to 1, + then the expected summary reward is not discounted. If the value is getting + smaller, then smaller amount of the expected reward is used for actions' + estimates update. + + + + + List of k-dimensional tree nodes. + + + The type of the value being stored. + + + This class is used to store neighbor nodes when running one of the + search algorithms for k-dimensional trees. + + + + + + + + + Initializes a new instance of the + class that is empty. + + + + + + Initializes a new instance of the + class that is empty and has the specified capacity. + + + + + + Tree enumeration method delegate. + + + The data type stored in the tree. + + The k-d tree to be traversed. + + An enumerator traversing the tree. + + + + + Static class with tree traversal methods. + + + + + + Breadth-first tree traversal method. + + + + + + Pre-order tree traversal method. + + + + + + In-order tree traversal method. + + + + + + Post-order tree traversal method. + + + + + + K-d tree node-distance pair. + + + The type of the value being stored, if any. + + + + + Creates a new . + + + The node value. + The distance value. + + + + + Determines whether the specified + is equal to this instance. + + + The to compare + with this instance. + + + true if the specified is + equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Implements the equality operator. + + + + + + Implements the inequality operator. + + + + + + Implements the lesser than operator. + + + + + + Implements the greater than operator. + + + + + + Determines whether the specified + is equal to this instance. + + + The to compare + with this instance. + + + true if the specified is + equal to this instance; otherwise, false. + + + + + + Compares this instance to another node, returning an integer + indicating whether this instance has a distance that is less + than, equal to, or greater than the other node's distance. + + + + + + Compares this instance to another node, returning an integer + indicating whether this instance has a distance that is less + than, equal to, or greater than the other node's distance. + + + + + + Gets the node in this pair. + + + + + + Gets the distance of the node from the query point. + + + + + + K-dimensional tree. + + + The type of the value being stored. + + + + A k-d tree (short for k-dimensional tree) is a space-partitioning data structure + for organizing points in a k-dimensional space. k-d trees are a useful data structure + for several applications, such as searches involving a multidimensional search key + (e.g. range searches and nearest neighbor searches). k-d trees are a special case + of binary space partitioning trees. + + + The k-d tree is a binary tree in which every node is a k-dimensional point. Every non- + leaf node can be thought of as implicitly generating a splitting hyperplane that divides + the space into two parts, known as half-spaces. Points to the left of this hyperplane + represent the left subtree of that node and points right of the hyperplane are represented + by the right subtree. The hyperplane direction is chosen in the following way: every node + in the tree is associated with one of the k-dimensions, with the hyperplane perpendicular + to that dimension's axis. So, for example, if for a particular split the "x" axis is chosen, + all points in the subtree with a smaller "x" value than the node will appear in the left + subtree and all points with larger "x" value will be in the right subtree. In such a case, + the hyperplane would be set by the x-value of the point, and its normal would be the unit + x-axis. + + + References: + + + Wikipedia, The Free Encyclopedia. K-d tree. Available on: + http://en.wikipedia.org/wiki/K-d_tree + + Moore, Andrew W. "An intoductory tutorial on kd-trees." (1991). + Available at: http://www.autonlab.org/autonweb/14665/version/2/part/5/data/moore-tutorial.pdf + + + + + + // This is the same example found in Wikipedia page on + // k-d trees: http://en.wikipedia.org/wiki/K-d_tree + + // Suppose we have the following set of points: + + double[][] points = + { + new double[] { 2, 3 }, + new double[] { 5, 4 }, + new double[] { 9, 6 }, + new double[] { 4, 7 }, + new double[] { 8, 1 }, + new double[] { 7, 2 }, + }; + + + // To create a tree from a set of points, we use + KDTree<int> tree = KDTree.FromData<int>(points); + + // Now we can manually navigate the tree + KDTreeNode<int> node = tree.Root.Left.Right; + + // Or traverse it automatically + foreach (KDTreeNode<int> n in tree) + { + double[] location = n.Position; + Assert.AreEqual(2, location.Length); + } + + // Given a query point, we can also query for other + // points which are near this point within a radius + + double[] query = new double[] { 5, 3 }; + + // Locate all nearby points within an euclidean distance of 1.5 + // (answer should be be a single point located at position (5,4)) + KDTreeNodeCollection<int> result = tree.Nearest(query, radius: 1.5); + + // We can also use alternate distance functions + tree.Distance = Accord.Math.Distance.Manhattan; + + // And also query for a fixed number of neighbor points + // (answer should be the points at (5,4), (7,2), (2,3)) + KDTreeNodeCollection<int> neighbors = tree.Nearest(query, neighbors: 3); + + + ' This is the same example found in Wikipedia page on + ' k-d trees: http://en.wikipedia.org/wiki/K-d_tree + + ' Suppose we have the following set of points: + + Dim points = + { + New Double() { 2, 3 }, + New Double() { 5, 4 }, + New Double() { 9, 6 }, + New Double() { 4, 7 }, + New Double() { 8, 1 }, + New Double() { 7, 2 } + } + + ' To create a tree from a set of points, we use + Dim tree = KDTree.FromData(Of Integer)(points) + + ' Now we can manually navigate the tree + Dim node = tree.Root.Left.Right + + ' Or traverse it automatically + For Each n As KDTreeNode(Of Integer) In tree + Dim location = n.Position + Console.WriteLine(location.Length) + Next + + ' Given a query point, we can also query for other + ' points which are near this point within a radius + ' + Dim query = New Double() {5, 3} + + ' Locate all nearby points within an Euclidean distance of 1.5 + ' (answer should be a single point located at position (5,4)) + ' + Dim result = tree.Nearest(query, radius:=1.5) + + ' We can also use alternate distance functions + tree.Distance = Function(a, b) Accord.Math.Distance.Manhattan(a, b) + + ' And also query for a fixed number of neighbor points + ' (answer should be the points at (5,4), (7,2), (2,3)) + ' + Dim neighbors = tree.Nearest(query, neighbors:=3) + + + + + + + + + Creates a new . + + + The number of dimensions in the tree. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + The number of elements in the root node. + The number of leaves linked through the root node. + + + + + Inserts a value into the tree at the desired position. + + + A double-vector with the same number of elements as dimensions in the tree. + The value to be added. + + + + + Retrieves the nearest points to a given point within a given radius. + + + The queried point. + The search radius. + The maximum number of neighbors to retrieve. + + A list of neighbor points, ordered by distance. + + + + + Retrieves the nearest points to a given point within a given radius. + + + The queried point. + The search radius. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The number of neighbors to retrieve. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The distance from the + to its nearest neighbor found in the tree. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The number of neighbors to retrieve. + The maximum percentage of leaf nodes that + can be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The maximum percentage of leaf nodes that + can be visited before the search finishes with an approximate answer. + The distance between the query point and its nearest neighbor. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The maximum percentage of leaf nodes that + can be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The number of neighbors to retrieve. + The maximum number of leaf nodes that can + be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The maximum number of leaf nodes that can + be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Creates the root node for a new given + a set of data points and their respective stored values. + + + The data points to be inserted in the tree. + Return the number of leaves in the root subtree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + The root node for a new + contained the given . + + + + + Creates the root node for a new given + a set of data points and their respective stored values. + + + The data points to be inserted in the tree. + The values associated with each point. + Return the number of leaves in the root subtree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + The root node for a new + contained the given . + + + + + Radius search. + + + + + + k-nearest neighbors search. + + + + + + Removes all nodes from this tree. + + + + + + Copies the entire tree to a compatible one-dimensional , starting + at the specified index of the + target array. + + + The one-dimensional that is the destination of the + elements copied from tree. The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + + Returns an enumerator that iterates through the tree. + + + + An object + that can be used to iterate through the collection. + + + + + + Traverse the tree using a tree traversal + method. Can be iterated with a foreach loop. + + + The tree traversal method. Common methods are + available in the static class. + + An object which can be used to + traverse the tree using the chosen traversal method. + + + + + Returns an enumerator that iterates through the tree. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the root of the tree. + + + + + + Gets the number of dimensions expected + by the input points of this tree. + + + + + + Gets or set the distance function used to + measure distances amongst points on this tree + + + + + + Gets the number of elements contained in this + tree. This is also the number of tree nodes. + + + + + + Gets the number of leaves contained in this + tree. This can be used to calibrate approximate + nearest searchers. + + + + + + Convenience class for k-dimensional tree static methods. To + create a new KDTree, specify the generic parameter as in + . + + + + Please check the documentation page for + for examples, usage and actual remarks about kd-trees. + + + + + + + + Creates a new . + + + The number of dimensions in the tree. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + The number of elements in the root node. + The number of leaves linked through the root node. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + The number of elements in the root node. + The number of leaves linked through the root node. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The points to be added to the tree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + The corresponding values at each data point. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The points to be added to the tree. + The distance function to use. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + The corresponding values at each data point. + The distance function to use. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + The distance function to use. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + K-dimensional tree node. + + + + This class provides a shorthand notation for + the actual type. + + + + + + K-dimensional tree node. + + + The type of the value being stored. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets or sets the position of + the node in spatial coordinates. + + + + + + Gets or sets the dimension index of the split. This value is a + index of the vector and as such should + be higher than zero and less than the number of elements in . + + + + + + Gets or sets the left subtree of this node. + + + + + + Gets or sets the right subtree of this node. + + + + + + Gets or sets the value being stored at this node. + + + + + Gets whether this node is a leaf (has no children). + + + + + + Collection of k-dimensional tree nodes. + + + The type of the value being stored. + + + This class is used to store neighbor nodes when running one of the + search algorithms for k-dimensional trees. + + + + + + + + + Creates a new with a maximum size. + + + The maximum number of elements allowed in this collection. + + + + + Attempts to add a value to the collection. If the list is full + and the value is more distant than the farthest node in the + collection, the value will not be added. + + + The node to be added. + The node distance. + + Returns true if the node has been added; false otherwise. + + + + + Attempts to add a value to the collection. If the list is full + and the value is more distant than the farthest node in the + collection, the value will not be added. + + + The node to be added. + The node distance. + + Returns true if the node has been added; false otherwise. + + + + + Adds the specified item to the collection. + + + The distance from the node to the query point. + The item to be added. + + + + + Removes all elements from this collection. + + + + + + Returns an enumerator that iterates through this collection. + + + + An object + that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through this collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Determines whether this instance contains the specified item. + + + The object to locate in the collection. + The value can be null for reference types. + + + true if the item is found in the collection; otherwise, false. + + + + + + Copies the entire collection to a compatible one-dimensional , starting + at the specified index of the target + array. + + + The one-dimensional that is the destination of the + elements copied from tree. The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + + Adds the specified item to this collection. + + + The item. + + + + + Not supported. + + + + + + Removes the farthest tree node from this collection. + + + + + + Removes the nearest tree node from this collection. + + + + + + Gets or sets the maximum number of elements on this + collection, if specified. A value of zero indicates + this instance has no upper limit of elements. + + + + + + Gets the minimum distance between a node + in this collection and the query point. + + + + + + Gets the maximum distance between a node + in this collection and the query point. + + + + + + Gets the farthest node in the collection (with greatest distance). + + + + + + Gets the nearest node in the collection (with smallest distance). + + + + + + Gets the + at the specified index. Note: this method will iterate over the entire collection + until the given position is found. + + + + + + Gets the number of elements in this collection. + + + + + + Gets a value indicating whether this instance is read only. + For this collection, always returns false. + + + + true if this instance is read only; otherwise, false. + + + + + + Tree enumeration method delegate. + + + An enumerator traversing the tree. + + + + + Common traversal methods for n-ary trees. + + + + + + Breadth-first traversal method. + + + + + + Depth-first traversal method. + + + + + + Post-order tree traversal method. + + + + Adapted from John Cowan (1998) recommendation. + + + + + + Contains classes related to Support Vector Machines (SVMs). + Contains linear machines, + kernel machines, multi-class machines, SVM-DAGs + (Directed Acyclic Graphs), multi-label classification + and also offers support for the probabilistic output calibration + of SVM outputs. + + + + + This namespace contains both standard s and the + kernel extension given by s. For multiple + classes or categories, the framework offers s + and s. Multi-class machines can be used for + cases where a single class should be picked up from a list of several class labels, and + the multi-label machine for cases where multiple class labels might be detected for a + single input vector. The multi-class machines also support two types of classification: + the faster decision based on Decision Directed Acyclic Graphs, and the more traditional + based on a Voting scheme. + + + Learning can be achieved using the standard + (SMO) algorithm. However, the framework can also learn Least Squares SVMs (LS-SVMs) using , and even calibrate SVMs to produce probabilistic outputs + using . A + huge variety of kernels functions is available in the statistics namespace, and + new kernels can be created easily using the interface. + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + Base class for learning algorithms. + + + + + + Initializes a new instance of the class. + + + The machine to be learned. + The input data. + The corresponding output data. + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Computes the error rate for a given set of input and outputs. + + + + + + Estimates the complexity parameter C + for a given kernel and a given data set by summing every element + on the diagonal of the kernel matrix and using an heuristic based + on it. + + + The kernel function. + The input samples. + + A suitable value for C. + + + + + Estimates the complexity parameter C + for the linear kernel and a given data set by summing every element + on the diagonal of the kernel matrix and using an heuristic based + on it. + + + The input samples. + + A suitable value for C. + + + + + Estimates the complexity parameter C + for a given kernel and an unbalanced data set by summing every element + on the diagonal of the kernel matrix and using an heuristic based on it. + + + The kernel function. + The input samples. + The output samples. + + A suitable value for positive C and negative C, respectively. + + + + + Complexity (cost) parameter C. Increasing the value of C forces the creation + of a more accurate model that may not generalize well. If this value is not + set and is set to true, the framework + will automatically guess a value for C. If this value is manually set to + something else, then will be automatically + disabled and the given value will be used instead. + + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + If this value is not set and is set to + true, the framework will automatically guess a suitable value for C by + calling . If this value + is manually set to something else, then the class will respect the new value + and automatically disable . + + + + + + Gets or sets the individual weight of each sample in the training set. If set + to null, all samples will be assumed equal weight. Default is null. + + + + + + Gets or sets the positive class weight. This should be a + value higher than 0 indicating how much of the + parameter C should be applied to instances carrying the positive label. + + + + + + Gets or sets the negative class weight. This should be a + value higher than 0 indicating how much of the + parameter C should be applied to instances carrying the negative label. + + + + + + Gets or sets the weight ratio between positive and negative class + weights. This ratio controls how much of the + parameter C should be applied to the positive class. + + + + + A weight ratio lesser than one, such as 1/10 (0.1) means 10% of C will + be applied to the positive class, while 100% of C will be applied to the + negative class. + + A weight ratio greater than one, such as 10/1 (10) means that 100% of C will + be applied to the positive class, while 10% of C will be applied to the + negative class. + + + + + + Gets or sets a value indicating whether the Complexity parameter C + should be computed automatically by employing an heuristic rule. + Default is false. + + + + true if complexity should be computed automatically; otherwise, false. + + + + + + Gets or sets a value indicating whether the weight ratio to be used between + values for negative and positive instances should + be computed automatically from the data proportions. Default is false. + + + + true if the weighting coefficient should be computed + automatically from the data; otherwise, false. + + + + + + Gets whether the machine to be learned + has a kernel. + + + + + + Gets the machine's function. + + + + + + Gets the training input data set. + + + + + + Gets the training output labels set. + + + + + + Gets the machine to be taught. + + + + + + Base class for regression learning algorithms. + + + + + + Initializes a new instance of the class. + + + The machine to be learned. + The input data. + The corresponding output data. + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Computes the summed square error for a given set of input and outputs. + + + + + + Complexity (cost) parameter C. Increasing the value of C forces the creation + of a more accurate model that may not generalize well. Default value is 1. + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + + + + Insensitivity zone ε. Increasing the value of ε can result in fewer + support vectors in the created model. Default value is 1e-3. + + + + Parameter ε controls the width of the ε-insensitive zone, used to fit the training + data. The value of ε can affect the number of support vectors used to construct the + regression function. The bigger ε, the fewer support vectors are selected. On the + other hand, bigger ε-values results in more flat estimates. + + + + + + Gets or sets the individual weight of each sample in the training set. If set + to null, all samples will be assumed equal weight. Default is null. + + + + + + Gets or sets a value indicating whether the Complexity parameter C + should be computed automatically by employing an heuristic rule. + Default is false. + + + + true if complexity should be computed automatically; otherwise, false. + + + + + + Gets whether the machine to be learned + has a kernel. + + + + + + Gets the machine's function. + + + + + + Gets the training input data set. + + + + + + Gets the training output labels set. + + + + + + Gets the machine to be taught. + + + + + + L1-regularized L2-loss support vector + Support Vector Machine learning (-s 5). + + + + + This class implements a learning algorithm + specifically crafted for linear machines only. It provides a L1-regularized, + L2-loss coordinate descent learning algorithm for optimizing the primal form of + learning. The code has been based on liblinear's method solve_l1r_l2_svc + method, whose original description is provided below. + + + + Liblinear's solver -s 5: L1R_L2LOSS_svc. A coordinate descent + algorithm for L2-loss SVM problems in the primal. + + + + min_w \sum |wj| + C \sum max(0, 1-yi w^T xi)^2, + + + + Given: x, y, Cp, Cn and eps as the stopping tolerance + + + See Yuan et al. (2010) and appendix of LIBLINEAR paper, Fan et al. (2008) + + + + + + + + + + Common interface for Support Machine Vector learning algorithms. + + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. + + + + The misclassification error rate of the resulting support + vector machine if is true, + returns zero otherwise. + + + + + + Common interface for Support Machine Vector learning + algorithms which support thread cancellation. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The misclassification error rate of the resulting support + vector machine if is true, + returns zero otherwise. + + + + + + Constructs a new coordinate descent algorithm for L1-loss and L2-loss SVM dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + Least Squares SVM (LS-SVM) learning algorithm. + + + + + References: + + + + Suykens, J. A. K., et al. "Least squares support vector machine classifiers: a large scale + algorithm." European Conference on Circuit Theory and Design, ECCTD. Vol. 99. 1999. Available on: + http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.43.6438 + + + + + + + + + + + + + + + Constructs a new Least Squares SVM (LS-SVM) learning algorithm. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the LS-SVM algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the LS-SVM algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Computes the error rate for a given set of input and outputs. + + + + + + Complexity (cost) parameter C. Increasing the value of C forces + the creation of a more accurate model that may not generalize well. + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + + + + Convergence tolerance. Default value is 1e-6. + + + + The criterion for completing the model training process. The default is 1e-6. + + + + + + Gets or sets the cache size to partially + stored the kernel matrix. Default is the + same number of input vectors. + + + + + + Different categories of loss functions that can be used to learn + support vector machines. + + + + + + Hinge-loss function. + + + + + + Squared hinge-loss function. + + + + + + L2-regularized, L1 or L2-loss dual formulation + Support Vector Machine learning (-s 1 and -s 3). + + + + + This class implements a learning algorithm + specifically crafted for linear machines only. It provides a L2-regularized, L1 + or L2-loss coordinate descent learning algorithm for optimizing the dual form of + learning. The code has been based on liblinear's method solve_l2r_l1l2_svc + method, whose original description is provided below. + + + + Liblinear's solver -s 1: L2R_L2LOSS_SVC_DUAL and -s 3: + L2R_L1LOSS_SVC_DUAL. A coordinate descent algorithm for L1-loss and + L2-loss SVM problems in the dual. + + + + min_\alpha 0.5(\alpha^T (Q + D)\alpha) - e^T \alpha, + s.t. 0 <= \alpha_i <= upper_bound_i, + + + + where Qij = yi yj xi^T xj and + D is a diagonal matrix + + + In L1-SVM case: + + upper_bound_i = Cp if y_i = 1 + upper_bound_i = Cn if y_i = -1 + D_ii = 0 + + + In L2-SVM case: + + upper_bound_i = INF + D_ii = 1/(2*Cp) if y_i = 1 + D_ii = 1/(2*Cn) if y_i = -1 + + + + Given: x, y, Cp, Cn, and eps as the stopping tolerance + + + See Algorithm 3 of Hsieh et al., ICML 2008. + + + + + + + + + + Constructs a new coordinate descent algorithm for L1-loss and L2-loss SVM dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the cost function that + should be optimized. Default is + . + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + L1-regularized logistic regression (probabilistic SVM) + learning algorithm (-s 6). + + + + + This class implements a learning algorithm + specifically crafted for probabilistic linear machines only. It provides a L1- + regularized coordinate descent learning algorithm for optimizing the learning + problem. The code has been based on liblinear's method solve_l1r_lr + method, whose original description is provided below. + + + + Liblinear's solver -s 6: L1R_LR. + A coordinate descent algorithm for L1-regularized + logistic regression (probabilistic svm) problems. + + + + min_w \sum |wj| + C \sum log(1+exp(-yi w^T xi)), + + + + Given: x, y, Cp, Cn, and eps as the stopping tolerance + + + See Yuan et al. (2011) and appendix of LIBLINEAR paper, Fan et al. (2008) + + + + + + + + + Constructs a new Newton method algorithm for L1-regularized + logistic regression (probabilistic linear vector machine). + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Gets or sets the maximum number of line searches + that can be performed per iteration. Default is 20. + + + + + + Gets or sets the maximum number of inner iterations that can + be performed by the inner solver algorithm. Default is 100. + + + + + + Convergence tolerance. Default value is 0.01. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + L2-regularized logistic regression (probabilistic support + vector machine) learning algorithm in the dual form (-s 7). + + + + + This class implements a learning algorithm + specifically crafted for probabilistic linear machines only. It provides a L2- + regularized coordinate descent learning algorithm for optimizing the dual form + of the learning problem. The code has been based on liblinear's method + solve_l2r_lr_dual method, whose original description is provided below. + + + + Liblinear's solver -s 7: L2R_LR_DUAL. A coordinate descent + algorithm for the dual of L2-regularized logistic regression problems. + + + + min_\alpha 0.5(\alpha^T Q \alpha) + \sum \alpha_i log (\alpha_i) + + (upper_bound_i - \alpha_i) log (upper_bound_i - \alpha_i), + + s.t. 0 <= \alpha_i <= upper_bound_i, + + + + where Qij = yi yj xi^T xj and + + + upper_bound_i = Cp if y_i = 1 + upper_bound_i = Cn if y_i = -1 + + + + Given: x, y, Cp, Cn, and eps as the stopping tolerance + + + See Algorithm 5 of Yu et al., MLJ 2010. + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized + logistic regression (probabilistic linear SVMs) dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Gets or sets the maximum number of inner iterations that can + be performed by the inner solver algorithm. Default is 100. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + L2-regularized L2-loss logistic regression (probabilistic + support vector machine) learning algorithm in the primal. + + + + + This class implements a L2-regularized L2-loss logistic regression (probabilistic + support vector machine) learning algorithm that operates in the primal form of the + optimization problem. This method has been based on liblinear's l2r_lr_fun + problem specification, optimized using a + Trust-region Newton method. + + + + Liblinear's solver -s 0: L2R_LR. A trust region newton + algorithm for the primal of L2-regularized, L2-loss logistic regression. + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized logistic + regression (probabilistic linear SVMs) primal problems (-s 0). + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Convergence tolerance. Default value is 0.01. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + L2-regularized L2-loss linear support vector classification (primal). + + + + + This class implements a L2-regularized L2-loss support vector machine + learning algorithm that operates in the primal form of the optimization + problem. This method has been based on liblinear's l2r_l2_svc_fun + problem specification, optimized using a + Trust-region Newton method. This method might be faster than the often + preferred . + + + Liblinear's solver -s 2: L2R_L2LOSS_SVC. A trust region newton + algorithm for the primal of L2-regularized, L2-loss linear support vector + classification. + + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized + Support Vector Classification problems in the primal form (-s 2). + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + One-against-all Multi-label Support Vector Machine Learning Algorithm + + + + + This class can be used to train Kernel Support Vector Machines with + any algorithm using a one-against-all strategy. The underlying + training algorithm can be configured by defining the + property. + + + One example of learning algorithm that can be used with this class is the + Sequential Minimal Optimization + (SMO) algorithm. + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Outputs for each of the inputs + int[][] outputs = + { + new[] { 0, 1, 0 } + new[] { 0, 0, 1 } + new[] { 1, 1, 0 } + } + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MultilabelSupportVectorMachine(1, kernel, 4); + + // Create the Multi-label learning algorithm for the machine + var teacher = new MultilabelSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); + + + + + + + Constructs a new Multi-label Support Vector Learning algorithm. + + + The input learning vectors for the machine learning algorithm. + The to be trained. + The output labels associated with each of the input vectors. The + class labels should be between 0 and the + number of classes in the multiclass machine. In a multi-label SVM, multiple classes + can be associated with a single input vector. + + + + + Constructs a new Multi-label Support Vector Learning algorithm. + + + The input learning vectors for the machine learning algorithm. + The to be trained. + The output labels associated with each of the input vectors. The + class labels should be between 0 and the + number of classes in the multiclass machine. In a multi-label SVM, multiple classes + can be associated with a single input vector. + + + + + Runs the one-against-one learning algorithm. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Compute the error ratio. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Occurs when the learning of a subproblem has started. + + + + + + Occurs when the learning of a subproblem has finished. + + + + + + Gets or sets the configuration function for the learning algorithm. + + + + The configuration function should return a properly configured ISupportVectorMachineLearning + algorithm using the given support vector machine and the input and output data. + + + + + + Coordinate descent algorithm for the L1 or L2-loss linear Support + Vector Regression (epsilon-SVR) learning problem in the dual form + (-s 12 and -s 13). + + + + + This class implements a learning algorithm + specifically crafted for linear machines only. It provides a L2-regularized, L1 + or L2-loss coordinate descent learning algorithm for optimizing the dual form of + learning. The code has been based on liblinear's method solve_l2r_l1l2_svc + method, whose original description is provided below. + + + + Liblinear's solver -s 12: L2R_L2LOSS_SVR_DUAL and -s 13: + L2R_L1LOSS_SVR_DUAL. A coordinate descent algorithm for L1-loss and + L2-loss linear epsilon-vector regression (epsilon-SVR). + + + + min_\beta 0.5\beta^T (Q + diag(lambda)) \beta - p \sum_{i=1}^l|\beta_i| + \sum_{i=1}^l yi\beta_i, + s.t. -upper_bound_i <= \beta_i <= upper_bound_i, + + + + where Qij = yi yj xi^T xj and + D is a diagonal matrix + + + In L1-SVM case: + + upper_bound_i = C + lambda_i = 0 + + + In L2-SVM case: + + upper_bound_i = INF + lambda_i = 1/(2*C) + + + + Given: x, y, p, C and eps as the stopping tolerance + + + See Algorithm 4 of Ho and Lin, 2012. + + + + + + + + + Constructs a new coordinate descent algorithm for L1-loss and L2-loss SVM dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the cost function that + should be optimized. Default is + . + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + L2-regularized L2-loss linear support vector regression + (SVR) learning algorithm in the primal formulation (-s 11). + + + + + This class implements a L2-regularized L2-loss support vector regression (SVR) + learning algorithm that operates in the primal form of the optimization problem. + This method has been based on liblinear's l2r_l2_svr_fun problem specification, + optimized using a Trust-region Newton method. + + + + Liblinear's solver -s 11: L2R_L2LOSS_SVR. A trust region newton algorithm + for the primal of L2-regularized, L2-loss linear epsilon-vector regression (epsilon-SVR). + + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized + support vector regression (SVR-SVMs) primal problems. + + + A support vector machine. + The input data points as row vectors. + The output value for each input point. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Convergence tolerance. Default value is 0.01. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Exact support vector reduction through + linear dependency elimination. + + + + + + Creates a new algorithm. + + + The machine to be reduced. + + + + + Runs the learning algorithm. + + + True to compute error after the training + process completes, false otherwise. + + + + + Runs the learning algorithm. + + + + + + Computes the error rate for a given set of input and outputs. + + + + + + One-against-all Multi-label Kernel Support Vector Machine Classifier. + + + + + The Support Vector Machine is by nature a binary classifier. Multiple label + problems are problems in which an input sample is allowed to belong to one + or more classes. A way to implement multi-label classes in support vector + machines is to build a one-against-all decision scheme where multiple SVMs + are trained to detect each of the available classes. + + Currently this class supports only Kernel machines as the underlying classifiers. + If a Linear Support Vector Machine is needed, specify a Linear kernel in the + constructor at the moment of creation. + + + References: + + + + http://courses.media.mit.edu/2006fall/mas622j/Projects/aisen-project/index.html + + + http://nlp.stanford.edu/IR-book/html/htmledition/multiclass-svms-1.html + + + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Outputs for each of the inputs + int[][] outputs = + { + new[] { -1, 1, -1 }, + new[] { -1, -1, 1 }, + new[] { 1, 1, -1 }, + new[] { -1, -1, -1 }, + }; + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MultilabelSupportVectorMachine(1, kernel, 3); + + // Create the Multi-label learning algorithm for the machine + var teacher = new MultilabelSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); + + + + + + + + + + + + + Common interface for Support Vector Machines + + + + + + + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + + The output for the given input. + + The decision label for the given input. + + + + + Constructs a new Multi-label Kernel Support Vector Machine + + + The chosen kernel for the machine. + The number of inputs for the machine. + The number of classes in the classification problem. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Constructs a new Multi-label Kernel Support Vector Machine + + + + The machines to be used for each class. + + + + + + Computes the given input to produce the corresponding outputs. + + + An input vector. + The model response for each class. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding outputs. + + + An input vector. + + The decision label for the given input. + + + + + Compute SVM output with support vector sharing. + + + + + + Resets the cache and machine statistics + so they can be recomputed on next evaluation. + + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Saves the machine to a file. + + + The path to the file to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The output for the given input. + + The decision label for the given input. + + + + + Returns an enumerator that iterates through all machines in the classifier. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through all machines in the classifier. + + + + An object that can be used to iterate through the collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + Gets the total kernel evaluations performed + in the last call to any of the + functions in the current thread. + + + The number of total kernel evaluations. + + + + + Gets the classifier for class . + + + + + + Gets the total number of support vectors + in the entire multi-label machine. + + + + + + Gets the number of unique support + vectors in the multi-label machine. + + + + + + Gets the number of shared support + vectors in the multi-label machine. + + + + + + Gets the number of classes. + + + + + + Gets the number of inputs of the machines. + + + + + + Gets a value indicating whether this machine produces probabilistic outputs. + + + + true if this machine produces probabilistic outputs; otherwise, false. + + + + + + Gets the subproblems classifiers. + + + + + + Gets the selection strategy to be used in SMO. + + + + + + Uses the sequential selection strategy as + suggested by Keerthi et al's algorithm 1. + + + + + + Always select the worst violation pair + to be optimized first, as suggested in + Keerthi et al's algorithm 2. + + + + + + Sequential Minimal Optimization (SMO) Algorithm + + + + + The SMO algorithm is an algorithm for solving large quadratic programming (QP) + optimization problems, widely used for the training of support vector machines. + First developed by John C. Platt in 1998, SMO breaks up large QP problems into + a series of smallest possible QP problems, which are then solved analytically. + + This class follows the original algorithm by Platt with additional modifications + by Keerthi et al. + + + This class can also be used in combination with + or to learn s + using the one-vs-one or one-vs-all multi-class decision strategies, respectively. + + + References: + + + + Wikipedia, The Free Encyclopedia. Sequential Minimal Optimization. Available on: + http://en.wikipedia.org/wiki/Sequential_Minimal_Optimization + + + John C. Platt, Sequential Minimal Optimization: A Fast Algorithm for Training Support + Vector Machines. 1998. Available on: http://research.microsoft.com/en-us/um/people/jplatt/smoTR.pdf + + + S. S. Keerthi et al. Improvements to Platt's SMO Algorithm for SVM Classifier Design. + Technical Report CD-99-14. Available on: http://www.cs.iastate.edu/~honavar/keerthi-svm.pdf + + + J. P. Lewis. A Short SVM (Support Vector Machine) Tutorial. Available on: + http://www.idiom.com/~zilla/Work/Notes/svmtutorial.pdf + + + + + + // Example XOR problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 xor 0: 1 (label +1) + new double[] { 0, 1 }, // 0 xor 1: 0 (label -1) + new double[] { 1, 0 }, // 1 xor 0: 0 (label -1) + new double[] { 1, 1 } // 1 xor 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + 1, -1, -1, 1 + }; + + // Create a Kernel Support Vector Machine for the given inputs + KernelSupportVectorMachine svm = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(svm, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Compute the decision output for one of the input vectors + int decision = System.Math.Sign(svm.Compute(inputs[0])); // +1 + + + + + + + + + + + + + Constructs a new Sequential Minimal Optimization (SMO) algorithm. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + Chooses which multipliers to optimize using heuristics. + + + + + + Analytically solves the optimization problem for two Lagrange multipliers. + + + + + + Computes the SVM output for a given point. + + + + + + Epsilon for round-off errors. Default value is 1e-12. + + + + + + Convergence tolerance. Default value is 1e-2. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets the pair selection + strategy to be used during optimization. + + + + + + Gets or sets the cache size to partially stored the kernel + matrix. Default is the same number of input vectors. If set + to zero, the cache will be disabled and all operations will + be computed as needed. + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Gets or sets whether to produce compact models. Compact + formulation is currently limited to linear models. + + + + + + Gets the indices of the active examples (examples which have + the corresponding Lagrange multiplier different than zero). + + + + + + Gets the indices of the non-bounded examples (examples which + have the corresponding Lagrange multipliers between 0 and C). + + + + + + Gets the indices of the examples at the boundary (examples + which have the corresponding Lagrange multipliers equal to C). + + + + + + Sparse Kernel Support Vector Machine (kSVM) + + + + The original optimal hyperplane algorithm (SVM) proposed by Vladimir Vapnik in 1963 was a + linear classifier. However, in 1992, Bernhard Boser, Isabelle Guyon and Vapnik suggested + a way to create non-linear classifiers by applying the kernel trick (originally proposed + by Aizerman et al.) to maximum-margin hyperplanes. The resulting algorithm is formally + similar, except that every dot product is replaced by a non-linear kernel function. + + This allows the algorithm to fit the maximum-margin hyperplane in a transformed feature space. + The transformation may be non-linear and the transformed space high dimensional; thus though + the classifier is a hyperplane in the high-dimensional feature space, it may be non-linear in + the original input space. + + + The machines are also able to learn sequence classification problems in which the input vectors + can have arbitrary length. For an example on how to do that, please see the documentation page + for the DynamicTimeWarping kernel. + + + References: + + + http://en.wikipedia.org/wiki/Support_vector_machine + + http://www.kernel-machines.org/ + + + + + + // Example XOR problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 xor 0: 1 (label +1) + new double[] { 0, 1 }, // 0 xor 1: 0 (label -1) + new double[] { 1, 0 }, // 1 xor 0: 0 (label -1) + new double[] { 1, 1 } // 1 xor 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + // 1, 0, 0, 1 + 1, -1, -1, 1 + }; + + // Create a Kernel Support Vector Machine for the given inputs + KernelSupportVectorMachine machine = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(machine, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Compute the decision output for one of the input vectors + int decision = System.Math.Sign(machine.Compute(inputs[0])); + + + + + + + + + + + + + + Linear Support Vector Machine (SVM) + + + + + Support vector machines (SVMs) are a set of related supervised learning methods + used for classification and regression. In simple words, given a set of training + examples, each marked as belonging to one of two categories, a SVM training algorithm + builds a model that predicts whether a new example falls into one category or the + other. + + Intuitively, an SVM model is a representation of the examples as points in space, + mapped so that the examples of the separate categories are divided by a clear gap + that is as wide as possible. New examples are then mapped into that same space and + predicted to belong to a category based on which side of the gap they fall on. + + + For the non-linear generalization of the Support Vector Machine using arbitrary + kernel functions, please see the . + + + + References: + + + http://en.wikipedia.org/wiki/Support_vector_machine + + + + + + // Example AND problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 and 0: 0 (label -1) + new double[] { 0, 1 }, // 0 and 1: 0 (label -1) + new double[] { 1, 0 }, // 1 and 0: 0 (label -1) + new double[] { 1, 1 } // 1 and 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + // 0, 0, 0, 1 + -1, -1, -1, 1 + }; + + // Create a Support Vector Machine for the given inputs + SupportVectorMachine machine = new SupportVectorMachine(inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(machine, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Compute the decision output for one of the input vectors + int decision = System.Math.Sign(machine.Compute(inputs[0])); + + + + + + + + + + + + + Creates a new Support Vector Machine + + + The number of inputs for the machine. + + + + + Computes the given input to produce the corresponding output. + + + + For a binary decision problem, the decision for the negative + or positive class is typically computed by taking the sign of + the machine's output. + + + An input vector. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + + For a binary decision problem, the decision for the negative + or positive class is typically computed by taking the sign of + the machine's output. + + + An input vector. + + The output for the given input. In a typical classification + problem, the sign of this value should be considered as the class label. + + + + + Creates a new that is + completely equivalent to a . + + + The to be converted. + + + A whose linear weights are + equivalent to the given 's + linear + coefficients, properly configured with a . + + + + + + Creates a new linear + with the given set of linear . + + + The machine's linear coefficients. + + + A whose linear coefficients + are defined by the given vector. + + + + + + Converts a -kernel + machine into an array of linear coefficients. The first position + in the array is the value. + + + + An array of linear coefficients representing this machine. + + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Saves the machine to a stream. + + + The path to the file to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Gets or sets the link + function used by this machine, if any. + + + The link function used to transform machine outputs. + + + + + Gets a value indicating whether this machine produces probabilistic outputs. + + + + true if this machine produces probabilistic outputs; otherwise, false. + + + + + + Gets the number of inputs accepted by this machine. + + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Gets or sets the collection of support vectors used by this machine. + + + + + + Gets whether this machine is in compact mode. Compact + machines do not need to keep storing their support vectors. + + + + + + Gets or sets the collection of weights used by this machine. + + + + + + Gets or sets the threshold (bias) term for this machine. + + + + + + Creates a new Kernel Support Vector Machine. + + + The chosen kernel for the machine. + The number of inputs for the machine. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Computes the given input to produce the corresponding output. + + + + For a binary decision problem, the decision for the negative + or positive class is typically computed by taking the sign of + the machine's output. + + + An input vector. + The output of the machine. If this is a + probabilistic + machine, the output is the probability of the positive + class. If this is a standard machine, the output is the distance + to the decision hyperplane in feature space. + + The decision label for the given input. + + + + + Creates a new that is + completely equivalent to a . + + + The to be converted. + + + A whose linear weights + are equivalent to the given 's + linear + coefficients, properly configured with a . + + + + + + Creates a new linear + with the given set of linear . + + + The machine's linear coefficients. + + + A whose linear coefficients + are defined by the given vector. + + + + + + Converts a -kernel machine into an array of + linear coefficients. The first position in the array is the + value. If this + machine is not linear, an exception will be thrown. + + + + An array of linear coefficients representing this machine. + + + + Thrown if the kernel function is not . + + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Gets or sets the kernel used by this machine. + + + + + + Decision strategies for + Multi-class Support Vector Machines. + + + + + + Max-voting method (also known as 1vs1 decision). + + + + + + Elimination method (also known as DAG decision). + + + + + + One-against-one Multi-class Kernel Support Vector Machine Classifier. + + + + + The Support Vector Machine is by nature a binary classifier. One of the ways + to extend the original SVM algorithm to multiple classes is to build a one- + against-one scheme where multiple SVMs specialize to recognize each of the + available classes. By using a competition scheme, the original multi-class + classification problem is then reduced to n*(n/2) smaller binary problems. + + Currently this class supports only Kernel machines as the underlying classifiers. + If a Linear Support Vector Machine is needed, specify a Linear kernel in the + constructor at the moment of creation. + + + References: + + + + http://courses.media.mit.edu/2006fall/mas622j/Projects/aisen-project/index.html + + + http://nlp.stanford.edu/IR-book/html/htmledition/multiclass-svms-1.html + + + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(1, kernel, 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute(new double[] { 3 }); // result should be 3 + + + + The next example is a simple 3 classes classification problem. + It shows how to use a different kernel function, such as the + polynomial kernel of degree 2. + + + // Sample input data + double[][] inputs = + { + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { 10, 82, 4 }, + new double[] { 10, 15, 4 }, + new double[] { 0, 0, 1 }, + new double[] { 0, 0, 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new polynomial kernel + IKernel kernel = new Polynomial(2); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(inputs: 3, kernel: kernel, classes: 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute( new double[] { -1, 3, 2 }); + + + + + + + + + + + + + Constructs a new Multi-class Kernel Support Vector Machine + + + The number of inputs for the machine. If sequences have + varying length, pass zero to this parameter and pass a suitable sequence + kernel to this constructor, such as . + The number of classes in the classification problem. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Constructs a new Multi-class Kernel Support Vector Machine + + + The chosen kernel for the machine. Default is to + use the kernel. + The number of inputs for the machine. If sequences have + varying length, pass zero to this parameter and pass a suitable sequence + kernel to this constructor, such as . + The number of classes in the classification problem. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Constructs a new Multi-class Kernel Support Vector Machine + + + + The machines to be used in each of the pair-wise class subproblems. + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + The decision path followed by the Decision + Directed Acyclic Graph used by the + elimination method. + + The decision label for the given input. + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The model response for each class. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + The model response for each class. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + The model response for each class. + + The class decision for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The class decision for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + + The class decision for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + A vector containing the number of votes for each class. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + + This method computes the decision for a one-against-one multiclass + support vector machine using the Directed Acyclic Graph method by + Platt, Cristianini and Shawe-Taylor. Details are given on the + original paper "Large Margin DAGs for Multiclass Classification", 2000. + + + An input vector. + The model response for each class. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + The decision path followed by the Decision + Directed Acyclic Graph used by the + elimination method. + + The decision label for the given input. + + + + + Compute SVM output with support vector sharing. + + + + + + Compute SVM output with support vector sharing. + + + + + + Resets the cache and machine statistics + so they can be recomputed on next evaluation. + + + + + + Gets the total kernel evaluations performed + in the last call to any of the + functions in the current thread. + + + The number of total kernel evaluations. + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Saves the machine to a file. + + + The path to the file to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Returns an enumerator that iterates through all machines + contained inside this multi-class support vector machine. + + + + + + Returns an enumerator that iterates through all machines + contained inside this multi-class support vector machine. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + Gets the classifier for against . + + + + If the index of is greater than , + the classifier for the against + will be returned instead. If both indices are equal, null will be + returned instead. + + + + + + Gets the total number of machines + in this multi-class classifier. + + + + + + Gets the total number of support vectors + in the entire multi-class machine. + + + + + + Gets the number of unique support + vectors in the multi-class machine. + + + + + + Gets the number of shared support + vectors in the multi-class machine. + + + + + + Gets the number of classes. + + + + + + Gets the number of inputs of the machines. + + + + + + Gets a value indicating whether this machine produces probabilistic outputs. + + + + true if this machine produces probabilistic outputs; otherwise, false. + + + + + + Gets the subproblems classifiers. + + + + + + Configuration function to configure the learning algorithms + for each of the Kernel Support Vector Machines used in this + Multi-class Support Vector Machine. + + + The input data for the learning algorithm. + The output data for the learning algorithm. + The machine for the learning algorithm. + The class index corresponding to the negative values + in the output values contained in . + The class index corresponding to the positive values + in the output values contained in . + + + The configured algorithm + to be used to train the given . + + + + + + Subproblem progress event argument. + + + + + + Initializes a new instance of the class. + + + One of the classes in the subproblem. + The other class in the subproblem. + + + + + One of the classes belonging to the subproblem. + + + + + + One of the classes belonging to the subproblem. + + + + + + Gets the progress of the overall problem, + ranging from zero up to . + + + + + + Gets the maximum value for the current . + + + + + One-against-one Multi-class Support Vector Machine Learning Algorithm + + + + + This class can be used to train Kernel Support Vector Machines with + any algorithm using a one-against-one strategy. The underlying + training algorithm can be configured by defining the + property. + + + One example of learning algorithm that can be used with this class is the + Sequential Minimal Optimization + (SMO) algorithm. + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(1, kernel, 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute(new double[] { 3 }); // result should be 3 + + + + The next example is a simple 3 classes classification problem. + It shows how to use a different kernel function, such as the + polynomial kernel of degree 2. + + + // Sample input data + double[][] inputs = + { + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { 10, 82, 4 }, + new double[] { 10, 15, 4 }, + new double[] { 0, 0, 1 }, + new double[] { 0, 0, 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new polynomial kernel + IKernel kernel = new Polynomial(2); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(inputs: 3, kernel: kernel, classes: 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute( new double[] { -1, 3, 2 }); + + + + + + + + + + + + + + Constructs a new Multi-class Support Vector Learning algorithm. + + + The input learning vectors for the machine learning algorithm. + The to be trained. + The output labels associated with each of the input vectors. The + class labels should be between 0 and the + number of classes in the multiclass machine. + + + + + Runs the one-against-one learning algorithm. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Computes the error ratio, the number of + misclassifications divided by the total + number of samples in a dataset. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Occurs when the learning of a subproblem has started. + + + + + + Occurs when the learning of a subproblem has finished. + + + + + + Gets or sets the configuration function for the learning algorithm. + + + + The configuration function should return a properly configured ISupportVectorMachineLearning + algorithm using the given support vector machine and the input and output data. + + + + + + Probabilistic Output Calibration. + + + + Instead of producing probabilistic outputs, Support Vector Machines + express their decisions in the form of a distance from support vectors in + feature space. In order to convert the SVM outputs into probabilities, + Platt (1999) proposed the calibration of the SVM outputs using a sigmoid + (Logit) link function. Later, Lin et al (2007) provided a corrected and + improved version of Platt's probabilistic outputs. This class implements + the later. + + This class is not an actual learning algorithm, but a calibrator. + Machines passed as input to this algorithm should already have been trained + by a proper learning algorithm such as + Sequential Minimal Optimization (SMO). + + + This class can also be used in combination with + or to learn s + using the one-vs-one or one-vs-all multi-class decision strategies, respectively. + + + References: + + + John C. Platt. 1999. Probabilistic Outputs for Support Vector Machines and Comparisons to + Regularized Likelihood Methods. In ADVANCES IN LARGE MARGIN CLASSIFIERS (1999), pp. 61-74. + + Hsuan-Tien Lin, Chih-Jen Lin, and Ruby C. Weng. 2007. A note on Platt's probabilistic outputs + for support vector machines. Mach. Learn. 68, 3 (October 2007), 267-276. + + + + + + // Example XOR problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 xor 0: 1 (label +1) + new double[] { 0, 1 }, // 0 xor 1: 0 (label -1) + new double[] { 1, 0 }, // 1 xor 0: 0 (label -1) + new double[] { 1, 1 } // 1 xor 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + 1, -1, -1, 1 + }; + + // Create a Kernel Support Vector Machine for the given inputs + KernelSupportVectorMachine svm = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(svm, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Instantiate the probabilistic learning calibration + ProbabilisticOutputLearning calibration = new ProbabilisticOutputLearning(svm, inputs, labels); + + // Run the calibration algorithm + double loglikelihood = calibration.Run(); + + + // Compute the decision output for one of the input vectors, + // while also retrieving the probability of the answer + + double probability; + int decision = svm.Compute(inputs[0], out probability); + + // At this point, decision is +1 with a probability of 75% + + + + + + + + + + + + + Initializes a new instance of Platt's Probabilistic Output Calibration algorithm. + + + A Support Vector Machine. + The input data points as row vectors. + The classification label for each data point in the range [-1;+1]. + + + + + Runs the calibration algorithm. + + + + The log-likelihood of the calibrated model. + + + + + + Runs the calibration algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The log-likelihood of the calibrated model. + + + + + + Computes the log-likelihood of the current model + for the given inputs and outputs. + + + The input data. + The corresponding outputs. + + The log-likelihood of the model. + + + + + Gets or sets the maximum number of + iterations. Default is 100. + + + + + + Gets or sets the tolerance under which the + answer must be found. Default is 1-e5. + + + + + + Gets or sets the minimum step size used + during line search. Default is 1e-10. + + + + + + One-class Support Vector Machine Learning Algorithm. + + + + + + Constructs a new one-class support vector learning algorithm. + + + A support vector machine. + The input data points as row vectors. + + + + + Runs the learning algorithm. + + + True to compute error after the training + process completes, false otherwise. + + The misclassification error rate of the resulting support + vector machine if is true, + returns zero otherwise. + + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Computes the error rate for a given set of inputs. + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 1e-2. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets a value indicating whether to use + shrinking heuristics during learning. Default is true. + + + + true to use shrinking; otherwise, false. + + + + + + Controls the number of outliers accepted by the algorithm. This + value provides an upper bound on the fraction of training errors + and a lower bound of the fraction of support vectors. Default is 0.5 + + + + The summary description is given in Chang and Lin, + "LIBSVM: A Library for Support Vector Machines", 2013. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net40/Accord.MachineLearning.dll b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net40/Accord.MachineLearning.dll new file mode 100644 index 0000000000..7ef347132 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net40/Accord.MachineLearning.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net40/Accord.MachineLearning.xml b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net40/Accord.MachineLearning.xml new file mode 100644 index 0000000000..8d2a240fa --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net40/Accord.MachineLearning.xml @@ -0,0 +1,12631 @@ + + + + Accord.MachineLearning + + + + + Contains Boosting related techniques for creating classifier ensembles and other composition models. + + + + + The namespace class diagram is shown below. + + + + + + + + + Model construction (fitting) delegate. + + + The type of the model to be created. + The current weights for the input samples. + A model trained over the weighted samples. + + + + + AdaBoost learning algorithm. + + + The type of the model to be trained. + + + + + Initializes a new instance of the class. + + + The model to be learned. + + + + + Initializes a new instance of the class. + + + The model to be learned. + The model fitting function. + + + + + Runs the learning algorithm. + + + The input samples. + The corresponding output labels. + + The classifier error. + + + + + Runs the learning algorithm. + + + The input samples. + The corresponding output labels. + The weights for each of the samples. + + The classifier error. + + + + + Computes the error ratio, the number of + misclassifications divided by the total + number of samples in a dataset. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Gets or sets the relative tolerance used to + detect convergence of the learning algorithm. + + + + + + Gets or sets the error limit before learning stops. Default is 0.5. + + + + + + Gets or sets the fitting function which creates + and trains a model given a weighted data set. + + + + + + Common interface for Bag of Words objects. + + + The type of the element to be + converted to a fixed-length vector representation. + + + + + Gets the codeword representation of a given value. + + + The value to be processed. + + A double vector with the same length as words + in the code book. + + + + + Gets the number of words in this codebook. + + + + + + Bag of words. + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + + + + + + Constructs a new . + + + The texts to build the bag of words model from. + + + + + Constructs a new . + + + The texts to build the bag of words model from. + + + + + Constructs a new . + + + + + + Computes the Bag of Words model. + + + + + + Gets the codeword representation of a given text. + + + The text to be processed. + + An integer vector with the same length as words + in the code book. + + + + + Gets the number of words in this codebook. + + + + + + Gets the forward dictionary which translates + string tokens to integer labels. + + + + + + Gets the reverse dictionary which translates + integer labels into string tokens. + + + + + + Gets or sets the maximum number of occurrences of a word which + should be registered in the feature vector. Default is 1 (if a + word occurs, corresponding feature is set to 1). + + + + + + Naïve Bayes Classifier for arbitrary distributions. + + + + + A naive Bayes classifier is a simple probabilistic classifier based on applying Bayes' theorem + with strong (naive) independence assumptions. A more descriptive term for the underlying probability + model would be "independent feature model". + + In simple terms, a naive Bayes classifier assumes that the presence (or absence) of a particular + feature of a class is unrelated to the presence (or absence) of any other feature, given the class + variable. In spite of their naive design and apparently over-simplified assumptions, naive Bayes + classifiers have worked quite well in many complex real-world situations. + + + This class implements an arbitrary-distribution (real-valued) Naive-Bayes classifier. There is + also a special named constructor to create classifiers + assuming normal distributions for each variable. For a discrete (integer-valued) distribution + classifier, please see . + + + References: + + + Wikipedia contributors. "Naive Bayes classifier." Wikipedia, The Free Encyclopedia. + Wikipedia, The Free Encyclopedia, 16 Dec. 2011. Web. 5 Jan. 2012. + + + + + + + This page contains two examples, one using text and another one using normal double vectors. + The first example is the classic example given by Tom Mitchell. If you are not interested + in text or in this particular example, please jump to the second example below. + + + In the first example, we will be using a mixed-continuous version of the famous Play Tennis + example by Tom Mitchell (1998). In Mitchell's example, one would like to infer if a person + would play tennis or not based solely on four input variables. The original variables were + categorical, but in this example, two of them will be categorical and two will be continuous. + The rows, or instances presented below represent days on which the behavior of the person + has been registered and annotated, pretty much building our set of observation instances for + learning: + + + DataTable data = new DataTable("Mitchell's Tennis Example"); + + data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // We will set Temperature and Humidity to be continuous + data.Columns["Temperature"].DataType = typeof(double); // (degrees Celsius) + data.Columns["Humidity"].DataType = typeof(double); // (water percentage) + + data.Rows.Add( "D1", "Sunny", 38.0, 96.0, "Weak", "No" ); + data.Rows.Add( "D2", "Sunny", 39.0, 90.0, "Strong", "No" ); + data.Rows.Add( "D3", "Overcast", 38.0, 75.0, "Weak", "Yes" ); + data.Rows.Add( "D4", "Rain", 25.0, 87.0, "Weak", "Yes" ); + data.Rows.Add( "D5", "Rain", 12.0, 30.0, "Weak", "Yes" ); + data.Rows.Add( "D6", "Rain", 11.0, 35.0, "Strong", "No" ); + data.Rows.Add( "D7", "Overcast", 10.0, 40.0, "Strong", "Yes" ); + data.Rows.Add( "D8", "Sunny", 24.0, 90.0, "Weak", "No" ); + data.Rows.Add( "D9", "Sunny", 12.0, 26.0, "Weak", "Yes" ); + data.Rows.Add( "D10", "Rain", 25.0, 30.0, "Weak", "Yes" ); + data.Rows.Add( "D11", "Sunny", 26.0, 40.0, "Strong", "Yes" ); + data.Rows.Add( "D12", "Overcast", 27.0, 97.0, "Strong", "Yes" ); + data.Rows.Add( "D13", "Overcast", 39.0, 41.0, "Weak", "Yes" ); + data.Rows.Add( "D14", "Rain", 23.0, 98.0, "Strong", "No" ); + + + Obs: The DataTable representation is not required, and instead the NaiveBayes could + also be trained directly on double[] arrays containing the data. + + + In order to estimate a discrete Naive Bayes, we will first convert this problem to a more simpler + representation. Since some variables are categories, it does not matter if they are represented + as strings, or numbers, since both are just symbols for the event they represent. Since numbers + are more easily representable than text strings, we will convert the problem to use a discrete + alphabet through the use of a codebook. + + + A codebook effectively transforms any distinct possible value for a variable into an integer + symbol. For example, “Sunny” could as well be represented by the integer label 0, “Overcast” + by “1”, Rain by “2”, and the same goes by for the other variables. So: + + + // Create a new codification codebook to + // convert strings into integer symbols + Codification codebook = new Codification(data, + "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // Translate our training data into integer symbols using our codebook: + DataTable symbols = codebook.Apply(data); + double[][] inputs = symbols.ToArray("Outlook", "Temperature", "Humidity", "Wind"); + int[] outputs = symbols.ToIntArray("PlayTennis").GetColumn(0); + + + + Now that we already have our learning input/ouput pairs, we should specify our + Bayes model. We will be trying to build a model to predict the last column, entitled + “PlayTennis”. For this, we will be using the “Outlook”, “Temperature”, “Humidity” and + “Wind” as predictors (variables which will we will use for our decision). + + + + // Gather information about decision variables + IUnivariateDistribution[] priors = + { + new GeneralDiscreteDistribution(codebook["Outlook"].Symbols), // 3 possible values (Sunny, overcast, rain) + new NormalDistribution(), // Continuous value (Celsius) + new NormalDistribution(), // Continuous value (percentage) + new GeneralDiscreteDistribution(codebook["Wind"].Symbols) // 2 possible values (Weak, strong) + }; + + int inputCount = 4; // 4 variables (Outlook, Temperature, Humidity, Wind) + int classCount = codebook["PlayTennis"].Symbols; // 2 possible values (yes, no) + + // Create a new Naive Bayes classifiers for the two classes + var model = new NaiveBayes<IUnivariateDistribution>(classCount, inputCount, priors); + + // Compute the Naive Bayes model + model.Estimate(inputs, outputs); + + + Now that we have created and estimated our classifier, we + can query the classifier for new input samples through the method. + + + // We will be computing the output label for a sunny, cool, humid and windy day: + + double[] instance = new double[] + { + codebook.Translate(columnName:"Outlook", value:"Sunny"), + 12.0, + 90.0, + codebook.Translate(columnName:"Wind", value:"Strong") + }; + + // Now, we can feed this instance to our model + int output = model.Compute(instance, out logLikelihood); + + // Finally, the result can be translated back to one of the codewords using + string result = codebook.Translate("PlayTennis", output); // result is "No" + + + + + + + In this second example, we will be creating a simple multi-class + classification problem using integer vectors and learning a discrete + Naive Bayes on those vectors. + + + // Let's say we have the following data to be classified + // into three possible classes. Those are the samples: + // + double[][] inputs = + { + // input output + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 0, 0, 1, 0 }, // 0 + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 1, 1, 1, 1 }, // 2 + new double[] { 1, 0, 1, 1 }, // 2 + new double[] { 1, 1, 0, 1 }, // 2 + new double[] { 0, 1, 1, 1 }, // 2 + new double[] { 1, 1, 1, 1 }, // 2 + }; + + int[] outputs = // those are the class labels + { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, + }; + + // Create a new continuous naive Bayes model for 3 classes using 4-dimensional Gaussian distributions + var bayes = new NaiveBayes<NormalDistribution>(inputs: 4, classes: 3, initial: NormalDistribution.Standard); + + // Teach the Naive Bayes model. The error should be zero: + double error = bayes.Estimate(inputs, outputs, options: new NormalOptions + { + Regularization = 1e-5 // to avoid zero variances + }); + + // Now, let's test the model output for the first input sample: + int answer = bayes.Compute(new double[] { 0, 1, 1, 0 }); // should be 1 + + + + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + The prior probabilities for each output class. + + + + + Initializes the frequency tables of a Naïve Bayes Classifier. + + + The input data. + The corresponding output labels for the input data. + True to estimate class priors from the data, false otherwise. + The fitting options to be used in the density estimation. + + + + + Computes the error when predicting the given data. + + + The input values. + The output values. + + The percentage error of the prediction. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The most likely class for the instance. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The log-likelihood for the instance. + + The most likely class for the instance. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The log-likelihood for the instance. + The response probabilities for each class. + + The most likely class for the instance. + + + + + Saves the Naïve Bayes model to a stream. + + + The stream to which the Naïve Bayes model is to be serialized. + + + + + Saves the Naïve Bayes model to a stream. + + + The path to the file to which the Naïve Bayes model is to be serialized. + + + + + Gets the number of possible output classes. + + + + + + Gets the number of inputs in the model. + + + + + + Gets the probability distributions for each class and input. + + + A TDistribution[,] array in with each row corresponds to a + class, each column corresponds to an input variable. Each element + of this double[,] array is a probability distribution modeling + the occurrence of the input variable in the corresponding class. + + + + + Gets the prior beliefs for each class. + + + + + + Weighted Weak Classifier. + + + The type of the weak classifier. + + + + + Gets or sets the weight associated + with the weak . + + + + + + Gets or sets the weak + classifier associated with the . + + + + + + Boosted classification model. + + + The type of the weak classifier. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The initial boosting weights. + The initial weak classifiers. + + + + + Computes the output class label for a given input. + + + The input vector. + + The most likely class label for the given input. + + + + + Adds a new weak classifier and its corresponding + weight to the end of this boosted classifier. + + + The weight of the weak classifier. + The weak classifier + + + + + Returns an enumerator that iterates through this collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through this collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the list of weighted weak models + contained in this boosted classifier. + + + + + + Gets or sets the at the specified index. + + + + + + Contains Boosting related techniques for creating classifier ensembles and other composition models. + + + + + The namespace class diagram is shown below. + + + + + + + + + Simple classifier that based on decision margins that + are perpendicular to one of the space dimensions. + + + The type for the weak classifier model. + + + + + Common interface for Weak classifiers + used in Boosting mechanisms. + + + + + + + + Computes the output class label for a given input. + + + The input vector. + + The most likely class label for the given input. + + + + + Creates a new Weak classifier given a + classification model and its decision function. + + + The classifier. + The classifier decision function. + + + + + Computes the classifier decision for a given input. + + + The input vector. + + The model's decision label. + + + + + Gets or sets the weak decision model. + + + + + + Gets or sets the decision function used by the . + + + + + + Simple classifier that based on decision margins that + are perpendicular to one of the space dimensions. + + + + + + Initializes a new instance of the class. + + + The number of inputs for this classifier. + + + + + Computes the output class label for a given input. + + + The input vector. + + + The most likely class label for the given input. + + + + + + Teaches the stump classifier to recognize + the class labels of the given input samples. + + + The input vectors. + The class labels corresponding to each input vector. + The weights associated with each input vector. + + + + + Gets the decision threshold for this linear classifier. + + + + + + Gets the index of the attribute which this + classifier will use to compare against + . + + + + + + Gets the direction of the comparison + (if greater than or less than). + + + + + + Binary split clustering algorithm. + + + + How to perform clustering with Binary Split. + + + // Declare some observations + double[][] observations = + { + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + // Create a new binary split with 3 clusters + BinarySplit binarySplit = new BinarySplit(3); + + // Compute the algorithm, retrieving an integer array + // containing the labels for each of the observations + int[] labels = binarySplit.Compute(observations); + + // In order to classify new, unobserved instances, you can + // use the binarySplit.Clusters.Nearest method, as shown below: + int c = binarySplit.Clusters.Nearest(new double[] { 4, 1, 9) }); + + + + + + + + + Common interface for clustering algorithms. + + + The type of the data being clustered, such as . + + + + + + + + + + Divides the input data into a number of clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + The labelings for the input data. + + + + + + Gets the collection of clusters currently modeled by the clustering algorithm. + + + + + + Initializes a new instance of the Binary Split algorithm + + + The number of clusters to divide the input data into. + The distance function to use. Default is to + use the distance. + + + + + Initializes a new instance of the Binary Split algorithm + + + The number of clusters to divide the input data into. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + + + Gets the clusters. + + + + + + Gets the number of clusters. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets the dimensionality of the data space. + + + + + + Gaussian Mixture Model cluster. + + + + This class contains information about a Gaussian cluster found + during a estimation. Clusters + are often contained within a . + + + + + + + + + Gets the probability density function of the + underlying Gaussian probability distribution + evaluated in point x. + + + An observation. + + + The log-probability of x occurring + in the weighted Gaussian distribution. + + + + + + Gets the probability density function of the + underlying Gaussian probability distribution + evaluated in point x. + + + An observation. + + + The probability of x occurring + in the weighted Gaussian distribution. + + + + + + Gets a copy of the normal distribution associated with this cluster. + + + + + + Initializes a new instance of the class. + + + The owner collection. + The cluster index. + + + + + Gets the deviance of the points in relation to the cluster. + + + The input points. + + The deviance, measured as -2 * the log-likelihood + of the input points in this cluster. + + + + + Gets the label for this cluster. + + + + + + Gets the cluster's mean. + + + + + + Gets the cluster's variance-covariance matrix. + + + + + + Gets the mixture coefficient for the cluster distribution. + + + + + + Gaussian Mixture Model Cluster Collection. + + + + + This class contains information about all + Gaussian clusters found during a + estimation. + + Given a new sample, this class can be used to find the nearest cluster related + to this sample through the method. + + + + + + + + + Common interface for cluster collections. + + + The type of the data being clustered, such as . + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Gets the number of clusters in the collection. + + + + + + Initializes a new instance of the class. + + + The owner collection. + The list. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + A value between 0 and 1 representing + the confidence in the generated classification. + + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + The likelihood for each of the classes. + + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vectors. + + The index of the nearest cluster + to the given data point. + + + + + Gets the deviance of the points in relation to the model. + + + The input points. + + The deviance, measured as -2 * the log-likelihood of the input points. + + + + + Gets the mean vectors for the clusters. + + + + + + Gets the variance for each of the clusters. + + + + + + Gets the covariance matrices for each of the clusters. + + + + + + Gets the mixture coefficients for each cluster. + + + + + + Mean shift cluster collection. + + + + + + + + Common interface for cluster collections. + + + The type of the data being clustered, such as . + The type of the clusters considered by a clustering algorithm. + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + Initializes a new instance of the class. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Gets the number of clusters in the collection. + + + + + + Gets the modes of the clusters. + + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + Mean shift cluster. + + + + + + + + + Initializes a new instance of the class. + + + The owner. + The cluster index. + + + + + Gets the label for this cluster. + + + + + + Gets the mode of the cluster. + + + + + + k-Means cluster collection. + + + + + + + + Initializes a new instance of the class. + + + The number of clusters K. + The distance metric to consider. + + + + + Returns the closest cluster to an input vector. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest clusters to an input vector array. + + + The input vector array. + + + An array containing the index of the nearest cluster + to the corresponding point in the input array. + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets the clusters' centroids. + + + The clusters' centroids. + + + + + Gets the proportion of samples in each cluster. + + + + + + Gets the clusters' variance-covariance matrices. + + + The clusters' variance-covariance matrices. + + + + + Gets the number of clusters in the collection. + + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + k-Means' cluster. + + + + + + Computes the distortion of the cluster, measured + as the average distance between the cluster points + and its centroid. + + + The input points. + + The average distance between all points + in the cluster and the cluster centroid. + + + + + Initializes a new instance of the class. + + + The owner collection. + The cluster index. + + + + + Gets the label for this cluster. + + + + + + Gets the cluster's centroid. + + + + + + Gets the cluster's variance-covariance matrix. + + + + + + Gets the proportion of samples in the cluster. + + + + + + k-Modes cluster collection. + + + + + + + + Initializes a new instance of the class. + + + The number of clusters K. + The distance metric to use. + + + + + Returns the closest cluster to an input vector. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest clusters to an input vector array. + + + The input vector array. + + + An array containing the index of the nearest cluster + to the corresponding point in the input array. + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets the proportion of samples in each cluster. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets the clusters' centroids. + + + The clusters' centroids. + + + + + Gets the number of clusters in the collection. + + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + k-Modes' cluster. + + + + + + + + + Initializes a new instance of the class. + + + The owner. + The cluster index. + + + + + Computes the distortion of the cluster, measured + as the average distance between the cluster points + and its centroid. + + + The input points. + + The average distance between all points + in the cluster and the cluster centroid. + + + + + Gets the label for this cluster. + + + + + + Gets the cluster's centroid. + + + + + + Gets the proportion of samples in the cluster. + + + + + + Mean shift clustering algorithm. + + + + + Mean shift is a non-parametric feature-space analysis technique originally + presented in 1975 by Fukunaga and Hostetler. It is a procedure for locating + the maxima of a density function given discrete data sampled from that function. + The method iteratively seeks the location of the modes of the distribution using + local updates. + + As it is, the method would be intractable; however, some clever optimizations such as + the use of appropriate data structures and seeding strategies as shown in Lee (2011) + and Carreira-Perpinan (2006) can improve its computational speed. + + + References: + + + Wikipedia, The Free Encyclopedia. Mean-shift. Available on: + http://en.wikipedia.org/wiki/Mean-shift + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Conrad Lee. Scalable mean-shift clustering in a few lines of python. The + Sociograph blog, 2011. Available at: + http://sociograph.blogspot.com.br/2011/11/scalable-mean-shift-clustering-in-few.html + + Carreira-Perpinan, Miguel A. "Acceleration strategies for Gaussian mean-shift image + segmentation." Computer Vision and Pattern Recognition, 2006 IEEE Computer Society + Conference on. Vol. 1. IEEE, 2006. Available at: + http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=1640881 + + + + + + + // Declare some observations + double[][] observations = + { + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + // Create a uniform kernel density function + UniformKernel kernel = new UniformKernel(); + + // Create a new Mean-Shift algorithm for 3 dimensional samples + MeanShift meanShift = new MeanShift(dimension: 3, kernel: kernel, bandwidth: 1.5 ); + + // Compute the algorithm, retrieving an integer array + // containing the labels for each of the observations + int[] labels = meanShift.Compute(observations); + + // As a result, the first two observations should belong to the + // same cluster (thus having the same label). The same should + // happen to the next four observations and to the last three. + + + + The following example demonstrates how to use the Mean Shift algorithm + for color clustering. It is the same code which can be found in the + color clustering sample application. + + + + int pixelSize = 3; // RGB color pixel + double sigma = 0.06; // kernel bandwidth + + // Load a test image (shown below) + Bitmap image = ... + + // Create converters + ImageToArray imageToArray = new ImageToArray(min: -1, max: +1); + ArrayToImage arrayToImage = new ArrayToImage(image.Width, image.Height, min: -1, max: +1); + + // Transform the image into an array of pixel values + double[][] pixels; imageToArray.Convert(image, out pixels); + + // Create a MeanShift algorithm using given bandwidth + // and a Gaussian density kernel as kernel function. + MeanShift meanShift = new MeanShift(pixelSize, new GaussianKernel(3), sigma); + + + // Compute the mean-shift algorithm until the difference in + // shifting means between two iterations is below 0.05 + int[] idx = meanShift.Compute(pixels, 0.05, maxIterations: 10); + + + // Replace every pixel with its corresponding centroid + pixels.ApplyInPlace((x, i) => meanShift.Clusters.Modes[idx[i]]); + + // Retrieve the resulting image in a picture box + Bitmap result; arrayToImage.Convert(pixels, out result); + + + + The original image is shown below: + + + + + The resulting image will be: + + + + + + + + + + + + Creates a new algorithm. + + + The dimension of the samples to be clustered. + The bandwidth (also known as radius) to consider around samples. + The density kernel function to use. + + + + + Divides the input data into clusters. + + + The data where to compute the algorithm. + + + + + Divides the input data into clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-3. + + + + + Divides the input data into clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-3. + The maximum number of iterations. Default is 100. + + + + + Gets the clusters found by Mean Shift. + + + + + + Gets or sets the bandwidth (radius, or smoothness) + parameter to be used in the mean-shift algorithm. + + + + + + Gets or sets the maximum number of neighbors which should be + used to determine the direction of the mean-shift during the + computations. Default is zero (unlimited number of neighbors). + + + + + + Gets or sets whether the mean-shift can be shortcut + as soon as a mean enters the neighborhood of a local + maxima candidate. Default is true. + + + + + + Gets or sets whether the algorithm can use parallel + processing to speedup computations. Enabling parallel + processing can, however, result in different results + at each run. + + + + + + Gets the dimension of the samples being + modeled by this clustering algorithm. + + + + + + Gets or sets the maximum number of iterations to + be performed by the method. If set to zero, no + iteration limit will be imposed. Default is 0. + + + + + + Gets or sets the relative convergence threshold + for stopping the algorithm. Default is 1e-5. + + + + + + Contains discrete and continuous Decision Trees, with + support for automatic code generation, tree pruning and + the creation of decision rule sets. + + + + + + + + + + Numeric comparison category. + + + + + + The node does no comparison. + + + + + + The node compares for equality. + + + + + + The node compares for non-equality. + + + + + + The node compares for greater-than or equality. + + + + + + The node compares for greater-than. + + + + + + The node compares for less-than. + + + + + + The node compares for less-than or equality. + + + + + Extension methods for enumeration values. + + + + + + Returns a that represents this instance. + + + The comparison type. + + + A that represents this instance. + + + + + + Collection of decision nodes. A decision branch specifies the index of + an attribute whose current value should be compared against its children + nodes. The type of the comparison is specified in each child node. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The to whom + this belongs. + + + + + Initializes a new instance of the class. + + + Index of the attribute to be processed. + + The children nodes. Each child node should be + responsible for a possible value of a discrete attribute, or for + a region of a continuous-valued attribute. + + + + + Adds the elements of the specified collection to the end of the collection. + + + The child nodes to be added. + + + + + Gets or sets the index of the attribute to be + used in this stage of the decision process. + + + + + + Gets the attribute that is being used in + this stage of the decision process, given + by the current + + + + + + Gets or sets the decision node that contains this collection. + + + + + + Contains learning algorithms for inducing + Decision Trees. + + + + + + + + + + Contains classes to prune decision trees, removing + unneeded nodes in an attempt to improve generalization. + + + + + + + + + Contains sets of decision rules that can be created from + Decision + Trees. + + + + + + + + + + Antecedent expression for s. + + + + + + Creates a new instance of the class. + + + The variable index. + The comparison to be made using the value at + and . + The value to be compared against. + + + + + Checks if this antecedent applies to a given input. + + + An input vector. + + True if the input element at position + compares to using ; false + otherwise. + + + + + + Determines whether the specified + is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Determines whether the specified + is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in + hashing algorithms and data structures like a hash table. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Gets the index of the variable used as the + left hand side term of this expression. + + + + + + Gets the comparison being made between the variable + value at and . + + + + + + Gets the right hand side of this expression. + + + + + + Decision rule set. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + A set of decision rules. + + + + + Creates a new from a . + + + A . + + A that is completely + equivalent to the given + + + + + Computes the decision output for a given input. + + + An input vector. + + The decision output for the given + . + + + + + Adds a new to the set. + + + The to be added. + + + + + Adds a collection of new s to the set. + + + The collection of s to be added. + + + + + Removes all rules from this set. + + + + + + Removes a given rule from the set. + + + The to be removed. + + True if the rule was removed; false otherwise. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object + that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object + that can be used to iterate through the collection. + + + + + + Gets the number of possible output + classes covered by this decision set. + + + + + + Gets the number of rules in this set. + + + + + + Decision Rule. + + + + + + Initializes a new instance of the class. + + + The decision variables handled by this decision rule. + The output value, given after all antecedents are met. + The antecedent conditions that lead to the . + + + + + Initializes a new instance of the class. + + + The decision variables handled by this decision rule. + The output value, given after all antecedents are met. + The antecedent conditions that lead to the . + + + + + Initializes a new instance of the class. + + + The output value, given after all antecedents are met. + The antecedent conditions that lead to the . + + + + + Checks whether a the rule applies to a given input vector. + + + An input vector. + + True, if the input matches the rule + ; otherwise, false. + + + + + + Creates a new from a 's + . This node must be a leaf, cannot be the root, and + should have one output value. + + + A from a . + + A representing the given . + + + + + Gets whether this rule and another rule have + the same antecedents but different outputs. + + + + + True if the two rules are contradictory; + false otherwise. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Compares this instance to another . + + + + + + Implements the operator <. + + + + + + Implements the operator >. + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Gets the decision variables handled by this rule. + + + + + + Gets the expressions that + must be fulfilled in order for this rule to be applicable. + + + + + + Gets or sets the output of this decision rule, given + when all conditions are met. + + + + + + Gets the number of antecedents contained + in this . + + + + + + Decision Tree C# Writer. + + + + + + Initializes a new instance of the class. + + + + + + Creates a C# code for the tree. + + + + + + Reduced error pruning. + + + + + + Initializes a new instance of the class. + + + The tree to be pruned. + The pruning set inputs. + The pruning set outputs. + + + + + Computes one pass of the pruning algorithm. + + + + + + Error-based pruning. + + + + + References: + + + Lior Rokach, Oded Maimon. The Data Mining and Knowledge Discovery Handbook, + Chapter 9, Decision Trees. Springer, 2nd ed. 2010, XX, 1285 p. 40 illus. + Available at: http://www.ise.bgu.ac.il/faculty/liorr/hbchap9.pdf . + + + + + + + // Suppose you have the following input and output data + // and would like to learn the relationship between the + // inputs and outputs by using a Decision Tree: + + double[][] inputs = ... + int[] output = ... + + // To prune a decision tree, we need to split your data into + // training and pruning groups. Let's say we have 100 samples, + // and would like to reserve 50 samples for training, and 50 + // for pruning: + + // Gather the first half for the training set + var trainingInputs = inputs.Submatrix(0, 49); + var trainingOutput = output.Submatrix(0, 49); + + // Gather the second hand data for pruning + var pruningInputs = inputs.Submatrix(50, 99); + var pruningOutput = output.Submatrix(50, 99); + + + // Create the decision tree + DecisionTree tree = new DecisionTree( ... ); + + // Learn our tree using the training data + C45Learning c45 = new C45Learning(tree); + double error = c45.Run(trainingInputs, trainingOutput); + + + // Now we can attempt to prune the tree using the pruning groups + ErrorBasedPruning prune = new ErrorBasedPruning(tree, pruningInputs, pruningOutput); + + // Gain threshold + prune.Threshold = 0.1; + + double lastError; + double error = Double.PositiveInfinity; + + do + { + // Now we can start pruning the tree as + // long as the error doesn't increase + + lastError = error; + error = prune.Run(); + + } while (error < lastError); + + + + + + + Initializes a new instance of the class. + + + The tree to be pruned. + The pruning set inputs. + The pruning set outputs. + + + + + Computes one pass of the pruning algorithm. + + + + + + Attempts to prune a node's subtrees. + + + Whether the current node was changed or not. + + + + + Gets or sets the minimum allowed gain threshold + to prune the tree. Default is 0.01. + + + + + + Decision rule simplification algorithm. + + + + + + Initializes a new instance of the class. + + + The decision set to be simplified. + + + + + Computes the reduction algorithm. + + + A set of training inputs. + The outputs corresponding to each of the inputs. + + The average error after the reduction. + + + + + Computes the average decision error. + + + A set of input vectors. + A set of corresponding output vectors. + + The average misclassification rate. + + + + + Checks if two variables can be eliminated. + + + + + + Checks if two variables can be eliminated. + + + + + + Gets or sets the underlying hypothesis test + size parameter used to reject hypothesis. + + + + + + Boltzmann distribution exploration policy. + + + The class implements exploration policy base on Boltzmann distribution. + Acording to the policy, action a at state s is selected with the next probability: + + exp( Q( s, a ) / t ) + p( s, a ) = ----------------------------- + SUM( exp( Q( s, b ) / t ) ) + b + + where Q(s, a) is action's a estimation (usefulness) at state s and + t is . + + + + + + + + + + Exploration policy interface. + + + The interface describes exploration policies, which are used in Reinforcement + Learning to explore state space. + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Initializes a new instance of the class. + + + Termperature parameter of Boltzmann distribution. + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Termperature parameter of Boltzmann distribution, >0. + + + The property sets the balance between exploration and greedy actions. + If temperature is low, then the policy tends to be more greedy. + + + + + Epsilon greedy exploration policy. + + + The class implements epsilon greedy exploration policy. Acording to the policy, + the best action is chosen with probability 1-epsilon. Otherwise, + with probability epsilon, any other action, except the best one, is + chosen randomly. + + According to the policy, the epsilon value is known also as exploration rate. + + + + + + + + + + Initializes a new instance of the class. + + + Epsilon value (exploration rate). + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Epsilon value (exploration rate), [0, 1]. + + + The value determines the amount of exploration driven by the policy. + If the value is high, then the policy drives more to exploration - choosing random + action, which excludes the best one. If the value is low, then the policy is more + greedy - choosing the beat so far action. + + + + + + Roulette wheel exploration policy. + + + The class implements roulette whell exploration policy. Acording to the policy, + action a at state s is selected with the next probability: + + Q( s, a ) + p( s, a ) = ------------------ + SUM( Q( s, b ) ) + b + + where Q(s, a) is action's a estimation (usefulness) at state s. + + The exploration policy may be applied only in cases, when action estimates (usefulness) + are represented with positive value greater then 0. + + + + + + + + + + Initializes a new instance of the class. + + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Tabu search exploration policy. + + + The class implements simple tabu search exploration policy, + allowing to set certain actions as tabu for a specified amount of + iterations. The actual exploration and choosing from non-tabu actions + is done by base exploration policy. + + + + + + + + + Initializes a new instance of the class. + + + Total actions count. + Base exploration policy. + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). The action is choosed from + non-tabu actions only. + + + + + Reset tabu list. + + + Clears tabu list making all actions allowed. + + + + + Set tabu action. + + + Action to set tabu for. + Tabu time in iterations. + + + + + Base exploration policy. + + + Base exploration policy is the policy, which is used + to choose from non-tabu actions. + + + + + Robust circle estimator with RANSAC. + + + + + + Creates a new RANSAC 2D circle estimator. + + + Inlier threshold. + Inlier probability. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Solver types allowed in LibSVM/Liblinear model files. + + + + + + Unknown solver type. + + + + + + L2-regularized logistic regression in the primal (-s 0, L2R_LR). + + + + + + + + L2-regularized L2-loss support vector classification + in the dual (-s 1, L2R_L2LOSS_SVC_DUAL, the default). + + + + + + + + L2-regularized L2-loss support vector classification + in the primal (-s 2, L2R_L2LOSS_SVC). + + + + + + + + L2-regularized L1-loss support vector classification + in the dual (-s 3, L2R_L1LOSS_SVC_DUAL). + + + + + + + + Support vector classification by + Crammer and Singer (-s 4, MCSVM_CS). + + + + + + L1-regularized L2-loss support vector + classification (-s 5, L1R_L2LOSS_SVC). + + + + + + L1-regularized logistic regression (-s 6, L1R_LR). + + + + + + + + L2-regularized logistic regression in the dual (-s 7, L2R_LR_DUAL). + + + + + + + + L2-regularized L2-loss support vector regression + in the primal (-s 11, L2R_L2LOSS_SVR). + + + + + + L2-regularized L2-loss support vector regression + in the dual (-s 12, L2R_L2LOSS_SVR_DUAL). + + + + + + L2-regularized L1-loss support vector regression + in the dual (-s 13, L2R_L1LOSS_SVR_DUAL). + + + + + + Reads support vector machines + created from LibSVM or Liblinear. Not all solver types are supported. + + + + + + Creates a new object. + + + + + + Creates a that + attends the requisites specified in this model. + + + A that represents this model. + + + + + Creates a support + vector machine learning algorithm that attends the + requisites specified in this model. + + + + A that represents this model. + + + + + + Saves this model to disk using LibSVM's model format. + + + The path where the file should be written. + + + + + Saves this model to disk using LibSVM's model format. + + + The stream where the file should be written. + + + + + Loads a model specified using LibSVM's model format from disk. + + + The file path from where the model should be loaded. + + The stored on . + + + + + Loads a model specified using LibSVM's model format from a stream. + + + The stream from where the model should be loaded. + + The stored on . + + + + + Gets or sets the solver type used to create the model. + + + + + + Gets or sets the number of classes that + this classification model can handle. + + + + + + Gets or sets whether an initial double value should + be appended in the beginning of every feature vector. + If set to a negative number, this functionality is + disabled. Default is 0. + + + + + + Gets or sets the number of dimensions (features) + the classification or regression model can handle. + + + + + + Gets or sets the class label for each class + this classification model expects to handle. + + + + + + Gets or sets the vector of linear weights used + by this model, if it is a compact model. If this + is not a compact model, this will be set to null. + + + + + + + + Gets or sets the set of support vectors used + by this model. If the model is compact, this + will be set to null. + + + + + + + + Minimum (Mean) Distance Classifier. + + + + This is one of the simplest possible pattern recognition classifiers. + This classifier works by comparing a new input vector against the mean + value of the other classes. The class which is closer to this new input + vector is considered the winner, and the vector will be classified as + having the same label as this class. + + + + + + Initializes a new instance of the class. + + + The input points. + The output labels associated with each + input points. + + + + + Initializes a new instance of the class. + + + A distance function. Default is to use + the distance. + The input points. + The output labels associated with each + input points. + + + + + Computes the label for the given input. + + + The input value. + The distances from to the class means. + + The output label assigned to this point. + + + + + Computes the label for the given input. + + + A input. + + The output label assigned to this point. + + + + + K-Nearest Neighbor (k-NN) algorithm. + + + The type of the input data. + + + The k-nearest neighbor algorithm (k-NN) is a method for classifying objects + based on closest training examples in the feature space. It is amongst the simplest + of all machine learning algorithms: an object is classified by a majority vote of + its neighbors, with the object being assigned to the class most common amongst its + k nearest neighbors (k is a positive integer, typically small). + + If k = 1, then the object is simply assigned to the class of its nearest neighbor. + + + References: + + + Wikipedia contributors. "K-nearest neighbor algorithm." Wikipedia, The + Free Encyclopedia. Wikipedia, The Free Encyclopedia, 10 Oct. 2012. Web. + 9 Nov. 2012. http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm + + + + + + The following example shows how to create + and use a k-Nearest Neighbor algorithm to classify + a set of numeric vectors. + + + // Create some sample learning data. In this data, + // the first two instances belong to a class, the + // four next belong to another class and the last + // three to yet another. + + double[][] inputs = + { + // The first two are from class 0 + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + + // The next four are from class 1 + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + + // The last three are from class 2 + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + int[] outputs = + { + 0, 0, // First two from class 0 + 1, 1, 1, 1, // Next four from class 1 + 2, 2, 2 // Last three from class 2 + }; + + + // Now we will create the K-Nearest Neighbors algorithm. For this + // example, we will be choosing k = 4. This means that, for a given + // instance, its nearest 4 neighbors will be used to cast a decision. + KNearestNeighbors knn = new KNearestNeighbors(k: 4, classes: 3, + inputs: inputs, outputs: outputs); + + + // After the algorithm has been created, we can classify a new instance: + int answer = knn.Compute(new double[] { 11, 5, 4 }); // answer will be 2. + + + + The k-Nearest neighbor algorithm implementation in the + framework can also be used with any instance data type. For + such cases, the framework offers a generic version of the + classifier, as shown in the example below. + + + // The k-Nearest Neighbors algorithm can be used with + // any kind of data. In this example, we will see how + // it can be used to compare, for example, Strings. + + string[] inputs = + { + "Car", // class 0 + "Bar", // class 0 + "Jar", // class 0 + + "Charm", // class 1 + "Chair" // class 1 + }; + + int[] outputs = + { + 0, 0, 0, // First three are from class 0 + 1, 1, // And next two are from class 1 + }; + + + // Now we will create the K-Nearest Neighbors algorithm. For this + // example, we will be choosing k = 1. This means that, for a given + // instance, only its nearest neighbor will be used to cast a new + // decision. + + // In order to compare strings, we will be using Levenshtein's string distance + KNearestNeighbors<string> knn = new KNearestNeighbors<string>(k: 1, classes: 2, + inputs: inputs, outputs: outputs, distance: Distance.Levenshtein); + + + // After the algorithm has been created, we can use it: + int answer = knn.Compute("Chars"); // answer should be 1. + + + + + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + + The input data points. + The associated labels for the input points. + The distance measure to use in the decision. + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + + The input data points. + The associated labels for the input points. + The distance measure to use in the decision. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + + The most likely label for the given point. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + A value between 0 and 1 giving + the strength of the classification in relation to the + other classes. + + The most likely label for the given point. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + The distance score for each possible class. + + The most likely label for the given point. + + + + + Gets the top points that are the closest + to a given reference point. + + + The query point whose neighbors will be found. + The label for each neighboring point. + + + An array containing the top points that are + at the closest possible distance to . + + + + + + Gets the set of points given + as input of the algorithm. + + + The input points. + + + + + Gets the set of labels associated + with each point. + + + + + + Gets the number of class labels + handled by this classifier. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets the number of nearest + neighbors to be used in the decision. + + + The number of neighbors. + + + + + Fitting function delegate. + + + + The sample indexes to be used as training samples in + the model fitting procedure. + + The sample indexes to be used as validation samples in + the model fitting procedure. + + + The fitting function is called during the Bootstrap + procedure to fit a model with the given set of samples + for training and validation. + + + + + + Bootstrap method for generalization + performance measurements. + + + + + // This is a sample code on how to use Bootstrap estimate + // to assess the performance of Support Vector Machines. + + // Consider the example binary data. We will be trying + // to learn a XOR problem and see how well does SVMs + // perform on this data. + + double[][] data = + { + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + }; + + int[] xor = // result of xor for the sample input data + { + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + }; + + + // Create a new Bootstrap algorithm passing the set size and the number of resamplings + var bootstrap = new Bootstrap(size: data.Length, subsamples: 50); + + // Define a fitting function using Support Vector Machines. The objective of this + // function is to learn a SVM in the subset of the data indicated by the bootstrap. + + bootstrap.Fitting = delegate(int[] indicesTrain, int[] indicesValidation) + { + // The fitting function is passing the indices of the original set which + // should be considered training data and the indices of the original set + // which should be considered validation data. + + // Lets now grab the training data: + var trainingInputs = data.Submatrix(indicesTrain); + var trainingOutputs = xor.Submatrix(indicesTrain); + + // And now the validation data: + var validationInputs = data.Submatrix(indicesValidation); + var validationOutputs = xor.Submatrix(indicesValidation); + + + // Create a Kernel Support Vector Machine to operate on the set + var svm = new KernelSupportVectorMachine(new Polynomial(2), 2); + + // Create a training algorithm and learn the training data + var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs); + + double trainingError = smo.Run(); + + // Now we can compute the validation error on the validation data: + double validationError = smo.ComputeError(validationInputs, validationOutputs); + + // Return a new information structure containing the model and the errors achieved. + return new BootstrapValues(trainingError, validationError); + }; + + + // Compute the bootstrap estimate + var result = bootstrap.Compute(); + + // Finally, access the measured performance. + double trainingErrors = result.Training.Mean; + double validationErrors = result.Validation.Mean; + + // And compute the 0.632 estimate + double estimate = result.Estimate; + + + + + + + + + + + + + Creates a new Bootstrap estimation algorithm. + + + The size of the complete dataset. + The number B of bootstrap resamplings to perform. + + + + + Creates a new Bootstrap estimation algorithm. + + + The size of the complete dataset. + The number B of bootstrap resamplings to perform. + The number of samples in each subsample. Default + is to use the total number of samples in the population dataset.. + + + + + Creates a new Bootstrap estimation algorithm. + + + The size of the complete dataset. + The indices of the bootstrap samplings. + + + + + Gets the indices for the training and validation + sets for the specified validation fold index. + + + The index of the validation fold. + The indices for the observations in the training set. + The indices for the observations in the validation set. + + + + + Computes the cross validation algorithm. + + + + + + Gets the number of instances in training and validation + sets for the specified validation fold index. + + + The index of the bootstrap sample. + The number of instances in the training set. + The number of instances in the validation set. + + + + + Draws the bootstrap samples from the population. + + + The size of the samples to be drawn. + The number of samples to drawn. + The size of the samples to be drawn. + + The indices of the samples in the original set. + + + + + Gets the number B of bootstrap samplings + to be drawn from the population dataset. + + + + + + Gets the total number of samples in the population dataset. + + + + + + Gets the bootstrap samples drawn from + the population dataset as indices. + + + + + + Gets or sets the model fitting function. + + + The fitting function should accept an array of integers containing the + indexes for the training samples, an array of integers containing the + indexes for the validation samples and should return information about + the model fitted using those two subsets of the available data. + + + + + + Gets or sets a value indicating whether to use parallel + processing through the use of multiple threads or not. + Default is true. + + + true to use multiple threads; otherwise, false. + + + + + Bootstrap validation analysis results. + + + + + + Initializes a new instance of the class. + + + The that is creating this result. + The models created during the cross-validation runs. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Loads a result from a stream. + + + The stream from which the result is to be deserialized. + + The deserialized result. + + + + + Loads a result from a stream. + + + The path to the file from which the result is to be deserialized. + + The deserialized result. + + + + + Gets the + object used to generate this result. + + + + + + Gets the performance statistics for the training set. + + + + + + Gets the performance statistics for the validation set. + + + + + Gets the 0.632 bootstrap estimate. + + + + + + Information class to store the training and validation errors of a model. + + + + + The training value for the model. + The validation value for the model. + + + + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Gets the validation value for the model. + + + + + + Gets the variance of the validation + value for the model, if available. + + + + + + Gets the training value for the model. + + + + + + Gets the variance of the training + value for the model, if available. + + + + + + Gets or sets a tag for user-defined information. + + + + + + k-Modes algorithm. + + + + The k-Modes algorithm is a variant of the k-Means which instead of + locating means attempts to locate the modes of a set of points. As + the algorithm does not require explicit numeric manipulation of the + input points (such as addition and division to compute the means), + the algorithm can be used with arbitrary (generic) data structures. + + + + + + + + + + Initializes a new instance of KMeans algorithm + + + The number of clusters to divide input data. + The distance function to use. Default is to + use the distance. + + + + + Randomizes the clusters inside a dataset. + + + The data to randomize the algorithm. + True to use the k-means++ seeding algorithm. False otherwise. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + The average distance metric from the + data points to the clusters' centroids. + + + + + + Determines if the algorithm has converged by comparing the + centroids between two consecutive iterations. + + + The previous centroids. + The new centroids. + A convergence threshold. + + Returns if all centroids had a percentage change + less than . Returns otherwise. + + + + + Gets the clusters found by K-modes. + + + + + + Gets the number of clusters. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + k-Modes algorithm. + + + + + The k-Modes algorithm is a variant of the k-Means which instead of + locating means attempts to locate the modes of a set of points. As + the algorithm does not require explicit numeric manipulation of the + input points (such as addition and division to compute the means), + the algorithm can be used with arbitrary (generic) data structures. + + This is the specialized, non-generic version of the K-Modes algorithm + that is set to work on arrays. + + + + + + + + Initializes a new instance of K-Modes algorithm + + + The number of clusters to divide input data. + + + + + Modes for storing models. + + + + + + Stores a model on each iteration. This is the most + intensive method, but enables a quick restoration + of any point on the learning history. + + + + + + Stores only the model which had shown the minimum + validation value in the training history. All other + models are discarded and only their validation and + training values will be registered. + + + + + + Stores only the model which had shown the maximum + validation value in the training history. All other + models are discarded and only their validation and + training values will be registered. + + + + + + Early stopping training procedure. + + + + The early stopping training procedure monitors a validation set + during training to determine when a learning algorithm has stopped + learning and started to overfit data. This class keeps an history + of training and validation errors and will keep the best model found + during learning. + + + The type of the model to be trained. + + + + + Creates a new early stopping procedure object. + + + + + + Starts the model training, calling the + on each iteration. + + + True if the model training has converged, false otherwise. + + + + + Gets or sets the maximum number of iterations + performed by the early stopping algorithm. Default + is 0 (run until convergence). + + + + + + Gets or sets the minimum tolerance value used + to determine convergence. Default is 1e-5. + + + + + + Gets the history of training and validation values + registered at each iteration of the learning algorithm. + + + + + + Gets the model with minimum validation error found during learning. + + + + + + Gets the model with maximum validation error found during learning. + + + + + + Gets or sets the storage policy for the procedure. + + + + + Gets or sets the iteration function for the procedure. This + function will be called on each iteration and should run one + iteration of the learning algorithm for the given model. + + + + + + Range of parameters to be tested in a grid search. + + + + + + Constructs a new GridsearchRange object. + + + The name for this parameter. + The starting value for this range. + The end value for this range. + The step size for this range. + + + + + Constructs a new GridSearchRange object. + + + The name for this parameter. + The array of values to try. + + + + + Gets the array of GridSearchParameters to try. + + + + + + Gets or sets the name of the parameter from which the range belongs to. + + + + + + Gets or sets the range of values that should be tested for this parameter. + + + + + + GridSearchRange collection. + + + + + + Constructs a new collection of GridsearchRange objects. + + + + + + Returns the identifying value for an item on this collection. + + + + + + Adds a parameter range to the end of the GridsearchRangeCollection. + + + + + + Contains the name and value of a parameter that should be used during fitting. + + + + + + Constructs a new parameter. + + + The name for the parameter. + The value for the parameter. + + + + + Determines whether the specified object is equal + to the current GridSearchParameter object. + + + + + + Returns the hash code for this GridSearchParameter + + + + + + Compares two GridSearchParameters for equality. + + + + + + Compares two GridSearchParameters for inequality. + + + + + + Gets the name of the parameter + + + + + + Gets the value of the parameter. + + + + + + Grid search parameter collection. + + + + + + Constructs a new collection of GridsearchParameter objects. + + + + + + Constructs a new collection of GridsearchParameter objects. + + + + + + Returns the identifying value for an item on this collection. + + + + + + Training and validation errors of a model. + + + The type of the model. + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Gets the model. + + + + + + Gets the validation value for the model. + + + + + + Gets the variance of the validation + value for the model, if available. + + + + + + Gets the training value for the model. + + + + + + Gets the variance of the training + value for the model, if available. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Class for representing results acquired through + a k-fold cross-validation analysis. + + + The type of the model being analyzed. + + + + + Initializes a new instance of the class. + + + The that is creating this result. + The models created during the cross-validation runs. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Loads a result from a stream. + + + The stream from which the result is to be deserialized. + + The deserialized result. + + + + + Loads a result from a stream. + + + The path to the file from which the result is to be deserialized. + + The deserialized result. + + + + + Gets the + object used to generate this result. + + + + + + Gets the performance statistics for the training set. + + + + + + Gets the performance statistics for the validation set. + + + + + Gets the models created for each fold of the cross validation. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Information class to store the training and validation errors of a model. + + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The variance of the training values. + + + + + Summary statistics for a cross-validation trial. + + + + + + Create a new cross-validation statistics class. + + + The number of samples used to compute the statistics. + The performance statistics gathered during the run. + + + + + Create a new cross-validation statistics class. + + + The number of samples used to compute the statistics. + The performance statistics gathered during the run. + The variance of the statistics gathered during the run, if available. + + + + + Gets the values acquired during the cross-validation. + Most often those will be the errors for each folding. + + + + + + Gets the variance for each value acquired during the cross-validation. + Most often those will be the error variance for each folding. + + + + + + Gets the number of samples used to compute the variance + of the values acquired during the cross-validation. + + + + + + Gets the mean of the performance statistics. + + + + + + Gets the variance of the performance statistics. + + + + + + Gets the standard deviation of the performance statistics. + + + + + + Gets the pooled variance of the performance statistics. + + + + + + Gets the pooled standard deviation of the performance statistics. + + + + + + Gets or sets a tag for user-defined information. + + + + + + k-Fold cross-validation. + + + + + Cross-validation is a technique for estimating the performance of a predictive + model. It can be used to measure how the results of a statistical analysis will + generalize to an independent data set. It is mainly used in settings where the + goal is prediction, and one wants to estimate how accurately a predictive model + will perform in practice. + + One round of cross-validation involves partitioning a sample of data into + complementary subsets, performing the analysis on one subset (called the + training set), and validating the analysis on the other subset (called the + validation set or testing set). To reduce variability, multiple rounds of + cross-validation are performed using different partitions, and the validation + results are averaged over the rounds. + + + References: + + + Wikipedia, The Free Encyclopedia. Cross-validation (statistics). Available on: + http://en.wikipedia.org/wiki/Cross-validation_(statistics) + + + + + + // This is a sample code on how to use Cross-Validation + // to assess the performance of Support Vector Machines. + + // Consider the example binary data. We will be trying + // to learn a XOR problem and see how well does SVMs + // perform on this data. + + double[][] data = + { + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + }; + + int[] xor = // result of xor for the sample input data + { + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + }; + + + // Create a new Cross-validation algorithm passing the data set size and the number of folds + var crossvalidation = new CrossValidation(size: data.Length, folds: 3); + + // Define a fitting function using Support Vector Machines. The objective of this + // function is to learn a SVM in the subset of the data indicated by cross-validation. + + crossvalidation.Fitting = delegate(int k, int[] indicesTrain, int[] indicesValidation) + { + // The fitting function is passing the indices of the original set which + // should be considered training data and the indices of the original set + // which should be considered validation data. + + // Lets now grab the training data: + var trainingInputs = data.Submatrix(indicesTrain); + var trainingOutputs = xor.Submatrix(indicesTrain); + + // And now the validation data: + var validationInputs = data.Submatrix(indicesValidation); + var validationOutputs = xor.Submatrix(indicesValidation); + + + // Create a Kernel Support Vector Machine to operate on the set + var svm = new KernelSupportVectorMachine(new Polynomial(2), 2); + + // Create a training algorithm and learn the training data + var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs); + + double trainingError = smo.Run(); + + // Now we can compute the validation error on the validation data: + double validationError = smo.ComputeError(validationInputs, validationOutputs); + + // Return a new information structure containing the model and the errors achieved. + return new CrossValidationValues(svm, trainingError, validationError); + }; + + + // Compute the cross-validation + var result = crossvalidation.Compute(); + + // Finally, access the measured performance. + double trainingErrors = result.Training.Mean; + double validationErrors = result.Validation.Mean; + + + + + + + + + + + k-Fold cross-validation. + + + The type of the model being analyzed. + + + + Cross-validation is a technique for estimating the performance of a predictive + model. It can be used to measure how the results of a statistical analysis will + generalize to an independent data set. It is mainly used in settings where the + goal is prediction, and one wants to estimate how accurately a predictive model + will perform in practice. + + One round of cross-validation involves partitioning a sample of data into + complementary subsets, performing the analysis on one subset (called the + training set), and validating the analysis on the other subset (called the + validation set or testing set). To reduce variability, multiple rounds of + cross-validation are performed using different partitions, and the validation + results are averaged over the rounds. + + + References: + + + Wikipedia, The Free Encyclopedia. Cross-validation (statistics). Available on: + http://en.wikipedia.org/wiki/Cross-validation_(statistics) + + + + + + // This is a sample code on how to use Cross-Validation + // to access the performance of Support Vector Machines. + + // Consider the example binary data. We will be trying + // to learn a XOR problem and see how well does SVMs + // perform on this data. + + double[][] data = + { + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + }; + + int[] xor = // result of xor for the sample input data + { + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + }; + + + // Create a new Cross-validation algorithm passing the data set size and the number of folds + var crossvalidation = new CrossValidation<KernelSupportVectorMachine>(size: data.Length, folds: 3); + + // Define a fitting function using Support Vector Machines. The objective of this + // function is to learn a SVM in the subset of the data indicated by cross-validation. + + crossvalidation.Fitting = delegate(int k, int[] indicesTrain, int[] indicesValidation) + { + // The fitting function is passing the indices of the original set which + // should be considered training data and the indices of the original set + // which should be considered validation data. + + // Lets now grab the training data: + var trainingInputs = data.Submatrix(indicesTrain); + var trainingOutputs = xor.Submatrix(indicesTrain); + + // And now the validation data: + var validationInputs = data.Submatrix(indicesValidation); + var validationOutputs = xor.Submatrix(indicesValidation); + + + // Create a Kernel Support Vector Machine to operate on the set + var svm = new KernelSupportVectorMachine(new Polynomial(2), 2); + + // Create a training algorithm and learn the training data + var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs); + + double trainingError = smo.Run(); + + // Now we can compute the validation error on the validation data: + double validationError = smo.ComputeError(validationInputs, validationOutputs); + + // Return a new information structure containing the model and the errors achieved. + return new CrossValidationValues<KernelSupportVectorMachine>(svm, trainingError, validationError); + }; + + + // Compute the cross-validation + var result = crossvalidation.Compute(); + + // Finally, access the measured performance. + double trainingErrors = result.Training.Mean; + double validationErrors = result.Validation.Mean; + + + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + A vector containing class labels. + The number of different classes in . + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + An already created set of fold indices for each sample in a dataset. + The total number of folds referenced in the parameter. + + + + + Gets the indices for the training and validation + sets for the specified validation fold index. + + + The index of the validation fold. + The indices for the observations in the training set. + The indices for the observations in the validation set. + + + + + Gets the number of instances in training and validation + sets for the specified validation fold index. + + + The index of the validation fold. + The number of instances in the training set. + The number of instances in the validation set. + + + + + Computes the cross validation algorithm. + + + + + + Gets or sets the model fitting function. + + + The fitting function should accept an array of integers containing the + indexes for the training samples, an array of integers containing the + indexes for the validation samples and should return information about + the model fitted using those two subsets of the available data. + + + + + + Gets the array of data set indexes contained in each fold. + + + + + + Gets the array of fold indices for each point in the data set. + + + + + + Gets the number of folds in the k-fold cross validation. + + + + + + Gets the total number of data samples in the data set. + + + + + + Gets or sets a value indicating whether to use parallel + processing through the use of multiple threads or not. + Default is true. + + + true to use multiple threads; otherwise, false. + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + A vector containing class labels. + The number of different classes in . + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + An already created set of fold indices for each sample in a dataset. + The total number of folds referenced in the parameter. + + + + + Create cross-validation folds by generating a vector of random fold indices. + + + The number of points in the data set. + The number of folds in the cross-validation. + + A vector of indices defining the a fold for each point in the data set. + + + + + Create cross-validation folds by generating a vector of random fold indices, + making sure class labels get equally distributed among the folds. + + + A vector containing class labels. + The number of different classes in . + The number of folds in the cross-validation. + + A vector of indices defining the a fold for each point in the data set. + + + + + Fitting function delegate. + + + + The fold index. + + The sample indexes to be used as training samples in + the model fitting procedure. + + The sample indexes to be used as validation samples in + the model fitting procedure. + + + The fitting function is called during the Cross-validation + procedure to fit a model with the given set of samples for + training and validation. + + + + + + Attribute category. + + + + + + Attribute is discrete-valued. + + + + + + Attribute is continuous-valued. + + + + + + Decision attribute. + + + + + + Creates a new . + + + The name of the attribute. + The range of valid values for this attribute. Default is [0;1]. + + + + + Creates a new . + + + The name of the attribute. + The attribute's nature (i.e. real-valued or discrete-valued). + + + + + Creates a new . + + + The name of the attribute. + The range of valid values for this attribute. + + + + + Creates a new discrete-valued . + + + The name of the attribute. + The number of possible values for this attribute. + + + + + Creates a new continuous . + + + The name of the attribute. + + + + + Creates a new continuous . + + + The name of the attribute. + The range of valid values for this attribute. Default is [0;1]. + + + + + Creates a new discrete . + + + The name of the attribute. + The range of valid values for this attribute. + + + + + Creates a new discrete-valued . + + + The name of the attribute. + The number of possible values for this attribute. + + + + + Creates a set of decision variables from a codebook. + + + The codebook containing information about the variables. + The columns to consider as decision variables. + + An array of objects + initialized with the values from the codebook. + + + + + Gets the name of the attribute. + + + + + + Gets the nature of the attribute (i.e. real-valued or discrete-valued). + + + + + + Gets the valid range of the attribute. + + + + + + Collection of decision attributes. + + + + + + Initializes a new instance of the class. + + + The list to initialize the collection. + + + + + C4.5 Learning algorithm for Decision Trees. + + + + + References: + + + Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan + Kaufmann Publishers, 1993. + + Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan + Kaufmann Publishers, 1993. + + Quinlan, J. R. Improved use of continuous attributes in c4.5. Journal + of Artificial Intelligence Research, 4:77-90, 1996. + + Mitchell, T. M. Machine Learning. McGraw-Hill, 1997. pp. 55-58. + + Wikipedia, the free encyclopedia. ID3 algorithm. Available on + http://en.wikipedia.org/wiki/ID3_algorithm + + + + + + + + + // This example uses the Nursery Database available from the University of + // California Irvine repository of machine learning databases, available at + // + // http://archive.ics.uci.edu/ml/machine-learning-databases/nursery/nursery.names + // + // The description paragraph is listed as follows. + // + // Nursery Database was derived from a hierarchical decision model + // originally developed to rank applications for nursery schools. It + // was used during several years in 1980's when there was excessive + // enrollment to these schools in Ljubljana, Slovenia, and the + // rejected applications frequently needed an objective + // explanation. The final decision depended on three subproblems: + // occupation of parents and child's nursery, family structure and + // financial standing, and social and health picture of the family. + // The model was developed within expert system shell for decision + // making DEX (M. Bohanec, V. Rajkovic: Expert system for decision + // making. Sistemica 1(1), pp. 145-157, 1990.). + // + + // Let's begin by loading the raw data. This string variable contains + // the contents of the nursery.data file as a single, continuous text. + // + string nurseryData = Resources.nursery; + + // Those are the input columns available in the data + // + string[] inputColumns = + { + "parents", "has_nurs", "form", "children", + "housing", "finance", "social", "health" + }; + + // And this is the output, the last column of the data. + // + string outputColumn = "output"; + + + // Let's populate a data table with this information. + // + DataTable table = new DataTable("Nursery"); + table.Columns.Add(inputColumns); + table.Columns.Add(outputColumn); + + string[] lines = nurseryData.Split( + new[] { Environment.NewLine }, StringSplitOptions.None); + + foreach (var line in lines) + table.Rows.Add(line.Split(',')); + + + // Now, we have to convert the textual, categorical data found + // in the table to a more manageable discrete representation. + // + // For this, we will create a codebook to translate text to + // discrete integer symbols: + // + Codification codebook = new Codification(table); + + // And then convert all data into symbols + // + DataTable symbols = codebook.Apply(table); + double[][] inputs = symbols.ToArray(inputColumns); + int[] outputs = symbols.ToArray<int>(outputColumn); + + // From now on, we can start creating the decision tree. + // + var attributes = DecisionVariable.FromCodebook(codebook, inputColumns); + DecisionTree tree = new DecisionTree(attributes, outputClasses: 5); + + + // Now, let's create the C4.5 algorithm + C45Learning c45 = new C45Learning(tree); + + // and learn a decision tree. The value of + // the error variable below should be 0. + // + double error = c45.Run(inputs, outputs); + + + // To compute a decision for one of the input points, + // such as the 25-th example in the set, we can use + // + int y = tree.Compute(inputs[25]); + + // Finally, we can also convert our tree to a native + // function, improving efficiency considerably, with + // + Func<double[], int> func = tree.ToExpression().Compile(); + + // Again, to compute a new decision, we can just use + // + int z = func(inputs[25]); + + + + + + + Creates a new C4.5 learning algorithm. + + + The decision tree to be generated. + + + + + Runs the learning algorithm, creating a decision + tree modeling the given inputs and outputs. + + + The inputs. + The corresponding outputs. + + The error of the generated tree. + + + + + Computes the prediction error for the tree + over a given set of input and outputs. + + + The input points. + The corresponding output labels. + + The percentage error of the prediction. + + + + + Gets or sets the maximum allowed + height when learning a tree. + + + + + + Gets or sets the step at which the samples will + be divided when dividing continuous columns in + binary classes. Default is 1. + + + + + + Gets or sets how many times one single variable can be + integrated into the decision process. In the original + ID3 algorithm, a variable can join only one time per + decision path (path from the root to a leaf). + + + + + + Static class for common information measures. + + + + + + Computes the split information measure. + + + The total number of samples. + The partitioning. + The split information for the given partitions. + + + + + Decision Tree (Linq) Expression Creator. + + + + + + Initializes a new instance of the class. + + + The decision tree. + + + + + Creates an expression for the tree. + + + A strongly typed lambda expression in the form + of an expression tree + representing the . + + + + + ID3 (Iterative Dichotomizer 3) learning algorithm + for Decision Trees. + + + + + References: + + + Quinlan, J. R 1986. Induction of Decision Trees. + Mach. Learn. 1, 1 (Mar. 1986), 81-106. + + Mitchell, T. M. Machine Learning. McGraw-Hill, 1997. pp. 55-58. + + Wikipedia, the free encyclopedia. ID3 algorithm. Available on + http://en.wikipedia.org/wiki/ID3_algorithm + + + + + + + In this example, we will be using the famous Play Tennis example by Tom Mitchell (1998). + In Mitchell's example, one would like to infer if a person would play tennis or not + based solely on four input variables. Those variables are all categorical, meaning that + there is no order between the possible values for the variable (i.e. there is no order + relationship between Sunny and Rain, one is not bigger nor smaller than the other, but are + just distinct). Moreover, the rows, or instances presented above represent days on which the + behavior of the person has been registered and annotated, pretty much building our set of + observation instances for learning: + + + DataTable data = new DataTable("Mitchell's Tennis Example"); + + data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + data.Rows.Add( "D1", "Sunny", "Hot", "High", "Weak", "No" ); + data.Rows.Add( "D2", "Sunny", "Hot", "High", "Strong", "No" ); + data.Rows.Add( "D3", "Overcast", "Hot", "High", "Weak", "Yes" ); + data.Rows.Add( "D4", "Rain", "Mild", "High", "Weak", "Yes" ); + data.Rows.Add( "D5", "Rain", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D6", "Rain", "Cool", "Normal", "Strong", "No" ); + data.Rows.Add( "D7", "Overcast", "Cool", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D8", "Sunny", "Mild", "High", "Weak", "No" ); + data.Rows.Add( "D9", "Sunny", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D10", "Rain", "Mild", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D11", "Sunny", "Mild", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D12", "Overcast", "Mild", "High", "Strong", "Yes" ); + data.Rows.Add( "D13", "Overcast", "Hot", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D14", "Rain", "Mild", "High", "Strong", "No" ); + + + + In order to try to learn a decision tree, we will first convert this problem to a more simpler + representation. Since all variables are categories, it does not matter if they are represented + as strings, or numbers, since both are just symbols for the event they represent. Since numbers + are more easily representable than text string, we will convert the problem to use a discrete + alphabet through the use of a codebook. + + + A codebook effectively transforms any distinct possible value for a variable into an integer + symbol. For example, “Sunny” could as well be represented by the integer label 0, “Overcast” + by “1”, Rain by “2”, and the same goes by for the other variables. So: + + + // Create a new codification codebook to + // convert strings into integer symbols + Codification codebook = new Codification(data, + "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // Translate our training data into integer symbols using our codebook: + DataTable symbols = codebook.Apply(data); + int[][] inputs = symbols.ToArray<int>("Outlook", "Temperature", "Humidity", "Wind"); + int[] outputs = symbols.ToArray<int>("PlayTennis"); + + + + Now that we already have our learning input/ouput pairs, we should specify our + decision tree. We will be trying to build a tree to predict the last column, entitled + “PlayTennis”. For this, we will be using the “Outlook”, “Temperature”, “Humidity” and + “Wind” as predictors (variables which will we will use for our decision). Since those + are categorical, we must specify, at the moment of creation of our tree, the + characteristics of each of those variables. So: + + + + // Gather information about decision variables + DecisionVariable[] attributes = + { + new DecisionVariable("Outlook", 3), // 3 possible values (Sunny, overcast, rain) + new DecisionVariable("Temperature", 3), // 3 possible values (Hot, mild, cool) + new DecisionVariable("Humidity", 2), // 2 possible values (High, normal) + new DecisionVariable("Wind", 2) // 2 possible values (Weak, strong) + }; + + int classCount = 2; // 2 possible output values for playing tennis: yes or no + + //Create the decision tree using the attributes and classes + DecisionTree tree = new DecisionTree(attributes, classCount); + + + Now we have created our decision tree. Unfortunately, it is not really very useful, + since we haven't taught it the problem we are trying to predict. So now we must instantiate + a learning algorithm to make it useful. For this task, in which we have only categorical + variables, the simplest choice is to use the ID3 algorithm by Quinlan. Let’s do it: + + + // Create a new instance of the ID3 algorithm + ID3Learning id3learning = new ID3Learning(tree); + + // Learn the training instances! + id3learning.Run(inputs, outputs); + + + The tree can now be queried for new examples through its + method. For example, we can use: + + + string answer = codebook.Translate("PlayTennis", + tree.Compute(codebook.Translate("Sunny", "Hot", "High", "Strong"))); + + + In the above example, answer will be "No". + + + + + + + + + + Creates a new ID3 learning algorithm. + + + The decision tree to be generated. + + + + + Runs the learning algorithm, creating a decision + tree modeling the given inputs and outputs. + + + The inputs. + The corresponding outputs. + + The error of the generated tree. + + + + + Computes the prediction error for the tree + over a given set of input and outputs. + + + The input points. + The corresponding output labels. + + The percentage error of the prediction. + + + + + Gets or sets the maximum allowed height when + learning a tree. If set to zero, no limit will + be applied. Default is zero. + + + + + + Gets or sets whether all nodes are obligated to provide + a true decision value. If set to false, some leaf nodes + may contain null. Default is false. + + + + + + Gets or sets how many times one single variable can be + integrated into the decision process. In the original + ID3 algorithm, a variable can join only one time per + decision path (path from the root to a leaf). + + + + + + Decision tree. + + + + + Represent a decision tree which can be compiled to + code at run-time. For sample usage and example of + learning, please see the + ID3 learning algorithm for decision trees. + + + + + + + + + Creates a new to process + the given and the given + number of possible . + + + An array specifying the attributes to be processed by this tree. + The number of possible output classes for the given attributes. + + + + + Computes the decision for a given input. + + + The input data. + + A predicted class for the given input. + + + + + Computes the tree decision for a given input. + + + The input data. + + A predicted class for the given input. + + + + + Computes the tree decision for a given input. + + + The input data. + The node where the decision starts. + + A predicted class for the given input. + + + + + Returns an enumerator that iterates through the tree. + + + + An object that can be + used to iterate through the collection. + + + + + + Traverse the tree using a tree + traversal method. Can be iterated with a foreach loop. + + + The tree traversal method. Common methods are + available in the static class. + + An object which can be used to + traverse the tree using the chosen traversal method. + + + + + Traverse a subtree using a tree + traversal method. Can be iterated with a foreach loop. + + + The tree traversal method. Common methods are + available in the static class. + The root of the subtree to be traversed. + + An object which can be used to + traverse the tree using the chosen traversal method. + + + + + Transforms the tree into a set of decision rules. + + + A created from this tree. + + + + + Creates an Expression Tree representation + of this decision tree, which can in turn be compiled into code. + + + A tree in the form of an expression tree. + + + + + Creates a .NET assembly (.dll) containing a static class of + the given name implementing the decision tree. The class will + contain a single static Compute method implementing the tree. + + + The name of the assembly to generate. + The name of the generated static class. + + + + + Creates a .NET assembly (.dll) containing a static class of + the given name implementing the decision tree. The class will + contain a single static Compute method implementing the tree. + + + The name of the assembly to generate. + The namespace which should contain the class. + The name of the generated static class. + + + + + Generates a C# class implementing the decision tree. + + + The name for the generated class. + + A string containing the generated class. + + + + + Generates a C# class implementing the decision tree. + + + The name for the generated class. + The where the class should be written. + + + + + Computes the height of the tree, defined as the + greatest distance (in links) between the tree's + root node and its leaves. + + + The tree's height. + + + + + Loads a tree from a file. + + + The path to the file from which the tree is to be deserialized. + + The deserialized tree. + + + + + Saves the tree to a stream. + + + The stream to which the tree is to be serialized. + + + + + Loads a tree from a stream. + + + The stream from which the tree is to be deserialized. + + The deserialized tree. + + + + + Loads a tree from a file. + + + The path to the tree from which the machine is to be deserialized. + + The deserialized tree. + + + + + Gets or sets the root node for this tree. + + + + + + Gets the collection of attributes processed by this tree. + + + + + + Gets the number of distinct output + classes classified by this tree. + + + + + + Gets the number of input attributes + expected by this tree. + + + + + + Decision Tree (DT) Node. + + + + Each node of a decision tree can play two roles. When a node is not a leaf, it + contains a with a collection of child nodes. The + branch specifies an attribute index, indicating which column from the data set + (the attribute) should be compared against its children values. The type of the + comparison is specified by each of the children. When a node is a leaf, it will + contain the output value which should be decided for when the node is reached. + + + + + + + + Creates a new decision node. + + + The owner tree for this node. + + + + + Computes whether a value satisfies + the condition imposed by this node. + + + The value x. + + true if the value satisfies this node's + condition; otherwise, false. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Computes the height of the node, defined as the + distance (in number of links) between the tree's + root node and this node. + + + The node's height. + + + + + Returns an enumerator that iterates through the node's subtree. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the node's subtree. + + + + An object that can be used to iterate through the collection. + + + + + + Gets or sets the value this node responds to + whenever this node acts as a child node. This + value is set only when the node has a parent. + + + + + + Gets or sets the type of the comparison which + should be done against . + + + + + + If this is a leaf node, gets or sets the output + value to be decided when this node is reached. + + + + + + If this is not a leaf node, gets or sets the collection + of child nodes for this node, together with the attribute + determining the reasoning process for those children. + + + + + + Gets or sets the parent of this node. If this is a root + node, the parent is null. + + + + + + Gets the containing this node. + + + + + + Gets a value indicating whether this instance is a root node (has no parent). + + + true if this instance is a root; otherwise, false. + + + + + Gets a value indicating whether this instance is a leaf (has no children). + + + true if this instance is a leaf; otherwise, false. + + + + + Gaussian mixture model clustering. + + + + Gaussian Mixture Models are one of most widely used model-based + clustering methods. This specialized class provides a wrap-up + around the + + Mixture<NormalDistribution> distribution and provides + mixture initialization using the K-Means clustering algorithm. + + + + + // Create a new Gaussian Mixture Model with 2 components + GaussianMixtureModel gmm = new GaussianMixtureModel(2); + + // Compute the model (estimate) + gmm.Compute(samples, 0.0001); + + // Get classification for a new sample + int c = gmm.Gaussians.Nearest(sample); + + + + + + + Gets a copy of the mixture distribution modeled by this Gaussian Mixture Model. + + + + + + Initializes a new instance of the class. + + + + The number of clusters in the clusterization problem. This will be + used to set the number of components in the mixture model. + + + + + Initializes a new instance of the class. + + + + The initial solution as a K-Means clustering. + + + + + Initializes a new instance of the class. + + + + The initial solution as a mixture of normal distributions. + + + + + Initializes a new instance of the class. + + + + The initial solution as a mixture of normal distributions. + + + + + Initializes the model with initial values obtained + through a run of the K-Means clustering algorithm. + + + + + + Initializes the model with initial values obtained + through a run of the K-Means clustering algorithm. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Returns the most likely clusters of an observation. + + + An input observation. + + + The index of the most likely cluster + of the given observation. + + + + + Returns the most likely clusters of an observation. + + + An input observation. + The likelihood responses for each cluster. + + + The index of the most likely cluster + of the given observation. + + + + + Returns the most likely clusters for an array of observations. + + + An set of observations. + + + An array containing the index of the most likely cluster + for each of the given observations. + + + + + Gets the Gaussian components of the mixture model. + + + + + + Options for Gaussian Mixture Model fitting. + + + + This class provides different options that can be passed to a + object when calling its + + method. + + + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + + + The convergence threshold. + + + + + Gets or sets the maximum number of iterations + to be performed by the Expectation-Maximization + algorithm. Default is zero (iterate until convergence). + + + + + + Gets or sets whether to make computations using the log + -domain. This might improve accuracy on large datasets. + + + + + + Gets or sets the sample weights. If set to null, + the data will be assumed equal weights. Default + is null. + + + + + + Gets or sets the fitting options for the component + Gaussian distributions of the mixture model. + + + The fitting options for inner Gaussian distributions. + + + + + Naïve Bayes Classifier. + + + + + A naive Bayes classifier is a simple probabilistic classifier based on applying Bayes' theorem + with strong (naive) independence assumptions. A more descriptive term for the underlying probability + model would be "independent feature model". + + In simple terms, a naive Bayes classifier assumes that the presence (or absence) of a particular + feature of a class is unrelated to the presence (or absence) of any other feature, given the class + variable. In spite of their naive design and apparently over-simplified assumptions, naive Bayes + classifiers have worked quite well in many complex real-world situations. + + + This class implements a discrete (integer-valued) Naive-Bayes classifier. There is also a + special named constructor to create classifiers assuming normal + distributions for each variable. For arbitrary distribution classifiers, please see + . + + + References: + + + Wikipedia contributors. "Naive Bayes classifier." Wikipedia, The Free Encyclopedia. + Wikipedia, The Free Encyclopedia, 16 Dec. 2011. Web. 5 Jan. 2012. + + + + + + + In this example, we will be using the famous Play Tennis example by Tom Mitchell (1998). + In Mitchell's example, one would like to infer if a person would play tennis or not + based solely on four input variables. Those variables are all categorical, meaning that + there is no order between the possible values for the variable (i.e. there is no order + relationship between Sunny and Rain, one is not bigger nor smaller than the other, but are + just distinct). Moreover, the rows, or instances presented below represent days on which the + behavior of the person has been registered and annotated, pretty much building our set of + observation instances for learning: + + + DataTable data = new DataTable("Mitchell's Tennis Example"); + + data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + data.Rows.Add( "D1", "Sunny", "Hot", "High", "Weak", "No" ); + data.Rows.Add( "D2", "Sunny", "Hot", "High", "Strong", "No" ); + data.Rows.Add( "D3", "Overcast", "Hot", "High", "Weak", "Yes" ); + data.Rows.Add( "D4", "Rain", "Mild", "High", "Weak", "Yes" ); + data.Rows.Add( "D5", "Rain", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D6", "Rain", "Cool", "Normal", "Strong", "No" ); + data.Rows.Add( "D7", "Overcast", "Cool", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D8", "Sunny", "Mild", "High", "Weak", "No" ); + data.Rows.Add( "D9", "Sunny", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D10", "Rain", "Mild", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D11", "Sunny", "Mild", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D12", "Overcast", "Mild", "High", "Strong", "Yes" ); + data.Rows.Add( "D13", "Overcast", "Hot", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D14", "Rain", "Mild", "High", "Strong", "No" ); + + + Obs: The DataTable representation is not required, and instead the NaiveBayes could + also be trained directly on integer arrays containing the integer codewords. + + + In order to estimate a discrete Naive Bayes, we will first convert this problem to a more simpler + representation. Since all variables are categories, it does not matter if they are represented + as strings, or numbers, since both are just symbols for the event they represent. Since numbers + are more easily representable than text strings, we will convert the problem to use a discrete + alphabet through the use of a codebook. + + + A codebook effectively transforms any distinct possible value for a variable into an integer + symbol. For example, “Sunny” could as well be represented by the integer label 0, “Overcast” + by “1”, Rain by “2”, and the same goes by for the other variables. So: + + + // Create a new codification codebook to + // convert strings into integer symbols + Codification codebook = new Codification(data, + "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // Translate our training data into integer symbols using our codebook: + DataTable symbols = codebook.Apply(data); + int[][] inputs = symbols.ToIntArray("Outlook", "Temperature", "Humidity", "Wind"); + int[] outputs = symbols.ToIntArray("PlayTennis").GetColumn(0); + + + + Now that we already have our learning input/ouput pairs, we should specify our + Bayes model. We will be trying to build a model to predict the last column, entitled + “PlayTennis”. For this, we will be using the “Outlook”, “Temperature”, “Humidity” and + “Wind” as predictors (variables which will we will use for our decision). Since those + are categorical, we must specify, at the moment of creation of our Bayes model, the + number of each possible symbols for those variables. + + + + // Gather information about decision variables + int[] symbolCounts = + { + codebook["Outlook"].Symbols, // 3 possible values (Sunny, overcast, rain) + codebook["Temperature"].Symbols, // 3 possible values (Hot, mild, cool) + codebook["Humidity"].Symbols, // 2 possible values (High, normal) + codebook["Wind"].Symbols // 2 possible values (Weak, strong) + }; + + int classCount = codebook["PlayTennis"].Symbols; // 2 possible values (yes, no) + + // Create a new Naive Bayes classifiers for the two classes + NaiveBayes target = new NaiveBayes(classCount, symbolCounts); + + // Compute the Naive Bayes model + target.Estimate(inputs, outputs); + + + Now that we have created and estimated our classifier, we + can query the classifier for new input samples through the method. + + + // We will be computing the label for a sunny, cool, humid and windy day: + int[] instance = codebook.Translate("Sunny", "Cool", "High", "Strong"); + + // Now, we can feed this instance to our model + int output = model.Compute(instance, out logLikelihood); + + // Finally, the result can be translated back to one of the codewords using + string result = codebook.Translate("PlayTennis", output); // result is "No" + + + + + + + + In this second example, we will be creating a simple multi-class + classification problem using integer vectors and learning a discrete + Naive Bayes on those vectors. + + + // Let's say we have the following data to be classified + // into three possible classes. Those are the samples: + // + int[][] inputs = + { + // input output + new int[] { 0, 1, 1, 0 }, // 0 + new int[] { 0, 1, 0, 0 }, // 0 + new int[] { 0, 0, 1, 0 }, // 0 + new int[] { 0, 1, 1, 0 }, // 0 + new int[] { 0, 1, 0, 0 }, // 0 + new int[] { 1, 0, 0, 0 }, // 1 + new int[] { 1, 0, 0, 0 }, // 1 + new int[] { 1, 0, 0, 1 }, // 1 + new int[] { 0, 0, 0, 1 }, // 1 + new int[] { 0, 0, 0, 1 }, // 1 + new int[] { 1, 1, 1, 1 }, // 2 + new int[] { 1, 0, 1, 1 }, // 2 + new int[] { 1, 1, 0, 1 }, // 2 + new int[] { 0, 1, 1, 1 }, // 2 + new int[] { 1, 1, 1, 1 }, // 2 + }; + + int[] outputs = // those are the class labels + { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, + }; + + // Create a discrete naive Bayes model for 3 classes and 4 binary inputs + var bayes = new NaiveBayes(classes: 3, symbols: new int[] { 2, 2, 2, 2 }); + + // Teach the model. The error should be zero: + double error = bayes.Estimate(inputs, outputs); + + // Now, let's test the model output for the first input sample: + int answer = bayes.Compute(new int[] { 0, 1, 1, 0 }); // should be 1 + + + + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of symbols for each input variable. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The prior probabilities for each output class. + The number of symbols for each input variable. + + + + + Initializes the frequency tables of a Naïve Bayes Classifier. + + + The input data. + The corresponding output labels for the input data. + True to estimate class priors from the data, false otherwise. + + The amount of regularization to be used in the m-estimator. + Default is 1e-5. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The most likely class for the instance. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The log-likelihood for the instance. + The response probabilities for each class. + The most likely class for the instance. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Saves the Naïve Bayes model to a stream. + + + The stream to which the Naïve Bayes model is to be serialized. + + + + + Saves the Naïve Bayes model to a stream. + + + The path to the file to which the Naïve Bayes model is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a stream. + + + The stream from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Gets the number of possible output classes. + + + + + + Gets the number of inputs in the model. + + + + + + Gets the number of symbols for each input in the model. + + + + + + Gets the tables of log-probabilities for the frequency of + occurrence of each symbol for each class and input. + + + A double[,] array in with each row corresponds to a + class, each column corresponds to an input variable. Each + element of this double[,] array is a frequency table containing + the frequency of each symbol for the corresponding variable as + a double[] array. + + + + + Gets the prior beliefs for each class. + + + + + + K-Nearest Neighbor (k-NN) algorithm. + + + + For more detailed documentation, including examples and code snippets, + please take a look on the documentation + page. + + + + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + + The input data points. + The associated labels for the input points. + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + + The input data points. + The associated labels for the input points. + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + The input data points. + The associated labels for the input points. + The distance measure to use. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + The distance score for each possible class. + + The most likely label for the given point. + + + + + Gets the top points that are the closest + to a given reference point. + + + The query point whose neighbors will be found. + The label for each neighboring point. + + + An array containing the top points that are + at the closest possible distance to . + + + + + + Creates a new algorithm from an existing + . The tree must have been created using the input + points and the point's class labels as the associated node information. + + + The containing the input points and their integer labels. + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + The input data points. + The associated labels for the input points. + + A algorithm initialized from the tree. + + + + + Split-Set Validation. + + + + This is the non-generic version of the . For + greater flexibility, consider using . + + + + + + + + + + Split-Set Validation. + + + The type of the model being analyzed. + + + + + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + The output labels to be balanced between the sets. + + + + + Computes the split-set validation algorithm. + + + + + + Gets the group labels assigned to each of the data samples. + + + + + + Gets the desired proportion of cases in + the training set in comparison to the + testing set. + + + + + + Gets or sets a value indicating whether the prevalence of + an output label should be balanced between training and + testing sets. + + + + true if this instance is stratified; otherwise, false. + + + + + + Gets the indices of elements in the validation set. + + + + + + Gets the indices of elements in the training set. + + + + + + Get or sets the model fitting function. + + + + + + Gets or sets the performance estimation function. + + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + The output labels to be balanced between the sets. + + + + + Summary statistics for a Split-set validation trial. + + + + + + Create a new split-set statistics class. + + + The generated model. + The number of samples used to compute the statistic. + The performance statistic gathered during the run. + The variance of the performance statistic during the run. + + + + + Gets the model created with the + + + + + Gets the values acquired during the cross-validation. + Most often those will be the errors for each folding. + + + + + + Gets the variance for each value acquired during the cross-validation. + Most often those will be the error variance for each folding. + + + + + + Gets the number of samples used to compute the variance + of the values acquired during the validation. + + + + + + Gets the standard deviation of the performance statistic. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Summary statistics for a Split-set validation trial. + + + + + + Create a new split-set statistics class. + + + The generated model. + The number of samples used to compute the statistic. + The performance statistic gathered during the run. + The variance of the performance statistic during the run. + + + + + Create a new split-set statistics class. + + + The generated model. + The number of samples used to compute the statistic. + The performance statistic gathered during the run. + The variance of the performance statistic during the run. + + + + + Class for representing results acquired through a + split-set + validation analysis. + + + The type of the model being analyzed. + + + + + Initializes a new instance of the class. + + + The that is creating this result. + The training set statistics. + The testing set statistics. + + + + + Gets the + object used to generate this result. + + + + + + Gets the performance statistics for the training set. + + + + + + Gets the performance statistics for the validation set. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Fitting function delegate. + + + + + + Evaluating function delegate. + + + + + + Delegate for grid search fitting functions. + + + The type of the model to fit. + + The collection of parameters to be used in the fitting process. + The error (or any other performance measure) returned by the model. + The model fitted to the data using the given parameters. + + + + + Grid search procedure for automatic parameter tuning. + + + + Grid Search tries to find the best combination of parameters across + a range of possible values that produces the best fit model. If there + are two parameters, each with 10 possible values, Grid Search will try + an exhaustive evaluation of the model using every combination of points, + resulting in 100 model fits. + + + The type of the model to be tuned. + + + How to fit a Kernel Support Vector Machine using Grid Search. + + // Example binary data + double[][] inputs = + { + new double[] { -1, -1 }, + new double[] { -1, 1 }, + new double[] { 1, -1 }, + new double[] { 1, 1 } + }; + + int[] xor = // xor labels + { + -1, 1, 1, -1 + }; + + // Declare the parameters and ranges to be searched + GridSearchRange[] ranges = + { + new GridSearchRange("complexity", new double[] { 0.00000001, 5.20, 0.30, 0.50 } ), + new GridSearchRange("degree", new double[] { 1, 10, 2, 3, 4, 5 } ), + new GridSearchRange("constant", new double[] { 0, 1, 2 } ) + }; + + + // Instantiate a new Grid Search algorithm for Kernel Support Vector Machines + var gridsearch = new GridSearch<KernelSupportVectorMachine>(ranges); + + // Set the fitting function for the algorithm + gridsearch.Fitting = delegate(GridSearchParameterCollection parameters, out double error) + { + // The parameters to be tried will be passed as a function parameter. + int degree = (int)parameters["degree"].Value; + double constant = parameters["constant"].Value; + double complexity = parameters["complexity"].Value; + + // Use the parameters to build the SVM model + Polynomial kernel = new Polynomial(degree, constant); + KernelSupportVectorMachine ksvm = new KernelSupportVectorMachine(kernel, 2); + + // Create a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(ksvm, inputs, xor); + smo.Complexity = complexity; + + // Measure the model performance to return as an out parameter + error = smo.Run(); + + return ksvm; // Return the current model + }; + + + // Declare some out variables to pass to the grid search algorithm + GridSearchParameterCollection bestParameters; double minError; + + // Compute the grid search to find the best Support Vector Machine + KernelSupportVectorMachine bestModel = gridsearch.Compute(out bestParameters, out minError); + + + + + + + Constructs a new Grid search algorithm. + + + The range of parameters to search. + + + + + Searches for the best combination of parameters that results in the most accurate model. + + + The best combination of parameters found by the grid search. + The minimum error of the best model found by the grid search. + The best model found during the grid search. + + + + + Searches for the best combination of parameters that results in the most accurate model. + + + The results found during the grid search. + + + + + A function that fits a model using the given parameters. + + + + + + The range of parameters to consider during search. + + + + + + Contains results from the grid-search procedure. + + + The type of the model to be tuned. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets all combination of parameters tried. + + + + + + Gets all models created during the search. + + + + + + Gets the error for each of the created models. + + + + + + Gets the index of the best found model + in the collection. + + + + + + Gets the best model found. + + + + + + Gets the best parameter combination found. + + + + + + Gets the minimum error found. + + + + + + Gets the size of the grid used in the grid-search. + + + + + + k-Means clustering algorithm. + + + + + In statistics and machine learning, k-means clustering is a method + of cluster analysis which aims to partition n observations into k + clusters in which each observation belongs to the cluster with the + nearest mean. + + It is similar to the expectation-maximization algorithm for mixtures + of Gaussians in that they both attempt to find the centers of natural + clusters in the data as well as in the iterative refinement approach + employed by both algorithms. + + + The algorithm is composed of the following steps: + + + Place K points into the space represented by the objects that are + being clustered. These points represent initial group centroids. + + + Assign each object to the group that has the closest centroid. + + + When all objects have been assigned, recalculate the positions + of the K centroids. + + + Repeat Steps 2 and 3 until the centroids no longer move. This + produces a separation of the objects into groups from which the + metric to be minimized can be calculated. + + + + + This particular implementation uses the squared Euclidean distance + as a similarity measure in order to form clusters. + + + References: + + + Wikipedia, The Free Encyclopedia. K-means clustering. Available on: + http://en.wikipedia.org/wiki/K-means_clustering + + Matteo Matteucci. A Tutorial on Clustering Algorithms. Available on: + http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/kmeans.html + + + + How to perform clustering with K-Means. + + // Declare some observations + double[][] observations = + { + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + // Create a new K-Means algorithm with 3 clusters + KMeans kmeans = new KMeans(3); + + // Compute the algorithm, retrieving an integer array + // containing the labels for each of the observations + int[] labels = kmeans.Compute(observations); + + // As result, the first two observations should belong to the + // same cluster (thus having the same label). The same should + // happen to the next four observations and to the last three. + + // In order to classify new, unobserved instances, you can + // use the kmeans.Clusters.Nearest method, as shown below: + int c = kmeans.Clusters.Nearest(new double[] { 4, 1, 9) }); + + + + The following example demonstrates how to use the Mean Shift algorithm + for color clustering. It is the same code which can be found in the + color clustering sample application. + + + + int k = 5; + + // Load a test image (shown below) + Bitmap image = ... + + // Create converters + ImageToArray imageToArray = new ImageToArray(min: -1, max: +1); + ArrayToImage arrayToImage = new ArrayToImage(image.Width, image.Height, min: -1, max: +1); + + // Transform the image into an array of pixel values + double[][] pixels; imageToArray.Convert(image, out pixels); + + + // Create a K-Means algorithm using given k and a + // square Euclidean distance as distance metric. + KMeans kmeans = new KMeans(k, Distance.SquareEuclidean); + + // Compute the K-Means algorithm until the difference in + // cluster centroids between two iterations is below 0.05 + int[] idx = kmeans.Compute(pixels, 0.05); + + + // Replace every pixel with its corresponding centroid + pixels.ApplyInPlace((x, i) => kmeans.Clusters.Centroids[idx[i]]); + + // Retrieve the resulting image in a picture box + Bitmap result; arrayToImage.Convert(pixels, out result); + + + + The original image is shown below: + + + + + The resulting image will be: + + + + + + + + + + + + + Initializes a new instance of the K-Means algorithm + + + The number of clusters to divide the input data into. + + + + + Initializes a new instance of the KMeans algorithm + + + The number of clusters to divide the input data into. + The distance function to use. Default is to + use the distance. + + + + + Randomizes the clusters inside a dataset. + + + The data to randomize the algorithm. + + + + + Randomizes the clusters inside a dataset. + + + The data to randomize the algorithm. + True to use the k-means++ seeding algorithm. False otherwise. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + Pass true to compute additional information + when the algorithm finishes, such as cluster variances and proportions; false + otherwise. Default is true. + + + + + Performs the actual clustering, given a set of data points and + a convergence threshold. The remaining parameters must be set + before returning the method. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + Pass true to compute additional information + when the algorithm finishes, such as cluster variances and proportions; false + otherwise. Default is true. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + Pass true to compute additional information + when the algorithm finishes, such as cluster variances and proportions; false + otherwise. Default is true. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Determines if the algorithm has converged by comparing the + centroids between two consecutive iterations. + + + The previous centroids. + The new centroids. + A convergence threshold. + + Returns if all centroids had a percentage change + less than . Returns otherwise. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Gets the clusters found by K-means. + + + + + + Gets the number of clusters. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets whether covariance matrices for + the clusters should be computed at the end of + an iteration. Default is true. + + + + + + Gets or sets whether to use the k-means++ seeding + algorithm to improve the initial solution of the + clustering. Default is true. + + + + + + Gets or sets the maximum number of iterations to + be performed by the method. If set to zero, no + iteration limit will be imposed. Default is 0. + + + + + + Gets or sets the relative convergence threshold + for stopping the algorithm. Default is 1e-5. + + + + + + Gets the number of iterations performed in the + last call to this class' Compute methods. + + + + + + QLearning learning algorithm. + + + The class provides implementation of Q-Learning algorithm, known as + off-policy Temporal Difference control. + + + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + + Action estimates are randomized in the case of this constructor + is used. + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + Randomize action estimates or not. + + The randomize parameter specifies if initial action estimates should be randomized + with small values or not. Randomization of action values may be useful, when greedy exploration + policies are used. In this case randomization ensures that actions of the same type are not chosen always. + + + + + Get next action from the specified state. + + + Current state to get an action for. + + Returns the action for the state. + + The method returns an action according to current + exploration policy. + + + + + Update Q-function's value for the previous state-action pair. + + + Previous state. + Action, which leads from previous to the next state. + Reward value, received by taking specified action from previous state. + Next state. + + + + + Amount of possible states. + + + + + + Amount of possible actions. + + + + + + Exploration policy. + + + Policy, which is used to select actions. + + + + + Learning rate, [0, 1]. + + + The value determines the amount of updates Q-function receives + during learning. The greater the value, the more updates the function receives. + The lower the value, the less updates it receives. + + + + + Discount factor, [0, 1]. + + + Discount factor for the expected summary reward. The value serves as + multiplier for the expected reward. So if the value is set to 1, + then the expected summary reward is not discounted. If the value is getting + smaller, then smaller amount of the expected reward is used for actions' + estimates update. + + + + + Multipurpose RANSAC algorithm. + + + The model type to be trained by RANSAC. + + + + RANSAC is an abbreviation for "RANdom SAmple Consensus". It is an iterative + method to estimate parameters of a mathematical model from a set of observed + data which contains outliers. It is a non-deterministic algorithm in the sense + that it produces a reasonable result only with a certain probability, with this + probability increasing as more iterations are allowed. + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: http://www.csse.uwa.edu.au/~pk/research/matlabfns + + Wikipedia, The Free Encyclopedia. RANSAC. Available on: + http://en.wikipedia.org/wiki/RANSAC + + + + + + + + Constructs a new RANSAC algorithm. + + + + The minimum number of samples from the data + required by the fitting function to fit a model. + + + + + + Constructs a new RANSAC algorithm. + + + + The minimum number of samples from the data + required by the fitting function to fit a model. + + + The minimum distance between a data point and + the model used to decide whether the point is + an inlier or not. + + + + + + Constructs a new RANSAC algorithm. + + + + The minimum number of samples from the data + required by the fitting function to fit a model. + + + The minimum distance between a data point and + the model used to decide whether the point is + an inlier or not. + + + The probability of obtaining a random sample of + the input points that contains no outliers. + + + + + + Computes the model using the RANSAC algorithm. + + + The total number of points in the data set. + + + + + Computes the model using the RANSAC algorithm. + + + The total number of points in the data set. + The indexes of the outlier points in the data set. + + + + + Model fitting function. + + + + + + Degenerative set detection function. + + + + + + Distance function. + + + + + + Gets or sets the minimum distance between a data point and + the model used to decide whether the point is an inlier or not. + + + + + + Gets or sets the minimum number of samples from the data + required by the fitting function to fit a model. + + + + + + Maximum number of attempts to select a + non-degenerate data set. Default is 100. + + + + The default value is 100. + + + + + + Maximum number of iterations. Default is 1000. + + + + The default value is 1000. + + + + + + Gets or sets the probability of obtaining a random + sample of the input points that contains no outliers. + Default is 0.99. + + + + + + Robust line estimator with RANSAC. + + + + + + Creates a new RANSAC line estimator. + + + Inlier threshold. + Inlier probability. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Robust plane estimator with RANSAC. + + + + + + Creates a new RANSAC 3D plane estimator. + + + Inlier threshold. + Inlier probability. + + + + + Produces a robust estimation of the plane + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The plane passing through the points. + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Sarsa learning algorithm. + + + The class provides implementation of Sarse algorithm, known as + on-policy Temporal Difference control. + + + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + + Action estimates are randomized in the case of this constructor + is used. + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + Randomize action estimates or not. + + The randomize parameter specifies if initial action estimates should be randomized + with small values or not. Randomization of action values may be useful, when greedy exploration + policies are used. In this case randomization ensures that actions of the same type are not chosen always. + + + + + Get next action from the specified state. + + + Current state to get an action for. + + Returns the action for the state. + + The method returns an action according to current + exploration policy. + + + + + Update Q-function's value for the previous state-action pair. + + + Curren state. + Action, which lead from previous to the next state. + Reward value, received by taking specified action from previous state. + Next state. + Next action. + + Updates Q-function's value for the previous state-action pair in + the case if the next state is non terminal. + + + + + Update Q-function's value for the previous state-action pair. + + + Curren state. + Action, which lead from previous to the next state. + Reward value, received by taking specified action from previous state. + + Updates Q-function's value for the previous state-action pair in + the case if the next state is terminal. + + + + + Amount of possible states. + + + + + + Amount of possible actions. + + + + + + Exploration policy. + + + Policy, which is used to select actions. + + + + + Learning rate, [0, 1]. + + + The value determines the amount of updates Q-function receives + during learning. The greater the value, the more updates the function receives. + The lower the value, the less updates it receives. + + + + + Discount factor, [0, 1]. + + + Discount factor for the expected summary reward. The value serves as + multiplier for the expected reward. So if the value is set to 1, + then the expected summary reward is not discounted. If the value is getting + smaller, then smaller amount of the expected reward is used for actions' + estimates update. + + + + + List of k-dimensional tree nodes. + + + The type of the value being stored. + + + This class is used to store neighbor nodes when running one of the + search algorithms for k-dimensional trees. + + + + + + + + + Initializes a new instance of the + class that is empty. + + + + + + Initializes a new instance of the + class that is empty and has the specified capacity. + + + + + + Tree enumeration method delegate. + + + The data type stored in the tree. + + The k-d tree to be traversed. + + An enumerator traversing the tree. + + + + + Static class with tree traversal methods. + + + + + + Breadth-first tree traversal method. + + + + + + Pre-order tree traversal method. + + + + + + In-order tree traversal method. + + + + + + Post-order tree traversal method. + + + + + + K-d tree node-distance pair. + + + The type of the value being stored, if any. + + + + + Creates a new . + + + The node value. + The distance value. + + + + + Determines whether the specified + is equal to this instance. + + + The to compare + with this instance. + + + true if the specified is + equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Implements the equality operator. + + + + + + Implements the inequality operator. + + + + + + Implements the lesser than operator. + + + + + + Implements the greater than operator. + + + + + + Determines whether the specified + is equal to this instance. + + + The to compare + with this instance. + + + true if the specified is + equal to this instance; otherwise, false. + + + + + + Compares this instance to another node, returning an integer + indicating whether this instance has a distance that is less + than, equal to, or greater than the other node's distance. + + + + + + Compares this instance to another node, returning an integer + indicating whether this instance has a distance that is less + than, equal to, or greater than the other node's distance. + + + + + + Gets the node in this pair. + + + + + + Gets the distance of the node from the query point. + + + + + + K-dimensional tree. + + + The type of the value being stored. + + + + A k-d tree (short for k-dimensional tree) is a space-partitioning data structure + for organizing points in a k-dimensional space. k-d trees are a useful data structure + for several applications, such as searches involving a multidimensional search key + (e.g. range searches and nearest neighbor searches). k-d trees are a special case + of binary space partitioning trees. + + + The k-d tree is a binary tree in which every node is a k-dimensional point. Every non- + leaf node can be thought of as implicitly generating a splitting hyperplane that divides + the space into two parts, known as half-spaces. Points to the left of this hyperplane + represent the left subtree of that node and points right of the hyperplane are represented + by the right subtree. The hyperplane direction is chosen in the following way: every node + in the tree is associated with one of the k-dimensions, with the hyperplane perpendicular + to that dimension's axis. So, for example, if for a particular split the "x" axis is chosen, + all points in the subtree with a smaller "x" value than the node will appear in the left + subtree and all points with larger "x" value will be in the right subtree. In such a case, + the hyperplane would be set by the x-value of the point, and its normal would be the unit + x-axis. + + + References: + + + Wikipedia, The Free Encyclopedia. K-d tree. Available on: + http://en.wikipedia.org/wiki/K-d_tree + + Moore, Andrew W. "An intoductory tutorial on kd-trees." (1991). + Available at: http://www.autonlab.org/autonweb/14665/version/2/part/5/data/moore-tutorial.pdf + + + + + + // This is the same example found in Wikipedia page on + // k-d trees: http://en.wikipedia.org/wiki/K-d_tree + + // Suppose we have the following set of points: + + double[][] points = + { + new double[] { 2, 3 }, + new double[] { 5, 4 }, + new double[] { 9, 6 }, + new double[] { 4, 7 }, + new double[] { 8, 1 }, + new double[] { 7, 2 }, + }; + + + // To create a tree from a set of points, we use + KDTree<int> tree = KDTree.FromData<int>(points); + + // Now we can manually navigate the tree + KDTreeNode<int> node = tree.Root.Left.Right; + + // Or traverse it automatically + foreach (KDTreeNode<int> n in tree) + { + double[] location = n.Position; + Assert.AreEqual(2, location.Length); + } + + // Given a query point, we can also query for other + // points which are near this point within a radius + + double[] query = new double[] { 5, 3 }; + + // Locate all nearby points within an euclidean distance of 1.5 + // (answer should be be a single point located at position (5,4)) + KDTreeNodeCollection<int> result = tree.Nearest(query, radius: 1.5); + + // We can also use alternate distance functions + tree.Distance = Accord.Math.Distance.Manhattan; + + // And also query for a fixed number of neighbor points + // (answer should be the points at (5,4), (7,2), (2,3)) + KDTreeNodeCollection<int> neighbors = tree.Nearest(query, neighbors: 3); + + + ' This is the same example found in Wikipedia page on + ' k-d trees: http://en.wikipedia.org/wiki/K-d_tree + + ' Suppose we have the following set of points: + + Dim points = + { + New Double() { 2, 3 }, + New Double() { 5, 4 }, + New Double() { 9, 6 }, + New Double() { 4, 7 }, + New Double() { 8, 1 }, + New Double() { 7, 2 } + } + + ' To create a tree from a set of points, we use + Dim tree = KDTree.FromData(Of Integer)(points) + + ' Now we can manually navigate the tree + Dim node = tree.Root.Left.Right + + ' Or traverse it automatically + For Each n As KDTreeNode(Of Integer) In tree + Dim location = n.Position + Console.WriteLine(location.Length) + Next + + ' Given a query point, we can also query for other + ' points which are near this point within a radius + ' + Dim query = New Double() {5, 3} + + ' Locate all nearby points within an Euclidean distance of 1.5 + ' (answer should be a single point located at position (5,4)) + ' + Dim result = tree.Nearest(query, radius:=1.5) + + ' We can also use alternate distance functions + tree.Distance = Function(a, b) Accord.Math.Distance.Manhattan(a, b) + + ' And also query for a fixed number of neighbor points + ' (answer should be the points at (5,4), (7,2), (2,3)) + ' + Dim neighbors = tree.Nearest(query, neighbors:=3) + + + + + + + + + Creates a new . + + + The number of dimensions in the tree. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + The number of elements in the root node. + The number of leaves linked through the root node. + + + + + Inserts a value into the tree at the desired position. + + + A double-vector with the same number of elements as dimensions in the tree. + The value to be added. + + + + + Retrieves the nearest points to a given point within a given radius. + + + The queried point. + The search radius. + The maximum number of neighbors to retrieve. + + A list of neighbor points, ordered by distance. + + + + + Retrieves the nearest points to a given point within a given radius. + + + The queried point. + The search radius. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The number of neighbors to retrieve. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The distance from the + to its nearest neighbor found in the tree. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The number of neighbors to retrieve. + The maximum percentage of leaf nodes that + can be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The maximum percentage of leaf nodes that + can be visited before the search finishes with an approximate answer. + The distance between the query point and its nearest neighbor. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The maximum percentage of leaf nodes that + can be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The number of neighbors to retrieve. + The maximum number of leaf nodes that can + be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The maximum number of leaf nodes that can + be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Creates the root node for a new given + a set of data points and their respective stored values. + + + The data points to be inserted in the tree. + Return the number of leaves in the root subtree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + The root node for a new + contained the given . + + + + + Creates the root node for a new given + a set of data points and their respective stored values. + + + The data points to be inserted in the tree. + The values associated with each point. + Return the number of leaves in the root subtree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + The root node for a new + contained the given . + + + + + Radius search. + + + + + + k-nearest neighbors search. + + + + + + Removes all nodes from this tree. + + + + + + Copies the entire tree to a compatible one-dimensional , starting + at the specified index of the + target array. + + + The one-dimensional that is the destination of the + elements copied from tree. The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + + Returns an enumerator that iterates through the tree. + + + + An object + that can be used to iterate through the collection. + + + + + + Traverse the tree using a tree traversal + method. Can be iterated with a foreach loop. + + + The tree traversal method. Common methods are + available in the static class. + + An object which can be used to + traverse the tree using the chosen traversal method. + + + + + Returns an enumerator that iterates through the tree. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the root of the tree. + + + + + + Gets the number of dimensions expected + by the input points of this tree. + + + + + + Gets or set the distance function used to + measure distances amongst points on this tree + + + + + + Gets the number of elements contained in this + tree. This is also the number of tree nodes. + + + + + + Gets the number of leaves contained in this + tree. This can be used to calibrate approximate + nearest searchers. + + + + + + Convenience class for k-dimensional tree static methods. To + create a new KDTree, specify the generic parameter as in + . + + + + Please check the documentation page for + for examples, usage and actual remarks about kd-trees. + + + + + + + + Creates a new . + + + The number of dimensions in the tree. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + The number of elements in the root node. + The number of leaves linked through the root node. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + The number of elements in the root node. + The number of leaves linked through the root node. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The points to be added to the tree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + The corresponding values at each data point. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The points to be added to the tree. + The distance function to use. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + The corresponding values at each data point. + The distance function to use. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + The distance function to use. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + K-dimensional tree node. + + + + This class provides a shorthand notation for + the actual type. + + + + + + K-dimensional tree node. + + + The type of the value being stored. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets or sets the position of + the node in spatial coordinates. + + + + + + Gets or sets the dimension index of the split. This value is a + index of the vector and as such should + be higher than zero and less than the number of elements in . + + + + + + Gets or sets the left subtree of this node. + + + + + + Gets or sets the right subtree of this node. + + + + + + Gets or sets the value being stored at this node. + + + + + Gets whether this node is a leaf (has no children). + + + + + + Collection of k-dimensional tree nodes. + + + The type of the value being stored. + + + This class is used to store neighbor nodes when running one of the + search algorithms for k-dimensional trees. + + + + + + + + + Creates a new with a maximum size. + + + The maximum number of elements allowed in this collection. + + + + + Attempts to add a value to the collection. If the list is full + and the value is more distant than the farthest node in the + collection, the value will not be added. + + + The node to be added. + The node distance. + + Returns true if the node has been added; false otherwise. + + + + + Attempts to add a value to the collection. If the list is full + and the value is more distant than the farthest node in the + collection, the value will not be added. + + + The node to be added. + The node distance. + + Returns true if the node has been added; false otherwise. + + + + + Adds the specified item to the collection. + + + The distance from the node to the query point. + The item to be added. + + + + + Removes all elements from this collection. + + + + + + Returns an enumerator that iterates through this collection. + + + + An object + that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through this collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Determines whether this instance contains the specified item. + + + The object to locate in the collection. + The value can be null for reference types. + + + true if the item is found in the collection; otherwise, false. + + + + + + Copies the entire collection to a compatible one-dimensional , starting + at the specified index of the target + array. + + + The one-dimensional that is the destination of the + elements copied from tree. The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + + Adds the specified item to this collection. + + + The item. + + + + + Not supported. + + + + + + Removes the farthest tree node from this collection. + + + + + + Removes the nearest tree node from this collection. + + + + + + Gets or sets the maximum number of elements on this + collection, if specified. A value of zero indicates + this instance has no upper limit of elements. + + + + + + Gets the minimum distance between a node + in this collection and the query point. + + + + + + Gets the maximum distance between a node + in this collection and the query point. + + + + + + Gets the farthest node in the collection (with greatest distance). + + + + + + Gets the nearest node in the collection (with smallest distance). + + + + + + Gets the + at the specified index. Note: this method will iterate over the entire collection + until the given position is found. + + + + + + Gets the number of elements in this collection. + + + + + + Gets a value indicating whether this instance is read only. + For this collection, always returns false. + + + + true if this instance is read only; otherwise, false. + + + + + + Tree enumeration method delegate. + + + An enumerator traversing the tree. + + + + + Common traversal methods for n-ary trees. + + + + + + Breadth-first traversal method. + + + + + + Depth-first traversal method. + + + + + + Post-order tree traversal method. + + + + Adapted from John Cowan (1998) recommendation. + + + + + + Contains classes related to Support Vector Machines (SVMs). + Contains linear machines, + kernel machines, multi-class machines, SVM-DAGs + (Directed Acyclic Graphs), multi-label classification + and also offers support for the probabilistic output calibration + of SVM outputs. + + + + + This namespace contains both standard s and the + kernel extension given by s. For multiple + classes or categories, the framework offers s + and s. Multi-class machines can be used for + cases where a single class should be picked up from a list of several class labels, and + the multi-label machine for cases where multiple class labels might be detected for a + single input vector. The multi-class machines also support two types of classification: + the faster decision based on Decision Directed Acyclic Graphs, and the more traditional + based on a Voting scheme. + + + Learning can be achieved using the standard + (SMO) algorithm. However, the framework can also learn Least Squares SVMs (LS-SVMs) using , and even calibrate SVMs to produce probabilistic outputs + using . A + huge variety of kernels functions is available in the statistics namespace, and + new kernels can be created easily using the interface. + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + Base class for learning algorithms. + + + + + + Initializes a new instance of the class. + + + The machine to be learned. + The input data. + The corresponding output data. + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Computes the error rate for a given set of input and outputs. + + + + + + Estimates the complexity parameter C + for a given kernel and a given data set by summing every element + on the diagonal of the kernel matrix and using an heuristic based + on it. + + + The kernel function. + The input samples. + + A suitable value for C. + + + + + Estimates the complexity parameter C + for the linear kernel and a given data set by summing every element + on the diagonal of the kernel matrix and using an heuristic based + on it. + + + The input samples. + + A suitable value for C. + + + + + Estimates the complexity parameter C + for a given kernel and an unbalanced data set by summing every element + on the diagonal of the kernel matrix and using an heuristic based on it. + + + The kernel function. + The input samples. + The output samples. + + A suitable value for positive C and negative C, respectively. + + + + + Complexity (cost) parameter C. Increasing the value of C forces the creation + of a more accurate model that may not generalize well. If this value is not + set and is set to true, the framework + will automatically guess a value for C. If this value is manually set to + something else, then will be automatically + disabled and the given value will be used instead. + + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + If this value is not set and is set to + true, the framework will automatically guess a suitable value for C by + calling . If this value + is manually set to something else, then the class will respect the new value + and automatically disable . + + + + + + Gets or sets the individual weight of each sample in the training set. If set + to null, all samples will be assumed equal weight. Default is null. + + + + + + Gets or sets the positive class weight. This should be a + value higher than 0 indicating how much of the + parameter C should be applied to instances carrying the positive label. + + + + + + Gets or sets the negative class weight. This should be a + value higher than 0 indicating how much of the + parameter C should be applied to instances carrying the negative label. + + + + + + Gets or sets the weight ratio between positive and negative class + weights. This ratio controls how much of the + parameter C should be applied to the positive class. + + + + + A weight ratio lesser than one, such as 1/10 (0.1) means 10% of C will + be applied to the positive class, while 100% of C will be applied to the + negative class. + + A weight ratio greater than one, such as 10/1 (10) means that 100% of C will + be applied to the positive class, while 10% of C will be applied to the + negative class. + + + + + + Gets or sets a value indicating whether the Complexity parameter C + should be computed automatically by employing an heuristic rule. + Default is false. + + + + true if complexity should be computed automatically; otherwise, false. + + + + + + Gets or sets a value indicating whether the weight ratio to be used between + values for negative and positive instances should + be computed automatically from the data proportions. Default is false. + + + + true if the weighting coefficient should be computed + automatically from the data; otherwise, false. + + + + + + Gets whether the machine to be learned + has a kernel. + + + + + + Gets the machine's function. + + + + + + Gets the training input data set. + + + + + + Gets the training output labels set. + + + + + + Gets the machine to be taught. + + + + + + Base class for regression learning algorithms. + + + + + + Initializes a new instance of the class. + + + The machine to be learned. + The input data. + The corresponding output data. + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Computes the summed square error for a given set of input and outputs. + + + + + + Complexity (cost) parameter C. Increasing the value of C forces the creation + of a more accurate model that may not generalize well. Default value is 1. + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + + + + Insensitivity zone ε. Increasing the value of ε can result in fewer + support vectors in the created model. Default value is 1e-3. + + + + Parameter ε controls the width of the ε-insensitive zone, used to fit the training + data. The value of ε can affect the number of support vectors used to construct the + regression function. The bigger ε, the fewer support vectors are selected. On the + other hand, bigger ε-values results in more flat estimates. + + + + + + Gets or sets the individual weight of each sample in the training set. If set + to null, all samples will be assumed equal weight. Default is null. + + + + + + Gets or sets a value indicating whether the Complexity parameter C + should be computed automatically by employing an heuristic rule. + Default is false. + + + + true if complexity should be computed automatically; otherwise, false. + + + + + + Gets whether the machine to be learned + has a kernel. + + + + + + Gets the machine's function. + + + + + + Gets the training input data set. + + + + + + Gets the training output labels set. + + + + + + Gets the machine to be taught. + + + + + + L1-regularized L2-loss support vector + Support Vector Machine learning (-s 5). + + + + + This class implements a learning algorithm + specifically crafted for linear machines only. It provides a L1-regularized, + L2-loss coordinate descent learning algorithm for optimizing the primal form of + learning. The code has been based on liblinear's method solve_l1r_l2_svc + method, whose original description is provided below. + + + + Liblinear's solver -s 5: L1R_L2LOSS_svc. A coordinate descent + algorithm for L2-loss SVM problems in the primal. + + + + min_w \sum |wj| + C \sum max(0, 1-yi w^T xi)^2, + + + + Given: x, y, Cp, Cn and eps as the stopping tolerance + + + See Yuan et al. (2010) and appendix of LIBLINEAR paper, Fan et al. (2008) + + + + + + + + + + Common interface for Support Machine Vector learning algorithms. + + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. + + + + The misclassification error rate of the resulting support + vector machine if is true, + returns zero otherwise. + + + + + + Common interface for Support Machine Vector learning + algorithms which support thread cancellation. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The misclassification error rate of the resulting support + vector machine if is true, + returns zero otherwise. + + + + + + Constructs a new coordinate descent algorithm for L1-loss and L2-loss SVM dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + Least Squares SVM (LS-SVM) learning algorithm. + + + + + References: + + + + Suykens, J. A. K., et al. "Least squares support vector machine classifiers: a large scale + algorithm." European Conference on Circuit Theory and Design, ECCTD. Vol. 99. 1999. Available on: + http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.43.6438 + + + + + + + + + + + + + + + Constructs a new Least Squares SVM (LS-SVM) learning algorithm. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the LS-SVM algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the LS-SVM algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Computes the error rate for a given set of input and outputs. + + + + + + Complexity (cost) parameter C. Increasing the value of C forces + the creation of a more accurate model that may not generalize well. + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + + + + Convergence tolerance. Default value is 1e-6. + + + + The criterion for completing the model training process. The default is 1e-6. + + + + + + Gets or sets the cache size to partially + stored the kernel matrix. Default is the + same number of input vectors. + + + + + + Different categories of loss functions that can be used to learn + support vector machines. + + + + + + Hinge-loss function. + + + + + + Squared hinge-loss function. + + + + + + L2-regularized, L1 or L2-loss dual formulation + Support Vector Machine learning (-s 1 and -s 3). + + + + + This class implements a learning algorithm + specifically crafted for linear machines only. It provides a L2-regularized, L1 + or L2-loss coordinate descent learning algorithm for optimizing the dual form of + learning. The code has been based on liblinear's method solve_l2r_l1l2_svc + method, whose original description is provided below. + + + + Liblinear's solver -s 1: L2R_L2LOSS_SVC_DUAL and -s 3: + L2R_L1LOSS_SVC_DUAL. A coordinate descent algorithm for L1-loss and + L2-loss SVM problems in the dual. + + + + min_\alpha 0.5(\alpha^T (Q + D)\alpha) - e^T \alpha, + s.t. 0 <= \alpha_i <= upper_bound_i, + + + + where Qij = yi yj xi^T xj and + D is a diagonal matrix + + + In L1-SVM case: + + upper_bound_i = Cp if y_i = 1 + upper_bound_i = Cn if y_i = -1 + D_ii = 0 + + + In L2-SVM case: + + upper_bound_i = INF + D_ii = 1/(2*Cp) if y_i = 1 + D_ii = 1/(2*Cn) if y_i = -1 + + + + Given: x, y, Cp, Cn, and eps as the stopping tolerance + + + See Algorithm 3 of Hsieh et al., ICML 2008. + + + + + + + + + + Constructs a new coordinate descent algorithm for L1-loss and L2-loss SVM dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the cost function that + should be optimized. Default is + . + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + L1-regularized logistic regression (probabilistic SVM) + learning algorithm (-s 6). + + + + + This class implements a learning algorithm + specifically crafted for probabilistic linear machines only. It provides a L1- + regularized coordinate descent learning algorithm for optimizing the learning + problem. The code has been based on liblinear's method solve_l1r_lr + method, whose original description is provided below. + + + + Liblinear's solver -s 6: L1R_LR. + A coordinate descent algorithm for L1-regularized + logistic regression (probabilistic svm) problems. + + + + min_w \sum |wj| + C \sum log(1+exp(-yi w^T xi)), + + + + Given: x, y, Cp, Cn, and eps as the stopping tolerance + + + See Yuan et al. (2011) and appendix of LIBLINEAR paper, Fan et al. (2008) + + + + + + + + + Constructs a new Newton method algorithm for L1-regularized + logistic regression (probabilistic linear vector machine). + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Gets or sets the maximum number of line searches + that can be performed per iteration. Default is 20. + + + + + + Gets or sets the maximum number of inner iterations that can + be performed by the inner solver algorithm. Default is 100. + + + + + + Convergence tolerance. Default value is 0.01. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + L2-regularized logistic regression (probabilistic support + vector machine) learning algorithm in the dual form (-s 7). + + + + + This class implements a learning algorithm + specifically crafted for probabilistic linear machines only. It provides a L2- + regularized coordinate descent learning algorithm for optimizing the dual form + of the learning problem. The code has been based on liblinear's method + solve_l2r_lr_dual method, whose original description is provided below. + + + + Liblinear's solver -s 7: L2R_LR_DUAL. A coordinate descent + algorithm for the dual of L2-regularized logistic regression problems. + + + + min_\alpha 0.5(\alpha^T Q \alpha) + \sum \alpha_i log (\alpha_i) + + (upper_bound_i - \alpha_i) log (upper_bound_i - \alpha_i), + + s.t. 0 <= \alpha_i <= upper_bound_i, + + + + where Qij = yi yj xi^T xj and + + + upper_bound_i = Cp if y_i = 1 + upper_bound_i = Cn if y_i = -1 + + + + Given: x, y, Cp, Cn, and eps as the stopping tolerance + + + See Algorithm 5 of Yu et al., MLJ 2010. + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized + logistic regression (probabilistic linear SVMs) dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Gets or sets the maximum number of inner iterations that can + be performed by the inner solver algorithm. Default is 100. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + L2-regularized L2-loss logistic regression (probabilistic + support vector machine) learning algorithm in the primal. + + + + + This class implements a L2-regularized L2-loss logistic regression (probabilistic + support vector machine) learning algorithm that operates in the primal form of the + optimization problem. This method has been based on liblinear's l2r_lr_fun + problem specification, optimized using a + Trust-region Newton method. + + + + Liblinear's solver -s 0: L2R_LR. A trust region newton + algorithm for the primal of L2-regularized, L2-loss logistic regression. + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized logistic + regression (probabilistic linear SVMs) primal problems (-s 0). + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Convergence tolerance. Default value is 0.01. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + L2-regularized L2-loss linear support vector classification (primal). + + + + + This class implements a L2-regularized L2-loss support vector machine + learning algorithm that operates in the primal form of the optimization + problem. This method has been based on liblinear's l2r_l2_svc_fun + problem specification, optimized using a + Trust-region Newton method. This method might be faster than the often + preferred . + + + Liblinear's solver -s 2: L2R_L2LOSS_SVC. A trust region newton + algorithm for the primal of L2-regularized, L2-loss linear support vector + classification. + + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized + Support Vector Classification problems in the primal form (-s 2). + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + One-against-all Multi-label Support Vector Machine Learning Algorithm + + + + + This class can be used to train Kernel Support Vector Machines with + any algorithm using a one-against-all strategy. The underlying + training algorithm can be configured by defining the + property. + + + One example of learning algorithm that can be used with this class is the + Sequential Minimal Optimization + (SMO) algorithm. + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Outputs for each of the inputs + int[][] outputs = + { + new[] { 0, 1, 0 } + new[] { 0, 0, 1 } + new[] { 1, 1, 0 } + } + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MultilabelSupportVectorMachine(1, kernel, 4); + + // Create the Multi-label learning algorithm for the machine + var teacher = new MultilabelSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); + + + + + + + Constructs a new Multi-label Support Vector Learning algorithm. + + + The input learning vectors for the machine learning algorithm. + The to be trained. + The output labels associated with each of the input vectors. The + class labels should be between 0 and the + number of classes in the multiclass machine. In a multi-label SVM, multiple classes + can be associated with a single input vector. + + + + + Constructs a new Multi-label Support Vector Learning algorithm. + + + The input learning vectors for the machine learning algorithm. + The to be trained. + The output labels associated with each of the input vectors. The + class labels should be between 0 and the + number of classes in the multiclass machine. In a multi-label SVM, multiple classes + can be associated with a single input vector. + + + + + Runs the one-against-one learning algorithm. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Compute the error ratio. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Occurs when the learning of a subproblem has started. + + + + + + Occurs when the learning of a subproblem has finished. + + + + + + Gets or sets the configuration function for the learning algorithm. + + + + The configuration function should return a properly configured ISupportVectorMachineLearning + algorithm using the given support vector machine and the input and output data. + + + + + + Coordinate descent algorithm for the L1 or L2-loss linear Support + Vector Regression (epsilon-SVR) learning problem in the dual form + (-s 12 and -s 13). + + + + + This class implements a learning algorithm + specifically crafted for linear machines only. It provides a L2-regularized, L1 + or L2-loss coordinate descent learning algorithm for optimizing the dual form of + learning. The code has been based on liblinear's method solve_l2r_l1l2_svc + method, whose original description is provided below. + + + + Liblinear's solver -s 12: L2R_L2LOSS_SVR_DUAL and -s 13: + L2R_L1LOSS_SVR_DUAL. A coordinate descent algorithm for L1-loss and + L2-loss linear epsilon-vector regression (epsilon-SVR). + + + + min_\beta 0.5\beta^T (Q + diag(lambda)) \beta - p \sum_{i=1}^l|\beta_i| + \sum_{i=1}^l yi\beta_i, + s.t. -upper_bound_i <= \beta_i <= upper_bound_i, + + + + where Qij = yi yj xi^T xj and + D is a diagonal matrix + + + In L1-SVM case: + + upper_bound_i = C + lambda_i = 0 + + + In L2-SVM case: + + upper_bound_i = INF + lambda_i = 1/(2*C) + + + + Given: x, y, p, C and eps as the stopping tolerance + + + See Algorithm 4 of Ho and Lin, 2012. + + + + + + + + + Constructs a new coordinate descent algorithm for L1-loss and L2-loss SVM dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the cost function that + should be optimized. Default is + . + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + L2-regularized L2-loss linear support vector regression + (SVR) learning algorithm in the primal formulation (-s 11). + + + + + This class implements a L2-regularized L2-loss support vector regression (SVR) + learning algorithm that operates in the primal form of the optimization problem. + This method has been based on liblinear's l2r_l2_svr_fun problem specification, + optimized using a Trust-region Newton method. + + + + Liblinear's solver -s 11: L2R_L2LOSS_SVR. A trust region newton algorithm + for the primal of L2-regularized, L2-loss linear epsilon-vector regression (epsilon-SVR). + + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized + support vector regression (SVR-SVMs) primal problems. + + + A support vector machine. + The input data points as row vectors. + The output value for each input point. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Convergence tolerance. Default value is 0.01. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Exact support vector reduction through + linear dependency elimination. + + + + + + Creates a new algorithm. + + + The machine to be reduced. + + + + + Runs the learning algorithm. + + + True to compute error after the training + process completes, false otherwise. + + + + + Runs the learning algorithm. + + + + + + Computes the error rate for a given set of input and outputs. + + + + + + One-against-all Multi-label Kernel Support Vector Machine Classifier. + + + + + The Support Vector Machine is by nature a binary classifier. Multiple label + problems are problems in which an input sample is allowed to belong to one + or more classes. A way to implement multi-label classes in support vector + machines is to build a one-against-all decision scheme where multiple SVMs + are trained to detect each of the available classes. + + Currently this class supports only Kernel machines as the underlying classifiers. + If a Linear Support Vector Machine is needed, specify a Linear kernel in the + constructor at the moment of creation. + + + References: + + + + http://courses.media.mit.edu/2006fall/mas622j/Projects/aisen-project/index.html + + + http://nlp.stanford.edu/IR-book/html/htmledition/multiclass-svms-1.html + + + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Outputs for each of the inputs + int[][] outputs = + { + new[] { -1, 1, -1 }, + new[] { -1, -1, 1 }, + new[] { 1, 1, -1 }, + new[] { -1, -1, -1 }, + }; + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MultilabelSupportVectorMachine(1, kernel, 3); + + // Create the Multi-label learning algorithm for the machine + var teacher = new MultilabelSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); + + + + + + + + + + + + + Common interface for Support Vector Machines + + + + + + + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + + The output for the given input. + + The decision label for the given input. + + + + + Constructs a new Multi-label Kernel Support Vector Machine + + + The chosen kernel for the machine. + The number of inputs for the machine. + The number of classes in the classification problem. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Constructs a new Multi-label Kernel Support Vector Machine + + + + The machines to be used for each class. + + + + + + Computes the given input to produce the corresponding outputs. + + + An input vector. + The model response for each class. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding outputs. + + + An input vector. + + The decision label for the given input. + + + + + Compute SVM output with support vector sharing. + + + + + + Resets the cache and machine statistics + so they can be recomputed on next evaluation. + + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Saves the machine to a file. + + + The path to the file to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The output for the given input. + + The decision label for the given input. + + + + + Returns an enumerator that iterates through all machines in the classifier. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through all machines in the classifier. + + + + An object that can be used to iterate through the collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + Gets the total kernel evaluations performed + in the last call to any of the + functions in the current thread. + + + The number of total kernel evaluations. + + + + + Gets the classifier for class . + + + + + + Gets the total number of support vectors + in the entire multi-label machine. + + + + + + Gets the number of unique support + vectors in the multi-label machine. + + + + + + Gets the number of shared support + vectors in the multi-label machine. + + + + + + Gets the number of classes. + + + + + + Gets the number of inputs of the machines. + + + + + + Gets a value indicating whether this machine produces probabilistic outputs. + + + + true if this machine produces probabilistic outputs; otherwise, false. + + + + + + Gets the subproblems classifiers. + + + + + + Gets the selection strategy to be used in SMO. + + + + + + Uses the sequential selection strategy as + suggested by Keerthi et al's algorithm 1. + + + + + + Always select the worst violation pair + to be optimized first, as suggested in + Keerthi et al's algorithm 2. + + + + + + Sequential Minimal Optimization (SMO) Algorithm + + + + + The SMO algorithm is an algorithm for solving large quadratic programming (QP) + optimization problems, widely used for the training of support vector machines. + First developed by John C. Platt in 1998, SMO breaks up large QP problems into + a series of smallest possible QP problems, which are then solved analytically. + + This class follows the original algorithm by Platt with additional modifications + by Keerthi et al. + + + This class can also be used in combination with + or to learn s + using the one-vs-one or one-vs-all multi-class decision strategies, respectively. + + + References: + + + + Wikipedia, The Free Encyclopedia. Sequential Minimal Optimization. Available on: + http://en.wikipedia.org/wiki/Sequential_Minimal_Optimization + + + John C. Platt, Sequential Minimal Optimization: A Fast Algorithm for Training Support + Vector Machines. 1998. Available on: http://research.microsoft.com/en-us/um/people/jplatt/smoTR.pdf + + + S. S. Keerthi et al. Improvements to Platt's SMO Algorithm for SVM Classifier Design. + Technical Report CD-99-14. Available on: http://www.cs.iastate.edu/~honavar/keerthi-svm.pdf + + + J. P. Lewis. A Short SVM (Support Vector Machine) Tutorial. Available on: + http://www.idiom.com/~zilla/Work/Notes/svmtutorial.pdf + + + + + + // Example XOR problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 xor 0: 1 (label +1) + new double[] { 0, 1 }, // 0 xor 1: 0 (label -1) + new double[] { 1, 0 }, // 1 xor 0: 0 (label -1) + new double[] { 1, 1 } // 1 xor 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + 1, -1, -1, 1 + }; + + // Create a Kernel Support Vector Machine for the given inputs + KernelSupportVectorMachine svm = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(svm, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Compute the decision output for one of the input vectors + int decision = System.Math.Sign(svm.Compute(inputs[0])); // +1 + + + + + + + + + + + + + Constructs a new Sequential Minimal Optimization (SMO) algorithm. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + Chooses which multipliers to optimize using heuristics. + + + + + + Analytically solves the optimization problem for two Lagrange multipliers. + + + + + + Computes the SVM output for a given point. + + + + + + Epsilon for round-off errors. Default value is 1e-12. + + + + + + Convergence tolerance. Default value is 1e-2. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets the pair selection + strategy to be used during optimization. + + + + + + Gets or sets the cache size to partially stored the kernel + matrix. Default is the same number of input vectors. If set + to zero, the cache will be disabled and all operations will + be computed as needed. + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Gets or sets whether to produce compact models. Compact + formulation is currently limited to linear models. + + + + + + Gets the indices of the active examples (examples which have + the corresponding Lagrange multiplier different than zero). + + + + + + Gets the indices of the non-bounded examples (examples which + have the corresponding Lagrange multipliers between 0 and C). + + + + + + Gets the indices of the examples at the boundary (examples + which have the corresponding Lagrange multipliers equal to C). + + + + + + Sparse Kernel Support Vector Machine (kSVM) + + + + The original optimal hyperplane algorithm (SVM) proposed by Vladimir Vapnik in 1963 was a + linear classifier. However, in 1992, Bernhard Boser, Isabelle Guyon and Vapnik suggested + a way to create non-linear classifiers by applying the kernel trick (originally proposed + by Aizerman et al.) to maximum-margin hyperplanes. The resulting algorithm is formally + similar, except that every dot product is replaced by a non-linear kernel function. + + This allows the algorithm to fit the maximum-margin hyperplane in a transformed feature space. + The transformation may be non-linear and the transformed space high dimensional; thus though + the classifier is a hyperplane in the high-dimensional feature space, it may be non-linear in + the original input space. + + + The machines are also able to learn sequence classification problems in which the input vectors + can have arbitrary length. For an example on how to do that, please see the documentation page + for the DynamicTimeWarping kernel. + + + References: + + + http://en.wikipedia.org/wiki/Support_vector_machine + + http://www.kernel-machines.org/ + + + + + + // Example XOR problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 xor 0: 1 (label +1) + new double[] { 0, 1 }, // 0 xor 1: 0 (label -1) + new double[] { 1, 0 }, // 1 xor 0: 0 (label -1) + new double[] { 1, 1 } // 1 xor 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + // 1, 0, 0, 1 + 1, -1, -1, 1 + }; + + // Create a Kernel Support Vector Machine for the given inputs + KernelSupportVectorMachine machine = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(machine, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Compute the decision output for one of the input vectors + int decision = System.Math.Sign(machine.Compute(inputs[0])); + + + + + + + + + + + + + + Linear Support Vector Machine (SVM) + + + + + Support vector machines (SVMs) are a set of related supervised learning methods + used for classification and regression. In simple words, given a set of training + examples, each marked as belonging to one of two categories, a SVM training algorithm + builds a model that predicts whether a new example falls into one category or the + other. + + Intuitively, an SVM model is a representation of the examples as points in space, + mapped so that the examples of the separate categories are divided by a clear gap + that is as wide as possible. New examples are then mapped into that same space and + predicted to belong to a category based on which side of the gap they fall on. + + + For the non-linear generalization of the Support Vector Machine using arbitrary + kernel functions, please see the . + + + + References: + + + http://en.wikipedia.org/wiki/Support_vector_machine + + + + + + // Example AND problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 and 0: 0 (label -1) + new double[] { 0, 1 }, // 0 and 1: 0 (label -1) + new double[] { 1, 0 }, // 1 and 0: 0 (label -1) + new double[] { 1, 1 } // 1 and 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + // 0, 0, 0, 1 + -1, -1, -1, 1 + }; + + // Create a Support Vector Machine for the given inputs + SupportVectorMachine machine = new SupportVectorMachine(inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(machine, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Compute the decision output for one of the input vectors + int decision = System.Math.Sign(machine.Compute(inputs[0])); + + + + + + + + + + + + + Creates a new Support Vector Machine + + + The number of inputs for the machine. + + + + + Computes the given input to produce the corresponding output. + + + + For a binary decision problem, the decision for the negative + or positive class is typically computed by taking the sign of + the machine's output. + + + An input vector. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + + For a binary decision problem, the decision for the negative + or positive class is typically computed by taking the sign of + the machine's output. + + + An input vector. + + The output for the given input. In a typical classification + problem, the sign of this value should be considered as the class label. + + + + + Creates a new that is + completely equivalent to a . + + + The to be converted. + + + A whose linear weights are + equivalent to the given 's + linear + coefficients, properly configured with a . + + + + + + Creates a new linear + with the given set of linear . + + + The machine's linear coefficients. + + + A whose linear coefficients + are defined by the given vector. + + + + + + Converts a -kernel + machine into an array of linear coefficients. The first position + in the array is the value. + + + + An array of linear coefficients representing this machine. + + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Saves the machine to a stream. + + + The path to the file to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Gets or sets the link + function used by this machine, if any. + + + The link function used to transform machine outputs. + + + + + Gets a value indicating whether this machine produces probabilistic outputs. + + + + true if this machine produces probabilistic outputs; otherwise, false. + + + + + + Gets the number of inputs accepted by this machine. + + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Gets or sets the collection of support vectors used by this machine. + + + + + + Gets whether this machine is in compact mode. Compact + machines do not need to keep storing their support vectors. + + + + + + Gets or sets the collection of weights used by this machine. + + + + + + Gets or sets the threshold (bias) term for this machine. + + + + + + Creates a new Kernel Support Vector Machine. + + + The chosen kernel for the machine. + The number of inputs for the machine. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Computes the given input to produce the corresponding output. + + + + For a binary decision problem, the decision for the negative + or positive class is typically computed by taking the sign of + the machine's output. + + + An input vector. + The output of the machine. If this is a + probabilistic + machine, the output is the probability of the positive + class. If this is a standard machine, the output is the distance + to the decision hyperplane in feature space. + + The decision label for the given input. + + + + + Creates a new that is + completely equivalent to a . + + + The to be converted. + + + A whose linear weights + are equivalent to the given 's + linear + coefficients, properly configured with a . + + + + + + Creates a new linear + with the given set of linear . + + + The machine's linear coefficients. + + + A whose linear coefficients + are defined by the given vector. + + + + + + Converts a -kernel machine into an array of + linear coefficients. The first position in the array is the + value. If this + machine is not linear, an exception will be thrown. + + + + An array of linear coefficients representing this machine. + + + + Thrown if the kernel function is not . + + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Gets or sets the kernel used by this machine. + + + + + + Decision strategies for + Multi-class Support Vector Machines. + + + + + + Max-voting method (also known as 1vs1 decision). + + + + + + Elimination method (also known as DAG decision). + + + + + + One-against-one Multi-class Kernel Support Vector Machine Classifier. + + + + + The Support Vector Machine is by nature a binary classifier. One of the ways + to extend the original SVM algorithm to multiple classes is to build a one- + against-one scheme where multiple SVMs specialize to recognize each of the + available classes. By using a competition scheme, the original multi-class + classification problem is then reduced to n*(n/2) smaller binary problems. + + Currently this class supports only Kernel machines as the underlying classifiers. + If a Linear Support Vector Machine is needed, specify a Linear kernel in the + constructor at the moment of creation. + + + References: + + + + http://courses.media.mit.edu/2006fall/mas622j/Projects/aisen-project/index.html + + + http://nlp.stanford.edu/IR-book/html/htmledition/multiclass-svms-1.html + + + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(1, kernel, 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute(new double[] { 3 }); // result should be 3 + + + + The next example is a simple 3 classes classification problem. + It shows how to use a different kernel function, such as the + polynomial kernel of degree 2. + + + // Sample input data + double[][] inputs = + { + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { 10, 82, 4 }, + new double[] { 10, 15, 4 }, + new double[] { 0, 0, 1 }, + new double[] { 0, 0, 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new polynomial kernel + IKernel kernel = new Polynomial(2); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(inputs: 3, kernel: kernel, classes: 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute( new double[] { -1, 3, 2 }); + + + + + + + + + + + + + Constructs a new Multi-class Kernel Support Vector Machine + + + The number of inputs for the machine. If sequences have + varying length, pass zero to this parameter and pass a suitable sequence + kernel to this constructor, such as . + The number of classes in the classification problem. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Constructs a new Multi-class Kernel Support Vector Machine + + + The chosen kernel for the machine. Default is to + use the kernel. + The number of inputs for the machine. If sequences have + varying length, pass zero to this parameter and pass a suitable sequence + kernel to this constructor, such as . + The number of classes in the classification problem. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Constructs a new Multi-class Kernel Support Vector Machine + + + + The machines to be used in each of the pair-wise class subproblems. + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + The decision path followed by the Decision + Directed Acyclic Graph used by the + elimination method. + + The decision label for the given input. + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The model response for each class. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + The model response for each class. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + The model response for each class. + + The class decision for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The class decision for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + + The class decision for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + A vector containing the number of votes for each class. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + + This method computes the decision for a one-against-one multiclass + support vector machine using the Directed Acyclic Graph method by + Platt, Cristianini and Shawe-Taylor. Details are given on the + original paper "Large Margin DAGs for Multiclass Classification", 2000. + + + An input vector. + The model response for each class. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + The decision path followed by the Decision + Directed Acyclic Graph used by the + elimination method. + + The decision label for the given input. + + + + + Compute SVM output with support vector sharing. + + + + + + Compute SVM output with support vector sharing. + + + + + + Resets the cache and machine statistics + so they can be recomputed on next evaluation. + + + + + + Gets the total kernel evaluations performed + in the last call to any of the + functions in the current thread. + + + The number of total kernel evaluations. + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Saves the machine to a file. + + + The path to the file to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Returns an enumerator that iterates through all machines + contained inside this multi-class support vector machine. + + + + + + Returns an enumerator that iterates through all machines + contained inside this multi-class support vector machine. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + Gets the classifier for against . + + + + If the index of is greater than , + the classifier for the against + will be returned instead. If both indices are equal, null will be + returned instead. + + + + + + Gets the total number of machines + in this multi-class classifier. + + + + + + Gets the total number of support vectors + in the entire multi-class machine. + + + + + + Gets the number of unique support + vectors in the multi-class machine. + + + + + + Gets the number of shared support + vectors in the multi-class machine. + + + + + + Gets the number of classes. + + + + + + Gets the number of inputs of the machines. + + + + + + Gets a value indicating whether this machine produces probabilistic outputs. + + + + true if this machine produces probabilistic outputs; otherwise, false. + + + + + + Gets the subproblems classifiers. + + + + + + Configuration function to configure the learning algorithms + for each of the Kernel Support Vector Machines used in this + Multi-class Support Vector Machine. + + + The input data for the learning algorithm. + The output data for the learning algorithm. + The machine for the learning algorithm. + The class index corresponding to the negative values + in the output values contained in . + The class index corresponding to the positive values + in the output values contained in . + + + The configured algorithm + to be used to train the given . + + + + + + Subproblem progress event argument. + + + + + + Initializes a new instance of the class. + + + One of the classes in the subproblem. + The other class in the subproblem. + + + + + One of the classes belonging to the subproblem. + + + + + + One of the classes belonging to the subproblem. + + + + + + Gets the progress of the overall problem, + ranging from zero up to . + + + + + + Gets the maximum value for the current . + + + + + One-against-one Multi-class Support Vector Machine Learning Algorithm + + + + + This class can be used to train Kernel Support Vector Machines with + any algorithm using a one-against-one strategy. The underlying + training algorithm can be configured by defining the + property. + + + One example of learning algorithm that can be used with this class is the + Sequential Minimal Optimization + (SMO) algorithm. + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(1, kernel, 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute(new double[] { 3 }); // result should be 3 + + + + The next example is a simple 3 classes classification problem. + It shows how to use a different kernel function, such as the + polynomial kernel of degree 2. + + + // Sample input data + double[][] inputs = + { + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { 10, 82, 4 }, + new double[] { 10, 15, 4 }, + new double[] { 0, 0, 1 }, + new double[] { 0, 0, 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new polynomial kernel + IKernel kernel = new Polynomial(2); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(inputs: 3, kernel: kernel, classes: 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute( new double[] { -1, 3, 2 }); + + + + + + + + + + + + + + Constructs a new Multi-class Support Vector Learning algorithm. + + + The input learning vectors for the machine learning algorithm. + The to be trained. + The output labels associated with each of the input vectors. The + class labels should be between 0 and the + number of classes in the multiclass machine. + + + + + Runs the one-against-one learning algorithm. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Computes the error ratio, the number of + misclassifications divided by the total + number of samples in a dataset. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Occurs when the learning of a subproblem has started. + + + + + + Occurs when the learning of a subproblem has finished. + + + + + + Gets or sets the configuration function for the learning algorithm. + + + + The configuration function should return a properly configured ISupportVectorMachineLearning + algorithm using the given support vector machine and the input and output data. + + + + + + Probabilistic Output Calibration. + + + + Instead of producing probabilistic outputs, Support Vector Machines + express their decisions in the form of a distance from support vectors in + feature space. In order to convert the SVM outputs into probabilities, + Platt (1999) proposed the calibration of the SVM outputs using a sigmoid + (Logit) link function. Later, Lin et al (2007) provided a corrected and + improved version of Platt's probabilistic outputs. This class implements + the later. + + This class is not an actual learning algorithm, but a calibrator. + Machines passed as input to this algorithm should already have been trained + by a proper learning algorithm such as + Sequential Minimal Optimization (SMO). + + + This class can also be used in combination with + or to learn s + using the one-vs-one or one-vs-all multi-class decision strategies, respectively. + + + References: + + + John C. Platt. 1999. Probabilistic Outputs for Support Vector Machines and Comparisons to + Regularized Likelihood Methods. In ADVANCES IN LARGE MARGIN CLASSIFIERS (1999), pp. 61-74. + + Hsuan-Tien Lin, Chih-Jen Lin, and Ruby C. Weng. 2007. A note on Platt's probabilistic outputs + for support vector machines. Mach. Learn. 68, 3 (October 2007), 267-276. + + + + + + // Example XOR problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 xor 0: 1 (label +1) + new double[] { 0, 1 }, // 0 xor 1: 0 (label -1) + new double[] { 1, 0 }, // 1 xor 0: 0 (label -1) + new double[] { 1, 1 } // 1 xor 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + 1, -1, -1, 1 + }; + + // Create a Kernel Support Vector Machine for the given inputs + KernelSupportVectorMachine svm = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(svm, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Instantiate the probabilistic learning calibration + ProbabilisticOutputLearning calibration = new ProbabilisticOutputLearning(svm, inputs, labels); + + // Run the calibration algorithm + double loglikelihood = calibration.Run(); + + + // Compute the decision output for one of the input vectors, + // while also retrieving the probability of the answer + + double probability; + int decision = svm.Compute(inputs[0], out probability); + + // At this point, decision is +1 with a probability of 75% + + + + + + + + + + + + + Initializes a new instance of Platt's Probabilistic Output Calibration algorithm. + + + A Support Vector Machine. + The input data points as row vectors. + The classification label for each data point in the range [-1;+1]. + + + + + Runs the calibration algorithm. + + + + The log-likelihood of the calibrated model. + + + + + + Runs the calibration algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The log-likelihood of the calibrated model. + + + + + + Computes the log-likelihood of the current model + for the given inputs and outputs. + + + The input data. + The corresponding outputs. + + The log-likelihood of the model. + + + + + Gets or sets the maximum number of + iterations. Default is 100. + + + + + + Gets or sets the tolerance under which the + answer must be found. Default is 1-e5. + + + + + + Gets or sets the minimum step size used + during line search. Default is 1e-10. + + + + + + One-class Support Vector Machine Learning Algorithm. + + + + + + Constructs a new one-class support vector learning algorithm. + + + A support vector machine. + The input data points as row vectors. + + + + + Runs the learning algorithm. + + + True to compute error after the training + process completes, false otherwise. + + The misclassification error rate of the resulting support + vector machine if is true, + returns zero otherwise. + + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Computes the error rate for a given set of inputs. + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 1e-2. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets a value indicating whether to use + shrinking heuristics during learning. Default is true. + + + + true to use shrinking; otherwise, false. + + + + + + Controls the number of outliers accepted by the algorithm. This + value provides an upper bound on the fraction of training errors + and a lower bound of the fraction of support vectors. Default is 0.5 + + + + The summary description is given in Chang and Lin, + "LIBSVM: A Library for Support Vector Machines", 2013. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net45/Accord.MachineLearning.dll b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net45/Accord.MachineLearning.dll new file mode 100644 index 0000000000..0ecfcc92d Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net45/Accord.MachineLearning.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net45/Accord.MachineLearning.xml b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net45/Accord.MachineLearning.xml new file mode 100644 index 0000000000..8d2a240fa --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.MachineLearning.3.0.2/lib/net45/Accord.MachineLearning.xml @@ -0,0 +1,12631 @@ + + + + Accord.MachineLearning + + + + + Contains Boosting related techniques for creating classifier ensembles and other composition models. + + + + + The namespace class diagram is shown below. + + + + + + + + + Model construction (fitting) delegate. + + + The type of the model to be created. + The current weights for the input samples. + A model trained over the weighted samples. + + + + + AdaBoost learning algorithm. + + + The type of the model to be trained. + + + + + Initializes a new instance of the class. + + + The model to be learned. + + + + + Initializes a new instance of the class. + + + The model to be learned. + The model fitting function. + + + + + Runs the learning algorithm. + + + The input samples. + The corresponding output labels. + + The classifier error. + + + + + Runs the learning algorithm. + + + The input samples. + The corresponding output labels. + The weights for each of the samples. + + The classifier error. + + + + + Computes the error ratio, the number of + misclassifications divided by the total + number of samples in a dataset. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Gets or sets the relative tolerance used to + detect convergence of the learning algorithm. + + + + + + Gets or sets the error limit before learning stops. Default is 0.5. + + + + + + Gets or sets the fitting function which creates + and trains a model given a weighted data set. + + + + + + Common interface for Bag of Words objects. + + + The type of the element to be + converted to a fixed-length vector representation. + + + + + Gets the codeword representation of a given value. + + + The value to be processed. + + A double vector with the same length as words + in the code book. + + + + + Gets the number of words in this codebook. + + + + + + Bag of words. + + + + The bag-of-words (BoW) model can be used to extract finite + length features from otherwise varying length representations. + + + + + + Constructs a new . + + + The texts to build the bag of words model from. + + + + + Constructs a new . + + + The texts to build the bag of words model from. + + + + + Constructs a new . + + + + + + Computes the Bag of Words model. + + + + + + Gets the codeword representation of a given text. + + + The text to be processed. + + An integer vector with the same length as words + in the code book. + + + + + Gets the number of words in this codebook. + + + + + + Gets the forward dictionary which translates + string tokens to integer labels. + + + + + + Gets the reverse dictionary which translates + integer labels into string tokens. + + + + + + Gets or sets the maximum number of occurrences of a word which + should be registered in the feature vector. Default is 1 (if a + word occurs, corresponding feature is set to 1). + + + + + + Naïve Bayes Classifier for arbitrary distributions. + + + + + A naive Bayes classifier is a simple probabilistic classifier based on applying Bayes' theorem + with strong (naive) independence assumptions. A more descriptive term for the underlying probability + model would be "independent feature model". + + In simple terms, a naive Bayes classifier assumes that the presence (or absence) of a particular + feature of a class is unrelated to the presence (or absence) of any other feature, given the class + variable. In spite of their naive design and apparently over-simplified assumptions, naive Bayes + classifiers have worked quite well in many complex real-world situations. + + + This class implements an arbitrary-distribution (real-valued) Naive-Bayes classifier. There is + also a special named constructor to create classifiers + assuming normal distributions for each variable. For a discrete (integer-valued) distribution + classifier, please see . + + + References: + + + Wikipedia contributors. "Naive Bayes classifier." Wikipedia, The Free Encyclopedia. + Wikipedia, The Free Encyclopedia, 16 Dec. 2011. Web. 5 Jan. 2012. + + + + + + + This page contains two examples, one using text and another one using normal double vectors. + The first example is the classic example given by Tom Mitchell. If you are not interested + in text or in this particular example, please jump to the second example below. + + + In the first example, we will be using a mixed-continuous version of the famous Play Tennis + example by Tom Mitchell (1998). In Mitchell's example, one would like to infer if a person + would play tennis or not based solely on four input variables. The original variables were + categorical, but in this example, two of them will be categorical and two will be continuous. + The rows, or instances presented below represent days on which the behavior of the person + has been registered and annotated, pretty much building our set of observation instances for + learning: + + + DataTable data = new DataTable("Mitchell's Tennis Example"); + + data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // We will set Temperature and Humidity to be continuous + data.Columns["Temperature"].DataType = typeof(double); // (degrees Celsius) + data.Columns["Humidity"].DataType = typeof(double); // (water percentage) + + data.Rows.Add( "D1", "Sunny", 38.0, 96.0, "Weak", "No" ); + data.Rows.Add( "D2", "Sunny", 39.0, 90.0, "Strong", "No" ); + data.Rows.Add( "D3", "Overcast", 38.0, 75.0, "Weak", "Yes" ); + data.Rows.Add( "D4", "Rain", 25.0, 87.0, "Weak", "Yes" ); + data.Rows.Add( "D5", "Rain", 12.0, 30.0, "Weak", "Yes" ); + data.Rows.Add( "D6", "Rain", 11.0, 35.0, "Strong", "No" ); + data.Rows.Add( "D7", "Overcast", 10.0, 40.0, "Strong", "Yes" ); + data.Rows.Add( "D8", "Sunny", 24.0, 90.0, "Weak", "No" ); + data.Rows.Add( "D9", "Sunny", 12.0, 26.0, "Weak", "Yes" ); + data.Rows.Add( "D10", "Rain", 25.0, 30.0, "Weak", "Yes" ); + data.Rows.Add( "D11", "Sunny", 26.0, 40.0, "Strong", "Yes" ); + data.Rows.Add( "D12", "Overcast", 27.0, 97.0, "Strong", "Yes" ); + data.Rows.Add( "D13", "Overcast", 39.0, 41.0, "Weak", "Yes" ); + data.Rows.Add( "D14", "Rain", 23.0, 98.0, "Strong", "No" ); + + + Obs: The DataTable representation is not required, and instead the NaiveBayes could + also be trained directly on double[] arrays containing the data. + + + In order to estimate a discrete Naive Bayes, we will first convert this problem to a more simpler + representation. Since some variables are categories, it does not matter if they are represented + as strings, or numbers, since both are just symbols for the event they represent. Since numbers + are more easily representable than text strings, we will convert the problem to use a discrete + alphabet through the use of a codebook. + + + A codebook effectively transforms any distinct possible value for a variable into an integer + symbol. For example, “Sunny” could as well be represented by the integer label 0, “Overcast” + by “1”, Rain by “2”, and the same goes by for the other variables. So: + + + // Create a new codification codebook to + // convert strings into integer symbols + Codification codebook = new Codification(data, + "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // Translate our training data into integer symbols using our codebook: + DataTable symbols = codebook.Apply(data); + double[][] inputs = symbols.ToArray("Outlook", "Temperature", "Humidity", "Wind"); + int[] outputs = symbols.ToIntArray("PlayTennis").GetColumn(0); + + + + Now that we already have our learning input/ouput pairs, we should specify our + Bayes model. We will be trying to build a model to predict the last column, entitled + “PlayTennis”. For this, we will be using the “Outlook”, “Temperature”, “Humidity” and + “Wind” as predictors (variables which will we will use for our decision). + + + + // Gather information about decision variables + IUnivariateDistribution[] priors = + { + new GeneralDiscreteDistribution(codebook["Outlook"].Symbols), // 3 possible values (Sunny, overcast, rain) + new NormalDistribution(), // Continuous value (Celsius) + new NormalDistribution(), // Continuous value (percentage) + new GeneralDiscreteDistribution(codebook["Wind"].Symbols) // 2 possible values (Weak, strong) + }; + + int inputCount = 4; // 4 variables (Outlook, Temperature, Humidity, Wind) + int classCount = codebook["PlayTennis"].Symbols; // 2 possible values (yes, no) + + // Create a new Naive Bayes classifiers for the two classes + var model = new NaiveBayes<IUnivariateDistribution>(classCount, inputCount, priors); + + // Compute the Naive Bayes model + model.Estimate(inputs, outputs); + + + Now that we have created and estimated our classifier, we + can query the classifier for new input samples through the method. + + + // We will be computing the output label for a sunny, cool, humid and windy day: + + double[] instance = new double[] + { + codebook.Translate(columnName:"Outlook", value:"Sunny"), + 12.0, + 90.0, + codebook.Translate(columnName:"Wind", value:"Strong") + }; + + // Now, we can feed this instance to our model + int output = model.Compute(instance, out logLikelihood); + + // Finally, the result can be translated back to one of the codewords using + string result = codebook.Translate("PlayTennis", output); // result is "No" + + + + + + + In this second example, we will be creating a simple multi-class + classification problem using integer vectors and learning a discrete + Naive Bayes on those vectors. + + + // Let's say we have the following data to be classified + // into three possible classes. Those are the samples: + // + double[][] inputs = + { + // input output + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 0, 0, 1, 0 }, // 0 + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 1, 1, 1, 1 }, // 2 + new double[] { 1, 0, 1, 1 }, // 2 + new double[] { 1, 1, 0, 1 }, // 2 + new double[] { 0, 1, 1, 1 }, // 2 + new double[] { 1, 1, 1, 1 }, // 2 + }; + + int[] outputs = // those are the class labels + { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, + }; + + // Create a new continuous naive Bayes model for 3 classes using 4-dimensional Gaussian distributions + var bayes = new NaiveBayes<NormalDistribution>(inputs: 4, classes: 3, initial: NormalDistribution.Standard); + + // Teach the Naive Bayes model. The error should be zero: + double error = bayes.Estimate(inputs, outputs, options: new NormalOptions + { + Regularization = 1e-5 // to avoid zero variances + }); + + // Now, let's test the model output for the first input sample: + int answer = bayes.Compute(new double[] { 0, 1, 1, 0 }); // should be 1 + + + + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. Those distributions + will made available in the property. + + The prior probabilities for each output class. + + + + + Initializes the frequency tables of a Naïve Bayes Classifier. + + + The input data. + The corresponding output labels for the input data. + True to estimate class priors from the data, false otherwise. + The fitting options to be used in the density estimation. + + + + + Computes the error when predicting the given data. + + + The input values. + The output values. + + The percentage error of the prediction. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The most likely class for the instance. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The log-likelihood for the instance. + + The most likely class for the instance. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The log-likelihood for the instance. + The response probabilities for each class. + + The most likely class for the instance. + + + + + Saves the Naïve Bayes model to a stream. + + + The stream to which the Naïve Bayes model is to be serialized. + + + + + Saves the Naïve Bayes model to a stream. + + + The path to the file to which the Naïve Bayes model is to be serialized. + + + + + Gets the number of possible output classes. + + + + + + Gets the number of inputs in the model. + + + + + + Gets the probability distributions for each class and input. + + + A TDistribution[,] array in with each row corresponds to a + class, each column corresponds to an input variable. Each element + of this double[,] array is a probability distribution modeling + the occurrence of the input variable in the corresponding class. + + + + + Gets the prior beliefs for each class. + + + + + + Weighted Weak Classifier. + + + The type of the weak classifier. + + + + + Gets or sets the weight associated + with the weak . + + + + + + Gets or sets the weak + classifier associated with the . + + + + + + Boosted classification model. + + + The type of the weak classifier. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The initial boosting weights. + The initial weak classifiers. + + + + + Computes the output class label for a given input. + + + The input vector. + + The most likely class label for the given input. + + + + + Adds a new weak classifier and its corresponding + weight to the end of this boosted classifier. + + + The weight of the weak classifier. + The weak classifier + + + + + Returns an enumerator that iterates through this collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through this collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the list of weighted weak models + contained in this boosted classifier. + + + + + + Gets or sets the at the specified index. + + + + + + Contains Boosting related techniques for creating classifier ensembles and other composition models. + + + + + The namespace class diagram is shown below. + + + + + + + + + Simple classifier that based on decision margins that + are perpendicular to one of the space dimensions. + + + The type for the weak classifier model. + + + + + Common interface for Weak classifiers + used in Boosting mechanisms. + + + + + + + + Computes the output class label for a given input. + + + The input vector. + + The most likely class label for the given input. + + + + + Creates a new Weak classifier given a + classification model and its decision function. + + + The classifier. + The classifier decision function. + + + + + Computes the classifier decision for a given input. + + + The input vector. + + The model's decision label. + + + + + Gets or sets the weak decision model. + + + + + + Gets or sets the decision function used by the . + + + + + + Simple classifier that based on decision margins that + are perpendicular to one of the space dimensions. + + + + + + Initializes a new instance of the class. + + + The number of inputs for this classifier. + + + + + Computes the output class label for a given input. + + + The input vector. + + + The most likely class label for the given input. + + + + + + Teaches the stump classifier to recognize + the class labels of the given input samples. + + + The input vectors. + The class labels corresponding to each input vector. + The weights associated with each input vector. + + + + + Gets the decision threshold for this linear classifier. + + + + + + Gets the index of the attribute which this + classifier will use to compare against + . + + + + + + Gets the direction of the comparison + (if greater than or less than). + + + + + + Binary split clustering algorithm. + + + + How to perform clustering with Binary Split. + + + // Declare some observations + double[][] observations = + { + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + // Create a new binary split with 3 clusters + BinarySplit binarySplit = new BinarySplit(3); + + // Compute the algorithm, retrieving an integer array + // containing the labels for each of the observations + int[] labels = binarySplit.Compute(observations); + + // In order to classify new, unobserved instances, you can + // use the binarySplit.Clusters.Nearest method, as shown below: + int c = binarySplit.Clusters.Nearest(new double[] { 4, 1, 9) }); + + + + + + + + + Common interface for clustering algorithms. + + + The type of the data being clustered, such as . + + + + + + + + + + Divides the input data into a number of clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + The labelings for the input data. + + + + + + Gets the collection of clusters currently modeled by the clustering algorithm. + + + + + + Initializes a new instance of the Binary Split algorithm + + + The number of clusters to divide the input data into. + The distance function to use. Default is to + use the distance. + + + + + Initializes a new instance of the Binary Split algorithm + + + The number of clusters to divide the input data into. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + + + Gets the clusters. + + + + + + Gets the number of clusters. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets the dimensionality of the data space. + + + + + + Gaussian Mixture Model cluster. + + + + This class contains information about a Gaussian cluster found + during a estimation. Clusters + are often contained within a . + + + + + + + + + Gets the probability density function of the + underlying Gaussian probability distribution + evaluated in point x. + + + An observation. + + + The log-probability of x occurring + in the weighted Gaussian distribution. + + + + + + Gets the probability density function of the + underlying Gaussian probability distribution + evaluated in point x. + + + An observation. + + + The probability of x occurring + in the weighted Gaussian distribution. + + + + + + Gets a copy of the normal distribution associated with this cluster. + + + + + + Initializes a new instance of the class. + + + The owner collection. + The cluster index. + + + + + Gets the deviance of the points in relation to the cluster. + + + The input points. + + The deviance, measured as -2 * the log-likelihood + of the input points in this cluster. + + + + + Gets the label for this cluster. + + + + + + Gets the cluster's mean. + + + + + + Gets the cluster's variance-covariance matrix. + + + + + + Gets the mixture coefficient for the cluster distribution. + + + + + + Gaussian Mixture Model Cluster Collection. + + + + + This class contains information about all + Gaussian clusters found during a + estimation. + + Given a new sample, this class can be used to find the nearest cluster related + to this sample through the method. + + + + + + + + + Common interface for cluster collections. + + + The type of the data being clustered, such as . + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Gets the number of clusters in the collection. + + + + + + Initializes a new instance of the class. + + + The owner collection. + The list. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + A value between 0 and 1 representing + the confidence in the generated classification. + + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + The likelihood for each of the classes. + + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vectors. + + The index of the nearest cluster + to the given data point. + + + + + Gets the deviance of the points in relation to the model. + + + The input points. + + The deviance, measured as -2 * the log-likelihood of the input points. + + + + + Gets the mean vectors for the clusters. + + + + + + Gets the variance for each of the clusters. + + + + + + Gets the covariance matrices for each of the clusters. + + + + + + Gets the mixture coefficients for each cluster. + + + + + + Mean shift cluster collection. + + + + + + + + Common interface for cluster collections. + + + The type of the data being clustered, such as . + The type of the clusters considered by a clustering algorithm. + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + Initializes a new instance of the class. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Gets the number of clusters in the collection. + + + + + + Gets the modes of the clusters. + + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + Mean shift cluster. + + + + + + + + + Initializes a new instance of the class. + + + The owner. + The cluster index. + + + + + Gets the label for this cluster. + + + + + + Gets the mode of the cluster. + + + + + + k-Means cluster collection. + + + + + + + + Initializes a new instance of the class. + + + The number of clusters K. + The distance metric to consider. + + + + + Returns the closest cluster to an input vector. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest clusters to an input vector array. + + + The input vector array. + + + An array containing the index of the nearest cluster + to the corresponding point in the input array. + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets the clusters' centroids. + + + The clusters' centroids. + + + + + Gets the proportion of samples in each cluster. + + + + + + Gets the clusters' variance-covariance matrices. + + + The clusters' variance-covariance matrices. + + + + + Gets the number of clusters in the collection. + + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + k-Means' cluster. + + + + + + Computes the distortion of the cluster, measured + as the average distance between the cluster points + and its centroid. + + + The input points. + + The average distance between all points + in the cluster and the cluster centroid. + + + + + Initializes a new instance of the class. + + + The owner collection. + The cluster index. + + + + + Gets the label for this cluster. + + + + + + Gets the cluster's centroid. + + + + + + Gets the cluster's variance-covariance matrix. + + + + + + Gets the proportion of samples in the cluster. + + + + + + k-Modes cluster collection. + + + + + + + + Initializes a new instance of the class. + + + The number of clusters K. + The distance metric to use. + + + + + Returns the closest cluster to an input vector. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest clusters to an input vector array. + + + The input vector array. + + + An array containing the index of the nearest cluster + to the corresponding point in the input array. + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Calculates the average square distance from the data points + to the clusters' centroids. + + + + The average distance from centroids can be used as a measure + of the "goodness" of the clusterization. The more the data + are aggregated around the centroids, the less the average + distance. + + + + The average square distance from the data points to the + clusters' centroids. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets the proportion of samples in each cluster. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets the clusters' centroids. + + + The clusters' centroids. + + + + + Gets the number of clusters in the collection. + + + + + + Gets the cluster at the given index. + + + The index of the cluster. This should also be the class label of the cluster. + + An object holding information about the selected cluster. + + + + + k-Modes' cluster. + + + + + + + + + Initializes a new instance of the class. + + + The owner. + The cluster index. + + + + + Computes the distortion of the cluster, measured + as the average distance between the cluster points + and its centroid. + + + The input points. + + The average distance between all points + in the cluster and the cluster centroid. + + + + + Gets the label for this cluster. + + + + + + Gets the cluster's centroid. + + + + + + Gets the proportion of samples in the cluster. + + + + + + Mean shift clustering algorithm. + + + + + Mean shift is a non-parametric feature-space analysis technique originally + presented in 1975 by Fukunaga and Hostetler. It is a procedure for locating + the maxima of a density function given discrete data sampled from that function. + The method iteratively seeks the location of the modes of the distribution using + local updates. + + As it is, the method would be intractable; however, some clever optimizations such as + the use of appropriate data structures and seeding strategies as shown in Lee (2011) + and Carreira-Perpinan (2006) can improve its computational speed. + + + References: + + + Wikipedia, The Free Encyclopedia. Mean-shift. Available on: + http://en.wikipedia.org/wiki/Mean-shift + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Conrad Lee. Scalable mean-shift clustering in a few lines of python. The + Sociograph blog, 2011. Available at: + http://sociograph.blogspot.com.br/2011/11/scalable-mean-shift-clustering-in-few.html + + Carreira-Perpinan, Miguel A. "Acceleration strategies for Gaussian mean-shift image + segmentation." Computer Vision and Pattern Recognition, 2006 IEEE Computer Society + Conference on. Vol. 1. IEEE, 2006. Available at: + http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=1640881 + + + + + + + // Declare some observations + double[][] observations = + { + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + // Create a uniform kernel density function + UniformKernel kernel = new UniformKernel(); + + // Create a new Mean-Shift algorithm for 3 dimensional samples + MeanShift meanShift = new MeanShift(dimension: 3, kernel: kernel, bandwidth: 1.5 ); + + // Compute the algorithm, retrieving an integer array + // containing the labels for each of the observations + int[] labels = meanShift.Compute(observations); + + // As a result, the first two observations should belong to the + // same cluster (thus having the same label). The same should + // happen to the next four observations and to the last three. + + + + The following example demonstrates how to use the Mean Shift algorithm + for color clustering. It is the same code which can be found in the + color clustering sample application. + + + + int pixelSize = 3; // RGB color pixel + double sigma = 0.06; // kernel bandwidth + + // Load a test image (shown below) + Bitmap image = ... + + // Create converters + ImageToArray imageToArray = new ImageToArray(min: -1, max: +1); + ArrayToImage arrayToImage = new ArrayToImage(image.Width, image.Height, min: -1, max: +1); + + // Transform the image into an array of pixel values + double[][] pixels; imageToArray.Convert(image, out pixels); + + // Create a MeanShift algorithm using given bandwidth + // and a Gaussian density kernel as kernel function. + MeanShift meanShift = new MeanShift(pixelSize, new GaussianKernel(3), sigma); + + + // Compute the mean-shift algorithm until the difference in + // shifting means between two iterations is below 0.05 + int[] idx = meanShift.Compute(pixels, 0.05, maxIterations: 10); + + + // Replace every pixel with its corresponding centroid + pixels.ApplyInPlace((x, i) => meanShift.Clusters.Modes[idx[i]]); + + // Retrieve the resulting image in a picture box + Bitmap result; arrayToImage.Convert(pixels, out result); + + + + The original image is shown below: + + + + + The resulting image will be: + + + + + + + + + + + + Creates a new algorithm. + + + The dimension of the samples to be clustered. + The bandwidth (also known as radius) to consider around samples. + The density kernel function to use. + + + + + Divides the input data into clusters. + + + The data where to compute the algorithm. + + + + + Divides the input data into clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-3. + + + + + Divides the input data into clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-3. + The maximum number of iterations. Default is 100. + + + + + Gets the clusters found by Mean Shift. + + + + + + Gets or sets the bandwidth (radius, or smoothness) + parameter to be used in the mean-shift algorithm. + + + + + + Gets or sets the maximum number of neighbors which should be + used to determine the direction of the mean-shift during the + computations. Default is zero (unlimited number of neighbors). + + + + + + Gets or sets whether the mean-shift can be shortcut + as soon as a mean enters the neighborhood of a local + maxima candidate. Default is true. + + + + + + Gets or sets whether the algorithm can use parallel + processing to speedup computations. Enabling parallel + processing can, however, result in different results + at each run. + + + + + + Gets the dimension of the samples being + modeled by this clustering algorithm. + + + + + + Gets or sets the maximum number of iterations to + be performed by the method. If set to zero, no + iteration limit will be imposed. Default is 0. + + + + + + Gets or sets the relative convergence threshold + for stopping the algorithm. Default is 1e-5. + + + + + + Contains discrete and continuous Decision Trees, with + support for automatic code generation, tree pruning and + the creation of decision rule sets. + + + + + + + + + + Numeric comparison category. + + + + + + The node does no comparison. + + + + + + The node compares for equality. + + + + + + The node compares for non-equality. + + + + + + The node compares for greater-than or equality. + + + + + + The node compares for greater-than. + + + + + + The node compares for less-than. + + + + + + The node compares for less-than or equality. + + + + + Extension methods for enumeration values. + + + + + + Returns a that represents this instance. + + + The comparison type. + + + A that represents this instance. + + + + + + Collection of decision nodes. A decision branch specifies the index of + an attribute whose current value should be compared against its children + nodes. The type of the comparison is specified in each child node. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The to whom + this belongs. + + + + + Initializes a new instance of the class. + + + Index of the attribute to be processed. + + The children nodes. Each child node should be + responsible for a possible value of a discrete attribute, or for + a region of a continuous-valued attribute. + + + + + Adds the elements of the specified collection to the end of the collection. + + + The child nodes to be added. + + + + + Gets or sets the index of the attribute to be + used in this stage of the decision process. + + + + + + Gets the attribute that is being used in + this stage of the decision process, given + by the current + + + + + + Gets or sets the decision node that contains this collection. + + + + + + Contains learning algorithms for inducing + Decision Trees. + + + + + + + + + + Contains classes to prune decision trees, removing + unneeded nodes in an attempt to improve generalization. + + + + + + + + + Contains sets of decision rules that can be created from + Decision + Trees. + + + + + + + + + + Antecedent expression for s. + + + + + + Creates a new instance of the class. + + + The variable index. + The comparison to be made using the value at + and . + The value to be compared against. + + + + + Checks if this antecedent applies to a given input. + + + An input vector. + + True if the input element at position + compares to using ; false + otherwise. + + + + + + Determines whether the specified + is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Determines whether the specified + is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in + hashing algorithms and data structures like a hash table. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Gets the index of the variable used as the + left hand side term of this expression. + + + + + + Gets the comparison being made between the variable + value at and . + + + + + + Gets the right hand side of this expression. + + + + + + Decision rule set. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + A set of decision rules. + + + + + Creates a new from a . + + + A . + + A that is completely + equivalent to the given + + + + + Computes the decision output for a given input. + + + An input vector. + + The decision output for the given + . + + + + + Adds a new to the set. + + + The to be added. + + + + + Adds a collection of new s to the set. + + + The collection of s to be added. + + + + + Removes all rules from this set. + + + + + + Removes a given rule from the set. + + + The to be removed. + + True if the rule was removed; false otherwise. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object + that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object + that can be used to iterate through the collection. + + + + + + Gets the number of possible output + classes covered by this decision set. + + + + + + Gets the number of rules in this set. + + + + + + Decision Rule. + + + + + + Initializes a new instance of the class. + + + The decision variables handled by this decision rule. + The output value, given after all antecedents are met. + The antecedent conditions that lead to the . + + + + + Initializes a new instance of the class. + + + The decision variables handled by this decision rule. + The output value, given after all antecedents are met. + The antecedent conditions that lead to the . + + + + + Initializes a new instance of the class. + + + The output value, given after all antecedents are met. + The antecedent conditions that lead to the . + + + + + Checks whether a the rule applies to a given input vector. + + + An input vector. + + True, if the input matches the rule + ; otherwise, false. + + + + + + Creates a new from a 's + . This node must be a leaf, cannot be the root, and + should have one output value. + + + A from a . + + A representing the given . + + + + + Gets whether this rule and another rule have + the same antecedents but different outputs. + + + + + True if the two rules are contradictory; + false otherwise. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified + is equal to this instance; otherwise, false. + + + + + + Compares this instance to another . + + + + + + Implements the operator <. + + + + + + Implements the operator >. + + + + + + Implements the operator ==. + + + + + + Implements the operator !=. + + + + + + Gets the decision variables handled by this rule. + + + + + + Gets the expressions that + must be fulfilled in order for this rule to be applicable. + + + + + + Gets or sets the output of this decision rule, given + when all conditions are met. + + + + + + Gets the number of antecedents contained + in this . + + + + + + Decision Tree C# Writer. + + + + + + Initializes a new instance of the class. + + + + + + Creates a C# code for the tree. + + + + + + Reduced error pruning. + + + + + + Initializes a new instance of the class. + + + The tree to be pruned. + The pruning set inputs. + The pruning set outputs. + + + + + Computes one pass of the pruning algorithm. + + + + + + Error-based pruning. + + + + + References: + + + Lior Rokach, Oded Maimon. The Data Mining and Knowledge Discovery Handbook, + Chapter 9, Decision Trees. Springer, 2nd ed. 2010, XX, 1285 p. 40 illus. + Available at: http://www.ise.bgu.ac.il/faculty/liorr/hbchap9.pdf . + + + + + + + // Suppose you have the following input and output data + // and would like to learn the relationship between the + // inputs and outputs by using a Decision Tree: + + double[][] inputs = ... + int[] output = ... + + // To prune a decision tree, we need to split your data into + // training and pruning groups. Let's say we have 100 samples, + // and would like to reserve 50 samples for training, and 50 + // for pruning: + + // Gather the first half for the training set + var trainingInputs = inputs.Submatrix(0, 49); + var trainingOutput = output.Submatrix(0, 49); + + // Gather the second hand data for pruning + var pruningInputs = inputs.Submatrix(50, 99); + var pruningOutput = output.Submatrix(50, 99); + + + // Create the decision tree + DecisionTree tree = new DecisionTree( ... ); + + // Learn our tree using the training data + C45Learning c45 = new C45Learning(tree); + double error = c45.Run(trainingInputs, trainingOutput); + + + // Now we can attempt to prune the tree using the pruning groups + ErrorBasedPruning prune = new ErrorBasedPruning(tree, pruningInputs, pruningOutput); + + // Gain threshold + prune.Threshold = 0.1; + + double lastError; + double error = Double.PositiveInfinity; + + do + { + // Now we can start pruning the tree as + // long as the error doesn't increase + + lastError = error; + error = prune.Run(); + + } while (error < lastError); + + + + + + + Initializes a new instance of the class. + + + The tree to be pruned. + The pruning set inputs. + The pruning set outputs. + + + + + Computes one pass of the pruning algorithm. + + + + + + Attempts to prune a node's subtrees. + + + Whether the current node was changed or not. + + + + + Gets or sets the minimum allowed gain threshold + to prune the tree. Default is 0.01. + + + + + + Decision rule simplification algorithm. + + + + + + Initializes a new instance of the class. + + + The decision set to be simplified. + + + + + Computes the reduction algorithm. + + + A set of training inputs. + The outputs corresponding to each of the inputs. + + The average error after the reduction. + + + + + Computes the average decision error. + + + A set of input vectors. + A set of corresponding output vectors. + + The average misclassification rate. + + + + + Checks if two variables can be eliminated. + + + + + + Checks if two variables can be eliminated. + + + + + + Gets or sets the underlying hypothesis test + size parameter used to reject hypothesis. + + + + + + Boltzmann distribution exploration policy. + + + The class implements exploration policy base on Boltzmann distribution. + Acording to the policy, action a at state s is selected with the next probability: + + exp( Q( s, a ) / t ) + p( s, a ) = ----------------------------- + SUM( exp( Q( s, b ) / t ) ) + b + + where Q(s, a) is action's a estimation (usefulness) at state s and + t is . + + + + + + + + + + Exploration policy interface. + + + The interface describes exploration policies, which are used in Reinforcement + Learning to explore state space. + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Initializes a new instance of the class. + + + Termperature parameter of Boltzmann distribution. + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Termperature parameter of Boltzmann distribution, >0. + + + The property sets the balance between exploration and greedy actions. + If temperature is low, then the policy tends to be more greedy. + + + + + Epsilon greedy exploration policy. + + + The class implements epsilon greedy exploration policy. Acording to the policy, + the best action is chosen with probability 1-epsilon. Otherwise, + with probability epsilon, any other action, except the best one, is + chosen randomly. + + According to the policy, the epsilon value is known also as exploration rate. + + + + + + + + + + Initializes a new instance of the class. + + + Epsilon value (exploration rate). + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Epsilon value (exploration rate), [0, 1]. + + + The value determines the amount of exploration driven by the policy. + If the value is high, then the policy drives more to exploration - choosing random + action, which excludes the best one. If the value is low, then the policy is more + greedy - choosing the beat so far action. + + + + + + Roulette wheel exploration policy. + + + The class implements roulette whell exploration policy. Acording to the policy, + action a at state s is selected with the next probability: + + Q( s, a ) + p( s, a ) = ------------------ + SUM( Q( s, b ) ) + b + + where Q(s, a) is action's a estimation (usefulness) at state s. + + The exploration policy may be applied only in cases, when action estimates (usefulness) + are represented with positive value greater then 0. + + + + + + + + + + Initializes a new instance of the class. + + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). + + + + + Tabu search exploration policy. + + + The class implements simple tabu search exploration policy, + allowing to set certain actions as tabu for a specified amount of + iterations. The actual exploration and choosing from non-tabu actions + is done by base exploration policy. + + + + + + + + + Initializes a new instance of the class. + + + Total actions count. + Base exploration policy. + + + + + Choose an action. + + + Action estimates. + + Returns selected action. + + The method chooses an action depending on the provided estimates. The + estimates can be any sort of estimate, which values usefulness of the action + (expected summary reward, discounted reward, etc). The action is choosed from + non-tabu actions only. + + + + + Reset tabu list. + + + Clears tabu list making all actions allowed. + + + + + Set tabu action. + + + Action to set tabu for. + Tabu time in iterations. + + + + + Base exploration policy. + + + Base exploration policy is the policy, which is used + to choose from non-tabu actions. + + + + + Robust circle estimator with RANSAC. + + + + + + Creates a new RANSAC 2D circle estimator. + + + Inlier threshold. + Inlier probability. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Produces a robust estimation of the circle + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The circle passing through the points. + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Solver types allowed in LibSVM/Liblinear model files. + + + + + + Unknown solver type. + + + + + + L2-regularized logistic regression in the primal (-s 0, L2R_LR). + + + + + + + + L2-regularized L2-loss support vector classification + in the dual (-s 1, L2R_L2LOSS_SVC_DUAL, the default). + + + + + + + + L2-regularized L2-loss support vector classification + in the primal (-s 2, L2R_L2LOSS_SVC). + + + + + + + + L2-regularized L1-loss support vector classification + in the dual (-s 3, L2R_L1LOSS_SVC_DUAL). + + + + + + + + Support vector classification by + Crammer and Singer (-s 4, MCSVM_CS). + + + + + + L1-regularized L2-loss support vector + classification (-s 5, L1R_L2LOSS_SVC). + + + + + + L1-regularized logistic regression (-s 6, L1R_LR). + + + + + + + + L2-regularized logistic regression in the dual (-s 7, L2R_LR_DUAL). + + + + + + + + L2-regularized L2-loss support vector regression + in the primal (-s 11, L2R_L2LOSS_SVR). + + + + + + L2-regularized L2-loss support vector regression + in the dual (-s 12, L2R_L2LOSS_SVR_DUAL). + + + + + + L2-regularized L1-loss support vector regression + in the dual (-s 13, L2R_L1LOSS_SVR_DUAL). + + + + + + Reads support vector machines + created from LibSVM or Liblinear. Not all solver types are supported. + + + + + + Creates a new object. + + + + + + Creates a that + attends the requisites specified in this model. + + + A that represents this model. + + + + + Creates a support + vector machine learning algorithm that attends the + requisites specified in this model. + + + + A that represents this model. + + + + + + Saves this model to disk using LibSVM's model format. + + + The path where the file should be written. + + + + + Saves this model to disk using LibSVM's model format. + + + The stream where the file should be written. + + + + + Loads a model specified using LibSVM's model format from disk. + + + The file path from where the model should be loaded. + + The stored on . + + + + + Loads a model specified using LibSVM's model format from a stream. + + + The stream from where the model should be loaded. + + The stored on . + + + + + Gets or sets the solver type used to create the model. + + + + + + Gets or sets the number of classes that + this classification model can handle. + + + + + + Gets or sets whether an initial double value should + be appended in the beginning of every feature vector. + If set to a negative number, this functionality is + disabled. Default is 0. + + + + + + Gets or sets the number of dimensions (features) + the classification or regression model can handle. + + + + + + Gets or sets the class label for each class + this classification model expects to handle. + + + + + + Gets or sets the vector of linear weights used + by this model, if it is a compact model. If this + is not a compact model, this will be set to null. + + + + + + + + Gets or sets the set of support vectors used + by this model. If the model is compact, this + will be set to null. + + + + + + + + Minimum (Mean) Distance Classifier. + + + + This is one of the simplest possible pattern recognition classifiers. + This classifier works by comparing a new input vector against the mean + value of the other classes. The class which is closer to this new input + vector is considered the winner, and the vector will be classified as + having the same label as this class. + + + + + + Initializes a new instance of the class. + + + The input points. + The output labels associated with each + input points. + + + + + Initializes a new instance of the class. + + + A distance function. Default is to use + the distance. + The input points. + The output labels associated with each + input points. + + + + + Computes the label for the given input. + + + The input value. + The distances from to the class means. + + The output label assigned to this point. + + + + + Computes the label for the given input. + + + A input. + + The output label assigned to this point. + + + + + K-Nearest Neighbor (k-NN) algorithm. + + + The type of the input data. + + + The k-nearest neighbor algorithm (k-NN) is a method for classifying objects + based on closest training examples in the feature space. It is amongst the simplest + of all machine learning algorithms: an object is classified by a majority vote of + its neighbors, with the object being assigned to the class most common amongst its + k nearest neighbors (k is a positive integer, typically small). + + If k = 1, then the object is simply assigned to the class of its nearest neighbor. + + + References: + + + Wikipedia contributors. "K-nearest neighbor algorithm." Wikipedia, The + Free Encyclopedia. Wikipedia, The Free Encyclopedia, 10 Oct. 2012. Web. + 9 Nov. 2012. http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm + + + + + + The following example shows how to create + and use a k-Nearest Neighbor algorithm to classify + a set of numeric vectors. + + + // Create some sample learning data. In this data, + // the first two instances belong to a class, the + // four next belong to another class and the last + // three to yet another. + + double[][] inputs = + { + // The first two are from class 0 + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + + // The next four are from class 1 + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + + // The last three are from class 2 + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + int[] outputs = + { + 0, 0, // First two from class 0 + 1, 1, 1, 1, // Next four from class 1 + 2, 2, 2 // Last three from class 2 + }; + + + // Now we will create the K-Nearest Neighbors algorithm. For this + // example, we will be choosing k = 4. This means that, for a given + // instance, its nearest 4 neighbors will be used to cast a decision. + KNearestNeighbors knn = new KNearestNeighbors(k: 4, classes: 3, + inputs: inputs, outputs: outputs); + + + // After the algorithm has been created, we can classify a new instance: + int answer = knn.Compute(new double[] { 11, 5, 4 }); // answer will be 2. + + + + The k-Nearest neighbor algorithm implementation in the + framework can also be used with any instance data type. For + such cases, the framework offers a generic version of the + classifier, as shown in the example below. + + + // The k-Nearest Neighbors algorithm can be used with + // any kind of data. In this example, we will see how + // it can be used to compare, for example, Strings. + + string[] inputs = + { + "Car", // class 0 + "Bar", // class 0 + "Jar", // class 0 + + "Charm", // class 1 + "Chair" // class 1 + }; + + int[] outputs = + { + 0, 0, 0, // First three are from class 0 + 1, 1, // And next two are from class 1 + }; + + + // Now we will create the K-Nearest Neighbors algorithm. For this + // example, we will be choosing k = 1. This means that, for a given + // instance, only its nearest neighbor will be used to cast a new + // decision. + + // In order to compare strings, we will be using Levenshtein's string distance + KNearestNeighbors<string> knn = new KNearestNeighbors<string>(k: 1, classes: 2, + inputs: inputs, outputs: outputs, distance: Distance.Levenshtein); + + + // After the algorithm has been created, we can use it: + int answer = knn.Compute("Chars"); // answer should be 1. + + + + + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + + The input data points. + The associated labels for the input points. + The distance measure to use in the decision. + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + + The input data points. + The associated labels for the input points. + The distance measure to use in the decision. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + + The most likely label for the given point. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + A value between 0 and 1 giving + the strength of the classification in relation to the + other classes. + + The most likely label for the given point. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + The distance score for each possible class. + + The most likely label for the given point. + + + + + Gets the top points that are the closest + to a given reference point. + + + The query point whose neighbors will be found. + The label for each neighboring point. + + + An array containing the top points that are + at the closest possible distance to . + + + + + + Gets the set of points given + as input of the algorithm. + + + The input points. + + + + + Gets the set of labels associated + with each point. + + + + + + Gets the number of class labels + handled by this classifier. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets the number of nearest + neighbors to be used in the decision. + + + The number of neighbors. + + + + + Fitting function delegate. + + + + The sample indexes to be used as training samples in + the model fitting procedure. + + The sample indexes to be used as validation samples in + the model fitting procedure. + + + The fitting function is called during the Bootstrap + procedure to fit a model with the given set of samples + for training and validation. + + + + + + Bootstrap method for generalization + performance measurements. + + + + + // This is a sample code on how to use Bootstrap estimate + // to assess the performance of Support Vector Machines. + + // Consider the example binary data. We will be trying + // to learn a XOR problem and see how well does SVMs + // perform on this data. + + double[][] data = + { + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + }; + + int[] xor = // result of xor for the sample input data + { + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + }; + + + // Create a new Bootstrap algorithm passing the set size and the number of resamplings + var bootstrap = new Bootstrap(size: data.Length, subsamples: 50); + + // Define a fitting function using Support Vector Machines. The objective of this + // function is to learn a SVM in the subset of the data indicated by the bootstrap. + + bootstrap.Fitting = delegate(int[] indicesTrain, int[] indicesValidation) + { + // The fitting function is passing the indices of the original set which + // should be considered training data and the indices of the original set + // which should be considered validation data. + + // Lets now grab the training data: + var trainingInputs = data.Submatrix(indicesTrain); + var trainingOutputs = xor.Submatrix(indicesTrain); + + // And now the validation data: + var validationInputs = data.Submatrix(indicesValidation); + var validationOutputs = xor.Submatrix(indicesValidation); + + + // Create a Kernel Support Vector Machine to operate on the set + var svm = new KernelSupportVectorMachine(new Polynomial(2), 2); + + // Create a training algorithm and learn the training data + var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs); + + double trainingError = smo.Run(); + + // Now we can compute the validation error on the validation data: + double validationError = smo.ComputeError(validationInputs, validationOutputs); + + // Return a new information structure containing the model and the errors achieved. + return new BootstrapValues(trainingError, validationError); + }; + + + // Compute the bootstrap estimate + var result = bootstrap.Compute(); + + // Finally, access the measured performance. + double trainingErrors = result.Training.Mean; + double validationErrors = result.Validation.Mean; + + // And compute the 0.632 estimate + double estimate = result.Estimate; + + + + + + + + + + + + + Creates a new Bootstrap estimation algorithm. + + + The size of the complete dataset. + The number B of bootstrap resamplings to perform. + + + + + Creates a new Bootstrap estimation algorithm. + + + The size of the complete dataset. + The number B of bootstrap resamplings to perform. + The number of samples in each subsample. Default + is to use the total number of samples in the population dataset.. + + + + + Creates a new Bootstrap estimation algorithm. + + + The size of the complete dataset. + The indices of the bootstrap samplings. + + + + + Gets the indices for the training and validation + sets for the specified validation fold index. + + + The index of the validation fold. + The indices for the observations in the training set. + The indices for the observations in the validation set. + + + + + Computes the cross validation algorithm. + + + + + + Gets the number of instances in training and validation + sets for the specified validation fold index. + + + The index of the bootstrap sample. + The number of instances in the training set. + The number of instances in the validation set. + + + + + Draws the bootstrap samples from the population. + + + The size of the samples to be drawn. + The number of samples to drawn. + The size of the samples to be drawn. + + The indices of the samples in the original set. + + + + + Gets the number B of bootstrap samplings + to be drawn from the population dataset. + + + + + + Gets the total number of samples in the population dataset. + + + + + + Gets the bootstrap samples drawn from + the population dataset as indices. + + + + + + Gets or sets the model fitting function. + + + The fitting function should accept an array of integers containing the + indexes for the training samples, an array of integers containing the + indexes for the validation samples and should return information about + the model fitted using those two subsets of the available data. + + + + + + Gets or sets a value indicating whether to use parallel + processing through the use of multiple threads or not. + Default is true. + + + true to use multiple threads; otherwise, false. + + + + + Bootstrap validation analysis results. + + + + + + Initializes a new instance of the class. + + + The that is creating this result. + The models created during the cross-validation runs. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Loads a result from a stream. + + + The stream from which the result is to be deserialized. + + The deserialized result. + + + + + Loads a result from a stream. + + + The path to the file from which the result is to be deserialized. + + The deserialized result. + + + + + Gets the + object used to generate this result. + + + + + + Gets the performance statistics for the training set. + + + + + + Gets the performance statistics for the validation set. + + + + + Gets the 0.632 bootstrap estimate. + + + + + + Information class to store the training and validation errors of a model. + + + + + The training value for the model. + The validation value for the model. + + + + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Gets the validation value for the model. + + + + + + Gets the variance of the validation + value for the model, if available. + + + + + + Gets the training value for the model. + + + + + + Gets the variance of the training + value for the model, if available. + + + + + + Gets or sets a tag for user-defined information. + + + + + + k-Modes algorithm. + + + + The k-Modes algorithm is a variant of the k-Means which instead of + locating means attempts to locate the modes of a set of points. As + the algorithm does not require explicit numeric manipulation of the + input points (such as addition and division to compute the means), + the algorithm can be used with arbitrary (generic) data structures. + + + + + + + + + + Initializes a new instance of KMeans algorithm + + + The number of clusters to divide input data. + The distance function to use. Default is to + use the distance. + + + + + Randomizes the clusters inside a dataset. + + + The data to randomize the algorithm. + True to use the k-means++ seeding algorithm. False otherwise. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + The average distance metric from the + data points to the clusters' centroids. + + + + + + Determines if the algorithm has converged by comparing the + centroids between two consecutive iterations. + + + The previous centroids. + The new centroids. + A convergence threshold. + + Returns if all centroids had a percentage change + less than . Returns otherwise. + + + + + Gets the clusters found by K-modes. + + + + + + Gets the number of clusters. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + k-Modes algorithm. + + + + + The k-Modes algorithm is a variant of the k-Means which instead of + locating means attempts to locate the modes of a set of points. As + the algorithm does not require explicit numeric manipulation of the + input points (such as addition and division to compute the means), + the algorithm can be used with arbitrary (generic) data structures. + + This is the specialized, non-generic version of the K-Modes algorithm + that is set to work on arrays. + + + + + + + + Initializes a new instance of K-Modes algorithm + + + The number of clusters to divide input data. + + + + + Modes for storing models. + + + + + + Stores a model on each iteration. This is the most + intensive method, but enables a quick restoration + of any point on the learning history. + + + + + + Stores only the model which had shown the minimum + validation value in the training history. All other + models are discarded and only their validation and + training values will be registered. + + + + + + Stores only the model which had shown the maximum + validation value in the training history. All other + models are discarded and only their validation and + training values will be registered. + + + + + + Early stopping training procedure. + + + + The early stopping training procedure monitors a validation set + during training to determine when a learning algorithm has stopped + learning and started to overfit data. This class keeps an history + of training and validation errors and will keep the best model found + during learning. + + + The type of the model to be trained. + + + + + Creates a new early stopping procedure object. + + + + + + Starts the model training, calling the + on each iteration. + + + True if the model training has converged, false otherwise. + + + + + Gets or sets the maximum number of iterations + performed by the early stopping algorithm. Default + is 0 (run until convergence). + + + + + + Gets or sets the minimum tolerance value used + to determine convergence. Default is 1e-5. + + + + + + Gets the history of training and validation values + registered at each iteration of the learning algorithm. + + + + + + Gets the model with minimum validation error found during learning. + + + + + + Gets the model with maximum validation error found during learning. + + + + + + Gets or sets the storage policy for the procedure. + + + + + Gets or sets the iteration function for the procedure. This + function will be called on each iteration and should run one + iteration of the learning algorithm for the given model. + + + + + + Range of parameters to be tested in a grid search. + + + + + + Constructs a new GridsearchRange object. + + + The name for this parameter. + The starting value for this range. + The end value for this range. + The step size for this range. + + + + + Constructs a new GridSearchRange object. + + + The name for this parameter. + The array of values to try. + + + + + Gets the array of GridSearchParameters to try. + + + + + + Gets or sets the name of the parameter from which the range belongs to. + + + + + + Gets or sets the range of values that should be tested for this parameter. + + + + + + GridSearchRange collection. + + + + + + Constructs a new collection of GridsearchRange objects. + + + + + + Returns the identifying value for an item on this collection. + + + + + + Adds a parameter range to the end of the GridsearchRangeCollection. + + + + + + Contains the name and value of a parameter that should be used during fitting. + + + + + + Constructs a new parameter. + + + The name for the parameter. + The value for the parameter. + + + + + Determines whether the specified object is equal + to the current GridSearchParameter object. + + + + + + Returns the hash code for this GridSearchParameter + + + + + + Compares two GridSearchParameters for equality. + + + + + + Compares two GridSearchParameters for inequality. + + + + + + Gets the name of the parameter + + + + + + Gets the value of the parameter. + + + + + + Grid search parameter collection. + + + + + + Constructs a new collection of GridsearchParameter objects. + + + + + + Constructs a new collection of GridsearchParameter objects. + + + + + + Returns the identifying value for an item on this collection. + + + + + + Training and validation errors of a model. + + + The type of the model. + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Gets the model. + + + + + + Gets the validation value for the model. + + + + + + Gets the variance of the validation + value for the model, if available. + + + + + + Gets the training value for the model. + + + + + + Gets the variance of the training + value for the model, if available. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Class for representing results acquired through + a k-fold cross-validation analysis. + + + The type of the model being analyzed. + + + + + Initializes a new instance of the class. + + + The that is creating this result. + The models created during the cross-validation runs. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Saves the result to a stream. + + + The stream to which the result is to be serialized. + + + + + Loads a result from a stream. + + + The stream from which the result is to be deserialized. + + The deserialized result. + + + + + Loads a result from a stream. + + + The path to the file from which the result is to be deserialized. + + The deserialized result. + + + + + Gets the + object used to generate this result. + + + + + + Gets the performance statistics for the training set. + + + + + + Gets the performance statistics for the validation set. + + + + + Gets the models created for each fold of the cross validation. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Information class to store the training and validation errors of a model. + + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The validation value for the model. + The variance of the training values. + The variance of the validation values. + + + + + Creates a new Cross-Validation Values class. + + + The fitted model. + The training value for the model. + The variance of the training values. + + + + + Summary statistics for a cross-validation trial. + + + + + + Create a new cross-validation statistics class. + + + The number of samples used to compute the statistics. + The performance statistics gathered during the run. + + + + + Create a new cross-validation statistics class. + + + The number of samples used to compute the statistics. + The performance statistics gathered during the run. + The variance of the statistics gathered during the run, if available. + + + + + Gets the values acquired during the cross-validation. + Most often those will be the errors for each folding. + + + + + + Gets the variance for each value acquired during the cross-validation. + Most often those will be the error variance for each folding. + + + + + + Gets the number of samples used to compute the variance + of the values acquired during the cross-validation. + + + + + + Gets the mean of the performance statistics. + + + + + + Gets the variance of the performance statistics. + + + + + + Gets the standard deviation of the performance statistics. + + + + + + Gets the pooled variance of the performance statistics. + + + + + + Gets the pooled standard deviation of the performance statistics. + + + + + + Gets or sets a tag for user-defined information. + + + + + + k-Fold cross-validation. + + + + + Cross-validation is a technique for estimating the performance of a predictive + model. It can be used to measure how the results of a statistical analysis will + generalize to an independent data set. It is mainly used in settings where the + goal is prediction, and one wants to estimate how accurately a predictive model + will perform in practice. + + One round of cross-validation involves partitioning a sample of data into + complementary subsets, performing the analysis on one subset (called the + training set), and validating the analysis on the other subset (called the + validation set or testing set). To reduce variability, multiple rounds of + cross-validation are performed using different partitions, and the validation + results are averaged over the rounds. + + + References: + + + Wikipedia, The Free Encyclopedia. Cross-validation (statistics). Available on: + http://en.wikipedia.org/wiki/Cross-validation_(statistics) + + + + + + // This is a sample code on how to use Cross-Validation + // to assess the performance of Support Vector Machines. + + // Consider the example binary data. We will be trying + // to learn a XOR problem and see how well does SVMs + // perform on this data. + + double[][] data = + { + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + }; + + int[] xor = // result of xor for the sample input data + { + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + }; + + + // Create a new Cross-validation algorithm passing the data set size and the number of folds + var crossvalidation = new CrossValidation(size: data.Length, folds: 3); + + // Define a fitting function using Support Vector Machines. The objective of this + // function is to learn a SVM in the subset of the data indicated by cross-validation. + + crossvalidation.Fitting = delegate(int k, int[] indicesTrain, int[] indicesValidation) + { + // The fitting function is passing the indices of the original set which + // should be considered training data and the indices of the original set + // which should be considered validation data. + + // Lets now grab the training data: + var trainingInputs = data.Submatrix(indicesTrain); + var trainingOutputs = xor.Submatrix(indicesTrain); + + // And now the validation data: + var validationInputs = data.Submatrix(indicesValidation); + var validationOutputs = xor.Submatrix(indicesValidation); + + + // Create a Kernel Support Vector Machine to operate on the set + var svm = new KernelSupportVectorMachine(new Polynomial(2), 2); + + // Create a training algorithm and learn the training data + var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs); + + double trainingError = smo.Run(); + + // Now we can compute the validation error on the validation data: + double validationError = smo.ComputeError(validationInputs, validationOutputs); + + // Return a new information structure containing the model and the errors achieved. + return new CrossValidationValues(svm, trainingError, validationError); + }; + + + // Compute the cross-validation + var result = crossvalidation.Compute(); + + // Finally, access the measured performance. + double trainingErrors = result.Training.Mean; + double validationErrors = result.Validation.Mean; + + + + + + + + + + + k-Fold cross-validation. + + + The type of the model being analyzed. + + + + Cross-validation is a technique for estimating the performance of a predictive + model. It can be used to measure how the results of a statistical analysis will + generalize to an independent data set. It is mainly used in settings where the + goal is prediction, and one wants to estimate how accurately a predictive model + will perform in practice. + + One round of cross-validation involves partitioning a sample of data into + complementary subsets, performing the analysis on one subset (called the + training set), and validating the analysis on the other subset (called the + validation set or testing set). To reduce variability, multiple rounds of + cross-validation are performed using different partitions, and the validation + results are averaged over the rounds. + + + References: + + + Wikipedia, The Free Encyclopedia. Cross-validation (statistics). Available on: + http://en.wikipedia.org/wiki/Cross-validation_(statistics) + + + + + + // This is a sample code on how to use Cross-Validation + // to access the performance of Support Vector Machines. + + // Consider the example binary data. We will be trying + // to learn a XOR problem and see how well does SVMs + // perform on this data. + + double[][] data = + { + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + new double[] { -1, -1 }, new double[] { 1, -1 }, + new double[] { -1, 1 }, new double[] { 1, 1 }, + }; + + int[] xor = // result of xor for the sample input data + { + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + -1, 1, + 1, -1, + }; + + + // Create a new Cross-validation algorithm passing the data set size and the number of folds + var crossvalidation = new CrossValidation<KernelSupportVectorMachine>(size: data.Length, folds: 3); + + // Define a fitting function using Support Vector Machines. The objective of this + // function is to learn a SVM in the subset of the data indicated by cross-validation. + + crossvalidation.Fitting = delegate(int k, int[] indicesTrain, int[] indicesValidation) + { + // The fitting function is passing the indices of the original set which + // should be considered training data and the indices of the original set + // which should be considered validation data. + + // Lets now grab the training data: + var trainingInputs = data.Submatrix(indicesTrain); + var trainingOutputs = xor.Submatrix(indicesTrain); + + // And now the validation data: + var validationInputs = data.Submatrix(indicesValidation); + var validationOutputs = xor.Submatrix(indicesValidation); + + + // Create a Kernel Support Vector Machine to operate on the set + var svm = new KernelSupportVectorMachine(new Polynomial(2), 2); + + // Create a training algorithm and learn the training data + var smo = new SequentialMinimalOptimization(svm, trainingInputs, trainingOutputs); + + double trainingError = smo.Run(); + + // Now we can compute the validation error on the validation data: + double validationError = smo.ComputeError(validationInputs, validationOutputs); + + // Return a new information structure containing the model and the errors achieved. + return new CrossValidationValues<KernelSupportVectorMachine>(svm, trainingError, validationError); + }; + + + // Compute the cross-validation + var result = crossvalidation.Compute(); + + // Finally, access the measured performance. + double trainingErrors = result.Training.Mean; + double validationErrors = result.Validation.Mean; + + + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + A vector containing class labels. + The number of different classes in . + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + An already created set of fold indices for each sample in a dataset. + The total number of folds referenced in the parameter. + + + + + Gets the indices for the training and validation + sets for the specified validation fold index. + + + The index of the validation fold. + The indices for the observations in the training set. + The indices for the observations in the validation set. + + + + + Gets the number of instances in training and validation + sets for the specified validation fold index. + + + The index of the validation fold. + The number of instances in the training set. + The number of instances in the validation set. + + + + + Computes the cross validation algorithm. + + + + + + Gets or sets the model fitting function. + + + The fitting function should accept an array of integers containing the + indexes for the training samples, an array of integers containing the + indexes for the validation samples and should return information about + the model fitted using those two subsets of the available data. + + + + + + Gets the array of data set indexes contained in each fold. + + + + + + Gets the array of fold indices for each point in the data set. + + + + + + Gets the number of folds in the k-fold cross validation. + + + + + + Gets the total number of data samples in the data set. + + + + + + Gets or sets a value indicating whether to use parallel + processing through the use of multiple threads or not. + Default is true. + + + true to use multiple threads; otherwise, false. + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + + + + + Creates a new k-fold cross-validation algorithm. + + + The total number samples in the entire dataset. + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + A vector containing class labels. + The number of different classes in . + The number of folds, usually denoted as k (default is 10). + + + + + Creates a new k-fold cross-validation algorithm. + + + An already created set of fold indices for each sample in a dataset. + The total number of folds referenced in the parameter. + + + + + Create cross-validation folds by generating a vector of random fold indices. + + + The number of points in the data set. + The number of folds in the cross-validation. + + A vector of indices defining the a fold for each point in the data set. + + + + + Create cross-validation folds by generating a vector of random fold indices, + making sure class labels get equally distributed among the folds. + + + A vector containing class labels. + The number of different classes in . + The number of folds in the cross-validation. + + A vector of indices defining the a fold for each point in the data set. + + + + + Fitting function delegate. + + + + The fold index. + + The sample indexes to be used as training samples in + the model fitting procedure. + + The sample indexes to be used as validation samples in + the model fitting procedure. + + + The fitting function is called during the Cross-validation + procedure to fit a model with the given set of samples for + training and validation. + + + + + + Attribute category. + + + + + + Attribute is discrete-valued. + + + + + + Attribute is continuous-valued. + + + + + + Decision attribute. + + + + + + Creates a new . + + + The name of the attribute. + The range of valid values for this attribute. Default is [0;1]. + + + + + Creates a new . + + + The name of the attribute. + The attribute's nature (i.e. real-valued or discrete-valued). + + + + + Creates a new . + + + The name of the attribute. + The range of valid values for this attribute. + + + + + Creates a new discrete-valued . + + + The name of the attribute. + The number of possible values for this attribute. + + + + + Creates a new continuous . + + + The name of the attribute. + + + + + Creates a new continuous . + + + The name of the attribute. + The range of valid values for this attribute. Default is [0;1]. + + + + + Creates a new discrete . + + + The name of the attribute. + The range of valid values for this attribute. + + + + + Creates a new discrete-valued . + + + The name of the attribute. + The number of possible values for this attribute. + + + + + Creates a set of decision variables from a codebook. + + + The codebook containing information about the variables. + The columns to consider as decision variables. + + An array of objects + initialized with the values from the codebook. + + + + + Gets the name of the attribute. + + + + + + Gets the nature of the attribute (i.e. real-valued or discrete-valued). + + + + + + Gets the valid range of the attribute. + + + + + + Collection of decision attributes. + + + + + + Initializes a new instance of the class. + + + The list to initialize the collection. + + + + + C4.5 Learning algorithm for Decision Trees. + + + + + References: + + + Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan + Kaufmann Publishers, 1993. + + Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan + Kaufmann Publishers, 1993. + + Quinlan, J. R. Improved use of continuous attributes in c4.5. Journal + of Artificial Intelligence Research, 4:77-90, 1996. + + Mitchell, T. M. Machine Learning. McGraw-Hill, 1997. pp. 55-58. + + Wikipedia, the free encyclopedia. ID3 algorithm. Available on + http://en.wikipedia.org/wiki/ID3_algorithm + + + + + + + + + // This example uses the Nursery Database available from the University of + // California Irvine repository of machine learning databases, available at + // + // http://archive.ics.uci.edu/ml/machine-learning-databases/nursery/nursery.names + // + // The description paragraph is listed as follows. + // + // Nursery Database was derived from a hierarchical decision model + // originally developed to rank applications for nursery schools. It + // was used during several years in 1980's when there was excessive + // enrollment to these schools in Ljubljana, Slovenia, and the + // rejected applications frequently needed an objective + // explanation. The final decision depended on three subproblems: + // occupation of parents and child's nursery, family structure and + // financial standing, and social and health picture of the family. + // The model was developed within expert system shell for decision + // making DEX (M. Bohanec, V. Rajkovic: Expert system for decision + // making. Sistemica 1(1), pp. 145-157, 1990.). + // + + // Let's begin by loading the raw data. This string variable contains + // the contents of the nursery.data file as a single, continuous text. + // + string nurseryData = Resources.nursery; + + // Those are the input columns available in the data + // + string[] inputColumns = + { + "parents", "has_nurs", "form", "children", + "housing", "finance", "social", "health" + }; + + // And this is the output, the last column of the data. + // + string outputColumn = "output"; + + + // Let's populate a data table with this information. + // + DataTable table = new DataTable("Nursery"); + table.Columns.Add(inputColumns); + table.Columns.Add(outputColumn); + + string[] lines = nurseryData.Split( + new[] { Environment.NewLine }, StringSplitOptions.None); + + foreach (var line in lines) + table.Rows.Add(line.Split(',')); + + + // Now, we have to convert the textual, categorical data found + // in the table to a more manageable discrete representation. + // + // For this, we will create a codebook to translate text to + // discrete integer symbols: + // + Codification codebook = new Codification(table); + + // And then convert all data into symbols + // + DataTable symbols = codebook.Apply(table); + double[][] inputs = symbols.ToArray(inputColumns); + int[] outputs = symbols.ToArray<int>(outputColumn); + + // From now on, we can start creating the decision tree. + // + var attributes = DecisionVariable.FromCodebook(codebook, inputColumns); + DecisionTree tree = new DecisionTree(attributes, outputClasses: 5); + + + // Now, let's create the C4.5 algorithm + C45Learning c45 = new C45Learning(tree); + + // and learn a decision tree. The value of + // the error variable below should be 0. + // + double error = c45.Run(inputs, outputs); + + + // To compute a decision for one of the input points, + // such as the 25-th example in the set, we can use + // + int y = tree.Compute(inputs[25]); + + // Finally, we can also convert our tree to a native + // function, improving efficiency considerably, with + // + Func<double[], int> func = tree.ToExpression().Compile(); + + // Again, to compute a new decision, we can just use + // + int z = func(inputs[25]); + + + + + + + Creates a new C4.5 learning algorithm. + + + The decision tree to be generated. + + + + + Runs the learning algorithm, creating a decision + tree modeling the given inputs and outputs. + + + The inputs. + The corresponding outputs. + + The error of the generated tree. + + + + + Computes the prediction error for the tree + over a given set of input and outputs. + + + The input points. + The corresponding output labels. + + The percentage error of the prediction. + + + + + Gets or sets the maximum allowed + height when learning a tree. + + + + + + Gets or sets the step at which the samples will + be divided when dividing continuous columns in + binary classes. Default is 1. + + + + + + Gets or sets how many times one single variable can be + integrated into the decision process. In the original + ID3 algorithm, a variable can join only one time per + decision path (path from the root to a leaf). + + + + + + Static class for common information measures. + + + + + + Computes the split information measure. + + + The total number of samples. + The partitioning. + The split information for the given partitions. + + + + + Decision Tree (Linq) Expression Creator. + + + + + + Initializes a new instance of the class. + + + The decision tree. + + + + + Creates an expression for the tree. + + + A strongly typed lambda expression in the form + of an expression tree + representing the . + + + + + ID3 (Iterative Dichotomizer 3) learning algorithm + for Decision Trees. + + + + + References: + + + Quinlan, J. R 1986. Induction of Decision Trees. + Mach. Learn. 1, 1 (Mar. 1986), 81-106. + + Mitchell, T. M. Machine Learning. McGraw-Hill, 1997. pp. 55-58. + + Wikipedia, the free encyclopedia. ID3 algorithm. Available on + http://en.wikipedia.org/wiki/ID3_algorithm + + + + + + + In this example, we will be using the famous Play Tennis example by Tom Mitchell (1998). + In Mitchell's example, one would like to infer if a person would play tennis or not + based solely on four input variables. Those variables are all categorical, meaning that + there is no order between the possible values for the variable (i.e. there is no order + relationship between Sunny and Rain, one is not bigger nor smaller than the other, but are + just distinct). Moreover, the rows, or instances presented above represent days on which the + behavior of the person has been registered and annotated, pretty much building our set of + observation instances for learning: + + + DataTable data = new DataTable("Mitchell's Tennis Example"); + + data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + data.Rows.Add( "D1", "Sunny", "Hot", "High", "Weak", "No" ); + data.Rows.Add( "D2", "Sunny", "Hot", "High", "Strong", "No" ); + data.Rows.Add( "D3", "Overcast", "Hot", "High", "Weak", "Yes" ); + data.Rows.Add( "D4", "Rain", "Mild", "High", "Weak", "Yes" ); + data.Rows.Add( "D5", "Rain", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D6", "Rain", "Cool", "Normal", "Strong", "No" ); + data.Rows.Add( "D7", "Overcast", "Cool", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D8", "Sunny", "Mild", "High", "Weak", "No" ); + data.Rows.Add( "D9", "Sunny", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D10", "Rain", "Mild", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D11", "Sunny", "Mild", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D12", "Overcast", "Mild", "High", "Strong", "Yes" ); + data.Rows.Add( "D13", "Overcast", "Hot", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D14", "Rain", "Mild", "High", "Strong", "No" ); + + + + In order to try to learn a decision tree, we will first convert this problem to a more simpler + representation. Since all variables are categories, it does not matter if they are represented + as strings, or numbers, since both are just symbols for the event they represent. Since numbers + are more easily representable than text string, we will convert the problem to use a discrete + alphabet through the use of a codebook. + + + A codebook effectively transforms any distinct possible value for a variable into an integer + symbol. For example, “Sunny” could as well be represented by the integer label 0, “Overcast” + by “1”, Rain by “2”, and the same goes by for the other variables. So: + + + // Create a new codification codebook to + // convert strings into integer symbols + Codification codebook = new Codification(data, + "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // Translate our training data into integer symbols using our codebook: + DataTable symbols = codebook.Apply(data); + int[][] inputs = symbols.ToArray<int>("Outlook", "Temperature", "Humidity", "Wind"); + int[] outputs = symbols.ToArray<int>("PlayTennis"); + + + + Now that we already have our learning input/ouput pairs, we should specify our + decision tree. We will be trying to build a tree to predict the last column, entitled + “PlayTennis”. For this, we will be using the “Outlook”, “Temperature”, “Humidity” and + “Wind” as predictors (variables which will we will use for our decision). Since those + are categorical, we must specify, at the moment of creation of our tree, the + characteristics of each of those variables. So: + + + + // Gather information about decision variables + DecisionVariable[] attributes = + { + new DecisionVariable("Outlook", 3), // 3 possible values (Sunny, overcast, rain) + new DecisionVariable("Temperature", 3), // 3 possible values (Hot, mild, cool) + new DecisionVariable("Humidity", 2), // 2 possible values (High, normal) + new DecisionVariable("Wind", 2) // 2 possible values (Weak, strong) + }; + + int classCount = 2; // 2 possible output values for playing tennis: yes or no + + //Create the decision tree using the attributes and classes + DecisionTree tree = new DecisionTree(attributes, classCount); + + + Now we have created our decision tree. Unfortunately, it is not really very useful, + since we haven't taught it the problem we are trying to predict. So now we must instantiate + a learning algorithm to make it useful. For this task, in which we have only categorical + variables, the simplest choice is to use the ID3 algorithm by Quinlan. Let’s do it: + + + // Create a new instance of the ID3 algorithm + ID3Learning id3learning = new ID3Learning(tree); + + // Learn the training instances! + id3learning.Run(inputs, outputs); + + + The tree can now be queried for new examples through its + method. For example, we can use: + + + string answer = codebook.Translate("PlayTennis", + tree.Compute(codebook.Translate("Sunny", "Hot", "High", "Strong"))); + + + In the above example, answer will be "No". + + + + + + + + + + Creates a new ID3 learning algorithm. + + + The decision tree to be generated. + + + + + Runs the learning algorithm, creating a decision + tree modeling the given inputs and outputs. + + + The inputs. + The corresponding outputs. + + The error of the generated tree. + + + + + Computes the prediction error for the tree + over a given set of input and outputs. + + + The input points. + The corresponding output labels. + + The percentage error of the prediction. + + + + + Gets or sets the maximum allowed height when + learning a tree. If set to zero, no limit will + be applied. Default is zero. + + + + + + Gets or sets whether all nodes are obligated to provide + a true decision value. If set to false, some leaf nodes + may contain null. Default is false. + + + + + + Gets or sets how many times one single variable can be + integrated into the decision process. In the original + ID3 algorithm, a variable can join only one time per + decision path (path from the root to a leaf). + + + + + + Decision tree. + + + + + Represent a decision tree which can be compiled to + code at run-time. For sample usage and example of + learning, please see the + ID3 learning algorithm for decision trees. + + + + + + + + + Creates a new to process + the given and the given + number of possible . + + + An array specifying the attributes to be processed by this tree. + The number of possible output classes for the given attributes. + + + + + Computes the decision for a given input. + + + The input data. + + A predicted class for the given input. + + + + + Computes the tree decision for a given input. + + + The input data. + + A predicted class for the given input. + + + + + Computes the tree decision for a given input. + + + The input data. + The node where the decision starts. + + A predicted class for the given input. + + + + + Returns an enumerator that iterates through the tree. + + + + An object that can be + used to iterate through the collection. + + + + + + Traverse the tree using a tree + traversal method. Can be iterated with a foreach loop. + + + The tree traversal method. Common methods are + available in the static class. + + An object which can be used to + traverse the tree using the chosen traversal method. + + + + + Traverse a subtree using a tree + traversal method. Can be iterated with a foreach loop. + + + The tree traversal method. Common methods are + available in the static class. + The root of the subtree to be traversed. + + An object which can be used to + traverse the tree using the chosen traversal method. + + + + + Transforms the tree into a set of decision rules. + + + A created from this tree. + + + + + Creates an Expression Tree representation + of this decision tree, which can in turn be compiled into code. + + + A tree in the form of an expression tree. + + + + + Creates a .NET assembly (.dll) containing a static class of + the given name implementing the decision tree. The class will + contain a single static Compute method implementing the tree. + + + The name of the assembly to generate. + The name of the generated static class. + + + + + Creates a .NET assembly (.dll) containing a static class of + the given name implementing the decision tree. The class will + contain a single static Compute method implementing the tree. + + + The name of the assembly to generate. + The namespace which should contain the class. + The name of the generated static class. + + + + + Generates a C# class implementing the decision tree. + + + The name for the generated class. + + A string containing the generated class. + + + + + Generates a C# class implementing the decision tree. + + + The name for the generated class. + The where the class should be written. + + + + + Computes the height of the tree, defined as the + greatest distance (in links) between the tree's + root node and its leaves. + + + The tree's height. + + + + + Loads a tree from a file. + + + The path to the file from which the tree is to be deserialized. + + The deserialized tree. + + + + + Saves the tree to a stream. + + + The stream to which the tree is to be serialized. + + + + + Loads a tree from a stream. + + + The stream from which the tree is to be deserialized. + + The deserialized tree. + + + + + Loads a tree from a file. + + + The path to the tree from which the machine is to be deserialized. + + The deserialized tree. + + + + + Gets or sets the root node for this tree. + + + + + + Gets the collection of attributes processed by this tree. + + + + + + Gets the number of distinct output + classes classified by this tree. + + + + + + Gets the number of input attributes + expected by this tree. + + + + + + Decision Tree (DT) Node. + + + + Each node of a decision tree can play two roles. When a node is not a leaf, it + contains a with a collection of child nodes. The + branch specifies an attribute index, indicating which column from the data set + (the attribute) should be compared against its children values. The type of the + comparison is specified by each of the children. When a node is a leaf, it will + contain the output value which should be decided for when the node is reached. + + + + + + + + Creates a new decision node. + + + The owner tree for this node. + + + + + Computes whether a value satisfies + the condition imposed by this node. + + + The value x. + + true if the value satisfies this node's + condition; otherwise, false. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Computes the height of the node, defined as the + distance (in number of links) between the tree's + root node and this node. + + + The node's height. + + + + + Returns an enumerator that iterates through the node's subtree. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the node's subtree. + + + + An object that can be used to iterate through the collection. + + + + + + Gets or sets the value this node responds to + whenever this node acts as a child node. This + value is set only when the node has a parent. + + + + + + Gets or sets the type of the comparison which + should be done against . + + + + + + If this is a leaf node, gets or sets the output + value to be decided when this node is reached. + + + + + + If this is not a leaf node, gets or sets the collection + of child nodes for this node, together with the attribute + determining the reasoning process for those children. + + + + + + Gets or sets the parent of this node. If this is a root + node, the parent is null. + + + + + + Gets the containing this node. + + + + + + Gets a value indicating whether this instance is a root node (has no parent). + + + true if this instance is a root; otherwise, false. + + + + + Gets a value indicating whether this instance is a leaf (has no children). + + + true if this instance is a leaf; otherwise, false. + + + + + Gaussian mixture model clustering. + + + + Gaussian Mixture Models are one of most widely used model-based + clustering methods. This specialized class provides a wrap-up + around the + + Mixture<NormalDistribution> distribution and provides + mixture initialization using the K-Means clustering algorithm. + + + + + // Create a new Gaussian Mixture Model with 2 components + GaussianMixtureModel gmm = new GaussianMixtureModel(2); + + // Compute the model (estimate) + gmm.Compute(samples, 0.0001); + + // Get classification for a new sample + int c = gmm.Gaussians.Nearest(sample); + + + + + + + Gets a copy of the mixture distribution modeled by this Gaussian Mixture Model. + + + + + + Initializes a new instance of the class. + + + + The number of clusters in the clusterization problem. This will be + used to set the number of components in the mixture model. + + + + + Initializes a new instance of the class. + + + + The initial solution as a K-Means clustering. + + + + + Initializes a new instance of the class. + + + + The initial solution as a mixture of normal distributions. + + + + + Initializes a new instance of the class. + + + + The initial solution as a mixture of normal distributions. + + + + + Initializes the model with initial values obtained + through a run of the K-Means clustering algorithm. + + + + + + Initializes the model with initial values obtained + through a run of the K-Means clustering algorithm. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Initializes the model with initial values. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Divides the input data into K clusters modeling each + cluster as a multivariate Gaussian distribution. + + + + + + Returns the most likely clusters of an observation. + + + An input observation. + + + The index of the most likely cluster + of the given observation. + + + + + Returns the most likely clusters of an observation. + + + An input observation. + The likelihood responses for each cluster. + + + The index of the most likely cluster + of the given observation. + + + + + Returns the most likely clusters for an array of observations. + + + An set of observations. + + + An array containing the index of the most likely cluster + for each of the given observations. + + + + + Gets the Gaussian components of the mixture model. + + + + + + Options for Gaussian Mixture Model fitting. + + + + This class provides different options that can be passed to a + object when calling its + + method. + + + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + + + The convergence threshold. + + + + + Gets or sets the maximum number of iterations + to be performed by the Expectation-Maximization + algorithm. Default is zero (iterate until convergence). + + + + + + Gets or sets whether to make computations using the log + -domain. This might improve accuracy on large datasets. + + + + + + Gets or sets the sample weights. If set to null, + the data will be assumed equal weights. Default + is null. + + + + + + Gets or sets the fitting options for the component + Gaussian distributions of the mixture model. + + + The fitting options for inner Gaussian distributions. + + + + + Naïve Bayes Classifier. + + + + + A naive Bayes classifier is a simple probabilistic classifier based on applying Bayes' theorem + with strong (naive) independence assumptions. A more descriptive term for the underlying probability + model would be "independent feature model". + + In simple terms, a naive Bayes classifier assumes that the presence (or absence) of a particular + feature of a class is unrelated to the presence (or absence) of any other feature, given the class + variable. In spite of their naive design and apparently over-simplified assumptions, naive Bayes + classifiers have worked quite well in many complex real-world situations. + + + This class implements a discrete (integer-valued) Naive-Bayes classifier. There is also a + special named constructor to create classifiers assuming normal + distributions for each variable. For arbitrary distribution classifiers, please see + . + + + References: + + + Wikipedia contributors. "Naive Bayes classifier." Wikipedia, The Free Encyclopedia. + Wikipedia, The Free Encyclopedia, 16 Dec. 2011. Web. 5 Jan. 2012. + + + + + + + In this example, we will be using the famous Play Tennis example by Tom Mitchell (1998). + In Mitchell's example, one would like to infer if a person would play tennis or not + based solely on four input variables. Those variables are all categorical, meaning that + there is no order between the possible values for the variable (i.e. there is no order + relationship between Sunny and Rain, one is not bigger nor smaller than the other, but are + just distinct). Moreover, the rows, or instances presented below represent days on which the + behavior of the person has been registered and annotated, pretty much building our set of + observation instances for learning: + + + DataTable data = new DataTable("Mitchell's Tennis Example"); + + data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + data.Rows.Add( "D1", "Sunny", "Hot", "High", "Weak", "No" ); + data.Rows.Add( "D2", "Sunny", "Hot", "High", "Strong", "No" ); + data.Rows.Add( "D3", "Overcast", "Hot", "High", "Weak", "Yes" ); + data.Rows.Add( "D4", "Rain", "Mild", "High", "Weak", "Yes" ); + data.Rows.Add( "D5", "Rain", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D6", "Rain", "Cool", "Normal", "Strong", "No" ); + data.Rows.Add( "D7", "Overcast", "Cool", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D8", "Sunny", "Mild", "High", "Weak", "No" ); + data.Rows.Add( "D9", "Sunny", "Cool", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D10", "Rain", "Mild", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D11", "Sunny", "Mild", "Normal", "Strong", "Yes" ); + data.Rows.Add( "D12", "Overcast", "Mild", "High", "Strong", "Yes" ); + data.Rows.Add( "D13", "Overcast", "Hot", "Normal", "Weak", "Yes" ); + data.Rows.Add( "D14", "Rain", "Mild", "High", "Strong", "No" ); + + + Obs: The DataTable representation is not required, and instead the NaiveBayes could + also be trained directly on integer arrays containing the integer codewords. + + + In order to estimate a discrete Naive Bayes, we will first convert this problem to a more simpler + representation. Since all variables are categories, it does not matter if they are represented + as strings, or numbers, since both are just symbols for the event they represent. Since numbers + are more easily representable than text strings, we will convert the problem to use a discrete + alphabet through the use of a codebook. + + + A codebook effectively transforms any distinct possible value for a variable into an integer + symbol. For example, “Sunny” could as well be represented by the integer label 0, “Overcast” + by “1”, Rain by “2”, and the same goes by for the other variables. So: + + + // Create a new codification codebook to + // convert strings into integer symbols + Codification codebook = new Codification(data, + "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis"); + + // Translate our training data into integer symbols using our codebook: + DataTable symbols = codebook.Apply(data); + int[][] inputs = symbols.ToIntArray("Outlook", "Temperature", "Humidity", "Wind"); + int[] outputs = symbols.ToIntArray("PlayTennis").GetColumn(0); + + + + Now that we already have our learning input/ouput pairs, we should specify our + Bayes model. We will be trying to build a model to predict the last column, entitled + “PlayTennis”. For this, we will be using the “Outlook”, “Temperature”, “Humidity” and + “Wind” as predictors (variables which will we will use for our decision). Since those + are categorical, we must specify, at the moment of creation of our Bayes model, the + number of each possible symbols for those variables. + + + + // Gather information about decision variables + int[] symbolCounts = + { + codebook["Outlook"].Symbols, // 3 possible values (Sunny, overcast, rain) + codebook["Temperature"].Symbols, // 3 possible values (Hot, mild, cool) + codebook["Humidity"].Symbols, // 2 possible values (High, normal) + codebook["Wind"].Symbols // 2 possible values (Weak, strong) + }; + + int classCount = codebook["PlayTennis"].Symbols; // 2 possible values (yes, no) + + // Create a new Naive Bayes classifiers for the two classes + NaiveBayes target = new NaiveBayes(classCount, symbolCounts); + + // Compute the Naive Bayes model + target.Estimate(inputs, outputs); + + + Now that we have created and estimated our classifier, we + can query the classifier for new input samples through the method. + + + // We will be computing the label for a sunny, cool, humid and windy day: + int[] instance = codebook.Translate("Sunny", "Cool", "High", "Strong"); + + // Now, we can feed this instance to our model + int output = model.Compute(instance, out logLikelihood); + + // Finally, the result can be translated back to one of the codewords using + string result = codebook.Translate("PlayTennis", output); // result is "No" + + + + + + + + In this second example, we will be creating a simple multi-class + classification problem using integer vectors and learning a discrete + Naive Bayes on those vectors. + + + // Let's say we have the following data to be classified + // into three possible classes. Those are the samples: + // + int[][] inputs = + { + // input output + new int[] { 0, 1, 1, 0 }, // 0 + new int[] { 0, 1, 0, 0 }, // 0 + new int[] { 0, 0, 1, 0 }, // 0 + new int[] { 0, 1, 1, 0 }, // 0 + new int[] { 0, 1, 0, 0 }, // 0 + new int[] { 1, 0, 0, 0 }, // 1 + new int[] { 1, 0, 0, 0 }, // 1 + new int[] { 1, 0, 0, 1 }, // 1 + new int[] { 0, 0, 0, 1 }, // 1 + new int[] { 0, 0, 0, 1 }, // 1 + new int[] { 1, 1, 1, 1 }, // 2 + new int[] { 1, 0, 1, 1 }, // 2 + new int[] { 1, 1, 0, 1 }, // 2 + new int[] { 0, 1, 1, 1 }, // 2 + new int[] { 1, 1, 1, 1 }, // 2 + }; + + int[] outputs = // those are the class labels + { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, + }; + + // Create a discrete naive Bayes model for 3 classes and 4 binary inputs + var bayes = new NaiveBayes(classes: 3, symbols: new int[] { 2, 2, 2, 2 }); + + // Teach the model. The error should be zero: + double error = bayes.Estimate(inputs, outputs); + + // Now, let's test the model output for the first input sample: + int answer = bayes.Compute(new int[] { 0, 1, 1, 0 }); // should be 1 + + + + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of symbols for each input variable. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The prior probabilities for each output class. + The number of symbols for each input variable. + + + + + Initializes the frequency tables of a Naïve Bayes Classifier. + + + The input data. + The corresponding output labels for the input data. + True to estimate class priors from the data, false otherwise. + + The amount of regularization to be used in the m-estimator. + Default is 1e-5. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The most likely class for the instance. + + + + + Computes the most likely class for a given instance. + + + The input instance. + The log-likelihood for the instance. + The response probabilities for each class. + The most likely class for the instance. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + The prior probabilities for each output class. + + + + + Constructs a new Naïve Bayes Classifier. + + + The number of output classes. + The number of input variables. + + An initial distribution to be used to initialized all independent + distribution components of this Naive Bayes. This distribution will + be cloned and made available in the property. + + + + + + Saves the Naïve Bayes model to a stream. + + + The stream to which the Naïve Bayes model is to be serialized. + + + + + Saves the Naïve Bayes model to a stream. + + + The path to the file to which the Naïve Bayes model is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a stream. + + + The stream from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the Naïve Bayes model is to be deserialized. + + The deserialized machine. + + + + + Gets the number of possible output classes. + + + + + + Gets the number of inputs in the model. + + + + + + Gets the number of symbols for each input in the model. + + + + + + Gets the tables of log-probabilities for the frequency of + occurrence of each symbol for each class and input. + + + A double[,] array in with each row corresponds to a + class, each column corresponds to an input variable. Each + element of this double[,] array is a frequency table containing + the frequency of each symbol for the corresponding variable as + a double[] array. + + + + + Gets the prior beliefs for each class. + + + + + + K-Nearest Neighbor (k-NN) algorithm. + + + + For more detailed documentation, including examples and code snippets, + please take a look on the documentation + page. + + + + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + + The input data points. + The associated labels for the input points. + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + + The input data points. + The associated labels for the input points. + + + + + Creates a new . + + + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + The input data points. + The associated labels for the input points. + The distance measure to use. + + + + + Computes the most likely label of a new given point. + + + A point to be classified. + The distance score for each possible class. + + The most likely label for the given point. + + + + + Gets the top points that are the closest + to a given reference point. + + + The query point whose neighbors will be found. + The label for each neighboring point. + + + An array containing the top points that are + at the closest possible distance to . + + + + + + Creates a new algorithm from an existing + . The tree must have been created using the input + points and the point's class labels as the associated node information. + + + The containing the input points and their integer labels. + The number of nearest neighbors to be used in the decision. + The number of classes in the classification problem. + The input data points. + The associated labels for the input points. + + A algorithm initialized from the tree. + + + + + Split-Set Validation. + + + + This is the non-generic version of the . For + greater flexibility, consider using . + + + + + + + + + + Split-Set Validation. + + + The type of the model being analyzed. + + + + + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + The output labels to be balanced between the sets. + + + + + Computes the split-set validation algorithm. + + + + + + Gets the group labels assigned to each of the data samples. + + + + + + Gets the desired proportion of cases in + the training set in comparison to the + testing set. + + + + + + Gets or sets a value indicating whether the prevalence of + an output label should be balanced between training and + testing sets. + + + + true if this instance is stratified; otherwise, false. + + + + + + Gets the indices of elements in the validation set. + + + + + + Gets the indices of elements in the training set. + + + + + + Get or sets the model fitting function. + + + + + + Gets or sets the performance estimation function. + + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + + + + + Creates a new split-set validation algorithm. + + + The total number of available samples. + The desired proportion of samples in the training + set in comparison with the testing set. + The output labels to be balanced between the sets. + + + + + Summary statistics for a Split-set validation trial. + + + + + + Create a new split-set statistics class. + + + The generated model. + The number of samples used to compute the statistic. + The performance statistic gathered during the run. + The variance of the performance statistic during the run. + + + + + Gets the model created with the + + + + + Gets the values acquired during the cross-validation. + Most often those will be the errors for each folding. + + + + + + Gets the variance for each value acquired during the cross-validation. + Most often those will be the error variance for each folding. + + + + + + Gets the number of samples used to compute the variance + of the values acquired during the validation. + + + + + + Gets the standard deviation of the performance statistic. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Summary statistics for a Split-set validation trial. + + + + + + Create a new split-set statistics class. + + + The generated model. + The number of samples used to compute the statistic. + The performance statistic gathered during the run. + The variance of the performance statistic during the run. + + + + + Create a new split-set statistics class. + + + The generated model. + The number of samples used to compute the statistic. + The performance statistic gathered during the run. + The variance of the performance statistic during the run. + + + + + Class for representing results acquired through a + split-set + validation analysis. + + + The type of the model being analyzed. + + + + + Initializes a new instance of the class. + + + The that is creating this result. + The training set statistics. + The testing set statistics. + + + + + Gets the + object used to generate this result. + + + + + + Gets the performance statistics for the training set. + + + + + + Gets the performance statistics for the validation set. + + + + + + Gets or sets a tag for user-defined information. + + + + + + Fitting function delegate. + + + + + + Evaluating function delegate. + + + + + + Delegate for grid search fitting functions. + + + The type of the model to fit. + + The collection of parameters to be used in the fitting process. + The error (or any other performance measure) returned by the model. + The model fitted to the data using the given parameters. + + + + + Grid search procedure for automatic parameter tuning. + + + + Grid Search tries to find the best combination of parameters across + a range of possible values that produces the best fit model. If there + are two parameters, each with 10 possible values, Grid Search will try + an exhaustive evaluation of the model using every combination of points, + resulting in 100 model fits. + + + The type of the model to be tuned. + + + How to fit a Kernel Support Vector Machine using Grid Search. + + // Example binary data + double[][] inputs = + { + new double[] { -1, -1 }, + new double[] { -1, 1 }, + new double[] { 1, -1 }, + new double[] { 1, 1 } + }; + + int[] xor = // xor labels + { + -1, 1, 1, -1 + }; + + // Declare the parameters and ranges to be searched + GridSearchRange[] ranges = + { + new GridSearchRange("complexity", new double[] { 0.00000001, 5.20, 0.30, 0.50 } ), + new GridSearchRange("degree", new double[] { 1, 10, 2, 3, 4, 5 } ), + new GridSearchRange("constant", new double[] { 0, 1, 2 } ) + }; + + + // Instantiate a new Grid Search algorithm for Kernel Support Vector Machines + var gridsearch = new GridSearch<KernelSupportVectorMachine>(ranges); + + // Set the fitting function for the algorithm + gridsearch.Fitting = delegate(GridSearchParameterCollection parameters, out double error) + { + // The parameters to be tried will be passed as a function parameter. + int degree = (int)parameters["degree"].Value; + double constant = parameters["constant"].Value; + double complexity = parameters["complexity"].Value; + + // Use the parameters to build the SVM model + Polynomial kernel = new Polynomial(degree, constant); + KernelSupportVectorMachine ksvm = new KernelSupportVectorMachine(kernel, 2); + + // Create a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(ksvm, inputs, xor); + smo.Complexity = complexity; + + // Measure the model performance to return as an out parameter + error = smo.Run(); + + return ksvm; // Return the current model + }; + + + // Declare some out variables to pass to the grid search algorithm + GridSearchParameterCollection bestParameters; double minError; + + // Compute the grid search to find the best Support Vector Machine + KernelSupportVectorMachine bestModel = gridsearch.Compute(out bestParameters, out minError); + + + + + + + Constructs a new Grid search algorithm. + + + The range of parameters to search. + + + + + Searches for the best combination of parameters that results in the most accurate model. + + + The best combination of parameters found by the grid search. + The minimum error of the best model found by the grid search. + The best model found during the grid search. + + + + + Searches for the best combination of parameters that results in the most accurate model. + + + The results found during the grid search. + + + + + A function that fits a model using the given parameters. + + + + + + The range of parameters to consider during search. + + + + + + Contains results from the grid-search procedure. + + + The type of the model to be tuned. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets all combination of parameters tried. + + + + + + Gets all models created during the search. + + + + + + Gets the error for each of the created models. + + + + + + Gets the index of the best found model + in the collection. + + + + + + Gets the best model found. + + + + + + Gets the best parameter combination found. + + + + + + Gets the minimum error found. + + + + + + Gets the size of the grid used in the grid-search. + + + + + + k-Means clustering algorithm. + + + + + In statistics and machine learning, k-means clustering is a method + of cluster analysis which aims to partition n observations into k + clusters in which each observation belongs to the cluster with the + nearest mean. + + It is similar to the expectation-maximization algorithm for mixtures + of Gaussians in that they both attempt to find the centers of natural + clusters in the data as well as in the iterative refinement approach + employed by both algorithms. + + + The algorithm is composed of the following steps: + + + Place K points into the space represented by the objects that are + being clustered. These points represent initial group centroids. + + + Assign each object to the group that has the closest centroid. + + + When all objects have been assigned, recalculate the positions + of the K centroids. + + + Repeat Steps 2 and 3 until the centroids no longer move. This + produces a separation of the objects into groups from which the + metric to be minimized can be calculated. + + + + + This particular implementation uses the squared Euclidean distance + as a similarity measure in order to form clusters. + + + References: + + + Wikipedia, The Free Encyclopedia. K-means clustering. Available on: + http://en.wikipedia.org/wiki/K-means_clustering + + Matteo Matteucci. A Tutorial on Clustering Algorithms. Available on: + http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/kmeans.html + + + + How to perform clustering with K-Means. + + // Declare some observations + double[][] observations = + { + new double[] { -5, -2, -1 }, + new double[] { -5, -5, -6 }, + new double[] { 2, 1, 1 }, + new double[] { 1, 1, 2 }, + new double[] { 1, 2, 2 }, + new double[] { 3, 1, 2 }, + new double[] { 11, 5, 4 }, + new double[] { 15, 5, 6 }, + new double[] { 10, 5, 6 }, + }; + + // Create a new K-Means algorithm with 3 clusters + KMeans kmeans = new KMeans(3); + + // Compute the algorithm, retrieving an integer array + // containing the labels for each of the observations + int[] labels = kmeans.Compute(observations); + + // As result, the first two observations should belong to the + // same cluster (thus having the same label). The same should + // happen to the next four observations and to the last three. + + // In order to classify new, unobserved instances, you can + // use the kmeans.Clusters.Nearest method, as shown below: + int c = kmeans.Clusters.Nearest(new double[] { 4, 1, 9) }); + + + + The following example demonstrates how to use the Mean Shift algorithm + for color clustering. It is the same code which can be found in the + color clustering sample application. + + + + int k = 5; + + // Load a test image (shown below) + Bitmap image = ... + + // Create converters + ImageToArray imageToArray = new ImageToArray(min: -1, max: +1); + ArrayToImage arrayToImage = new ArrayToImage(image.Width, image.Height, min: -1, max: +1); + + // Transform the image into an array of pixel values + double[][] pixels; imageToArray.Convert(image, out pixels); + + + // Create a K-Means algorithm using given k and a + // square Euclidean distance as distance metric. + KMeans kmeans = new KMeans(k, Distance.SquareEuclidean); + + // Compute the K-Means algorithm until the difference in + // cluster centroids between two iterations is below 0.05 + int[] idx = kmeans.Compute(pixels, 0.05); + + + // Replace every pixel with its corresponding centroid + pixels.ApplyInPlace((x, i) => kmeans.Clusters.Centroids[idx[i]]); + + // Retrieve the resulting image in a picture box + Bitmap result; arrayToImage.Convert(pixels, out result); + + + + The original image is shown below: + + + + + The resulting image will be: + + + + + + + + + + + + + Initializes a new instance of the K-Means algorithm + + + The number of clusters to divide the input data into. + + + + + Initializes a new instance of the KMeans algorithm + + + The number of clusters to divide the input data into. + The distance function to use. Default is to + use the distance. + + + + + Randomizes the clusters inside a dataset. + + + The data to randomize the algorithm. + + + + + Randomizes the clusters inside a dataset. + + + The data to randomize the algorithm. + True to use the k-means++ seeding algorithm. False otherwise. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + Pass true to compute additional information + when the algorithm finishes, such as cluster variances and proportions; false + otherwise. Default is true. + + + + + Performs the actual clustering, given a set of data points and + a convergence threshold. The remaining parameters must be set + before returning the method. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + Pass true to compute additional information + when the algorithm finishes, such as cluster variances and proportions; false + otherwise. Default is true. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Divides the input data into K clusters. + + + The data where to compute the algorithm. + The relative convergence threshold + for the algorithm. Default is 1e-5. + Pass true to compute additional information + when the algorithm finishes, such as cluster variances and proportions; false + otherwise. Default is true. + + The average square distance from the + data points to the clusters' centroids. + + + + + + Determines if the algorithm has converged by comparing the + centroids between two consecutive iterations. + + + The previous centroids. + The new centroids. + A convergence threshold. + + Returns if all centroids had a percentage change + less than . Returns otherwise. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Returns the closest cluster to an input point. + + + The input vector. + + The index of the nearest cluster + to the given data point. + + + + + Gets the clusters found by K-means. + + + + + + Gets the number of clusters. + + + + + + Gets the dimensionality of the data space. + + + + + + Gets or sets the distance function used + as a distance metric between data points. + + + + + + Gets or sets whether covariance matrices for + the clusters should be computed at the end of + an iteration. Default is true. + + + + + + Gets or sets whether to use the k-means++ seeding + algorithm to improve the initial solution of the + clustering. Default is true. + + + + + + Gets or sets the maximum number of iterations to + be performed by the method. If set to zero, no + iteration limit will be imposed. Default is 0. + + + + + + Gets or sets the relative convergence threshold + for stopping the algorithm. Default is 1e-5. + + + + + + Gets the number of iterations performed in the + last call to this class' Compute methods. + + + + + + QLearning learning algorithm. + + + The class provides implementation of Q-Learning algorithm, known as + off-policy Temporal Difference control. + + + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + + Action estimates are randomized in the case of this constructor + is used. + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + Randomize action estimates or not. + + The randomize parameter specifies if initial action estimates should be randomized + with small values or not. Randomization of action values may be useful, when greedy exploration + policies are used. In this case randomization ensures that actions of the same type are not chosen always. + + + + + Get next action from the specified state. + + + Current state to get an action for. + + Returns the action for the state. + + The method returns an action according to current + exploration policy. + + + + + Update Q-function's value for the previous state-action pair. + + + Previous state. + Action, which leads from previous to the next state. + Reward value, received by taking specified action from previous state. + Next state. + + + + + Amount of possible states. + + + + + + Amount of possible actions. + + + + + + Exploration policy. + + + Policy, which is used to select actions. + + + + + Learning rate, [0, 1]. + + + The value determines the amount of updates Q-function receives + during learning. The greater the value, the more updates the function receives. + The lower the value, the less updates it receives. + + + + + Discount factor, [0, 1]. + + + Discount factor for the expected summary reward. The value serves as + multiplier for the expected reward. So if the value is set to 1, + then the expected summary reward is not discounted. If the value is getting + smaller, then smaller amount of the expected reward is used for actions' + estimates update. + + + + + Multipurpose RANSAC algorithm. + + + The model type to be trained by RANSAC. + + + + RANSAC is an abbreviation for "RANdom SAmple Consensus". It is an iterative + method to estimate parameters of a mathematical model from a set of observed + data which contains outliers. It is a non-deterministic algorithm in the sense + that it produces a reasonable result only with a certain probability, with this + probability increasing as more iterations are allowed. + + + References: + + + P. D. Kovesi. MATLAB and Octave Functions for Computer Vision and Image Processing. + School of Computer Science and Software Engineering, The University of Western Australia. + Available in: http://www.csse.uwa.edu.au/~pk/research/matlabfns + + Wikipedia, The Free Encyclopedia. RANSAC. Available on: + http://en.wikipedia.org/wiki/RANSAC + + + + + + + + Constructs a new RANSAC algorithm. + + + + The minimum number of samples from the data + required by the fitting function to fit a model. + + + + + + Constructs a new RANSAC algorithm. + + + + The minimum number of samples from the data + required by the fitting function to fit a model. + + + The minimum distance between a data point and + the model used to decide whether the point is + an inlier or not. + + + + + + Constructs a new RANSAC algorithm. + + + + The minimum number of samples from the data + required by the fitting function to fit a model. + + + The minimum distance between a data point and + the model used to decide whether the point is + an inlier or not. + + + The probability of obtaining a random sample of + the input points that contains no outliers. + + + + + + Computes the model using the RANSAC algorithm. + + + The total number of points in the data set. + + + + + Computes the model using the RANSAC algorithm. + + + The total number of points in the data set. + The indexes of the outlier points in the data set. + + + + + Model fitting function. + + + + + + Degenerative set detection function. + + + + + + Distance function. + + + + + + Gets or sets the minimum distance between a data point and + the model used to decide whether the point is an inlier or not. + + + + + + Gets or sets the minimum number of samples from the data + required by the fitting function to fit a model. + + + + + + Maximum number of attempts to select a + non-degenerate data set. Default is 100. + + + + The default value is 100. + + + + + + Maximum number of iterations. Default is 1000. + + + + The default value is 1000. + + + + + + Gets or sets the probability of obtaining a random + sample of the input points that contains no outliers. + Default is 0.99. + + + + + + Robust line estimator with RANSAC. + + + + + + Creates a new RANSAC line estimator. + + + Inlier threshold. + Inlier probability. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Produces a robust estimation of the line + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The line passing through the points. + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Robust plane estimator with RANSAC. + + + + + + Creates a new RANSAC 3D plane estimator. + + + Inlier threshold. + Inlier probability. + + + + + Produces a robust estimation of the plane + passing through the given (noisy) points. + + + A set of (possibly noisy) points. + + The plane passing through the points. + + + + + Gets the RANSAC estimator used. + + + + + + Gets the final set of inliers detected by RANSAC. + + + + + + Sarsa learning algorithm. + + + The class provides implementation of Sarse algorithm, known as + on-policy Temporal Difference control. + + + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + + Action estimates are randomized in the case of this constructor + is used. + + + + + Initializes a new instance of the class. + + + Amount of possible states. + Amount of possible actions. + Exploration policy. + Randomize action estimates or not. + + The randomize parameter specifies if initial action estimates should be randomized + with small values or not. Randomization of action values may be useful, when greedy exploration + policies are used. In this case randomization ensures that actions of the same type are not chosen always. + + + + + Get next action from the specified state. + + + Current state to get an action for. + + Returns the action for the state. + + The method returns an action according to current + exploration policy. + + + + + Update Q-function's value for the previous state-action pair. + + + Curren state. + Action, which lead from previous to the next state. + Reward value, received by taking specified action from previous state. + Next state. + Next action. + + Updates Q-function's value for the previous state-action pair in + the case if the next state is non terminal. + + + + + Update Q-function's value for the previous state-action pair. + + + Curren state. + Action, which lead from previous to the next state. + Reward value, received by taking specified action from previous state. + + Updates Q-function's value for the previous state-action pair in + the case if the next state is terminal. + + + + + Amount of possible states. + + + + + + Amount of possible actions. + + + + + + Exploration policy. + + + Policy, which is used to select actions. + + + + + Learning rate, [0, 1]. + + + The value determines the amount of updates Q-function receives + during learning. The greater the value, the more updates the function receives. + The lower the value, the less updates it receives. + + + + + Discount factor, [0, 1]. + + + Discount factor for the expected summary reward. The value serves as + multiplier for the expected reward. So if the value is set to 1, + then the expected summary reward is not discounted. If the value is getting + smaller, then smaller amount of the expected reward is used for actions' + estimates update. + + + + + List of k-dimensional tree nodes. + + + The type of the value being stored. + + + This class is used to store neighbor nodes when running one of the + search algorithms for k-dimensional trees. + + + + + + + + + Initializes a new instance of the + class that is empty. + + + + + + Initializes a new instance of the + class that is empty and has the specified capacity. + + + + + + Tree enumeration method delegate. + + + The data type stored in the tree. + + The k-d tree to be traversed. + + An enumerator traversing the tree. + + + + + Static class with tree traversal methods. + + + + + + Breadth-first tree traversal method. + + + + + + Pre-order tree traversal method. + + + + + + In-order tree traversal method. + + + + + + Post-order tree traversal method. + + + + + + K-d tree node-distance pair. + + + The type of the value being stored, if any. + + + + + Creates a new . + + + The node value. + The distance value. + + + + + Determines whether the specified + is equal to this instance. + + + The to compare + with this instance. + + + true if the specified is + equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Implements the equality operator. + + + + + + Implements the inequality operator. + + + + + + Implements the lesser than operator. + + + + + + Implements the greater than operator. + + + + + + Determines whether the specified + is equal to this instance. + + + The to compare + with this instance. + + + true if the specified is + equal to this instance; otherwise, false. + + + + + + Compares this instance to another node, returning an integer + indicating whether this instance has a distance that is less + than, equal to, or greater than the other node's distance. + + + + + + Compares this instance to another node, returning an integer + indicating whether this instance has a distance that is less + than, equal to, or greater than the other node's distance. + + + + + + Gets the node in this pair. + + + + + + Gets the distance of the node from the query point. + + + + + + K-dimensional tree. + + + The type of the value being stored. + + + + A k-d tree (short for k-dimensional tree) is a space-partitioning data structure + for organizing points in a k-dimensional space. k-d trees are a useful data structure + for several applications, such as searches involving a multidimensional search key + (e.g. range searches and nearest neighbor searches). k-d trees are a special case + of binary space partitioning trees. + + + The k-d tree is a binary tree in which every node is a k-dimensional point. Every non- + leaf node can be thought of as implicitly generating a splitting hyperplane that divides + the space into two parts, known as half-spaces. Points to the left of this hyperplane + represent the left subtree of that node and points right of the hyperplane are represented + by the right subtree. The hyperplane direction is chosen in the following way: every node + in the tree is associated with one of the k-dimensions, with the hyperplane perpendicular + to that dimension's axis. So, for example, if for a particular split the "x" axis is chosen, + all points in the subtree with a smaller "x" value than the node will appear in the left + subtree and all points with larger "x" value will be in the right subtree. In such a case, + the hyperplane would be set by the x-value of the point, and its normal would be the unit + x-axis. + + + References: + + + Wikipedia, The Free Encyclopedia. K-d tree. Available on: + http://en.wikipedia.org/wiki/K-d_tree + + Moore, Andrew W. "An intoductory tutorial on kd-trees." (1991). + Available at: http://www.autonlab.org/autonweb/14665/version/2/part/5/data/moore-tutorial.pdf + + + + + + // This is the same example found in Wikipedia page on + // k-d trees: http://en.wikipedia.org/wiki/K-d_tree + + // Suppose we have the following set of points: + + double[][] points = + { + new double[] { 2, 3 }, + new double[] { 5, 4 }, + new double[] { 9, 6 }, + new double[] { 4, 7 }, + new double[] { 8, 1 }, + new double[] { 7, 2 }, + }; + + + // To create a tree from a set of points, we use + KDTree<int> tree = KDTree.FromData<int>(points); + + // Now we can manually navigate the tree + KDTreeNode<int> node = tree.Root.Left.Right; + + // Or traverse it automatically + foreach (KDTreeNode<int> n in tree) + { + double[] location = n.Position; + Assert.AreEqual(2, location.Length); + } + + // Given a query point, we can also query for other + // points which are near this point within a radius + + double[] query = new double[] { 5, 3 }; + + // Locate all nearby points within an euclidean distance of 1.5 + // (answer should be be a single point located at position (5,4)) + KDTreeNodeCollection<int> result = tree.Nearest(query, radius: 1.5); + + // We can also use alternate distance functions + tree.Distance = Accord.Math.Distance.Manhattan; + + // And also query for a fixed number of neighbor points + // (answer should be the points at (5,4), (7,2), (2,3)) + KDTreeNodeCollection<int> neighbors = tree.Nearest(query, neighbors: 3); + + + ' This is the same example found in Wikipedia page on + ' k-d trees: http://en.wikipedia.org/wiki/K-d_tree + + ' Suppose we have the following set of points: + + Dim points = + { + New Double() { 2, 3 }, + New Double() { 5, 4 }, + New Double() { 9, 6 }, + New Double() { 4, 7 }, + New Double() { 8, 1 }, + New Double() { 7, 2 } + } + + ' To create a tree from a set of points, we use + Dim tree = KDTree.FromData(Of Integer)(points) + + ' Now we can manually navigate the tree + Dim node = tree.Root.Left.Right + + ' Or traverse it automatically + For Each n As KDTreeNode(Of Integer) In tree + Dim location = n.Position + Console.WriteLine(location.Length) + Next + + ' Given a query point, we can also query for other + ' points which are near this point within a radius + ' + Dim query = New Double() {5, 3} + + ' Locate all nearby points within an Euclidean distance of 1.5 + ' (answer should be a single point located at position (5,4)) + ' + Dim result = tree.Nearest(query, radius:=1.5) + + ' We can also use alternate distance functions + tree.Distance = Function(a, b) Accord.Math.Distance.Manhattan(a, b) + + ' And also query for a fixed number of neighbor points + ' (answer should be the points at (5,4), (7,2), (2,3)) + ' + Dim neighbors = tree.Nearest(query, neighbors:=3) + + + + + + + + + Creates a new . + + + The number of dimensions in the tree. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + The number of elements in the root node. + The number of leaves linked through the root node. + + + + + Inserts a value into the tree at the desired position. + + + A double-vector with the same number of elements as dimensions in the tree. + The value to be added. + + + + + Retrieves the nearest points to a given point within a given radius. + + + The queried point. + The search radius. + The maximum number of neighbors to retrieve. + + A list of neighbor points, ordered by distance. + + + + + Retrieves the nearest points to a given point within a given radius. + + + The queried point. + The search radius. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The number of neighbors to retrieve. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The distance from the + to its nearest neighbor found in the tree. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The number of neighbors to retrieve. + The maximum percentage of leaf nodes that + can be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The maximum percentage of leaf nodes that + can be visited before the search finishes with an approximate answer. + The distance between the query point and its nearest neighbor. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The maximum percentage of leaf nodes that + can be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The number of neighbors to retrieve. + The maximum number of leaf nodes that can + be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Retrieves a fixed point of nearest points to a given point. + + + The queried point. + The maximum number of leaf nodes that can + be visited before the search finishes with an approximate answer. + + A list of neighbor points, ordered by distance. + + + + + Creates the root node for a new given + a set of data points and their respective stored values. + + + The data points to be inserted in the tree. + Return the number of leaves in the root subtree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + The root node for a new + contained the given . + + + + + Creates the root node for a new given + a set of data points and their respective stored values. + + + The data points to be inserted in the tree. + The values associated with each point. + Return the number of leaves in the root subtree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + The root node for a new + contained the given . + + + + + Radius search. + + + + + + k-nearest neighbors search. + + + + + + Removes all nodes from this tree. + + + + + + Copies the entire tree to a compatible one-dimensional , starting + at the specified index of the + target array. + + + The one-dimensional that is the destination of the + elements copied from tree. The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + + Returns an enumerator that iterates through the tree. + + + + An object + that can be used to iterate through the collection. + + + + + + Traverse the tree using a tree traversal + method. Can be iterated with a foreach loop. + + + The tree traversal method. Common methods are + available in the static class. + + An object which can be used to + traverse the tree using the chosen traversal method. + + + + + Returns an enumerator that iterates through the tree. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the root of the tree. + + + + + + Gets the number of dimensions expected + by the input points of this tree. + + + + + + Gets or set the distance function used to + measure distances amongst points on this tree + + + + + + Gets the number of elements contained in this + tree. This is also the number of tree nodes. + + + + + + Gets the number of leaves contained in this + tree. This can be used to calibrate approximate + nearest searchers. + + + + + + Convenience class for k-dimensional tree static methods. To + create a new KDTree, specify the generic parameter as in + . + + + + Please check the documentation page for + for examples, usage and actual remarks about kd-trees. + + + + + + + + Creates a new . + + + The number of dimensions in the tree. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + The number of elements in the root node. + The number of leaves linked through the root node. + + + + + Creates a new . + + + The number of dimensions in the tree. + The root node, if already existent. + The number of elements in the root node. + The number of leaves linked through the root node. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The points to be added to the tree. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + The corresponding values at each data point. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The points to be added to the tree. + The distance function to use. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + The corresponding values at each data point. + The distance function to use. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + Creates a new k-dimensional tree from the given points. + + + The type of the value to be stored. + + The points to be added to the tree. + The distance function to use. + Whether the given vector + can be ordered in place. Passing true will change the original order of + the vector. If set to false, all operations will be performed on an extra + copy of the vector. + + A populated with the given data points. + + + + + K-dimensional tree node. + + + + This class provides a shorthand notation for + the actual type. + + + + + + K-dimensional tree node. + + + The type of the value being stored. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets or sets the position of + the node in spatial coordinates. + + + + + + Gets or sets the dimension index of the split. This value is a + index of the vector and as such should + be higher than zero and less than the number of elements in . + + + + + + Gets or sets the left subtree of this node. + + + + + + Gets or sets the right subtree of this node. + + + + + + Gets or sets the value being stored at this node. + + + + + Gets whether this node is a leaf (has no children). + + + + + + Collection of k-dimensional tree nodes. + + + The type of the value being stored. + + + This class is used to store neighbor nodes when running one of the + search algorithms for k-dimensional trees. + + + + + + + + + Creates a new with a maximum size. + + + The maximum number of elements allowed in this collection. + + + + + Attempts to add a value to the collection. If the list is full + and the value is more distant than the farthest node in the + collection, the value will not be added. + + + The node to be added. + The node distance. + + Returns true if the node has been added; false otherwise. + + + + + Attempts to add a value to the collection. If the list is full + and the value is more distant than the farthest node in the + collection, the value will not be added. + + + The node to be added. + The node distance. + + Returns true if the node has been added; false otherwise. + + + + + Adds the specified item to the collection. + + + The distance from the node to the query point. + The item to be added. + + + + + Removes all elements from this collection. + + + + + + Returns an enumerator that iterates through this collection. + + + + An object + that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through this collection. + + + + An object that + can be used to iterate through the collection. + + + + + + Determines whether this instance contains the specified item. + + + The object to locate in the collection. + The value can be null for reference types. + + + true if the item is found in the collection; otherwise, false. + + + + + + Copies the entire collection to a compatible one-dimensional , starting + at the specified index of the target + array. + + + The one-dimensional that is the destination of the + elements copied from tree. The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + + Adds the specified item to this collection. + + + The item. + + + + + Not supported. + + + + + + Removes the farthest tree node from this collection. + + + + + + Removes the nearest tree node from this collection. + + + + + + Gets or sets the maximum number of elements on this + collection, if specified. A value of zero indicates + this instance has no upper limit of elements. + + + + + + Gets the minimum distance between a node + in this collection and the query point. + + + + + + Gets the maximum distance between a node + in this collection and the query point. + + + + + + Gets the farthest node in the collection (with greatest distance). + + + + + + Gets the nearest node in the collection (with smallest distance). + + + + + + Gets the + at the specified index. Note: this method will iterate over the entire collection + until the given position is found. + + + + + + Gets the number of elements in this collection. + + + + + + Gets a value indicating whether this instance is read only. + For this collection, always returns false. + + + + true if this instance is read only; otherwise, false. + + + + + + Tree enumeration method delegate. + + + An enumerator traversing the tree. + + + + + Common traversal methods for n-ary trees. + + + + + + Breadth-first traversal method. + + + + + + Depth-first traversal method. + + + + + + Post-order tree traversal method. + + + + Adapted from John Cowan (1998) recommendation. + + + + + + Contains classes related to Support Vector Machines (SVMs). + Contains linear machines, + kernel machines, multi-class machines, SVM-DAGs + (Directed Acyclic Graphs), multi-label classification + and also offers support for the probabilistic output calibration + of SVM outputs. + + + + + This namespace contains both standard s and the + kernel extension given by s. For multiple + classes or categories, the framework offers s + and s. Multi-class machines can be used for + cases where a single class should be picked up from a list of several class labels, and + the multi-label machine for cases where multiple class labels might be detected for a + single input vector. The multi-class machines also support two types of classification: + the faster decision based on Decision Directed Acyclic Graphs, and the more traditional + based on a Voting scheme. + + + Learning can be achieved using the standard + (SMO) algorithm. However, the framework can also learn Least Squares SVMs (LS-SVMs) using , and even calibrate SVMs to produce probabilistic outputs + using . A + huge variety of kernels functions is available in the statistics namespace, and + new kernels can be created easily using the interface. + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + Base class for learning algorithms. + + + + + + Initializes a new instance of the class. + + + The machine to be learned. + The input data. + The corresponding output data. + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Computes the error rate for a given set of input and outputs. + + + + + + Estimates the complexity parameter C + for a given kernel and a given data set by summing every element + on the diagonal of the kernel matrix and using an heuristic based + on it. + + + The kernel function. + The input samples. + + A suitable value for C. + + + + + Estimates the complexity parameter C + for the linear kernel and a given data set by summing every element + on the diagonal of the kernel matrix and using an heuristic based + on it. + + + The input samples. + + A suitable value for C. + + + + + Estimates the complexity parameter C + for a given kernel and an unbalanced data set by summing every element + on the diagonal of the kernel matrix and using an heuristic based on it. + + + The kernel function. + The input samples. + The output samples. + + A suitable value for positive C and negative C, respectively. + + + + + Complexity (cost) parameter C. Increasing the value of C forces the creation + of a more accurate model that may not generalize well. If this value is not + set and is set to true, the framework + will automatically guess a value for C. If this value is manually set to + something else, then will be automatically + disabled and the given value will be used instead. + + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + If this value is not set and is set to + true, the framework will automatically guess a suitable value for C by + calling . If this value + is manually set to something else, then the class will respect the new value + and automatically disable . + + + + + + Gets or sets the individual weight of each sample in the training set. If set + to null, all samples will be assumed equal weight. Default is null. + + + + + + Gets or sets the positive class weight. This should be a + value higher than 0 indicating how much of the + parameter C should be applied to instances carrying the positive label. + + + + + + Gets or sets the negative class weight. This should be a + value higher than 0 indicating how much of the + parameter C should be applied to instances carrying the negative label. + + + + + + Gets or sets the weight ratio between positive and negative class + weights. This ratio controls how much of the + parameter C should be applied to the positive class. + + + + + A weight ratio lesser than one, such as 1/10 (0.1) means 10% of C will + be applied to the positive class, while 100% of C will be applied to the + negative class. + + A weight ratio greater than one, such as 10/1 (10) means that 100% of C will + be applied to the positive class, while 10% of C will be applied to the + negative class. + + + + + + Gets or sets a value indicating whether the Complexity parameter C + should be computed automatically by employing an heuristic rule. + Default is false. + + + + true if complexity should be computed automatically; otherwise, false. + + + + + + Gets or sets a value indicating whether the weight ratio to be used between + values for negative and positive instances should + be computed automatically from the data proportions. Default is false. + + + + true if the weighting coefficient should be computed + automatically from the data; otherwise, false. + + + + + + Gets whether the machine to be learned + has a kernel. + + + + + + Gets the machine's function. + + + + + + Gets the training input data set. + + + + + + Gets the training output labels set. + + + + + + Gets the machine to be taught. + + + + + + Base class for regression learning algorithms. + + + + + + Initializes a new instance of the class. + + + The machine to be learned. + The input data. + The corresponding output data. + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Computes the summed square error for a given set of input and outputs. + + + + + + Complexity (cost) parameter C. Increasing the value of C forces the creation + of a more accurate model that may not generalize well. Default value is 1. + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + + + + Insensitivity zone ε. Increasing the value of ε can result in fewer + support vectors in the created model. Default value is 1e-3. + + + + Parameter ε controls the width of the ε-insensitive zone, used to fit the training + data. The value of ε can affect the number of support vectors used to construct the + regression function. The bigger ε, the fewer support vectors are selected. On the + other hand, bigger ε-values results in more flat estimates. + + + + + + Gets or sets the individual weight of each sample in the training set. If set + to null, all samples will be assumed equal weight. Default is null. + + + + + + Gets or sets a value indicating whether the Complexity parameter C + should be computed automatically by employing an heuristic rule. + Default is false. + + + + true if complexity should be computed automatically; otherwise, false. + + + + + + Gets whether the machine to be learned + has a kernel. + + + + + + Gets the machine's function. + + + + + + Gets the training input data set. + + + + + + Gets the training output labels set. + + + + + + Gets the machine to be taught. + + + + + + L1-regularized L2-loss support vector + Support Vector Machine learning (-s 5). + + + + + This class implements a learning algorithm + specifically crafted for linear machines only. It provides a L1-regularized, + L2-loss coordinate descent learning algorithm for optimizing the primal form of + learning. The code has been based on liblinear's method solve_l1r_l2_svc + method, whose original description is provided below. + + + + Liblinear's solver -s 5: L1R_L2LOSS_svc. A coordinate descent + algorithm for L2-loss SVM problems in the primal. + + + + min_w \sum |wj| + C \sum max(0, 1-yi w^T xi)^2, + + + + Given: x, y, Cp, Cn and eps as the stopping tolerance + + + See Yuan et al. (2010) and appendix of LIBLINEAR paper, Fan et al. (2008) + + + + + + + + + + Common interface for Support Machine Vector learning algorithms. + + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. + + + + The misclassification error rate of the resulting support + vector machine if is true, + returns zero otherwise. + + + + + + Common interface for Support Machine Vector learning + algorithms which support thread cancellation. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The misclassification error rate of the resulting support + vector machine if is true, + returns zero otherwise. + + + + + + Constructs a new coordinate descent algorithm for L1-loss and L2-loss SVM dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + Least Squares SVM (LS-SVM) learning algorithm. + + + + + References: + + + + Suykens, J. A. K., et al. "Least squares support vector machine classifiers: a large scale + algorithm." European Conference on Circuit Theory and Design, ECCTD. Vol. 99. 1999. Available on: + http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.43.6438 + + + + + + + + + + + + + + + Constructs a new Least Squares SVM (LS-SVM) learning algorithm. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the LS-SVM algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Runs the LS-SVM algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Computes the error rate for a given set of input and outputs. + + + + + + Complexity (cost) parameter C. Increasing the value of C forces + the creation of a more accurate model that may not generalize well. + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + + + + Convergence tolerance. Default value is 1e-6. + + + + The criterion for completing the model training process. The default is 1e-6. + + + + + + Gets or sets the cache size to partially + stored the kernel matrix. Default is the + same number of input vectors. + + + + + + Different categories of loss functions that can be used to learn + support vector machines. + + + + + + Hinge-loss function. + + + + + + Squared hinge-loss function. + + + + + + L2-regularized, L1 or L2-loss dual formulation + Support Vector Machine learning (-s 1 and -s 3). + + + + + This class implements a learning algorithm + specifically crafted for linear machines only. It provides a L2-regularized, L1 + or L2-loss coordinate descent learning algorithm for optimizing the dual form of + learning. The code has been based on liblinear's method solve_l2r_l1l2_svc + method, whose original description is provided below. + + + + Liblinear's solver -s 1: L2R_L2LOSS_SVC_DUAL and -s 3: + L2R_L1LOSS_SVC_DUAL. A coordinate descent algorithm for L1-loss and + L2-loss SVM problems in the dual. + + + + min_\alpha 0.5(\alpha^T (Q + D)\alpha) - e^T \alpha, + s.t. 0 <= \alpha_i <= upper_bound_i, + + + + where Qij = yi yj xi^T xj and + D is a diagonal matrix + + + In L1-SVM case: + + upper_bound_i = Cp if y_i = 1 + upper_bound_i = Cn if y_i = -1 + D_ii = 0 + + + In L2-SVM case: + + upper_bound_i = INF + D_ii = 1/(2*Cp) if y_i = 1 + D_ii = 1/(2*Cn) if y_i = -1 + + + + Given: x, y, Cp, Cn, and eps as the stopping tolerance + + + See Algorithm 3 of Hsieh et al., ICML 2008. + + + + + + + + + + Constructs a new coordinate descent algorithm for L1-loss and L2-loss SVM dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the cost function that + should be optimized. Default is + . + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + L1-regularized logistic regression (probabilistic SVM) + learning algorithm (-s 6). + + + + + This class implements a learning algorithm + specifically crafted for probabilistic linear machines only. It provides a L1- + regularized coordinate descent learning algorithm for optimizing the learning + problem. The code has been based on liblinear's method solve_l1r_lr + method, whose original description is provided below. + + + + Liblinear's solver -s 6: L1R_LR. + A coordinate descent algorithm for L1-regularized + logistic regression (probabilistic svm) problems. + + + + min_w \sum |wj| + C \sum log(1+exp(-yi w^T xi)), + + + + Given: x, y, Cp, Cn, and eps as the stopping tolerance + + + See Yuan et al. (2011) and appendix of LIBLINEAR paper, Fan et al. (2008) + + + + + + + + + Constructs a new Newton method algorithm for L1-regularized + logistic regression (probabilistic linear vector machine). + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Gets or sets the maximum number of line searches + that can be performed per iteration. Default is 20. + + + + + + Gets or sets the maximum number of inner iterations that can + be performed by the inner solver algorithm. Default is 100. + + + + + + Convergence tolerance. Default value is 0.01. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + L2-regularized logistic regression (probabilistic support + vector machine) learning algorithm in the dual form (-s 7). + + + + + This class implements a learning algorithm + specifically crafted for probabilistic linear machines only. It provides a L2- + regularized coordinate descent learning algorithm for optimizing the dual form + of the learning problem. The code has been based on liblinear's method + solve_l2r_lr_dual method, whose original description is provided below. + + + + Liblinear's solver -s 7: L2R_LR_DUAL. A coordinate descent + algorithm for the dual of L2-regularized logistic regression problems. + + + + min_\alpha 0.5(\alpha^T Q \alpha) + \sum \alpha_i log (\alpha_i) + + (upper_bound_i - \alpha_i) log (upper_bound_i - \alpha_i), + + s.t. 0 <= \alpha_i <= upper_bound_i, + + + + where Qij = yi yj xi^T xj and + + + upper_bound_i = Cp if y_i = 1 + upper_bound_i = Cn if y_i = -1 + + + + Given: x, y, Cp, Cn, and eps as the stopping tolerance + + + See Algorithm 5 of Yu et al., MLJ 2010. + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized + logistic regression (probabilistic linear SVMs) dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Gets or sets the maximum number of inner iterations that can + be performed by the inner solver algorithm. Default is 100. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + L2-regularized L2-loss logistic regression (probabilistic + support vector machine) learning algorithm in the primal. + + + + + This class implements a L2-regularized L2-loss logistic regression (probabilistic + support vector machine) learning algorithm that operates in the primal form of the + optimization problem. This method has been based on liblinear's l2r_lr_fun + problem specification, optimized using a + Trust-region Newton method. + + + + Liblinear's solver -s 0: L2R_LR. A trust region newton + algorithm for the primal of L2-regularized, L2-loss logistic regression. + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized logistic + regression (probabilistic linear SVMs) primal problems (-s 0). + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Convergence tolerance. Default value is 0.01. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + L2-regularized L2-loss linear support vector classification (primal). + + + + + This class implements a L2-regularized L2-loss support vector machine + learning algorithm that operates in the primal form of the optimization + problem. This method has been based on liblinear's l2r_l2_svc_fun + problem specification, optimized using a + Trust-region Newton method. This method might be faster than the often + preferred . + + + Liblinear's solver -s 2: L2R_L2LOSS_SVC. A trust region newton + algorithm for the primal of L2-regularized, L2-loss linear support vector + classification. + + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized + Support Vector Classification problems in the primal form (-s 2). + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + One-against-all Multi-label Support Vector Machine Learning Algorithm + + + + + This class can be used to train Kernel Support Vector Machines with + any algorithm using a one-against-all strategy. The underlying + training algorithm can be configured by defining the + property. + + + One example of learning algorithm that can be used with this class is the + Sequential Minimal Optimization + (SMO) algorithm. + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Outputs for each of the inputs + int[][] outputs = + { + new[] { 0, 1, 0 } + new[] { 0, 0, 1 } + new[] { 1, 1, 0 } + } + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MultilabelSupportVectorMachine(1, kernel, 4); + + // Create the Multi-label learning algorithm for the machine + var teacher = new MultilabelSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); + + + + + + + Constructs a new Multi-label Support Vector Learning algorithm. + + + The input learning vectors for the machine learning algorithm. + The to be trained. + The output labels associated with each of the input vectors. The + class labels should be between 0 and the + number of classes in the multiclass machine. In a multi-label SVM, multiple classes + can be associated with a single input vector. + + + + + Constructs a new Multi-label Support Vector Learning algorithm. + + + The input learning vectors for the machine learning algorithm. + The to be trained. + The output labels associated with each of the input vectors. The + class labels should be between 0 and the + number of classes in the multiclass machine. In a multi-label SVM, multiple classes + can be associated with a single input vector. + + + + + Runs the one-against-one learning algorithm. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Compute the error ratio. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Occurs when the learning of a subproblem has started. + + + + + + Occurs when the learning of a subproblem has finished. + + + + + + Gets or sets the configuration function for the learning algorithm. + + + + The configuration function should return a properly configured ISupportVectorMachineLearning + algorithm using the given support vector machine and the input and output data. + + + + + + Coordinate descent algorithm for the L1 or L2-loss linear Support + Vector Regression (epsilon-SVR) learning problem in the dual form + (-s 12 and -s 13). + + + + + This class implements a learning algorithm + specifically crafted for linear machines only. It provides a L2-regularized, L1 + or L2-loss coordinate descent learning algorithm for optimizing the dual form of + learning. The code has been based on liblinear's method solve_l2r_l1l2_svc + method, whose original description is provided below. + + + + Liblinear's solver -s 12: L2R_L2LOSS_SVR_DUAL and -s 13: + L2R_L1LOSS_SVR_DUAL. A coordinate descent algorithm for L1-loss and + L2-loss linear epsilon-vector regression (epsilon-SVR). + + + + min_\beta 0.5\beta^T (Q + diag(lambda)) \beta - p \sum_{i=1}^l|\beta_i| + \sum_{i=1}^l yi\beta_i, + s.t. -upper_bound_i <= \beta_i <= upper_bound_i, + + + + where Qij = yi yj xi^T xj and + D is a diagonal matrix + + + In L1-SVM case: + + upper_bound_i = C + lambda_i = 0 + + + In L2-SVM case: + + upper_bound_i = INF + lambda_i = 1/(2*C) + + + + Given: x, y, p, C and eps as the stopping tolerance + + + See Algorithm 4 of Ho and Lin, 2012. + + + + + + + + + Constructs a new coordinate descent algorithm for L1-loss and L2-loss SVM dual problems. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Gets or sets the cost function that + should be optimized. Default is + . + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 0.1. + + + + The criterion for completing the model training process. The default is 0.1. + + + + + + L2-regularized L2-loss linear support vector regression + (SVR) learning algorithm in the primal formulation (-s 11). + + + + + This class implements a L2-regularized L2-loss support vector regression (SVR) + learning algorithm that operates in the primal form of the optimization problem. + This method has been based on liblinear's l2r_l2_svr_fun problem specification, + optimized using a Trust-region Newton method. + + + + Liblinear's solver -s 11: L2R_L2LOSS_SVR. A trust region newton algorithm + for the primal of L2-regularized, L2-loss linear epsilon-vector regression (epsilon-SVR). + + + + + + + + + + Constructs a new Newton method algorithm for L2-regularized + support vector regression (SVR-SVMs) primal problems. + + + A support vector machine. + The input data points as row vectors. + The output value for each input point. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + + Convergence tolerance. Default value is 0.01. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Exact support vector reduction through + linear dependency elimination. + + + + + + Creates a new algorithm. + + + The machine to be reduced. + + + + + Runs the learning algorithm. + + + True to compute error after the training + process completes, false otherwise. + + + + + Runs the learning algorithm. + + + + + + Computes the error rate for a given set of input and outputs. + + + + + + One-against-all Multi-label Kernel Support Vector Machine Classifier. + + + + + The Support Vector Machine is by nature a binary classifier. Multiple label + problems are problems in which an input sample is allowed to belong to one + or more classes. A way to implement multi-label classes in support vector + machines is to build a one-against-all decision scheme where multiple SVMs + are trained to detect each of the available classes. + + Currently this class supports only Kernel machines as the underlying classifiers. + If a Linear Support Vector Machine is needed, specify a Linear kernel in the + constructor at the moment of creation. + + + References: + + + + http://courses.media.mit.edu/2006fall/mas622j/Projects/aisen-project/index.html + + + http://nlp.stanford.edu/IR-book/html/htmledition/multiclass-svms-1.html + + + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Outputs for each of the inputs + int[][] outputs = + { + new[] { -1, 1, -1 }, + new[] { -1, -1, 1 }, + new[] { 1, 1, -1 }, + new[] { -1, -1, -1 }, + }; + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MultilabelSupportVectorMachine(1, kernel, 3); + + // Create the Multi-label learning algorithm for the machine + var teacher = new MultilabelSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); + + + + + + + + + + + + + Common interface for Support Vector Machines + + + + + + + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + + The output for the given input. + + The decision label for the given input. + + + + + Constructs a new Multi-label Kernel Support Vector Machine + + + The chosen kernel for the machine. + The number of inputs for the machine. + The number of classes in the classification problem. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Constructs a new Multi-label Kernel Support Vector Machine + + + + The machines to be used for each class. + + + + + + Computes the given input to produce the corresponding outputs. + + + An input vector. + The model response for each class. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding outputs. + + + An input vector. + + The decision label for the given input. + + + + + Compute SVM output with support vector sharing. + + + + + + Resets the cache and machine statistics + so they can be recomputed on next evaluation. + + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Saves the machine to a file. + + + The path to the file to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The output for the given input. + + The decision label for the given input. + + + + + Returns an enumerator that iterates through all machines in the classifier. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through all machines in the classifier. + + + + An object that can be used to iterate through the collection. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + Gets the total kernel evaluations performed + in the last call to any of the + functions in the current thread. + + + The number of total kernel evaluations. + + + + + Gets the classifier for class . + + + + + + Gets the total number of support vectors + in the entire multi-label machine. + + + + + + Gets the number of unique support + vectors in the multi-label machine. + + + + + + Gets the number of shared support + vectors in the multi-label machine. + + + + + + Gets the number of classes. + + + + + + Gets the number of inputs of the machines. + + + + + + Gets a value indicating whether this machine produces probabilistic outputs. + + + + true if this machine produces probabilistic outputs; otherwise, false. + + + + + + Gets the subproblems classifiers. + + + + + + Gets the selection strategy to be used in SMO. + + + + + + Uses the sequential selection strategy as + suggested by Keerthi et al's algorithm 1. + + + + + + Always select the worst violation pair + to be optimized first, as suggested in + Keerthi et al's algorithm 2. + + + + + + Sequential Minimal Optimization (SMO) Algorithm + + + + + The SMO algorithm is an algorithm for solving large quadratic programming (QP) + optimization problems, widely used for the training of support vector machines. + First developed by John C. Platt in 1998, SMO breaks up large QP problems into + a series of smallest possible QP problems, which are then solved analytically. + + This class follows the original algorithm by Platt with additional modifications + by Keerthi et al. + + + This class can also be used in combination with + or to learn s + using the one-vs-one or one-vs-all multi-class decision strategies, respectively. + + + References: + + + + Wikipedia, The Free Encyclopedia. Sequential Minimal Optimization. Available on: + http://en.wikipedia.org/wiki/Sequential_Minimal_Optimization + + + John C. Platt, Sequential Minimal Optimization: A Fast Algorithm for Training Support + Vector Machines. 1998. Available on: http://research.microsoft.com/en-us/um/people/jplatt/smoTR.pdf + + + S. S. Keerthi et al. Improvements to Platt's SMO Algorithm for SVM Classifier Design. + Technical Report CD-99-14. Available on: http://www.cs.iastate.edu/~honavar/keerthi-svm.pdf + + + J. P. Lewis. A Short SVM (Support Vector Machine) Tutorial. Available on: + http://www.idiom.com/~zilla/Work/Notes/svmtutorial.pdf + + + + + + // Example XOR problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 xor 0: 1 (label +1) + new double[] { 0, 1 }, // 0 xor 1: 0 (label -1) + new double[] { 1, 0 }, // 1 xor 0: 0 (label -1) + new double[] { 1, 1 } // 1 xor 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + 1, -1, -1, 1 + }; + + // Create a Kernel Support Vector Machine for the given inputs + KernelSupportVectorMachine svm = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(svm, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Compute the decision output for one of the input vectors + int decision = System.Math.Sign(svm.Compute(inputs[0])); // +1 + + + + + + + + + + + + + Constructs a new Sequential Minimal Optimization (SMO) algorithm. + + + A support vector machine. + The input data points as row vectors. + The output label for each input point. Values must be either -1 or +1. + + + + + Runs the learning algorithm. + + + A token to stop processing when requested. + The complexity for each sample. + + + + Chooses which multipliers to optimize using heuristics. + + + + + + Analytically solves the optimization problem for two Lagrange multipliers. + + + + + + Computes the SVM output for a given point. + + + + + + Epsilon for round-off errors. Default value is 1e-12. + + + + + + Convergence tolerance. Default value is 1e-2. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets the pair selection + strategy to be used during optimization. + + + + + + Gets or sets the cache size to partially stored the kernel + matrix. Default is the same number of input vectors. If set + to zero, the cache will be disabled and all operations will + be computed as needed. + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Gets or sets whether to produce compact models. Compact + formulation is currently limited to linear models. + + + + + + Gets the indices of the active examples (examples which have + the corresponding Lagrange multiplier different than zero). + + + + + + Gets the indices of the non-bounded examples (examples which + have the corresponding Lagrange multipliers between 0 and C). + + + + + + Gets the indices of the examples at the boundary (examples + which have the corresponding Lagrange multipliers equal to C). + + + + + + Sparse Kernel Support Vector Machine (kSVM) + + + + The original optimal hyperplane algorithm (SVM) proposed by Vladimir Vapnik in 1963 was a + linear classifier. However, in 1992, Bernhard Boser, Isabelle Guyon and Vapnik suggested + a way to create non-linear classifiers by applying the kernel trick (originally proposed + by Aizerman et al.) to maximum-margin hyperplanes. The resulting algorithm is formally + similar, except that every dot product is replaced by a non-linear kernel function. + + This allows the algorithm to fit the maximum-margin hyperplane in a transformed feature space. + The transformation may be non-linear and the transformed space high dimensional; thus though + the classifier is a hyperplane in the high-dimensional feature space, it may be non-linear in + the original input space. + + + The machines are also able to learn sequence classification problems in which the input vectors + can have arbitrary length. For an example on how to do that, please see the documentation page + for the DynamicTimeWarping kernel. + + + References: + + + http://en.wikipedia.org/wiki/Support_vector_machine + + http://www.kernel-machines.org/ + + + + + + // Example XOR problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 xor 0: 1 (label +1) + new double[] { 0, 1 }, // 0 xor 1: 0 (label -1) + new double[] { 1, 0 }, // 1 xor 0: 0 (label -1) + new double[] { 1, 1 } // 1 xor 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + // 1, 0, 0, 1 + 1, -1, -1, 1 + }; + + // Create a Kernel Support Vector Machine for the given inputs + KernelSupportVectorMachine machine = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(machine, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Compute the decision output for one of the input vectors + int decision = System.Math.Sign(machine.Compute(inputs[0])); + + + + + + + + + + + + + + Linear Support Vector Machine (SVM) + + + + + Support vector machines (SVMs) are a set of related supervised learning methods + used for classification and regression. In simple words, given a set of training + examples, each marked as belonging to one of two categories, a SVM training algorithm + builds a model that predicts whether a new example falls into one category or the + other. + + Intuitively, an SVM model is a representation of the examples as points in space, + mapped so that the examples of the separate categories are divided by a clear gap + that is as wide as possible. New examples are then mapped into that same space and + predicted to belong to a category based on which side of the gap they fall on. + + + For the non-linear generalization of the Support Vector Machine using arbitrary + kernel functions, please see the . + + + + References: + + + http://en.wikipedia.org/wiki/Support_vector_machine + + + + + + // Example AND problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 and 0: 0 (label -1) + new double[] { 0, 1 }, // 0 and 1: 0 (label -1) + new double[] { 1, 0 }, // 1 and 0: 0 (label -1) + new double[] { 1, 1 } // 1 and 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + // 0, 0, 0, 1 + -1, -1, -1, 1 + }; + + // Create a Support Vector Machine for the given inputs + SupportVectorMachine machine = new SupportVectorMachine(inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(machine, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Compute the decision output for one of the input vectors + int decision = System.Math.Sign(machine.Compute(inputs[0])); + + + + + + + + + + + + + Creates a new Support Vector Machine + + + The number of inputs for the machine. + + + + + Computes the given input to produce the corresponding output. + + + + For a binary decision problem, the decision for the negative + or positive class is typically computed by taking the sign of + the machine's output. + + + An input vector. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + + For a binary decision problem, the decision for the negative + or positive class is typically computed by taking the sign of + the machine's output. + + + An input vector. + + The output for the given input. In a typical classification + problem, the sign of this value should be considered as the class label. + + + + + Creates a new that is + completely equivalent to a . + + + The to be converted. + + + A whose linear weights are + equivalent to the given 's + linear + coefficients, properly configured with a . + + + + + + Creates a new linear + with the given set of linear . + + + The machine's linear coefficients. + + + A whose linear coefficients + are defined by the given vector. + + + + + + Converts a -kernel + machine into an array of linear coefficients. The first position + in the array is the value. + + + + An array of linear coefficients representing this machine. + + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Saves the machine to a stream. + + + The path to the file to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Gets or sets the link + function used by this machine, if any. + + + The link function used to transform machine outputs. + + + + + Gets a value indicating whether this machine produces probabilistic outputs. + + + + true if this machine produces probabilistic outputs; otherwise, false. + + + + + + Gets the number of inputs accepted by this machine. + + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Gets or sets the collection of support vectors used by this machine. + + + + + + Gets whether this machine is in compact mode. Compact + machines do not need to keep storing their support vectors. + + + + + + Gets or sets the collection of weights used by this machine. + + + + + + Gets or sets the threshold (bias) term for this machine. + + + + + + Creates a new Kernel Support Vector Machine. + + + The chosen kernel for the machine. + The number of inputs for the machine. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Computes the given input to produce the corresponding output. + + + + For a binary decision problem, the decision for the negative + or positive class is typically computed by taking the sign of + the machine's output. + + + An input vector. + The output of the machine. If this is a + probabilistic + machine, the output is the probability of the positive + class. If this is a standard machine, the output is the distance + to the decision hyperplane in feature space. + + The decision label for the given input. + + + + + Creates a new that is + completely equivalent to a . + + + The to be converted. + + + A whose linear weights + are equivalent to the given 's + linear + coefficients, properly configured with a . + + + + + + Creates a new linear + with the given set of linear . + + + The machine's linear coefficients. + + + A whose linear coefficients + are defined by the given vector. + + + + + + Converts a -kernel machine into an array of + linear coefficients. The first position in the array is the + value. If this + machine is not linear, an exception will be thrown. + + + + An array of linear coefficients representing this machine. + + + + Thrown if the kernel function is not . + + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Gets or sets the kernel used by this machine. + + + + + + Decision strategies for + Multi-class Support Vector Machines. + + + + + + Max-voting method (also known as 1vs1 decision). + + + + + + Elimination method (also known as DAG decision). + + + + + + One-against-one Multi-class Kernel Support Vector Machine Classifier. + + + + + The Support Vector Machine is by nature a binary classifier. One of the ways + to extend the original SVM algorithm to multiple classes is to build a one- + against-one scheme where multiple SVMs specialize to recognize each of the + available classes. By using a competition scheme, the original multi-class + classification problem is then reduced to n*(n/2) smaller binary problems. + + Currently this class supports only Kernel machines as the underlying classifiers. + If a Linear Support Vector Machine is needed, specify a Linear kernel in the + constructor at the moment of creation. + + + References: + + + + http://courses.media.mit.edu/2006fall/mas622j/Projects/aisen-project/index.html + + + http://nlp.stanford.edu/IR-book/html/htmledition/multiclass-svms-1.html + + + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(1, kernel, 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute(new double[] { 3 }); // result should be 3 + + + + The next example is a simple 3 classes classification problem. + It shows how to use a different kernel function, such as the + polynomial kernel of degree 2. + + + // Sample input data + double[][] inputs = + { + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { 10, 82, 4 }, + new double[] { 10, 15, 4 }, + new double[] { 0, 0, 1 }, + new double[] { 0, 0, 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new polynomial kernel + IKernel kernel = new Polynomial(2); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(inputs: 3, kernel: kernel, classes: 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute( new double[] { -1, 3, 2 }); + + + + + + + + + + + + + Constructs a new Multi-class Kernel Support Vector Machine + + + The number of inputs for the machine. If sequences have + varying length, pass zero to this parameter and pass a suitable sequence + kernel to this constructor, such as . + The number of classes in the classification problem. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Constructs a new Multi-class Kernel Support Vector Machine + + + The chosen kernel for the machine. Default is to + use the kernel. + The number of inputs for the machine. If sequences have + varying length, pass zero to this parameter and pass a suitable sequence + kernel to this constructor, such as . + The number of classes in the classification problem. + + + If the number of inputs is zero, this means the machine + accepts a indefinite number of inputs. This is often the + case for kernel vector machines using a sequence kernel. + + + + + + Constructs a new Multi-class Kernel Support Vector Machine + + + + The machines to be used in each of the pair-wise class subproblems. + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + The decision path followed by the Decision + Directed Acyclic Graph used by the + elimination method. + + The decision label for the given input. + + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The model response for each class. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + The model response for each class. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + The model response for each class. + + The class decision for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The class decision for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + The + multi-class classification method to use. + + The class decision for the given input. + + + + + Computes the given input to produce the corresponding output. + + + An input vector. + A vector containing the number of votes for each class. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + + The decision label for the given input. + + + + + Computes the given input to produce the corresponding output. + + + + This method computes the decision for a one-against-one multiclass + support vector machine using the Directed Acyclic Graph method by + Platt, Cristianini and Shawe-Taylor. Details are given on the + original paper "Large Margin DAGs for Multiclass Classification", 2000. + + + An input vector. + The model response for each class. + The output of the machine. If this is a + probabilistic machine, the + output is the probability of the positive class. If this is + a standard machine, the output is the distance to the decision + hyperplane in feature space. + The decision path followed by the Decision + Directed Acyclic Graph used by the + elimination method. + + The decision label for the given input. + + + + + Compute SVM output with support vector sharing. + + + + + + Compute SVM output with support vector sharing. + + + + + + Resets the cache and machine statistics + so they can be recomputed on next evaluation. + + + + + + Gets the total kernel evaluations performed + in the last call to any of the + functions in the current thread. + + + The number of total kernel evaluations. + + + + + Saves the machine to a stream. + + + The stream to which the machine is to be serialized. + + + + + Saves the machine to a file. + + + The path to the file to which the machine is to be serialized. + + + + + Loads a machine from a stream. + + + The stream from which the machine is to be deserialized. + + The deserialized machine. + + + + + Loads a machine from a file. + + + The path to the file from which the machine is to be deserialized. + + The deserialized machine. + + + + + Returns an enumerator that iterates through all machines + contained inside this multi-class support vector machine. + + + + + + Returns an enumerator that iterates through all machines + contained inside this multi-class support vector machine. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + + Gets the classifier for against . + + + + If the index of is greater than , + the classifier for the against + will be returned instead. If both indices are equal, null will be + returned instead. + + + + + + Gets the total number of machines + in this multi-class classifier. + + + + + + Gets the total number of support vectors + in the entire multi-class machine. + + + + + + Gets the number of unique support + vectors in the multi-class machine. + + + + + + Gets the number of shared support + vectors in the multi-class machine. + + + + + + Gets the number of classes. + + + + + + Gets the number of inputs of the machines. + + + + + + Gets a value indicating whether this machine produces probabilistic outputs. + + + + true if this machine produces probabilistic outputs; otherwise, false. + + + + + + Gets the subproblems classifiers. + + + + + + Configuration function to configure the learning algorithms + for each of the Kernel Support Vector Machines used in this + Multi-class Support Vector Machine. + + + The input data for the learning algorithm. + The output data for the learning algorithm. + The machine for the learning algorithm. + The class index corresponding to the negative values + in the output values contained in . + The class index corresponding to the positive values + in the output values contained in . + + + The configured algorithm + to be used to train the given . + + + + + + Subproblem progress event argument. + + + + + + Initializes a new instance of the class. + + + One of the classes in the subproblem. + The other class in the subproblem. + + + + + One of the classes belonging to the subproblem. + + + + + + One of the classes belonging to the subproblem. + + + + + + Gets the progress of the overall problem, + ranging from zero up to . + + + + + + Gets the maximum value for the current . + + + + + One-against-one Multi-class Support Vector Machine Learning Algorithm + + + + + This class can be used to train Kernel Support Vector Machines with + any algorithm using a one-against-one strategy. The underlying + training algorithm can be configured by defining the + property. + + + One example of learning algorithm that can be used with this class is the + Sequential Minimal Optimization + (SMO) algorithm. + + + + + // Sample data + // The following is simple auto association function + // where each input correspond to its own class. This + // problem should be easily solved by a Linear kernel. + + // Sample input data + double[][] inputs = + { + new double[] { 0 }, + new double[] { 3 }, + new double[] { 1 }, + new double[] { 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new Linear kernel + IKernel kernel = new Linear(); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(1, kernel, 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute(new double[] { 3 }); // result should be 3 + + + + The next example is a simple 3 classes classification problem. + It shows how to use a different kernel function, such as the + polynomial kernel of degree 2. + + + // Sample input data + double[][] inputs = + { + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { -1, 3, 2 }, + new double[] { 10, 82, 4 }, + new double[] { 10, 15, 4 }, + new double[] { 0, 0, 1 }, + new double[] { 0, 0, 2 }, + }; + + // Output for each of the inputs + int[] outputs = { 0, 3, 1, 2 }; + + + // Create a new polynomial kernel + IKernel kernel = new Polynomial(2); + + // Create a new Multi-class Support Vector Machine with one input, + // using the linear kernel and for four disjoint classes. + var machine = new MulticlassSupportVectorMachine(inputs: 3, kernel: kernel, classes: 4); + + // Create the Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // output should be 0 + + // Compute the decision output for one of the input vectors + int decision = machine.Compute( new double[] { -1, 3, 2 }); + + + + + + + + + + + + + + Constructs a new Multi-class Support Vector Learning algorithm. + + + The input learning vectors for the machine learning algorithm. + The to be trained. + The output labels associated with each of the input vectors. The + class labels should be between 0 and the + number of classes in the multiclass machine. + + + + + Runs the one-against-one learning algorithm. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Runs the one-against-one learning algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + A which can be used + to request the cancellation of the learning algorithm + when it is being run in another thread. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Computes the error ratio, the number of + misclassifications divided by the total + number of samples in a dataset. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Occurs when the learning of a subproblem has started. + + + + + + Occurs when the learning of a subproblem has finished. + + + + + + Gets or sets the configuration function for the learning algorithm. + + + + The configuration function should return a properly configured ISupportVectorMachineLearning + algorithm using the given support vector machine and the input and output data. + + + + + + Probabilistic Output Calibration. + + + + Instead of producing probabilistic outputs, Support Vector Machines + express their decisions in the form of a distance from support vectors in + feature space. In order to convert the SVM outputs into probabilities, + Platt (1999) proposed the calibration of the SVM outputs using a sigmoid + (Logit) link function. Later, Lin et al (2007) provided a corrected and + improved version of Platt's probabilistic outputs. This class implements + the later. + + This class is not an actual learning algorithm, but a calibrator. + Machines passed as input to this algorithm should already have been trained + by a proper learning algorithm such as + Sequential Minimal Optimization (SMO). + + + This class can also be used in combination with + or to learn s + using the one-vs-one or one-vs-all multi-class decision strategies, respectively. + + + References: + + + John C. Platt. 1999. Probabilistic Outputs for Support Vector Machines and Comparisons to + Regularized Likelihood Methods. In ADVANCES IN LARGE MARGIN CLASSIFIERS (1999), pp. 61-74. + + Hsuan-Tien Lin, Chih-Jen Lin, and Ruby C. Weng. 2007. A note on Platt's probabilistic outputs + for support vector machines. Mach. Learn. 68, 3 (October 2007), 267-276. + + + + + + // Example XOR problem + double[][] inputs = + { + new double[] { 0, 0 }, // 0 xor 0: 1 (label +1) + new double[] { 0, 1 }, // 0 xor 1: 0 (label -1) + new double[] { 1, 0 }, // 1 xor 0: 0 (label -1) + new double[] { 1, 1 } // 1 xor 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + 1, -1, -1, 1 + }; + + // Create a Kernel Support Vector Machine for the given inputs + KernelSupportVectorMachine svm = new KernelSupportVectorMachine(new Gaussian(0.1), inputs[0].Length); + + // Instantiate a new learning algorithm for SVMs + SequentialMinimalOptimization smo = new SequentialMinimalOptimization(svm, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 1.0; + + // Run the learning algorithm + double error = smo.Run(); + + // Instantiate the probabilistic learning calibration + ProbabilisticOutputLearning calibration = new ProbabilisticOutputLearning(svm, inputs, labels); + + // Run the calibration algorithm + double loglikelihood = calibration.Run(); + + + // Compute the decision output for one of the input vectors, + // while also retrieving the probability of the answer + + double probability; + int decision = svm.Compute(inputs[0], out probability); + + // At this point, decision is +1 with a probability of 75% + + + + + + + + + + + + + Initializes a new instance of Platt's Probabilistic Output Calibration algorithm. + + + A Support Vector Machine. + The input data points as row vectors. + The classification label for each data point in the range [-1;+1]. + + + + + Runs the calibration algorithm. + + + + The log-likelihood of the calibrated model. + + + + + + Runs the calibration algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The log-likelihood of the calibrated model. + + + + + + Computes the log-likelihood of the current model + for the given inputs and outputs. + + + The input data. + The corresponding outputs. + + The log-likelihood of the model. + + + + + Gets or sets the maximum number of + iterations. Default is 100. + + + + + + Gets or sets the tolerance under which the + answer must be found. Default is 1-e5. + + + + + + Gets or sets the minimum step size used + during line search. Default is 1e-10. + + + + + + One-class Support Vector Machine Learning Algorithm. + + + + + + Constructs a new one-class support vector learning algorithm. + + + A support vector machine. + The input data points as row vectors. + + + + + Runs the learning algorithm. + + + True to compute error after the training + process completes, false otherwise. + + The misclassification error rate of the resulting support + vector machine if is true, + returns zero otherwise. + + + + + + Runs the learning algorithm. + + + + The misclassification error rate of + the resulting support vector machine. + + + + + + Computes the error rate for a given set of inputs. + + + + + + Gets the value for the Lagrange multipliers + (alpha) for every observation vector. + + + + + + Convergence tolerance. Default value is 1e-2. + + + + The criterion for completing the model training process. The default is 0.01. + + + + + + Gets or sets a value indicating whether to use + shrinking heuristics during learning. Default is true. + + + + true to use shrinking; otherwise, false. + + + + + + Controls the number of outliers accepted by the algorithm. This + value provides an upper bound on the fraction of training errors + and a lower bound of the fraction of support vectors. Default is 0.5 + + + + The summary description is given in Chang and Lin, + "LIBSVM: A Library for Support Vector Machines", 2013. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/Accord.MachineLearning.GPL.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/Accord.MachineLearning.GPL.3.0.2.nupkg new file mode 100644 index 0000000000..bbc48c42f Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/Accord.MachineLearning.GPL.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net35/Accord.MachineLearning.GPL.dll b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net35/Accord.MachineLearning.GPL.dll new file mode 100644 index 0000000000..a8e62d169 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net35/Accord.MachineLearning.GPL.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net35/Accord.MachineLearning.GPL.xml b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net35/Accord.MachineLearning.GPL.xml new file mode 100644 index 0000000000..2b11cc434 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net35/Accord.MachineLearning.GPL.xml @@ -0,0 +1,193 @@ + + + + Accord.MachineLearning.GPL + + + + + Sequential Minimal Optimization (SMO) Algorithm for Regression. Warning: + this code is contained in a GPL assembly. Thus, if you link against this + assembly, you should comply with the GPL license. + + + + + The SMO algorithm is an algorithm for solving large quadratic programming (QP) + optimization problems, widely used for the training of support vector machines. + First developed by John C. Platt in 1998, SMO breaks up large QP problems into + a series of smallest possible QP problems, which are then solved analytically. + + This class incorporates modifications in the original SMO algorithm to solve + regression problems as suggested by Alex J. Smola and Bernhard Schölkopf and + further modifications for better performance by Shevade et al. + + + Portions of this implementation has been based on the GPL code by Sylvain Roy in SMOreg.java, a + part of the Weka software package. It is, thus, available under the same GPL license. This file is + not linked against the rest of the Accord.NET Framework and can only be used in GPL applications. + This class is only available in the special Accord.MachineLearning.GPL assembly, which has to be + explicitly selected in the framework installation. Before linking against this assembly, please + read the GPL license for more details. This + assembly also should have been distributed with a copy of the GNU GPLv3 alongside with it. + + + + To use this class, add a reference to the Accord.MachineLearning.GPL.dll assembly + that resides inside the Release/GPL folder of the framework's installation directory. + + + References: + + + A. J. Smola and B. Schölkopf. A Tutorial on Support Vector Regression. NeuroCOLT2 + Technical Report Series, 1998. Available on: + http://www.kernel-machines.org/publications/SmoSch98c + + S.K. Shevade et al. Improvements to SMO Algorithm for SVM Regression, 1999. Available + on: + http://drona.csa.iisc.ernet.in/~chiru/papers/ieee_smo_reg.ps.gz + + G. W. Flake, S. Lawrence. Efficient SVM Regression Training with SMO. + Available on: + http://www.keerthis.com/smoreg_ieee_Shevade_00.pdf + + + + + + // Example regression problem. Suppose we are trying + // to model the following equation: f(x, y) = 2x + y + + double[][] inputs = // (x, y) + { + new double[] { 0, 1 }, // 2*0 + 1 = 1 + new double[] { 4, 3 }, // 2*4 + 3 = 11 + new double[] { 8, -8 }, // 2*8 - 8 = 8 + new double[] { 2, 2 }, // 2*2 + 2 = 6 + new double[] { 6, 1 }, // 2*6 + 1 = 13 + new double[] { 5, 4 }, // 2*5 + 4 = 14 + new double[] { 9, 1 }, // 2*9 + 1 = 19 + new double[] { 1, 6 }, // 2*1 + 6 = 8 + }; + + double[] outputs = // f(x, y) + { + 1, 11, 8, 6, 13, 14, 20, 8 + }; + + // Create Kernel Support Vector Machine with a Polynomial Kernel of 2nd degree + var machine = new KernelSupportVectorMachine(new Polynomial(2), inputs: 2); + + // Create the sequential minimal optimization teacher + var learn = new SequentialMinimalOptimizationRegression(machine, inputs, outputs); + + // Run the learning algorithm + double error = learn.Run(); + + // Compute the answer for one particular example + double fxy = machine.Compute(inputs[0]); // 1.0003849827673186 + + + + + + + Initializes a new instance of a Sequential Minimal Optimization (SMO) algorithm. + + + A Support Vector Machine. + The input data points as row vectors. + The classification label for each data point. + + + + + Runs the SMO algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Runs the SMO algorithm. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Computes the error ratio for a given set of input and outputs. + + + + + + Chooses which multipliers to optimize using heuristics. + + + + + + Analytically solves the optimization problem for two Lagrange multipliers. + + + + + + Computes the SVM output for a given point. + + + + + + Complexity (cost) parameter C. Increasing the value of C forces the creation + of a more accurate model that may not generalize well. Default value is 1. + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + + + + Insensitivity zone ε. Increasing the value of ε can result in fewer support + vectors in the created model. Default value is 1e-3. + + + + Parameter ε controls the width of the ε-insensitive zone, used to fit the training + data. The value of ε can affect the number of support vectors used to construct the + regression function. The bigger ε, the fewer support vectors are selected. On the + other hand, bigger ε-values results in more flat estimates. + + + + + + Convergence tolerance. Default value is 1e-3. + + + The criterion for completing the model training process. The default is 0.001. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net40/Accord.MachineLearning.GPL.dll b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net40/Accord.MachineLearning.GPL.dll new file mode 100644 index 0000000000..2f71e6b8e Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net40/Accord.MachineLearning.GPL.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net40/Accord.MachineLearning.GPL.xml b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net40/Accord.MachineLearning.GPL.xml new file mode 100644 index 0000000000..2b11cc434 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net40/Accord.MachineLearning.GPL.xml @@ -0,0 +1,193 @@ + + + + Accord.MachineLearning.GPL + + + + + Sequential Minimal Optimization (SMO) Algorithm for Regression. Warning: + this code is contained in a GPL assembly. Thus, if you link against this + assembly, you should comply with the GPL license. + + + + + The SMO algorithm is an algorithm for solving large quadratic programming (QP) + optimization problems, widely used for the training of support vector machines. + First developed by John C. Platt in 1998, SMO breaks up large QP problems into + a series of smallest possible QP problems, which are then solved analytically. + + This class incorporates modifications in the original SMO algorithm to solve + regression problems as suggested by Alex J. Smola and Bernhard Schölkopf and + further modifications for better performance by Shevade et al. + + + Portions of this implementation has been based on the GPL code by Sylvain Roy in SMOreg.java, a + part of the Weka software package. It is, thus, available under the same GPL license. This file is + not linked against the rest of the Accord.NET Framework and can only be used in GPL applications. + This class is only available in the special Accord.MachineLearning.GPL assembly, which has to be + explicitly selected in the framework installation. Before linking against this assembly, please + read the GPL license for more details. This + assembly also should have been distributed with a copy of the GNU GPLv3 alongside with it. + + + + To use this class, add a reference to the Accord.MachineLearning.GPL.dll assembly + that resides inside the Release/GPL folder of the framework's installation directory. + + + References: + + + A. J. Smola and B. Schölkopf. A Tutorial on Support Vector Regression. NeuroCOLT2 + Technical Report Series, 1998. Available on: + http://www.kernel-machines.org/publications/SmoSch98c + + S.K. Shevade et al. Improvements to SMO Algorithm for SVM Regression, 1999. Available + on: + http://drona.csa.iisc.ernet.in/~chiru/papers/ieee_smo_reg.ps.gz + + G. W. Flake, S. Lawrence. Efficient SVM Regression Training with SMO. + Available on: + http://www.keerthis.com/smoreg_ieee_Shevade_00.pdf + + + + + + // Example regression problem. Suppose we are trying + // to model the following equation: f(x, y) = 2x + y + + double[][] inputs = // (x, y) + { + new double[] { 0, 1 }, // 2*0 + 1 = 1 + new double[] { 4, 3 }, // 2*4 + 3 = 11 + new double[] { 8, -8 }, // 2*8 - 8 = 8 + new double[] { 2, 2 }, // 2*2 + 2 = 6 + new double[] { 6, 1 }, // 2*6 + 1 = 13 + new double[] { 5, 4 }, // 2*5 + 4 = 14 + new double[] { 9, 1 }, // 2*9 + 1 = 19 + new double[] { 1, 6 }, // 2*1 + 6 = 8 + }; + + double[] outputs = // f(x, y) + { + 1, 11, 8, 6, 13, 14, 20, 8 + }; + + // Create Kernel Support Vector Machine with a Polynomial Kernel of 2nd degree + var machine = new KernelSupportVectorMachine(new Polynomial(2), inputs: 2); + + // Create the sequential minimal optimization teacher + var learn = new SequentialMinimalOptimizationRegression(machine, inputs, outputs); + + // Run the learning algorithm + double error = learn.Run(); + + // Compute the answer for one particular example + double fxy = machine.Compute(inputs[0]); // 1.0003849827673186 + + + + + + + Initializes a new instance of a Sequential Minimal Optimization (SMO) algorithm. + + + A Support Vector Machine. + The input data points as row vectors. + The classification label for each data point. + + + + + Runs the SMO algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Runs the SMO algorithm. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Computes the error ratio for a given set of input and outputs. + + + + + + Chooses which multipliers to optimize using heuristics. + + + + + + Analytically solves the optimization problem for two Lagrange multipliers. + + + + + + Computes the SVM output for a given point. + + + + + + Complexity (cost) parameter C. Increasing the value of C forces the creation + of a more accurate model that may not generalize well. Default value is 1. + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + + + + Insensitivity zone ε. Increasing the value of ε can result in fewer support + vectors in the created model. Default value is 1e-3. + + + + Parameter ε controls the width of the ε-insensitive zone, used to fit the training + data. The value of ε can affect the number of support vectors used to construct the + regression function. The bigger ε, the fewer support vectors are selected. On the + other hand, bigger ε-values results in more flat estimates. + + + + + + Convergence tolerance. Default value is 1e-3. + + + The criterion for completing the model training process. The default is 0.001. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net45/Accord.MachineLearning.GPL.dll b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net45/Accord.MachineLearning.GPL.dll new file mode 100644 index 0000000000..50d567953 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net45/Accord.MachineLearning.GPL.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net45/Accord.MachineLearning.GPL.xml b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net45/Accord.MachineLearning.GPL.xml new file mode 100644 index 0000000000..2b11cc434 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.MachineLearning.GPL.3.0.2/lib/net45/Accord.MachineLearning.GPL.xml @@ -0,0 +1,193 @@ + + + + Accord.MachineLearning.GPL + + + + + Sequential Minimal Optimization (SMO) Algorithm for Regression. Warning: + this code is contained in a GPL assembly. Thus, if you link against this + assembly, you should comply with the GPL license. + + + + + The SMO algorithm is an algorithm for solving large quadratic programming (QP) + optimization problems, widely used for the training of support vector machines. + First developed by John C. Platt in 1998, SMO breaks up large QP problems into + a series of smallest possible QP problems, which are then solved analytically. + + This class incorporates modifications in the original SMO algorithm to solve + regression problems as suggested by Alex J. Smola and Bernhard Schölkopf and + further modifications for better performance by Shevade et al. + + + Portions of this implementation has been based on the GPL code by Sylvain Roy in SMOreg.java, a + part of the Weka software package. It is, thus, available under the same GPL license. This file is + not linked against the rest of the Accord.NET Framework and can only be used in GPL applications. + This class is only available in the special Accord.MachineLearning.GPL assembly, which has to be + explicitly selected in the framework installation. Before linking against this assembly, please + read the GPL license for more details. This + assembly also should have been distributed with a copy of the GNU GPLv3 alongside with it. + + + + To use this class, add a reference to the Accord.MachineLearning.GPL.dll assembly + that resides inside the Release/GPL folder of the framework's installation directory. + + + References: + + + A. J. Smola and B. Schölkopf. A Tutorial on Support Vector Regression. NeuroCOLT2 + Technical Report Series, 1998. Available on: + http://www.kernel-machines.org/publications/SmoSch98c + + S.K. Shevade et al. Improvements to SMO Algorithm for SVM Regression, 1999. Available + on: + http://drona.csa.iisc.ernet.in/~chiru/papers/ieee_smo_reg.ps.gz + + G. W. Flake, S. Lawrence. Efficient SVM Regression Training with SMO. + Available on: + http://www.keerthis.com/smoreg_ieee_Shevade_00.pdf + + + + + + // Example regression problem. Suppose we are trying + // to model the following equation: f(x, y) = 2x + y + + double[][] inputs = // (x, y) + { + new double[] { 0, 1 }, // 2*0 + 1 = 1 + new double[] { 4, 3 }, // 2*4 + 3 = 11 + new double[] { 8, -8 }, // 2*8 - 8 = 8 + new double[] { 2, 2 }, // 2*2 + 2 = 6 + new double[] { 6, 1 }, // 2*6 + 1 = 13 + new double[] { 5, 4 }, // 2*5 + 4 = 14 + new double[] { 9, 1 }, // 2*9 + 1 = 19 + new double[] { 1, 6 }, // 2*1 + 6 = 8 + }; + + double[] outputs = // f(x, y) + { + 1, 11, 8, 6, 13, 14, 20, 8 + }; + + // Create Kernel Support Vector Machine with a Polynomial Kernel of 2nd degree + var machine = new KernelSupportVectorMachine(new Polynomial(2), inputs: 2); + + // Create the sequential minimal optimization teacher + var learn = new SequentialMinimalOptimizationRegression(machine, inputs, outputs); + + // Run the learning algorithm + double error = learn.Run(); + + // Compute the answer for one particular example + double fxy = machine.Compute(inputs[0]); // 1.0003849827673186 + + + + + + + Initializes a new instance of a Sequential Minimal Optimization (SMO) algorithm. + + + A Support Vector Machine. + The input data points as row vectors. + The classification label for each data point. + + + + + Runs the SMO algorithm. + + + + True to compute error after the training + process completes, false otherwise. Default is true. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Runs the SMO algorithm. + + + + The sum of squares error rate for + the resulting support vector machine. + + + + + + Computes the error ratio for a given set of input and outputs. + + + + + + Chooses which multipliers to optimize using heuristics. + + + + + + Analytically solves the optimization problem for two Lagrange multipliers. + + + + + + Computes the SVM output for a given point. + + + + + + Complexity (cost) parameter C. Increasing the value of C forces the creation + of a more accurate model that may not generalize well. Default value is 1. + + + + The cost parameter C controls the trade off between allowing training + errors and forcing rigid margins. It creates a soft margin that permits + some misclassifications. Increasing the value of C increases the cost of + misclassifying points and forces the creation of a more accurate model + that may not generalize well. + + + + + + Insensitivity zone ε. Increasing the value of ε can result in fewer support + vectors in the created model. Default value is 1e-3. + + + + Parameter ε controls the width of the ε-insensitive zone, used to fit the training + data. The value of ε can affect the number of support vectors used to construct the + regression function. The bigger ε, the fewer support vectors are selected. On the + other hand, bigger ε-values results in more flat estimates. + + + + + + Convergence tolerance. Default value is 1e-3. + + + The criterion for completing the model training process. The default is 0.001. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/Accord.Math.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/Accord.Math.3.0.2.nupkg new file mode 100644 index 0000000000..4a27a3dc9 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/Accord.Math.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net35/Accord.Math.dll b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net35/Accord.Math.dll new file mode 100644 index 0000000000..762ec53d1 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net35/Accord.Math.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net35/Accord.Math.xml b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net35/Accord.Math.xml new file mode 100644 index 0000000000..b8c0a4a92 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net35/Accord.Math.xml @@ -0,0 +1,27310 @@ + + + + Accord.Math + + + + + Histogram for continuous random values. + + + The class wraps histogram for continuous stochastic function, which is represented + by integer array and range of the function. Values of the integer array are treated + as total amount of hits on the corresponding subranges, which are calculated by splitting the + specified range into required amount of consequent ranges. + + For example, if the integer array is equal to { 1, 2, 4, 8, 16 } and the range is set + to [0, 1], then the histogram consists of next subranges: + + [0.0, 0.2] - 1 hit; + [0.2, 0.4] - 2 hits; + [0.4, 0.6] - 4 hits; + [0.6, 0.8] - 8 hits; + [0.8, 1.0] - 16 hits. + + + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get mean and standard deviation values + Console.WriteLine( "mean = " + histogram.Mean + ", std.dev = " + histogram.StdDev ); + + + + + + + Initializes a new instance of the class. + + + Values of the histogram. + Range of random values. + + Values of the integer array are treated as total amount of hits on the + corresponding subranges, which are calculated by splitting the specified range into + required amount of consequent ranges (see class + description for more information). + + + + + + Get range around median containing specified percentage of values. + + + Values percentage around median. + + Returns the range which containes specifies percentage of values. + + The method calculates range of stochastic variable, which summary probability + comprises the specified percentage of histogram's hits. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get 50% range + Range range = histogram.GetRange( 0.5f ); + // show the range ([0.25, 0.75]) + Console.WriteLine( "50% range = [" + range.Min + ", " + range.Max + "]" ); + + + + + + + Update statistical value of the histogram. + + + The method recalculates statistical values of the histogram, like mean, + standard deviation, etc. The method should be called only in the case if histogram + values were retrieved through property and updated after that. + + + + + + Values of the histogram. + + + + + + Range of random values. + + + + + + Mean value. + + + The property allows to retrieve mean value of the histogram. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get mean value (= 0.505 ) + Console.WriteLine( "mean = " + histogram.Mean.ToString( "F3" ) ); + + + + + + + Standard deviation. + + + The property allows to retrieve standard deviation value of the histogram. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get std.dev. value (= 0.215) + Console.WriteLine( "std.dev. = " + histogram.StdDev.ToString( "F3" ) ); + + + + + + + Median value. + + + The property allows to retrieve median value of the histogram. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get median value (= 0.500) + Console.WriteLine( "median = " + histogram.Median.ToString( "F3" ) ); + + + + + + + Minimum value. + + + The property allows to retrieve minimum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get min value (= 0.250) + Console.WriteLine( "min = " + histogram.Min.ToString( "F3" ) ); + + + + + + Maximum value. + + + The property allows to retrieve maximum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get max value (= 0.875) + Console.WriteLine( "max = " + histogram.Max.ToString( "F3" ) ); + + + + + + + Fourier transformation. + + + The class implements one dimensional and two dimensional + Discrete and Fast Fourier Transformation. + + + + + One dimensional Discrete Fourier Transform. + + + Data to transform. + Transformation direction. + + + + + Two dimensional Discrete Fourier Transform. + + + Data to transform. + Transformation direction. + + + + + One dimensional Fast Fourier Transform. + + + Data to transform. + Transformation direction. + + The method accepts array of 2n size + only, where n may vary in the [1, 14] range. + + Incorrect data length. + + + + + Two dimensional Fast Fourier Transform. + + + Data to transform. + Transformation direction. + + The method accepts array of 2n size + only in each dimension, where n may vary in the [1, 14] range. For example, 16x16 array + is valid, but 15x15 is not. + + Incorrect data length. + + + + + Fourier transformation direction. + + + + + Forward direction of Fourier transformation. + + + + + + Backward direction of Fourier transformation. + + + + + + Gaussian function. + + + The class is used to calculate 1D and 2D Gaussian functions for + specified (s) value: + + + 1-D: f(x) = exp( x * x / ( -2 * s * s ) ) / ( s * sqrt( 2 * PI ) ) + + 2-D: f(x, y) = exp( x * x + y * y / ( -2 * s * s ) ) / ( s * s * 2 * PI ) + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Sigma value. + + + + + 1-D Gaussian function. + + + x value. + + Returns function's value at point . + + The function calculates 1-D Gaussian function: + + + f(x) = exp( x * x / ( -2 * s * s ) ) / ( s * sqrt( 2 * PI ) ) + + + + + + + 2-D Gaussian function. + + + x value. + y value. + + Returns function's value at point (, ). + + The function calculates 2-D Gaussian function: + + + f(x, y) = exp( x * x + y * y / ( -2 * s * s ) ) / ( s * s * 2 * PI ) + + + + + + + 1-D Gaussian kernel. + + + Kernel size (should be odd), [3, 101]. + + Returns 1-D Gaussian kernel of the specified size. + + The function calculates 1-D Gaussian kernel, which is array + of Gaussian function's values in the [-r, r] range of x value, where + r=floor(/2). + + + Wrong kernel size. + + + + + 2-D Gaussian kernel. + + + Kernel size (should be odd), [3, 101]. + + Returns 2-D Gaussian kernel of specified size. + + The function calculates 2-D Gaussian kernel, which is array + of Gaussian function's values in the [-r, r] range of x,y values, where + r=floor(/2). + + + Wrong kernel size. + + + + + Sigma value. + + + Sigma property of Gaussian function. + + Default value is set to 1. Minimum allowed value is 0.00000001. + + + + + + Shape optimizer, which merges points within close distance to each other. + + + This shape optimizing algorithm checks all points of a shape + and merges any two points which are within specified distance + to each other. Two close points are replaced by a single point, which has + mean coordinates of the removed points. + + Because of the fact that the algorithm performs points merging + while it goes through a shape, it may merge several points (more than 2) into a + single point, where distance between extreme points may be bigger + than the specified limit. For example, suppose + a case with 3 points, where 1st and 2nd points are close enough to be merged, but the + 3rd point is a little bit further. During merging of 1st and 2nd points, it may + happen that the new point with mean coordinates will get closer to the 3rd point, + so they will be merged also on next iteration of the algorithm. + + + For example, the below circle shape comprised of 65 points, can be optimized to 8 points + by setting to 28.
+ +
+
+ +
+ + + Interface for shape optimizing algorithms. + + + The interface defines set of methods, which should be implemented + by shape optimizing algorithms. These algorithms take input shape, which is defined + by a set of points (corners of convex hull, etc.), and remove some insignificant points from it, + which has little influence on the final shape's look. + + The shape optimizing algorithms can be useful in conjunction with such algorithms + like convex hull searching, which usually may provide many hull points, where some + of them are insignificant and could be removed. + + For additional details about shape optimizing algorithms, documentation of + particular algorithm should be studied. + + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum allowed distance between points, which are + merged during optimization (see ). + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Maximum allowed distance between points, which are merged during optimization, [0, ∞). + + + The property sets maximum allowed distance between two points of + a shape, which are replaced by single point with mean coordinates. + + Default value is set to 10. + + + + + 3D pose estimation algorithm (coplanar case). + + + The class implements an algorithm for 3D object's pose estimation from it's + 2D coordinates obtained by perspective projection, when the object is described coplanar points. + The idea of the implemented math and algorithm is described in "Iterative Pose Estimation using + Coplanar Feature Points" paper written by Oberkampf, Daniel DeMenthon and Larry Davis + (the implementation of the algorithm is very close translation of the pseudo code given by the + paper, so should be easy to follow). + + At this point the implementation works only with models described by 4 points, which is + the minimum number of points enough for 3D pose estimation. + + The 4 model's point are supposed to be coplanar, i.e. supposed to reside all within + same planer. See for none coplanar case. + + Read 3D Pose Estimation article for + additional information and samples. + + Sample usage: + + // points of real object - model + Vector3[] copositObject = new Vector3[4] + { + new Vector3( -56.5f, 0, 56.5f ), + new Vector3( 56.5f, 0, 56.5f ), + new Vector3( 56.5f, 0, -56.5f ), + new Vector3( -56.5f, 0, -56.5f ), + }; + // focal length of camera used to capture the object + float focalLength = 640; // depends on your camera or projection system + // initialize CoPOSIT object + CoplanarPosit coposit = new CoplanarPosit( copositObject, focalLength ); + + // 2D points of te object - projection + AForge.Point[] projectedPoints = new AForge.Point[4] + { + new AForge.Point( -77, 48 ), + new AForge.Point( 44, 66 ), + new AForge.Point( 75, -36 ), + new AForge.Point( -61, -58 ), + }; + // estimate pose + Matrix3x3 rotationMatrix; + Vector3 translationVector; + coposit.EstimatePose( projectedPoints, + out rotationMatrix, out translationVector ); + + + + + + + + + Initializes a new instance of the class. + + + Array of vectors containing coordinates of four real model's point. + Effective focal length of the camera used to capture the model. + + The model must have 4 points. + + + + + Estimate pose of a model from it's projected 2D coordinates. + + + 4 2D points of the model's projection. + Gets best estimation of object's rotation. + Gets best estimation of object's translation. + + 4 points must be be given for pose estimation. + + Because of the Coplanar POSIT algorithm's nature, it provides two pose estimations, + which are valid from the algorithm's math point of view. For each pose an error is calculated, + which specifies how good estimation fits to the specified real 2D coordinated. The method + provides the best estimation through its output parameters and + . This may be enough for many of the pose estimation application. + For those, who require checking the alternate pose estimation, it can be obtained using + and properties. + The calculated error is provided for both estimations through and + properties. + + + + + + Best estimated pose recently found. + + + The property keeps best estimated pose found by the latest call to . + The same estimated pose is provided by that method also and can be accessed through this property + for convenience. + + See also and . + + + + + + Best estimated translation recently found. + + + The property keeps best estimated translation found by the latest call to . + The same estimated translation is provided by that method also and can be accessed through this property + for convenience. + + See also and . + + + + + + Error of the best pose estimation. + + + The property keeps error of the best pose estimation, which is calculated as average + error between real angles of the specified quadrilateral and angles of the quadrilateral which + is a projection of the best pose estimation. The error is measured degrees in (angle). + + + + + + Alternate estimated pose recently found. + + + The property keeps alternate estimated pose found by the latest call to . + + See also and . + + + + + + Alternated estimated translation recently found. + + + The property keeps alternate estimated translation found by the latest call to . + + See also and . + + + + + + Error of the alternate pose estimation. + + + The property keeps error of the alternate pose estimation, which is calculated as average + error between real angles of the specified quadrilateral and angles of the quadrilateral which + is a projection of the alternate pose estimation. The error is measured in degrees (angle). + + + + + + Coordinates of the model points which pose should be estimated. + + + + + Effective focal length of the camera used to capture the model. + + + + + Shape optimizer, which removes obtuse angles (close to flat) from a shape. + + + This shape optimizing algorithm checks all adjacent edges of a shape + and substitutes any 2 edges with a single edge if angle between them is greater than + . The algorithm makes sure there are not obtuse angles in + a shape, which are very close to flat line. + + The shape optimizer does not optimize shapes to less than 3 points, so optimized + shape always will have at least 3 points. + + + For example, the below circle shape comprised of 65 points, can be optimized to 10 points + by setting to 160.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum acceptable angle between two edges of a shape (see ). + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Maximum angle between adjacent edges to keep in a shape, [140, 180]. + + + The property sets maximum angle between adjacent edges, which is kept + during optimization. All edges, which have a greater angle between them, are substituted + by a single edge. + + Default value is set to 160. + + + + + Collection of some gemetry tool methods. + + + + + + Calculate angle between to vectors measured in [0, 180] degrees range. + + + Starting point of both vectors. + Ending point of the first vector. + Ending point of the second vector. + + Returns angle between specified vectors measured in degrees. + + + + + Calculate minimum angle between two lines measured in [0, 90] degrees range. + + + A point on the first line. + Another point on the first line. + A point on the second line. + Another point on the second line. + + Returns minimum angle between two lines. + + It is preferred to use if it is required to calculate angle + multiple times for one of the lines. + + and are the same, + -OR- and are the same. + + + + + Graham scan algorithm for finding convex hull. + + + The class implements + Graham scan algorithm for finding convex hull + of a given set of points. + + Sample usage: + + // generate some random points + Random rand = new Random( ); + List<IntPoint> points = new List<IntPoint>( ); + + for ( int i = 0; i < 10; i++ ) + { + points.Add( new IntPoint( + rand.Next( 200 ) - 100, + rand.Next( 200 ) - 100 ) ); + } + + // find the convex hull + IConvexHullAlgorithm hullFinder = new GrahamConvexHull( ); + List<IntPoint> hull = hullFinder.FindHull( points ); + + + + + + + Interface defining methods for algorithms, which search for convex hull of the specified points' set. + + + The interface defines a method, which should be implemented by different classes + performing convex hull search for specified set of points. + + All algorithms, implementing this interface, should follow two rules for the found convex hull: + + the first point in the returned list is the point with lowest X coordinate (and with lowest Y if + there are several points with the same X value); + points in the returned list are given in counter clockwise order + (Cartesian + coordinate system). + + + + + + + + Find convex hull for the given set of points. + + + Set of points to search convex hull for. + + Returns set of points, which form a convex hull for the given . + + + + + Find convex hull for the given set of points. + + + Set of points to search convex hull for. + + Returns set of points, which form a convex hull for the given . + The first point in the list is the point with lowest X coordinate (and with lowest Y if there are + several points with the same X value). Points are provided in counter clockwise order + (Cartesian + coordinate system). + + + + + The class encapsulates 2D line and provides some tool methods related to lines. + + + The class provides some methods which are related to lines: + angle between lines, distance to point, finding intersection point, etc. + + + Generally, the equation of the line is y = * x + + . However, when is an Infinity, + would normally be meaningless, and it would be + impossible to distinguish the line x = 5 from the line x = -5. Therefore, + if is or + , the line's equation is instead + x = . + + Sample usage: + + // create a line + Line line = Line.FromPoints( new Point( 0, 0 ), new Point( 3, 4 ) ); + // check if it is vertical or horizontal + if ( line.IsVertical || line.IsHorizontal ) + { + // ... + } + + // get intersection point with another line + Point intersection = line.GetIntersectionWith( + Line.FromPoints( new Point( 3, 0 ), new Point( 0, 4 ) ) ); + + + + + + + Creates a that goes through the two specified points. + + + One point on the line. + Another point on the line. + + Returns a representing the line between + and . + + Thrown if the two points are the same. + + + + + Creates a with the specified slope and intercept. + + + The slope of the line + The Y-intercept of the line, unless the slope is an + infinity, in which case the line's equation is "x = intercept" instead. + + Returns a representing the specified line. + + The construction here follows the same rules as for the rest of this class. + Most lines are expressed as y = slope * x + intercept. Vertical lines, however, are + x = intercept. This is indicated by being true or by + returning or + . + + + + + Constructs a from a radius and an angle (in degrees). + + + The minimum distance from the line to the origin. + The angle of the vector from the origin to the line. + + Returns a representing the specified line. + + is the minimum distance from the origin + to the line, and is the counterclockwise rotation from + the positive X axis to the vector through the origin and normal to the line. + This means that if is in [0,180), the point on the line + closest to the origin is on the positive X or Y axes, or in quadrants I or II. Likewise, + if is in [180,360), the point on the line closest to the + origin is on the negative X or Y axes, or in quadrants III or IV. + + Thrown if radius is negative. + + + + + Constructs a from a point and an angle (in degrees). + + + The minimum distance from the line to the origin. + The angle of the normal vector from the origin to the line. + + is the counterclockwise rotation from + the positive X axis to the vector through the origin and normal to the line. + This means that if is in [0,180), the point on the line + closest to the origin is on the positive X or Y axes, or in quadrants I or II. Likewise, + if is in [180,360), the point on the line closest to the + origin is on the negative X or Y axes, or in quadrants III or IV. + + Returns a representing the specified line. + + + + + Calculate minimum angle between this line and the specified line measured in [0, 90] degrees range. + + + The line to find angle between. + + Returns minimum angle between lines. + + + + + Finds intersection point with the specified line. + + + Line to find intersection with. + + Returns intersection point with the specified line, or + if the lines are parallel and distinct. + + Thrown if the specified line is the same line as this line. + + + + + Finds, provided it exists, the intersection point with the specified . + + + to find intersection with. + + Returns intersection point with the specified , or , + if this line does not intersect with the segment. + + If the line and segment do not intersect, the method returns . + If the line and segment share multiple points, the method throws an . + + + Thrown if is a portion + of this line. + + + + + Calculate Euclidean distance between a point and a line. + + + The point to calculate distance to. + + Returns the Euclidean distance between this line and the specified point. Unlike + , this returns the distance from the infinite line. (0,0) is 0 units + from the line defined by (0,5) and (0,8), but is 5 units from the segment with those endpoints. + + + + + Equality operator - checks if two lines have equal parameters. + + + First line to check. + Second line to check. + + Returns if parameters of specified + lines are equal. + + + + + Inequality operator - checks if two lines have different parameters. + + + First line to check. + Second line to check. + + Returns if parameters of specified + lines are not equal. + + + + + Check if this instance of equals to the specified one. + + + Another line to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains values of the like in readable form. + + + + + Checks if the line vertical or not. + + + + + + Checks if the line horizontal or not. + + + + + Gets the slope of the line. + + + + + If not , gets the Line's Y-intercept. + If gets the line's X-intercept. + + + + + The class encapsulates 2D line segment and provides some tool methods related to lines. + + + The class provides some methods which are related to line segments: + distance to point, finding intersection point, etc. + + + A line segment may be converted to a . + + Sample usage: + + // create a segment + LineSegment segment = new LineSegment( new Point( 0, 0 ), new Point( 3, 4 ) ); + // get segment's length + float length = segment.Length; + + // get intersection point with a line + Point? intersection = segment.GetIntersectionWith( + new Line( new Point( -3, 8 ), new Point( 0, 4 ) ) ); + + + + + + + Initializes a new instance of the class. + + + Segment's start point. + Segment's end point. + + Thrown if the two points are the same. + + + + + Converts this to a by discarding + its endpoints and extending it infinitely in both directions. + + + The segment to convert to a . + + Returns a that contains this . + + + + + Calculate Euclidean distance between a point and a finite line segment. + + + The point to calculate the distance to. + + Returns the Euclidean distance between this line segment and the specified point. Unlike + , this returns the distance from the finite segment. (0,0) is 5 units + from the segment (0,5)-(0,8), but is 0 units from the line through those points. + + + + + Finds, provided it exists, the intersection point with the specified . + + + to find intersection with. + + Returns intersection point with the specified , or , if + the two segments do not intersect. + + If the two segments do not intersect, the method returns . If the two + segments share multiple points, this throws an . + + + Thrown if the segments overlap - if they have + multiple points in common. + + + + + Finds, provided it exists, the intersection point with the specified . + + + to find intersection with. + + Returns intersection point with the specified , or , if + the line does not intersect with this segment. + + If the line and the segment do not intersect, the method returns . If the line + and the segment share multiple points, the method throws an . + + + Thrown if this segment is a portion of + line. + + + + + Equality operator - checks if two line segments have equal parameters. + + + First line segment to check. + Second line segment to check. + + Returns if parameters of specified + line segments are equal. + + + + + Inequality operator - checks if two lines have different parameters. + + + First line segment to check. + Second line segment to check. + + Returns if parameters of specified + line segments are not equal. + + + + + Check if this instance of equals to the specified one. + + + Another line segment to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains values of the like in readable form. + + + + + Start point of the line segment. + + + + + End point of the line segment. + + + + + Get segment's length - Euclidean distance between its and points. + + + + + Shape optimizer, which removes points within close range to shapes' body. + + + This shape optimizing algorithm checks all points of the shape and + removes those of them, which are in a certain distance to a line connecting previous and + the next points. In other words, it goes through all adjacent edges of a shape and checks + what is the distance between the corner formed by these two edges and a possible edge, which + could be used as substitution of these edges. If the distance is equal or smaller than + the specified value, then the point is removed, + so the two edges are substituted by a single one. When optimization process is done, + the new shape has reduced amount of points and none of the removed points are further away + from the new shape than the specified limit. + + The shape optimizer does not optimize shapes to less than 3 points, so optimized + shape always will have at least 3 points. + + + For example, the below circle shape comprised of 65 points, can be optimized to 8 points + by setting to 10.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum allowed distance between removed points + and optimized shape (see ). + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Maximum allowed distance between removed points and optimized shape, [0, ∞). + + + The property sets maximum allowed distance between points removed from original + shape and optimized shape - none of the removed points are further away + from the new shape than the specified limit. + + + Default value is set to 5. + + + + + Set of tools for processing collection of points in 2D space. + + + The static class contains set of routines, which provide different + operations with collection of points in 2D space. For example, finding the + furthest point from a specified point or line. + + Sample usage: + + // create points' list + List<IntPoint> points = new List<IntPoint>( ); + points.Add( new IntPoint( 10, 10 ) ); + points.Add( new IntPoint( 20, 15 ) ); + points.Add( new IntPoint( 15, 30 ) ); + points.Add( new IntPoint( 40, 12 ) ); + points.Add( new IntPoint( 30, 20 ) ); + // get furthest point from the specified point + IntPoint p1 = PointsCloud.GetFurthestPoint( points, new IntPoint( 15, 15 ) ); + Console.WriteLine( p1.X + ", " + p1.Y ); + // get furthest point from line + IntPoint p2 = PointsCloud.GetFurthestPointFromLine( points, + new IntPoint( 50, 0 ), new IntPoint( 0, 50 ) ); + Console.WriteLine( p2.X + ", " + p2.Y ); + + + + + + + Shift cloud by adding specified value to all points in the collection. + + + Collection of points to shift their coordinates. + Point to shift by. + + + + + Get bounding rectangle of the specified list of points. + + + Collection of points to get bounding rectangle for. + Point comprised of smallest X and Y coordinates. + Point comprised of biggest X and Y coordinates. + + + + + Get center of gravity for the specified list of points. + + + List of points to calculate center of gravity for. + + Returns center of gravity (mean X-Y values) for the specified list of points. + + + + + Find furthest point from the specified point. + + + Collection of points to search furthest point in. + The point to search furthest point from. + + Returns a point, which is the furthest away from the . + + + + + Find two furthest points from the specified line. + + + Collection of points to search furthest points in. + First point forming the line. + Second point forming the line. + First found furthest point. + Second found furthest point (which is on the + opposite side from the line compared to the ); + + The method finds two furthest points from the specified line, + where one point is on one side from the line and the second point is on + another side from the line. + + + + + Find two furthest points from the specified line. + + + Collection of points to search furthest points in. + First point forming the line. + Second point forming the line. + First found furthest point. + Distance between the first found point and the given line. + Second found furthest point (which is on the + opposite side from the line compared to the ); + Distance between the second found point and the given line. + + The method finds two furthest points from the specified line, + where one point is on one side from the line and the second point is on + another side from the line. + + + + + Find the furthest point from the specified line. + + + Collection of points to search furthest point in. + First point forming the line. + Second point forming the line. + + Returns a point, which is the furthest away from the + specified line. + + The method finds the furthest point from the specified line. + Unlike the + method, this method find only one point, which is the furthest away from the line + regardless of side from the line. + + + + + Find the furthest point from the specified line. + + + Collection of points to search furthest points in. + First point forming the line. + Second point forming the line. + Distance between the furthest found point and the given line. + + Returns a point, which is the furthest away from the + specified line. + + The method finds the furthest point from the specified line. + Unlike the + method, this method find only one point, which is the furthest away from the line + regardless of side from the line. + + + + + Find corners of quadrilateral or triangular area, which contains the specified collection of points. + + + Collection of points to search quadrilateral for. + + Returns a list of 3 or 4 points, which are corners of the quadrilateral or + triangular area filled by specified collection of point. The first point in the list + is the point with lowest X coordinate (and with lowest Y if there are several points + with the same X value). The corners are provided in counter clockwise order + (Cartesian + coordinate system). + + The method makes an assumption that the specified collection of points + form some sort of quadrilateral/triangular area. With this assumption it tries to find corners + of the area. + + The method does not search for bounding quadrilateral/triangular area, + where all specified points are inside of the found quadrilateral/triangle. Some of the + specified points potentially may be outside of the found quadrilateral/triangle, since the + method takes corners only from the specified collection of points, but does not calculate such + to form true bounding quadrilateral/triangle. + + See property for additional information. + + + + + + Relative distortion limit allowed for quadrilaterals, [0.0, 0.25]. + + + The value of this property is used to calculate distortion limit used by + , when processing potential corners and making decision + if the provided points form a quadrilateral or a triangle. The distortion limit is + calculated as: + + distrtionLimit = RelativeDistortionLimit * ( W * H ) / 2, + + where W and H are width and height of the "points cloud" passed to the + . + + + To explain the idea behind distortion limit, let’s suppose that quadrilateral finder routine found + the next candidates for corners:
+
+ As we can see on the above picture, the shape there potentially can be a triangle, but not quadrilateral + (suppose that points list comes from a hand drawn picture or acquired from camera, so some + inaccuracy may exist). It may happen that the D point is just a distortion (noise, etc). + So the check what is the distance between a potential corner + (D in this case) and a line connecting two adjacent points (AB in this case). If the distance is smaller + then the distortion limit, then the point may be rejected, so the shape turns into triangle. +
+ + An exception is the case when both C and D points are very close to the AB line, + so both their distances are less than distortion limit. In this case both points will be accepted as corners - + the shape is just a flat quadrilateral. + + Default value is set to 0.1. +
+ +
+ + + 3D pose estimation algorithm. + + + The class implements an algorithm for 3D object's pose estimation from it's + 2D coordinates obtained by perspective projection, when the object is described none coplanar points. + The idea of the implemented math and algorithm is described in "Model-Based Object Pose in 25 + Lines of Code" paper written by Daniel F. DeMenthon and Larry S. Davis (the implementation of + the algorithm is almost 1 to 1 translation of the pseudo code given by the paper, so should + be easy to follow). + + At this point the implementation works only with models described by 4 points, which is + the minimum number of points enough for 3D pose estimation. + + The 4 model's point must not be coplanar, i.e. must not reside all within + same planer. See for coplanar case. + + Read 3D Pose Estimation article for + additional information and samples. + + Sample usage: + + // points of real object - model + Vector3[] positObject = new Vector3[4] + { + new Vector3( 28, 28, -28 ), + new Vector3( -28, 28, -28 ), + new Vector3( 28, -28, -28 ), + new Vector3( 28, 28, 28 ), + }; + // focal length of camera used to capture the object + float focalLength = 640; // depends on your camera or projection system + // initialize POSIT object + Posit posit = new Posit( positObject, focalLength ); + + // 2D points of te object - projection + AForge.Point[] projectedPoints = new AForge.Point[4] + { + new AForge.Point( -4, 29 ), + new AForge.Point( -180, 86 ), + new AForge.Point( -5, -102 ), + new AForge.Point( 76, 137 ), + }; + // estimate pose + Matrix3x3 rotationMatrix; + Vector3 translationVector; + posit.EstimatePose( projectedPoints, + out rotationMatrix, out translationVector ); + + + + + + + + + Initializes a new instance of the class. + + + Array of vectors containing coordinates of four real model's point (points + must not be on the same plane). + Effective focal length of the camera used to capture the model. + + The model must have 4 points. + + + + + Estimate pose of a model from it's projected 2D coordinates. + + + 4 2D points of the model's projection. + Gets object's rotation. + Gets object's translation. + + 4 points must be be given for pose estimation. + + + + + Coordinates of the model points which pose should be estimated. + + + + + Effective focal length of the camera used to capture the model. + + + + + Enumeration of some basic shape types. + + + + + Unknown shape type. + + + + + Circle shape. + + + + + Triangle shape. + + + + + Quadrilateral shape. + + + + + Some common sub types of some basic shapes. + + + + + Unrecognized sub type of a shape (generic shape which does not have + any specific sub type). + + + + + Quadrilateral with one pair of parallel sides. + + + + + Quadrilateral with two pairs of parallel sides. + + + + + Parallelogram with perpendicular adjacent sides. + + + + + Parallelogram with all sides equal. + + + + + Rectangle with all sides equal. + + + + + Triangle with all sides/angles equal. + + + + + Triangle with two sides/angles equal. + + + + + Triangle with a 90 degrees angle. + + + + + Triangle with a 90 degrees angle and other two angles are equal. + + + + + A class for checking simple geometrical shapes. + + + The class performs checking/detection of some simple geometrical + shapes for provided set of points (shape's edge points). During the check + the class goes through the list of all provided points and checks how accurately + they fit into assumed shape. + + All the shape checks allow some deviation of + points from the shape with assumed parameters. In other words it is allowed + that specified set of points may form a little bit distorted shape, which may be + still recognized. The allowed amount of distortion is controlled by two + properties ( and ), + which allow higher distortion level for bigger shapes and smaller amount of + distortion for smaller shapes. Checking specified set of points, the class + calculates mean distance between specified set of points and edge of the assumed + shape. If the mean distance is equal to or less than maximum allowed distance, + then a shape is recognized. The maximum allowed distance is calculated as: + + maxDistance = max( minAcceptableDistortion, relativeDistortionLimit * ( width + height ) / 2 ) + + , where width and height is the size of bounding rectangle for the + specified points. + + + See also and properties, + which set acceptable errors for polygon sub type checking done by + method. + + See the next article for details about the implemented algorithms: + Detecting some simple shapes in images. + + + Sample usage: + + private List<IntPoint> idealCicle = new List<IntPoint>( ); + private List<IntPoint> distorredCircle = new List<IntPoint>( ); + System.Random rand = new System.Random( ); + + // generate sample circles + float radius = 100; + + for ( int i = 0; i < 360; i += 10 ) + { + float angle = (float) ( (float) i / 180 * System.Math.PI ); + + // add point to ideal circle + idealCicle.Add( new IntPoint( + (int) ( radius * System.Math.Cos( angle ) ), + (int) ( radius * System.Math.Sin( angle ) ) ) ); + + // add a bit distortion for distorred cirlce + float distorredRadius = radius + rand.Next( 7 ) - 3; + + distorredCircle.Add( new IntPoint( + (int) ( distorredRadius * System.Math.Cos( angle ) ), + (int) ( distorredRadius * System.Math.Sin( angle ) ) ) ); + } + + // check shape + SimpleShapeChecker shapeChecker = new SimpleShapeChecker( ); + + if ( shapeChecker.IsCircle( idealCicle ) ) + { + // ... + } + + if ( shapeChecker.CheckShapeType( distorredCircle ) == ShapeType.Circle ) + { + // ... + } + + + + + + + Check type of the shape formed by specified points. + + + Shape's points to check. + + Returns type of the detected shape. + + + + + Check if the specified set of points form a circle shape. + + + Shape's points to check. + + Returns if the specified set of points form a + circle shape or otherwise. + + Circle shape must contain at least 8 points to be recognized. + The method returns always, of number of points in the specified + shape is less than 8. + + + + + Check if the specified set of points form a circle shape. + + + Shape's points to check. + Receives circle's center on successful return. + Receives circle's radius on successful return. + + Returns if the specified set of points form a + circle shape or otherwise. + + Circle shape must contain at least 8 points to be recognized. + The method returns always, of number of points in the specified + shape is less than 8. + + + + + Check if the specified set of points form a quadrilateral shape. + + + Shape's points to check. + + Returns if the specified set of points form a + quadrilateral shape or otherwise. + + + + + Check if the specified set of points form a quadrilateral shape. + + + Shape's points to check. + List of quadrilateral corners on successful return. + + Returns if the specified set of points form a + quadrilateral shape or otherwise. + + + + + Check if the specified set of points form a triangle shape. + + + Shape's points to check. + + Returns if the specified set of points form a + triangle shape or otherwise. + + + + + Check if the specified set of points form a triangle shape. + + + Shape's points to check. + List of triangle corners on successful return. + + Returns if the specified set of points form a + triangle shape or otherwise. + + + + + Check if the specified set of points form a convex polygon shape. + + + Shape's points to check. + List of polygon corners on successful return. + + Returns if the specified set of points form a + convex polygon shape or otherwise. + + The method is able to detect only triangles and quadrilaterals + for now. Check number of detected corners to resolve type of the detected polygon. + + + + + + Check sub type of a convex polygon. + + + Corners of the convex polygon to check. + + Return detected sub type of the specified shape. + + The method check corners of a convex polygon detecting + its subtype. Polygon's corners are usually retrieved using + method, but can be any list of 3-4 points (only sub types of triangles and + quadrilateral are checked). + + See and properties, + which set acceptable errors for polygon sub type checking. + + + + + + Check if a shape specified by the set of points fits a convex polygon + specified by the set of corners. + + + Shape's points to check. + Corners of convex polygon to check fitting into. + + Returns if the specified shape fits + the specified convex polygon or otherwise. + + The method checks if the set of specified points form the same shape + as the set of provided corners. + + + + + Minimum value of allowed shapes' distortion. + + + The property sets minimum value for allowed shapes' + distortion (in pixels). See documentation to + class for more details about this property. + + Default value is set to 0.5. + + + + + + Maximum value of allowed shapes' distortion, [0, 1]. + + + The property sets maximum value for allowed shapes' + distortion. The value is measured in [0, 1] range, which corresponds + to [0%, 100%] range, which means that maximum allowed shapes' + distortion is calculated relatively to shape's size. This results to + higher allowed distortion level for bigger shapes and smaller allowed + distortion for smaller shapers. See documentation to + class for more details about this property. + + Default value is set to 0.03 (3%). + + + + + + Maximum allowed angle error in degrees, [0, 20]. + + + The value sets maximum allowed difference between two angles to + treat them as equal. It is used by method to + check for parallel lines and angles of triangles and quadrilaterals. + For example, if angle between two lines equals 5 degrees and this properties value + is set to 7, then two compared lines are treated as parallel. + + Default value is set to 7. + + + + + + Maximum allowed difference in sides' length (relative to shapes' size), [0, 1]. + + + The values sets maximum allowed difference between two sides' length + to treat them as equal. The error value is set relative to shapes size and measured + in [0, 1] range, which corresponds to [0%, 100%] range. Absolute length error in pixels + is calculated as: + + LengthError * ( width + height ) / 2 + + , where width and height is the size of bounding rectangle for the + specified shape. + + + Default value is set to 0.1 (10%). + + + + + + Histogram for discrete random values. + + + The class wraps histogram for discrete stochastic function, which is represented + by integer array, where indexes of the array are treated as values of the stochastic function, + but array values are treated as "probabilities" (total amount of hits). + + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get mean and standard deviation values + Console.WriteLine( "mean = " + histogram.Mean + ", std.dev = " + histogram.StdDev ); + + + + + + + Initializes a new instance of the class. + + + Values of the histogram. + + Indexes of the input array are treated as values of stochastic function, + but array values are treated as "probabilities" (total amount of hits). + + + + + + Get range around median containing specified percentage of values. + + + Values percentage around median. + + Returns the range which containes specifies percentage of values. + + The method calculates range of stochastic variable, which summary probability + comprises the specified percentage of histogram's hits. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get 50% range + IntRange range = histogram.GetRange( 0.5 ); + // show the range ([4, 6]) + Console.WriteLine( "50% range = [" + range.Min + ", " + range.Max + "]" ); + + + + + + + Update statistical value of the histogram. + + + The method recalculates statistical values of the histogram, like mean, + standard deviation, etc., in the case if histogram's values were changed directly. + The method should be called only in the case if histogram's values were retrieved + through property and updated after that. + + + + + + Values of the histogram. + + + Indexes of this array are treated as values of stochastic function, + but array values are treated as "probabilities" (total amount of hits). + + + + + + Mean value. + + + The property allows to retrieve mean value of the histogram. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get mean value (= 4.862) + Console.WriteLine( "mean = " + histogram.Mean.ToString( "F3" ) ); + + + + + + + Standard deviation. + + + The property allows to retrieve standard deviation value of the histogram. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get std.dev. value (= 1.136) + Console.WriteLine( "std.dev. = " + histogram.StdDev.ToString( "F3" ) ); + + + + + + + Median value. + + + The property allows to retrieve median value of the histogram. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get median value (= 5) + Console.WriteLine( "median = " + histogram.Median ); + + + + + + + Minimum value. + + + The property allows to retrieve minimum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get min value (= 2) + Console.WriteLine( "min = " + histogram.Min ); + + + + + + + Maximum value. + + + The property allows to retrieve maximum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get max value (= 6) + Console.WriteLine( "max = " + histogram.Max ); + + + + + + + Total count of values. + + + The property represents total count of values contributed to the histogram, which is + essentially sum of the array. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get total value (= 29) + Console.WriteLine( "total = " + histogram.TotalCount ); + + + + + + + A structure representing 3x3 matrix. + + + The structure incapsulates elements of a 3x3 matrix and + provides some operations with it. + + + + + Row 0 column 0 element of the matrix. + + + + + Row 0 column 1 element of the matrix. + + + + + Row 0 column 2 element of the matrix. + + + + + Row 1 column 0 element of the matrix. + + + + + Row 1 column 1 element of the matrix. + + + + + Row 1 column 2 element of the matrix. + + + + + Row 2 column 0 element of the matrix. + + + + + Row 2 column 1 element of the matrix. + + + + + Row 2 column 2 element of the matrix. + + + + + Returns array representation of the matrix. + + + Returns array which contains all elements of the matrix in the row-major order. + + + + + Creates rotation matrix around Y axis. + + + Rotation angle around Y axis in radians. + + Returns rotation matrix to rotate an object around Y axis. + + + + + Creates rotation matrix around X axis. + + + Rotation angle around X axis in radians. + + Returns rotation matrix to rotate an object around X axis. + + + + + Creates rotation matrix around Z axis. + + + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around Z axis. + + + + + Creates rotation matrix to rotate an object around X, Y and Z axes. + + + Rotation angle around Y axis in radians. + Rotation angle around X axis in radians. + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around all 3 axes. + + + The routine assumes roll-pitch-yaw rotation order, when creating rotation + matrix, i.e. an object is first rotated around Z axis, then around X axis and finally around + Y axis. + + + + + + Extract rotation angles from the rotation matrix. + + + Extracted rotation angle around Y axis in radians. + Extracted rotation angle around X axis in radians. + Extracted rotation angle around Z axis in radians. + + The routine assumes roll-pitch-yaw rotation order when extracting rotation angle. + Using extracted angles with the should provide same rotation matrix. + + + The method assumes the provided matrix represent valid rotation matrix. + + Sample usage: + + // assume we have a rotation matrix created like this + float yaw = 10.0f / 180 * Math.PI; + float pitch = 30.0f / 180 * Math.PI; + float roll = 45.0f / 180 * Math.PI; + + Matrix3x3 rotationMatrix = Matrix3x3.CreateFromYawPitchRoll( yaw, pitch, roll ); + // ... + + // now somewhere in the code you may want to get rotation + // angles back from a matrix assuming same rotation order + float extractedYaw; + float extractedPitch; + float extractedRoll; + + rotation.ExtractYawPitchRoll( out extractedYaw, out extractedPitch, out extractedRoll ); + + + + + + + Creates a matrix from 3 rows specified as vectors. + + + First row of the matrix to create. + Second row of the matrix to create. + Third row of the matrix to create. + + Returns a matrix from specified rows. + + + + + Creates a matrix from 3 columns specified as vectors. + + + First column of the matrix to create. + Second column of the matrix to create. + Third column of the matrix to create. + + Returns a matrix from specified columns. + + + + + Creates a diagonal matrix using the specified vector as diagonal elements. + + + Vector to use for diagonal elements of the matrix. + + Returns a diagonal matrix. + + + + + Get row of the matrix. + + + Row index to get, [0, 2]. + + Returns specified row of the matrix as a vector. + + Invalid row index was specified. + + + + + Get column of the matrix. + + + Column index to get, [0, 2]. + + Returns specified column of the matrix as a vector. + + Invalid column index was specified. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Multiplies matrix by the specified factor. + + + Matrix to multiply. + Factor to multiple the specified matrix by. + + Returns new matrix with all components equal to corresponding components of the + specified matrix multiples by the specified factor. + + + + + Multiplies matrix by the specified factor. + + + Matrix to multiply. + Factor to multiple the specified matrix by. + + Returns new matrix with all components equal to corresponding components of the + specified matrix multiples by the specified factor. + + + + + Adds specified value to all components of the specified matrix. + + + Matrix to add value to. + Value to add to all components of the specified matrix. + + Returns new matrix with all components equal to corresponding components of the + specified matrix increased by the specified value. + + + + + Adds specified value to all components of the specified matrix. + + + Matrix to add value to. + Value to add to all components of the specified matrix. + + Returns new matrix with all components equal to corresponding components of the + specified matrix increased by the specified value. + + + + + Tests whether two specified matrices are equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether two specified matrices are not equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are not equal or otherwise. + + + + + Tests whether the matrix equals to the specified one. + + + The matrix to test equality with. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether the matrix equals to the specified object. + + + The object to test equality with. + + Returns if the matrix equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Transpose the matrix, AT. + + + Return a matrix which equals to transposition of this matrix. + + + + + Multiply the matrix by its transposition, A*AT. + + + Returns a matrix which is the result of multiplying this matrix by its transposition. + + + + + Multiply transposition of this matrix by itself, AT*A. + + + Returns a matrix which is the result of multiplying this matrix's transposition by itself. + + + + + Calculate adjugate of the matrix, adj(A). + + + Returns adjugate of the matrix. + + + + + Calculate inverse of the matrix, A-1. + + + Returns inverse of the matrix. + + Cannot calculate inverse of the matrix since it is singular. + + + + + Calculate pseudo inverse of the matrix, A+. + + + Returns pseudo inverse of the matrix. + + The pseudo inverse of the matrix is calculate through its + as V*E+*UT. + + + + + Calculate Singular Value Decomposition (SVD) of the matrix, such as A=U*E*VT. + + + Output parameter which gets 3x3 U matrix. + Output parameter which gets diagonal elements of the E matrix. + Output parameter which gets 3x3 V matrix. + + Having components U, E and V the source matrix can be reproduced using below code: + + Matrix3x3 source = u * Matrix3x3.Diagonal( e ) * v.Transpose( ); + + + + + + + Provides an identity matrix with all diagonal elements set to 1. + + + + + Calculates determinant of the matrix. + + + + + A structure representing 4x4 matrix. + + + The structure incapsulates elements of a 4x4 matrix and + provides some operations with it. + + + + + Row 0 column 0 element of the matrix. + + + + + + Row 0 column 1 element of the matrix. + + + + + Row 0 column 2 element of the matrix. + + + + + Row 0 column 3 element of the matrix. + + + + + + Row 1 column 0 element of the matrix. + + + + + + Row 1 column 1 element of the matrix. + + + + + + Row 1 column 2 element of the matrix. + + + + + + Row 1 column 3 element of the matrix. + + + + + + Row 2 column 0 element of the matrix. + + + + + + Row 2 column 1 element of the matrix. + + + + + + Row 2 column 2 element of the matrix. + + + + + Row 2 column 3 element of the matrix. + + + + + Row 3 column 0 element of the matrix. + + + + + + Row 3 column 1 element of the matrix. + + + + + + Row 3 column 2 element of the matrix. + + + + + + Row 3 column 3 element of the matrix. + + + + + + Returns array representation of the matrix. + + + Returns array which contains all elements of the matrix in the row-major order. + + + + + Creates rotation matrix around Y axis. + + + Rotation angle around Y axis in radians. + + Returns rotation matrix to rotate an object around Y axis. + + + + + Creates rotation matrix around X axis. + + + Rotation angle around X axis in radians. + + Returns rotation matrix to rotate an object around X axis. + + + + + Creates rotation matrix around Z axis. + + + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around Z axis. + + + + + Creates rotation matrix to rotate an object around X, Y and Z axes. + + + Rotation angle around Y axis in radians. + Rotation angle around X axis in radians. + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around all 3 axes. + + + The routine assumes roll-pitch-yaw rotation order, when creating rotation + matrix, i.e. an object is first rotated around Z axis, then around X axis and finally around + Y axis. + + + + + + Extract rotation angles from the rotation matrix. + + + Extracted rotation angle around Y axis in radians. + Extracted rotation angle around X axis in radians. + Extracted rotation angle around Z axis in radians. + + The routine assumes roll-pitch-yaw rotation order when extracting rotation angle. + Using extracted angles with the should provide same rotation matrix. + + + The method assumes the provided matrix represent valid rotation matrix. + + Sample usage: + + // assume we have a rotation matrix created like this + float yaw = 10.0f / 180 * Math.PI; + float pitch = 30.0f / 180 * Math.PI; + float roll = 45.0f / 180 * Math.PI; + + Matrix4x4 rotationMatrix = Matrix3x3.CreateFromYawPitchRoll( yaw, pitch, roll ); + // ... + + // now somewhere in the code you may want to get rotation + // angles back from a matrix assuming same rotation order + float extractedYaw; + float extractedPitch; + float extractedRoll; + + rotation.ExtractYawPitchRoll( out extractedYaw, out extractedPitch, out extractedRoll ); + + + + + + + Creates 4x4 tranformation matrix from 3x3 rotation matrix. + + + Source 3x3 rotation matrix. + + Returns 4x4 rotation matrix. + + The source 3x3 rotation matrix is copied into the top left corner of the result 4x4 matrix, + i.e. it represents 0th, 1st and 2nd row/column. The element is set to 1 and the rest + elements of 3rd row and 3rd column are set to zeros. + + + + + Creates translation matrix for the specified movement amount. + + + Vector which set direction and amount of movement. + + Returns translation matrix. + + The specified vector is copied to the 3rd column of the result matrix. + All diagonal elements are set to 1. The rest of matrix is initialized with zeros. + + + + + Creates a view matrix for the specified camera position and target point. + + + Position of camera. + Target point towards which camera is pointing. + + Returns a view matrix. + + Camera's "up" vector is supposed to be (0, 1, 0). + + + + + Creates a perspective projection matrix. + + + Width of the view volume at the near view plane. + Height of the view volume at the near view plane. + Distance to the near view plane. + Distance to the far view plane. + + Return a perspective projection matrix. + + Both near and far view planes' distances must be greater than zero. + Near plane must be closer than the far plane. + + + + + Creates a matrix from 4 rows specified as vectors. + + + First row of the matrix to create. + Second row of the matrix to create. + Third row of the matrix to create. + Fourth row of the matrix to create. + + Returns a matrix from specified rows. + + + + + Creates a matrix from 4 columns specified as vectors. + + + First column of the matrix to create. + Second column of the matrix to create. + Third column of the matrix to create. + Fourth column of the matrix to create. + + Returns a matrix from specified columns. + + + + + Creates a diagonal matrix using the specified vector as diagonal elements. + + + Vector to use for diagonal elements of the matrix. + + Returns a diagonal matrix. + + + + + Get row of the matrix. + + + Row index to get, [0, 3]. + + Returns specified row of the matrix as a vector. + + Invalid row index was specified. + + + + + Get column of the matrix. + + + Column index to get, [0, 3]. + + Returns specified column of the matrix as a vector. + + Invalid column index was specified. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Tests whether two specified matrices are equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether two specified matrices are not equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are not equal or otherwise. + + + + + Tests whether the matrix equals to the specified one. + + + The matrix to test equality with. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether the matrix equals to the specified object. + + + The object to test equality with. + + Returns if the matrix equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Provides an identity matrix with all diagonal elements set to 1. + + + + + + Cosine distance metric. + + + This class represents the cosine distance metric (1 - cosine similarity) + . + + + Sample usage: + + // instantiate new distance class + CosineDistance dist = new CosineDistance(); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Interface for distance metric algorithms. + + + The interface defines a set of methods implemented + by distance metric algorithms. These algorithms typically take a set of points and return a + distance measure of the x and y coordinates. In this case, the points are represented by two vectors. + + Distance metric algorithms are used in many machine learning algorithms e.g K-nearest neighbor + and K-means clustering. + + For additional details about distance metrics, documentation of the + particular algorithms should be studied. + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns distance measurement determined by the given algorithm. + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Cosine distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Cosine similarity metric. + + + This class represents the + Cosine Similarity metric. + + Sample usage: + + // instantiate new similarity class + CosineSimilarity sim = new CosineSimilarity( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get similarity between the two vectors + double similarityScore = sim.GetSimilarityScore( p, q ); + + + + + + + Interface for similarity algorithms. + + + The interface defines a set of methods implemented + by similarity and correlation algorithms. These algorithms typically take a set of points and return a + similarity score for the two vectors. + + Similarity and correlation algorithms are used in many machine learning and collaborative + filtering algorithms. + + For additional details about similarity metrics, documentation of the + particular algorithms should be studied. + + + + + + Returns similarity score for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns similarity score determined by the given algorithm. + + + + + Returns similarity score for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Cosine similarity between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Euclidean distance metric. + + + This class represents the + Euclidean distance metric. + + Sample usage: + + // instantiate new distance class + EuclideanDistance dist = new EuclideanDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Euclidean distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Euclidean similarity metric. + + + This class represents the + Euclidean Similarity metric, + which is calculated as 1.0 / ( 1.0 + EuclideanDistance ). + + Sample usage: + + // instantiate new similarity class + EuclideanSimilarity sim = new EuclideanSimilarity( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get simirarity between the two vectors + double similarityScore = sim.GetSimilarityScore( p, q ); + + + + + + + Returns similarity score for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Euclidean similarity between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Hamming distance metric. + + + This class represents the + Hamming distance metric. + + Sample usage: + + // instantiate new distance class + HammingDistance dist = new HammingDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Hamming distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Jaccard distance metric. + + + This class represents the + Jaccard distance metric. + + Sample usage: + + // instantiate new distance class + JaccardDistance dist = new JaccardDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Jaccard distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Manhattan distance metric. + + + This class represents the + Manhattan distance metric + (aka City Block and Taxi Cab distance). + + Sample usage: + + // instantiate new distance class + ManhattanDistance dist = new ManhattanDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Manhattan distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Pearson correlation metric. + + + This class represents the + Pearson correlation metric. + + Sample usage: + + // instantiate new pearson correlation class + PearsonCorrelation cor = new PearsonCorrelation( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get correlation between the two vectors + double correlation = cor.GetSimilarityScore( p, q ); + + + + + + + Returns the pearson correlation for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Pearson correlation between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Perlin noise function. + + + The class implements 1-D and 2-D Perlin noise functions, which represent + sum of several smooth noise functions with different frequency and amplitude. The description + of Perlin noise function and its calculation may be found on + Hugo Elias's page. + + + The number of noise functions, which comprise the resulting Perlin noise function, is + set by property. Amplitude and frequency values for each octave + start from values, which are set by and + properties. + + Sample usage (clouds effect): + + // create Perlin noise function + PerlinNoise noise = new PerlinNoise( 8, 0.5, 1.0 / 32 ); + // generate clouds effect + float[,] texture = new float[height, width]; + + for ( int y = 0; y < height; y++ ) + { + for ( int x = 0; x < width; x++ ) + { + texture[y, x] = + Math.Max( 0.0f, Math.Min( 1.0f, + (float) noise.Function2D( x, y ) * 0.5f + 0.5f + ) ); + } + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Number of octaves (see property). + Persistence value (see property). + + + + + Initializes a new instance of the class. + + + Number of octaves (see property). + Persistence value (see property). + Initial frequency (see property). + Initial amplitude (see property). + + + + + 1-D Perlin noise function. + + + x value. + + Returns function's value at point . + + + + + 2-D Perlin noise function. + + + x value. + y value. + + Returns function's value at point (, ). + + + + + Ordinary noise function + + + + + + Smoothed noise. + + + + + Cosine interpolation. + + + + + Initial frequency. + + + The property sets initial frequency of the first octave. Frequencies for + next octaves are calculated using the next equation:
+ frequencyi = * 2i, + where i = [0, ). +
+ + Default value is set to 1. +
+ +
+ + + Initial amplitude. + + + The property sets initial amplitude of the first octave. Amplitudes for + next octaves are calculated using the next equation:
+ amplitudei = * i, + where i = [0, ). +
+ + Default value is set to 1. +
+ +
+ + + Persistence value. + + + The property sets so called persistence value, which controls the way + how amplitude is calculated for each octave comprising + the Perlin noise function. + + Default value is set to 0.65. + + + + + + Number of octaves, [1, 32]. + + + The property sets the number of noise functions, which sum up the resulting + Perlin noise function. + + Default value is set to 4. + + + + + + Exponential random numbers generator. + + + The random number generator generates exponential + random numbers with specified rate value (lambda). + + The generator uses generator as a base + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new ExponentialGenerator( 5 ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Interface for random numbers generators. + + + The interface defines set of methods and properties, which should + be implemented by different algorithms for random numbers generatation. + + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + + + + Mean value of generator. + + + + + + Variance value of generator. + + + + + + Initializes a new instance of the class. + + + Rate value. + + Rate value should be greater than zero. + + + + + Initializes a new instance of the class. + + + Rate value (inverse mean). + Seed value to initialize random numbers generator. + + Rate value should be greater than zero. + + + + + Generate next random number + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Rate value (inverse mean). + + + The rate value should be positive and non zero. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Gaussian random numbers generator. + + + The random number generator generates gaussian + random numbers with specified mean and standard deviation values. + + The generator uses generator as base + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new GaussianGenerator( 5.0, 1.5 ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + Mean value. + Standard deviation value. + + + + + Initializes a new instance of the class. + + + Mean value. + Standard deviation value. + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Standard deviation value. + + + + + + Standard random numbers generator. + + + The random number generator generates gaussian + random numbers with zero mean and standard deviation of one. The generator + implements polar form of the Box-Muller transformation. + + The generator uses generator as a base + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new StandardGenerator( ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Uniform random numbers generator. + + + The random numbers generator generates uniformly + distributed numbers in the specified range - values + are greater or equal to minimum range's value and less than maximum range's + value. + + The generator uses generator + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new UniformGenerator( new Range( 50, 100 ) ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + Random numbers range. + + Initializes random numbers generator with zero seed. + + + + + Initializes a new instance of the class. + + + Random numbers range. + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Random numbers range. + + + Range of random numbers to generate. Generated numbers are + greater or equal to minimum range's value and less than maximum range's + value. + + + + + + Uniform random numbers generator in the range of [0, 1). + + + The random number generator generates uniformly + distributed numbers in the range of [0, 1) - greater or equal to 0.0 + and less than 1.0. + + At this point the generator is based on the + internal .NET generator, but may be rewritten to + use faster generation algorithm. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new UniformOneGenerator( ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + Initializes random numbers generator with zero seed. + + + + + Initializes a new instance of the class. + + + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Set of statistics functions. + + + The class represents collection of simple functions used + in statistics. + + + + + Calculate mean value. + + + Histogram array. + + Returns mean value. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate mean value + double mean = Statistics.Mean( histogram ); + // output it (5.759) + Console.WriteLine( "mean = " + mean.ToString( "F3" ) ); + + + + + + + Calculate standard deviation. + + + Histogram array. + + Returns value of standard deviation. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate standard deviation value + double stdDev = Statistics.StdDev( histogram ); + // output it (1.999) + Console.WriteLine( "std.dev. = " + stdDev.ToString( "F3" ) ); + + + + + + + Calculate standard deviation. + + + Histogram array. + Mean value of the histogram. + + Returns value of standard deviation. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + The method is an equevalent to the method, + but it relieas on the passed mean value, which is previously calculated + using method. + + + + + + Calculate median value. + + + Histogram array. + + Returns value of median. + + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + The median value is calculated accumulating histogram's + values starting from the left point until the sum reaches 50% of + histogram's sum. + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate median value + int median = Statistics.Median( histogram ); + // output it (6) + Console.WriteLine( "median = " + median ); + + + + + + + Get range around median containing specified percentage of values. + + + Histogram array. + Values percentage around median. + + Returns the range which containes specifies percentage + of values. + + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + The method calculates range of stochastic variable, which summary probability + comprises the specified percentage of histogram's hits. + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // get 75% range around median + IntRange range = Statistics.GetRange( histogram, 0.75 ); + // output it ([4, 8]) + Console.WriteLine( "range = [" + range.Min + ", " + range.Max + "]" ); + + + + + + + Calculate entropy value. + + + Histogram array. + + Returns entropy value of the specified histagram array. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Sample usage: + + // create histogram array with 2 values of equal probabilities + int[] histogram1 = new int[2] { 3, 3 }; + // calculate entropy + double entropy1 = Statistics.Entropy( histogram1 ); + // output it (1.000) + Console.WriteLine( "entropy1 = " + entropy1.ToString( "F3" ) ); + + // create histogram array with 4 values of equal probabilities + int[] histogram2 = new int[4] { 1, 1, 1, 1 }; + // calculate entropy + double entropy2 = Statistics.Entropy( histogram2 ); + // output it (2.000) + Console.WriteLine( "entropy2 = " + entropy2.ToString( "F3" ) ); + + // create histogram array with 4 values of different probabilities + int[] histogram3 = new int[4] { 1, 2, 3, 4 }; + // calculate entropy + double entropy3 = Statistics.Entropy( histogram3 ); + // output it (1.846) + Console.WriteLine( "entropy3 = " + entropy3.ToString( "F3" ) ); + + + + + + + Calculate mode value. + + + Histogram array. + + Returns mode value of the histogram array. + + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Returns the minimum mode value if the specified histogram is multimodal. + + Sample usage: + + // create array + int[] values = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate mode value + int mode = Statistics.Mode( values ); + // output it (7) + Console.WriteLine( "mode = " + mode ); + + + + + + + Set of tool functions. + + + The class contains different utility functions. + + + + + Calculates power of 2. + + + Power to raise in. + + Returns specified power of 2 in the case if power is in the range of + [0, 30]. Otherwise returns 0. + + + + + Checks if the specified integer is power of 2. + + + Integer number to check. + + Returns true if the specified number is power of 2. + Otherwise returns false. + + + + + Get base of binary logarithm. + + + Source integer number. + + Power of the number (base of binary logarithm). + + + + + 3D Vector structure with X, Y and Z coordinates. + + + The structure incapsulates X, Y and Z coordinates of a 3D vector and + provides some operations with it. + + + + + X coordinate of the vector. + + + + + Y coordinate of the vector. + + + + + Z coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + X coordinate of the vector. + Y coordinate of the vector. + Z coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + Value, which is set to all 3 coordinates of the vector. + + + + + Returns a string representation of this object. + + + A string representation of this object. + + + + + Returns array representation of the vector. + + + Array with 3 values containing X/Y/Z coordinates. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Tests whether two specified vectors are equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether two specified vectors are not equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are not equal or otherwise. + + + + + Tests whether the vector equals to the specified one. + + + The vector to test equality with. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether the vector equals to the specified object. + + + The object to test equality with. + + Returns if the vector equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Normalizes the vector by dividing it’s all coordinates with the vector's norm. + + + Returns the value of vectors’ norm before normalization. + + + + + Inverse the vector. + + + Returns a vector with all coordinates equal to 1.0 divided by the value of corresponding coordinate + in this vector (or equal to 0.0 if this vector has corresponding coordinate also set to 0.0). + + + + + Calculate absolute values of the vector. + + + Returns a vector with all coordinates equal to absolute values of this vector's coordinates. + + + + + Calculates cross product of two vectors. + + + First vector to use for cross product calculation. + Second vector to use for cross product calculation. + + Returns cross product of the two specified vectors. + + + + + Calculates dot product of two vectors. + + + First vector to use for dot product calculation. + Second vector to use for dot product calculation. + + Returns dot product of the two specified vectors. + + + + + Converts the vector to a 4D vector. + + + Returns 4D vector which is an extension of the 3D vector. + + The method returns a 4D vector which has X, Y and Z coordinates equal to the + coordinates of this 3D vector and W coordinate set to 1.0. + + + + + + Returns maximum value of the vector. + + + Returns maximum value of all 3 vector's coordinates. + + + + + Returns minimum value of the vector. + + + Returns minimum value of all 3 vector's coordinates. + + + + + Returns index of the coordinate with maximum value. + + + Returns index of the coordinate, which has the maximum value - 0 for X, + 1 for Y or 2 for Z. + + If there are multiple coordinates which have the same maximum value, the + property returns smallest index. + + + + + + Returns index of the coordinate with minimum value. + + + Returns index of the coordinate, which has the minimum value - 0 for X, + 1 for Y or 2 for Z. + + If there are multiple coordinates which have the same minimum value, the + property returns smallest index. + + + + + + Returns vector's norm. + + + Returns Euclidean norm of the vector, which is a + square root of the sum: X2+Y2+Z2. + + + + + + Returns square of the vector's norm. + + + Return X2+Y2+Z2, which is + a square of vector's norm or a dot product of this vector + with itself. + + + + + 4D Vector structure with X, Y, Z and W coordinates. + + + The structure incapsulates X, Y, Z and W coordinates of a 4D vector and + provides some operations with it. + + + + + X coordinate of the vector. + + + + + Y coordinate of the vector. + + + + + Z coordinate of the vector. + + + + + W coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + X coordinate of the vector. + Y coordinate of the vector. + Z coordinate of the vector. + W coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + Value, which is set to all 4 coordinates of the vector. + + + + + Returns a string representation of this object. + + + A string representation of this object. + + + + + Returns array representation of the vector. + + + Array with 4 values containing X/Y/Z/W coordinates. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Tests whether two specified vectors are equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether two specified vectors are not equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are not equal or otherwise. + + + + + Tests whether the vector equals to the specified one. + + + The vector to test equality with. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether the vector equals to the specified object. + + + The object to test equality with. + + Returns if the vector equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Normalizes the vector by dividing it’s all coordinates with the vector's norm. + + + Returns the value of vectors’ norm before normalization. + + + + + Inverse the vector. + + + Returns a vector with all coordinates equal to 1.0 divided by the value of corresponding coordinate + in this vector (or equal to 0.0 if this vector has corresponding coordinate also set to 0.0). + + + + + Calculate absolute values of the vector. + + + Returns a vector with all coordinates equal to absolute values of this vector's coordinates. + + + + + Calculates dot product of two vectors. + + + First vector to use for dot product calculation. + Second vector to use for dot product calculation. + + Returns dot product of the two specified vectors. + + + + + Converts the vector to a 3D vector. + + + Returns 3D vector which has X/Y/Z coordinates equal to X/Y/Z coordinates + of this vector divided by . + + + + + Returns maximum value of the vector. + + + Returns maximum value of all 4 vector's coordinates. + + + + + Returns minimum value of the vector. + + + Returns minimum value of all 4 vector's coordinates. + + + + + Returns index of the coordinate with maximum value. + + + Returns index of the coordinate, which has the maximum value - 0 for X, + 1 for Y, 2 for Z or 3 for W. + + If there are multiple coordinates which have the same maximum value, the + property returns smallest index. + + + + + + Returns index of the coordinate with minimum value. + + + Returns index of the coordinate, which has the minimum value - 0 for X, + 1 for Y, 2 for Z or 3 for W. + + If there are multiple coordinates which have the same minimum value, the + property returns smallest index. + + + + + + Returns vector's norm. + + + Returns Euclidean norm of the vector, which is a + square root of the sum: X2+Y2+Z2+W2. + + + + + + Returns square of the vector's norm. + + + Return X2+Y2+Z2+W2, which is + a square of vector's norm or a dot product of this vector + with itself. + + + + + Static extension class for manipulating index vectors (i.e. vectors + containing integers that represent positions within a collection or + array. + + + + + + Returns a vector of the specified containing + indices (0, 1, 2, ... max) up to a given maximum number and in random + order. The vector can grow up to to , but does + not include max among its values. + + + + In other words, this return a sample of size k from a population + of size n, where k is the parameter + and n is the parameter . + + + + + var a = Indices.Random(3, 10); // a possible output is { 1, 7, 4 }; + var b = Indices.Random(10, 10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5, 6)) + { + // ... + } + + + + + + + Returns a vector containing indices (0, 1, 2, ..., n - 1) in random + order. The vector grows up to to , but does not + include size among its values. + + + + + var a = Indices.Random(3); // a possible output is { 2, 1, 0 }; + var b = Indices.Random(10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5)) + { + // ... + } + + + + + + + Returns a vector of the specified containing + indices (0, 1, 2, ... max) up to a given maximum number and in random + order. The vector can grow up to to , but does + not include max among its values. + + + + In other words, this return a sample of size k from a population + of size n, where k is the parameter + and n is the parameter . + + + + + var a = Indices.Random(3, 10); // a possible output is { 1, 7, 4 }; + var b = Indices.Random(10, 10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5, 6)) + { + // ... + } + + + + + + + Returns a vector containing indices (0, 1, 2, ..., n - 1) in random + order. The vector grows up to to , but does not + include size among its values. + + + + + var a = Indices.Random(3); // a possible output is { 2, 1, 0 }; + var b = Indices.Random(10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5)) + { + // ... + } + + + + + + + Creates a vector containing every index up to + such as { 0, 1, 2, 3, 4, ..., n-1 }. + + + The non-inclusive limit for the index generation. + + + A vector of size containing + all vector indices up to . + + + + + + Creates a vector containing every index up to + such as { 0.0, 1.0, 2.0, 3.0, 4.0, ..., n-1 } using any choice of + numbers, such as byte or double. + + + The non-inclusive limit for the index generation. + + + A vector of size containing + all vector indices up to . + + + + + + Creates a vector containing every index that can be used to + address a given , in order. + + + The array whose indices will be returned. + + + A vector of the same size as the given + containing all vector indices from 0 up to the length of + . + + + + + double[] a = { 5.3, 2.3, 4.2 }; + int[] idx = Indices.From(a); // output will be { 0, 1, 2 } + + + + + + + Creates a vector containing every index that can be used to + address a given , in order, using any + choice of numbers, such as byte or double. + + + The array whose indices will be returned. + + + A vector of the same size as the given + containing all vector indices from 0 up to the length of + . + + + + + double[] a = { 5.3, 2.3, 4.2 }; + int[] idx = Indices.From(a); // output will be { 0, 1, 2 } + + + + + + + Creates a vector containing every index that can be used to + address a given , in order. + + + The array whose indices will be returned. + + + An enumerable object that can be used to iterate over all + positions of the given System.Array. + + + + + double[,] a = + { + { 5.3, 2.3 }, + { 4.2, 9.2 } + }; + + foreach (int[] idx in Indices.From(a)) + { + // Get the current element + double e = (double)a.GetValue(idx); + } + + + + + + + Creates a vector containing every index starting at + up to such as { from, from + 1, from + 2, ..., to-1 }. + + + The inclusive start for the index generation. + The non-inclusive limit for the index generation. + + + A vector of size to - from containing all vector + indices starting at and going up + to (but not including) . + + + + + + Creates a vector containing every index starting at + up to such as { from, from + 1, from + 2, ..., to-1 } + using any choice of numbers, such as byte or double. + + + The inclusive start for the index generation. + The non-inclusive limit for the index generation. + + + A vector of size to - from containing all vector + indices starting at and going up + to (but not including) . + + + + + + Cell array + + + + + + Structure + + + + + + Object + + + + + + Character array + + + + + + Sparse array + + + + + + Double precision array + + + + + + Single precision array + + + + + + 8-bit, signed integer + + + + + + 8-bit, unsigned integer + + + + + + 16-bit, signed integer + + + + + + 16-bit, unsigned integer + + + + + + 32-bit, signed integer + + + + + + 32-bit, unsigned integer + + + + + + 64-bit, signed integer + + + + + + 64-bit, unsigned integer + + + + + + 8 bit, signed + + + + + + 8 bit, unsigned + + + + + + 16-bit, signed + + + + + + 16-bit, unsigned + + + + + + 32-bit, signed + + + + + + 32-bit, unsigned + + + + + + IEEE® 754 single format + + + + + + IEEE 754 double format + + + + + + 64-bit, signed + + + + + + 64-bit, unsigned + + + + + + MATLAB array + + + + + + Compressed Data + + + + + + Unicode UTF-8 Encoded Character Data + + + + + + Unicode UTF-16 Encoded Character Data + + + + + + Unicode UTF-32 Encoded Character Data + + + + + + Node object contained in .MAT file. + A node can contain a matrix object, a string, or another nodes. + + + + + + Gets the object value contained at this node, if any. + Its type can be known by checking the + property of this node. + + + The object type, if known. + + The object stored at this node. + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the name of this node. + + + + + + Gets the child nodes contained at this node. + + + + + + Gets the object value contained at this node, if any. + Its type can be known by checking the + property of this node. + + + + + + Gets the type of the object value contained in this node. + + + + + + Gets the number of child objects contained in this node. + + + + + + Gets the child fields contained under the given name. + + + The name of the field to be retrieved. + + + + + Gets the child fields contained under the given name. + + + The name of the field to be retrieved. + + + + + Reader for .mat files (such as the ones created by Matlab and Octave). + + + + + MAT files are binary files containing variables and structures from mathematical + processing programs, such as MATLAB or Octave. In MATLAB, .mat files can be created + using its save and load functions. For the moment, this reader supports + only version 5 MAT files (Matlab 5 MAT-file). + + + The MATLAB file format is documented at + + http://www.mathworks.com/help/pdf_doc/matlab/matfile_format.pdf + + + + + // Create a new MAT file reader + var reader = new MatReader(file); + + // Extract some basic information about the file: + string description = reader.Description; // "MATLAB 5.0 MAT-file, Platform: PCWIN" + int version = reader.Version; // 256 + bool bigEndian = reader.BigEndian; // false + + + // Enumerate the fields in the file + foreach (var field in reader.Fields) + Console.WriteLine(field.Key); // "structure" + + // We have the single following field + var structure = reader["structure"]; + + // Enumerate the fields in the structure + foreach (var field in structure.Fields) + Console.WriteLine(field.Key); // "a", "string" + + // Check the type for the field "a" + var aType = structure["a"].Type; // byte[,] + + // Retrieve the field "a" from the file + var a = structure["a"].GetValue<byte[,]>(); + + // We can also do directly if we know the type in advance + var s = reader["structure"]["string"].GetValue<string>(); + + + + + + + Creates a new . + + + The input stream containing the MAT file. + + + + + Creates a new . + + + The input stream containing the MAT file. + Pass true to automatically transpose matrices if they + have been stored differently from .NET's default row-major order. Default is true. + + + + + Creates a new . + + + A reader for input stream containing the MAT file. + Pass true to automatically transpose matrices if they + have been stored differently from .NET's default row-major order. Default is true. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets the child nodes contained in this file. + + + + + + Gets the human readable description of the MAT file. + + + + An example header description could be given by + "MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Thu Feb 22 03:12:25 2007". + + + + + + Gets the version information about the file. + This field should always contain 256. + + + + + + Gets whether the MAT file uses the Big-Endian + standard for bit-order. Currently, only little + endian is supported. + + + + + + Gets whether matrices will be auto-transposed + to .NET row and column format if necessary. + + + + + + Returns the underlying stream. + + + + + + Gets a child object contained in this node. + + + The field name or index. + + + + + Gets a child object contained in this node. + + + The field index. + + + + + Sparse matrix representation used by + .MAT files. + + + + + + Gets the sparse row index vector. + + + + + + Gets the sparse column index vector. + + + + + + Gets the values vector. + + + + + + General Sequential Minimal Optimization algorithm for Quadratic Programming problems. + + + + + This class implements the same optimization method found in LibSVM. It can be used + to solve quadratic programming problems where the quadratic matrix Q may be too large + to fit in memory. + + + The method is described in Fan et al., JMLR 6(2005), p. 1889--1918. It solves the + minimization problem: + + + min 0.5(\alpha^T Q \alpha) + p^T \alpha + + y^T \alpha = \delta + y_i = +1 or -1 + 0 <= alpha_i <= C_i + + + + Given Q, p, y, C, and an initial feasible point \alpha, where l is + the size of vectors and matrices and eps is the stopping tolerance. + + + + + + + Common interface for function optimization methods. + + + + + + + + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Gets the number of variables (free parameters) + in the optimization problem. + + + The number of parameters. + + + + + Gets the current solution found, the values of + the parameters which optimizes the function. + + + + + + Gets the output of the function at the current . + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + The quadratic matrix Q. It should be specified as a lambda + function so Q doesn't need to be always kept in memory. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + The quadratic matrix Q. It should be specified as a lambda + function so Q doesn't need to be always kept in memory. + The vector of linear terms p. Default is a zero vector. + The class labels y. Default is a unit vector. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + + Not supported. + + + + + + Gets the number of variables (free parameters) in the optimization + problem. In a SVM learning problem, this is the number of samples in + the learning dataset. + + + + The number of parameters for the optimization problem. + + + + + + Gets the current solution found, the values of + the parameters which optimizes the function. + + + + + + Gets the output of the function at the current . + + + + + + Gets the threshold (bias) value for a SVM trained using this method. + + + + + + Gets or sets the precision tolerance before + the method stops. Default is 0.001. + + + + + + Gets or sets a value indicating whether shrinking + heuristics should be used. + + + + true to use shrinking heuristics; otherwise, false. + + + + + + Gets the upper bounds for the optimization problem. In + a SVM learning problem, this would be the capacity limit + for each Lagrange multiplier (alpha) in the machine. The + default is to use a vector filled with 1's. + + + + + + Gets a reference to the random number generator used + internally by the Accord.NET classes and methods. + + + + + + Sets a random seed for the framework's main internal + number generator. Preferably, this method should be called before + other computations. + + + + + + Comparison methods that can be used in sort + algorithms such as . + + + + + This namespace contains different methods for comparing elements. For + example, using the classes in this namespace makes it possible to sort + arrays of arrays, + sort arrays into any direction, or perform + stable sorts. + + + + The namespace class diagram is shown below. + + + + + + + + + Common interface for convergence detection algorithms. + + + + + + Resets this instance, reverting all iteration statistics + statistics (number of iterations, last error) back to zero. + + + + + + Gets or sets the maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has converged. + + + + + + General convergence options. + + + + + + Creates a new object. + + + The number of variables to be tracked. + + + + + Gets or sets the number of variables in the problem. + + + + + + Gets or sets the relative function tolerance that should + be used as convergence criteria. This tracks the relative + amount that the function output changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the absolute function tolerance that should + be used as convergence criteria. This tracks the absolute + amount that the function output changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the relative parameter tolerance that should + be used as convergence criteria. This tracks the relative + amount that the model parameters changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the absolute parameter tolerance that should + be used as convergence criteria. This tracks the absolute + amount that the model parameters changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the number of function evaluations + performed by the optimization algorithm. + + + + + + Gets or sets the maximum number of function evaluations to + be used as convergence criteria. This tracks how many times + the function to be optimized has been called, and stops the + algorithm when the number of times specified in this property + has been reached. Setting this value to zero disables this check. + Default is 0. + + + + + + Gets or sets the maximum amount of time that an optimization + algorithm is allowed to run. This property must be set together + with in order to function correctly. + Setting this value to disables this + check. Default is . + + + + + + Gets or sets the time when the algorithm started running. When + time will be tracked with the property, + this property must also be set to a correct value. + + + + + + Gets or sets whether the algorithm should + be forced to terminate. Default is false. + + + + + + Contains numerical decompositions such as QR, + SVD, LU, + Cholesky, and + NMF with specialized definitions for most .NET data types: float, double, and decimals. + + + + + The namespace class diagram is shown below. + + + + + + + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + QR decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + + Common interface for matrix decompositions which + can be used to solve linear systems of equations + involving jagged array matrices. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = I. + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + + Common interface for matrix decompositions which + can be used to solve linear systems of equations. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = I. + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + Static class Dissimilarity. Provides extension methods defining dissimilarity measures. + + + + + + Computes the Dice dissimilarity between two vectors. + + + A vector. + A vector. + + The Dice dissimilarity between x and y. + + + + + Computes the Jaccard dissimilarity between two vectors. + + + A vector. + A vector. + + The Jaccard dissimilarity between x and y. + + + + + Computes the Kulczynski dissimilarity between two vectors. + + + A vector. + A vector. + + The Kulczynski dissimilarity between x and y. + + + + + Computes the Matching dissimilarity between two vectors. + + + A vector. + A vector. + + The Matching dissimilarity between x and y. + + + + + Computes the Rogers-Tanimoto dissimilarity between two vectors. + + + A vector. + A vector. + + The Rogers Tanimoto dissimilarity between x and y. + + + + + Computes the Russel Rao dissimilarity between two vectors. + + + A vector. + A vector. + + The Russel Rao dissimilarity between x and y. + + + + + Computes the Sokal-Michener dissimilarity between two vectors. + + + A vector. + A vector. + + The Sokal-Michener dissimilarity between x and y. + + + + + Computes the Sokal Sneath dissimilarity between two vectors. + + + A vector. + A vector. + + The Sokal Sneath dissimilarity between x and y. + + + + + Computes the Yule dissimilarity between two vectors. + + + A vector. + A vector. + + The Yule dissimilarity between x and y. + + + + + Owen's T function and related functions. + + + + + + In mathematics, Owen's T function T(h, a), named after statistician Donald Bruce Owen, + is defined by + + 1 a exp{-0.5 h²(1+x²) + T(h, a) = ---- ∫ ------------------- dx + 2π 0 1 + x² + + + + The function T(h, a) gives the probability of the event (X > h and 0 < Y < aX) + where X and Y are independent standard normal random variables. This function can + be used to calculate bivariate normal distribution probabilities + and, from there, in the calculation of multivariate normal distribution probabilities. It also + frequently appears in various integrals involving Gaussian functions. + + + + The code is based on the original FORTRAN77 version by Mike Patefield, David Tandy; + and the C version created by John Burkardt. The original code for the C version can + be found at http://people.sc.fsu.edu/~jburkardt/c_src/owens/owens.html and is valid + under the LGPL. + + + References: + + + http://people.sc.fsu.edu/~jburkardt/c_src/owens/owens.html + + Mike Patefield, David Tandy, Fast and Accurate Calculation of Owen's T Function, + Journal of Statistical Software, Volume 5, Number 5, 2000, pages 1-25. + + + + + + + // Computes Owens' T function + double t = OwensT.Function(h: 2, a: 42); // 0.011375065974089608 + + + + + + + Computes Owen's T function for arbitrary H and A. + + + Owen's T function argument H. + Owen's T function argument A. + + The value of Owen's T function. + + + + + Owen's T function for a restricted range of parameters. + + + Owen's T function argument H (where 0 <= H). + Owen's T function argument A (where 0 <= A <= 1). + The value of A*H. + + The value of Owen's T function. + + + + + Numerical methods for approximating integrals. + + + + + This namespace contains different methods for numerically approximating + integrals, such as the Trapezoidal Rule, + Romberg method, up to more advanced versions + such as the Infinite Adaptive Gauss + Kronrod for improper integrals or + Monte Carlo integration for multivariate integrals. + + + The namespace class diagram is shown below. + + + + + + + + + + Common interface for multidimensional integration methods. + + + + + + Common interface for numeric integration methods. + + + + + + Computes the area of the function under the selected + range. The computed value will be available at this + class's property. + + + True if the integration method succeeds, false otherwise. + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the number of parameters expected by + the to be integrated. + + + + + + Gets or sets the multidimensional function + whose integral should be computed. + + + + + + Gets or sets the range of each input variable + under which the integral must be computed. + + + + + + Common interface for multidimensional integration methods. + + + + + + Gets or sets the unidimensional function + whose integral should be computed. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Common interface for numeric integration methods. + + + + + + Get the exit code returned in the last call to the + method. + + + + + + Status codes for the + integration method. + + + + + + The integration calculation has been completed with success. + The obtained result is under the selected convergence criteria. + + + + + + Maximum number of allowed subdivisions has been reached. + + + + The maximum number of subdivisions allowed has been achieved. One can allow + more subdivisions by increasing the value of limit (and taking the according + dimension adjustments into account). However, if this yields no improvement + it is advised to analyze the integrand in order to determine the integration + difficulties. If the position of a local difficulty can be determined (e.g. + singularity, discontinuity within the interval) one will probably gain from + splitting up the interval at this point and calling the integrator on the + subranges. if possible, an appropriate special-purpose integrator should be + used, which is designed for handling the type of difficulty involved. + + + + + + Roundoff errors prevent the tolerance from being reached. + + + + The occurrence of roundoff error is detected, which prevents the requested + tolerance from being achieved. The error may be under-estimated. + + + + + + There are severe discontinuities in the integrand function. + + + + Extremely bad integrand behaviour occurs at some points of the + integration interval. + + + + + + The algorithm cannot converge. + + + + The algorithm does not converge. Roundoff error is detected in the + extrapolation table. It is assumed that the requested tolerance cannot + be achieved, and that the returned result is the best which can be obtained. + + + + + + The integral is divergent or slowly convergent. + + + + The integral is probably divergent, or slowly convergent. It must be + noted that divergence can occur with any other error code. + + + + + + Infinite Adaptive Gauss-Kronrod integration method. + + + + + In applied mathematics, adaptive quadrature is a process in which the + integral of a function f(x) is approximated using static quadrature rules + on adaptively refined subintervals of the integration domain. Generally, + adaptive algorithms are just as efficient and effective as traditional + algorithms for "well behaved" integrands, but are also effective for + "badly behaved" integrands for which traditional algorithms fail. + + + The algorithm implemented by this class has been based on the original FORTRAN + implementation from QUADPACK. The function implemented the Non-adaptive Gauss- + Kronrod integration is qagi(f,bound,inf,epsabs,epsrel,result,abserr,neval, + ier,limit,lenw,last,iwork,work). The original source code is in the public + domain, but this version is under the LGPL. The original authors, as long as the + original routine description, are listed below: + + + Robert Piessens, Elise de Doncker; Applied Mathematics and Programming Division, + K.U.Leuven, Leuvenappl. This routine calculates an approximation result to a given + integral i = integral of f over (bound,+infinity) or i = integral of f over + (-infinity,bound) or i = integral of f over (-infinity,+infinity) hopefully satisfying + following claim for accuracy abs(i-result).le.max(epsabs,epsrel*abs(i)). + + + References: + + + Wikipedia, The Free Encyclopedia. Adaptive quadrature. Available on: + http://en.wikipedia.org/wiki/Adaptive_quadrature + + Wikipedia, The Free Encyclopedia. QUADPACK. Available on: + http://en.wikipedia.org/wiki/QUADPACK + + Robert Piessens, Elise de Doncker; Non-adaptive integration standard fortran + subroutine (qng.f). Applied Mathematics and Programming Division, K.U.Leuven, + Leuvenappl. Available at: http://www.netlib.no/netlib/quadpack/qagi.f + + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Creates a new integration algorithm. + + + Maximum number of subintervals in the + partition of the given integration interval. Default is 100. + + + + + Creates a new integration algorithm. + + + Maximum number of subintervals in the + partition of the given integration interval. Default is 100. + The function to be integrated. + + + + + Creates a new integration algorithm. + + + Maximum number of subintervals in the + partition of the given integration interval. Default is 100. + The function to be integrated. + The lower limit of integration. + The upper limit of integration. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + If the integration method fails, the reason will be available at . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Infinite Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Infinite Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Infinite Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The relative tolerance under which the solution has to be found. Default is 1e-3. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Get the maximum number of subintervals to be utilized in the + partition of the integration interval. + + + + + + Gets or sets the function to be differentiated. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Desired absolute accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is zero. + + + + + + Desired relative accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is 1e-3. + + + + + + Get the exit code returned in the last call to the + method. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the integration error for the + computed value. + + + + + + Gets the number of function evaluations performed in + the last call to the method. + + + + + + Status codes for the + integration method. + + + + + + The integration calculation has been completed with success. + The obtained result is under the selected convergence criteria. + + + + + + Maximum number of steps has been reached. + + + + The maximum number of steps has been executed. The integral + is probably too difficult to be calculated by dqng. + + + + + + Non-Adaptive Gauss-Kronrod integration method. + + + + + The algorithm implemented by this class has been based on the original FORTRAN + implementation from QUADPACK. The function implemented the Non-adaptive Gauss- + Kronrod integration is qng(f,a,b,epsabs,epsrel,result,abserr,neval,ier). + The original source code is in the public domain, but this version is under the + LGPL. The original authors, as long as the original routine description, are + listed below: + + Robert Piessens, Elise de Doncker; Applied Mathematics and Programming Division, + K.U.Leuven, Leuvenappl. This routine calculates an approximation result to a given + definite integral i = integral of f over (a,b), hopefully satisfying following claim + for accuracy abs(i-result).le.max(epsabs,epsrel*abs(i)). + + + References: + + + Wikipedia, The Free Encyclopedia. QUADPACK. Available on: + http://en.wikipedia.org/wiki/QUADPACK + + Robert Piessens, Elise de Doncker; Non-adaptive integration standard fortran + subroutine (qng.f). Applied Mathematics and Programming Division, K.U.Leuven, + Leuvenappl. Available at: http://www.netlib.no/netlib/quadpack/qng.f + + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Creates a new integration algorithm. + + + + + + Creates a new integration algorithm. + + + The function to be integrated. + + + + + Creates a new integration algorithm. + + + The function to be integrated. + The lower limit of integration. + The upper limit of integration. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + If the integration method fails, the reason will be available at . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, + in the given integration interval, using Gauss-Kronrod method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Non-Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The relative tolerance under which the solution has to be found. Default is 1e-3. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the function to be differentiated. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Desired absolute accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is zero. + + + + + + Desired relative accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is 1e-3. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the integration error for the + computed value. + + + + + + Get the exit code returned in the last call to the + method. + + + + + + Gets the number of function evaluations performed in + the last call to the method. + + + + + + Derivative approximation by finite differences. + + + + + Numerical differentiation is a technique of numerical analysis to produce an estimate + of the derivative of a mathematical function or function subroutine using values from + the function and perhaps other knowledge about the function. + + + A finite difference is a mathematical expression of the form f(x + b) − f(x + a). If a + finite difference is divided by b − a, one gets a difference quotient. The approximation + of derivatives by finite differences plays a central role in finite difference methods + for the numerical solution of differential equations, especially boundary value problems. + + + + This class implements Newton's finite differences method for approximating the derivatives + of a multivariate function. A simplified version of the class is also available for + univariate functions through + its Derivative static methods. + + + References: + + + Wikipedia, The Free Encyclopedia. Finite difference. Available on: + http://en.wikipedia.org/wiki/Finite_difference + + Trent F. Guidry, Calculating derivatives of a function numerically. Available on: + http://www.trentfguidry.net/post/2009/07/12/Calculate-derivatives-function-numerically.aspx + + + + + + + + // Create a simple function with two parameters: f(x, y) = x² + y + Func <double[], double> function = x => Math.Pow(x[0], 2) + x[1]; + + // The gradient function should be g(x,y) = <2x, 1> + + // Create a new finite differences calculator + var calculator = new FiniteDifferences(2, function); + + // Evaluate the gradient function at the point (2, -1) + double[] result = calculator.Compute(2, -1); // answer is (4, 1) + + + + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + The relative step size used to approximate the derivatives. Default is 0.01. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The function to be differentiated. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + The function to be differentiated. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + The relative step size used to approximate the derivatives. Default is 0.01. + The function to be differentiated. + + + + + Computes the gradient at the given point x. + + The point where to compute the gradient. + The gradient of the function evaluated at point x. + + + + + Computes the gradient at the given point , + storing the result at . + + + The point where to compute the gradient. + The gradient of the function evaluated at point x. + + + + + Computes the derivative at point x_i. + + + + + + Creates the interpolation coefficients. + + + The number of points in the tableau. + + + + + Interpolates the points to obtain an estimative of the derivative at x. + + + + + + Computes the derivative for a simpler unidimensional function. + + + The function to be differentiated. + The value x at which the derivative should be evaluated. + The derivative order that should be obtained. Default is 1. + + The derivative of the function at the point x. + + + + + Computes the derivative for a simpler unidimensional function. + + + The function to be differentiated. + The value x at which the derivative should be evaluated. + + The derivative of the function at the point x. + + + + + Computes the derivative for a simpler unidimensional function. + + + The function to be differentiated. + The derivative order that should be obtained. Default is 1. + The relative step size used to approximate the derivatives. Default is 0.01. + The value x at which the derivative should be evaluated. + + The derivative of the function at the point x. + + + + + Gets or sets the function to be differentiated. + + + + + + Gets or sets the relative step size used to + approximate the derivatives. Default is 1e-2. + + + + + + Gets or sets the order of the derivatives to be + obtained. Default is 1 (computes the first derivative). + + + + + + Gets or sets the number of points to be used when + computing the approximation. Default is 3. + + + + + + Monte Carlo method for multi-dimensional integration. + + + + + In mathematics, Monte Carlo integration is a technique for numerical + integration using random numbers. It is a particular Monte Carlo method + that numerically computes a definite integral. While other algorithms + usually evaluate the integrand at a regular grid, Monte Carlo randomly + choose points at which the integrand is evaluated. This method is + particularly useful for higher-dimensional integrals. There are different + methods to perform a Monte Carlo integration, such as uniform sampling, + stratified sampling and importance sampling. + + + + References: + + + Wikipedia, The Free Encyclopedia. Monte Carlo integration. Available on: + http://en.wikipedia.org/wiki/Monte_Carlo_integration + + + + + + + A common Monte-Carlo integration example is to compute the value of Pi. This is the + same example given in Wikipedia's page for Monte-Carlo Integration, available at + https://en.wikipedia.org/wiki/Monte_Carlo_integration#Example + + // Define a function H that tells whether two points + // are inside a unit circle (a circle of radius one): + // + Func<double, double, double> H = + (x, y) => (x * x + y * y <= 1) ? 1 : 0; + + // We will check how many points in the square (-1,-1), (-1,+1), + // (+1, -1), (+1, +1) fall into the circle defined by function H. + // + double[] from = { -1, -1 }; + double[] to = { +1, +1 }; + + int samples = 100000; + + // Integrate it! + double area = MonteCarloIntegration.Integrate(x => H(x[0], x[1]), from, to, samples); + + // Output should be approximately 3.14. + + + + + + + + + + Constructs a new Monte Carlo integration method. + + + The function to be integrated. + The number of parameters expected by the . + + + + + Constructs a new Monte Carlo integration method. + + + The number of parameters expected by the integrand. + + + + + Manually resets the previously computed area and error + estimates, so the integral can be computed from scratch + without reusing previous computations. + + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, in the + given integration interval, using a Monte Carlo integration algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + The number of points that should be sampled. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the number of parameters expected by + the to be integrated. + + + + + + Gets or sets the range of each input variable + under which the integral must be computed. + + + + + + Gets or sets the multidimensional function + whose integral should be computed. + + + + + + Gets or sets the random generator algorithm to be used within + this Monte Carlo method. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the integration error for the + computed value. + + + + + + Gets or sets the number of random samples + (iterations) generated by the algorithm. + + + + + + Static class for combinatorics functions. + + + + + + Generates all possible two symbol ordered + permutations with repetitions allowed (a truth table). + + + The length of the sequence to generate. + + + + Suppose we would like to generate a truth table for a binary + problem. In this case, we are only interested in two symbols: + 0 and 1. Let's then generate the table for three binary values + + + int length = 3; // The number of variables; or number + // of columns in the generated table. + + // Generate the table using Combinatorics.TruthTable(3) + int[][] table = Combinatorics.TruthTable(length); + + // The generated table will be: + { + new int[] { 0, 0, 0 }, + new int[] { 0, 0, 1 }, + new int[] { 0, 1, 0 }, + new int[] { 0, 1, 1 }, + new int[] { 1, 0, 0 }, + new int[] { 1, 0, 1 }, + new int[] { 1, 1, 0 }, + new int[] { 1, 1, 1 }, + }; + + + + + + + Generates all possible ordered permutations + with repetitions allowed (a truth table). + + + The number of symbols. + The length of the sequence to generate. + + + + Suppose we would like to generate a truth table for a binary + problem. In this case, we are only interested in two symbols: + 0 and 1. Let's then generate the table for three binary values + + + int symbols = 2; // Binary variables: either 0 or 1 + int length = 3; // The number of variables; or number + // of columns in the generated table. + + // Generate the table using Combinatorics.TruthTable(2,3) + int[][] table = Combinatorics.TruthTable(symbols, length); + + // The generated table will be: + { + new int[] { 0, 0, 0 }, + new int[] { 0, 0, 1 }, + new int[] { 0, 1, 0 }, + new int[] { 0, 1, 1 }, + new int[] { 1, 0, 0 }, + new int[] { 1, 0, 1 }, + new int[] { 1, 1, 0 }, + new int[] { 1, 1, 1 }, + }; + + + + + + + Generates all possible ordered permutations + with repetitions allowed (a truth table). + + + The number of symbols for each variable. + + + + Suppose we would like to generate a truth table (i.e. all possible + combinations of a set of discrete symbols) for variables that contain + different numbers symbols. Let's say, for example, that the first + variable may contain symbols 0 and 1, the second could contain either + 0, 1, or 2, and the last one again could contain only 0 and 1. Thus + we can generate the truth table in the following way: + + + // Number of symbols for each variable + int[] symbols = { 2, 3, 2 }; + + // Generate the truth table for the given symbols + int[][] table = Combinatorics.TruthTable(symbols); + + // The generated table will be: + { + new int[] { 0, 0, 0 }, + new int[] { 0, 0, 1 }, + new int[] { 0, 1, 0 }, + new int[] { 0, 1, 1 }, + new int[] { 0, 2, 0 }, + new int[] { 0, 2, 1 }, + new int[] { 1, 0, 0 }, + new int[] { 1, 0, 1 }, + new int[] { 1, 1, 0 }, + new int[] { 1, 1, 1 }, + new int[] { 1, 2, 0 }, + new int[] { 1, 2, 1 }, + }; + + + + + + Provides a way to enumerate all possible ordered permutations + with repetitions allowed (i.e. a truth table), without using + many memory allocations. + + + The number of symbols. + The length of the sequence to generate. + + If set to true, the different generated sequences will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + Suppose we would like to generate the same sequences shown + in the example, + however, without explicitly storing all possible combinations + in an array. In order to iterate over all possible combinations + efficiently, we can use: + + + + int symbols = 2; // Binary variables: either 0 or 1 + int length = 3; // The number of variables; or number + // of columns in the generated table. + + foreach (int[] row in Combinatorics.Sequences(symbols, length)) + { + // The following sequences will be generated in order: + // + // new int[] { 0, 0, 0 }, + // new int[] { 0, 0, 1 }, + // new int[] { 0, 1, 0 }, + // new int[] { 0, 1, 1 }, + // new int[] { 1, 0, 0 }, + // new int[] { 1, 0, 1 }, + // new int[] { 1, 1, 0 }, + // new int[] { 1, 1, 1 }, + } + + + + + + + Provides a way to enumerate all possible ordered permutations + with repetitions allowed (i.e. a truth table), without using + many memory allocations. + + + The number of symbols for each variable. + + If set to true, the different generated permutations will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + Suppose we would like to generate the same sequences shown + in the example, + however, without explicitly storing all possible combinations + in an array. In order to iterate over all possible combinations + efficiently, we can use: + + + + foreach (int[] row in Combinatorics.Sequences(new[] { 2, 2 })) + { + // The following sequences will be generated in order: + // + // new int[] { 0, 0, 0 }, + // new int[] { 0, 0, 1 }, + // new int[] { 0, 1, 0 }, + // new int[] { 0, 1, 1 }, + // new int[] { 1, 0, 0 }, + // new int[] { 1, 0, 1 }, + // new int[] { 1, 1, 0 }, + // new int[] { 1, 1, 1 }, + } + + + + + + + Enumerates all possible value combinations for a given array. + + + The array whose combinations need to be generated. + The length of the combinations to be generated. + + If set to true, the different generated combinations will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + // Let's say we would like to generate all possible combinations + // of the elements (1, 2, 3). In order to enumerate all those + // combinations, we can use: + + int[] values = { 1, 2, 3 }; + + foreach (int[] combination in Combinatorics.Combinations(values)) + { + // The combinations will be generated in the following order: + // + // { 1, 2 }; + // { 1, 3 }; + // { 2, 3 }; + // + } + + + + + + + Enumerates all possible value permutations for a given array. + + + The array whose permutations need to be generated. + + If set to true, the different generated permutations will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + // Let's say we would like to generate all possible permutations + // of the elements (1, 2, 3). In order to enumerate all those + // permutations, we can use: + + int[] values = { 1, 2, 3 }; + + foreach (int[] permutation in Combinatorics.Permutations(values)) + { + // The permutations will be generated in the following order: + // + // { 1, 3, 2 }; + // { 2, 1, 3 }; + // { 2, 3, 1 }; + // { 3, 1, 2 }; + // { 3, 2, 1 }; + // + } + + + + + + + Elementwise comparer for integer arrays. + Please use ArrayComparer{T} instead. + + + + + + Elementwise comparer for arrays. + + + + + + Determines whether two instances are equal. + + + The first object to compare. + The second object to compare. + + true if the specified object is equal to the other; otherwise, false. + + + + + + Returns a hash code for a given instance. + + + The instance. + + + A hash code for the instance, suitable for use + in hashing algorithms and data structures like a hash table. + + + + + + Element-at-position comparer. + + + + This class compares arrays by checking the value + of a particular element at a given array index. + + + + + // We sort the arrays according to the + // elements at their second column. + + double[][] values = + { // v + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 1, 1 }, + new double[] { -1, 5, 4 }, + new double[] { -2, 2, 6 }, + }; + + // Sort the array considering only the second column + Array.Sort(values, new ElementComparer() { Index = 1 }); + + // The result will be + double[][] result = + { + new double[] { -1, 1, 1 }, + new double[] { -2, 2, 6 }, + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 5, 4 }, + }; + + + + + + + + + + + + Element-at-position comparer. + + + + This class compares arrays by checking the value + of a particular element at a given array index. + + + + + // We sort the arrays according to the + // elements at their second column. + + double[][] values = + { // v + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 1, 1 }, + new double[] { -1, 5, 4 }, + new double[] { -2, 2, 6 }, + }; + + // Sort the array considering only the second column + Array.Sort(values, new ElementComparer() { Index = 1 }); + + // The result will be + double[][] result = + { + new double[] { -1, 1, 1 }, + new double[] { -2, 2, 6 }, + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 5, 4 }, + }; + + + + + + + + + + + + Compares two objects and returns a value indicating + whether one is less than, equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Determines whether two instances are equal. + + + The first object to compare. + The second object to compare. + + + true if the specified object is equal to the other; otherwise, false. + + + + + + Returns a hash code for a given instance. + + + The instance. + + + A hash code for the instance, suitable for use + in hashing algorithms and data structures like a hash table. + + + + + + Gets or sets the element index to compare. + + + + + + Custom comparer which accepts any delegate or + anonymous function to perform value comparisons. + + + The type of objects to compare. + + + + // Assume we have values to sort + double[] values = { 0, 5, 3, 1, 8 }; + + // We can create an ad-hoc sorting rule using + Array.Sort(values, new CustomComparer<double>((a, b) => -a.CompareTo(b))); + + // Result will be { 8, 5, 3, 1, 0 }. + + + + + + + Constructs a new . + + + The comparer function. + + + + + Compares two objects and returns a value indicating + whether one is less than, equal to, or greater than + the other. + + + The first object to compare. + The second object to compare. + + A signed integer that indicates the relative values of x and y. + + + + + Determines whether the specified objects are equal. + + + The first object of type T to compare. + The second object of type T to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the given object. + + + The object. + + + A hash code for the given object, suitable for use in + hashing algorithms and data structures like a hash table. + + + + + + Directions for the General Comparer. + + + + + + Sorting will be performed in ascending order. + + + + + + Sorting will be performed in descending order. + + + + + + General comparer which supports multiple + directions and comparison of absolute values. + + + + + // Assume we have values to sort + double[] values = { 0, -5, 3, 1, 8 }; + + // We can create an ad-hoc sorting rule considering only absolute values + Array.Sort(values, new GeneralComparer(ComparerDirection.Ascending, Math.Abs)); + + // Result will be { 0, 1, 3, 5, 8 }. + + + + + + + + + + + + Constructs a new General Comparer. + + + The direction to compare. + + + + + Constructs a new General Comparer. + + + The direction to compare. + True to compare absolute values, false otherwise. Default is false. + + + + + Constructs a new General Comparer. + + + The direction to compare. + The mapping function which will be applied to + each vector element prior to any comparisons. + + + + + Compares two objects and returns a value indicating whether one is less than, + equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Compares two objects and returns a value indicating whether one is less than, + equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Gets or sets the sorting direction + used by this comparer. + + + + + + General comparer which supports multiple sorting directions. + + + + + // Assume we have values to sort + double[] values = { 0, -5, 3, 1, 8 }; + + // We can create an ad-hoc sorting rule + Array.Sort(values, new GeneralComparer<double>(ComparerDirection.Descending)); + + // Result will be { 8, 5, 3, 1, 0 }. + + + + + + + + + + + + Constructs a new General Comparer. + + + The direction to compare. + + + + + Compares two objects and returns a value indicating whether one is less than, + equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Gets or sets the sorting direction + used by this comparer. + + + + + + Stable comparer for stable sorting algorithm. + + + The type of objects to compare. + + + This class helps sort the elements of an array without swapping + elements which are already in order. This comprises a stable + sorting algorithm. This class is used by the method to produce a stable sort + of its given arguments. + + + + In order to use this class, please use . + + + + + + + + + + + Constructs a new instance of the class. + + + The comparison function. + + + + + Compares two objects and returns a value indicating + whether one is less than, equal to, or greater than + the other. + + + The first object to compare. + The second object to compare. + + A signed integer that indicates the relative values of x and y. + + + + + Absolute convergence criteria. + + + + This class can be used to track progress and convergence + of methods which rely on the absolute change of a value. + + + + + // Create a new convergence criteria for a maximum of 10 iterations + var criteria = new AbsoluteConvergence(iterations: 10, tolerance: 0.1); + + int progress = 1; + + do + { + // Do some processing... + + + // Update current iteration information: + criteria.NewValue = 12345.6 / progress++; + + } while (!criteria.HasConverged); + + + // The method will converge after reaching the + // maximum of 10 iterations with a final value + // of 1371.73: + + int iterations = criteria.CurrentIteration; // 10 + double value = criteria.OldValue; // 1371.7333333 + + + + + + + Common interface for convergence detection algorithms that + depend solely on a single value (such as the iteration error). + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 0. + The maximum change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + + + + + Clears this instance. + + + + + + Gets or sets the maximum change in the watched value + after an iteration of the algorithm used to detect + convergence. Default is 0. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. Default + is 100. + + + + + + Gets the watched value before the iteration. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has converged. + + + + + + Relative convergence criteria. + + + + This class can be used to track progress and convergence + of methods which rely on the relative change of a value. + + + + + // Create a new convergence criteria with unlimited iterations + var criteria = new RelativeConvergence(iterations: 0, tolerance: 0.1); + + int progress = 1; + + do + { + // Do some processing... + + + // Update current iteration information: + criteria.NewValue = 12345.6 / progress++; + + } while (!criteria.HasConverged); + + + // The method will converge after reaching the + // maximum of 11 iterations with a final value + // of 1234.56: + + int iterations = criteria.CurrentIteration; // 11 + double value = criteria.OldValue; // 1234.56 + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 100. + The maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 0. + The maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + The minimum number of convergence checks that the + iterative algorithm should pass before convergence can be declared + reached. + + + + + Resets this instance, reverting all iteration statistics + statistics (number of iterations, last error) back to zero. + + + + + + Gets or sets the maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is zero. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. Default + is 100. + + + + + + Gets or sets the watched value before the iteration. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has converged. + + + + + + Relative parameter change convergence criteria. + + + + This class can be used to track progress and convergence + of methods which rely on the maximum relative change of + the values within a parameter vector. + + + + + // Converge if the maximum change amongst all parameters is less than 0.1: + var criteria = new RelativeParameterConvergence(iterations: 0, tolerance: 0.1); + + int progress = 1; + double[] parameters = { 12345.6, 952.12, 1925.1 }; + + do + { + // Do some processing... + + // Update current iteration information: + criteria.NewValues = parameters.Divide(progress++); + + } while (!criteria.HasConverged); + + + // The method will converge after reaching the + // maximum of 11 iterations with a final value + // of { 1234.56, 95.212, 192.51 }: + + int iterations = criteria.CurrentIteration; // 11 + var v = criteria.OldValues; // { 1234.56, 95.212, 192.51 } + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 0. + The maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + + + + + Clears this instance. + + + + + + Gets or sets the maximum change in the watched value + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. + + + + + + Gets the maximum relative parameter + change after the last iteration. + + + + + + Gets or sets the watched value before the iteration. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has diverged. + + + + + + Gets whether the algorithm has converged. + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. + If the matrix is not symmetric or positive definite, the constructor returns a partial + decomposition and sets two internal variables that can be queried using the + and properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + Constructs a new Cholesky Decomposition. + The matrix to be decomposed. + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square root free LDLt decomposition, + false otherwise. + + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square-root free LDLt decomposition, + false otherwise. + True to assume the value + matrix is a lower triangular symmetric matrix, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric and positive definite. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + Solves a set of equation systems of type A * x = b. + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Computes the inverse of the decomposed matrix. + + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is symmetric. + + + + + + Returns if the matrix is positive definite. + + + + + + Returns the left (lower) triangular factor L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal elements in a LDLt decomposition. + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. + If the matrix is not symmetric or positive definite, the constructor returns a partial + decomposition and sets two internal variables that can be queried using the + and properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + Constructs a new Cholesky Decomposition. + The matrix to be decomposed. + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square root free LDLt decomposition, + false otherwise. + + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square-root free LDLt decomposition, + false otherwise. + True to assume the value + matrix is a lower triangular symmetric matrix, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric and positive definite. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + Solves a set of equation systems of type A * x = b. + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Computes the inverse of the decomposed matrix. + + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is symmetric. + + + + + + Returns if the matrix is positive definite. + + + + + + Returns the left (lower) triangular factor L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal elements in a LDLt decomposition. + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. + If the matrix is not symmetric or positive definite, the constructor returns a partial + decomposition and sets two internal variables that can be queried using the + and properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + Constructs a new Cholesky Decomposition. + The matrix to be decomposed. + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square root free LDLt decomposition, + false otherwise. + + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square-root free LDLt decomposition, + false otherwise. + True to assume the value + matrix is a lower triangular symmetric matrix, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric and positive definite. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + Solves a set of equation systems of type A * x = b. + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Computes the inverse of the decomposed matrix. + + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is symmetric. + + + + + + Returns if the matrix is positive definite. + + + + + + Returns the left (lower) triangular factor L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal elements in a LDLt decomposition. + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Gram-Schmidt Orthogonalization. + + + + + + Initializes a new instance of the class. + + + The matrix A to be decomposed. + + + + + Initializes a new instance of the class. + + + The matrix A to be decomposed. + True to use modified Gram-Schmidt; false + otherwise. Default is true (and is the recommended setup). + + + + + Returns the orthogonal factor matrix Q. + + + + + + Returns the upper triangular factor matrix R. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Romberg's method for numerical integration. + + + + + In numerical analysis, Romberg's method (Romberg 1955) is used to estimate + the definite integral ∫_a^b(x) dx by applying Richardson extrapolation + repeatedly on the trapezium rule or the rectangle rule (midpoint rule). The + estimates generate a triangular array. Romberg's method is a Newton–Cotes + formula – it evaluates the integrand at equally spaced points. The integrand + must have continuous derivatives, though fairly good results may be obtained + if only a few derivatives exist. If it is possible to evaluate the integrand + at unequally spaced points, then other methods such as Gaussian quadrature + and Clenshaw–Curtis quadrature are generally more accurate. + + + + References: + + + Wikipedia, The Free Encyclopedia. Romberg's method. Available on: + http://en.wikipedia.org/wiki/Romberg's_method + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Constructs a new Romberg's integration method. + + + + + + Constructs a new Romberg's integration method. + + + The unidimensional function whose integral should be computed. + + + + + Constructs a new Romberg's integration method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Constructs a new Romberg's integration method. + + + The number of steps used in Romberg's method. Default is 6. + + + + + Constructs a new Romberg's integration method. + + + The number of steps used in Romberg's method. Default is 6. + The unidimensional function whose integral should be computed. + + + + + Constructs a new Romberg's integration method. + + + The number of steps used in Romberg's method. Default is 6. + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, + in the given integration interval, using Romberg's method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, + in the given integration interval, using Romberg's method. + + + The number of steps used in Romberg's method. Default is 6. + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the unidimensional function + whose integral should be computed. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets or sets the number of steps used + by Romberg's method. Default is 6. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Trapezoidal rule for numerical integration. + + + + + In numerical analysis, the trapezoidal rule (also known as the trapezoid rule + or trapezium rule) is a technique for approximating the definite integral + ∫_a^b(x) dx. The trapezoidal rule works by approximating the region + under the graph of the function f(x) as a trapezoid and calculating its area. + It follows that ∫_a^b(x) dx ~ (b - a) [f(a) - f(b)] / 2. + + + + References: + + + Wikipedia, The Free Encyclopedia. Trapezoidal rule. Available on: + http://en.wikipedia.org/wiki/Trapezoidal_rule + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Constructs a new integration method. + + + + + + Constructs a new integration method. + + + The unidimensional function whose integral should be computed. + + + + + Constructs a new integration method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Constructs a new integration method. + + + The number of steps into which the integration + interval will be divided. + + + + + Constructs a new integration method. + + + The number of steps into which the integration + interval will be divided. + The unidimensional function + whose integral should be computed. + + + + + Constructs a new integration method. + + + The number of steps into which the integration + interval will be divided. + The unidimensional function + whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Computes the area under the integral for the given function, + in the given integration interval, using the Trapezoidal rule. + + + The number of steps into which the integration interval will be divided. + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Gets or sets the unidimensional function + whose integral should be computed. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets or sets the number of steps into which the + integration interval will + be divided. Default is 6. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + GNU R algorithm environment. Work in progress. + + + + + + Creates a new vector. + + + + + + Creates a new matrix. + + + + + + Placeholder vector definition + + + + + + Vector definition operator. + + + + + + Inner vector object + + + + + + Initializes a new instance of the class. + + + + + + Implements the operator -. + + + + + + Implements the operator <. + + + + + + Implements the operator >. + + + + + + Performs an implicit conversion from + to . + + + + + + Performs an implicit conversion from + + to . + + + + + + Matrix definition operator. + + + + + + Inner matrix object. + + + + + + Initializes a new instance of the class. + + + + + + Implements the operator -. + + + + + + Implements the operator <. + + + + + + Implements the operator >. + + + + + + Performs an implicit conversion from + to + . + + + + + + Performs an implicit conversion from + + to . + + + + + + Gabor kernel types. + + + + + + Creates kernel based on the real part of the Gabor function. + + + + + + Creates a kernel based on the imaginary part of the Gabor function. + + + + + + Creates a kernel based on the Magnitude of the Gabor function. + + + + + + Creates a kernel based on the Squared Magnitude of the Gabor function. + + + + + + Gabor functions. + + + + This class has been contributed by Diego Catalano, author of the Catalano + Framework, a native port of AForge.NET and Accord.NET for Java and Android. + + + + + + 1-D Gabor function. + + + + + + 2-D Gabor function. + + + + + + Real part of the 2-D Gabor function. + + + + + + Imaginary part of the 2-D Gabor function. + + + + + + Computes the 2-D Gabor kernel. + + + + + + Computes the 2-D Gabor kernel. + + + + + + Computes the 2-D Gabor kernel. + + + + + + Computes the 2-D Gabor kernel. + + + + + + 2D circle class. + + + + + + Creates a new unit at the origin. + + + + + + Creates a new with the given radius + centered at the given x and y coordinates. + + + The x-coordinate of the circle's center. + The y-coordinate of the circle's center. + The circle radius. + + + + + Creates a new with the given radius + centered at the given x and y coordinates. + + + The x-coordinate of the circle's center. + The y-coordinate of the circle's center. + The circle radius. + + + + + Creates a new with the given radius + centered at the given center point coordinates. + + + The point at the circle's center. + The circle radius. + + + + + Creates a new from three non-linear points. + + + The first point. + The second point. + The third point. + + + + + Computes the distance from circle to point. + + + The point to have its distance from the circle computed. + + The distance from to this circle. + + + + + Gets the area of the circle (πR²). + + + + + + Gets the circumference of the circle (2πR). + + + + + + Gets the diameter of the circle (2R). + + + + + + Gets or sets the radius for this circle. + + + + + + Gets or sets the origin (center) of this circle. + + + + + + Discrete Curve Evolution. + + + + + The Discrete Curve Evolution (DCE) algorithm can be used to simplify + contour curves. It can preserve the outline of a shape by preserving + its most visually critical points. + + + The implementation available in the framework has been contributed by + Diego Catalano, from the Catalano Framework for Java. The original work + has been developed by Dr. Longin Jan Latecki, and has been redistributed + under the LGPL with explicit permission from the original author, as long + as the following references are acknowledged in derived applications: + + + L.J. Latecki and R. Lakaemper; Convexity rule for shape decomposition based + on discrete contour evolution. Computer Vision and Image Understanding 73 (3), + 441-454, 1999. + + + References: + + + L.J. Latecki and R. Lakaemper; Convexity rule for shape decomposition based + on discrete contour evolution. Computer Vision and Image Understanding 73 (3), + 441-454, 1999. + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Number of vertices. + + + + + Optimize specified shape. + + + Shape to be optimized. + + + Returns final optimized shape, which may have reduced amount of points. + + + + + + Gets or sets the number of vertices. + + + + + + 3D Plane class with normal vector and distance from origin. + + + + + + Creates a new object + passing through the . + + + The first component of the plane's normal vector. + The second component of the plane's normal vector. + The third component of the plane's normal vector. + + + + + Creates a new object + passing through the . + + + The plane's normal vector. + + + + + Initializes a new instance of the class. + + + The first component of the plane's normal vector. + The second component of the plane's normal vector. + The third component of the plane's normal vector. + + The distance from the plane to the origin. + + + + + Initializes a new instance of the class. + + + The plane's normal vector. + The distance from the plane to the origin. + + + + + Constructs a new object from three points. + + + The first point. + The second point. + The third point. + + A passing through the three points. + + + + + Computes the distance from point to plane. + + + The point to have its distance from the plane computed. + + The distance from to this plane. + + + + + Normalizes this plane by dividing its components + by the vector's norm. + + + + + + Implements the operator !=. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + The acceptance tolerance threshold to consider the instances equal. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The variable to put on the left hand side. Can + be either 'x', 'y' or 'z'. + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The variable to put on the left hand side. Can + be either 'x', 'y' or 'z'. + The format provider. + + + A that represents this instance. + + + + + + Gets the plane's normal vector. + + + + + + Gets or sets the constant a in the plane + definition a * x + b * y + c * z + d = 0. + + + + + + Gets or sets the constant b in the plane + definition a * x + b * y + c * z + d = 0. + + + + + + Gets or sets the constant c in the plane + definition a * x + b * y + c * z + d = 0. + + + + + + Gets or sets the distance offset + between the plane and the origin. + + + + + + 3D point structure with X, Y, and coordinates. + + + + + + Creates a new + structure from the given coordinates. + + + The x coordinate. + The y coordinate. + The z coordinate. + + + + + Creates a new + structure from the given coordinates. + + + The point coordinates. + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The vector to be converted. + + + The result of the conversion. + + + + + + Performs a conversion from + to . + + + + + + Gets whether three points lie on the same line. + + + The first point. + The second point. + The third point. + + True if there is a line passing through all + three points; false otherwise. + + + + + Implements the operator !=. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + The acceptance tolerance threshold to consider the instances equal. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Gets or sets the point's X coordinate. + + + + + + Gets or sets the point's Y coordinate. + + + + + + Gets or sets the point's Z coordinate. + + + + + + Gets the point at the 3D space origin: (0, 0, 0) + + + + + + Denavit Hartenberg matrix (commonly referred as T). + + + + + + Executes the transform calculations (T = Z*X). + + + Transform matrix T. + + Calling this method also updates the Transform property. + + + + + Gets or sets the transformation matrix T (as in T = Z * X). + + + + + + Gets or sets the matrix regarding X axis transformations. + + + + + + Gets or sets the matrix regarding Z axis transformations. + + + + + + Denavit Hartenberg model for joints. + + + + + This class represents either a model itself or a submodel + when used with a + DenavitHartenbergModelCombinator instance. + + + References: + + + Wikipedia contributors, "Denavit-Hartenberg parameters," Wikipedia, + The Free Encyclopedia, available at: + http://en.wikipedia.org/wiki/Denavit%E2%80%93Hartenberg_parameters + + + + + + + The following example shows the creation and animation + of a 2-link planar manipulator. + + + // Create the DH-model at location (0, 0, 0) + DenavitHartenbergModel model = new DenavitHartenbergModel(); + + // Add the first joint + model.Joints.Add(alpha: 0, theta: Math.PI / 4, radius: 35, offset: 0); + + // Add the second joint + model.Joints.Add(alpha: 0, theta: -Math.PI / 3, radius: 35, offset: 0); + + // Now move the arm + model.Joints[0].Parameters.Theta += Math.PI / 10; + model.Joints[1].Parameters.Theta -= Math.PI / 10; + + // Calculate the model + model.Compute(); + + + + + + + + + + Initializes a new instance of the + class given a specified model position in 3D space. + + + The model's position in 3D space. Default is (0,0,0). + + + + + Initializes a new instance of the + class at the origin of the space (0,0,0). + + + + + + Computes the entire model, calculating the + final position for each joint in the model. + + + The model transformation matrix + + + + + Calculates the entire model given it is attached to a parent model and computes each joint position. + + + Parent model this model is attached to. + + Model transform matrix of the whole chain (parent + model). + + This function assumes the parent model has already been calculated. + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the model kinematic chain. + + + + + + Gets or sets the model position. + + + + + + Gets the transformation matrix T for the full model, given + as T = T_0 * T_1 * T_2 ...T_n in which T_i is the transform + matrix for each joint in the model. + + + + + + Denavit Hartenberg Model Combinator class to make combination + of models to create a complex model composed of multiple chains. + + + + + The following example shows the creation and animation of a + 2-link planar manipulator with a dual 2-link planar gripper. + + + + // Create the DH-model at (0, 0, 0) location + DenavitHartenbergModel model = new DenavitHartenbergModel(); + + // Add the first joint + model.Joints.Add(alpha: 0, theta: Math.PI / 4, radius: 35, offset: 0); + + // Add the second joint + model.Joints.Add(alpha: 0, theta: -Math.PI / 3, radius: 35, offset: 0); + + // Create the top finger + DenavitHartenbergModel model_tgripper = new DenavitHartenbergModel(); + model_tgripper.Joints.Add(alpha: 0, theta: Math.PI / 4, radius: 20, offset: 0); + model_tgripper.Joints.Add(alpha: 0, theta: -Math.PI / 3, radius: 20, offset: 0); + + // Create the bottom finger + DenavitHartenbergModel model_bgripper = new DenavitHartenbergModel(); + model_bgripper.Joints.Add(0, -Math.PI / 4, 20, 0); + model_bgripper.Joints.Add(0, Math.PI / 3, 20, 0); + + // Create the model combinator from the parent model + DenavitHartenbergModelCombinator arm = new DenavitHartenbergModelCombinator(model); + + // Add the top finger + arm.Children.Add(model_tgripper); + + // Add the bottom finger + arm.Children.Add(model_bgripper); + + // Calculate the whole model (parent model + children models) + arm.Compute(); + + + + + + + Initializes a new instance of the class. + + + The inner model contained at this node. + + + + + Calculates the whole combined model (this model plus all its + children plus all the children of the children and so on) + + + + + + Gets the parent of this node. + + + + + + Gets the model contained at this node. + + + + + + Gets the collection of models attached to this node. + + + + + + Collection of Denavit-Hartenberg model nodes. + + + + + + Initializes a new instance of the class. + + + The owner. + + + + + Adds a children model to the end of this . + + + + + + Inserts an element into the Collection<T> at the specified index. + + + + + + Gets the owner of this collection (i.e. the parent + which owns the + children contained at this collection. + + + + + + Denavit Hartenberg joint-description parameters. + + + + + + Initializes a new instance of the class. + + + Angle (in radians) of the Z axis relative to the last joint. + Angle (in radians) of the X axis relative to the last joint. + Length or radius of the joint. + Offset along Z axis relatively to the last joint. + + + + + Denavit Hartenberg parameters constructor + + + + + + Angle in radians about common normal, from + old z axis to the new z axis. + + + + + + Angle in radians about previous z, + from old x to the new x. + + + + + + Length of the joint (also known as a). + + + + + + Offset along previous z to the common normal (also known as d). + + + + + + Denavit-Hartenberg Model Joint. + + + + + + Initializes a new instance of the class. + + + The + parameters to be used to create the joint. + + + + + Initializes a new instance of the class. + + + Angle in radians on the Z axis relatively to the last joint. + Angle in radians on the X axis relatively to the last joint. + Length or radius of the joint. + Offset along Z axis relatively to the last joint. + + + + + Updates the joint transformation matrix and position + given a model transform matrix and reference position. + + + + + + Gets or sets the current associated with this joint. + + + + + + Gets or sets the position of this joint. + + + + + + Gets or sets the parameters for this joint. + + + + + + Collection of Denavit Hartenberg Joints. + + + + + + Adds an object to the end of this . + + + The + parameters specifying the joint to be added. + + + + + Adds an object to the end of this . + + + Angle in radians on the Z axis relatively to the last joint. + Angle in radians on the X axis relatively to the last joint. + Length or radius of the joint. + Offset along Z axis relatively to the last joint. + + + + + Static class Matrix. Defines a set of extension methods + that operates mainly on multidimensional arrays and vectors. + + + + + The matrix class is a static class containing several extension methods. + To use this class, import the and use the + standard .NET's matrices and jagged arrays. When you call the dot (.) + operator on those classes, the extension methods offered by this class + should become available through IntelliSense auto-complete. + + + +

Introduction

+ + + Declaring and using matrices in the Accord.NET Framework does + not requires much. In fact, it does not require anything else + that is not already present at the .NET Framework. If you have + already existing and working code using other libraries, you + don't have to convert your matrices to any special format used + by Accord.NET. This is because Accord.NET is built to interoperate + with other libraries and existing solutions, relying solely on + default .NET structures to work. + + + To begin, please add the following using directive on + top of your .cs (or equivalent) source code file: + + + using Accord.Math; + + + + This is all you need to start using the Accord.NET matrix library. + +

Creating matrices

+ + + Let's start by declaring a matrix, or otherwise specifying matrices + from other sources. The most straightforward way to declare a matrix + in Accord.NET is simply using: + + + double[,] matrix = + { + { 1, 2 }, + { 3, 4 }, + { 5, 6 }, + }; + + + + Yep, that is right. You don't need to create any fancy custom Matrix + classes or vectors to make Accord.NET work, which is a plus if you + have already existent code using other libraries. You are also free + to use both the multidimensional matrix syntax above or the jagged + matrix syntax below: + + + double[][] matrix = + { + new double[] { 1, 2 }, + new double[] { 3, 4 }, + new double[] { 5, 6 }, + }; + + + + Special purpose matrices can also be created through specialized methods. + Those include + + + // Creates a vector of indices + int[] idx = Matrix.Indices(0, 10); // { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } + + // Creates a step vector within a given interval + double[] interval = Matrix.Interval(from: -2, to: 4); // { -2, -1, 0, 1, 2, 3, 4 }; + + // Special matrices + double[,] I = Matrix.Identity(3); // creates a 3x3 identity matrix + double[,] magic = Matrix.Magic(5); // creates a magic square matrix of size 5 + + double[] v = Matrix.Vector(5, 1.0); // generates { 1, 1, 1, 1, 1 } + double[,] diagonal = Matrix.Diagonal(v); // matrix with v on its diagonal + + + + Another way to declare matrices is by parsing the contents of a string: + + + string str = @"1 2 + 3 4"; + + double[,] matrix = Matrix.Parse(str); + + + + You can even read directly from matrices formatted in C# syntax: + + + string str = @"double[,] matrix = + { + { 1, 2 }, + { 3, 4 }, + { 5, 6 }, + }"; + + double[,] multid = Matrix.Parse(str, CSharpMatrixFormatProvider.InvariantCulture); + double[,] jagged = Matrix.ParseJagged(str, CSharpMatrixFormatProvider.InvariantCulture); + + + + And even from Octave-compatible syntax! + + + string str = "[1 2; 3 4]"; + + double[,] matrix = Matrix.Parse(str, OctaveMatrixFormatProvider.InvariantCulture); + + + + There are also other methods, such as specialization for arrays and other formats. + For more details, please take a look on , + , , + and . + + + +

Matrix operations

+ + + Albeit being simple matrices, the framework leverages + .NET extension methods to support all basic matrix operations. For instance, + consider the elementwise operations (also known as dot operations in Octave): + + + double[] vector = { 0, 2, 4 }; + double[] a = vector.ElementwiseMultiply(2); // vector .* 2, generates { 0, 4, 8 } + double[] b = vector.ElementwiseDivide(2); // vector ./ 2, generates { 0, 1, 2 } + double[] c = vector.ElementwisePower(2); // vector .^ 2, generates { 0, 4, 16 } + + + + Operations between vectors, matrices, and both are also completely supported: + + + // Declare two vectors + double[] u = { 1, 6, 3 }; + double[] v = { 9, 4, 2 }; + + // Products between vectors + double inner = u.InnerProduct(v); // 39.0 + double[,] outer = u.OuterProduct(v); // see below + double[] kronecker = u.KroneckerProduct(v); // { 9, 4, 2, 54, 24, 12, 27, 12, 6 } + double[][] cartesian = u.CartesianProduct(v); // all possible pair-wise combinations + + /* outer = + { + { 9, 4, 2 }, + { 54, 24, 12 }, + { 27, 12, 6 }, + }; */ + + // Addition + double[] addv = u.Add(v); // { 10, 10, 5 } + double[] add5 = u.Add(5); // { 6, 11, 8 } + + // Elementwise operations + double[] abs = u.Abs(); // { 1, 6, 3 } + double[] log = u.Log(); // { 0, 1.79, 1.09 } + + // Apply *any* function to all elements in a vector + double[] cos = u.Apply(Math.Cos); // { 0.54, 0.96, -0.989 } + u.ApplyInPlace(Math.Cos); // can also do optionally in-place + + + // Declare a matrix + double[,] M = + { + { 0, 5, 2 }, + { 2, 1, 5 } + }; + + // Extract a subvector from v: + double[] vcut = v.Submatrix(0, 1); // { 9, 4 } + + // Some operations between vectors and matrices + double[] Mv = m.Multiply(v); // { 24, 32 } + double[] vM = vcut.Multiply(m); // { 8, 49, 38 } + + // Some operations between matrices + double[,] Md = m.MultiplyByDiagonal(v); // { { 0, 20, 4 }, { 18, 4, 10 } } + double[,] MMt = m.MultiplyByTranspose(m); // { { 29, 15 }, { 15, 30 } } + + + + Please note this is by no means an extensive list; please take a look on + all members available on this class or (preferably) use IntelliSense to + navigate through all possible options when trying to perform an operation. +
+ + + + + + + + +
+ + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Start row index + End row index + Start column index + End column index + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + The matrix where results should be stored. + Start row index + End row index + Start column index + End column index + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + The matrix where results should be stored. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Starting row index + End row index + Array of column indices + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices + Start column index + End column index + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Start row index + End row index + Start column index + End column index + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + Set to true to avoid memory allocations + when possible. This might result on the shallow copies of some + elements. Default is false (default is to always provide a true, + deep copy of every element in the matrices, using more memory). + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of indices. + True to return a transposed matrix; false otherwise. + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices + Start column index + End column index + Set to true to avoid memory allocations + when possible. This might result on the shallow copies of some + elements. Default is false (default is to always provide a true, + deep copy of every element in the matrices, using more memory). + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Starting row index + End row index + Array of column indices + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Array of indices. + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Array of indices. + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Starting index. + End index. + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a subvector extracted from the current vector. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Array of indices. + + + + + Returns subgroups extracted from the given vector. + + + The vector to extract the groups from. + The vector of indices for the groups. + + + + + Returns subgroups extracted from the given vector, assuming that + the groups should have been labels from 0 until the given number + of . + + + The vector to extract the groups from. + The vector of indices for the groups. + The number of classes in the groups. Specifying this + parameter will make the method assume the groups should be containing + integer labels ranging from 0 until the number of classes. + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a new multidimensional matrix. + + + + + + Returns a new multidimensional matrix. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a new jagged matrix. + + + + + + Returns a new jagged matrix. + + + + + + Returns a square diagonal matrix of the given size. + + + + + + Returns a matrix of the given size with value on its diagonal. + + + + + + Return a square matrix with a vector of values on its diagonal. + + + + + + Return a jagged matrix with a vector of values on its diagonal. + + + + + + Returns a square diagonal matrix of the given size. + + + + + + Return a square matrix with a vector of values on its diagonal. + + + + + + Returns a matrix with a vector of values on its diagonal. + + + + + + Returns the Identity matrix of the given size. + + + + + + Returns the Identity matrix of the given size. + + + + + + Creates a jagged magic square matrix. + + + + + + Creates a magic square matrix. + + + + + + Creates a centering matrix of size N x N in the + form (I - 1N) where 1N is a matrix with + all elements equal to 1 / N. + + + + + + Creates a rows-by-cols matrix with uniformly distributed random data. + + + + + Creates a rows-by-cols matrix with uniformly distributed random data. + + + + + + Creates a rows-by-cols matrix with uniformly distributed random data. + + + + + + Creates a rows-by-cols matrix random data drawn from a given distribution. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with random data drawn from a given distribution. + + + + + + Creates a matrix with a single row vector. + + + + + + Creates a matrix with a single column vector. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a index vector. + + + + + + Creates a index vector. + + + + + + Gets the dimensions of an array. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates a bi-dimensional mesh matrix. + + + + + // The Mesh method can be used to generate all + // possible (x,y) pairs between two ranges. + + // We can create a grid as + double[][] grid = Matrix.Mesh + ( + rowMin: 0, rowMax: 1, rowStepSize: 0.3, + colMin: 0, colMax: 1, colStepSize: 0.1 + ); + + // Now we can plot the points on-screen + ScatterplotBox.Show("Grid (step size)", grid).Hold(); + + + + The resulting image is shown below. + + + + + + + Creates a bi-dimensional mesh matrix. + + + + + + Creates a bi-dimensional mesh matrix. + + + + + // The Mesh method can be used to generate all + // possible (x,y) pairs between two ranges. + + // We can create a grid as + double[][] grid = Matrix.Mesh + ( + rowMin: 0, rowMax: 1, rowSteps: 10, + colMin: 0, colMax: 1, colSteps: 5 + ); + + // Now we can plot the points on-screen + ScatterplotBox.Show("Grid (fixed steps)", grid).Hold(); + + + + The resulting image is shown below. + + + + + + + Creates a bi-dimensional mesh matrix. + + + + + // The Mesh method can be used to generate all + // possible (x,y) pairs between two ranges. + + // We can create a grid as + double[][] grid = Matrix.Mesh + ( + rowRange: new DoubleRange(0, 1), rowStepSize: 0.3, + colRange: new DoubleRange(0, 1), colStepSize: 0.1 + ); + + // Now we can plot the points on-screen + ScatterplotBox.Show("Grid (step size)", grid).Hold(); + + + + The resulting image is shown below. + + + + + + + Creates a bi-dimensional mesh matrix. + + + The values to be replicated vertically. + The values to be replicated horizontally. + + + + // The Mesh method generates all possible (x,y) pairs + // between two vector of points. For example, let's + // suppose we have the values: + // + double[] a = { 0, 1 }; + double[] b = { 0, 1 }; + + // We can create a grid as + double[][] grid = a.Mesh(b); + + // the result will be: + double[][] expected = + { + new double[] { 0, 0 }, + new double[] { 0, 1 }, + new double[] { 1, 0 }, + new double[] { 1, 1 }, + }; + + + + + + + Generates a 2-D mesh grid from two vectors a and b, + generating two matrices len(a) x len(b) with all + all possible combinations of values between the two vectors. This + method is analogous to MATLAB/Octave's meshgrid function. + + + A tuple containing two matrices: the first containing values + for the x-coordinates and the second for the y-coordinates. + + + // The MeshGrid method generates two matrices that can be + // used to generate all possible (x,y) pairs between two + // vector of points. For example, let's suppose we have + // the values: + // + double[] a = { 1, 2, 3 }; + double[] b = { 4, 5, 6 }; + + // We can create a grid + var grid = a.MeshGrid(b); + + // get the x-axis values // | 1 1 1 | + double[,] x = grid.Item1; // x = | 2 2 2 | + // | 3 3 3 | + + // get the y-axis values // | 4 5 6 | + double[,] y = grid.Item2; // y = | 4 5 6 | + // | 4 5 6 | + + // we can either use those matrices separately (such as for plotting + // purposes) or we can also generate a grid of all the (x,y) pairs as + // + double[,][] xy = x.ApplyWithIndex((v, i, j) => new[] { x[i, j], y[i, j] }); + + // The result will be + // + // | (1, 4) (1, 5) (1, 6) | + // xy = | (2, 4) (2, 5) (2, 6) | + // | (3, 4) (3, 5) (3, 6) | + + + + + + Combines two vectors horizontally. + + + + + + Combines a vector and a element horizontally. + + + + + + Combines a vector and a element horizontally. + + + + + + Combines a matrix and a vector horizontally. + + + + + + Combines two matrices horizontally. + + + + + + Combines two matrices horizontally. + + + + + + Combines a matrix and a vector horizontally. + + + + + + Combines a matrix and a vector horizontally. + + + + + + Combine vectors horizontally. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines matrices vertically. + + + + + + Combines matrices vertically. + + + + + + Combines matrices vertically. + + + + + Expands a data vector given in summary form. + + + A base vector. + An array containing by how much each line should be replicated. + + + + + Expands a data matrix given in summary form. + + + A base matrix. + An array containing by how much each line should be replicated. + + + + + Splits a given vector into a smaller vectors of the given size. + This operation can be reverted using . + + + The vector to be splitted. + The size of the resulting vectors. + + An array of vectors containing the subdivisions of the given vector. + + + + + Merges a series of vectors into a single vector. This + operation can be reverted using . + + + The vectors to be merged. + The size of the inner vectors. + + A single array containing the given vectors. + + + + + Merges a series of vectors into a single vector. This + operation can be reverted using . + + + The vectors to be merged. + + A single array containing the given vectors. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many rows and columns to add at each side of the matrix. + + The original matrix with an extra row of zeros at the selected places. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many columns to add at the sides of the matrix. + How many rows to add at the bottom and top of the matrix. + + The original matrix with an extra row of zeros at the selected places. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many rows to add at the bottom. + How many rows to add at the top. + How many columns to add at the sides. + + The original matrix with an extra row of zeros at the selected places. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many rows to add at the bottom. + How many rows to add at the top. + How many columns to add at the left side. + How many columns to add at the right side. + + The original matrix with an extra row of zeros at the selected places. + + + + + Returns a represents a matrix. + + The matrix. + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + Returns a that represents a matrix. + + + The matrix. + + + If set to true, the matrix will be written using multiple + lines. If set to false, the matrix will be written in a + single line. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + The format to use when creating the resulting string. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + + The format to use when creating the resulting string. + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + The matrix. + + The format to use when creating the resulting string. + + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + Returns a that represents a matrix. + + + The matrix. + + + The format to use when creating the resulting string. + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + Returns a that represents an array. + + + The array. + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Returns a that represents an array. + + + The array. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Returns a that represents an array. + + + The matrix. + + + The format to use when creating the resulting string. + + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Returns a that represents an array. + + + The array. + + + The format to use when creating the resulting string. + + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + + The string representation of the matrix. + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + A return value indicates whether the conversion succeeded or failed. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + When this method returns, contains the double-precision floating-point + number matrix equivalent to the parameter, if the conversion succeeded, + or null if the conversion failed. The conversion fails if the parameter + is null, is not a matrix in a valid format, or contains elements which represent + a number less than MinValue or greater than MaxValue. This parameter is passed + uninitialized. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + A return value indicates whether the conversion succeeded or failed. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + When this method returns, contains the double-precision floating-point + number matrix equivalent to the parameter, if the conversion succeeded, + or null if the conversion failed. The conversion fails if the parameter + is null, is not a matrix in a valid format, or contains elements which represent + a number less than MinValue or greater than MaxValue. This parameter is passed + uninitialized. + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise Square root. + + + + + + Elementwise Square root. + + + + + + Elementwise Log operation. + + + + + + Elementwise Exp operation. + + + + + + Elementwise Exp operation. + + + + + + Elementwise Log operation. + + + + + + Elementwise Log operation. + + + + + + Elementwise power operation. + + + A matrix. + A power. + + Returns x elevated to the power of y. + + + + + Elementwise power operation. + + + A matrix. + A power. + + Returns x elevated to the power of y. + + + + + Elementwise divide operation. + + + + + + Elementwise divide operation. + + + + + + Elementwise divide operation. + + + + + + Elementwise division. + + + + + + Elementwise division. + + + + + + Elementwise division. + + + + + + Elementwise multiply operation. + + + + + Elementwise multiply operation. + + + + + Elementwise multiply operation. + + + + + + Elementwise multiply operation. + + + + + + Elementwise multiplication. + + + + + + Elementwise multiplication. + + + The left matrix a. + The right vector b. + + If set to 0, b will be multiplied with every row vector in a. + If set to 1, b will be multiplied with every column vector. + + + + + + Elementwise multiplication. + + + The left matrix a. + The right vector b. + The result vector r. + + If set to 0, b will be multiplied with every row vector in a. + If set to 1, b will be multiplied with every column vector. + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side matrix b: + double[,] rightSide = { {1}, {2}, {3} }; + + // Solve the linear system Ax = b by finding x: + double[,] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { {-1/18}, {2/18}, {5/18} }. + + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side vector b: + double[] rightSide = { 1, 2, 3 }; + + // Solve the linear system Ax = b by finding x: + double[] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { -1/18, 2/18, 5/18 }. + + + + + + + Computes the inverse of a matrix. + + + + + + Computes the inverse of a matrix. + + + + + + Computes the pseudo-inverse of a matrix. + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side matrix b: + double[,] rightSide = { {1}, {2}, {3} }; + + // Solve the linear system Ax = b by finding x: + double[,] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { {-1/18}, {2/18}, {5/18} }. + + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side vector b: + double[] rightSide = { 1, 2, 3 }; + + // Solve the linear system Ax = b by finding x: + double[] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { -1/18, 2/18, 5/18 }. + + + + + + + Computes the inverse of a matrix. + + + + + + Computes the inverse of a matrix. + + + + + + Computes the pseudo-inverse of a matrix. + + + + + + Converts a jagged-array into a multidimensional array. + + + + + + Converts a jagged-array into a multidimensional array. + + + + + + Converts an array into a multidimensional array. + + + + + + Converts an array into a multidimensional array. + + + + + + Converts an array into a multidimensional array. + + + + + + Converts a multidimensional array into a jagged array. + + + + + + Converts a multidimensional array into a jagged array. + + + + + + Converts a double-precision floating point multidimensional + array into a double-precision floating point multidimensional + array. + + + + + + Converts a byte multidimensional array into a double- + precision floating point multidimensional array. + + + + + + Converts a double-precision floating point multidimensional + array into a single-precision floating point multidimensional + array. + + + + + + Converts a single-precision floating point multidimensional + array into a double-precision floating point multidimensional + array. + + + + + + Truncates a double matrix to integer values. + + The matrix to be truncated. + + + + + Truncates a double matrix to integer values. + + The matrix to be truncated. + + + + + Converts a matrix to integer values. + + + The matrix to be converted. + + + + + Converts a matrix to integer values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts a double-precision floating point multidimensional + array into a single-precision floating point multidimensional + array. + + + + + + Converts a double-precision floating point multidimensional + array into a single-precision floating point multidimensional + array. + + + + + + Truncates a double vector to integer values. + + The vector to be truncated. + + + + + Converts a vector to integer values. + + + The vector to be converted. + + + + + Converts a vector to integer values. + + + The vector to be converted. + + + + + Converts a integer vector into a double vector. + + The vector to be converted. + + + + + Converts a double vector into a single vector. + + The vector to be converted. + + + + + Converts the values of a vector using the given converter expression. + + The type of the input. + The type of the output. + The vector to be converted. + The converter function. + + + + + Converts the values of a matrix using the given converter expression. + + The type of the input. + The type of the output. + The matrix to be converted. + The converter function. + + + + + Converts the values of a matrix using the given converter expression. + + The type of the input. + The type of the output. + The vector to be converted. + The converter function. + + + + + Converts an object into another type, irrespective of whether + the conversion can be done at compile time or not. This can be + used to convert generic types to numeric types during runtime. + + + The destination type. + + The value to be converted. + + The result of the conversion. + + + + + Converts the values of a vector using the given converter expression. + + The type of the output. + The vector or array to be converted. + + + + + Creates a vector containing every index that can be used to + address a given , in order. + + + The array whose indices will be returned. + + + An enumerable object that can be used to iterate over all + positions of the given System.Array. + + + + + double[,] a = + { + { 5.3, 2.3 }, + { 4.2, 9.2 } + }; + + foreach (int[] idx in a.GetIndices()) + { + // Get the current element + double e = (double)a.GetValue(idx); + } + + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts an array of values into a , + attempting to guess column types by inspecting the data. + + + The values to be converted. + + A containing the given values. + + + + // Specify some data in a table format + // + object[,] data = + { + { "Id", "IsSmoker", "Age" }, + { 0, 1, 10 }, + { 1, 1, 15 }, + { 2, 0, 40 }, + { 3, 1, 20 }, + { 4, 0, 70 }, + { 5, 0, 55 }, + }; + + // Create a new table with the data + DataTable dataTable = data.ToTable(); + + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a generic array. + + + + + + Converts a DataColumn to a generic array. + + + + + + Converts a DataTable to a generic array. + + + + + + Converts a DataTable to a generic array. + + + + + + Converts a DataColumn to a int[] array. + + + + + + Converts a DataTable to a int[][] array. + + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and transpose of B. + + + The left matrix A. + The transposed right matrix B. + The product A*B' of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and transpose of B. + + + The left matrix A. + The transposed right matrix B. + The product A*B' of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and + transpose of B, storing the result in matrix R. + + + The left matrix A. + The transposed right matrix B. + The matrix R to store the product R = A*B' + of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and + transpose of B, storing the result in matrix R. + + + The left matrix A. + The transposed right matrix B. + The matrix R to store the product R = A*B' + of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The product A'*B of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The product A'*B of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The matrix R to store the product R = A'*B + of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The matrix R to store the product R = A'*B + of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and vector b. + + + The transposed left matrix A. + The right column vector b. + The product A'*b of the given matrices A and vector b. + + + + + Computes the product A'*b of matrix A transposed and column vector b. + + + The transposed left matrix A. + The right column vector b. + The vector r to store the product r = A'*b + of the given matrix A and vector b. + + + + + Computes the product A'*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A'*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*inv(B) of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of inverse right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*inv(B) of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of inverse right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Multiplies a row vector v and a matrix A, + giving the product v'*A. + + + The row vector v. + The matrix A. + The product v'*Aof the multiplication of the + given row vector v and matrix A. + + + + + Multiplies a row vector v and a matrix A, + giving the product v'*A. + + + The row vector v. + The matrix A. + The product v'*Aof the multiplication of the + given row vector v and matrix A. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The product A*x of the multiplication of the + given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The product A*x of the multiplication of the + given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The product A*x of the multiplication of the + given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The matrix R to store the product R=A*x + of the multiplication of the given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The matrix R to store the product R=A*x + of the multiplication of the given matrix A and scalar x. + + + + + Multiplies a vector v by a scalar x. + + The vector v. + The scalar x. + The product v*x of the multiplication of the + given vector v and scalar x. + + + + + Multiplies a vector v by a scalar x. + + The vector v. + The scalar x. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The product v*x of the multiplication of the + given vector v and scalar x. + + + + + Multiplies a vector v by a scalar x. + + The vector v. + The scalar x. + The product v*x of the multiplication of the + given vector v and scalar x. + + + + + Multiplies a scalar x by a matrix A. + + The scalar x. + The matrix A. + The product x*A of the multiplication of the + given scalar x and matrix A. + + + + + Multiplies a scalar x by a matrix A. + + The scalar x. + The matrix A. + The product x*A of the multiplication of the + given scalar x and matrix A. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Divides a scalar by a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The division quotient of the given vector a and scalar b. + + + + Divides a scalar by a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The division quotient of the given vector a and scalar b. + + + + + Divides a vector by a scalar. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The division quotient of the given vector a and scalar b. + + + + + Divides a vector by a scalar. + + + A vector. + A scalar. + + The division quotient of the given vector a and scalar b. + + + + + Divides a vector by a scalar. + + + A vector. + A scalar. + + The division quotient of the given vector a and scalar b. + + + + + Elementwise divides a scalar by a vector. + + + A vector. + A scalar. + + The division quotient of the given scalar a and vector b. + + + + + Divides two matrices by multiplying A by the inverse of B. + + + The first matrix. + The second matrix (which will be inverted). + + The result from the division AB^-1 of the given matrices. + + + + + Divides a matrix by a scalar. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The division quotient of the given matrix and scalar. + + + + + Divides a matrix by a scalar. + + + A matrix. + A scalar. + + The division quotient of the given matrix and scalar. + + + + + Elementwise divides a scalar by a matrix. + + + A scalar. + A matrix. + + The elementwise division of the given scalar and matrix. + + + + + Elementwise divides a scalar by a matrix. + + + A scalar. + A matrix. + + The elementwise division of the given scalar and matrix. + + + + + Gets the inner product (scalar product) between two vectors (a'*b). + + + A vector. + A vector. + + The inner product of the multiplication of the vectors. + + + + In mathematics, the dot product is an algebraic operation that takes two + equal-length sequences of numbers (usually coordinate vectors) and returns + a single number obtained by multiplying corresponding entries and adding up + those products. The name is derived from the dot that is often used to designate + this operation; the alternative name scalar product emphasizes the scalar + (rather than vector) nature of the result. + + The principal use of this product is the inner product in a Euclidean vector space: + when two vectors are expressed on an orthonormal basis, the dot product of their + coordinate vectors gives their inner product. + + + + + + Gets the inner product (scalar product) between two vectors (a'*b). + + + A vector. + A vector. + + The inner product of the multiplication of the vectors. + + + + In mathematics, the dot product is an algebraic operation that takes two + equal-length sequences of numbers (usually coordinate vectors) and returns + a single number obtained by multiplying corresponding entries and adding up + those products. The name is derived from the dot that is often used to designate + this operation; the alternative name scalar product emphasizes the scalar + (rather than vector) nature of the result. + + The principal use of this product is the inner product in a Euclidean vector space: + when two vectors are expressed on an orthonormal basis, the dot product of their + coordinate vectors gives their inner product. + + + + + + Gets the outer product (matrix product) between two vectors (a*bT). + + + + In linear algebra, the outer product typically refers to the tensor + product of two vectors. The result of applying the outer product to + a pair of vectors is a matrix. The name contrasts with the inner product, + which takes as input a pair of vectors and produces a scalar. + + + + + + Vector product. + + + + The cross product, vector product or Gibbs vector product is a binary operation + on two vectors in three-dimensional space. It has a vector result, a vector which + is always perpendicular to both of the vectors being multiplied and the plane + containing them. It has many applications in mathematics, engineering and physics. + + + + + + Vector product. + + + + + + Computes the Cartesian product of many sets. + + + + References: + - http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-Cartesian-product-with-linq.aspx + + + + + + Computes the Cartesian product of many sets. + + + + + + Computes the Cartesian product of two sets. + + + + + + Computes the Kronecker product between two matrices. + + + The left matrix a. + The right matrix b. + + The Kronecker product of the two matrices. + + + + + Computes the Kronecker product between two vectors. + + + The left vector a. + The right vector b. + + The Kronecker product of the two vectors. + + + + + Adds a scalar to each element of a matrix. + + + + + + Subtracts a scalar to each element of a matrix. + + + + + + Adds two matrices. + + + A matrix. + A matrix. + + The sum of the given matrices. + + + + + Adds two matrices. + + + A matrix. + A matrix. + + The sum of the given matrices. + + + + + Adds a matrix and a scalar. + + + A matrix. + A scalar. + + The sum of the given matrix and scalar. + + + + + Adds a vector to a column or row of a matrix. + + + A matrix. + A vector. + + Pass 0 if the vector should be added row-wise, + or 1 if the vector should be added column-wise. + + + + + + Adds a scalar to the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Adds a scalar to the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Subtracts a scalar from the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Subtracts a scalar from the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Adds a vector to a column or row of a matrix. + + + A matrix. + A vector. + The dimension to add the vector to. + + + + + Adds a vector to a column or row of a matrix. + + + A matrix. + A vector. + The dimension to add the vector to. + + + + + Adds two vectors. + + + A vector. + A vector. + + The addition of the given vectors. + + + + + Adds two vectors. + + + A vector. + A vector. + + The addition of the given vectors. + + + + + Subtracts two matrices. + + + A matrix. + A matrix. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The subtraction of the given matrices. + + + + + Subtracts two matrices. + + + A matrix. + A matrix. + + The subtraction of the given matrices. + + + + + Subtracts a scalar from each element of a matrix. + + + + + + Elementwise subtracts an element of a matrix from a scalar. + + + A scalar. + A matrix. + + The elementwise subtraction of scalar a and matrix b. + + + + + Elementwise subtracts an element of a matrix from a scalar. + + + A scalar. + A matrix. + + The elementwise subtraction of scalar a and matrix b. + + + + + Subtracts two vectors. + + + A vector. + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of vector b from vector a. + + + + + Subtracts two vectors. + + + A vector. + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of vector b from vector a. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of given scalar from all elements in the given vector. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of given scalar from all elements in the given vector. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + + The subtraction of the given vector elements from the given scalar. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + + The subtraction of the given vector elements from the given scalar. + + + + + Normalizes a vector to have unit length. + + + A vector. + A norm to use. Default is . + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Normalizes a vector to have unit length. + + + A vector. + A norm to use. Default is . + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Normalizes a vector to have unit length. + + + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Normalizes a vector to have unit length. + + + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Multiplies a matrix by itself n times. + + + + + Returns a sub matrix extracted from the current matrix. + The matrix to return the submatrix from. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + + + + + Gets a column vector from a matrix. + + + + + Gets a column vector from a matrix. + + + + + Gets a column vector from a matrix. + + + + + Gets a row vector from a matrix. + + + + + + Gets a row vector from a matrix. + + + + + + Gets a column vector from a matrix. + + + + + Stores a column vector into the given column position of the matrix. + + + + + Stores a column vector into the given column position of the matrix. + + + + + Gets a row vector from a matrix. + + + + + Stores a row vector into the given row position of the matrix. + + + + + Stores a row vector into the given row position of the matrix. + + + + + Returns a new matrix without one of its columns. + + + + + + Returns a new matrix without one of its columns. + + + + + + Returns a new matrix with a new column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a new column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a new row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a new row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given column vector inserted at a given index. + + + + + + Returns a new matrix with a given column vector inserted at a given index. + + + + + + Returns a new matrix with a given row vector inserted at a given index. + + + + + + Returns a new matrix with a given row vector inserted at a given index. + + + + + + Returns a new matrix without one of its rows. + + + + + + Removes an element from a vector. + + + + + + Gets the number of elements matching a certain criteria. + + + The type of the array. + The array to search inside. + The search criteria. + + + + + Gets the indices of the first element matching a certain criteria. + + + The type of the array. + + The array to search inside. + The search criteria. + + + + + Searches for the specified value and returns the index of the first occurrence within the array. + + + The type of the array. + + The array to search. + The value to be searched. + + The index of the searched value within the array, or -1 if not found. + + + + + Gets the indices of all elements matching a certain criteria. + + + The type of the array. + The array to search inside. + The search criteria. + + + + + Gets the indices of all elements matching a certain criteria. + + The type of the array. + The array to search inside. + The search criteria. + + Set to true to stop when the first element is + found, set to false to get all elements. + + + + + Gets the indices of all elements matching a certain criteria. + + The type of the array. + The array to search inside. + The search criteria. + + + + Gets the indices of all elements matching a certain criteria. + + The type of the array. + The array to search inside. + The search criteria. + + Set to true to stop when the first element is + found, set to false to get all elements. + + + + + Gets the maximum non-null element in a vector. + + + + + + Gets the maximum element in a vector. + + + + + + Gets the maximum element in a vector. + + + + + + Gets the maximum element in a vector. + + + + + + Gets the minimum element in a vector. + + + + + + Gets the minimum element in a vector. + + + + + + Gets the maximum element in a vector up to a fixed length. + + + + + + Gets the maximum element in a vector up to a fixed length. + + + + + + Gets the minimum element in a vector up to a fixed length. + + + + + + Gets the minimum element in a vector up to a fixed length. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the range of the values in a vector. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values in a vector. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values across a matrix. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values across a matrix. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values across the columns of a matrix. + + + The matrix whose ranges should be computed. + + Pass 0 if the range should be computed for each of the columns. Pass 1 + if the range should be computed for each row. Default is 0. + + + + + + Gets the range of the values across the columns of a matrix. + + + The matrix whose ranges should be computed. + + Pass 0 if the range should be computed for each of the columns. Pass 1 + if the range should be computed for each row. Default is 0. + + + + + + Performs an in-place re-ordering of elements in + a given array using the given vector of indices. + + + The values to be ordered. + The new index positions. + + + + + Retrieves a list of the distinct values for each matrix column. + + + The matrix. + + An array containing arrays of distinct values for + each column in the . + + + + + Retrieves a list of the distinct values for each matrix column. + + + The matrix. + + An array containing arrays of distinct values for + each column in the . + + + + + Retrieves only distinct values contained in an array. + + + The array. + + An array containing only the distinct values in . + + + + + Retrieves only distinct values contained in an array. + + + The array. + Whether to allow null values in + the method's output. Default is true. + + An array containing only the distinct values in . + + + + + Retrieves only distinct values contained in an array. + + + The array. + The property of the object used to determine distinct instances. + + An array containing only the distinct values in . + + + + + Sorts the columns of a matrix by sorting keys. + + + The key value for each column. + The matrix to be sorted. + The comparer to use. + + + + + Sorts the columns of a matrix by sorting keys. + + + The key value for each column. + The matrix to be sorted. + The comparer to use. + + + + + Retrieves the top count values of an array. + + + + + + Retrieves the bottom count values of an array. + + + + + + Determines whether a number is an integer, given a tolerance threshold. + + + The value to be compared. + The maximum that the number can deviate from its closest integer number. + + True if the number if an integer, false otherwise. + + + + + Compares two values for equality, considering a relative acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two vectors for equality, considering an acceptance threshold. + + + + + + Compares two vectors for equality, considering an acceptance threshold. + + + + + + Compares each member of a vector for equality with a scalar value x. + + + + + + Compares each member of a matrix for equality with a scalar value x. + + + + + + Compares each member of a vector for equality with a scalar value x. + + + + + + Compares each member of a matrix for equality with a scalar value x. + + + + + + Compares two matrices for equality. + + + + + Compares two matrices for equality. + + + Compares two vectors for equality. + + + + This method should not be called. Use Matrix.IsEqual instead. + + + + + + Compares two enumerables for set equality. Two + enumerables are set equal if they contain the + same elements, but not necessarily in the same + order. + + + The element type. + + The first set. + The first set. + + + True if the two sets contains the same elements, false otherwise. + + + + + + Returns a value indicating whether the specified + matrix contains a value that is not a number (NaN). + + + A double-precision multidimensional matrix. + + True if the matrix contains a value that is not a number, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value that is not a number (NaN). + + + A double-precision multidimensional matrix. + + True if the matrix contains a value that is not a number, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value that is not a number (NaN). + + + A double-precision multidimensional matrix. + + True if the matrix contains a value that is not a number, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a infinity value. + + + A double-precision multidimensional matrix. + + True if the matrix contains infinity values, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value within a given tolerance. + + + A double-precision multidimensional matrix. + The value to search for in the matrix. + The relative tolerance that a value must be in + order to be considered equal to the value being searched. + + True if the matrix contains the value, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value within a given tolerance. + + + A single-precision multidimensional matrix. + The value to search for in the matrix. + The relative tolerance that a value must be in + order to be considered equal to the value being searched. + + True if the matrix contains the value, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a infinity value. + + + A double-precision multidimensional matrix. + + True if the matrix contains a infinity value, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a infinity value. + + + A double-precision multidimensional matrix. + + True if the matrix contains a infinity value, false otherwise. + + + + + Gets the transpose of a matrix. + + + A matrix. + + The transpose of the given matrix. + + + + + Gets the transpose of a matrix. + + + A matrix. + + The transpose of the given matrix. + + + + + Gets the transpose of a matrix. + + + A matrix. + + True to store the transpose over the same input + , false otherwise. Default is false. + + The transpose of the given matrix. + + + + + Gets the transpose of a matrix. + + + A matrix. + + True to store the transpose over the same input + , false otherwise. Default is false. + + The transpose of the given matrix. + + + + + Gets the transpose of a row vector. + + + A row vector. + + The transpose of the given vector. + + + + + Gets the generalized transpose of a tensor. + + + A tensor. + The new order for the tensor's dimensions. + + The transpose of the given tensor. + + + + + Gets the generalized transpose of a tensor. + + + A tensor. + The new order for the tensor's dimensions. + + The transpose of the given tensor. + + + + + Gets the number of rows in a multidimensional matrix. + + + The type of the elements in the matrix. + The matrix whose number of rows must be computed. + + The number of rows in the matrix. + + + + + Gets the number of columns in a multidimensional matrix. + + + The type of the elements in the matrix. + The matrix whose number of columns must be computed. + + The number of columns in the matrix. + + + + + Gets the number of rows in a jagged matrix. + + + The type of the elements in the matrix. + The matrix whose number of rows must be computed. + + The number of rows in the matrix. + + + + + Gets the number of columns in a jagged matrix. + + + The type of the elements in the matrix. + The matrix whose number of columns must be computed. + + The number of columns in the matrix. + + + + + Returns true if a vector of real-valued observations + is ordered in ascending or descending order. + + + An array of values. + The sort order direction. + + + + + Returns true if a matrix is square. + + + + + Returns true if a matrix is symmetric. + + + + + + + Returns true if a matrix is upper triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is upper triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is symmetric. + + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the trace of a matrix product. + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the diagonal vector from a matrix. + + + A matrix. + + The diagonal vector from the given matrix. + + + + + Gets the diagonal vector from a matrix. + + + A matrix. + + The diagonal vector from the given matrix. + + + + + Gets the determinant of a matrix. + + + + + + Gets the determinant of a matrix. + + + + + + Gets the log-determinant of a matrix. + + + + + + Gets the log-determinant of a matrix. + + + + + + Gets the pseudo-determinant of a matrix. + + + + + + Gets the log of the pseudo-determinant of a matrix. + + + + + + Gets the determinant of a matrix. + + + + + + Gets the determinant of a matrix. + + + + + + Gets whether a matrix is singular. + + + + + + Gets whether a matrix is positive definite. + + + + + + Gets whether a matrix is positive definite. + + + + + Calculates the matrix Sum vector. + + A matrix whose sums will be calculated. + + Returns a vector containing the sums of each variable in the given matrix. + + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. Default is 0. + Returns a vector containing the sums of each variable in the given matrix. + + + + Gets the sum of all elements in a vector. + + + + + + Gets the sum of all elements in a vector. + + + + + + Gets the sum of all elements in a vector. + + + + Calculates a vector cumulative sum. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the cumulative sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + + Gets the product of all elements in a vector. + + + + + Gets the product of all elements in a vector. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of the array. + + + + + Rounds a double-precision floating-point matrix to a specified number of fractional digits. + + + + + + Returns the largest integer less than or equal than to the specified + double-precision floating-point number for each element of the matrix. + + + + + + Returns the largest integer greater than or equal than to the specified + double-precision floating-point number for each element of the matrix. + + + + + Rounds a double-precision floating-point number array to a specified number of fractional digits. + + + + + Returns the largest integer less than or equal than to the specified + double-precision floating-point number for each element of the array. + + + + + Returns the largest integer greater than or equal than to the specified + double-precision floating-point number for each element of the array. + + + + + Transforms a vector into a matrix of given dimensions. + + + + + Transforms a matrix into a single vector. + + + A matrix. + + + + + Transforms a matrix into a single vector. + + + A matrix. + The direction to perform copying. Pass + 0 to perform a row-wise copy. Pass 1 to perform a column-wise + copy. Default is 0. + + + + + Transforms a jagged array matrix into a single vector. + + A jagged array. + + + + + Transforms a jagged array matrix into a single vector. + + + A jagged array. + The direction to perform copying. Pass + 0 to perform a row-wise copy. Pass 1 to perform a column-wise + copy. Default is 0. + + + + + Convolves an array with the given kernel. + + + A floating number array. + A convolution kernel. + + + + + Convolves an array with the given kernel. + + + A floating number array. + A convolution kernel. + + If true the resulting array will be trimmed to + have the same length as the input array. Default is false. + + + + + Creates a memberwise copy of a jagged matrix. Matrix elements + themselves are copied only in a shallowed manner (i.e. not cloned). + + + + + + Creates a memberwise copy of a multidimensional matrix. Matrix elements + themselves are copied only in a shallowed manner (i.e. not cloned). + + + + + + Contains classes for constrained and unconstrained optimization. Includes + Conjugate Gradient (CG), + Bounded and Unbounded Broyden–Fletcher–Goldfarb–Shanno (BFGS), + gradient-free optimization methods such as and the Goldfarb-Idnani + solver for Quadratic Programming (QP) problems. + + + + + This namespace contains different methods for solving both constrained and unconstrained + optimization problems. For unconstrained optimization, methods available include + Conjugate Gradient (CG), + Bounded and Unbounded Broyden–Fletcher–Goldfarb–Shanno (BFGS), + Resilient Backpropagation and a simplified implementation of the + Trust Region Newton Method (TRON). + + + For constrained optimization problems, methods available include the + Augmented Lagrangian method for general non-linear optimization, for + gradient-free non-linear optimization, and the Goldfarb-Idnani + method for solving Quadratic Programming (QP) problems. + + + This namespace also contains optimizers specialized for least squares problems, such as + Gauss Newton and the Levenberg-Marquart least squares solvers. + + + For univariate problems, standard search algorithms are also available, such as + Brent and Binary search. + + + The namespace class diagram is shown below. + + + + + + + + + + + Base class for gradient-based optimization methods. + + + + + + Base class for optimization methods. + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + + + + + Initializes a new instance of the class. + + + The objective function whose optimum values should be found. + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + The initial solution vector to start the search. + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + The initial solution vector to start the search. + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Creates an exception with a given inner optimization algorithm code (for debugging purposes). + + + + + + Creates an exception with a given inner optimization algorithm code (for debugging purposes). + + + + + + Gets or sets the function to be optimized. + + + The function to be optimized. + + + + + Gets the number of variables (free parameters) + in the optimization problem. + + + The number of parameters. + + + + + Gets the current solution found, the values of + the parameters which optimizes the function. + + + + + + Gets the output of the function at the current . + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + The gradient of the objective . + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Gets or sets a function returning the gradient + vector of the function to be optimized for a + given value of its free parameters. + + + The gradient function. + + + + + Common interface for function optimization methods which depend on + having both an objective function and a gradient function definition + available. + + + + + + + + + + Gets or sets the function to be optimized. + + + The function to be optimized. + + + + + Gets or sets a function returning the gradient + vector of the function to be optimized for a + given value of its free parameters. + + + The gradient function. + + + + + Least Squares function delegate. + + + + This delegate represents a parameterized function that, given a set of + and an vector, + produces an associated output value. + + + The function parameters, also known as weights or coefficients. + An input vector. + + The output value produced given the vector + using the given . + + + + + Gradient function delegate. + + + + This delegate represents the gradient of a Least + Squares objective function. This function should compute the gradient vector + in respect to the function . + + + The function parameters, also known as weights or coefficients. + An input vector. + The resulting gradient vector (w.r.t to the parameters). + + + + + Common interface for Least Squares algorithms, i.e. algorithms + that can be used to solve Least Squares optimization problems. + + + + + + Attempts to find the best values for the parameter vector + minimizing the discrepancy between the generated outputs + and the expected outputs for a given set of input data. + + + A set of input data. + The values associated with each + vector in the data. + + + + + Gets or sets a parameterized model function mapping input vectors + into output values, whose optimum parameters must be found. + + + The function to be optimized. + + + + + Gets or sets a function that computes the gradient vector in respect + to the function parameters, given a set of input and output values. + + + The gradient function. + + + + + Gets the number of variables (free parameters) in the optimization problem. + + + The number of parameters. + + + + + Gets the solution found, the values of the parameters which + optimizes the function, in a least squares sense. + + + + + + Gets standard error for each parameter in the solution. + + + + + + Binary search root finding algorithm. + + + + + + Constructs a new Binary search algorithm. + + + The function to be searched. + Start of search region. + End of search region. + + + + + Attempts to find a root in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Attempts to find a root in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Finds a value of a function in the interval [a;b] + + + The function to have its root computed. + Start of search region. + End of search region. + The value to be looked for in the function. + + The location of the zero value in the given interval. + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets the solution found in the last call + to or . + + + + + + Gets the value at the solution found in the last call + to . + + + + + + Gets the function to be searched. + + + + + + Cobyla exit codes. + + + + + + Optimization successfully completed. + + + + + + Maximum number of iterations (function/constraints evaluations) reached during optimization. + + + + + + Size of rounding error is becoming damaging, terminating prematurely. + + + + + + The posed constraints cannot be fulfilled. + + + + + + Constrained optimization by linear approximation. + + + + + Constrained optimization by linear approximation (COBYLA) is a numerical + optimization method for constrained problems where the derivative of the + objective function is not known, invented by Michael J. D. Powell. + + + COBYLA2 is an implementation of Powell’s nonlinear derivative–free constrained + optimization that uses a linear approximation approach. The algorithm is a + sequential trust–region algorithm that employs linear approximations to the + objective and constraint functions, where the approximations are formed by linear + interpolation at n + 1 points in the space of the variables and tries to maintain + a regular–shaped simplex over iterations. + + + This algorithm is able to solve non-smooth NLP problems with a moderate number + of variables (about 100), with inequality constraints only. + + + References: + + + Wikipedia, The Free Encyclopedia. Cobyla. Available on: + http://en.wikipedia.org/wiki/COBYLA + + + + + + Let's say we would like to optimize a function whose gradient + we do not know or would is too difficult to compute. All we + have to do is to specify the function, pass it to Cobyla and + call its Minimize() method: + + + + // We would like to find the minimum of min f(x) = 10 * (x+1)^2 + y^2 + Func<double[], double> function = x => 10 * Math.Pow(x[0] + 1, 2) + Math.Pow(x[1], 2); + + // Create a cobyla method for 2 variables + Cobyla cobyla = new Cobyla(2, function); + + bool success = cobyla.Minimize(); + + double minimum = minimum = cobyla.Value; // Minimum should be 0. + double[] solution = cobyla.Solution; // Vector should be (-1, 0) + + + + Cobyla can be used even when we have constraints in our optimization problem. + The following example can be found in Fletcher's book Practical Methods of + Optimization, under the equation number (9.1.15). + + + + // We will optimize the 2-variable function f(x, y) = -x -y + var f = new NonlinearObjectiveFunction(2, x => -x[0] - x[1]); + + // Under the following constraints + var constraints = new[] + { + new NonlinearConstraint(2, x => x[1] - x[0] * x[0] >= 0), + new NonlinearConstraint(2, x => 1 - x[0] * x[0] - x[1] * x[1] >= 0), + }; + + // Create a Cobyla algorithm for the problem + var cobyla = new Cobyla(function, constraints); + + // Optimize it + bool success = cobyla.Minimize(); + double minimum = cobyla.Value; // Minimum should be -2 * sqrt(0.5) + double[] solution = cobyla.Solution; // Vector should be [sqrt(0.5), sqrt(0.5)] + + + + + + + Common interface for function optimization methods. + + + + + + + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The number of free parameters in the function to be optimized. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The function to be optimized. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The function to be optimized. + The constraints of the optimization problem. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The function to be optimized. + The constraints of the optimization problem. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets the number of iterations performed in the last + call to . + + + + The number of iterations performed + in the previous optimization. + + + + + Gets or sets the maximum number of iterations + to be performed during optimization. Default + is 0 (iterate until convergence). + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Gets how much the constraint is being violated. + + + The function point. + + + How much the constraint is being violated at the given point. Positive + value means the constraint is not being violated with the returned slack, + while a negative value means the constraint is being violated by the returned + amount. + + + + + + Gets the type of the constraint. + + + + + + Gets the value in the right hand + side of the constraint equation. + + + + + + Gets the number of variables in the constraint. + + + + + + Gets the left hand side of + the constraint equation. + + + + + + Gets the gradient of the left hand + side of the constraint equation. + + + + + + Linear Constraint Collection. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Creates a matrix of linear constraints in canonical form. + + + The number of variables in the objective function. + The vector of independent terms (the right hand side of the constraints). + The number of equalities in the matrix. + The matrix A of linear constraints. + + + + + Creates a matrix of linear constraints in canonical form. + + + The number of variables in the objective function. + The vector of independent terms (the right hand side of the constraints). + The amount each constraint can be violated before the answer is declared close enough. + The number of equalities in the matrix. + The matrix A of linear constraints. + + + + + Limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) optimization method. + + + + + The L-BFGS algorithm is a member of the broad family of quasi-Newton optimization + methods. L-BFGS stands for 'Limited memory BFGS'. Indeed, L-BFGS uses a limited + memory variation of the Broyden–Fletcher–Goldfarb–Shanno (BFGS) update to approximate + the inverse Hessian matrix (denoted by Hk). Unlike the original BFGS method which + stores a dense approximation, L-BFGS stores only a few vectors that represent the + approximation implicitly. Due to its moderate memory requirement, L-BFGS method is + particularly well suited for optimization problems with a large number of variables. + + L-BFGS never explicitly forms or stores Hk. Instead, it maintains a history of the past + m updates of the position x and gradient g, where generally the history + mcan be short, often less than 10. These updates are used to implicitly do operations + requiring the Hk-vector product. + + + The framework implementation of this method is based on the original FORTRAN source code + by Jorge Nocedal (see references below). The original FORTRAN source code of L-BFGS (for + unconstrained problems) is available at http://www.netlib.org/opt/lbfgs_um.shar and had + been made available under the public domain. + + + References: + + + Jorge Nocedal. Limited memory BFGS method for large scale optimization (Fortran source code). 1990. + Available in http://www.netlib.org/opt/lbfgs_um.shar + + Jorge Nocedal. Updating Quasi-Newton Matrices with Limited Storage. Mathematics of Computation, + Vol. 35, No. 151, pp. 773--782, 1980. + + Dong C. Liu, Jorge Nocedal. On the limited memory BFGS method for large scale optimization. + + + + + + The following example shows the basic usage of the L-BFGS solver + to find the minimum of a function specifying its function and + gradient. + + + // Suppose we would like to find the minimum of the function + // + // f(x,y) = -exp{-(x-1)²} - exp{-(y-2)²/2} + // + + // First we need write down the function either as a named + // method, an anonymous method or as a lambda function: + + Func<double[], double> f = (x) => + -Math.Exp(-Math.Pow(x[0] - 1, 2)) - Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)); + + // Now, we need to write its gradient, which is just the + // vector of first partial derivatives del_f / del_x, as: + // + // g(x,y) = { del f / del x, del f / del y } + // + + Func<double[], double[]> g = (x) => new double[] + { + // df/dx = {-2 e^(- (x-1)^2) (x-1)} + 2 * Math.Exp(-Math.Pow(x[0] - 1, 2)) * (x[0] - 1), + + // df/dy = {- e^(-1/2 (y-2)^2) (y-2)} + Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)) * (x[1] - 2) + }; + + // Finally, we can create the L-BFGS solver, passing the functions as arguments + var lbfgs = new BroydenFletcherGoldfarbShanno(numberOfVariables: 2, function: f, gradient: g); + + // And then minimize the function: + bool success = lbfgs.Minimize(); + double minValue = lbfgs.Value; + double[] solution = lbfgs.Solution; + + // The resultant minimum value should be -2, and the solution + // vector should be { 1.0, 2.0 }. The answer can be checked on + // Wolfram Alpha by clicking the following the link: + + // http://www.wolframalpha.com/input/?i=maximize+%28exp%28-%28x-1%29%C2%B2%29+%2B+exp%28-%28y-2%29%C2%B2%2F2%29%29 + + + + + + + + + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + Occurs when progress is made during the optimization. + + + + + + Gets the number of iterations performed in the last + call to + or . + + + + The number of iterations performed + in the previous optimization. + + + + + Gets or sets the maximum number of iterations + to be performed during optimization. Default + is 0 (iterate until convergence). + + + + + + Gets the number of function evaluations performed + in the last call to + or . + + + + The number of evaluations performed + in the previous optimization. + + + + + Gets or sets the number of corrections used in the L-BFGS + update. Recommended values are between 3 and 7. Default is 5. + + + + + + Gets or sets the upper bounds of the interval + in which the solution must be found. + + + + + + Gets or sets the lower bounds of the interval + in which the solution must be found. + + + + + + Gets or sets the accuracy with which the solution + is to be found. Default value is 1e5. Smaller values + up until zero result in higher accuracy. + + + + + The iteration will stop when + + (f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr*epsmch + + where epsmch is the machine precision, which is automatically + generated by the code. Typical values for this parameter are: + 1e12 for low accuracy; 1e7 for moderate accuracy; 1e1 for extremely + high accuracy. + + + + + + Gets or sets a tolerance value when detecting convergence + of the gradient vector steps. Default is 0. + + + + On entry pgtol >= 0 is specified by the user. The iteration + will stop when + + max{|proj g_i | i = 1, ..., n} <= pgtol + + + where pg_i is the ith component of the projected gradient. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + Find a minimizer of an interpolated cubic function. + @param cm The minimizer of the interpolated cubic. + @param u The value of one point, u. + @param fu The value of f(u). + @param du The value of f'(u). + @param v The value of another point, v. + @param fv The value of f(v). + @param du The value of f'(v). + + + Find a minimizer of an interpolated cubic function. + @param cm The minimizer of the interpolated cubic. + @param u The value of one point, u. + @param fu The value of f(u). + @param du The value of f'(u). + @param v The value of another point, v. + @param fv The value of f(v). + @param du The value of f'(v). + @param xmin The maximum value. + @param xmin The minimum value. + + + Find a minimizer of an interpolated quadratic function. + @param qm The minimizer of the interpolated quadratic. + @param u The value of one point, u. + @param fu The value of f(u). + @param du The value of f'(u). + @param v The value of another point, v. + @param fv The value of f(v). + + + Find a minimizer of an interpolated quadratic function. + @param qm The minimizer of the interpolated quadratic. + @param u The value of one point, u. + @param du The value of f'(u). + @param v The value of another point, v. + @param dv The value of f'(v). + + + Update a safeguarded trial value and interval for line search. + + The parameter x represents the step with the least function value. + The parameter t represents the current step. This function assumes + that the derivative at the point of x in the direction of the step. + If the bracket is set to true, the minimizer has been bracketed in + an interval of uncertainty with endpoints between x and y. + + @param x The pointer to the value of one endpoint. + @param fx The pointer to the value of f(x). + @param dx The pointer to the value of f'(x). + @param y The pointer to the value of another endpoint. + @param fy The pointer to the value of f(y). + @param dy The pointer to the value of f'(y). + @param t The pointer to the value of the trial value, t. + @param ft The pointer to the value of f(t). + @param dt The pointer to the value of f'(t). + @param tmin The minimum value for the trial value, t. + @param tmax The maximum value for the trial value, t. + @param brackt The pointer to the predicate if the trial value is + bracketed. + @retval int Status value. Zero indicates a normal termination. + + @see + Jorge J. More and David J. Thuente. Line search algorithm with + guaranteed sufficient decrease. ACM Transactions on Mathematical + Software (TOMS), Vol 20, No 3, pp. 286-307, 1994. + + + Return values of lbfgs(). + + Roughly speaking, a negative value indicates an error. + + + L-BFGS reaches convergence. + + + The initial variables already minimize the objective function. + + + Unknown error. + + + Logic error. + + + Insufficient memory. + + + The minimization process has been canceled. + + + Invalid number of variables specified. + + + Invalid number of variables (for SSE) specified. + + + The array x must be aligned to 16 (for SSE). + + + Invalid parameter lbfgs_parameter_t::epsilon specified. + + + Invalid parameter lbfgs_parameter_t::past specified. + + + Invalid parameter lbfgs_parameter_t::delta specified. + + + Invalid parameter lbfgs_parameter_t::linesearch specified. + + + Invalid parameter lbfgs_parameter_t::max_step specified. + + + Invalid parameter lbfgs_parameter_t::max_step specified. + + + Invalid parameter lbfgs_parameter_t::ftol specified. + + + Invalid parameter lbfgs_parameter_t::wolfe specified. + + + Invalid parameter lbfgs_parameter_t::gtol specified. + + + Invalid parameter lbfgs_parameter_t::xtol specified. + + + Invalid parameter lbfgs_parameter_t::max_linesearch specified. + + + Invalid parameter lbfgs_parameter_t::orthantwise_c specified. + + + Invalid parameter lbfgs_parameter_t::orthantwise_start specified. + + + Invalid parameter lbfgs_parameter_t::orthantwise_end specified. + + + The line-search step went out of the interval of uncertainty. + + + A logic error occurred; alternatively, the interval of uncertainty + became too small. + + + A rounding error occurred; alternatively, no line-search step + satisfies the sufficient decrease and curvature conditions. + + + The line-search step became smaller than lbfgs_parameter_t::min_step. + + + The line-search step became larger than lbfgs_parameter_t::max_step. + + + The line-search routine reaches the maximum number of evaluations. + + + The algorithm routine reaches the maximum number of iterations. + + + Relative width of the interval of uncertainty is at most + lbfgs_parameter_t::xtol. + + + A logic error (negative line-search step) occurred. + + + The current search direction increases the objective function value. + + + Callback interface to provide objective function and gradient evaluations. + + The lbfgs() function call this function to obtain the values of objective + function and its gradients when needed. A client program must implement + this function to evaluate the values of the objective function and its + gradients, given current values of variables. + + @param instance The user data sent for lbfgs() function by the client. + @param x The current values of variables. + @param g The gradient vector. The callback function must compute + the gradient values for the current variables. + @param n The number of variables. + @param step The current step of the line search routine. + @retval double The value of the objective function for the current + variables. + + + Callback interface to receive the progress of the optimization process. + + The lbfgs() function call this function for each iteration. Implementing + this function, a client program can store or display the current progress + of the optimization process. + + @param instance The user data sent for lbfgs() function by the client. + @param x The current values of variables. + @param g The current gradient values of variables. + @param fx The current value of the objective function. + @param xnorm The Euclidean norm of the variables. + @param gnorm The Euclidean norm of the gradients. + @param step The line-search step used for this iteration. + @param n The number of variables. + @param k The iteration count. + @param ls The number of evaluations called for this iteration. + @retval int Zero to continue the optimization process. Returning a + non-zero value will cancel the optimization process. + + + + Status codes for the + function optimizer. + + + + + + The function output converged to a static + value within the desired precision. + + + + + + The function gradient converged to a minimum + value within the desired precision. + + + + + + The inner line search function failed. This could be an indication + that there might be something wrong with the gradient function. + + + + + + Inner status of the + optimization algorithm. This class contains implementation details that + can change at any time. + + + + + + Initializes a new instance of the class with the inner + status values from the original FORTRAN L-BFGS implementation. + + + The isave L-BFGS status argument. + The dsave L-BFGS status argument. + The lsave L-BFGS status argument. + The csave L-BFGS status argument. + The work L-BFGS status argument. + + + + + Gets or sets the isave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the dsave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the lsave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the csave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the work vector from the + original FORTRAN L-BFGS implementation. + + + + + + Gauss-Newton algorithm for solving Least-Squares problems. + + + + This class isn't suitable for most real-world problems. Instead, this class + is intended to be use as a baseline comparison to help debug and check other + optimization methods, such as . + + + + + + Initializes a new instance of the class. + + + The number of variables (free parameters) + in the objective function. + + + + + Attempts to find the best values for the parameter vector + minimizing the discrepancy between the generated outputs + and the expected outputs for a given set of input data. + + + A set of input data. + The values associated with each + vector in the data. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Gets or sets a parameterized model function mapping input vectors + into output values, whose optimum parameters must be found. + + + + The function to be optimized. + + + + + + Gets or sets a function that computes the gradient vector in respect + to the function parameters, given a set of input and output values. + + + + The gradient function. + + + + + + Gets the number of variables (free parameters) in the optimization problem. + + + + The number of parameters. + + + + + + Gets the approximate Hessian matrix of second derivatives + created during the last algorithm iteration. + + + + + Please note that this value is actually just an approximation to the + actual Hessian matrix using the outer Jacobian approximation (H ~ J'J). + + + + + + + Gets the solution found, the values of the parameters which + optimizes the function, in a least squares sense. + + + + + + Gets the vector of residuals computed in the last iteration. + The residuals are computed as (y - f(w, x)), in which + y are the expected output values, and f is the + parameterized model function. + + + + + + Gets the Jacobian matrix of first derivatives computed in the + last iteration. + + + + + + Gets the vector of coefficient updates computed in the last iteration. + + + + + + Gets standard error for each parameter in the solution. + + + + + + Levenberg-Marquardt algorithm for solving Least-Squares problems. + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + + + + Attempts to find the best values for the parameter vector + minimizing the discrepancy between the generated outputs + and the expected outputs for a given set of input data. + + + A set of input data. + The values associated with each + vector in the data. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Gets or sets a parameterized model function mapping input vectors + into output values, whose optimum parameters must be found. + + + + The function to be optimized. + + + + + + Gets or sets a function that computes the gradient vector in respect + to the function parameters, given a set of input and output values. + + + + The gradient function. + + + + + + Gets the solution found, the values of the parameters which + optimizes the function, in a least squares sense. + + + + + + Levenberg's damping factor, also known as lambda. + + + The value determines speed of learning. + + Default value is 0.1. + + + + + + Learning rate adjustment. + + + The value by which the learning rate + is adjusted when searching for the minimum cost surface. + + Default value is 10. + + + + + + Gets the number of variables (free parameters) in the optimization problem. + + + + The number of parameters. + + + + + + Gets or sets the number of blocks to divide the + Jacobian matrix in the Hessian calculation to + preserve memory. Default is 1. + + + + + + Gets the approximate Hessian matrix of second derivatives + generated in the last algorithm iteration. The Hessian is + stored in the upper triangular part of this matrix. See + remarks for details. + + + + + The Hessian needs only be upper-triangular, since + it is symmetric. The Cholesky decomposition will + make use of this fact and use the lower-triangular + portion to hold the decomposition, conserving memory + + + Thus said, this property will hold the Hessian matrix + in the upper-triangular part of this matrix, and store + its Cholesky decomposition on its lower triangular part. + + + Please note that this value is actually just an approximation to the + actual Hessian matrix using the outer Jacobian approximation (H ~ J'J). + + + + + + + Gets standard error for each parameter in the solution. + + + + + + exit codes. + + + + + + Optimization was canceled by the user. + + + + + + Optimization ended successfully. + + + + + + The execution time exceeded the established limit. + + + + + + The minimum desired value has been reached. + + + + + + The algorithm had stopped prematurely because + the maximum number of evaluations was reached. + + + + + + The algorithm failed internally. + + + + + + The desired output tolerance (minimum change in the function + output between two consecutive iterations) has been reached. + + + + + + The desired parameter tolerance (minimum change in the + solution vector between two iterations) has been reached. + + + + + + Nelder-Mead simplex algorithm with support for bound + constraints for non-linear, gradient-free optimization. + + + + + The Nelder–Mead method or downhill simplex method or amoeba method is a + commonly used nonlinear optimization technique, which is a well-defined + numerical method for problems for which derivatives may not be known. + However, the Nelder–Mead technique is a heuristic search method that can + converge to non-stationary points on problems that can be solved by + alternative methods. + + + The Nelder–Mead technique was proposed by John Nelder and Roger Mead (1965) + and is a technique for minimizing an objective function in a many-dimensional + space. + + + The source code presented in this file has been adapted from the + Sbplx method (based on Nelder-Mead's Simplex) given in the NLopt + Numerical Optimization Library, created by Steven G. Johnson. + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, + http://ab-initio.mit.edu/nlopt + + Wikipedia, The Free Encyclopedia. Nelder Mead method. Available on: + http://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method + + + + + + + Creates a new non-linear optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new non-linear optimization algorithm. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + + + + + Creates a new non-linear optimization algorithm. + + + The objective function whose optimum values should be found. + + + + + Finds the minimum value of a function, using the function output at + the current value, if already known. This overload can be used when + embedding Nelder-Mead in other algorithms to avoid initial checks. + + + The function output at the current values, if already known. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Performs the reflection xnew = c + scale * (c - xold), + returning 0 if xnew == c or xnew == xold (coincident + points), and 1 otherwise. + + + + The reflected point xnew is "pinned" to the lower and upper bounds + (lb and ub), as suggested by J. A. Richardson and J. L. Kuester, + "The complex method for constrained optimization," Commun. ACM + 16(8), 487-489 (1973). This is probably a suboptimal way to handle + bound constraints, but I don't know a better way. The main danger + with this is that the simplex might collapse into a + lower-dimensional hyperplane; this danger can be ameliorated by + restarting (as in subplex), however. + + + + + + Determines whether two numbers are numerically + close (within current floating-point precision). + + + + + + Gets the maximum number of + variables that can be optimized by this instance. + This is the initial value that has been passed to this + class constructor at the time the algorithm was created. + + + + + + Gets or sets the maximum value that the objective + function could produce before the algorithm could + be terminated as if the solution was good enough. + + + + + + Gets the step sizes to be used by the optimization + algorithm. Default is to initialize each with 1e-5. + + + + + + Gets or sets the number of variables (free parameters) in the + optimization problem. This number can be decreased after the + algorithm has been created so it can operate on subspaces. + + + + + + + + Gets or sets multiple convergence options to + determine when the optimization can terminate. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Gets the lower bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Gets the upper bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Gets or sets the by how much the simplex diameter |xl - xh| must be + reduced before the algorithm can be terminated. Setting this value + to a value higher than zero causes the algorithm to replace the + standard criteria with this condition. + Default is zero. + + + + + + The difference between the high and low function + values of the last simplex in the previous call + to the optimization function. + + + + + + Resilient Backpropagation method for unconstrained optimization. + + + + + + + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The function to be optimized. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Creates a new function optimizer. + + + The number of parameters in the function to be optimized. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Resets the current update steps using the given learning rate. + + + + + + Occurs when the current learning progress has changed. + + + + + + Gets or sets the maximum possible update step, + also referred as delta min. Default is 50. + + + + + + Gets or sets the minimum possible update step, + also referred as delta max. Default is 1e-6. + + + + + + Gets the decrease parameter, also + referred as eta minus. Default is 0.5. + + + + + + Gets the increase parameter, also + referred as eta plus. Default is 1.2. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Subplex + + + + + The source code presented in this file has been adapted from the + Sbplx method (based on Nelder-Mead's Simplex) given in the NLopt + Numerical Optimization Library, created by Steven G. Johnson. + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, + http://ab-initio.mit.edu/nlopt + + Wikipedia, The Free Encyclopedia. Nelder Mead method. Available on: + http://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method + + + + + + + Creates a new optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new optimization algorithm. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + + + + + Creates a new optimization algorithm. + + + The objective function whose optimum values should be found. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Wrapper around objective function for subspace optimization. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Gets or sets the maximum value that the objective + function could produce before the algorithm could + be terminated as if the solution was good enough. + + + + + + Gets the step sizes to be used by the optimization + algorithm. Default is to initialize each with 1e-5. + + + + + + Gets or sets multiple convergence options to + determine when the optimization can terminate. + + + + + + Gets the lower bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Gets the upper bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Simplified Trust Region Newton Method (TRON) for non-linear optimization. + + + + + Trust region is a term used in mathematical optimization to denote the subset + of the region of the objective function to be optimized that is approximated + using a model function (often a quadratic). If an adequate model of the objective + function is found within the trust region then the region is expanded; conversely, + if the approximation is poor then the region is contracted. Trust region methods + are also known as restricted step methods. + + The fit is evaluated by comparing the ratio of expected improvement from the model + approximation with the actual improvement observed in the objective function. Simple + thresholding of the ratio is used as the criteria for expansion and contraction—a + model function is "trusted" only in the region where it provides a reasonable + approximation. + + + Trust region methods are in some sense dual to line search methods: trust region + methods first choose a step size (the size of the trust region) and then a step + direction while line search methods first choose a step direction and then a step + size. + + + This class implements a simplified version of Chih-Jen Lin and Jorge Moré's TRON, + a trust region Newton method for the solution of large bound-constrained optimization + problems. This version was based upon liblinear's implementation. + + + References: + + + + Wikipedia, The Free Encyclopedia. Trust region. Available on: + http://en.wikipedia.org/wiki/Trust_region + + + Chih-Jen Lin and Jorge Moré, TRON. Available on: http://www.mcs.anl.gov/~more/tron/index.html + + + + Chih-Jen Lin and Jorge J. Moré. 1999. Newton's Method for Large Bound-Constrained + Optimization Problems. SIAM J. on Optimization 9, 4 (April 1999), 1100-1127. + + + + Machine Learning Group. LIBLINEAR -- A Library for Large Linear Classification. + National Taiwan University. Available at: http://www.csie.ntu.edu.tw/~cjlin/liblinear/ + + + + + + + + + + + + + Creates a new function optimizer. + + + The number of parameters in the function to be optimized. + + + + + Creates a new function optimizer. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + The hessian of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets or sets the tolerance under which the + solution should be found. Default is 0.1. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Gets or sets the Hessian estimation function. + + + + + + Taylor series expansions for common functions. + + + + + In mathematics, a Taylor series is a representation of a function as an infinite sum of terms + that are calculated from the values of the function's derivatives at a single point. + + + The concept of a Taylor series was discovered by the Scottish mathematician James Gregory and + formally introduced by the English mathematician Brook Taylor in 1715. If the Taylor series is + centered at zero, then that series is also called a Maclaurin series, named after the Scottish + mathematician Colin Maclaurin, who made extensive use of this special case of Taylor series in + the 18th century. + + + It is common practice to approximate a function by using a finite number of terms of its Taylor + series. Taylor's theorem gives quantitative estimates on the error in this approximation. Any + finite number of initial terms of the Taylor series of a function is called a Taylor polynomial. + The Taylor series of a function is the limit of that function's Taylor polynomials, provided that + the limit exists. A function may not be equal to its Taylor series, even if its Taylor series + converges at every point. A function that is equal to its Taylor series in an open interval (or + a disc in the complex plane) is known as an analytic function in that interval. + + + References: + + + Wikipedia, The Free Encyclopedia. Taylor series. Available at: + http://en.wikipedia.org/wiki/Taylor_series + + Anne Fry, Amy Plofker, Sarah-marie Belcastro, Lyle Roelofs. A Set of Appendices on Mathematical + Methods for Physics Students: Taylor Series Expansions and Approximations. Available at: + http://www.haverford.edu/physics/MathAppendices/Taylor_Series.pdf + + + + + + + Returns the sine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The sine of the angle . + + + + + Returns the cosine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The cosine of the angle . + + + + + Returns the hyperbolic sine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The hyperbolic sine of the angle . + + + + + Returns the hyperbolic cosine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The hyperbolic cosine of the angle . + + + + + Returns e raised to the specified power by evaluating a Taylor series. + + + A number specifying a power. + The number of terms to be evaluated. + + Euler's constant raised to the specified power . + + + + + Fourier Transform (for arbitrary size matrices). + + + + This fourier transform accepts arbitrary-length matrices and is not + restricted only to matrices that have dimensions which are powers of + two. It also provides results which are more equivalent with other + mathematical packages, such as MATLAB and Octave. + + + + + + 1-D Discrete Fourier Transform. + + + The data to transform.. + The transformation direction. + + + + + 2-D Discrete Fourier Transform. + + + The data to transform. + The transformation direction. + + + + + 1-D Fast Fourier Transform. + + + The data to transform.. + The transformation direction. + + + + + 1-D Fast Fourier Transform. + + + The real part of the complex numbers to transform. + The imaginary part of the complex numbers to transform. + The transformation direction. + + + + + 2-D Fast Fourier Transform. + + + The data to transform.. + The Transformation direction. + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, + storing the result back into the vector. The vector can have any length. + This is a wrapper function. + + + The real. + The imag. + + + + + Computes the inverse discrete Fourier transform (IDFT) of the given complex + vector, storing the result back into the vector. The vector can have any length. + This is a wrapper function. This transform does not perform scaling, so the + inverse is not a true inverse. + + + + + + Computes the inverse discrete Fourier transform (IDFT) of the given complex + vector, storing the result back into the vector. The vector can have any length. + This is a wrapper function. This transform does not perform scaling, so the + inverse is not a true inverse. + + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, storing + the result back into the vector. The vector's length must be a power of 2. Uses the + Cooley-Tukey decimation-in-time radix-2 algorithm. + + + Length is not a power of 2. + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, storing + the result back into the vector. The vector's length must be a power of 2. Uses the + Cooley-Tukey decimation-in-time radix-2 algorithm. + + + Length is not a power of 2. + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, storing + the result back into the vector. The vector can have any length. This requires the + convolution function, which in turn requires the radix-2 FFT function. Uses + Bluestein's chirp z-transform algorithm. + + + + + + Computes the circular convolution of the given real + vectors. All vectors must have the same length. + + + + + + Computes the circular convolution of the given complex + vectors. All vectors must have the same length. + + + + + + Computes the circular convolution of the given complex + vectors. All vectors must have the same length. + + + + + + Hartley Transformation. + + + + In mathematics, the Hartley transform is an integral transform closely related + to the Fourier transform, but which transforms real-valued functions to real- + valued functions. It was proposed as an alternative to the Fourier transform by + R. V. L. Hartley in 1942, and is one of many known Fourier-related transforms. + Compared to the Fourier transform, the Hartley transform has the advantages of + transforming real functions to real functions (as opposed to requiring complex + numbers) and of being its own inverse. + + + References: + + + Wikipedia contributors, "Hartley transform," Wikipedia, The Free Encyclopedia, + available at: http://en.wikipedia.org/w/index.php?title=Hartley_transform + + K. R. Castleman, Digital Image Processing. Chapter 13, p.289. + Prentice. Hall, 1998. + + Poularikas A. D. “The Hartley Transform”. The Handbook of Formulas and + Tables for Signal Processing. Ed. Alexander D. Poularikas, 1999. + + + + + + + Forward Hartley Transform. + + + + + + Forward Hartley Transform. + + + + + + Discrete Sine Transform + + + + + In mathematics, the discrete sine transform (DST) is a Fourier-related transform + similar to the discrete Fourier transform (DFT), but using a purely real matrix. It + is equivalent to the imaginary parts of a DFT of roughly twice the length, operating + on real data with odd symmetry (since the Fourier transform of a real and odd function + is imaginary and odd), where in some variants the input and/or output data are shifted + by half a sample. + + + References: + + + Wikipedia contributors, "Discrete sine transform," Wikipedia, The Free Encyclopedia, + available at: http://en.wikipedia.org/w/index.php?title=Discrete_sine_transform + + K. R. Castleman, Digital Image Processing. Chapter 13, p.288. + Prentice. Hall, 1998. + + + + + + + Forward Discrete Sine Transform. + + + + + + Inverse Discrete Sine Transform. + + + + + + Forward Discrete Sine Transform. + + + + + + Inverse Discrete Sine Transform. + + + + + + Discrete Cosine Transformation. + + + + + A discrete cosine transform (DCT) expresses a finite sequence of data points + in terms of a sum of cosine functions oscillating at different frequencies. + DCTs are important to numerous applications in science and engineering, from + lossy compression of audio (e.g. MP3) and images (e.g. JPEG) (where small + high-frequency components can be discarded), to spectral methods for the + numerical solution of partial differential equations. + + + The use of cosine rather than sine functions is critical in these applications: + for compression, it turns out that cosine functions are much more efficient, + whereas for differential equations the cosines express a particular choice of + boundary conditions. + + + References: + + + Wikipedia contributors, "Discrete sine transform," Wikipedia, The Free Encyclopedia, + available at: http://en.wikipedia.org/w/index.php?title=Discrete_sine_transform + + K. R. Castleman, Digital Image Processing. Chapter 13, p.288. + Prentice. Hall, 1998. + + + + + + + Forward Discrete Cosine Transform. + + + + + + Inverse Discrete Cosine Transform. + + + + + + Forward 2D Discrete Cosine Transform. + + + + + + Inverse 2D Discrete Cosine Transform. + + + + + + Determines the Generalized eigenvalues and eigenvectors of two real square matrices. + + + + A generalized eigenvalue problem is the problem of finding a vector v that + obeys A * v = λ * B * v where A and B are matrices. If v + obeys this equation, with some λ, then we call v the generalized eigenvector + of A and B, and λ is called the generalized eigenvalue of A + and B which corresponds to the generalized eigenvector v. The possible + values of λ, must obey the identity det(A - λ*B) = 0. + + Part of this code has been adapted from the original EISPACK routines in Fortran. + + + References: + + + + http://en.wikipedia.org/wiki/Generalized_eigenvalue_problem#Generalized_eigenvalue_problem + + + + http://www.netlib.org/eispack/ + + + + + + + // Suppose we have the following + // matrices A and B shown below: + + double[,] A = + { + { 1, 2, 3}, + { 8, 1, 4}, + { 3, 2, 3} + }; + + double[,] B = + { + { 5, 1, 1}, + { 1, 5, 1}, + { 1, 1, 5} + }; + + // Now, suppose we would like to find values for λ + // that are solutions for the equation det(A - λB) = 0 + + // For this, we can use a Generalized Eigendecomposition + var gevd = new GeneralizedEigenvalueDecomposition(A, B); + + // Now, if A and B are Hermitian and B is positive + // -definite, then the eigenvalues λ will be real: + double[] lambda = gevd.RealEigenvalues; + + // Lets check if they are indeed a solution: + for (int i = 0; i < lambda.Length; i++) + { + // Compute the determinant equation show above + double det = Matrix.Determinant(A.Subtract(lambda[i].Multiply(B))); // almost zero + } + + + + + Constructs a new generalized eigenvalue decomposition. + The first matrix of the (A,B) matrix pencil. + The second matrix of the (A,B) matrix pencil. + + + + Adaptation of the original Fortran QZHES routine from EISPACK. + + + This subroutine is the first step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. + + This subroutine accepts a pair of real general matrices and + reduces one of them to upper Hessenberg form and the other + to upper triangular form using orthogonal transformations. + it is usually followed by qzit, qzval and, possibly, qzvec. + + For the full documentation, please check the original function. + + + + + Adaptation of the original Fortran QZIT routine from EISPACK. + + + This subroutine is the second step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart, + as modified in technical note nasa tn d-7305(1973) by ward. + + This subroutine accepts a pair of real matrices, one of them + in upper Hessenberg form and the other in upper triangular form. + it reduces the Hessenberg matrix to quasi-triangular form using + orthogonal transformations while maintaining the triangular form + of the other matrix. it is usually preceded by qzhes and + followed by qzval and, possibly, qzvec. + + For the full documentation, please check the original function. + + + + + Adaptation of the original Fortran QZVAL routine from EISPACK. + + + This subroutine is the third step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. + + This subroutine accepts a pair of real matrices, one of them + in quasi-triangular form and the other in upper triangular form. + it reduces the quasi-triangular matrix further, so that any + remaining 2-by-2 blocks correspond to pairs of complex + Eigenvalues, and returns quantities whose ratios give the + generalized eigenvalues. it is usually preceded by qzhes + and qzit and may be followed by qzvec. + + For the full documentation, please check the original function. + + + + + Adaptation of the original Fortran QZVEC routine from EISPACK. + + + This subroutine is the optional fourth step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. + + This subroutine accepts a pair of real matrices, one of them in + quasi-triangular form (in which each 2-by-2 block corresponds to + a pair of complex eigenvalues) and the other in upper triangular + form. It computes the eigenvectors of the triangular problem and + transforms the results back to the original coordinate system. + it is usually preceded by qzhes, qzit, and qzval. + + For the full documentation, please check the original function. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the alpha values. + + + Returns the imaginary parts of the alpha values. + + + Returns the beta values. + + + + Returns true if matrix B is singular. + + + This method checks if any of the generated betas is zero. It + does not says that the problem is singular, but only that one + of the matrices of the pencil (A,B) is singular. + + + + + Returns true if the eigenvalue problem is degenerate (ill-posed). + + + + Returns the real parts of the eigenvalues. + + The eigenvalues are computed using the ratio alpha[i]/beta[i], + which can lead to valid, but infinite eigenvalues. + + + + Returns the imaginary parts of the eigenvalues. + + The eigenvalues are computed using the ratio alpha[i]/beta[i], + which can lead to valid, but infinite eigenvalues. + + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. The presented algorithm + only checks the upper triangular part of the matrix given as parameter and assumes + it is symmetric. If the matrix is not positive definite, the constructor returns a + partial decomposition and sets two internal variables that can be queried using the + properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + + Constructs a new Cholesky Decomposition. + + + + The symmetric matrix, given in upper triangular form, to be decomposed. + + True to perform a square-root free LDLt decomposition, false otherwise. + + True to perform the decomposition in place, storing the factorization in the + lower triangular part of the given matrix. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + The array to hold the result of the + computation. Should be of same length as the the diagonal + of the original matrix. + + + + + Computes the trace of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is positive definite. + + + + + Gets a value indicating whether the LDLt factorization + has been computed successfully or if it is undefined. + + + + true if the factorization is not defined; otherwise, false. + + + + + + Returns the left (lower) triangular factor + L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal + elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal + elements in a LDLt decomposition. + + + + + + Returns the determinant of + the decomposed matrix. + + + + + + If the matrix is positive-definite, returns the + log-determinant of the decomposed matrix. + + + + + + Gets a value indicating whether the decomposed + matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. The presented algorithm + only checks the upper triangular part of the matrix given as parameter and assumes + it is symmetric. If the matrix is not positive definite, the constructor returns a + partial decomposition and sets two internal variables that can be queried using the + properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + + Constructs a new Cholesky Decomposition. + + + + The symmetric matrix, given in upper triangular form, to be decomposed. + + True to perform a square-root free LDLt decomposition, false otherwise. + + True to perform the decomposition in place, storing the factorization in the + lower triangular part of the given matrix. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + The array to hold the result of the + computation. Should be of same length as the the diagonal + of the original matrix. + + + + + Computes the trace of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is positive definite. + + + + + Gets a value indicating whether the LDLt factorization + has been computed successfully or if it is undefined. + + + + true if the factorization is not defined; otherwise, false. + + + + + + Returns the left (lower) triangular factor + L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal + elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal + elements in a LDLt decomposition. + + + + + + Returns the determinant of + the decomposed matrix. + + + + + + If the matrix is positive-definite, returns the + log-determinant of the decomposed matrix. + + + + + + Gets a value indicating whether the decomposed + matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. The presented algorithm + only checks the upper triangular part of the matrix given as parameter and assumes + it is symmetric. If the matrix is not positive definite, the constructor returns a + partial decomposition and sets two internal variables that can be queried using the + properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + + Constructs a new Cholesky Decomposition. + + + + The symmetric matrix, given in upper triangular form, to be decomposed. + + True to perform a square-root free LDLt decomposition, false otherwise. + + True to perform the decomposition in place, storing the factorization in the + lower triangular part of the given matrix. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + The array to hold the result of the + computation. Should be of same length as the the diagonal + of the original matrix. + + + + + Computes the trace of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is positive definite. + + + + + Gets a value indicating whether the LDLt factorization + has been computed successfully or if it is undefined. + + + + true if the factorization is not defined; otherwise, false. + + + + + + Returns the left (lower) triangular factor + L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal + elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal + elements in a LDLt decomposition. + + + + + + Returns the determinant of + the decomposed matrix. + + + + + + If the matrix is positive-definite, returns the + log-determinant of the decomposed matrix. + + + + + + Gets a value indicating whether the decomposed + matrix is non-singular (i.e. invertible). + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + Please see remarks for important information regarding + numerical stability when using this method. + + + + Please keep in mind this is not one of the most reliable methods + for checking singularity of a matrix. For a more reliable method, + please use or the + . + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + Please see remarks for important information regarding + numerical stability when using this method. + + + + Please keep in mind this is not one of the most reliable methods + for checking singularity of a matrix. For a more reliable method, + please use or the + . + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + Please see remarks for important information regarding + numerical stability when using this method. + + + + Please keep in mind this is not one of the most reliable methods + for checking singularity of a matrix. For a more reliable method, + please use or the + . + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + Nonnegative Matrix Factorization. + + + + + Non-negative matrix factorization (NMF) is a group of algorithms in multivariate + analysis and linear algebra where a matrix X is factorized into (usually) + two matrices, W and H. The non-negative factorization enforces the + constraint that the factors W and H must be non-negative, i.e., all + elements must be equal to or greater than zero. The factorization is not unique. + + + References: + + + + http://en.wikipedia.org/wiki/Non-negative_matrix_factorization + + + Lee, D., Seung, H., 1999. Learning the Parts of Objects by Non-Negative + Matrix Factorization. Nature 401, 788–791. + + Michael W. Berry, et al. (June 2006). Algorithms and Applications for + Approximate Nonnegative Matrix Factorization. + + + + + + + + Initializes a new instance of the NMF algorithm + + + The input data matrix (must be positive). + The reduced dimension. + + + + + Initializes a new instance of the NMF algorithm + + + The input data matrix (must be positive). + The reduced dimension. + The number of iterations to perform. + + + + + Performs NMF using the multiplicative method + + + The maximum number of iterations + + + At the end of the computation H contains the projected data + and W contains the weights. The multiplicative method is the + simplest factorization method. + + + + + + Gets the nonnegative factor matrix W. + + + + + + Gets the nonnegative factor matrix H. + + + + + + Static class Distance. Defines a set of extension methods defining distance measures. + + + + + + Gets the Bray Curtis distance between two points. + + A point in space. + A point in space. + The Bray Curtis distance between x and y. + + + + Gets the Canberra distance between two points. + + A point in space. + A point in space. + The Canberra distance between x and y. + + + + Gets the Chessboard distance between two points. + + A point in space. + A point in space. + The Chessboard distance between x and y. + + + + Gets the Correlation distance between two points. + + A point in space. + A point in space. + The Correlation distance between x and y. + + + + Gets the Cosine distance between two points. + + A point in space. + A point in space. + The Cosine distance between x and y. + + + + Gets the Square Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The inverse of the covariance matrix of the distribution for the two points x and y. + + + The Square Mahalanobis distance between x and y. + + + + + Gets the Square Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The of the covariance + matrix of the distribution for the two points x and y. + + + The Square Mahalanobis distance between x and y. + + + + + Gets the Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The inverse of the covariance matrix of the distribution for the two points x and y. + + + The Mahalanobis distance between x and y. + + + + + Gets the Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The of the covariance + matrix of the distribution for the two points x and y. + + + The Mahalanobis distance between x and y. + + + + + Gets the Manhattan distance between two points. + + + A point in space. + A point in space. + + The Manhattan distance between x and y. + + + + + Gets the Manhattan distance between two points. + + + A point in space. + A point in space. + + The Manhattan distance between x and y. + + + + + Gets the Minkowski distance between two points. + + + A point in space. + A point in space. + Factor. + + The Minkowski distance between x and y. + + + + + Gets the Chebyshev distance between two points. + + + A point in space. + A point in space. + + The Chebyshev distance between x and y. + + + + + Gets the Square Euclidean distance between two points. + + + A point in space. + A point in space. + + The Square Euclidean distance between x and y. + + + + + Gets the Square Euclidean distance between two points. + + + The first coordinate of first point in space. + The second coordinate of first point in space. + The first coordinate of second point in space. + The second coordinate of second point in space. + + The Square Euclidean distance between x and y. + + + + + Gets the Euclidean distance between two points. + + + A point in space. + A point in space. + + The Euclidean distance between x and y. + + + + + Gets the Euclidean distance between two points. + + + The first coordinate of first point in space. + The second coordinate of first point in space. + The first coordinate of second point in space. + The second coordinate of second point in space. + + The Euclidean distance between x and y. + + + + + Gets the Modulo-m distance between two integers a and b. + + + + + + Gets the Modulo-m distance between two real values a and b. + + + + + + Bhattacharyya distance between two normalized histograms. + + + A normalized histogram. + A normalized histogram. + The Bhattacharyya distance between the two histograms. + + + + + Hellinger distance between two normalized histograms. + + + A normalized histogram. + A normalized histogram. + The Hellinger distance between the two histograms. + + + + + Bhattacharyya distance between two matrices. + + + The first matrix x. + The first matrix y. + + The Bhattacharyya distance between the two matrices. + + + + + Bhattacharyya distance between two Gaussian distributions. + + + Mean for the first distribution. + Covariance matrix for the first distribution. + Mean for the second distribution. + Covariance matrix for the second distribution. + + The Bhattacharyya distance between the two distributions. + + + + + Bhattacharyya distance between two Gaussian distributions. + + + Mean for the first distribution. + Covariance matrix for the first distribution. + Mean for the second distribution. + Covariance matrix for the second distribution. + The logarithm of the determinant for + the covariance matrix of the first distribution. + The logarithm of the determinant for + the covariance matrix of the second distribution. + + The Bhattacharyya distance between the two distributions. + + + + + Levenshtein distance between two strings. + + + The first string x. + The first string y. + + + Based on the standard implementation available on Wikibooks: + http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance + + + + + + + + Levenshtein distance between two strings. + + + The first string x. + The first string y. + + + Based on the standard implementation available on Wikibooks: + http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance + + + + + + + + Hamming distance between two Boolean vectors. + + + + + + Hamming distance between two double vectors + containing only 0 (false) or 1 (true) values. + + + + + + Bitwise hamming distance between two sequences of bytes. + + + + + + Bitwise hamming distance between two bit arrays. + + + + + + Checks whether a function is a real metric distance, i.e. respects + the triangle inequality. Please note that a function can still pass + this test and not respect the triangle inequality. + + + + + + Checks whether a function is a real metric distance, i.e. respects + the triangle inequality. Please note that a function can still pass + this test and not respect the triangle inequality. + + + + + + Programming environment for Octave. + + + + + This class implements a Domain Specific Language (DSL) for + C# which is remarkably similar to Octave. Please take a loook + on what is possible to do using this class in the examples + section. + + + To use this class, inherit from . + After this step, all code written inside your child class will + be able to use the syntax below: + + + + + Using the mat and ret keywords, it is possible + to replicate most of the Octave environment inside plain C# + code. The example below demonstrates how to compute the + Singular Value Decomposition of a matrix, which in turn was + generated using . + + + // Declare local matrices + mat u = _, s = _, v = _; + + // Compute a new mat + mat M = magic(3) * 5; + + // Compute the SVD + ret [u, s, v] = svd(M); + + // Write the matrix + string str = u; + + /* + 0.577350269189626 -0.707106781186548 0.408248290463863 + u = 0.577350269189626 -1.48007149071427E-16 -0.816496580927726 + 0.577350269189626 0.707106781186548 0.408248290463863 + */ + + + + It is also possible to ignore certain parameters by + providing a wildcard in the return structure: + + + // Declare local matrices + mat u = _, v = _; + + // Compute a new mat + mat M = magic(3) * 5; + + // Compute the SVD + ret [u, _, v] = svd(M); // the second argument is omitted + + + + Standard matrix operations are also supported: + + + + mat I = eye(3); // 3x3 identity matrix + + mat A = I * 2; // matrix-scalar multiplication + + Console.WriteLine(A); + // + // 2 0 0 + // A = 0 2 0 + // 0 0 2 + + mat B = ones(3, 6); // 3x6 unit matrix + + Console.WriteLine(B); + // + // 1 1 1 1 1 1 + // B = 1 1 1 1 1 1 + // 1 1 1 1 1 1 + + mat C = new double[,] + { + { 2, 2, 2, 2, 2, 2 }, + { 2, 0, 0, 0, 0, 2 }, + { 2, 2, 2, 2, 2, 2 }, + }; + + mat D = A * B - C; + + Console.WriteLine(D); + // + // 0 0 0 0 0 0 + // C = 0 2 2 2 2 0 + // 0 0 0 0 0 0 + + + + + + + + Pi. + + + Machine epsilon. + + + Creates an identity matrix. + + + Inverts a matrix. + + + Inverts a matrix. + + + Creates a unit matrix. + + + Creates a unit matrix. + + + Creates a unit matrix. + + + Creates a unit matrix. + + + Random vector. + + + Size of a matrix. + + + Rank of a matrix. + + + Matrix sum vector. + + + Sum of vector elements. + + + Product of vector elements. + + + Matrix sum vector. + + + Rounding. + + + Ceiling. + + + Flooring. + + + Rounding. + + + Ceiling. + + + Flooring. + + + Rounding. + + + Ceiling. + + + Flooring. + + + Sin. + + + Cos. + + + Exponential value. + + + Absolute value. + + + Logarithm. + + + Sin. + + + Cos. + + + Exponential value. + + + Absolute value. + + + Logarithm. + + + Sin. + + + Cos. + + + Exponential value. + + + Absolute value. + + + Logarithm. + + + Creates a magic square matrix. + + + Singular value decomposition. + + + QR decomposition. + + + QR decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Cholesky decomposition. + + + + Return setter keyword. + + + + + + Initializes a new instance of the class. + + + + + + Whether to use octave indexing or not. + + + + + + Matrix placeholder. + + + + + + Return definition operator. + + + + + + Can be used to set output arguments + to the output of another function. + + + + + + Matrix definition operator. + + + + + + Inner matrix object. + + + + + + Initializes a new instance of the class. + + + + + + Multiplication operator + + + + + + Multiplication operator + + + + + + Multiplication operator + + + + + + Addition operator + + + + + + Addition operator + + + + + + Addition operator + + + + + + Subtraction operator + + + + + + Subtraction operator + + + + + + Subtraction operator + + + + + + Equality operator. + + + + + + Inequality operator. + + + + + + Implicit conversion from double[,]. + + + + + + Implicit conversion to double[,]. + + + + + + Implicit conversion to string. + + + + + + Implicit conversion from list. + + + + + + Determines whether the specified is equal to this instance. + + + + + + Returns a hash code for this instance. + + + + + + Transpose operator. + + + + + + Common interface for Matrix format providers. + + + + + A string denoting the start of the matrix to be used in formatting. + + + A string denoting the end of the matrix to be used in formatting. + + + A string denoting the start of a matrix row to be used in formatting. + + + A string denoting the end of a matrix row to be used in formatting. + + + A string denoting the start of a matrix column to be used in formatting. + + + A string denoting the end of a matrix column to be used in formatting. + + + A string containing the row delimiter for a matrix to be used in formatting. + + + A string containing the column delimiter for a matrix to be used in formatting. + + + A string denoting the start of the matrix to be used in parsing. + + + A string denoting the end of the matrix to be used in parsing. + + + A string denoting the start of a matrix row to be used in parsing. + + + A string denoting the end of a matrix row to be used in parsing. + + + A string denoting the start of a matrix column to be used in parsing. + + + A string denoting the end of a matrix column to be used in parsing. + + + A string containing the row delimiter for a matrix to be used in parsing. + + + A string containing the column delimiter for a matrix to be used in parsing. + + + + Gets the culture specific formatting information + to be used during parsing or formatting. + + + + + Base class for IMatrixFormatProvider implementers. + + + + + + Initializes a new instance of the class. + + + The inner format provider. + + + + + Returns an object that provides formatting services for the specified + type. Currently, only is supported. + + + An object that specifies the type of format + object to return. + + An instance of the object specified by formatType, if the + IFormatProvider implementation + can supply that type of object; otherwise, null. + + + + + A string denoting the start of the matrix to be used in formatting. + + + + + A string denoting the end of the matrix to be used in formatting. + + + + + A string denoting the start of a matrix row to be used in formatting. + + + + + A string denoting the end of a matrix row to be used in formatting. + + + + + A string denoting the start of a matrix column to be used in formatting. + + + + + A string denoting the end of a matrix column to be used in formatting. + + + + + A string containing the row delimiter for a matrix to be used in formatting. + + + + + A string containing the column delimiter for a matrix to be used in formatting. + + + + + A string denoting the start of the matrix to be used in parsing. + + + + + A string denoting the end of the matrix to be used in parsing. + + + + + A string denoting the start of a matrix row to be used in parsing. + + + + + A string denoting the end of a matrix row to be used in parsing. + + + + + A string denoting the start of a matrix column to be used in parsing. + + + + + A string denoting the end of a matrix column to be used in parsing. + + + + + A string containing the row delimiter for a matrix to be used in parsing. + + + + + A string containing the column delimiter for a matrix to be used in parsing. + + + + + Gets the culture specific formatting information + to be used during parsing or formatting. + + + + + + Format provider for the matrix format used by Octave. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(OctaveArrayFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "[ 1, 2, 3, 4]" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "[ 1, 2, 3, 4]"; + + // Convert the string representation to an actual number array: + double[] array = Matrix.Parse(str, OctaveArrayFormatProvider.InvariantCulture); + + // array will now contain the actual number + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the default matrix representation, where each row + is separated by a new line, and columns are separated by spaces. + + + + This class can be used to convert to and from C# + arrays and their string representation. Please + see the example for details. + + + + + Converting from an array matrix to a + string representation: + + + // Declare a number array + double[] x = { 5, 6, 7, 8 }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(DefaultArrayFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "5, 6, 7, 8" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "5, 6, 7, 8"; + + // Convert the string representation to an actual number array: + double[] array = Matrix.Parse(str, DefaultArrayFormatProvider.InvariantCulture); + + // array will now contain the actual number + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the matrix representation used in C# multi-dimensional arrays. + + + + This class can be used to convert to and from C# + arrays and their string representation. Please + see the example for details. + + + + + Converting from an array to a string representation: + + + // Declare a number array + double[] x = { 1, 2, 3, 4 }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(CSharpArrayFormatProvider.CurrentCulture); + + // the final result will be + "double[] x = { 1, 2, 3, 4 }" + + + + Converting from strings to actual arrays: + + + // Declare an input string + string str = "double[] { 1, 2, 3, 4 }"; + + // Convert the string representation to an actual number array: + double[] array = Matrix.Parse(str, CSharpArrayFormatProvider.InvariantCulture); + + // array will now contain the actual number + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the matrix representation used in C# multi-dimensional arrays. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(CSharpMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "double[,] x = " + + "{ " + + " { 1, 2, 3, 4 }, " + + " { 5, 6, 7, 8 }, " + + "}" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "double[,] x = " + + "{ " + + " { 1, 2, 3, 4 }, " + + " { 5, 6, 7, 8 }, " + + "}"; + + // Convert the string representation to an actual number array: + double[,] matrix = Matrix.Parse(str, CSharpMatrixFormatProvider.InvariantCulture); + + // matrix will now contain the actual multidimensional + // matrix representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the matrix representation used in C# jagged arrays. + + + + This class can be used to convert to and from C# + arrays and their string representation. Please + see the example for details. + + + + + Converting from a jagged matrix to a string representation: + + + // Declare a number array + double[][] x = + { + new double[] { 1, 2, 3, 4 }, + new double[] { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(CSharpJaggedMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "double[][] x = " + + "{ " + + " new double[] { 1, 2, 3, 4 }, " + + " new double[] { 5, 6, 7, 8 }, " + + "}" + + + + Converting from strings to actual arrays: + + + // Declare an input string + string str = "double[][] x = " + + "{ " + + " new double[] { 1, 2, 3, 4 }, " + + " new double[] { 5, 6, 7, 8 }, " + + "}"; + + // Convert the string representation to an actual number array: + double[][] array = Matrix.Parse(str, CSharpJaggedMatrixFormatProvider.InvariantCulture); + + // array will now contain the actual jagged + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the default matrix representation, where each row + is separated by a new line, and columns are separated by spaces. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(DefaultMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + @"1, 2, 3, 4 + 5, 6, 7, 8"; + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = @"1, 2, 3, 4 + "5, 6, 7, 8"; + + // Convert the string representation to an actual number array: + double[,] matrix = Matrix.Parse(str, DefaultMatrixFormatProvider.InvariantCulture); + + // matrix will now contain the actual multidimensional + // matrix representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Defines how matrices are formatted and displayed, depending on the + chosen format representation. + + + + + + Converts the value of a specified object to an equivalent string + representation using specified formatting information. + + A format string containing formatting specifications. + An object to format. + + An object that supplies + format information about the current instance. + + The string representation of the value of , + formatted as specified by and + . + + + + + + Converts a jagged or multidimensional array into a System.String representation. + + + + + + Parses a format string containing the format options for the matrix representation. + + + + + Handles formatting for objects other than matrices. + + + + + Converts a matrix represented in a System.String into a jagged array. + + + + + + Converts a matrix represented in a System.String into a multi-dimensional array. + + + + + + Format provider for the matrix format used by Octave. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(OctaveMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "[ 1, 2, 3, 4; 5, 6, 7, 8 ]" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "[ 1, 2, 3, 4; 5, 6, 7, 8 ]"; + + // Convert the string representation to an actual number array: + double[,] matrix = Matrix.Parse(str, OctaveMatrixFormatProvider.InvariantCulture); + + // matrix will now contain the actual multidimensional + // matrix representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Normal distribution functions. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + George Marsaglia, Evaluating the Normal Distribution, 2004. + Available in: http://www.jstatsoft.org/v11/a05/paper + + + + + + The following example shows the normal usages for the Normal functions: + + + + // Compute standard precision functions + double phi = Normal.Function(0.42); // 0.66275727315175048 + double phic = Normal.Complemented(0.42); // 0.33724272684824952 + double inv = Normal.Inverse(0.42); // -0.20189347914185085 + + // Compute at the limits + double phi = Normal.Function(16.6); // 1.0 + double phic = Normal.Complemented(16.6); // 3.4845465199504055E-62 + + + + + + + + Normal cumulative distribution function. + + + + The area under the Gaussian p.d.f. integrated + from minus infinity to the given value. + + + + + + Complemented cumulative distribution function. + + + + The area under the Gaussian p.d.f. integrated + from the given value to positive infinity. + + + + + + Normal (Gaussian) inverse cumulative distribution function. + + + + + For small arguments 0 < y < exp(-2), the program computes z = + sqrt( -2.0 * log(y) ); then the approximation is x = z - log(z)/z - + (1/z) P(1/z) / Q(1/z). + + There are two rational functions P/Q, one for 0 < y < exp(-32) and + the other for y up to exp(-2). For larger arguments, w = y - 0.5, + and x/sqrt(2pi) = w + w^3 * R(w^2)/S(w^2)). + + + + Returns the value, x, for which the area under the Normal (Gaussian) + probability density function (integrated from minus infinity to x) is + equal to the argument y (assumes mean is zero, variance is one). + + + + + + High-accuracy Normal cumulative distribution function. + + + + + The following formula provide probabilities with an absolute error + less than 8e-16. + + References: + - George Marsaglia, Evaluating the Normal Distribution, 2004. + Available in: http://www.jstatsoft.org/v11/a05/paper + + + + + + High-accuracy Complementary normal distribution function. + + + + + This function uses 9 tabled values to provide tail values of the + normal distribution, also known as complementary Phi, with an + absolute error of 1e-14 ~ 1e-16. + + References: + - George Marsaglia, Evaluating the Normal Distribution, 2004. + Available in: http://www.jstatsoft.org/v11/a05/paper + + + + The area under the Gaussian p.d.f. integrated + from the given value to positive infinity. + + + + + + Bivariate normal cumulative distribution function. + + + The value of the first variate. + The value of the second variate. + The correlation coefficient between x and y. This can be computed + from a covariance matrix C as rho = C_12 / (sqrt(C_11) * sqrt(C_22)). + + + + + + Complemented bivariate normal cumulative distribution function. + + + The value of the first variate. + The value of the second variate. + The correlation coefficient between x and y. This can be computed + from a covariance matrix C as rho = C_12 / (sqrt(C_11) * sqrt(C_22)). + + + + + + A function for computing bivariate normal probabilities. + BVND calculates the probability that X > DH and Y > DK. + + + + + This method is based on the work done by Alan Genz, Department of + Mathematics, Washington State University. Pullman, WA 99164-3113 + Email: alangenz@wsu.edu. This work was shared under a 3-clause BSD + license. Please see source file for more details and the actual + license text. + + + This function is based on the method described by Drezner, Z and G.O. + Wesolowsky, (1989), On the computation of the bivariate normal integral, + Journal of Statist. Comput. Simul. 35, pp. 101-107, with major modifications + for double precision, and for |R| close to 1. + + + + + + First derivative of Normal cumulative + distribution function, also known as the Normal density + function. + + + + + + Log of the first derivative of Normal cumulative + distribution function, also known as the Normal density function. + + + + + + Convex Hull Defects Extractor. + + + + + + Initializes a new instance of the class. + + + The minimum depth which characterizes a convexity defect. + + + + + Finds the convexity defects in a contour given a convex hull. + + + The contour. + The convex hull of the contour. + A list of s containing each of the + defects found considering the convex hull of the contour. + + + + + Gets or sets the minimum depth which characterizes a convexity defect. + + + The minimum depth. + + + + + Convexity defect. + + + + + + Initializes a new instance of the class. + + + The most distant point from the hull. + The starting index of the defect in the contour. + The ending index of the defect in the contour. + The depth of the defect (highest distance from the hull to + any of the contour points). + + + + + Gets or sets the starting index of the defect in the contour. + + + + + + Gets or sets the ending index of the defect in the contour. + + + + + + Gets or sets the most distant point from the hull characterizing the defect. + + + The point. + + + + + Gets or sets the depth of the defect (highest distance + from the hull to any of the points in the contour). + + + + + + K-curvatures algorithm for local maximum contour detection. + + + + + + Initializes a new instance of the class. + + The number K of previous and posterior + points to consider when find local extremum points. + The theta angle range (in + degrees) used to define extremum points.. + + + + Finds local extremum points in the contour. + + A list of + integer points defining the contour. + + + + + Gets or sets the number K of previous and posterior + points to consider when find local extremum points. + + + + + Gets or sets the theta angle range (in + degrees) used to define extremum points. + + + + + Gets or sets the suppression radius to + use during non-minimum suppression. + + + + + Reduced row Echelon form + + + + + + Reduces a matrix to reduced row Echelon form. + + + The matrix to be reduced. + + Pass to perform the reduction in place. The matrix + will be destroyed in the process, resulting in less + memory consumption. + + + + + Gets the pivot indicating the position + of the original rows before the swap. + + + + + + Gets the matrix in row reduced Echelon form. + + + + + Gets the number of free variables (linear + dependent rows) in the given matrix. + + + + + Static class ComplexExtensions. Defines a set of extension methods + that operates mainly on multidimensional arrays and vectors of + AForge.NET's data type. + + + + + + Computes the absolute value of an array of complex numbers. + + + + + + Computes the sum of an array of complex numbers. + + + + + + Elementwise multiplication of two complex vectors. + + + + + + Gets the magnitude of every complex number in an array. + + + + + + Gets the magnitude of every complex number in a matrix. + + + + + + Gets the phase of every complex number in an array. + + + + + + Returns the real vector part of the complex vector c. + + + A vector of complex numbers. + + A vector of scalars with the real part of the complex numbers. + + + + + Returns the real matrix part of the complex matrix c. + + + A matrix of complex numbers. + + A matrix of scalars with the real part of the complex numbers. + + + + + Returns the imaginary vector part of the complex vector c. + + + A vector of complex numbers. + + A vector of scalars with the imaginary part of the complex numbers. + + + + + Returns the imaginary matrix part of the complex matrix c. + + A matrix of complex numbers. + A matrix of scalars with the imaginary part of the complex numbers. + + + + Converts a complex number to a matrix of scalar values + in which the first column contains the real values and + the second column contains the imaginary values. + + An array of complex numbers. + + + + Converts a vector of real numbers to complex numbers. + + + The real numbers to be converted. + + + A vector of complex number with the given + real numbers as their real components. + + + + + + Combines a vector of real and a vector of + imaginary numbers to form complex numbers. + + + The real part of the complex numbers. + The imaginary part of the complex numbers + + + A vector of complex number with the given + real numbers as their real components and + imaginary numbers as their imaginary parts. + + + + + + Gets the range of the magnitude values in a complex number vector. + + + A complex number vector. + The range of magnitude values in the complex vector. + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + Compares two vectors for equality, considering an acceptance threshold. + + + + + Gets the squared magnitude of a complex number. + + + + + + Static class Norm. Defines a set of extension methods defining norms measures. + + + + + + Returns the maximum column sum of the given matrix. + + + + + + Returns the maximum column sum of the given matrix. + + + + + + Returns the maximum singular value of the given matrix. + + + + + + Returns the maximum singular value of the given matrix. + + + + + + Gets the square root of the sum of squares for all elements in a matrix. + + + + + + Gets the square root of the sum of squares for all elements in a matrix. + + + + + + Gets the Squared Euclidean norm for a vector. + + + + + + Gets the Squared Euclidean norm for a vector. + + + + + + Gets the Euclidean norm for a vector. + + + + + + Gets the Euclidean norm for a vector. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Augmented Lagrangian method for constrained non-linear optimization. + + + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, http://ab-initio.mit.edu/nlopt + + E. G. Birgin and J. M. Martinez, "Improving ultimate convergence of an augmented Lagrangian + method," Optimization Methods and Software vol. 23, no. 2, p. 177-195 (2008). + + + + + + + In this framework, it is possible to state a non-linear programming problem + using either symbolic processing or vector-valued functions. The following + example demonstrates the former. + + + // Suppose we would like to minimize the following function: + // + // f(x,y) = min 100(y-x²)²+(1-x)² + // + // Subject to the constraints + // + // x >= 0 (x must be positive) + // y >= 0 (y must be positive) + // + + // In this example we will be using some symbolic processing. + // The following variables could be initialized to any value. + + double x = 0, y = 0; + + + // First, we create our objective function + var f = new NonlinearObjectiveFunction( + + // This is the objective function: f(x,y) = min 100(y-x²)²+(1-x)² + function: () => 100 * Math.Pow(y - x * x, 2) + Math.Pow(1 - x, 2), + + // The gradient vector: + gradient: () => new[] + { + 2 * (200 * Math.Pow(x, 3) - 200 * x * y + x - 1), // df/dx = 2(200x³-200xy+x-1) + 200 * (y - x*x) // df/dy = 200(y-x²) + } + + ); + + + // Now we can start stating the constraints + var constraints = new List<NonlinearConstraint>(); + + // Add the non-negativity constraint for x + constraints.Add(new NonlinearConstraint(f, + + // 1st constraint: x should be greater than or equal to 0 + function: () => x, shouldBe: ConstraintType.GreaterThanOrEqualTo, value: 0, + + gradient: () => new[] { 1.0, 0.0 } + )); + + // Add the non-negativity constraint for y + constraints.Add(new NonlinearConstraint(f, + + // 2nd constraint: y should be greater than or equal to 0 + function: () => y, shouldBe: ConstraintType.GreaterThanOrEqualTo, value: 0, + + gradient: () => new[] { 0.0, 1.0 } + )); + + + // Finally, we create the non-linear programming solver + var solver = new AugmentedLagrangianSolver(2, constraints); + + // And attempt to solve the problem + double minValue = solver.Minimize(f); + + + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The number of free parameters in the optimization problem. + + The s to which the solution must be subjected. + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The objective function to be optimized. + + The s to which the solution must be subjected. + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The unconstrained + optimization method used internally to solve the dual of this optimization + problem. + The objective function to be optimized. + + The s to which the solution must be subjected. + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The unconstrained + optimization method used internally to solve the dual of this optimization + problem. + + The s to which the solution must be subjected. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets the number of iterations performed in the + last call to the or + methods. + + + + The number of iterations performed + in the previous optimization. + + + + + Gets the number of function evaluations performed + in the last call to the or + methods. + + + + The number of evaluations performed + in the previous optimization. + + + + + Gets or sets the maximum number of evaluations + to be performed during optimization. Default + is 0 (evaluate until convergence). + + + + + + Gets the inner dual problem optimization algorithm. + + + + + + Constraint with only quadratic terms. + + + + + + Constraint with only linear terms. + + + + + + Gets how much the constraint is being violated. + + + The function point. + + + How much the constraint is being violated at the given point. Positive + value means the constraint is not being violated with the returned slack, + while a negative value means the constraint is being violated by the returned + amount. + + + + + + Gets whether this constraint is being violated + (within the current tolerance threshold). + + + The function point. + + True if the constraint is being violated, false otherwise. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the + constraint equation. + How the left hand side of the constraint should be + compared to the given . + The right hand side of the constraint equation. Default is 0. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the + constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be + compared to the given . + The right hand side of the constraint equation. Default is 0. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the constraint equation. + How the left hand side of the constraint should be compared to + the given . Default is . + The right hand side of the constraint equation. Default is 0. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A boolean lambda expression expressing the constraint. Please + see examples for details. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A boolean lambda expression expressing the constraint. Please + see examples for details. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the constraint. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the + constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation.. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the + constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be + compared to the given . + The right hand side of the constraint equation. Default is 0. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the + constraint equation. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be compared to the given . + The right hand side of the constraint equation. Default is 0. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be compared to the given . + The right hand side of the constraint equation. Default is 0. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Creates an empty nonlinear constraint. + + + + + + Creates a nonlinear constraint. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the number of variables in the constraint. + + + + + + Gets the left hand side of + the constraint equation. + + + + + + Gets the gradient of the left hand + side of the constraint equation. + + + + + + Gets the type of the constraint. + + + + + + Gets the value in the right hand side of + the constraint equation. Default is 0. + + + + + + Gets the violation tolerance for the constraint. Equality + constraints should set this to a small positive value. + Default is 1e-8. + + + + + + Constructs a new quadratic constraint in the form x'Ax + x'b. + + + The objective function to which this constraint refers. + The matrix of A quadratic terms. + The vector b of linear terms. + How the left hand side of the constraint should be compared to + the given . + The right hand side of the constraint equation. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 0. + + + + + Gets the matrix of A quadratic terms + for the constraint x'Ax + x'b. + + + + + + Gets the vector b of linear terms + for the constraint x'Ax + x'b. + + + + + + Quadratic objective function. + + + + + + Common interface for specifying objective functions. + + + + + + Gets input variable's labels for the function. + + + + + + Gets the index of each input variable in the function. + + + + + + Gets the number of input variables for the function. + + + + + + Gets the objective function. + + + + + + Initializes a new instance of the class. + + + + + + Creates a new objective function specified through a string. + + + The number of parameters in the . + A lambda expression defining the objective + function. + + + + + Creates a new objective function specified through a string. + + + The number of parameters in the . + A lambda expression defining the objective + function. + A lambda expression defining the gradient + of the objective function. + + + + + Gets the name of each input variable. + + + + + + Gets the index of each input variable in the function. + + + + + + Gets the name of each input variable. + + + + + + Gets the index of each input variable in the function. + + + + + + Gets the objective function. + + + + + + Gets the gradient of the objective function. + + + + + + Gets the number of input variables for the function. + + + + + + Conjugate gradient direction update formula. + + + + + + Fletcher-Reeves formula. + + + + + + Polak-Ribière formula. + + + + The Polak-Ribière is known to perform better for non-quadratic functions. + + + + + + Polak-Ribière formula. + + + + The Polak-Ribière is known to perform better for non-quadratic functions. + The positive version B=max(0,Bpr) provides a direction reset automatically. + + + + + + Conjugate Gradient exit codes. + + + + + + Success. + + + + + + Invalid step size. + + + + + + Descent direction was not obtained. + + + + + + Rounding errors prevent further progress. There may not be a step + which satisfies the sufficient decrease and curvature conditions. + Tolerances may be too small. + + + + + + The step size has reached the upper bound. + + + + + + The step size has reached the lower bound. + + + + + + Maximum number of function evaluations has been reached. + + + + + + Relative width of the interval of uncertainty is at machine precision. + + + + + + Conjugate Gradient (CG) optimization method. + + + + + In mathematics, the conjugate gradient method is an algorithm for the numerical solution of + particular systems of linear equations, namely those whose matrix is symmetric and positive- + definite. The conjugate gradient method is an iterative method, so it can be applied to sparse + systems that are too large to be handled by direct methods. Such systems often arise when + numerically solving partial differential equations. The nonlinear conjugate gradient method + generalizes the conjugate gradient method to nonlinear optimization (Wikipedia, 2011). + + T + + The framework implementation of this method is based on the original FORTRAN source code + by Jorge Nocedal (see references below). The original FORTRAN source code of CG+ (for large + scale unconstrained problems) is available at http://users.eecs.northwestern.edu/~nocedal/CG+.html + and had been made freely available for educational or commercial use. The original authors + expect that all publications describing work using this software quote the (Gilbert and Nocedal, 1992) + reference given below. + + + References: + + + J. C. Gilbert and J. Nocedal. Global Convergence Properties of Conjugate Gradient + Methods for Optimization, (1992) SIAM J. on Optimization, 2, 1. + + Wikipedia contributors, "Nonlinear conjugate gradient method," Wikipedia, The Free + Encyclopedia, http://en.wikipedia.org/w/index.php?title=Nonlinear_conjugate_gradient_method + (accessed December 22, 2011). + + Wikipedia contributors, "Conjugate gradient method," Wikipedia, The Free Encyclopedia, + http://en.wikipedia.org/w/index.php?title=Conjugate_gradient_method + (accessed December 22, 2011). + + + + + + + + + + + + Creates a new instance of the CG optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new instance of the CG optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets or sets the relative difference threshold + to be used as stopping criteria between two + iterations. Default is 0 (iterate until convergence). + + + + + + Gets or sets the maximum number of iterations + to be performed during optimization. Default + is 0 (iterate until convergence). + + + + + + Gets or sets the conjugate gradient update + method to be used during optimization. + + + + + + Gets the number of iterations performed + in the last call to . + + + + The number of iterations performed + in the previous optimization. + + + + + Gets the number of function evaluations performed + in the last call to . + + + + The number of evaluations performed + in the previous optimization. + + + + + Gets the number of linear searches performed + in the last call to . + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Occurs when progress is made during the optimization. + + + + + + Constraint type. + + + + + + Equality constraint. + + + + + + Inequality constraint specifying a greater than or equal to relationship. + + + + + + Inequality constraint specifying a lesser than or equal to relationship. + + + + + + Constraint with only linear terms. + + + + + + Constructs a new linear constraint. + + + The number of variables in the constraint. + + + + + Constructs a new linear constraint. + + + The scalar coefficients specifying + how variables should be combined in the constraint. + + + + + Constructs a new linear constraint. + + + The objective function to which + this constraint refers to. + A + specifying this constraint, such as "ax + b = c". + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + + + + Constructs a new linear constraint. + + + The objective function to which + this constraint refers to. + A + specifying this constraint, such as "ax + b = c". + + + + + Constructs a new linear constraint. + + + The objective function to which this + constraint refers to. + A specifying + this constraint in the form of a lambda expression. + + + + + Gets how much the constraint is being violated. + + + The function point. + + + How much the constraint is being violated at the given point. Positive + value means the constraint is not being violated with the returned slack, + while a negative value means the constraint is being violated by the returned + amount. + + + + + + Gets whether this constraint is being violated + (within the current tolerance threshold). + + + The function point. + + True if the constraint is being violated, false otherwise. + + + + + Attempts to create a + from a representation. + + + The string containing the constraint in textual form. + The objective function to which this constraint refers to. + The resulting constraint, if it could be parsed. + + true if the function could be parsed + from the string, false otherwise. + + + + + Attempts to create a + from a representation. + + + The string containing the constraint in textual form. + The objective function to which this constraint refers to. + The resulting constraint, if it could be parsed. + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + true if the function could be parsed + from the string, false otherwise. + + + + + Gets the number of variables in the constraint. + + + + + + Gets the index of the variables (in respective to the + object function index) of the variables participating + in this constraint. + + + + + + Gets the scalar coefficients combining the + variables specified by the constraints. + + + + + Gets the type of the constraint. + + + + + + Gets the value to be compared to the combined values + of the variables. + + + + + + Gets the violation tolerance for the constraint. Equality + constraints should set this to a small positive value. + + + + + + Gets the left hand side of the constraint equation. + + + + + + Gets the gradient of the left hand side of the constraint equation. + + + + + + Quadratic objective function. + + + + + In mathematics, a quadratic function, a quadratic polynomial, a polynomial + of degree 2, or simply a quadratic, is a polynomial function in one or more + variables in which the highest-degree term is of the second degree. For example, + a quadratic function in three variables x, y, and z contains exclusively terms + x², y², z², xy, xz, yz, x, y, z, and a constant: + + + + f(x,y,z) = ax² + by² +cz² + dxy + exz + fyz + gx + hy + iz + j + + + + Please note that the function's constructor expects the function + expression to be given on this form. Scalar values must be located + on the left of the variables, and no term should be duplicated in + the quadratic expression. Please take a look on the examples section + of this page for some examples of expected functions. + + + References: + + + Wikipedia, The Free Encyclopedia. Quadratic Function. Available on: + https://en.wikipedia.org/wiki/Quadratic_function + + + + + + + Examples of valid quadratic functions are: + + + var f1 = new QuadraticObjectiveFunction("x² + 1"); + var f2 = new QuadraticObjectiveFunction("-x*y + y*z"); + var f3 = new QuadraticObjectiveFunction("-2x² + xy - y² - 10xz + z²"); + var f4 = new QuadraticObjectiveFunction("-2x² + xy - y² + 5y"); + + + + It is also possible to specify quadratic functions using lambda expressions. + In this case, it is first necessary to create some dummy symbol variables to + act as placeholders in the quadratic expressions. Their value is not important, + as they will only be used to parse the form of the expression, not its value. + + + + // Declare symbol variables + double x = 0, y = 0, z = 0; + + var g1 = new QuadraticObjectiveFunction(() => x * x + 1); + var g2 = new QuadraticObjectiveFunction(() => -x * y + y * z); + var g3 = new QuadraticObjectiveFunction(() => -2 * x * x + x * y - y * y - 10 * x * z + z * z); + var g4 = new QuadraticObjectiveFunction(() => -2 * x * x + x * y - y * y + 5 * y); + + + + After those functions are created, you can either query their values + using + + + f1.Function(new [] { 5.0 }); // x*x+1 = x² + 1 = 25 + 1 = 26 + + + + Or you can pass it to a quadratic optimization method such + as Goldfarb-Idnani to explore its minimum or maximal points: + + + // Declare symbol variables + double x = 0, y = 0, z = 0; + + // Create the function to be optimized + var f = new QuadraticObjectiveFunction(() => x * x - 2 * x * y + 3 * y * y + z * z - 4 * x - 5 * y - z); + + // Create some constraints for the solution + var constraints = new List<LinearConstraint>(); + constraints.Add(new LinearConstraint(f, () => 6 * x - 7 * y <= 8)); + constraints.Add(new LinearConstraint(f, () => 9 * x + 1 * y <= 11)); + constraints.Add(new LinearConstraint(f, () => 9 * x - y <= 11)); + constraints.Add(new LinearConstraint(f, () => -z - y == 12)); + + // Create the Quadratic Programming solver + GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); + + // Minimize the function + bool success = solver.Minimize(); + + double value = solver.Value; + double[] solutions = solver.Solution; + + + + + + + + + Creates a new objective function specified through a string. + + + A Hessian matrix of quadratic terms defining the quadratic objective function. + The vector of linear terms associated with . + The name for each variable in the problem. + + + + + Creates a new objective function specified through a string. + + + A containing + the function in the form similar to "ax²+b". + + + + + Creates a new objective function specified through a string. + + + A containing + the function in the form similar to "ax²+b". + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + + + + Creates a new objective function specified through a string. + + + A containing + the function in the form of a lambda expression. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Attempts to create a + from a representation. + + + The string containing the function in textual form. + The resulting function, if it could be parsed. + + true if the function could be parsed + from the string, false otherwise. + + + + + Attempts to create a + from a representation. + + + The string containing the function in textual form. + The resulting function, if it could be parsed. + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + true if the function could be parsed + from the string, false otherwise. + + + + + Gets the quadratic terms of the quadratic function. + + + + + + Gets the vector of linear terms of the quadratic function. + + + + + + Gets the constant term in the quadratic function. + + + + + + Status codes for the + function optimizer. + + + + + + Convergence was attained. + + + + + + The optimization stopped before convergence; maximum + number of iterations could have been reached. + + + + + + The function is already at a minimum. + + + + + + Unknown error. + + + + + + The line-search step went out of the interval of uncertainty. + + + + + + A logic error occurred; alternatively, the interval of uncertainty became too small. + + + + + + A rounding error occurred; alternatively, no line-search step satisfies + the sufficient decrease and curvature conditions. The line search routine + will terminate with this code if the relative width of the interval of + uncertainty is less than . + + + + + + The line-search step became smaller than . + + + + + + The line-search step became larger than . + + + + + + The line-search routine reaches the maximum number of evaluations. + + + + + + Maximum number of iterations was reached. + + + + + + Relative width of the interval of uncertainty is at most + . + + + + + + A logic error (negative line-search step) occurred. This + could be an indication that something could be wrong with + the gradient function. + + + + + + The current search direction increases the objective function value. + + + + + + Line search algorithms. + + + + + + More-Thuente method. + + + + + + Backtracking method with the Armijo condition. + + + + + The backtracking method finds the step length such that it satisfies + the sufficient decrease (Armijo) condition, + + -f(x + a * d) ≤ f(x) + FunctionTolerance * a * g(x)^T d, + + where x is the current point, d is the current search direction, and + a is the step length. + + + + + + Backtracking method with regular Wolfe condition. + + + + + The backtracking method finds the step length such that it satisfies + both the Armijo condition (LineSearch.LBFGS_LINESEARCH_BACKTRACKING_ARMIJO) + and the curvature condition, + + - g(x + a * d)^T d ≥ lbfgs_parameter_t::wolfe * g(x)^T d, + + where x is the current point, d is the current search direction, and + a is the step length. + + + + + + Backtracking method with strong Wolfe condition. + + + + + The backtracking method finds the step length such that it satisfies + both the Armijo condition (LineSearch.LBFGS_LINESEARCH_BACKTRACKING_ARMIJO) + and the following condition, + + - |g(x + a * d)^T d| ≤ lbfgs_parameter_t::wolfe * |g(x)^T d|, + + where x is the current point, d is the current search direction, and + a is the step length. + + + + + + Limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) optimization method. + + + + + The L-BFGS algorithm is a member of the broad family of quasi-Newton optimization + methods. L-BFGS stands for 'Limited memory BFGS'. Indeed, L-BFGS uses a limited + memory variation of the Broyden–Fletcher–Goldfarb–Shanno (BFGS) update to approximate + the inverse Hessian matrix (denoted by Hk). Unlike the original BFGS method which + stores a dense approximation, L-BFGS stores only a few vectors that represent the + approximation implicitly. Due to its moderate memory requirement, L-BFGS method is + particularly well suited for optimization problems with a large number of variables. + + L-BFGS never explicitly forms or stores Hk. Instead, it maintains a history of the past + m updates of the position x and gradient g, where generally the history + mcan be short, often less than 10. These updates are used to implicitly do operations + requiring the Hk-vector product. + + + The framework implementation of this method is based on the original FORTRAN source code + by Jorge Nocedal (see references below). The original FORTRAN source code of L-BFGS (for + unconstrained problems) is available at http://www.netlib.org/opt/lbfgs_um.shar and had + been made available under the public domain. + + + References: + + + Jorge Nocedal. Limited memory BFGS method for large scale optimization (Fortran source code). 1990. + Available in http://www.netlib.org/opt/lbfgs_um.shar + + Jorge Nocedal. Updating Quasi-Newton Matrices with Limited Storage. Mathematics of Computation, + Vol. 35, No. 151, pp. 773--782, 1980. + + Dong C. Liu, Jorge Nocedal. On the limited memory BFGS method for large scale optimization. + + + + + + The following example shows the basic usage of the L-BFGS solver + to find the minimum of a function specifying its function and + gradient. + + + // Suppose we would like to find the minimum of the function + // + // f(x,y) = -exp{-(x-1)²} - exp{-(y-2)²/2} + // + + // First we need write down the function either as a named + // method, an anonymous method or as a lambda function: + + Func<double[], double> f = (x) => + -Math.Exp(-Math.Pow(x[0] - 1, 2)) - Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)); + + // Now, we need to write its gradient, which is just the + // vector of first partial derivatives del_f / del_x, as: + // + // g(x,y) = { del f / del x, del f / del y } + // + + Func<double[], double[]> g = (x) => new double[] + { + // df/dx = {-2 e^(- (x-1)^2) (x-1)} + 2 * Math.Exp(-Math.Pow(x[0] - 1, 2)) * (x[0] - 1), + + // df/dy = {- e^(-1/2 (y-2)^2) (y-2)} + Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)) * (x[1] - 2) + }; + + // Finally, we can create the L-BFGS solver, passing the functions as arguments + var lbfgs = new BroydenFletcherGoldfarbShanno(numberOfVariables: 2, function: f, gradient: g); + + // And then minimize the function: + bool success = lbfgs.Minimize(); + double minValue = lbfgs.Value; + double[] solution = lbfgs.Solution; + + // The resultant minimum value should be -2, and the solution + // vector should be { 1.0, 2.0 }. The answer can be checked on + // Wolfram Alpha by clicking the following the link: + + // http://www.wolframalpha.com/input/?i=maximize+%28exp%28-%28x-1%29%C2%B2%29+%2B+exp%28-%28y-2%29%C2%B2%2F2%29%29 + + + + + + + + + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The function to be optimized. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + The number of corrections to approximate the inverse Hessian matrix. + Default is 6. Values less than 3 are not recommended. Large values + will result in excessive computing time. + + + + The L-BFGS routine stores the computation results of the previous m + iterations to approximate the inverse Hessian matrix of the current + iteration. This parameter controls the size of the limited memories + (corrections). The default value is 6. Values less than 3 are not + recommended. Large values will result in excessive computing time. + + + + + + Epsilon for convergence test. + + + + + This parameter determines the accuracy with which the solution is to + be found. A minimization terminates when + + ||g|| < epsilon * max(1, ||x||), + + where ||.|| denotes the Euclidean (L2) norm. The default value is 1e-5. + + + + + + Distance for delta-based convergence test. + + + + This parameter determines the distance, in iterations, to compute + the rate of decrease of the objective function. If the value of this + parameter is zero, the library does not perform the delta-based + convergence test. The default value is 0. + + + + + + Delta for convergence test. + + + + + This parameter determines the minimum rate of decrease of the + objective function. The library stops iterations when the + following condition is met: + + (f' - f) / f < delta + + + where f' is the objective value of past iterations + ago, and f is the objective value of the current iteration. Default value + is 0. + + + + + + The maximum number of iterations. + + + + The minimize function terminates an optimization process with + status + code when the iteration count exceeds this parameter. Setting this parameter + to zero continues an optimization process until a convergence or error. The + default value is 0. + + + + + The line search algorithm. + + + + This parameter specifies a line search + algorithm to be used by the L-BFGS routine. + + + + + + The maximum number of trials for the line search. + + + + This parameter controls the number of function and gradients evaluations + per iteration for the line search routine. The default value is 20. + + + + + + The minimum step of the line search routine. + + + + The default value is 1e-20. This value need not be modified unless + the exponents are too large for the machine being used, or unless the problem + is extremely badly scaled (in which case the exponents should be increased). + + + + + + The maximum step of the line search. + + + + The default value is 1e+20. This value need not be modified unless the + exponents are too large for the machine being used, or unless the problem is + extremely badly scaled (in which case the exponents should be increased). + + + + + + A parameter to control the accuracy of the line search routine. The default + value is 1e-4. This parameter should be greater than zero and smaller + than 0.5. + + + + + + A coefficient for the Wolfe condition. + + + + This parameter is valid only when the backtracking line-search algorithm is used + with the Wolfe condition, + or . The default value + is 0.9. This parameter should be greater the + and smaller than 1.0. + + + + + + A parameter to control the accuracy of the line search routine. + + + + The default value is 0.9. If the function and gradient evaluations are + inexpensive with respect to the cost of the iteration (which is sometimes the + case when solving very large problems) it may be advantageous to set this parameter + to a small value. A typical small value is 0.1. This parameter should be + greater than the (1e-4) and smaller than + 1.0. + + + + + + The machine precision for floating-point values. + + + + This parameter must be a positive value set by a client program to + estimate the machine precision. The line search routine will terminate + with the status code (::LBFGSERR_ROUNDING_ERROR) if the relative width + of the interval of uncertainty is less than this parameter. + + + + + + Coefficient for the L1 norm of variables. + + + + + This parameter should be set to zero for standard minimization problems. Setting this + parameter to a positive value activates Orthant-Wise Limited-memory Quasi-Newton (OWL-QN) + method, which minimizes the objective function F(x) combined with the L1 norm |x| of the + variables, {F(x) + C |x|}. This parameter is the coefficient for the |x|, i.e., C. + + + As the L1 norm |x| is not differentiable at zero, the library modifies function and + gradient evaluations from a client program suitably; a client program thus have only + to return the function value F(x) and gradients G(x) as usual. The default value is zero. + + + + + + Start index for computing L1 norm of the variables. + + + + + This parameter is valid only for OWL-QN method (i.e., != 0). + This parameter b (0 <= b < N) specifies the index number from which the library + computes the L1 norm of the variables x, + + |x| := |x_{b}| + |x_{b+1}| + ... + |x_{N}|. + + In other words, variables x_1, ..., x_{b-1} are not used for + computing the L1 norm. Setting b (0 < b < N), one can protect + variables, x_1, ..., x_{b-1} (e.g., a bias term of logistic + regression) from being regularized. The default value is zero. + + + + + + End index for computing L1 norm of the variables. + + + + This parameter is valid only for OWL-QN method (i.e., != 0). + This parameter e (0 < e <= N) specifies the index number at which the library stops + computing the L1 norm of the variables x, + + |x| := |x_{b}| + |x_{b+1}| + ... + |x_{N}|. + + + + + + Occurs when progress is made during the optimization. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Line Search Failed Exception. + + + + This exception may be thrown by the L-BFGS Optimizer + when the line search routine used by the optimization method fails. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The error code information of the line search routine. + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is a null reference (Nothing in Visual Basic). + + + + + + + + + + Gets the error code information returned by the line search routine. + + + The error code information returned by the line search routine. + + + + + Optimization progress event arguments. + + + + + Initializes a new instance of the class. + + + The current iteration of the optimization method. + The number of function evaluations performed. + The current gradient of the function. + The norm of the current gradient + The norm of the current parameter vector. + The current solution parameters. + The value of the function evaluated at the current solution. + The current step size. + True if the method is about to terminate, false otherwise. + + + + + Gets the current iteration of the method. + + + + + + Gets the number of function evaluations performed. + + + + + + Gets the current gradient of the function being optimized. + + + + + + Gets the norm of the current . + + + + + + Gets the current solution parameters for the problem. + + + + + + Gets the norm of the current . + + + + + + Gets the value of the function to be optimized + at the current proposed . + + + + + + Gets the current step size. + + + + + + Gets or sets a value indicating whether the + optimization process is about to terminate. + + + true if finished; otherwise, false. + + + + + An user-defined value associated with this object. + + + + + + Status codes for the + constrained quadratic programming solver. + + + + + + Convergence was attained. + + + + + + The quadratic problem matrix is not positive definite. + + + + + + The posed constraints cannot be fulfilled. + + + + + + Goldfarb-Idnani Quadratic Programming Solver. + + + + + References: + + + Goldfarb D., Idnani A. (1982) Dual and Primal-Dual Methods for Solving Strictly Convex Quadratic Programs. + Available on: http://www.javaquant.net/papers/GoldfarbIdnani.pdf . + + Berwin A Turlach. QuadProg, Quadratic Programming Solver (implementation in Fortran). + Available on: http://school.maths.uwa.edu.au/~berwin/software/quadprog.html . + + + + + + + There are three ways to state a quadratic programming problem in this framework. + + + + The first is to state the problem in its canonical form, explicitly stating the + matrix Q and vector d specifying the quadratic function and the matrices A and + vector b specifying the problem constraints. + + The second is to state the problem with lambda expressions using symbolic variables. + + The third is to state the problem using text strings. + + + + In the following section we will provide examples for those ways. + + + + This is an example stating the problem using lambdas: + + // Solve the following optimization problem: + // + // min f(x) = 2x² - xy + 4y² - 5x - 6y + // + // s.t. x - y == 5 (x minus y should be equal to 5) + // x >= 10 (x should be greater than or equal to 10) + // + + // In this example we will be using some symbolic processing. + // The following variables could be initialized to any value. + double x = 0, y = 0; + + // Create our objective function using a lambda expression + var f = new QuadraticObjectiveFunction(() => 2 * (x * x) - (x * y) + 4 * (y * y) - 5 * x - 6 * y); + + // Now, create the constraints + List<LinearConstraint> constraints = new List<LinearConstraint>(); + constraints.Add(new LinearConstraint(f, () => x - y == 5)); + constraints.Add(new LinearConstraint(f, () => x >= 10)); + + // Now we create the quadratic programming solver for 2 variables, using the constraints. + GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); + + // And attempt to solve it. + double minimumValue = solver.Minimize(); + + + + This is an example stating the problem using strings: + + // Solve the following optimization problem: + // + // max f(x) = -2x² + xy - y² + 5y + // + // s.t. x - y == 5 (x minus y should be equal to 5) + // x >= 10 (x should be greater than or equal to 10) + // + // + + // Create our objective function using a text string + var f = new QuadraticObjectiveFunction("-2x² + xy - y² + 5y"); + + // Now, create the constraints + List<LinearConstraint> constraints = new List<LinearConstraint>(); + constraints.Add(new LinearConstraint(f, "x - y == 5")); + constraints.Add(new LinearConstraint(f, " x >= 10")); + + // Now we create the quadratic programming solver for 2 variables, using the constraints. + GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); + + // And attempt to solve it. + double maxValue = solver.Maximize(); + + + + And finally, an example stating the problem using matrices: + + // Solve the following optimization problem: + // + // min f(x) = 2x² - xy + 4y² - 5x - 6y + // + // s.t. x - y == 5 (x minus y should be equal to 5) + // x >= 10 (x should be greater than or equal to 10) + // + + // Lets first group the quadratic and linear terms. The + // quadratic terms are +2x², +3y² and -4xy. The linear + // terms are -2x and +1y. So our matrix of quadratic + // terms can be expressed as: + + double[,] Q = // 2x² -1xy +4y² + { + /* x y */ + /*x*/ { +2 /*xx*/ *2, -1 /*xy*/ }, + /*y*/ { -1 /*xy*/ , +4 /*yy*/ *2 }, + }; + + // Accordingly, our vector of linear terms is given by: + + double[] d = { -5 /*x*/, -6 /*y*/ }; // -5x -6y + + // We have now to express our constraints. We can do it + // either by directly specifying a matrix A in which each + // line refers to one of the constraints, expressing the + // relationship between the different variables in the + // constraint, like this: + + double[,] A = + { + { 1, -1 }, // This line says that x + (-y) ... (a) + { 1, 0 }, // This line says that x alone ... (b) + }; + + double[] b = + { + 5, // (a) ... should be equal to 5. + 10, // (b) ... should be greater than or equal to 10. + }; + + // Equalities must always come first, and in this case + // we have to specify how many of the constraints are + // actually equalities: + + int numberOfEqualities = 1; + + + // Alternatively, we may use a more explicitly form: + List<LinearConstraint> list = new List<LinearConstraint>(); + + // Define the first constraint, which involves only x + list.Add(new LinearConstraint(numberOfVariables: 1) + { + // x is the first variable, thus located at + // index 0. We are specifying that x >= 10: + + VariablesAtIndices = new[] { 0 }, // index 0 (x) + ShouldBe = ConstraintType.GreaterThanOrEqualTo, + Value = 10 + }); + + // Define the second constraint, which involves x and y + list.Add(new LinearConstraint(numberOfVariables: 2) + { + // x is the first variable, located at index 0, and y is + // the second, thus located at 1. We are specifying that + // x - y = 5 by saying that the variable at position 0 + // times 1 plus the variable at position 1 times -1 + // should be equal to 5. + + VariablesAtIndices = new int[] { 0, 1 }, // index 0 (x) and index 1 (y) + CombinedAs = new double[] { 1, -1 }, // when combined as x - y + ShouldBe = ConstraintType.EqualTo, + Value = 5 + }); + + + // Now we can finally create our optimization problem + var target = new GoldfarbIdnani(Q, d, constraints: list); + + // And attempt to solve it. + double minimumValue = target.Minimize(); + + + + + + + Constructs a new class. + + + The objective function to be optimized. + The problem's constraints. + + + + + Constructs a new class. + + + The objective function to be optimized. + The problem's constraints. + + + + + Constructs a new instance of the class. + + + The objective function to be optimized. + The constraints matrix A. + The constraints values b. + The number of equalities in the constraints. + + + + + Constructs a new instance of the class. + + + The symmetric matrix of quadratic terms defining the objective function. + The vector of linear terms defining the objective function. + The constraints matrix A. + The constraints values b. + The number of equalities in the constraints. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + + Not available. + + + + + + Gets the total number of constraints in the problem. + + + + + + Gets how many constraints are inequality constraints. + + + + + + Gets the total number of iterations performed on the + last call to the or methods. + + + + + + Gets or sets the maximum number of iterations that should be + performed before the method terminates. If set to zero, the + method will run to completion. Default is 0. + + + + + + Gets the total number of constraint removals performed + on the last call to the or methods. + + + + + + Gets the Lagrangian multipliers for the + last solution found. + + + + + + Gets the indices of the active constraints + found during the last call of the + or + methods. + + + + + + Gets the constraint matrix A for the problem. + + + + + + Gets the constraint values b for the problem. + + + + + + Gets the constraint tolerances b for the problem. + + + + + + Gets the matrix of quadratic terms of + the quadratic optimization problem. + + + + + + Gets the vector of linear terms of the + quadratic optimization problem. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Brent's root finding and minimization algorithms. + + + + + In numerical analysis, Brent's method is a complicated but popular root-finding + algorithm combining the bisection method, the secant method and inverse quadratic + interpolation. It has the reliability of bisection but it can be as quick as some + of the less reliable methods. The idea is to use the secant method or inverse quadratic + interpolation if possible, because they converge faster, but to fall back to the more + robust bisection method if necessary. Brent's method is due to Richard Brent (1973) + and builds on an earlier algorithm of Theodorus Dekker (1969). + + + The algorithms implemented in this class are based on the original C source code + available in Netlib (http://www.netlib.org/c/brent.shar) by Oleg Keselyov, 1991. + + + References: + + + R.P. Brent (1973). Algorithms for Minimization without Derivatives, Chapter 4. + Prentice-Hall, Englewood Cliffs, NJ. ISBN 0-13-022335-2. + + Wikipedia contributors. "Brent's method." Wikipedia, The Free Encyclopedia. + Wikipedia, The Free Encyclopedia, 11 May. 2012. Web. 22 Jun. 2012. + + + + + + + + The following example shows how to compute the maximum, + minimum and a single root of a univariate function. + + + // Suppose we were given the function x³ + 2x² - 10x and + // we have to find its root, maximum and minimum inside + // the interval [-4,3]. First, we express this function + // as a lambda expression: + Func<double, double> function = x => x * x * x + 2 * x * x - 10 * x; + + // And now we can create the search algorithm: + BrentSearch search = new BrentSearch(function, -4, 3); + + // Finally, we can query the information we need + double max = search.Maximize(); // occurs at -2.61 + double min = search.Minimize(); // occurs at 1.27 + double root = search.FindRoot(); // occurs at 0.50 + + + + + + + + Constructs a new Brent search algorithm. + + + The function to be searched. + Start of search region. + End of search region. + + + + + Attempts to find a root in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Attempts to find a value in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Finds the minimum of the function in the interval [a;b] + + + The location of the minimum of the function in the given interval. + + + + + Finds the maximum of the function in the interval [a;b] + + + The location of the maximum of the function in the given interval. + + + + + Finds the minimum of a function in the interval [a;b] + + + The function to be minimized. + Start of search region. + End of search region. + The tolerance for determining the solution. + + The location of the minimum of the function in the given interval. + + + + + Finds the maximum of a function in the interval [a;b] + + + The function to be maximized. + Start of search region. + End of search region. + The tolerance for determining the solution. + + The location of the maximum of the function in the given interval. + + + + + Finds the root of a function in the interval [a;b] + + + The function to have its root computed. + Start of search region. + End of search region. + The tolerance for determining the solution. + + The location of the zero value in the given interval. + + + + + Finds a value of a function in the interval [a;b] + + + The function to have its root computed. + Start of search region. + End of search region. + The tolerance for determining the solution. + The value to be looked for in the function. + + The location of the zero value in the given interval. + + + + + Gets the number of variables (free parameters) + in the optimization problem. + + + + The number of parameters. + + + + + + Gets or sets the tolerance margin when + looking for an answer. Default is 1e-6. + + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets the solution found in the last call + to , + or . + + + + + + Gets the value at the solution found in the last call + to , + or . + + + + + + Gets the value at the solution found in the last call + to , + or . + + + + + + Gets the function to be searched. + + + + + + Set of special mathematic functions. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + John D. Cook, http://www.johndcook.com/ + + + + + + + Complementary error function of the specified value. + + + + http://mathworld.wolfram.com/Erfc.html + + + + + + Error function of the specified value. + + + + + + Inverse error function (. + + + + + + Inverse complemented error function (. + + + + + + Evaluates polynomial of degree N + + + + + + Evaluates polynomial of degree N with assumption that coef[N] = 1.0 + + + + + + Computes the Basic Spline of order n + + + + + Computes the binomial coefficients C(n,k). + + + + + + Computes the binomial coefficients C(n,k). + + + + + + Computes the log binomial Coefficients Log[C(n,k)]. + + + + + + Computes the log binomial Coefficients Log[C(n,k)]. + + + + + + Returns the extended factorial definition of a real number. + + + + + + Returns the log factorial of a number (ln(n!)) + + + + + + Returns the log factorial of a number (ln(n!)) + + + + + + Computes the factorial of a number (n!) + + + + + Computes log(1-x) without losing precision for small values of x. + + + + + + Computes log(1+x) without losing precision for small values of x. + + + + References: + - http://www.johndcook.com/csharp_log_one_plus_x.html + + + + + + Compute exp(x) - 1 without loss of precision for small values of x. + + + References: + - http://www.johndcook.com/cpp_expm1.html + + + + + Estimates unit round-off in quantities of size x. + + + This is a port of the epslon function from EISPACK. + + + + + Returns with the sign of . + + + + This is a port of the sign transfer function from EISPACK, + and is is equivalent to C++'s std::copysign function. + + + If B > 0 then the result is ABS(A), else it is -ABS(A). + + + + + Computes x + y without losing precision using ln(x) and ln(y). + + + + + + Computes x + y without losing precision using ln(x) and ln(y). + + + + + + Computes x + y without losing precision using ln(x) and ln(y). + + + + + + Secant. + + + + + + Cosecant. + + + + + + Cotangent. + + + + + Inverse secant. + + + + + + Inverse cosecant. + + + + + + Inverse cotangent. + + + + + + Hyperbolic secant. + + + + + + Hyperbolic secant. + + + + + + Hyperbolic cotangent. + + + + + + Inverse hyperbolic sin. + + + + + + Inverse hyperbolic cos. + + + + + + Inverse hyperbolic tangent. + + + + + + Inverse hyperbolic secant. + + + + + + Inverse hyperbolic cosecant. + + + + + + Inverse hyperbolic cotangent. + + + + + + Discrete Hilbert Transformation. + + + + + The discrete Hilbert transform is a transformation operating on the time + domain. It performs a 90 degree phase shift, shifting positive frequencies + by +90 degrees and negative frequencies by -90 degrees. It is useful to + create analytic representation of signals. + + + The Hilbert transform can be implemented efficiently by using the Fast + Fourier Transform. After transforming a signal from the time-domain to + the frequency domain, one can zero its negative frequency components and + revert the signal back to obtain the phase shifting. + + + By applying the Hilbert transform to a signal twice, the negative of + the original signal is recovered. + + + References: + + + Marple, S.L., "Computing the discrete-time analytic signal via FFT," IEEE + Transactions on Signal Processing, Vol. 47, No.9 (September 1999). Available on: + http://classes.engr.oregonstate.edu/eecs/winter2009/ece464/AnalyticSignal_Sept1999_SPTrans.pdf + + J. F. Culling, Online, cross-indexed dictionary of DSP terms. Available on: + http://www.cardiff.ac.uk/psych/home2/CullingJ/frames_dict.html + + + + + + + + Performs the Fast Hilbert Transform over a double[] array. + + + + + + Performs the Fast Hilbert Transform over a complex[] array. + + + + + + Beta functions. + + + + + This class offers implementations for the many Beta functions, + such as the Beta function itself, + its logarithm, the + incomplete regularized functions and others + + + The beta function was studied by Euler and Legendre and was given + its name by Jacques Binet; its symbol Β is a Greek capital β rather + than the similar Latin capital B. + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + Wikipedia contributors, "Beta function,". Wikipedia, The Free + Encyclopedia. Available at: http://en.wikipedia.org/wiki/Beta_function + + + + + + + Beta.Function(4, 0.42); // 1.2155480852832423 + Beta.Log(4, 15.2); // -9.46087817876467 + Beta.Incbcf(4, 2, 4.2); // -0.23046874999999992 + Beta.Incbd(4, 2, 4.2); // 0.7375 + Beta.PowerSeries(4, 2, 4.2); // -3671.801280000001 + + Beta.Incomplete(a: 5, b: 4, x: 0.5); // 0.36328125 + Beta.IncompleteInverse(0.5, 0.6, 0.1); // 0.019145979066925722 + Beta.Multinomial(0.42, 0.5, 5.2 ); // 0.82641912952987062 + + + + + + + Beta function as gamma(a) * gamma(b) / gamma(a+b). + + + + Please see + + + + + + Natural logarithm of the Beta function. + + + + Please see + + + + + + Incomplete (regularized) Beta function Ix(a, b). + + + + Please see + + + + + + Continued fraction expansion #1 for incomplete beta integral. + + + + Please see + + + + + + Continued fraction expansion #2 for incomplete beta integral. + + + + Please see + + + + + + Inverse of incomplete beta integral. + + + + Please see + + + + + + Power series for incomplete beta integral. Use when b*x + is small and x not too close to 1. + + + + Please see + + + + + + Multinomial Beta function. + + + + Please see + + + + + + Gamma Γ(x) functions. + + + + + In mathematics, the gamma function (represented by the capital Greek + letter Γ) is an extension of the factorial function, with its argument + shifted down by 1, to real and complex numbers. That is, if n is + a positive integer: + + Γ(n) = (n-1)! + + The gamma function is defined for all complex numbers except the negative + integers and zero. For complex numbers with a positive real part, it is + defined via an improper integral that converges: + + ∞ + Γ(z) = ∫ t^(z-1)e^(-t) dt + 0 + + + This integral function is extended by analytic continuation to all + complex numbers except the non-positive integers (where the function + has simple poles), yielding the meromorphic function we call the gamma + function. + + The gamma function is a component in various probability-distribution + functions, and as such it is applicable in the fields of probability + and statistics, as well as combinatorics. + + + References: + + + Wikipedia contributors, "Gamma function,". Wikipedia, The Free + Encyclopedia. Available at: http://en.wikipedia.org/wiki/Gamma_function + + + Cephes Math Library, http://www.netlib.org/cephes/ + + + + + + double x = 0.17; + + // Compute main Gamma function and variants + double gamma = Gamma.Function(x); // 5.4511741801042106 + double gammap = Gamma.Function(x, p: 2); // -39.473585841300675 + double log = Gamma.Log(x); // 1.6958310313607003 + double logp = Gamma.Log(x, p: 2); // 3.6756317353404273 + double stir = Gamma.Stirling(x); // 24.040352622960743 + double psi = Gamma.Digamma(x); // -6.2100942259248626 + double tri = Gamma.Trigamma(x); // 35.915302055854525 + + double a = 4.2; + + // Compute the incomplete regularized Gamma functions P and Q: + double lower = Gamma.LowerIncomplete(a, x); // 0.000015685073063633753 + double upper = Gamma.UpperIncomplete(a, x); // 0.9999843149269364 + + + + + + Maximum gamma on the machine. + + + + Gamma function of the specified value. + + + + + + Multivariate Gamma function + + + + + + Digamma function. + + + + + + Trigamma function. + + + + This code has been adapted from the FORTRAN77 and subsequent + C code by B. E. Schneider and John Burkardt. The code had been + made public under the GNU LGPL license. + + + + + + Gamma function as computed by Stirling's formula. + + + + + + Upper incomplete regularized Gamma function Q + (a.k.a the incomplete complemented Gamma function) + + + + This function is equivalent to Q(x) = Γ(s, x) / Γ(s). + + + + + + Lower incomplete regularized gamma function P + (a.k.a. the incomplete Gamma function). + + + + This function is equivalent to P(x) = γ(s, x) / Γ(s). + + + + + + Natural logarithm of the gamma function. + + + + + + Natural logarithm of the multivariate Gamma function. + + + + + + Inverse of the + incomplete Gamma integral (LowerIncomplete, P). + + + + + + Inverse of the complemented + incomplete Gamma integral (UpperIncomplete, Q). + + + + + + Inverse of the complemented + incomplete Gamma integral (UpperIncomplete, Q). + + + + + + Random Gamma-distribution number generation + based on Marsaglia's Simple Method (2000). + + + + + + Common mathematical constants. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + http://www.johndcook.com/cpp_expm1.html + + + + + + + Euler-Mascheroni constant. + + + + This constant is defined as 0.5772156649015328606065120. + + + + + + Double-precision machine round-off error. + + + + This value is actually different from Double.Epsilon. It + is defined as 1.11022302462515654042E-16. + + + + + + Single-precision machine round-off error. + + + + This value is actually different from Single.Epsilon. It + is defined as 1.1920929E-07f. + + + + + + Double-precision small value. + + + + This constant is defined as 1.493221789605150e-300. + + + + + + Single-precision small value. + + + + This constant is defined as 1.493221789605150e-40f. + + + + + + Maximum log on the machine. + + + + This constant is defined as 7.09782712893383996732E2. + + + + + + Minimum log on the machine. + + + + This constant is defined as -7.451332191019412076235E2. + + + + + + Catalan's constant. + + + + + + Log of number pi: log(pi). + + + + This constant has the value 1.14472988584940017414. + + + + + + Log of two: log(2). + + + + This constant has the value 0.69314718055994530941. + + + + + + Log of three: log(3). + + + + This constant has the value 1.098612288668109691395. + + + + + + Log of square root of twice number pi: sqrt(log(2*π). + + + + This constant has the value 0.91893853320467274178032973640562. + + + + + + Log of twice number pi: log(2*pi). + + + + + This constant has the value 1.837877066409345483556. + + + + + + Square root of twice number pi: sqrt(2*π). + + + + This constant has the value 2.50662827463100050242E0. + + + + + + Square root of half number π: sqrt(π/2). + + + + This constant has the value 1.25331413731550025121E0. + + + + + + Square root of 2: sqrt(2). + + + + This constant has the value 1.4142135623730950488016887. + + + + + + Half square root of 2: sqrt(2)/2. + + + + This constant has the value 7.07106781186547524401E-1. + + + + + + Bessel functions. + + + + + Bessel functions, first defined by the mathematician Daniel + Bernoulli and generalized by Friedrich Bessel, are the canonical + solutions y(x) of Bessel's differential equation. + + + Bessel's equation arises when finding separable solutions to Laplace's + equation and the Helmholtz equation in cylindrical or spherical coordinates. + Bessel functions are therefore especially important for many problems of wave + propagation and static potentials. In solving problems in cylindrical coordinate + systems, one obtains Bessel functions of integer order (α = n); in spherical + problems, one obtains half-integer orders (α = n+1/2). For example: + + + + Electromagnetic waves in a cylindrical waveguide + + Heat conduction in a cylindrical object + + Modes of vibration of a thin circular (or annular) artificial + membrane (such as a drum or other membranophone) + + Diffusion problems on a lattice + + Solutions to the radial Schrödinger equation (in spherical and + cylindrical coordinates) for a free particle + + Solving for patterns of acoustical radiation + + Frequency-dependent friction in circular pipelines + + + + + Bessel functions also appear in other problems, such as signal processing + (e.g., see FM synthesis, Kaiser window, or Bessel filter). + + + This class offers implementations of Bessel's first and second kind + functions, with special cases for zero and for arbitrary n. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + Wikipedia contributors, "Bessel function,". Wikipedia, The Free + Encyclopedia. Available at: http://en.wikipedia.org/wiki/Bessel_function + + + + + + + // Bessel function of order 0 + actual = Bessel.J0(1); // 0.765197686557967 + actual = Bessel.J0(5); // -0.177596771314338 + + // Bessel function of order n + double j2 = Bessel.J(2, 17.3); // 0.117351128521774 + double j01 = Bessel.J(0, 1); // 0.765197686557967 + double j05 = Bessel.J(0, 5); // -0.177596771314338 + + + // Bessel function of the second kind, of order 0. + double y0 = Bessel.Y0(64); // 0.037067103232088 + + // Bessel function of the second kind, of order n. + double y2 = Bessel.Y(2, 4); // 0.215903594603615 + double y0 = Bessel.Y(0, 64); // 0.037067103232088 + + + + + + + Bessel function of order 0. + + + + See + + + + + + Bessel function of order 1. + + + + See + + + + + + Bessel function of order n. + + + + See + + + + + + Bessel function of the second kind, of order 0. + + + + See + + + + + + Bessel function of the second kind, of order 1. + + + + See + + + + + + Bessel function of the second kind, of order n. + + + + See + + + + + + Bessel function of the first kind, of order 0. + + + + See + + + + + + Bessel function of the first kind, of order 1. + + + + See + + + + + + Bessel function of the first kind, of order n. + + + + See + + + + + + Set of mathematical tools. + + + + + + Sets a random seed for the framework's main + internal number generator. + + + + + + Gets the angle formed by the vector [x,y]. + + + + + + Gets the angle formed by the vector [x,y]. + + + + + + Gets the displacement angle between two points. + + + + + + Gets the displacement angle between two points, coded + as an integer varying from 0 to 20. + + + + + + Gets the greatest common divisor between two integers. + + + First value. + Second value. + + The greatest common divisor. + + + + + Returns the next power of 2 after the input value x. + + + Input value x. + + Returns the next power of 2 after the input value x. + + + + + Returns the previous power of 2 after the input value x. + + + Input value x. + + Returns the previous power of 2 after the input value x. + + + + + Hypotenuse calculus without overflow/underflow + + + First value + Second value + + The hypotenuse Sqrt(a^2 + b^2) + + + + + Hypotenuse calculus without overflow/underflow + + + first value + second value + + The hypotenuse Sqrt(a^2 + b^2) + + + + + Hypotenuse calculus without overflow/underflow + + + first value + second value + + The hypotenuse Sqrt(a^2 + b^2) + + + + + Gets the proper modulus operation for + an integer value x and modulo m. + + + + + + Gets the proper modulus operation for + a real value x and modulo m. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Returns the hyperbolic arc cosine of the specified value. + + + + + + Returns the hyperbolic arc sine of the specified value. + + + + + + Returns the hyperbolic arc tangent of the specified value. + + + + + + Returns the factorial falling power of the specified value. + + + + + + Truncated power function. + + + + + + Fast inverse floating-point square root. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Interpolates data using a piece-wise linear function. + + + The value to be calculated. + The input data points x. Those values need to be sorted. + The output data points y. + + The value to be returned for values before the first point in . + + The value to be returned for values after the last point in . + + Computes the output for f(value) by using a piecewise linear + interpolation of the data points and . + + + + + Gets the maximum value among three values. + + + The first value a. + The second value b. + The third value c. + + The maximum value among , + and . + + + + + Gets the minimum value among three values. + + + The first value a. + The second value b. + The third value c. + + The minimum value among , + and . + + + + + Gets a reference to the random number generator used + internally by the Accord.NET classes and methods. + + + + + + Returns the Identity matrix of the given size. + + + + + + Creates a jagged magic square matrix. + + + + + + Returns a square diagonal matrix of the given size. + + + + + + Return a jagged matrix with a vector of values on its diagonal. + + + + + + Shuffles an array. + + + + + + Shuffles a collection. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Creates a zero-valued vector. + + + The type of the vector to be created. + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a zero-valued vector. + + + The type of the vector to be created. + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a zero-valued vector. + + + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a zero-valued vector. + + + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a vector with the given dimension and starting values. + + + The number of elements in the vector. + The initial values for the vector. + + + + + Creates a vector with the given dimension default value. + + + The number of elements in the vector. + + + + + Creates a vector with the given dimension and starting values. + + + The number of elements in the vector. + The initial value for the elements in the vector. + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Cohen-Daubechies-Feauveau Wavelet Transform + + + + + + Common interface for wavelets algorithms. + + + + + + 1-D Forward Discrete Wavelet Transform. + + + + + + 2-D Forward Discrete Wavelet Transform. + + + + + + 1-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + 2-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + Constructs a new Cohen-Daubechies-Feauveau Wavelet Transform. + + + The number of iterations for the 2D transform. + + + + + 1-D Forward Discrete Wavelet Transform. + + + + + + 2-D Forward Discrete Wavelet Transform. + + + + + + 1-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + 2-D Backward (Inverse) Discrete Wavelet Transform. + + + + + Forward biorthogonal 9/7 wavelet transform + + + + + Inverse biorthogonal 9/7 wavelet transform + + + + + + Forward biorthogonal 9/7 2D wavelet transform + + + + + + Inverse biorthogonal 9/7 2D wavelet transform + + + + + + Haar Wavelet Transform. + + + + + References: + + + Musawir Ali, An Introduction to Wavelets and the Haar Transform. + Available on: http://www.cs.ucf.edu/~mali/haar/ + + + + + + + + Constructs a new Haar Wavelet Transform. + + The number of iterations for the 2D transform. + + + + + 1-D Forward Discrete Wavelet Transform. + + + + + + 1-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + 2-D Forward Discrete Wavelet Transform. + + + + + + 2-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + Discrete Haar Wavelet Transform + + + + + + Inverse Haar Wavelet Transform + + + + + + Discrete Haar Wavelet 2D Transform + + + + + + Inverse Haar Wavelet 2D Transform + + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net40/Accord.Math.dll b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net40/Accord.Math.dll new file mode 100644 index 0000000000..501907aac Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net40/Accord.Math.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net40/Accord.Math.xml b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net40/Accord.Math.xml new file mode 100644 index 0000000000..c538f1308 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net40/Accord.Math.xml @@ -0,0 +1,27337 @@ + + + + Accord.Math + + + + + Histogram for continuous random values. + + + The class wraps histogram for continuous stochastic function, which is represented + by integer array and range of the function. Values of the integer array are treated + as total amount of hits on the corresponding subranges, which are calculated by splitting the + specified range into required amount of consequent ranges. + + For example, if the integer array is equal to { 1, 2, 4, 8, 16 } and the range is set + to [0, 1], then the histogram consists of next subranges: + + [0.0, 0.2] - 1 hit; + [0.2, 0.4] - 2 hits; + [0.4, 0.6] - 4 hits; + [0.6, 0.8] - 8 hits; + [0.8, 1.0] - 16 hits. + + + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get mean and standard deviation values + Console.WriteLine( "mean = " + histogram.Mean + ", std.dev = " + histogram.StdDev ); + + + + + + + Initializes a new instance of the class. + + + Values of the histogram. + Range of random values. + + Values of the integer array are treated as total amount of hits on the + corresponding subranges, which are calculated by splitting the specified range into + required amount of consequent ranges (see class + description for more information). + + + + + + Get range around median containing specified percentage of values. + + + Values percentage around median. + + Returns the range which containes specifies percentage of values. + + The method calculates range of stochastic variable, which summary probability + comprises the specified percentage of histogram's hits. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get 50% range + Range range = histogram.GetRange( 0.5f ); + // show the range ([0.25, 0.75]) + Console.WriteLine( "50% range = [" + range.Min + ", " + range.Max + "]" ); + + + + + + + Update statistical value of the histogram. + + + The method recalculates statistical values of the histogram, like mean, + standard deviation, etc. The method should be called only in the case if histogram + values were retrieved through property and updated after that. + + + + + + Values of the histogram. + + + + + + Range of random values. + + + + + + Mean value. + + + The property allows to retrieve mean value of the histogram. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get mean value (= 0.505 ) + Console.WriteLine( "mean = " + histogram.Mean.ToString( "F3" ) ); + + + + + + + Standard deviation. + + + The property allows to retrieve standard deviation value of the histogram. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get std.dev. value (= 0.215) + Console.WriteLine( "std.dev. = " + histogram.StdDev.ToString( "F3" ) ); + + + + + + + Median value. + + + The property allows to retrieve median value of the histogram. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get median value (= 0.500) + Console.WriteLine( "median = " + histogram.Median.ToString( "F3" ) ); + + + + + + + Minimum value. + + + The property allows to retrieve minimum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get min value (= 0.250) + Console.WriteLine( "min = " + histogram.Min.ToString( "F3" ) ); + + + + + + Maximum value. + + + The property allows to retrieve maximum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get max value (= 0.875) + Console.WriteLine( "max = " + histogram.Max.ToString( "F3" ) ); + + + + + + + Fourier transformation. + + + The class implements one dimensional and two dimensional + Discrete and Fast Fourier Transformation. + + + + + One dimensional Discrete Fourier Transform. + + + Data to transform. + Transformation direction. + + + + + Two dimensional Discrete Fourier Transform. + + + Data to transform. + Transformation direction. + + + + + One dimensional Fast Fourier Transform. + + + Data to transform. + Transformation direction. + + The method accepts array of 2n size + only, where n may vary in the [1, 14] range. + + Incorrect data length. + + + + + Two dimensional Fast Fourier Transform. + + + Data to transform. + Transformation direction. + + The method accepts array of 2n size + only in each dimension, where n may vary in the [1, 14] range. For example, 16x16 array + is valid, but 15x15 is not. + + Incorrect data length. + + + + + Fourier transformation direction. + + + + + Forward direction of Fourier transformation. + + + + + + Backward direction of Fourier transformation. + + + + + + Gaussian function. + + + The class is used to calculate 1D and 2D Gaussian functions for + specified (s) value: + + + 1-D: f(x) = exp( x * x / ( -2 * s * s ) ) / ( s * sqrt( 2 * PI ) ) + + 2-D: f(x, y) = exp( x * x + y * y / ( -2 * s * s ) ) / ( s * s * 2 * PI ) + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Sigma value. + + + + + 1-D Gaussian function. + + + x value. + + Returns function's value at point . + + The function calculates 1-D Gaussian function: + + + f(x) = exp( x * x / ( -2 * s * s ) ) / ( s * sqrt( 2 * PI ) ) + + + + + + + 2-D Gaussian function. + + + x value. + y value. + + Returns function's value at point (, ). + + The function calculates 2-D Gaussian function: + + + f(x, y) = exp( x * x + y * y / ( -2 * s * s ) ) / ( s * s * 2 * PI ) + + + + + + + 1-D Gaussian kernel. + + + Kernel size (should be odd), [3, 101]. + + Returns 1-D Gaussian kernel of the specified size. + + The function calculates 1-D Gaussian kernel, which is array + of Gaussian function's values in the [-r, r] range of x value, where + r=floor(/2). + + + Wrong kernel size. + + + + + 2-D Gaussian kernel. + + + Kernel size (should be odd), [3, 101]. + + Returns 2-D Gaussian kernel of specified size. + + The function calculates 2-D Gaussian kernel, which is array + of Gaussian function's values in the [-r, r] range of x,y values, where + r=floor(/2). + + + Wrong kernel size. + + + + + Sigma value. + + + Sigma property of Gaussian function. + + Default value is set to 1. Minimum allowed value is 0.00000001. + + + + + + Shape optimizer, which merges points within close distance to each other. + + + This shape optimizing algorithm checks all points of a shape + and merges any two points which are within specified distance + to each other. Two close points are replaced by a single point, which has + mean coordinates of the removed points. + + Because of the fact that the algorithm performs points merging + while it goes through a shape, it may merge several points (more than 2) into a + single point, where distance between extreme points may be bigger + than the specified limit. For example, suppose + a case with 3 points, where 1st and 2nd points are close enough to be merged, but the + 3rd point is a little bit further. During merging of 1st and 2nd points, it may + happen that the new point with mean coordinates will get closer to the 3rd point, + so they will be merged also on next iteration of the algorithm. + + + For example, the below circle shape comprised of 65 points, can be optimized to 8 points + by setting to 28.
+ +
+
+ +
+ + + Interface for shape optimizing algorithms. + + + The interface defines set of methods, which should be implemented + by shape optimizing algorithms. These algorithms take input shape, which is defined + by a set of points (corners of convex hull, etc.), and remove some insignificant points from it, + which has little influence on the final shape's look. + + The shape optimizing algorithms can be useful in conjunction with such algorithms + like convex hull searching, which usually may provide many hull points, where some + of them are insignificant and could be removed. + + For additional details about shape optimizing algorithms, documentation of + particular algorithm should be studied. + + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum allowed distance between points, which are + merged during optimization (see ). + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Maximum allowed distance between points, which are merged during optimization, [0, ∞). + + + The property sets maximum allowed distance between two points of + a shape, which are replaced by single point with mean coordinates. + + Default value is set to 10. + + + + + 3D pose estimation algorithm (coplanar case). + + + The class implements an algorithm for 3D object's pose estimation from it's + 2D coordinates obtained by perspective projection, when the object is described coplanar points. + The idea of the implemented math and algorithm is described in "Iterative Pose Estimation using + Coplanar Feature Points" paper written by Oberkampf, Daniel DeMenthon and Larry Davis + (the implementation of the algorithm is very close translation of the pseudo code given by the + paper, so should be easy to follow). + + At this point the implementation works only with models described by 4 points, which is + the minimum number of points enough for 3D pose estimation. + + The 4 model's point are supposed to be coplanar, i.e. supposed to reside all within + same planer. See for none coplanar case. + + Read 3D Pose Estimation article for + additional information and samples. + + Sample usage: + + // points of real object - model + Vector3[] copositObject = new Vector3[4] + { + new Vector3( -56.5f, 0, 56.5f ), + new Vector3( 56.5f, 0, 56.5f ), + new Vector3( 56.5f, 0, -56.5f ), + new Vector3( -56.5f, 0, -56.5f ), + }; + // focal length of camera used to capture the object + float focalLength = 640; // depends on your camera or projection system + // initialize CoPOSIT object + CoplanarPosit coposit = new CoplanarPosit( copositObject, focalLength ); + + // 2D points of te object - projection + AForge.Point[] projectedPoints = new AForge.Point[4] + { + new AForge.Point( -77, 48 ), + new AForge.Point( 44, 66 ), + new AForge.Point( 75, -36 ), + new AForge.Point( -61, -58 ), + }; + // estimate pose + Matrix3x3 rotationMatrix; + Vector3 translationVector; + coposit.EstimatePose( projectedPoints, + out rotationMatrix, out translationVector ); + + + + + + + + + Initializes a new instance of the class. + + + Array of vectors containing coordinates of four real model's point. + Effective focal length of the camera used to capture the model. + + The model must have 4 points. + + + + + Estimate pose of a model from it's projected 2D coordinates. + + + 4 2D points of the model's projection. + Gets best estimation of object's rotation. + Gets best estimation of object's translation. + + 4 points must be be given for pose estimation. + + Because of the Coplanar POSIT algorithm's nature, it provides two pose estimations, + which are valid from the algorithm's math point of view. For each pose an error is calculated, + which specifies how good estimation fits to the specified real 2D coordinated. The method + provides the best estimation through its output parameters and + . This may be enough for many of the pose estimation application. + For those, who require checking the alternate pose estimation, it can be obtained using + and properties. + The calculated error is provided for both estimations through and + properties. + + + + + + Best estimated pose recently found. + + + The property keeps best estimated pose found by the latest call to . + The same estimated pose is provided by that method also and can be accessed through this property + for convenience. + + See also and . + + + + + + Best estimated translation recently found. + + + The property keeps best estimated translation found by the latest call to . + The same estimated translation is provided by that method also and can be accessed through this property + for convenience. + + See also and . + + + + + + Error of the best pose estimation. + + + The property keeps error of the best pose estimation, which is calculated as average + error between real angles of the specified quadrilateral and angles of the quadrilateral which + is a projection of the best pose estimation. The error is measured degrees in (angle). + + + + + + Alternate estimated pose recently found. + + + The property keeps alternate estimated pose found by the latest call to . + + See also and . + + + + + + Alternated estimated translation recently found. + + + The property keeps alternate estimated translation found by the latest call to . + + See also and . + + + + + + Error of the alternate pose estimation. + + + The property keeps error of the alternate pose estimation, which is calculated as average + error between real angles of the specified quadrilateral and angles of the quadrilateral which + is a projection of the alternate pose estimation. The error is measured in degrees (angle). + + + + + + Coordinates of the model points which pose should be estimated. + + + + + Effective focal length of the camera used to capture the model. + + + + + Shape optimizer, which removes obtuse angles (close to flat) from a shape. + + + This shape optimizing algorithm checks all adjacent edges of a shape + and substitutes any 2 edges with a single edge if angle between them is greater than + . The algorithm makes sure there are not obtuse angles in + a shape, which are very close to flat line. + + The shape optimizer does not optimize shapes to less than 3 points, so optimized + shape always will have at least 3 points. + + + For example, the below circle shape comprised of 65 points, can be optimized to 10 points + by setting to 160.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum acceptable angle between two edges of a shape (see ). + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Maximum angle between adjacent edges to keep in a shape, [140, 180]. + + + The property sets maximum angle between adjacent edges, which is kept + during optimization. All edges, which have a greater angle between them, are substituted + by a single edge. + + Default value is set to 160. + + + + + Collection of some gemetry tool methods. + + + + + + Calculate angle between to vectors measured in [0, 180] degrees range. + + + Starting point of both vectors. + Ending point of the first vector. + Ending point of the second vector. + + Returns angle between specified vectors measured in degrees. + + + + + Calculate minimum angle between two lines measured in [0, 90] degrees range. + + + A point on the first line. + Another point on the first line. + A point on the second line. + Another point on the second line. + + Returns minimum angle between two lines. + + It is preferred to use if it is required to calculate angle + multiple times for one of the lines. + + and are the same, + -OR- and are the same. + + + + + Graham scan algorithm for finding convex hull. + + + The class implements + Graham scan algorithm for finding convex hull + of a given set of points. + + Sample usage: + + // generate some random points + Random rand = new Random( ); + List<IntPoint> points = new List<IntPoint>( ); + + for ( int i = 0; i < 10; i++ ) + { + points.Add( new IntPoint( + rand.Next( 200 ) - 100, + rand.Next( 200 ) - 100 ) ); + } + + // find the convex hull + IConvexHullAlgorithm hullFinder = new GrahamConvexHull( ); + List<IntPoint> hull = hullFinder.FindHull( points ); + + + + + + + Interface defining methods for algorithms, which search for convex hull of the specified points' set. + + + The interface defines a method, which should be implemented by different classes + performing convex hull search for specified set of points. + + All algorithms, implementing this interface, should follow two rules for the found convex hull: + + the first point in the returned list is the point with lowest X coordinate (and with lowest Y if + there are several points with the same X value); + points in the returned list are given in counter clockwise order + (Cartesian + coordinate system). + + + + + + + + Find convex hull for the given set of points. + + + Set of points to search convex hull for. + + Returns set of points, which form a convex hull for the given . + + + + + Find convex hull for the given set of points. + + + Set of points to search convex hull for. + + Returns set of points, which form a convex hull for the given . + The first point in the list is the point with lowest X coordinate (and with lowest Y if there are + several points with the same X value). Points are provided in counter clockwise order + (Cartesian + coordinate system). + + + + + The class encapsulates 2D line and provides some tool methods related to lines. + + + The class provides some methods which are related to lines: + angle between lines, distance to point, finding intersection point, etc. + + + Generally, the equation of the line is y = * x + + . However, when is an Infinity, + would normally be meaningless, and it would be + impossible to distinguish the line x = 5 from the line x = -5. Therefore, + if is or + , the line's equation is instead + x = . + + Sample usage: + + // create a line + Line line = Line.FromPoints( new Point( 0, 0 ), new Point( 3, 4 ) ); + // check if it is vertical or horizontal + if ( line.IsVertical || line.IsHorizontal ) + { + // ... + } + + // get intersection point with another line + Point intersection = line.GetIntersectionWith( + Line.FromPoints( new Point( 3, 0 ), new Point( 0, 4 ) ) ); + + + + + + + Creates a that goes through the two specified points. + + + One point on the line. + Another point on the line. + + Returns a representing the line between + and . + + Thrown if the two points are the same. + + + + + Creates a with the specified slope and intercept. + + + The slope of the line + The Y-intercept of the line, unless the slope is an + infinity, in which case the line's equation is "x = intercept" instead. + + Returns a representing the specified line. + + The construction here follows the same rules as for the rest of this class. + Most lines are expressed as y = slope * x + intercept. Vertical lines, however, are + x = intercept. This is indicated by being true or by + returning or + . + + + + + Constructs a from a radius and an angle (in degrees). + + + The minimum distance from the line to the origin. + The angle of the vector from the origin to the line. + + Returns a representing the specified line. + + is the minimum distance from the origin + to the line, and is the counterclockwise rotation from + the positive X axis to the vector through the origin and normal to the line. + This means that if is in [0,180), the point on the line + closest to the origin is on the positive X or Y axes, or in quadrants I or II. Likewise, + if is in [180,360), the point on the line closest to the + origin is on the negative X or Y axes, or in quadrants III or IV. + + Thrown if radius is negative. + + + + + Constructs a from a point and an angle (in degrees). + + + The minimum distance from the line to the origin. + The angle of the normal vector from the origin to the line. + + is the counterclockwise rotation from + the positive X axis to the vector through the origin and normal to the line. + This means that if is in [0,180), the point on the line + closest to the origin is on the positive X or Y axes, or in quadrants I or II. Likewise, + if is in [180,360), the point on the line closest to the + origin is on the negative X or Y axes, or in quadrants III or IV. + + Returns a representing the specified line. + + + + + Calculate minimum angle between this line and the specified line measured in [0, 90] degrees range. + + + The line to find angle between. + + Returns minimum angle between lines. + + + + + Finds intersection point with the specified line. + + + Line to find intersection with. + + Returns intersection point with the specified line, or + if the lines are parallel and distinct. + + Thrown if the specified line is the same line as this line. + + + + + Finds, provided it exists, the intersection point with the specified . + + + to find intersection with. + + Returns intersection point with the specified , or , + if this line does not intersect with the segment. + + If the line and segment do not intersect, the method returns . + If the line and segment share multiple points, the method throws an . + + + Thrown if is a portion + of this line. + + + + + Calculate Euclidean distance between a point and a line. + + + The point to calculate distance to. + + Returns the Euclidean distance between this line and the specified point. Unlike + , this returns the distance from the infinite line. (0,0) is 0 units + from the line defined by (0,5) and (0,8), but is 5 units from the segment with those endpoints. + + + + + Equality operator - checks if two lines have equal parameters. + + + First line to check. + Second line to check. + + Returns if parameters of specified + lines are equal. + + + + + Inequality operator - checks if two lines have different parameters. + + + First line to check. + Second line to check. + + Returns if parameters of specified + lines are not equal. + + + + + Check if this instance of equals to the specified one. + + + Another line to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains values of the like in readable form. + + + + + Checks if the line vertical or not. + + + + + + Checks if the line horizontal or not. + + + + + Gets the slope of the line. + + + + + If not , gets the Line's Y-intercept. + If gets the line's X-intercept. + + + + + The class encapsulates 2D line segment and provides some tool methods related to lines. + + + The class provides some methods which are related to line segments: + distance to point, finding intersection point, etc. + + + A line segment may be converted to a . + + Sample usage: + + // create a segment + LineSegment segment = new LineSegment( new Point( 0, 0 ), new Point( 3, 4 ) ); + // get segment's length + float length = segment.Length; + + // get intersection point with a line + Point? intersection = segment.GetIntersectionWith( + new Line( new Point( -3, 8 ), new Point( 0, 4 ) ) ); + + + + + + + Initializes a new instance of the class. + + + Segment's start point. + Segment's end point. + + Thrown if the two points are the same. + + + + + Converts this to a by discarding + its endpoints and extending it infinitely in both directions. + + + The segment to convert to a . + + Returns a that contains this . + + + + + Calculate Euclidean distance between a point and a finite line segment. + + + The point to calculate the distance to. + + Returns the Euclidean distance between this line segment and the specified point. Unlike + , this returns the distance from the finite segment. (0,0) is 5 units + from the segment (0,5)-(0,8), but is 0 units from the line through those points. + + + + + Finds, provided it exists, the intersection point with the specified . + + + to find intersection with. + + Returns intersection point with the specified , or , if + the two segments do not intersect. + + If the two segments do not intersect, the method returns . If the two + segments share multiple points, this throws an . + + + Thrown if the segments overlap - if they have + multiple points in common. + + + + + Finds, provided it exists, the intersection point with the specified . + + + to find intersection with. + + Returns intersection point with the specified , or , if + the line does not intersect with this segment. + + If the line and the segment do not intersect, the method returns . If the line + and the segment share multiple points, the method throws an . + + + Thrown if this segment is a portion of + line. + + + + + Equality operator - checks if two line segments have equal parameters. + + + First line segment to check. + Second line segment to check. + + Returns if parameters of specified + line segments are equal. + + + + + Inequality operator - checks if two lines have different parameters. + + + First line segment to check. + Second line segment to check. + + Returns if parameters of specified + line segments are not equal. + + + + + Check if this instance of equals to the specified one. + + + Another line segment to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains values of the like in readable form. + + + + + Start point of the line segment. + + + + + End point of the line segment. + + + + + Get segment's length - Euclidean distance between its and points. + + + + + Shape optimizer, which removes points within close range to shapes' body. + + + This shape optimizing algorithm checks all points of the shape and + removes those of them, which are in a certain distance to a line connecting previous and + the next points. In other words, it goes through all adjacent edges of a shape and checks + what is the distance between the corner formed by these two edges and a possible edge, which + could be used as substitution of these edges. If the distance is equal or smaller than + the specified value, then the point is removed, + so the two edges are substituted by a single one. When optimization process is done, + the new shape has reduced amount of points and none of the removed points are further away + from the new shape than the specified limit. + + The shape optimizer does not optimize shapes to less than 3 points, so optimized + shape always will have at least 3 points. + + + For example, the below circle shape comprised of 65 points, can be optimized to 8 points + by setting to 10.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum allowed distance between removed points + and optimized shape (see ). + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Maximum allowed distance between removed points and optimized shape, [0, ∞). + + + The property sets maximum allowed distance between points removed from original + shape and optimized shape - none of the removed points are further away + from the new shape than the specified limit. + + + Default value is set to 5. + + + + + Set of tools for processing collection of points in 2D space. + + + The static class contains set of routines, which provide different + operations with collection of points in 2D space. For example, finding the + furthest point from a specified point or line. + + Sample usage: + + // create points' list + List<IntPoint> points = new List<IntPoint>( ); + points.Add( new IntPoint( 10, 10 ) ); + points.Add( new IntPoint( 20, 15 ) ); + points.Add( new IntPoint( 15, 30 ) ); + points.Add( new IntPoint( 40, 12 ) ); + points.Add( new IntPoint( 30, 20 ) ); + // get furthest point from the specified point + IntPoint p1 = PointsCloud.GetFurthestPoint( points, new IntPoint( 15, 15 ) ); + Console.WriteLine( p1.X + ", " + p1.Y ); + // get furthest point from line + IntPoint p2 = PointsCloud.GetFurthestPointFromLine( points, + new IntPoint( 50, 0 ), new IntPoint( 0, 50 ) ); + Console.WriteLine( p2.X + ", " + p2.Y ); + + + + + + + Shift cloud by adding specified value to all points in the collection. + + + Collection of points to shift their coordinates. + Point to shift by. + + + + + Get bounding rectangle of the specified list of points. + + + Collection of points to get bounding rectangle for. + Point comprised of smallest X and Y coordinates. + Point comprised of biggest X and Y coordinates. + + + + + Get center of gravity for the specified list of points. + + + List of points to calculate center of gravity for. + + Returns center of gravity (mean X-Y values) for the specified list of points. + + + + + Find furthest point from the specified point. + + + Collection of points to search furthest point in. + The point to search furthest point from. + + Returns a point, which is the furthest away from the . + + + + + Find two furthest points from the specified line. + + + Collection of points to search furthest points in. + First point forming the line. + Second point forming the line. + First found furthest point. + Second found furthest point (which is on the + opposite side from the line compared to the ); + + The method finds two furthest points from the specified line, + where one point is on one side from the line and the second point is on + another side from the line. + + + + + Find two furthest points from the specified line. + + + Collection of points to search furthest points in. + First point forming the line. + Second point forming the line. + First found furthest point. + Distance between the first found point and the given line. + Second found furthest point (which is on the + opposite side from the line compared to the ); + Distance between the second found point and the given line. + + The method finds two furthest points from the specified line, + where one point is on one side from the line and the second point is on + another side from the line. + + + + + Find the furthest point from the specified line. + + + Collection of points to search furthest point in. + First point forming the line. + Second point forming the line. + + Returns a point, which is the furthest away from the + specified line. + + The method finds the furthest point from the specified line. + Unlike the + method, this method find only one point, which is the furthest away from the line + regardless of side from the line. + + + + + Find the furthest point from the specified line. + + + Collection of points to search furthest points in. + First point forming the line. + Second point forming the line. + Distance between the furthest found point and the given line. + + Returns a point, which is the furthest away from the + specified line. + + The method finds the furthest point from the specified line. + Unlike the + method, this method find only one point, which is the furthest away from the line + regardless of side from the line. + + + + + Find corners of quadrilateral or triangular area, which contains the specified collection of points. + + + Collection of points to search quadrilateral for. + + Returns a list of 3 or 4 points, which are corners of the quadrilateral or + triangular area filled by specified collection of point. The first point in the list + is the point with lowest X coordinate (and with lowest Y if there are several points + with the same X value). The corners are provided in counter clockwise order + (Cartesian + coordinate system). + + The method makes an assumption that the specified collection of points + form some sort of quadrilateral/triangular area. With this assumption it tries to find corners + of the area. + + The method does not search for bounding quadrilateral/triangular area, + where all specified points are inside of the found quadrilateral/triangle. Some of the + specified points potentially may be outside of the found quadrilateral/triangle, since the + method takes corners only from the specified collection of points, but does not calculate such + to form true bounding quadrilateral/triangle. + + See property for additional information. + + + + + + Relative distortion limit allowed for quadrilaterals, [0.0, 0.25]. + + + The value of this property is used to calculate distortion limit used by + , when processing potential corners and making decision + if the provided points form a quadrilateral or a triangle. The distortion limit is + calculated as: + + distrtionLimit = RelativeDistortionLimit * ( W * H ) / 2, + + where W and H are width and height of the "points cloud" passed to the + . + + + To explain the idea behind distortion limit, let’s suppose that quadrilateral finder routine found + the next candidates for corners:
+
+ As we can see on the above picture, the shape there potentially can be a triangle, but not quadrilateral + (suppose that points list comes from a hand drawn picture or acquired from camera, so some + inaccuracy may exist). It may happen that the D point is just a distortion (noise, etc). + So the check what is the distance between a potential corner + (D in this case) and a line connecting two adjacent points (AB in this case). If the distance is smaller + then the distortion limit, then the point may be rejected, so the shape turns into triangle. +
+ + An exception is the case when both C and D points are very close to the AB line, + so both their distances are less than distortion limit. In this case both points will be accepted as corners - + the shape is just a flat quadrilateral. + + Default value is set to 0.1. +
+ +
+ + + 3D pose estimation algorithm. + + + The class implements an algorithm for 3D object's pose estimation from it's + 2D coordinates obtained by perspective projection, when the object is described none coplanar points. + The idea of the implemented math and algorithm is described in "Model-Based Object Pose in 25 + Lines of Code" paper written by Daniel F. DeMenthon and Larry S. Davis (the implementation of + the algorithm is almost 1 to 1 translation of the pseudo code given by the paper, so should + be easy to follow). + + At this point the implementation works only with models described by 4 points, which is + the minimum number of points enough for 3D pose estimation. + + The 4 model's point must not be coplanar, i.e. must not reside all within + same planer. See for coplanar case. + + Read 3D Pose Estimation article for + additional information and samples. + + Sample usage: + + // points of real object - model + Vector3[] positObject = new Vector3[4] + { + new Vector3( 28, 28, -28 ), + new Vector3( -28, 28, -28 ), + new Vector3( 28, -28, -28 ), + new Vector3( 28, 28, 28 ), + }; + // focal length of camera used to capture the object + float focalLength = 640; // depends on your camera or projection system + // initialize POSIT object + Posit posit = new Posit( positObject, focalLength ); + + // 2D points of te object - projection + AForge.Point[] projectedPoints = new AForge.Point[4] + { + new AForge.Point( -4, 29 ), + new AForge.Point( -180, 86 ), + new AForge.Point( -5, -102 ), + new AForge.Point( 76, 137 ), + }; + // estimate pose + Matrix3x3 rotationMatrix; + Vector3 translationVector; + posit.EstimatePose( projectedPoints, + out rotationMatrix, out translationVector ); + + + + + + + + + Initializes a new instance of the class. + + + Array of vectors containing coordinates of four real model's point (points + must not be on the same plane). + Effective focal length of the camera used to capture the model. + + The model must have 4 points. + + + + + Estimate pose of a model from it's projected 2D coordinates. + + + 4 2D points of the model's projection. + Gets object's rotation. + Gets object's translation. + + 4 points must be be given for pose estimation. + + + + + Coordinates of the model points which pose should be estimated. + + + + + Effective focal length of the camera used to capture the model. + + + + + Enumeration of some basic shape types. + + + + + Unknown shape type. + + + + + Circle shape. + + + + + Triangle shape. + + + + + Quadrilateral shape. + + + + + Some common sub types of some basic shapes. + + + + + Unrecognized sub type of a shape (generic shape which does not have + any specific sub type). + + + + + Quadrilateral with one pair of parallel sides. + + + + + Quadrilateral with two pairs of parallel sides. + + + + + Parallelogram with perpendicular adjacent sides. + + + + + Parallelogram with all sides equal. + + + + + Rectangle with all sides equal. + + + + + Triangle with all sides/angles equal. + + + + + Triangle with two sides/angles equal. + + + + + Triangle with a 90 degrees angle. + + + + + Triangle with a 90 degrees angle and other two angles are equal. + + + + + A class for checking simple geometrical shapes. + + + The class performs checking/detection of some simple geometrical + shapes for provided set of points (shape's edge points). During the check + the class goes through the list of all provided points and checks how accurately + they fit into assumed shape. + + All the shape checks allow some deviation of + points from the shape with assumed parameters. In other words it is allowed + that specified set of points may form a little bit distorted shape, which may be + still recognized. The allowed amount of distortion is controlled by two + properties ( and ), + which allow higher distortion level for bigger shapes and smaller amount of + distortion for smaller shapes. Checking specified set of points, the class + calculates mean distance between specified set of points and edge of the assumed + shape. If the mean distance is equal to or less than maximum allowed distance, + then a shape is recognized. The maximum allowed distance is calculated as: + + maxDistance = max( minAcceptableDistortion, relativeDistortionLimit * ( width + height ) / 2 ) + + , where width and height is the size of bounding rectangle for the + specified points. + + + See also and properties, + which set acceptable errors for polygon sub type checking done by + method. + + See the next article for details about the implemented algorithms: + Detecting some simple shapes in images. + + + Sample usage: + + private List<IntPoint> idealCicle = new List<IntPoint>( ); + private List<IntPoint> distorredCircle = new List<IntPoint>( ); + System.Random rand = new System.Random( ); + + // generate sample circles + float radius = 100; + + for ( int i = 0; i < 360; i += 10 ) + { + float angle = (float) ( (float) i / 180 * System.Math.PI ); + + // add point to ideal circle + idealCicle.Add( new IntPoint( + (int) ( radius * System.Math.Cos( angle ) ), + (int) ( radius * System.Math.Sin( angle ) ) ) ); + + // add a bit distortion for distorred cirlce + float distorredRadius = radius + rand.Next( 7 ) - 3; + + distorredCircle.Add( new IntPoint( + (int) ( distorredRadius * System.Math.Cos( angle ) ), + (int) ( distorredRadius * System.Math.Sin( angle ) ) ) ); + } + + // check shape + SimpleShapeChecker shapeChecker = new SimpleShapeChecker( ); + + if ( shapeChecker.IsCircle( idealCicle ) ) + { + // ... + } + + if ( shapeChecker.CheckShapeType( distorredCircle ) == ShapeType.Circle ) + { + // ... + } + + + + + + + Check type of the shape formed by specified points. + + + Shape's points to check. + + Returns type of the detected shape. + + + + + Check if the specified set of points form a circle shape. + + + Shape's points to check. + + Returns if the specified set of points form a + circle shape or otherwise. + + Circle shape must contain at least 8 points to be recognized. + The method returns always, of number of points in the specified + shape is less than 8. + + + + + Check if the specified set of points form a circle shape. + + + Shape's points to check. + Receives circle's center on successful return. + Receives circle's radius on successful return. + + Returns if the specified set of points form a + circle shape or otherwise. + + Circle shape must contain at least 8 points to be recognized. + The method returns always, of number of points in the specified + shape is less than 8. + + + + + Check if the specified set of points form a quadrilateral shape. + + + Shape's points to check. + + Returns if the specified set of points form a + quadrilateral shape or otherwise. + + + + + Check if the specified set of points form a quadrilateral shape. + + + Shape's points to check. + List of quadrilateral corners on successful return. + + Returns if the specified set of points form a + quadrilateral shape or otherwise. + + + + + Check if the specified set of points form a triangle shape. + + + Shape's points to check. + + Returns if the specified set of points form a + triangle shape or otherwise. + + + + + Check if the specified set of points form a triangle shape. + + + Shape's points to check. + List of triangle corners on successful return. + + Returns if the specified set of points form a + triangle shape or otherwise. + + + + + Check if the specified set of points form a convex polygon shape. + + + Shape's points to check. + List of polygon corners on successful return. + + Returns if the specified set of points form a + convex polygon shape or otherwise. + + The method is able to detect only triangles and quadrilaterals + for now. Check number of detected corners to resolve type of the detected polygon. + + + + + + Check sub type of a convex polygon. + + + Corners of the convex polygon to check. + + Return detected sub type of the specified shape. + + The method check corners of a convex polygon detecting + its subtype. Polygon's corners are usually retrieved using + method, but can be any list of 3-4 points (only sub types of triangles and + quadrilateral are checked). + + See and properties, + which set acceptable errors for polygon sub type checking. + + + + + + Check if a shape specified by the set of points fits a convex polygon + specified by the set of corners. + + + Shape's points to check. + Corners of convex polygon to check fitting into. + + Returns if the specified shape fits + the specified convex polygon or otherwise. + + The method checks if the set of specified points form the same shape + as the set of provided corners. + + + + + Minimum value of allowed shapes' distortion. + + + The property sets minimum value for allowed shapes' + distortion (in pixels). See documentation to + class for more details about this property. + + Default value is set to 0.5. + + + + + + Maximum value of allowed shapes' distortion, [0, 1]. + + + The property sets maximum value for allowed shapes' + distortion. The value is measured in [0, 1] range, which corresponds + to [0%, 100%] range, which means that maximum allowed shapes' + distortion is calculated relatively to shape's size. This results to + higher allowed distortion level for bigger shapes and smaller allowed + distortion for smaller shapers. See documentation to + class for more details about this property. + + Default value is set to 0.03 (3%). + + + + + + Maximum allowed angle error in degrees, [0, 20]. + + + The value sets maximum allowed difference between two angles to + treat them as equal. It is used by method to + check for parallel lines and angles of triangles and quadrilaterals. + For example, if angle between two lines equals 5 degrees and this properties value + is set to 7, then two compared lines are treated as parallel. + + Default value is set to 7. + + + + + + Maximum allowed difference in sides' length (relative to shapes' size), [0, 1]. + + + The values sets maximum allowed difference between two sides' length + to treat them as equal. The error value is set relative to shapes size and measured + in [0, 1] range, which corresponds to [0%, 100%] range. Absolute length error in pixels + is calculated as: + + LengthError * ( width + height ) / 2 + + , where width and height is the size of bounding rectangle for the + specified shape. + + + Default value is set to 0.1 (10%). + + + + + + Histogram for discrete random values. + + + The class wraps histogram for discrete stochastic function, which is represented + by integer array, where indexes of the array are treated as values of the stochastic function, + but array values are treated as "probabilities" (total amount of hits). + + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get mean and standard deviation values + Console.WriteLine( "mean = " + histogram.Mean + ", std.dev = " + histogram.StdDev ); + + + + + + + Initializes a new instance of the class. + + + Values of the histogram. + + Indexes of the input array are treated as values of stochastic function, + but array values are treated as "probabilities" (total amount of hits). + + + + + + Get range around median containing specified percentage of values. + + + Values percentage around median. + + Returns the range which containes specifies percentage of values. + + The method calculates range of stochastic variable, which summary probability + comprises the specified percentage of histogram's hits. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get 50% range + IntRange range = histogram.GetRange( 0.5 ); + // show the range ([4, 6]) + Console.WriteLine( "50% range = [" + range.Min + ", " + range.Max + "]" ); + + + + + + + Update statistical value of the histogram. + + + The method recalculates statistical values of the histogram, like mean, + standard deviation, etc., in the case if histogram's values were changed directly. + The method should be called only in the case if histogram's values were retrieved + through property and updated after that. + + + + + + Values of the histogram. + + + Indexes of this array are treated as values of stochastic function, + but array values are treated as "probabilities" (total amount of hits). + + + + + + Mean value. + + + The property allows to retrieve mean value of the histogram. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get mean value (= 4.862) + Console.WriteLine( "mean = " + histogram.Mean.ToString( "F3" ) ); + + + + + + + Standard deviation. + + + The property allows to retrieve standard deviation value of the histogram. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get std.dev. value (= 1.136) + Console.WriteLine( "std.dev. = " + histogram.StdDev.ToString( "F3" ) ); + + + + + + + Median value. + + + The property allows to retrieve median value of the histogram. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get median value (= 5) + Console.WriteLine( "median = " + histogram.Median ); + + + + + + + Minimum value. + + + The property allows to retrieve minimum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get min value (= 2) + Console.WriteLine( "min = " + histogram.Min ); + + + + + + + Maximum value. + + + The property allows to retrieve maximum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get max value (= 6) + Console.WriteLine( "max = " + histogram.Max ); + + + + + + + Total count of values. + + + The property represents total count of values contributed to the histogram, which is + essentially sum of the array. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get total value (= 29) + Console.WriteLine( "total = " + histogram.TotalCount ); + + + + + + + A structure representing 3x3 matrix. + + + The structure incapsulates elements of a 3x3 matrix and + provides some operations with it. + + + + + Row 0 column 0 element of the matrix. + + + + + Row 0 column 1 element of the matrix. + + + + + Row 0 column 2 element of the matrix. + + + + + Row 1 column 0 element of the matrix. + + + + + Row 1 column 1 element of the matrix. + + + + + Row 1 column 2 element of the matrix. + + + + + Row 2 column 0 element of the matrix. + + + + + Row 2 column 1 element of the matrix. + + + + + Row 2 column 2 element of the matrix. + + + + + Returns array representation of the matrix. + + + Returns array which contains all elements of the matrix in the row-major order. + + + + + Creates rotation matrix around Y axis. + + + Rotation angle around Y axis in radians. + + Returns rotation matrix to rotate an object around Y axis. + + + + + Creates rotation matrix around X axis. + + + Rotation angle around X axis in radians. + + Returns rotation matrix to rotate an object around X axis. + + + + + Creates rotation matrix around Z axis. + + + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around Z axis. + + + + + Creates rotation matrix to rotate an object around X, Y and Z axes. + + + Rotation angle around Y axis in radians. + Rotation angle around X axis in radians. + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around all 3 axes. + + + The routine assumes roll-pitch-yaw rotation order, when creating rotation + matrix, i.e. an object is first rotated around Z axis, then around X axis and finally around + Y axis. + + + + + + Extract rotation angles from the rotation matrix. + + + Extracted rotation angle around Y axis in radians. + Extracted rotation angle around X axis in radians. + Extracted rotation angle around Z axis in radians. + + The routine assumes roll-pitch-yaw rotation order when extracting rotation angle. + Using extracted angles with the should provide same rotation matrix. + + + The method assumes the provided matrix represent valid rotation matrix. + + Sample usage: + + // assume we have a rotation matrix created like this + float yaw = 10.0f / 180 * Math.PI; + float pitch = 30.0f / 180 * Math.PI; + float roll = 45.0f / 180 * Math.PI; + + Matrix3x3 rotationMatrix = Matrix3x3.CreateFromYawPitchRoll( yaw, pitch, roll ); + // ... + + // now somewhere in the code you may want to get rotation + // angles back from a matrix assuming same rotation order + float extractedYaw; + float extractedPitch; + float extractedRoll; + + rotation.ExtractYawPitchRoll( out extractedYaw, out extractedPitch, out extractedRoll ); + + + + + + + Creates a matrix from 3 rows specified as vectors. + + + First row of the matrix to create. + Second row of the matrix to create. + Third row of the matrix to create. + + Returns a matrix from specified rows. + + + + + Creates a matrix from 3 columns specified as vectors. + + + First column of the matrix to create. + Second column of the matrix to create. + Third column of the matrix to create. + + Returns a matrix from specified columns. + + + + + Creates a diagonal matrix using the specified vector as diagonal elements. + + + Vector to use for diagonal elements of the matrix. + + Returns a diagonal matrix. + + + + + Get row of the matrix. + + + Row index to get, [0, 2]. + + Returns specified row of the matrix as a vector. + + Invalid row index was specified. + + + + + Get column of the matrix. + + + Column index to get, [0, 2]. + + Returns specified column of the matrix as a vector. + + Invalid column index was specified. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Multiplies matrix by the specified factor. + + + Matrix to multiply. + Factor to multiple the specified matrix by. + + Returns new matrix with all components equal to corresponding components of the + specified matrix multiples by the specified factor. + + + + + Multiplies matrix by the specified factor. + + + Matrix to multiply. + Factor to multiple the specified matrix by. + + Returns new matrix with all components equal to corresponding components of the + specified matrix multiples by the specified factor. + + + + + Adds specified value to all components of the specified matrix. + + + Matrix to add value to. + Value to add to all components of the specified matrix. + + Returns new matrix with all components equal to corresponding components of the + specified matrix increased by the specified value. + + + + + Adds specified value to all components of the specified matrix. + + + Matrix to add value to. + Value to add to all components of the specified matrix. + + Returns new matrix with all components equal to corresponding components of the + specified matrix increased by the specified value. + + + + + Tests whether two specified matrices are equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether two specified matrices are not equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are not equal or otherwise. + + + + + Tests whether the matrix equals to the specified one. + + + The matrix to test equality with. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether the matrix equals to the specified object. + + + The object to test equality with. + + Returns if the matrix equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Transpose the matrix, AT. + + + Return a matrix which equals to transposition of this matrix. + + + + + Multiply the matrix by its transposition, A*AT. + + + Returns a matrix which is the result of multiplying this matrix by its transposition. + + + + + Multiply transposition of this matrix by itself, AT*A. + + + Returns a matrix which is the result of multiplying this matrix's transposition by itself. + + + + + Calculate adjugate of the matrix, adj(A). + + + Returns adjugate of the matrix. + + + + + Calculate inverse of the matrix, A-1. + + + Returns inverse of the matrix. + + Cannot calculate inverse of the matrix since it is singular. + + + + + Calculate pseudo inverse of the matrix, A+. + + + Returns pseudo inverse of the matrix. + + The pseudo inverse of the matrix is calculate through its + as V*E+*UT. + + + + + Calculate Singular Value Decomposition (SVD) of the matrix, such as A=U*E*VT. + + + Output parameter which gets 3x3 U matrix. + Output parameter which gets diagonal elements of the E matrix. + Output parameter which gets 3x3 V matrix. + + Having components U, E and V the source matrix can be reproduced using below code: + + Matrix3x3 source = u * Matrix3x3.Diagonal( e ) * v.Transpose( ); + + + + + + + Provides an identity matrix with all diagonal elements set to 1. + + + + + Calculates determinant of the matrix. + + + + + A structure representing 4x4 matrix. + + + The structure incapsulates elements of a 4x4 matrix and + provides some operations with it. + + + + + Row 0 column 0 element of the matrix. + + + + + + Row 0 column 1 element of the matrix. + + + + + Row 0 column 2 element of the matrix. + + + + + Row 0 column 3 element of the matrix. + + + + + + Row 1 column 0 element of the matrix. + + + + + + Row 1 column 1 element of the matrix. + + + + + + Row 1 column 2 element of the matrix. + + + + + + Row 1 column 3 element of the matrix. + + + + + + Row 2 column 0 element of the matrix. + + + + + + Row 2 column 1 element of the matrix. + + + + + + Row 2 column 2 element of the matrix. + + + + + Row 2 column 3 element of the matrix. + + + + + Row 3 column 0 element of the matrix. + + + + + + Row 3 column 1 element of the matrix. + + + + + + Row 3 column 2 element of the matrix. + + + + + + Row 3 column 3 element of the matrix. + + + + + + Returns array representation of the matrix. + + + Returns array which contains all elements of the matrix in the row-major order. + + + + + Creates rotation matrix around Y axis. + + + Rotation angle around Y axis in radians. + + Returns rotation matrix to rotate an object around Y axis. + + + + + Creates rotation matrix around X axis. + + + Rotation angle around X axis in radians. + + Returns rotation matrix to rotate an object around X axis. + + + + + Creates rotation matrix around Z axis. + + + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around Z axis. + + + + + Creates rotation matrix to rotate an object around X, Y and Z axes. + + + Rotation angle around Y axis in radians. + Rotation angle around X axis in radians. + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around all 3 axes. + + + The routine assumes roll-pitch-yaw rotation order, when creating rotation + matrix, i.e. an object is first rotated around Z axis, then around X axis and finally around + Y axis. + + + + + + Extract rotation angles from the rotation matrix. + + + Extracted rotation angle around Y axis in radians. + Extracted rotation angle around X axis in radians. + Extracted rotation angle around Z axis in radians. + + The routine assumes roll-pitch-yaw rotation order when extracting rotation angle. + Using extracted angles with the should provide same rotation matrix. + + + The method assumes the provided matrix represent valid rotation matrix. + + Sample usage: + + // assume we have a rotation matrix created like this + float yaw = 10.0f / 180 * Math.PI; + float pitch = 30.0f / 180 * Math.PI; + float roll = 45.0f / 180 * Math.PI; + + Matrix4x4 rotationMatrix = Matrix3x3.CreateFromYawPitchRoll( yaw, pitch, roll ); + // ... + + // now somewhere in the code you may want to get rotation + // angles back from a matrix assuming same rotation order + float extractedYaw; + float extractedPitch; + float extractedRoll; + + rotation.ExtractYawPitchRoll( out extractedYaw, out extractedPitch, out extractedRoll ); + + + + + + + Creates 4x4 tranformation matrix from 3x3 rotation matrix. + + + Source 3x3 rotation matrix. + + Returns 4x4 rotation matrix. + + The source 3x3 rotation matrix is copied into the top left corner of the result 4x4 matrix, + i.e. it represents 0th, 1st and 2nd row/column. The element is set to 1 and the rest + elements of 3rd row and 3rd column are set to zeros. + + + + + Creates translation matrix for the specified movement amount. + + + Vector which set direction and amount of movement. + + Returns translation matrix. + + The specified vector is copied to the 3rd column of the result matrix. + All diagonal elements are set to 1. The rest of matrix is initialized with zeros. + + + + + Creates a view matrix for the specified camera position and target point. + + + Position of camera. + Target point towards which camera is pointing. + + Returns a view matrix. + + Camera's "up" vector is supposed to be (0, 1, 0). + + + + + Creates a perspective projection matrix. + + + Width of the view volume at the near view plane. + Height of the view volume at the near view plane. + Distance to the near view plane. + Distance to the far view plane. + + Return a perspective projection matrix. + + Both near and far view planes' distances must be greater than zero. + Near plane must be closer than the far plane. + + + + + Creates a matrix from 4 rows specified as vectors. + + + First row of the matrix to create. + Second row of the matrix to create. + Third row of the matrix to create. + Fourth row of the matrix to create. + + Returns a matrix from specified rows. + + + + + Creates a matrix from 4 columns specified as vectors. + + + First column of the matrix to create. + Second column of the matrix to create. + Third column of the matrix to create. + Fourth column of the matrix to create. + + Returns a matrix from specified columns. + + + + + Creates a diagonal matrix using the specified vector as diagonal elements. + + + Vector to use for diagonal elements of the matrix. + + Returns a diagonal matrix. + + + + + Get row of the matrix. + + + Row index to get, [0, 3]. + + Returns specified row of the matrix as a vector. + + Invalid row index was specified. + + + + + Get column of the matrix. + + + Column index to get, [0, 3]. + + Returns specified column of the matrix as a vector. + + Invalid column index was specified. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Tests whether two specified matrices are equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether two specified matrices are not equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are not equal or otherwise. + + + + + Tests whether the matrix equals to the specified one. + + + The matrix to test equality with. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether the matrix equals to the specified object. + + + The object to test equality with. + + Returns if the matrix equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Provides an identity matrix with all diagonal elements set to 1. + + + + + + Cosine distance metric. + + + This class represents the cosine distance metric (1 - cosine similarity) + . + + + Sample usage: + + // instantiate new distance class + CosineDistance dist = new CosineDistance(); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Interface for distance metric algorithms. + + + The interface defines a set of methods implemented + by distance metric algorithms. These algorithms typically take a set of points and return a + distance measure of the x and y coordinates. In this case, the points are represented by two vectors. + + Distance metric algorithms are used in many machine learning algorithms e.g K-nearest neighbor + and K-means clustering. + + For additional details about distance metrics, documentation of the + particular algorithms should be studied. + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns distance measurement determined by the given algorithm. + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Cosine distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Cosine similarity metric. + + + This class represents the + Cosine Similarity metric. + + Sample usage: + + // instantiate new similarity class + CosineSimilarity sim = new CosineSimilarity( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get similarity between the two vectors + double similarityScore = sim.GetSimilarityScore( p, q ); + + + + + + + Interface for similarity algorithms. + + + The interface defines a set of methods implemented + by similarity and correlation algorithms. These algorithms typically take a set of points and return a + similarity score for the two vectors. + + Similarity and correlation algorithms are used in many machine learning and collaborative + filtering algorithms. + + For additional details about similarity metrics, documentation of the + particular algorithms should be studied. + + + + + + Returns similarity score for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns similarity score determined by the given algorithm. + + + + + Returns similarity score for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Cosine similarity between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Euclidean distance metric. + + + This class represents the + Euclidean distance metric. + + Sample usage: + + // instantiate new distance class + EuclideanDistance dist = new EuclideanDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Euclidean distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Euclidean similarity metric. + + + This class represents the + Euclidean Similarity metric, + which is calculated as 1.0 / ( 1.0 + EuclideanDistance ). + + Sample usage: + + // instantiate new similarity class + EuclideanSimilarity sim = new EuclideanSimilarity( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get simirarity between the two vectors + double similarityScore = sim.GetSimilarityScore( p, q ); + + + + + + + Returns similarity score for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Euclidean similarity between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Hamming distance metric. + + + This class represents the + Hamming distance metric. + + Sample usage: + + // instantiate new distance class + HammingDistance dist = new HammingDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Hamming distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Jaccard distance metric. + + + This class represents the + Jaccard distance metric. + + Sample usage: + + // instantiate new distance class + JaccardDistance dist = new JaccardDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Jaccard distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Manhattan distance metric. + + + This class represents the + Manhattan distance metric + (aka City Block and Taxi Cab distance). + + Sample usage: + + // instantiate new distance class + ManhattanDistance dist = new ManhattanDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Manhattan distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Pearson correlation metric. + + + This class represents the + Pearson correlation metric. + + Sample usage: + + // instantiate new pearson correlation class + PearsonCorrelation cor = new PearsonCorrelation( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get correlation between the two vectors + double correlation = cor.GetSimilarityScore( p, q ); + + + + + + + Returns the pearson correlation for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Pearson correlation between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Perlin noise function. + + + The class implements 1-D and 2-D Perlin noise functions, which represent + sum of several smooth noise functions with different frequency and amplitude. The description + of Perlin noise function and its calculation may be found on + Hugo Elias's page. + + + The number of noise functions, which comprise the resulting Perlin noise function, is + set by property. Amplitude and frequency values for each octave + start from values, which are set by and + properties. + + Sample usage (clouds effect): + + // create Perlin noise function + PerlinNoise noise = new PerlinNoise( 8, 0.5, 1.0 / 32 ); + // generate clouds effect + float[,] texture = new float[height, width]; + + for ( int y = 0; y < height; y++ ) + { + for ( int x = 0; x < width; x++ ) + { + texture[y, x] = + Math.Max( 0.0f, Math.Min( 1.0f, + (float) noise.Function2D( x, y ) * 0.5f + 0.5f + ) ); + } + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Number of octaves (see property). + Persistence value (see property). + + + + + Initializes a new instance of the class. + + + Number of octaves (see property). + Persistence value (see property). + Initial frequency (see property). + Initial amplitude (see property). + + + + + 1-D Perlin noise function. + + + x value. + + Returns function's value at point . + + + + + 2-D Perlin noise function. + + + x value. + y value. + + Returns function's value at point (, ). + + + + + Ordinary noise function + + + + + + Smoothed noise. + + + + + Cosine interpolation. + + + + + Initial frequency. + + + The property sets initial frequency of the first octave. Frequencies for + next octaves are calculated using the next equation:
+ frequencyi = * 2i, + where i = [0, ). +
+ + Default value is set to 1. +
+ +
+ + + Initial amplitude. + + + The property sets initial amplitude of the first octave. Amplitudes for + next octaves are calculated using the next equation:
+ amplitudei = * i, + where i = [0, ). +
+ + Default value is set to 1. +
+ +
+ + + Persistence value. + + + The property sets so called persistence value, which controls the way + how amplitude is calculated for each octave comprising + the Perlin noise function. + + Default value is set to 0.65. + + + + + + Number of octaves, [1, 32]. + + + The property sets the number of noise functions, which sum up the resulting + Perlin noise function. + + Default value is set to 4. + + + + + + Exponential random numbers generator. + + + The random number generator generates exponential + random numbers with specified rate value (lambda). + + The generator uses generator as a base + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new ExponentialGenerator( 5 ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Interface for random numbers generators. + + + The interface defines set of methods and properties, which should + be implemented by different algorithms for random numbers generatation. + + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + + + + Mean value of generator. + + + + + + Variance value of generator. + + + + + + Initializes a new instance of the class. + + + Rate value. + + Rate value should be greater than zero. + + + + + Initializes a new instance of the class. + + + Rate value (inverse mean). + Seed value to initialize random numbers generator. + + Rate value should be greater than zero. + + + + + Generate next random number + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Rate value (inverse mean). + + + The rate value should be positive and non zero. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Gaussian random numbers generator. + + + The random number generator generates gaussian + random numbers with specified mean and standard deviation values. + + The generator uses generator as base + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new GaussianGenerator( 5.0, 1.5 ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + Mean value. + Standard deviation value. + + + + + Initializes a new instance of the class. + + + Mean value. + Standard deviation value. + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Standard deviation value. + + + + + + Standard random numbers generator. + + + The random number generator generates gaussian + random numbers with zero mean and standard deviation of one. The generator + implements polar form of the Box-Muller transformation. + + The generator uses generator as a base + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new StandardGenerator( ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Uniform random numbers generator. + + + The random numbers generator generates uniformly + distributed numbers in the specified range - values + are greater or equal to minimum range's value and less than maximum range's + value. + + The generator uses generator + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new UniformGenerator( new Range( 50, 100 ) ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + Random numbers range. + + Initializes random numbers generator with zero seed. + + + + + Initializes a new instance of the class. + + + Random numbers range. + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Random numbers range. + + + Range of random numbers to generate. Generated numbers are + greater or equal to minimum range's value and less than maximum range's + value. + + + + + + Uniform random numbers generator in the range of [0, 1). + + + The random number generator generates uniformly + distributed numbers in the range of [0, 1) - greater or equal to 0.0 + and less than 1.0. + + At this point the generator is based on the + internal .NET generator, but may be rewritten to + use faster generation algorithm. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new UniformOneGenerator( ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + Initializes random numbers generator with zero seed. + + + + + Initializes a new instance of the class. + + + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Set of statistics functions. + + + The class represents collection of simple functions used + in statistics. + + + + + Calculate mean value. + + + Histogram array. + + Returns mean value. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate mean value + double mean = Statistics.Mean( histogram ); + // output it (5.759) + Console.WriteLine( "mean = " + mean.ToString( "F3" ) ); + + + + + + + Calculate standard deviation. + + + Histogram array. + + Returns value of standard deviation. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate standard deviation value + double stdDev = Statistics.StdDev( histogram ); + // output it (1.999) + Console.WriteLine( "std.dev. = " + stdDev.ToString( "F3" ) ); + + + + + + + Calculate standard deviation. + + + Histogram array. + Mean value of the histogram. + + Returns value of standard deviation. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + The method is an equevalent to the method, + but it relieas on the passed mean value, which is previously calculated + using method. + + + + + + Calculate median value. + + + Histogram array. + + Returns value of median. + + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + The median value is calculated accumulating histogram's + values starting from the left point until the sum reaches 50% of + histogram's sum. + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate median value + int median = Statistics.Median( histogram ); + // output it (6) + Console.WriteLine( "median = " + median ); + + + + + + + Get range around median containing specified percentage of values. + + + Histogram array. + Values percentage around median. + + Returns the range which containes specifies percentage + of values. + + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + The method calculates range of stochastic variable, which summary probability + comprises the specified percentage of histogram's hits. + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // get 75% range around median + IntRange range = Statistics.GetRange( histogram, 0.75 ); + // output it ([4, 8]) + Console.WriteLine( "range = [" + range.Min + ", " + range.Max + "]" ); + + + + + + + Calculate entropy value. + + + Histogram array. + + Returns entropy value of the specified histagram array. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Sample usage: + + // create histogram array with 2 values of equal probabilities + int[] histogram1 = new int[2] { 3, 3 }; + // calculate entropy + double entropy1 = Statistics.Entropy( histogram1 ); + // output it (1.000) + Console.WriteLine( "entropy1 = " + entropy1.ToString( "F3" ) ); + + // create histogram array with 4 values of equal probabilities + int[] histogram2 = new int[4] { 1, 1, 1, 1 }; + // calculate entropy + double entropy2 = Statistics.Entropy( histogram2 ); + // output it (2.000) + Console.WriteLine( "entropy2 = " + entropy2.ToString( "F3" ) ); + + // create histogram array with 4 values of different probabilities + int[] histogram3 = new int[4] { 1, 2, 3, 4 }; + // calculate entropy + double entropy3 = Statistics.Entropy( histogram3 ); + // output it (1.846) + Console.WriteLine( "entropy3 = " + entropy3.ToString( "F3" ) ); + + + + + + + Calculate mode value. + + + Histogram array. + + Returns mode value of the histogram array. + + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Returns the minimum mode value if the specified histogram is multimodal. + + Sample usage: + + // create array + int[] values = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate mode value + int mode = Statistics.Mode( values ); + // output it (7) + Console.WriteLine( "mode = " + mode ); + + + + + + + Set of tool functions. + + + The class contains different utility functions. + + + + + Calculates power of 2. + + + Power to raise in. + + Returns specified power of 2 in the case if power is in the range of + [0, 30]. Otherwise returns 0. + + + + + Checks if the specified integer is power of 2. + + + Integer number to check. + + Returns true if the specified number is power of 2. + Otherwise returns false. + + + + + Get base of binary logarithm. + + + Source integer number. + + Power of the number (base of binary logarithm). + + + + + 3D Vector structure with X, Y and Z coordinates. + + + The structure incapsulates X, Y and Z coordinates of a 3D vector and + provides some operations with it. + + + + + X coordinate of the vector. + + + + + Y coordinate of the vector. + + + + + Z coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + X coordinate of the vector. + Y coordinate of the vector. + Z coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + Value, which is set to all 3 coordinates of the vector. + + + + + Returns a string representation of this object. + + + A string representation of this object. + + + + + Returns array representation of the vector. + + + Array with 3 values containing X/Y/Z coordinates. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Tests whether two specified vectors are equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether two specified vectors are not equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are not equal or otherwise. + + + + + Tests whether the vector equals to the specified one. + + + The vector to test equality with. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether the vector equals to the specified object. + + + The object to test equality with. + + Returns if the vector equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Normalizes the vector by dividing it’s all coordinates with the vector's norm. + + + Returns the value of vectors’ norm before normalization. + + + + + Inverse the vector. + + + Returns a vector with all coordinates equal to 1.0 divided by the value of corresponding coordinate + in this vector (or equal to 0.0 if this vector has corresponding coordinate also set to 0.0). + + + + + Calculate absolute values of the vector. + + + Returns a vector with all coordinates equal to absolute values of this vector's coordinates. + + + + + Calculates cross product of two vectors. + + + First vector to use for cross product calculation. + Second vector to use for cross product calculation. + + Returns cross product of the two specified vectors. + + + + + Calculates dot product of two vectors. + + + First vector to use for dot product calculation. + Second vector to use for dot product calculation. + + Returns dot product of the two specified vectors. + + + + + Converts the vector to a 4D vector. + + + Returns 4D vector which is an extension of the 3D vector. + + The method returns a 4D vector which has X, Y and Z coordinates equal to the + coordinates of this 3D vector and W coordinate set to 1.0. + + + + + + Returns maximum value of the vector. + + + Returns maximum value of all 3 vector's coordinates. + + + + + Returns minimum value of the vector. + + + Returns minimum value of all 3 vector's coordinates. + + + + + Returns index of the coordinate with maximum value. + + + Returns index of the coordinate, which has the maximum value - 0 for X, + 1 for Y or 2 for Z. + + If there are multiple coordinates which have the same maximum value, the + property returns smallest index. + + + + + + Returns index of the coordinate with minimum value. + + + Returns index of the coordinate, which has the minimum value - 0 for X, + 1 for Y or 2 for Z. + + If there are multiple coordinates which have the same minimum value, the + property returns smallest index. + + + + + + Returns vector's norm. + + + Returns Euclidean norm of the vector, which is a + square root of the sum: X2+Y2+Z2. + + + + + + Returns square of the vector's norm. + + + Return X2+Y2+Z2, which is + a square of vector's norm or a dot product of this vector + with itself. + + + + + 4D Vector structure with X, Y, Z and W coordinates. + + + The structure incapsulates X, Y, Z and W coordinates of a 4D vector and + provides some operations with it. + + + + + X coordinate of the vector. + + + + + Y coordinate of the vector. + + + + + Z coordinate of the vector. + + + + + W coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + X coordinate of the vector. + Y coordinate of the vector. + Z coordinate of the vector. + W coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + Value, which is set to all 4 coordinates of the vector. + + + + + Returns a string representation of this object. + + + A string representation of this object. + + + + + Returns array representation of the vector. + + + Array with 4 values containing X/Y/Z/W coordinates. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Tests whether two specified vectors are equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether two specified vectors are not equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are not equal or otherwise. + + + + + Tests whether the vector equals to the specified one. + + + The vector to test equality with. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether the vector equals to the specified object. + + + The object to test equality with. + + Returns if the vector equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Normalizes the vector by dividing it’s all coordinates with the vector's norm. + + + Returns the value of vectors’ norm before normalization. + + + + + Inverse the vector. + + + Returns a vector with all coordinates equal to 1.0 divided by the value of corresponding coordinate + in this vector (or equal to 0.0 if this vector has corresponding coordinate also set to 0.0). + + + + + Calculate absolute values of the vector. + + + Returns a vector with all coordinates equal to absolute values of this vector's coordinates. + + + + + Calculates dot product of two vectors. + + + First vector to use for dot product calculation. + Second vector to use for dot product calculation. + + Returns dot product of the two specified vectors. + + + + + Converts the vector to a 3D vector. + + + Returns 3D vector which has X/Y/Z coordinates equal to X/Y/Z coordinates + of this vector divided by . + + + + + Returns maximum value of the vector. + + + Returns maximum value of all 4 vector's coordinates. + + + + + Returns minimum value of the vector. + + + Returns minimum value of all 4 vector's coordinates. + + + + + Returns index of the coordinate with maximum value. + + + Returns index of the coordinate, which has the maximum value - 0 for X, + 1 for Y, 2 for Z or 3 for W. + + If there are multiple coordinates which have the same maximum value, the + property returns smallest index. + + + + + + Returns index of the coordinate with minimum value. + + + Returns index of the coordinate, which has the minimum value - 0 for X, + 1 for Y, 2 for Z or 3 for W. + + If there are multiple coordinates which have the same minimum value, the + property returns smallest index. + + + + + + Returns vector's norm. + + + Returns Euclidean norm of the vector, which is a + square root of the sum: X2+Y2+Z2+W2. + + + + + + Returns square of the vector's norm. + + + Return X2+Y2+Z2+W2, which is + a square of vector's norm or a dot product of this vector + with itself. + + + + + Static extension class for manipulating index vectors (i.e. vectors + containing integers that represent positions within a collection or + array. + + + + + + Returns a vector of the specified containing + indices (0, 1, 2, ... max) up to a given maximum number and in random + order. The vector can grow up to to , but does + not include max among its values. + + + + In other words, this return a sample of size k from a population + of size n, where k is the parameter + and n is the parameter . + + + + + var a = Indices.Random(3, 10); // a possible output is { 1, 7, 4 }; + var b = Indices.Random(10, 10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5, 6)) + { + // ... + } + + + + + + + Returns a vector containing indices (0, 1, 2, ..., n - 1) in random + order. The vector grows up to to , but does not + include size among its values. + + + + + var a = Indices.Random(3); // a possible output is { 2, 1, 0 }; + var b = Indices.Random(10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5)) + { + // ... + } + + + + + + + Returns a vector of the specified containing + indices (0, 1, 2, ... max) up to a given maximum number and in random + order. The vector can grow up to to , but does + not include max among its values. + + + + In other words, this return a sample of size k from a population + of size n, where k is the parameter + and n is the parameter . + + + + + var a = Indices.Random(3, 10); // a possible output is { 1, 7, 4 }; + var b = Indices.Random(10, 10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5, 6)) + { + // ... + } + + + + + + + Returns a vector containing indices (0, 1, 2, ..., n - 1) in random + order. The vector grows up to to , but does not + include size among its values. + + + + + var a = Indices.Random(3); // a possible output is { 2, 1, 0 }; + var b = Indices.Random(10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5)) + { + // ... + } + + + + + + + Creates a vector containing every index up to + such as { 0, 1, 2, 3, 4, ..., n-1 }. + + + The non-inclusive limit for the index generation. + + + A vector of size containing + all vector indices up to . + + + + + + Creates a vector containing every index up to + such as { 0.0, 1.0, 2.0, 3.0, 4.0, ..., n-1 } using any choice of + numbers, such as byte or double. + + + The non-inclusive limit for the index generation. + + + A vector of size containing + all vector indices up to . + + + + + + Creates a vector containing every index that can be used to + address a given , in order. + + + The array whose indices will be returned. + + + A vector of the same size as the given + containing all vector indices from 0 up to the length of + . + + + + + double[] a = { 5.3, 2.3, 4.2 }; + int[] idx = Indices.From(a); // output will be { 0, 1, 2 } + + + + + + + Creates a vector containing every index that can be used to + address a given , in order, using any + choice of numbers, such as byte or double. + + + The array whose indices will be returned. + + + A vector of the same size as the given + containing all vector indices from 0 up to the length of + . + + + + + double[] a = { 5.3, 2.3, 4.2 }; + int[] idx = Indices.From(a); // output will be { 0, 1, 2 } + + + + + + + Creates a vector containing every index that can be used to + address a given , in order. + + + The array whose indices will be returned. + + + An enumerable object that can be used to iterate over all + positions of the given System.Array. + + + + + double[,] a = + { + { 5.3, 2.3 }, + { 4.2, 9.2 } + }; + + foreach (int[] idx in Indices.From(a)) + { + // Get the current element + double e = (double)a.GetValue(idx); + } + + + + + + + Creates a vector containing every index starting at + up to such as { from, from + 1, from + 2, ..., to-1 }. + + + The inclusive start for the index generation. + The non-inclusive limit for the index generation. + + + A vector of size to - from containing all vector + indices starting at and going up + to (but not including) . + + + + + + Creates a vector containing every index starting at + up to such as { from, from + 1, from + 2, ..., to-1 } + using any choice of numbers, such as byte or double. + + + The inclusive start for the index generation. + The non-inclusive limit for the index generation. + + + A vector of size to - from containing all vector + indices starting at and going up + to (but not including) . + + + + + + Cell array + + + + + + Structure + + + + + + Object + + + + + + Character array + + + + + + Sparse array + + + + + + Double precision array + + + + + + Single precision array + + + + + + 8-bit, signed integer + + + + + + 8-bit, unsigned integer + + + + + + 16-bit, signed integer + + + + + + 16-bit, unsigned integer + + + + + + 32-bit, signed integer + + + + + + 32-bit, unsigned integer + + + + + + 64-bit, signed integer + + + + + + 64-bit, unsigned integer + + + + + + 8 bit, signed + + + + + + 8 bit, unsigned + + + + + + 16-bit, signed + + + + + + 16-bit, unsigned + + + + + + 32-bit, signed + + + + + + 32-bit, unsigned + + + + + + IEEE® 754 single format + + + + + + IEEE 754 double format + + + + + + 64-bit, signed + + + + + + 64-bit, unsigned + + + + + + MATLAB array + + + + + + Compressed Data + + + + + + Unicode UTF-8 Encoded Character Data + + + + + + Unicode UTF-16 Encoded Character Data + + + + + + Unicode UTF-32 Encoded Character Data + + + + + + Node object contained in .MAT file. + A node can contain a matrix object, a string, or another nodes. + + + + + + Gets the object value contained at this node, if any. + Its type can be known by checking the + property of this node. + + + The object type, if known. + + The object stored at this node. + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the name of this node. + + + + + + Gets the child nodes contained at this node. + + + + + + Gets the object value contained at this node, if any. + Its type can be known by checking the + property of this node. + + + + + + Gets the type of the object value contained in this node. + + + + + + Gets the number of child objects contained in this node. + + + + + + Gets the child fields contained under the given name. + + + The name of the field to be retrieved. + + + + + Gets the child fields contained under the given name. + + + The name of the field to be retrieved. + + + + + Reader for .mat files (such as the ones created by Matlab and Octave). + + + + + MAT files are binary files containing variables and structures from mathematical + processing programs, such as MATLAB or Octave. In MATLAB, .mat files can be created + using its save and load functions. For the moment, this reader supports + only version 5 MAT files (Matlab 5 MAT-file). + + + The MATLAB file format is documented at + + http://www.mathworks.com/help/pdf_doc/matlab/matfile_format.pdf + + + + + // Create a new MAT file reader + var reader = new MatReader(file); + + // Extract some basic information about the file: + string description = reader.Description; // "MATLAB 5.0 MAT-file, Platform: PCWIN" + int version = reader.Version; // 256 + bool bigEndian = reader.BigEndian; // false + + + // Enumerate the fields in the file + foreach (var field in reader.Fields) + Console.WriteLine(field.Key); // "structure" + + // We have the single following field + var structure = reader["structure"]; + + // Enumerate the fields in the structure + foreach (var field in structure.Fields) + Console.WriteLine(field.Key); // "a", "string" + + // Check the type for the field "a" + var aType = structure["a"].Type; // byte[,] + + // Retrieve the field "a" from the file + var a = structure["a"].GetValue<byte[,]>(); + + // We can also do directly if we know the type in advance + var s = reader["structure"]["string"].GetValue<string>(); + + + + + + + Creates a new . + + + The input stream containing the MAT file. + + + + + Creates a new . + + + The input stream containing the MAT file. + Pass true to automatically transpose matrices if they + have been stored differently from .NET's default row-major order. Default is true. + + + + + Creates a new . + + + A reader for input stream containing the MAT file. + Pass true to automatically transpose matrices if they + have been stored differently from .NET's default row-major order. Default is true. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets the child nodes contained in this file. + + + + + + Gets the human readable description of the MAT file. + + + + An example header description could be given by + "MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Thu Feb 22 03:12:25 2007". + + + + + + Gets the version information about the file. + This field should always contain 256. + + + + + + Gets whether the MAT file uses the Big-Endian + standard for bit-order. Currently, only little + endian is supported. + + + + + + Gets whether matrices will be auto-transposed + to .NET row and column format if necessary. + + + + + + Returns the underlying stream. + + + + + + Gets a child object contained in this node. + + + The field name or index. + + + + + Gets a child object contained in this node. + + + The field index. + + + + + Sparse matrix representation used by + .MAT files. + + + + + + Gets the sparse row index vector. + + + + + + Gets the sparse column index vector. + + + + + + Gets the values vector. + + + + + + General Sequential Minimal Optimization algorithm for Quadratic Programming problems. + + + + + This class implements the same optimization method found in LibSVM. It can be used + to solve quadratic programming problems where the quadratic matrix Q may be too large + to fit in memory. + + + The method is described in Fan et al., JMLR 6(2005), p. 1889--1918. It solves the + minimization problem: + + + min 0.5(\alpha^T Q \alpha) + p^T \alpha + + y^T \alpha = \delta + y_i = +1 or -1 + 0 <= alpha_i <= C_i + + + + Given Q, p, y, C, and an initial feasible point \alpha, where l is + the size of vectors and matrices and eps is the stopping tolerance. + + + + + + + Common interface for function optimization methods. + + + + + + + + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Gets the number of variables (free parameters) + in the optimization problem. + + + The number of parameters. + + + + + Gets the current solution found, the values of + the parameters which optimizes the function. + + + + + + Gets the output of the function at the current . + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + The quadratic matrix Q. It should be specified as a lambda + function so Q doesn't need to be always kept in memory. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + The quadratic matrix Q. It should be specified as a lambda + function so Q doesn't need to be always kept in memory. + The vector of linear terms p. Default is a zero vector. + The class labels y. Default is a unit vector. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + + Not supported. + + + + + + Gets the number of variables (free parameters) in the optimization + problem. In a SVM learning problem, this is the number of samples in + the learning dataset. + + + + The number of parameters for the optimization problem. + + + + + + Gets the current solution found, the values of + the parameters which optimizes the function. + + + + + + Gets the output of the function at the current . + + + + + + Gets the threshold (bias) value for a SVM trained using this method. + + + + + + Gets or sets the precision tolerance before + the method stops. Default is 0.001. + + + + + + Gets or sets a value indicating whether shrinking + heuristics should be used. + + + + true to use shrinking heuristics; otherwise, false. + + + + + + Gets the upper bounds for the optimization problem. In + a SVM learning problem, this would be the capacity limit + for each Lagrange multiplier (alpha) in the machine. The + default is to use a vector filled with 1's. + + + + + + Gets a reference to the random number generator used + internally by the Accord.NET classes and methods. + + + + + + Sets a random seed for the framework's main internal + number generator. Preferably, this method should be called before + other computations. + + + + + + Comparison methods that can be used in sort + algorithms such as . + + + + + This namespace contains different methods for comparing elements. For + example, using the classes in this namespace makes it possible to sort + arrays of arrays, + sort arrays into any direction, or perform + stable sorts. + + + + The namespace class diagram is shown below. + + + + + + + + + Common interface for convergence detection algorithms. + + + + + + Resets this instance, reverting all iteration statistics + statistics (number of iterations, last error) back to zero. + + + + + + Gets or sets the maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has converged. + + + + + + General convergence options. + + + + + + Creates a new object. + + + The number of variables to be tracked. + + + + + Gets or sets the number of variables in the problem. + + + + + + Gets or sets the relative function tolerance that should + be used as convergence criteria. This tracks the relative + amount that the function output changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the absolute function tolerance that should + be used as convergence criteria. This tracks the absolute + amount that the function output changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the relative parameter tolerance that should + be used as convergence criteria. This tracks the relative + amount that the model parameters changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the absolute parameter tolerance that should + be used as convergence criteria. This tracks the absolute + amount that the model parameters changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the number of function evaluations + performed by the optimization algorithm. + + + + + + Gets or sets the maximum number of function evaluations to + be used as convergence criteria. This tracks how many times + the function to be optimized has been called, and stops the + algorithm when the number of times specified in this property + has been reached. Setting this value to zero disables this check. + Default is 0. + + + + + + Gets or sets the maximum amount of time that an optimization + algorithm is allowed to run. This property must be set together + with in order to function correctly. + Setting this value to disables this + check. Default is . + + + + + + Gets or sets the time when the algorithm started running. When + time will be tracked with the property, + this property must also be set to a correct value. + + + + + + Gets or sets whether the algorithm should + be forced to terminate. Default is false. + + + + + + Contains numerical decompositions such as QR, + SVD, LU, + Cholesky, and + NMF with specialized definitions for most .NET data types: float, double, and decimals. + + + + + The namespace class diagram is shown below. + + + + + + + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + QR decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + + Common interface for matrix decompositions which + can be used to solve linear systems of equations + involving jagged array matrices. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = I. + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + + Common interface for matrix decompositions which + can be used to solve linear systems of equations. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = I. + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + Static class Dissimilarity. Provides extension methods defining dissimilarity measures. + + + + + + Computes the Dice dissimilarity between two vectors. + + + A vector. + A vector. + + The Dice dissimilarity between x and y. + + + + + Computes the Jaccard dissimilarity between two vectors. + + + A vector. + A vector. + + The Jaccard dissimilarity between x and y. + + + + + Computes the Kulczynski dissimilarity between two vectors. + + + A vector. + A vector. + + The Kulczynski dissimilarity between x and y. + + + + + Computes the Matching dissimilarity between two vectors. + + + A vector. + A vector. + + The Matching dissimilarity between x and y. + + + + + Computes the Rogers-Tanimoto dissimilarity between two vectors. + + + A vector. + A vector. + + The Rogers Tanimoto dissimilarity between x and y. + + + + + Computes the Russel Rao dissimilarity between two vectors. + + + A vector. + A vector. + + The Russel Rao dissimilarity between x and y. + + + + + Computes the Sokal-Michener dissimilarity between two vectors. + + + A vector. + A vector. + + The Sokal-Michener dissimilarity between x and y. + + + + + Computes the Sokal Sneath dissimilarity between two vectors. + + + A vector. + A vector. + + The Sokal Sneath dissimilarity between x and y. + + + + + Computes the Yule dissimilarity between two vectors. + + + A vector. + A vector. + + The Yule dissimilarity between x and y. + + + + + Owen's T function and related functions. + + + + + + In mathematics, Owen's T function T(h, a), named after statistician Donald Bruce Owen, + is defined by + + 1 a exp{-0.5 h²(1+x²) + T(h, a) = ---- ∫ ------------------- dx + 2π 0 1 + x² + + + + The function T(h, a) gives the probability of the event (X > h and 0 < Y < aX) + where X and Y are independent standard normal random variables. This function can + be used to calculate bivariate normal distribution probabilities + and, from there, in the calculation of multivariate normal distribution probabilities. It also + frequently appears in various integrals involving Gaussian functions. + + + + The code is based on the original FORTRAN77 version by Mike Patefield, David Tandy; + and the C version created by John Burkardt. The original code for the C version can + be found at http://people.sc.fsu.edu/~jburkardt/c_src/owens/owens.html and is valid + under the LGPL. + + + References: + + + http://people.sc.fsu.edu/~jburkardt/c_src/owens/owens.html + + Mike Patefield, David Tandy, Fast and Accurate Calculation of Owen's T Function, + Journal of Statistical Software, Volume 5, Number 5, 2000, pages 1-25. + + + + + + + // Computes Owens' T function + double t = OwensT.Function(h: 2, a: 42); // 0.011375065974089608 + + + + + + + Computes Owen's T function for arbitrary H and A. + + + Owen's T function argument H. + Owen's T function argument A. + + The value of Owen's T function. + + + + + Owen's T function for a restricted range of parameters. + + + Owen's T function argument H (where 0 <= H). + Owen's T function argument A (where 0 <= A <= 1). + The value of A*H. + + The value of Owen's T function. + + + + + Numerical methods for approximating integrals. + + + + + This namespace contains different methods for numerically approximating + integrals, such as the Trapezoidal Rule, + Romberg method, up to more advanced versions + such as the Infinite Adaptive Gauss + Kronrod for improper integrals or + Monte Carlo integration for multivariate integrals. + + + The namespace class diagram is shown below. + + + + + + + + + + Common interface for multidimensional integration methods. + + + + + + Common interface for numeric integration methods. + + + + + + Computes the area of the function under the selected + range. The computed value will be available at this + class's property. + + + True if the integration method succeeds, false otherwise. + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the number of parameters expected by + the to be integrated. + + + + + + Gets or sets the multidimensional function + whose integral should be computed. + + + + + + Gets or sets the range of each input variable + under which the integral must be computed. + + + + + + Common interface for multidimensional integration methods. + + + + + + Gets or sets the unidimensional function + whose integral should be computed. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Common interface for numeric integration methods. + + + + + + Get the exit code returned in the last call to the + method. + + + + + + Status codes for the + integration method. + + + + + + The integration calculation has been completed with success. + The obtained result is under the selected convergence criteria. + + + + + + Maximum number of allowed subdivisions has been reached. + + + + The maximum number of subdivisions allowed has been achieved. One can allow + more subdivisions by increasing the value of limit (and taking the according + dimension adjustments into account). However, if this yields no improvement + it is advised to analyze the integrand in order to determine the integration + difficulties. If the position of a local difficulty can be determined (e.g. + singularity, discontinuity within the interval) one will probably gain from + splitting up the interval at this point and calling the integrator on the + subranges. if possible, an appropriate special-purpose integrator should be + used, which is designed for handling the type of difficulty involved. + + + + + + Roundoff errors prevent the tolerance from being reached. + + + + The occurrence of roundoff error is detected, which prevents the requested + tolerance from being achieved. The error may be under-estimated. + + + + + + There are severe discontinuities in the integrand function. + + + + Extremely bad integrand behaviour occurs at some points of the + integration interval. + + + + + + The algorithm cannot converge. + + + + The algorithm does not converge. Roundoff error is detected in the + extrapolation table. It is assumed that the requested tolerance cannot + be achieved, and that the returned result is the best which can be obtained. + + + + + + The integral is divergent or slowly convergent. + + + + The integral is probably divergent, or slowly convergent. It must be + noted that divergence can occur with any other error code. + + + + + + Infinite Adaptive Gauss-Kronrod integration method. + + + + + In applied mathematics, adaptive quadrature is a process in which the + integral of a function f(x) is approximated using static quadrature rules + on adaptively refined subintervals of the integration domain. Generally, + adaptive algorithms are just as efficient and effective as traditional + algorithms for "well behaved" integrands, but are also effective for + "badly behaved" integrands for which traditional algorithms fail. + + + The algorithm implemented by this class has been based on the original FORTRAN + implementation from QUADPACK. The function implemented the Non-adaptive Gauss- + Kronrod integration is qagi(f,bound,inf,epsabs,epsrel,result,abserr,neval, + ier,limit,lenw,last,iwork,work). The original source code is in the public + domain, but this version is under the LGPL. The original authors, as long as the + original routine description, are listed below: + + + Robert Piessens, Elise de Doncker; Applied Mathematics and Programming Division, + K.U.Leuven, Leuvenappl. This routine calculates an approximation result to a given + integral i = integral of f over (bound,+infinity) or i = integral of f over + (-infinity,bound) or i = integral of f over (-infinity,+infinity) hopefully satisfying + following claim for accuracy abs(i-result).le.max(epsabs,epsrel*abs(i)). + + + References: + + + Wikipedia, The Free Encyclopedia. Adaptive quadrature. Available on: + http://en.wikipedia.org/wiki/Adaptive_quadrature + + Wikipedia, The Free Encyclopedia. QUADPACK. Available on: + http://en.wikipedia.org/wiki/QUADPACK + + Robert Piessens, Elise de Doncker; Non-adaptive integration standard fortran + subroutine (qng.f). Applied Mathematics and Programming Division, K.U.Leuven, + Leuvenappl. Available at: http://www.netlib.no/netlib/quadpack/qagi.f + + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Creates a new integration algorithm. + + + Maximum number of subintervals in the + partition of the given integration interval. Default is 100. + + + + + Creates a new integration algorithm. + + + Maximum number of subintervals in the + partition of the given integration interval. Default is 100. + The function to be integrated. + + + + + Creates a new integration algorithm. + + + Maximum number of subintervals in the + partition of the given integration interval. Default is 100. + The function to be integrated. + The lower limit of integration. + The upper limit of integration. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + If the integration method fails, the reason will be available at . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Infinite Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Infinite Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Infinite Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The relative tolerance under which the solution has to be found. Default is 1e-3. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Get the maximum number of subintervals to be utilized in the + partition of the integration interval. + + + + + + Gets or sets the function to be differentiated. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Desired absolute accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is zero. + + + + + + Desired relative accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is 1e-3. + + + + + + Get the exit code returned in the last call to the + method. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the integration error for the + computed value. + + + + + + Gets the number of function evaluations performed in + the last call to the method. + + + + + + Status codes for the + integration method. + + + + + + The integration calculation has been completed with success. + The obtained result is under the selected convergence criteria. + + + + + + Maximum number of steps has been reached. + + + + The maximum number of steps has been executed. The integral + is probably too difficult to be calculated by dqng. + + + + + + Non-Adaptive Gauss-Kronrod integration method. + + + + + The algorithm implemented by this class has been based on the original FORTRAN + implementation from QUADPACK. The function implemented the Non-adaptive Gauss- + Kronrod integration is qng(f,a,b,epsabs,epsrel,result,abserr,neval,ier). + The original source code is in the public domain, but this version is under the + LGPL. The original authors, as long as the original routine description, are + listed below: + + Robert Piessens, Elise de Doncker; Applied Mathematics and Programming Division, + K.U.Leuven, Leuvenappl. This routine calculates an approximation result to a given + definite integral i = integral of f over (a,b), hopefully satisfying following claim + for accuracy abs(i-result).le.max(epsabs,epsrel*abs(i)). + + + References: + + + Wikipedia, The Free Encyclopedia. QUADPACK. Available on: + http://en.wikipedia.org/wiki/QUADPACK + + Robert Piessens, Elise de Doncker; Non-adaptive integration standard fortran + subroutine (qng.f). Applied Mathematics and Programming Division, K.U.Leuven, + Leuvenappl. Available at: http://www.netlib.no/netlib/quadpack/qng.f + + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Creates a new integration algorithm. + + + + + + Creates a new integration algorithm. + + + The function to be integrated. + + + + + Creates a new integration algorithm. + + + The function to be integrated. + The lower limit of integration. + The upper limit of integration. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + If the integration method fails, the reason will be available at . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, + in the given integration interval, using Gauss-Kronrod method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Non-Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The relative tolerance under which the solution has to be found. Default is 1e-3. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the function to be differentiated. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Desired absolute accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is zero. + + + + + + Desired relative accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is 1e-3. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the integration error for the + computed value. + + + + + + Get the exit code returned in the last call to the + method. + + + + + + Gets the number of function evaluations performed in + the last call to the method. + + + + + + Derivative approximation by finite differences. + + + + + Numerical differentiation is a technique of numerical analysis to produce an estimate + of the derivative of a mathematical function or function subroutine using values from + the function and perhaps other knowledge about the function. + + + A finite difference is a mathematical expression of the form f(x + b) − f(x + a). If a + finite difference is divided by b − a, one gets a difference quotient. The approximation + of derivatives by finite differences plays a central role in finite difference methods + for the numerical solution of differential equations, especially boundary value problems. + + + + This class implements Newton's finite differences method for approximating the derivatives + of a multivariate function. A simplified version of the class is also available for + univariate functions through + its Derivative static methods. + + + References: + + + Wikipedia, The Free Encyclopedia. Finite difference. Available on: + http://en.wikipedia.org/wiki/Finite_difference + + Trent F. Guidry, Calculating derivatives of a function numerically. Available on: + http://www.trentfguidry.net/post/2009/07/12/Calculate-derivatives-function-numerically.aspx + + + + + + + + // Create a simple function with two parameters: f(x, y) = x² + y + Func <double[], double> function = x => Math.Pow(x[0], 2) + x[1]; + + // The gradient function should be g(x,y) = <2x, 1> + + // Create a new finite differences calculator + var calculator = new FiniteDifferences(2, function); + + // Evaluate the gradient function at the point (2, -1) + double[] result = calculator.Compute(2, -1); // answer is (4, 1) + + + + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + The relative step size used to approximate the derivatives. Default is 0.01. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The function to be differentiated. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + The function to be differentiated. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + The relative step size used to approximate the derivatives. Default is 0.01. + The function to be differentiated. + + + + + Computes the gradient at the given point x. + + The point where to compute the gradient. + The gradient of the function evaluated at point x. + + + + + Computes the gradient at the given point , + storing the result at . + + + The point where to compute the gradient. + The gradient of the function evaluated at point x. + + + + + Computes the derivative at point x_i. + + + + + + Creates the interpolation coefficients. + + + The number of points in the tableau. + + + + + Interpolates the points to obtain an estimative of the derivative at x. + + + + + + Computes the derivative for a simpler unidimensional function. + + + The function to be differentiated. + The value x at which the derivative should be evaluated. + The derivative order that should be obtained. Default is 1. + + The derivative of the function at the point x. + + + + + Computes the derivative for a simpler unidimensional function. + + + The function to be differentiated. + The value x at which the derivative should be evaluated. + + The derivative of the function at the point x. + + + + + Computes the derivative for a simpler unidimensional function. + + + The function to be differentiated. + The derivative order that should be obtained. Default is 1. + The relative step size used to approximate the derivatives. Default is 0.01. + The value x at which the derivative should be evaluated. + + The derivative of the function at the point x. + + + + + Gets or sets the function to be differentiated. + + + + + + Gets or sets the relative step size used to + approximate the derivatives. Default is 1e-2. + + + + + + Gets or sets the order of the derivatives to be + obtained. Default is 1 (computes the first derivative). + + + + + + Gets or sets the number of points to be used when + computing the approximation. Default is 3. + + + + + + Monte Carlo method for multi-dimensional integration. + + + + + In mathematics, Monte Carlo integration is a technique for numerical + integration using random numbers. It is a particular Monte Carlo method + that numerically computes a definite integral. While other algorithms + usually evaluate the integrand at a regular grid, Monte Carlo randomly + choose points at which the integrand is evaluated. This method is + particularly useful for higher-dimensional integrals. There are different + methods to perform a Monte Carlo integration, such as uniform sampling, + stratified sampling and importance sampling. + + + + References: + + + Wikipedia, The Free Encyclopedia. Monte Carlo integration. Available on: + http://en.wikipedia.org/wiki/Monte_Carlo_integration + + + + + + + A common Monte-Carlo integration example is to compute the value of Pi. This is the + same example given in Wikipedia's page for Monte-Carlo Integration, available at + https://en.wikipedia.org/wiki/Monte_Carlo_integration#Example + + // Define a function H that tells whether two points + // are inside a unit circle (a circle of radius one): + // + Func<double, double, double> H = + (x, y) => (x * x + y * y <= 1) ? 1 : 0; + + // We will check how many points in the square (-1,-1), (-1,+1), + // (+1, -1), (+1, +1) fall into the circle defined by function H. + // + double[] from = { -1, -1 }; + double[] to = { +1, +1 }; + + int samples = 100000; + + // Integrate it! + double area = MonteCarloIntegration.Integrate(x => H(x[0], x[1]), from, to, samples); + + // Output should be approximately 3.14. + + + + + + + + + + Constructs a new Monte Carlo integration method. + + + The function to be integrated. + The number of parameters expected by the . + + + + + Constructs a new Monte Carlo integration method. + + + The number of parameters expected by the integrand. + + + + + Manually resets the previously computed area and error + estimates, so the integral can be computed from scratch + without reusing previous computations. + + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, in the + given integration interval, using a Monte Carlo integration algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + The number of points that should be sampled. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the number of parameters expected by + the to be integrated. + + + + + + Gets or sets the range of each input variable + under which the integral must be computed. + + + + + + Gets or sets the multidimensional function + whose integral should be computed. + + + + + + Gets or sets the random generator algorithm to be used within + this Monte Carlo method. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the integration error for the + computed value. + + + + + + Gets or sets the number of random samples + (iterations) generated by the algorithm. + + + + + + Static class for combinatorics functions. + + + + + + Generates all possible two symbol ordered + permutations with repetitions allowed (a truth table). + + + The length of the sequence to generate. + + + + Suppose we would like to generate a truth table for a binary + problem. In this case, we are only interested in two symbols: + 0 and 1. Let's then generate the table for three binary values + + + int length = 3; // The number of variables; or number + // of columns in the generated table. + + // Generate the table using Combinatorics.TruthTable(3) + int[][] table = Combinatorics.TruthTable(length); + + // The generated table will be: + { + new int[] { 0, 0, 0 }, + new int[] { 0, 0, 1 }, + new int[] { 0, 1, 0 }, + new int[] { 0, 1, 1 }, + new int[] { 1, 0, 0 }, + new int[] { 1, 0, 1 }, + new int[] { 1, 1, 0 }, + new int[] { 1, 1, 1 }, + }; + + + + + + + Generates all possible ordered permutations + with repetitions allowed (a truth table). + + + The number of symbols. + The length of the sequence to generate. + + + + Suppose we would like to generate a truth table for a binary + problem. In this case, we are only interested in two symbols: + 0 and 1. Let's then generate the table for three binary values + + + int symbols = 2; // Binary variables: either 0 or 1 + int length = 3; // The number of variables; or number + // of columns in the generated table. + + // Generate the table using Combinatorics.TruthTable(2,3) + int[][] table = Combinatorics.TruthTable(symbols, length); + + // The generated table will be: + { + new int[] { 0, 0, 0 }, + new int[] { 0, 0, 1 }, + new int[] { 0, 1, 0 }, + new int[] { 0, 1, 1 }, + new int[] { 1, 0, 0 }, + new int[] { 1, 0, 1 }, + new int[] { 1, 1, 0 }, + new int[] { 1, 1, 1 }, + }; + + + + + + + Generates all possible ordered permutations + with repetitions allowed (a truth table). + + + The number of symbols for each variable. + + + + Suppose we would like to generate a truth table (i.e. all possible + combinations of a set of discrete symbols) for variables that contain + different numbers symbols. Let's say, for example, that the first + variable may contain symbols 0 and 1, the second could contain either + 0, 1, or 2, and the last one again could contain only 0 and 1. Thus + we can generate the truth table in the following way: + + + // Number of symbols for each variable + int[] symbols = { 2, 3, 2 }; + + // Generate the truth table for the given symbols + int[][] table = Combinatorics.TruthTable(symbols); + + // The generated table will be: + { + new int[] { 0, 0, 0 }, + new int[] { 0, 0, 1 }, + new int[] { 0, 1, 0 }, + new int[] { 0, 1, 1 }, + new int[] { 0, 2, 0 }, + new int[] { 0, 2, 1 }, + new int[] { 1, 0, 0 }, + new int[] { 1, 0, 1 }, + new int[] { 1, 1, 0 }, + new int[] { 1, 1, 1 }, + new int[] { 1, 2, 0 }, + new int[] { 1, 2, 1 }, + }; + + + + + + Provides a way to enumerate all possible ordered permutations + with repetitions allowed (i.e. a truth table), without using + many memory allocations. + + + The number of symbols. + The length of the sequence to generate. + + If set to true, the different generated sequences will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + Suppose we would like to generate the same sequences shown + in the example, + however, without explicitly storing all possible combinations + in an array. In order to iterate over all possible combinations + efficiently, we can use: + + + + int symbols = 2; // Binary variables: either 0 or 1 + int length = 3; // The number of variables; or number + // of columns in the generated table. + + foreach (int[] row in Combinatorics.Sequences(symbols, length)) + { + // The following sequences will be generated in order: + // + // new int[] { 0, 0, 0 }, + // new int[] { 0, 0, 1 }, + // new int[] { 0, 1, 0 }, + // new int[] { 0, 1, 1 }, + // new int[] { 1, 0, 0 }, + // new int[] { 1, 0, 1 }, + // new int[] { 1, 1, 0 }, + // new int[] { 1, 1, 1 }, + } + + + + + + + Provides a way to enumerate all possible ordered permutations + with repetitions allowed (i.e. a truth table), without using + many memory allocations. + + + The number of symbols for each variable. + + If set to true, the different generated permutations will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + Suppose we would like to generate the same sequences shown + in the example, + however, without explicitly storing all possible combinations + in an array. In order to iterate over all possible combinations + efficiently, we can use: + + + + foreach (int[] row in Combinatorics.Sequences(new[] { 2, 2 })) + { + // The following sequences will be generated in order: + // + // new int[] { 0, 0, 0 }, + // new int[] { 0, 0, 1 }, + // new int[] { 0, 1, 0 }, + // new int[] { 0, 1, 1 }, + // new int[] { 1, 0, 0 }, + // new int[] { 1, 0, 1 }, + // new int[] { 1, 1, 0 }, + // new int[] { 1, 1, 1 }, + } + + + + + + + Enumerates all possible value combinations for a given array. + + + The array whose combinations need to be generated. + The length of the combinations to be generated. + + If set to true, the different generated combinations will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + // Let's say we would like to generate all possible combinations + // of the elements (1, 2, 3). In order to enumerate all those + // combinations, we can use: + + int[] values = { 1, 2, 3 }; + + foreach (int[] combination in Combinatorics.Combinations(values)) + { + // The combinations will be generated in the following order: + // + // { 1, 2 }; + // { 1, 3 }; + // { 2, 3 }; + // + } + + + + + + + Enumerates all possible value permutations for a given array. + + + The array whose permutations need to be generated. + + If set to true, the different generated permutations will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + // Let's say we would like to generate all possible permutations + // of the elements (1, 2, 3). In order to enumerate all those + // permutations, we can use: + + int[] values = { 1, 2, 3 }; + + foreach (int[] permutation in Combinatorics.Permutations(values)) + { + // The permutations will be generated in the following order: + // + // { 1, 3, 2 }; + // { 2, 1, 3 }; + // { 2, 3, 1 }; + // { 3, 1, 2 }; + // { 3, 2, 1 }; + // + } + + + + + + + Elementwise comparer for integer arrays. + Please use ArrayComparer{T} instead. + + + + + + Elementwise comparer for arrays. + + + + + + Determines whether two instances are equal. + + + The first object to compare. + The second object to compare. + + true if the specified object is equal to the other; otherwise, false. + + + + + + Returns a hash code for a given instance. + + + The instance. + + + A hash code for the instance, suitable for use + in hashing algorithms and data structures like a hash table. + + + + + + Element-at-position comparer. + + + + This class compares arrays by checking the value + of a particular element at a given array index. + + + + + // We sort the arrays according to the + // elements at their second column. + + double[][] values = + { // v + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 1, 1 }, + new double[] { -1, 5, 4 }, + new double[] { -2, 2, 6 }, + }; + + // Sort the array considering only the second column + Array.Sort(values, new ElementComparer() { Index = 1 }); + + // The result will be + double[][] result = + { + new double[] { -1, 1, 1 }, + new double[] { -2, 2, 6 }, + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 5, 4 }, + }; + + + + + + + + + + + + Element-at-position comparer. + + + + This class compares arrays by checking the value + of a particular element at a given array index. + + + + + // We sort the arrays according to the + // elements at their second column. + + double[][] values = + { // v + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 1, 1 }, + new double[] { -1, 5, 4 }, + new double[] { -2, 2, 6 }, + }; + + // Sort the array considering only the second column + Array.Sort(values, new ElementComparer() { Index = 1 }); + + // The result will be + double[][] result = + { + new double[] { -1, 1, 1 }, + new double[] { -2, 2, 6 }, + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 5, 4 }, + }; + + + + + + + + + + + + Compares two objects and returns a value indicating + whether one is less than, equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Determines whether two instances are equal. + + + The first object to compare. + The second object to compare. + + + true if the specified object is equal to the other; otherwise, false. + + + + + + Returns a hash code for a given instance. + + + The instance. + + + A hash code for the instance, suitable for use + in hashing algorithms and data structures like a hash table. + + + + + + Gets or sets the element index to compare. + + + + + + Custom comparer which accepts any delegate or + anonymous function to perform value comparisons. + + + The type of objects to compare. + + + + // Assume we have values to sort + double[] values = { 0, 5, 3, 1, 8 }; + + // We can create an ad-hoc sorting rule using + Array.Sort(values, new CustomComparer<double>((a, b) => -a.CompareTo(b))); + + // Result will be { 8, 5, 3, 1, 0 }. + + + + + + + Constructs a new . + + + The comparer function. + + + + + Compares two objects and returns a value indicating + whether one is less than, equal to, or greater than + the other. + + + The first object to compare. + The second object to compare. + + A signed integer that indicates the relative values of x and y. + + + + + Determines whether the specified objects are equal. + + + The first object of type T to compare. + The second object of type T to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the given object. + + + The object. + + + A hash code for the given object, suitable for use in + hashing algorithms and data structures like a hash table. + + + + + + Directions for the General Comparer. + + + + + + Sorting will be performed in ascending order. + + + + + + Sorting will be performed in descending order. + + + + + + General comparer which supports multiple + directions and comparison of absolute values. + + + + + // Assume we have values to sort + double[] values = { 0, -5, 3, 1, 8 }; + + // We can create an ad-hoc sorting rule considering only absolute values + Array.Sort(values, new GeneralComparer(ComparerDirection.Ascending, Math.Abs)); + + // Result will be { 0, 1, 3, 5, 8 }. + + + + + + + + + + + + Constructs a new General Comparer. + + + The direction to compare. + + + + + Constructs a new General Comparer. + + + The direction to compare. + True to compare absolute values, false otherwise. Default is false. + + + + + Constructs a new General Comparer. + + + The direction to compare. + The mapping function which will be applied to + each vector element prior to any comparisons. + + + + + Compares two objects and returns a value indicating whether one is less than, + equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Compares two objects and returns a value indicating whether one is less than, + equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Gets or sets the sorting direction + used by this comparer. + + + + + + General comparer which supports multiple sorting directions. + + + + + // Assume we have values to sort + double[] values = { 0, -5, 3, 1, 8 }; + + // We can create an ad-hoc sorting rule + Array.Sort(values, new GeneralComparer<double>(ComparerDirection.Descending)); + + // Result will be { 8, 5, 3, 1, 0 }. + + + + + + + + + + + + Constructs a new General Comparer. + + + The direction to compare. + + + + + Compares two objects and returns a value indicating whether one is less than, + equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Gets or sets the sorting direction + used by this comparer. + + + + + + Stable comparer for stable sorting algorithm. + + + The type of objects to compare. + + + This class helps sort the elements of an array without swapping + elements which are already in order. This comprises a stable + sorting algorithm. This class is used by the method to produce a stable sort + of its given arguments. + + + + In order to use this class, please use . + + + + + + + + + + + Constructs a new instance of the class. + + + The comparison function. + + + + + Compares two objects and returns a value indicating + whether one is less than, equal to, or greater than + the other. + + + The first object to compare. + The second object to compare. + + A signed integer that indicates the relative values of x and y. + + + + + Absolute convergence criteria. + + + + This class can be used to track progress and convergence + of methods which rely on the absolute change of a value. + + + + + // Create a new convergence criteria for a maximum of 10 iterations + var criteria = new AbsoluteConvergence(iterations: 10, tolerance: 0.1); + + int progress = 1; + + do + { + // Do some processing... + + + // Update current iteration information: + criteria.NewValue = 12345.6 / progress++; + + } while (!criteria.HasConverged); + + + // The method will converge after reaching the + // maximum of 10 iterations with a final value + // of 1371.73: + + int iterations = criteria.CurrentIteration; // 10 + double value = criteria.OldValue; // 1371.7333333 + + + + + + + Common interface for convergence detection algorithms that + depend solely on a single value (such as the iteration error). + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 0. + The maximum change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + + + + + Clears this instance. + + + + + + Gets or sets the maximum change in the watched value + after an iteration of the algorithm used to detect + convergence. Default is 0. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. Default + is 100. + + + + + + Gets the watched value before the iteration. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has converged. + + + + + + Relative convergence criteria. + + + + This class can be used to track progress and convergence + of methods which rely on the relative change of a value. + + + + + // Create a new convergence criteria with unlimited iterations + var criteria = new RelativeConvergence(iterations: 0, tolerance: 0.1); + + int progress = 1; + + do + { + // Do some processing... + + + // Update current iteration information: + criteria.NewValue = 12345.6 / progress++; + + } while (!criteria.HasConverged); + + + // The method will converge after reaching the + // maximum of 11 iterations with a final value + // of 1234.56: + + int iterations = criteria.CurrentIteration; // 11 + double value = criteria.OldValue; // 1234.56 + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 100. + The maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 0. + The maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + The minimum number of convergence checks that the + iterative algorithm should pass before convergence can be declared + reached. + + + + + Resets this instance, reverting all iteration statistics + statistics (number of iterations, last error) back to zero. + + + + + + Gets or sets the maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is zero. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. Default + is 100. + + + + + + Gets or sets the watched value before the iteration. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has converged. + + + + + + Relative parameter change convergence criteria. + + + + This class can be used to track progress and convergence + of methods which rely on the maximum relative change of + the values within a parameter vector. + + + + + // Converge if the maximum change amongst all parameters is less than 0.1: + var criteria = new RelativeParameterConvergence(iterations: 0, tolerance: 0.1); + + int progress = 1; + double[] parameters = { 12345.6, 952.12, 1925.1 }; + + do + { + // Do some processing... + + // Update current iteration information: + criteria.NewValues = parameters.Divide(progress++); + + } while (!criteria.HasConverged); + + + // The method will converge after reaching the + // maximum of 11 iterations with a final value + // of { 1234.56, 95.212, 192.51 }: + + int iterations = criteria.CurrentIteration; // 11 + var v = criteria.OldValues; // { 1234.56, 95.212, 192.51 } + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 0. + The maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + + + + + Clears this instance. + + + + + + Gets or sets the maximum change in the watched value + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. + + + + + + Gets the maximum relative parameter + change after the last iteration. + + + + + + Gets or sets the watched value before the iteration. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has diverged. + + + + + + Gets whether the algorithm has converged. + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. + If the matrix is not symmetric or positive definite, the constructor returns a partial + decomposition and sets two internal variables that can be queried using the + and properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + Constructs a new Cholesky Decomposition. + The matrix to be decomposed. + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square root free LDLt decomposition, + false otherwise. + + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square-root free LDLt decomposition, + false otherwise. + True to assume the value + matrix is a lower triangular symmetric matrix, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric and positive definite. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + Solves a set of equation systems of type A * x = b. + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Computes the inverse of the decomposed matrix. + + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is symmetric. + + + + + + Returns if the matrix is positive definite. + + + + + + Returns the left (lower) triangular factor L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal elements in a LDLt decomposition. + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. + If the matrix is not symmetric or positive definite, the constructor returns a partial + decomposition and sets two internal variables that can be queried using the + and properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + Constructs a new Cholesky Decomposition. + The matrix to be decomposed. + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square root free LDLt decomposition, + false otherwise. + + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square-root free LDLt decomposition, + false otherwise. + True to assume the value + matrix is a lower triangular symmetric matrix, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric and positive definite. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + Solves a set of equation systems of type A * x = b. + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Computes the inverse of the decomposed matrix. + + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is symmetric. + + + + + + Returns if the matrix is positive definite. + + + + + + Returns the left (lower) triangular factor L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal elements in a LDLt decomposition. + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. + If the matrix is not symmetric or positive definite, the constructor returns a partial + decomposition and sets two internal variables that can be queried using the + and properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + Constructs a new Cholesky Decomposition. + The matrix to be decomposed. + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square root free LDLt decomposition, + false otherwise. + + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square-root free LDLt decomposition, + false otherwise. + True to assume the value + matrix is a lower triangular symmetric matrix, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric and positive definite. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + Solves a set of equation systems of type A * x = b. + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Computes the inverse of the decomposed matrix. + + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is symmetric. + + + + + + Returns if the matrix is positive definite. + + + + + + Returns the left (lower) triangular factor L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal elements in a LDLt decomposition. + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Gram-Schmidt Orthogonalization. + + + + + + Initializes a new instance of the class. + + + The matrix A to be decomposed. + + + + + Initializes a new instance of the class. + + + The matrix A to be decomposed. + True to use modified Gram-Schmidt; false + otherwise. Default is true (and is the recommended setup). + + + + + Returns the orthogonal factor matrix Q. + + + + + + Returns the upper triangular factor matrix R. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Romberg's method for numerical integration. + + + + + In numerical analysis, Romberg's method (Romberg 1955) is used to estimate + the definite integral ∫_a^b(x) dx by applying Richardson extrapolation + repeatedly on the trapezium rule or the rectangle rule (midpoint rule). The + estimates generate a triangular array. Romberg's method is a Newton–Cotes + formula – it evaluates the integrand at equally spaced points. The integrand + must have continuous derivatives, though fairly good results may be obtained + if only a few derivatives exist. If it is possible to evaluate the integrand + at unequally spaced points, then other methods such as Gaussian quadrature + and Clenshaw–Curtis quadrature are generally more accurate. + + + + References: + + + Wikipedia, The Free Encyclopedia. Romberg's method. Available on: + http://en.wikipedia.org/wiki/Romberg's_method + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Constructs a new Romberg's integration method. + + + + + + Constructs a new Romberg's integration method. + + + The unidimensional function whose integral should be computed. + + + + + Constructs a new Romberg's integration method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Constructs a new Romberg's integration method. + + + The number of steps used in Romberg's method. Default is 6. + + + + + Constructs a new Romberg's integration method. + + + The number of steps used in Romberg's method. Default is 6. + The unidimensional function whose integral should be computed. + + + + + Constructs a new Romberg's integration method. + + + The number of steps used in Romberg's method. Default is 6. + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, + in the given integration interval, using Romberg's method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, + in the given integration interval, using Romberg's method. + + + The number of steps used in Romberg's method. Default is 6. + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the unidimensional function + whose integral should be computed. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets or sets the number of steps used + by Romberg's method. Default is 6. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Trapezoidal rule for numerical integration. + + + + + In numerical analysis, the trapezoidal rule (also known as the trapezoid rule + or trapezium rule) is a technique for approximating the definite integral + ∫_a^b(x) dx. The trapezoidal rule works by approximating the region + under the graph of the function f(x) as a trapezoid and calculating its area. + It follows that ∫_a^b(x) dx ~ (b - a) [f(a) - f(b)] / 2. + + + + References: + + + Wikipedia, The Free Encyclopedia. Trapezoidal rule. Available on: + http://en.wikipedia.org/wiki/Trapezoidal_rule + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Constructs a new integration method. + + + + + + Constructs a new integration method. + + + The unidimensional function whose integral should be computed. + + + + + Constructs a new integration method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Constructs a new integration method. + + + The number of steps into which the integration + interval will be divided. + + + + + Constructs a new integration method. + + + The number of steps into which the integration + interval will be divided. + The unidimensional function + whose integral should be computed. + + + + + Constructs a new integration method. + + + The number of steps into which the integration + interval will be divided. + The unidimensional function + whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Computes the area under the integral for the given function, + in the given integration interval, using the Trapezoidal rule. + + + The number of steps into which the integration interval will be divided. + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Gets or sets the unidimensional function + whose integral should be computed. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets or sets the number of steps into which the + integration interval will + be divided. Default is 6. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + GNU R algorithm environment. Work in progress. + + + + + + Creates a new vector. + + + + + + Creates a new matrix. + + + + + + Placeholder vector definition + + + + + + Vector definition operator. + + + + + + Inner vector object + + + + + + Initializes a new instance of the class. + + + + + + Implements the operator -. + + + + + + Implements the operator <. + + + + + + Implements the operator >. + + + + + + Performs an implicit conversion from + to . + + + + + + Performs an implicit conversion from + + to . + + + + + + Matrix definition operator. + + + + + + Inner matrix object. + + + + + + Initializes a new instance of the class. + + + + + + Implements the operator -. + + + + + + Implements the operator <. + + + + + + Implements the operator >. + + + + + + Performs an implicit conversion from + to + . + + + + + + Performs an implicit conversion from + + to . + + + + + + Gabor kernel types. + + + + + + Creates kernel based on the real part of the Gabor function. + + + + + + Creates a kernel based on the imaginary part of the Gabor function. + + + + + + Creates a kernel based on the Magnitude of the Gabor function. + + + + + + Creates a kernel based on the Squared Magnitude of the Gabor function. + + + + + + Gabor functions. + + + + This class has been contributed by Diego Catalano, author of the Catalano + Framework, a native port of AForge.NET and Accord.NET for Java and Android. + + + + + + 1-D Gabor function. + + + + + + 2-D Gabor function. + + + + + + Real part of the 2-D Gabor function. + + + + + + Imaginary part of the 2-D Gabor function. + + + + + + Computes the 2-D Gabor kernel. + + + + + + Computes the 2-D Gabor kernel. + + + + + + Computes the 2-D Gabor kernel. + + + + + + Computes the 2-D Gabor kernel. + + + + + + 2D circle class. + + + + + + Creates a new unit at the origin. + + + + + + Creates a new with the given radius + centered at the given x and y coordinates. + + + The x-coordinate of the circle's center. + The y-coordinate of the circle's center. + The circle radius. + + + + + Creates a new with the given radius + centered at the given x and y coordinates. + + + The x-coordinate of the circle's center. + The y-coordinate of the circle's center. + The circle radius. + + + + + Creates a new with the given radius + centered at the given center point coordinates. + + + The point at the circle's center. + The circle radius. + + + + + Creates a new from three non-linear points. + + + The first point. + The second point. + The third point. + + + + + Computes the distance from circle to point. + + + The point to have its distance from the circle computed. + + The distance from to this circle. + + + + + Gets the area of the circle (πR²). + + + + + + Gets the circumference of the circle (2πR). + + + + + + Gets the diameter of the circle (2R). + + + + + + Gets or sets the radius for this circle. + + + + + + Gets or sets the origin (center) of this circle. + + + + + + Discrete Curve Evolution. + + + + + The Discrete Curve Evolution (DCE) algorithm can be used to simplify + contour curves. It can preserve the outline of a shape by preserving + its most visually critical points. + + + The implementation available in the framework has been contributed by + Diego Catalano, from the Catalano Framework for Java. The original work + has been developed by Dr. Longin Jan Latecki, and has been redistributed + under the LGPL with explicit permission from the original author, as long + as the following references are acknowledged in derived applications: + + + L.J. Latecki and R. Lakaemper; Convexity rule for shape decomposition based + on discrete contour evolution. Computer Vision and Image Understanding 73 (3), + 441-454, 1999. + + + References: + + + L.J. Latecki and R. Lakaemper; Convexity rule for shape decomposition based + on discrete contour evolution. Computer Vision and Image Understanding 73 (3), + 441-454, 1999. + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Number of vertices. + + + + + Optimize specified shape. + + + Shape to be optimized. + + + Returns final optimized shape, which may have reduced amount of points. + + + + + + Gets or sets the number of vertices. + + + + + + 3D Plane class with normal vector and distance from origin. + + + + + + Creates a new object + passing through the . + + + The first component of the plane's normal vector. + The second component of the plane's normal vector. + The third component of the plane's normal vector. + + + + + Creates a new object + passing through the . + + + The plane's normal vector. + + + + + Initializes a new instance of the class. + + + The first component of the plane's normal vector. + The second component of the plane's normal vector. + The third component of the plane's normal vector. + + The distance from the plane to the origin. + + + + + Initializes a new instance of the class. + + + The plane's normal vector. + The distance from the plane to the origin. + + + + + Constructs a new object from three points. + + + The first point. + The second point. + The third point. + + A passing through the three points. + + + + + Computes the distance from point to plane. + + + The point to have its distance from the plane computed. + + The distance from to this plane. + + + + + Normalizes this plane by dividing its components + by the vector's norm. + + + + + + Implements the operator !=. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + The acceptance tolerance threshold to consider the instances equal. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The variable to put on the left hand side. Can + be either 'x', 'y' or 'z'. + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The variable to put on the left hand side. Can + be either 'x', 'y' or 'z'. + The format provider. + + + A that represents this instance. + + + + + + Gets the plane's normal vector. + + + + + + Gets or sets the constant a in the plane + definition a * x + b * y + c * z + d = 0. + + + + + + Gets or sets the constant b in the plane + definition a * x + b * y + c * z + d = 0. + + + + + + Gets or sets the constant c in the plane + definition a * x + b * y + c * z + d = 0. + + + + + + Gets or sets the distance offset + between the plane and the origin. + + + + + + 3D point structure with X, Y, and coordinates. + + + + + + Creates a new + structure from the given coordinates. + + + The x coordinate. + The y coordinate. + The z coordinate. + + + + + Creates a new + structure from the given coordinates. + + + The point coordinates. + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The vector to be converted. + + + The result of the conversion. + + + + + + Performs a conversion from + to . + + + + + + Gets whether three points lie on the same line. + + + The first point. + The second point. + The third point. + + True if there is a line passing through all + three points; false otherwise. + + + + + Implements the operator !=. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + The acceptance tolerance threshold to consider the instances equal. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Gets or sets the point's X coordinate. + + + + + + Gets or sets the point's Y coordinate. + + + + + + Gets or sets the point's Z coordinate. + + + + + + Gets the point at the 3D space origin: (0, 0, 0) + + + + + + Denavit Hartenberg matrix (commonly referred as T). + + + + + + Executes the transform calculations (T = Z*X). + + + Transform matrix T. + + Calling this method also updates the Transform property. + + + + + Gets or sets the transformation matrix T (as in T = Z * X). + + + + + + Gets or sets the matrix regarding X axis transformations. + + + + + + Gets or sets the matrix regarding Z axis transformations. + + + + + + Denavit Hartenberg model for joints. + + + + + This class represents either a model itself or a submodel + when used with a + DenavitHartenbergModelCombinator instance. + + + References: + + + Wikipedia contributors, "Denavit-Hartenberg parameters," Wikipedia, + The Free Encyclopedia, available at: + http://en.wikipedia.org/wiki/Denavit%E2%80%93Hartenberg_parameters + + + + + + + The following example shows the creation and animation + of a 2-link planar manipulator. + + + // Create the DH-model at location (0, 0, 0) + DenavitHartenbergModel model = new DenavitHartenbergModel(); + + // Add the first joint + model.Joints.Add(alpha: 0, theta: Math.PI / 4, radius: 35, offset: 0); + + // Add the second joint + model.Joints.Add(alpha: 0, theta: -Math.PI / 3, radius: 35, offset: 0); + + // Now move the arm + model.Joints[0].Parameters.Theta += Math.PI / 10; + model.Joints[1].Parameters.Theta -= Math.PI / 10; + + // Calculate the model + model.Compute(); + + + + + + + + + + Initializes a new instance of the + class given a specified model position in 3D space. + + + The model's position in 3D space. Default is (0,0,0). + + + + + Initializes a new instance of the + class at the origin of the space (0,0,0). + + + + + + Computes the entire model, calculating the + final position for each joint in the model. + + + The model transformation matrix + + + + + Calculates the entire model given it is attached to a parent model and computes each joint position. + + + Parent model this model is attached to. + + Model transform matrix of the whole chain (parent + model). + + This function assumes the parent model has already been calculated. + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the model kinematic chain. + + + + + + Gets or sets the model position. + + + + + + Gets the transformation matrix T for the full model, given + as T = T_0 * T_1 * T_2 ...T_n in which T_i is the transform + matrix for each joint in the model. + + + + + + Denavit Hartenberg Model Combinator class to make combination + of models to create a complex model composed of multiple chains. + + + + + The following example shows the creation and animation of a + 2-link planar manipulator with a dual 2-link planar gripper. + + + + // Create the DH-model at (0, 0, 0) location + DenavitHartenbergModel model = new DenavitHartenbergModel(); + + // Add the first joint + model.Joints.Add(alpha: 0, theta: Math.PI / 4, radius: 35, offset: 0); + + // Add the second joint + model.Joints.Add(alpha: 0, theta: -Math.PI / 3, radius: 35, offset: 0); + + // Create the top finger + DenavitHartenbergModel model_tgripper = new DenavitHartenbergModel(); + model_tgripper.Joints.Add(alpha: 0, theta: Math.PI / 4, radius: 20, offset: 0); + model_tgripper.Joints.Add(alpha: 0, theta: -Math.PI / 3, radius: 20, offset: 0); + + // Create the bottom finger + DenavitHartenbergModel model_bgripper = new DenavitHartenbergModel(); + model_bgripper.Joints.Add(0, -Math.PI / 4, 20, 0); + model_bgripper.Joints.Add(0, Math.PI / 3, 20, 0); + + // Create the model combinator from the parent model + DenavitHartenbergModelCombinator arm = new DenavitHartenbergModelCombinator(model); + + // Add the top finger + arm.Children.Add(model_tgripper); + + // Add the bottom finger + arm.Children.Add(model_bgripper); + + // Calculate the whole model (parent model + children models) + arm.Compute(); + + + + + + + Initializes a new instance of the class. + + + The inner model contained at this node. + + + + + Calculates the whole combined model (this model plus all its + children plus all the children of the children and so on) + + + + + + Gets the parent of this node. + + + + + + Gets the model contained at this node. + + + + + + Gets the collection of models attached to this node. + + + + + + Collection of Denavit-Hartenberg model nodes. + + + + + + Initializes a new instance of the class. + + + The owner. + + + + + Adds a children model to the end of this . + + + + + + Inserts an element into the Collection<T> at the specified index. + + + + + + Gets the owner of this collection (i.e. the parent + which owns the + children contained at this collection. + + + + + + Denavit Hartenberg joint-description parameters. + + + + + + Initializes a new instance of the class. + + + Angle (in radians) of the Z axis relative to the last joint. + Angle (in radians) of the X axis relative to the last joint. + Length or radius of the joint. + Offset along Z axis relatively to the last joint. + + + + + Denavit Hartenberg parameters constructor + + + + + + Angle in radians about common normal, from + old z axis to the new z axis. + + + + + + Angle in radians about previous z, + from old x to the new x. + + + + + + Length of the joint (also known as a). + + + + + + Offset along previous z to the common normal (also known as d). + + + + + + Denavit-Hartenberg Model Joint. + + + + + + Initializes a new instance of the class. + + + The + parameters to be used to create the joint. + + + + + Initializes a new instance of the class. + + + Angle in radians on the Z axis relatively to the last joint. + Angle in radians on the X axis relatively to the last joint. + Length or radius of the joint. + Offset along Z axis relatively to the last joint. + + + + + Updates the joint transformation matrix and position + given a model transform matrix and reference position. + + + + + + Gets or sets the current associated with this joint. + + + + + + Gets or sets the position of this joint. + + + + + + Gets or sets the parameters for this joint. + + + + + + Collection of Denavit Hartenberg Joints. + + + + + + Adds an object to the end of this . + + + The + parameters specifying the joint to be added. + + + + + Adds an object to the end of this . + + + Angle in radians on the Z axis relatively to the last joint. + Angle in radians on the X axis relatively to the last joint. + Length or radius of the joint. + Offset along Z axis relatively to the last joint. + + + + + Static class Matrix. Defines a set of extension methods + that operates mainly on multidimensional arrays and vectors. + + + + + The matrix class is a static class containing several extension methods. + To use this class, import the and use the + standard .NET's matrices and jagged arrays. When you call the dot (.) + operator on those classes, the extension methods offered by this class + should become available through IntelliSense auto-complete. + + + +

Introduction

+ + + Declaring and using matrices in the Accord.NET Framework does + not requires much. In fact, it does not require anything else + that is not already present at the .NET Framework. If you have + already existing and working code using other libraries, you + don't have to convert your matrices to any special format used + by Accord.NET. This is because Accord.NET is built to interoperate + with other libraries and existing solutions, relying solely on + default .NET structures to work. + + + To begin, please add the following using directive on + top of your .cs (or equivalent) source code file: + + + using Accord.Math; + + + + This is all you need to start using the Accord.NET matrix library. + +

Creating matrices

+ + + Let's start by declaring a matrix, or otherwise specifying matrices + from other sources. The most straightforward way to declare a matrix + in Accord.NET is simply using: + + + double[,] matrix = + { + { 1, 2 }, + { 3, 4 }, + { 5, 6 }, + }; + + + + Yep, that is right. You don't need to create any fancy custom Matrix + classes or vectors to make Accord.NET work, which is a plus if you + have already existent code using other libraries. You are also free + to use both the multidimensional matrix syntax above or the jagged + matrix syntax below: + + + double[][] matrix = + { + new double[] { 1, 2 }, + new double[] { 3, 4 }, + new double[] { 5, 6 }, + }; + + + + Special purpose matrices can also be created through specialized methods. + Those include + + + // Creates a vector of indices + int[] idx = Matrix.Indices(0, 10); // { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } + + // Creates a step vector within a given interval + double[] interval = Matrix.Interval(from: -2, to: 4); // { -2, -1, 0, 1, 2, 3, 4 }; + + // Special matrices + double[,] I = Matrix.Identity(3); // creates a 3x3 identity matrix + double[,] magic = Matrix.Magic(5); // creates a magic square matrix of size 5 + + double[] v = Matrix.Vector(5, 1.0); // generates { 1, 1, 1, 1, 1 } + double[,] diagonal = Matrix.Diagonal(v); // matrix with v on its diagonal + + + + Another way to declare matrices is by parsing the contents of a string: + + + string str = @"1 2 + 3 4"; + + double[,] matrix = Matrix.Parse(str); + + + + You can even read directly from matrices formatted in C# syntax: + + + string str = @"double[,] matrix = + { + { 1, 2 }, + { 3, 4 }, + { 5, 6 }, + }"; + + double[,] multid = Matrix.Parse(str, CSharpMatrixFormatProvider.InvariantCulture); + double[,] jagged = Matrix.ParseJagged(str, CSharpMatrixFormatProvider.InvariantCulture); + + + + And even from Octave-compatible syntax! + + + string str = "[1 2; 3 4]"; + + double[,] matrix = Matrix.Parse(str, OctaveMatrixFormatProvider.InvariantCulture); + + + + There are also other methods, such as specialization for arrays and other formats. + For more details, please take a look on , + , , + and . + + + +

Matrix operations

+ + + Albeit being simple matrices, the framework leverages + .NET extension methods to support all basic matrix operations. For instance, + consider the elementwise operations (also known as dot operations in Octave): + + + double[] vector = { 0, 2, 4 }; + double[] a = vector.ElementwiseMultiply(2); // vector .* 2, generates { 0, 4, 8 } + double[] b = vector.ElementwiseDivide(2); // vector ./ 2, generates { 0, 1, 2 } + double[] c = vector.ElementwisePower(2); // vector .^ 2, generates { 0, 4, 16 } + + + + Operations between vectors, matrices, and both are also completely supported: + + + // Declare two vectors + double[] u = { 1, 6, 3 }; + double[] v = { 9, 4, 2 }; + + // Products between vectors + double inner = u.InnerProduct(v); // 39.0 + double[,] outer = u.OuterProduct(v); // see below + double[] kronecker = u.KroneckerProduct(v); // { 9, 4, 2, 54, 24, 12, 27, 12, 6 } + double[][] cartesian = u.CartesianProduct(v); // all possible pair-wise combinations + + /* outer = + { + { 9, 4, 2 }, + { 54, 24, 12 }, + { 27, 12, 6 }, + }; */ + + // Addition + double[] addv = u.Add(v); // { 10, 10, 5 } + double[] add5 = u.Add(5); // { 6, 11, 8 } + + // Elementwise operations + double[] abs = u.Abs(); // { 1, 6, 3 } + double[] log = u.Log(); // { 0, 1.79, 1.09 } + + // Apply *any* function to all elements in a vector + double[] cos = u.Apply(Math.Cos); // { 0.54, 0.96, -0.989 } + u.ApplyInPlace(Math.Cos); // can also do optionally in-place + + + // Declare a matrix + double[,] M = + { + { 0, 5, 2 }, + { 2, 1, 5 } + }; + + // Extract a subvector from v: + double[] vcut = v.Submatrix(0, 1); // { 9, 4 } + + // Some operations between vectors and matrices + double[] Mv = m.Multiply(v); // { 24, 32 } + double[] vM = vcut.Multiply(m); // { 8, 49, 38 } + + // Some operations between matrices + double[,] Md = m.MultiplyByDiagonal(v); // { { 0, 20, 4 }, { 18, 4, 10 } } + double[,] MMt = m.MultiplyByTranspose(m); // { { 29, 15 }, { 15, 30 } } + + + + Please note this is by no means an extensive list; please take a look on + all members available on this class or (preferably) use IntelliSense to + navigate through all possible options when trying to perform an operation. +
+ + + + + + + + +
+ + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Start row index + End row index + Start column index + End column index + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + The matrix where results should be stored. + Start row index + End row index + Start column index + End column index + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + The matrix where results should be stored. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Starting row index + End row index + Array of column indices + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices + Start column index + End column index + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Start row index + End row index + Start column index + End column index + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + Set to true to avoid memory allocations + when possible. This might result on the shallow copies of some + elements. Default is false (default is to always provide a true, + deep copy of every element in the matrices, using more memory). + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of indices. + True to return a transposed matrix; false otherwise. + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices + Start column index + End column index + Set to true to avoid memory allocations + when possible. This might result on the shallow copies of some + elements. Default is false (default is to always provide a true, + deep copy of every element in the matrices, using more memory). + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Starting row index + End row index + Array of column indices + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Array of indices. + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Array of indices. + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Starting index. + End index. + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a subvector extracted from the current vector. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Array of indices. + + + + + Returns subgroups extracted from the given vector. + + + The vector to extract the groups from. + The vector of indices for the groups. + + + + + Returns subgroups extracted from the given vector, assuming that + the groups should have been labels from 0 until the given number + of . + + + The vector to extract the groups from. + The vector of indices for the groups. + The number of classes in the groups. Specifying this + parameter will make the method assume the groups should be containing + integer labels ranging from 0 until the number of classes. + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a new multidimensional matrix. + + + + + + Returns a new multidimensional matrix. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a new jagged matrix. + + + + + + Returns a new jagged matrix. + + + + + + Returns a square diagonal matrix of the given size. + + + + + + Returns a matrix of the given size with value on its diagonal. + + + + + + Return a square matrix with a vector of values on its diagonal. + + + + + + Return a jagged matrix with a vector of values on its diagonal. + + + + + + Returns a square diagonal matrix of the given size. + + + + + + Return a square matrix with a vector of values on its diagonal. + + + + + + Returns a matrix with a vector of values on its diagonal. + + + + + + Returns the Identity matrix of the given size. + + + + + + Returns the Identity matrix of the given size. + + + + + + Creates a jagged magic square matrix. + + + + + + Creates a magic square matrix. + + + + + + Creates a centering matrix of size N x N in the + form (I - 1N) where 1N is a matrix with + all elements equal to 1 / N. + + + + + + Creates a rows-by-cols matrix with uniformly distributed random data. + + + + + Creates a rows-by-cols matrix with uniformly distributed random data. + + + + + + Creates a rows-by-cols matrix with uniformly distributed random data. + + + + + + Creates a rows-by-cols matrix random data drawn from a given distribution. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with random data drawn from a given distribution. + + + + + + Creates a matrix with a single row vector. + + + + + + Creates a matrix with a single column vector. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a index vector. + + + + + + Creates a index vector. + + + + + + Gets the dimensions of an array. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates a bi-dimensional mesh matrix. + + + + + // The Mesh method can be used to generate all + // possible (x,y) pairs between two ranges. + + // We can create a grid as + double[][] grid = Matrix.Mesh + ( + rowMin: 0, rowMax: 1, rowStepSize: 0.3, + colMin: 0, colMax: 1, colStepSize: 0.1 + ); + + // Now we can plot the points on-screen + ScatterplotBox.Show("Grid (step size)", grid).Hold(); + + + + The resulting image is shown below. + + + + + + + Creates a bi-dimensional mesh matrix. + + + + + + Creates a bi-dimensional mesh matrix. + + + + + // The Mesh method can be used to generate all + // possible (x,y) pairs between two ranges. + + // We can create a grid as + double[][] grid = Matrix.Mesh + ( + rowMin: 0, rowMax: 1, rowSteps: 10, + colMin: 0, colMax: 1, colSteps: 5 + ); + + // Now we can plot the points on-screen + ScatterplotBox.Show("Grid (fixed steps)", grid).Hold(); + + + + The resulting image is shown below. + + + + + + + Creates a bi-dimensional mesh matrix. + + + + + // The Mesh method can be used to generate all + // possible (x,y) pairs between two ranges. + + // We can create a grid as + double[][] grid = Matrix.Mesh + ( + rowRange: new DoubleRange(0, 1), rowStepSize: 0.3, + colRange: new DoubleRange(0, 1), colStepSize: 0.1 + ); + + // Now we can plot the points on-screen + ScatterplotBox.Show("Grid (step size)", grid).Hold(); + + + + The resulting image is shown below. + + + + + + + Creates a bi-dimensional mesh matrix. + + + The values to be replicated vertically. + The values to be replicated horizontally. + + + + // The Mesh method generates all possible (x,y) pairs + // between two vector of points. For example, let's + // suppose we have the values: + // + double[] a = { 0, 1 }; + double[] b = { 0, 1 }; + + // We can create a grid as + double[][] grid = a.Mesh(b); + + // the result will be: + double[][] expected = + { + new double[] { 0, 0 }, + new double[] { 0, 1 }, + new double[] { 1, 0 }, + new double[] { 1, 1 }, + }; + + + + + + + Generates a 2-D mesh grid from two vectors a and b, + generating two matrices len(a) x len(b) with all + all possible combinations of values between the two vectors. This + method is analogous to MATLAB/Octave's meshgrid function. + + + A tuple containing two matrices: the first containing values + for the x-coordinates and the second for the y-coordinates. + + + // The MeshGrid method generates two matrices that can be + // used to generate all possible (x,y) pairs between two + // vector of points. For example, let's suppose we have + // the values: + // + double[] a = { 1, 2, 3 }; + double[] b = { 4, 5, 6 }; + + // We can create a grid + var grid = a.MeshGrid(b); + + // get the x-axis values // | 1 1 1 | + double[,] x = grid.Item1; // x = | 2 2 2 | + // | 3 3 3 | + + // get the y-axis values // | 4 5 6 | + double[,] y = grid.Item2; // y = | 4 5 6 | + // | 4 5 6 | + + // we can either use those matrices separately (such as for plotting + // purposes) or we can also generate a grid of all the (x,y) pairs as + // + double[,][] xy = x.ApplyWithIndex((v, i, j) => new[] { x[i, j], y[i, j] }); + + // The result will be + // + // | (1, 4) (1, 5) (1, 6) | + // xy = | (2, 4) (2, 5) (2, 6) | + // | (3, 4) (3, 5) (3, 6) | + + + + + + Combines two vectors horizontally. + + + + + + Combines a vector and a element horizontally. + + + + + + Combines a vector and a element horizontally. + + + + + + Combines a matrix and a vector horizontally. + + + + + + Combines two matrices horizontally. + + + + + + Combines two matrices horizontally. + + + + + + Combines a matrix and a vector horizontally. + + + + + + Combines a matrix and a vector horizontally. + + + + + + Combine vectors horizontally. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines matrices vertically. + + + + + + Combines matrices vertically. + + + + + + Combines matrices vertically. + + + + + Expands a data vector given in summary form. + + + A base vector. + An array containing by how much each line should be replicated. + + + + + Expands a data matrix given in summary form. + + + A base matrix. + An array containing by how much each line should be replicated. + + + + + Splits a given vector into a smaller vectors of the given size. + This operation can be reverted using . + + + The vector to be splitted. + The size of the resulting vectors. + + An array of vectors containing the subdivisions of the given vector. + + + + + Merges a series of vectors into a single vector. This + operation can be reverted using . + + + The vectors to be merged. + The size of the inner vectors. + + A single array containing the given vectors. + + + + + Merges a series of vectors into a single vector. This + operation can be reverted using . + + + The vectors to be merged. + + A single array containing the given vectors. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many rows and columns to add at each side of the matrix. + + The original matrix with an extra row of zeros at the selected places. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many columns to add at the sides of the matrix. + How many rows to add at the bottom and top of the matrix. + + The original matrix with an extra row of zeros at the selected places. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many rows to add at the bottom. + How many rows to add at the top. + How many columns to add at the sides. + + The original matrix with an extra row of zeros at the selected places. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many rows to add at the bottom. + How many rows to add at the top. + How many columns to add at the left side. + How many columns to add at the right side. + + The original matrix with an extra row of zeros at the selected places. + + + + + Returns a represents a matrix. + + The matrix. + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + Returns a that represents a matrix. + + + The matrix. + + + If set to true, the matrix will be written using multiple + lines. If set to false, the matrix will be written in a + single line. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + The format to use when creating the resulting string. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + + The format to use when creating the resulting string. + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + The matrix. + + The format to use when creating the resulting string. + + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + Returns a that represents a matrix. + + + The matrix. + + + The format to use when creating the resulting string. + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + Returns a that represents an array. + + + The array. + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Returns a that represents an array. + + + The array. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Returns a that represents an array. + + + The matrix. + + + The format to use when creating the resulting string. + + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Returns a that represents an array. + + + The array. + + + The format to use when creating the resulting string. + + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + + The string representation of the matrix. + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + A return value indicates whether the conversion succeeded or failed. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + When this method returns, contains the double-precision floating-point + number matrix equivalent to the parameter, if the conversion succeeded, + or null if the conversion failed. The conversion fails if the parameter + is null, is not a matrix in a valid format, or contains elements which represent + a number less than MinValue or greater than MaxValue. This parameter is passed + uninitialized. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + A return value indicates whether the conversion succeeded or failed. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + When this method returns, contains the double-precision floating-point + number matrix equivalent to the parameter, if the conversion succeeded, + or null if the conversion failed. The conversion fails if the parameter + is null, is not a matrix in a valid format, or contains elements which represent + a number less than MinValue or greater than MaxValue. This parameter is passed + uninitialized. + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise Square root. + + + + + + Elementwise Square root. + + + + + + Elementwise Log operation. + + + + + + Elementwise Exp operation. + + + + + + Elementwise Exp operation. + + + + + + Elementwise Log operation. + + + + + + Elementwise Log operation. + + + + + + Elementwise power operation. + + + A matrix. + A power. + + Returns x elevated to the power of y. + + + + + Elementwise power operation. + + + A matrix. + A power. + + Returns x elevated to the power of y. + + + + + Elementwise divide operation. + + + + + + Elementwise divide operation. + + + + + + Elementwise divide operation. + + + + + + Elementwise division. + + + + + + Elementwise division. + + + + + + Elementwise division. + + + + + + Elementwise multiply operation. + + + + + Elementwise multiply operation. + + + + + Elementwise multiply operation. + + + + + + Elementwise multiply operation. + + + + + + Elementwise multiplication. + + + + + + Elementwise multiplication. + + + The left matrix a. + The right vector b. + + If set to 0, b will be multiplied with every row vector in a. + If set to 1, b will be multiplied with every column vector. + + + + + + Elementwise multiplication. + + + The left matrix a. + The right vector b. + The result vector r. + + If set to 0, b will be multiplied with every row vector in a. + If set to 1, b will be multiplied with every column vector. + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side matrix b: + double[,] rightSide = { {1}, {2}, {3} }; + + // Solve the linear system Ax = b by finding x: + double[,] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { {-1/18}, {2/18}, {5/18} }. + + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side vector b: + double[] rightSide = { 1, 2, 3 }; + + // Solve the linear system Ax = b by finding x: + double[] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { -1/18, 2/18, 5/18 }. + + + + + + + Computes the inverse of a matrix. + + + + + + Computes the inverse of a matrix. + + + + + + Computes the pseudo-inverse of a matrix. + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side matrix b: + double[,] rightSide = { {1}, {2}, {3} }; + + // Solve the linear system Ax = b by finding x: + double[,] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { {-1/18}, {2/18}, {5/18} }. + + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side vector b: + double[] rightSide = { 1, 2, 3 }; + + // Solve the linear system Ax = b by finding x: + double[] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { -1/18, 2/18, 5/18 }. + + + + + + + Computes the inverse of a matrix. + + + + + + Computes the inverse of a matrix. + + + + + + Computes the pseudo-inverse of a matrix. + + + + + + Converts a jagged-array into a multidimensional array. + + + + + + Converts a jagged-array into a multidimensional array. + + + + + + Converts an array into a multidimensional array. + + + + + + Converts an array into a multidimensional array. + + + + + + Converts an array into a multidimensional array. + + + + + + Converts a multidimensional array into a jagged array. + + + + + + Converts a multidimensional array into a jagged array. + + + + + + Converts a double-precision floating point multidimensional + array into a double-precision floating point multidimensional + array. + + + + + + Converts a byte multidimensional array into a double- + precision floating point multidimensional array. + + + + + + Converts a double-precision floating point multidimensional + array into a single-precision floating point multidimensional + array. + + + + + + Converts a single-precision floating point multidimensional + array into a double-precision floating point multidimensional + array. + + + + + + Truncates a double matrix to integer values. + + The matrix to be truncated. + + + + + Truncates a double matrix to integer values. + + The matrix to be truncated. + + + + + Converts a matrix to integer values. + + + The matrix to be converted. + + + + + Converts a matrix to integer values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts a double-precision floating point multidimensional + array into a single-precision floating point multidimensional + array. + + + + + + Converts a double-precision floating point multidimensional + array into a single-precision floating point multidimensional + array. + + + + + + Truncates a double vector to integer values. + + The vector to be truncated. + + + + + Converts a vector to integer values. + + + The vector to be converted. + + + + + Converts a vector to integer values. + + + The vector to be converted. + + + + + Converts a integer vector into a double vector. + + The vector to be converted. + + + + + Converts a double vector into a single vector. + + The vector to be converted. + + + + + Converts the values of a vector using the given converter expression. + + The type of the input. + The type of the output. + The vector to be converted. + The converter function. + + + + + Converts the values of a matrix using the given converter expression. + + The type of the input. + The type of the output. + The matrix to be converted. + The converter function. + + + + + Converts the values of a matrix using the given converter expression. + + The type of the input. + The type of the output. + The vector to be converted. + The converter function. + + + + + Converts an object into another type, irrespective of whether + the conversion can be done at compile time or not. This can be + used to convert generic types to numeric types during runtime. + + + The destination type. + + The value to be converted. + + The result of the conversion. + + + + + Converts the values of a vector using the given converter expression. + + The type of the output. + The vector or array to be converted. + + + + + Creates a vector containing every index that can be used to + address a given , in order. + + + The array whose indices will be returned. + + + An enumerable object that can be used to iterate over all + positions of the given System.Array. + + + + + double[,] a = + { + { 5.3, 2.3 }, + { 4.2, 9.2 } + }; + + foreach (int[] idx in a.GetIndices()) + { + // Get the current element + double e = (double)a.GetValue(idx); + } + + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts an array of values into a , + attempting to guess column types by inspecting the data. + + + The values to be converted. + + A containing the given values. + + + + // Specify some data in a table format + // + object[,] data = + { + { "Id", "IsSmoker", "Age" }, + { 0, 1, 10 }, + { 1, 1, 15 }, + { 2, 0, 40 }, + { 3, 1, 20 }, + { 4, 0, 70 }, + { 5, 0, 55 }, + }; + + // Create a new table with the data + DataTable dataTable = data.ToTable(); + + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a generic array. + + + + + + Converts a DataColumn to a generic array. + + + + + + Converts a DataTable to a generic array. + + + + + + Converts a DataTable to a generic array. + + + + + + Converts a DataColumn to a int[] array. + + + + + + Converts a DataTable to a int[][] array. + + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and transpose of B. + + + The left matrix A. + The transposed right matrix B. + The product A*B' of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and transpose of B. + + + The left matrix A. + The transposed right matrix B. + The product A*B' of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and + transpose of B, storing the result in matrix R. + + + The left matrix A. + The transposed right matrix B. + The matrix R to store the product R = A*B' + of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and + transpose of B, storing the result in matrix R. + + + The left matrix A. + The transposed right matrix B. + The matrix R to store the product R = A*B' + of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The product A'*B of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The product A'*B of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The matrix R to store the product R = A'*B + of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The matrix R to store the product R = A'*B + of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and vector b. + + + The transposed left matrix A. + The right column vector b. + The product A'*b of the given matrices A and vector b. + + + + + Computes the product A'*b of matrix A transposed and column vector b. + + + The transposed left matrix A. + The right column vector b. + The vector r to store the product r = A'*b + of the given matrix A and vector b. + + + + + Computes the product A'*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A'*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*inv(B) of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of inverse right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*inv(B) of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of inverse right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Multiplies a row vector v and a matrix A, + giving the product v'*A. + + + The row vector v. + The matrix A. + The product v'*Aof the multiplication of the + given row vector v and matrix A. + + + + + Multiplies a row vector v and a matrix A, + giving the product v'*A. + + + The row vector v. + The matrix A. + The product v'*Aof the multiplication of the + given row vector v and matrix A. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The product A*x of the multiplication of the + given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The product A*x of the multiplication of the + given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The product A*x of the multiplication of the + given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The matrix R to store the product R=A*x + of the multiplication of the given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The matrix R to store the product R=A*x + of the multiplication of the given matrix A and scalar x. + + + + + Multiplies a vector v by a scalar x. + + The vector v. + The scalar x. + The product v*x of the multiplication of the + given vector v and scalar x. + + + + + Multiplies a vector v by a scalar x. + + The vector v. + The scalar x. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The product v*x of the multiplication of the + given vector v and scalar x. + + + + + Multiplies a vector v by a scalar x. + + The vector v. + The scalar x. + The product v*x of the multiplication of the + given vector v and scalar x. + + + + + Multiplies a scalar x by a matrix A. + + The scalar x. + The matrix A. + The product x*A of the multiplication of the + given scalar x and matrix A. + + + + + Multiplies a scalar x by a matrix A. + + The scalar x. + The matrix A. + The product x*A of the multiplication of the + given scalar x and matrix A. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Divides a scalar by a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The division quotient of the given vector a and scalar b. + + + + Divides a scalar by a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The division quotient of the given vector a and scalar b. + + + + + Divides a vector by a scalar. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The division quotient of the given vector a and scalar b. + + + + + Divides a vector by a scalar. + + + A vector. + A scalar. + + The division quotient of the given vector a and scalar b. + + + + + Divides a vector by a scalar. + + + A vector. + A scalar. + + The division quotient of the given vector a and scalar b. + + + + + Elementwise divides a scalar by a vector. + + + A vector. + A scalar. + + The division quotient of the given scalar a and vector b. + + + + + Divides two matrices by multiplying A by the inverse of B. + + + The first matrix. + The second matrix (which will be inverted). + + The result from the division AB^-1 of the given matrices. + + + + + Divides a matrix by a scalar. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The division quotient of the given matrix and scalar. + + + + + Divides a matrix by a scalar. + + + A matrix. + A scalar. + + The division quotient of the given matrix and scalar. + + + + + Elementwise divides a scalar by a matrix. + + + A scalar. + A matrix. + + The elementwise division of the given scalar and matrix. + + + + + Elementwise divides a scalar by a matrix. + + + A scalar. + A matrix. + + The elementwise division of the given scalar and matrix. + + + + + Gets the inner product (scalar product) between two vectors (a'*b). + + + A vector. + A vector. + + The inner product of the multiplication of the vectors. + + + + In mathematics, the dot product is an algebraic operation that takes two + equal-length sequences of numbers (usually coordinate vectors) and returns + a single number obtained by multiplying corresponding entries and adding up + those products. The name is derived from the dot that is often used to designate + this operation; the alternative name scalar product emphasizes the scalar + (rather than vector) nature of the result. + + The principal use of this product is the inner product in a Euclidean vector space: + when two vectors are expressed on an orthonormal basis, the dot product of their + coordinate vectors gives their inner product. + + + + + + Gets the inner product (scalar product) between two vectors (a'*b). + + + A vector. + A vector. + + The inner product of the multiplication of the vectors. + + + + In mathematics, the dot product is an algebraic operation that takes two + equal-length sequences of numbers (usually coordinate vectors) and returns + a single number obtained by multiplying corresponding entries and adding up + those products. The name is derived from the dot that is often used to designate + this operation; the alternative name scalar product emphasizes the scalar + (rather than vector) nature of the result. + + The principal use of this product is the inner product in a Euclidean vector space: + when two vectors are expressed on an orthonormal basis, the dot product of their + coordinate vectors gives their inner product. + + + + + + Gets the outer product (matrix product) between two vectors (a*bT). + + + + In linear algebra, the outer product typically refers to the tensor + product of two vectors. The result of applying the outer product to + a pair of vectors is a matrix. The name contrasts with the inner product, + which takes as input a pair of vectors and produces a scalar. + + + + + + Vector product. + + + + The cross product, vector product or Gibbs vector product is a binary operation + on two vectors in three-dimensional space. It has a vector result, a vector which + is always perpendicular to both of the vectors being multiplied and the plane + containing them. It has many applications in mathematics, engineering and physics. + + + + + + Vector product. + + + + + + Computes the Cartesian product of many sets. + + + + References: + - http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-Cartesian-product-with-linq.aspx + + + + + + Computes the Cartesian product of many sets. + + + + + + Computes the Cartesian product of two sets. + + + + + + Computes the Kronecker product between two matrices. + + + The left matrix a. + The right matrix b. + + The Kronecker product of the two matrices. + + + + + Computes the Kronecker product between two vectors. + + + The left vector a. + The right vector b. + + The Kronecker product of the two vectors. + + + + + Adds a scalar to each element of a matrix. + + + + + + Subtracts a scalar to each element of a matrix. + + + + + + Adds two matrices. + + + A matrix. + A matrix. + + The sum of the given matrices. + + + + + Adds two matrices. + + + A matrix. + A matrix. + + The sum of the given matrices. + + + + + Adds a matrix and a scalar. + + + A matrix. + A scalar. + + The sum of the given matrix and scalar. + + + + + Adds a vector to a column or row of a matrix. + + + A matrix. + A vector. + + Pass 0 if the vector should be added row-wise, + or 1 if the vector should be added column-wise. + + + + + + Adds a scalar to the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Adds a scalar to the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Subtracts a scalar from the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Subtracts a scalar from the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Adds a vector to a column or row of a matrix. + + + A matrix. + A vector. + The dimension to add the vector to. + + + + + Adds a vector to a column or row of a matrix. + + + A matrix. + A vector. + The dimension to add the vector to. + + + + + Adds two vectors. + + + A vector. + A vector. + + The addition of the given vectors. + + + + + Adds two vectors. + + + A vector. + A vector. + + The addition of the given vectors. + + + + + Subtracts two matrices. + + + A matrix. + A matrix. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The subtraction of the given matrices. + + + + + Subtracts two matrices. + + + A matrix. + A matrix. + + The subtraction of the given matrices. + + + + + Subtracts a scalar from each element of a matrix. + + + + + + Elementwise subtracts an element of a matrix from a scalar. + + + A scalar. + A matrix. + + The elementwise subtraction of scalar a and matrix b. + + + + + Elementwise subtracts an element of a matrix from a scalar. + + + A scalar. + A matrix. + + The elementwise subtraction of scalar a and matrix b. + + + + + Subtracts two vectors. + + + A vector. + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of vector b from vector a. + + + + + Subtracts two vectors. + + + A vector. + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of vector b from vector a. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of given scalar from all elements in the given vector. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of given scalar from all elements in the given vector. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + + The subtraction of the given vector elements from the given scalar. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + + The subtraction of the given vector elements from the given scalar. + + + + + Normalizes a vector to have unit length. + + + A vector. + A norm to use. Default is . + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Normalizes a vector to have unit length. + + + A vector. + A norm to use. Default is . + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Normalizes a vector to have unit length. + + + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Normalizes a vector to have unit length. + + + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Multiplies a matrix by itself n times. + + + + + Returns a sub matrix extracted from the current matrix. + The matrix to return the submatrix from. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + + + + + Gets a column vector from a matrix. + + + + + Gets a column vector from a matrix. + + + + + Gets a column vector from a matrix. + + + + + Gets a row vector from a matrix. + + + + + + Gets a row vector from a matrix. + + + + + + Gets a column vector from a matrix. + + + + + Stores a column vector into the given column position of the matrix. + + + + + Stores a column vector into the given column position of the matrix. + + + + + Gets a row vector from a matrix. + + + + + Stores a row vector into the given row position of the matrix. + + + + + Stores a row vector into the given row position of the matrix. + + + + + Returns a new matrix without one of its columns. + + + + + + Returns a new matrix without one of its columns. + + + + + + Returns a new matrix with a new column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a new column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a new row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a new row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given column vector inserted at a given index. + + + + + + Returns a new matrix with a given column vector inserted at a given index. + + + + + + Returns a new matrix with a given row vector inserted at a given index. + + + + + + Returns a new matrix with a given row vector inserted at a given index. + + + + + + Returns a new matrix without one of its rows. + + + + + + Removes an element from a vector. + + + + + + Gets the number of elements matching a certain criteria. + + + The type of the array. + The array to search inside. + The search criteria. + + + + + Gets the indices of the first element matching a certain criteria. + + + The type of the array. + + The array to search inside. + The search criteria. + + + + + Searches for the specified value and returns the index of the first occurrence within the array. + + + The type of the array. + + The array to search. + The value to be searched. + + The index of the searched value within the array, or -1 if not found. + + + + + Gets the indices of all elements matching a certain criteria. + + + The type of the array. + The array to search inside. + The search criteria. + + + + + Gets the indices of all elements matching a certain criteria. + + The type of the array. + The array to search inside. + The search criteria. + + Set to true to stop when the first element is + found, set to false to get all elements. + + + + + Gets the indices of all elements matching a certain criteria. + + The type of the array. + The array to search inside. + The search criteria. + + + + Gets the indices of all elements matching a certain criteria. + + The type of the array. + The array to search inside. + The search criteria. + + Set to true to stop when the first element is + found, set to false to get all elements. + + + + + Gets the maximum non-null element in a vector. + + + + + + Gets the maximum element in a vector. + + + + + + Gets the maximum element in a vector. + + + + + + Gets the maximum element in a vector. + + + + + + Gets the minimum element in a vector. + + + + + + Gets the minimum element in a vector. + + + + + + Gets the maximum element in a vector up to a fixed length. + + + + + + Gets the maximum element in a vector up to a fixed length. + + + + + + Gets the minimum element in a vector up to a fixed length. + + + + + + Gets the minimum element in a vector up to a fixed length. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the range of the values in a vector. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values in a vector. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values across a matrix. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values across a matrix. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values across the columns of a matrix. + + + The matrix whose ranges should be computed. + + Pass 0 if the range should be computed for each of the columns. Pass 1 + if the range should be computed for each row. Default is 0. + + + + + + Gets the range of the values across the columns of a matrix. + + + The matrix whose ranges should be computed. + + Pass 0 if the range should be computed for each of the columns. Pass 1 + if the range should be computed for each row. Default is 0. + + + + + + Performs an in-place re-ordering of elements in + a given array using the given vector of indices. + + + The values to be ordered. + The new index positions. + + + + + Retrieves a list of the distinct values for each matrix column. + + + The matrix. + + An array containing arrays of distinct values for + each column in the . + + + + + Retrieves a list of the distinct values for each matrix column. + + + The matrix. + + An array containing arrays of distinct values for + each column in the . + + + + + Retrieves only distinct values contained in an array. + + + The array. + + An array containing only the distinct values in . + + + + + Retrieves only distinct values contained in an array. + + + The array. + Whether to allow null values in + the method's output. Default is true. + + An array containing only the distinct values in . + + + + + Retrieves only distinct values contained in an array. + + + The array. + The property of the object used to determine distinct instances. + + An array containing only the distinct values in . + + + + + Sorts the columns of a matrix by sorting keys. + + + The key value for each column. + The matrix to be sorted. + The comparer to use. + + + + + Sorts the columns of a matrix by sorting keys. + + + The key value for each column. + The matrix to be sorted. + The comparer to use. + + + + + Retrieves the top count values of an array. + + + + + + Retrieves the bottom count values of an array. + + + + + + Determines whether a number is an integer, given a tolerance threshold. + + + The value to be compared. + The maximum that the number can deviate from its closest integer number. + + True if the number if an integer, false otherwise. + + + + + Compares two values for equality, considering a relative acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two vectors for equality, considering an acceptance threshold. + + + + + + Compares two vectors for equality, considering an acceptance threshold. + + + + + + Compares each member of a vector for equality with a scalar value x. + + + + + + Compares each member of a matrix for equality with a scalar value x. + + + + + + Compares each member of a vector for equality with a scalar value x. + + + + + + Compares each member of a matrix for equality with a scalar value x. + + + + + + Compares two matrices for equality. + + + + + Compares two matrices for equality. + + + Compares two vectors for equality. + + + + This method should not be called. Use Matrix.IsEqual instead. + + + + + + Compares two enumerables for set equality. Two + enumerables are set equal if they contain the + same elements, but not necessarily in the same + order. + + + The element type. + + The first set. + The first set. + + + True if the two sets contains the same elements, false otherwise. + + + + + + Returns a value indicating whether the specified + matrix contains a value that is not a number (NaN). + + + A double-precision multidimensional matrix. + + True if the matrix contains a value that is not a number, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value that is not a number (NaN). + + + A double-precision multidimensional matrix. + + True if the matrix contains a value that is not a number, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value that is not a number (NaN). + + + A double-precision multidimensional matrix. + + True if the matrix contains a value that is not a number, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a infinity value. + + + A double-precision multidimensional matrix. + + True if the matrix contains infinity values, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value within a given tolerance. + + + A double-precision multidimensional matrix. + The value to search for in the matrix. + The relative tolerance that a value must be in + order to be considered equal to the value being searched. + + True if the matrix contains the value, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value within a given tolerance. + + + A single-precision multidimensional matrix. + The value to search for in the matrix. + The relative tolerance that a value must be in + order to be considered equal to the value being searched. + + True if the matrix contains the value, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a infinity value. + + + A double-precision multidimensional matrix. + + True if the matrix contains a infinity value, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a infinity value. + + + A double-precision multidimensional matrix. + + True if the matrix contains a infinity value, false otherwise. + + + + + Gets the transpose of a matrix. + + + A matrix. + + The transpose of the given matrix. + + + + + Gets the transpose of a matrix. + + + A matrix. + + The transpose of the given matrix. + + + + + Gets the transpose of a matrix. + + + A matrix. + + True to store the transpose over the same input + , false otherwise. Default is false. + + The transpose of the given matrix. + + + + + Gets the transpose of a matrix. + + + A matrix. + + True to store the transpose over the same input + , false otherwise. Default is false. + + The transpose of the given matrix. + + + + + Gets the transpose of a row vector. + + + A row vector. + + The transpose of the given vector. + + + + + Gets the generalized transpose of a tensor. + + + A tensor. + The new order for the tensor's dimensions. + + The transpose of the given tensor. + + + + + Gets the generalized transpose of a tensor. + + + A tensor. + The new order for the tensor's dimensions. + + The transpose of the given tensor. + + + + + Gets the number of rows in a multidimensional matrix. + + + The type of the elements in the matrix. + The matrix whose number of rows must be computed. + + The number of rows in the matrix. + + + + + Gets the number of columns in a multidimensional matrix. + + + The type of the elements in the matrix. + The matrix whose number of columns must be computed. + + The number of columns in the matrix. + + + + + Gets the number of rows in a jagged matrix. + + + The type of the elements in the matrix. + The matrix whose number of rows must be computed. + + The number of rows in the matrix. + + + + + Gets the number of columns in a jagged matrix. + + + The type of the elements in the matrix. + The matrix whose number of columns must be computed. + + The number of columns in the matrix. + + + + + Returns true if a vector of real-valued observations + is ordered in ascending or descending order. + + + An array of values. + The sort order direction. + + + + + Returns true if a matrix is square. + + + + + Returns true if a matrix is symmetric. + + + + + + + Returns true if a matrix is upper triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is upper triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is symmetric. + + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the trace of a matrix product. + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the diagonal vector from a matrix. + + + A matrix. + + The diagonal vector from the given matrix. + + + + + Gets the diagonal vector from a matrix. + + + A matrix. + + The diagonal vector from the given matrix. + + + + + Gets the determinant of a matrix. + + + + + + Gets the determinant of a matrix. + + + + + + Gets the log-determinant of a matrix. + + + + + + Gets the log-determinant of a matrix. + + + + + + Gets the pseudo-determinant of a matrix. + + + + + + Gets the log of the pseudo-determinant of a matrix. + + + + + + Gets the determinant of a matrix. + + + + + + Gets the determinant of a matrix. + + + + + + Gets whether a matrix is singular. + + + + + + Gets whether a matrix is positive definite. + + + + + + Gets whether a matrix is positive definite. + + + + + Calculates the matrix Sum vector. + + A matrix whose sums will be calculated. + + Returns a vector containing the sums of each variable in the given matrix. + + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. Default is 0. + Returns a vector containing the sums of each variable in the given matrix. + + + + Gets the sum of all elements in a vector. + + + + + + Gets the sum of all elements in a vector. + + + + + + Gets the sum of all elements in a vector. + + + + Calculates a vector cumulative sum. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the cumulative sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + + Gets the product of all elements in a vector. + + + + + Gets the product of all elements in a vector. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of the array. + + + + + Rounds a double-precision floating-point matrix to a specified number of fractional digits. + + + + + + Returns the largest integer less than or equal than to the specified + double-precision floating-point number for each element of the matrix. + + + + + + Returns the largest integer greater than or equal than to the specified + double-precision floating-point number for each element of the matrix. + + + + + Rounds a double-precision floating-point number array to a specified number of fractional digits. + + + + + Returns the largest integer less than or equal than to the specified + double-precision floating-point number for each element of the array. + + + + + Returns the largest integer greater than or equal than to the specified + double-precision floating-point number for each element of the array. + + + + + Transforms a vector into a matrix of given dimensions. + + + + + Transforms a matrix into a single vector. + + + A matrix. + + + + + Transforms a matrix into a single vector. + + + A matrix. + The direction to perform copying. Pass + 0 to perform a row-wise copy. Pass 1 to perform a column-wise + copy. Default is 0. + + + + + Transforms a jagged array matrix into a single vector. + + A jagged array. + + + + + Transforms a jagged array matrix into a single vector. + + + A jagged array. + The direction to perform copying. Pass + 0 to perform a row-wise copy. Pass 1 to perform a column-wise + copy. Default is 0. + + + + + Convolves an array with the given kernel. + + + A floating number array. + A convolution kernel. + + + + + Convolves an array with the given kernel. + + + A floating number array. + A convolution kernel. + + If true the resulting array will be trimmed to + have the same length as the input array. Default is false. + + + + + Creates a memberwise copy of a jagged matrix. Matrix elements + themselves are copied only in a shallowed manner (i.e. not cloned). + + + + + + Creates a memberwise copy of a multidimensional matrix. Matrix elements + themselves are copied only in a shallowed manner (i.e. not cloned). + + + + + + Contains classes for constrained and unconstrained optimization. Includes + Conjugate Gradient (CG), + Bounded and Unbounded Broyden–Fletcher–Goldfarb–Shanno (BFGS), + gradient-free optimization methods such as and the Goldfarb-Idnani + solver for Quadratic Programming (QP) problems. + + + + + This namespace contains different methods for solving both constrained and unconstrained + optimization problems. For unconstrained optimization, methods available include + Conjugate Gradient (CG), + Bounded and Unbounded Broyden–Fletcher–Goldfarb–Shanno (BFGS), + Resilient Backpropagation and a simplified implementation of the + Trust Region Newton Method (TRON). + + + For constrained optimization problems, methods available include the + Augmented Lagrangian method for general non-linear optimization, for + gradient-free non-linear optimization, and the Goldfarb-Idnani + method for solving Quadratic Programming (QP) problems. + + + This namespace also contains optimizers specialized for least squares problems, such as + Gauss Newton and the Levenberg-Marquart least squares solvers. + + + For univariate problems, standard search algorithms are also available, such as + Brent and Binary search. + + + The namespace class diagram is shown below. + + + + + + + + + + + Base class for gradient-based optimization methods. + + + + + + Base class for optimization methods. + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + + + + + Initializes a new instance of the class. + + + The objective function whose optimum values should be found. + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + The initial solution vector to start the search. + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + The initial solution vector to start the search. + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Creates an exception with a given inner optimization algorithm code (for debugging purposes). + + + + + + Creates an exception with a given inner optimization algorithm code (for debugging purposes). + + + + + + Gets or sets the function to be optimized. + + + The function to be optimized. + + + + + Gets the number of variables (free parameters) + in the optimization problem. + + + The number of parameters. + + + + + Gets the current solution found, the values of + the parameters which optimizes the function. + + + + + + Gets the output of the function at the current . + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + The gradient of the objective . + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Gets or sets a function returning the gradient + vector of the function to be optimized for a + given value of its free parameters. + + + The gradient function. + + + + + Common interface for function optimization methods which depend on + having both an objective function and a gradient function definition + available. + + + + + + + + + + Gets or sets the function to be optimized. + + + The function to be optimized. + + + + + Gets or sets a function returning the gradient + vector of the function to be optimized for a + given value of its free parameters. + + + The gradient function. + + + + + Least Squares function delegate. + + + + This delegate represents a parameterized function that, given a set of + and an vector, + produces an associated output value. + + + The function parameters, also known as weights or coefficients. + An input vector. + + The output value produced given the vector + using the given . + + + + + Gradient function delegate. + + + + This delegate represents the gradient of a Least + Squares objective function. This function should compute the gradient vector + in respect to the function . + + + The function parameters, also known as weights or coefficients. + An input vector. + The resulting gradient vector (w.r.t to the parameters). + + + + + Common interface for Least Squares algorithms, i.e. algorithms + that can be used to solve Least Squares optimization problems. + + + + + + Attempts to find the best values for the parameter vector + minimizing the discrepancy between the generated outputs + and the expected outputs for a given set of input data. + + + A set of input data. + The values associated with each + vector in the data. + + + + + Gets or sets a parameterized model function mapping input vectors + into output values, whose optimum parameters must be found. + + + The function to be optimized. + + + + + Gets or sets a function that computes the gradient vector in respect + to the function parameters, given a set of input and output values. + + + The gradient function. + + + + + Gets the number of variables (free parameters) in the optimization problem. + + + The number of parameters. + + + + + Gets the solution found, the values of the parameters which + optimizes the function, in a least squares sense. + + + + + + Gets standard error for each parameter in the solution. + + + + + + Binary search root finding algorithm. + + + + + + Constructs a new Binary search algorithm. + + + The function to be searched. + Start of search region. + End of search region. + + + + + Attempts to find a root in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Attempts to find a root in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Finds a value of a function in the interval [a;b] + + + The function to have its root computed. + Start of search region. + End of search region. + The value to be looked for in the function. + + The location of the zero value in the given interval. + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets the solution found in the last call + to or . + + + + + + Gets the value at the solution found in the last call + to . + + + + + + Gets the function to be searched. + + + + + + Cobyla exit codes. + + + + + + Optimization successfully completed. + + + + + + Maximum number of iterations (function/constraints evaluations) reached during optimization. + + + + + + Size of rounding error is becoming damaging, terminating prematurely. + + + + + + The posed constraints cannot be fulfilled. + + + + + + Constrained optimization by linear approximation. + + + + + Constrained optimization by linear approximation (COBYLA) is a numerical + optimization method for constrained problems where the derivative of the + objective function is not known, invented by Michael J. D. Powell. + + + COBYLA2 is an implementation of Powell’s nonlinear derivative–free constrained + optimization that uses a linear approximation approach. The algorithm is a + sequential trust–region algorithm that employs linear approximations to the + objective and constraint functions, where the approximations are formed by linear + interpolation at n + 1 points in the space of the variables and tries to maintain + a regular–shaped simplex over iterations. + + + This algorithm is able to solve non-smooth NLP problems with a moderate number + of variables (about 100), with inequality constraints only. + + + References: + + + Wikipedia, The Free Encyclopedia. Cobyla. Available on: + http://en.wikipedia.org/wiki/COBYLA + + + + + + Let's say we would like to optimize a function whose gradient + we do not know or would is too difficult to compute. All we + have to do is to specify the function, pass it to Cobyla and + call its Minimize() method: + + + + // We would like to find the minimum of min f(x) = 10 * (x+1)^2 + y^2 + Func<double[], double> function = x => 10 * Math.Pow(x[0] + 1, 2) + Math.Pow(x[1], 2); + + // Create a cobyla method for 2 variables + Cobyla cobyla = new Cobyla(2, function); + + bool success = cobyla.Minimize(); + + double minimum = minimum = cobyla.Value; // Minimum should be 0. + double[] solution = cobyla.Solution; // Vector should be (-1, 0) + + + + Cobyla can be used even when we have constraints in our optimization problem. + The following example can be found in Fletcher's book Practical Methods of + Optimization, under the equation number (9.1.15). + + + + // We will optimize the 2-variable function f(x, y) = -x -y + var f = new NonlinearObjectiveFunction(2, x => -x[0] - x[1]); + + // Under the following constraints + var constraints = new[] + { + new NonlinearConstraint(2, x => x[1] - x[0] * x[0] >= 0), + new NonlinearConstraint(2, x => 1 - x[0] * x[0] - x[1] * x[1] >= 0), + }; + + // Create a Cobyla algorithm for the problem + var cobyla = new Cobyla(function, constraints); + + // Optimize it + bool success = cobyla.Minimize(); + double minimum = cobyla.Value; // Minimum should be -2 * sqrt(0.5) + double[] solution = cobyla.Solution; // Vector should be [sqrt(0.5), sqrt(0.5)] + + + + + + + Common interface for function optimization methods. + + + + + + + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The number of free parameters in the function to be optimized. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The function to be optimized. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The function to be optimized. + The constraints of the optimization problem. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The function to be optimized. + The constraints of the optimization problem. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets the number of iterations performed in the last + call to . + + + + The number of iterations performed + in the previous optimization. + + + + + Gets or sets the maximum number of iterations + to be performed during optimization. Default + is 0 (iterate until convergence). + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Gets how much the constraint is being violated. + + + The function point. + + + How much the constraint is being violated at the given point. Positive + value means the constraint is not being violated with the returned slack, + while a negative value means the constraint is being violated by the returned + amount. + + + + + + Gets the type of the constraint. + + + + + + Gets the value in the right hand + side of the constraint equation. + + + + + + Gets the number of variables in the constraint. + + + + + + Gets the left hand side of + the constraint equation. + + + + + + Gets the gradient of the left hand + side of the constraint equation. + + + + + + Linear Constraint Collection. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Creates a matrix of linear constraints in canonical form. + + + The number of variables in the objective function. + The vector of independent terms (the right hand side of the constraints). + The number of equalities in the matrix. + The matrix A of linear constraints. + + + + + Creates a matrix of linear constraints in canonical form. + + + The number of variables in the objective function. + The vector of independent terms (the right hand side of the constraints). + The amount each constraint can be violated before the answer is declared close enough. + The number of equalities in the matrix. + The matrix A of linear constraints. + + + + + Limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) optimization method. + + + + + The L-BFGS algorithm is a member of the broad family of quasi-Newton optimization + methods. L-BFGS stands for 'Limited memory BFGS'. Indeed, L-BFGS uses a limited + memory variation of the Broyden–Fletcher–Goldfarb–Shanno (BFGS) update to approximate + the inverse Hessian matrix (denoted by Hk). Unlike the original BFGS method which + stores a dense approximation, L-BFGS stores only a few vectors that represent the + approximation implicitly. Due to its moderate memory requirement, L-BFGS method is + particularly well suited for optimization problems with a large number of variables. + + L-BFGS never explicitly forms or stores Hk. Instead, it maintains a history of the past + m updates of the position x and gradient g, where generally the history + mcan be short, often less than 10. These updates are used to implicitly do operations + requiring the Hk-vector product. + + + The framework implementation of this method is based on the original FORTRAN source code + by Jorge Nocedal (see references below). The original FORTRAN source code of L-BFGS (for + unconstrained problems) is available at http://www.netlib.org/opt/lbfgs_um.shar and had + been made available under the public domain. + + + References: + + + Jorge Nocedal. Limited memory BFGS method for large scale optimization (Fortran source code). 1990. + Available in http://www.netlib.org/opt/lbfgs_um.shar + + Jorge Nocedal. Updating Quasi-Newton Matrices with Limited Storage. Mathematics of Computation, + Vol. 35, No. 151, pp. 773--782, 1980. + + Dong C. Liu, Jorge Nocedal. On the limited memory BFGS method for large scale optimization. + + + + + + The following example shows the basic usage of the L-BFGS solver + to find the minimum of a function specifying its function and + gradient. + + + // Suppose we would like to find the minimum of the function + // + // f(x,y) = -exp{-(x-1)²} - exp{-(y-2)²/2} + // + + // First we need write down the function either as a named + // method, an anonymous method or as a lambda function: + + Func<double[], double> f = (x) => + -Math.Exp(-Math.Pow(x[0] - 1, 2)) - Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)); + + // Now, we need to write its gradient, which is just the + // vector of first partial derivatives del_f / del_x, as: + // + // g(x,y) = { del f / del x, del f / del y } + // + + Func<double[], double[]> g = (x) => new double[] + { + // df/dx = {-2 e^(- (x-1)^2) (x-1)} + 2 * Math.Exp(-Math.Pow(x[0] - 1, 2)) * (x[0] - 1), + + // df/dy = {- e^(-1/2 (y-2)^2) (y-2)} + Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)) * (x[1] - 2) + }; + + // Finally, we can create the L-BFGS solver, passing the functions as arguments + var lbfgs = new BroydenFletcherGoldfarbShanno(numberOfVariables: 2, function: f, gradient: g); + + // And then minimize the function: + bool success = lbfgs.Minimize(); + double minValue = lbfgs.Value; + double[] solution = lbfgs.Solution; + + // The resultant minimum value should be -2, and the solution + // vector should be { 1.0, 2.0 }. The answer can be checked on + // Wolfram Alpha by clicking the following the link: + + // http://www.wolframalpha.com/input/?i=maximize+%28exp%28-%28x-1%29%C2%B2%29+%2B+exp%28-%28y-2%29%C2%B2%2F2%29%29 + + + + + + + + + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + Occurs when progress is made during the optimization. + + + + + + Gets the number of iterations performed in the last + call to + or . + + + + The number of iterations performed + in the previous optimization. + + + + + Gets or sets the maximum number of iterations + to be performed during optimization. Default + is 0 (iterate until convergence). + + + + + + Gets the number of function evaluations performed + in the last call to + or . + + + + The number of evaluations performed + in the previous optimization. + + + + + Gets or sets the number of corrections used in the L-BFGS + update. Recommended values are between 3 and 7. Default is 5. + + + + + + Gets or sets the upper bounds of the interval + in which the solution must be found. + + + + + + Gets or sets the lower bounds of the interval + in which the solution must be found. + + + + + + Gets or sets the accuracy with which the solution + is to be found. Default value is 1e5. Smaller values + up until zero result in higher accuracy. + + + + + The iteration will stop when + + (f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr*epsmch + + where epsmch is the machine precision, which is automatically + generated by the code. Typical values for this parameter are: + 1e12 for low accuracy; 1e7 for moderate accuracy; 1e1 for extremely + high accuracy. + + + + + + Gets or sets a tolerance value when detecting convergence + of the gradient vector steps. Default is 0. + + + + On entry pgtol >= 0 is specified by the user. The iteration + will stop when + + max{|proj g_i | i = 1, ..., n} <= pgtol + + + where pg_i is the ith component of the projected gradient. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + Find a minimizer of an interpolated cubic function. + @param cm The minimizer of the interpolated cubic. + @param u The value of one point, u. + @param fu The value of f(u). + @param du The value of f'(u). + @param v The value of another point, v. + @param fv The value of f(v). + @param du The value of f'(v). + + + Find a minimizer of an interpolated cubic function. + @param cm The minimizer of the interpolated cubic. + @param u The value of one point, u. + @param fu The value of f(u). + @param du The value of f'(u). + @param v The value of another point, v. + @param fv The value of f(v). + @param du The value of f'(v). + @param xmin The maximum value. + @param xmin The minimum value. + + + Find a minimizer of an interpolated quadratic function. + @param qm The minimizer of the interpolated quadratic. + @param u The value of one point, u. + @param fu The value of f(u). + @param du The value of f'(u). + @param v The value of another point, v. + @param fv The value of f(v). + + + Find a minimizer of an interpolated quadratic function. + @param qm The minimizer of the interpolated quadratic. + @param u The value of one point, u. + @param du The value of f'(u). + @param v The value of another point, v. + @param dv The value of f'(v). + + + Update a safeguarded trial value and interval for line search. + + The parameter x represents the step with the least function value. + The parameter t represents the current step. This function assumes + that the derivative at the point of x in the direction of the step. + If the bracket is set to true, the minimizer has been bracketed in + an interval of uncertainty with endpoints between x and y. + + @param x The pointer to the value of one endpoint. + @param fx The pointer to the value of f(x). + @param dx The pointer to the value of f'(x). + @param y The pointer to the value of another endpoint. + @param fy The pointer to the value of f(y). + @param dy The pointer to the value of f'(y). + @param t The pointer to the value of the trial value, t. + @param ft The pointer to the value of f(t). + @param dt The pointer to the value of f'(t). + @param tmin The minimum value for the trial value, t. + @param tmax The maximum value for the trial value, t. + @param brackt The pointer to the predicate if the trial value is + bracketed. + @retval int Status value. Zero indicates a normal termination. + + @see + Jorge J. More and David J. Thuente. Line search algorithm with + guaranteed sufficient decrease. ACM Transactions on Mathematical + Software (TOMS), Vol 20, No 3, pp. 286-307, 1994. + + + Return values of lbfgs(). + + Roughly speaking, a negative value indicates an error. + + + L-BFGS reaches convergence. + + + The initial variables already minimize the objective function. + + + Unknown error. + + + Logic error. + + + Insufficient memory. + + + The minimization process has been canceled. + + + Invalid number of variables specified. + + + Invalid number of variables (for SSE) specified. + + + The array x must be aligned to 16 (for SSE). + + + Invalid parameter lbfgs_parameter_t::epsilon specified. + + + Invalid parameter lbfgs_parameter_t::past specified. + + + Invalid parameter lbfgs_parameter_t::delta specified. + + + Invalid parameter lbfgs_parameter_t::linesearch specified. + + + Invalid parameter lbfgs_parameter_t::max_step specified. + + + Invalid parameter lbfgs_parameter_t::max_step specified. + + + Invalid parameter lbfgs_parameter_t::ftol specified. + + + Invalid parameter lbfgs_parameter_t::wolfe specified. + + + Invalid parameter lbfgs_parameter_t::gtol specified. + + + Invalid parameter lbfgs_parameter_t::xtol specified. + + + Invalid parameter lbfgs_parameter_t::max_linesearch specified. + + + Invalid parameter lbfgs_parameter_t::orthantwise_c specified. + + + Invalid parameter lbfgs_parameter_t::orthantwise_start specified. + + + Invalid parameter lbfgs_parameter_t::orthantwise_end specified. + + + The line-search step went out of the interval of uncertainty. + + + A logic error occurred; alternatively, the interval of uncertainty + became too small. + + + A rounding error occurred; alternatively, no line-search step + satisfies the sufficient decrease and curvature conditions. + + + The line-search step became smaller than lbfgs_parameter_t::min_step. + + + The line-search step became larger than lbfgs_parameter_t::max_step. + + + The line-search routine reaches the maximum number of evaluations. + + + The algorithm routine reaches the maximum number of iterations. + + + Relative width of the interval of uncertainty is at most + lbfgs_parameter_t::xtol. + + + A logic error (negative line-search step) occurred. + + + The current search direction increases the objective function value. + + + Callback interface to provide objective function and gradient evaluations. + + The lbfgs() function call this function to obtain the values of objective + function and its gradients when needed. A client program must implement + this function to evaluate the values of the objective function and its + gradients, given current values of variables. + + @param instance The user data sent for lbfgs() function by the client. + @param x The current values of variables. + @param g The gradient vector. The callback function must compute + the gradient values for the current variables. + @param n The number of variables. + @param step The current step of the line search routine. + @retval double The value of the objective function for the current + variables. + + + Callback interface to receive the progress of the optimization process. + + The lbfgs() function call this function for each iteration. Implementing + this function, a client program can store or display the current progress + of the optimization process. + + @param instance The user data sent for lbfgs() function by the client. + @param x The current values of variables. + @param g The current gradient values of variables. + @param fx The current value of the objective function. + @param xnorm The Euclidean norm of the variables. + @param gnorm The Euclidean norm of the gradients. + @param step The line-search step used for this iteration. + @param n The number of variables. + @param k The iteration count. + @param ls The number of evaluations called for this iteration. + @retval int Zero to continue the optimization process. Returning a + non-zero value will cancel the optimization process. + + + + Status codes for the + function optimizer. + + + + + + The function output converged to a static + value within the desired precision. + + + + + + The function gradient converged to a minimum + value within the desired precision. + + + + + + The inner line search function failed. This could be an indication + that there might be something wrong with the gradient function. + + + + + + Inner status of the + optimization algorithm. This class contains implementation details that + can change at any time. + + + + + + Initializes a new instance of the class with the inner + status values from the original FORTRAN L-BFGS implementation. + + + The isave L-BFGS status argument. + The dsave L-BFGS status argument. + The lsave L-BFGS status argument. + The csave L-BFGS status argument. + The work L-BFGS status argument. + + + + + Gets or sets the isave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the dsave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the lsave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the csave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the work vector from the + original FORTRAN L-BFGS implementation. + + + + + + Gauss-Newton algorithm for solving Least-Squares problems. + + + + This class isn't suitable for most real-world problems. Instead, this class + is intended to be use as a baseline comparison to help debug and check other + optimization methods, such as . + + + + + + Initializes a new instance of the class. + + + The number of variables (free parameters) + in the objective function. + + + + + Attempts to find the best values for the parameter vector + minimizing the discrepancy between the generated outputs + and the expected outputs for a given set of input data. + + + A set of input data. + The values associated with each + vector in the data. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Gets or sets a parameterized model function mapping input vectors + into output values, whose optimum parameters must be found. + + + + The function to be optimized. + + + + + + Gets or sets a function that computes the gradient vector in respect + to the function parameters, given a set of input and output values. + + + + The gradient function. + + + + + + Gets the number of variables (free parameters) in the optimization problem. + + + + The number of parameters. + + + + + + Gets the approximate Hessian matrix of second derivatives + created during the last algorithm iteration. + + + + + Please note that this value is actually just an approximation to the + actual Hessian matrix using the outer Jacobian approximation (H ~ J'J). + + + + + + + Gets the solution found, the values of the parameters which + optimizes the function, in a least squares sense. + + + + + + Gets the vector of residuals computed in the last iteration. + The residuals are computed as (y - f(w, x)), in which + y are the expected output values, and f is the + parameterized model function. + + + + + + Gets the Jacobian matrix of first derivatives computed in the + last iteration. + + + + + + Gets the vector of coefficient updates computed in the last iteration. + + + + + + Gets standard error for each parameter in the solution. + + + + + + Levenberg-Marquardt algorithm for solving Least-Squares problems. + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + + + + Attempts to find the best values for the parameter vector + minimizing the discrepancy between the generated outputs + and the expected outputs for a given set of input data. + + + A set of input data. + The values associated with each + vector in the data. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Gets or sets a parameterized model function mapping input vectors + into output values, whose optimum parameters must be found. + + + + The function to be optimized. + + + + + + Gets or sets a function that computes the gradient vector in respect + to the function parameters, given a set of input and output values. + + + + The gradient function. + + + + + + Gets the solution found, the values of the parameters which + optimizes the function, in a least squares sense. + + + + + + Levenberg's damping factor, also known as lambda. + + + The value determines speed of learning. + + Default value is 0.1. + + + + + + Learning rate adjustment. + + + The value by which the learning rate + is adjusted when searching for the minimum cost surface. + + Default value is 10. + + + + + + Gets the number of variables (free parameters) in the optimization problem. + + + + The number of parameters. + + + + + + Gets or sets the number of blocks to divide the + Jacobian matrix in the Hessian calculation to + preserve memory. Default is 1. + + + + + + Gets the approximate Hessian matrix of second derivatives + generated in the last algorithm iteration. The Hessian is + stored in the upper triangular part of this matrix. See + remarks for details. + + + + + The Hessian needs only be upper-triangular, since + it is symmetric. The Cholesky decomposition will + make use of this fact and use the lower-triangular + portion to hold the decomposition, conserving memory + + + Thus said, this property will hold the Hessian matrix + in the upper-triangular part of this matrix, and store + its Cholesky decomposition on its lower triangular part. + + + Please note that this value is actually just an approximation to the + actual Hessian matrix using the outer Jacobian approximation (H ~ J'J). + + + + + + + Gets standard error for each parameter in the solution. + + + + + + exit codes. + + + + + + Optimization was canceled by the user. + + + + + + Optimization ended successfully. + + + + + + The execution time exceeded the established limit. + + + + + + The minimum desired value has been reached. + + + + + + The algorithm had stopped prematurely because + the maximum number of evaluations was reached. + + + + + + The algorithm failed internally. + + + + + + The desired output tolerance (minimum change in the function + output between two consecutive iterations) has been reached. + + + + + + The desired parameter tolerance (minimum change in the + solution vector between two iterations) has been reached. + + + + + + Nelder-Mead simplex algorithm with support for bound + constraints for non-linear, gradient-free optimization. + + + + + The Nelder–Mead method or downhill simplex method or amoeba method is a + commonly used nonlinear optimization technique, which is a well-defined + numerical method for problems for which derivatives may not be known. + However, the Nelder–Mead technique is a heuristic search method that can + converge to non-stationary points on problems that can be solved by + alternative methods. + + + The Nelder–Mead technique was proposed by John Nelder and Roger Mead (1965) + and is a technique for minimizing an objective function in a many-dimensional + space. + + + The source code presented in this file has been adapted from the + Sbplx method (based on Nelder-Mead's Simplex) given in the NLopt + Numerical Optimization Library, created by Steven G. Johnson. + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, + http://ab-initio.mit.edu/nlopt + + Wikipedia, The Free Encyclopedia. Nelder Mead method. Available on: + http://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method + + + + + + + Creates a new non-linear optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new non-linear optimization algorithm. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + + + + + Creates a new non-linear optimization algorithm. + + + The objective function whose optimum values should be found. + + + + + Finds the minimum value of a function, using the function output at + the current value, if already known. This overload can be used when + embedding Nelder-Mead in other algorithms to avoid initial checks. + + + The function output at the current values, if already known. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Performs the reflection xnew = c + scale * (c - xold), + returning 0 if xnew == c or xnew == xold (coincident + points), and 1 otherwise. + + + + The reflected point xnew is "pinned" to the lower and upper bounds + (lb and ub), as suggested by J. A. Richardson and J. L. Kuester, + "The complex method for constrained optimization," Commun. ACM + 16(8), 487-489 (1973). This is probably a suboptimal way to handle + bound constraints, but I don't know a better way. The main danger + with this is that the simplex might collapse into a + lower-dimensional hyperplane; this danger can be ameliorated by + restarting (as in subplex), however. + + + + + + Determines whether two numbers are numerically + close (within current floating-point precision). + + + + + + Gets the maximum number of + variables that can be optimized by this instance. + This is the initial value that has been passed to this + class constructor at the time the algorithm was created. + + + + + + Gets or sets the maximum value that the objective + function could produce before the algorithm could + be terminated as if the solution was good enough. + + + + + + Gets the step sizes to be used by the optimization + algorithm. Default is to initialize each with 1e-5. + + + + + + Gets or sets the number of variables (free parameters) in the + optimization problem. This number can be decreased after the + algorithm has been created so it can operate on subspaces. + + + + + + + + Gets or sets multiple convergence options to + determine when the optimization can terminate. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Gets the lower bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Gets the upper bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Gets or sets the by how much the simplex diameter |xl - xh| must be + reduced before the algorithm can be terminated. Setting this value + to a value higher than zero causes the algorithm to replace the + standard criteria with this condition. + Default is zero. + + + + + + The difference between the high and low function + values of the last simplex in the previous call + to the optimization function. + + + + + + Resilient Backpropagation method for unconstrained optimization. + + + + + + + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The function to be optimized. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Creates a new function optimizer. + + + The number of parameters in the function to be optimized. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Resets the current update steps using the given learning rate. + + + + + + Occurs when the current learning progress has changed. + + + + + + Gets or sets the maximum possible update step, + also referred as delta min. Default is 50. + + + + + + Gets or sets the minimum possible update step, + also referred as delta max. Default is 1e-6. + + + + + + Gets the decrease parameter, also + referred as eta minus. Default is 0.5. + + + + + + Gets the increase parameter, also + referred as eta plus. Default is 1.2. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Subplex + + + + + The source code presented in this file has been adapted from the + Sbplx method (based on Nelder-Mead's Simplex) given in the NLopt + Numerical Optimization Library, created by Steven G. Johnson. + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, + http://ab-initio.mit.edu/nlopt + + Wikipedia, The Free Encyclopedia. Nelder Mead method. Available on: + http://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method + + + + + + + Creates a new optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new optimization algorithm. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + + + + + Creates a new optimization algorithm. + + + The objective function whose optimum values should be found. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Wrapper around objective function for subspace optimization. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Gets or sets the maximum value that the objective + function could produce before the algorithm could + be terminated as if the solution was good enough. + + + + + + Gets the step sizes to be used by the optimization + algorithm. Default is to initialize each with 1e-5. + + + + + + Gets or sets multiple convergence options to + determine when the optimization can terminate. + + + + + + Gets the lower bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Gets the upper bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Simplified Trust Region Newton Method (TRON) for non-linear optimization. + + + + + Trust region is a term used in mathematical optimization to denote the subset + of the region of the objective function to be optimized that is approximated + using a model function (often a quadratic). If an adequate model of the objective + function is found within the trust region then the region is expanded; conversely, + if the approximation is poor then the region is contracted. Trust region methods + are also known as restricted step methods. + + The fit is evaluated by comparing the ratio of expected improvement from the model + approximation with the actual improvement observed in the objective function. Simple + thresholding of the ratio is used as the criteria for expansion and contraction—a + model function is "trusted" only in the region where it provides a reasonable + approximation. + + + Trust region methods are in some sense dual to line search methods: trust region + methods first choose a step size (the size of the trust region) and then a step + direction while line search methods first choose a step direction and then a step + size. + + + This class implements a simplified version of Chih-Jen Lin and Jorge Moré's TRON, + a trust region Newton method for the solution of large bound-constrained optimization + problems. This version was based upon liblinear's implementation. + + + References: + + + + Wikipedia, The Free Encyclopedia. Trust region. Available on: + http://en.wikipedia.org/wiki/Trust_region + + + Chih-Jen Lin and Jorge Moré, TRON. Available on: http://www.mcs.anl.gov/~more/tron/index.html + + + + Chih-Jen Lin and Jorge J. Moré. 1999. Newton's Method for Large Bound-Constrained + Optimization Problems. SIAM J. on Optimization 9, 4 (April 1999), 1100-1127. + + + + Machine Learning Group. LIBLINEAR -- A Library for Large Linear Classification. + National Taiwan University. Available at: http://www.csie.ntu.edu.tw/~cjlin/liblinear/ + + + + + + + + + + + + + Creates a new function optimizer. + + + The number of parameters in the function to be optimized. + + + + + Creates a new function optimizer. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + The hessian of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets or sets the tolerance under which the + solution should be found. Default is 0.1. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Gets or sets the Hessian estimation function. + + + + + + Taylor series expansions for common functions. + + + + + In mathematics, a Taylor series is a representation of a function as an infinite sum of terms + that are calculated from the values of the function's derivatives at a single point. + + + The concept of a Taylor series was discovered by the Scottish mathematician James Gregory and + formally introduced by the English mathematician Brook Taylor in 1715. If the Taylor series is + centered at zero, then that series is also called a Maclaurin series, named after the Scottish + mathematician Colin Maclaurin, who made extensive use of this special case of Taylor series in + the 18th century. + + + It is common practice to approximate a function by using a finite number of terms of its Taylor + series. Taylor's theorem gives quantitative estimates on the error in this approximation. Any + finite number of initial terms of the Taylor series of a function is called a Taylor polynomial. + The Taylor series of a function is the limit of that function's Taylor polynomials, provided that + the limit exists. A function may not be equal to its Taylor series, even if its Taylor series + converges at every point. A function that is equal to its Taylor series in an open interval (or + a disc in the complex plane) is known as an analytic function in that interval. + + + References: + + + Wikipedia, The Free Encyclopedia. Taylor series. Available at: + http://en.wikipedia.org/wiki/Taylor_series + + Anne Fry, Amy Plofker, Sarah-marie Belcastro, Lyle Roelofs. A Set of Appendices on Mathematical + Methods for Physics Students: Taylor Series Expansions and Approximations. Available at: + http://www.haverford.edu/physics/MathAppendices/Taylor_Series.pdf + + + + + + + Returns the sine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The sine of the angle . + + + + + Returns the cosine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The cosine of the angle . + + + + + Returns the hyperbolic sine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The hyperbolic sine of the angle . + + + + + Returns the hyperbolic cosine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The hyperbolic cosine of the angle . + + + + + Returns e raised to the specified power by evaluating a Taylor series. + + + A number specifying a power. + The number of terms to be evaluated. + + Euler's constant raised to the specified power . + + + + + Fourier Transform (for arbitrary size matrices). + + + + This fourier transform accepts arbitrary-length matrices and is not + restricted only to matrices that have dimensions which are powers of + two. It also provides results which are more equivalent with other + mathematical packages, such as MATLAB and Octave. + + + + + + 1-D Discrete Fourier Transform. + + + The data to transform.. + The transformation direction. + + + + + 2-D Discrete Fourier Transform. + + + The data to transform. + The transformation direction. + + + + + 1-D Fast Fourier Transform. + + + The data to transform.. + The transformation direction. + + + + + 1-D Fast Fourier Transform. + + + The real part of the complex numbers to transform. + The imaginary part of the complex numbers to transform. + The transformation direction. + + + + + 2-D Fast Fourier Transform. + + + The data to transform.. + The Transformation direction. + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, + storing the result back into the vector. The vector can have any length. + This is a wrapper function. + + + The real. + The imag. + + + + + Computes the inverse discrete Fourier transform (IDFT) of the given complex + vector, storing the result back into the vector. The vector can have any length. + This is a wrapper function. This transform does not perform scaling, so the + inverse is not a true inverse. + + + + + + Computes the inverse discrete Fourier transform (IDFT) of the given complex + vector, storing the result back into the vector. The vector can have any length. + This is a wrapper function. This transform does not perform scaling, so the + inverse is not a true inverse. + + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, storing + the result back into the vector. The vector's length must be a power of 2. Uses the + Cooley-Tukey decimation-in-time radix-2 algorithm. + + + Length is not a power of 2. + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, storing + the result back into the vector. The vector's length must be a power of 2. Uses the + Cooley-Tukey decimation-in-time radix-2 algorithm. + + + Length is not a power of 2. + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, storing + the result back into the vector. The vector can have any length. This requires the + convolution function, which in turn requires the radix-2 FFT function. Uses + Bluestein's chirp z-transform algorithm. + + + + + + Computes the circular convolution of the given real + vectors. All vectors must have the same length. + + + + + + Computes the circular convolution of the given complex + vectors. All vectors must have the same length. + + + + + + Computes the circular convolution of the given complex + vectors. All vectors must have the same length. + + + + + + Hartley Transformation. + + + + In mathematics, the Hartley transform is an integral transform closely related + to the Fourier transform, but which transforms real-valued functions to real- + valued functions. It was proposed as an alternative to the Fourier transform by + R. V. L. Hartley in 1942, and is one of many known Fourier-related transforms. + Compared to the Fourier transform, the Hartley transform has the advantages of + transforming real functions to real functions (as opposed to requiring complex + numbers) and of being its own inverse. + + + References: + + + Wikipedia contributors, "Hartley transform," Wikipedia, The Free Encyclopedia, + available at: http://en.wikipedia.org/w/index.php?title=Hartley_transform + + K. R. Castleman, Digital Image Processing. Chapter 13, p.289. + Prentice. Hall, 1998. + + Poularikas A. D. “The Hartley Transform”. The Handbook of Formulas and + Tables for Signal Processing. Ed. Alexander D. Poularikas, 1999. + + + + + + + Forward Hartley Transform. + + + + + + Forward Hartley Transform. + + + + + + Discrete Sine Transform + + + + + In mathematics, the discrete sine transform (DST) is a Fourier-related transform + similar to the discrete Fourier transform (DFT), but using a purely real matrix. It + is equivalent to the imaginary parts of a DFT of roughly twice the length, operating + on real data with odd symmetry (since the Fourier transform of a real and odd function + is imaginary and odd), where in some variants the input and/or output data are shifted + by half a sample. + + + References: + + + Wikipedia contributors, "Discrete sine transform," Wikipedia, The Free Encyclopedia, + available at: http://en.wikipedia.org/w/index.php?title=Discrete_sine_transform + + K. R. Castleman, Digital Image Processing. Chapter 13, p.288. + Prentice. Hall, 1998. + + + + + + + Forward Discrete Sine Transform. + + + + + + Inverse Discrete Sine Transform. + + + + + + Forward Discrete Sine Transform. + + + + + + Inverse Discrete Sine Transform. + + + + + + Discrete Cosine Transformation. + + + + + A discrete cosine transform (DCT) expresses a finite sequence of data points + in terms of a sum of cosine functions oscillating at different frequencies. + DCTs are important to numerous applications in science and engineering, from + lossy compression of audio (e.g. MP3) and images (e.g. JPEG) (where small + high-frequency components can be discarded), to spectral methods for the + numerical solution of partial differential equations. + + + The use of cosine rather than sine functions is critical in these applications: + for compression, it turns out that cosine functions are much more efficient, + whereas for differential equations the cosines express a particular choice of + boundary conditions. + + + References: + + + Wikipedia contributors, "Discrete sine transform," Wikipedia, The Free Encyclopedia, + available at: http://en.wikipedia.org/w/index.php?title=Discrete_sine_transform + + K. R. Castleman, Digital Image Processing. Chapter 13, p.288. + Prentice. Hall, 1998. + + + + + + + Forward Discrete Cosine Transform. + + + + + + Inverse Discrete Cosine Transform. + + + + + + Forward 2D Discrete Cosine Transform. + + + + + + Inverse 2D Discrete Cosine Transform. + + + + + + Determines the Generalized eigenvalues and eigenvectors of two real square matrices. + + + + A generalized eigenvalue problem is the problem of finding a vector v that + obeys A * v = λ * B * v where A and B are matrices. If v + obeys this equation, with some λ, then we call v the generalized eigenvector + of A and B, and λ is called the generalized eigenvalue of A + and B which corresponds to the generalized eigenvector v. The possible + values of λ, must obey the identity det(A - λ*B) = 0. + + Part of this code has been adapted from the original EISPACK routines in Fortran. + + + References: + + + + http://en.wikipedia.org/wiki/Generalized_eigenvalue_problem#Generalized_eigenvalue_problem + + + + http://www.netlib.org/eispack/ + + + + + + + // Suppose we have the following + // matrices A and B shown below: + + double[,] A = + { + { 1, 2, 3}, + { 8, 1, 4}, + { 3, 2, 3} + }; + + double[,] B = + { + { 5, 1, 1}, + { 1, 5, 1}, + { 1, 1, 5} + }; + + // Now, suppose we would like to find values for λ + // that are solutions for the equation det(A - λB) = 0 + + // For this, we can use a Generalized Eigendecomposition + var gevd = new GeneralizedEigenvalueDecomposition(A, B); + + // Now, if A and B are Hermitian and B is positive + // -definite, then the eigenvalues λ will be real: + double[] lambda = gevd.RealEigenvalues; + + // Lets check if they are indeed a solution: + for (int i = 0; i < lambda.Length; i++) + { + // Compute the determinant equation show above + double det = Matrix.Determinant(A.Subtract(lambda[i].Multiply(B))); // almost zero + } + + + + + Constructs a new generalized eigenvalue decomposition. + The first matrix of the (A,B) matrix pencil. + The second matrix of the (A,B) matrix pencil. + + + + Adaptation of the original Fortran QZHES routine from EISPACK. + + + This subroutine is the first step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. + + This subroutine accepts a pair of real general matrices and + reduces one of them to upper Hessenberg form and the other + to upper triangular form using orthogonal transformations. + it is usually followed by qzit, qzval and, possibly, qzvec. + + For the full documentation, please check the original function. + + + + + Adaptation of the original Fortran QZIT routine from EISPACK. + + + This subroutine is the second step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart, + as modified in technical note nasa tn d-7305(1973) by ward. + + This subroutine accepts a pair of real matrices, one of them + in upper Hessenberg form and the other in upper triangular form. + it reduces the Hessenberg matrix to quasi-triangular form using + orthogonal transformations while maintaining the triangular form + of the other matrix. it is usually preceded by qzhes and + followed by qzval and, possibly, qzvec. + + For the full documentation, please check the original function. + + + + + Adaptation of the original Fortran QZVAL routine from EISPACK. + + + This subroutine is the third step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. + + This subroutine accepts a pair of real matrices, one of them + in quasi-triangular form and the other in upper triangular form. + it reduces the quasi-triangular matrix further, so that any + remaining 2-by-2 blocks correspond to pairs of complex + Eigenvalues, and returns quantities whose ratios give the + generalized eigenvalues. it is usually preceded by qzhes + and qzit and may be followed by qzvec. + + For the full documentation, please check the original function. + + + + + Adaptation of the original Fortran QZVEC routine from EISPACK. + + + This subroutine is the optional fourth step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. + + This subroutine accepts a pair of real matrices, one of them in + quasi-triangular form (in which each 2-by-2 block corresponds to + a pair of complex eigenvalues) and the other in upper triangular + form. It computes the eigenvectors of the triangular problem and + transforms the results back to the original coordinate system. + it is usually preceded by qzhes, qzit, and qzval. + + For the full documentation, please check the original function. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the alpha values. + + + Returns the imaginary parts of the alpha values. + + + Returns the beta values. + + + + Returns true if matrix B is singular. + + + This method checks if any of the generated betas is zero. It + does not says that the problem is singular, but only that one + of the matrices of the pencil (A,B) is singular. + + + + + Returns true if the eigenvalue problem is degenerate (ill-posed). + + + + Returns the real parts of the eigenvalues. + + The eigenvalues are computed using the ratio alpha[i]/beta[i], + which can lead to valid, but infinite eigenvalues. + + + + Returns the imaginary parts of the eigenvalues. + + The eigenvalues are computed using the ratio alpha[i]/beta[i], + which can lead to valid, but infinite eigenvalues. + + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. The presented algorithm + only checks the upper triangular part of the matrix given as parameter and assumes + it is symmetric. If the matrix is not positive definite, the constructor returns a + partial decomposition and sets two internal variables that can be queried using the + properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + + Constructs a new Cholesky Decomposition. + + + + The symmetric matrix, given in upper triangular form, to be decomposed. + + True to perform a square-root free LDLt decomposition, false otherwise. + + True to perform the decomposition in place, storing the factorization in the + lower triangular part of the given matrix. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + The array to hold the result of the + computation. Should be of same length as the the diagonal + of the original matrix. + + + + + Computes the trace of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is positive definite. + + + + + Gets a value indicating whether the LDLt factorization + has been computed successfully or if it is undefined. + + + + true if the factorization is not defined; otherwise, false. + + + + + + Returns the left (lower) triangular factor + L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal + elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal + elements in a LDLt decomposition. + + + + + + Returns the determinant of + the decomposed matrix. + + + + + + If the matrix is positive-definite, returns the + log-determinant of the decomposed matrix. + + + + + + Gets a value indicating whether the decomposed + matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. The presented algorithm + only checks the upper triangular part of the matrix given as parameter and assumes + it is symmetric. If the matrix is not positive definite, the constructor returns a + partial decomposition and sets two internal variables that can be queried using the + properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + + Constructs a new Cholesky Decomposition. + + + + The symmetric matrix, given in upper triangular form, to be decomposed. + + True to perform a square-root free LDLt decomposition, false otherwise. + + True to perform the decomposition in place, storing the factorization in the + lower triangular part of the given matrix. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + The array to hold the result of the + computation. Should be of same length as the the diagonal + of the original matrix. + + + + + Computes the trace of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is positive definite. + + + + + Gets a value indicating whether the LDLt factorization + has been computed successfully or if it is undefined. + + + + true if the factorization is not defined; otherwise, false. + + + + + + Returns the left (lower) triangular factor + L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal + elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal + elements in a LDLt decomposition. + + + + + + Returns the determinant of + the decomposed matrix. + + + + + + If the matrix is positive-definite, returns the + log-determinant of the decomposed matrix. + + + + + + Gets a value indicating whether the decomposed + matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. The presented algorithm + only checks the upper triangular part of the matrix given as parameter and assumes + it is symmetric. If the matrix is not positive definite, the constructor returns a + partial decomposition and sets two internal variables that can be queried using the + properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + + Constructs a new Cholesky Decomposition. + + + + The symmetric matrix, given in upper triangular form, to be decomposed. + + True to perform a square-root free LDLt decomposition, false otherwise. + + True to perform the decomposition in place, storing the factorization in the + lower triangular part of the given matrix. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + The array to hold the result of the + computation. Should be of same length as the the diagonal + of the original matrix. + + + + + Computes the trace of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is positive definite. + + + + + Gets a value indicating whether the LDLt factorization + has been computed successfully or if it is undefined. + + + + true if the factorization is not defined; otherwise, false. + + + + + + Returns the left (lower) triangular factor + L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal + elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal + elements in a LDLt decomposition. + + + + + + Returns the determinant of + the decomposed matrix. + + + + + + If the matrix is positive-definite, returns the + log-determinant of the decomposed matrix. + + + + + + Gets a value indicating whether the decomposed + matrix is non-singular (i.e. invertible). + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + Please see remarks for important information regarding + numerical stability when using this method. + + + + Please keep in mind this is not one of the most reliable methods + for checking singularity of a matrix. For a more reliable method, + please use or the + . + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + Please see remarks for important information regarding + numerical stability when using this method. + + + + Please keep in mind this is not one of the most reliable methods + for checking singularity of a matrix. For a more reliable method, + please use or the + . + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + Please see remarks for important information regarding + numerical stability when using this method. + + + + Please keep in mind this is not one of the most reliable methods + for checking singularity of a matrix. For a more reliable method, + please use or the + . + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + Nonnegative Matrix Factorization. + + + + + Non-negative matrix factorization (NMF) is a group of algorithms in multivariate + analysis and linear algebra where a matrix X is factorized into (usually) + two matrices, W and H. The non-negative factorization enforces the + constraint that the factors W and H must be non-negative, i.e., all + elements must be equal to or greater than zero. The factorization is not unique. + + + References: + + + + http://en.wikipedia.org/wiki/Non-negative_matrix_factorization + + + Lee, D., Seung, H., 1999. Learning the Parts of Objects by Non-Negative + Matrix Factorization. Nature 401, 788–791. + + Michael W. Berry, et al. (June 2006). Algorithms and Applications for + Approximate Nonnegative Matrix Factorization. + + + + + + + + Initializes a new instance of the NMF algorithm + + + The input data matrix (must be positive). + The reduced dimension. + + + + + Initializes a new instance of the NMF algorithm + + + The input data matrix (must be positive). + The reduced dimension. + The number of iterations to perform. + + + + + Performs NMF using the multiplicative method + + + The maximum number of iterations + + + At the end of the computation H contains the projected data + and W contains the weights. The multiplicative method is the + simplest factorization method. + + + + + + Gets the nonnegative factor matrix W. + + + + + + Gets the nonnegative factor matrix H. + + + + + + Static class Distance. Defines a set of extension methods defining distance measures. + + + + + + Gets the Bray Curtis distance between two points. + + A point in space. + A point in space. + The Bray Curtis distance between x and y. + + + + Gets the Canberra distance between two points. + + A point in space. + A point in space. + The Canberra distance between x and y. + + + + Gets the Chessboard distance between two points. + + A point in space. + A point in space. + The Chessboard distance between x and y. + + + + Gets the Correlation distance between two points. + + A point in space. + A point in space. + The Correlation distance between x and y. + + + + Gets the Cosine distance between two points. + + A point in space. + A point in space. + The Cosine distance between x and y. + + + + Gets the Square Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The inverse of the covariance matrix of the distribution for the two points x and y. + + + The Square Mahalanobis distance between x and y. + + + + + Gets the Square Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The of the covariance + matrix of the distribution for the two points x and y. + + + The Square Mahalanobis distance between x and y. + + + + + Gets the Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The inverse of the covariance matrix of the distribution for the two points x and y. + + + The Mahalanobis distance between x and y. + + + + + Gets the Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The of the covariance + matrix of the distribution for the two points x and y. + + + The Mahalanobis distance between x and y. + + + + + Gets the Manhattan distance between two points. + + + A point in space. + A point in space. + + The Manhattan distance between x and y. + + + + + Gets the Manhattan distance between two points. + + + A point in space. + A point in space. + + The Manhattan distance between x and y. + + + + + Gets the Minkowski distance between two points. + + + A point in space. + A point in space. + Factor. + + The Minkowski distance between x and y. + + + + + Gets the Chebyshev distance between two points. + + + A point in space. + A point in space. + + The Chebyshev distance between x and y. + + + + + Gets the Square Euclidean distance between two points. + + + A point in space. + A point in space. + + The Square Euclidean distance between x and y. + + + + + Gets the Square Euclidean distance between two points. + + + The first coordinate of first point in space. + The second coordinate of first point in space. + The first coordinate of second point in space. + The second coordinate of second point in space. + + The Square Euclidean distance between x and y. + + + + + Gets the Euclidean distance between two points. + + + A point in space. + A point in space. + + The Euclidean distance between x and y. + + + + + Gets the Euclidean distance between two points. + + + The first coordinate of first point in space. + The second coordinate of first point in space. + The first coordinate of second point in space. + The second coordinate of second point in space. + + The Euclidean distance between x and y. + + + + + Gets the Modulo-m distance between two integers a and b. + + + + + + Gets the Modulo-m distance between two real values a and b. + + + + + + Bhattacharyya distance between two normalized histograms. + + + A normalized histogram. + A normalized histogram. + The Bhattacharyya distance between the two histograms. + + + + + Hellinger distance between two normalized histograms. + + + A normalized histogram. + A normalized histogram. + The Hellinger distance between the two histograms. + + + + + Bhattacharyya distance between two matrices. + + + The first matrix x. + The first matrix y. + + The Bhattacharyya distance between the two matrices. + + + + + Bhattacharyya distance between two Gaussian distributions. + + + Mean for the first distribution. + Covariance matrix for the first distribution. + Mean for the second distribution. + Covariance matrix for the second distribution. + + The Bhattacharyya distance between the two distributions. + + + + + Bhattacharyya distance between two Gaussian distributions. + + + Mean for the first distribution. + Covariance matrix for the first distribution. + Mean for the second distribution. + Covariance matrix for the second distribution. + The logarithm of the determinant for + the covariance matrix of the first distribution. + The logarithm of the determinant for + the covariance matrix of the second distribution. + + The Bhattacharyya distance between the two distributions. + + + + + Levenshtein distance between two strings. + + + The first string x. + The first string y. + + + Based on the standard implementation available on Wikibooks: + http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance + + + + + + + + Levenshtein distance between two strings. + + + The first string x. + The first string y. + + + Based on the standard implementation available on Wikibooks: + http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance + + + + + + + + Hamming distance between two Boolean vectors. + + + + + + Hamming distance between two double vectors + containing only 0 (false) or 1 (true) values. + + + + + + Bitwise hamming distance between two sequences of bytes. + + + + + + Bitwise hamming distance between two bit arrays. + + + + + + Checks whether a function is a real metric distance, i.e. respects + the triangle inequality. Please note that a function can still pass + this test and not respect the triangle inequality. + + + + + + Checks whether a function is a real metric distance, i.e. respects + the triangle inequality. Please note that a function can still pass + this test and not respect the triangle inequality. + + + + + + Programming environment for Octave. + + + + + This class implements a Domain Specific Language (DSL) for + C# which is remarkably similar to Octave. Please take a loook + on what is possible to do using this class in the examples + section. + + + To use this class, inherit from . + After this step, all code written inside your child class will + be able to use the syntax below: + + + + + Using the mat and ret keywords, it is possible + to replicate most of the Octave environment inside plain C# + code. The example below demonstrates how to compute the + Singular Value Decomposition of a matrix, which in turn was + generated using . + + + // Declare local matrices + mat u = _, s = _, v = _; + + // Compute a new mat + mat M = magic(3) * 5; + + // Compute the SVD + ret [u, s, v] = svd(M); + + // Write the matrix + string str = u; + + /* + 0.577350269189626 -0.707106781186548 0.408248290463863 + u = 0.577350269189626 -1.48007149071427E-16 -0.816496580927726 + 0.577350269189626 0.707106781186548 0.408248290463863 + */ + + + + It is also possible to ignore certain parameters by + providing a wildcard in the return structure: + + + // Declare local matrices + mat u = _, v = _; + + // Compute a new mat + mat M = magic(3) * 5; + + // Compute the SVD + ret [u, _, v] = svd(M); // the second argument is omitted + + + + Standard matrix operations are also supported: + + + + mat I = eye(3); // 3x3 identity matrix + + mat A = I * 2; // matrix-scalar multiplication + + Console.WriteLine(A); + // + // 2 0 0 + // A = 0 2 0 + // 0 0 2 + + mat B = ones(3, 6); // 3x6 unit matrix + + Console.WriteLine(B); + // + // 1 1 1 1 1 1 + // B = 1 1 1 1 1 1 + // 1 1 1 1 1 1 + + mat C = new double[,] + { + { 2, 2, 2, 2, 2, 2 }, + { 2, 0, 0, 0, 0, 2 }, + { 2, 2, 2, 2, 2, 2 }, + }; + + mat D = A * B - C; + + Console.WriteLine(D); + // + // 0 0 0 0 0 0 + // C = 0 2 2 2 2 0 + // 0 0 0 0 0 0 + + + + + + + + Pi. + + + Machine epsilon. + + + Creates an identity matrix. + + + Inverts a matrix. + + + Inverts a matrix. + + + Creates a unit matrix. + + + Creates a unit matrix. + + + Creates a unit matrix. + + + Creates a unit matrix. + + + Random vector. + + + Size of a matrix. + + + Rank of a matrix. + + + Matrix sum vector. + + + Sum of vector elements. + + + Product of vector elements. + + + Matrix sum vector. + + + Rounding. + + + Ceiling. + + + Flooring. + + + Rounding. + + + Ceiling. + + + Flooring. + + + Rounding. + + + Ceiling. + + + Flooring. + + + Sin. + + + Cos. + + + Exponential value. + + + Absolute value. + + + Logarithm. + + + Sin. + + + Cos. + + + Exponential value. + + + Absolute value. + + + Logarithm. + + + Sin. + + + Cos. + + + Exponential value. + + + Absolute value. + + + Logarithm. + + + Creates a magic square matrix. + + + Singular value decomposition. + + + QR decomposition. + + + QR decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Cholesky decomposition. + + + + Return setter keyword. + + + + + + Initializes a new instance of the class. + + + + + + Whether to use octave indexing or not. + + + + + + Matrix placeholder. + + + + + + Return definition operator. + + + + + + Can be used to set output arguments + to the output of another function. + + + + + + Matrix definition operator. + + + + + + Inner matrix object. + + + + + + Initializes a new instance of the class. + + + + + + Multiplication operator + + + + + + Multiplication operator + + + + + + Multiplication operator + + + + + + Addition operator + + + + + + Addition operator + + + + + + Addition operator + + + + + + Subtraction operator + + + + + + Subtraction operator + + + + + + Subtraction operator + + + + + + Equality operator. + + + + + + Inequality operator. + + + + + + Implicit conversion from double[,]. + + + + + + Implicit conversion to double[,]. + + + + + + Implicit conversion to string. + + + + + + Implicit conversion from list. + + + + + + Determines whether the specified is equal to this instance. + + + + + + Returns a hash code for this instance. + + + + + + Transpose operator. + + + + + + Common interface for Matrix format providers. + + + + + A string denoting the start of the matrix to be used in formatting. + + + A string denoting the end of the matrix to be used in formatting. + + + A string denoting the start of a matrix row to be used in formatting. + + + A string denoting the end of a matrix row to be used in formatting. + + + A string denoting the start of a matrix column to be used in formatting. + + + A string denoting the end of a matrix column to be used in formatting. + + + A string containing the row delimiter for a matrix to be used in formatting. + + + A string containing the column delimiter for a matrix to be used in formatting. + + + A string denoting the start of the matrix to be used in parsing. + + + A string denoting the end of the matrix to be used in parsing. + + + A string denoting the start of a matrix row to be used in parsing. + + + A string denoting the end of a matrix row to be used in parsing. + + + A string denoting the start of a matrix column to be used in parsing. + + + A string denoting the end of a matrix column to be used in parsing. + + + A string containing the row delimiter for a matrix to be used in parsing. + + + A string containing the column delimiter for a matrix to be used in parsing. + + + + Gets the culture specific formatting information + to be used during parsing or formatting. + + + + + Base class for IMatrixFormatProvider implementers. + + + + + + Initializes a new instance of the class. + + + The inner format provider. + + + + + Returns an object that provides formatting services for the specified + type. Currently, only is supported. + + + An object that specifies the type of format + object to return. + + An instance of the object specified by formatType, if the + IFormatProvider implementation + can supply that type of object; otherwise, null. + + + + + A string denoting the start of the matrix to be used in formatting. + + + + + A string denoting the end of the matrix to be used in formatting. + + + + + A string denoting the start of a matrix row to be used in formatting. + + + + + A string denoting the end of a matrix row to be used in formatting. + + + + + A string denoting the start of a matrix column to be used in formatting. + + + + + A string denoting the end of a matrix column to be used in formatting. + + + + + A string containing the row delimiter for a matrix to be used in formatting. + + + + + A string containing the column delimiter for a matrix to be used in formatting. + + + + + A string denoting the start of the matrix to be used in parsing. + + + + + A string denoting the end of the matrix to be used in parsing. + + + + + A string denoting the start of a matrix row to be used in parsing. + + + + + A string denoting the end of a matrix row to be used in parsing. + + + + + A string denoting the start of a matrix column to be used in parsing. + + + + + A string denoting the end of a matrix column to be used in parsing. + + + + + A string containing the row delimiter for a matrix to be used in parsing. + + + + + A string containing the column delimiter for a matrix to be used in parsing. + + + + + Gets the culture specific formatting information + to be used during parsing or formatting. + + + + + + Format provider for the matrix format used by Octave. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(OctaveArrayFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "[ 1, 2, 3, 4]" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "[ 1, 2, 3, 4]"; + + // Convert the string representation to an actual number array: + double[] array = Matrix.Parse(str, OctaveArrayFormatProvider.InvariantCulture); + + // array will now contain the actual number + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the default matrix representation, where each row + is separated by a new line, and columns are separated by spaces. + + + + This class can be used to convert to and from C# + arrays and their string representation. Please + see the example for details. + + + + + Converting from an array matrix to a + string representation: + + + // Declare a number array + double[] x = { 5, 6, 7, 8 }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(DefaultArrayFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "5, 6, 7, 8" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "5, 6, 7, 8"; + + // Convert the string representation to an actual number array: + double[] array = Matrix.Parse(str, DefaultArrayFormatProvider.InvariantCulture); + + // array will now contain the actual number + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the matrix representation used in C# multi-dimensional arrays. + + + + This class can be used to convert to and from C# + arrays and their string representation. Please + see the example for details. + + + + + Converting from an array to a string representation: + + + // Declare a number array + double[] x = { 1, 2, 3, 4 }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(CSharpArrayFormatProvider.CurrentCulture); + + // the final result will be + "double[] x = { 1, 2, 3, 4 }" + + + + Converting from strings to actual arrays: + + + // Declare an input string + string str = "double[] { 1, 2, 3, 4 }"; + + // Convert the string representation to an actual number array: + double[] array = Matrix.Parse(str, CSharpArrayFormatProvider.InvariantCulture); + + // array will now contain the actual number + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the matrix representation used in C# multi-dimensional arrays. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(CSharpMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "double[,] x = " + + "{ " + + " { 1, 2, 3, 4 }, " + + " { 5, 6, 7, 8 }, " + + "}" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "double[,] x = " + + "{ " + + " { 1, 2, 3, 4 }, " + + " { 5, 6, 7, 8 }, " + + "}"; + + // Convert the string representation to an actual number array: + double[,] matrix = Matrix.Parse(str, CSharpMatrixFormatProvider.InvariantCulture); + + // matrix will now contain the actual multidimensional + // matrix representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the matrix representation used in C# jagged arrays. + + + + This class can be used to convert to and from C# + arrays and their string representation. Please + see the example for details. + + + + + Converting from a jagged matrix to a string representation: + + + // Declare a number array + double[][] x = + { + new double[] { 1, 2, 3, 4 }, + new double[] { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(CSharpJaggedMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "double[][] x = " + + "{ " + + " new double[] { 1, 2, 3, 4 }, " + + " new double[] { 5, 6, 7, 8 }, " + + "}" + + + + Converting from strings to actual arrays: + + + // Declare an input string + string str = "double[][] x = " + + "{ " + + " new double[] { 1, 2, 3, 4 }, " + + " new double[] { 5, 6, 7, 8 }, " + + "}"; + + // Convert the string representation to an actual number array: + double[][] array = Matrix.Parse(str, CSharpJaggedMatrixFormatProvider.InvariantCulture); + + // array will now contain the actual jagged + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the default matrix representation, where each row + is separated by a new line, and columns are separated by spaces. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(DefaultMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + @"1, 2, 3, 4 + 5, 6, 7, 8"; + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = @"1, 2, 3, 4 + "5, 6, 7, 8"; + + // Convert the string representation to an actual number array: + double[,] matrix = Matrix.Parse(str, DefaultMatrixFormatProvider.InvariantCulture); + + // matrix will now contain the actual multidimensional + // matrix representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Defines how matrices are formatted and displayed, depending on the + chosen format representation. + + + + + + Converts the value of a specified object to an equivalent string + representation using specified formatting information. + + A format string containing formatting specifications. + An object to format. + + An object that supplies + format information about the current instance. + + The string representation of the value of , + formatted as specified by and + . + + + + + + Converts a jagged or multidimensional array into a System.String representation. + + + + + + Parses a format string containing the format options for the matrix representation. + + + + + Handles formatting for objects other than matrices. + + + + + Converts a matrix represented in a System.String into a jagged array. + + + + + + Converts a matrix represented in a System.String into a multi-dimensional array. + + + + + + Format provider for the matrix format used by Octave. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(OctaveMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "[ 1, 2, 3, 4; 5, 6, 7, 8 ]" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "[ 1, 2, 3, 4; 5, 6, 7, 8 ]"; + + // Convert the string representation to an actual number array: + double[,] matrix = Matrix.Parse(str, OctaveMatrixFormatProvider.InvariantCulture); + + // matrix will now contain the actual multidimensional + // matrix representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Normal distribution functions. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + George Marsaglia, Evaluating the Normal Distribution, 2004. + Available in: http://www.jstatsoft.org/v11/a05/paper + + + + + + The following example shows the normal usages for the Normal functions: + + + + // Compute standard precision functions + double phi = Normal.Function(0.42); // 0.66275727315175048 + double phic = Normal.Complemented(0.42); // 0.33724272684824952 + double inv = Normal.Inverse(0.42); // -0.20189347914185085 + + // Compute at the limits + double phi = Normal.Function(16.6); // 1.0 + double phic = Normal.Complemented(16.6); // 3.4845465199504055E-62 + + + + + + + + Normal cumulative distribution function. + + + + The area under the Gaussian p.d.f. integrated + from minus infinity to the given value. + + + + + + Complemented cumulative distribution function. + + + + The area under the Gaussian p.d.f. integrated + from the given value to positive infinity. + + + + + + Normal (Gaussian) inverse cumulative distribution function. + + + + + For small arguments 0 < y < exp(-2), the program computes z = + sqrt( -2.0 * log(y) ); then the approximation is x = z - log(z)/z - + (1/z) P(1/z) / Q(1/z). + + There are two rational functions P/Q, one for 0 < y < exp(-32) and + the other for y up to exp(-2). For larger arguments, w = y - 0.5, + and x/sqrt(2pi) = w + w^3 * R(w^2)/S(w^2)). + + + + Returns the value, x, for which the area under the Normal (Gaussian) + probability density function (integrated from minus infinity to x) is + equal to the argument y (assumes mean is zero, variance is one). + + + + + + High-accuracy Normal cumulative distribution function. + + + + + The following formula provide probabilities with an absolute error + less than 8e-16. + + References: + - George Marsaglia, Evaluating the Normal Distribution, 2004. + Available in: http://www.jstatsoft.org/v11/a05/paper + + + + + + High-accuracy Complementary normal distribution function. + + + + + This function uses 9 tabled values to provide tail values of the + normal distribution, also known as complementary Phi, with an + absolute error of 1e-14 ~ 1e-16. + + References: + - George Marsaglia, Evaluating the Normal Distribution, 2004. + Available in: http://www.jstatsoft.org/v11/a05/paper + + + + The area under the Gaussian p.d.f. integrated + from the given value to positive infinity. + + + + + + Bivariate normal cumulative distribution function. + + + The value of the first variate. + The value of the second variate. + The correlation coefficient between x and y. This can be computed + from a covariance matrix C as rho = C_12 / (sqrt(C_11) * sqrt(C_22)). + + + + + + Complemented bivariate normal cumulative distribution function. + + + The value of the first variate. + The value of the second variate. + The correlation coefficient between x and y. This can be computed + from a covariance matrix C as rho = C_12 / (sqrt(C_11) * sqrt(C_22)). + + + + + + A function for computing bivariate normal probabilities. + BVND calculates the probability that X > DH and Y > DK. + + + + + This method is based on the work done by Alan Genz, Department of + Mathematics, Washington State University. Pullman, WA 99164-3113 + Email: alangenz@wsu.edu. This work was shared under a 3-clause BSD + license. Please see source file for more details and the actual + license text. + + + This function is based on the method described by Drezner, Z and G.O. + Wesolowsky, (1989), On the computation of the bivariate normal integral, + Journal of Statist. Comput. Simul. 35, pp. 101-107, with major modifications + for double precision, and for |R| close to 1. + + + + + + First derivative of Normal cumulative + distribution function, also known as the Normal density + function. + + + + + + Log of the first derivative of Normal cumulative + distribution function, also known as the Normal density function. + + + + + + Convex Hull Defects Extractor. + + + + + + Initializes a new instance of the class. + + + The minimum depth which characterizes a convexity defect. + + + + + Finds the convexity defects in a contour given a convex hull. + + + The contour. + The convex hull of the contour. + A list of s containing each of the + defects found considering the convex hull of the contour. + + + + + Gets or sets the minimum depth which characterizes a convexity defect. + + + The minimum depth. + + + + + Convexity defect. + + + + + + Initializes a new instance of the class. + + + The most distant point from the hull. + The starting index of the defect in the contour. + The ending index of the defect in the contour. + The depth of the defect (highest distance from the hull to + any of the contour points). + + + + + Gets or sets the starting index of the defect in the contour. + + + + + + Gets or sets the ending index of the defect in the contour. + + + + + + Gets or sets the most distant point from the hull characterizing the defect. + + + The point. + + + + + Gets or sets the depth of the defect (highest distance + from the hull to any of the points in the contour). + + + + + + K-curvatures algorithm for local maximum contour detection. + + + + + + Initializes a new instance of the class. + + The number K of previous and posterior + points to consider when find local extremum points. + The theta angle range (in + degrees) used to define extremum points.. + + + + Finds local extremum points in the contour. + + A list of + integer points defining the contour. + + + + + Gets or sets the number K of previous and posterior + points to consider when find local extremum points. + + + + + Gets or sets the theta angle range (in + degrees) used to define extremum points. + + + + + Gets or sets the suppression radius to + use during non-minimum suppression. + + + + + Reduced row Echelon form + + + + + + Reduces a matrix to reduced row Echelon form. + + + The matrix to be reduced. + + Pass to perform the reduction in place. The matrix + will be destroyed in the process, resulting in less + memory consumption. + + + + + Gets the pivot indicating the position + of the original rows before the swap. + + + + + + Gets the matrix in row reduced Echelon form. + + + + + Gets the number of free variables (linear + dependent rows) in the given matrix. + + + + + Static class ComplexExtensions. Defines a set of extension methods + that operates mainly on multidimensional arrays and vectors of + AForge.NET's data type. + + + + + + Computes the absolute value of an array of complex numbers. + + + + + + Computes the sum of an array of complex numbers. + + + + + + Elementwise multiplication of two complex vectors. + + + + + + Gets the magnitude of every complex number in an array. + + + + + + Gets the magnitude of every complex number in a matrix. + + + + + + Gets the phase of every complex number in an array. + + + + + + Returns the real vector part of the complex vector c. + + + A vector of complex numbers. + + A vector of scalars with the real part of the complex numbers. + + + + + Returns the real matrix part of the complex matrix c. + + + A matrix of complex numbers. + + A matrix of scalars with the real part of the complex numbers. + + + + + Returns the imaginary vector part of the complex vector c. + + + A vector of complex numbers. + + A vector of scalars with the imaginary part of the complex numbers. + + + + + Returns the imaginary matrix part of the complex matrix c. + + A matrix of complex numbers. + A matrix of scalars with the imaginary part of the complex numbers. + + + + Converts a complex number to a matrix of scalar values + in which the first column contains the real values and + the second column contains the imaginary values. + + An array of complex numbers. + + + + Converts a vector of real numbers to complex numbers. + + + The real numbers to be converted. + + + A vector of complex number with the given + real numbers as their real components. + + + + + + Combines a vector of real and a vector of + imaginary numbers to form complex numbers. + + + The real part of the complex numbers. + The imaginary part of the complex numbers + + + A vector of complex number with the given + real numbers as their real components and + imaginary numbers as their imaginary parts. + + + + + + Gets the range of the magnitude values in a complex number vector. + + + A complex number vector. + The range of magnitude values in the complex vector. + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + Compares two vectors for equality, considering an acceptance threshold. + + + + + Gets the squared magnitude of a complex number. + + + + + + Static class Norm. Defines a set of extension methods defining norms measures. + + + + + + Returns the maximum column sum of the given matrix. + + + + + + Returns the maximum column sum of the given matrix. + + + + + + Returns the maximum singular value of the given matrix. + + + + + + Returns the maximum singular value of the given matrix. + + + + + + Gets the square root of the sum of squares for all elements in a matrix. + + + + + + Gets the square root of the sum of squares for all elements in a matrix. + + + + + + Gets the Squared Euclidean norm for a vector. + + + + + + Gets the Squared Euclidean norm for a vector. + + + + + + Gets the Euclidean norm for a vector. + + + + + + Gets the Euclidean norm for a vector. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Augmented Lagrangian method for constrained non-linear optimization. + + + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, http://ab-initio.mit.edu/nlopt + + E. G. Birgin and J. M. Martinez, "Improving ultimate convergence of an augmented Lagrangian + method," Optimization Methods and Software vol. 23, no. 2, p. 177-195 (2008). + + + + + + + In this framework, it is possible to state a non-linear programming problem + using either symbolic processing or vector-valued functions. The following + example demonstrates the former. + + + // Suppose we would like to minimize the following function: + // + // f(x,y) = min 100(y-x²)²+(1-x)² + // + // Subject to the constraints + // + // x >= 0 (x must be positive) + // y >= 0 (y must be positive) + // + + // In this example we will be using some symbolic processing. + // The following variables could be initialized to any value. + + double x = 0, y = 0; + + + // First, we create our objective function + var f = new NonlinearObjectiveFunction( + + // This is the objective function: f(x,y) = min 100(y-x²)²+(1-x)² + function: () => 100 * Math.Pow(y - x * x, 2) + Math.Pow(1 - x, 2), + + // The gradient vector: + gradient: () => new[] + { + 2 * (200 * Math.Pow(x, 3) - 200 * x * y + x - 1), // df/dx = 2(200x³-200xy+x-1) + 200 * (y - x*x) // df/dy = 200(y-x²) + } + + ); + + + // Now we can start stating the constraints + var constraints = new List<NonlinearConstraint>(); + + // Add the non-negativity constraint for x + constraints.Add(new NonlinearConstraint(f, + + // 1st constraint: x should be greater than or equal to 0 + function: () => x, shouldBe: ConstraintType.GreaterThanOrEqualTo, value: 0, + + gradient: () => new[] { 1.0, 0.0 } + )); + + // Add the non-negativity constraint for y + constraints.Add(new NonlinearConstraint(f, + + // 2nd constraint: y should be greater than or equal to 0 + function: () => y, shouldBe: ConstraintType.GreaterThanOrEqualTo, value: 0, + + gradient: () => new[] { 0.0, 1.0 } + )); + + + // Finally, we create the non-linear programming solver + var solver = new AugmentedLagrangianSolver(2, constraints); + + // And attempt to solve the problem + double minValue = solver.Minimize(f); + + + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The number of free parameters in the optimization problem. + + The s to which the solution must be subjected. + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The objective function to be optimized. + + The s to which the solution must be subjected. + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The unconstrained + optimization method used internally to solve the dual of this optimization + problem. + The objective function to be optimized. + + The s to which the solution must be subjected. + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The unconstrained + optimization method used internally to solve the dual of this optimization + problem. + + The s to which the solution must be subjected. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets the number of iterations performed in the + last call to the or + methods. + + + + The number of iterations performed + in the previous optimization. + + + + + Gets the number of function evaluations performed + in the last call to the or + methods. + + + + The number of evaluations performed + in the previous optimization. + + + + + Gets or sets the maximum number of evaluations + to be performed during optimization. Default + is 0 (evaluate until convergence). + + + + + + Gets the inner dual problem optimization algorithm. + + + + + + Constraint with only quadratic terms. + + + + + + Constraint with only linear terms. + + + + + + Gets how much the constraint is being violated. + + + The function point. + + + How much the constraint is being violated at the given point. Positive + value means the constraint is not being violated with the returned slack, + while a negative value means the constraint is being violated by the returned + amount. + + + + + + Gets whether this constraint is being violated + (within the current tolerance threshold). + + + The function point. + + True if the constraint is being violated, false otherwise. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint + should be compared to the given . + The right hand side of the constraint equation. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the + constraint equation. + How the left hand side of the constraint should be + compared to the given . + The right hand side of the constraint equation. Default is 0. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the + constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be + compared to the given . + The right hand side of the constraint equation. Default is 0. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the constraint equation. + How the left hand side of the constraint should be compared to + the given . Default is . + The right hand side of the constraint equation. Default is 0. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A boolean lambda expression expressing the constraint. Please + see examples for details. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A boolean lambda expression expressing the constraint. Please + see examples for details. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the constraint. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the + constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation.. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the + constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be + compared to the given . + The right hand side of the constraint equation. Default is 0. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the + constraint equation. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be compared to the given . + The right hand side of the constraint equation. Default is 0. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be compared to the given . + The right hand side of the constraint equation. Default is 0. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Creates an empty nonlinear constraint. + + + + + + Creates a nonlinear constraint. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the number of variables in the constraint. + + + + + + Gets the left hand side of + the constraint equation. + + + + + + Gets the gradient of the left hand + side of the constraint equation. + + + + + + Gets the type of the constraint. + + + + + + Gets the value in the right hand side of + the constraint equation. Default is 0. + + + + + + Gets the violation tolerance for the constraint. Equality + constraints should set this to a small positive value. + Default is 1e-8. + + + + + + Constructs a new quadratic constraint in the form x'Ax + x'b. + + + The objective function to which this constraint refers. + The matrix of A quadratic terms. + The vector b of linear terms. + How the left hand side of the constraint should be compared to + the given . + The right hand side of the constraint equation. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 0. + + + + + Gets the matrix of A quadratic terms + for the constraint x'Ax + x'b. + + + + + + Gets the vector b of linear terms + for the constraint x'Ax + x'b. + + + + + + Quadratic objective function. + + + + + + Common interface for specifying objective functions. + + + + + + Gets input variable's labels for the function. + + + + + + Gets the index of each input variable in the function. + + + + + + Gets the number of input variables for the function. + + + + + + Gets the objective function. + + + + + + Initializes a new instance of the class. + + + + + + Creates a new objective function specified through a string. + + + The number of parameters in the . + A lambda expression defining the objective + function. + + + + + Creates a new objective function specified through a string. + + + The number of parameters in the . + A lambda expression defining the objective + function. + A lambda expression defining the gradient + of the objective function. + + + + + Creates a new objective function specified through a lambda expression. + + + A containing + the function in the form of a lambda expression. + A containing + the gradient of the objective function. + + + + + Gets the name of each input variable. + + + + + + Gets the index of each input variable in the function. + + + + + + Gets the name of each input variable. + + + + + + Gets the index of each input variable in the function. + + + + + + Gets the objective function. + + + + + + Gets the gradient of the objective function. + + + + + + Gets the number of input variables for the function. + + + + + + Conjugate gradient direction update formula. + + + + + + Fletcher-Reeves formula. + + + + + + Polak-Ribière formula. + + + + The Polak-Ribière is known to perform better for non-quadratic functions. + + + + + + Polak-Ribière formula. + + + + The Polak-Ribière is known to perform better for non-quadratic functions. + The positive version B=max(0,Bpr) provides a direction reset automatically. + + + + + + Conjugate Gradient exit codes. + + + + + + Success. + + + + + + Invalid step size. + + + + + + Descent direction was not obtained. + + + + + + Rounding errors prevent further progress. There may not be a step + which satisfies the sufficient decrease and curvature conditions. + Tolerances may be too small. + + + + + + The step size has reached the upper bound. + + + + + + The step size has reached the lower bound. + + + + + + Maximum number of function evaluations has been reached. + + + + + + Relative width of the interval of uncertainty is at machine precision. + + + + + + Conjugate Gradient (CG) optimization method. + + + + + In mathematics, the conjugate gradient method is an algorithm for the numerical solution of + particular systems of linear equations, namely those whose matrix is symmetric and positive- + definite. The conjugate gradient method is an iterative method, so it can be applied to sparse + systems that are too large to be handled by direct methods. Such systems often arise when + numerically solving partial differential equations. The nonlinear conjugate gradient method + generalizes the conjugate gradient method to nonlinear optimization (Wikipedia, 2011). + + T + + The framework implementation of this method is based on the original FORTRAN source code + by Jorge Nocedal (see references below). The original FORTRAN source code of CG+ (for large + scale unconstrained problems) is available at http://users.eecs.northwestern.edu/~nocedal/CG+.html + and had been made freely available for educational or commercial use. The original authors + expect that all publications describing work using this software quote the (Gilbert and Nocedal, 1992) + reference given below. + + + References: + + + J. C. Gilbert and J. Nocedal. Global Convergence Properties of Conjugate Gradient + Methods for Optimization, (1992) SIAM J. on Optimization, 2, 1. + + Wikipedia contributors, "Nonlinear conjugate gradient method," Wikipedia, The Free + Encyclopedia, http://en.wikipedia.org/w/index.php?title=Nonlinear_conjugate_gradient_method + (accessed December 22, 2011). + + Wikipedia contributors, "Conjugate gradient method," Wikipedia, The Free Encyclopedia, + http://en.wikipedia.org/w/index.php?title=Conjugate_gradient_method + (accessed December 22, 2011). + + + + + + + + + + + + Creates a new instance of the CG optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new instance of the CG optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets or sets the relative difference threshold + to be used as stopping criteria between two + iterations. Default is 0 (iterate until convergence). + + + + + + Gets or sets the maximum number of iterations + to be performed during optimization. Default + is 0 (iterate until convergence). + + + + + + Gets or sets the conjugate gradient update + method to be used during optimization. + + + + + + Gets the number of iterations performed + in the last call to . + + + + The number of iterations performed + in the previous optimization. + + + + + Gets the number of function evaluations performed + in the last call to . + + + + The number of evaluations performed + in the previous optimization. + + + + + Gets the number of linear searches performed + in the last call to . + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Occurs when progress is made during the optimization. + + + + + + Constraint type. + + + + + + Equality constraint. + + + + + + Inequality constraint specifying a greater than or equal to relationship. + + + + + + Inequality constraint specifying a lesser than or equal to relationship. + + + + + + Constraint with only linear terms. + + + + + + Constructs a new linear constraint. + + + The number of variables in the constraint. + + + + + Constructs a new linear constraint. + + + The scalar coefficients specifying + how variables should be combined in the constraint. + + + + + Constructs a new linear constraint. + + + The objective function to which + this constraint refers to. + A + specifying this constraint, such as "ax + b = c". + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + + + + Constructs a new linear constraint. + + + The objective function to which + this constraint refers to. + A + specifying this constraint, such as "ax + b = c". + + + + + Constructs a new linear constraint. + + + The objective function to which this + constraint refers to. + A specifying + this constraint in the form of a lambda expression. + + + + + Gets how much the constraint is being violated. + + + The function point. + + + How much the constraint is being violated at the given point. Positive + value means the constraint is not being violated with the returned slack, + while a negative value means the constraint is being violated by the returned + amount. + + + + + + Gets whether this constraint is being violated + (within the current tolerance threshold). + + + The function point. + + True if the constraint is being violated, false otherwise. + + + + + Attempts to create a + from a representation. + + + The string containing the constraint in textual form. + The objective function to which this constraint refers to. + The resulting constraint, if it could be parsed. + + true if the function could be parsed + from the string, false otherwise. + + + + + Attempts to create a + from a representation. + + + The string containing the constraint in textual form. + The objective function to which this constraint refers to. + The resulting constraint, if it could be parsed. + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + true if the function could be parsed + from the string, false otherwise. + + + + + Gets the number of variables in the constraint. + + + + + + Gets the index of the variables (in respective to the + object function index) of the variables participating + in this constraint. + + + + + + Gets the scalar coefficients combining the + variables specified by the constraints. + + + + + Gets the type of the constraint. + + + + + + Gets the value to be compared to the combined values + of the variables. + + + + + + Gets the violation tolerance for the constraint. Equality + constraints should set this to a small positive value. + + + + + + Gets the left hand side of the constraint equation. + + + + + + Gets the gradient of the left hand side of the constraint equation. + + + + + + Quadratic objective function. + + + + + In mathematics, a quadratic function, a quadratic polynomial, a polynomial + of degree 2, or simply a quadratic, is a polynomial function in one or more + variables in which the highest-degree term is of the second degree. For example, + a quadratic function in three variables x, y, and z contains exclusively terms + x², y², z², xy, xz, yz, x, y, z, and a constant: + + + + f(x,y,z) = ax² + by² +cz² + dxy + exz + fyz + gx + hy + iz + j + + + + Please note that the function's constructor expects the function + expression to be given on this form. Scalar values must be located + on the left of the variables, and no term should be duplicated in + the quadratic expression. Please take a look on the examples section + of this page for some examples of expected functions. + + + References: + + + Wikipedia, The Free Encyclopedia. Quadratic Function. Available on: + https://en.wikipedia.org/wiki/Quadratic_function + + + + + + + Examples of valid quadratic functions are: + + + var f1 = new QuadraticObjectiveFunction("x² + 1"); + var f2 = new QuadraticObjectiveFunction("-x*y + y*z"); + var f3 = new QuadraticObjectiveFunction("-2x² + xy - y² - 10xz + z²"); + var f4 = new QuadraticObjectiveFunction("-2x² + xy - y² + 5y"); + + + + It is also possible to specify quadratic functions using lambda expressions. + In this case, it is first necessary to create some dummy symbol variables to + act as placeholders in the quadratic expressions. Their value is not important, + as they will only be used to parse the form of the expression, not its value. + + + + // Declare symbol variables + double x = 0, y = 0, z = 0; + + var g1 = new QuadraticObjectiveFunction(() => x * x + 1); + var g2 = new QuadraticObjectiveFunction(() => -x * y + y * z); + var g3 = new QuadraticObjectiveFunction(() => -2 * x * x + x * y - y * y - 10 * x * z + z * z); + var g4 = new QuadraticObjectiveFunction(() => -2 * x * x + x * y - y * y + 5 * y); + + + + After those functions are created, you can either query their values + using + + + f1.Function(new [] { 5.0 }); // x*x+1 = x² + 1 = 25 + 1 = 26 + + + + Or you can pass it to a quadratic optimization method such + as Goldfarb-Idnani to explore its minimum or maximal points: + + + // Declare symbol variables + double x = 0, y = 0, z = 0; + + // Create the function to be optimized + var f = new QuadraticObjectiveFunction(() => x * x - 2 * x * y + 3 * y * y + z * z - 4 * x - 5 * y - z); + + // Create some constraints for the solution + var constraints = new List<LinearConstraint>(); + constraints.Add(new LinearConstraint(f, () => 6 * x - 7 * y <= 8)); + constraints.Add(new LinearConstraint(f, () => 9 * x + 1 * y <= 11)); + constraints.Add(new LinearConstraint(f, () => 9 * x - y <= 11)); + constraints.Add(new LinearConstraint(f, () => -z - y == 12)); + + // Create the Quadratic Programming solver + GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); + + // Minimize the function + bool success = solver.Minimize(); + + double value = solver.Value; + double[] solutions = solver.Solution; + + + + + + + + + Creates a new objective function specified through a string. + + + A Hessian matrix of quadratic terms defining the quadratic objective function. + The vector of linear terms associated with . + The name for each variable in the problem. + + + + + Creates a new objective function specified through a string. + + + A containing + the function in the form similar to "ax²+b". + + + + + Creates a new objective function specified through a string. + + + A containing + the function in the form similar to "ax²+b". + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + + + + Creates a new objective function specified through a string. + + + A containing + the function in the form of a lambda expression. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Attempts to create a + from a representation. + + + The string containing the function in textual form. + The resulting function, if it could be parsed. + + true if the function could be parsed + from the string, false otherwise. + + + + + Attempts to create a + from a representation. + + + The string containing the function in textual form. + The resulting function, if it could be parsed. + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + true if the function could be parsed + from the string, false otherwise. + + + + + Gets the quadratic terms of the quadratic function. + + + + + + Gets the vector of linear terms of the quadratic function. + + + + + + Gets the constant term in the quadratic function. + + + + + + Status codes for the + function optimizer. + + + + + + Convergence was attained. + + + + + + The optimization stopped before convergence; maximum + number of iterations could have been reached. + + + + + + The function is already at a minimum. + + + + + + Unknown error. + + + + + + The line-search step went out of the interval of uncertainty. + + + + + + A logic error occurred; alternatively, the interval of uncertainty became too small. + + + + + + A rounding error occurred; alternatively, no line-search step satisfies + the sufficient decrease and curvature conditions. The line search routine + will terminate with this code if the relative width of the interval of + uncertainty is less than . + + + + + + The line-search step became smaller than . + + + + + + The line-search step became larger than . + + + + + + The line-search routine reaches the maximum number of evaluations. + + + + + + Maximum number of iterations was reached. + + + + + + Relative width of the interval of uncertainty is at most + . + + + + + + A logic error (negative line-search step) occurred. This + could be an indication that something could be wrong with + the gradient function. + + + + + + The current search direction increases the objective function value. + + + + + + Line search algorithms. + + + + + + More-Thuente method. + + + + + + Backtracking method with the Armijo condition. + + + + + The backtracking method finds the step length such that it satisfies + the sufficient decrease (Armijo) condition, + + -f(x + a * d) ≤ f(x) + FunctionTolerance * a * g(x)^T d, + + where x is the current point, d is the current search direction, and + a is the step length. + + + + + + Backtracking method with regular Wolfe condition. + + + + + The backtracking method finds the step length such that it satisfies + both the Armijo condition (LineSearch.LBFGS_LINESEARCH_BACKTRACKING_ARMIJO) + and the curvature condition, + + - g(x + a * d)^T d ≥ lbfgs_parameter_t::wolfe * g(x)^T d, + + where x is the current point, d is the current search direction, and + a is the step length. + + + + + + Backtracking method with strong Wolfe condition. + + + + + The backtracking method finds the step length such that it satisfies + both the Armijo condition (LineSearch.LBFGS_LINESEARCH_BACKTRACKING_ARMIJO) + and the following condition, + + - |g(x + a * d)^T d| ≤ lbfgs_parameter_t::wolfe * |g(x)^T d|, + + where x is the current point, d is the current search direction, and + a is the step length. + + + + + + Limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) optimization method. + + + + + The L-BFGS algorithm is a member of the broad family of quasi-Newton optimization + methods. L-BFGS stands for 'Limited memory BFGS'. Indeed, L-BFGS uses a limited + memory variation of the Broyden–Fletcher–Goldfarb–Shanno (BFGS) update to approximate + the inverse Hessian matrix (denoted by Hk). Unlike the original BFGS method which + stores a dense approximation, L-BFGS stores only a few vectors that represent the + approximation implicitly. Due to its moderate memory requirement, L-BFGS method is + particularly well suited for optimization problems with a large number of variables. + + L-BFGS never explicitly forms or stores Hk. Instead, it maintains a history of the past + m updates of the position x and gradient g, where generally the history + mcan be short, often less than 10. These updates are used to implicitly do operations + requiring the Hk-vector product. + + + The framework implementation of this method is based on the original FORTRAN source code + by Jorge Nocedal (see references below). The original FORTRAN source code of L-BFGS (for + unconstrained problems) is available at http://www.netlib.org/opt/lbfgs_um.shar and had + been made available under the public domain. + + + References: + + + Jorge Nocedal. Limited memory BFGS method for large scale optimization (Fortran source code). 1990. + Available in http://www.netlib.org/opt/lbfgs_um.shar + + Jorge Nocedal. Updating Quasi-Newton Matrices with Limited Storage. Mathematics of Computation, + Vol. 35, No. 151, pp. 773--782, 1980. + + Dong C. Liu, Jorge Nocedal. On the limited memory BFGS method for large scale optimization. + + + + + + The following example shows the basic usage of the L-BFGS solver + to find the minimum of a function specifying its function and + gradient. + + + // Suppose we would like to find the minimum of the function + // + // f(x,y) = -exp{-(x-1)²} - exp{-(y-2)²/2} + // + + // First we need write down the function either as a named + // method, an anonymous method or as a lambda function: + + Func<double[], double> f = (x) => + -Math.Exp(-Math.Pow(x[0] - 1, 2)) - Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)); + + // Now, we need to write its gradient, which is just the + // vector of first partial derivatives del_f / del_x, as: + // + // g(x,y) = { del f / del x, del f / del y } + // + + Func<double[], double[]> g = (x) => new double[] + { + // df/dx = {-2 e^(- (x-1)^2) (x-1)} + 2 * Math.Exp(-Math.Pow(x[0] - 1, 2)) * (x[0] - 1), + + // df/dy = {- e^(-1/2 (y-2)^2) (y-2)} + Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)) * (x[1] - 2) + }; + + // Finally, we can create the L-BFGS solver, passing the functions as arguments + var lbfgs = new BroydenFletcherGoldfarbShanno(numberOfVariables: 2, function: f, gradient: g); + + // And then minimize the function: + bool success = lbfgs.Minimize(); + double minValue = lbfgs.Value; + double[] solution = lbfgs.Solution; + + // The resultant minimum value should be -2, and the solution + // vector should be { 1.0, 2.0 }. The answer can be checked on + // Wolfram Alpha by clicking the following the link: + + // http://www.wolframalpha.com/input/?i=maximize+%28exp%28-%28x-1%29%C2%B2%29+%2B+exp%28-%28y-2%29%C2%B2%2F2%29%29 + + + + + + + + + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The function to be optimized. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + The number of corrections to approximate the inverse Hessian matrix. + Default is 6. Values less than 3 are not recommended. Large values + will result in excessive computing time. + + + + The L-BFGS routine stores the computation results of the previous m + iterations to approximate the inverse Hessian matrix of the current + iteration. This parameter controls the size of the limited memories + (corrections). The default value is 6. Values less than 3 are not + recommended. Large values will result in excessive computing time. + + + + + + Epsilon for convergence test. + + + + + This parameter determines the accuracy with which the solution is to + be found. A minimization terminates when + + ||g|| < epsilon * max(1, ||x||), + + where ||.|| denotes the Euclidean (L2) norm. The default value is 1e-5. + + + + + + Distance for delta-based convergence test. + + + + This parameter determines the distance, in iterations, to compute + the rate of decrease of the objective function. If the value of this + parameter is zero, the library does not perform the delta-based + convergence test. The default value is 0. + + + + + + Delta for convergence test. + + + + + This parameter determines the minimum rate of decrease of the + objective function. The library stops iterations when the + following condition is met: + + (f' - f) / f < delta + + + where f' is the objective value of past iterations + ago, and f is the objective value of the current iteration. Default value + is 0. + + + + + + The maximum number of iterations. + + + + The minimize function terminates an optimization process with + status + code when the iteration count exceeds this parameter. Setting this parameter + to zero continues an optimization process until a convergence or error. The + default value is 0. + + + + + The line search algorithm. + + + + This parameter specifies a line search + algorithm to be used by the L-BFGS routine. + + + + + + The maximum number of trials for the line search. + + + + This parameter controls the number of function and gradients evaluations + per iteration for the line search routine. The default value is 20. + + + + + + The minimum step of the line search routine. + + + + The default value is 1e-20. This value need not be modified unless + the exponents are too large for the machine being used, or unless the problem + is extremely badly scaled (in which case the exponents should be increased). + + + + + + The maximum step of the line search. + + + + The default value is 1e+20. This value need not be modified unless the + exponents are too large for the machine being used, or unless the problem is + extremely badly scaled (in which case the exponents should be increased). + + + + + + A parameter to control the accuracy of the line search routine. The default + value is 1e-4. This parameter should be greater than zero and smaller + than 0.5. + + + + + + A coefficient for the Wolfe condition. + + + + This parameter is valid only when the backtracking line-search algorithm is used + with the Wolfe condition, + or . The default value + is 0.9. This parameter should be greater the + and smaller than 1.0. + + + + + + A parameter to control the accuracy of the line search routine. + + + + The default value is 0.9. If the function and gradient evaluations are + inexpensive with respect to the cost of the iteration (which is sometimes the + case when solving very large problems) it may be advantageous to set this parameter + to a small value. A typical small value is 0.1. This parameter should be + greater than the (1e-4) and smaller than + 1.0. + + + + + + The machine precision for floating-point values. + + + + This parameter must be a positive value set by a client program to + estimate the machine precision. The line search routine will terminate + with the status code (::LBFGSERR_ROUNDING_ERROR) if the relative width + of the interval of uncertainty is less than this parameter. + + + + + + Coefficient for the L1 norm of variables. + + + + + This parameter should be set to zero for standard minimization problems. Setting this + parameter to a positive value activates Orthant-Wise Limited-memory Quasi-Newton (OWL-QN) + method, which minimizes the objective function F(x) combined with the L1 norm |x| of the + variables, {F(x) + C |x|}. This parameter is the coefficient for the |x|, i.e., C. + + + As the L1 norm |x| is not differentiable at zero, the library modifies function and + gradient evaluations from a client program suitably; a client program thus have only + to return the function value F(x) and gradients G(x) as usual. The default value is zero. + + + + + + Start index for computing L1 norm of the variables. + + + + + This parameter is valid only for OWL-QN method (i.e., != 0). + This parameter b (0 <= b < N) specifies the index number from which the library + computes the L1 norm of the variables x, + + |x| := |x_{b}| + |x_{b+1}| + ... + |x_{N}|. + + In other words, variables x_1, ..., x_{b-1} are not used for + computing the L1 norm. Setting b (0 < b < N), one can protect + variables, x_1, ..., x_{b-1} (e.g., a bias term of logistic + regression) from being regularized. The default value is zero. + + + + + + End index for computing L1 norm of the variables. + + + + This parameter is valid only for OWL-QN method (i.e., != 0). + This parameter e (0 < e <= N) specifies the index number at which the library stops + computing the L1 norm of the variables x, + + |x| := |x_{b}| + |x_{b+1}| + ... + |x_{N}|. + + + + + + Occurs when progress is made during the optimization. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Line Search Failed Exception. + + + + This exception may be thrown by the L-BFGS Optimizer + when the line search routine used by the optimization method fails. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The error code information of the line search routine. + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is a null reference (Nothing in Visual Basic). + + + + + + + + + + Gets the error code information returned by the line search routine. + + + The error code information returned by the line search routine. + + + + + Optimization progress event arguments. + + + + + Initializes a new instance of the class. + + + The current iteration of the optimization method. + The number of function evaluations performed. + The current gradient of the function. + The norm of the current gradient + The norm of the current parameter vector. + The current solution parameters. + The value of the function evaluated at the current solution. + The current step size. + True if the method is about to terminate, false otherwise. + + + + + Gets the current iteration of the method. + + + + + + Gets the number of function evaluations performed. + + + + + + Gets the current gradient of the function being optimized. + + + + + + Gets the norm of the current . + + + + + + Gets the current solution parameters for the problem. + + + + + + Gets the norm of the current . + + + + + + Gets the value of the function to be optimized + at the current proposed . + + + + + + Gets the current step size. + + + + + + Gets or sets a value indicating whether the + optimization process is about to terminate. + + + true if finished; otherwise, false. + + + + + An user-defined value associated with this object. + + + + + + Status codes for the + constrained quadratic programming solver. + + + + + + Convergence was attained. + + + + + + The quadratic problem matrix is not positive definite. + + + + + + The posed constraints cannot be fulfilled. + + + + + + Goldfarb-Idnani Quadratic Programming Solver. + + + + + References: + + + Goldfarb D., Idnani A. (1982) Dual and Primal-Dual Methods for Solving Strictly Convex Quadratic Programs. + Available on: http://www.javaquant.net/papers/GoldfarbIdnani.pdf . + + Berwin A Turlach. QuadProg, Quadratic Programming Solver (implementation in Fortran). + Available on: http://school.maths.uwa.edu.au/~berwin/software/quadprog.html . + + + + + + + There are three ways to state a quadratic programming problem in this framework. + + + + The first is to state the problem in its canonical form, explicitly stating the + matrix Q and vector d specifying the quadratic function and the matrices A and + vector b specifying the problem constraints. + + The second is to state the problem with lambda expressions using symbolic variables. + + The third is to state the problem using text strings. + + + + In the following section we will provide examples for those ways. + + + + This is an example stating the problem using lambdas: + + // Solve the following optimization problem: + // + // min f(x) = 2x² - xy + 4y² - 5x - 6y + // + // s.t. x - y == 5 (x minus y should be equal to 5) + // x >= 10 (x should be greater than or equal to 10) + // + + // In this example we will be using some symbolic processing. + // The following variables could be initialized to any value. + double x = 0, y = 0; + + // Create our objective function using a lambda expression + var f = new QuadraticObjectiveFunction(() => 2 * (x * x) - (x * y) + 4 * (y * y) - 5 * x - 6 * y); + + // Now, create the constraints + List<LinearConstraint> constraints = new List<LinearConstraint>(); + constraints.Add(new LinearConstraint(f, () => x - y == 5)); + constraints.Add(new LinearConstraint(f, () => x >= 10)); + + // Now we create the quadratic programming solver for 2 variables, using the constraints. + GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); + + // And attempt to solve it. + double minimumValue = solver.Minimize(); + + + + This is an example stating the problem using strings: + + // Solve the following optimization problem: + // + // max f(x) = -2x² + xy - y² + 5y + // + // s.t. x - y == 5 (x minus y should be equal to 5) + // x >= 10 (x should be greater than or equal to 10) + // + // + + // Create our objective function using a text string + var f = new QuadraticObjectiveFunction("-2x² + xy - y² + 5y"); + + // Now, create the constraints + List<LinearConstraint> constraints = new List<LinearConstraint>(); + constraints.Add(new LinearConstraint(f, "x - y == 5")); + constraints.Add(new LinearConstraint(f, " x >= 10")); + + // Now we create the quadratic programming solver for 2 variables, using the constraints. + GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); + + // And attempt to solve it. + double maxValue = solver.Maximize(); + + + + And finally, an example stating the problem using matrices: + + // Solve the following optimization problem: + // + // min f(x) = 2x² - xy + 4y² - 5x - 6y + // + // s.t. x - y == 5 (x minus y should be equal to 5) + // x >= 10 (x should be greater than or equal to 10) + // + + // Lets first group the quadratic and linear terms. The + // quadratic terms are +2x², +3y² and -4xy. The linear + // terms are -2x and +1y. So our matrix of quadratic + // terms can be expressed as: + + double[,] Q = // 2x² -1xy +4y² + { + /* x y */ + /*x*/ { +2 /*xx*/ *2, -1 /*xy*/ }, + /*y*/ { -1 /*xy*/ , +4 /*yy*/ *2 }, + }; + + // Accordingly, our vector of linear terms is given by: + + double[] d = { -5 /*x*/, -6 /*y*/ }; // -5x -6y + + // We have now to express our constraints. We can do it + // either by directly specifying a matrix A in which each + // line refers to one of the constraints, expressing the + // relationship between the different variables in the + // constraint, like this: + + double[,] A = + { + { 1, -1 }, // This line says that x + (-y) ... (a) + { 1, 0 }, // This line says that x alone ... (b) + }; + + double[] b = + { + 5, // (a) ... should be equal to 5. + 10, // (b) ... should be greater than or equal to 10. + }; + + // Equalities must always come first, and in this case + // we have to specify how many of the constraints are + // actually equalities: + + int numberOfEqualities = 1; + + + // Alternatively, we may use a more explicitly form: + List<LinearConstraint> list = new List<LinearConstraint>(); + + // Define the first constraint, which involves only x + list.Add(new LinearConstraint(numberOfVariables: 1) + { + // x is the first variable, thus located at + // index 0. We are specifying that x >= 10: + + VariablesAtIndices = new[] { 0 }, // index 0 (x) + ShouldBe = ConstraintType.GreaterThanOrEqualTo, + Value = 10 + }); + + // Define the second constraint, which involves x and y + list.Add(new LinearConstraint(numberOfVariables: 2) + { + // x is the first variable, located at index 0, and y is + // the second, thus located at 1. We are specifying that + // x - y = 5 by saying that the variable at position 0 + // times 1 plus the variable at position 1 times -1 + // should be equal to 5. + + VariablesAtIndices = new int[] { 0, 1 }, // index 0 (x) and index 1 (y) + CombinedAs = new double[] { 1, -1 }, // when combined as x - y + ShouldBe = ConstraintType.EqualTo, + Value = 5 + }); + + + // Now we can finally create our optimization problem + var target = new GoldfarbIdnani(Q, d, constraints: list); + + // And attempt to solve it. + double minimumValue = target.Minimize(); + + + + + + + Constructs a new class. + + + The objective function to be optimized. + The problem's constraints. + + + + + Constructs a new class. + + + The objective function to be optimized. + The problem's constraints. + + + + + Constructs a new instance of the class. + + + The objective function to be optimized. + The constraints matrix A. + The constraints values b. + The number of equalities in the constraints. + + + + + Constructs a new instance of the class. + + + The symmetric matrix of quadratic terms defining the objective function. + The vector of linear terms defining the objective function. + The constraints matrix A. + The constraints values b. + The number of equalities in the constraints. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + + Not available. + + + + + + Gets the total number of constraints in the problem. + + + + + + Gets how many constraints are inequality constraints. + + + + + + Gets the total number of iterations performed on the + last call to the or methods. + + + + + + Gets or sets the maximum number of iterations that should be + performed before the method terminates. If set to zero, the + method will run to completion. Default is 0. + + + + + + Gets the total number of constraint removals performed + on the last call to the or methods. + + + + + + Gets the Lagrangian multipliers for the + last solution found. + + + + + + Gets the indices of the active constraints + found during the last call of the + or + methods. + + + + + + Gets the constraint matrix A for the problem. + + + + + + Gets the constraint values b for the problem. + + + + + + Gets the constraint tolerances b for the problem. + + + + + + Gets the matrix of quadratic terms of + the quadratic optimization problem. + + + + + + Gets the vector of linear terms of the + quadratic optimization problem. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Brent's root finding and minimization algorithms. + + + + + In numerical analysis, Brent's method is a complicated but popular root-finding + algorithm combining the bisection method, the secant method and inverse quadratic + interpolation. It has the reliability of bisection but it can be as quick as some + of the less reliable methods. The idea is to use the secant method or inverse quadratic + interpolation if possible, because they converge faster, but to fall back to the more + robust bisection method if necessary. Brent's method is due to Richard Brent (1973) + and builds on an earlier algorithm of Theodorus Dekker (1969). + + + The algorithms implemented in this class are based on the original C source code + available in Netlib (http://www.netlib.org/c/brent.shar) by Oleg Keselyov, 1991. + + + References: + + + R.P. Brent (1973). Algorithms for Minimization without Derivatives, Chapter 4. + Prentice-Hall, Englewood Cliffs, NJ. ISBN 0-13-022335-2. + + Wikipedia contributors. "Brent's method." Wikipedia, The Free Encyclopedia. + Wikipedia, The Free Encyclopedia, 11 May. 2012. Web. 22 Jun. 2012. + + + + + + + + The following example shows how to compute the maximum, + minimum and a single root of a univariate function. + + + // Suppose we were given the function x³ + 2x² - 10x and + // we have to find its root, maximum and minimum inside + // the interval [-4,3]. First, we express this function + // as a lambda expression: + Func<double, double> function = x => x * x * x + 2 * x * x - 10 * x; + + // And now we can create the search algorithm: + BrentSearch search = new BrentSearch(function, -4, 3); + + // Finally, we can query the information we need + double max = search.Maximize(); // occurs at -2.61 + double min = search.Minimize(); // occurs at 1.27 + double root = search.FindRoot(); // occurs at 0.50 + + + + + + + + Constructs a new Brent search algorithm. + + + The function to be searched. + Start of search region. + End of search region. + + + + + Attempts to find a root in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Attempts to find a value in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Finds the minimum of the function in the interval [a;b] + + + The location of the minimum of the function in the given interval. + + + + + Finds the maximum of the function in the interval [a;b] + + + The location of the maximum of the function in the given interval. + + + + + Finds the minimum of a function in the interval [a;b] + + + The function to be minimized. + Start of search region. + End of search region. + The tolerance for determining the solution. + + The location of the minimum of the function in the given interval. + + + + + Finds the maximum of a function in the interval [a;b] + + + The function to be maximized. + Start of search region. + End of search region. + The tolerance for determining the solution. + + The location of the maximum of the function in the given interval. + + + + + Finds the root of a function in the interval [a;b] + + + The function to have its root computed. + Start of search region. + End of search region. + The tolerance for determining the solution. + + The location of the zero value in the given interval. + + + + + Finds a value of a function in the interval [a;b] + + + The function to have its root computed. + Start of search region. + End of search region. + The tolerance for determining the solution. + The value to be looked for in the function. + + The location of the zero value in the given interval. + + + + + Gets the number of variables (free parameters) + in the optimization problem. + + + + The number of parameters. + + + + + + Gets or sets the tolerance margin when + looking for an answer. Default is 1e-6. + + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets the solution found in the last call + to , + or . + + + + + + Gets the value at the solution found in the last call + to , + or . + + + + + + Gets the value at the solution found in the last call + to , + or . + + + + + + Gets the function to be searched. + + + + + + Set of special mathematic functions. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + John D. Cook, http://www.johndcook.com/ + + + + + + + Complementary error function of the specified value. + + + + http://mathworld.wolfram.com/Erfc.html + + + + + + Error function of the specified value. + + + + + + Inverse error function (. + + + + + + Inverse complemented error function (. + + + + + + Evaluates polynomial of degree N + + + + + + Evaluates polynomial of degree N with assumption that coef[N] = 1.0 + + + + + + Computes the Basic Spline of order n + + + + + Computes the binomial coefficients C(n,k). + + + + + + Computes the binomial coefficients C(n,k). + + + + + + Computes the log binomial Coefficients Log[C(n,k)]. + + + + + + Computes the log binomial Coefficients Log[C(n,k)]. + + + + + + Returns the extended factorial definition of a real number. + + + + + + Returns the log factorial of a number (ln(n!)) + + + + + + Returns the log factorial of a number (ln(n!)) + + + + + + Computes the factorial of a number (n!) + + + + + Computes log(1-x) without losing precision for small values of x. + + + + + + Computes log(1+x) without losing precision for small values of x. + + + + References: + - http://www.johndcook.com/csharp_log_one_plus_x.html + + + + + + Compute exp(x) - 1 without loss of precision for small values of x. + + + References: + - http://www.johndcook.com/cpp_expm1.html + + + + + Estimates unit round-off in quantities of size x. + + + This is a port of the epslon function from EISPACK. + + + + + Returns with the sign of . + + + + This is a port of the sign transfer function from EISPACK, + and is is equivalent to C++'s std::copysign function. + + + If B > 0 then the result is ABS(A), else it is -ABS(A). + + + + + Computes x + y without losing precision using ln(x) and ln(y). + + + + + + Computes x + y without losing precision using ln(x) and ln(y). + + + + + + Computes x + y without losing precision using ln(x) and ln(y). + + + + + + Secant. + + + + + + Cosecant. + + + + + + Cotangent. + + + + + Inverse secant. + + + + + + Inverse cosecant. + + + + + + Inverse cotangent. + + + + + + Hyperbolic secant. + + + + + + Hyperbolic secant. + + + + + + Hyperbolic cotangent. + + + + + + Inverse hyperbolic sin. + + + + + + Inverse hyperbolic cos. + + + + + + Inverse hyperbolic tangent. + + + + + + Inverse hyperbolic secant. + + + + + + Inverse hyperbolic cosecant. + + + + + + Inverse hyperbolic cotangent. + + + + + + Discrete Hilbert Transformation. + + + + + The discrete Hilbert transform is a transformation operating on the time + domain. It performs a 90 degree phase shift, shifting positive frequencies + by +90 degrees and negative frequencies by -90 degrees. It is useful to + create analytic representation of signals. + + + The Hilbert transform can be implemented efficiently by using the Fast + Fourier Transform. After transforming a signal from the time-domain to + the frequency domain, one can zero its negative frequency components and + revert the signal back to obtain the phase shifting. + + + By applying the Hilbert transform to a signal twice, the negative of + the original signal is recovered. + + + References: + + + Marple, S.L., "Computing the discrete-time analytic signal via FFT," IEEE + Transactions on Signal Processing, Vol. 47, No.9 (September 1999). Available on: + http://classes.engr.oregonstate.edu/eecs/winter2009/ece464/AnalyticSignal_Sept1999_SPTrans.pdf + + J. F. Culling, Online, cross-indexed dictionary of DSP terms. Available on: + http://www.cardiff.ac.uk/psych/home2/CullingJ/frames_dict.html + + + + + + + + Performs the Fast Hilbert Transform over a double[] array. + + + + + + Performs the Fast Hilbert Transform over a complex[] array. + + + + + + Beta functions. + + + + + This class offers implementations for the many Beta functions, + such as the Beta function itself, + its logarithm, the + incomplete regularized functions and others + + + The beta function was studied by Euler and Legendre and was given + its name by Jacques Binet; its symbol Β is a Greek capital β rather + than the similar Latin capital B. + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + Wikipedia contributors, "Beta function,". Wikipedia, The Free + Encyclopedia. Available at: http://en.wikipedia.org/wiki/Beta_function + + + + + + + Beta.Function(4, 0.42); // 1.2155480852832423 + Beta.Log(4, 15.2); // -9.46087817876467 + Beta.Incbcf(4, 2, 4.2); // -0.23046874999999992 + Beta.Incbd(4, 2, 4.2); // 0.7375 + Beta.PowerSeries(4, 2, 4.2); // -3671.801280000001 + + Beta.Incomplete(a: 5, b: 4, x: 0.5); // 0.36328125 + Beta.IncompleteInverse(0.5, 0.6, 0.1); // 0.019145979066925722 + Beta.Multinomial(0.42, 0.5, 5.2 ); // 0.82641912952987062 + + + + + + + Beta function as gamma(a) * gamma(b) / gamma(a+b). + + + + Please see + + + + + + Natural logarithm of the Beta function. + + + + Please see + + + + + + Incomplete (regularized) Beta function Ix(a, b). + + + + Please see + + + + + + Continued fraction expansion #1 for incomplete beta integral. + + + + Please see + + + + + + Continued fraction expansion #2 for incomplete beta integral. + + + + Please see + + + + + + Inverse of incomplete beta integral. + + + + Please see + + + + + + Power series for incomplete beta integral. Use when b*x + is small and x not too close to 1. + + + + Please see + + + + + + Multinomial Beta function. + + + + Please see + + + + + + Gamma Γ(x) functions. + + + + + In mathematics, the gamma function (represented by the capital Greek + letter Γ) is an extension of the factorial function, with its argument + shifted down by 1, to real and complex numbers. That is, if n is + a positive integer: + + Γ(n) = (n-1)! + + The gamma function is defined for all complex numbers except the negative + integers and zero. For complex numbers with a positive real part, it is + defined via an improper integral that converges: + + ∞ + Γ(z) = ∫ t^(z-1)e^(-t) dt + 0 + + + This integral function is extended by analytic continuation to all + complex numbers except the non-positive integers (where the function + has simple poles), yielding the meromorphic function we call the gamma + function. + + The gamma function is a component in various probability-distribution + functions, and as such it is applicable in the fields of probability + and statistics, as well as combinatorics. + + + References: + + + Wikipedia contributors, "Gamma function,". Wikipedia, The Free + Encyclopedia. Available at: http://en.wikipedia.org/wiki/Gamma_function + + + Cephes Math Library, http://www.netlib.org/cephes/ + + + + + + double x = 0.17; + + // Compute main Gamma function and variants + double gamma = Gamma.Function(x); // 5.4511741801042106 + double gammap = Gamma.Function(x, p: 2); // -39.473585841300675 + double log = Gamma.Log(x); // 1.6958310313607003 + double logp = Gamma.Log(x, p: 2); // 3.6756317353404273 + double stir = Gamma.Stirling(x); // 24.040352622960743 + double psi = Gamma.Digamma(x); // -6.2100942259248626 + double tri = Gamma.Trigamma(x); // 35.915302055854525 + + double a = 4.2; + + // Compute the incomplete regularized Gamma functions P and Q: + double lower = Gamma.LowerIncomplete(a, x); // 0.000015685073063633753 + double upper = Gamma.UpperIncomplete(a, x); // 0.9999843149269364 + + + + + + Maximum gamma on the machine. + + + + Gamma function of the specified value. + + + + + + Multivariate Gamma function + + + + + + Digamma function. + + + + + + Trigamma function. + + + + This code has been adapted from the FORTRAN77 and subsequent + C code by B. E. Schneider and John Burkardt. The code had been + made public under the GNU LGPL license. + + + + + + Gamma function as computed by Stirling's formula. + + + + + + Upper incomplete regularized Gamma function Q + (a.k.a the incomplete complemented Gamma function) + + + + This function is equivalent to Q(x) = Γ(s, x) / Γ(s). + + + + + + Lower incomplete regularized gamma function P + (a.k.a. the incomplete Gamma function). + + + + This function is equivalent to P(x) = γ(s, x) / Γ(s). + + + + + + Natural logarithm of the gamma function. + + + + + + Natural logarithm of the multivariate Gamma function. + + + + + + Inverse of the + incomplete Gamma integral (LowerIncomplete, P). + + + + + + Inverse of the complemented + incomplete Gamma integral (UpperIncomplete, Q). + + + + + + Inverse of the complemented + incomplete Gamma integral (UpperIncomplete, Q). + + + + + + Random Gamma-distribution number generation + based on Marsaglia's Simple Method (2000). + + + + + + Common mathematical constants. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + http://www.johndcook.com/cpp_expm1.html + + + + + + + Euler-Mascheroni constant. + + + + This constant is defined as 0.5772156649015328606065120. + + + + + + Double-precision machine round-off error. + + + + This value is actually different from Double.Epsilon. It + is defined as 1.11022302462515654042E-16. + + + + + + Single-precision machine round-off error. + + + + This value is actually different from Single.Epsilon. It + is defined as 1.1920929E-07f. + + + + + + Double-precision small value. + + + + This constant is defined as 1.493221789605150e-300. + + + + + + Single-precision small value. + + + + This constant is defined as 1.493221789605150e-40f. + + + + + + Maximum log on the machine. + + + + This constant is defined as 7.09782712893383996732E2. + + + + + + Minimum log on the machine. + + + + This constant is defined as -7.451332191019412076235E2. + + + + + + Catalan's constant. + + + + + + Log of number pi: log(pi). + + + + This constant has the value 1.14472988584940017414. + + + + + + Log of two: log(2). + + + + This constant has the value 0.69314718055994530941. + + + + + + Log of three: log(3). + + + + This constant has the value 1.098612288668109691395. + + + + + + Log of square root of twice number pi: sqrt(log(2*π). + + + + This constant has the value 0.91893853320467274178032973640562. + + + + + + Log of twice number pi: log(2*pi). + + + + + This constant has the value 1.837877066409345483556. + + + + + + Square root of twice number pi: sqrt(2*π). + + + + This constant has the value 2.50662827463100050242E0. + + + + + + Square root of half number π: sqrt(π/2). + + + + This constant has the value 1.25331413731550025121E0. + + + + + + Square root of 2: sqrt(2). + + + + This constant has the value 1.4142135623730950488016887. + + + + + + Half square root of 2: sqrt(2)/2. + + + + This constant has the value 7.07106781186547524401E-1. + + + + + + Bessel functions. + + + + + Bessel functions, first defined by the mathematician Daniel + Bernoulli and generalized by Friedrich Bessel, are the canonical + solutions y(x) of Bessel's differential equation. + + + Bessel's equation arises when finding separable solutions to Laplace's + equation and the Helmholtz equation in cylindrical or spherical coordinates. + Bessel functions are therefore especially important for many problems of wave + propagation and static potentials. In solving problems in cylindrical coordinate + systems, one obtains Bessel functions of integer order (α = n); in spherical + problems, one obtains half-integer orders (α = n+1/2). For example: + + + + Electromagnetic waves in a cylindrical waveguide + + Heat conduction in a cylindrical object + + Modes of vibration of a thin circular (or annular) artificial + membrane (such as a drum or other membranophone) + + Diffusion problems on a lattice + + Solutions to the radial Schrödinger equation (in spherical and + cylindrical coordinates) for a free particle + + Solving for patterns of acoustical radiation + + Frequency-dependent friction in circular pipelines + + + + + Bessel functions also appear in other problems, such as signal processing + (e.g., see FM synthesis, Kaiser window, or Bessel filter). + + + This class offers implementations of Bessel's first and second kind + functions, with special cases for zero and for arbitrary n. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + Wikipedia contributors, "Bessel function,". Wikipedia, The Free + Encyclopedia. Available at: http://en.wikipedia.org/wiki/Bessel_function + + + + + + + // Bessel function of order 0 + actual = Bessel.J0(1); // 0.765197686557967 + actual = Bessel.J0(5); // -0.177596771314338 + + // Bessel function of order n + double j2 = Bessel.J(2, 17.3); // 0.117351128521774 + double j01 = Bessel.J(0, 1); // 0.765197686557967 + double j05 = Bessel.J(0, 5); // -0.177596771314338 + + + // Bessel function of the second kind, of order 0. + double y0 = Bessel.Y0(64); // 0.037067103232088 + + // Bessel function of the second kind, of order n. + double y2 = Bessel.Y(2, 4); // 0.215903594603615 + double y0 = Bessel.Y(0, 64); // 0.037067103232088 + + + + + + + Bessel function of order 0. + + + + See + + + + + + Bessel function of order 1. + + + + See + + + + + + Bessel function of order n. + + + + See + + + + + + Bessel function of the second kind, of order 0. + + + + See + + + + + + Bessel function of the second kind, of order 1. + + + + See + + + + + + Bessel function of the second kind, of order n. + + + + See + + + + + + Bessel function of the first kind, of order 0. + + + + See + + + + + + Bessel function of the first kind, of order 1. + + + + See + + + + + + Bessel function of the first kind, of order n. + + + + See + + + + + + Set of mathematical tools. + + + + + + Sets a random seed for the framework's main + internal number generator. + + + + + + Gets the angle formed by the vector [x,y]. + + + + + + Gets the angle formed by the vector [x,y]. + + + + + + Gets the displacement angle between two points. + + + + + + Gets the displacement angle between two points, coded + as an integer varying from 0 to 20. + + + + + + Gets the greatest common divisor between two integers. + + + First value. + Second value. + + The greatest common divisor. + + + + + Returns the next power of 2 after the input value x. + + + Input value x. + + Returns the next power of 2 after the input value x. + + + + + Returns the previous power of 2 after the input value x. + + + Input value x. + + Returns the previous power of 2 after the input value x. + + + + + Hypotenuse calculus without overflow/underflow + + + First value + Second value + + The hypotenuse Sqrt(a^2 + b^2) + + + + + Hypotenuse calculus without overflow/underflow + + + first value + second value + + The hypotenuse Sqrt(a^2 + b^2) + + + + + Hypotenuse calculus without overflow/underflow + + + first value + second value + + The hypotenuse Sqrt(a^2 + b^2) + + + + + Gets the proper modulus operation for + an integer value x and modulo m. + + + + + + Gets the proper modulus operation for + a real value x and modulo m. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Returns the hyperbolic arc cosine of the specified value. + + + + + + Returns the hyperbolic arc sine of the specified value. + + + + + + Returns the hyperbolic arc tangent of the specified value. + + + + + + Returns the factorial falling power of the specified value. + + + + + + Truncated power function. + + + + + + Fast inverse floating-point square root. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Interpolates data using a piece-wise linear function. + + + The value to be calculated. + The input data points x. Those values need to be sorted. + The output data points y. + + The value to be returned for values before the first point in . + + The value to be returned for values after the last point in . + + Computes the output for f(value) by using a piecewise linear + interpolation of the data points and . + + + + + Gets the maximum value among three values. + + + The first value a. + The second value b. + The third value c. + + The maximum value among , + and . + + + + + Gets the minimum value among three values. + + + The first value a. + The second value b. + The third value c. + + The minimum value among , + and . + + + + + Gets a reference to the random number generator used + internally by the Accord.NET classes and methods. + + + + + + Returns the Identity matrix of the given size. + + + + + + Creates a jagged magic square matrix. + + + + + + Returns a square diagonal matrix of the given size. + + + + + + Return a jagged matrix with a vector of values on its diagonal. + + + + + + Shuffles an array. + + + + + + Shuffles a collection. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Creates a zero-valued vector. + + + The type of the vector to be created. + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a zero-valued vector. + + + The type of the vector to be created. + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a zero-valued vector. + + + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a zero-valued vector. + + + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a vector with the given dimension and starting values. + + + The number of elements in the vector. + The initial values for the vector. + + + + + Creates a vector with the given dimension default value. + + + The number of elements in the vector. + + + + + Creates a vector with the given dimension and starting values. + + + The number of elements in the vector. + The initial value for the elements in the vector. + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Cohen-Daubechies-Feauveau Wavelet Transform + + + + + + Common interface for wavelets algorithms. + + + + + + 1-D Forward Discrete Wavelet Transform. + + + + + + 2-D Forward Discrete Wavelet Transform. + + + + + + 1-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + 2-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + Constructs a new Cohen-Daubechies-Feauveau Wavelet Transform. + + + The number of iterations for the 2D transform. + + + + + 1-D Forward Discrete Wavelet Transform. + + + + + + 2-D Forward Discrete Wavelet Transform. + + + + + + 1-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + 2-D Backward (Inverse) Discrete Wavelet Transform. + + + + + Forward biorthogonal 9/7 wavelet transform + + + + + Inverse biorthogonal 9/7 wavelet transform + + + + + + Forward biorthogonal 9/7 2D wavelet transform + + + + + + Inverse biorthogonal 9/7 2D wavelet transform + + + + + + Haar Wavelet Transform. + + + + + References: + + + Musawir Ali, An Introduction to Wavelets and the Haar Transform. + Available on: http://www.cs.ucf.edu/~mali/haar/ + + + + + + + + Constructs a new Haar Wavelet Transform. + + The number of iterations for the 2D transform. + + + + + 1-D Forward Discrete Wavelet Transform. + + + + + + 1-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + 2-D Forward Discrete Wavelet Transform. + + + + + + 2-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + Discrete Haar Wavelet Transform + + + + + + Inverse Haar Wavelet Transform + + + + + + Discrete Haar Wavelet 2D Transform + + + + + + Inverse Haar Wavelet 2D Transform + + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net45/Accord.Math.dll b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net45/Accord.Math.dll new file mode 100644 index 0000000000..12541ab11 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net45/Accord.Math.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net45/Accord.Math.xml b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net45/Accord.Math.xml new file mode 100644 index 0000000000..c538f1308 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Math.3.0.2/lib/net45/Accord.Math.xml @@ -0,0 +1,27337 @@ + + + + Accord.Math + + + + + Histogram for continuous random values. + + + The class wraps histogram for continuous stochastic function, which is represented + by integer array and range of the function. Values of the integer array are treated + as total amount of hits on the corresponding subranges, which are calculated by splitting the + specified range into required amount of consequent ranges. + + For example, if the integer array is equal to { 1, 2, 4, 8, 16 } and the range is set + to [0, 1], then the histogram consists of next subranges: + + [0.0, 0.2] - 1 hit; + [0.2, 0.4] - 2 hits; + [0.4, 0.6] - 4 hits; + [0.6, 0.8] - 8 hits; + [0.8, 1.0] - 16 hits. + + + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get mean and standard deviation values + Console.WriteLine( "mean = " + histogram.Mean + ", std.dev = " + histogram.StdDev ); + + + + + + + Initializes a new instance of the class. + + + Values of the histogram. + Range of random values. + + Values of the integer array are treated as total amount of hits on the + corresponding subranges, which are calculated by splitting the specified range into + required amount of consequent ranges (see class + description for more information). + + + + + + Get range around median containing specified percentage of values. + + + Values percentage around median. + + Returns the range which containes specifies percentage of values. + + The method calculates range of stochastic variable, which summary probability + comprises the specified percentage of histogram's hits. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get 50% range + Range range = histogram.GetRange( 0.5f ); + // show the range ([0.25, 0.75]) + Console.WriteLine( "50% range = [" + range.Min + ", " + range.Max + "]" ); + + + + + + + Update statistical value of the histogram. + + + The method recalculates statistical values of the histogram, like mean, + standard deviation, etc. The method should be called only in the case if histogram + values were retrieved through property and updated after that. + + + + + + Values of the histogram. + + + + + + Range of random values. + + + + + + Mean value. + + + The property allows to retrieve mean value of the histogram. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get mean value (= 0.505 ) + Console.WriteLine( "mean = " + histogram.Mean.ToString( "F3" ) ); + + + + + + + Standard deviation. + + + The property allows to retrieve standard deviation value of the histogram. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get std.dev. value (= 0.215) + Console.WriteLine( "std.dev. = " + histogram.StdDev.ToString( "F3" ) ); + + + + + + + Median value. + + + The property allows to retrieve median value of the histogram. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get median value (= 0.500) + Console.WriteLine( "median = " + histogram.Median.ToString( "F3" ) ); + + + + + + + Minimum value. + + + The property allows to retrieve minimum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get min value (= 0.250) + Console.WriteLine( "min = " + histogram.Min.ToString( "F3" ) ); + + + + + + Maximum value. + + + The property allows to retrieve maximum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + ContinuousHistogram histogram = new ContinuousHistogram( + new int[] { 0, 0, 8, 4, 2, 4, 7, 1, 0 }, new Range( 0.0f, 1.0f ) ); + // get max value (= 0.875) + Console.WriteLine( "max = " + histogram.Max.ToString( "F3" ) ); + + + + + + + Fourier transformation. + + + The class implements one dimensional and two dimensional + Discrete and Fast Fourier Transformation. + + + + + One dimensional Discrete Fourier Transform. + + + Data to transform. + Transformation direction. + + + + + Two dimensional Discrete Fourier Transform. + + + Data to transform. + Transformation direction. + + + + + One dimensional Fast Fourier Transform. + + + Data to transform. + Transformation direction. + + The method accepts array of 2n size + only, where n may vary in the [1, 14] range. + + Incorrect data length. + + + + + Two dimensional Fast Fourier Transform. + + + Data to transform. + Transformation direction. + + The method accepts array of 2n size + only in each dimension, where n may vary in the [1, 14] range. For example, 16x16 array + is valid, but 15x15 is not. + + Incorrect data length. + + + + + Fourier transformation direction. + + + + + Forward direction of Fourier transformation. + + + + + + Backward direction of Fourier transformation. + + + + + + Gaussian function. + + + The class is used to calculate 1D and 2D Gaussian functions for + specified (s) value: + + + 1-D: f(x) = exp( x * x / ( -2 * s * s ) ) / ( s * sqrt( 2 * PI ) ) + + 2-D: f(x, y) = exp( x * x + y * y / ( -2 * s * s ) ) / ( s * s * 2 * PI ) + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Sigma value. + + + + + 1-D Gaussian function. + + + x value. + + Returns function's value at point . + + The function calculates 1-D Gaussian function: + + + f(x) = exp( x * x / ( -2 * s * s ) ) / ( s * sqrt( 2 * PI ) ) + + + + + + + 2-D Gaussian function. + + + x value. + y value. + + Returns function's value at point (, ). + + The function calculates 2-D Gaussian function: + + + f(x, y) = exp( x * x + y * y / ( -2 * s * s ) ) / ( s * s * 2 * PI ) + + + + + + + 1-D Gaussian kernel. + + + Kernel size (should be odd), [3, 101]. + + Returns 1-D Gaussian kernel of the specified size. + + The function calculates 1-D Gaussian kernel, which is array + of Gaussian function's values in the [-r, r] range of x value, where + r=floor(/2). + + + Wrong kernel size. + + + + + 2-D Gaussian kernel. + + + Kernel size (should be odd), [3, 101]. + + Returns 2-D Gaussian kernel of specified size. + + The function calculates 2-D Gaussian kernel, which is array + of Gaussian function's values in the [-r, r] range of x,y values, where + r=floor(/2). + + + Wrong kernel size. + + + + + Sigma value. + + + Sigma property of Gaussian function. + + Default value is set to 1. Minimum allowed value is 0.00000001. + + + + + + Shape optimizer, which merges points within close distance to each other. + + + This shape optimizing algorithm checks all points of a shape + and merges any two points which are within specified distance + to each other. Two close points are replaced by a single point, which has + mean coordinates of the removed points. + + Because of the fact that the algorithm performs points merging + while it goes through a shape, it may merge several points (more than 2) into a + single point, where distance between extreme points may be bigger + than the specified limit. For example, suppose + a case with 3 points, where 1st and 2nd points are close enough to be merged, but the + 3rd point is a little bit further. During merging of 1st and 2nd points, it may + happen that the new point with mean coordinates will get closer to the 3rd point, + so they will be merged also on next iteration of the algorithm. + + + For example, the below circle shape comprised of 65 points, can be optimized to 8 points + by setting to 28.
+ +
+
+ +
+ + + Interface for shape optimizing algorithms. + + + The interface defines set of methods, which should be implemented + by shape optimizing algorithms. These algorithms take input shape, which is defined + by a set of points (corners of convex hull, etc.), and remove some insignificant points from it, + which has little influence on the final shape's look. + + The shape optimizing algorithms can be useful in conjunction with such algorithms + like convex hull searching, which usually may provide many hull points, where some + of them are insignificant and could be removed. + + For additional details about shape optimizing algorithms, documentation of + particular algorithm should be studied. + + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum allowed distance between points, which are + merged during optimization (see ). + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Maximum allowed distance between points, which are merged during optimization, [0, ∞). + + + The property sets maximum allowed distance between two points of + a shape, which are replaced by single point with mean coordinates. + + Default value is set to 10. + + + + + 3D pose estimation algorithm (coplanar case). + + + The class implements an algorithm for 3D object's pose estimation from it's + 2D coordinates obtained by perspective projection, when the object is described coplanar points. + The idea of the implemented math and algorithm is described in "Iterative Pose Estimation using + Coplanar Feature Points" paper written by Oberkampf, Daniel DeMenthon and Larry Davis + (the implementation of the algorithm is very close translation of the pseudo code given by the + paper, so should be easy to follow). + + At this point the implementation works only with models described by 4 points, which is + the minimum number of points enough for 3D pose estimation. + + The 4 model's point are supposed to be coplanar, i.e. supposed to reside all within + same planer. See for none coplanar case. + + Read 3D Pose Estimation article for + additional information and samples. + + Sample usage: + + // points of real object - model + Vector3[] copositObject = new Vector3[4] + { + new Vector3( -56.5f, 0, 56.5f ), + new Vector3( 56.5f, 0, 56.5f ), + new Vector3( 56.5f, 0, -56.5f ), + new Vector3( -56.5f, 0, -56.5f ), + }; + // focal length of camera used to capture the object + float focalLength = 640; // depends on your camera or projection system + // initialize CoPOSIT object + CoplanarPosit coposit = new CoplanarPosit( copositObject, focalLength ); + + // 2D points of te object - projection + AForge.Point[] projectedPoints = new AForge.Point[4] + { + new AForge.Point( -77, 48 ), + new AForge.Point( 44, 66 ), + new AForge.Point( 75, -36 ), + new AForge.Point( -61, -58 ), + }; + // estimate pose + Matrix3x3 rotationMatrix; + Vector3 translationVector; + coposit.EstimatePose( projectedPoints, + out rotationMatrix, out translationVector ); + + + + + + + + + Initializes a new instance of the class. + + + Array of vectors containing coordinates of four real model's point. + Effective focal length of the camera used to capture the model. + + The model must have 4 points. + + + + + Estimate pose of a model from it's projected 2D coordinates. + + + 4 2D points of the model's projection. + Gets best estimation of object's rotation. + Gets best estimation of object's translation. + + 4 points must be be given for pose estimation. + + Because of the Coplanar POSIT algorithm's nature, it provides two pose estimations, + which are valid from the algorithm's math point of view. For each pose an error is calculated, + which specifies how good estimation fits to the specified real 2D coordinated. The method + provides the best estimation through its output parameters and + . This may be enough for many of the pose estimation application. + For those, who require checking the alternate pose estimation, it can be obtained using + and properties. + The calculated error is provided for both estimations through and + properties. + + + + + + Best estimated pose recently found. + + + The property keeps best estimated pose found by the latest call to . + The same estimated pose is provided by that method also and can be accessed through this property + for convenience. + + See also and . + + + + + + Best estimated translation recently found. + + + The property keeps best estimated translation found by the latest call to . + The same estimated translation is provided by that method also and can be accessed through this property + for convenience. + + See also and . + + + + + + Error of the best pose estimation. + + + The property keeps error of the best pose estimation, which is calculated as average + error between real angles of the specified quadrilateral and angles of the quadrilateral which + is a projection of the best pose estimation. The error is measured degrees in (angle). + + + + + + Alternate estimated pose recently found. + + + The property keeps alternate estimated pose found by the latest call to . + + See also and . + + + + + + Alternated estimated translation recently found. + + + The property keeps alternate estimated translation found by the latest call to . + + See also and . + + + + + + Error of the alternate pose estimation. + + + The property keeps error of the alternate pose estimation, which is calculated as average + error between real angles of the specified quadrilateral and angles of the quadrilateral which + is a projection of the alternate pose estimation. The error is measured in degrees (angle). + + + + + + Coordinates of the model points which pose should be estimated. + + + + + Effective focal length of the camera used to capture the model. + + + + + Shape optimizer, which removes obtuse angles (close to flat) from a shape. + + + This shape optimizing algorithm checks all adjacent edges of a shape + and substitutes any 2 edges with a single edge if angle between them is greater than + . The algorithm makes sure there are not obtuse angles in + a shape, which are very close to flat line. + + The shape optimizer does not optimize shapes to less than 3 points, so optimized + shape always will have at least 3 points. + + + For example, the below circle shape comprised of 65 points, can be optimized to 10 points + by setting to 160.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum acceptable angle between two edges of a shape (see ). + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Maximum angle between adjacent edges to keep in a shape, [140, 180]. + + + The property sets maximum angle between adjacent edges, which is kept + during optimization. All edges, which have a greater angle between them, are substituted + by a single edge. + + Default value is set to 160. + + + + + Collection of some gemetry tool methods. + + + + + + Calculate angle between to vectors measured in [0, 180] degrees range. + + + Starting point of both vectors. + Ending point of the first vector. + Ending point of the second vector. + + Returns angle between specified vectors measured in degrees. + + + + + Calculate minimum angle between two lines measured in [0, 90] degrees range. + + + A point on the first line. + Another point on the first line. + A point on the second line. + Another point on the second line. + + Returns minimum angle between two lines. + + It is preferred to use if it is required to calculate angle + multiple times for one of the lines. + + and are the same, + -OR- and are the same. + + + + + Graham scan algorithm for finding convex hull. + + + The class implements + Graham scan algorithm for finding convex hull + of a given set of points. + + Sample usage: + + // generate some random points + Random rand = new Random( ); + List<IntPoint> points = new List<IntPoint>( ); + + for ( int i = 0; i < 10; i++ ) + { + points.Add( new IntPoint( + rand.Next( 200 ) - 100, + rand.Next( 200 ) - 100 ) ); + } + + // find the convex hull + IConvexHullAlgorithm hullFinder = new GrahamConvexHull( ); + List<IntPoint> hull = hullFinder.FindHull( points ); + + + + + + + Interface defining methods for algorithms, which search for convex hull of the specified points' set. + + + The interface defines a method, which should be implemented by different classes + performing convex hull search for specified set of points. + + All algorithms, implementing this interface, should follow two rules for the found convex hull: + + the first point in the returned list is the point with lowest X coordinate (and with lowest Y if + there are several points with the same X value); + points in the returned list are given in counter clockwise order + (Cartesian + coordinate system). + + + + + + + + Find convex hull for the given set of points. + + + Set of points to search convex hull for. + + Returns set of points, which form a convex hull for the given . + + + + + Find convex hull for the given set of points. + + + Set of points to search convex hull for. + + Returns set of points, which form a convex hull for the given . + The first point in the list is the point with lowest X coordinate (and with lowest Y if there are + several points with the same X value). Points are provided in counter clockwise order + (Cartesian + coordinate system). + + + + + The class encapsulates 2D line and provides some tool methods related to lines. + + + The class provides some methods which are related to lines: + angle between lines, distance to point, finding intersection point, etc. + + + Generally, the equation of the line is y = * x + + . However, when is an Infinity, + would normally be meaningless, and it would be + impossible to distinguish the line x = 5 from the line x = -5. Therefore, + if is or + , the line's equation is instead + x = . + + Sample usage: + + // create a line + Line line = Line.FromPoints( new Point( 0, 0 ), new Point( 3, 4 ) ); + // check if it is vertical or horizontal + if ( line.IsVertical || line.IsHorizontal ) + { + // ... + } + + // get intersection point with another line + Point intersection = line.GetIntersectionWith( + Line.FromPoints( new Point( 3, 0 ), new Point( 0, 4 ) ) ); + + + + + + + Creates a that goes through the two specified points. + + + One point on the line. + Another point on the line. + + Returns a representing the line between + and . + + Thrown if the two points are the same. + + + + + Creates a with the specified slope and intercept. + + + The slope of the line + The Y-intercept of the line, unless the slope is an + infinity, in which case the line's equation is "x = intercept" instead. + + Returns a representing the specified line. + + The construction here follows the same rules as for the rest of this class. + Most lines are expressed as y = slope * x + intercept. Vertical lines, however, are + x = intercept. This is indicated by being true or by + returning or + . + + + + + Constructs a from a radius and an angle (in degrees). + + + The minimum distance from the line to the origin. + The angle of the vector from the origin to the line. + + Returns a representing the specified line. + + is the minimum distance from the origin + to the line, and is the counterclockwise rotation from + the positive X axis to the vector through the origin and normal to the line. + This means that if is in [0,180), the point on the line + closest to the origin is on the positive X or Y axes, or in quadrants I or II. Likewise, + if is in [180,360), the point on the line closest to the + origin is on the negative X or Y axes, or in quadrants III or IV. + + Thrown if radius is negative. + + + + + Constructs a from a point and an angle (in degrees). + + + The minimum distance from the line to the origin. + The angle of the normal vector from the origin to the line. + + is the counterclockwise rotation from + the positive X axis to the vector through the origin and normal to the line. + This means that if is in [0,180), the point on the line + closest to the origin is on the positive X or Y axes, or in quadrants I or II. Likewise, + if is in [180,360), the point on the line closest to the + origin is on the negative X or Y axes, or in quadrants III or IV. + + Returns a representing the specified line. + + + + + Calculate minimum angle between this line and the specified line measured in [0, 90] degrees range. + + + The line to find angle between. + + Returns minimum angle between lines. + + + + + Finds intersection point with the specified line. + + + Line to find intersection with. + + Returns intersection point with the specified line, or + if the lines are parallel and distinct. + + Thrown if the specified line is the same line as this line. + + + + + Finds, provided it exists, the intersection point with the specified . + + + to find intersection with. + + Returns intersection point with the specified , or , + if this line does not intersect with the segment. + + If the line and segment do not intersect, the method returns . + If the line and segment share multiple points, the method throws an . + + + Thrown if is a portion + of this line. + + + + + Calculate Euclidean distance between a point and a line. + + + The point to calculate distance to. + + Returns the Euclidean distance between this line and the specified point. Unlike + , this returns the distance from the infinite line. (0,0) is 0 units + from the line defined by (0,5) and (0,8), but is 5 units from the segment with those endpoints. + + + + + Equality operator - checks if two lines have equal parameters. + + + First line to check. + Second line to check. + + Returns if parameters of specified + lines are equal. + + + + + Inequality operator - checks if two lines have different parameters. + + + First line to check. + Second line to check. + + Returns if parameters of specified + lines are not equal. + + + + + Check if this instance of equals to the specified one. + + + Another line to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains values of the like in readable form. + + + + + Checks if the line vertical or not. + + + + + + Checks if the line horizontal or not. + + + + + Gets the slope of the line. + + + + + If not , gets the Line's Y-intercept. + If gets the line's X-intercept. + + + + + The class encapsulates 2D line segment and provides some tool methods related to lines. + + + The class provides some methods which are related to line segments: + distance to point, finding intersection point, etc. + + + A line segment may be converted to a . + + Sample usage: + + // create a segment + LineSegment segment = new LineSegment( new Point( 0, 0 ), new Point( 3, 4 ) ); + // get segment's length + float length = segment.Length; + + // get intersection point with a line + Point? intersection = segment.GetIntersectionWith( + new Line( new Point( -3, 8 ), new Point( 0, 4 ) ) ); + + + + + + + Initializes a new instance of the class. + + + Segment's start point. + Segment's end point. + + Thrown if the two points are the same. + + + + + Converts this to a by discarding + its endpoints and extending it infinitely in both directions. + + + The segment to convert to a . + + Returns a that contains this . + + + + + Calculate Euclidean distance between a point and a finite line segment. + + + The point to calculate the distance to. + + Returns the Euclidean distance between this line segment and the specified point. Unlike + , this returns the distance from the finite segment. (0,0) is 5 units + from the segment (0,5)-(0,8), but is 0 units from the line through those points. + + + + + Finds, provided it exists, the intersection point with the specified . + + + to find intersection with. + + Returns intersection point with the specified , or , if + the two segments do not intersect. + + If the two segments do not intersect, the method returns . If the two + segments share multiple points, this throws an . + + + Thrown if the segments overlap - if they have + multiple points in common. + + + + + Finds, provided it exists, the intersection point with the specified . + + + to find intersection with. + + Returns intersection point with the specified , or , if + the line does not intersect with this segment. + + If the line and the segment do not intersect, the method returns . If the line + and the segment share multiple points, the method throws an . + + + Thrown if this segment is a portion of + line. + + + + + Equality operator - checks if two line segments have equal parameters. + + + First line segment to check. + Second line segment to check. + + Returns if parameters of specified + line segments are equal. + + + + + Inequality operator - checks if two lines have different parameters. + + + First line segment to check. + Second line segment to check. + + Returns if parameters of specified + line segments are not equal. + + + + + Check if this instance of equals to the specified one. + + + Another line segment to check equalty to. + + Return if objects are equal. + + + + + Get hash code for this instance. + + + Returns the hash code for this instance. + + + + + Get string representation of the class. + + + Returns string, which contains values of the like in readable form. + + + + + Start point of the line segment. + + + + + End point of the line segment. + + + + + Get segment's length - Euclidean distance between its and points. + + + + + Shape optimizer, which removes points within close range to shapes' body. + + + This shape optimizing algorithm checks all points of the shape and + removes those of them, which are in a certain distance to a line connecting previous and + the next points. In other words, it goes through all adjacent edges of a shape and checks + what is the distance between the corner formed by these two edges and a possible edge, which + could be used as substitution of these edges. If the distance is equal or smaller than + the specified value, then the point is removed, + so the two edges are substituted by a single one. When optimization process is done, + the new shape has reduced amount of points and none of the removed points are further away + from the new shape than the specified limit. + + The shape optimizer does not optimize shapes to less than 3 points, so optimized + shape always will have at least 3 points. + + + For example, the below circle shape comprised of 65 points, can be optimized to 8 points + by setting to 10.
+ +
+
+ +
+ + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Maximum allowed distance between removed points + and optimized shape (see ). + + + + + Optimize specified shape. + + + Shape to be optimized. + + Returns final optimized shape, which may have reduced amount of points. + + + + + Maximum allowed distance between removed points and optimized shape, [0, ∞). + + + The property sets maximum allowed distance between points removed from original + shape and optimized shape - none of the removed points are further away + from the new shape than the specified limit. + + + Default value is set to 5. + + + + + Set of tools for processing collection of points in 2D space. + + + The static class contains set of routines, which provide different + operations with collection of points in 2D space. For example, finding the + furthest point from a specified point or line. + + Sample usage: + + // create points' list + List<IntPoint> points = new List<IntPoint>( ); + points.Add( new IntPoint( 10, 10 ) ); + points.Add( new IntPoint( 20, 15 ) ); + points.Add( new IntPoint( 15, 30 ) ); + points.Add( new IntPoint( 40, 12 ) ); + points.Add( new IntPoint( 30, 20 ) ); + // get furthest point from the specified point + IntPoint p1 = PointsCloud.GetFurthestPoint( points, new IntPoint( 15, 15 ) ); + Console.WriteLine( p1.X + ", " + p1.Y ); + // get furthest point from line + IntPoint p2 = PointsCloud.GetFurthestPointFromLine( points, + new IntPoint( 50, 0 ), new IntPoint( 0, 50 ) ); + Console.WriteLine( p2.X + ", " + p2.Y ); + + + + + + + Shift cloud by adding specified value to all points in the collection. + + + Collection of points to shift their coordinates. + Point to shift by. + + + + + Get bounding rectangle of the specified list of points. + + + Collection of points to get bounding rectangle for. + Point comprised of smallest X and Y coordinates. + Point comprised of biggest X and Y coordinates. + + + + + Get center of gravity for the specified list of points. + + + List of points to calculate center of gravity for. + + Returns center of gravity (mean X-Y values) for the specified list of points. + + + + + Find furthest point from the specified point. + + + Collection of points to search furthest point in. + The point to search furthest point from. + + Returns a point, which is the furthest away from the . + + + + + Find two furthest points from the specified line. + + + Collection of points to search furthest points in. + First point forming the line. + Second point forming the line. + First found furthest point. + Second found furthest point (which is on the + opposite side from the line compared to the ); + + The method finds two furthest points from the specified line, + where one point is on one side from the line and the second point is on + another side from the line. + + + + + Find two furthest points from the specified line. + + + Collection of points to search furthest points in. + First point forming the line. + Second point forming the line. + First found furthest point. + Distance between the first found point and the given line. + Second found furthest point (which is on the + opposite side from the line compared to the ); + Distance between the second found point and the given line. + + The method finds two furthest points from the specified line, + where one point is on one side from the line and the second point is on + another side from the line. + + + + + Find the furthest point from the specified line. + + + Collection of points to search furthest point in. + First point forming the line. + Second point forming the line. + + Returns a point, which is the furthest away from the + specified line. + + The method finds the furthest point from the specified line. + Unlike the + method, this method find only one point, which is the furthest away from the line + regardless of side from the line. + + + + + Find the furthest point from the specified line. + + + Collection of points to search furthest points in. + First point forming the line. + Second point forming the line. + Distance between the furthest found point and the given line. + + Returns a point, which is the furthest away from the + specified line. + + The method finds the furthest point from the specified line. + Unlike the + method, this method find only one point, which is the furthest away from the line + regardless of side from the line. + + + + + Find corners of quadrilateral or triangular area, which contains the specified collection of points. + + + Collection of points to search quadrilateral for. + + Returns a list of 3 or 4 points, which are corners of the quadrilateral or + triangular area filled by specified collection of point. The first point in the list + is the point with lowest X coordinate (and with lowest Y if there are several points + with the same X value). The corners are provided in counter clockwise order + (Cartesian + coordinate system). + + The method makes an assumption that the specified collection of points + form some sort of quadrilateral/triangular area. With this assumption it tries to find corners + of the area. + + The method does not search for bounding quadrilateral/triangular area, + where all specified points are inside of the found quadrilateral/triangle. Some of the + specified points potentially may be outside of the found quadrilateral/triangle, since the + method takes corners only from the specified collection of points, but does not calculate such + to form true bounding quadrilateral/triangle. + + See property for additional information. + + + + + + Relative distortion limit allowed for quadrilaterals, [0.0, 0.25]. + + + The value of this property is used to calculate distortion limit used by + , when processing potential corners and making decision + if the provided points form a quadrilateral or a triangle. The distortion limit is + calculated as: + + distrtionLimit = RelativeDistortionLimit * ( W * H ) / 2, + + where W and H are width and height of the "points cloud" passed to the + . + + + To explain the idea behind distortion limit, let’s suppose that quadrilateral finder routine found + the next candidates for corners:
+
+ As we can see on the above picture, the shape there potentially can be a triangle, but not quadrilateral + (suppose that points list comes from a hand drawn picture or acquired from camera, so some + inaccuracy may exist). It may happen that the D point is just a distortion (noise, etc). + So the check what is the distance between a potential corner + (D in this case) and a line connecting two adjacent points (AB in this case). If the distance is smaller + then the distortion limit, then the point may be rejected, so the shape turns into triangle. +
+ + An exception is the case when both C and D points are very close to the AB line, + so both their distances are less than distortion limit. In this case both points will be accepted as corners - + the shape is just a flat quadrilateral. + + Default value is set to 0.1. +
+ +
+ + + 3D pose estimation algorithm. + + + The class implements an algorithm for 3D object's pose estimation from it's + 2D coordinates obtained by perspective projection, when the object is described none coplanar points. + The idea of the implemented math and algorithm is described in "Model-Based Object Pose in 25 + Lines of Code" paper written by Daniel F. DeMenthon and Larry S. Davis (the implementation of + the algorithm is almost 1 to 1 translation of the pseudo code given by the paper, so should + be easy to follow). + + At this point the implementation works only with models described by 4 points, which is + the minimum number of points enough for 3D pose estimation. + + The 4 model's point must not be coplanar, i.e. must not reside all within + same planer. See for coplanar case. + + Read 3D Pose Estimation article for + additional information and samples. + + Sample usage: + + // points of real object - model + Vector3[] positObject = new Vector3[4] + { + new Vector3( 28, 28, -28 ), + new Vector3( -28, 28, -28 ), + new Vector3( 28, -28, -28 ), + new Vector3( 28, 28, 28 ), + }; + // focal length of camera used to capture the object + float focalLength = 640; // depends on your camera or projection system + // initialize POSIT object + Posit posit = new Posit( positObject, focalLength ); + + // 2D points of te object - projection + AForge.Point[] projectedPoints = new AForge.Point[4] + { + new AForge.Point( -4, 29 ), + new AForge.Point( -180, 86 ), + new AForge.Point( -5, -102 ), + new AForge.Point( 76, 137 ), + }; + // estimate pose + Matrix3x3 rotationMatrix; + Vector3 translationVector; + posit.EstimatePose( projectedPoints, + out rotationMatrix, out translationVector ); + + + + + + + + + Initializes a new instance of the class. + + + Array of vectors containing coordinates of four real model's point (points + must not be on the same plane). + Effective focal length of the camera used to capture the model. + + The model must have 4 points. + + + + + Estimate pose of a model from it's projected 2D coordinates. + + + 4 2D points of the model's projection. + Gets object's rotation. + Gets object's translation. + + 4 points must be be given for pose estimation. + + + + + Coordinates of the model points which pose should be estimated. + + + + + Effective focal length of the camera used to capture the model. + + + + + Enumeration of some basic shape types. + + + + + Unknown shape type. + + + + + Circle shape. + + + + + Triangle shape. + + + + + Quadrilateral shape. + + + + + Some common sub types of some basic shapes. + + + + + Unrecognized sub type of a shape (generic shape which does not have + any specific sub type). + + + + + Quadrilateral with one pair of parallel sides. + + + + + Quadrilateral with two pairs of parallel sides. + + + + + Parallelogram with perpendicular adjacent sides. + + + + + Parallelogram with all sides equal. + + + + + Rectangle with all sides equal. + + + + + Triangle with all sides/angles equal. + + + + + Triangle with two sides/angles equal. + + + + + Triangle with a 90 degrees angle. + + + + + Triangle with a 90 degrees angle and other two angles are equal. + + + + + A class for checking simple geometrical shapes. + + + The class performs checking/detection of some simple geometrical + shapes for provided set of points (shape's edge points). During the check + the class goes through the list of all provided points and checks how accurately + they fit into assumed shape. + + All the shape checks allow some deviation of + points from the shape with assumed parameters. In other words it is allowed + that specified set of points may form a little bit distorted shape, which may be + still recognized. The allowed amount of distortion is controlled by two + properties ( and ), + which allow higher distortion level for bigger shapes and smaller amount of + distortion for smaller shapes. Checking specified set of points, the class + calculates mean distance between specified set of points and edge of the assumed + shape. If the mean distance is equal to or less than maximum allowed distance, + then a shape is recognized. The maximum allowed distance is calculated as: + + maxDistance = max( minAcceptableDistortion, relativeDistortionLimit * ( width + height ) / 2 ) + + , where width and height is the size of bounding rectangle for the + specified points. + + + See also and properties, + which set acceptable errors for polygon sub type checking done by + method. + + See the next article for details about the implemented algorithms: + Detecting some simple shapes in images. + + + Sample usage: + + private List<IntPoint> idealCicle = new List<IntPoint>( ); + private List<IntPoint> distorredCircle = new List<IntPoint>( ); + System.Random rand = new System.Random( ); + + // generate sample circles + float radius = 100; + + for ( int i = 0; i < 360; i += 10 ) + { + float angle = (float) ( (float) i / 180 * System.Math.PI ); + + // add point to ideal circle + idealCicle.Add( new IntPoint( + (int) ( radius * System.Math.Cos( angle ) ), + (int) ( radius * System.Math.Sin( angle ) ) ) ); + + // add a bit distortion for distorred cirlce + float distorredRadius = radius + rand.Next( 7 ) - 3; + + distorredCircle.Add( new IntPoint( + (int) ( distorredRadius * System.Math.Cos( angle ) ), + (int) ( distorredRadius * System.Math.Sin( angle ) ) ) ); + } + + // check shape + SimpleShapeChecker shapeChecker = new SimpleShapeChecker( ); + + if ( shapeChecker.IsCircle( idealCicle ) ) + { + // ... + } + + if ( shapeChecker.CheckShapeType( distorredCircle ) == ShapeType.Circle ) + { + // ... + } + + + + + + + Check type of the shape formed by specified points. + + + Shape's points to check. + + Returns type of the detected shape. + + + + + Check if the specified set of points form a circle shape. + + + Shape's points to check. + + Returns if the specified set of points form a + circle shape or otherwise. + + Circle shape must contain at least 8 points to be recognized. + The method returns always, of number of points in the specified + shape is less than 8. + + + + + Check if the specified set of points form a circle shape. + + + Shape's points to check. + Receives circle's center on successful return. + Receives circle's radius on successful return. + + Returns if the specified set of points form a + circle shape or otherwise. + + Circle shape must contain at least 8 points to be recognized. + The method returns always, of number of points in the specified + shape is less than 8. + + + + + Check if the specified set of points form a quadrilateral shape. + + + Shape's points to check. + + Returns if the specified set of points form a + quadrilateral shape or otherwise. + + + + + Check if the specified set of points form a quadrilateral shape. + + + Shape's points to check. + List of quadrilateral corners on successful return. + + Returns if the specified set of points form a + quadrilateral shape or otherwise. + + + + + Check if the specified set of points form a triangle shape. + + + Shape's points to check. + + Returns if the specified set of points form a + triangle shape or otherwise. + + + + + Check if the specified set of points form a triangle shape. + + + Shape's points to check. + List of triangle corners on successful return. + + Returns if the specified set of points form a + triangle shape or otherwise. + + + + + Check if the specified set of points form a convex polygon shape. + + + Shape's points to check. + List of polygon corners on successful return. + + Returns if the specified set of points form a + convex polygon shape or otherwise. + + The method is able to detect only triangles and quadrilaterals + for now. Check number of detected corners to resolve type of the detected polygon. + + + + + + Check sub type of a convex polygon. + + + Corners of the convex polygon to check. + + Return detected sub type of the specified shape. + + The method check corners of a convex polygon detecting + its subtype. Polygon's corners are usually retrieved using + method, but can be any list of 3-4 points (only sub types of triangles and + quadrilateral are checked). + + See and properties, + which set acceptable errors for polygon sub type checking. + + + + + + Check if a shape specified by the set of points fits a convex polygon + specified by the set of corners. + + + Shape's points to check. + Corners of convex polygon to check fitting into. + + Returns if the specified shape fits + the specified convex polygon or otherwise. + + The method checks if the set of specified points form the same shape + as the set of provided corners. + + + + + Minimum value of allowed shapes' distortion. + + + The property sets minimum value for allowed shapes' + distortion (in pixels). See documentation to + class for more details about this property. + + Default value is set to 0.5. + + + + + + Maximum value of allowed shapes' distortion, [0, 1]. + + + The property sets maximum value for allowed shapes' + distortion. The value is measured in [0, 1] range, which corresponds + to [0%, 100%] range, which means that maximum allowed shapes' + distortion is calculated relatively to shape's size. This results to + higher allowed distortion level for bigger shapes and smaller allowed + distortion for smaller shapers. See documentation to + class for more details about this property. + + Default value is set to 0.03 (3%). + + + + + + Maximum allowed angle error in degrees, [0, 20]. + + + The value sets maximum allowed difference between two angles to + treat them as equal. It is used by method to + check for parallel lines and angles of triangles and quadrilaterals. + For example, if angle between two lines equals 5 degrees and this properties value + is set to 7, then two compared lines are treated as parallel. + + Default value is set to 7. + + + + + + Maximum allowed difference in sides' length (relative to shapes' size), [0, 1]. + + + The values sets maximum allowed difference between two sides' length + to treat them as equal. The error value is set relative to shapes size and measured + in [0, 1] range, which corresponds to [0%, 100%] range. Absolute length error in pixels + is calculated as: + + LengthError * ( width + height ) / 2 + + , where width and height is the size of bounding rectangle for the + specified shape. + + + Default value is set to 0.1 (10%). + + + + + + Histogram for discrete random values. + + + The class wraps histogram for discrete stochastic function, which is represented + by integer array, where indexes of the array are treated as values of the stochastic function, + but array values are treated as "probabilities" (total amount of hits). + + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get mean and standard deviation values + Console.WriteLine( "mean = " + histogram.Mean + ", std.dev = " + histogram.StdDev ); + + + + + + + Initializes a new instance of the class. + + + Values of the histogram. + + Indexes of the input array are treated as values of stochastic function, + but array values are treated as "probabilities" (total amount of hits). + + + + + + Get range around median containing specified percentage of values. + + + Values percentage around median. + + Returns the range which containes specifies percentage of values. + + The method calculates range of stochastic variable, which summary probability + comprises the specified percentage of histogram's hits. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get 50% range + IntRange range = histogram.GetRange( 0.5 ); + // show the range ([4, 6]) + Console.WriteLine( "50% range = [" + range.Min + ", " + range.Max + "]" ); + + + + + + + Update statistical value of the histogram. + + + The method recalculates statistical values of the histogram, like mean, + standard deviation, etc., in the case if histogram's values were changed directly. + The method should be called only in the case if histogram's values were retrieved + through property and updated after that. + + + + + + Values of the histogram. + + + Indexes of this array are treated as values of stochastic function, + but array values are treated as "probabilities" (total amount of hits). + + + + + + Mean value. + + + The property allows to retrieve mean value of the histogram. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get mean value (= 4.862) + Console.WriteLine( "mean = " + histogram.Mean.ToString( "F3" ) ); + + + + + + + Standard deviation. + + + The property allows to retrieve standard deviation value of the histogram. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get std.dev. value (= 1.136) + Console.WriteLine( "std.dev. = " + histogram.StdDev.ToString( "F3" ) ); + + + + + + + Median value. + + + The property allows to retrieve median value of the histogram. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get median value (= 5) + Console.WriteLine( "median = " + histogram.Median ); + + + + + + + Minimum value. + + + The property allows to retrieve minimum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get min value (= 2) + Console.WriteLine( "min = " + histogram.Min ); + + + + + + + Maximum value. + + + The property allows to retrieve maximum value of the histogram with non zero + hits count. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get max value (= 6) + Console.WriteLine( "max = " + histogram.Max ); + + + + + + + Total count of values. + + + The property represents total count of values contributed to the histogram, which is + essentially sum of the array. + + Sample usage: + + // create histogram + Histogram histogram = new Histogram( new int[10] { 0, 0, 1, 3, 6, 8, 11, 0, 0, 0 } ); + // get total value (= 29) + Console.WriteLine( "total = " + histogram.TotalCount ); + + + + + + + A structure representing 3x3 matrix. + + + The structure incapsulates elements of a 3x3 matrix and + provides some operations with it. + + + + + Row 0 column 0 element of the matrix. + + + + + Row 0 column 1 element of the matrix. + + + + + Row 0 column 2 element of the matrix. + + + + + Row 1 column 0 element of the matrix. + + + + + Row 1 column 1 element of the matrix. + + + + + Row 1 column 2 element of the matrix. + + + + + Row 2 column 0 element of the matrix. + + + + + Row 2 column 1 element of the matrix. + + + + + Row 2 column 2 element of the matrix. + + + + + Returns array representation of the matrix. + + + Returns array which contains all elements of the matrix in the row-major order. + + + + + Creates rotation matrix around Y axis. + + + Rotation angle around Y axis in radians. + + Returns rotation matrix to rotate an object around Y axis. + + + + + Creates rotation matrix around X axis. + + + Rotation angle around X axis in radians. + + Returns rotation matrix to rotate an object around X axis. + + + + + Creates rotation matrix around Z axis. + + + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around Z axis. + + + + + Creates rotation matrix to rotate an object around X, Y and Z axes. + + + Rotation angle around Y axis in radians. + Rotation angle around X axis in radians. + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around all 3 axes. + + + The routine assumes roll-pitch-yaw rotation order, when creating rotation + matrix, i.e. an object is first rotated around Z axis, then around X axis and finally around + Y axis. + + + + + + Extract rotation angles from the rotation matrix. + + + Extracted rotation angle around Y axis in radians. + Extracted rotation angle around X axis in radians. + Extracted rotation angle around Z axis in radians. + + The routine assumes roll-pitch-yaw rotation order when extracting rotation angle. + Using extracted angles with the should provide same rotation matrix. + + + The method assumes the provided matrix represent valid rotation matrix. + + Sample usage: + + // assume we have a rotation matrix created like this + float yaw = 10.0f / 180 * Math.PI; + float pitch = 30.0f / 180 * Math.PI; + float roll = 45.0f / 180 * Math.PI; + + Matrix3x3 rotationMatrix = Matrix3x3.CreateFromYawPitchRoll( yaw, pitch, roll ); + // ... + + // now somewhere in the code you may want to get rotation + // angles back from a matrix assuming same rotation order + float extractedYaw; + float extractedPitch; + float extractedRoll; + + rotation.ExtractYawPitchRoll( out extractedYaw, out extractedPitch, out extractedRoll ); + + + + + + + Creates a matrix from 3 rows specified as vectors. + + + First row of the matrix to create. + Second row of the matrix to create. + Third row of the matrix to create. + + Returns a matrix from specified rows. + + + + + Creates a matrix from 3 columns specified as vectors. + + + First column of the matrix to create. + Second column of the matrix to create. + Third column of the matrix to create. + + Returns a matrix from specified columns. + + + + + Creates a diagonal matrix using the specified vector as diagonal elements. + + + Vector to use for diagonal elements of the matrix. + + Returns a diagonal matrix. + + + + + Get row of the matrix. + + + Row index to get, [0, 2]. + + Returns specified row of the matrix as a vector. + + Invalid row index was specified. + + + + + Get column of the matrix. + + + Column index to get, [0, 2]. + + Returns specified column of the matrix as a vector. + + Invalid column index was specified. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Multiplies matrix by the specified factor. + + + Matrix to multiply. + Factor to multiple the specified matrix by. + + Returns new matrix with all components equal to corresponding components of the + specified matrix multiples by the specified factor. + + + + + Multiplies matrix by the specified factor. + + + Matrix to multiply. + Factor to multiple the specified matrix by. + + Returns new matrix with all components equal to corresponding components of the + specified matrix multiples by the specified factor. + + + + + Adds specified value to all components of the specified matrix. + + + Matrix to add value to. + Value to add to all components of the specified matrix. + + Returns new matrix with all components equal to corresponding components of the + specified matrix increased by the specified value. + + + + + Adds specified value to all components of the specified matrix. + + + Matrix to add value to. + Value to add to all components of the specified matrix. + + Returns new matrix with all components equal to corresponding components of the + specified matrix increased by the specified value. + + + + + Tests whether two specified matrices are equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether two specified matrices are not equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are not equal or otherwise. + + + + + Tests whether the matrix equals to the specified one. + + + The matrix to test equality with. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether the matrix equals to the specified object. + + + The object to test equality with. + + Returns if the matrix equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Transpose the matrix, AT. + + + Return a matrix which equals to transposition of this matrix. + + + + + Multiply the matrix by its transposition, A*AT. + + + Returns a matrix which is the result of multiplying this matrix by its transposition. + + + + + Multiply transposition of this matrix by itself, AT*A. + + + Returns a matrix which is the result of multiplying this matrix's transposition by itself. + + + + + Calculate adjugate of the matrix, adj(A). + + + Returns adjugate of the matrix. + + + + + Calculate inverse of the matrix, A-1. + + + Returns inverse of the matrix. + + Cannot calculate inverse of the matrix since it is singular. + + + + + Calculate pseudo inverse of the matrix, A+. + + + Returns pseudo inverse of the matrix. + + The pseudo inverse of the matrix is calculate through its + as V*E+*UT. + + + + + Calculate Singular Value Decomposition (SVD) of the matrix, such as A=U*E*VT. + + + Output parameter which gets 3x3 U matrix. + Output parameter which gets diagonal elements of the E matrix. + Output parameter which gets 3x3 V matrix. + + Having components U, E and V the source matrix can be reproduced using below code: + + Matrix3x3 source = u * Matrix3x3.Diagonal( e ) * v.Transpose( ); + + + + + + + Provides an identity matrix with all diagonal elements set to 1. + + + + + Calculates determinant of the matrix. + + + + + A structure representing 4x4 matrix. + + + The structure incapsulates elements of a 4x4 matrix and + provides some operations with it. + + + + + Row 0 column 0 element of the matrix. + + + + + + Row 0 column 1 element of the matrix. + + + + + Row 0 column 2 element of the matrix. + + + + + Row 0 column 3 element of the matrix. + + + + + + Row 1 column 0 element of the matrix. + + + + + + Row 1 column 1 element of the matrix. + + + + + + Row 1 column 2 element of the matrix. + + + + + + Row 1 column 3 element of the matrix. + + + + + + Row 2 column 0 element of the matrix. + + + + + + Row 2 column 1 element of the matrix. + + + + + + Row 2 column 2 element of the matrix. + + + + + Row 2 column 3 element of the matrix. + + + + + Row 3 column 0 element of the matrix. + + + + + + Row 3 column 1 element of the matrix. + + + + + + Row 3 column 2 element of the matrix. + + + + + + Row 3 column 3 element of the matrix. + + + + + + Returns array representation of the matrix. + + + Returns array which contains all elements of the matrix in the row-major order. + + + + + Creates rotation matrix around Y axis. + + + Rotation angle around Y axis in radians. + + Returns rotation matrix to rotate an object around Y axis. + + + + + Creates rotation matrix around X axis. + + + Rotation angle around X axis in radians. + + Returns rotation matrix to rotate an object around X axis. + + + + + Creates rotation matrix around Z axis. + + + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around Z axis. + + + + + Creates rotation matrix to rotate an object around X, Y and Z axes. + + + Rotation angle around Y axis in radians. + Rotation angle around X axis in radians. + Rotation angle around Z axis in radians. + + Returns rotation matrix to rotate an object around all 3 axes. + + + The routine assumes roll-pitch-yaw rotation order, when creating rotation + matrix, i.e. an object is first rotated around Z axis, then around X axis and finally around + Y axis. + + + + + + Extract rotation angles from the rotation matrix. + + + Extracted rotation angle around Y axis in radians. + Extracted rotation angle around X axis in radians. + Extracted rotation angle around Z axis in radians. + + The routine assumes roll-pitch-yaw rotation order when extracting rotation angle. + Using extracted angles with the should provide same rotation matrix. + + + The method assumes the provided matrix represent valid rotation matrix. + + Sample usage: + + // assume we have a rotation matrix created like this + float yaw = 10.0f / 180 * Math.PI; + float pitch = 30.0f / 180 * Math.PI; + float roll = 45.0f / 180 * Math.PI; + + Matrix4x4 rotationMatrix = Matrix3x3.CreateFromYawPitchRoll( yaw, pitch, roll ); + // ... + + // now somewhere in the code you may want to get rotation + // angles back from a matrix assuming same rotation order + float extractedYaw; + float extractedPitch; + float extractedRoll; + + rotation.ExtractYawPitchRoll( out extractedYaw, out extractedPitch, out extractedRoll ); + + + + + + + Creates 4x4 tranformation matrix from 3x3 rotation matrix. + + + Source 3x3 rotation matrix. + + Returns 4x4 rotation matrix. + + The source 3x3 rotation matrix is copied into the top left corner of the result 4x4 matrix, + i.e. it represents 0th, 1st and 2nd row/column. The element is set to 1 and the rest + elements of 3rd row and 3rd column are set to zeros. + + + + + Creates translation matrix for the specified movement amount. + + + Vector which set direction and amount of movement. + + Returns translation matrix. + + The specified vector is copied to the 3rd column of the result matrix. + All diagonal elements are set to 1. The rest of matrix is initialized with zeros. + + + + + Creates a view matrix for the specified camera position and target point. + + + Position of camera. + Target point towards which camera is pointing. + + Returns a view matrix. + + Camera's "up" vector is supposed to be (0, 1, 0). + + + + + Creates a perspective projection matrix. + + + Width of the view volume at the near view plane. + Height of the view volume at the near view plane. + Distance to the near view plane. + Distance to the far view plane. + + Return a perspective projection matrix. + + Both near and far view planes' distances must be greater than zero. + Near plane must be closer than the far plane. + + + + + Creates a matrix from 4 rows specified as vectors. + + + First row of the matrix to create. + Second row of the matrix to create. + Third row of the matrix to create. + Fourth row of the matrix to create. + + Returns a matrix from specified rows. + + + + + Creates a matrix from 4 columns specified as vectors. + + + First column of the matrix to create. + Second column of the matrix to create. + Third column of the matrix to create. + Fourth column of the matrix to create. + + Returns a matrix from specified columns. + + + + + Creates a diagonal matrix using the specified vector as diagonal elements. + + + Vector to use for diagonal elements of the matrix. + + Returns a diagonal matrix. + + + + + Get row of the matrix. + + + Row index to get, [0, 3]. + + Returns specified row of the matrix as a vector. + + Invalid row index was specified. + + + + + Get column of the matrix. + + + Column index to get, [0, 3]. + + Returns specified column of the matrix as a vector. + + Invalid column index was specified. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Multiplies two specified matrices. + + + Matrix to multiply. + Matrix to multiply by. + + Return new matrix, which the result of multiplication of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Adds corresponding components of two matrices. + + + The matrix to add to. + The matrix to add to the first matrix. + + Returns a matrix which components are equal to sum of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Subtracts corresponding components of two matrices. + + + The matrix to subtract from. + The matrix to subtract from the first matrix. + + Returns a matrix which components are equal to difference of corresponding + components of the two specified matrices. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Multiplies specified matrix by the specified vector. + + + Matrix to multiply by vector. + Vector to multiply matrix by. + + Returns new vector which is the result of multiplication of the specified matrix + by the specified vector. + + + + + Tests whether two specified matrices are equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether two specified matrices are not equal. + + + The left-hand matrix. + The right-hand matrix. + + Returns if the two matrices are not equal or otherwise. + + + + + Tests whether the matrix equals to the specified one. + + + The matrix to test equality with. + + Returns if the two matrices are equal or otherwise. + + + + + Tests whether the matrix equals to the specified object. + + + The object to test equality with. + + Returns if the matrix equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Provides an identity matrix with all diagonal elements set to 1. + + + + + + Cosine distance metric. + + + This class represents the cosine distance metric (1 - cosine similarity) + . + + + Sample usage: + + // instantiate new distance class + CosineDistance dist = new CosineDistance(); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Interface for distance metric algorithms. + + + The interface defines a set of methods implemented + by distance metric algorithms. These algorithms typically take a set of points and return a + distance measure of the x and y coordinates. In this case, the points are represented by two vectors. + + Distance metric algorithms are used in many machine learning algorithms e.g K-nearest neighbor + and K-means clustering. + + For additional details about distance metrics, documentation of the + particular algorithms should be studied. + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns distance measurement determined by the given algorithm. + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Cosine distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Cosine similarity metric. + + + This class represents the + Cosine Similarity metric. + + Sample usage: + + // instantiate new similarity class + CosineSimilarity sim = new CosineSimilarity( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get similarity between the two vectors + double similarityScore = sim.GetSimilarityScore( p, q ); + + + + + + + Interface for similarity algorithms. + + + The interface defines a set of methods implemented + by similarity and correlation algorithms. These algorithms typically take a set of points and return a + similarity score for the two vectors. + + Similarity and correlation algorithms are used in many machine learning and collaborative + filtering algorithms. + + For additional details about similarity metrics, documentation of the + particular algorithms should be studied. + + + + + + Returns similarity score for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns similarity score determined by the given algorithm. + + + + + Returns similarity score for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Cosine similarity between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Euclidean distance metric. + + + This class represents the + Euclidean distance metric. + + Sample usage: + + // instantiate new distance class + EuclideanDistance dist = new EuclideanDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Euclidean distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Euclidean similarity metric. + + + This class represents the + Euclidean Similarity metric, + which is calculated as 1.0 / ( 1.0 + EuclideanDistance ). + + Sample usage: + + // instantiate new similarity class + EuclideanSimilarity sim = new EuclideanSimilarity( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get simirarity between the two vectors + double similarityScore = sim.GetSimilarityScore( p, q ); + + + + + + + Returns similarity score for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Euclidean similarity between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Hamming distance metric. + + + This class represents the + Hamming distance metric. + + Sample usage: + + // instantiate new distance class + HammingDistance dist = new HammingDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Hamming distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Jaccard distance metric. + + + This class represents the + Jaccard distance metric. + + Sample usage: + + // instantiate new distance class + JaccardDistance dist = new JaccardDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Jaccard distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Manhattan distance metric. + + + This class represents the + Manhattan distance metric + (aka City Block and Taxi Cab distance). + + Sample usage: + + // instantiate new distance class + ManhattanDistance dist = new ManhattanDistance( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get distance between the two vectors + double distance = dist.GetDistance( p, q ); + + + + + + + Returns distance between two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Manhattan distance between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Pearson correlation metric. + + + This class represents the + Pearson correlation metric. + + Sample usage: + + // instantiate new pearson correlation class + PearsonCorrelation cor = new PearsonCorrelation( ); + // create two vectors for inputs + double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 }; + double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 }; + // get correlation between the two vectors + double correlation = cor.GetSimilarityScore( p, q ); + + + + + + + Returns the pearson correlation for two N-dimensional double vectors. + + + 1st point vector. + 2nd point vector. + + Returns Pearson correlation between two supplied vectors. + + Thrown if the two vectors are of different dimensions (if specified + array have different length). + + + + + Perlin noise function. + + + The class implements 1-D and 2-D Perlin noise functions, which represent + sum of several smooth noise functions with different frequency and amplitude. The description + of Perlin noise function and its calculation may be found on + Hugo Elias's page. + + + The number of noise functions, which comprise the resulting Perlin noise function, is + set by property. Amplitude and frequency values for each octave + start from values, which are set by and + properties. + + Sample usage (clouds effect): + + // create Perlin noise function + PerlinNoise noise = new PerlinNoise( 8, 0.5, 1.0 / 32 ); + // generate clouds effect + float[,] texture = new float[height, width]; + + for ( int y = 0; y < height; y++ ) + { + for ( int x = 0; x < width; x++ ) + { + texture[y, x] = + Math.Max( 0.0f, Math.Min( 1.0f, + (float) noise.Function2D( x, y ) * 0.5f + 0.5f + ) ); + } + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Number of octaves (see property). + Persistence value (see property). + + + + + Initializes a new instance of the class. + + + Number of octaves (see property). + Persistence value (see property). + Initial frequency (see property). + Initial amplitude (see property). + + + + + 1-D Perlin noise function. + + + x value. + + Returns function's value at point . + + + + + 2-D Perlin noise function. + + + x value. + y value. + + Returns function's value at point (, ). + + + + + Ordinary noise function + + + + + + Smoothed noise. + + + + + Cosine interpolation. + + + + + Initial frequency. + + + The property sets initial frequency of the first octave. Frequencies for + next octaves are calculated using the next equation:
+ frequencyi = * 2i, + where i = [0, ). +
+ + Default value is set to 1. +
+ +
+ + + Initial amplitude. + + + The property sets initial amplitude of the first octave. Amplitudes for + next octaves are calculated using the next equation:
+ amplitudei = * i, + where i = [0, ). +
+ + Default value is set to 1. +
+ +
+ + + Persistence value. + + + The property sets so called persistence value, which controls the way + how amplitude is calculated for each octave comprising + the Perlin noise function. + + Default value is set to 0.65. + + + + + + Number of octaves, [1, 32]. + + + The property sets the number of noise functions, which sum up the resulting + Perlin noise function. + + Default value is set to 4. + + + + + + Exponential random numbers generator. + + + The random number generator generates exponential + random numbers with specified rate value (lambda). + + The generator uses generator as a base + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new ExponentialGenerator( 5 ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Interface for random numbers generators. + + + The interface defines set of methods and properties, which should + be implemented by different algorithms for random numbers generatation. + + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + + + + Mean value of generator. + + + + + + Variance value of generator. + + + + + + Initializes a new instance of the class. + + + Rate value. + + Rate value should be greater than zero. + + + + + Initializes a new instance of the class. + + + Rate value (inverse mean). + Seed value to initialize random numbers generator. + + Rate value should be greater than zero. + + + + + Generate next random number + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Rate value (inverse mean). + + + The rate value should be positive and non zero. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Gaussian random numbers generator. + + + The random number generator generates gaussian + random numbers with specified mean and standard deviation values. + + The generator uses generator as base + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new GaussianGenerator( 5.0, 1.5 ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + Mean value. + Standard deviation value. + + + + + Initializes a new instance of the class. + + + Mean value. + Standard deviation value. + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Standard deviation value. + + + + + + Standard random numbers generator. + + + The random number generator generates gaussian + random numbers with zero mean and standard deviation of one. The generator + implements polar form of the Box-Muller transformation. + + The generator uses generator as a base + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new StandardGenerator( ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Uniform random numbers generator. + + + The random numbers generator generates uniformly + distributed numbers in the specified range - values + are greater or equal to minimum range's value and less than maximum range's + value. + + The generator uses generator + to generate random numbers. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new UniformGenerator( new Range( 50, 100 ) ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + Random numbers range. + + Initializes random numbers generator with zero seed. + + + + + Initializes a new instance of the class. + + + Random numbers range. + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Random numbers range. + + + Range of random numbers to generate. Generated numbers are + greater or equal to minimum range's value and less than maximum range's + value. + + + + + + Uniform random numbers generator in the range of [0, 1). + + + The random number generator generates uniformly + distributed numbers in the range of [0, 1) - greater or equal to 0.0 + and less than 1.0. + + At this point the generator is based on the + internal .NET generator, but may be rewritten to + use faster generation algorithm. + + Sample usage: + + // create instance of random generator + IRandomNumberGenerator generator = new UniformOneGenerator( ); + // generate random number + float randomNumber = generator.Next( ); + + + + + + + Initializes a new instance of the class. + + + Initializes random numbers generator with zero seed. + + + + + Initializes a new instance of the class. + + + Seed value to initialize random numbers generator. + + + + + Generate next random number. + + + Returns next random number. + + + + + Set seed of the random numbers generator. + + + Seed value. + + Resets random numbers generator initializing it with + specified seed value. + + + + + Mean value of the generator. + + + + + + Variance value of the generator. + + + + + + Set of statistics functions. + + + The class represents collection of simple functions used + in statistics. + + + + + Calculate mean value. + + + Histogram array. + + Returns mean value. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate mean value + double mean = Statistics.Mean( histogram ); + // output it (5.759) + Console.WriteLine( "mean = " + mean.ToString( "F3" ) ); + + + + + + + Calculate standard deviation. + + + Histogram array. + + Returns value of standard deviation. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate standard deviation value + double stdDev = Statistics.StdDev( histogram ); + // output it (1.999) + Console.WriteLine( "std.dev. = " + stdDev.ToString( "F3" ) ); + + + + + + + Calculate standard deviation. + + + Histogram array. + Mean value of the histogram. + + Returns value of standard deviation. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + The method is an equevalent to the method, + but it relieas on the passed mean value, which is previously calculated + using method. + + + + + + Calculate median value. + + + Histogram array. + + Returns value of median. + + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + The median value is calculated accumulating histogram's + values starting from the left point until the sum reaches 50% of + histogram's sum. + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate median value + int median = Statistics.Median( histogram ); + // output it (6) + Console.WriteLine( "median = " + median ); + + + + + + + Get range around median containing specified percentage of values. + + + Histogram array. + Values percentage around median. + + Returns the range which containes specifies percentage + of values. + + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + The method calculates range of stochastic variable, which summary probability + comprises the specified percentage of histogram's hits. + + Sample usage: + + // create histogram array + int[] histogram = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // get 75% range around median + IntRange range = Statistics.GetRange( histogram, 0.75 ); + // output it ([4, 8]) + Console.WriteLine( "range = [" + range.Min + ", " + range.Max + "]" ); + + + + + + + Calculate entropy value. + + + Histogram array. + + Returns entropy value of the specified histagram array. + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Sample usage: + + // create histogram array with 2 values of equal probabilities + int[] histogram1 = new int[2] { 3, 3 }; + // calculate entropy + double entropy1 = Statistics.Entropy( histogram1 ); + // output it (1.000) + Console.WriteLine( "entropy1 = " + entropy1.ToString( "F3" ) ); + + // create histogram array with 4 values of equal probabilities + int[] histogram2 = new int[4] { 1, 1, 1, 1 }; + // calculate entropy + double entropy2 = Statistics.Entropy( histogram2 ); + // output it (2.000) + Console.WriteLine( "entropy2 = " + entropy2.ToString( "F3" ) ); + + // create histogram array with 4 values of different probabilities + int[] histogram3 = new int[4] { 1, 2, 3, 4 }; + // calculate entropy + double entropy3 = Statistics.Entropy( histogram3 ); + // output it (1.846) + Console.WriteLine( "entropy3 = " + entropy3.ToString( "F3" ) ); + + + + + + + Calculate mode value. + + + Histogram array. + + Returns mode value of the histogram array. + + + The input array is treated as histogram, i.e. its + indexes are treated as values of stochastic function, but + array values are treated as "probabilities" (total amount of + hits). + + Returns the minimum mode value if the specified histogram is multimodal. + + Sample usage: + + // create array + int[] values = new int[] { 1, 1, 2, 3, 6, 8, 11, 12, 7, 3 }; + // calculate mode value + int mode = Statistics.Mode( values ); + // output it (7) + Console.WriteLine( "mode = " + mode ); + + + + + + + Set of tool functions. + + + The class contains different utility functions. + + + + + Calculates power of 2. + + + Power to raise in. + + Returns specified power of 2 in the case if power is in the range of + [0, 30]. Otherwise returns 0. + + + + + Checks if the specified integer is power of 2. + + + Integer number to check. + + Returns true if the specified number is power of 2. + Otherwise returns false. + + + + + Get base of binary logarithm. + + + Source integer number. + + Power of the number (base of binary logarithm). + + + + + 3D Vector structure with X, Y and Z coordinates. + + + The structure incapsulates X, Y and Z coordinates of a 3D vector and + provides some operations with it. + + + + + X coordinate of the vector. + + + + + Y coordinate of the vector. + + + + + Z coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + X coordinate of the vector. + Y coordinate of the vector. + Z coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + Value, which is set to all 3 coordinates of the vector. + + + + + Returns a string representation of this object. + + + A string representation of this object. + + + + + Returns array representation of the vector. + + + Array with 3 values containing X/Y/Z coordinates. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Tests whether two specified vectors are equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether two specified vectors are not equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are not equal or otherwise. + + + + + Tests whether the vector equals to the specified one. + + + The vector to test equality with. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether the vector equals to the specified object. + + + The object to test equality with. + + Returns if the vector equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Normalizes the vector by dividing it’s all coordinates with the vector's norm. + + + Returns the value of vectors’ norm before normalization. + + + + + Inverse the vector. + + + Returns a vector with all coordinates equal to 1.0 divided by the value of corresponding coordinate + in this vector (or equal to 0.0 if this vector has corresponding coordinate also set to 0.0). + + + + + Calculate absolute values of the vector. + + + Returns a vector with all coordinates equal to absolute values of this vector's coordinates. + + + + + Calculates cross product of two vectors. + + + First vector to use for cross product calculation. + Second vector to use for cross product calculation. + + Returns cross product of the two specified vectors. + + + + + Calculates dot product of two vectors. + + + First vector to use for dot product calculation. + Second vector to use for dot product calculation. + + Returns dot product of the two specified vectors. + + + + + Converts the vector to a 4D vector. + + + Returns 4D vector which is an extension of the 3D vector. + + The method returns a 4D vector which has X, Y and Z coordinates equal to the + coordinates of this 3D vector and W coordinate set to 1.0. + + + + + + Returns maximum value of the vector. + + + Returns maximum value of all 3 vector's coordinates. + + + + + Returns minimum value of the vector. + + + Returns minimum value of all 3 vector's coordinates. + + + + + Returns index of the coordinate with maximum value. + + + Returns index of the coordinate, which has the maximum value - 0 for X, + 1 for Y or 2 for Z. + + If there are multiple coordinates which have the same maximum value, the + property returns smallest index. + + + + + + Returns index of the coordinate with minimum value. + + + Returns index of the coordinate, which has the minimum value - 0 for X, + 1 for Y or 2 for Z. + + If there are multiple coordinates which have the same minimum value, the + property returns smallest index. + + + + + + Returns vector's norm. + + + Returns Euclidean norm of the vector, which is a + square root of the sum: X2+Y2+Z2. + + + + + + Returns square of the vector's norm. + + + Return X2+Y2+Z2, which is + a square of vector's norm or a dot product of this vector + with itself. + + + + + 4D Vector structure with X, Y, Z and W coordinates. + + + The structure incapsulates X, Y, Z and W coordinates of a 4D vector and + provides some operations with it. + + + + + X coordinate of the vector. + + + + + Y coordinate of the vector. + + + + + Z coordinate of the vector. + + + + + W coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + X coordinate of the vector. + Y coordinate of the vector. + Z coordinate of the vector. + W coordinate of the vector. + + + + + Initializes a new instance of the structure. + + + Value, which is set to all 4 coordinates of the vector. + + + + + Returns a string representation of this object. + + + A string representation of this object. + + + + + Returns array representation of the vector. + + + Array with 4 values containing X/Y/Z/W coordinates. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds corresponding coordinates of two vectors. + + + The vector to add to. + The vector to add to the first vector. + + Returns a vector which coordinates are equal to sum of corresponding + coordinates of the two specified vectors. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Adds a value to all coordinates of the specified vector. + + + Vector to add the specified value to. + Value to add to all coordinates of the vector. + + Returns new vector with all coordinates increased by the specified value. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts corresponding coordinates of two vectors. + + + The vector to subtract from. + The vector to subtract from the first vector. + + Returns a vector which coordinates are equal to difference of corresponding + coordinates of the two specified vectors. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Subtracts a value from all coordinates of the specified vector. + + + Vector to subtract the specified value from. + Value to subtract from all coordinates of the vector. + + Returns new vector with all coordinates decreased by the specified value. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies corresponding coordinates of two vectors. + + + The first vector to multiply. + The second vector to multiply. + + Returns a vector which coordinates are equal to multiplication of corresponding + coordinates of the two specified vectors. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Multiplies coordinates of the specified vector by the specified factor. + + + Vector to multiply coordinates of. + Factor to multiple coordinates of the specified vector by. + + Returns new vector with all coordinates multiplied by the specified factor. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides corresponding coordinates of two vectors. + + + The first vector to divide. + The second vector to devide. + + Returns a vector which coordinates are equal to coordinates of the first vector divided by + corresponding coordinates of the second vector. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Divides coordinates of the specified vector by the specified factor. + + + Vector to divide coordinates of. + Factor to divide coordinates of the specified vector by. + + Returns new vector with all coordinates divided by the specified factor. + + + + + Tests whether two specified vectors are equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether two specified vectors are not equal. + + + The left-hand vector. + The right-hand vector. + + Returns if the two vectors are not equal or otherwise. + + + + + Tests whether the vector equals to the specified one. + + + The vector to test equality with. + + Returns if the two vectors are equal or otherwise. + + + + + Tests whether the vector equals to the specified object. + + + The object to test equality with. + + Returns if the vector equals to the specified object or otherwise. + + + + + Returns the hashcode for this instance. + + + A 32-bit signed integer hash code. + + + + + Normalizes the vector by dividing it’s all coordinates with the vector's norm. + + + Returns the value of vectors’ norm before normalization. + + + + + Inverse the vector. + + + Returns a vector with all coordinates equal to 1.0 divided by the value of corresponding coordinate + in this vector (or equal to 0.0 if this vector has corresponding coordinate also set to 0.0). + + + + + Calculate absolute values of the vector. + + + Returns a vector with all coordinates equal to absolute values of this vector's coordinates. + + + + + Calculates dot product of two vectors. + + + First vector to use for dot product calculation. + Second vector to use for dot product calculation. + + Returns dot product of the two specified vectors. + + + + + Converts the vector to a 3D vector. + + + Returns 3D vector which has X/Y/Z coordinates equal to X/Y/Z coordinates + of this vector divided by . + + + + + Returns maximum value of the vector. + + + Returns maximum value of all 4 vector's coordinates. + + + + + Returns minimum value of the vector. + + + Returns minimum value of all 4 vector's coordinates. + + + + + Returns index of the coordinate with maximum value. + + + Returns index of the coordinate, which has the maximum value - 0 for X, + 1 for Y, 2 for Z or 3 for W. + + If there are multiple coordinates which have the same maximum value, the + property returns smallest index. + + + + + + Returns index of the coordinate with minimum value. + + + Returns index of the coordinate, which has the minimum value - 0 for X, + 1 for Y, 2 for Z or 3 for W. + + If there are multiple coordinates which have the same minimum value, the + property returns smallest index. + + + + + + Returns vector's norm. + + + Returns Euclidean norm of the vector, which is a + square root of the sum: X2+Y2+Z2+W2. + + + + + + Returns square of the vector's norm. + + + Return X2+Y2+Z2+W2, which is + a square of vector's norm or a dot product of this vector + with itself. + + + + + Static extension class for manipulating index vectors (i.e. vectors + containing integers that represent positions within a collection or + array. + + + + + + Returns a vector of the specified containing + indices (0, 1, 2, ... max) up to a given maximum number and in random + order. The vector can grow up to to , but does + not include max among its values. + + + + In other words, this return a sample of size k from a population + of size n, where k is the parameter + and n is the parameter . + + + + + var a = Indices.Random(3, 10); // a possible output is { 1, 7, 4 }; + var b = Indices.Random(10, 10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5, 6)) + { + // ... + } + + + + + + + Returns a vector containing indices (0, 1, 2, ..., n - 1) in random + order. The vector grows up to to , but does not + include size among its values. + + + + + var a = Indices.Random(3); // a possible output is { 2, 1, 0 }; + var b = Indices.Random(10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5)) + { + // ... + } + + + + + + + Returns a vector of the specified containing + indices (0, 1, 2, ... max) up to a given maximum number and in random + order. The vector can grow up to to , but does + not include max among its values. + + + + In other words, this return a sample of size k from a population + of size n, where k is the parameter + and n is the parameter . + + + + + var a = Indices.Random(3, 10); // a possible output is { 1, 7, 4 }; + var b = Indices.Random(10, 10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5, 6)) + { + // ... + } + + + + + + + Returns a vector containing indices (0, 1, 2, ..., n - 1) in random + order. The vector grows up to to , but does not + include size among its values. + + + + + var a = Indices.Random(3); // a possible output is { 2, 1, 0 }; + var b = Indices.Random(10); // a possible output is { 5, 4, 2, 0, 1, 3, 7, 9, 8, 6 }; + + foreach (var i in Indices.Random(5)) + { + // ... + } + + + + + + + Creates a vector containing every index up to + such as { 0, 1, 2, 3, 4, ..., n-1 }. + + + The non-inclusive limit for the index generation. + + + A vector of size containing + all vector indices up to . + + + + + + Creates a vector containing every index up to + such as { 0.0, 1.0, 2.0, 3.0, 4.0, ..., n-1 } using any choice of + numbers, such as byte or double. + + + The non-inclusive limit for the index generation. + + + A vector of size containing + all vector indices up to . + + + + + + Creates a vector containing every index that can be used to + address a given , in order. + + + The array whose indices will be returned. + + + A vector of the same size as the given + containing all vector indices from 0 up to the length of + . + + + + + double[] a = { 5.3, 2.3, 4.2 }; + int[] idx = Indices.From(a); // output will be { 0, 1, 2 } + + + + + + + Creates a vector containing every index that can be used to + address a given , in order, using any + choice of numbers, such as byte or double. + + + The array whose indices will be returned. + + + A vector of the same size as the given + containing all vector indices from 0 up to the length of + . + + + + + double[] a = { 5.3, 2.3, 4.2 }; + int[] idx = Indices.From(a); // output will be { 0, 1, 2 } + + + + + + + Creates a vector containing every index that can be used to + address a given , in order. + + + The array whose indices will be returned. + + + An enumerable object that can be used to iterate over all + positions of the given System.Array. + + + + + double[,] a = + { + { 5.3, 2.3 }, + { 4.2, 9.2 } + }; + + foreach (int[] idx in Indices.From(a)) + { + // Get the current element + double e = (double)a.GetValue(idx); + } + + + + + + + Creates a vector containing every index starting at + up to such as { from, from + 1, from + 2, ..., to-1 }. + + + The inclusive start for the index generation. + The non-inclusive limit for the index generation. + + + A vector of size to - from containing all vector + indices starting at and going up + to (but not including) . + + + + + + Creates a vector containing every index starting at + up to such as { from, from + 1, from + 2, ..., to-1 } + using any choice of numbers, such as byte or double. + + + The inclusive start for the index generation. + The non-inclusive limit for the index generation. + + + A vector of size to - from containing all vector + indices starting at and going up + to (but not including) . + + + + + + Cell array + + + + + + Structure + + + + + + Object + + + + + + Character array + + + + + + Sparse array + + + + + + Double precision array + + + + + + Single precision array + + + + + + 8-bit, signed integer + + + + + + 8-bit, unsigned integer + + + + + + 16-bit, signed integer + + + + + + 16-bit, unsigned integer + + + + + + 32-bit, signed integer + + + + + + 32-bit, unsigned integer + + + + + + 64-bit, signed integer + + + + + + 64-bit, unsigned integer + + + + + + 8 bit, signed + + + + + + 8 bit, unsigned + + + + + + 16-bit, signed + + + + + + 16-bit, unsigned + + + + + + 32-bit, signed + + + + + + 32-bit, unsigned + + + + + + IEEE® 754 single format + + + + + + IEEE 754 double format + + + + + + 64-bit, signed + + + + + + 64-bit, unsigned + + + + + + MATLAB array + + + + + + Compressed Data + + + + + + Unicode UTF-8 Encoded Character Data + + + + + + Unicode UTF-16 Encoded Character Data + + + + + + Unicode UTF-32 Encoded Character Data + + + + + + Node object contained in .MAT file. + A node can contain a matrix object, a string, or another nodes. + + + + + + Gets the object value contained at this node, if any. + Its type can be known by checking the + property of this node. + + + The object type, if known. + + The object stored at this node. + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the name of this node. + + + + + + Gets the child nodes contained at this node. + + + + + + Gets the object value contained at this node, if any. + Its type can be known by checking the + property of this node. + + + + + + Gets the type of the object value contained in this node. + + + + + + Gets the number of child objects contained in this node. + + + + + + Gets the child fields contained under the given name. + + + The name of the field to be retrieved. + + + + + Gets the child fields contained under the given name. + + + The name of the field to be retrieved. + + + + + Reader for .mat files (such as the ones created by Matlab and Octave). + + + + + MAT files are binary files containing variables and structures from mathematical + processing programs, such as MATLAB or Octave. In MATLAB, .mat files can be created + using its save and load functions. For the moment, this reader supports + only version 5 MAT files (Matlab 5 MAT-file). + + + The MATLAB file format is documented at + + http://www.mathworks.com/help/pdf_doc/matlab/matfile_format.pdf + + + + + // Create a new MAT file reader + var reader = new MatReader(file); + + // Extract some basic information about the file: + string description = reader.Description; // "MATLAB 5.0 MAT-file, Platform: PCWIN" + int version = reader.Version; // 256 + bool bigEndian = reader.BigEndian; // false + + + // Enumerate the fields in the file + foreach (var field in reader.Fields) + Console.WriteLine(field.Key); // "structure" + + // We have the single following field + var structure = reader["structure"]; + + // Enumerate the fields in the structure + foreach (var field in structure.Fields) + Console.WriteLine(field.Key); // "a", "string" + + // Check the type for the field "a" + var aType = structure["a"].Type; // byte[,] + + // Retrieve the field "a" from the file + var a = structure["a"].GetValue<byte[,]>(); + + // We can also do directly if we know the type in advance + var s = reader["structure"]["string"].GetValue<string>(); + + + + + + + Creates a new . + + + The input stream containing the MAT file. + + + + + Creates a new . + + + The input stream containing the MAT file. + Pass true to automatically transpose matrices if they + have been stored differently from .NET's default row-major order. Default is true. + + + + + Creates a new . + + + A reader for input stream containing the MAT file. + Pass true to automatically transpose matrices if they + have been stored differently from .NET's default row-major order. Default is true. + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets the child nodes contained in this file. + + + + + + Gets the human readable description of the MAT file. + + + + An example header description could be given by + "MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Thu Feb 22 03:12:25 2007". + + + + + + Gets the version information about the file. + This field should always contain 256. + + + + + + Gets whether the MAT file uses the Big-Endian + standard for bit-order. Currently, only little + endian is supported. + + + + + + Gets whether matrices will be auto-transposed + to .NET row and column format if necessary. + + + + + + Returns the underlying stream. + + + + + + Gets a child object contained in this node. + + + The field name or index. + + + + + Gets a child object contained in this node. + + + The field index. + + + + + Sparse matrix representation used by + .MAT files. + + + + + + Gets the sparse row index vector. + + + + + + Gets the sparse column index vector. + + + + + + Gets the values vector. + + + + + + General Sequential Minimal Optimization algorithm for Quadratic Programming problems. + + + + + This class implements the same optimization method found in LibSVM. It can be used + to solve quadratic programming problems where the quadratic matrix Q may be too large + to fit in memory. + + + The method is described in Fan et al., JMLR 6(2005), p. 1889--1918. It solves the + minimization problem: + + + min 0.5(\alpha^T Q \alpha) + p^T \alpha + + y^T \alpha = \delta + y_i = +1 or -1 + 0 <= alpha_i <= C_i + + + + Given Q, p, y, C, and an initial feasible point \alpha, where l is + the size of vectors and matrices and eps is the stopping tolerance. + + + + + + + Common interface for function optimization methods. + + + + + + + + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Gets the number of variables (free parameters) + in the optimization problem. + + + The number of parameters. + + + + + Gets the current solution found, the values of + the parameters which optimizes the function. + + + + + + Gets the output of the function at the current . + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + The quadratic matrix Q. It should be specified as a lambda + function so Q doesn't need to be always kept in memory. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + The quadratic matrix Q. It should be specified as a lambda + function so Q doesn't need to be always kept in memory. + The vector of linear terms p. Default is a zero vector. + The class labels y. Default is a unit vector. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + + Not supported. + + + + + + Gets the number of variables (free parameters) in the optimization + problem. In a SVM learning problem, this is the number of samples in + the learning dataset. + + + + The number of parameters for the optimization problem. + + + + + + Gets the current solution found, the values of + the parameters which optimizes the function. + + + + + + Gets the output of the function at the current . + + + + + + Gets the threshold (bias) value for a SVM trained using this method. + + + + + + Gets or sets the precision tolerance before + the method stops. Default is 0.001. + + + + + + Gets or sets a value indicating whether shrinking + heuristics should be used. + + + + true to use shrinking heuristics; otherwise, false. + + + + + + Gets the upper bounds for the optimization problem. In + a SVM learning problem, this would be the capacity limit + for each Lagrange multiplier (alpha) in the machine. The + default is to use a vector filled with 1's. + + + + + + Gets a reference to the random number generator used + internally by the Accord.NET classes and methods. + + + + + + Sets a random seed for the framework's main internal + number generator. Preferably, this method should be called before + other computations. + + + + + + Comparison methods that can be used in sort + algorithms such as . + + + + + This namespace contains different methods for comparing elements. For + example, using the classes in this namespace makes it possible to sort + arrays of arrays, + sort arrays into any direction, or perform + stable sorts. + + + + The namespace class diagram is shown below. + + + + + + + + + Common interface for convergence detection algorithms. + + + + + + Resets this instance, reverting all iteration statistics + statistics (number of iterations, last error) back to zero. + + + + + + Gets or sets the maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has converged. + + + + + + General convergence options. + + + + + + Creates a new object. + + + The number of variables to be tracked. + + + + + Gets or sets the number of variables in the problem. + + + + + + Gets or sets the relative function tolerance that should + be used as convergence criteria. This tracks the relative + amount that the function output changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the absolute function tolerance that should + be used as convergence criteria. This tracks the absolute + amount that the function output changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the relative parameter tolerance that should + be used as convergence criteria. This tracks the relative + amount that the model parameters changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the absolute parameter tolerance that should + be used as convergence criteria. This tracks the absolute + amount that the model parameters changes after two consecutive + iterations. Setting this value to zero disables those checks. + Default is 0. + + + + + + Gets or sets the number of function evaluations + performed by the optimization algorithm. + + + + + + Gets or sets the maximum number of function evaluations to + be used as convergence criteria. This tracks how many times + the function to be optimized has been called, and stops the + algorithm when the number of times specified in this property + has been reached. Setting this value to zero disables this check. + Default is 0. + + + + + + Gets or sets the maximum amount of time that an optimization + algorithm is allowed to run. This property must be set together + with in order to function correctly. + Setting this value to disables this + check. Default is . + + + + + + Gets or sets the time when the algorithm started running. When + time will be tracked with the property, + this property must also be set to a correct value. + + + + + + Gets or sets whether the algorithm should + be forced to terminate. Default is false. + + + + + + Contains numerical decompositions such as QR, + SVD, LU, + Cholesky, and + NMF with specialized definitions for most .NET data types: float, double, and decimals. + + + + + The namespace class diagram is shown below. + + + + + + + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + QR decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + + Common interface for matrix decompositions which + can be used to solve linear systems of equations + involving jagged array matrices. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = I. + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + + Common interface for matrix decompositions which + can be used to solve linear systems of equations. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = B. + + + + + + Solves a set of equation systems of type A * X = I. + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + QR decomposition for a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the QR decomposition + is an m-by-n orthogonal matrix Q and an n-by-n upper triangular + matrix R so that A = Q * R. + + The QR decomposition always exists, even if the matrix does not have + full rank, so the constructor will never fail. The primary use of the + QR decomposition is in the least squares solution of nonsquare systems + of simultaneous linear equations. + This will fail if returns . + + + + + Constructs a QR decomposition. + The matrix A to be decomposed. + + + Constructs a QR decomposition. + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of X * A = B + Right-hand-side matrix with as many columns as A and any number of rows. + A matrix that minimized the two norm of X * Q * R - B. + Matrix column dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = B + Right-hand-side matrix with as many rows as A and any number of columns. + A matrix that minimized the two norm of Q * R * X - B. + Matrix row dimensions must be the same. + Matrix is rank deficient. + + + Least squares solution of A * X = I + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Shows if the matrix A is of full rank. + The value is if R, and hence A, has full rank. + + + Returns the upper triangular factor R. + + + Returns the orthogonal factor Q. + + + Returns the diagonal of R. + + + + Static class Dissimilarity. Provides extension methods defining dissimilarity measures. + + + + + + Computes the Dice dissimilarity between two vectors. + + + A vector. + A vector. + + The Dice dissimilarity between x and y. + + + + + Computes the Jaccard dissimilarity between two vectors. + + + A vector. + A vector. + + The Jaccard dissimilarity between x and y. + + + + + Computes the Kulczynski dissimilarity between two vectors. + + + A vector. + A vector. + + The Kulczynski dissimilarity between x and y. + + + + + Computes the Matching dissimilarity between two vectors. + + + A vector. + A vector. + + The Matching dissimilarity between x and y. + + + + + Computes the Rogers-Tanimoto dissimilarity between two vectors. + + + A vector. + A vector. + + The Rogers Tanimoto dissimilarity between x and y. + + + + + Computes the Russel Rao dissimilarity between two vectors. + + + A vector. + A vector. + + The Russel Rao dissimilarity between x and y. + + + + + Computes the Sokal-Michener dissimilarity between two vectors. + + + A vector. + A vector. + + The Sokal-Michener dissimilarity between x and y. + + + + + Computes the Sokal Sneath dissimilarity between two vectors. + + + A vector. + A vector. + + The Sokal Sneath dissimilarity between x and y. + + + + + Computes the Yule dissimilarity between two vectors. + + + A vector. + A vector. + + The Yule dissimilarity between x and y. + + + + + Owen's T function and related functions. + + + + + + In mathematics, Owen's T function T(h, a), named after statistician Donald Bruce Owen, + is defined by + + 1 a exp{-0.5 h²(1+x²) + T(h, a) = ---- ∫ ------------------- dx + 2π 0 1 + x² + + + + The function T(h, a) gives the probability of the event (X > h and 0 < Y < aX) + where X and Y are independent standard normal random variables. This function can + be used to calculate bivariate normal distribution probabilities + and, from there, in the calculation of multivariate normal distribution probabilities. It also + frequently appears in various integrals involving Gaussian functions. + + + + The code is based on the original FORTRAN77 version by Mike Patefield, David Tandy; + and the C version created by John Burkardt. The original code for the C version can + be found at http://people.sc.fsu.edu/~jburkardt/c_src/owens/owens.html and is valid + under the LGPL. + + + References: + + + http://people.sc.fsu.edu/~jburkardt/c_src/owens/owens.html + + Mike Patefield, David Tandy, Fast and Accurate Calculation of Owen's T Function, + Journal of Statistical Software, Volume 5, Number 5, 2000, pages 1-25. + + + + + + + // Computes Owens' T function + double t = OwensT.Function(h: 2, a: 42); // 0.011375065974089608 + + + + + + + Computes Owen's T function for arbitrary H and A. + + + Owen's T function argument H. + Owen's T function argument A. + + The value of Owen's T function. + + + + + Owen's T function for a restricted range of parameters. + + + Owen's T function argument H (where 0 <= H). + Owen's T function argument A (where 0 <= A <= 1). + The value of A*H. + + The value of Owen's T function. + + + + + Numerical methods for approximating integrals. + + + + + This namespace contains different methods for numerically approximating + integrals, such as the Trapezoidal Rule, + Romberg method, up to more advanced versions + such as the Infinite Adaptive Gauss + Kronrod for improper integrals or + Monte Carlo integration for multivariate integrals. + + + The namespace class diagram is shown below. + + + + + + + + + + Common interface for multidimensional integration methods. + + + + + + Common interface for numeric integration methods. + + + + + + Computes the area of the function under the selected + range. The computed value will be available at this + class's property. + + + True if the integration method succeeds, false otherwise. + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the number of parameters expected by + the to be integrated. + + + + + + Gets or sets the multidimensional function + whose integral should be computed. + + + + + + Gets or sets the range of each input variable + under which the integral must be computed. + + + + + + Common interface for multidimensional integration methods. + + + + + + Gets or sets the unidimensional function + whose integral should be computed. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Common interface for numeric integration methods. + + + + + + Get the exit code returned in the last call to the + method. + + + + + + Status codes for the + integration method. + + + + + + The integration calculation has been completed with success. + The obtained result is under the selected convergence criteria. + + + + + + Maximum number of allowed subdivisions has been reached. + + + + The maximum number of subdivisions allowed has been achieved. One can allow + more subdivisions by increasing the value of limit (and taking the according + dimension adjustments into account). However, if this yields no improvement + it is advised to analyze the integrand in order to determine the integration + difficulties. If the position of a local difficulty can be determined (e.g. + singularity, discontinuity within the interval) one will probably gain from + splitting up the interval at this point and calling the integrator on the + subranges. if possible, an appropriate special-purpose integrator should be + used, which is designed for handling the type of difficulty involved. + + + + + + Roundoff errors prevent the tolerance from being reached. + + + + The occurrence of roundoff error is detected, which prevents the requested + tolerance from being achieved. The error may be under-estimated. + + + + + + There are severe discontinuities in the integrand function. + + + + Extremely bad integrand behaviour occurs at some points of the + integration interval. + + + + + + The algorithm cannot converge. + + + + The algorithm does not converge. Roundoff error is detected in the + extrapolation table. It is assumed that the requested tolerance cannot + be achieved, and that the returned result is the best which can be obtained. + + + + + + The integral is divergent or slowly convergent. + + + + The integral is probably divergent, or slowly convergent. It must be + noted that divergence can occur with any other error code. + + + + + + Infinite Adaptive Gauss-Kronrod integration method. + + + + + In applied mathematics, adaptive quadrature is a process in which the + integral of a function f(x) is approximated using static quadrature rules + on adaptively refined subintervals of the integration domain. Generally, + adaptive algorithms are just as efficient and effective as traditional + algorithms for "well behaved" integrands, but are also effective for + "badly behaved" integrands for which traditional algorithms fail. + + + The algorithm implemented by this class has been based on the original FORTRAN + implementation from QUADPACK. The function implemented the Non-adaptive Gauss- + Kronrod integration is qagi(f,bound,inf,epsabs,epsrel,result,abserr,neval, + ier,limit,lenw,last,iwork,work). The original source code is in the public + domain, but this version is under the LGPL. The original authors, as long as the + original routine description, are listed below: + + + Robert Piessens, Elise de Doncker; Applied Mathematics and Programming Division, + K.U.Leuven, Leuvenappl. This routine calculates an approximation result to a given + integral i = integral of f over (bound,+infinity) or i = integral of f over + (-infinity,bound) or i = integral of f over (-infinity,+infinity) hopefully satisfying + following claim for accuracy abs(i-result).le.max(epsabs,epsrel*abs(i)). + + + References: + + + Wikipedia, The Free Encyclopedia. Adaptive quadrature. Available on: + http://en.wikipedia.org/wiki/Adaptive_quadrature + + Wikipedia, The Free Encyclopedia. QUADPACK. Available on: + http://en.wikipedia.org/wiki/QUADPACK + + Robert Piessens, Elise de Doncker; Non-adaptive integration standard fortran + subroutine (qng.f). Applied Mathematics and Programming Division, K.U.Leuven, + Leuvenappl. Available at: http://www.netlib.no/netlib/quadpack/qagi.f + + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Creates a new integration algorithm. + + + Maximum number of subintervals in the + partition of the given integration interval. Default is 100. + + + + + Creates a new integration algorithm. + + + Maximum number of subintervals in the + partition of the given integration interval. Default is 100. + The function to be integrated. + + + + + Creates a new integration algorithm. + + + Maximum number of subintervals in the + partition of the given integration interval. Default is 100. + The function to be integrated. + The lower limit of integration. + The upper limit of integration. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + If the integration method fails, the reason will be available at . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Infinite Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Infinite Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Infinite Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The relative tolerance under which the solution has to be found. Default is 1e-3. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Get the maximum number of subintervals to be utilized in the + partition of the integration interval. + + + + + + Gets or sets the function to be differentiated. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Desired absolute accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is zero. + + + + + + Desired relative accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is 1e-3. + + + + + + Get the exit code returned in the last call to the + method. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the integration error for the + computed value. + + + + + + Gets the number of function evaluations performed in + the last call to the method. + + + + + + Status codes for the + integration method. + + + + + + The integration calculation has been completed with success. + The obtained result is under the selected convergence criteria. + + + + + + Maximum number of steps has been reached. + + + + The maximum number of steps has been executed. The integral + is probably too difficult to be calculated by dqng. + + + + + + Non-Adaptive Gauss-Kronrod integration method. + + + + + The algorithm implemented by this class has been based on the original FORTRAN + implementation from QUADPACK. The function implemented the Non-adaptive Gauss- + Kronrod integration is qng(f,a,b,epsabs,epsrel,result,abserr,neval,ier). + The original source code is in the public domain, but this version is under the + LGPL. The original authors, as long as the original routine description, are + listed below: + + Robert Piessens, Elise de Doncker; Applied Mathematics and Programming Division, + K.U.Leuven, Leuvenappl. This routine calculates an approximation result to a given + definite integral i = integral of f over (a,b), hopefully satisfying following claim + for accuracy abs(i-result).le.max(epsabs,epsrel*abs(i)). + + + References: + + + Wikipedia, The Free Encyclopedia. QUADPACK. Available on: + http://en.wikipedia.org/wiki/QUADPACK + + Robert Piessens, Elise de Doncker; Non-adaptive integration standard fortran + subroutine (qng.f). Applied Mathematics and Programming Division, K.U.Leuven, + Leuvenappl. Available at: http://www.netlib.no/netlib/quadpack/qng.f + + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Creates a new integration algorithm. + + + + + + Creates a new integration algorithm. + + + The function to be integrated. + + + + + Creates a new integration algorithm. + + + The function to be integrated. + The lower limit of integration. + The upper limit of integration. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + If the integration method fails, the reason will be available at . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, + in the given integration interval, using Gauss-Kronrod method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, in the given + integration interval, using the Non-Adaptive Gauss Kronrod algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The relative tolerance under which the solution has to be found. Default is 1e-3. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the function to be differentiated. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Desired absolute accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is zero. + + + + + + Desired relative accuracy. If set to zero, this parameter + will be ignored and only other requisites will be taken + into account. Default is 1e-3. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the integration error for the + computed value. + + + + + + Get the exit code returned in the last call to the + method. + + + + + + Gets the number of function evaluations performed in + the last call to the method. + + + + + + Derivative approximation by finite differences. + + + + + Numerical differentiation is a technique of numerical analysis to produce an estimate + of the derivative of a mathematical function or function subroutine using values from + the function and perhaps other knowledge about the function. + + + A finite difference is a mathematical expression of the form f(x + b) − f(x + a). If a + finite difference is divided by b − a, one gets a difference quotient. The approximation + of derivatives by finite differences plays a central role in finite difference methods + for the numerical solution of differential equations, especially boundary value problems. + + + + This class implements Newton's finite differences method for approximating the derivatives + of a multivariate function. A simplified version of the class is also available for + univariate functions through + its Derivative static methods. + + + References: + + + Wikipedia, The Free Encyclopedia. Finite difference. Available on: + http://en.wikipedia.org/wiki/Finite_difference + + Trent F. Guidry, Calculating derivatives of a function numerically. Available on: + http://www.trentfguidry.net/post/2009/07/12/Calculate-derivatives-function-numerically.aspx + + + + + + + + // Create a simple function with two parameters: f(x, y) = x² + y + Func <double[], double> function = x => Math.Pow(x[0], 2) + x[1]; + + // The gradient function should be g(x,y) = <2x, 1> + + // Create a new finite differences calculator + var calculator = new FiniteDifferences(2, function); + + // Evaluate the gradient function at the point (2, -1) + double[] result = calculator.Compute(2, -1); // answer is (4, 1) + + + + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + The relative step size used to approximate the derivatives. Default is 0.01. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The function to be differentiated. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + The function to be differentiated. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the function. + The derivative order that should be obtained. Default is 1. + The relative step size used to approximate the derivatives. Default is 0.01. + The function to be differentiated. + + + + + Computes the gradient at the given point x. + + The point where to compute the gradient. + The gradient of the function evaluated at point x. + + + + + Computes the gradient at the given point , + storing the result at . + + + The point where to compute the gradient. + The gradient of the function evaluated at point x. + + + + + Computes the derivative at point x_i. + + + + + + Creates the interpolation coefficients. + + + The number of points in the tableau. + + + + + Interpolates the points to obtain an estimative of the derivative at x. + + + + + + Computes the derivative for a simpler unidimensional function. + + + The function to be differentiated. + The value x at which the derivative should be evaluated. + The derivative order that should be obtained. Default is 1. + + The derivative of the function at the point x. + + + + + Computes the derivative for a simpler unidimensional function. + + + The function to be differentiated. + The value x at which the derivative should be evaluated. + + The derivative of the function at the point x. + + + + + Computes the derivative for a simpler unidimensional function. + + + The function to be differentiated. + The derivative order that should be obtained. Default is 1. + The relative step size used to approximate the derivatives. Default is 0.01. + The value x at which the derivative should be evaluated. + + The derivative of the function at the point x. + + + + + Gets or sets the function to be differentiated. + + + + + + Gets or sets the relative step size used to + approximate the derivatives. Default is 1e-2. + + + + + + Gets or sets the order of the derivatives to be + obtained. Default is 1 (computes the first derivative). + + + + + + Gets or sets the number of points to be used when + computing the approximation. Default is 3. + + + + + + Monte Carlo method for multi-dimensional integration. + + + + + In mathematics, Monte Carlo integration is a technique for numerical + integration using random numbers. It is a particular Monte Carlo method + that numerically computes a definite integral. While other algorithms + usually evaluate the integrand at a regular grid, Monte Carlo randomly + choose points at which the integrand is evaluated. This method is + particularly useful for higher-dimensional integrals. There are different + methods to perform a Monte Carlo integration, such as uniform sampling, + stratified sampling and importance sampling. + + + + References: + + + Wikipedia, The Free Encyclopedia. Monte Carlo integration. Available on: + http://en.wikipedia.org/wiki/Monte_Carlo_integration + + + + + + + A common Monte-Carlo integration example is to compute the value of Pi. This is the + same example given in Wikipedia's page for Monte-Carlo Integration, available at + https://en.wikipedia.org/wiki/Monte_Carlo_integration#Example + + // Define a function H that tells whether two points + // are inside a unit circle (a circle of radius one): + // + Func<double, double, double> H = + (x, y) => (x * x + y * y <= 1) ? 1 : 0; + + // We will check how many points in the square (-1,-1), (-1,+1), + // (+1, -1), (+1, +1) fall into the circle defined by function H. + // + double[] from = { -1, -1 }; + double[] to = { +1, +1 }; + + int samples = 100000; + + // Integrate it! + double area = MonteCarloIntegration.Integrate(x => H(x[0], x[1]), from, to, samples); + + // Output should be approximately 3.14. + + + + + + + + + + Constructs a new Monte Carlo integration method. + + + The function to be integrated. + The number of parameters expected by the . + + + + + Constructs a new Monte Carlo integration method. + + + The number of parameters expected by the integrand. + + + + + Manually resets the previously computed area and error + estimates, so the integral can be computed from scratch + without reusing previous computations. + + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, in the + given integration interval, using a Monte Carlo integration algorithm. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + The number of points that should be sampled. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the number of parameters expected by + the to be integrated. + + + + + + Gets or sets the range of each input variable + under which the integral must be computed. + + + + + + Gets or sets the multidimensional function + whose integral should be computed. + + + + + + Gets or sets the random generator algorithm to be used within + this Monte Carlo method. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets the integration error for the + computed value. + + + + + + Gets or sets the number of random samples + (iterations) generated by the algorithm. + + + + + + Static class for combinatorics functions. + + + + + + Generates all possible two symbol ordered + permutations with repetitions allowed (a truth table). + + + The length of the sequence to generate. + + + + Suppose we would like to generate a truth table for a binary + problem. In this case, we are only interested in two symbols: + 0 and 1. Let's then generate the table for three binary values + + + int length = 3; // The number of variables; or number + // of columns in the generated table. + + // Generate the table using Combinatorics.TruthTable(3) + int[][] table = Combinatorics.TruthTable(length); + + // The generated table will be: + { + new int[] { 0, 0, 0 }, + new int[] { 0, 0, 1 }, + new int[] { 0, 1, 0 }, + new int[] { 0, 1, 1 }, + new int[] { 1, 0, 0 }, + new int[] { 1, 0, 1 }, + new int[] { 1, 1, 0 }, + new int[] { 1, 1, 1 }, + }; + + + + + + + Generates all possible ordered permutations + with repetitions allowed (a truth table). + + + The number of symbols. + The length of the sequence to generate. + + + + Suppose we would like to generate a truth table for a binary + problem. In this case, we are only interested in two symbols: + 0 and 1. Let's then generate the table for three binary values + + + int symbols = 2; // Binary variables: either 0 or 1 + int length = 3; // The number of variables; or number + // of columns in the generated table. + + // Generate the table using Combinatorics.TruthTable(2,3) + int[][] table = Combinatorics.TruthTable(symbols, length); + + // The generated table will be: + { + new int[] { 0, 0, 0 }, + new int[] { 0, 0, 1 }, + new int[] { 0, 1, 0 }, + new int[] { 0, 1, 1 }, + new int[] { 1, 0, 0 }, + new int[] { 1, 0, 1 }, + new int[] { 1, 1, 0 }, + new int[] { 1, 1, 1 }, + }; + + + + + + + Generates all possible ordered permutations + with repetitions allowed (a truth table). + + + The number of symbols for each variable. + + + + Suppose we would like to generate a truth table (i.e. all possible + combinations of a set of discrete symbols) for variables that contain + different numbers symbols. Let's say, for example, that the first + variable may contain symbols 0 and 1, the second could contain either + 0, 1, or 2, and the last one again could contain only 0 and 1. Thus + we can generate the truth table in the following way: + + + // Number of symbols for each variable + int[] symbols = { 2, 3, 2 }; + + // Generate the truth table for the given symbols + int[][] table = Combinatorics.TruthTable(symbols); + + // The generated table will be: + { + new int[] { 0, 0, 0 }, + new int[] { 0, 0, 1 }, + new int[] { 0, 1, 0 }, + new int[] { 0, 1, 1 }, + new int[] { 0, 2, 0 }, + new int[] { 0, 2, 1 }, + new int[] { 1, 0, 0 }, + new int[] { 1, 0, 1 }, + new int[] { 1, 1, 0 }, + new int[] { 1, 1, 1 }, + new int[] { 1, 2, 0 }, + new int[] { 1, 2, 1 }, + }; + + + + + + Provides a way to enumerate all possible ordered permutations + with repetitions allowed (i.e. a truth table), without using + many memory allocations. + + + The number of symbols. + The length of the sequence to generate. + + If set to true, the different generated sequences will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + Suppose we would like to generate the same sequences shown + in the example, + however, without explicitly storing all possible combinations + in an array. In order to iterate over all possible combinations + efficiently, we can use: + + + + int symbols = 2; // Binary variables: either 0 or 1 + int length = 3; // The number of variables; or number + // of columns in the generated table. + + foreach (int[] row in Combinatorics.Sequences(symbols, length)) + { + // The following sequences will be generated in order: + // + // new int[] { 0, 0, 0 }, + // new int[] { 0, 0, 1 }, + // new int[] { 0, 1, 0 }, + // new int[] { 0, 1, 1 }, + // new int[] { 1, 0, 0 }, + // new int[] { 1, 0, 1 }, + // new int[] { 1, 1, 0 }, + // new int[] { 1, 1, 1 }, + } + + + + + + + Provides a way to enumerate all possible ordered permutations + with repetitions allowed (i.e. a truth table), without using + many memory allocations. + + + The number of symbols for each variable. + + If set to true, the different generated permutations will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + Suppose we would like to generate the same sequences shown + in the example, + however, without explicitly storing all possible combinations + in an array. In order to iterate over all possible combinations + efficiently, we can use: + + + + foreach (int[] row in Combinatorics.Sequences(new[] { 2, 2 })) + { + // The following sequences will be generated in order: + // + // new int[] { 0, 0, 0 }, + // new int[] { 0, 0, 1 }, + // new int[] { 0, 1, 0 }, + // new int[] { 0, 1, 1 }, + // new int[] { 1, 0, 0 }, + // new int[] { 1, 0, 1 }, + // new int[] { 1, 1, 0 }, + // new int[] { 1, 1, 1 }, + } + + + + + + + Enumerates all possible value combinations for a given array. + + + The array whose combinations need to be generated. + The length of the combinations to be generated. + + If set to true, the different generated combinations will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + // Let's say we would like to generate all possible combinations + // of the elements (1, 2, 3). In order to enumerate all those + // combinations, we can use: + + int[] values = { 1, 2, 3 }; + + foreach (int[] combination in Combinatorics.Combinations(values)) + { + // The combinations will be generated in the following order: + // + // { 1, 2 }; + // { 1, 3 }; + // { 2, 3 }; + // + } + + + + + + + Enumerates all possible value permutations for a given array. + + + The array whose permutations need to be generated. + + If set to true, the different generated permutations will be stored in + the same array, thus preserving memory. However, this may prevent the + samples from being stored in other locations without having to clone + them. If set to false, a new memory block will be allocated for each + new object in the sequence. + + + + // Let's say we would like to generate all possible permutations + // of the elements (1, 2, 3). In order to enumerate all those + // permutations, we can use: + + int[] values = { 1, 2, 3 }; + + foreach (int[] permutation in Combinatorics.Permutations(values)) + { + // The permutations will be generated in the following order: + // + // { 1, 3, 2 }; + // { 2, 1, 3 }; + // { 2, 3, 1 }; + // { 3, 1, 2 }; + // { 3, 2, 1 }; + // + } + + + + + + + Elementwise comparer for integer arrays. + Please use ArrayComparer{T} instead. + + + + + + Elementwise comparer for arrays. + + + + + + Determines whether two instances are equal. + + + The first object to compare. + The second object to compare. + + true if the specified object is equal to the other; otherwise, false. + + + + + + Returns a hash code for a given instance. + + + The instance. + + + A hash code for the instance, suitable for use + in hashing algorithms and data structures like a hash table. + + + + + + Element-at-position comparer. + + + + This class compares arrays by checking the value + of a particular element at a given array index. + + + + + // We sort the arrays according to the + // elements at their second column. + + double[][] values = + { // v + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 1, 1 }, + new double[] { -1, 5, 4 }, + new double[] { -2, 2, 6 }, + }; + + // Sort the array considering only the second column + Array.Sort(values, new ElementComparer() { Index = 1 }); + + // The result will be + double[][] result = + { + new double[] { -1, 1, 1 }, + new double[] { -2, 2, 6 }, + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 5, 4 }, + }; + + + + + + + + + + + + Element-at-position comparer. + + + + This class compares arrays by checking the value + of a particular element at a given array index. + + + + + // We sort the arrays according to the + // elements at their second column. + + double[][] values = + { // v + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 1, 1 }, + new double[] { -1, 5, 4 }, + new double[] { -2, 2, 6 }, + }; + + // Sort the array considering only the second column + Array.Sort(values, new ElementComparer() { Index = 1 }); + + // The result will be + double[][] result = + { + new double[] { -1, 1, 1 }, + new double[] { -2, 2, 6 }, + new double[] { 0, 3, 0 }, + new double[] { 0, 4, 1 }, + new double[] { -1, 5, 4 }, + }; + + + + + + + + + + + + Compares two objects and returns a value indicating + whether one is less than, equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Determines whether two instances are equal. + + + The first object to compare. + The second object to compare. + + + true if the specified object is equal to the other; otherwise, false. + + + + + + Returns a hash code for a given instance. + + + The instance. + + + A hash code for the instance, suitable for use + in hashing algorithms and data structures like a hash table. + + + + + + Gets or sets the element index to compare. + + + + + + Custom comparer which accepts any delegate or + anonymous function to perform value comparisons. + + + The type of objects to compare. + + + + // Assume we have values to sort + double[] values = { 0, 5, 3, 1, 8 }; + + // We can create an ad-hoc sorting rule using + Array.Sort(values, new CustomComparer<double>((a, b) => -a.CompareTo(b))); + + // Result will be { 8, 5, 3, 1, 0 }. + + + + + + + Constructs a new . + + + The comparer function. + + + + + Compares two objects and returns a value indicating + whether one is less than, equal to, or greater than + the other. + + + The first object to compare. + The second object to compare. + + A signed integer that indicates the relative values of x and y. + + + + + Determines whether the specified objects are equal. + + + The first object of type T to compare. + The second object of type T to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the given object. + + + The object. + + + A hash code for the given object, suitable for use in + hashing algorithms and data structures like a hash table. + + + + + + Directions for the General Comparer. + + + + + + Sorting will be performed in ascending order. + + + + + + Sorting will be performed in descending order. + + + + + + General comparer which supports multiple + directions and comparison of absolute values. + + + + + // Assume we have values to sort + double[] values = { 0, -5, 3, 1, 8 }; + + // We can create an ad-hoc sorting rule considering only absolute values + Array.Sort(values, new GeneralComparer(ComparerDirection.Ascending, Math.Abs)); + + // Result will be { 0, 1, 3, 5, 8 }. + + + + + + + + + + + + Constructs a new General Comparer. + + + The direction to compare. + + + + + Constructs a new General Comparer. + + + The direction to compare. + True to compare absolute values, false otherwise. Default is false. + + + + + Constructs a new General Comparer. + + + The direction to compare. + The mapping function which will be applied to + each vector element prior to any comparisons. + + + + + Compares two objects and returns a value indicating whether one is less than, + equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Compares two objects and returns a value indicating whether one is less than, + equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Gets or sets the sorting direction + used by this comparer. + + + + + + General comparer which supports multiple sorting directions. + + + + + // Assume we have values to sort + double[] values = { 0, -5, 3, 1, 8 }; + + // We can create an ad-hoc sorting rule + Array.Sort(values, new GeneralComparer<double>(ComparerDirection.Descending)); + + // Result will be { 8, 5, 3, 1, 0 }. + + + + + + + + + + + + Constructs a new General Comparer. + + + The direction to compare. + + + + + Compares two objects and returns a value indicating whether one is less than, + equal to, or greater than the other. + + + The first object to compare. + The second object to compare. + + + + + Gets or sets the sorting direction + used by this comparer. + + + + + + Stable comparer for stable sorting algorithm. + + + The type of objects to compare. + + + This class helps sort the elements of an array without swapping + elements which are already in order. This comprises a stable + sorting algorithm. This class is used by the method to produce a stable sort + of its given arguments. + + + + In order to use this class, please use . + + + + + + + + + + + Constructs a new instance of the class. + + + The comparison function. + + + + + Compares two objects and returns a value indicating + whether one is less than, equal to, or greater than + the other. + + + The first object to compare. + The second object to compare. + + A signed integer that indicates the relative values of x and y. + + + + + Absolute convergence criteria. + + + + This class can be used to track progress and convergence + of methods which rely on the absolute change of a value. + + + + + // Create a new convergence criteria for a maximum of 10 iterations + var criteria = new AbsoluteConvergence(iterations: 10, tolerance: 0.1); + + int progress = 1; + + do + { + // Do some processing... + + + // Update current iteration information: + criteria.NewValue = 12345.6 / progress++; + + } while (!criteria.HasConverged); + + + // The method will converge after reaching the + // maximum of 10 iterations with a final value + // of 1371.73: + + int iterations = criteria.CurrentIteration; // 10 + double value = criteria.OldValue; // 1371.7333333 + + + + + + + Common interface for convergence detection algorithms that + depend solely on a single value (such as the iteration error). + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 0. + The maximum change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + + + + + Clears this instance. + + + + + + Gets or sets the maximum change in the watched value + after an iteration of the algorithm used to detect + convergence. Default is 0. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. Default + is 100. + + + + + + Gets the watched value before the iteration. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has converged. + + + + + + Relative convergence criteria. + + + + This class can be used to track progress and convergence + of methods which rely on the relative change of a value. + + + + + // Create a new convergence criteria with unlimited iterations + var criteria = new RelativeConvergence(iterations: 0, tolerance: 0.1); + + int progress = 1; + + do + { + // Do some processing... + + + // Update current iteration information: + criteria.NewValue = 12345.6 / progress++; + + } while (!criteria.HasConverged); + + + // The method will converge after reaching the + // maximum of 11 iterations with a final value + // of 1234.56: + + int iterations = criteria.CurrentIteration; // 11 + double value = criteria.OldValue; // 1234.56 + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 100. + The maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 0. + The maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + The minimum number of convergence checks that the + iterative algorithm should pass before convergence can be declared + reached. + + + + + Resets this instance, reverting all iteration statistics + statistics (number of iterations, last error) back to zero. + + + + + + Gets or sets the maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is zero. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. Default + is 100. + + + + + + Gets or sets the watched value before the iteration. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has converged. + + + + + + Relative parameter change convergence criteria. + + + + This class can be used to track progress and convergence + of methods which rely on the maximum relative change of + the values within a parameter vector. + + + + + // Converge if the maximum change amongst all parameters is less than 0.1: + var criteria = new RelativeParameterConvergence(iterations: 0, tolerance: 0.1); + + int progress = 1; + double[] parameters = { 12345.6, 952.12, 1925.1 }; + + do + { + // Do some processing... + + // Update current iteration information: + criteria.NewValues = parameters.Divide(progress++); + + } while (!criteria.HasConverged); + + + // The method will converge after reaching the + // maximum of 11 iterations with a final value + // of { 1234.56, 95.212, 192.51 }: + + int iterations = criteria.CurrentIteration; // 11 + var v = criteria.OldValues; // { 1234.56, 95.212, 192.51 } + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The maximum number of iterations which should be + performed by the iterative algorithm. Setting to zero indicates there + is no maximum number of iterations. Default is 0. + The maximum relative change in the watched value + after an iteration of the algorithm used to detect convergence. + Default is 0. + + + + + Clears this instance. + + + + + + Gets or sets the maximum change in the watched value + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the iterative algorithm. + + + + + + Gets the maximum relative parameter + change after the last iteration. + + + + + + Gets or sets the watched value before the iteration. + + + + + + Gets or sets the watched value after the iteration. + + + + + + Gets or sets the current iteration number. + + + + + + Gets whether the algorithm has diverged. + + + + + + Gets whether the algorithm has converged. + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. + If the matrix is not symmetric or positive definite, the constructor returns a partial + decomposition and sets two internal variables that can be queried using the + and properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + Constructs a new Cholesky Decomposition. + The matrix to be decomposed. + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square root free LDLt decomposition, + false otherwise. + + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square-root free LDLt decomposition, + false otherwise. + True to assume the value + matrix is a lower triangular symmetric matrix, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric and positive definite. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + Solves a set of equation systems of type A * x = b. + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Computes the inverse of the decomposed matrix. + + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is symmetric. + + + + + + Returns if the matrix is positive definite. + + + + + + Returns the left (lower) triangular factor L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal elements in a LDLt decomposition. + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. + If the matrix is not symmetric or positive definite, the constructor returns a partial + decomposition and sets two internal variables that can be queried using the + and properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + Constructs a new Cholesky Decomposition. + The matrix to be decomposed. + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square root free LDLt decomposition, + false otherwise. + + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square-root free LDLt decomposition, + false otherwise. + True to assume the value + matrix is a lower triangular symmetric matrix, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric and positive definite. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + Solves a set of equation systems of type A * x = b. + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Computes the inverse of the decomposed matrix. + + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is symmetric. + + + + + + Returns if the matrix is positive definite. + + + + + + Returns the left (lower) triangular factor L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal elements in a LDLt decomposition. + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. + If the matrix is not symmetric or positive definite, the constructor returns a partial + decomposition and sets two internal variables that can be queried using the + and properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + Constructs a new Cholesky Decomposition. + The matrix to be decomposed. + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square root free LDLt decomposition, + false otherwise. + + + + Constructs a new Cholesky Decomposition. + + The matrix to be decomposed. + True to perform a square-root free LDLt decomposition, + false otherwise. + True to assume the value + matrix is a lower triangular symmetric matrix, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric and positive definite. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + Solves a set of equation systems of type A * X = B. + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + Solves a set of equation systems of type A * x = b. + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Computes the inverse of the decomposed matrix. + + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is symmetric. + + + + + + Returns if the matrix is positive definite. + + + + + + Returns the left (lower) triangular factor L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal elements in a LDLt decomposition. + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Determines the eigenvalues and eigenvectors of a real square matrix. + + + + In the mathematical discipline of linear algebra, eigendecomposition + or sometimes spectral decomposition is the factorization of a matrix + into a canonical form, whereby the matrix is represented in terms of + its eigenvalues and eigenvectors. + + If A is symmetric, then A = V * D * V' and A = V * V' + where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. + If A is not symmetric, the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. + The columns of V represent the eigenvectors in the sense that A * V = V * D. + The matrix V may be badly conditioned, or even singular, so the validity of the equation + A = V * D * inverse(V) depends upon the condition of V. + + + + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + + + Construct an eigenvalue decomposition. + + The matrix to be decomposed. + + Defines if the matrix should be assumed as being symmetric + regardless if it is or not. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the eigenvalues. + + + Returns the imaginary parts of the eigenvalues. + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Gram-Schmidt Orthogonalization. + + + + + + Initializes a new instance of the class. + + + The matrix A to be decomposed. + + + + + Initializes a new instance of the class. + + + The matrix A to be decomposed. + True to use modified Gram-Schmidt; false + otherwise. Default is true (and is the recommended setup). + + + + + Returns the orthogonal factor matrix Q. + + + + + + Returns the upper triangular factor matrix R. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Singular Value Decomposition for a rectangular matrix. + + + + + For an m-by-n matrix A with m >= n, the singular value decomposition + is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + an n-by-n orthogonal matrix V so that A = U * S * V'. + The singular values, sigma[k] = S[k,k], are ordered so that + sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + + The singular value decomposition always exists, so the constructor will + never fail. The matrix condition number and the effective numerical + rank can be computed from this decomposition. + + WARNING! Please be aware that if A has less rows than columns, it is better + to compute the decomposition on the transpose of A and then swap the left + and right eigenvectors. If the routine is computed on A directly, the diagonal + of singular values may contain one or more zeros. The identity A = U * S * V' + may still hold, however. To overcome this problem, pass true to the + autoTranspose + argument of the class constructor. + + + This routine computes the economy decomposition of A. + + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + + + + Constructs a new singular value decomposition. + + + + The matrix to be decomposed. + + Pass if the left singular vector matrix U + should be computed. Pass otherwise. Default + is . + + Pass if the right singular vector matrix V + should be computed. Pass otherwise. Default + is . + + Pass to automatically transpose the value matrix in + case JAMA's assumptions about the dimensionality of the matrix are violated. + Pass otherwise. Default is . + + Pass to perform the decomposition in place. The matrix + will be destroyed in the process, resulting in less + memory comsumption. + + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form AX = B. + + Parameter B from the equation AX = B. + The solution X from equation AX = B. + + + + Solves a linear equation system of the form Ax = b. + + The b from the equation Ax = b. + The x from equation Ax = b. + + + + Computes the (pseudo-)inverse of the matrix given to the Singular value decomposition. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns the condition number max(S) / min(S). + + + + + + Returns the singularity threshold. + + + + + + Returns the Two norm. + + + + + + Returns the effective numerical matrix rank. + + + Number of non-negligible singular values. + + + + + Gets whether the decomposed matrix is singular. + + + + + + Gets the one-dimensional array of singular values. + + + + + + Returns the block diagonal matrix of singular values. + + + + + + Returns the V matrix of Singular Vectors. + + + + + + Returns the U matrix of Singular Vectors. + + + + + + Returns the ordering in which the singular values have been sorted. + + + + + + Returns the absolute value of the matrix determinant. + + + + + + Returns the log of the absolute value for the matrix determinant. + + + + + + Returns the pseudo-determinant for the matrix. + + + + + + Returns the log of the pseudo-determinant for the matrix. + + + + + + Romberg's method for numerical integration. + + + + + In numerical analysis, Romberg's method (Romberg 1955) is used to estimate + the definite integral ∫_a^b(x) dx by applying Richardson extrapolation + repeatedly on the trapezium rule or the rectangle rule (midpoint rule). The + estimates generate a triangular array. Romberg's method is a Newton–Cotes + formula – it evaluates the integrand at equally spaced points. The integrand + must have continuous derivatives, though fairly good results may be obtained + if only a few derivatives exist. If it is possible to evaluate the integrand + at unequally spaced points, then other methods such as Gaussian quadrature + and Clenshaw–Curtis quadrature are generally more accurate. + + + + References: + + + Wikipedia, The Free Encyclopedia. Romberg's method. Available on: + http://en.wikipedia.org/wiki/Romberg's_method + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Constructs a new Romberg's integration method. + + + + + + Constructs a new Romberg's integration method. + + + The unidimensional function whose integral should be computed. + + + + + Constructs a new Romberg's integration method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Constructs a new Romberg's integration method. + + + The number of steps used in Romberg's method. Default is 6. + + + + + Constructs a new Romberg's integration method. + + + The number of steps used in Romberg's method. Default is 6. + The unidimensional function whose integral should be computed. + + + + + Constructs a new Romberg's integration method. + + + The number of steps used in Romberg's method. Default is 6. + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Computes the area under the integral for the given function, + in the given integration interval, using Romberg's method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Computes the area under the integral for the given function, + in the given integration interval, using Romberg's method. + + + The number of steps used in Romberg's method. Default is 6. + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the unidimensional function + whose integral should be computed. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets or sets the number of steps used + by Romberg's method. Default is 6. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + Trapezoidal rule for numerical integration. + + + + + In numerical analysis, the trapezoidal rule (also known as the trapezoid rule + or trapezium rule) is a technique for approximating the definite integral + ∫_a^b(x) dx. The trapezoidal rule works by approximating the region + under the graph of the function f(x) as a trapezoid and calculating its area. + It follows that ∫_a^b(x) dx ~ (b - a) [f(a) - f(b)] / 2. + + + + References: + + + Wikipedia, The Free Encyclopedia. Trapezoidal rule. Available on: + http://en.wikipedia.org/wiki/Trapezoidal_rule + + + + + + + Let's say we would like to compute the definite integral of the function + f(x) = cos(x) in the interval -1 to +1 using a variety of integration + methods, including the , + and . Those methods can compute definite + integrals where the integration interval is finite: + + + + // Declare the function we want to integrate + Func<double, double> f = (x) => Math.Cos(x); + + // We would like to know its integral from -1 to +1 + double a = -1, b = +1; + + // Integrate! + double trapez = TrapezoidalRule.Integrate(f, a, b, steps: 1000); // 1.6829414 + double romberg = RombergMethod.Integrate(f, a, b); // 1.6829419 + double nagk = NonAdaptiveGaussKronrod.Integrate(f, a, b); // 1.6829419 + + + + Moreover, it is also possible to calculate the value of improper integrals + (it is, integrals with infinite bounds) using , + as shown below. Let's say we would like to compute the area under the Gaussian + curve from -infinite to +infinite. While this function has infinite bounds, this + function is known to integrate to 1. + + + // Declare the Normal distribution's density function (which is the Gaussian's bell curve) + Func<double, double> g = (x) => (1 / Math.Sqrt(2 * Math.PI)) * Math.Exp(-(x * x) / 2); + + // Integrate! + double iagk = InfiniteAdaptiveGaussKronrod.Integrate(g, + Double.NegativeInfinity, Double.PositiveInfinity); // Result should be 0.99999... + + + + + + + + + + + + Constructs a new integration method. + + + + + + Constructs a new integration method. + + + The unidimensional function whose integral should be computed. + + + + + Constructs a new integration method. + + + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Constructs a new integration method. + + + The number of steps into which the integration + interval will be divided. + + + + + Constructs a new integration method. + + + The number of steps into which the integration + interval will be divided. + The unidimensional function + whose integral should be computed. + + + + + Constructs a new integration method. + + + The number of steps into which the integration + interval will be divided. + The unidimensional function + whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + + + + Computes the area of the function under the selected . + The computed value will be available at this object's . + + + + True if the integration method succeeds, false otherwise. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Computes the area under the integral for the given function, + in the given integration interval, using the Trapezoidal rule. + + + The number of steps into which the integration interval will be divided. + The unidimensional function whose integral should be computed. + The beginning of the integration interval. + The ending of the integration interval. + + The integral's value in the current interval. + + + + + Gets or sets the unidimensional function + whose integral should be computed. + + + + + + Gets the numerically computed result of the + definite integral for the specified function. + + + + + + Gets or sets the number of steps into which the + integration interval will + be divided. Default is 6. + + + + + + Gets or sets the input range under + which the integral must be computed. + + + + + + GNU R algorithm environment. Work in progress. + + + + + + Creates a new vector. + + + + + + Creates a new matrix. + + + + + + Placeholder vector definition + + + + + + Vector definition operator. + + + + + + Inner vector object + + + + + + Initializes a new instance of the class. + + + + + + Implements the operator -. + + + + + + Implements the operator <. + + + + + + Implements the operator >. + + + + + + Performs an implicit conversion from + to . + + + + + + Performs an implicit conversion from + + to . + + + + + + Matrix definition operator. + + + + + + Inner matrix object. + + + + + + Initializes a new instance of the class. + + + + + + Implements the operator -. + + + + + + Implements the operator <. + + + + + + Implements the operator >. + + + + + + Performs an implicit conversion from + to + . + + + + + + Performs an implicit conversion from + + to . + + + + + + Gabor kernel types. + + + + + + Creates kernel based on the real part of the Gabor function. + + + + + + Creates a kernel based on the imaginary part of the Gabor function. + + + + + + Creates a kernel based on the Magnitude of the Gabor function. + + + + + + Creates a kernel based on the Squared Magnitude of the Gabor function. + + + + + + Gabor functions. + + + + This class has been contributed by Diego Catalano, author of the Catalano + Framework, a native port of AForge.NET and Accord.NET for Java and Android. + + + + + + 1-D Gabor function. + + + + + + 2-D Gabor function. + + + + + + Real part of the 2-D Gabor function. + + + + + + Imaginary part of the 2-D Gabor function. + + + + + + Computes the 2-D Gabor kernel. + + + + + + Computes the 2-D Gabor kernel. + + + + + + Computes the 2-D Gabor kernel. + + + + + + Computes the 2-D Gabor kernel. + + + + + + 2D circle class. + + + + + + Creates a new unit at the origin. + + + + + + Creates a new with the given radius + centered at the given x and y coordinates. + + + The x-coordinate of the circle's center. + The y-coordinate of the circle's center. + The circle radius. + + + + + Creates a new with the given radius + centered at the given x and y coordinates. + + + The x-coordinate of the circle's center. + The y-coordinate of the circle's center. + The circle radius. + + + + + Creates a new with the given radius + centered at the given center point coordinates. + + + The point at the circle's center. + The circle radius. + + + + + Creates a new from three non-linear points. + + + The first point. + The second point. + The third point. + + + + + Computes the distance from circle to point. + + + The point to have its distance from the circle computed. + + The distance from to this circle. + + + + + Gets the area of the circle (πR²). + + + + + + Gets the circumference of the circle (2πR). + + + + + + Gets the diameter of the circle (2R). + + + + + + Gets or sets the radius for this circle. + + + + + + Gets or sets the origin (center) of this circle. + + + + + + Discrete Curve Evolution. + + + + + The Discrete Curve Evolution (DCE) algorithm can be used to simplify + contour curves. It can preserve the outline of a shape by preserving + its most visually critical points. + + + The implementation available in the framework has been contributed by + Diego Catalano, from the Catalano Framework for Java. The original work + has been developed by Dr. Longin Jan Latecki, and has been redistributed + under the LGPL with explicit permission from the original author, as long + as the following references are acknowledged in derived applications: + + + L.J. Latecki and R. Lakaemper; Convexity rule for shape decomposition based + on discrete contour evolution. Computer Vision and Image Understanding 73 (3), + 441-454, 1999. + + + References: + + + L.J. Latecki and R. Lakaemper; Convexity rule for shape decomposition based + on discrete contour evolution. Computer Vision and Image Understanding 73 (3), + 441-454, 1999. + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Number of vertices. + + + + + Optimize specified shape. + + + Shape to be optimized. + + + Returns final optimized shape, which may have reduced amount of points. + + + + + + Gets or sets the number of vertices. + + + + + + 3D Plane class with normal vector and distance from origin. + + + + + + Creates a new object + passing through the . + + + The first component of the plane's normal vector. + The second component of the plane's normal vector. + The third component of the plane's normal vector. + + + + + Creates a new object + passing through the . + + + The plane's normal vector. + + + + + Initializes a new instance of the class. + + + The first component of the plane's normal vector. + The second component of the plane's normal vector. + The third component of the plane's normal vector. + + The distance from the plane to the origin. + + + + + Initializes a new instance of the class. + + + The plane's normal vector. + The distance from the plane to the origin. + + + + + Constructs a new object from three points. + + + The first point. + The second point. + The third point. + + A passing through the three points. + + + + + Computes the distance from point to plane. + + + The point to have its distance from the plane computed. + + The distance from to this plane. + + + + + Normalizes this plane by dividing its components + by the vector's norm. + + + + + + Implements the operator !=. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + The acceptance tolerance threshold to consider the instances equal. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The variable to put on the left hand side. Can + be either 'x', 'y' or 'z'. + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The variable to put on the left hand side. Can + be either 'x', 'y' or 'z'. + The format provider. + + + A that represents this instance. + + + + + + Gets the plane's normal vector. + + + + + + Gets or sets the constant a in the plane + definition a * x + b * y + c * z + d = 0. + + + + + + Gets or sets the constant b in the plane + definition a * x + b * y + c * z + d = 0. + + + + + + Gets or sets the constant c in the plane + definition a * x + b * y + c * z + d = 0. + + + + + + Gets or sets the distance offset + between the plane and the origin. + + + + + + 3D point structure with X, Y, and coordinates. + + + + + + Creates a new + structure from the given coordinates. + + + The x coordinate. + The y coordinate. + The z coordinate. + + + + + Creates a new + structure from the given coordinates. + + + The point coordinates. + + + + + Performs an implicit conversion from + to . + + + The point to be converted. + + + The result of the conversion. + + + + + + Performs an implicit conversion from + to . + + + The vector to be converted. + + + The result of the conversion. + + + + + + Performs a conversion from + to . + + + + + + Gets whether three points lie on the same line. + + + The first point. + The second point. + The third point. + + True if there is a line passing through all + three points; false otherwise. + + + + + Implements the operator !=. + + + + + + Implements the operator !=. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + The acceptance tolerance threshold to consider the instances equal. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Determines whether the specified is equal to this instance. + + + The to compare with this instance. + + + true if the specified is equal to this instance; otherwise, false. + + + + + + Returns a hash code for this instance. + + + + A hash code for this instance, suitable for use in hashing + algorithms and data structures like a hash table. + + + + + + Gets or sets the point's X coordinate. + + + + + + Gets or sets the point's Y coordinate. + + + + + + Gets or sets the point's Z coordinate. + + + + + + Gets the point at the 3D space origin: (0, 0, 0) + + + + + + Denavit Hartenberg matrix (commonly referred as T). + + + + + + Executes the transform calculations (T = Z*X). + + + Transform matrix T. + + Calling this method also updates the Transform property. + + + + + Gets or sets the transformation matrix T (as in T = Z * X). + + + + + + Gets or sets the matrix regarding X axis transformations. + + + + + + Gets or sets the matrix regarding Z axis transformations. + + + + + + Denavit Hartenberg model for joints. + + + + + This class represents either a model itself or a submodel + when used with a + DenavitHartenbergModelCombinator instance. + + + References: + + + Wikipedia contributors, "Denavit-Hartenberg parameters," Wikipedia, + The Free Encyclopedia, available at: + http://en.wikipedia.org/wiki/Denavit%E2%80%93Hartenberg_parameters + + + + + + + The following example shows the creation and animation + of a 2-link planar manipulator. + + + // Create the DH-model at location (0, 0, 0) + DenavitHartenbergModel model = new DenavitHartenbergModel(); + + // Add the first joint + model.Joints.Add(alpha: 0, theta: Math.PI / 4, radius: 35, offset: 0); + + // Add the second joint + model.Joints.Add(alpha: 0, theta: -Math.PI / 3, radius: 35, offset: 0); + + // Now move the arm + model.Joints[0].Parameters.Theta += Math.PI / 10; + model.Joints[1].Parameters.Theta -= Math.PI / 10; + + // Calculate the model + model.Compute(); + + + + + + + + + + Initializes a new instance of the + class given a specified model position in 3D space. + + + The model's position in 3D space. Default is (0,0,0). + + + + + Initializes a new instance of the + class at the origin of the space (0,0,0). + + + + + + Computes the entire model, calculating the + final position for each joint in the model. + + + The model transformation matrix + + + + + Calculates the entire model given it is attached to a parent model and computes each joint position. + + + Parent model this model is attached to. + + Model transform matrix of the whole chain (parent + model). + + This function assumes the parent model has already been calculated. + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Gets the model kinematic chain. + + + + + + Gets or sets the model position. + + + + + + Gets the transformation matrix T for the full model, given + as T = T_0 * T_1 * T_2 ...T_n in which T_i is the transform + matrix for each joint in the model. + + + + + + Denavit Hartenberg Model Combinator class to make combination + of models to create a complex model composed of multiple chains. + + + + + The following example shows the creation and animation of a + 2-link planar manipulator with a dual 2-link planar gripper. + + + + // Create the DH-model at (0, 0, 0) location + DenavitHartenbergModel model = new DenavitHartenbergModel(); + + // Add the first joint + model.Joints.Add(alpha: 0, theta: Math.PI / 4, radius: 35, offset: 0); + + // Add the second joint + model.Joints.Add(alpha: 0, theta: -Math.PI / 3, radius: 35, offset: 0); + + // Create the top finger + DenavitHartenbergModel model_tgripper = new DenavitHartenbergModel(); + model_tgripper.Joints.Add(alpha: 0, theta: Math.PI / 4, radius: 20, offset: 0); + model_tgripper.Joints.Add(alpha: 0, theta: -Math.PI / 3, radius: 20, offset: 0); + + // Create the bottom finger + DenavitHartenbergModel model_bgripper = new DenavitHartenbergModel(); + model_bgripper.Joints.Add(0, -Math.PI / 4, 20, 0); + model_bgripper.Joints.Add(0, Math.PI / 3, 20, 0); + + // Create the model combinator from the parent model + DenavitHartenbergModelCombinator arm = new DenavitHartenbergModelCombinator(model); + + // Add the top finger + arm.Children.Add(model_tgripper); + + // Add the bottom finger + arm.Children.Add(model_bgripper); + + // Calculate the whole model (parent model + children models) + arm.Compute(); + + + + + + + Initializes a new instance of the class. + + + The inner model contained at this node. + + + + + Calculates the whole combined model (this model plus all its + children plus all the children of the children and so on) + + + + + + Gets the parent of this node. + + + + + + Gets the model contained at this node. + + + + + + Gets the collection of models attached to this node. + + + + + + Collection of Denavit-Hartenberg model nodes. + + + + + + Initializes a new instance of the class. + + + The owner. + + + + + Adds a children model to the end of this . + + + + + + Inserts an element into the Collection<T> at the specified index. + + + + + + Gets the owner of this collection (i.e. the parent + which owns the + children contained at this collection. + + + + + + Denavit Hartenberg joint-description parameters. + + + + + + Initializes a new instance of the class. + + + Angle (in radians) of the Z axis relative to the last joint. + Angle (in radians) of the X axis relative to the last joint. + Length or radius of the joint. + Offset along Z axis relatively to the last joint. + + + + + Denavit Hartenberg parameters constructor + + + + + + Angle in radians about common normal, from + old z axis to the new z axis. + + + + + + Angle in radians about previous z, + from old x to the new x. + + + + + + Length of the joint (also known as a). + + + + + + Offset along previous z to the common normal (also known as d). + + + + + + Denavit-Hartenberg Model Joint. + + + + + + Initializes a new instance of the class. + + + The + parameters to be used to create the joint. + + + + + Initializes a new instance of the class. + + + Angle in radians on the Z axis relatively to the last joint. + Angle in radians on the X axis relatively to the last joint. + Length or radius of the joint. + Offset along Z axis relatively to the last joint. + + + + + Updates the joint transformation matrix and position + given a model transform matrix and reference position. + + + + + + Gets or sets the current associated with this joint. + + + + + + Gets or sets the position of this joint. + + + + + + Gets or sets the parameters for this joint. + + + + + + Collection of Denavit Hartenberg Joints. + + + + + + Adds an object to the end of this . + + + The + parameters specifying the joint to be added. + + + + + Adds an object to the end of this . + + + Angle in radians on the Z axis relatively to the last joint. + Angle in radians on the X axis relatively to the last joint. + Length or radius of the joint. + Offset along Z axis relatively to the last joint. + + + + + Static class Matrix. Defines a set of extension methods + that operates mainly on multidimensional arrays and vectors. + + + + + The matrix class is a static class containing several extension methods. + To use this class, import the and use the + standard .NET's matrices and jagged arrays. When you call the dot (.) + operator on those classes, the extension methods offered by this class + should become available through IntelliSense auto-complete. + + + +

Introduction

+ + + Declaring and using matrices in the Accord.NET Framework does + not requires much. In fact, it does not require anything else + that is not already present at the .NET Framework. If you have + already existing and working code using other libraries, you + don't have to convert your matrices to any special format used + by Accord.NET. This is because Accord.NET is built to interoperate + with other libraries and existing solutions, relying solely on + default .NET structures to work. + + + To begin, please add the following using directive on + top of your .cs (or equivalent) source code file: + + + using Accord.Math; + + + + This is all you need to start using the Accord.NET matrix library. + +

Creating matrices

+ + + Let's start by declaring a matrix, or otherwise specifying matrices + from other sources. The most straightforward way to declare a matrix + in Accord.NET is simply using: + + + double[,] matrix = + { + { 1, 2 }, + { 3, 4 }, + { 5, 6 }, + }; + + + + Yep, that is right. You don't need to create any fancy custom Matrix + classes or vectors to make Accord.NET work, which is a plus if you + have already existent code using other libraries. You are also free + to use both the multidimensional matrix syntax above or the jagged + matrix syntax below: + + + double[][] matrix = + { + new double[] { 1, 2 }, + new double[] { 3, 4 }, + new double[] { 5, 6 }, + }; + + + + Special purpose matrices can also be created through specialized methods. + Those include + + + // Creates a vector of indices + int[] idx = Matrix.Indices(0, 10); // { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } + + // Creates a step vector within a given interval + double[] interval = Matrix.Interval(from: -2, to: 4); // { -2, -1, 0, 1, 2, 3, 4 }; + + // Special matrices + double[,] I = Matrix.Identity(3); // creates a 3x3 identity matrix + double[,] magic = Matrix.Magic(5); // creates a magic square matrix of size 5 + + double[] v = Matrix.Vector(5, 1.0); // generates { 1, 1, 1, 1, 1 } + double[,] diagonal = Matrix.Diagonal(v); // matrix with v on its diagonal + + + + Another way to declare matrices is by parsing the contents of a string: + + + string str = @"1 2 + 3 4"; + + double[,] matrix = Matrix.Parse(str); + + + + You can even read directly from matrices formatted in C# syntax: + + + string str = @"double[,] matrix = + { + { 1, 2 }, + { 3, 4 }, + { 5, 6 }, + }"; + + double[,] multid = Matrix.Parse(str, CSharpMatrixFormatProvider.InvariantCulture); + double[,] jagged = Matrix.ParseJagged(str, CSharpMatrixFormatProvider.InvariantCulture); + + + + And even from Octave-compatible syntax! + + + string str = "[1 2; 3 4]"; + + double[,] matrix = Matrix.Parse(str, OctaveMatrixFormatProvider.InvariantCulture); + + + + There are also other methods, such as specialization for arrays and other formats. + For more details, please take a look on , + , , + and . + + + +

Matrix operations

+ + + Albeit being simple matrices, the framework leverages + .NET extension methods to support all basic matrix operations. For instance, + consider the elementwise operations (also known as dot operations in Octave): + + + double[] vector = { 0, 2, 4 }; + double[] a = vector.ElementwiseMultiply(2); // vector .* 2, generates { 0, 4, 8 } + double[] b = vector.ElementwiseDivide(2); // vector ./ 2, generates { 0, 1, 2 } + double[] c = vector.ElementwisePower(2); // vector .^ 2, generates { 0, 4, 16 } + + + + Operations between vectors, matrices, and both are also completely supported: + + + // Declare two vectors + double[] u = { 1, 6, 3 }; + double[] v = { 9, 4, 2 }; + + // Products between vectors + double inner = u.InnerProduct(v); // 39.0 + double[,] outer = u.OuterProduct(v); // see below + double[] kronecker = u.KroneckerProduct(v); // { 9, 4, 2, 54, 24, 12, 27, 12, 6 } + double[][] cartesian = u.CartesianProduct(v); // all possible pair-wise combinations + + /* outer = + { + { 9, 4, 2 }, + { 54, 24, 12 }, + { 27, 12, 6 }, + }; */ + + // Addition + double[] addv = u.Add(v); // { 10, 10, 5 } + double[] add5 = u.Add(5); // { 6, 11, 8 } + + // Elementwise operations + double[] abs = u.Abs(); // { 1, 6, 3 } + double[] log = u.Log(); // { 0, 1.79, 1.09 } + + // Apply *any* function to all elements in a vector + double[] cos = u.Apply(Math.Cos); // { 0.54, 0.96, -0.989 } + u.ApplyInPlace(Math.Cos); // can also do optionally in-place + + + // Declare a matrix + double[,] M = + { + { 0, 5, 2 }, + { 2, 1, 5 } + }; + + // Extract a subvector from v: + double[] vcut = v.Submatrix(0, 1); // { 9, 4 } + + // Some operations between vectors and matrices + double[] Mv = m.Multiply(v); // { 24, 32 } + double[] vM = vcut.Multiply(m); // { 8, 49, 38 } + + // Some operations between matrices + double[,] Md = m.MultiplyByDiagonal(v); // { { 0, 20, 4 }, { 18, 4, 10 } } + double[,] MMt = m.MultiplyByTranspose(m); // { { 29, 15 }, { 15, 30 } } + + + + Please note this is by no means an extensive list; please take a look on + all members available on this class or (preferably) use IntelliSense to + navigate through all possible options when trying to perform an operation. +
+ + + + + + + + +
+ + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Start row index + End row index + Start column index + End column index + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + The matrix where results should be stored. + Start row index + End row index + Start column index + End column index + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + The matrix where results should be stored. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Starting row index + End row index + Array of column indices + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices + Start column index + End column index + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Start row index + End row index + Start column index + End column index + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + Set to true to avoid memory allocations + when possible. This might result on the shallow copies of some + elements. Default is false (default is to always provide a true, + deep copy of every element in the matrices, using more memory). + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of indices. + True to return a transposed matrix; false otherwise. + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Array of row indices + Start column index + End column index + Set to true to avoid memory allocations + when possible. This might result on the shallow copies of some + elements. Default is false (default is to always provide a true, + deep copy of every element in the matrices, using more memory). + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a sub matrix extracted from the current matrix. + + + The matrix to return the submatrix from. + Starting row index + End row index + Array of column indices + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Array of indices. + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Array of indices. + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Starting index. + End index. + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a subvector extracted from the current vector. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a subvector extracted from the current vector. + + + The vector to return the subvector from. + Array of indices. + + + + + Returns subgroups extracted from the given vector. + + + The vector to extract the groups from. + The vector of indices for the groups. + + + + + Returns subgroups extracted from the given vector, assuming that + the groups should have been labels from 0 until the given number + of . + + + The vector to extract the groups from. + The vector of indices for the groups. + The number of classes in the groups. Specifying this + parameter will make the method assume the groups should be containing + integer labels ranging from 0 until the number of classes. + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Extracts a selected area from a matrix. + + + + Routine adapted from Lutz Roeder's Mapack for .NET, September 2000. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a new multidimensional matrix. + + + + + + Returns a new multidimensional matrix. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a matrix with all elements set to a given value. + + + + + + Returns a new jagged matrix. + + + + + + Returns a new jagged matrix. + + + + + + Returns a square diagonal matrix of the given size. + + + + + + Returns a matrix of the given size with value on its diagonal. + + + + + + Return a square matrix with a vector of values on its diagonal. + + + + + + Return a jagged matrix with a vector of values on its diagonal. + + + + + + Returns a square diagonal matrix of the given size. + + + + + + Return a square matrix with a vector of values on its diagonal. + + + + + + Returns a matrix with a vector of values on its diagonal. + + + + + + Returns the Identity matrix of the given size. + + + + + + Returns the Identity matrix of the given size. + + + + + + Creates a jagged magic square matrix. + + + + + + Creates a magic square matrix. + + + + + + Creates a centering matrix of size N x N in the + form (I - 1N) where 1N is a matrix with + all elements equal to 1 / N. + + + + + + Creates a rows-by-cols matrix with uniformly distributed random data. + + + + + Creates a rows-by-cols matrix with uniformly distributed random data. + + + + + + Creates a rows-by-cols matrix with uniformly distributed random data. + + + + + + Creates a rows-by-cols matrix random data drawn from a given distribution. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with random data drawn from a given distribution. + + + + + + Creates a matrix with a single row vector. + + + + + + Creates a matrix with a single column vector. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a vector with the given dimension and starting values. + + + + + + Creates a index vector. + + + + + + Creates a index vector. + + + + + + Gets the dimensions of an array. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates a bi-dimensional mesh matrix. + + + + + // The Mesh method can be used to generate all + // possible (x,y) pairs between two ranges. + + // We can create a grid as + double[][] grid = Matrix.Mesh + ( + rowMin: 0, rowMax: 1, rowStepSize: 0.3, + colMin: 0, colMax: 1, colStepSize: 0.1 + ); + + // Now we can plot the points on-screen + ScatterplotBox.Show("Grid (step size)", grid).Hold(); + + + + The resulting image is shown below. + + + + + + + Creates a bi-dimensional mesh matrix. + + + + + + Creates a bi-dimensional mesh matrix. + + + + + // The Mesh method can be used to generate all + // possible (x,y) pairs between two ranges. + + // We can create a grid as + double[][] grid = Matrix.Mesh + ( + rowMin: 0, rowMax: 1, rowSteps: 10, + colMin: 0, colMax: 1, colSteps: 5 + ); + + // Now we can plot the points on-screen + ScatterplotBox.Show("Grid (fixed steps)", grid).Hold(); + + + + The resulting image is shown below. + + + + + + + Creates a bi-dimensional mesh matrix. + + + + + // The Mesh method can be used to generate all + // possible (x,y) pairs between two ranges. + + // We can create a grid as + double[][] grid = Matrix.Mesh + ( + rowRange: new DoubleRange(0, 1), rowStepSize: 0.3, + colRange: new DoubleRange(0, 1), colStepSize: 0.1 + ); + + // Now we can plot the points on-screen + ScatterplotBox.Show("Grid (step size)", grid).Hold(); + + + + The resulting image is shown below. + + + + + + + Creates a bi-dimensional mesh matrix. + + + The values to be replicated vertically. + The values to be replicated horizontally. + + + + // The Mesh method generates all possible (x,y) pairs + // between two vector of points. For example, let's + // suppose we have the values: + // + double[] a = { 0, 1 }; + double[] b = { 0, 1 }; + + // We can create a grid as + double[][] grid = a.Mesh(b); + + // the result will be: + double[][] expected = + { + new double[] { 0, 0 }, + new double[] { 0, 1 }, + new double[] { 1, 0 }, + new double[] { 1, 1 }, + }; + + + + + + + Generates a 2-D mesh grid from two vectors a and b, + generating two matrices len(a) x len(b) with all + all possible combinations of values between the two vectors. This + method is analogous to MATLAB/Octave's meshgrid function. + + + A tuple containing two matrices: the first containing values + for the x-coordinates and the second for the y-coordinates. + + + // The MeshGrid method generates two matrices that can be + // used to generate all possible (x,y) pairs between two + // vector of points. For example, let's suppose we have + // the values: + // + double[] a = { 1, 2, 3 }; + double[] b = { 4, 5, 6 }; + + // We can create a grid + var grid = a.MeshGrid(b); + + // get the x-axis values // | 1 1 1 | + double[,] x = grid.Item1; // x = | 2 2 2 | + // | 3 3 3 | + + // get the y-axis values // | 4 5 6 | + double[,] y = grid.Item2; // y = | 4 5 6 | + // | 4 5 6 | + + // we can either use those matrices separately (such as for plotting + // purposes) or we can also generate a grid of all the (x,y) pairs as + // + double[,][] xy = x.ApplyWithIndex((v, i, j) => new[] { x[i, j], y[i, j] }); + + // The result will be + // + // | (1, 4) (1, 5) (1, 6) | + // xy = | (2, 4) (2, 5) (2, 6) | + // | (3, 4) (3, 5) (3, 6) | + + + + + + Combines two vectors horizontally. + + + + + + Combines a vector and a element horizontally. + + + + + + Combines a vector and a element horizontally. + + + + + + Combines a matrix and a vector horizontally. + + + + + + Combines two matrices horizontally. + + + + + + Combines two matrices horizontally. + + + + + + Combines a matrix and a vector horizontally. + + + + + + Combines a matrix and a vector horizontally. + + + + + + Combine vectors horizontally. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines vectors vertically. + + + + + + Combines matrices vertically. + + + + + + Combines matrices vertically. + + + + + + Combines matrices vertically. + + + + + Expands a data vector given in summary form. + + + A base vector. + An array containing by how much each line should be replicated. + + + + + Expands a data matrix given in summary form. + + + A base matrix. + An array containing by how much each line should be replicated. + + + + + Splits a given vector into a smaller vectors of the given size. + This operation can be reverted using . + + + The vector to be splitted. + The size of the resulting vectors. + + An array of vectors containing the subdivisions of the given vector. + + + + + Merges a series of vectors into a single vector. This + operation can be reverted using . + + + The vectors to be merged. + The size of the inner vectors. + + A single array containing the given vectors. + + + + + Merges a series of vectors into a single vector. This + operation can be reverted using . + + + The vectors to be merged. + + A single array containing the given vectors. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many rows and columns to add at each side of the matrix. + + The original matrix with an extra row of zeros at the selected places. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many columns to add at the sides of the matrix. + How many rows to add at the bottom and top of the matrix. + + The original matrix with an extra row of zeros at the selected places. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many rows to add at the bottom. + How many rows to add at the top. + How many columns to add at the sides. + + The original matrix with an extra row of zeros at the selected places. + + + + + Pads a matrix by filling all of its sides with zeros. + + + The matrix whose contents will be padded. + How many rows to add at the bottom. + How many rows to add at the top. + How many columns to add at the left side. + How many columns to add at the right side. + + The original matrix with an extra row of zeros at the selected places. + + + + + Returns a represents a matrix. + + The matrix. + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + Returns a that represents a matrix. + + + The matrix. + + + If set to true, the matrix will be written using multiple + lines. If set to false, the matrix will be written in a + single line. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + The format to use when creating the resulting string. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + + The format to use when creating the resulting string. + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + + The matrix. + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + + Returns a that represents a matrix. + + The matrix. + + The format to use when creating the resulting string. + + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + Returns a that represents a matrix. + + + The matrix. + + + The format to use when creating the resulting string. + + + + A that represents this instance. + + + + Please see , + , , + , or + for more details. + + + + + + Returns a that represents an array. + + + The array. + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Returns a that represents an array. + + + The array. + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Returns a that represents an array. + + + The matrix. + + + The format to use when creating the resulting string. + + + + The to be used + when creating the resulting string. Default is to use + . + + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Returns a that represents an array. + + + The array. + + + The format to use when creating the resulting string. + + + + A that represents this instance. + + + + Please see , + or + for examples and more details. + + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + + The string representation of the matrix. + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + A return value indicates whether the conversion succeeded or failed. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + When this method returns, contains the double-precision floating-point + number matrix equivalent to the parameter, if the conversion succeeded, + or null if the conversion failed. The conversion fails if the parameter + is null, is not a matrix in a valid format, or contains elements which represent + a number less than MinValue or greater than MaxValue. This parameter is passed + uninitialized. + + + + + Converts the string representation of a matrix to its + double-precision floating-point number matrix equivalent. + A return value indicates whether the conversion succeeded or failed. + + The string representation of the matrix. + + The format provider to use in the conversion. Default is to use + . + + A double-precision floating-point number matrix parsed + from the given string using the given format provider. + When this method returns, contains the double-precision floating-point + number matrix equivalent to the parameter, if the conversion succeeded, + or null if the conversion failed. The conversion fails if the parameter + is null, is not a matrix in a valid format, or contains elements which represent + a number less than MinValue or greater than MaxValue. This parameter is passed + uninitialized. + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise absolute value. + + + + + + Elementwise Square root. + + + + + + Elementwise Square root. + + + + + + Elementwise Log operation. + + + + + + Elementwise Exp operation. + + + + + + Elementwise Exp operation. + + + + + + Elementwise Log operation. + + + + + + Elementwise Log operation. + + + + + + Elementwise power operation. + + + A matrix. + A power. + + Returns x elevated to the power of y. + + + + + Elementwise power operation. + + + A matrix. + A power. + + Returns x elevated to the power of y. + + + + + Elementwise divide operation. + + + + + + Elementwise divide operation. + + + + + + Elementwise divide operation. + + + + + + Elementwise division. + + + + + + Elementwise division. + + + + + + Elementwise division. + + + + + + Elementwise multiply operation. + + + + + Elementwise multiply operation. + + + + + Elementwise multiply operation. + + + + + + Elementwise multiply operation. + + + + + + Elementwise multiplication. + + + + + + Elementwise multiplication. + + + The left matrix a. + The right vector b. + + If set to 0, b will be multiplied with every row vector in a. + If set to 1, b will be multiplied with every column vector. + + + + + + Elementwise multiplication. + + + The left matrix a. + The right vector b. + The result vector r. + + If set to 0, b will be multiplied with every row vector in a. + If set to 1, b will be multiplied with every column vector. + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side matrix b: + double[,] rightSide = { {1}, {2}, {3} }; + + // Solve the linear system Ax = b by finding x: + double[,] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { {-1/18}, {2/18}, {5/18} }. + + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side vector b: + double[] rightSide = { 1, 2, 3 }; + + // Solve the linear system Ax = b by finding x: + double[] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { -1/18, 2/18, 5/18 }. + + + + + + + Computes the inverse of a matrix. + + + + + + Computes the inverse of a matrix. + + + + + + Computes the pseudo-inverse of a matrix. + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side matrix b: + double[,] rightSide = { {1}, {2}, {3} }; + + // Solve the linear system Ax = b by finding x: + double[,] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { {-1/18}, {2/18}, {5/18} }. + + + + + + + Returns the solution matrix if the matrix is square or the least squares solution otherwise. + + + The matrix for the linear problem. + The right side b. + True to produce a solution even if the + is singular; false otherwise. Default is false. + + + Please note that this does not check if the matrix is non-singular + before attempting to solve. If a least squares solution is desired + in case the matrix is singular, pass true to the + parameter when calling this function. + + + + + // Create a matrix. Please note that this matrix + // is singular (i.e. not invertible), so only a + // least squares solution would be feasible here. + + double[,] matrix = + { + { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 }, + }; + + // Define a right side vector b: + double[] rightSide = { 1, 2, 3 }; + + // Solve the linear system Ax = b by finding x: + double[] x = Matrix.Solve(matrix, rightSide, leastSquares: true); + + // The answer should be { -1/18, 2/18, 5/18 }. + + + + + + + Computes the inverse of a matrix. + + + + + + Computes the inverse of a matrix. + + + + + + Computes the pseudo-inverse of a matrix. + + + + + + Converts a jagged-array into a multidimensional array. + + + + + + Converts a jagged-array into a multidimensional array. + + + + + + Converts an array into a multidimensional array. + + + + + + Converts an array into a multidimensional array. + + + + + + Converts an array into a multidimensional array. + + + + + + Converts a multidimensional array into a jagged array. + + + + + + Converts a multidimensional array into a jagged array. + + + + + + Converts a double-precision floating point multidimensional + array into a double-precision floating point multidimensional + array. + + + + + + Converts a byte multidimensional array into a double- + precision floating point multidimensional array. + + + + + + Converts a double-precision floating point multidimensional + array into a single-precision floating point multidimensional + array. + + + + + + Converts a single-precision floating point multidimensional + array into a double-precision floating point multidimensional + array. + + + + + + Truncates a double matrix to integer values. + + The matrix to be truncated. + + + + + Truncates a double matrix to integer values. + + The matrix to be truncated. + + + + + Converts a matrix to integer values. + + + The matrix to be converted. + + + + + Converts a matrix to integer values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts an integer matrix to double values. + + + The matrix to be converted. + + + + + Converts a double-precision floating point multidimensional + array into a single-precision floating point multidimensional + array. + + + + + + Converts a double-precision floating point multidimensional + array into a single-precision floating point multidimensional + array. + + + + + + Truncates a double vector to integer values. + + The vector to be truncated. + + + + + Converts a vector to integer values. + + + The vector to be converted. + + + + + Converts a vector to integer values. + + + The vector to be converted. + + + + + Converts a integer vector into a double vector. + + The vector to be converted. + + + + + Converts a double vector into a single vector. + + The vector to be converted. + + + + + Converts the values of a vector using the given converter expression. + + The type of the input. + The type of the output. + The vector to be converted. + The converter function. + + + + + Converts the values of a matrix using the given converter expression. + + The type of the input. + The type of the output. + The matrix to be converted. + The converter function. + + + + + Converts the values of a matrix using the given converter expression. + + The type of the input. + The type of the output. + The vector to be converted. + The converter function. + + + + + Converts an object into another type, irrespective of whether + the conversion can be done at compile time or not. This can be + used to convert generic types to numeric types during runtime. + + + The destination type. + + The value to be converted. + + The result of the conversion. + + + + + Converts the values of a vector using the given converter expression. + + The type of the output. + The vector or array to be converted. + + + + + Creates a vector containing every index that can be used to + address a given , in order. + + + The array whose indices will be returned. + + + An enumerable object that can be used to iterate over all + positions of the given System.Array. + + + + + double[,] a = + { + { 5.3, 2.3 }, + { 4.2, 9.2 } + }; + + foreach (int[] idx in a.GetIndices()) + { + // Get the current element + double e = (double)a.GetValue(idx); + } + + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts a DataTable to a double[,] array. + + + + + + Converts an array of values into a , + attempting to guess column types by inspecting the data. + + + The values to be converted. + + A containing the given values. + + + + // Specify some data in a table format + // + object[,] data = + { + { "Id", "IsSmoker", "Age" }, + { 0, 1, 10 }, + { 1, 1, 15 }, + { 2, 0, 40 }, + { 3, 1, 20 }, + { 4, 0, 70 }, + { 5, 0, 55 }, + }; + + // Create a new table with the data + DataTable dataTable = data.ToTable(); + + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataTable to a double[][] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a double[] array. + + + + + + Converts a DataColumn to a generic array. + + + + + + Converts a DataColumn to a generic array. + + + + + + Converts a DataTable to a generic array. + + + + + + Converts a DataTable to a generic array. + + + + + + Converts a DataColumn to a int[] array. + + + + + + Converts a DataTable to a int[][] array. + + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of two matrices A and B. + + + The left matrix A. + The right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product R = A*B of two matrices A + and B, storing the result in matrix R. + + + The left matrix A. + The right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and transpose of B. + + + The left matrix A. + The transposed right matrix B. + The product A*B' of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and transpose of B. + + + The left matrix A. + The transposed right matrix B. + The product A*B' of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and + transpose of B, storing the result in matrix R. + + + The left matrix A. + The transposed right matrix B. + The matrix R to store the product R = A*B' + of the given matrices A and B. + + + + + Computes the product A*B' of matrix A and + transpose of B, storing the result in matrix R. + + + The left matrix A. + The transposed right matrix B. + The matrix R to store the product R = A*B' + of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The product A'*B of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The product A'*B of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The matrix R to store the product R = A'*B + of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and matrix B. + + + The transposed left matrix A. + The right matrix B. + The matrix R to store the product R = A'*B + of the given matrices A and B. + + + + + Computes the product A'*B of matrix A transposed and vector b. + + + The transposed left matrix A. + The right column vector b. + The product A'*b of the given matrices A and vector b. + + + + + Computes the product A'*b of matrix A transposed and column vector b. + + + The transposed left matrix A. + The right column vector b. + The vector r to store the product r = A'*b + of the given matrix A and vector b. + + + + + Computes the product A'*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A'*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*B of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Computes the product A*inv(B) of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of inverse right matrix B. + The product A*B of the given matrices A and B. + + + + + Computes the product A*inv(B) of matrix A and diagonal matrix B. + + + The left matrix A. + The diagonal vector of inverse right matrix B. + The matrix R to store the product R = A*B + of the given matrices A and B. + + + + + Multiplies a row vector v and a matrix A, + giving the product v'*A. + + + The row vector v. + The matrix A. + The product v'*Aof the multiplication of the + given row vector v and matrix A. + + + + + Multiplies a row vector v and a matrix A, + giving the product v'*A. + + + The row vector v. + The matrix A. + The product v'*Aof the multiplication of the + given row vector v and matrix A. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A and a column vector v, + giving the product A*v + + + The matrix A. + The column vector v. + The product A*v of the multiplication of the + given matrix A and column vector v. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The product A*x of the multiplication of the + given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The product A*x of the multiplication of the + given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The product A*x of the multiplication of the + given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The matrix R to store the product R=A*x + of the multiplication of the given matrix A and scalar x. + + + + + Multiplies a matrix A by a scalar x. + + + The matrix A. + The scalar x. + The matrix R to store the product R=A*x + of the multiplication of the given matrix A and scalar x. + + + + + Multiplies a vector v by a scalar x. + + The vector v. + The scalar x. + The product v*x of the multiplication of the + given vector v and scalar x. + + + + + Multiplies a vector v by a scalar x. + + The vector v. + The scalar x. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The product v*x of the multiplication of the + given vector v and scalar x. + + + + + Multiplies a vector v by a scalar x. + + The vector v. + The scalar x. + The product v*x of the multiplication of the + given vector v and scalar x. + + + + + Multiplies a scalar x by a matrix A. + + The scalar x. + The matrix A. + The product x*A of the multiplication of the + given scalar x and matrix A. + + + + + Multiplies a scalar x by a matrix A. + + The scalar x. + The matrix A. + The product x*A of the multiplication of the + given scalar x and matrix A. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Multiplies a scalar x by a vector v. + + The scalar x. + The vector v. + The product x*v of the multiplication of the + given scalar x and vector v. + + + + + Divides a scalar by a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The division quotient of the given vector a and scalar b. + + + + Divides a scalar by a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The division quotient of the given vector a and scalar b. + + + + + Divides a vector by a scalar. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The division quotient of the given vector a and scalar b. + + + + + Divides a vector by a scalar. + + + A vector. + A scalar. + + The division quotient of the given vector a and scalar b. + + + + + Divides a vector by a scalar. + + + A vector. + A scalar. + + The division quotient of the given vector a and scalar b. + + + + + Elementwise divides a scalar by a vector. + + + A vector. + A scalar. + + The division quotient of the given scalar a and vector b. + + + + + Divides two matrices by multiplying A by the inverse of B. + + + The first matrix. + The second matrix (which will be inverted). + + The result from the division AB^-1 of the given matrices. + + + + + Divides a matrix by a scalar. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The division quotient of the given matrix and scalar. + + + + + Divides a matrix by a scalar. + + + A matrix. + A scalar. + + The division quotient of the given matrix and scalar. + + + + + Elementwise divides a scalar by a matrix. + + + A scalar. + A matrix. + + The elementwise division of the given scalar and matrix. + + + + + Elementwise divides a scalar by a matrix. + + + A scalar. + A matrix. + + The elementwise division of the given scalar and matrix. + + + + + Gets the inner product (scalar product) between two vectors (a'*b). + + + A vector. + A vector. + + The inner product of the multiplication of the vectors. + + + + In mathematics, the dot product is an algebraic operation that takes two + equal-length sequences of numbers (usually coordinate vectors) and returns + a single number obtained by multiplying corresponding entries and adding up + those products. The name is derived from the dot that is often used to designate + this operation; the alternative name scalar product emphasizes the scalar + (rather than vector) nature of the result. + + The principal use of this product is the inner product in a Euclidean vector space: + when two vectors are expressed on an orthonormal basis, the dot product of their + coordinate vectors gives their inner product. + + + + + + Gets the inner product (scalar product) between two vectors (a'*b). + + + A vector. + A vector. + + The inner product of the multiplication of the vectors. + + + + In mathematics, the dot product is an algebraic operation that takes two + equal-length sequences of numbers (usually coordinate vectors) and returns + a single number obtained by multiplying corresponding entries and adding up + those products. The name is derived from the dot that is often used to designate + this operation; the alternative name scalar product emphasizes the scalar + (rather than vector) nature of the result. + + The principal use of this product is the inner product in a Euclidean vector space: + when two vectors are expressed on an orthonormal basis, the dot product of their + coordinate vectors gives their inner product. + + + + + + Gets the outer product (matrix product) between two vectors (a*bT). + + + + In linear algebra, the outer product typically refers to the tensor + product of two vectors. The result of applying the outer product to + a pair of vectors is a matrix. The name contrasts with the inner product, + which takes as input a pair of vectors and produces a scalar. + + + + + + Vector product. + + + + The cross product, vector product or Gibbs vector product is a binary operation + on two vectors in three-dimensional space. It has a vector result, a vector which + is always perpendicular to both of the vectors being multiplied and the plane + containing them. It has many applications in mathematics, engineering and physics. + + + + + + Vector product. + + + + + + Computes the Cartesian product of many sets. + + + + References: + - http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-Cartesian-product-with-linq.aspx + + + + + + Computes the Cartesian product of many sets. + + + + + + Computes the Cartesian product of two sets. + + + + + + Computes the Kronecker product between two matrices. + + + The left matrix a. + The right matrix b. + + The Kronecker product of the two matrices. + + + + + Computes the Kronecker product between two vectors. + + + The left vector a. + The right vector b. + + The Kronecker product of the two vectors. + + + + + Adds a scalar to each element of a matrix. + + + + + + Subtracts a scalar to each element of a matrix. + + + + + + Adds two matrices. + + + A matrix. + A matrix. + + The sum of the given matrices. + + + + + Adds two matrices. + + + A matrix. + A matrix. + + The sum of the given matrices. + + + + + Adds a matrix and a scalar. + + + A matrix. + A scalar. + + The sum of the given matrix and scalar. + + + + + Adds a vector to a column or row of a matrix. + + + A matrix. + A vector. + + Pass 0 if the vector should be added row-wise, + or 1 if the vector should be added column-wise. + + + + + + Adds a scalar to the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Adds a scalar to the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Subtracts a scalar from the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Subtracts a scalar from the diagonal of a matrix. + + + A matrix. + A scalar. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + + + + Adds a vector to a column or row of a matrix. + + + A matrix. + A vector. + The dimension to add the vector to. + + + + + Adds a vector to a column or row of a matrix. + + + A matrix. + A vector. + The dimension to add the vector to. + + + + + Adds two vectors. + + + A vector. + A vector. + + The addition of the given vectors. + + + + + Adds two vectors. + + + A vector. + A vector. + + The addition of the given vectors. + + + + + Subtracts two matrices. + + + A matrix. + A matrix. + True to perform the operation in-place, + overwriting the original matrix; false to return a new matrix. + + The subtraction of the given matrices. + + + + + Subtracts two matrices. + + + A matrix. + A matrix. + + The subtraction of the given matrices. + + + + + Subtracts a scalar from each element of a matrix. + + + + + + Elementwise subtracts an element of a matrix from a scalar. + + + A scalar. + A matrix. + + The elementwise subtraction of scalar a and matrix b. + + + + + Elementwise subtracts an element of a matrix from a scalar. + + + A scalar. + A matrix. + + The elementwise subtraction of scalar a and matrix b. + + + + + Subtracts two vectors. + + + A vector. + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of vector b from vector a. + + + + + Subtracts two vectors. + + + A vector. + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of vector b from vector a. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of given scalar from all elements in the given vector. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + The subtraction of given scalar from all elements in the given vector. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + + The subtraction of the given vector elements from the given scalar. + + + + + Subtracts a scalar from a vector. + + + A vector. + A scalar. + + The subtraction of the given vector elements from the given scalar. + + + + + Normalizes a vector to have unit length. + + + A vector. + A norm to use. Default is . + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Normalizes a vector to have unit length. + + + A vector. + A norm to use. Default is . + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Normalizes a vector to have unit length. + + + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Normalizes a vector to have unit length. + + + A vector. + True to perform the operation in-place, + overwriting the original array; false to return a new array. + + A multiple of vector a where ||a|| = 1. + + + + + Multiplies a matrix by itself n times. + + + + + Returns a sub matrix extracted from the current matrix. + The matrix to return the submatrix from. + Array of row indices. Pass null to select all indices. + Array of column indices. Pass null to select all indices. + + + + + Gets a column vector from a matrix. + + + + + Gets a column vector from a matrix. + + + + + Gets a column vector from a matrix. + + + + + Gets a row vector from a matrix. + + + + + + Gets a row vector from a matrix. + + + + + + Gets a column vector from a matrix. + + + + + Stores a column vector into the given column position of the matrix. + + + + + Stores a column vector into the given column position of the matrix. + + + + + Gets a row vector from a matrix. + + + + + Stores a row vector into the given row position of the matrix. + + + + + Stores a row vector into the given row position of the matrix. + + + + + Returns a new matrix without one of its columns. + + + + + + Returns a new matrix without one of its columns. + + + + + + Returns a new matrix with a new column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a new column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given column vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a new row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a new row vector inserted at the end of the original matrix. + + + + + + Returns a new matrix with a given column vector inserted at a given index. + + + + + + Returns a new matrix with a given column vector inserted at a given index. + + + + + + Returns a new matrix with a given row vector inserted at a given index. + + + + + + Returns a new matrix with a given row vector inserted at a given index. + + + + + + Returns a new matrix without one of its rows. + + + + + + Removes an element from a vector. + + + + + + Gets the number of elements matching a certain criteria. + + + The type of the array. + The array to search inside. + The search criteria. + + + + + Gets the indices of the first element matching a certain criteria. + + + The type of the array. + + The array to search inside. + The search criteria. + + + + + Searches for the specified value and returns the index of the first occurrence within the array. + + + The type of the array. + + The array to search. + The value to be searched. + + The index of the searched value within the array, or -1 if not found. + + + + + Gets the indices of all elements matching a certain criteria. + + + The type of the array. + The array to search inside. + The search criteria. + + + + + Gets the indices of all elements matching a certain criteria. + + The type of the array. + The array to search inside. + The search criteria. + + Set to true to stop when the first element is + found, set to false to get all elements. + + + + + Gets the indices of all elements matching a certain criteria. + + The type of the array. + The array to search inside. + The search criteria. + + + + Gets the indices of all elements matching a certain criteria. + + The type of the array. + The array to search inside. + The search criteria. + + Set to true to stop when the first element is + found, set to false to get all elements. + + + + + Gets the maximum non-null element in a vector. + + + + + + Gets the maximum element in a vector. + + + + + + Gets the maximum element in a vector. + + + + + + Gets the maximum element in a vector. + + + + + + Gets the minimum element in a vector. + + + + + + Gets the minimum element in a vector. + + + + + + Gets the maximum element in a vector up to a fixed length. + + + + + + Gets the maximum element in a vector up to a fixed length. + + + + + + Gets the minimum element in a vector up to a fixed length. + + + + + + Gets the minimum element in a vector up to a fixed length. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the maximum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the minimum value of a matrix. + + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the maximum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the minimum values across one dimension of a matrix. + + + + + Gets the range of the values in a vector. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values in a vector. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values across a matrix. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values across a matrix. + + + The matrix whose ranges should be computed. + + + + + Gets the range of the values across the columns of a matrix. + + + The matrix whose ranges should be computed. + + Pass 0 if the range should be computed for each of the columns. Pass 1 + if the range should be computed for each row. Default is 0. + + + + + + Gets the range of the values across the columns of a matrix. + + + The matrix whose ranges should be computed. + + Pass 0 if the range should be computed for each of the columns. Pass 1 + if the range should be computed for each row. Default is 0. + + + + + + Performs an in-place re-ordering of elements in + a given array using the given vector of indices. + + + The values to be ordered. + The new index positions. + + + + + Retrieves a list of the distinct values for each matrix column. + + + The matrix. + + An array containing arrays of distinct values for + each column in the . + + + + + Retrieves a list of the distinct values for each matrix column. + + + The matrix. + + An array containing arrays of distinct values for + each column in the . + + + + + Retrieves only distinct values contained in an array. + + + The array. + + An array containing only the distinct values in . + + + + + Retrieves only distinct values contained in an array. + + + The array. + Whether to allow null values in + the method's output. Default is true. + + An array containing only the distinct values in . + + + + + Retrieves only distinct values contained in an array. + + + The array. + The property of the object used to determine distinct instances. + + An array containing only the distinct values in . + + + + + Sorts the columns of a matrix by sorting keys. + + + The key value for each column. + The matrix to be sorted. + The comparer to use. + + + + + Sorts the columns of a matrix by sorting keys. + + + The key value for each column. + The matrix to be sorted. + The comparer to use. + + + + + Retrieves the top count values of an array. + + + + + + Retrieves the bottom count values of an array. + + + + + + Determines whether a number is an integer, given a tolerance threshold. + + + The value to be compared. + The maximum that the number can deviate from its closest integer number. + + True if the number if an integer, false otherwise. + + + + + Compares two values for equality, considering a relative acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + + Compares two vectors for equality, considering an acceptance threshold. + + + + + + Compares two vectors for equality, considering an acceptance threshold. + + + + + + Compares each member of a vector for equality with a scalar value x. + + + + + + Compares each member of a matrix for equality with a scalar value x. + + + + + + Compares each member of a vector for equality with a scalar value x. + + + + + + Compares each member of a matrix for equality with a scalar value x. + + + + + + Compares two matrices for equality. + + + + + Compares two matrices for equality. + + + Compares two vectors for equality. + + + + This method should not be called. Use Matrix.IsEqual instead. + + + + + + Compares two enumerables for set equality. Two + enumerables are set equal if they contain the + same elements, but not necessarily in the same + order. + + + The element type. + + The first set. + The first set. + + + True if the two sets contains the same elements, false otherwise. + + + + + + Returns a value indicating whether the specified + matrix contains a value that is not a number (NaN). + + + A double-precision multidimensional matrix. + + True if the matrix contains a value that is not a number, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value that is not a number (NaN). + + + A double-precision multidimensional matrix. + + True if the matrix contains a value that is not a number, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value that is not a number (NaN). + + + A double-precision multidimensional matrix. + + True if the matrix contains a value that is not a number, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a infinity value. + + + A double-precision multidimensional matrix. + + True if the matrix contains infinity values, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value within a given tolerance. + + + A double-precision multidimensional matrix. + The value to search for in the matrix. + The relative tolerance that a value must be in + order to be considered equal to the value being searched. + + True if the matrix contains the value, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a value within a given tolerance. + + + A single-precision multidimensional matrix. + The value to search for in the matrix. + The relative tolerance that a value must be in + order to be considered equal to the value being searched. + + True if the matrix contains the value, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a infinity value. + + + A double-precision multidimensional matrix. + + True if the matrix contains a infinity value, false otherwise. + + + + + Returns a value indicating whether the specified + matrix contains a infinity value. + + + A double-precision multidimensional matrix. + + True if the matrix contains a infinity value, false otherwise. + + + + + Gets the transpose of a matrix. + + + A matrix. + + The transpose of the given matrix. + + + + + Gets the transpose of a matrix. + + + A matrix. + + The transpose of the given matrix. + + + + + Gets the transpose of a matrix. + + + A matrix. + + True to store the transpose over the same input + , false otherwise. Default is false. + + The transpose of the given matrix. + + + + + Gets the transpose of a matrix. + + + A matrix. + + True to store the transpose over the same input + , false otherwise. Default is false. + + The transpose of the given matrix. + + + + + Gets the transpose of a row vector. + + + A row vector. + + The transpose of the given vector. + + + + + Gets the generalized transpose of a tensor. + + + A tensor. + The new order for the tensor's dimensions. + + The transpose of the given tensor. + + + + + Gets the generalized transpose of a tensor. + + + A tensor. + The new order for the tensor's dimensions. + + The transpose of the given tensor. + + + + + Gets the number of rows in a multidimensional matrix. + + + The type of the elements in the matrix. + The matrix whose number of rows must be computed. + + The number of rows in the matrix. + + + + + Gets the number of columns in a multidimensional matrix. + + + The type of the elements in the matrix. + The matrix whose number of columns must be computed. + + The number of columns in the matrix. + + + + + Gets the number of rows in a jagged matrix. + + + The type of the elements in the matrix. + The matrix whose number of rows must be computed. + + The number of rows in the matrix. + + + + + Gets the number of columns in a jagged matrix. + + + The type of the elements in the matrix. + The matrix whose number of columns must be computed. + + The number of columns in the matrix. + + + + + Returns true if a vector of real-valued observations + is ordered in ascending or descending order. + + + An array of values. + The sort order direction. + + + + + Returns true if a matrix is square. + + + + + Returns true if a matrix is symmetric. + + + + + + + Returns true if a matrix is upper triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is upper triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is lower triangular. + + + + + + + Returns true if a matrix is symmetric. + + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the trace of a matrix product. + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the trace of a matrix. + + + + The trace of an n-by-n square matrix A is defined to be the sum of the + elements on the main diagonal (the diagonal from the upper left to the + lower right) of A. + + + + + + Gets the diagonal vector from a matrix. + + + A matrix. + + The diagonal vector from the given matrix. + + + + + Gets the diagonal vector from a matrix. + + + A matrix. + + The diagonal vector from the given matrix. + + + + + Gets the determinant of a matrix. + + + + + + Gets the determinant of a matrix. + + + + + + Gets the log-determinant of a matrix. + + + + + + Gets the log-determinant of a matrix. + + + + + + Gets the pseudo-determinant of a matrix. + + + + + + Gets the log of the pseudo-determinant of a matrix. + + + + + + Gets the determinant of a matrix. + + + + + + Gets the determinant of a matrix. + + + + + + Gets whether a matrix is singular. + + + + + + Gets whether a matrix is positive definite. + + + + + + Gets whether a matrix is positive definite. + + + + + Calculates the matrix Sum vector. + + A matrix whose sums will be calculated. + + Returns a vector containing the sums of each variable in the given matrix. + + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the sum will be calculated. Default is 0. + Returns a vector containing the sums of each variable in the given matrix. + + + + Gets the sum of all elements in a vector. + + + + + + Gets the sum of all elements in a vector. + + + + + + Gets the sum of all elements in a vector. + + + + Calculates a vector cumulative sum. + + + Calculates the matrix Sum vector. + A matrix whose sums will be calculated. + The dimension in which the cumulative sum will be calculated. + Returns a vector containing the sums of each variable in the given matrix. + + + + Gets the product of all elements in a vector. + + + + + Gets the product of all elements in a vector. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of the array. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of a matrix. + + + + + Applies a function to every element of the array. + + + + + Rounds a double-precision floating-point matrix to a specified number of fractional digits. + + + + + + Returns the largest integer less than or equal than to the specified + double-precision floating-point number for each element of the matrix. + + + + + + Returns the largest integer greater than or equal than to the specified + double-precision floating-point number for each element of the matrix. + + + + + Rounds a double-precision floating-point number array to a specified number of fractional digits. + + + + + Returns the largest integer less than or equal than to the specified + double-precision floating-point number for each element of the array. + + + + + Returns the largest integer greater than or equal than to the specified + double-precision floating-point number for each element of the array. + + + + + Transforms a vector into a matrix of given dimensions. + + + + + Transforms a matrix into a single vector. + + + A matrix. + + + + + Transforms a matrix into a single vector. + + + A matrix. + The direction to perform copying. Pass + 0 to perform a row-wise copy. Pass 1 to perform a column-wise + copy. Default is 0. + + + + + Transforms a jagged array matrix into a single vector. + + A jagged array. + + + + + Transforms a jagged array matrix into a single vector. + + + A jagged array. + The direction to perform copying. Pass + 0 to perform a row-wise copy. Pass 1 to perform a column-wise + copy. Default is 0. + + + + + Convolves an array with the given kernel. + + + A floating number array. + A convolution kernel. + + + + + Convolves an array with the given kernel. + + + A floating number array. + A convolution kernel. + + If true the resulting array will be trimmed to + have the same length as the input array. Default is false. + + + + + Creates a memberwise copy of a jagged matrix. Matrix elements + themselves are copied only in a shallowed manner (i.e. not cloned). + + + + + + Creates a memberwise copy of a multidimensional matrix. Matrix elements + themselves are copied only in a shallowed manner (i.e. not cloned). + + + + + + Contains classes for constrained and unconstrained optimization. Includes + Conjugate Gradient (CG), + Bounded and Unbounded Broyden–Fletcher–Goldfarb–Shanno (BFGS), + gradient-free optimization methods such as and the Goldfarb-Idnani + solver for Quadratic Programming (QP) problems. + + + + + This namespace contains different methods for solving both constrained and unconstrained + optimization problems. For unconstrained optimization, methods available include + Conjugate Gradient (CG), + Bounded and Unbounded Broyden–Fletcher–Goldfarb–Shanno (BFGS), + Resilient Backpropagation and a simplified implementation of the + Trust Region Newton Method (TRON). + + + For constrained optimization problems, methods available include the + Augmented Lagrangian method for general non-linear optimization, for + gradient-free non-linear optimization, and the Goldfarb-Idnani + method for solving Quadratic Programming (QP) problems. + + + This namespace also contains optimizers specialized for least squares problems, such as + Gauss Newton and the Levenberg-Marquart least squares solvers. + + + For univariate problems, standard search algorithms are also available, such as + Brent and Binary search. + + + The namespace class diagram is shown below. + + + + + + + + + + + Base class for gradient-based optimization methods. + + + + + + Base class for optimization methods. + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + + + + + Initializes a new instance of the class. + + + The objective function whose optimum values should be found. + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + The initial solution vector to start the search. + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + The initial solution vector to start the search. + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Creates an exception with a given inner optimization algorithm code (for debugging purposes). + + + + + + Creates an exception with a given inner optimization algorithm code (for debugging purposes). + + + + + + Gets or sets the function to be optimized. + + + The function to be optimized. + + + + + Gets the number of variables (free parameters) + in the optimization problem. + + + The number of parameters. + + + + + Gets the current solution found, the values of + the parameters which optimizes the function. + + + + + + Gets the output of the function at the current . + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + The gradient of the objective . + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + Gets or sets a function returning the gradient + vector of the function to be optimized for a + given value of its free parameters. + + + The gradient function. + + + + + Common interface for function optimization methods which depend on + having both an objective function and a gradient function definition + available. + + + + + + + + + + Gets or sets the function to be optimized. + + + The function to be optimized. + + + + + Gets or sets a function returning the gradient + vector of the function to be optimized for a + given value of its free parameters. + + + The gradient function. + + + + + Least Squares function delegate. + + + + This delegate represents a parameterized function that, given a set of + and an vector, + produces an associated output value. + + + The function parameters, also known as weights or coefficients. + An input vector. + + The output value produced given the vector + using the given . + + + + + Gradient function delegate. + + + + This delegate represents the gradient of a Least + Squares objective function. This function should compute the gradient vector + in respect to the function . + + + The function parameters, also known as weights or coefficients. + An input vector. + The resulting gradient vector (w.r.t to the parameters). + + + + + Common interface for Least Squares algorithms, i.e. algorithms + that can be used to solve Least Squares optimization problems. + + + + + + Attempts to find the best values for the parameter vector + minimizing the discrepancy between the generated outputs + and the expected outputs for a given set of input data. + + + A set of input data. + The values associated with each + vector in the data. + + + + + Gets or sets a parameterized model function mapping input vectors + into output values, whose optimum parameters must be found. + + + The function to be optimized. + + + + + Gets or sets a function that computes the gradient vector in respect + to the function parameters, given a set of input and output values. + + + The gradient function. + + + + + Gets the number of variables (free parameters) in the optimization problem. + + + The number of parameters. + + + + + Gets the solution found, the values of the parameters which + optimizes the function, in a least squares sense. + + + + + + Gets standard error for each parameter in the solution. + + + + + + Binary search root finding algorithm. + + + + + + Constructs a new Binary search algorithm. + + + The function to be searched. + Start of search region. + End of search region. + + + + + Attempts to find a root in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Attempts to find a root in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Finds a value of a function in the interval [a;b] + + + The function to have its root computed. + Start of search region. + End of search region. + The value to be looked for in the function. + + The location of the zero value in the given interval. + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets the solution found in the last call + to or . + + + + + + Gets the value at the solution found in the last call + to . + + + + + + Gets the function to be searched. + + + + + + Cobyla exit codes. + + + + + + Optimization successfully completed. + + + + + + Maximum number of iterations (function/constraints evaluations) reached during optimization. + + + + + + Size of rounding error is becoming damaging, terminating prematurely. + + + + + + The posed constraints cannot be fulfilled. + + + + + + Constrained optimization by linear approximation. + + + + + Constrained optimization by linear approximation (COBYLA) is a numerical + optimization method for constrained problems where the derivative of the + objective function is not known, invented by Michael J. D. Powell. + + + COBYLA2 is an implementation of Powell’s nonlinear derivative–free constrained + optimization that uses a linear approximation approach. The algorithm is a + sequential trust–region algorithm that employs linear approximations to the + objective and constraint functions, where the approximations are formed by linear + interpolation at n + 1 points in the space of the variables and tries to maintain + a regular–shaped simplex over iterations. + + + This algorithm is able to solve non-smooth NLP problems with a moderate number + of variables (about 100), with inequality constraints only. + + + References: + + + Wikipedia, The Free Encyclopedia. Cobyla. Available on: + http://en.wikipedia.org/wiki/COBYLA + + + + + + Let's say we would like to optimize a function whose gradient + we do not know or would is too difficult to compute. All we + have to do is to specify the function, pass it to Cobyla and + call its Minimize() method: + + + + // We would like to find the minimum of min f(x) = 10 * (x+1)^2 + y^2 + Func<double[], double> function = x => 10 * Math.Pow(x[0] + 1, 2) + Math.Pow(x[1], 2); + + // Create a cobyla method for 2 variables + Cobyla cobyla = new Cobyla(2, function); + + bool success = cobyla.Minimize(); + + double minimum = minimum = cobyla.Value; // Minimum should be 0. + double[] solution = cobyla.Solution; // Vector should be (-1, 0) + + + + Cobyla can be used even when we have constraints in our optimization problem. + The following example can be found in Fletcher's book Practical Methods of + Optimization, under the equation number (9.1.15). + + + + // We will optimize the 2-variable function f(x, y) = -x -y + var f = new NonlinearObjectiveFunction(2, x => -x[0] - x[1]); + + // Under the following constraints + var constraints = new[] + { + new NonlinearConstraint(2, x => x[1] - x[0] * x[0] >= 0), + new NonlinearConstraint(2, x => 1 - x[0] * x[0] - x[1] * x[1] >= 0), + }; + + // Create a Cobyla algorithm for the problem + var cobyla = new Cobyla(function, constraints); + + // Optimize it + bool success = cobyla.Minimize(); + double minimum = cobyla.Value; // Minimum should be -2 * sqrt(0.5) + double[] solution = cobyla.Solution; // Vector should be [sqrt(0.5), sqrt(0.5)] + + + + + + + Common interface for function optimization methods. + + + + + + + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The number of free parameters in the function to be optimized. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The function to be optimized. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The function to be optimized. + The constraints of the optimization problem. + + + + + Creates a new instance of the Cobyla optimization algorithm. + + + The function to be optimized. + The constraints of the optimization problem. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets the number of iterations performed in the last + call to . + + + + The number of iterations performed + in the previous optimization. + + + + + Gets or sets the maximum number of iterations + to be performed during optimization. Default + is 0 (iterate until convergence). + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Gets how much the constraint is being violated. + + + The function point. + + + How much the constraint is being violated at the given point. Positive + value means the constraint is not being violated with the returned slack, + while a negative value means the constraint is being violated by the returned + amount. + + + + + + Gets the type of the constraint. + + + + + + Gets the value in the right hand + side of the constraint equation. + + + + + + Gets the number of variables in the constraint. + + + + + + Gets the left hand side of + the constraint equation. + + + + + + Gets the gradient of the left hand + side of the constraint equation. + + + + + + Linear Constraint Collection. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Creates a matrix of linear constraints in canonical form. + + + The number of variables in the objective function. + The vector of independent terms (the right hand side of the constraints). + The number of equalities in the matrix. + The matrix A of linear constraints. + + + + + Creates a matrix of linear constraints in canonical form. + + + The number of variables in the objective function. + The vector of independent terms (the right hand side of the constraints). + The amount each constraint can be violated before the answer is declared close enough. + The number of equalities in the matrix. + The matrix A of linear constraints. + + + + + Limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) optimization method. + + + + + The L-BFGS algorithm is a member of the broad family of quasi-Newton optimization + methods. L-BFGS stands for 'Limited memory BFGS'. Indeed, L-BFGS uses a limited + memory variation of the Broyden–Fletcher–Goldfarb–Shanno (BFGS) update to approximate + the inverse Hessian matrix (denoted by Hk). Unlike the original BFGS method which + stores a dense approximation, L-BFGS stores only a few vectors that represent the + approximation implicitly. Due to its moderate memory requirement, L-BFGS method is + particularly well suited for optimization problems with a large number of variables. + + L-BFGS never explicitly forms or stores Hk. Instead, it maintains a history of the past + m updates of the position x and gradient g, where generally the history + mcan be short, often less than 10. These updates are used to implicitly do operations + requiring the Hk-vector product. + + + The framework implementation of this method is based on the original FORTRAN source code + by Jorge Nocedal (see references below). The original FORTRAN source code of L-BFGS (for + unconstrained problems) is available at http://www.netlib.org/opt/lbfgs_um.shar and had + been made available under the public domain. + + + References: + + + Jorge Nocedal. Limited memory BFGS method for large scale optimization (Fortran source code). 1990. + Available in http://www.netlib.org/opt/lbfgs_um.shar + + Jorge Nocedal. Updating Quasi-Newton Matrices with Limited Storage. Mathematics of Computation, + Vol. 35, No. 151, pp. 773--782, 1980. + + Dong C. Liu, Jorge Nocedal. On the limited memory BFGS method for large scale optimization. + + + + + + The following example shows the basic usage of the L-BFGS solver + to find the minimum of a function specifying its function and + gradient. + + + // Suppose we would like to find the minimum of the function + // + // f(x,y) = -exp{-(x-1)²} - exp{-(y-2)²/2} + // + + // First we need write down the function either as a named + // method, an anonymous method or as a lambda function: + + Func<double[], double> f = (x) => + -Math.Exp(-Math.Pow(x[0] - 1, 2)) - Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)); + + // Now, we need to write its gradient, which is just the + // vector of first partial derivatives del_f / del_x, as: + // + // g(x,y) = { del f / del x, del f / del y } + // + + Func<double[], double[]> g = (x) => new double[] + { + // df/dx = {-2 e^(- (x-1)^2) (x-1)} + 2 * Math.Exp(-Math.Pow(x[0] - 1, 2)) * (x[0] - 1), + + // df/dy = {- e^(-1/2 (y-2)^2) (y-2)} + Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)) * (x[1] - 2) + }; + + // Finally, we can create the L-BFGS solver, passing the functions as arguments + var lbfgs = new BroydenFletcherGoldfarbShanno(numberOfVariables: 2, function: f, gradient: g); + + // And then minimize the function: + bool success = lbfgs.Minimize(); + double minValue = lbfgs.Value; + double[] solution = lbfgs.Solution; + + // The resultant minimum value should be -2, and the solution + // vector should be { 1.0, 2.0 }. The answer can be checked on + // Wolfram Alpha by clicking the following the link: + + // http://www.wolframalpha.com/input/?i=maximize+%28exp%28-%28x-1%29%C2%B2%29+%2B+exp%28-%28y-2%29%C2%B2%2F2%29%29 + + + + + + + + + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + Occurs when progress is made during the optimization. + + + + + + Gets the number of iterations performed in the last + call to + or . + + + + The number of iterations performed + in the previous optimization. + + + + + Gets or sets the maximum number of iterations + to be performed during optimization. Default + is 0 (iterate until convergence). + + + + + + Gets the number of function evaluations performed + in the last call to + or . + + + + The number of evaluations performed + in the previous optimization. + + + + + Gets or sets the number of corrections used in the L-BFGS + update. Recommended values are between 3 and 7. Default is 5. + + + + + + Gets or sets the upper bounds of the interval + in which the solution must be found. + + + + + + Gets or sets the lower bounds of the interval + in which the solution must be found. + + + + + + Gets or sets the accuracy with which the solution + is to be found. Default value is 1e5. Smaller values + up until zero result in higher accuracy. + + + + + The iteration will stop when + + (f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr*epsmch + + where epsmch is the machine precision, which is automatically + generated by the code. Typical values for this parameter are: + 1e12 for low accuracy; 1e7 for moderate accuracy; 1e1 for extremely + high accuracy. + + + + + + Gets or sets a tolerance value when detecting convergence + of the gradient vector steps. Default is 0. + + + + On entry pgtol >= 0 is specified by the user. The iteration + will stop when + + max{|proj g_i | i = 1, ..., n} <= pgtol + + + where pg_i is the ith component of the projected gradient. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + Find a minimizer of an interpolated cubic function. + @param cm The minimizer of the interpolated cubic. + @param u The value of one point, u. + @param fu The value of f(u). + @param du The value of f'(u). + @param v The value of another point, v. + @param fv The value of f(v). + @param du The value of f'(v). + + + Find a minimizer of an interpolated cubic function. + @param cm The minimizer of the interpolated cubic. + @param u The value of one point, u. + @param fu The value of f(u). + @param du The value of f'(u). + @param v The value of another point, v. + @param fv The value of f(v). + @param du The value of f'(v). + @param xmin The maximum value. + @param xmin The minimum value. + + + Find a minimizer of an interpolated quadratic function. + @param qm The minimizer of the interpolated quadratic. + @param u The value of one point, u. + @param fu The value of f(u). + @param du The value of f'(u). + @param v The value of another point, v. + @param fv The value of f(v). + + + Find a minimizer of an interpolated quadratic function. + @param qm The minimizer of the interpolated quadratic. + @param u The value of one point, u. + @param du The value of f'(u). + @param v The value of another point, v. + @param dv The value of f'(v). + + + Update a safeguarded trial value and interval for line search. + + The parameter x represents the step with the least function value. + The parameter t represents the current step. This function assumes + that the derivative at the point of x in the direction of the step. + If the bracket is set to true, the minimizer has been bracketed in + an interval of uncertainty with endpoints between x and y. + + @param x The pointer to the value of one endpoint. + @param fx The pointer to the value of f(x). + @param dx The pointer to the value of f'(x). + @param y The pointer to the value of another endpoint. + @param fy The pointer to the value of f(y). + @param dy The pointer to the value of f'(y). + @param t The pointer to the value of the trial value, t. + @param ft The pointer to the value of f(t). + @param dt The pointer to the value of f'(t). + @param tmin The minimum value for the trial value, t. + @param tmax The maximum value for the trial value, t. + @param brackt The pointer to the predicate if the trial value is + bracketed. + @retval int Status value. Zero indicates a normal termination. + + @see + Jorge J. More and David J. Thuente. Line search algorithm with + guaranteed sufficient decrease. ACM Transactions on Mathematical + Software (TOMS), Vol 20, No 3, pp. 286-307, 1994. + + + Return values of lbfgs(). + + Roughly speaking, a negative value indicates an error. + + + L-BFGS reaches convergence. + + + The initial variables already minimize the objective function. + + + Unknown error. + + + Logic error. + + + Insufficient memory. + + + The minimization process has been canceled. + + + Invalid number of variables specified. + + + Invalid number of variables (for SSE) specified. + + + The array x must be aligned to 16 (for SSE). + + + Invalid parameter lbfgs_parameter_t::epsilon specified. + + + Invalid parameter lbfgs_parameter_t::past specified. + + + Invalid parameter lbfgs_parameter_t::delta specified. + + + Invalid parameter lbfgs_parameter_t::linesearch specified. + + + Invalid parameter lbfgs_parameter_t::max_step specified. + + + Invalid parameter lbfgs_parameter_t::max_step specified. + + + Invalid parameter lbfgs_parameter_t::ftol specified. + + + Invalid parameter lbfgs_parameter_t::wolfe specified. + + + Invalid parameter lbfgs_parameter_t::gtol specified. + + + Invalid parameter lbfgs_parameter_t::xtol specified. + + + Invalid parameter lbfgs_parameter_t::max_linesearch specified. + + + Invalid parameter lbfgs_parameter_t::orthantwise_c specified. + + + Invalid parameter lbfgs_parameter_t::orthantwise_start specified. + + + Invalid parameter lbfgs_parameter_t::orthantwise_end specified. + + + The line-search step went out of the interval of uncertainty. + + + A logic error occurred; alternatively, the interval of uncertainty + became too small. + + + A rounding error occurred; alternatively, no line-search step + satisfies the sufficient decrease and curvature conditions. + + + The line-search step became smaller than lbfgs_parameter_t::min_step. + + + The line-search step became larger than lbfgs_parameter_t::max_step. + + + The line-search routine reaches the maximum number of evaluations. + + + The algorithm routine reaches the maximum number of iterations. + + + Relative width of the interval of uncertainty is at most + lbfgs_parameter_t::xtol. + + + A logic error (negative line-search step) occurred. + + + The current search direction increases the objective function value. + + + Callback interface to provide objective function and gradient evaluations. + + The lbfgs() function call this function to obtain the values of objective + function and its gradients when needed. A client program must implement + this function to evaluate the values of the objective function and its + gradients, given current values of variables. + + @param instance The user data sent for lbfgs() function by the client. + @param x The current values of variables. + @param g The gradient vector. The callback function must compute + the gradient values for the current variables. + @param n The number of variables. + @param step The current step of the line search routine. + @retval double The value of the objective function for the current + variables. + + + Callback interface to receive the progress of the optimization process. + + The lbfgs() function call this function for each iteration. Implementing + this function, a client program can store or display the current progress + of the optimization process. + + @param instance The user data sent for lbfgs() function by the client. + @param x The current values of variables. + @param g The current gradient values of variables. + @param fx The current value of the objective function. + @param xnorm The Euclidean norm of the variables. + @param gnorm The Euclidean norm of the gradients. + @param step The line-search step used for this iteration. + @param n The number of variables. + @param k The iteration count. + @param ls The number of evaluations called for this iteration. + @retval int Zero to continue the optimization process. Returning a + non-zero value will cancel the optimization process. + + + + Status codes for the + function optimizer. + + + + + + The function output converged to a static + value within the desired precision. + + + + + + The function gradient converged to a minimum + value within the desired precision. + + + + + + The inner line search function failed. This could be an indication + that there might be something wrong with the gradient function. + + + + + + Inner status of the + optimization algorithm. This class contains implementation details that + can change at any time. + + + + + + Initializes a new instance of the class with the inner + status values from the original FORTRAN L-BFGS implementation. + + + The isave L-BFGS status argument. + The dsave L-BFGS status argument. + The lsave L-BFGS status argument. + The csave L-BFGS status argument. + The work L-BFGS status argument. + + + + + Gets or sets the isave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the dsave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the lsave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the csave status from the + original FORTRAN L-BFGS implementation. + + + + + + Gets or sets the work vector from the + original FORTRAN L-BFGS implementation. + + + + + + Gauss-Newton algorithm for solving Least-Squares problems. + + + + This class isn't suitable for most real-world problems. Instead, this class + is intended to be use as a baseline comparison to help debug and check other + optimization methods, such as . + + + + + + Initializes a new instance of the class. + + + The number of variables (free parameters) + in the objective function. + + + + + Attempts to find the best values for the parameter vector + minimizing the discrepancy between the generated outputs + and the expected outputs for a given set of input data. + + + A set of input data. + The values associated with each + vector in the data. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Gets or sets a parameterized model function mapping input vectors + into output values, whose optimum parameters must be found. + + + + The function to be optimized. + + + + + + Gets or sets a function that computes the gradient vector in respect + to the function parameters, given a set of input and output values. + + + + The gradient function. + + + + + + Gets the number of variables (free parameters) in the optimization problem. + + + + The number of parameters. + + + + + + Gets the approximate Hessian matrix of second derivatives + created during the last algorithm iteration. + + + + + Please note that this value is actually just an approximation to the + actual Hessian matrix using the outer Jacobian approximation (H ~ J'J). + + + + + + + Gets the solution found, the values of the parameters which + optimizes the function, in a least squares sense. + + + + + + Gets the vector of residuals computed in the last iteration. + The residuals are computed as (y - f(w, x)), in which + y are the expected output values, and f is the + parameterized model function. + + + + + + Gets the Jacobian matrix of first derivatives computed in the + last iteration. + + + + + + Gets the vector of coefficient updates computed in the last iteration. + + + + + + Gets standard error for each parameter in the solution. + + + + + + Levenberg-Marquardt algorithm for solving Least-Squares problems. + + + + + + Initializes a new instance of the class. + + + The number of free parameters in the optimization problem. + + + + + Attempts to find the best values for the parameter vector + minimizing the discrepancy between the generated outputs + and the expected outputs for a given set of input data. + + + A set of input data. + The values associated with each + vector in the data. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Gets or sets a parameterized model function mapping input vectors + into output values, whose optimum parameters must be found. + + + + The function to be optimized. + + + + + + Gets or sets a function that computes the gradient vector in respect + to the function parameters, given a set of input and output values. + + + + The gradient function. + + + + + + Gets the solution found, the values of the parameters which + optimizes the function, in a least squares sense. + + + + + + Levenberg's damping factor, also known as lambda. + + + The value determines speed of learning. + + Default value is 0.1. + + + + + + Learning rate adjustment. + + + The value by which the learning rate + is adjusted when searching for the minimum cost surface. + + Default value is 10. + + + + + + Gets the number of variables (free parameters) in the optimization problem. + + + + The number of parameters. + + + + + + Gets or sets the number of blocks to divide the + Jacobian matrix in the Hessian calculation to + preserve memory. Default is 1. + + + + + + Gets the approximate Hessian matrix of second derivatives + generated in the last algorithm iteration. The Hessian is + stored in the upper triangular part of this matrix. See + remarks for details. + + + + + The Hessian needs only be upper-triangular, since + it is symmetric. The Cholesky decomposition will + make use of this fact and use the lower-triangular + portion to hold the decomposition, conserving memory + + + Thus said, this property will hold the Hessian matrix + in the upper-triangular part of this matrix, and store + its Cholesky decomposition on its lower triangular part. + + + Please note that this value is actually just an approximation to the + actual Hessian matrix using the outer Jacobian approximation (H ~ J'J). + + + + + + + Gets standard error for each parameter in the solution. + + + + + + exit codes. + + + + + + Optimization was canceled by the user. + + + + + + Optimization ended successfully. + + + + + + The execution time exceeded the established limit. + + + + + + The minimum desired value has been reached. + + + + + + The algorithm had stopped prematurely because + the maximum number of evaluations was reached. + + + + + + The algorithm failed internally. + + + + + + The desired output tolerance (minimum change in the function + output between two consecutive iterations) has been reached. + + + + + + The desired parameter tolerance (minimum change in the + solution vector between two iterations) has been reached. + + + + + + Nelder-Mead simplex algorithm with support for bound + constraints for non-linear, gradient-free optimization. + + + + + The Nelder–Mead method or downhill simplex method or amoeba method is a + commonly used nonlinear optimization technique, which is a well-defined + numerical method for problems for which derivatives may not be known. + However, the Nelder–Mead technique is a heuristic search method that can + converge to non-stationary points on problems that can be solved by + alternative methods. + + + The Nelder–Mead technique was proposed by John Nelder and Roger Mead (1965) + and is a technique for minimizing an objective function in a many-dimensional + space. + + + The source code presented in this file has been adapted from the + Sbplx method (based on Nelder-Mead's Simplex) given in the NLopt + Numerical Optimization Library, created by Steven G. Johnson. + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, + http://ab-initio.mit.edu/nlopt + + Wikipedia, The Free Encyclopedia. Nelder Mead method. Available on: + http://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method + + + + + + + Creates a new non-linear optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new non-linear optimization algorithm. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + + + + + Creates a new non-linear optimization algorithm. + + + The objective function whose optimum values should be found. + + + + + Finds the minimum value of a function, using the function output at + the current value, if already known. This overload can be used when + embedding Nelder-Mead in other algorithms to avoid initial checks. + + + The function output at the current values, if already known. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Performs the reflection xnew = c + scale * (c - xold), + returning 0 if xnew == c or xnew == xold (coincident + points), and 1 otherwise. + + + + The reflected point xnew is "pinned" to the lower and upper bounds + (lb and ub), as suggested by J. A. Richardson and J. L. Kuester, + "The complex method for constrained optimization," Commun. ACM + 16(8), 487-489 (1973). This is probably a suboptimal way to handle + bound constraints, but I don't know a better way. The main danger + with this is that the simplex might collapse into a + lower-dimensional hyperplane; this danger can be ameliorated by + restarting (as in subplex), however. + + + + + + Determines whether two numbers are numerically + close (within current floating-point precision). + + + + + + Gets the maximum number of + variables that can be optimized by this instance. + This is the initial value that has been passed to this + class constructor at the time the algorithm was created. + + + + + + Gets or sets the maximum value that the objective + function could produce before the algorithm could + be terminated as if the solution was good enough. + + + + + + Gets the step sizes to be used by the optimization + algorithm. Default is to initialize each with 1e-5. + + + + + + Gets or sets the number of variables (free parameters) in the + optimization problem. This number can be decreased after the + algorithm has been created so it can operate on subspaces. + + + + + + + + Gets or sets multiple convergence options to + determine when the optimization can terminate. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Gets the lower bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Gets the upper bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Gets or sets the by how much the simplex diameter |xl - xh| must be + reduced before the algorithm can be terminated. Setting this value + to a value higher than zero causes the algorithm to replace the + standard criteria with this condition. + Default is zero. + + + + + + The difference between the high and low function + values of the last simplex in the previous call + to the optimization function. + + + + + + Resilient Backpropagation method for unconstrained optimization. + + + + + + + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The function to be optimized. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Creates a new function optimizer. + + + The number of parameters in the function to be optimized. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Resets the current update steps using the given learning rate. + + + + + + Occurs when the current learning progress has changed. + + + + + + Gets or sets the maximum possible update step, + also referred as delta min. Default is 50. + + + + + + Gets or sets the minimum possible update step, + also referred as delta max. Default is 1e-6. + + + + + + Gets the decrease parameter, also + referred as eta minus. Default is 0.5. + + + + + + Gets the increase parameter, also + referred as eta plus. Default is 1.2. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Subplex + + + + + The source code presented in this file has been adapted from the + Sbplx method (based on Nelder-Mead's Simplex) given in the NLopt + Numerical Optimization Library, created by Steven G. Johnson. + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, + http://ab-initio.mit.edu/nlopt + + Wikipedia, The Free Encyclopedia. Nelder Mead method. Available on: + http://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method + + + + + + + Creates a new optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new optimization algorithm. + + + The number of free parameters in the optimization problem. + The objective function whose optimum values should be found. + + + + + Creates a new optimization algorithm. + + + The objective function whose optimum values should be found. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Wrapper around objective function for subspace optimization. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Gets or sets the maximum value that the objective + function could produce before the algorithm could + be terminated as if the solution was good enough. + + + + + + Gets the step sizes to be used by the optimization + algorithm. Default is to initialize each with 1e-5. + + + + + + Gets or sets multiple convergence options to + determine when the optimization can terminate. + + + + + + Gets the lower bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Gets the upper bounds that should be respected in this + optimization problem. Default is to initialize this vector + with . + + + + + + Simplified Trust Region Newton Method (TRON) for non-linear optimization. + + + + + Trust region is a term used in mathematical optimization to denote the subset + of the region of the objective function to be optimized that is approximated + using a model function (often a quadratic). If an adequate model of the objective + function is found within the trust region then the region is expanded; conversely, + if the approximation is poor then the region is contracted. Trust region methods + are also known as restricted step methods. + + The fit is evaluated by comparing the ratio of expected improvement from the model + approximation with the actual improvement observed in the objective function. Simple + thresholding of the ratio is used as the criteria for expansion and contraction—a + model function is "trusted" only in the region where it provides a reasonable + approximation. + + + Trust region methods are in some sense dual to line search methods: trust region + methods first choose a step size (the size of the trust region) and then a step + direction while line search methods first choose a step direction and then a step + size. + + + This class implements a simplified version of Chih-Jen Lin and Jorge Moré's TRON, + a trust region Newton method for the solution of large bound-constrained optimization + problems. This version was based upon liblinear's implementation. + + + References: + + + + Wikipedia, The Free Encyclopedia. Trust region. Available on: + http://en.wikipedia.org/wiki/Trust_region + + + Chih-Jen Lin and Jorge Moré, TRON. Available on: http://www.mcs.anl.gov/~more/tron/index.html + + + + Chih-Jen Lin and Jorge J. Moré. 1999. Newton's Method for Large Bound-Constrained + Optimization Problems. SIAM J. on Optimization 9, 4 (April 1999), 1100-1127. + + + + Machine Learning Group. LIBLINEAR -- A Library for Large Linear Classification. + National Taiwan University. Available at: http://www.csie.ntu.edu.tw/~cjlin/liblinear/ + + + + + + + + + + + + + Creates a new function optimizer. + + + The number of parameters in the function to be optimized. + + + + + Creates a new function optimizer. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + The hessian of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets or sets the tolerance under which the + solution should be found. Default is 0.1. + + + + + + Gets or sets the maximum number of iterations that should + be performed until the algorithm stops. Default is 1000. + + + + + + Gets or sets the Hessian estimation function. + + + + + + Taylor series expansions for common functions. + + + + + In mathematics, a Taylor series is a representation of a function as an infinite sum of terms + that are calculated from the values of the function's derivatives at a single point. + + + The concept of a Taylor series was discovered by the Scottish mathematician James Gregory and + formally introduced by the English mathematician Brook Taylor in 1715. If the Taylor series is + centered at zero, then that series is also called a Maclaurin series, named after the Scottish + mathematician Colin Maclaurin, who made extensive use of this special case of Taylor series in + the 18th century. + + + It is common practice to approximate a function by using a finite number of terms of its Taylor + series. Taylor's theorem gives quantitative estimates on the error in this approximation. Any + finite number of initial terms of the Taylor series of a function is called a Taylor polynomial. + The Taylor series of a function is the limit of that function's Taylor polynomials, provided that + the limit exists. A function may not be equal to its Taylor series, even if its Taylor series + converges at every point. A function that is equal to its Taylor series in an open interval (or + a disc in the complex plane) is known as an analytic function in that interval. + + + References: + + + Wikipedia, The Free Encyclopedia. Taylor series. Available at: + http://en.wikipedia.org/wiki/Taylor_series + + Anne Fry, Amy Plofker, Sarah-marie Belcastro, Lyle Roelofs. A Set of Appendices on Mathematical + Methods for Physics Students: Taylor Series Expansions and Approximations. Available at: + http://www.haverford.edu/physics/MathAppendices/Taylor_Series.pdf + + + + + + + Returns the sine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The sine of the angle . + + + + + Returns the cosine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The cosine of the angle . + + + + + Returns the hyperbolic sine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The hyperbolic sine of the angle . + + + + + Returns the hyperbolic cosine of a specified angle by evaluating a Taylor series. + + + An angle, measured in radians. + The number of terms to be evaluated. + + The hyperbolic cosine of the angle . + + + + + Returns e raised to the specified power by evaluating a Taylor series. + + + A number specifying a power. + The number of terms to be evaluated. + + Euler's constant raised to the specified power . + + + + + Fourier Transform (for arbitrary size matrices). + + + + This fourier transform accepts arbitrary-length matrices and is not + restricted only to matrices that have dimensions which are powers of + two. It also provides results which are more equivalent with other + mathematical packages, such as MATLAB and Octave. + + + + + + 1-D Discrete Fourier Transform. + + + The data to transform.. + The transformation direction. + + + + + 2-D Discrete Fourier Transform. + + + The data to transform. + The transformation direction. + + + + + 1-D Fast Fourier Transform. + + + The data to transform.. + The transformation direction. + + + + + 1-D Fast Fourier Transform. + + + The real part of the complex numbers to transform. + The imaginary part of the complex numbers to transform. + The transformation direction. + + + + + 2-D Fast Fourier Transform. + + + The data to transform.. + The Transformation direction. + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, + storing the result back into the vector. The vector can have any length. + This is a wrapper function. + + + The real. + The imag. + + + + + Computes the inverse discrete Fourier transform (IDFT) of the given complex + vector, storing the result back into the vector. The vector can have any length. + This is a wrapper function. This transform does not perform scaling, so the + inverse is not a true inverse. + + + + + + Computes the inverse discrete Fourier transform (IDFT) of the given complex + vector, storing the result back into the vector. The vector can have any length. + This is a wrapper function. This transform does not perform scaling, so the + inverse is not a true inverse. + + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, storing + the result back into the vector. The vector's length must be a power of 2. Uses the + Cooley-Tukey decimation-in-time radix-2 algorithm. + + + Length is not a power of 2. + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, storing + the result back into the vector. The vector's length must be a power of 2. Uses the + Cooley-Tukey decimation-in-time radix-2 algorithm. + + + Length is not a power of 2. + + + + + Computes the discrete Fourier transform (DFT) of the given complex vector, storing + the result back into the vector. The vector can have any length. This requires the + convolution function, which in turn requires the radix-2 FFT function. Uses + Bluestein's chirp z-transform algorithm. + + + + + + Computes the circular convolution of the given real + vectors. All vectors must have the same length. + + + + + + Computes the circular convolution of the given complex + vectors. All vectors must have the same length. + + + + + + Computes the circular convolution of the given complex + vectors. All vectors must have the same length. + + + + + + Hartley Transformation. + + + + In mathematics, the Hartley transform is an integral transform closely related + to the Fourier transform, but which transforms real-valued functions to real- + valued functions. It was proposed as an alternative to the Fourier transform by + R. V. L. Hartley in 1942, and is one of many known Fourier-related transforms. + Compared to the Fourier transform, the Hartley transform has the advantages of + transforming real functions to real functions (as opposed to requiring complex + numbers) and of being its own inverse. + + + References: + + + Wikipedia contributors, "Hartley transform," Wikipedia, The Free Encyclopedia, + available at: http://en.wikipedia.org/w/index.php?title=Hartley_transform + + K. R. Castleman, Digital Image Processing. Chapter 13, p.289. + Prentice. Hall, 1998. + + Poularikas A. D. “The Hartley Transform”. The Handbook of Formulas and + Tables for Signal Processing. Ed. Alexander D. Poularikas, 1999. + + + + + + + Forward Hartley Transform. + + + + + + Forward Hartley Transform. + + + + + + Discrete Sine Transform + + + + + In mathematics, the discrete sine transform (DST) is a Fourier-related transform + similar to the discrete Fourier transform (DFT), but using a purely real matrix. It + is equivalent to the imaginary parts of a DFT of roughly twice the length, operating + on real data with odd symmetry (since the Fourier transform of a real and odd function + is imaginary and odd), where in some variants the input and/or output data are shifted + by half a sample. + + + References: + + + Wikipedia contributors, "Discrete sine transform," Wikipedia, The Free Encyclopedia, + available at: http://en.wikipedia.org/w/index.php?title=Discrete_sine_transform + + K. R. Castleman, Digital Image Processing. Chapter 13, p.288. + Prentice. Hall, 1998. + + + + + + + Forward Discrete Sine Transform. + + + + + + Inverse Discrete Sine Transform. + + + + + + Forward Discrete Sine Transform. + + + + + + Inverse Discrete Sine Transform. + + + + + + Discrete Cosine Transformation. + + + + + A discrete cosine transform (DCT) expresses a finite sequence of data points + in terms of a sum of cosine functions oscillating at different frequencies. + DCTs are important to numerous applications in science and engineering, from + lossy compression of audio (e.g. MP3) and images (e.g. JPEG) (where small + high-frequency components can be discarded), to spectral methods for the + numerical solution of partial differential equations. + + + The use of cosine rather than sine functions is critical in these applications: + for compression, it turns out that cosine functions are much more efficient, + whereas for differential equations the cosines express a particular choice of + boundary conditions. + + + References: + + + Wikipedia contributors, "Discrete sine transform," Wikipedia, The Free Encyclopedia, + available at: http://en.wikipedia.org/w/index.php?title=Discrete_sine_transform + + K. R. Castleman, Digital Image Processing. Chapter 13, p.288. + Prentice. Hall, 1998. + + + + + + + Forward Discrete Cosine Transform. + + + + + + Inverse Discrete Cosine Transform. + + + + + + Forward 2D Discrete Cosine Transform. + + + + + + Inverse 2D Discrete Cosine Transform. + + + + + + Determines the Generalized eigenvalues and eigenvectors of two real square matrices. + + + + A generalized eigenvalue problem is the problem of finding a vector v that + obeys A * v = λ * B * v where A and B are matrices. If v + obeys this equation, with some λ, then we call v the generalized eigenvector + of A and B, and λ is called the generalized eigenvalue of A + and B which corresponds to the generalized eigenvector v. The possible + values of λ, must obey the identity det(A - λ*B) = 0. + + Part of this code has been adapted from the original EISPACK routines in Fortran. + + + References: + + + + http://en.wikipedia.org/wiki/Generalized_eigenvalue_problem#Generalized_eigenvalue_problem + + + + http://www.netlib.org/eispack/ + + + + + + + // Suppose we have the following + // matrices A and B shown below: + + double[,] A = + { + { 1, 2, 3}, + { 8, 1, 4}, + { 3, 2, 3} + }; + + double[,] B = + { + { 5, 1, 1}, + { 1, 5, 1}, + { 1, 1, 5} + }; + + // Now, suppose we would like to find values for λ + // that are solutions for the equation det(A - λB) = 0 + + // For this, we can use a Generalized Eigendecomposition + var gevd = new GeneralizedEigenvalueDecomposition(A, B); + + // Now, if A and B are Hermitian and B is positive + // -definite, then the eigenvalues λ will be real: + double[] lambda = gevd.RealEigenvalues; + + // Lets check if they are indeed a solution: + for (int i = 0; i < lambda.Length; i++) + { + // Compute the determinant equation show above + double det = Matrix.Determinant(A.Subtract(lambda[i].Multiply(B))); // almost zero + } + + + + + Constructs a new generalized eigenvalue decomposition. + The first matrix of the (A,B) matrix pencil. + The second matrix of the (A,B) matrix pencil. + + + + Adaptation of the original Fortran QZHES routine from EISPACK. + + + This subroutine is the first step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. + + This subroutine accepts a pair of real general matrices and + reduces one of them to upper Hessenberg form and the other + to upper triangular form using orthogonal transformations. + it is usually followed by qzit, qzval and, possibly, qzvec. + + For the full documentation, please check the original function. + + + + + Adaptation of the original Fortran QZIT routine from EISPACK. + + + This subroutine is the second step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart, + as modified in technical note nasa tn d-7305(1973) by ward. + + This subroutine accepts a pair of real matrices, one of them + in upper Hessenberg form and the other in upper triangular form. + it reduces the Hessenberg matrix to quasi-triangular form using + orthogonal transformations while maintaining the triangular form + of the other matrix. it is usually preceded by qzhes and + followed by qzval and, possibly, qzvec. + + For the full documentation, please check the original function. + + + + + Adaptation of the original Fortran QZVAL routine from EISPACK. + + + This subroutine is the third step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. + + This subroutine accepts a pair of real matrices, one of them + in quasi-triangular form and the other in upper triangular form. + it reduces the quasi-triangular matrix further, so that any + remaining 2-by-2 blocks correspond to pairs of complex + Eigenvalues, and returns quantities whose ratios give the + generalized eigenvalues. it is usually preceded by qzhes + and qzit and may be followed by qzvec. + + For the full documentation, please check the original function. + + + + + Adaptation of the original Fortran QZVEC routine from EISPACK. + + + This subroutine is the optional fourth step of the qz algorithm + for solving generalized matrix eigenvalue problems, + Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. + + This subroutine accepts a pair of real matrices, one of them in + quasi-triangular form (in which each 2-by-2 block corresponds to + a pair of complex eigenvalues) and the other in upper triangular + form. It computes the eigenvectors of the triangular problem and + transforms the results back to the original coordinate system. + it is usually preceded by qzhes, qzit, and qzval. + + For the full documentation, please check the original function. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + Returns the real parts of the alpha values. + + + Returns the imaginary parts of the alpha values. + + + Returns the beta values. + + + + Returns true if matrix B is singular. + + + This method checks if any of the generated betas is zero. It + does not says that the problem is singular, but only that one + of the matrices of the pencil (A,B) is singular. + + + + + Returns true if the eigenvalue problem is degenerate (ill-posed). + + + + Returns the real parts of the eigenvalues. + + The eigenvalues are computed using the ratio alpha[i]/beta[i], + which can lead to valid, but infinite eigenvalues. + + + + Returns the imaginary parts of the eigenvalues. + + The eigenvalues are computed using the ratio alpha[i]/beta[i], + which can lead to valid, but infinite eigenvalues. + + + + Returns the eigenvector matrix. + + + Returns the block diagonal eigenvalue matrix. + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. The presented algorithm + only checks the upper triangular part of the matrix given as parameter and assumes + it is symmetric. If the matrix is not positive definite, the constructor returns a + partial decomposition and sets two internal variables that can be queried using the + properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + + Constructs a new Cholesky Decomposition. + + + + The symmetric matrix, given in upper triangular form, to be decomposed. + + True to perform a square-root free LDLt decomposition, false otherwise. + + True to perform the decomposition in place, storing the factorization in the + lower triangular part of the given matrix. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + The array to hold the result of the + computation. Should be of same length as the the diagonal + of the original matrix. + + + + + Computes the trace of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is positive definite. + + + + + Gets a value indicating whether the LDLt factorization + has been computed successfully or if it is undefined. + + + + true if the factorization is not defined; otherwise, false. + + + + + + Returns the left (lower) triangular factor + L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal + elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal + elements in a LDLt decomposition. + + + + + + Returns the determinant of + the decomposed matrix. + + + + + + If the matrix is positive-definite, returns the + log-determinant of the decomposed matrix. + + + + + + Gets a value indicating whether the decomposed + matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. The presented algorithm + only checks the upper triangular part of the matrix given as parameter and assumes + it is symmetric. If the matrix is not positive definite, the constructor returns a + partial decomposition and sets two internal variables that can be queried using the + properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + + Constructs a new Cholesky Decomposition. + + + + The symmetric matrix, given in upper triangular form, to be decomposed. + + True to perform a square-root free LDLt decomposition, false otherwise. + + True to perform the decomposition in place, storing the factorization in the + lower triangular part of the given matrix. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + The array to hold the result of the + computation. Should be of same length as the the diagonal + of the original matrix. + + + + + Computes the trace of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is positive definite. + + + + + Gets a value indicating whether the LDLt factorization + has been computed successfully or if it is undefined. + + + + true if the factorization is not defined; otherwise, false. + + + + + + Returns the left (lower) triangular factor + L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal + elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal + elements in a LDLt decomposition. + + + + + + Returns the determinant of + the decomposed matrix. + + + + + + If the matrix is positive-definite, returns the + log-determinant of the decomposed matrix. + + + + + + Gets a value indicating whether the decomposed + matrix is non-singular (i.e. invertible). + + + + + + Cholesky Decomposition of a symmetric, positive definite matrix. + + + + + For a symmetric, positive definite matrix A, the Cholesky decomposition is a + lower triangular matrix L so that A = L * L'. The presented algorithm + only checks the upper triangular part of the matrix given as parameter and assumes + it is symmetric. If the matrix is not positive definite, the constructor returns a + partial decomposition and sets two internal variables that can be queried using the + properties. + + Any square matrix A with non-zero pivots can be written as the product of a + lower triangular matrix L and an upper triangular matrix U; this is called + the LU decomposition. However, if A is symmetric and positive definite, we + can choose the factors such that U is the transpose of L, and this is called + the Cholesky decomposition. Both the LU and the Cholesky decomposition are + used to solve systems of linear equations. + + When it is applicable, the Cholesky decomposition is twice as efficient + as the LU decomposition. + + + + + + Constructs a new Cholesky Decomposition. + + + + The symmetric matrix, given in upper triangular form, to be decomposed. + + True to perform a square-root free LDLt decomposition, false otherwise. + + True to perform the decomposition in place, storing the factorization in the + lower triangular part of the given matrix. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * X = B. + + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * L' * X = B. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + + + + + Solves a set of equation systems of type A * x = b. + + + Right hand side column vector with as many rows as A. + Vector x so that L * L' * x = b. + Matrix dimensions do not match. + Matrix is not symmetric. + Matrix is not positive-definite. + True to compute the solving in place, false otherwise. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + + + + Computes the diagonal of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + The array to hold the result of the + computation. Should be of same length as the the diagonal + of the original matrix. + + + + + Computes the trace of the inverse of the decomposed matrix. + + + True to conserve memory by reusing the + same space used to hold the decomposition, thus destroying + it in the process. Pass false otherwise. + + + + + Creates a new Cholesky decomposition directly from + an already computed left triangular matrix L. + + The left triangular matrix from a Cholesky decomposition. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is positive definite. + + + + + Gets a value indicating whether the LDLt factorization + has been computed successfully or if it is undefined. + + + + true if the factorization is not defined; otherwise, false. + + + + + + Returns the left (lower) triangular factor + L so that A = L * D * L'. + + + + + + Returns the block diagonal matrix of diagonal + elements in a LDLt decomposition. + + + + + + Returns the one-dimensional array of diagonal + elements in a LDLt decomposition. + + + + + + Returns the determinant of + the decomposed matrix. + + + + + + If the matrix is positive-definite, returns the + log-determinant of the decomposed matrix. + + + + + + Gets a value indicating whether the decomposed + matrix is non-singular (i.e. invertible). + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + Please see remarks for important information regarding + numerical stability when using this method. + + + + Please keep in mind this is not one of the most reliable methods + for checking singularity of a matrix. For a more reliable method, + please use or the + . + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + Please see remarks for important information regarding + numerical stability when using this method. + + + + Please keep in mind this is not one of the most reliable methods + for checking singularity of a matrix. For a more reliable method, + please use or the + . + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + LU decomposition of a rectangular matrix. + + + + For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + unit lower triangular matrix L, an n-by-n upper triangular matrix U, + and a permutation vector piv of length m so that A(piv) = L*U. + If m < n, then L is m-by-m and U is m-by-n. + + The LU decomposition with pivoting always exists, even if the matrix is + singular, so the constructor will never fail. The primary use of the + LU decomposition is in the solution of square systems of simultaneous + linear equations. This will fail if returns + . + + + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + + + + + Constructs a new LU decomposition. + + The matrix A to be decomposed. + True if the decomposition should be performed on + the transpose of A rather than A itself, false otherwise. Default is false. + True if the decomposition should be performed over the + matrix rather than on a copy of it. If true, the + matrix will be destroyed during the decomposition. Default is false. + + + + + Solves a set of equation systems of type A * X = I. + + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side matrix with as many rows as A and any number of columns. + Matrix X so that L * U * X = B. + + + + + Solves a set of equation systems of type X * A = B. + + Right hand side matrix with as many columns as A and any number of rows. + Matrix X so that X * L * U = A. + + + + + Solves a set of equation systems of type A * X = B. + + Right hand side column vector with as many rows as A. + Matrix X so that L * U * X = B. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns if the matrix is non-singular (i.e. invertible). + Please see remarks for important information regarding + numerical stability when using this method. + + + + Please keep in mind this is not one of the most reliable methods + for checking singularity of a matrix. For a more reliable method, + please use or the + . + + + + + + Returns the determinant of the matrix. + + + + + + Returns the log-determinant of the matrix. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the lower triangular factor L with A=LU. + + + + + + Returns the pivot permutation vector. + + + + + + Nonnegative Matrix Factorization. + + + + + Non-negative matrix factorization (NMF) is a group of algorithms in multivariate + analysis and linear algebra where a matrix X is factorized into (usually) + two matrices, W and H. The non-negative factorization enforces the + constraint that the factors W and H must be non-negative, i.e., all + elements must be equal to or greater than zero. The factorization is not unique. + + + References: + + + + http://en.wikipedia.org/wiki/Non-negative_matrix_factorization + + + Lee, D., Seung, H., 1999. Learning the Parts of Objects by Non-Negative + Matrix Factorization. Nature 401, 788–791. + + Michael W. Berry, et al. (June 2006). Algorithms and Applications for + Approximate Nonnegative Matrix Factorization. + + + + + + + + Initializes a new instance of the NMF algorithm + + + The input data matrix (must be positive). + The reduced dimension. + + + + + Initializes a new instance of the NMF algorithm + + + The input data matrix (must be positive). + The reduced dimension. + The number of iterations to perform. + + + + + Performs NMF using the multiplicative method + + + The maximum number of iterations + + + At the end of the computation H contains the projected data + and W contains the weights. The multiplicative method is the + simplest factorization method. + + + + + + Gets the nonnegative factor matrix W. + + + + + + Gets the nonnegative factor matrix H. + + + + + + Static class Distance. Defines a set of extension methods defining distance measures. + + + + + + Gets the Bray Curtis distance between two points. + + A point in space. + A point in space. + The Bray Curtis distance between x and y. + + + + Gets the Canberra distance between two points. + + A point in space. + A point in space. + The Canberra distance between x and y. + + + + Gets the Chessboard distance between two points. + + A point in space. + A point in space. + The Chessboard distance between x and y. + + + + Gets the Correlation distance between two points. + + A point in space. + A point in space. + The Correlation distance between x and y. + + + + Gets the Cosine distance between two points. + + A point in space. + A point in space. + The Cosine distance between x and y. + + + + Gets the Square Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The inverse of the covariance matrix of the distribution for the two points x and y. + + + The Square Mahalanobis distance between x and y. + + + + + Gets the Square Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The of the covariance + matrix of the distribution for the two points x and y. + + + The Square Mahalanobis distance between x and y. + + + + + Gets the Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The inverse of the covariance matrix of the distribution for the two points x and y. + + + The Mahalanobis distance between x and y. + + + + + Gets the Mahalanobis distance between two points. + + + A point in space. + A point in space. + + The of the covariance + matrix of the distribution for the two points x and y. + + + The Mahalanobis distance between x and y. + + + + + Gets the Manhattan distance between two points. + + + A point in space. + A point in space. + + The Manhattan distance between x and y. + + + + + Gets the Manhattan distance between two points. + + + A point in space. + A point in space. + + The Manhattan distance between x and y. + + + + + Gets the Minkowski distance between two points. + + + A point in space. + A point in space. + Factor. + + The Minkowski distance between x and y. + + + + + Gets the Chebyshev distance between two points. + + + A point in space. + A point in space. + + The Chebyshev distance between x and y. + + + + + Gets the Square Euclidean distance between two points. + + + A point in space. + A point in space. + + The Square Euclidean distance between x and y. + + + + + Gets the Square Euclidean distance between two points. + + + The first coordinate of first point in space. + The second coordinate of first point in space. + The first coordinate of second point in space. + The second coordinate of second point in space. + + The Square Euclidean distance between x and y. + + + + + Gets the Euclidean distance between two points. + + + A point in space. + A point in space. + + The Euclidean distance between x and y. + + + + + Gets the Euclidean distance between two points. + + + The first coordinate of first point in space. + The second coordinate of first point in space. + The first coordinate of second point in space. + The second coordinate of second point in space. + + The Euclidean distance between x and y. + + + + + Gets the Modulo-m distance between two integers a and b. + + + + + + Gets the Modulo-m distance between two real values a and b. + + + + + + Bhattacharyya distance between two normalized histograms. + + + A normalized histogram. + A normalized histogram. + The Bhattacharyya distance between the two histograms. + + + + + Hellinger distance between two normalized histograms. + + + A normalized histogram. + A normalized histogram. + The Hellinger distance between the two histograms. + + + + + Bhattacharyya distance between two matrices. + + + The first matrix x. + The first matrix y. + + The Bhattacharyya distance between the two matrices. + + + + + Bhattacharyya distance between two Gaussian distributions. + + + Mean for the first distribution. + Covariance matrix for the first distribution. + Mean for the second distribution. + Covariance matrix for the second distribution. + + The Bhattacharyya distance between the two distributions. + + + + + Bhattacharyya distance between two Gaussian distributions. + + + Mean for the first distribution. + Covariance matrix for the first distribution. + Mean for the second distribution. + Covariance matrix for the second distribution. + The logarithm of the determinant for + the covariance matrix of the first distribution. + The logarithm of the determinant for + the covariance matrix of the second distribution. + + The Bhattacharyya distance between the two distributions. + + + + + Levenshtein distance between two strings. + + + The first string x. + The first string y. + + + Based on the standard implementation available on Wikibooks: + http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance + + + + + + + + Levenshtein distance between two strings. + + + The first string x. + The first string y. + + + Based on the standard implementation available on Wikibooks: + http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance + + + + + + + + Hamming distance between two Boolean vectors. + + + + + + Hamming distance between two double vectors + containing only 0 (false) or 1 (true) values. + + + + + + Bitwise hamming distance between two sequences of bytes. + + + + + + Bitwise hamming distance between two bit arrays. + + + + + + Checks whether a function is a real metric distance, i.e. respects + the triangle inequality. Please note that a function can still pass + this test and not respect the triangle inequality. + + + + + + Checks whether a function is a real metric distance, i.e. respects + the triangle inequality. Please note that a function can still pass + this test and not respect the triangle inequality. + + + + + + Programming environment for Octave. + + + + + This class implements a Domain Specific Language (DSL) for + C# which is remarkably similar to Octave. Please take a loook + on what is possible to do using this class in the examples + section. + + + To use this class, inherit from . + After this step, all code written inside your child class will + be able to use the syntax below: + + + + + Using the mat and ret keywords, it is possible + to replicate most of the Octave environment inside plain C# + code. The example below demonstrates how to compute the + Singular Value Decomposition of a matrix, which in turn was + generated using . + + + // Declare local matrices + mat u = _, s = _, v = _; + + // Compute a new mat + mat M = magic(3) * 5; + + // Compute the SVD + ret [u, s, v] = svd(M); + + // Write the matrix + string str = u; + + /* + 0.577350269189626 -0.707106781186548 0.408248290463863 + u = 0.577350269189626 -1.48007149071427E-16 -0.816496580927726 + 0.577350269189626 0.707106781186548 0.408248290463863 + */ + + + + It is also possible to ignore certain parameters by + providing a wildcard in the return structure: + + + // Declare local matrices + mat u = _, v = _; + + // Compute a new mat + mat M = magic(3) * 5; + + // Compute the SVD + ret [u, _, v] = svd(M); // the second argument is omitted + + + + Standard matrix operations are also supported: + + + + mat I = eye(3); // 3x3 identity matrix + + mat A = I * 2; // matrix-scalar multiplication + + Console.WriteLine(A); + // + // 2 0 0 + // A = 0 2 0 + // 0 0 2 + + mat B = ones(3, 6); // 3x6 unit matrix + + Console.WriteLine(B); + // + // 1 1 1 1 1 1 + // B = 1 1 1 1 1 1 + // 1 1 1 1 1 1 + + mat C = new double[,] + { + { 2, 2, 2, 2, 2, 2 }, + { 2, 0, 0, 0, 0, 2 }, + { 2, 2, 2, 2, 2, 2 }, + }; + + mat D = A * B - C; + + Console.WriteLine(D); + // + // 0 0 0 0 0 0 + // C = 0 2 2 2 2 0 + // 0 0 0 0 0 0 + + + + + + + + Pi. + + + Machine epsilon. + + + Creates an identity matrix. + + + Inverts a matrix. + + + Inverts a matrix. + + + Creates a unit matrix. + + + Creates a unit matrix. + + + Creates a unit matrix. + + + Creates a unit matrix. + + + Random vector. + + + Size of a matrix. + + + Rank of a matrix. + + + Matrix sum vector. + + + Sum of vector elements. + + + Product of vector elements. + + + Matrix sum vector. + + + Rounding. + + + Ceiling. + + + Flooring. + + + Rounding. + + + Ceiling. + + + Flooring. + + + Rounding. + + + Ceiling. + + + Flooring. + + + Sin. + + + Cos. + + + Exponential value. + + + Absolute value. + + + Logarithm. + + + Sin. + + + Cos. + + + Exponential value. + + + Absolute value. + + + Logarithm. + + + Sin. + + + Cos. + + + Exponential value. + + + Absolute value. + + + Logarithm. + + + Creates a magic square matrix. + + + Singular value decomposition. + + + QR decomposition. + + + QR decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Eigenvalue decomposition. + + + Cholesky decomposition. + + + + Return setter keyword. + + + + + + Initializes a new instance of the class. + + + + + + Whether to use octave indexing or not. + + + + + + Matrix placeholder. + + + + + + Return definition operator. + + + + + + Can be used to set output arguments + to the output of another function. + + + + + + Matrix definition operator. + + + + + + Inner matrix object. + + + + + + Initializes a new instance of the class. + + + + + + Multiplication operator + + + + + + Multiplication operator + + + + + + Multiplication operator + + + + + + Addition operator + + + + + + Addition operator + + + + + + Addition operator + + + + + + Subtraction operator + + + + + + Subtraction operator + + + + + + Subtraction operator + + + + + + Equality operator. + + + + + + Inequality operator. + + + + + + Implicit conversion from double[,]. + + + + + + Implicit conversion to double[,]. + + + + + + Implicit conversion to string. + + + + + + Implicit conversion from list. + + + + + + Determines whether the specified is equal to this instance. + + + + + + Returns a hash code for this instance. + + + + + + Transpose operator. + + + + + + Common interface for Matrix format providers. + + + + + A string denoting the start of the matrix to be used in formatting. + + + A string denoting the end of the matrix to be used in formatting. + + + A string denoting the start of a matrix row to be used in formatting. + + + A string denoting the end of a matrix row to be used in formatting. + + + A string denoting the start of a matrix column to be used in formatting. + + + A string denoting the end of a matrix column to be used in formatting. + + + A string containing the row delimiter for a matrix to be used in formatting. + + + A string containing the column delimiter for a matrix to be used in formatting. + + + A string denoting the start of the matrix to be used in parsing. + + + A string denoting the end of the matrix to be used in parsing. + + + A string denoting the start of a matrix row to be used in parsing. + + + A string denoting the end of a matrix row to be used in parsing. + + + A string denoting the start of a matrix column to be used in parsing. + + + A string denoting the end of a matrix column to be used in parsing. + + + A string containing the row delimiter for a matrix to be used in parsing. + + + A string containing the column delimiter for a matrix to be used in parsing. + + + + Gets the culture specific formatting information + to be used during parsing or formatting. + + + + + Base class for IMatrixFormatProvider implementers. + + + + + + Initializes a new instance of the class. + + + The inner format provider. + + + + + Returns an object that provides formatting services for the specified + type. Currently, only is supported. + + + An object that specifies the type of format + object to return. + + An instance of the object specified by formatType, if the + IFormatProvider implementation + can supply that type of object; otherwise, null. + + + + + A string denoting the start of the matrix to be used in formatting. + + + + + A string denoting the end of the matrix to be used in formatting. + + + + + A string denoting the start of a matrix row to be used in formatting. + + + + + A string denoting the end of a matrix row to be used in formatting. + + + + + A string denoting the start of a matrix column to be used in formatting. + + + + + A string denoting the end of a matrix column to be used in formatting. + + + + + A string containing the row delimiter for a matrix to be used in formatting. + + + + + A string containing the column delimiter for a matrix to be used in formatting. + + + + + A string denoting the start of the matrix to be used in parsing. + + + + + A string denoting the end of the matrix to be used in parsing. + + + + + A string denoting the start of a matrix row to be used in parsing. + + + + + A string denoting the end of a matrix row to be used in parsing. + + + + + A string denoting the start of a matrix column to be used in parsing. + + + + + A string denoting the end of a matrix column to be used in parsing. + + + + + A string containing the row delimiter for a matrix to be used in parsing. + + + + + A string containing the column delimiter for a matrix to be used in parsing. + + + + + Gets the culture specific formatting information + to be used during parsing or formatting. + + + + + + Format provider for the matrix format used by Octave. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(OctaveArrayFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "[ 1, 2, 3, 4]" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "[ 1, 2, 3, 4]"; + + // Convert the string representation to an actual number array: + double[] array = Matrix.Parse(str, OctaveArrayFormatProvider.InvariantCulture); + + // array will now contain the actual number + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the default matrix representation, where each row + is separated by a new line, and columns are separated by spaces. + + + + This class can be used to convert to and from C# + arrays and their string representation. Please + see the example for details. + + + + + Converting from an array matrix to a + string representation: + + + // Declare a number array + double[] x = { 5, 6, 7, 8 }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(DefaultArrayFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "5, 6, 7, 8" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "5, 6, 7, 8"; + + // Convert the string representation to an actual number array: + double[] array = Matrix.Parse(str, DefaultArrayFormatProvider.InvariantCulture); + + // array will now contain the actual number + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the matrix representation used in C# multi-dimensional arrays. + + + + This class can be used to convert to and from C# + arrays and their string representation. Please + see the example for details. + + + + + Converting from an array to a string representation: + + + // Declare a number array + double[] x = { 1, 2, 3, 4 }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(CSharpArrayFormatProvider.CurrentCulture); + + // the final result will be + "double[] x = { 1, 2, 3, 4 }" + + + + Converting from strings to actual arrays: + + + // Declare an input string + string str = "double[] { 1, 2, 3, 4 }"; + + // Convert the string representation to an actual number array: + double[] array = Matrix.Parse(str, CSharpArrayFormatProvider.InvariantCulture); + + // array will now contain the actual number + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the matrix representation used in C# multi-dimensional arrays. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(CSharpMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "double[,] x = " + + "{ " + + " { 1, 2, 3, 4 }, " + + " { 5, 6, 7, 8 }, " + + "}" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "double[,] x = " + + "{ " + + " { 1, 2, 3, 4 }, " + + " { 5, 6, 7, 8 }, " + + "}"; + + // Convert the string representation to an actual number array: + double[,] matrix = Matrix.Parse(str, CSharpMatrixFormatProvider.InvariantCulture); + + // matrix will now contain the actual multidimensional + // matrix representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the matrix representation used in C# jagged arrays. + + + + This class can be used to convert to and from C# + arrays and their string representation. Please + see the example for details. + + + + + Converting from a jagged matrix to a string representation: + + + // Declare a number array + double[][] x = + { + new double[] { 1, 2, 3, 4 }, + new double[] { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(CSharpJaggedMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "double[][] x = " + + "{ " + + " new double[] { 1, 2, 3, 4 }, " + + " new double[] { 5, 6, 7, 8 }, " + + "}" + + + + Converting from strings to actual arrays: + + + // Declare an input string + string str = "double[][] x = " + + "{ " + + " new double[] { 1, 2, 3, 4 }, " + + " new double[] { 5, 6, 7, 8 }, " + + "}"; + + // Convert the string representation to an actual number array: + double[][] array = Matrix.Parse(str, CSharpJaggedMatrixFormatProvider.InvariantCulture); + + // array will now contain the actual jagged + // array representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Gets the default matrix representation, where each row + is separated by a new line, and columns are separated by spaces. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(DefaultMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + @"1, 2, 3, 4 + 5, 6, 7, 8"; + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = @"1, 2, 3, 4 + "5, 6, 7, 8"; + + // Convert the string representation to an actual number array: + double[,] matrix = Matrix.Parse(str, DefaultMatrixFormatProvider.InvariantCulture); + + // matrix will now contain the actual multidimensional + // matrix representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Defines how matrices are formatted and displayed, depending on the + chosen format representation. + + + + + + Converts the value of a specified object to an equivalent string + representation using specified formatting information. + + A format string containing formatting specifications. + An object to format. + + An object that supplies + format information about the current instance. + + The string representation of the value of , + formatted as specified by and + . + + + + + + Converts a jagged or multidimensional array into a System.String representation. + + + + + + Parses a format string containing the format options for the matrix representation. + + + + + Handles formatting for objects other than matrices. + + + + + Converts a matrix represented in a System.String into a jagged array. + + + + + + Converts a matrix represented in a System.String into a multi-dimensional array. + + + + + + Format provider for the matrix format used by Octave. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + This class can be used to convert to and from C# + matrices and their string representation. Please + see the example for details. + + + + + Converting from a multidimensional matrix to a + string representation: + + + // Declare a number array + double[,] x = + { + { 1, 2, 3, 4 }, + { 5, 6, 7, 8 }, + }; + + // Convert the aforementioned array to a string representation: + string str = x.ToString(OctaveMatrixFormatProvider.CurrentCulture); + + // the final result will be equivalent to + "[ 1, 2, 3, 4; 5, 6, 7, 8 ]" + + + + Converting from strings to actual matrices: + + + // Declare an input string + string str = "[ 1, 2, 3, 4; 5, 6, 7, 8 ]"; + + // Convert the string representation to an actual number array: + double[,] matrix = Matrix.Parse(str, OctaveMatrixFormatProvider.InvariantCulture); + + // matrix will now contain the actual multidimensional + // matrix representation of the given string. + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + + Gets the IMatrixFormatProvider which uses the CultureInfo used by the current thread. + + + + + + Gets the IMatrixFormatProvider which uses the invariant system culture. + + + + + + Normal distribution functions. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + George Marsaglia, Evaluating the Normal Distribution, 2004. + Available in: http://www.jstatsoft.org/v11/a05/paper + + + + + + The following example shows the normal usages for the Normal functions: + + + + // Compute standard precision functions + double phi = Normal.Function(0.42); // 0.66275727315175048 + double phic = Normal.Complemented(0.42); // 0.33724272684824952 + double inv = Normal.Inverse(0.42); // -0.20189347914185085 + + // Compute at the limits + double phi = Normal.Function(16.6); // 1.0 + double phic = Normal.Complemented(16.6); // 3.4845465199504055E-62 + + + + + + + + Normal cumulative distribution function. + + + + The area under the Gaussian p.d.f. integrated + from minus infinity to the given value. + + + + + + Complemented cumulative distribution function. + + + + The area under the Gaussian p.d.f. integrated + from the given value to positive infinity. + + + + + + Normal (Gaussian) inverse cumulative distribution function. + + + + + For small arguments 0 < y < exp(-2), the program computes z = + sqrt( -2.0 * log(y) ); then the approximation is x = z - log(z)/z - + (1/z) P(1/z) / Q(1/z). + + There are two rational functions P/Q, one for 0 < y < exp(-32) and + the other for y up to exp(-2). For larger arguments, w = y - 0.5, + and x/sqrt(2pi) = w + w^3 * R(w^2)/S(w^2)). + + + + Returns the value, x, for which the area under the Normal (Gaussian) + probability density function (integrated from minus infinity to x) is + equal to the argument y (assumes mean is zero, variance is one). + + + + + + High-accuracy Normal cumulative distribution function. + + + + + The following formula provide probabilities with an absolute error + less than 8e-16. + + References: + - George Marsaglia, Evaluating the Normal Distribution, 2004. + Available in: http://www.jstatsoft.org/v11/a05/paper + + + + + + High-accuracy Complementary normal distribution function. + + + + + This function uses 9 tabled values to provide tail values of the + normal distribution, also known as complementary Phi, with an + absolute error of 1e-14 ~ 1e-16. + + References: + - George Marsaglia, Evaluating the Normal Distribution, 2004. + Available in: http://www.jstatsoft.org/v11/a05/paper + + + + The area under the Gaussian p.d.f. integrated + from the given value to positive infinity. + + + + + + Bivariate normal cumulative distribution function. + + + The value of the first variate. + The value of the second variate. + The correlation coefficient between x and y. This can be computed + from a covariance matrix C as rho = C_12 / (sqrt(C_11) * sqrt(C_22)). + + + + + + Complemented bivariate normal cumulative distribution function. + + + The value of the first variate. + The value of the second variate. + The correlation coefficient between x and y. This can be computed + from a covariance matrix C as rho = C_12 / (sqrt(C_11) * sqrt(C_22)). + + + + + + A function for computing bivariate normal probabilities. + BVND calculates the probability that X > DH and Y > DK. + + + + + This method is based on the work done by Alan Genz, Department of + Mathematics, Washington State University. Pullman, WA 99164-3113 + Email: alangenz@wsu.edu. This work was shared under a 3-clause BSD + license. Please see source file for more details and the actual + license text. + + + This function is based on the method described by Drezner, Z and G.O. + Wesolowsky, (1989), On the computation of the bivariate normal integral, + Journal of Statist. Comput. Simul. 35, pp. 101-107, with major modifications + for double precision, and for |R| close to 1. + + + + + + First derivative of Normal cumulative + distribution function, also known as the Normal density + function. + + + + + + Log of the first derivative of Normal cumulative + distribution function, also known as the Normal density function. + + + + + + Convex Hull Defects Extractor. + + + + + + Initializes a new instance of the class. + + + The minimum depth which characterizes a convexity defect. + + + + + Finds the convexity defects in a contour given a convex hull. + + + The contour. + The convex hull of the contour. + A list of s containing each of the + defects found considering the convex hull of the contour. + + + + + Gets or sets the minimum depth which characterizes a convexity defect. + + + The minimum depth. + + + + + Convexity defect. + + + + + + Initializes a new instance of the class. + + + The most distant point from the hull. + The starting index of the defect in the contour. + The ending index of the defect in the contour. + The depth of the defect (highest distance from the hull to + any of the contour points). + + + + + Gets or sets the starting index of the defect in the contour. + + + + + + Gets or sets the ending index of the defect in the contour. + + + + + + Gets or sets the most distant point from the hull characterizing the defect. + + + The point. + + + + + Gets or sets the depth of the defect (highest distance + from the hull to any of the points in the contour). + + + + + + K-curvatures algorithm for local maximum contour detection. + + + + + + Initializes a new instance of the class. + + The number K of previous and posterior + points to consider when find local extremum points. + The theta angle range (in + degrees) used to define extremum points.. + + + + Finds local extremum points in the contour. + + A list of + integer points defining the contour. + + + + + Gets or sets the number K of previous and posterior + points to consider when find local extremum points. + + + + + Gets or sets the theta angle range (in + degrees) used to define extremum points. + + + + + Gets or sets the suppression radius to + use during non-minimum suppression. + + + + + Reduced row Echelon form + + + + + + Reduces a matrix to reduced row Echelon form. + + + The matrix to be reduced. + + Pass to perform the reduction in place. The matrix + will be destroyed in the process, resulting in less + memory consumption. + + + + + Gets the pivot indicating the position + of the original rows before the swap. + + + + + + Gets the matrix in row reduced Echelon form. + + + + + Gets the number of free variables (linear + dependent rows) in the given matrix. + + + + + Static class ComplexExtensions. Defines a set of extension methods + that operates mainly on multidimensional arrays and vectors of + AForge.NET's data type. + + + + + + Computes the absolute value of an array of complex numbers. + + + + + + Computes the sum of an array of complex numbers. + + + + + + Elementwise multiplication of two complex vectors. + + + + + + Gets the magnitude of every complex number in an array. + + + + + + Gets the magnitude of every complex number in a matrix. + + + + + + Gets the phase of every complex number in an array. + + + + + + Returns the real vector part of the complex vector c. + + + A vector of complex numbers. + + A vector of scalars with the real part of the complex numbers. + + + + + Returns the real matrix part of the complex matrix c. + + + A matrix of complex numbers. + + A matrix of scalars with the real part of the complex numbers. + + + + + Returns the imaginary vector part of the complex vector c. + + + A vector of complex numbers. + + A vector of scalars with the imaginary part of the complex numbers. + + + + + Returns the imaginary matrix part of the complex matrix c. + + A matrix of complex numbers. + A matrix of scalars with the imaginary part of the complex numbers. + + + + Converts a complex number to a matrix of scalar values + in which the first column contains the real values and + the second column contains the imaginary values. + + An array of complex numbers. + + + + Converts a vector of real numbers to complex numbers. + + + The real numbers to be converted. + + + A vector of complex number with the given + real numbers as their real components. + + + + + + Combines a vector of real and a vector of + imaginary numbers to form complex numbers. + + + The real part of the complex numbers. + The imaginary part of the complex numbers + + + A vector of complex number with the given + real numbers as their real components and + imaginary numbers as their imaginary parts. + + + + + + Gets the range of the magnitude values in a complex number vector. + + + A complex number vector. + The range of magnitude values in the complex vector. + + + + + Compares two matrices for equality, considering an acceptance threshold. + + + + + Compares two vectors for equality, considering an acceptance threshold. + + + + + Gets the squared magnitude of a complex number. + + + + + + Static class Norm. Defines a set of extension methods defining norms measures. + + + + + + Returns the maximum column sum of the given matrix. + + + + + + Returns the maximum column sum of the given matrix. + + + + + + Returns the maximum singular value of the given matrix. + + + + + + Returns the maximum singular value of the given matrix. + + + + + + Gets the square root of the sum of squares for all elements in a matrix. + + + + + + Gets the square root of the sum of squares for all elements in a matrix. + + + + + + Gets the Squared Euclidean norm for a vector. + + + + + + Gets the Squared Euclidean norm for a vector. + + + + + + Gets the Euclidean norm for a vector. + + + + + + Gets the Euclidean norm for a vector. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Gets the Squared Euclidean norm vector for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Gets the Euclidean norm for a matrix. + + + + + + Augmented Lagrangian method for constrained non-linear optimization. + + + + + References: + + + Steven G. Johnson, The NLopt nonlinear-optimization package, http://ab-initio.mit.edu/nlopt + + E. G. Birgin and J. M. Martinez, "Improving ultimate convergence of an augmented Lagrangian + method," Optimization Methods and Software vol. 23, no. 2, p. 177-195 (2008). + + + + + + + In this framework, it is possible to state a non-linear programming problem + using either symbolic processing or vector-valued functions. The following + example demonstrates the former. + + + // Suppose we would like to minimize the following function: + // + // f(x,y) = min 100(y-x²)²+(1-x)² + // + // Subject to the constraints + // + // x >= 0 (x must be positive) + // y >= 0 (y must be positive) + // + + // In this example we will be using some symbolic processing. + // The following variables could be initialized to any value. + + double x = 0, y = 0; + + + // First, we create our objective function + var f = new NonlinearObjectiveFunction( + + // This is the objective function: f(x,y) = min 100(y-x²)²+(1-x)² + function: () => 100 * Math.Pow(y - x * x, 2) + Math.Pow(1 - x, 2), + + // The gradient vector: + gradient: () => new[] + { + 2 * (200 * Math.Pow(x, 3) - 200 * x * y + x - 1), // df/dx = 2(200x³-200xy+x-1) + 200 * (y - x*x) // df/dy = 200(y-x²) + } + + ); + + + // Now we can start stating the constraints + var constraints = new List<NonlinearConstraint>(); + + // Add the non-negativity constraint for x + constraints.Add(new NonlinearConstraint(f, + + // 1st constraint: x should be greater than or equal to 0 + function: () => x, shouldBe: ConstraintType.GreaterThanOrEqualTo, value: 0, + + gradient: () => new[] { 1.0, 0.0 } + )); + + // Add the non-negativity constraint for y + constraints.Add(new NonlinearConstraint(f, + + // 2nd constraint: y should be greater than or equal to 0 + function: () => y, shouldBe: ConstraintType.GreaterThanOrEqualTo, value: 0, + + gradient: () => new[] { 0.0, 1.0 } + )); + + + // Finally, we create the non-linear programming solver + var solver = new AugmentedLagrangianSolver(2, constraints); + + // And attempt to solve the problem + double minValue = solver.Minimize(f); + + + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The number of free parameters in the optimization problem. + + The s to which the solution must be subjected. + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The objective function to be optimized. + + The s to which the solution must be subjected. + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The unconstrained + optimization method used internally to solve the dual of this optimization + problem. + The objective function to be optimized. + + The s to which the solution must be subjected. + + + + + Creates a new instance of the Augmented Lagrangian algorithm. + + + The unconstrained + optimization method used internally to solve the dual of this optimization + problem. + + The s to which the solution must be subjected. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets the number of iterations performed in the + last call to the or + methods. + + + + The number of iterations performed + in the previous optimization. + + + + + Gets the number of function evaluations performed + in the last call to the or + methods. + + + + The number of evaluations performed + in the previous optimization. + + + + + Gets or sets the maximum number of evaluations + to be performed during optimization. Default + is 0 (evaluate until convergence). + + + + + + Gets the inner dual problem optimization algorithm. + + + + + + Constraint with only quadratic terms. + + + + + + Constraint with only linear terms. + + + + + + Gets how much the constraint is being violated. + + + The function point. + + + How much the constraint is being violated at the given point. Positive + value means the constraint is not being violated with the returned slack, + while a negative value means the constraint is being violated by the returned + amount. + + + + + + Gets whether this constraint is being violated + (within the current tolerance threshold). + + + The function point. + + True if the constraint is being violated, false otherwise. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint + should be compared to the given . + The right hand side of the constraint equation. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the + constraint equation. + How the left hand side of the constraint should be + compared to the given . + The right hand side of the constraint equation. Default is 0. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the + constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be + compared to the given . + The right hand side of the constraint equation. Default is 0. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the constraint equation. + How the left hand side of the constraint should be compared to + the given . Default is . + The right hand side of the constraint equation. Default is 0. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A boolean lambda expression expressing the constraint. Please + see examples for details. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A boolean lambda expression expressing the constraint. Please + see examples for details. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the constraint. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the + constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation.. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the + constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be + compared to the given . + The right hand side of the constraint equation. Default is 0. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the + constraint equation. + + + + + Constructs a new nonlinear constraint. + + + The objective function to which this constraint refers. + A lambda expression defining the left hand side of the constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be compared to the given . + The right hand side of the constraint equation. Default is 0. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Constructs a new nonlinear constraint. + + + The number of variables in the constraint. + A lambda expression defining the left hand side of the constraint equation. + A lambda expression defining the gradient of the + left hand side of the constraint equation. + How the left hand side of the constraint should be compared to the given . + The right hand side of the constraint equation. Default is 0. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 1e-8. + + + + + Creates an empty nonlinear constraint. + + + + + + Creates a nonlinear constraint. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the number of variables in the constraint. + + + + + + Gets the left hand side of + the constraint equation. + + + + + + Gets the gradient of the left hand + side of the constraint equation. + + + + + + Gets the type of the constraint. + + + + + + Gets the value in the right hand side of + the constraint equation. Default is 0. + + + + + + Gets the violation tolerance for the constraint. Equality + constraints should set this to a small positive value. + Default is 1e-8. + + + + + + Constructs a new quadratic constraint in the form x'Ax + x'b. + + + The objective function to which this constraint refers. + The matrix of A quadratic terms. + The vector b of linear terms. + How the left hand side of the constraint should be compared to + the given . + The right hand side of the constraint equation. + The tolerance for violations of the constraint. Equality + constraints should set this to a small positive value. Default is 0. + + + + + Gets the matrix of A quadratic terms + for the constraint x'Ax + x'b. + + + + + + Gets the vector b of linear terms + for the constraint x'Ax + x'b. + + + + + + Quadratic objective function. + + + + + + Common interface for specifying objective functions. + + + + + + Gets input variable's labels for the function. + + + + + + Gets the index of each input variable in the function. + + + + + + Gets the number of input variables for the function. + + + + + + Gets the objective function. + + + + + + Initializes a new instance of the class. + + + + + + Creates a new objective function specified through a string. + + + The number of parameters in the . + A lambda expression defining the objective + function. + + + + + Creates a new objective function specified through a string. + + + The number of parameters in the . + A lambda expression defining the objective + function. + A lambda expression defining the gradient + of the objective function. + + + + + Creates a new objective function specified through a lambda expression. + + + A containing + the function in the form of a lambda expression. + A containing + the gradient of the objective function. + + + + + Gets the name of each input variable. + + + + + + Gets the index of each input variable in the function. + + + + + + Gets the name of each input variable. + + + + + + Gets the index of each input variable in the function. + + + + + + Gets the objective function. + + + + + + Gets the gradient of the objective function. + + + + + + Gets the number of input variables for the function. + + + + + + Conjugate gradient direction update formula. + + + + + + Fletcher-Reeves formula. + + + + + + Polak-Ribière formula. + + + + The Polak-Ribière is known to perform better for non-quadratic functions. + + + + + + Polak-Ribière formula. + + + + The Polak-Ribière is known to perform better for non-quadratic functions. + The positive version B=max(0,Bpr) provides a direction reset automatically. + + + + + + Conjugate Gradient exit codes. + + + + + + Success. + + + + + + Invalid step size. + + + + + + Descent direction was not obtained. + + + + + + Rounding errors prevent further progress. There may not be a step + which satisfies the sufficient decrease and curvature conditions. + Tolerances may be too small. + + + + + + The step size has reached the upper bound. + + + + + + The step size has reached the lower bound. + + + + + + Maximum number of function evaluations has been reached. + + + + + + Relative width of the interval of uncertainty is at machine precision. + + + + + + Conjugate Gradient (CG) optimization method. + + + + + In mathematics, the conjugate gradient method is an algorithm for the numerical solution of + particular systems of linear equations, namely those whose matrix is symmetric and positive- + definite. The conjugate gradient method is an iterative method, so it can be applied to sparse + systems that are too large to be handled by direct methods. Such systems often arise when + numerically solving partial differential equations. The nonlinear conjugate gradient method + generalizes the conjugate gradient method to nonlinear optimization (Wikipedia, 2011). + + T + + The framework implementation of this method is based on the original FORTRAN source code + by Jorge Nocedal (see references below). The original FORTRAN source code of CG+ (for large + scale unconstrained problems) is available at http://users.eecs.northwestern.edu/~nocedal/CG+.html + and had been made freely available for educational or commercial use. The original authors + expect that all publications describing work using this software quote the (Gilbert and Nocedal, 1992) + reference given below. + + + References: + + + J. C. Gilbert and J. Nocedal. Global Convergence Properties of Conjugate Gradient + Methods for Optimization, (1992) SIAM J. on Optimization, 2, 1. + + Wikipedia contributors, "Nonlinear conjugate gradient method," Wikipedia, The Free + Encyclopedia, http://en.wikipedia.org/w/index.php?title=Nonlinear_conjugate_gradient_method + (accessed December 22, 2011). + + Wikipedia contributors, "Conjugate gradient method," Wikipedia, The Free Encyclopedia, + http://en.wikipedia.org/w/index.php?title=Conjugate_gradient_method + (accessed December 22, 2011). + + + + + + + + + + + + Creates a new instance of the CG optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new instance of the CG optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + Gets or sets the relative difference threshold + to be used as stopping criteria between two + iterations. Default is 0 (iterate until convergence). + + + + + + Gets or sets the maximum number of iterations + to be performed during optimization. Default + is 0 (iterate until convergence). + + + + + + Gets or sets the conjugate gradient update + method to be used during optimization. + + + + + + Gets the number of iterations performed + in the last call to . + + + + The number of iterations performed + in the previous optimization. + + + + + Gets the number of function evaluations performed + in the last call to . + + + + The number of evaluations performed + in the previous optimization. + + + + + Gets the number of linear searches performed + in the last call to . + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Occurs when progress is made during the optimization. + + + + + + Constraint type. + + + + + + Equality constraint. + + + + + + Inequality constraint specifying a greater than or equal to relationship. + + + + + + Inequality constraint specifying a lesser than or equal to relationship. + + + + + + Constraint with only linear terms. + + + + + + Constructs a new linear constraint. + + + The number of variables in the constraint. + + + + + Constructs a new linear constraint. + + + The scalar coefficients specifying + how variables should be combined in the constraint. + + + + + Constructs a new linear constraint. + + + The objective function to which + this constraint refers to. + A + specifying this constraint, such as "ax + b = c". + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + + + + Constructs a new linear constraint. + + + The objective function to which + this constraint refers to. + A + specifying this constraint, such as "ax + b = c". + + + + + Constructs a new linear constraint. + + + The objective function to which this + constraint refers to. + A specifying + this constraint in the form of a lambda expression. + + + + + Gets how much the constraint is being violated. + + + The function point. + + + How much the constraint is being violated at the given point. Positive + value means the constraint is not being violated with the returned slack, + while a negative value means the constraint is being violated by the returned + amount. + + + + + + Gets whether this constraint is being violated + (within the current tolerance threshold). + + + The function point. + + True if the constraint is being violated, false otherwise. + + + + + Attempts to create a + from a representation. + + + The string containing the constraint in textual form. + The objective function to which this constraint refers to. + The resulting constraint, if it could be parsed. + + true if the function could be parsed + from the string, false otherwise. + + + + + Attempts to create a + from a representation. + + + The string containing the constraint in textual form. + The objective function to which this constraint refers to. + The resulting constraint, if it could be parsed. + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + true if the function could be parsed + from the string, false otherwise. + + + + + Gets the number of variables in the constraint. + + + + + + Gets the index of the variables (in respective to the + object function index) of the variables participating + in this constraint. + + + + + + Gets the scalar coefficients combining the + variables specified by the constraints. + + + + + Gets the type of the constraint. + + + + + + Gets the value to be compared to the combined values + of the variables. + + + + + + Gets the violation tolerance for the constraint. Equality + constraints should set this to a small positive value. + + + + + + Gets the left hand side of the constraint equation. + + + + + + Gets the gradient of the left hand side of the constraint equation. + + + + + + Quadratic objective function. + + + + + In mathematics, a quadratic function, a quadratic polynomial, a polynomial + of degree 2, or simply a quadratic, is a polynomial function in one or more + variables in which the highest-degree term is of the second degree. For example, + a quadratic function in three variables x, y, and z contains exclusively terms + x², y², z², xy, xz, yz, x, y, z, and a constant: + + + + f(x,y,z) = ax² + by² +cz² + dxy + exz + fyz + gx + hy + iz + j + + + + Please note that the function's constructor expects the function + expression to be given on this form. Scalar values must be located + on the left of the variables, and no term should be duplicated in + the quadratic expression. Please take a look on the examples section + of this page for some examples of expected functions. + + + References: + + + Wikipedia, The Free Encyclopedia. Quadratic Function. Available on: + https://en.wikipedia.org/wiki/Quadratic_function + + + + + + + Examples of valid quadratic functions are: + + + var f1 = new QuadraticObjectiveFunction("x² + 1"); + var f2 = new QuadraticObjectiveFunction("-x*y + y*z"); + var f3 = new QuadraticObjectiveFunction("-2x² + xy - y² - 10xz + z²"); + var f4 = new QuadraticObjectiveFunction("-2x² + xy - y² + 5y"); + + + + It is also possible to specify quadratic functions using lambda expressions. + In this case, it is first necessary to create some dummy symbol variables to + act as placeholders in the quadratic expressions. Their value is not important, + as they will only be used to parse the form of the expression, not its value. + + + + // Declare symbol variables + double x = 0, y = 0, z = 0; + + var g1 = new QuadraticObjectiveFunction(() => x * x + 1); + var g2 = new QuadraticObjectiveFunction(() => -x * y + y * z); + var g3 = new QuadraticObjectiveFunction(() => -2 * x * x + x * y - y * y - 10 * x * z + z * z); + var g4 = new QuadraticObjectiveFunction(() => -2 * x * x + x * y - y * y + 5 * y); + + + + After those functions are created, you can either query their values + using + + + f1.Function(new [] { 5.0 }); // x*x+1 = x² + 1 = 25 + 1 = 26 + + + + Or you can pass it to a quadratic optimization method such + as Goldfarb-Idnani to explore its minimum or maximal points: + + + // Declare symbol variables + double x = 0, y = 0, z = 0; + + // Create the function to be optimized + var f = new QuadraticObjectiveFunction(() => x * x - 2 * x * y + 3 * y * y + z * z - 4 * x - 5 * y - z); + + // Create some constraints for the solution + var constraints = new List<LinearConstraint>(); + constraints.Add(new LinearConstraint(f, () => 6 * x - 7 * y <= 8)); + constraints.Add(new LinearConstraint(f, () => 9 * x + 1 * y <= 11)); + constraints.Add(new LinearConstraint(f, () => 9 * x - y <= 11)); + constraints.Add(new LinearConstraint(f, () => -z - y == 12)); + + // Create the Quadratic Programming solver + GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); + + // Minimize the function + bool success = solver.Minimize(); + + double value = solver.Value; + double[] solutions = solver.Solution; + + + + + + + + + Creates a new objective function specified through a string. + + + A Hessian matrix of quadratic terms defining the quadratic objective function. + The vector of linear terms associated with . + The name for each variable in the problem. + + + + + Creates a new objective function specified through a string. + + + A containing + the function in the form similar to "ax²+b". + + + + + Creates a new objective function specified through a string. + + + A containing + the function in the form similar to "ax²+b". + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + + + + Creates a new objective function specified through a string. + + + A containing + the function in the form of a lambda expression. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Attempts to create a + from a representation. + + + The string containing the function in textual form. + The resulting function, if it could be parsed. + + true if the function could be parsed + from the string, false otherwise. + + + + + Attempts to create a + from a representation. + + + The string containing the function in textual form. + The resulting function, if it could be parsed. + The culture information specifying how + numbers written in the should + be parsed. Default is CultureInfo.InvariantCulture. + + true if the function could be parsed + from the string, false otherwise. + + + + + Gets the quadratic terms of the quadratic function. + + + + + + Gets the vector of linear terms of the quadratic function. + + + + + + Gets the constant term in the quadratic function. + + + + + + Status codes for the + function optimizer. + + + + + + Convergence was attained. + + + + + + The optimization stopped before convergence; maximum + number of iterations could have been reached. + + + + + + The function is already at a minimum. + + + + + + Unknown error. + + + + + + The line-search step went out of the interval of uncertainty. + + + + + + A logic error occurred; alternatively, the interval of uncertainty became too small. + + + + + + A rounding error occurred; alternatively, no line-search step satisfies + the sufficient decrease and curvature conditions. The line search routine + will terminate with this code if the relative width of the interval of + uncertainty is less than . + + + + + + The line-search step became smaller than . + + + + + + The line-search step became larger than . + + + + + + The line-search routine reaches the maximum number of evaluations. + + + + + + Maximum number of iterations was reached. + + + + + + Relative width of the interval of uncertainty is at most + . + + + + + + A logic error (negative line-search step) occurred. This + could be an indication that something could be wrong with + the gradient function. + + + + + + The current search direction increases the objective function value. + + + + + + Line search algorithms. + + + + + + More-Thuente method. + + + + + + Backtracking method with the Armijo condition. + + + + + The backtracking method finds the step length such that it satisfies + the sufficient decrease (Armijo) condition, + + -f(x + a * d) ≤ f(x) + FunctionTolerance * a * g(x)^T d, + + where x is the current point, d is the current search direction, and + a is the step length. + + + + + + Backtracking method with regular Wolfe condition. + + + + + The backtracking method finds the step length such that it satisfies + both the Armijo condition (LineSearch.LBFGS_LINESEARCH_BACKTRACKING_ARMIJO) + and the curvature condition, + + - g(x + a * d)^T d ≥ lbfgs_parameter_t::wolfe * g(x)^T d, + + where x is the current point, d is the current search direction, and + a is the step length. + + + + + + Backtracking method with strong Wolfe condition. + + + + + The backtracking method finds the step length such that it satisfies + both the Armijo condition (LineSearch.LBFGS_LINESEARCH_BACKTRACKING_ARMIJO) + and the following condition, + + - |g(x + a * d)^T d| ≤ lbfgs_parameter_t::wolfe * |g(x)^T d|, + + where x is the current point, d is the current search direction, and + a is the step length. + + + + + + Limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) optimization method. + + + + + The L-BFGS algorithm is a member of the broad family of quasi-Newton optimization + methods. L-BFGS stands for 'Limited memory BFGS'. Indeed, L-BFGS uses a limited + memory variation of the Broyden–Fletcher–Goldfarb–Shanno (BFGS) update to approximate + the inverse Hessian matrix (denoted by Hk). Unlike the original BFGS method which + stores a dense approximation, L-BFGS stores only a few vectors that represent the + approximation implicitly. Due to its moderate memory requirement, L-BFGS method is + particularly well suited for optimization problems with a large number of variables. + + L-BFGS never explicitly forms or stores Hk. Instead, it maintains a history of the past + m updates of the position x and gradient g, where generally the history + mcan be short, often less than 10. These updates are used to implicitly do operations + requiring the Hk-vector product. + + + The framework implementation of this method is based on the original FORTRAN source code + by Jorge Nocedal (see references below). The original FORTRAN source code of L-BFGS (for + unconstrained problems) is available at http://www.netlib.org/opt/lbfgs_um.shar and had + been made available under the public domain. + + + References: + + + Jorge Nocedal. Limited memory BFGS method for large scale optimization (Fortran source code). 1990. + Available in http://www.netlib.org/opt/lbfgs_um.shar + + Jorge Nocedal. Updating Quasi-Newton Matrices with Limited Storage. Mathematics of Computation, + Vol. 35, No. 151, pp. 773--782, 1980. + + Dong C. Liu, Jorge Nocedal. On the limited memory BFGS method for large scale optimization. + + + + + + The following example shows the basic usage of the L-BFGS solver + to find the minimum of a function specifying its function and + gradient. + + + // Suppose we would like to find the minimum of the function + // + // f(x,y) = -exp{-(x-1)²} - exp{-(y-2)²/2} + // + + // First we need write down the function either as a named + // method, an anonymous method or as a lambda function: + + Func<double[], double> f = (x) => + -Math.Exp(-Math.Pow(x[0] - 1, 2)) - Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)); + + // Now, we need to write its gradient, which is just the + // vector of first partial derivatives del_f / del_x, as: + // + // g(x,y) = { del f / del x, del f / del y } + // + + Func<double[], double[]> g = (x) => new double[] + { + // df/dx = {-2 e^(- (x-1)^2) (x-1)} + 2 * Math.Exp(-Math.Pow(x[0] - 1, 2)) * (x[0] - 1), + + // df/dy = {- e^(-1/2 (y-2)^2) (y-2)} + Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)) * (x[1] - 2) + }; + + // Finally, we can create the L-BFGS solver, passing the functions as arguments + var lbfgs = new BroydenFletcherGoldfarbShanno(numberOfVariables: 2, function: f, gradient: g); + + // And then minimize the function: + bool success = lbfgs.Minimize(); + double minValue = lbfgs.Value; + double[] solution = lbfgs.Solution; + + // The resultant minimum value should be -2, and the solution + // vector should be { 1.0, 2.0 }. The answer can be checked on + // Wolfram Alpha by clicking the following the link: + + // http://www.wolframalpha.com/input/?i=maximize+%28exp%28-%28x-1%29%C2%B2%29+%2B+exp%28-%28y-2%29%C2%B2%2F2%29%29 + + + + + + + + + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the optimization problem. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The function to be optimized. + + + + + Creates a new instance of the L-BFGS optimization algorithm. + + + The number of free parameters in the function to be optimized. + The function to be optimized. + The gradient of the function. + + + + + Implements the actual optimization algorithm. This + method should try to minimize the objective function. + + + + + + The number of corrections to approximate the inverse Hessian matrix. + Default is 6. Values less than 3 are not recommended. Large values + will result in excessive computing time. + + + + The L-BFGS routine stores the computation results of the previous m + iterations to approximate the inverse Hessian matrix of the current + iteration. This parameter controls the size of the limited memories + (corrections). The default value is 6. Values less than 3 are not + recommended. Large values will result in excessive computing time. + + + + + + Epsilon for convergence test. + + + + + This parameter determines the accuracy with which the solution is to + be found. A minimization terminates when + + ||g|| < epsilon * max(1, ||x||), + + where ||.|| denotes the Euclidean (L2) norm. The default value is 1e-5. + + + + + + Distance for delta-based convergence test. + + + + This parameter determines the distance, in iterations, to compute + the rate of decrease of the objective function. If the value of this + parameter is zero, the library does not perform the delta-based + convergence test. The default value is 0. + + + + + + Delta for convergence test. + + + + + This parameter determines the minimum rate of decrease of the + objective function. The library stops iterations when the + following condition is met: + + (f' - f) / f < delta + + + where f' is the objective value of past iterations + ago, and f is the objective value of the current iteration. Default value + is 0. + + + + + + The maximum number of iterations. + + + + The minimize function terminates an optimization process with + status + code when the iteration count exceeds this parameter. Setting this parameter + to zero continues an optimization process until a convergence or error. The + default value is 0. + + + + + The line search algorithm. + + + + This parameter specifies a line search + algorithm to be used by the L-BFGS routine. + + + + + + The maximum number of trials for the line search. + + + + This parameter controls the number of function and gradients evaluations + per iteration for the line search routine. The default value is 20. + + + + + + The minimum step of the line search routine. + + + + The default value is 1e-20. This value need not be modified unless + the exponents are too large for the machine being used, or unless the problem + is extremely badly scaled (in which case the exponents should be increased). + + + + + + The maximum step of the line search. + + + + The default value is 1e+20. This value need not be modified unless the + exponents are too large for the machine being used, or unless the problem is + extremely badly scaled (in which case the exponents should be increased). + + + + + + A parameter to control the accuracy of the line search routine. The default + value is 1e-4. This parameter should be greater than zero and smaller + than 0.5. + + + + + + A coefficient for the Wolfe condition. + + + + This parameter is valid only when the backtracking line-search algorithm is used + with the Wolfe condition, + or . The default value + is 0.9. This parameter should be greater the + and smaller than 1.0. + + + + + + A parameter to control the accuracy of the line search routine. + + + + The default value is 0.9. If the function and gradient evaluations are + inexpensive with respect to the cost of the iteration (which is sometimes the + case when solving very large problems) it may be advantageous to set this parameter + to a small value. A typical small value is 0.1. This parameter should be + greater than the (1e-4) and smaller than + 1.0. + + + + + + The machine precision for floating-point values. + + + + This parameter must be a positive value set by a client program to + estimate the machine precision. The line search routine will terminate + with the status code (::LBFGSERR_ROUNDING_ERROR) if the relative width + of the interval of uncertainty is less than this parameter. + + + + + + Coefficient for the L1 norm of variables. + + + + + This parameter should be set to zero for standard minimization problems. Setting this + parameter to a positive value activates Orthant-Wise Limited-memory Quasi-Newton (OWL-QN) + method, which minimizes the objective function F(x) combined with the L1 norm |x| of the + variables, {F(x) + C |x|}. This parameter is the coefficient for the |x|, i.e., C. + + + As the L1 norm |x| is not differentiable at zero, the library modifies function and + gradient evaluations from a client program suitably; a client program thus have only + to return the function value F(x) and gradients G(x) as usual. The default value is zero. + + + + + + Start index for computing L1 norm of the variables. + + + + + This parameter is valid only for OWL-QN method (i.e., != 0). + This parameter b (0 <= b < N) specifies the index number from which the library + computes the L1 norm of the variables x, + + |x| := |x_{b}| + |x_{b+1}| + ... + |x_{N}|. + + In other words, variables x_1, ..., x_{b-1} are not used for + computing the L1 norm. Setting b (0 < b < N), one can protect + variables, x_1, ..., x_{b-1} (e.g., a bias term of logistic + regression) from being regularized. The default value is zero. + + + + + + End index for computing L1 norm of the variables. + + + + This parameter is valid only for OWL-QN method (i.e., != 0). + This parameter e (0 < e <= N) specifies the index number at which the library stops + computing the L1 norm of the variables x, + + |x| := |x_{b}| + |x_{b+1}| + ... + |x_{N}|. + + + + + + Occurs when progress is made during the optimization. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Line Search Failed Exception. + + + + This exception may be thrown by the L-BFGS Optimizer + when the line search routine used by the optimization method fails. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The error code information of the line search routine. + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + + + + + Initializes a new instance of the class. + + + Message providing some additional information. + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is a null reference (Nothing in Visual Basic). + + + + + + + + + + Gets the error code information returned by the line search routine. + + + The error code information returned by the line search routine. + + + + + Optimization progress event arguments. + + + + + Initializes a new instance of the class. + + + The current iteration of the optimization method. + The number of function evaluations performed. + The current gradient of the function. + The norm of the current gradient + The norm of the current parameter vector. + The current solution parameters. + The value of the function evaluated at the current solution. + The current step size. + True if the method is about to terminate, false otherwise. + + + + + Gets the current iteration of the method. + + + + + + Gets the number of function evaluations performed. + + + + + + Gets the current gradient of the function being optimized. + + + + + + Gets the norm of the current . + + + + + + Gets the current solution parameters for the problem. + + + + + + Gets the norm of the current . + + + + + + Gets the value of the function to be optimized + at the current proposed . + + + + + + Gets the current step size. + + + + + + Gets or sets a value indicating whether the + optimization process is about to terminate. + + + true if finished; otherwise, false. + + + + + An user-defined value associated with this object. + + + + + + Status codes for the + constrained quadratic programming solver. + + + + + + Convergence was attained. + + + + + + The quadratic problem matrix is not positive definite. + + + + + + The posed constraints cannot be fulfilled. + + + + + + Goldfarb-Idnani Quadratic Programming Solver. + + + + + References: + + + Goldfarb D., Idnani A. (1982) Dual and Primal-Dual Methods for Solving Strictly Convex Quadratic Programs. + Available on: http://www.javaquant.net/papers/GoldfarbIdnani.pdf . + + Berwin A Turlach. QuadProg, Quadratic Programming Solver (implementation in Fortran). + Available on: http://school.maths.uwa.edu.au/~berwin/software/quadprog.html . + + + + + + + There are three ways to state a quadratic programming problem in this framework. + + + + The first is to state the problem in its canonical form, explicitly stating the + matrix Q and vector d specifying the quadratic function and the matrices A and + vector b specifying the problem constraints. + + The second is to state the problem with lambda expressions using symbolic variables. + + The third is to state the problem using text strings. + + + + In the following section we will provide examples for those ways. + + + + This is an example stating the problem using lambdas: + + // Solve the following optimization problem: + // + // min f(x) = 2x² - xy + 4y² - 5x - 6y + // + // s.t. x - y == 5 (x minus y should be equal to 5) + // x >= 10 (x should be greater than or equal to 10) + // + + // In this example we will be using some symbolic processing. + // The following variables could be initialized to any value. + double x = 0, y = 0; + + // Create our objective function using a lambda expression + var f = new QuadraticObjectiveFunction(() => 2 * (x * x) - (x * y) + 4 * (y * y) - 5 * x - 6 * y); + + // Now, create the constraints + List<LinearConstraint> constraints = new List<LinearConstraint>(); + constraints.Add(new LinearConstraint(f, () => x - y == 5)); + constraints.Add(new LinearConstraint(f, () => x >= 10)); + + // Now we create the quadratic programming solver for 2 variables, using the constraints. + GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); + + // And attempt to solve it. + double minimumValue = solver.Minimize(); + + + + This is an example stating the problem using strings: + + // Solve the following optimization problem: + // + // max f(x) = -2x² + xy - y² + 5y + // + // s.t. x - y == 5 (x minus y should be equal to 5) + // x >= 10 (x should be greater than or equal to 10) + // + // + + // Create our objective function using a text string + var f = new QuadraticObjectiveFunction("-2x² + xy - y² + 5y"); + + // Now, create the constraints + List<LinearConstraint> constraints = new List<LinearConstraint>(); + constraints.Add(new LinearConstraint(f, "x - y == 5")); + constraints.Add(new LinearConstraint(f, " x >= 10")); + + // Now we create the quadratic programming solver for 2 variables, using the constraints. + GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); + + // And attempt to solve it. + double maxValue = solver.Maximize(); + + + + And finally, an example stating the problem using matrices: + + // Solve the following optimization problem: + // + // min f(x) = 2x² - xy + 4y² - 5x - 6y + // + // s.t. x - y == 5 (x minus y should be equal to 5) + // x >= 10 (x should be greater than or equal to 10) + // + + // Lets first group the quadratic and linear terms. The + // quadratic terms are +2x², +3y² and -4xy. The linear + // terms are -2x and +1y. So our matrix of quadratic + // terms can be expressed as: + + double[,] Q = // 2x² -1xy +4y² + { + /* x y */ + /*x*/ { +2 /*xx*/ *2, -1 /*xy*/ }, + /*y*/ { -1 /*xy*/ , +4 /*yy*/ *2 }, + }; + + // Accordingly, our vector of linear terms is given by: + + double[] d = { -5 /*x*/, -6 /*y*/ }; // -5x -6y + + // We have now to express our constraints. We can do it + // either by directly specifying a matrix A in which each + // line refers to one of the constraints, expressing the + // relationship between the different variables in the + // constraint, like this: + + double[,] A = + { + { 1, -1 }, // This line says that x + (-y) ... (a) + { 1, 0 }, // This line says that x alone ... (b) + }; + + double[] b = + { + 5, // (a) ... should be equal to 5. + 10, // (b) ... should be greater than or equal to 10. + }; + + // Equalities must always come first, and in this case + // we have to specify how many of the constraints are + // actually equalities: + + int numberOfEqualities = 1; + + + // Alternatively, we may use a more explicitly form: + List<LinearConstraint> list = new List<LinearConstraint>(); + + // Define the first constraint, which involves only x + list.Add(new LinearConstraint(numberOfVariables: 1) + { + // x is the first variable, thus located at + // index 0. We are specifying that x >= 10: + + VariablesAtIndices = new[] { 0 }, // index 0 (x) + ShouldBe = ConstraintType.GreaterThanOrEqualTo, + Value = 10 + }); + + // Define the second constraint, which involves x and y + list.Add(new LinearConstraint(numberOfVariables: 2) + { + // x is the first variable, located at index 0, and y is + // the second, thus located at 1. We are specifying that + // x - y = 5 by saying that the variable at position 0 + // times 1 plus the variable at position 1 times -1 + // should be equal to 5. + + VariablesAtIndices = new int[] { 0, 1 }, // index 0 (x) and index 1 (y) + CombinedAs = new double[] { 1, -1 }, // when combined as x - y + ShouldBe = ConstraintType.EqualTo, + Value = 5 + }); + + + // Now we can finally create our optimization problem + var target = new GoldfarbIdnani(Q, d, constraints: list); + + // And attempt to solve it. + double minimumValue = target.Minimize(); + + + + + + + Constructs a new class. + + + The objective function to be optimized. + The problem's constraints. + + + + + Constructs a new class. + + + The objective function to be optimized. + The problem's constraints. + + + + + Constructs a new instance of the class. + + + The objective function to be optimized. + The constraints matrix A. + The constraints values b. + The number of equalities in the constraints. + + + + + Constructs a new instance of the class. + + + The symmetric matrix of quadratic terms defining the objective function. + The vector of linear terms defining the objective function. + The constraints matrix A. + The constraints values b. + The number of equalities in the constraints. + + + + + Finds the minimum value of a function. The solution vector + will be made available at the property. + + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + + Finds the maximum value of a function. The solution vector + will be made available at the property. + + + Returns true if the method converged to a . + In this case, the found value will also be available at the + property. + + + + + + Not available. + + + + + + Gets the total number of constraints in the problem. + + + + + + Gets how many constraints are inequality constraints. + + + + + + Gets the total number of iterations performed on the + last call to the or methods. + + + + + + Gets or sets the maximum number of iterations that should be + performed before the method terminates. If set to zero, the + method will run to completion. Default is 0. + + + + + + Gets the total number of constraint removals performed + on the last call to the or methods. + + + + + + Gets the Lagrangian multipliers for the + last solution found. + + + + + + Gets the indices of the active constraints + found during the last call of the + or + methods. + + + + + + Gets the constraint matrix A for the problem. + + + + + + Gets the constraint values b for the problem. + + + + + + Gets the constraint tolerances b for the problem. + + + + + + Gets the matrix of quadratic terms of + the quadratic optimization problem. + + + + + + Gets the vector of linear terms of the + quadratic optimization problem. + + + + + + Get the exit code returned in the last call to the + or + methods. + + + + + + Brent's root finding and minimization algorithms. + + + + + In numerical analysis, Brent's method is a complicated but popular root-finding + algorithm combining the bisection method, the secant method and inverse quadratic + interpolation. It has the reliability of bisection but it can be as quick as some + of the less reliable methods. The idea is to use the secant method or inverse quadratic + interpolation if possible, because they converge faster, but to fall back to the more + robust bisection method if necessary. Brent's method is due to Richard Brent (1973) + and builds on an earlier algorithm of Theodorus Dekker (1969). + + + The algorithms implemented in this class are based on the original C source code + available in Netlib (http://www.netlib.org/c/brent.shar) by Oleg Keselyov, 1991. + + + References: + + + R.P. Brent (1973). Algorithms for Minimization without Derivatives, Chapter 4. + Prentice-Hall, Englewood Cliffs, NJ. ISBN 0-13-022335-2. + + Wikipedia contributors. "Brent's method." Wikipedia, The Free Encyclopedia. + Wikipedia, The Free Encyclopedia, 11 May. 2012. Web. 22 Jun. 2012. + + + + + + + + The following example shows how to compute the maximum, + minimum and a single root of a univariate function. + + + // Suppose we were given the function x³ + 2x² - 10x and + // we have to find its root, maximum and minimum inside + // the interval [-4,3]. First, we express this function + // as a lambda expression: + Func<double, double> function = x => x * x * x + 2 * x * x - 10 * x; + + // And now we can create the search algorithm: + BrentSearch search = new BrentSearch(function, -4, 3); + + // Finally, we can query the information we need + double max = search.Maximize(); // occurs at -2.61 + double min = search.Minimize(); // occurs at 1.27 + double root = search.FindRoot(); // occurs at 0.50 + + + + + + + + Constructs a new Brent search algorithm. + + + The function to be searched. + Start of search region. + End of search region. + + + + + Attempts to find a root in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Attempts to find a value in the interval [a;b] + + + The location of the zero value in the given interval. + + + + + Finds the minimum of the function in the interval [a;b] + + + The location of the minimum of the function in the given interval. + + + + + Finds the maximum of the function in the interval [a;b] + + + The location of the maximum of the function in the given interval. + + + + + Finds the minimum of a function in the interval [a;b] + + + The function to be minimized. + Start of search region. + End of search region. + The tolerance for determining the solution. + + The location of the minimum of the function in the given interval. + + + + + Finds the maximum of a function in the interval [a;b] + + + The function to be maximized. + Start of search region. + End of search region. + The tolerance for determining the solution. + + The location of the maximum of the function in the given interval. + + + + + Finds the root of a function in the interval [a;b] + + + The function to have its root computed. + Start of search region. + End of search region. + The tolerance for determining the solution. + + The location of the zero value in the given interval. + + + + + Finds a value of a function in the interval [a;b] + + + The function to have its root computed. + Start of search region. + End of search region. + The tolerance for determining the solution. + The value to be looked for in the function. + + The location of the zero value in the given interval. + + + + + Gets the number of variables (free parameters) + in the optimization problem. + + + + The number of parameters. + + + + + + Gets or sets the tolerance margin when + looking for an answer. Default is 1e-6. + + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets or sets the lower bound for the search interval a. + + + + + + Gets the solution found in the last call + to , + or . + + + + + + Gets the value at the solution found in the last call + to , + or . + + + + + + Gets the value at the solution found in the last call + to , + or . + + + + + + Gets the function to be searched. + + + + + + Set of special mathematic functions. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + John D. Cook, http://www.johndcook.com/ + + + + + + + Complementary error function of the specified value. + + + + http://mathworld.wolfram.com/Erfc.html + + + + + + Error function of the specified value. + + + + + + Inverse error function (. + + + + + + Inverse complemented error function (. + + + + + + Evaluates polynomial of degree N + + + + + + Evaluates polynomial of degree N with assumption that coef[N] = 1.0 + + + + + + Computes the Basic Spline of order n + + + + + Computes the binomial coefficients C(n,k). + + + + + + Computes the binomial coefficients C(n,k). + + + + + + Computes the log binomial Coefficients Log[C(n,k)]. + + + + + + Computes the log binomial Coefficients Log[C(n,k)]. + + + + + + Returns the extended factorial definition of a real number. + + + + + + Returns the log factorial of a number (ln(n!)) + + + + + + Returns the log factorial of a number (ln(n!)) + + + + + + Computes the factorial of a number (n!) + + + + + Computes log(1-x) without losing precision for small values of x. + + + + + + Computes log(1+x) without losing precision for small values of x. + + + + References: + - http://www.johndcook.com/csharp_log_one_plus_x.html + + + + + + Compute exp(x) - 1 without loss of precision for small values of x. + + + References: + - http://www.johndcook.com/cpp_expm1.html + + + + + Estimates unit round-off in quantities of size x. + + + This is a port of the epslon function from EISPACK. + + + + + Returns with the sign of . + + + + This is a port of the sign transfer function from EISPACK, + and is is equivalent to C++'s std::copysign function. + + + If B > 0 then the result is ABS(A), else it is -ABS(A). + + + + + Computes x + y without losing precision using ln(x) and ln(y). + + + + + + Computes x + y without losing precision using ln(x) and ln(y). + + + + + + Computes x + y without losing precision using ln(x) and ln(y). + + + + + + Secant. + + + + + + Cosecant. + + + + + + Cotangent. + + + + + Inverse secant. + + + + + + Inverse cosecant. + + + + + + Inverse cotangent. + + + + + + Hyperbolic secant. + + + + + + Hyperbolic secant. + + + + + + Hyperbolic cotangent. + + + + + + Inverse hyperbolic sin. + + + + + + Inverse hyperbolic cos. + + + + + + Inverse hyperbolic tangent. + + + + + + Inverse hyperbolic secant. + + + + + + Inverse hyperbolic cosecant. + + + + + + Inverse hyperbolic cotangent. + + + + + + Discrete Hilbert Transformation. + + + + + The discrete Hilbert transform is a transformation operating on the time + domain. It performs a 90 degree phase shift, shifting positive frequencies + by +90 degrees and negative frequencies by -90 degrees. It is useful to + create analytic representation of signals. + + + The Hilbert transform can be implemented efficiently by using the Fast + Fourier Transform. After transforming a signal from the time-domain to + the frequency domain, one can zero its negative frequency components and + revert the signal back to obtain the phase shifting. + + + By applying the Hilbert transform to a signal twice, the negative of + the original signal is recovered. + + + References: + + + Marple, S.L., "Computing the discrete-time analytic signal via FFT," IEEE + Transactions on Signal Processing, Vol. 47, No.9 (September 1999). Available on: + http://classes.engr.oregonstate.edu/eecs/winter2009/ece464/AnalyticSignal_Sept1999_SPTrans.pdf + + J. F. Culling, Online, cross-indexed dictionary of DSP terms. Available on: + http://www.cardiff.ac.uk/psych/home2/CullingJ/frames_dict.html + + + + + + + + Performs the Fast Hilbert Transform over a double[] array. + + + + + + Performs the Fast Hilbert Transform over a complex[] array. + + + + + + Beta functions. + + + + + This class offers implementations for the many Beta functions, + such as the Beta function itself, + its logarithm, the + incomplete regularized functions and others + + + The beta function was studied by Euler and Legendre and was given + its name by Jacques Binet; its symbol Β is a Greek capital β rather + than the similar Latin capital B. + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + Wikipedia contributors, "Beta function,". Wikipedia, The Free + Encyclopedia. Available at: http://en.wikipedia.org/wiki/Beta_function + + + + + + + Beta.Function(4, 0.42); // 1.2155480852832423 + Beta.Log(4, 15.2); // -9.46087817876467 + Beta.Incbcf(4, 2, 4.2); // -0.23046874999999992 + Beta.Incbd(4, 2, 4.2); // 0.7375 + Beta.PowerSeries(4, 2, 4.2); // -3671.801280000001 + + Beta.Incomplete(a: 5, b: 4, x: 0.5); // 0.36328125 + Beta.IncompleteInverse(0.5, 0.6, 0.1); // 0.019145979066925722 + Beta.Multinomial(0.42, 0.5, 5.2 ); // 0.82641912952987062 + + + + + + + Beta function as gamma(a) * gamma(b) / gamma(a+b). + + + + Please see + + + + + + Natural logarithm of the Beta function. + + + + Please see + + + + + + Incomplete (regularized) Beta function Ix(a, b). + + + + Please see + + + + + + Continued fraction expansion #1 for incomplete beta integral. + + + + Please see + + + + + + Continued fraction expansion #2 for incomplete beta integral. + + + + Please see + + + + + + Inverse of incomplete beta integral. + + + + Please see + + + + + + Power series for incomplete beta integral. Use when b*x + is small and x not too close to 1. + + + + Please see + + + + + + Multinomial Beta function. + + + + Please see + + + + + + Gamma Γ(x) functions. + + + + + In mathematics, the gamma function (represented by the capital Greek + letter Γ) is an extension of the factorial function, with its argument + shifted down by 1, to real and complex numbers. That is, if n is + a positive integer: + + Γ(n) = (n-1)! + + The gamma function is defined for all complex numbers except the negative + integers and zero. For complex numbers with a positive real part, it is + defined via an improper integral that converges: + + ∞ + Γ(z) = ∫ t^(z-1)e^(-t) dt + 0 + + + This integral function is extended by analytic continuation to all + complex numbers except the non-positive integers (where the function + has simple poles), yielding the meromorphic function we call the gamma + function. + + The gamma function is a component in various probability-distribution + functions, and as such it is applicable in the fields of probability + and statistics, as well as combinatorics. + + + References: + + + Wikipedia contributors, "Gamma function,". Wikipedia, The Free + Encyclopedia. Available at: http://en.wikipedia.org/wiki/Gamma_function + + + Cephes Math Library, http://www.netlib.org/cephes/ + + + + + + double x = 0.17; + + // Compute main Gamma function and variants + double gamma = Gamma.Function(x); // 5.4511741801042106 + double gammap = Gamma.Function(x, p: 2); // -39.473585841300675 + double log = Gamma.Log(x); // 1.6958310313607003 + double logp = Gamma.Log(x, p: 2); // 3.6756317353404273 + double stir = Gamma.Stirling(x); // 24.040352622960743 + double psi = Gamma.Digamma(x); // -6.2100942259248626 + double tri = Gamma.Trigamma(x); // 35.915302055854525 + + double a = 4.2; + + // Compute the incomplete regularized Gamma functions P and Q: + double lower = Gamma.LowerIncomplete(a, x); // 0.000015685073063633753 + double upper = Gamma.UpperIncomplete(a, x); // 0.9999843149269364 + + + + + + Maximum gamma on the machine. + + + + Gamma function of the specified value. + + + + + + Multivariate Gamma function + + + + + + Digamma function. + + + + + + Trigamma function. + + + + This code has been adapted from the FORTRAN77 and subsequent + C code by B. E. Schneider and John Burkardt. The code had been + made public under the GNU LGPL license. + + + + + + Gamma function as computed by Stirling's formula. + + + + + + Upper incomplete regularized Gamma function Q + (a.k.a the incomplete complemented Gamma function) + + + + This function is equivalent to Q(x) = Γ(s, x) / Γ(s). + + + + + + Lower incomplete regularized gamma function P + (a.k.a. the incomplete Gamma function). + + + + This function is equivalent to P(x) = γ(s, x) / Γ(s). + + + + + + Natural logarithm of the gamma function. + + + + + + Natural logarithm of the multivariate Gamma function. + + + + + + Inverse of the + incomplete Gamma integral (LowerIncomplete, P). + + + + + + Inverse of the complemented + incomplete Gamma integral (UpperIncomplete, Q). + + + + + + Inverse of the complemented + incomplete Gamma integral (UpperIncomplete, Q). + + + + + + Random Gamma-distribution number generation + based on Marsaglia's Simple Method (2000). + + + + + + Common mathematical constants. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + http://www.johndcook.com/cpp_expm1.html + + + + + + + Euler-Mascheroni constant. + + + + This constant is defined as 0.5772156649015328606065120. + + + + + + Double-precision machine round-off error. + + + + This value is actually different from Double.Epsilon. It + is defined as 1.11022302462515654042E-16. + + + + + + Single-precision machine round-off error. + + + + This value is actually different from Single.Epsilon. It + is defined as 1.1920929E-07f. + + + + + + Double-precision small value. + + + + This constant is defined as 1.493221789605150e-300. + + + + + + Single-precision small value. + + + + This constant is defined as 1.493221789605150e-40f. + + + + + + Maximum log on the machine. + + + + This constant is defined as 7.09782712893383996732E2. + + + + + + Minimum log on the machine. + + + + This constant is defined as -7.451332191019412076235E2. + + + + + + Catalan's constant. + + + + + + Log of number pi: log(pi). + + + + This constant has the value 1.14472988584940017414. + + + + + + Log of two: log(2). + + + + This constant has the value 0.69314718055994530941. + + + + + + Log of three: log(3). + + + + This constant has the value 1.098612288668109691395. + + + + + + Log of square root of twice number pi: sqrt(log(2*π). + + + + This constant has the value 0.91893853320467274178032973640562. + + + + + + Log of twice number pi: log(2*pi). + + + + + This constant has the value 1.837877066409345483556. + + + + + + Square root of twice number pi: sqrt(2*π). + + + + This constant has the value 2.50662827463100050242E0. + + + + + + Square root of half number π: sqrt(π/2). + + + + This constant has the value 1.25331413731550025121E0. + + + + + + Square root of 2: sqrt(2). + + + + This constant has the value 1.4142135623730950488016887. + + + + + + Half square root of 2: sqrt(2)/2. + + + + This constant has the value 7.07106781186547524401E-1. + + + + + + Bessel functions. + + + + + Bessel functions, first defined by the mathematician Daniel + Bernoulli and generalized by Friedrich Bessel, are the canonical + solutions y(x) of Bessel's differential equation. + + + Bessel's equation arises when finding separable solutions to Laplace's + equation and the Helmholtz equation in cylindrical or spherical coordinates. + Bessel functions are therefore especially important for many problems of wave + propagation and static potentials. In solving problems in cylindrical coordinate + systems, one obtains Bessel functions of integer order (α = n); in spherical + problems, one obtains half-integer orders (α = n+1/2). For example: + + + + Electromagnetic waves in a cylindrical waveguide + + Heat conduction in a cylindrical object + + Modes of vibration of a thin circular (or annular) artificial + membrane (such as a drum or other membranophone) + + Diffusion problems on a lattice + + Solutions to the radial Schrödinger equation (in spherical and + cylindrical coordinates) for a free particle + + Solving for patterns of acoustical radiation + + Frequency-dependent friction in circular pipelines + + + + + Bessel functions also appear in other problems, such as signal processing + (e.g., see FM synthesis, Kaiser window, or Bessel filter). + + + This class offers implementations of Bessel's first and second kind + functions, with special cases for zero and for arbitrary n. + + + + References: + + + Cephes Math Library, http://www.netlib.org/cephes/ + + Wikipedia contributors, "Bessel function,". Wikipedia, The Free + Encyclopedia. Available at: http://en.wikipedia.org/wiki/Bessel_function + + + + + + + // Bessel function of order 0 + actual = Bessel.J0(1); // 0.765197686557967 + actual = Bessel.J0(5); // -0.177596771314338 + + // Bessel function of order n + double j2 = Bessel.J(2, 17.3); // 0.117351128521774 + double j01 = Bessel.J(0, 1); // 0.765197686557967 + double j05 = Bessel.J(0, 5); // -0.177596771314338 + + + // Bessel function of the second kind, of order 0. + double y0 = Bessel.Y0(64); // 0.037067103232088 + + // Bessel function of the second kind, of order n. + double y2 = Bessel.Y(2, 4); // 0.215903594603615 + double y0 = Bessel.Y(0, 64); // 0.037067103232088 + + + + + + + Bessel function of order 0. + + + + See + + + + + + Bessel function of order 1. + + + + See + + + + + + Bessel function of order n. + + + + See + + + + + + Bessel function of the second kind, of order 0. + + + + See + + + + + + Bessel function of the second kind, of order 1. + + + + See + + + + + + Bessel function of the second kind, of order n. + + + + See + + + + + + Bessel function of the first kind, of order 0. + + + + See + + + + + + Bessel function of the first kind, of order 1. + + + + See + + + + + + Bessel function of the first kind, of order n. + + + + See + + + + + + Set of mathematical tools. + + + + + + Sets a random seed for the framework's main + internal number generator. + + + + + + Gets the angle formed by the vector [x,y]. + + + + + + Gets the angle formed by the vector [x,y]. + + + + + + Gets the displacement angle between two points. + + + + + + Gets the displacement angle between two points, coded + as an integer varying from 0 to 20. + + + + + + Gets the greatest common divisor between two integers. + + + First value. + Second value. + + The greatest common divisor. + + + + + Returns the next power of 2 after the input value x. + + + Input value x. + + Returns the next power of 2 after the input value x. + + + + + Returns the previous power of 2 after the input value x. + + + Input value x. + + Returns the previous power of 2 after the input value x. + + + + + Hypotenuse calculus without overflow/underflow + + + First value + Second value + + The hypotenuse Sqrt(a^2 + b^2) + + + + + Hypotenuse calculus without overflow/underflow + + + first value + second value + + The hypotenuse Sqrt(a^2 + b^2) + + + + + Hypotenuse calculus without overflow/underflow + + + first value + second value + + The hypotenuse Sqrt(a^2 + b^2) + + + + + Gets the proper modulus operation for + an integer value x and modulo m. + + + + + + Gets the proper modulus operation for + a real value x and modulo m. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Converts the value x (which is measured in the scale + 'from') to another value measured in the scale 'to'. + + + + + + Returns the hyperbolic arc cosine of the specified value. + + + + + + Returns the hyperbolic arc sine of the specified value. + + + + + + Returns the hyperbolic arc tangent of the specified value. + + + + + + Returns the factorial falling power of the specified value. + + + + + + Truncated power function. + + + + + + Fast inverse floating-point square root. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Interpolates data using a piece-wise linear function. + + + The value to be calculated. + The input data points x. Those values need to be sorted. + The output data points y. + + The value to be returned for values before the first point in . + + The value to be returned for values after the last point in . + + Computes the output for f(value) by using a piecewise linear + interpolation of the data points and . + + + + + Gets the maximum value among three values. + + + The first value a. + The second value b. + The third value c. + + The maximum value among , + and . + + + + + Gets the minimum value among three values. + + + The first value a. + The second value b. + The third value c. + + The minimum value among , + and . + + + + + Gets a reference to the random number generator used + internally by the Accord.NET classes and methods. + + + + + + Returns the Identity matrix of the given size. + + + + + + Creates a jagged magic square matrix. + + + + + + Returns a square diagonal matrix of the given size. + + + + + + Return a jagged matrix with a vector of values on its diagonal. + + + + + + Shuffles an array. + + + + + + Shuffles a collection. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Sorts the elements of an entire one-dimensional array using the given comparison. + + + + + + Creates a zero-valued vector. + + + The type of the vector to be created. + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a zero-valued vector. + + + The type of the vector to be created. + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a zero-valued vector. + + + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a zero-valued vector. + + + The number of elements in the vector. + + A vector of the specified size. + + + + + Creates a vector with the given dimension and starting values. + + + The number of elements in the vector. + The initial values for the vector. + + + + + Creates a vector with the given dimension default value. + + + The number of elements in the vector. + + + + + Creates a vector with the given dimension and starting values. + + + The number of elements in the vector. + The initial value for the elements in the vector. + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates a vector with uniformly distributed random data. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Creates an interval vector. + + + + + + Cohen-Daubechies-Feauveau Wavelet Transform + + + + + + Common interface for wavelets algorithms. + + + + + + 1-D Forward Discrete Wavelet Transform. + + + + + + 2-D Forward Discrete Wavelet Transform. + + + + + + 1-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + 2-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + Constructs a new Cohen-Daubechies-Feauveau Wavelet Transform. + + + The number of iterations for the 2D transform. + + + + + 1-D Forward Discrete Wavelet Transform. + + + + + + 2-D Forward Discrete Wavelet Transform. + + + + + + 1-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + 2-D Backward (Inverse) Discrete Wavelet Transform. + + + + + Forward biorthogonal 9/7 wavelet transform + + + + + Inverse biorthogonal 9/7 wavelet transform + + + + + + Forward biorthogonal 9/7 2D wavelet transform + + + + + + Inverse biorthogonal 9/7 2D wavelet transform + + + + + + Haar Wavelet Transform. + + + + + References: + + + Musawir Ali, An Introduction to Wavelets and the Haar Transform. + Available on: http://www.cs.ucf.edu/~mali/haar/ + + + + + + + + Constructs a new Haar Wavelet Transform. + + The number of iterations for the 2D transform. + + + + + 1-D Forward Discrete Wavelet Transform. + + + + + + 1-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + 2-D Forward Discrete Wavelet Transform. + + + + + + 2-D Backward (Inverse) Discrete Wavelet Transform. + + + + + + Discrete Haar Wavelet Transform + + + + + + Inverse Haar Wavelet Transform + + + + + + Discrete Haar Wavelet 2D Transform + + + + + + Inverse Haar Wavelet 2D Transform + + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/Accord.Neuro.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/Accord.Neuro.3.0.2.nupkg new file mode 100644 index 0000000000..f8c61da75 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/Accord.Neuro.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net35/Accord.Neuro.dll b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net35/Accord.Neuro.dll new file mode 100644 index 0000000000..4222c366e Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net35/Accord.Neuro.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net35/Accord.Neuro.xml b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net35/Accord.Neuro.xml new file mode 100644 index 0000000000..b0c0b6507 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net35/Accord.Neuro.xml @@ -0,0 +1,3927 @@ + + + + Accord.Neuro + + + + + Identity activation function. + + + + The identity activation function is given by f(x) = x, + meaning it simply repasses the neuronal summation output to + further neurons untouched. + + + + + + Activation function interface. + + + All activation functions, which are supposed to be used with + neurons, which calculate their output as a function of weighted sum of + their inputs, should implement this interfaces. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Creates a new identity activation function. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Rectified linear activation function. + + + + This class implements a rectified linear activation + function as given by the piecewise formula: + + + f(x) = 0, if x > 0 + f(x) = x, otherwise + + + + This function is non-differentiable at zero. + + + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Gaussian stochastic activation function. + + + + + The Gaussian activation function can be used to create + Stochastic Neurons, which can in turn be used to create + Deep Belief Networks and Restricted Boltzmann + Machines. In contrast to the , the Gaussian can be used + to model continuous inputs in Deep Belief Networks. If, however, the inputs of the problem + being learned are discrete in nature, the use of a Bernoulli function would be more indicated. + + + The Gaussian activation function is modeled after a + Gaussian (Normal) probability distribution. + + + + This function assumes output variables have been + normalized to have zero mean and unit variance. + + + + + // Create a Gaussian function with slope alpha = 4.2 + GaussianFunction function = new GaussianFunction(4.2); + + // Computes the function output (linear, y = alpha * x) + double y = function.Function(x: 0.2); // 4.2 * 2 = 0.48 + + // Draws a sample from a Gaussian distribution with + // mean given by the function output y (previously 0.48) + double z = function.Generate(x: 0.4); // (random, between 0 and 1) + + // Please note that the above is completely equivalent + // to computing the line below (remember, 0.48 == y) + double w = function.Generate2(y: 0.48); // (random, between 0 and 1) + + + // We can also compute the derivative of the sigmoid function + double d = function.Derivative(x: 0.2); // 4.2 (the slope) + + // Or compute the derivative given the functions' output y + double e = function.Derivative2(y: 0.2); // 4.2 (the slope) + + + + + + + + + + + Common interface for stochastic activation functions. + + + + + + + + + Samples a value from the function given a input value. + + + Function input value. + + Draws a random value from the function. + + + + + Samples a value from the function given a function output value. + + + The function output value. This is the value which was obtained + with the help of the method. + + The method calculates the same output value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with help + of the method. + + + Draws a random value from the function. + + + + + Creates a new . + + + The linear slope value. Default is 1. + + + + + Creates a new . + + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Samples a value from the function given a input value. + + + Function input value. + + + Draws a random value from the function. + + + + + + Samples a value from the function given a function output value. + + + Function output value - the value, which was obtained + with the help of method. + + + Draws a random value from the function. + + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Gets or sets the class-wide + Gaussian random generator. + + + + + + Linear slope value. + + + + Default value is set to 1. + + + + + + Function output range. + + + + Default value is set to [-1;+1] + + + + + + Linear activation function. + + + + This class implements a linear activation function bounded + in the interval (a,b), as given by the piecewise formula: + + + f(x) = alpha*x, if a > x*alpha > b + f(x) = a, if a > x*alpha; + f(x) = b, if x*alpha > b; + + + + In which, by default, a = -1 and b = +1. + + + This function is continuous only in the interval (a/alpha, b/alpha). This is similar + to the threshold function but with a linear growth component. If alpha is set to a + very high value (such as infinity), the function behaves as a threshold function. + + + The output range of the function can be set to an arbitrary + value. The default output range is [-1, +1]. + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Linear slope value. + + + + Default value is set to 1. + + + + + + Function output range. + + + + Default value is set to [-1;+1] + + + + + + Bernoulli stochastic activation function. + + + + + The Bernoulli activation function can be used to create + Stochastic Neurons, which can in turn be used to create + Deep Belief Networks and Restricted Boltzmann + Machines. The use of a Bernoulli function is indicated when the inputs of a problem + are discrete, it is, are either 0 or 1. When the inputs are continuous, the use of a + might be more indicated. + + As a stochastic activation function, the Bernoulli + function is able to generate values following a statistic probability distribution. In + this case, the Bernoulli function follows a Bernoulli + distribution with its mean given by + the output of this class' sigmoidal function. + + + + + // Create a Bernoulli function with sigmoid's alpha = 1 + BernoulliFunction function = new BernoulliFunction(); + + // Computes the function output (sigmoid function) + double y = function.Function(x: 0.4); // 0.5986876 + + // Draws a sample from a Bernoulli distribution with + // mean given by the function output y (given as before) + double z = function.Generate(x: 0.4); // (random, 0 or 1) + + // Here, z can be either 0 or 1. Since it follows a Bernoulli + // distribution with mean 0.59, it is expected to be 1 about + // 0.59 of the time. + + // Now, please note that the above is completely equivalent + // to computing the line below (remember, 0.5986876 == y) + double w = function.Generate2(y: 0.5986876); // (random, 0 or 1) + + + // We can also compute the derivative of the sigmoid function + double d = function.Derivative(x: 0.4); // 0.240260 + + // Or compute the derivative given the functions' output y + double e = function.Derivative2(y: 0.5986876); // 0.240260 + + + + + + + + + + + Initializes a new instance of the class. + + + Sigmoid's alpha value. Default is 1. + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Samples a value from the function given a input value. + + + Function input value. + + Draws a random value from the function. + + + + + Samples a value from the function given a function output value. + + + The function output value. This is the value which was obtained + with the help of the method. + + The method calculates the same output value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with help + of the method. + + + Draws a random value from the function. + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Gets or sets the random sample generator + used to activate neurons of this class. + + + + + + Sigmoid's alpha value. + + + The value determines steepness of the function. Increasing value of + this property changes sigmoid to look more like a threshold function. Decreasing + value of this property makes sigmoid to be very smooth (slowly growing from its + minimum value to its maximum value). + + Default value is set to 1. + + + + + + Bipolar sigmoid activation function. + + + The class represents bipolar sigmoid activation function with + the next expression: + + 2 + f(x) = ------------------ - 1 + 1 + exp(-alpha * x) + + 2 * alpha * exp(-alpha * x ) + f'(x) = -------------------------------- = alpha * (1 - f(x)^2) / 2 + (1 + exp(-alpha * x))^2 + + + + Output range of the function: [-1, 1]. + + Functions graph: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Sigmoid's alpha value. + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Sigmoid's alpha value. + + + The value determines steepness of the function. Increasing value of + this property changes sigmoid to look more like a threshold function. Decreasing + value of this property makes sigmoid to be very smooth (slowly growing from its + minimum value to its maximum value). + + Default value is set to 2. + + + + + + Sigmoid activation function. + + + The class represents sigmoid activation function with + the next expression: + + 1 + f(x) = ------------------ + 1 + exp(-alpha * x) + + alpha * exp(-alpha * x ) + f'(x) = ---------------------------- = alpha * f(x) * (1 - f(x)) + (1 + exp(-alpha * x))^2 + + + + Output range of the function: [0, 1]. + + Functions graph: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Sigmoid's alpha value. + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Sigmoid's alpha value. + + + The value determines steepness of the function. Increasing value of + this property changes sigmoid to look more like a threshold function. Decreasing + value of this property makes sigmoid to be very smooth (slowly growing from its + minimum value to its maximum value). + + Default value is set to 2. + + + + + + Threshold activation function. + + + The class represents threshold activation function with + the next expression: + + f(x) = 1, if x >= 0, otherwise 0 + + + + Output range of the function: [0, 1]. + + Functions graph: + + + + + + + Initializes a new instance of the class. + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative (not supported). + + + Input value. + + Always returns 0. + + The method is not supported, because it is not possible to + calculate derivative of the function. + + + + + Calculates function derivative (not supported). + + + Input value. + + Always returns 0. + + The method is not supported, because it is not possible to + calculate derivative of the function. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Activation layer. + + + Activation layer is a layer of activation neurons. + The layer is usually used in multi-layer neural networks. + + + + + Base neural layer class. + + + This is a base neural layer class, which represents + collection of neurons. + + + + + Layer's inputs count. + + + + + Layer's neurons count. + + + + + Layer's neurons. + + + + + Layer's output vector. + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + + Protected contructor, which initializes , + and members. + + + + + Compute output vector of the layer. + + + Input vector. + + Returns layer's output vector. + + The actual layer's output vector is determined by neurons, + which comprise the layer - consists of output values of layer's neurons. + The output vector is also stored in property. + + The method may be called safely from multiple threads to compute layer's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold layer's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on layer's output property. + + + + + + Randomize neurons of the layer. + + + Randomizes layer's neurons by calling method + of each neuron. + + + + + Layer's inputs count. + + + + + Layer's neurons. + + + + + + Layer's output vector. + + + The calculation way of layer's output vector is determined by neurons, + which comprise the layer. + + The property is not initialized (equals to ) until + method is called. + + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + Activation function of neurons of the layer. + + The new layer is randomized (see + method) after it is created. + + + + + Set new activation function for all neurons of the layer. + + + Activation function to set. + + The methods sets new activation function for each neuron by setting + their property. + + + + + Distance layer. + + + Distance layer is a layer of distance neurons. + The layer is usually a single layer of such networks as Kohonen Self + Organizing Map, Elastic Net, Hamming Memory Net. + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + + The new layet is randomized (see + method) after it is created. + + + + + Back propagation learning algorithm. + + + The class implements back propagation learning algorithm, + which is widely used for training multi-layer neural networks with + continuous activation functions. + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = new double[4][] { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + double[][] output = new double[4][] { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + // create teacher + BackPropagationLearning teacher = new BackPropagationLearning( network ); + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + + + + + + Supervised learning interface. + + + The interface describes methods, which should be implemented + by all supervised learning algorithms. Supervised learning is such + type of learning algorithms, where system's desired output is known on + the learning stage. So, given sample input values and desired outputs, + system should adopt its internals to produce correct (or close to correct) + result after the learning step is complete. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns learning error. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns sum of learning errors. + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Calculates error values for all neurons of the network. + + + Desired output vector. + + Returns summary squared error of the last layer divided by 2. + + + + + Calculate weights updates. + + + Network's input vector. + + + + + Update network's weights. + + + + + + Learning rate, [0, 1]. + + + The value determines speed of learning. + + Default value equals to 0.1. + + + + + + Momentum, [0, 1]. + + + The value determines the portion of previous weight's update + to use on current iteration. Weight's update values are calculated on + each iteration depending on neuron's error. The momentum specifies the amount + of update to use from previous iteration and the amount of update + to use from current iteration. If the value is equal to 0.1, for example, + then 0.1 portion of previous update and 0.9 portion of current update are used + to update weight's value. + + Default value equals to 0.0. + + + + + + Delta rule learning algorithm. + + + This learning algorithm is used to train one layer neural + network of Activation Neurons + with continuous activation function, see + for example. + + See information about delta rule + learning algorithm. + + + + + + Initializes a new instance of the class. + + + Network to teach. + + Invalid nuaral network. It should have one layer only. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + The value determines speed of learning. + + Default value equals to 0.1. + + + + + + Elastic network learning algorithm. + + + This class implements elastic network's learning algorithm and + allows to train Distance Networks. + + + + + + Unsupervised learning interface. + + + The interface describes methods, which should be implemented + by all unsupervised learning algorithms. Unsupervised learning is such + type of learning algorithms, where system's desired output is not known on + the learning stage. Given sample input values, it is expected, that + system will organize itself in the way to find similarities betweed provided + samples. + + + + + Runs learning iteration. + + + Input vector. + + Returns learning error. + + + + + Runs learning epoch. + + + Array of input vectors. + + Returns sum of learning errors. + + + + + Initializes a new instance of the class. + + + Neural network to train. + + + + + Runs learning iteration. + + + Input vector. + + Returns learning error - summary absolute difference between neurons' + weights and appropriate inputs. The difference is measured according to the neurons + distance to the winner neuron. + + The method runs one learning iterations - finds winner neuron (the neuron + which has weights with values closest to the specified input vector) and updates its weight + (as well as weights of neighbor neurons) in the way to decrease difference with the specified + input vector. + + + + + Runs learning epoch. + + + Array of input vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + Determines speed of learning. + + Default value equals to 0.1. + + + + + + Learning radius, [0, 1]. + + + Determines the amount of neurons to be updated around + winner neuron. Neurons, which are in the circle of specified radius, + are updated during the learning procedure. Neurons, which are closer + to the winner neuron, get more update. + + Default value equals to 0.5. + + + + + + Fitness function used for chromosomes representing collection of neural network's weights. + + + + + + Initializes a new instance of the class. + + + Neural network for which fitness will be calculated. + Input data samples for neural network. + Output data sampels for neural network (desired output). + + Length of inputs and outputs arrays must be equal and greater than 0. + Length of each input vector must be equal to neural network's inputs count. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Neural networks' evolutionary learning algorithm, which is based on Genetic Algorithms. + + + The class implements supervised neural network's learning algorithm, + which is based on Genetic Algorithms. For the given neural network, it create a population + of chromosomes, which represent neural network's + weights. Then, during the learning process, the genetic population evolves and weights, which + are represented by the best chromosome, are set to the source neural network. + + See class for additional information about genetic population + and evolutionary based search. + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = new double[4][] { + new double[] {-1, 1}, new double[] {-1, 1}, + new double[] { 1, -1}, new double[] { 1, 1} + }; + double[][] output = new double[4][] { + new double[] {-1}, new double[] { 1}, + new double[] { 1}, new double[] {-1} + }; + // create neural network + ActivationNetwork network = new ActivationNetwork( + BipolarSigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + // create teacher + EvolutionaryLearning teacher = new EvolutionaryLearning( network, + 100 ); // number of chromosomes in genetic population + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + + + + + + + Initializes a new instance of the class. + + + Activation network to be trained. + Size of genetic population. + Random numbers generator used for initialization of genetic + population representing neural network's weights and thresholds (see ). + Random numbers generator used to generate random + factors for multiplication of network's weights and thresholds during genetic mutation + (ses .) + Random numbers generator used to generate random + values added to neural network's weights and thresholds during genetic mutation + (see ). + Method of selection best chromosomes in genetic population. + Crossover rate in genetic population (see + ). + Mutation rate in genetic population (see + ). + Rate of injection of random chromosomes during selection + in genetic population (see ). + + + + + Initializes a new instance of the class. + + + Activation network to be trained. + Size of genetic population. + + This version of constructor is used to create genetic population + for searching optimal neural network's weight using default set of parameters, which are: + + Selection method - elite; + Crossover rate - 0.75; + Mutation rate - 0.25; + Rate of injection of random chromosomes during selection - 0.20; + Random numbers generator for initializing new chromosome - + UniformGenerator( new Range( -1, 1 ) ); + Random numbers generator used during mutation for genes' multiplication - + ExponentialGenerator( 1 ); + Random numbers generator used during mutation for adding random value to genes - + UniformGenerator( new Range( -0.5f, 0.5f ) ). + + + In order to have full control over the above default parameters, it is possible to + used extended version of constructor, which allows to specify all of the parameters. + + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns learning error. + + The method is not implemented, since evolutionary learning algorithm is global + and requires all inputs/outputs in order to run its one epoch. Use + method instead. + + The method is not implemented by design. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary squared learning error for the entire epoch. + + While running the neural network's learning process, it is required to + pass the same and values for each + epoch. On the very first run of the method it will initialize evolutionary fitness + function with the given input/output. So, changing input/output in middle of the learning + process, will break it. + + + + + Perceptron learning algorithm. + + + This learning algorithm is used to train one layer neural + network of Activation Neurons + with the Threshold + activation function. + + See information about Perceptron + and its learning algorithm. + + + + + + Initializes a new instance of the class. + + + Network to teach. + + Invalid nuaral network. It should have one layer only. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns absolute error - difference between current network's output and + desired output. + + Runs one learning iteration and updates neuron's + weights in the case if neuron's output is not equal to the + desired output. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + The value determines speed of learning. + + Default value equals to 0.1. + + + + + + Resilient Backpropagation learning algorithm. + + + This class implements the resilient backpropagation (RProp) + learning algorithm. The RProp learning algorithm is one of the fastest learning + algorithms for feed-forward learning networks which use only first-order + information. + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = new double[4][] { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + double[][] output = new double[4][] { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + // create teacher + ResilientBackpropagationLearning teacher = new ResilientBackpropagationLearning( network ); + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Resets current weight and threshold derivatives. + + + + + + Resets the current update steps using the given learning rate. + + + + + + Update network's weights. + + + + + + Calculates error values for all neurons of the network. + + + Desired output vector. + + Returns summary squared error of the last layer divided by 2. + + + + + Calculate weights updates + + + Network's input vector. + + + + + Learning rate. + + + The value determines speed of learning. + + Default value equals to 0.0125. + + + + + + Kohonen Self Organizing Map (SOM) learning algorithm. + + + This class implements Kohonen's SOM learning algorithm and + is widely used in clusterization tasks. The class allows to train + Distance Networks. + + Sample usage (clustering RGB colors): + + // set range for randomization neurons' weights + Neuron.RandRange = new Range( 0, 255 ); + // create network + DistanceNetwork network = new DistanceNetwork( + 3, // thress inputs in the network + 100 * 100 ); // 10000 neurons + // create learning algorithm + SOMLearning trainer = new SOMLearning( network ); + // network's input + double[] input = new double[3]; + // loop + while ( !needToStop ) + { + input[0] = rand.Next( 256 ); + input[1] = rand.Next( 256 ); + input[2] = rand.Next( 256 ); + + trainer.Run( input ); + + // ... + // update learning rate and radius continuously, + // so networks may come steady state + } + + + + + + + Initializes a new instance of the class. + + + Neural network to train. + + This constructor supposes that a square network will be passed for training - + it should be possible to get square root of network's neurons amount. + + Invalid network size - square network is expected. + + + + + Initializes a new instance of the class. + + + Neural network to train. + Neural network's width. + Neural network's height. + + The constructor allows to pass network of arbitrary rectangular shape. + The amount of neurons in the network should be equal to width * height. + + + Invalid network size - network size does not correspond + to specified width and height. + + + + + Runs learning iteration. + + + Input vector. + + Returns learning error - summary absolute difference between neurons' weights + and appropriate inputs. The difference is measured according to the neurons + distance to the winner neuron. + + The method runs one learning iterations - finds winner neuron (the neuron + which has weights with values closest to the specified input vector) and updates its weight + (as well as weights of neighbor neurons) in the way to decrease difference with the specified + input vector. + + + + + Runs learning epoch. + + + Array of input vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + Determines speed of learning. + + Default value equals to 0.1. + + + + + + Learning radius. + + + Determines the amount of neurons to be updated around + winner neuron. Neurons, which are in the circle of specified radius, + are updated during the learning procedure. Neurons, which are closer + to the winner neuron, get more update. + + In the case if learning rate is set to 0, then only winner + neuron's weights are updated. + + Default value equals to 7. + + + + + + Gets the neural network's height. + + + + + + Gets the neural network's width. + + + + + + Activation network. + + + Activation network is a base for multi-layer neural network + with activation functions. It consists of activation + layers. + + Sample usage: + + // create activation network + ActivationNetwork network = new ActivationNetwork( + new SigmoidFunction( ), // sigmoid activation function + 3, // 3 inputs + 4, 1 ); // 2 layers: + // 4 neurons in the firs layer + // 1 neuron in the second layer + + + + + + + Base neural network class. + + + This is a base neural netwok class, which represents + collection of neuron's layers. + + + + + Network's inputs count. + + + + + Network's layers count. + + + + + Network's layers. + + + + + Network's output vector. + + + + + Initializes a new instance of the class. + + + Network's inputs count. + Network's layers count. + + Protected constructor, which initializes , + and members. + + + + + Compute output vector of the network. + + + Input vector. + + Returns network's output vector. + + The actual network's output vecor is determined by layers, + which comprise the layer - represents an output vector of the last layer + of the network. The output vector is also stored in property. + + The method may be called safely from multiple threads to compute network's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold network's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on network's output property. + + + + + + Randomize layers of the network. + + + Randomizes network's layers by calling method + of each layer. + + + + + Save network to specified file. + + + File name to save network into. + + The neural network is saved using .NET serialization (binary formatter is used). + + + + + Save network to specified file. + + + Stream to save network into. + + The neural network is saved using .NET serialization (binary formatter is used). + + + + + Load network from specified file. + + + File name to load network from. + + Returns instance of class with all properties initialized from file. + + Neural network is loaded from file using .NET serialization (binary formater is used). + + + + + Load network from specified file. + + + Stream to load network from. + + Returns instance of class with all properties initialized from file. + + Neural network is loaded from file using .NET serialization (binary formater is used). + + + + + Network's inputs count. + + + + + Network's layers. + + + + + Network's output vector. + + + The calculation way of network's output vector is determined by + layers, which comprise the network. + + The property is not initialized (equals to ) until + method is called. + + + + + + Initializes a new instance of the class. + + + Activation function of neurons of the network. + Network's inputs count. + Array, which specifies the amount of neurons in + each layer of the neural network. + + The new network is randomized (see + method) after it is created. + + + + + Set new activation function for all neurons of the network. + + + Activation function to set. + + The method sets new activation function for all neurons by calling + method for each layer of the network. + + + + + Distance network. + + + Distance network is a neural network of only one distance + layer. The network is a base for such neural networks as SOM, Elastic net, etc. + + + + + + Initializes a new instance of the class. + + + Network's inputs count. + Network's neurons count. + + The new network is randomized (see + method) after it is created. + + + + + Get winner neuron. + + + Index of the winner neuron. + + The method returns index of the neuron, which weights have + the minimum distance from network's input. + + + + + Activation neuron. + + + Activation neuron computes weighted sum of its inputs, adds + threshold value and then applies activation function. + The neuron isusually used in multi-layer neural networks. + + + + + + + Base neuron class. + + + This is a base neuron class, which encapsulates such + common properties, like neuron's input, output and weights. + + + + + Neuron's inputs count. + + + + + Neuron's weights. + + + + + Neuron's output value. + + + + + Random number generator. + + + The generator is used for neuron's weights randomization. + + + + + Random generator range. + + + Sets the range of random generator. Affects initial values of neuron's weight. + Default value is [0, 1]. + + + + + Initializes a new instance of the class. + + + Neuron's inputs count. + + The new neuron will be randomized (see method) + after it is created. + + + + + Randomize neuron. + + + Initialize neuron's weights with random values within the range specified + by . + + + + + Computes output value of neuron. + + + Input vector. + + Returns neuron's output value. + + The actual neuron's output value is determined by inherited class. + The output value is also stored in property. + + + + + Random number generator. + + + The property allows to initialize random generator with a custom seed. The generator is + used for neuron's weights randomization. + + + + + Random generator range. + + + Sets the range of random generator. Affects initial values of neuron's weight. + Default value is [0, 1]. + + + + + Neuron's inputs count. + + + + + Neuron's output value. + + + The calculation way of neuron's output value is determined by inherited class. + + + + + Neuron's weights. + + + + + Threshold value. + + + The value is added to inputs weighted sum before it is passed to activation + function. + + + + + Activation function. + + + The function is applied to inputs weighted sum plus + threshold value. + + + + + Initializes a new instance of the class. + + + Neuron's inputs count. + Neuron's activation function. + + + + + Randomize neuron. + + + Calls base class Randomize method + to randomize neuron's weights and then randomizes threshold's value. + + + + + Computes output value of neuron. + + + Input vector. + + Returns neuron's output value. + + The output value of activation neuron is equal to value + of nueron's activation function, which parameter is weighted sum + of its inputs plus threshold value. The output value is also stored + in Output property. + + The method may be called safely from multiple threads to compute neuron's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold neuron's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on neuron's output property. + + + Wrong length of the input vector, which is not + equal to the expected value. + + + + + Threshold value. + + + The value is added to inputs weighted sum before it is passed to activation + function. + + + + + Neuron's activation function. + + + + + + Distance neuron. + + + Distance neuron computes its output as distance between + its weights and inputs - sum of absolute differences between weights' + values and corresponding inputs' values. The neuron is usually used in Kohonen + Self Organizing Map. + + + + + Initializes a new instance of the class. + + + Neuron's inputs count. + + + + + Computes output value of neuron. + + + Input vector. + + Returns neuron's output value. + + The output value of distance neuron is equal to the distance + between its weights and inputs - sum of absolute differences. + The output value is also stored in Output + property. + + The method may be called safely from multiple threads to compute neuron's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold neuron's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on neuron's output property. + + + Wrong length of the input vector, which is not + equal to the expected value. + + + + + Gaussian weight initialization. + + + + + + Constructs a new Gaussian Weight initialization. + + + The activation network whose weights will be initialized. + The standard deviation to be used. Common values lie in the 0.001- + 0.1 range. Default is 0.1. + + + + + Randomizes (initializes) the weights of + the network using a Gaussian distribution. + + + + + + Randomizes (initializes) the weights of + the network using a Gaussian distribution. + + + + + + Gets ors sets whether the initialization + should update neurons thresholds (biases) + + + + + + Stochastic Activation Layer. + + + + This class represents a layer of stochastic neurons. + + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + + + + + Initializes a new instance of the class. + + + The activation function for the neurons in the layer. + The neurons count. + The inputs count. + + + + + Compute output vector of the layer. + + + Input vector. + + + Returns layer's output vector. + + + + + + Compute probability vector of the layer. + + + Input vector. + + + Returns layer's probability vector. + + + + + + Copy the weights of another layer in reversed order. This + can be used to update visible layers from hidden layers and + vice-versa. + + + The layer to copy the weights from. + + + + + Gets the layer's neurons. + + + + + + Gets the layer's sample values generated in the last + call of any of the methods. + + + + + + Contrastive Divergence learning algorithm for Restricted Boltzmann Machines. + + + + + + Creates a new algorithm. + + + The network to be trained. + + + + + Creates a new algorithm. + + + The hidden layer of the hidden-visible layer pair to be trained. + The visible layer of the hidden-visible layer pair to be trained. + + + + + Not supported. + + + + + + Runs learning epoch. + + + Array of input vectors. + + + Returns sum of learning errors. + + + + + + Computes the reconstruction error of the current layer. + + + Array of input vectors. + + + Returns sum of learning errors. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets or sets the learning rate of the + learning algorithm. Default is 0.1. + + + + + + Gets or sets the momentum term of the + learning algorithm. Default is 0.9. + + + + + + Gets or sets the Weight Decay constant + of the learning algorithm. Default is 0.01. + + + + + + Delegate used to configure and create layer-specific learning algorithms. + + + The network layer being trained. + The index of the layer in the deep network. + + + The function should return an instance of the algorithm + which should be used to train the network. + + + + + + Deep Neural Network learning algorithm. + + + + + + Creates a new algorithm. + + + The network to be trained. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The batch of input data. + + The learning data for the current layer. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The mini-batches of input data. + + The learning data for the current layer. + + + + + Runs a single learning iteration. + + + A single input vector. + The corresponding output vector. + + + Returns the learning error after the iteration. + + + + + + Runs a single batch epoch + of the learning algorithm. + + + Array of input vectors. + Array of corresponding output vectors. + + + Returns sum of learning errors. + + + + + + Runs a single learning epoch using + multiple mini-batches to improve speed. + + + Array of input batches. + Array of corresponding output batches. + + + Returns sum of learning errors. + + + + + + Computes the reconstruction error for + a given set of input values. + + + The input values. + The corresponding output values. + + The squared reconstruction error. + + + + + Gets or sets the configuration function used + to specify and create the learning algorithms + for each of the layers of the deep network. + + + + + + Gets or sets the current layer index being + trained by the deep learning algorithm. + + + + + + Gets or sets the number of layers, starting at + to be trained by the deep learning algorithm. + + + + + + Delegate used to configure and create layer-specific learning algorithms. + + + The hidden layer being trained. + The visible layer being trained. + The layer-pair index in the deep network. + + + The function should return an instance of the algorithm + which should be used to train the pair of layers. + + + + + + Deep Belief Network learning algorithm. + + + + + + Creates a new algorithm. + + + The network to be trained. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The batch of input data. + + The learning data for the current layer. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The mini-batches of input data. + + The learning data for the current layer. + + + + + Gets the unsupervised + learning algorithm allocated for the given layer. + + + The index of the layer to get the algorithm for. + + + + + Runs a single learning iteration. + + + A single input vector. + + + Returns the learning error after the iteration. + + + + + + Runs a single batch epoch + of the learning algorithm. + + + Array of input vectors. + + + Returns sum of learning errors. + + + + + + Runs a single learning epoch using + multiple mini-batches to improve speed. + + + Array of input batches. + + + Returns sum of learning errors. + + + + + + Computes the reconstruction error for + a given set of input values. + + + The input values. + + The squared reconstruction error. + + + + + Gets or sets the configuration function used + to specify and create the learning algorithms + for each of the layers of the deep network. + + + + + + Gets or sets the current layer index being + trained by the deep learning algorithm. + + + + + + The Jacobian computation method used by the Levenberg-Marquardt. + + + + + Computes the Jacobian using approximation by finite differences. This + method is slow in comparison with back-propagation and should be used + only for debugging or comparison purposes. + + + + + + Computes the Jacobian using back-propagation for the chain rule of + calculus. This is the preferred way of computing the Jacobian. + + + + + + Levenberg-Marquardt Learning Algorithm with optional Bayesian Regularization. + + + + This class implements the Levenberg-Marquardt learning algorithm, + which treats the neural network learning as a function optimization + problem. The Levenberg-Marquardt is one of the fastest and accurate + learning algorithms for small to medium sized networks. + + However, in general, the standard LM algorithm does not perform as well + on pattern recognition problems as it does on function approximation problems. + The LM algorithm is designed for least squares problems that are approximately + linear. Because the output neurons in pattern recognition problems are generally + saturated, it will not be operating in the linear region. + + The advantages of the LM algorithm decreases as the number of network + parameters increases. + + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = + { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + + double[][] output = + { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + + // create teacher + LevenbergMarquardtLearning teacher = new LevenbergMarquardtLearning( network ); + + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + + // check error value to see if we need to stop + // ... + } + + + + The following example shows how to create a neural network to learn a classification + problem with multiple classes. + + + // Here we will be creating a neural network to process 3-valued input + // vectors and classify them into 4-possible classes. We will be using + // a single hidden layer with 5 hidden neurons to accomplish this task. + // + int numberOfInputs = 3; + int numberOfClasses = 4; + int hiddenNeurons = 5; + + // Those are the input vectors and their expected class labels + // that we expect our network to learn. + // + double[][] input = + { + new double[] { -1, -1, -1 }, // 0 + new double[] { -1, 1, -1 }, // 1 + new double[] { 1, -1, -1 }, // 1 + new double[] { 1, 1, -1 }, // 0 + new double[] { -1, -1, 1 }, // 2 + new double[] { -1, 1, 1 }, // 3 + new double[] { 1, -1, 1 }, // 3 + new double[] { 1, 1, 1 } // 2 + }; + + int[] labels = + { + 0, + 1, + 1, + 0, + 2, + 3, + 3, + 2, + }; + + // In order to perform multi-class classification, we have to select a + // decision strategy in order to be able to interpret neural network + // outputs as labels. For this, we will be expanding our 4 possible class + // labels into 4-dimensional output vectors where one single dimension + // corresponding to a label will contain the value +1 and -1 otherwise. + + double[][] outputs = Accord.Statistics.Tools + .Expand(labels, numberOfClasses, -1, 1); + + // Next we can proceed to create our network + var function = new BipolarSigmoidFunction(2); + var network = new ActivationNetwork(function, + numberOfInputs, hiddenNeurons, numberOfClasses); + + // Heuristically randomize the network + new NguyenWidrow(network).Randomize(); + + // Create the learning algorithm + var teacher = new LevenbergMarquardtLearning(network); + + // Teach the network for 10 iterations: + double error = Double.PositiveInfinity; + for (int i = 0; i < 10; i++) + error = teacher.RunEpoch(input, outputs); + + // At this point, the network should be able to + // perfectly classify the training input points. + + for (int i = 0; i < input.Length; i++) + { + int answer; + double[] output = network.Compute(input[i]); + double response = output.Max(out answer); + + int expected = labels[i]; + + // at this point, the variables 'answer' and + // 'expected' should contain the same value. + } + + + + + References: + + + Sam Roweis. Levenberg-Marquardt Optimization. + + Jan Poland. (2001). On the Robustness of Update Strategies for the Bayesian + Hyperparameter alpha. Available on: http://www-alg.ist.hokudai.ac.jp/~jan/alpha.pdf + + B. Wilamowski, Y. Chen. (1999). Efficient Algorithm for Training Neural Networks + with one Hidden Layer. Available on: http://cs.olemiss.edu/~ychen/publications/conference/chen_ijcnn99.pdf + + David MacKay. (2004). Bayesian methods for neural networks - FAQ. Available on: + http://www.inference.phy.cam.ac.uk/mackay/Bayes_FAQ.html + + + + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Initializes a new instance of the class. + + + Network to teach. + True to use Bayesian regularization, false otherwise. + + + + + Initializes a new instance of the class. + + + Network to teach. + The method by which the Jacobian matrix will be calculated. + + + + + Initializes a new instance of the class. + + + Network to teach. + True to use Bayesian regularization, false otherwise. + The method by which the Jacobian matrix will be calculated. + + + + + This method should not be called. Use instead. + + + Array of input vectors. + Array of output vectors. + + Nothing. + + Online learning mode is not supported by the + Levenberg Marquardt. Use batch learning mode instead. + + + + + Runs a single learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. + + The method runs one learning epoch, by calling running necessary + iterations of the Levenberg Marquardt to achieve an error decrease. + + + + + Compute network error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Update network's weights. + + + The sum of squared weights divided by 2. + + + + + Creates the initial weight vector w + + + The sum of squared weights divided by 2. + + + + + Gets the number of parameters in a network. + + + + + Calculates the Jacobian matrix by using the chain rule. + + The input vectors. + The desired output vectors. + The sum of squared errors for the last error divided by 2. + + + + + Calculates partial derivatives for all weights of the network. + + + The input vector. + Desired output vector. + The current output location (index) in the desired output vector. + + Returns summary squared error of the last layer. + + + + + Calculates the Jacobian Matrix using Finite Differences + + + Returns the sum of squared errors of the network divided by 2. + + + + + Creates the coefficients to be used when calculating + the approximate Jacobian by using finite differences. + + + + + + Computes the derivative of the network in + respect to the weight passed as parameter. + + + + + + Levenberg's damping factor (lambda). This + value must be positive. Default is 0.1. + + + + The value determines speed of learning. Default value is 0.1. + + + + + + Learning rate adjustment. Default value is 10. + + + + The value by which the learning rate is adjusted when searching + for the minimum cost surface. Default value is 10. + + + + + + Gets the total number of parameters + in the network being trained. + + + + + + Gets the number of effective parameters being used + by the network as determined by the Bayesian regularization. + + + If no regularization is being used, the value will be 0. + + + + + + Gets or sets the importance of the squared sum of network + weights in the cost function. Used by the regularization. + + + + This is the first Bayesian hyperparameter. The default + value is 0. + + + + + + Gets or sets the importance of the squared sum of network + errors in the cost function. Used by the regularization. + + + + This is the second Bayesian hyperparameter. The default + value is 1. + + + + + + Gets or sets whether to use Bayesian Regularization. + + + + + + Gets or sets the number of blocks to divide the + Jacobian matrix in the Hessian calculation to + preserve memory. Default is 1. + + + + + + Gets the approximate Hessian matrix of second derivatives + generated in the last algorithm iteration. The Hessian is + stored in the upper triangular part of this matrix. See + remarks for details. + + + + + The Hessian needs only be upper-triangular, since + it is symmetric. The Cholesky decomposition will + make use of this fact and use the lower-triangular + portion to hold the decomposition, conserving memory + + Thus said, this property will hold the Hessian matrix + in the upper-triangular part of this matrix, and store + its Cholesky decomposition on its lower triangular part. + + + + + + Gets the Jacobian matrix created in the last iteration. + + + + + + Gets the gradient vector computed in the last iteration. + + + + + + Compatibility shim to make Accord.NET work on previous + version of the framework. This is just a wrapper around + AForge.Neuro.Learning.ResilientBackpropagationLearning. + + + + + + Initializes a new instance of the class. + + + + + + Does nothing. + + + + + + Deep Belief Network. + + + + The Deep Belief Network can be seen as a collection of stacked + Restricted Boltzmann + Machines disposed as layers of a network. In turn, the + whole network can be seen as an stochastic activation network + in which the neurons activate within some given probability. + + + + + + Creates a new . + + + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Creates a new . + + + The activation function to be used in the network neurons. + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Creates a new . + + + The number of inputs for the network. + The layers to add to the deep network. + + + + + Computes the network's outputs for a given input. + + + The input vector. + + + Returns the network's output for the given input. + + + + + + Computes the network's outputs for a given input. + + + The input vector. + The index of the layer. + + + Returns the network's output for the given input. + + + + + + Reconstructs a input vector for a given output. + + + The output vector. + + + Returns a probable input vector which may + have originated the given output. + + + + + + Reconstructs a input vector using the output + vector of a given layer. + + + The output vector. + The index of the layer. + + + Returns a probable input vector which may + have originated the given output in the + indicated layer. + + + + + + Samples an output vector from the network + given an input vector. + + + An input vector. + + + A possible output considering the + stochastic activations of the network. + + + + + + Samples an output vector from the network + given an input vector. + + + An input vector. + The index of the layer. + + + A possible output considering the + stochastic activations of the network. + + + + + + Samples an input vector from the network + given an output vector. + + + An output vector. + + + A possible reconstruction considering the + stochastic activations of the network. + + + + + + Inserts a new layer at the end of this network. + + + The number of neurons in the new layer. + + + + + Inserts a new layer at the end of this network. + + + The number of neurons in the new layer. + The activation function which should be used by the neurons. + + + + + Inserts a new layer at the end of this network. + + + The number of neurons in the layer. + The activation function which should be used by the visible neurons. + The activation function which should be used by the hidden neurons. + + + + + Stacks a new Boltzmann Machine at the end of this network. + + + The machine to be added to the network. + + + + + Removes the last layer from the network. + + + + + + Updates the weights of the visible layers by copying + the reverse of the weights in the hidden layers. + + + + + + Creates a Gaussian-Bernoulli network. + + + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Creates a Mixed-Bernoulli network. + + + The to be used in the first visible layer. + The to be used in all other layers. + + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Saves the network to a stream. + + + The stream to which the network is to be serialized. + + + + + Saves the network to a stream. + + + The file path to which the network is to be serialized. + + + + + Loads a network from a stream. + + + The network from which the machine is to be deserialized. + + The deserialized network. + + + + + Loads a network from a file. + + + The path to the file from which the network is to be deserialized. + + The deserialized network. + + + + + Gets the number of output neurons in the network + (the size of the computed output vectors). + + + + + + Gets the Restricted Boltzmann Machines + on each layer of this deep network. + + + + + + Restricted Boltzmann Machine. + + + + + // Create some sample inputs and outputs. Note that the + // first four vectors belong to one class, and the other + // four belong to another (you should see that the 1s + // accumulate on the beginning for the first four vectors + // and on the end for the second four). + + double[][] inputs = + { + new double[] { 1,1,1, 0,0,0 }, // class a + new double[] { 1,0,1, 0,0,0 }, // class a + new double[] { 1,1,1, 0,0,0 }, // class a + new double[] { 0,0,1, 1,1,0 }, // class b + new double[] { 0,0,1, 1,0,0 }, // class b + new double[] { 0,0,1, 1,1,0 }, // class b + }; + + double[][] outputs = + { + new double[] { 1, 0 }, // indicates the inputs at this + new double[] { 1, 0 }, // position belongs to class a + new double[] { 1, 0 }, + new double[] { 0, 1 }, // indicates the inputs at this + new double[] { 0, 1 }, // position belongs to class b + new double[] { 0, 1 }, + }; + + // Create a Bernoulli activation function + var function = new BernoulliFunction(alpha: 0.5); + + // Create a Restricted Boltzmann Machine for 6 inputs and with 1 hidden neuron + var rbm = new RestrictedBoltzmannMachine(function, inputsCount: 6, hiddenNeurons: 2); + + // Create the learning algorithm for RBMs + var teacher = new ContrastiveDivergenceLearning(rbm) + { + Momentum = 0, + LearningRate = 0.1, + Decay = 0 + }; + + // learn 5000 iterations + for (int i = 0; i < 5000; i++) + teacher.RunEpoch(inputs); + + // Compute the machine answers for the given inputs: + double[] a = rbm.Compute(new double[] { 1, 1, 1, 0, 0, 0 }); // { 0.99, 0.00 } + double[] b = rbm.Compute(new double[] { 0, 0, 0, 1, 1, 1 }); // { 0.00, 0.99 } + + // As we can see, the first neuron responds to vectors belonging + // to the first class, firing 0.99 when we feed vectors which + // have 1s at the beginning. Likewise, the second neuron fires + // when the vector belongs to the second class. + + // We can also generate input vectors given the classes: + double[] xa = rbm.GenerateInput(new double[] { 1, 0 }); // { 1, 1, 1, 0, 0, 0 } + double[] xb = rbm.GenerateInput(new double[] { 0, 1 }); // { 0, 0, 1, 1, 1, 0 } + + // As we can see, if we feed an output pattern where the first neuron + // is firing and the second isn't, the network generates an example of + // a vector belonging to the first class. The same goes for the second + // neuron and the second class. + + + + + + + + + + Creates a new . + + + The number of inputs for the machine. + The number of hidden neurons in the machine. + + + + + Creates a new . + + + The hidden layer to be added in the machine. + The visible layer to be added in the machine. + + + + + Creates a new . + + + The activation function to use in the network neurons. + The number of inputs for the machine. + The number of hidden neurons in the machine. + + + + + Compute output vector of the network. + + + Input vector. + + + Returns network's output vector. + + + + + + Reconstructs a input vector for a given output. + + + The output vector. + + + Returns a probable input vector which may + have originated the given output. + + + + + + Samples an output vector from the network + given an input vector. + + + An input vector. + + + A possible output considering the + stochastic activations of the network. + + + + + + Samples an input vector from the network + given an output vector. + + + An output vector. + + + A possible reconstruction considering the + stochastic activations of the network. + + + + + + Constructs a Gaussian-Bernoulli network with + visible Gaussian units and hidden Bernoulli units. + + + The number of inputs for the machine. + The number of hidden neurons in the machine. + + A Gaussian-Bernoulli Restricted Boltzmann Machine + + + + + Creates a new from this instance. + + + The number of output neurons in the last layer. + + An containing this network. + + + + + Creates a new from this instance. + + + The number of output neurons in the last layer. + The activation function to use in the last layer. + + An containing this network. + + + + + Updates the weights of the visible layer by copying + the reverse of the weights in the hidden layer. + + + + + + Gets the visible layer of the machine. + + + + + + Gets the hidden layer of the machine. + + + + + + Stochastic Activation Neuron. + + + + The Stochastic Activation Neuron is an activation neuron + which activates (returns 1) only within a given probability. + The neuron has a random component in the activation function, + and the neuron fires only if the total sum, after applied + to a logistic activation function, is greater than a randomly + sampled value. + + + + + + Initializes a new instance of the class. + + + Number of inputs for the neuron. + Activation function for the neuron. + + + + + Computes output value of neuron. + + + An input vector. + + Returns the neuron's output value for the given input. + + + + + Samples the neuron output considering + the stochastic activation function. + + + An input vector. + + A possible output for the neuron drawn + from the neuron's stochastic function. + + + + + Samples the neuron output considering + the stochastic activation function. + + + The (previously computed) neuron output. + + A possible output for the neuron drawn + from the neuron's stochastic function. + + + + + Gets the neuron sample value generated in the last + call of any of the methods. + + + + + + Gets or sets the stochastic activation + function for this stochastic neuron. + + + + + + Nguyen-Widrow weight initialization. + + + + The Nguyen-Widrow initialization algorithm chooses values in + order to distribute the active region of each neuron in the layer + approximately evenly across the layers' input space. + + The values contain a degree of randomness, so they are not the + same each time this function is called. + + + + + + Constructs a new Nguyen-Widrow Weight initialization. + + + The activation network whose weights will be initialized. + + + + + Randomizes (initializes) the weights of + the network using Nguyen-Widrow method's. + + + + + + Randomizes (initializes) the weights of + the network using a Gaussian distribution. + + + + + + Activation-Maximization method for visualizing neuron's roles. + + + + + + Initializes a new instance of the class. + + + The neuron to be visualized. + + + + + Finds the value which maximizes + the activation of this neuron. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net40/Accord.Neuro.dll b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net40/Accord.Neuro.dll new file mode 100644 index 0000000000..9ada146d8 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net40/Accord.Neuro.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net40/Accord.Neuro.xml b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net40/Accord.Neuro.xml new file mode 100644 index 0000000000..2a533cc27 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net40/Accord.Neuro.xml @@ -0,0 +1,4171 @@ + + + + Accord.Neuro + + + + + Identity activation function. + + + + The identity activation function is given by f(x) = x, + meaning it simply repasses the neuronal summation output to + further neurons untouched. + + + + + + Activation function interface. + + + All activation functions, which are supposed to be used with + neurons, which calculate their output as a function of weighted sum of + their inputs, should implement this interfaces. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Creates a new identity activation function. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Rectified linear activation function. + + + + This class implements a rectified linear activation + function as given by the piecewise formula: + + + f(x) = 0, if x > 0 + f(x) = x, otherwise + + + + This function is non-differentiable at zero. + + + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Gaussian stochastic activation function. + + + + + The Gaussian activation function can be used to create + Stochastic Neurons, which can in turn be used to create + Deep Belief Networks and Restricted Boltzmann + Machines. In contrast to the , the Gaussian can be used + to model continuous inputs in Deep Belief Networks. If, however, the inputs of the problem + being learned are discrete in nature, the use of a Bernoulli function would be more indicated. + + + The Gaussian activation function is modeled after a + Gaussian (Normal) probability distribution. + + + + This function assumes output variables have been + normalized to have zero mean and unit variance. + + + + + // Create a Gaussian function with slope alpha = 4.2 + GaussianFunction function = new GaussianFunction(4.2); + + // Computes the function output (linear, y = alpha * x) + double y = function.Function(x: 0.2); // 4.2 * 2 = 0.48 + + // Draws a sample from a Gaussian distribution with + // mean given by the function output y (previously 0.48) + double z = function.Generate(x: 0.4); // (random, between 0 and 1) + + // Please note that the above is completely equivalent + // to computing the line below (remember, 0.48 == y) + double w = function.Generate2(y: 0.48); // (random, between 0 and 1) + + + // We can also compute the derivative of the sigmoid function + double d = function.Derivative(x: 0.2); // 4.2 (the slope) + + // Or compute the derivative given the functions' output y + double e = function.Derivative2(y: 0.2); // 4.2 (the slope) + + + + + + + + + + + Common interface for stochastic activation functions. + + + + + + + + + Samples a value from the function given a input value. + + + Function input value. + + Draws a random value from the function. + + + + + Samples a value from the function given a function output value. + + + The function output value. This is the value which was obtained + with the help of the method. + + The method calculates the same output value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with help + of the method. + + + Draws a random value from the function. + + + + + Creates a new . + + + The linear slope value. Default is 1. + + + + + Creates a new . + + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Samples a value from the function given a input value. + + + Function input value. + + + Draws a random value from the function. + + + + + + Samples a value from the function given a function output value. + + + Function output value - the value, which was obtained + with the help of method. + + + Draws a random value from the function. + + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Gets or sets the class-wide + Gaussian random generator. + + + + + + Linear slope value. + + + + Default value is set to 1. + + + + + + Function output range. + + + + Default value is set to [-1;+1] + + + + + + Linear activation function. + + + + This class implements a linear activation function bounded + in the interval (a,b), as given by the piecewise formula: + + + f(x) = alpha*x, if a > x*alpha > b + f(x) = a, if a > x*alpha; + f(x) = b, if x*alpha > b; + + + + In which, by default, a = -1 and b = +1. + + + This function is continuous only in the interval (a/alpha, b/alpha). This is similar + to the threshold function but with a linear growth component. If alpha is set to a + very high value (such as infinity), the function behaves as a threshold function. + + + The output range of the function can be set to an arbitrary + value. The default output range is [-1, +1]. + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Linear slope value. + + + + Default value is set to 1. + + + + + + Function output range. + + + + Default value is set to [-1;+1] + + + + + + Bernoulli stochastic activation function. + + + + + The Bernoulli activation function can be used to create + Stochastic Neurons, which can in turn be used to create + Deep Belief Networks and Restricted Boltzmann + Machines. The use of a Bernoulli function is indicated when the inputs of a problem + are discrete, it is, are either 0 or 1. When the inputs are continuous, the use of a + might be more indicated. + + As a stochastic activation function, the Bernoulli + function is able to generate values following a statistic probability distribution. In + this case, the Bernoulli function follows a Bernoulli + distribution with its mean given by + the output of this class' sigmoidal function. + + + + + // Create a Bernoulli function with sigmoid's alpha = 1 + BernoulliFunction function = new BernoulliFunction(); + + // Computes the function output (sigmoid function) + double y = function.Function(x: 0.4); // 0.5986876 + + // Draws a sample from a Bernoulli distribution with + // mean given by the function output y (given as before) + double z = function.Generate(x: 0.4); // (random, 0 or 1) + + // Here, z can be either 0 or 1. Since it follows a Bernoulli + // distribution with mean 0.59, it is expected to be 1 about + // 0.59 of the time. + + // Now, please note that the above is completely equivalent + // to computing the line below (remember, 0.5986876 == y) + double w = function.Generate2(y: 0.5986876); // (random, 0 or 1) + + + // We can also compute the derivative of the sigmoid function + double d = function.Derivative(x: 0.4); // 0.240260 + + // Or compute the derivative given the functions' output y + double e = function.Derivative2(y: 0.5986876); // 0.240260 + + + + + + + + + + + Initializes a new instance of the class. + + + Sigmoid's alpha value. Default is 1. + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Samples a value from the function given a input value. + + + Function input value. + + Draws a random value from the function. + + + + + Samples a value from the function given a function output value. + + + The function output value. This is the value which was obtained + with the help of the method. + + The method calculates the same output value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with help + of the method. + + + Draws a random value from the function. + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Gets or sets the random sample generator + used to activate neurons of this class. + + + + + + Sigmoid's alpha value. + + + The value determines steepness of the function. Increasing value of + this property changes sigmoid to look more like a threshold function. Decreasing + value of this property makes sigmoid to be very smooth (slowly growing from its + minimum value to its maximum value). + + Default value is set to 1. + + + + + + Bipolar sigmoid activation function. + + + The class represents bipolar sigmoid activation function with + the next expression: + + 2 + f(x) = ------------------ - 1 + 1 + exp(-alpha * x) + + 2 * alpha * exp(-alpha * x ) + f'(x) = -------------------------------- = alpha * (1 - f(x)^2) / 2 + (1 + exp(-alpha * x))^2 + + + + Output range of the function: [-1, 1]. + + Functions graph: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Sigmoid's alpha value. + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Sigmoid's alpha value. + + + The value determines steepness of the function. Increasing value of + this property changes sigmoid to look more like a threshold function. Decreasing + value of this property makes sigmoid to be very smooth (slowly growing from its + minimum value to its maximum value). + + Default value is set to 2. + + + + + + Sigmoid activation function. + + + The class represents sigmoid activation function with + the next expression: + + 1 + f(x) = ------------------ + 1 + exp(-alpha * x) + + alpha * exp(-alpha * x ) + f'(x) = ---------------------------- = alpha * f(x) * (1 - f(x)) + (1 + exp(-alpha * x))^2 + + + + Output range of the function: [0, 1]. + + Functions graph: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Sigmoid's alpha value. + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Sigmoid's alpha value. + + + The value determines steepness of the function. Increasing value of + this property changes sigmoid to look more like a threshold function. Decreasing + value of this property makes sigmoid to be very smooth (slowly growing from its + minimum value to its maximum value). + + Default value is set to 2. + + + + + + Threshold activation function. + + + The class represents threshold activation function with + the next expression: + + f(x) = 1, if x >= 0, otherwise 0 + + + + Output range of the function: [0, 1]. + + Functions graph: + + + + + + + Initializes a new instance of the class. + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative (not supported). + + + Input value. + + Always returns 0. + + The method is not supported, because it is not possible to + calculate derivative of the function. + + + + + Calculates function derivative (not supported). + + + Input value. + + Always returns 0. + + The method is not supported, because it is not possible to + calculate derivative of the function. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Activation layer. + + + Activation layer is a layer of activation neurons. + The layer is usually used in multi-layer neural networks. + + + + + Base neural layer class. + + + This is a base neural layer class, which represents + collection of neurons. + + + + + Layer's inputs count. + + + + + Layer's neurons count. + + + + + Layer's neurons. + + + + + Layer's output vector. + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + + Protected contructor, which initializes , + and members. + + + + + Compute output vector of the layer. + + + Input vector. + + Returns layer's output vector. + + The actual layer's output vector is determined by neurons, + which comprise the layer - consists of output values of layer's neurons. + The output vector is also stored in property. + + The method may be called safely from multiple threads to compute layer's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold layer's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on layer's output property. + + + + + + Randomize neurons of the layer. + + + Randomizes layer's neurons by calling method + of each neuron. + + + + + Layer's inputs count. + + + + + Layer's neurons. + + + + + + Layer's output vector. + + + The calculation way of layer's output vector is determined by neurons, + which comprise the layer. + + The property is not initialized (equals to ) until + method is called. + + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + Activation function of neurons of the layer. + + The new layer is randomized (see + method) after it is created. + + + + + Set new activation function for all neurons of the layer. + + + Activation function to set. + + The methods sets new activation function for each neuron by setting + their property. + + + + + Distance layer. + + + Distance layer is a layer of distance neurons. + The layer is usually a single layer of such networks as Kohonen Self + Organizing Map, Elastic Net, Hamming Memory Net. + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + + The new layet is randomized (see + method) after it is created. + + + + + Back propagation learning algorithm. + + + The class implements back propagation learning algorithm, + which is widely used for training multi-layer neural networks with + continuous activation functions. + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = new double[4][] { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + double[][] output = new double[4][] { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + // create teacher + BackPropagationLearning teacher = new BackPropagationLearning( network ); + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + + + + + + Supervised learning interface. + + + The interface describes methods, which should be implemented + by all supervised learning algorithms. Supervised learning is such + type of learning algorithms, where system's desired output is known on + the learning stage. So, given sample input values and desired outputs, + system should adopt its internals to produce correct (or close to correct) + result after the learning step is complete. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns learning error. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns sum of learning errors. + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Calculates error values for all neurons of the network. + + + Desired output vector. + + Returns summary squared error of the last layer divided by 2. + + + + + Calculate weights updates. + + + Network's input vector. + + + + + Update network's weights. + + + + + + Learning rate, [0, 1]. + + + The value determines speed of learning. + + Default value equals to 0.1. + + + + + + Momentum, [0, 1]. + + + The value determines the portion of previous weight's update + to use on current iteration. Weight's update values are calculated on + each iteration depending on neuron's error. The momentum specifies the amount + of update to use from previous iteration and the amount of update + to use from current iteration. If the value is equal to 0.1, for example, + then 0.1 portion of previous update and 0.9 portion of current update are used + to update weight's value. + + Default value equals to 0.0. + + + + + + Delta rule learning algorithm. + + + This learning algorithm is used to train one layer neural + network of Activation Neurons + with continuous activation function, see + for example. + + See information about delta rule + learning algorithm. + + + + + + Initializes a new instance of the class. + + + Network to teach. + + Invalid nuaral network. It should have one layer only. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + The value determines speed of learning. + + Default value equals to 0.1. + + + + + + Elastic network learning algorithm. + + + This class implements elastic network's learning algorithm and + allows to train Distance Networks. + + + + + + Unsupervised learning interface. + + + The interface describes methods, which should be implemented + by all unsupervised learning algorithms. Unsupervised learning is such + type of learning algorithms, where system's desired output is not known on + the learning stage. Given sample input values, it is expected, that + system will organize itself in the way to find similarities betweed provided + samples. + + + + + Runs learning iteration. + + + Input vector. + + Returns learning error. + + + + + Runs learning epoch. + + + Array of input vectors. + + Returns sum of learning errors. + + + + + Initializes a new instance of the class. + + + Neural network to train. + + + + + Runs learning iteration. + + + Input vector. + + Returns learning error - summary absolute difference between neurons' + weights and appropriate inputs. The difference is measured according to the neurons + distance to the winner neuron. + + The method runs one learning iterations - finds winner neuron (the neuron + which has weights with values closest to the specified input vector) and updates its weight + (as well as weights of neighbor neurons) in the way to decrease difference with the specified + input vector. + + + + + Runs learning epoch. + + + Array of input vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + Determines speed of learning. + + Default value equals to 0.1. + + + + + + Learning radius, [0, 1]. + + + Determines the amount of neurons to be updated around + winner neuron. Neurons, which are in the circle of specified radius, + are updated during the learning procedure. Neurons, which are closer + to the winner neuron, get more update. + + Default value equals to 0.5. + + + + + + Fitness function used for chromosomes representing collection of neural network's weights. + + + + + + Initializes a new instance of the class. + + + Neural network for which fitness will be calculated. + Input data samples for neural network. + Output data sampels for neural network (desired output). + + Length of inputs and outputs arrays must be equal and greater than 0. + Length of each input vector must be equal to neural network's inputs count. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Neural networks' evolutionary learning algorithm, which is based on Genetic Algorithms. + + + The class implements supervised neural network's learning algorithm, + which is based on Genetic Algorithms. For the given neural network, it create a population + of chromosomes, which represent neural network's + weights. Then, during the learning process, the genetic population evolves and weights, which + are represented by the best chromosome, are set to the source neural network. + + See class for additional information about genetic population + and evolutionary based search. + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = new double[4][] { + new double[] {-1, 1}, new double[] {-1, 1}, + new double[] { 1, -1}, new double[] { 1, 1} + }; + double[][] output = new double[4][] { + new double[] {-1}, new double[] { 1}, + new double[] { 1}, new double[] {-1} + }; + // create neural network + ActivationNetwork network = new ActivationNetwork( + BipolarSigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + // create teacher + EvolutionaryLearning teacher = new EvolutionaryLearning( network, + 100 ); // number of chromosomes in genetic population + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + + + + + + + Initializes a new instance of the class. + + + Activation network to be trained. + Size of genetic population. + Random numbers generator used for initialization of genetic + population representing neural network's weights and thresholds (see ). + Random numbers generator used to generate random + factors for multiplication of network's weights and thresholds during genetic mutation + (ses .) + Random numbers generator used to generate random + values added to neural network's weights and thresholds during genetic mutation + (see ). + Method of selection best chromosomes in genetic population. + Crossover rate in genetic population (see + ). + Mutation rate in genetic population (see + ). + Rate of injection of random chromosomes during selection + in genetic population (see ). + + + + + Initializes a new instance of the class. + + + Activation network to be trained. + Size of genetic population. + + This version of constructor is used to create genetic population + for searching optimal neural network's weight using default set of parameters, which are: + + Selection method - elite; + Crossover rate - 0.75; + Mutation rate - 0.25; + Rate of injection of random chromosomes during selection - 0.20; + Random numbers generator for initializing new chromosome - + UniformGenerator( new Range( -1, 1 ) ); + Random numbers generator used during mutation for genes' multiplication - + ExponentialGenerator( 1 ); + Random numbers generator used during mutation for adding random value to genes - + UniformGenerator( new Range( -0.5f, 0.5f ) ). + + + In order to have full control over the above default parameters, it is possible to + used extended version of constructor, which allows to specify all of the parameters. + + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns learning error. + + The method is not implemented, since evolutionary learning algorithm is global + and requires all inputs/outputs in order to run its one epoch. Use + method instead. + + The method is not implemented by design. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary squared learning error for the entire epoch. + + While running the neural network's learning process, it is required to + pass the same and values for each + epoch. On the very first run of the method it will initialize evolutionary fitness + function with the given input/output. So, changing input/output in middle of the learning + process, will break it. + + + + + Perceptron learning algorithm. + + + This learning algorithm is used to train one layer neural + network of Activation Neurons + with the Threshold + activation function. + + See information about Perceptron + and its learning algorithm. + + + + + + Initializes a new instance of the class. + + + Network to teach. + + Invalid nuaral network. It should have one layer only. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns absolute error - difference between current network's output and + desired output. + + Runs one learning iteration and updates neuron's + weights in the case if neuron's output is not equal to the + desired output. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + The value determines speed of learning. + + Default value equals to 0.1. + + + + + + Resilient Backpropagation learning algorithm. + + + This class implements the resilient backpropagation (RProp) + learning algorithm. The RProp learning algorithm is one of the fastest learning + algorithms for feed-forward learning networks which use only first-order + information. + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = new double[4][] { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + double[][] output = new double[4][] { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + // create teacher + ResilientBackpropagationLearning teacher = new ResilientBackpropagationLearning( network ); + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Resets current weight and threshold derivatives. + + + + + + Resets the current update steps using the given learning rate. + + + + + + Update network's weights. + + + + + + Calculates error values for all neurons of the network. + + + Desired output vector. + + Returns summary squared error of the last layer divided by 2. + + + + + Calculate weights updates + + + Network's input vector. + + + + + Learning rate. + + + The value determines speed of learning. + + Default value equals to 0.0125. + + + + + + Kohonen Self Organizing Map (SOM) learning algorithm. + + + This class implements Kohonen's SOM learning algorithm and + is widely used in clusterization tasks. The class allows to train + Distance Networks. + + Sample usage (clustering RGB colors): + + // set range for randomization neurons' weights + Neuron.RandRange = new Range( 0, 255 ); + // create network + DistanceNetwork network = new DistanceNetwork( + 3, // thress inputs in the network + 100 * 100 ); // 10000 neurons + // create learning algorithm + SOMLearning trainer = new SOMLearning( network ); + // network's input + double[] input = new double[3]; + // loop + while ( !needToStop ) + { + input[0] = rand.Next( 256 ); + input[1] = rand.Next( 256 ); + input[2] = rand.Next( 256 ); + + trainer.Run( input ); + + // ... + // update learning rate and radius continuously, + // so networks may come steady state + } + + + + + + + Initializes a new instance of the class. + + + Neural network to train. + + This constructor supposes that a square network will be passed for training - + it should be possible to get square root of network's neurons amount. + + Invalid network size - square network is expected. + + + + + Initializes a new instance of the class. + + + Neural network to train. + Neural network's width. + Neural network's height. + + The constructor allows to pass network of arbitrary rectangular shape. + The amount of neurons in the network should be equal to width * height. + + + Invalid network size - network size does not correspond + to specified width and height. + + + + + Runs learning iteration. + + + Input vector. + + Returns learning error - summary absolute difference between neurons' weights + and appropriate inputs. The difference is measured according to the neurons + distance to the winner neuron. + + The method runs one learning iterations - finds winner neuron (the neuron + which has weights with values closest to the specified input vector) and updates its weight + (as well as weights of neighbor neurons) in the way to decrease difference with the specified + input vector. + + + + + Runs learning epoch. + + + Array of input vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + Determines speed of learning. + + Default value equals to 0.1. + + + + + + Learning radius. + + + Determines the amount of neurons to be updated around + winner neuron. Neurons, which are in the circle of specified radius, + are updated during the learning procedure. Neurons, which are closer + to the winner neuron, get more update. + + In the case if learning rate is set to 0, then only winner + neuron's weights are updated. + + Default value equals to 7. + + + + + + Gets the neural network's height. + + + + + + Gets the neural network's width. + + + + + + Activation network. + + + Activation network is a base for multi-layer neural network + with activation functions. It consists of activation + layers. + + Sample usage: + + // create activation network + ActivationNetwork network = new ActivationNetwork( + new SigmoidFunction( ), // sigmoid activation function + 3, // 3 inputs + 4, 1 ); // 2 layers: + // 4 neurons in the firs layer + // 1 neuron in the second layer + + + + + + + Base neural network class. + + + This is a base neural netwok class, which represents + collection of neuron's layers. + + + + + Network's inputs count. + + + + + Network's layers count. + + + + + Network's layers. + + + + + Network's output vector. + + + + + Initializes a new instance of the class. + + + Network's inputs count. + Network's layers count. + + Protected constructor, which initializes , + and members. + + + + + Compute output vector of the network. + + + Input vector. + + Returns network's output vector. + + The actual network's output vecor is determined by layers, + which comprise the layer - represents an output vector of the last layer + of the network. The output vector is also stored in property. + + The method may be called safely from multiple threads to compute network's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold network's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on network's output property. + + + + + + Randomize layers of the network. + + + Randomizes network's layers by calling method + of each layer. + + + + + Save network to specified file. + + + File name to save network into. + + The neural network is saved using .NET serialization (binary formatter is used). + + + + + Save network to specified file. + + + Stream to save network into. + + The neural network is saved using .NET serialization (binary formatter is used). + + + + + Load network from specified file. + + + File name to load network from. + + Returns instance of class with all properties initialized from file. + + Neural network is loaded from file using .NET serialization (binary formater is used). + + + + + Load network from specified file. + + + Stream to load network from. + + Returns instance of class with all properties initialized from file. + + Neural network is loaded from file using .NET serialization (binary formater is used). + + + + + Network's inputs count. + + + + + Network's layers. + + + + + Network's output vector. + + + The calculation way of network's output vector is determined by + layers, which comprise the network. + + The property is not initialized (equals to ) until + method is called. + + + + + + Initializes a new instance of the class. + + + Activation function of neurons of the network. + Network's inputs count. + Array, which specifies the amount of neurons in + each layer of the neural network. + + The new network is randomized (see + method) after it is created. + + + + + Set new activation function for all neurons of the network. + + + Activation function to set. + + The method sets new activation function for all neurons by calling + method for each layer of the network. + + + + + Distance network. + + + Distance network is a neural network of only one distance + layer. The network is a base for such neural networks as SOM, Elastic net, etc. + + + + + + Initializes a new instance of the class. + + + Network's inputs count. + Network's neurons count. + + The new network is randomized (see + method) after it is created. + + + + + Get winner neuron. + + + Index of the winner neuron. + + The method returns index of the neuron, which weights have + the minimum distance from network's input. + + + + + Activation neuron. + + + Activation neuron computes weighted sum of its inputs, adds + threshold value and then applies activation function. + The neuron isusually used in multi-layer neural networks. + + + + + + + Base neuron class. + + + This is a base neuron class, which encapsulates such + common properties, like neuron's input, output and weights. + + + + + Neuron's inputs count. + + + + + Neuron's weights. + + + + + Neuron's output value. + + + + + Random number generator. + + + The generator is used for neuron's weights randomization. + + + + + Random generator range. + + + Sets the range of random generator. Affects initial values of neuron's weight. + Default value is [0, 1]. + + + + + Initializes a new instance of the class. + + + Neuron's inputs count. + + The new neuron will be randomized (see method) + after it is created. + + + + + Randomize neuron. + + + Initialize neuron's weights with random values within the range specified + by . + + + + + Computes output value of neuron. + + + Input vector. + + Returns neuron's output value. + + The actual neuron's output value is determined by inherited class. + The output value is also stored in property. + + + + + Random number generator. + + + The property allows to initialize random generator with a custom seed. The generator is + used for neuron's weights randomization. + + + + + Random generator range. + + + Sets the range of random generator. Affects initial values of neuron's weight. + Default value is [0, 1]. + + + + + Neuron's inputs count. + + + + + Neuron's output value. + + + The calculation way of neuron's output value is determined by inherited class. + + + + + Neuron's weights. + + + + + Threshold value. + + + The value is added to inputs weighted sum before it is passed to activation + function. + + + + + Activation function. + + + The function is applied to inputs weighted sum plus + threshold value. + + + + + Initializes a new instance of the class. + + + Neuron's inputs count. + Neuron's activation function. + + + + + Randomize neuron. + + + Calls base class Randomize method + to randomize neuron's weights and then randomizes threshold's value. + + + + + Computes output value of neuron. + + + Input vector. + + Returns neuron's output value. + + The output value of activation neuron is equal to value + of nueron's activation function, which parameter is weighted sum + of its inputs plus threshold value. The output value is also stored + in Output property. + + The method may be called safely from multiple threads to compute neuron's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold neuron's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on neuron's output property. + + + Wrong length of the input vector, which is not + equal to the expected value. + + + + + Threshold value. + + + The value is added to inputs weighted sum before it is passed to activation + function. + + + + + Neuron's activation function. + + + + + + Distance neuron. + + + Distance neuron computes its output as distance between + its weights and inputs - sum of absolute differences between weights' + values and corresponding inputs' values. The neuron is usually used in Kohonen + Self Organizing Map. + + + + + Initializes a new instance of the class. + + + Neuron's inputs count. + + + + + Computes output value of neuron. + + + Input vector. + + Returns neuron's output value. + + The output value of distance neuron is equal to the distance + between its weights and inputs - sum of absolute differences. + The output value is also stored in Output + property. + + The method may be called safely from multiple threads to compute neuron's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold neuron's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on neuron's output property. + + + Wrong length of the input vector, which is not + equal to the expected value. + + + + + Gaussian weight initialization. + + + + + + Constructs a new Gaussian Weight initialization. + + + The activation network whose weights will be initialized. + The standard deviation to be used. Common values lie in the 0.001- + 0.1 range. Default is 0.1. + + + + + Randomizes (initializes) the weights of + the network using a Gaussian distribution. + + + + + + Randomizes (initializes) the weights of + the network using a Gaussian distribution. + + + + + + Gets ors sets whether the initialization + should update neurons thresholds (biases) + + + + + + Stochastic Activation Layer. + + + + This class represents a layer of stochastic neurons. + + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + + + + + Initializes a new instance of the class. + + + The activation function for the neurons in the layer. + The neurons count. + The inputs count. + + + + + Compute output vector of the layer. + + + Input vector. + + + Returns layer's output vector. + + + + + + Compute probability vector of the layer. + + + Input vector. + + + Returns layer's probability vector. + + + + + + Copy the weights of another layer in reversed order. This + can be used to update visible layers from hidden layers and + vice-versa. + + + The layer to copy the weights from. + + + + + Gets the layer's neurons. + + + + + + Gets the layer's sample values generated in the last + call of any of the methods. + + + + + + Contrastive Divergence learning algorithm for Restricted Boltzmann Machines. + + + + + + Creates a new algorithm. + + + The network to be trained. + + + + + Creates a new algorithm. + + + The hidden layer of the hidden-visible layer pair to be trained. + The visible layer of the hidden-visible layer pair to be trained. + + + + + Not supported. + + + + + + Runs learning epoch. + + + Array of input vectors. + + + Returns sum of learning errors. + + + + + + Computes the reconstruction error of the current layer. + + + Array of input vectors. + + + Returns sum of learning errors. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets or sets the learning rate of the + learning algorithm. Default is 0.1. + + + + + + Gets or sets the momentum term of the + learning algorithm. Default is 0.9. + + + + + + Gets or sets the Weight Decay constant + of the learning algorithm. Default is 0.01. + + + + + + Delegate used to configure and create layer-specific learning algorithms. + + + The network layer being trained. + The index of the layer in the deep network. + + + The function should return an instance of the algorithm + which should be used to train the network. + + + + + + Deep Neural Network learning algorithm. + + + + + + Creates a new algorithm. + + + The network to be trained. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The batch of input data. + + The learning data for the current layer. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The mini-batches of input data. + + The learning data for the current layer. + + + + + Runs a single learning iteration. + + + A single input vector. + The corresponding output vector. + + + Returns the learning error after the iteration. + + + + + + Runs a single batch epoch + of the learning algorithm. + + + Array of input vectors. + Array of corresponding output vectors. + + + Returns sum of learning errors. + + + + + + Runs a single learning epoch using + multiple mini-batches to improve speed. + + + Array of input batches. + Array of corresponding output batches. + + + Returns sum of learning errors. + + + + + + Computes the reconstruction error for + a given set of input values. + + + The input values. + The corresponding output values. + + The squared reconstruction error. + + + + + Gets or sets the configuration function used + to specify and create the learning algorithms + for each of the layers of the deep network. + + + + + + Gets or sets the current layer index being + trained by the deep learning algorithm. + + + + + + Gets or sets the number of layers, starting at + to be trained by the deep learning algorithm. + + + + + + Delegate used to configure and create layer-specific learning algorithms. + + + The hidden layer being trained. + The visible layer being trained. + The layer-pair index in the deep network. + + + The function should return an instance of the algorithm + which should be used to train the pair of layers. + + + + + + Deep Belief Network learning algorithm. + + + + + + Creates a new algorithm. + + + The network to be trained. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The batch of input data. + + The learning data for the current layer. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The mini-batches of input data. + + The learning data for the current layer. + + + + + Gets the unsupervised + learning algorithm allocated for the given layer. + + + The index of the layer to get the algorithm for. + + + + + Runs a single learning iteration. + + + A single input vector. + + + Returns the learning error after the iteration. + + + + + + Runs a single batch epoch + of the learning algorithm. + + + Array of input vectors. + + + Returns sum of learning errors. + + + + + + Runs a single learning epoch using + multiple mini-batches to improve speed. + + + Array of input batches. + + + Returns sum of learning errors. + + + + + + Computes the reconstruction error for + a given set of input values. + + + The input values. + + The squared reconstruction error. + + + + + Gets or sets the configuration function used + to specify and create the learning algorithms + for each of the layers of the deep network. + + + + + + Gets or sets the current layer index being + trained by the deep learning algorithm. + + + + + + The Jacobian computation method used by the Levenberg-Marquardt. + + + + + Computes the Jacobian using approximation by finite differences. This + method is slow in comparison with back-propagation and should be used + only for debugging or comparison purposes. + + + + + + Computes the Jacobian using back-propagation for the chain rule of + calculus. This is the preferred way of computing the Jacobian. + + + + + + Levenberg-Marquardt Learning Algorithm with optional Bayesian Regularization. + + + + This class implements the Levenberg-Marquardt learning algorithm, + which treats the neural network learning as a function optimization + problem. The Levenberg-Marquardt is one of the fastest and accurate + learning algorithms for small to medium sized networks. + + However, in general, the standard LM algorithm does not perform as well + on pattern recognition problems as it does on function approximation problems. + The LM algorithm is designed for least squares problems that are approximately + linear. Because the output neurons in pattern recognition problems are generally + saturated, it will not be operating in the linear region. + + The advantages of the LM algorithm decreases as the number of network + parameters increases. + + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = + { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + + double[][] output = + { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + + // create teacher + LevenbergMarquardtLearning teacher = new LevenbergMarquardtLearning( network ); + + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + + // check error value to see if we need to stop + // ... + } + + + + The following example shows how to create a neural network to learn a classification + problem with multiple classes. + + + // Here we will be creating a neural network to process 3-valued input + // vectors and classify them into 4-possible classes. We will be using + // a single hidden layer with 5 hidden neurons to accomplish this task. + // + int numberOfInputs = 3; + int numberOfClasses = 4; + int hiddenNeurons = 5; + + // Those are the input vectors and their expected class labels + // that we expect our network to learn. + // + double[][] input = + { + new double[] { -1, -1, -1 }, // 0 + new double[] { -1, 1, -1 }, // 1 + new double[] { 1, -1, -1 }, // 1 + new double[] { 1, 1, -1 }, // 0 + new double[] { -1, -1, 1 }, // 2 + new double[] { -1, 1, 1 }, // 3 + new double[] { 1, -1, 1 }, // 3 + new double[] { 1, 1, 1 } // 2 + }; + + int[] labels = + { + 0, + 1, + 1, + 0, + 2, + 3, + 3, + 2, + }; + + // In order to perform multi-class classification, we have to select a + // decision strategy in order to be able to interpret neural network + // outputs as labels. For this, we will be expanding our 4 possible class + // labels into 4-dimensional output vectors where one single dimension + // corresponding to a label will contain the value +1 and -1 otherwise. + + double[][] outputs = Accord.Statistics.Tools + .Expand(labels, numberOfClasses, -1, 1); + + // Next we can proceed to create our network + var function = new BipolarSigmoidFunction(2); + var network = new ActivationNetwork(function, + numberOfInputs, hiddenNeurons, numberOfClasses); + + // Heuristically randomize the network + new NguyenWidrow(network).Randomize(); + + // Create the learning algorithm + var teacher = new LevenbergMarquardtLearning(network); + + // Teach the network for 10 iterations: + double error = Double.PositiveInfinity; + for (int i = 0; i < 10; i++) + error = teacher.RunEpoch(input, outputs); + + // At this point, the network should be able to + // perfectly classify the training input points. + + for (int i = 0; i < input.Length; i++) + { + int answer; + double[] output = network.Compute(input[i]); + double response = output.Max(out answer); + + int expected = labels[i]; + + // at this point, the variables 'answer' and + // 'expected' should contain the same value. + } + + + + + References: + + + Sam Roweis. Levenberg-Marquardt Optimization. + + Jan Poland. (2001). On the Robustness of Update Strategies for the Bayesian + Hyperparameter alpha. Available on: http://www-alg.ist.hokudai.ac.jp/~jan/alpha.pdf + + B. Wilamowski, Y. Chen. (1999). Efficient Algorithm for Training Neural Networks + with one Hidden Layer. Available on: http://cs.olemiss.edu/~ychen/publications/conference/chen_ijcnn99.pdf + + David MacKay. (2004). Bayesian methods for neural networks - FAQ. Available on: + http://www.inference.phy.cam.ac.uk/mackay/Bayes_FAQ.html + + + + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Initializes a new instance of the class. + + + Network to teach. + True to use Bayesian regularization, false otherwise. + + + + + Initializes a new instance of the class. + + + Network to teach. + The method by which the Jacobian matrix will be calculated. + + + + + Initializes a new instance of the class. + + + Network to teach. + True to use Bayesian regularization, false otherwise. + The method by which the Jacobian matrix will be calculated. + + + + + This method should not be called. Use instead. + + + Array of input vectors. + Array of output vectors. + + Nothing. + + Online learning mode is not supported by the + Levenberg Marquardt. Use batch learning mode instead. + + + + + Runs a single learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. + + The method runs one learning epoch, by calling running necessary + iterations of the Levenberg Marquardt to achieve an error decrease. + + + + + Compute network error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Update network's weights. + + + The sum of squared weights divided by 2. + + + + + Creates the initial weight vector w + + + The sum of squared weights divided by 2. + + + + + Gets the number of parameters in a network. + + + + + Calculates the Jacobian matrix by using the chain rule. + + The input vectors. + The desired output vectors. + The sum of squared errors for the last error divided by 2. + + + + + Calculates partial derivatives for all weights of the network. + + + The input vector. + Desired output vector. + The current output location (index) in the desired output vector. + + Returns summary squared error of the last layer. + + + + + Calculates the Jacobian Matrix using Finite Differences + + + Returns the sum of squared errors of the network divided by 2. + + + + + Creates the coefficients to be used when calculating + the approximate Jacobian by using finite differences. + + + + + + Computes the derivative of the network in + respect to the weight passed as parameter. + + + + + + Levenberg's damping factor (lambda). This + value must be positive. Default is 0.1. + + + + The value determines speed of learning. Default value is 0.1. + + + + + + Learning rate adjustment. Default value is 10. + + + + The value by which the learning rate is adjusted when searching + for the minimum cost surface. Default value is 10. + + + + + + Gets the total number of parameters + in the network being trained. + + + + + + Gets the number of effective parameters being used + by the network as determined by the Bayesian regularization. + + + If no regularization is being used, the value will be 0. + + + + + + Gets or sets the importance of the squared sum of network + weights in the cost function. Used by the regularization. + + + + This is the first Bayesian hyperparameter. The default + value is 0. + + + + + + Gets or sets the importance of the squared sum of network + errors in the cost function. Used by the regularization. + + + + This is the second Bayesian hyperparameter. The default + value is 1. + + + + + + Gets or sets whether to use Bayesian Regularization. + + + + + + Gets or sets the number of blocks to divide the + Jacobian matrix in the Hessian calculation to + preserve memory. Default is 1. + + + + + + Gets the approximate Hessian matrix of second derivatives + generated in the last algorithm iteration. The Hessian is + stored in the upper triangular part of this matrix. See + remarks for details. + + + + + The Hessian needs only be upper-triangular, since + it is symmetric. The Cholesky decomposition will + make use of this fact and use the lower-triangular + portion to hold the decomposition, conserving memory + + Thus said, this property will hold the Hessian matrix + in the upper-triangular part of this matrix, and store + its Cholesky decomposition on its lower triangular part. + + + + + + Gets the Jacobian matrix created in the last iteration. + + + + + + Gets the gradient vector computed in the last iteration. + + + + + + Resilient Backpropagation learning algorithm. + + + + + This class implements the resilient backpropagation (RProp) + learning algorithm. The RProp learning algorithm is one of the fastest learning + algorithms for feed-forward learning networks which use only first-order + information. + + + + + Sample usage (training network to calculate XOR function): + + + // initialize input and output values + double[][] input = + { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + + double[][] output = + { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction(2), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + + // create teacher + var teacher = new ResilientBackpropagationLearning(network); + + // loop + while (!needToStop) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + The following example shows how to use Rprop to solve a multi-class + classification problem. + + + // Suppose we would like to teach a network to recognize + // the following input vectors into 3 possible classes: + // + double[][] inputs = + { + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 0, 0, 1, 0 }, // 0 + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 1, 1, 1, 1 }, // 2 + new double[] { 1, 0, 1, 1 }, // 2 + new double[] { 1, 1, 0, 1 }, // 2 + new double[] { 0, 1, 1, 1 }, // 2 + new double[] { 1, 1, 1, 1 }, // 2 + }; + + int[] classes = + { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, + }; + + // First we have to convert this problem into a way that the neural + // network can handle. The first step is to expand the classes into + // indicator vectors, where a 1 into a position signifies that this + // position indicates the class the sample belongs to. + // + double[][] outputs = Accord.Statistics.Tools.Expand(classes, -1, +1); + + // Create an activation function for the net + var function = new BipolarSigmoidFunction(); + + // Create an activation network with the function and + // 4 inputs, 5 hidden neurons and 3 possible outputs: + var network = new ActivationNetwork(function, 4, 5, 3); + + // Randomly initialize the network + new NguyenWidrow(network).Randomize(); + + // Teach the network using parallel Rprop: + var teacher = new ParallelResilientBackpropagationLearning(network); + + double error = 1.0; + while (error > 1e-5) + error = teacher.RunEpoch(inputs, outputs); + + + // Checks if the network has learned + for (int i = 0; i < inputs.Length; i++) + { + double[] answer = network.Compute(inputs[i]); + + int expected = classes[i]; + int actual; answer.Max(out actual); + + // actual should be equal to expected + } + + + + + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Update network weights. + + + + + + Compute network error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Resets the current update steps using the given learning rate. + + + + + + Resets the gradient vector back to zero. + + + + + + Calculates error values for all neurons of the network. + + + Desired output vector. + + Returns summary squared error of the last layer divided by 2. + + + + + Computes the gradient for a given input. + + + Network's input vector. + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the maximum possible update step, + also referred as delta min. Default is 50. + + + + + + Gets or sets the minimum possible update step, + also referred as delta max. Default is 1e-6. + + + + + + Gets the decrease parameter, also + referred as eta minus. Default is 0.5. + + + + + + Gets the increase parameter, also + referred as eta plus. Default is 1.2. + + + + + + Deep Belief Network. + + + + The Deep Belief Network can be seen as a collection of stacked + Restricted Boltzmann + Machines disposed as layers of a network. In turn, the + whole network can be seen as an stochastic activation network + in which the neurons activate within some given probability. + + + + + + Creates a new . + + + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Creates a new . + + + The activation function to be used in the network neurons. + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Creates a new . + + + The number of inputs for the network. + The layers to add to the deep network. + + + + + Computes the network's outputs for a given input. + + + The input vector. + + + Returns the network's output for the given input. + + + + + + Computes the network's outputs for a given input. + + + The input vector. + The index of the layer. + + + Returns the network's output for the given input. + + + + + + Reconstructs a input vector for a given output. + + + The output vector. + + + Returns a probable input vector which may + have originated the given output. + + + + + + Reconstructs a input vector using the output + vector of a given layer. + + + The output vector. + The index of the layer. + + + Returns a probable input vector which may + have originated the given output in the + indicated layer. + + + + + + Samples an output vector from the network + given an input vector. + + + An input vector. + + + A possible output considering the + stochastic activations of the network. + + + + + + Samples an output vector from the network + given an input vector. + + + An input vector. + The index of the layer. + + + A possible output considering the + stochastic activations of the network. + + + + + + Samples an input vector from the network + given an output vector. + + + An output vector. + + + A possible reconstruction considering the + stochastic activations of the network. + + + + + + Inserts a new layer at the end of this network. + + + The number of neurons in the new layer. + + + + + Inserts a new layer at the end of this network. + + + The number of neurons in the new layer. + The activation function which should be used by the neurons. + + + + + Inserts a new layer at the end of this network. + + + The number of neurons in the layer. + The activation function which should be used by the visible neurons. + The activation function which should be used by the hidden neurons. + + + + + Stacks a new Boltzmann Machine at the end of this network. + + + The machine to be added to the network. + + + + + Removes the last layer from the network. + + + + + + Updates the weights of the visible layers by copying + the reverse of the weights in the hidden layers. + + + + + + Creates a Gaussian-Bernoulli network. + + + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Creates a Mixed-Bernoulli network. + + + The to be used in the first visible layer. + The to be used in all other layers. + + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Saves the network to a stream. + + + The stream to which the network is to be serialized. + + + + + Saves the network to a stream. + + + The file path to which the network is to be serialized. + + + + + Loads a network from a stream. + + + The network from which the machine is to be deserialized. + + The deserialized network. + + + + + Loads a network from a file. + + + The path to the file from which the network is to be deserialized. + + The deserialized network. + + + + + Gets the number of output neurons in the network + (the size of the computed output vectors). + + + + + + Gets the Restricted Boltzmann Machines + on each layer of this deep network. + + + + + + Restricted Boltzmann Machine. + + + + + // Create some sample inputs and outputs. Note that the + // first four vectors belong to one class, and the other + // four belong to another (you should see that the 1s + // accumulate on the beginning for the first four vectors + // and on the end for the second four). + + double[][] inputs = + { + new double[] { 1,1,1, 0,0,0 }, // class a + new double[] { 1,0,1, 0,0,0 }, // class a + new double[] { 1,1,1, 0,0,0 }, // class a + new double[] { 0,0,1, 1,1,0 }, // class b + new double[] { 0,0,1, 1,0,0 }, // class b + new double[] { 0,0,1, 1,1,0 }, // class b + }; + + double[][] outputs = + { + new double[] { 1, 0 }, // indicates the inputs at this + new double[] { 1, 0 }, // position belongs to class a + new double[] { 1, 0 }, + new double[] { 0, 1 }, // indicates the inputs at this + new double[] { 0, 1 }, // position belongs to class b + new double[] { 0, 1 }, + }; + + // Create a Bernoulli activation function + var function = new BernoulliFunction(alpha: 0.5); + + // Create a Restricted Boltzmann Machine for 6 inputs and with 1 hidden neuron + var rbm = new RestrictedBoltzmannMachine(function, inputsCount: 6, hiddenNeurons: 2); + + // Create the learning algorithm for RBMs + var teacher = new ContrastiveDivergenceLearning(rbm) + { + Momentum = 0, + LearningRate = 0.1, + Decay = 0 + }; + + // learn 5000 iterations + for (int i = 0; i < 5000; i++) + teacher.RunEpoch(inputs); + + // Compute the machine answers for the given inputs: + double[] a = rbm.Compute(new double[] { 1, 1, 1, 0, 0, 0 }); // { 0.99, 0.00 } + double[] b = rbm.Compute(new double[] { 0, 0, 0, 1, 1, 1 }); // { 0.00, 0.99 } + + // As we can see, the first neuron responds to vectors belonging + // to the first class, firing 0.99 when we feed vectors which + // have 1s at the beginning. Likewise, the second neuron fires + // when the vector belongs to the second class. + + // We can also generate input vectors given the classes: + double[] xa = rbm.GenerateInput(new double[] { 1, 0 }); // { 1, 1, 1, 0, 0, 0 } + double[] xb = rbm.GenerateInput(new double[] { 0, 1 }); // { 0, 0, 1, 1, 1, 0 } + + // As we can see, if we feed an output pattern where the first neuron + // is firing and the second isn't, the network generates an example of + // a vector belonging to the first class. The same goes for the second + // neuron and the second class. + + + + + + + + + + Creates a new . + + + The number of inputs for the machine. + The number of hidden neurons in the machine. + + + + + Creates a new . + + + The hidden layer to be added in the machine. + The visible layer to be added in the machine. + + + + + Creates a new . + + + The activation function to use in the network neurons. + The number of inputs for the machine. + The number of hidden neurons in the machine. + + + + + Compute output vector of the network. + + + Input vector. + + + Returns network's output vector. + + + + + + Reconstructs a input vector for a given output. + + + The output vector. + + + Returns a probable input vector which may + have originated the given output. + + + + + + Samples an output vector from the network + given an input vector. + + + An input vector. + + + A possible output considering the + stochastic activations of the network. + + + + + + Samples an input vector from the network + given an output vector. + + + An output vector. + + + A possible reconstruction considering the + stochastic activations of the network. + + + + + + Constructs a Gaussian-Bernoulli network with + visible Gaussian units and hidden Bernoulli units. + + + The number of inputs for the machine. + The number of hidden neurons in the machine. + + A Gaussian-Bernoulli Restricted Boltzmann Machine + + + + + Creates a new from this instance. + + + The number of output neurons in the last layer. + + An containing this network. + + + + + Creates a new from this instance. + + + The number of output neurons in the last layer. + The activation function to use in the last layer. + + An containing this network. + + + + + Updates the weights of the visible layer by copying + the reverse of the weights in the hidden layer. + + + + + + Gets the visible layer of the machine. + + + + + + Gets the hidden layer of the machine. + + + + + + Stochastic Activation Neuron. + + + + The Stochastic Activation Neuron is an activation neuron + which activates (returns 1) only within a given probability. + The neuron has a random component in the activation function, + and the neuron fires only if the total sum, after applied + to a logistic activation function, is greater than a randomly + sampled value. + + + + + + Initializes a new instance of the class. + + + Number of inputs for the neuron. + Activation function for the neuron. + + + + + Computes output value of neuron. + + + An input vector. + + Returns the neuron's output value for the given input. + + + + + Samples the neuron output considering + the stochastic activation function. + + + An input vector. + + A possible output for the neuron drawn + from the neuron's stochastic function. + + + + + Samples the neuron output considering + the stochastic activation function. + + + The (previously computed) neuron output. + + A possible output for the neuron drawn + from the neuron's stochastic function. + + + + + Gets the neuron sample value generated in the last + call of any of the methods. + + + + + + Gets or sets the stochastic activation + function for this stochastic neuron. + + + + + + Nguyen-Widrow weight initialization. + + + + The Nguyen-Widrow initialization algorithm chooses values in + order to distribute the active region of each neuron in the layer + approximately evenly across the layers' input space. + + The values contain a degree of randomness, so they are not the + same each time this function is called. + + + + + + Constructs a new Nguyen-Widrow Weight initialization. + + + The activation network whose weights will be initialized. + + + + + Randomizes (initializes) the weights of + the network using Nguyen-Widrow method's. + + + + + + Randomizes (initializes) the weights of + the network using a Gaussian distribution. + + + + + + Activation-Maximization method for visualizing neuron's roles. + + + + + + Initializes a new instance of the class. + + + The neuron to be visualized. + + + + + Finds the value which maximizes + the activation of this neuron. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net45/Accord.Neuro.dll b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net45/Accord.Neuro.dll new file mode 100644 index 0000000000..913fb5d1f Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net45/Accord.Neuro.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net45/Accord.Neuro.xml b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net45/Accord.Neuro.xml new file mode 100644 index 0000000000..2a533cc27 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Neuro.3.0.2/lib/net45/Accord.Neuro.xml @@ -0,0 +1,4171 @@ + + + + Accord.Neuro + + + + + Identity activation function. + + + + The identity activation function is given by f(x) = x, + meaning it simply repasses the neuronal summation output to + further neurons untouched. + + + + + + Activation function interface. + + + All activation functions, which are supposed to be used with + neurons, which calculate their output as a function of weighted sum of + their inputs, should implement this interfaces. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Creates a new identity activation function. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Rectified linear activation function. + + + + This class implements a rectified linear activation + function as given by the piecewise formula: + + + f(x) = 0, if x > 0 + f(x) = x, otherwise + + + + This function is non-differentiable at zero. + + + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Gaussian stochastic activation function. + + + + + The Gaussian activation function can be used to create + Stochastic Neurons, which can in turn be used to create + Deep Belief Networks and Restricted Boltzmann + Machines. In contrast to the , the Gaussian can be used + to model continuous inputs in Deep Belief Networks. If, however, the inputs of the problem + being learned are discrete in nature, the use of a Bernoulli function would be more indicated. + + + The Gaussian activation function is modeled after a + Gaussian (Normal) probability distribution. + + + + This function assumes output variables have been + normalized to have zero mean and unit variance. + + + + + // Create a Gaussian function with slope alpha = 4.2 + GaussianFunction function = new GaussianFunction(4.2); + + // Computes the function output (linear, y = alpha * x) + double y = function.Function(x: 0.2); // 4.2 * 2 = 0.48 + + // Draws a sample from a Gaussian distribution with + // mean given by the function output y (previously 0.48) + double z = function.Generate(x: 0.4); // (random, between 0 and 1) + + // Please note that the above is completely equivalent + // to computing the line below (remember, 0.48 == y) + double w = function.Generate2(y: 0.48); // (random, between 0 and 1) + + + // We can also compute the derivative of the sigmoid function + double d = function.Derivative(x: 0.2); // 4.2 (the slope) + + // Or compute the derivative given the functions' output y + double e = function.Derivative2(y: 0.2); // 4.2 (the slope) + + + + + + + + + + + Common interface for stochastic activation functions. + + + + + + + + + Samples a value from the function given a input value. + + + Function input value. + + Draws a random value from the function. + + + + + Samples a value from the function given a function output value. + + + The function output value. This is the value which was obtained + with the help of the method. + + The method calculates the same output value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with help + of the method. + + + Draws a random value from the function. + + + + + Creates a new . + + + The linear slope value. Default is 1. + + + + + Creates a new . + + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Samples a value from the function given a input value. + + + Function input value. + + + Draws a random value from the function. + + + + + + Samples a value from the function given a function output value. + + + Function output value - the value, which was obtained + with the help of method. + + + Draws a random value from the function. + + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Gets or sets the class-wide + Gaussian random generator. + + + + + + Linear slope value. + + + + Default value is set to 1. + + + + + + Function output range. + + + + Default value is set to [-1;+1] + + + + + + Linear activation function. + + + + This class implements a linear activation function bounded + in the interval (a,b), as given by the piecewise formula: + + + f(x) = alpha*x, if a > x*alpha > b + f(x) = a, if a > x*alpha; + f(x) = b, if x*alpha > b; + + + + In which, by default, a = -1 and b = +1. + + + This function is continuous only in the interval (a/alpha, b/alpha). This is similar + to the threshold function but with a linear growth component. If alpha is set to a + very high value (such as infinity), the function behaves as a threshold function. + + + The output range of the function can be set to an arbitrary + value. The default output range is [-1, +1]. + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Linear slope value. + + + + Default value is set to 1. + + + + + + Function output range. + + + + Default value is set to [-1;+1] + + + + + + Bernoulli stochastic activation function. + + + + + The Bernoulli activation function can be used to create + Stochastic Neurons, which can in turn be used to create + Deep Belief Networks and Restricted Boltzmann + Machines. The use of a Bernoulli function is indicated when the inputs of a problem + are discrete, it is, are either 0 or 1. When the inputs are continuous, the use of a + might be more indicated. + + As a stochastic activation function, the Bernoulli + function is able to generate values following a statistic probability distribution. In + this case, the Bernoulli function follows a Bernoulli + distribution with its mean given by + the output of this class' sigmoidal function. + + + + + // Create a Bernoulli function with sigmoid's alpha = 1 + BernoulliFunction function = new BernoulliFunction(); + + // Computes the function output (sigmoid function) + double y = function.Function(x: 0.4); // 0.5986876 + + // Draws a sample from a Bernoulli distribution with + // mean given by the function output y (given as before) + double z = function.Generate(x: 0.4); // (random, 0 or 1) + + // Here, z can be either 0 or 1. Since it follows a Bernoulli + // distribution with mean 0.59, it is expected to be 1 about + // 0.59 of the time. + + // Now, please note that the above is completely equivalent + // to computing the line below (remember, 0.5986876 == y) + double w = function.Generate2(y: 0.5986876); // (random, 0 or 1) + + + // We can also compute the derivative of the sigmoid function + double d = function.Derivative(x: 0.4); // 0.240260 + + // Or compute the derivative given the functions' output y + double e = function.Derivative2(y: 0.5986876); // 0.240260 + + + + + + + + + + + Initializes a new instance of the class. + + + Sigmoid's alpha value. Default is 1. + + + + + Initializes a new instance of the class. + + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Samples a value from the function given a input value. + + + Function input value. + + Draws a random value from the function. + + + + + Samples a value from the function given a function output value. + + + The function output value. This is the value which was obtained + with the help of the method. + + The method calculates the same output value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with help + of the method. + + + Draws a random value from the function. + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Gets or sets the random sample generator + used to activate neurons of this class. + + + + + + Sigmoid's alpha value. + + + The value determines steepness of the function. Increasing value of + this property changes sigmoid to look more like a threshold function. Decreasing + value of this property makes sigmoid to be very smooth (slowly growing from its + minimum value to its maximum value). + + Default value is set to 1. + + + + + + Bipolar sigmoid activation function. + + + The class represents bipolar sigmoid activation function with + the next expression: + + 2 + f(x) = ------------------ - 1 + 1 + exp(-alpha * x) + + 2 * alpha * exp(-alpha * x ) + f'(x) = -------------------------------- = alpha * (1 - f(x)^2) / 2 + (1 + exp(-alpha * x))^2 + + + + Output range of the function: [-1, 1]. + + Functions graph: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Sigmoid's alpha value. + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Sigmoid's alpha value. + + + The value determines steepness of the function. Increasing value of + this property changes sigmoid to look more like a threshold function. Decreasing + value of this property makes sigmoid to be very smooth (slowly growing from its + minimum value to its maximum value). + + Default value is set to 2. + + + + + + Sigmoid activation function. + + + The class represents sigmoid activation function with + the next expression: + + 1 + f(x) = ------------------ + 1 + exp(-alpha * x) + + alpha * exp(-alpha * x ) + f'(x) = ---------------------------- = alpha * f(x) * (1 - f(x)) + (1 + exp(-alpha * x))^2 + + + + Output range of the function: [0, 1]. + + Functions graph: + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Sigmoid's alpha value. + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative. + + + Function input value. + + Function derivative, f'(x). + + The method calculates function derivative at point . + + + + + Calculates function derivative. + + + Function output value - the value, which was obtained + with the help of method. + + Function derivative, f'(x). + + The method calculates the same derivative value as the + method, but it takes not the input x value + itself, but the function value, which was calculated previously with + the help of method. + + Some applications require as function value, as derivative value, + so they can save the amount of calculations using this method to calculate derivative. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Sigmoid's alpha value. + + + The value determines steepness of the function. Increasing value of + this property changes sigmoid to look more like a threshold function. Decreasing + value of this property makes sigmoid to be very smooth (slowly growing from its + minimum value to its maximum value). + + Default value is set to 2. + + + + + + Threshold activation function. + + + The class represents threshold activation function with + the next expression: + + f(x) = 1, if x >= 0, otherwise 0 + + + + Output range of the function: [0, 1]. + + Functions graph: + + + + + + + Initializes a new instance of the class. + + + + + Calculates function value. + + + Function input value. + + Function output value, f(x). + + The method calculates function value at point . + + + + + Calculates function derivative (not supported). + + + Input value. + + Always returns 0. + + The method is not supported, because it is not possible to + calculate derivative of the function. + + + + + Calculates function derivative (not supported). + + + Input value. + + Always returns 0. + + The method is not supported, because it is not possible to + calculate derivative of the function. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Activation layer. + + + Activation layer is a layer of activation neurons. + The layer is usually used in multi-layer neural networks. + + + + + Base neural layer class. + + + This is a base neural layer class, which represents + collection of neurons. + + + + + Layer's inputs count. + + + + + Layer's neurons count. + + + + + Layer's neurons. + + + + + Layer's output vector. + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + + Protected contructor, which initializes , + and members. + + + + + Compute output vector of the layer. + + + Input vector. + + Returns layer's output vector. + + The actual layer's output vector is determined by neurons, + which comprise the layer - consists of output values of layer's neurons. + The output vector is also stored in property. + + The method may be called safely from multiple threads to compute layer's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold layer's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on layer's output property. + + + + + + Randomize neurons of the layer. + + + Randomizes layer's neurons by calling method + of each neuron. + + + + + Layer's inputs count. + + + + + Layer's neurons. + + + + + + Layer's output vector. + + + The calculation way of layer's output vector is determined by neurons, + which comprise the layer. + + The property is not initialized (equals to ) until + method is called. + + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + Activation function of neurons of the layer. + + The new layer is randomized (see + method) after it is created. + + + + + Set new activation function for all neurons of the layer. + + + Activation function to set. + + The methods sets new activation function for each neuron by setting + their property. + + + + + Distance layer. + + + Distance layer is a layer of distance neurons. + The layer is usually a single layer of such networks as Kohonen Self + Organizing Map, Elastic Net, Hamming Memory Net. + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + + The new layet is randomized (see + method) after it is created. + + + + + Back propagation learning algorithm. + + + The class implements back propagation learning algorithm, + which is widely used for training multi-layer neural networks with + continuous activation functions. + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = new double[4][] { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + double[][] output = new double[4][] { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + // create teacher + BackPropagationLearning teacher = new BackPropagationLearning( network ); + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + + + + + + Supervised learning interface. + + + The interface describes methods, which should be implemented + by all supervised learning algorithms. Supervised learning is such + type of learning algorithms, where system's desired output is known on + the learning stage. So, given sample input values and desired outputs, + system should adopt its internals to produce correct (or close to correct) + result after the learning step is complete. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns learning error. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns sum of learning errors. + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Calculates error values for all neurons of the network. + + + Desired output vector. + + Returns summary squared error of the last layer divided by 2. + + + + + Calculate weights updates. + + + Network's input vector. + + + + + Update network's weights. + + + + + + Learning rate, [0, 1]. + + + The value determines speed of learning. + + Default value equals to 0.1. + + + + + + Momentum, [0, 1]. + + + The value determines the portion of previous weight's update + to use on current iteration. Weight's update values are calculated on + each iteration depending on neuron's error. The momentum specifies the amount + of update to use from previous iteration and the amount of update + to use from current iteration. If the value is equal to 0.1, for example, + then 0.1 portion of previous update and 0.9 portion of current update are used + to update weight's value. + + Default value equals to 0.0. + + + + + + Delta rule learning algorithm. + + + This learning algorithm is used to train one layer neural + network of Activation Neurons + with continuous activation function, see + for example. + + See information about delta rule + learning algorithm. + + + + + + Initializes a new instance of the class. + + + Network to teach. + + Invalid nuaral network. It should have one layer only. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + The value determines speed of learning. + + Default value equals to 0.1. + + + + + + Elastic network learning algorithm. + + + This class implements elastic network's learning algorithm and + allows to train Distance Networks. + + + + + + Unsupervised learning interface. + + + The interface describes methods, which should be implemented + by all unsupervised learning algorithms. Unsupervised learning is such + type of learning algorithms, where system's desired output is not known on + the learning stage. Given sample input values, it is expected, that + system will organize itself in the way to find similarities betweed provided + samples. + + + + + Runs learning iteration. + + + Input vector. + + Returns learning error. + + + + + Runs learning epoch. + + + Array of input vectors. + + Returns sum of learning errors. + + + + + Initializes a new instance of the class. + + + Neural network to train. + + + + + Runs learning iteration. + + + Input vector. + + Returns learning error - summary absolute difference between neurons' + weights and appropriate inputs. The difference is measured according to the neurons + distance to the winner neuron. + + The method runs one learning iterations - finds winner neuron (the neuron + which has weights with values closest to the specified input vector) and updates its weight + (as well as weights of neighbor neurons) in the way to decrease difference with the specified + input vector. + + + + + Runs learning epoch. + + + Array of input vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + Determines speed of learning. + + Default value equals to 0.1. + + + + + + Learning radius, [0, 1]. + + + Determines the amount of neurons to be updated around + winner neuron. Neurons, which are in the circle of specified radius, + are updated during the learning procedure. Neurons, which are closer + to the winner neuron, get more update. + + Default value equals to 0.5. + + + + + + Fitness function used for chromosomes representing collection of neural network's weights. + + + + + + Initializes a new instance of the class. + + + Neural network for which fitness will be calculated. + Input data samples for neural network. + Output data sampels for neural network (desired output). + + Length of inputs and outputs arrays must be equal and greater than 0. + Length of each input vector must be equal to neural network's inputs count. + + + + + Evaluates chromosome. + + + Chromosome to evaluate. + + Returns chromosome's fitness value. + + The method calculates fitness value of the specified + chromosome. + + + + + Neural networks' evolutionary learning algorithm, which is based on Genetic Algorithms. + + + The class implements supervised neural network's learning algorithm, + which is based on Genetic Algorithms. For the given neural network, it create a population + of chromosomes, which represent neural network's + weights. Then, during the learning process, the genetic population evolves and weights, which + are represented by the best chromosome, are set to the source neural network. + + See class for additional information about genetic population + and evolutionary based search. + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = new double[4][] { + new double[] {-1, 1}, new double[] {-1, 1}, + new double[] { 1, -1}, new double[] { 1, 1} + }; + double[][] output = new double[4][] { + new double[] {-1}, new double[] { 1}, + new double[] { 1}, new double[] {-1} + }; + // create neural network + ActivationNetwork network = new ActivationNetwork( + BipolarSigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + // create teacher + EvolutionaryLearning teacher = new EvolutionaryLearning( network, + 100 ); // number of chromosomes in genetic population + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + + + + + + + Initializes a new instance of the class. + + + Activation network to be trained. + Size of genetic population. + Random numbers generator used for initialization of genetic + population representing neural network's weights and thresholds (see ). + Random numbers generator used to generate random + factors for multiplication of network's weights and thresholds during genetic mutation + (ses .) + Random numbers generator used to generate random + values added to neural network's weights and thresholds during genetic mutation + (see ). + Method of selection best chromosomes in genetic population. + Crossover rate in genetic population (see + ). + Mutation rate in genetic population (see + ). + Rate of injection of random chromosomes during selection + in genetic population (see ). + + + + + Initializes a new instance of the class. + + + Activation network to be trained. + Size of genetic population. + + This version of constructor is used to create genetic population + for searching optimal neural network's weight using default set of parameters, which are: + + Selection method - elite; + Crossover rate - 0.75; + Mutation rate - 0.25; + Rate of injection of random chromosomes during selection - 0.20; + Random numbers generator for initializing new chromosome - + UniformGenerator( new Range( -1, 1 ) ); + Random numbers generator used during mutation for genes' multiplication - + ExponentialGenerator( 1 ); + Random numbers generator used during mutation for adding random value to genes - + UniformGenerator( new Range( -0.5f, 0.5f ) ). + + + In order to have full control over the above default parameters, it is possible to + used extended version of constructor, which allows to specify all of the parameters. + + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns learning error. + + The method is not implemented, since evolutionary learning algorithm is global + and requires all inputs/outputs in order to run its one epoch. Use + method instead. + + The method is not implemented by design. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary squared learning error for the entire epoch. + + While running the neural network's learning process, it is required to + pass the same and values for each + epoch. On the very first run of the method it will initialize evolutionary fitness + function with the given input/output. So, changing input/output in middle of the learning + process, will break it. + + + + + Perceptron learning algorithm. + + + This learning algorithm is used to train one layer neural + network of Activation Neurons + with the Threshold + activation function. + + See information about Perceptron + and its learning algorithm. + + + + + + Initializes a new instance of the class. + + + Network to teach. + + Invalid nuaral network. It should have one layer only. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns absolute error - difference between current network's output and + desired output. + + Runs one learning iteration and updates neuron's + weights in the case if neuron's output is not equal to the + desired output. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + The value determines speed of learning. + + Default value equals to 0.1. + + + + + + Resilient Backpropagation learning algorithm. + + + This class implements the resilient backpropagation (RProp) + learning algorithm. The RProp learning algorithm is one of the fastest learning + algorithms for feed-forward learning networks which use only first-order + information. + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = new double[4][] { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + double[][] output = new double[4][] { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + // create teacher + ResilientBackpropagationLearning teacher = new ResilientBackpropagationLearning( network ); + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Resets current weight and threshold derivatives. + + + + + + Resets the current update steps using the given learning rate. + + + + + + Update network's weights. + + + + + + Calculates error values for all neurons of the network. + + + Desired output vector. + + Returns summary squared error of the last layer divided by 2. + + + + + Calculate weights updates + + + Network's input vector. + + + + + Learning rate. + + + The value determines speed of learning. + + Default value equals to 0.0125. + + + + + + Kohonen Self Organizing Map (SOM) learning algorithm. + + + This class implements Kohonen's SOM learning algorithm and + is widely used in clusterization tasks. The class allows to train + Distance Networks. + + Sample usage (clustering RGB colors): + + // set range for randomization neurons' weights + Neuron.RandRange = new Range( 0, 255 ); + // create network + DistanceNetwork network = new DistanceNetwork( + 3, // thress inputs in the network + 100 * 100 ); // 10000 neurons + // create learning algorithm + SOMLearning trainer = new SOMLearning( network ); + // network's input + double[] input = new double[3]; + // loop + while ( !needToStop ) + { + input[0] = rand.Next( 256 ); + input[1] = rand.Next( 256 ); + input[2] = rand.Next( 256 ); + + trainer.Run( input ); + + // ... + // update learning rate and radius continuously, + // so networks may come steady state + } + + + + + + + Initializes a new instance of the class. + + + Neural network to train. + + This constructor supposes that a square network will be passed for training - + it should be possible to get square root of network's neurons amount. + + Invalid network size - square network is expected. + + + + + Initializes a new instance of the class. + + + Neural network to train. + Neural network's width. + Neural network's height. + + The constructor allows to pass network of arbitrary rectangular shape. + The amount of neurons in the network should be equal to width * height. + + + Invalid network size - network size does not correspond + to specified width and height. + + + + + Runs learning iteration. + + + Input vector. + + Returns learning error - summary absolute difference between neurons' weights + and appropriate inputs. The difference is measured according to the neurons + distance to the winner neuron. + + The method runs one learning iterations - finds winner neuron (the neuron + which has weights with values closest to the specified input vector) and updates its weight + (as well as weights of neighbor neurons) in the way to decrease difference with the specified + input vector. + + + + + Runs learning epoch. + + + Array of input vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Learning rate, [0, 1]. + + + Determines speed of learning. + + Default value equals to 0.1. + + + + + + Learning radius. + + + Determines the amount of neurons to be updated around + winner neuron. Neurons, which are in the circle of specified radius, + are updated during the learning procedure. Neurons, which are closer + to the winner neuron, get more update. + + In the case if learning rate is set to 0, then only winner + neuron's weights are updated. + + Default value equals to 7. + + + + + + Gets the neural network's height. + + + + + + Gets the neural network's width. + + + + + + Activation network. + + + Activation network is a base for multi-layer neural network + with activation functions. It consists of activation + layers. + + Sample usage: + + // create activation network + ActivationNetwork network = new ActivationNetwork( + new SigmoidFunction( ), // sigmoid activation function + 3, // 3 inputs + 4, 1 ); // 2 layers: + // 4 neurons in the firs layer + // 1 neuron in the second layer + + + + + + + Base neural network class. + + + This is a base neural netwok class, which represents + collection of neuron's layers. + + + + + Network's inputs count. + + + + + Network's layers count. + + + + + Network's layers. + + + + + Network's output vector. + + + + + Initializes a new instance of the class. + + + Network's inputs count. + Network's layers count. + + Protected constructor, which initializes , + and members. + + + + + Compute output vector of the network. + + + Input vector. + + Returns network's output vector. + + The actual network's output vecor is determined by layers, + which comprise the layer - represents an output vector of the last layer + of the network. The output vector is also stored in property. + + The method may be called safely from multiple threads to compute network's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold network's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on network's output property. + + + + + + Randomize layers of the network. + + + Randomizes network's layers by calling method + of each layer. + + + + + Save network to specified file. + + + File name to save network into. + + The neural network is saved using .NET serialization (binary formatter is used). + + + + + Save network to specified file. + + + Stream to save network into. + + The neural network is saved using .NET serialization (binary formatter is used). + + + + + Load network from specified file. + + + File name to load network from. + + Returns instance of class with all properties initialized from file. + + Neural network is loaded from file using .NET serialization (binary formater is used). + + + + + Load network from specified file. + + + Stream to load network from. + + Returns instance of class with all properties initialized from file. + + Neural network is loaded from file using .NET serialization (binary formater is used). + + + + + Network's inputs count. + + + + + Network's layers. + + + + + Network's output vector. + + + The calculation way of network's output vector is determined by + layers, which comprise the network. + + The property is not initialized (equals to ) until + method is called. + + + + + + Initializes a new instance of the class. + + + Activation function of neurons of the network. + Network's inputs count. + Array, which specifies the amount of neurons in + each layer of the neural network. + + The new network is randomized (see + method) after it is created. + + + + + Set new activation function for all neurons of the network. + + + Activation function to set. + + The method sets new activation function for all neurons by calling + method for each layer of the network. + + + + + Distance network. + + + Distance network is a neural network of only one distance + layer. The network is a base for such neural networks as SOM, Elastic net, etc. + + + + + + Initializes a new instance of the class. + + + Network's inputs count. + Network's neurons count. + + The new network is randomized (see + method) after it is created. + + + + + Get winner neuron. + + + Index of the winner neuron. + + The method returns index of the neuron, which weights have + the minimum distance from network's input. + + + + + Activation neuron. + + + Activation neuron computes weighted sum of its inputs, adds + threshold value and then applies activation function. + The neuron isusually used in multi-layer neural networks. + + + + + + + Base neuron class. + + + This is a base neuron class, which encapsulates such + common properties, like neuron's input, output and weights. + + + + + Neuron's inputs count. + + + + + Neuron's weights. + + + + + Neuron's output value. + + + + + Random number generator. + + + The generator is used for neuron's weights randomization. + + + + + Random generator range. + + + Sets the range of random generator. Affects initial values of neuron's weight. + Default value is [0, 1]. + + + + + Initializes a new instance of the class. + + + Neuron's inputs count. + + The new neuron will be randomized (see method) + after it is created. + + + + + Randomize neuron. + + + Initialize neuron's weights with random values within the range specified + by . + + + + + Computes output value of neuron. + + + Input vector. + + Returns neuron's output value. + + The actual neuron's output value is determined by inherited class. + The output value is also stored in property. + + + + + Random number generator. + + + The property allows to initialize random generator with a custom seed. The generator is + used for neuron's weights randomization. + + + + + Random generator range. + + + Sets the range of random generator. Affects initial values of neuron's weight. + Default value is [0, 1]. + + + + + Neuron's inputs count. + + + + + Neuron's output value. + + + The calculation way of neuron's output value is determined by inherited class. + + + + + Neuron's weights. + + + + + Threshold value. + + + The value is added to inputs weighted sum before it is passed to activation + function. + + + + + Activation function. + + + The function is applied to inputs weighted sum plus + threshold value. + + + + + Initializes a new instance of the class. + + + Neuron's inputs count. + Neuron's activation function. + + + + + Randomize neuron. + + + Calls base class Randomize method + to randomize neuron's weights and then randomizes threshold's value. + + + + + Computes output value of neuron. + + + Input vector. + + Returns neuron's output value. + + The output value of activation neuron is equal to value + of nueron's activation function, which parameter is weighted sum + of its inputs plus threshold value. The output value is also stored + in Output property. + + The method may be called safely from multiple threads to compute neuron's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold neuron's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on neuron's output property. + + + Wrong length of the input vector, which is not + equal to the expected value. + + + + + Threshold value. + + + The value is added to inputs weighted sum before it is passed to activation + function. + + + + + Neuron's activation function. + + + + + + Distance neuron. + + + Distance neuron computes its output as distance between + its weights and inputs - sum of absolute differences between weights' + values and corresponding inputs' values. The neuron is usually used in Kohonen + Self Organizing Map. + + + + + Initializes a new instance of the class. + + + Neuron's inputs count. + + + + + Computes output value of neuron. + + + Input vector. + + Returns neuron's output value. + + The output value of distance neuron is equal to the distance + between its weights and inputs - sum of absolute differences. + The output value is also stored in Output + property. + + The method may be called safely from multiple threads to compute neuron's + output value for the specified input values. However, the value of + property in multi-threaded environment is not predictable, + since it may hold neuron's output computed from any of the caller threads. Multi-threaded + access to the method is useful in those cases when it is required to improve performance + by utilizing several threads and the computation is based on the immediate return value + of the method, but not on neuron's output property. + + + Wrong length of the input vector, which is not + equal to the expected value. + + + + + Gaussian weight initialization. + + + + + + Constructs a new Gaussian Weight initialization. + + + The activation network whose weights will be initialized. + The standard deviation to be used. Common values lie in the 0.001- + 0.1 range. Default is 0.1. + + + + + Randomizes (initializes) the weights of + the network using a Gaussian distribution. + + + + + + Randomizes (initializes) the weights of + the network using a Gaussian distribution. + + + + + + Gets ors sets whether the initialization + should update neurons thresholds (biases) + + + + + + Stochastic Activation Layer. + + + + This class represents a layer of stochastic neurons. + + + + + + Initializes a new instance of the class. + + + Layer's neurons count. + Layer's inputs count. + + + + + Initializes a new instance of the class. + + + The activation function for the neurons in the layer. + The neurons count. + The inputs count. + + + + + Compute output vector of the layer. + + + Input vector. + + + Returns layer's output vector. + + + + + + Compute probability vector of the layer. + + + Input vector. + + + Returns layer's probability vector. + + + + + + Copy the weights of another layer in reversed order. This + can be used to update visible layers from hidden layers and + vice-versa. + + + The layer to copy the weights from. + + + + + Gets the layer's neurons. + + + + + + Gets the layer's sample values generated in the last + call of any of the methods. + + + + + + Contrastive Divergence learning algorithm for Restricted Boltzmann Machines. + + + + + + Creates a new algorithm. + + + The network to be trained. + + + + + Creates a new algorithm. + + + The hidden layer of the hidden-visible layer pair to be trained. + The visible layer of the hidden-visible layer pair to be trained. + + + + + Not supported. + + + + + + Runs learning epoch. + + + Array of input vectors. + + + Returns sum of learning errors. + + + + + + Computes the reconstruction error of the current layer. + + + Array of input vectors. + + + Returns sum of learning errors. + + + + + + Performs application-defined tasks associated with + freeing, releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed and unmanaged + resources; false to release only unmanaged resources. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + + Gets or sets the learning rate of the + learning algorithm. Default is 0.1. + + + + + + Gets or sets the momentum term of the + learning algorithm. Default is 0.9. + + + + + + Gets or sets the Weight Decay constant + of the learning algorithm. Default is 0.01. + + + + + + Delegate used to configure and create layer-specific learning algorithms. + + + The network layer being trained. + The index of the layer in the deep network. + + + The function should return an instance of the algorithm + which should be used to train the network. + + + + + + Deep Neural Network learning algorithm. + + + + + + Creates a new algorithm. + + + The network to be trained. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The batch of input data. + + The learning data for the current layer. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The mini-batches of input data. + + The learning data for the current layer. + + + + + Runs a single learning iteration. + + + A single input vector. + The corresponding output vector. + + + Returns the learning error after the iteration. + + + + + + Runs a single batch epoch + of the learning algorithm. + + + Array of input vectors. + Array of corresponding output vectors. + + + Returns sum of learning errors. + + + + + + Runs a single learning epoch using + multiple mini-batches to improve speed. + + + Array of input batches. + Array of corresponding output batches. + + + Returns sum of learning errors. + + + + + + Computes the reconstruction error for + a given set of input values. + + + The input values. + The corresponding output values. + + The squared reconstruction error. + + + + + Gets or sets the configuration function used + to specify and create the learning algorithms + for each of the layers of the deep network. + + + + + + Gets or sets the current layer index being + trained by the deep learning algorithm. + + + + + + Gets or sets the number of layers, starting at + to be trained by the deep learning algorithm. + + + + + + Delegate used to configure and create layer-specific learning algorithms. + + + The hidden layer being trained. + The visible layer being trained. + The layer-pair index in the deep network. + + + The function should return an instance of the algorithm + which should be used to train the pair of layers. + + + + + + Deep Belief Network learning algorithm. + + + + + + Creates a new algorithm. + + + The network to be trained. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The batch of input data. + + The learning data for the current layer. + + + + + Gets the learning data needed to train the currently + selected layer. The return of this function should then be passed to + to actually run a learning epoch. + + + The mini-batches of input data. + + The learning data for the current layer. + + + + + Gets the unsupervised + learning algorithm allocated for the given layer. + + + The index of the layer to get the algorithm for. + + + + + Runs a single learning iteration. + + + A single input vector. + + + Returns the learning error after the iteration. + + + + + + Runs a single batch epoch + of the learning algorithm. + + + Array of input vectors. + + + Returns sum of learning errors. + + + + + + Runs a single learning epoch using + multiple mini-batches to improve speed. + + + Array of input batches. + + + Returns sum of learning errors. + + + + + + Computes the reconstruction error for + a given set of input values. + + + The input values. + + The squared reconstruction error. + + + + + Gets or sets the configuration function used + to specify and create the learning algorithms + for each of the layers of the deep network. + + + + + + Gets or sets the current layer index being + trained by the deep learning algorithm. + + + + + + The Jacobian computation method used by the Levenberg-Marquardt. + + + + + Computes the Jacobian using approximation by finite differences. This + method is slow in comparison with back-propagation and should be used + only for debugging or comparison purposes. + + + + + + Computes the Jacobian using back-propagation for the chain rule of + calculus. This is the preferred way of computing the Jacobian. + + + + + + Levenberg-Marquardt Learning Algorithm with optional Bayesian Regularization. + + + + This class implements the Levenberg-Marquardt learning algorithm, + which treats the neural network learning as a function optimization + problem. The Levenberg-Marquardt is one of the fastest and accurate + learning algorithms for small to medium sized networks. + + However, in general, the standard LM algorithm does not perform as well + on pattern recognition problems as it does on function approximation problems. + The LM algorithm is designed for least squares problems that are approximately + linear. Because the output neurons in pattern recognition problems are generally + saturated, it will not be operating in the linear region. + + The advantages of the LM algorithm decreases as the number of network + parameters increases. + + + Sample usage (training network to calculate XOR function): + + // initialize input and output values + double[][] input = + { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + + double[][] output = + { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction( 2 ), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + + // create teacher + LevenbergMarquardtLearning teacher = new LevenbergMarquardtLearning( network ); + + // loop + while ( !needToStop ) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + + // check error value to see if we need to stop + // ... + } + + + + The following example shows how to create a neural network to learn a classification + problem with multiple classes. + + + // Here we will be creating a neural network to process 3-valued input + // vectors and classify them into 4-possible classes. We will be using + // a single hidden layer with 5 hidden neurons to accomplish this task. + // + int numberOfInputs = 3; + int numberOfClasses = 4; + int hiddenNeurons = 5; + + // Those are the input vectors and their expected class labels + // that we expect our network to learn. + // + double[][] input = + { + new double[] { -1, -1, -1 }, // 0 + new double[] { -1, 1, -1 }, // 1 + new double[] { 1, -1, -1 }, // 1 + new double[] { 1, 1, -1 }, // 0 + new double[] { -1, -1, 1 }, // 2 + new double[] { -1, 1, 1 }, // 3 + new double[] { 1, -1, 1 }, // 3 + new double[] { 1, 1, 1 } // 2 + }; + + int[] labels = + { + 0, + 1, + 1, + 0, + 2, + 3, + 3, + 2, + }; + + // In order to perform multi-class classification, we have to select a + // decision strategy in order to be able to interpret neural network + // outputs as labels. For this, we will be expanding our 4 possible class + // labels into 4-dimensional output vectors where one single dimension + // corresponding to a label will contain the value +1 and -1 otherwise. + + double[][] outputs = Accord.Statistics.Tools + .Expand(labels, numberOfClasses, -1, 1); + + // Next we can proceed to create our network + var function = new BipolarSigmoidFunction(2); + var network = new ActivationNetwork(function, + numberOfInputs, hiddenNeurons, numberOfClasses); + + // Heuristically randomize the network + new NguyenWidrow(network).Randomize(); + + // Create the learning algorithm + var teacher = new LevenbergMarquardtLearning(network); + + // Teach the network for 10 iterations: + double error = Double.PositiveInfinity; + for (int i = 0; i < 10; i++) + error = teacher.RunEpoch(input, outputs); + + // At this point, the network should be able to + // perfectly classify the training input points. + + for (int i = 0; i < input.Length; i++) + { + int answer; + double[] output = network.Compute(input[i]); + double response = output.Max(out answer); + + int expected = labels[i]; + + // at this point, the variables 'answer' and + // 'expected' should contain the same value. + } + + + + + References: + + + Sam Roweis. Levenberg-Marquardt Optimization. + + Jan Poland. (2001). On the Robustness of Update Strategies for the Bayesian + Hyperparameter alpha. Available on: http://www-alg.ist.hokudai.ac.jp/~jan/alpha.pdf + + B. Wilamowski, Y. Chen. (1999). Efficient Algorithm for Training Neural Networks + with one Hidden Layer. Available on: http://cs.olemiss.edu/~ychen/publications/conference/chen_ijcnn99.pdf + + David MacKay. (2004). Bayesian methods for neural networks - FAQ. Available on: + http://www.inference.phy.cam.ac.uk/mackay/Bayes_FAQ.html + + + + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Initializes a new instance of the class. + + + Network to teach. + True to use Bayesian regularization, false otherwise. + + + + + Initializes a new instance of the class. + + + Network to teach. + The method by which the Jacobian matrix will be calculated. + + + + + Initializes a new instance of the class. + + + Network to teach. + True to use Bayesian regularization, false otherwise. + The method by which the Jacobian matrix will be calculated. + + + + + This method should not be called. Use instead. + + + Array of input vectors. + Array of output vectors. + + Nothing. + + Online learning mode is not supported by the + Levenberg Marquardt. Use batch learning mode instead. + + + + + Runs a single learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. + + The method runs one learning epoch, by calling running necessary + iterations of the Levenberg Marquardt to achieve an error decrease. + + + + + Compute network error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Update network's weights. + + + The sum of squared weights divided by 2. + + + + + Creates the initial weight vector w + + + The sum of squared weights divided by 2. + + + + + Gets the number of parameters in a network. + + + + + Calculates the Jacobian matrix by using the chain rule. + + The input vectors. + The desired output vectors. + The sum of squared errors for the last error divided by 2. + + + + + Calculates partial derivatives for all weights of the network. + + + The input vector. + Desired output vector. + The current output location (index) in the desired output vector. + + Returns summary squared error of the last layer. + + + + + Calculates the Jacobian Matrix using Finite Differences + + + Returns the sum of squared errors of the network divided by 2. + + + + + Creates the coefficients to be used when calculating + the approximate Jacobian by using finite differences. + + + + + + Computes the derivative of the network in + respect to the weight passed as parameter. + + + + + + Levenberg's damping factor (lambda). This + value must be positive. Default is 0.1. + + + + The value determines speed of learning. Default value is 0.1. + + + + + + Learning rate adjustment. Default value is 10. + + + + The value by which the learning rate is adjusted when searching + for the minimum cost surface. Default value is 10. + + + + + + Gets the total number of parameters + in the network being trained. + + + + + + Gets the number of effective parameters being used + by the network as determined by the Bayesian regularization. + + + If no regularization is being used, the value will be 0. + + + + + + Gets or sets the importance of the squared sum of network + weights in the cost function. Used by the regularization. + + + + This is the first Bayesian hyperparameter. The default + value is 0. + + + + + + Gets or sets the importance of the squared sum of network + errors in the cost function. Used by the regularization. + + + + This is the second Bayesian hyperparameter. The default + value is 1. + + + + + + Gets or sets whether to use Bayesian Regularization. + + + + + + Gets or sets the number of blocks to divide the + Jacobian matrix in the Hessian calculation to + preserve memory. Default is 1. + + + + + + Gets the approximate Hessian matrix of second derivatives + generated in the last algorithm iteration. The Hessian is + stored in the upper triangular part of this matrix. See + remarks for details. + + + + + The Hessian needs only be upper-triangular, since + it is symmetric. The Cholesky decomposition will + make use of this fact and use the lower-triangular + portion to hold the decomposition, conserving memory + + Thus said, this property will hold the Hessian matrix + in the upper-triangular part of this matrix, and store + its Cholesky decomposition on its lower triangular part. + + + + + + Gets the Jacobian matrix created in the last iteration. + + + + + + Gets the gradient vector computed in the last iteration. + + + + + + Resilient Backpropagation learning algorithm. + + + + + This class implements the resilient backpropagation (RProp) + learning algorithm. The RProp learning algorithm is one of the fastest learning + algorithms for feed-forward learning networks which use only first-order + information. + + + + + Sample usage (training network to calculate XOR function): + + + // initialize input and output values + double[][] input = + { + new double[] {0, 0}, new double[] {0, 1}, + new double[] {1, 0}, new double[] {1, 1} + }; + + double[][] output = + { + new double[] {0}, new double[] {1}, + new double[] {1}, new double[] {0} + }; + + // create neural network + ActivationNetwork network = new ActivationNetwork( + SigmoidFunction(2), + 2, // two inputs in the network + 2, // two neurons in the first layer + 1 ); // one neuron in the second layer + + // create teacher + var teacher = new ResilientBackpropagationLearning(network); + + // loop + while (!needToStop) + { + // run epoch of learning procedure + double error = teacher.RunEpoch( input, output ); + // check error value to see if we need to stop + // ... + } + + + + The following example shows how to use Rprop to solve a multi-class + classification problem. + + + // Suppose we would like to teach a network to recognize + // the following input vectors into 3 possible classes: + // + double[][] inputs = + { + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 0, 0, 1, 0 }, // 0 + new double[] { 0, 1, 1, 0 }, // 0 + new double[] { 0, 1, 0, 0 }, // 0 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 0 }, // 1 + new double[] { 1, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 0, 0, 0, 1 }, // 1 + new double[] { 1, 1, 1, 1 }, // 2 + new double[] { 1, 0, 1, 1 }, // 2 + new double[] { 1, 1, 0, 1 }, // 2 + new double[] { 0, 1, 1, 1 }, // 2 + new double[] { 1, 1, 1, 1 }, // 2 + }; + + int[] classes = + { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, + }; + + // First we have to convert this problem into a way that the neural + // network can handle. The first step is to expand the classes into + // indicator vectors, where a 1 into a position signifies that this + // position indicates the class the sample belongs to. + // + double[][] outputs = Accord.Statistics.Tools.Expand(classes, -1, +1); + + // Create an activation function for the net + var function = new BipolarSigmoidFunction(); + + // Create an activation network with the function and + // 4 inputs, 5 hidden neurons and 3 possible outputs: + var network = new ActivationNetwork(function, 4, 5, 3); + + // Randomly initialize the network + new NguyenWidrow(network).Randomize(); + + // Teach the network using parallel Rprop: + var teacher = new ParallelResilientBackpropagationLearning(network); + + double error = 1.0; + while (error > 1e-5) + error = teacher.RunEpoch(inputs, outputs); + + + // Checks if the network has learned + for (int i = 0; i < inputs.Length; i++) + { + double[] answer = network.Compute(inputs[i]); + + int expected = classes[i]; + int actual; answer.Max(out actual); + + // actual should be equal to expected + } + + + + + + + + + Initializes a new instance of the class. + + + Network to teach. + + + + + Runs learning iteration. + + + Input vector. + Desired output vector. + + Returns squared error (difference between current network's output and + desired output) divided by 2. + + Runs one learning iteration and updates neuron's + weights. + + + + + Runs learning epoch. + + + Array of input vectors. + Array of output vectors. + + Returns summary learning error for the epoch. See + method for details about learning error calculation. + + The method runs one learning epoch, by calling method + for each vector provided in the array. + + + + + Update network weights. + + + + + + Compute network error for a given data set. + + + The input points. + The output points. + + The sum of squared errors for the data. + + + + + Resets the current update steps using the given learning rate. + + + + + + Resets the gradient vector back to zero. + + + + + + Calculates error values for all neurons of the network. + + + Desired output vector. + + Returns summary squared error of the last layer divided by 2. + + + + + Computes the gradient for a given input. + + + Network's input vector. + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the maximum possible update step, + also referred as delta min. Default is 50. + + + + + + Gets or sets the minimum possible update step, + also referred as delta max. Default is 1e-6. + + + + + + Gets the decrease parameter, also + referred as eta minus. Default is 0.5. + + + + + + Gets the increase parameter, also + referred as eta plus. Default is 1.2. + + + + + + Deep Belief Network. + + + + The Deep Belief Network can be seen as a collection of stacked + Restricted Boltzmann + Machines disposed as layers of a network. In turn, the + whole network can be seen as an stochastic activation network + in which the neurons activate within some given probability. + + + + + + Creates a new . + + + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Creates a new . + + + The activation function to be used in the network neurons. + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Creates a new . + + + The number of inputs for the network. + The layers to add to the deep network. + + + + + Computes the network's outputs for a given input. + + + The input vector. + + + Returns the network's output for the given input. + + + + + + Computes the network's outputs for a given input. + + + The input vector. + The index of the layer. + + + Returns the network's output for the given input. + + + + + + Reconstructs a input vector for a given output. + + + The output vector. + + + Returns a probable input vector which may + have originated the given output. + + + + + + Reconstructs a input vector using the output + vector of a given layer. + + + The output vector. + The index of the layer. + + + Returns a probable input vector which may + have originated the given output in the + indicated layer. + + + + + + Samples an output vector from the network + given an input vector. + + + An input vector. + + + A possible output considering the + stochastic activations of the network. + + + + + + Samples an output vector from the network + given an input vector. + + + An input vector. + The index of the layer. + + + A possible output considering the + stochastic activations of the network. + + + + + + Samples an input vector from the network + given an output vector. + + + An output vector. + + + A possible reconstruction considering the + stochastic activations of the network. + + + + + + Inserts a new layer at the end of this network. + + + The number of neurons in the new layer. + + + + + Inserts a new layer at the end of this network. + + + The number of neurons in the new layer. + The activation function which should be used by the neurons. + + + + + Inserts a new layer at the end of this network. + + + The number of neurons in the layer. + The activation function which should be used by the visible neurons. + The activation function which should be used by the hidden neurons. + + + + + Stacks a new Boltzmann Machine at the end of this network. + + + The machine to be added to the network. + + + + + Removes the last layer from the network. + + + + + + Updates the weights of the visible layers by copying + the reverse of the weights in the hidden layers. + + + + + + Creates a Gaussian-Bernoulli network. + + + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Creates a Mixed-Bernoulli network. + + + The to be used in the first visible layer. + The to be used in all other layers. + + The number of inputs for the network. + The number of hidden neurons in each layer. + + + + + Saves the network to a stream. + + + The stream to which the network is to be serialized. + + + + + Saves the network to a stream. + + + The file path to which the network is to be serialized. + + + + + Loads a network from a stream. + + + The network from which the machine is to be deserialized. + + The deserialized network. + + + + + Loads a network from a file. + + + The path to the file from which the network is to be deserialized. + + The deserialized network. + + + + + Gets the number of output neurons in the network + (the size of the computed output vectors). + + + + + + Gets the Restricted Boltzmann Machines + on each layer of this deep network. + + + + + + Restricted Boltzmann Machine. + + + + + // Create some sample inputs and outputs. Note that the + // first four vectors belong to one class, and the other + // four belong to another (you should see that the 1s + // accumulate on the beginning for the first four vectors + // and on the end for the second four). + + double[][] inputs = + { + new double[] { 1,1,1, 0,0,0 }, // class a + new double[] { 1,0,1, 0,0,0 }, // class a + new double[] { 1,1,1, 0,0,0 }, // class a + new double[] { 0,0,1, 1,1,0 }, // class b + new double[] { 0,0,1, 1,0,0 }, // class b + new double[] { 0,0,1, 1,1,0 }, // class b + }; + + double[][] outputs = + { + new double[] { 1, 0 }, // indicates the inputs at this + new double[] { 1, 0 }, // position belongs to class a + new double[] { 1, 0 }, + new double[] { 0, 1 }, // indicates the inputs at this + new double[] { 0, 1 }, // position belongs to class b + new double[] { 0, 1 }, + }; + + // Create a Bernoulli activation function + var function = new BernoulliFunction(alpha: 0.5); + + // Create a Restricted Boltzmann Machine for 6 inputs and with 1 hidden neuron + var rbm = new RestrictedBoltzmannMachine(function, inputsCount: 6, hiddenNeurons: 2); + + // Create the learning algorithm for RBMs + var teacher = new ContrastiveDivergenceLearning(rbm) + { + Momentum = 0, + LearningRate = 0.1, + Decay = 0 + }; + + // learn 5000 iterations + for (int i = 0; i < 5000; i++) + teacher.RunEpoch(inputs); + + // Compute the machine answers for the given inputs: + double[] a = rbm.Compute(new double[] { 1, 1, 1, 0, 0, 0 }); // { 0.99, 0.00 } + double[] b = rbm.Compute(new double[] { 0, 0, 0, 1, 1, 1 }); // { 0.00, 0.99 } + + // As we can see, the first neuron responds to vectors belonging + // to the first class, firing 0.99 when we feed vectors which + // have 1s at the beginning. Likewise, the second neuron fires + // when the vector belongs to the second class. + + // We can also generate input vectors given the classes: + double[] xa = rbm.GenerateInput(new double[] { 1, 0 }); // { 1, 1, 1, 0, 0, 0 } + double[] xb = rbm.GenerateInput(new double[] { 0, 1 }); // { 0, 0, 1, 1, 1, 0 } + + // As we can see, if we feed an output pattern where the first neuron + // is firing and the second isn't, the network generates an example of + // a vector belonging to the first class. The same goes for the second + // neuron and the second class. + + + + + + + + + + Creates a new . + + + The number of inputs for the machine. + The number of hidden neurons in the machine. + + + + + Creates a new . + + + The hidden layer to be added in the machine. + The visible layer to be added in the machine. + + + + + Creates a new . + + + The activation function to use in the network neurons. + The number of inputs for the machine. + The number of hidden neurons in the machine. + + + + + Compute output vector of the network. + + + Input vector. + + + Returns network's output vector. + + + + + + Reconstructs a input vector for a given output. + + + The output vector. + + + Returns a probable input vector which may + have originated the given output. + + + + + + Samples an output vector from the network + given an input vector. + + + An input vector. + + + A possible output considering the + stochastic activations of the network. + + + + + + Samples an input vector from the network + given an output vector. + + + An output vector. + + + A possible reconstruction considering the + stochastic activations of the network. + + + + + + Constructs a Gaussian-Bernoulli network with + visible Gaussian units and hidden Bernoulli units. + + + The number of inputs for the machine. + The number of hidden neurons in the machine. + + A Gaussian-Bernoulli Restricted Boltzmann Machine + + + + + Creates a new from this instance. + + + The number of output neurons in the last layer. + + An containing this network. + + + + + Creates a new from this instance. + + + The number of output neurons in the last layer. + The activation function to use in the last layer. + + An containing this network. + + + + + Updates the weights of the visible layer by copying + the reverse of the weights in the hidden layer. + + + + + + Gets the visible layer of the machine. + + + + + + Gets the hidden layer of the machine. + + + + + + Stochastic Activation Neuron. + + + + The Stochastic Activation Neuron is an activation neuron + which activates (returns 1) only within a given probability. + The neuron has a random component in the activation function, + and the neuron fires only if the total sum, after applied + to a logistic activation function, is greater than a randomly + sampled value. + + + + + + Initializes a new instance of the class. + + + Number of inputs for the neuron. + Activation function for the neuron. + + + + + Computes output value of neuron. + + + An input vector. + + Returns the neuron's output value for the given input. + + + + + Samples the neuron output considering + the stochastic activation function. + + + An input vector. + + A possible output for the neuron drawn + from the neuron's stochastic function. + + + + + Samples the neuron output considering + the stochastic activation function. + + + The (previously computed) neuron output. + + A possible output for the neuron drawn + from the neuron's stochastic function. + + + + + Gets the neuron sample value generated in the last + call of any of the methods. + + + + + + Gets or sets the stochastic activation + function for this stochastic neuron. + + + + + + Nguyen-Widrow weight initialization. + + + + The Nguyen-Widrow initialization algorithm chooses values in + order to distribute the active region of each neuron in the layer + approximately evenly across the layers' input space. + + The values contain a degree of randomness, so they are not the + same each time this function is called. + + + + + + Constructs a new Nguyen-Widrow Weight initialization. + + + The activation network whose weights will be initialized. + + + + + Randomizes (initializes) the weights of + the network using Nguyen-Widrow method's. + + + + + + Randomizes (initializes) the weights of + the network using a Gaussian distribution. + + + + + + Activation-Maximization method for visualizing neuron's roles. + + + + + + Initializes a new instance of the class. + + + The neuron to be visualized. + + + + + Finds the value which maximizes + the activation of this neuron. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/Accord.Statistics.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/Accord.Statistics.3.0.2.nupkg new file mode 100644 index 0000000000..caf37b9d3 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/Accord.Statistics.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net35/Accord.Statistics.dll b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net35/Accord.Statistics.dll new file mode 100644 index 0000000000..0d585c57b Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net35/Accord.Statistics.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net35/Accord.Statistics.xml b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net35/Accord.Statistics.xml new file mode 100644 index 0000000000..af894a162 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net35/Accord.Statistics.xml @@ -0,0 +1,58731 @@ + + + + Accord.Statistics + + + + + Contains many statistical analysis, such as PCA, + LDA, + KPCA, KDA, + PLS, ICA, + Logistic Regression and Stepwise Logistic Regression + Analyses. Also contains performance assessment analysis such as + contingency tables and ROC curves. + + + + The namespace class diagram is shown below. + + + + + + + + + Common interface for information components. Those are + present in multivariate analysis, such as + and . + + + + + + Gets the index for this component. + + + + + + Gets the proportion, or amount of information explained by this component. + + + + + + Gets the cumulative proportion of all discriminants until this component. + + + + + + Determines the method to be used in a statistical analysis. + + + + + + By choosing Center, the method will be run on the mean-centered data. + + + + In Principal Component Analysis this means the method will operate + on the Covariance matrix of the given data. + + + + + + By choosing Standardize, the method will be run on the mean-centered and + standardized data. + + + + In Principal Component Analysis this means the method + will operate on the Correlation matrix of the given data. One should always + choose to standardize when dealing with different units of variables. + + + + + + Common interface for statistical analysis. + + + + + + Computes the analysis using given source data and parameters. + + + + + + Common interface for descriptive measures, such as + and + . + + + + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets the variable's index. + + + + + + Gets the variable's name + + + + + + Gets the variable's total sum. + + + + + + Gets the variable's mean. + + + + + + Gets the variable's standard deviation. + + + + + + Gets the variable's median. + + + + + + Gets the variable's outer fences range. + + + + + + Gets the variable's inner fence range. + + + + + + Gets the variable's interquartile range. + + + + + + Gets the variable's mode. + + + + + + Gets the variable's variance. + + + + + + Gets the variable's skewness. + + + + + + Gets the variable's kurtosis. + + + + + + Gets the variable's standard error of the mean. + + + + + + Gets the variable's maximum value. + + + + + + Gets the variable's minimum value. + + + + + + Gets the variable's length. + + + + + + Gets the number of distinct values for the variable. + + + + + + Gets the number of samples for the variable. + + + + + + Gets the 95% confidence interval around the . + + + + + + Gets the 95% deviance interval around the . + + + + + + Gets the variable's observations. + + + + + + Common interface for projective statistical analysis. + + + + + + Common interface for multivariate statistical analysis. + + + + + + Source data used in the analysis. + + + + + + Projects new data into latent space. + + + + + + Projects new data into latent space with + given number of dimensions. + + + + + + Common interface for multivariate regression analysis. + + + + + Regression analysis attempt to express many numerical dependent + variables as a combinations of other features or measurements. + + + + + + Gets the dependent variables' values + for each of the source input points. + + + + + + Common interface for regression analysis. + + + + + Regression analysis attempt to express one numerical dependent variable + as a combinations of other features or measurements. + + When the dependent variable is a category label, the class of analysis methods + is known as discriminant analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Common interface for discriminant analysis. + + + + + Discriminant analysis attempt to express one categorical dependent variable + as a combinations of other features or measurements. + + When the dependent variable is a numerical quantity, the class of analysis methods + is known as regression analysis. + + + + + + Gets the classification labels (the dependent variable) + for each of the source input points. + + + + + + Exponential contrast function. + + + + According to Hyvärinen, the Exponential contrast function may be + used when the independent components are highly super-Gaussian or + when robustness is very important. + + + + + + + + Common interface for contrast functions. + + + + Contrast functions are used as objective functions in + neg-entropy calculations. + + + + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Initializes a new instance of the class. + + The exponential alpha constant. Default is 1. + + + + + Initializes a new instance of the class. + + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Gets the exponential alpha constant. + + + + + + Kurtosis contrast function. + + + According to using to Hyvärinen, the kurtosis contrast function is + justified on statistical grounds only for estimating sub-Gaussian + independent components when there are no outliers. + + + + + + + + Initializes a new instance of the class. + + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Log-cosh (Hyperbolic Tangent) contrast function. + + + + According to Hyvärinen, the Logcosh contrast function + is a good general-purpose contrast function. + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The log-cosh alpha constant. Default is 1. + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Gets the exponential log-cosh constant. + + + + + + Descriptive statistics analysis for circular data. + + + + + + + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + The names for the analyzed variable. + + Whether the analysis should conserve memory by doing + operations over the original array. + + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + + Whether the analysis should conserve memory by doing + operations over the original array. + + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + Names for the analyzed variables. + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + Names for the analyzed variables. + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets or sets whether all reported statistics should respect the circular + interval. For example, setting this property to false would allow + the , , + and properties report minimum and maximum values + outside the variable's allowed circular range. Default is true. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the column names from the variables in the data. + + + + + + Gets a vector containing the length of + the circular domain for each data column. + + + + + + Gets a vector containing the Mean of each data column. + + + + + + Gets a vector containing the Mode of each data column. + + + + + + Gets a vector containing the Standard Deviation of each data column. + + + + + + Gets a vector containing the Standard Error of the Mean of each data column. + + + + + + Gets the 95% confidence intervals for the . + + + + + + Gets the 95% deviance intervals for the . + + + + A deviance interval uses the standard deviation rather + than the standard error to compute the range interval + for a variable. + + + + + + Gets a vector containing the Median of each data column. + + + + + + Gets a vector containing the Variance of each data column. + + + + + + Gets a vector containing the number of distinct elements for each data column. + + + + + + Gets an array containing the Ranges of each data column. + + + + + + Gets an array containing the interquartile range of each data column. + + + + + + Gets an array containing the inner fences of each data column. + + + + + + Gets an array containing the outer fences of each data column. + + + + + + Gets an array containing the sum of each data column. If + the analysis has been computed in place, this will contain + the sum of the transformed angle values instead. + + + + + + Gets an array containing the sum of cosines for each data column. + + + + + + Gets an array containing the sum of sines for each data column. + + + + + + Gets an array containing the circular concentration for each data column. + + + + + + Gets an array containing the skewness for of each data column. + + + + + + Gets an array containing the kurtosis for of each data column. + + + + + + Gets the number of samples (or observations) in the data. + + + + + + Gets the number of variables (or features) in the data. + + + + + + Gets a collection of DescriptiveMeasures objects that can be bound to a DataGridView. + + + + + + Circular descriptive measures for a variable. + + + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets the circular analysis + that originated this measure. + + + + + + Gets the variable's index. + + + + + + Gets the variable's name + + + + + + Gets the variable's total sum. + + + + + + Gets the variable's mean. + + + + + + Gets the variable's standard deviation. + + + + + + Gets the variable's median. + + + + + + Gets the variable's mode. + + + + + + Gets the variable's outer fences range. + + + + + + Gets the variable's inner fence range. + + + + + + Gets the variable's interquartile range. + + + + + + Gets the variable's variance. + + + + + + Gets the variable's maximum value. + + + + + + Gets the variable's minimum value. + + + + + + Gets the variable's length. + + + + + + Gets the number of distinct values for the variable. + + + + + + Gets the number of samples for the variable. + + + + + + Gets the sum of cosines for the variable. + + + + + + Gets the sum of sines for the variable. + + + + + + Gets the transformed variable's observations. + + + + + + Gets the variable's standard error of the mean. + + + + + + Gets the 95% confidence interval around the . + + + + + + Gets the 95% deviance interval around the . + + + + + + Gets the variable's observations. + + + + + + Gets the variable skewness. + + + + + + Gets the variable kurtosis. + + + + + + Collection of descriptive measures. + + + + + + + + + Gets the key for item. + + + + + + Distribution fitness analysis. + + + + + + Initializes a new instance of the class. + + + The observations to be fitted against candidate distributions. + + + + + Computes the analysis. + + + + + + Gets all univariate distributions (types implementing + ) loaded in the + current domain. + + + + + + Gets all multivariate distributions (types implementing + ) loaded in the + current domain. + + + + + + Gets a distribution's name in a human-readable form. + + + The distribution whose name must be obtained. + + + + + Gets the tested distribution names. + + + + The distribution names. + + + + + + Gets the estimated distributions. + + + + The estimated distributions. + + + + + + Gets the Kolmogorov-Smirnov tests + performed against each of the candidate distributions. + + + + + + Gets the Chi-Square tests + performed against each of the candidate distributions. + + + + + + Gets the Anderson-Darling tests + performed against each of the candidate distributions. + + + + + + Gets the rank of each distribution according to the Kolmogorov-Smirnov + test statistic. A value of 0 means the distribution is the most likely. + + + + + + Gets the rank of each distribution according to the Chi-Square + test statistic. A value of 0 means the distribution is the most likely. + + + + + + Gets the rank of each distribution according to the Anderson-Darling + test statistic. A value of 0 means the distribution is the most likely. + + + + + + Gets the goodness of fit for each candidate distribution. + + + + + + Goodness-of-fit result for a given distribution. + + + + + + Compares the current object with another object of the same type. + + + An object to compare with this object. + + + A value that indicates the relative order of the objects being compared. The return value + has the following meanings: Value Meaning Less than zero This object is less than the + parameter.Zero This object is equal to . + Greater than zero This object is greater than . + + + + + + Compares the current instance with another object of the same type and returns an + integer that indicates whether the current instance precedes, follows, or occurs in + the same position in the sort order as the other object. + + + An object to compare with this instance. + + + A value that indicates the relative order of the objects being compared. The return + value has these meanings: Value Meaning Less than zero This instance precedes + in the sort order. Zero This instance occurs in the same position in the sort order as + . Greater than zero This instance follows + in the sort order. + + + + + + Gets the analysis that has produced this measure. + + + + + + Gets the variable's index. + + + + + + Gets the distribution name + + + + + + Gets the measured distribution. + + + + The distribution associated with this good-of-fit measure. + + + + + + Gets the value of the Kolmogorov-Smirnov statistic. + + + + The Kolmogorov-Smirnov for the . + + + + + + Gets the rank of this distribution according to the + Kolmogorov-Smirnov test. + + + + An integer value where 0 indicates most probable. + + + + + + Gets the value of the Chi-Square statistic. + + + + The Chi-Square for the . + + + + + + Gets the rank of this distribution according to the + Chi-Square test. + + + + An integer value where 0 indicates most probable. + + + + + + Gets the value of the Anderson-Darling statistic. + + + + The Anderson-Darling for the . + + + + + + Gets the rank of this distribution according to the + Anderson-Darling test. + + + + An integer value where 0 indicates most probable. + + + + + + Collection of goodness-of-fit measures. + + + + + + + + Gets the key for item. + + + + + + Multinomial Logistic Regression Analysis + + + + + In statistics, multinomial logistic regression is a classification method that + generalizes logistic regression to multiclass problems, i.e. with more than two + possible discrete outcomes.[1] That is, it is a model that is used to predict the + probabilities of the different possible outcomes of a categorically distributed + dependent variable, given a set of independent variables (which may be real-valued, + binary-valued, categorical-valued, etc.). + + + Multinomial logistic regression is known by a variety of other names, including + multiclass LR, multinomial regression,[2] softmax regression, multinomial logit, + maximum entropy (MaxEnt) classifier, conditional maximum entropy model.para> + + + References: + + + Wikipedia contributors. "Multinomial logistic regression." Wikipedia, The Free Encyclopedia, 1st April, 2015. + Available at: https://en.wikipedia.org/wiki/Multinomial_logistic_regression + + + + // TODO: Write example + + + + + Constructs a Multinomial Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Multinomial Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The names of the input variables. + The names of the output variables. + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The names of the input variables. + The names of the output variables. + + + + + Computes the Multiple Linear Regression Analysis. + + + + + + Source data used in the analysis. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting values obtained by the regression model. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Gets the number of outputs in the regression problem. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Regression model created + and evaluated by this analysis. + + + + + + Gets the value of each coefficient. + + + + + + Gets the Log-Likelihood for the model. + + + + + + Gets the Chi-Square (Likelihood Ratio) Test for the model. + + + + + + Gets the Deviance of the model. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Gets the collection of coefficients of the model. + + + + + + + Represents a Multinomial Logistic Regression coefficient found in the + multinomial logistic + regression analysis allowing it to be bound to controls like the + DataGridView. + + + This class cannot be instantiated. + + + + + + Creates a regression coefficient representation. + + + The analysis to which this coefficient belongs. + The coefficient's index. + The coefficient's category. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the Index of this coefficient on the original analysis coefficient collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the name of the category that this coefficient belongs to. + + + + + + Gets the name for the current coefficient. + + + + + + Gets the coefficient value. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the confidence interval. + + + + + + Gets the lower limit for the confidence interval. + + + + + + Represents a Collection of Multinomial Logistic Regression Coefficients found in the + . This class cannot be instantiated. + + + + + + Weighted confusion matrix for multi-class decision problems. + + + + + References: + + + + R. G. Congalton. A Review of Assessing the Accuracy of Classifications + of Remotely Sensed Data. Available on: http://uwf.edu/zhu/evr6930/2.pdf + + + G. Banko. A Review of Assessing the Accuracy of Classifications of Remotely Sensed Data and + of Methods Including Remote Sensing Data in Forest Inventory. Interim report. Available on: + http://www.iiasa.ac.at/Admin/PUB/Documents/IR-98-081.pdf + + + + + + + General confusion matrix for multi-class decision problems. + + + + + References: + + + + R. G. Congalton. A Review of Assessing the Accuracy of Classifications + of Remotely Sensed Data. Available on: http://uwf.edu/zhu/evr6930/2.pdf + + + G. Banko. A Review of Assessing the Accuracy of Classifications of Remotely Sensed Data and + of Methods Including Remote Sensing Data in Forest Inventory. Interim report. Available on: + http://www.iiasa.ac.at/Admin/PUB/Documents/IR-98-081.pdf + + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Combines several confusion matrices into one single matrix. + + + The matrices to combine. + + + + + Gets the confusion matrix, in which each element e_ij + represents the number of elements from class i classified + as belonging to class j. + + + + + + Gets the number of samples. + + + + + + Gets the number of classes. + + + + + + Gets the row totals. + + + + + + Gets the column totals. + + + + + + Gets the row marginals (proportions). + + + + + + Gets the column marginals (proportions). + + + + + + Gets the diagonal of the confusion matrix. + + + + + + Gets the maximum number of correct + matches (the maximum over the diagonal) + + + + + + Gets the minimum number of correct + matches (the minimum over the diagonal) + + + + + + Gets the confusion matrix in + terms of cell percentages. + + + + + + Gets the Kappa coefficient of performance. + + + + + + Gets the standard error of the + coefficient of performance. + + + + + + Gets the variance of the + coefficient of performance. + + + + + + Gets the variance of the + under the null hypothesis that the underlying + Kappa value is 0. + + + + + + Gets the standard error of the + under the null hypothesis that the underlying Kappa + value is 0. + + + + + + Gets the Tau coefficient of performance. + + + + + Tau-b statistic, unlike tau-a, makes adjustments for ties and + is suitable for square tables. Values of tau-b range from −1 + (100% negative association, or perfect inversion) to +1 (100% + positive association, or perfect agreement). A value of zero + indicates the absence of association. + + + References: + + + http://en.wikipedia.org/wiki/Kendall_tau_rank_correlation_coefficient + + LEVADA, Alexandre Luis Magalhães. Combinação de modelos de campos aleatórios markovianos + para classificação contextual de imagens multiespectrais [online]. São Carlos : Instituto + de Física de São Carlos, Universidade de São Paulo, 2010. Tese de Doutorado em Física Aplicada. + Disponível em: http://www.teses.usp.br/teses/disponiveis/76/76132/tde-11052010-165642/. + + MA, Z.; REDMOND, R. L. Tau coefficients for accuracy assessment of + classification of remote sensing data. + + + + + + + Phi coefficient. + + + + + The Pearson correlation coefficient (phi) ranges from −1 to +1, where + a value of +1 indicates perfect agreement, a value of -1 indicates perfect + disagreement and a value 0 indicates no agreement or relationship. + + References: + http://en.wikipedia.org/wiki/Phi_coefficient, + http://www.psychstat.missouristate.edu/introbook/sbk28m.htm + + + + + + Gets the Chi-Square statistic for the contingency table. + + + + + + Tschuprow's T association measure. + + + + + Tschuprow's T is a measure of association between two nominal variables, giving + a value between 0 and 1 (inclusive). It is closely related to + Cramér's V, coinciding with it for square contingency tables. + + References: + http://en.wikipedia.org/wiki/Tschuprow's_T + + + + + + Pearson's contingency coefficient C. + + + + + Pearson's C measures the degree of association between the two variables. However, + C suffers from the disadvantage that it does not reach a maximum of 1 or the minimum + of -1; the highest it can reach in a 2 x 2 table is .707; the maximum it can reach in + a 4 × 4 table is 0.870. It can reach values closer to 1 in contingency tables with more + categories. It should, therefore, not be used to compare associations among tables with + different numbers of categories. For a improved version of C, see . + + + References: + http://en.wikipedia.org/wiki/Contingency_table + + + + + + Sakoda's contingency coefficient V. + + + + + Sakoda's V is an adjusted version of Pearson's C + so it reaches a maximum of 1 when there is complete association in a table + of any number of rows and columns. + + References: + http://en.wikipedia.org/wiki/Contingency_table + + + + + + Cramer's V association measure. + + + + + Cramér's V varies from 0 (corresponding to no association between the variables) + to 1 (complete association) and can reach 1 only when the two variables are equal + to each other. In practice, a value of 0.1 already provides a good indication that + there is substantive relationship between the two variables. + + + References: + http://en.wikipedia.org/wiki/Cram%C3%A9r%27s_V, + http://www.acastat.com/Statbook/chisqassoc.htm + + + + + + Overall agreement. + + + + The overall agreement is the sum of the diagonal elements + of the contingency table divided by the number of samples. + + + + + + Geometric agreement. + + + + The geometric agreement is the geometric mean of the + diagonal elements of the confusion matrix. + + + + + + Chance agreement. + + + + The chance agreement tells how many samples + were correctly classified by chance alone. + + + + + + Expected values, or values that could + have been generated just by chance. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Weighted Confusion Matrix with linear weighting. + + + + + + Creates a new Weighted Confusion Matrix with linear weighting. + + + + + + Gets the Weights matrix. + + + + + + Gets the row marginals (proportions). + + + + + + Gets the column marginals (proportions). + + + + + + Gets the Kappa coefficient of performance. + + + + + + Gets the standard error of the + coefficient of performance. + + + + + + Gets the variance of the + coefficient of performance. + + + + + + Gets the variance of the + under the null hypothesis that the underlying + Kappa value is 0. + + + + + + Gets the standard error of the + under the null hypothesis that the underlying Kappa + value is 0. + + + + + + Overall agreement. + + + + + + Chance agreement. + + + + The chance agreement tells how many samples + were correctly classified by chance alone. + + + + + + Cox's Proportional Hazards Survival Analysis. + + + + + Proportional hazards models are a class of survival models in statistics. Survival models + relate the time that passes before some event occurs to one or more covariates that may be + associated with that quantity. In a proportional hazards model, the unique effect of a unit + increase in a covariate is multiplicative with respect to the hazard rate. + + + For example, taking a drug may halve one's hazard rate for a stroke occurring, or, changing + the material from which a manufactured component is constructed may double its hazard rate + for failure. Other types of survival models such as accelerated failure time models do not + exhibit proportional hazards. These models could describe a situation such as a drug that + reduces a subject's immediate risk of having a stroke, but where there is no reduction in + the hazard rate after one year for subjects who do not have a stroke in the first year of + analysis. + + + This class uses the to extract more detailed + information about a given problem, such as confidence intervals, hypothesis tests + and performance measures. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + + + // Consider the following example data, adapted from John C. Pezzullo's + // example for his great Cox's proportional hazards model example in + // JavaScript (http://www.sph.emory.edu/~cdckms/CoxPH/prophaz2.html). + + // In this data, we have three columns. The first column denotes the + // input variables for the problem. The second column, the survival + // times. And the last one is the output of the experiment (if the + // subject has died [1] or has survived [0]). + + double[,] example = + { + // input time censor + { 50, 1, 0 }, + { 70, 2, 1 }, + { 45, 3, 0 }, + { 35, 5, 0 }, + { 62, 7, 1 }, + { 50, 11, 0 }, + { 45, 4, 0 }, + { 57, 6, 0 }, + { 32, 8, 0 }, + { 57, 9, 1 }, + { 60, 10, 1 }, + }; + + // First we will extract the input, times and outputs + double[,] inputs = example.GetColumns(0); + double[] times = example.GetColumn(1); + int[] output = example.GetColumn(2).ToInt32(); + + // Now we can proceed and create the analysis + var cox = new ProportionalHazardsAnalysis(inputs, times, output); + + cox.Compute(); // compute the analysis + + // Now we can show an analysis summary + DataGridBox.Show(cox.Coefficients); + + + + The resulting table is shown below. + + + + // We can also investigate all parameters individually. For + // example the coefficients values will be available at + + double[] coef = cox.CoefficientValues; + double[] stde = cox.StandardErrors; + + // We can also obtain the hazards ratios + double[] ratios = cox.HazardRatios; + + // And other information such as the partial + // likelihood, the deviance and also make + // hypothesis tests on the parameters + + double partial = cox.LogLikelihood; + double deviance = cox.Deviance; + + // Chi-Square for whole model + ChiSquareTest chi = cox.ChiSquare; + + // Wald tests for individual parameters + WaldTest wald = cox.Coefficients[0].Wald; + + + // Finally, we can also use the model to predict + // scores for new observations (without considering time) + + double y1 = cox.Regression.Compute(new double[] { 63 }); + double y2 = cox.Regression.Compute(new double[] { 32 }); + + // Those scores can be interpreted by comparing then + // to 1. If they are greater than one, the odds are + // the patient will not survive. If the value is less + // than one, the patient is likely to survive. + + // The first value, y1, gives approximately 86.138, + // while the second value, y2, gives about 0.00072. + + + // We can also consider instant estimates for a given time: + double p1 = cox.Regression.Compute(new double[] { 63 }, 2); + double p2 = cox.Regression.Compute(new double[] { 63 }, 10); + + // Here, p1 is the score after 2 time instants, with a + // value of 0.0656. The second value, p2, is the time + // after 10 time instants, with a value of 6.2907. + + + + + + + Constructs a new Cox's Proportional Hazards Analysis. + + + The input data for the analysis. + The output data for the analysis. + The right-censoring indicative values. + + + + + Constructs a new Cox's Proportional Hazards Analysis. + + + The input data for the analysis. + The output data for the analysis. + The right-censoring indicative values. + + + + + Constructs a new Cox's Proportional Hazards Analysis. + + + The input data for the analysis. + The output, binary data for the analysis. + The right-censoring indicative values. + The names of the input variables. + The name of the time variable. + The name of the event indication variable. + + + + + Gets the Log-Likelihood Ratio between this model and another model. + + + Another proportional hazards model. + + The Likelihood-Ratio between the two models. + + + + + Computes the Proportional Hazards Analysis for an already computed regression. + + + + + + Computes the Proportional Hazards Analysis. + + + + True if the model converged, false otherwise. + + + + + + Computes the Proportional Hazards Analysis. + + + + The difference between two iterations of the regression algorithm + when the algorithm should stop. If not specified, the value of + 1e-4 will be used. The difference is calculated based on the largest + absolute parameter change of the regression. + + + + The maximum number of iterations to be performed by the regression + algorithm. + + + + True if the model converged, false otherwise. + + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Source data used in the analysis. + + + + + + Gets the time passed until the event + occurred or until the observation was + censored. + + + + + + Gets whether the event of + interest happened or not. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting probabilities obtained + by the logistic regression model. + + + + + + Gets the Proportional Hazards model created + and evaluated by this analysis. + + + + + + Gets the collection of coefficients of the model. + + + + + + Gets the Log-Likelihood for the model. + + + + + + Gets the Chi-Square (Likelihood Ratio) Test for the model. + + + + + + Gets the Deviance of the model. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the name of event occurrence variable in the model. + + + + + + Gets the Hazard Ratio for each coefficient + found during the proportional hazards. + + + + + + Gets the Standard Error for each coefficient + found during the proportional hazards. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the Likelihood-Ratio Tests for each coefficient. + + + + + + Gets the value of each coefficient. + + + + + + Gets the 95% Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Represents a Proportional Hazards Coefficient found in the Cox's Hazards model, + allowing it to be bound to controls like the DataGridView. This class cannot + be instantiated outside the . + + + + + + Gets the name for the current coefficient. + + + + + + Gets the Odds ratio for the current coefficient. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the 95% confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the 95% confidence interval. + + + + + + Gets the lower limit for the 95% confidence interval. + + + + + + Gets the coefficient value. + + + + + + Gets the Wald's test performed for this coefficient. + + + + + + Gets the Likelihood-Ratio test performed for this coefficient. + + + + + + Represents a collection of Hazard Coefficients found in the + . This class cannot be instantiated. + + + + + + Multiple Linear Regression Analysis + + + + + Linear regression is an approach to model the relationship between + a single scalar dependent variable y and one or more explanatory + variables x. This class uses a + to extract information about a given problem, such as confidence intervals, + hypothesis tests and performance measures. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + Wikipedia contributors. "Linear regression." Wikipedia, The Free Encyclopedia, 4 Nov. 2012. + Available at: http://en.wikipedia.org/wiki/Linear_regression + + + + + + // Consider the following data. An experimenter would + // like to infer a relationship between two variables + // A and B and a corresponding outcome variable R. + + double[][] example = + { + // A B R + new double[] { 6.41, 10.11, 26.1 }, + new double[] { 6.61, 22.61, 33.8 }, + new double[] { 8.45, 11.11, 52.7 }, + new double[] { 1.22, 18.11, 16.2 }, + new double[] { 7.42, 12.81, 87.3 }, + new double[] { 4.42, 10.21, 12.5 }, + new double[] { 8.61, 11.94, 77.5 }, + new double[] { 1.73, 13.13, 12.1 }, + new double[] { 7.47, 17.11, 86.5 }, + new double[] { 6.11, 15.13, 62.8 }, + new double[] { 1.42, 16.11, 17.5 }, + }; + + // For this, we first extract the input and output + // pairs. The first two columns have values for the + // input variables, and the last for the output: + + double[][] inputs = example.GetColumns(0, 1); + double[] output = example.GetColumn(2); + + // Next, we can create a new multiple linear regression for the variables + var regression = new MultipleLinearRegressionAnalysis(inputs, output, intercept: true); + + regression.Compute(); // compute the analysis + + // Now we can show a summary of analysis + DataGridBox.Show(regression.Coefficients); + + + + + + // We can also show a summary ANOVA + DataGridBox.Show(regression.Table); + + + + + + // And also extract other useful information, such + // as the linear coefficients' values and std errors: + double[] coef = regression.CoefficientValues; + double[] stde = regression.StandardErrors; + + // Coefficients of performance, such as r² + double rsquared = regression.RSquared; + + // Hypothesis tests for the whole model + ZTest ztest = regression.ZTest; + FTest ftest = regression.FTest; + + // and for individual coefficients + TTest ttest0 = regression.Coefficients[0].TTest; + TTest ttest1 = regression.Coefficients[1].TTest; + + // and also extract confidence intervals + DoubleRange ci = regression.Coefficients[0].Confidence; + + + + + + + Common interface for analyses of variance. + + + + + + + + + Gets the ANOVA results in the form of a table. + + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + True to use an intercept term, false otherwise. Default is false. + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + True to use an intercept term, false otherwise. Default is false. + The names of the input variables. + The name of the output variable. + + + + + Computes the Multiple Linear Regression Analysis. + + + + + + Source data used in the analysis. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting values obtained + by the linear regression model. + + + + + + Gets the standard deviation of the errors. + + + + + + Gets the coefficient of determination, as known as R² + + + + + + Gets the adjusted coefficient of determination, as known as R² adjusted + + + + + + Gets a F-Test between the expected outputs and results. + + + + + + Gets a Z-Test between the expected outputs and the results. + + + + + + Gets a Chi-Square Test between the expected outputs and the results. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Regression model created + and evaluated by this analysis. + + + + + + Gets the value of each coefficient. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Gets the ANOVA table for the analysis. + + + + + + Gets the collection of coefficients of the model. + + + + + + + Represents a Linear Regression coefficient found in the Multiple + Linear Regression Analysis allowing it to be bound to controls like + the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a regression coefficient representation. + + + The analysis to which this coefficient belongs. + The coefficient index. + + + + + Gets the Index of this coefficient on the original analysis coefficient collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the name for the current coefficient. + + + + + + Gets a value indicating whether this coefficient is an intercept term. + + + + true if this coefficient is the intercept; otherwise, false. + + + + + + Gets the coefficient value. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the T-test performed for this coefficient. + + + + + + Gets the F-test performed for this coefficient. + + + + + + Gets the confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the confidence interval. + + + + + + Gets the lower limit for the confidence interval. + + + + + + Represents a Collection of Linear Regression Coefficients found in the + . This class cannot be instantiated. + + + + + + Gets or sets the size of the confidence + intervals reported for the coefficients. + Default is 0.95. + + + + + + Binary decision confusion matrix. + + + + + // The correct and expected output values (as confirmed by a Gold + // standard rule, actual experiment or true verification) + int[] expected = { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 }; + + // The values as predicted by the decision system or + // the test whose performance is being measured. + int[] predicted = { 0, 0, 0, 1, 1, 0, 0, 0, 0, 1 }; + + + // In this test, 1 means positive, 0 means negative + int positiveValue = 1; + int negativeValue = 0; + + // Create a new confusion matrix using the given parameters + ConfusionMatrix matrix = new ConfusionMatrix(predicted, expected, + positiveValue, negativeValue); + + // At this point, + // True Positives should be equal to 1; + // True Negatives should be equal to 6; + // False Negatives should be equal to 1; + // False Positives should be equal to 2. + + + + + + + Constructs a new Confusion Matrix. + + + + + + Constructs a new Confusion Matrix. + + + + + + Constructs a new Confusion Matrix. + + + The values predicted by the model. + The actual, truth values from the data. + + + + + Constructs a new Confusion Matrix. + + + The values predicted by the model. + The actual, truth values from the data. + The integer label which identifies a value as positive. + + + + + Constructs a new Confusion Matrix. + + + The values predicted by the model. + The actual, truth values from the data. + The integer label which identifies a value as positive. + The integer label which identifies a value as negative. + + + + + Returns a representing this confusion matrix. + + + + A representing this confusion matrix. + + + + + + Converts this matrix into a . + + + + A with the same contents as this matrix. + + + + + + Combines several confusion matrices into one single matrix. + + + The matrices to combine. + + + + + Gets the confusion matrix in count matrix form. + + + + The table is listed as true positives, false negatives + on its first row, false positives and true negatives in + its second row. + + + + + + Gets the marginal sums for table rows. + + + + Returns a vector with the sum of true positives and + false negatives on its first position, and the sum + of false positives and true negatives on the second. + + + + + + Gets the marginal sums for table columns. + + + + Returns a vector with the sum of true positives and + false positives on its first position, and the sum + of false negatives and true negatives on the second. + + + + + + Gets the number of observations for this matrix + + + + + + Gets the number of actual positives. + + + + The number of positives cases can be computed by + taking the sum of true positives and false negatives. + + + + + + Gets the number of actual negatives + + + + The number of negatives cases can be computed by + taking the sum of true negatives and false positives. + + + + + + Gets the number of predicted positives. + + + + The number of cases predicted as positive by the + test. This value can be computed by adding the + true positives and false positives. + + + + + + Gets the number of predicted negatives. + + + + The number of cases predicted as negative by the + test. This value can be computed by adding the + true negatives and false negatives. + + + + + + Cases correctly identified by the system as positives. + + + + + + Cases correctly identified by the system as negatives. + + + + + + Cases incorrectly identified by the system as positives. + + + + + + Cases incorrectly identified by the system as negatives. + + + + + + Sensitivity, also known as True Positive Rate + + + + The Sensitivity is calculated as TPR = TP / (TP + FN). + + + + + + Specificity, also known as True Negative Rate + + + + The Specificity is calculated as TNR = TN / (FP + TN). + It can also be calculated as: TNR = (1-False Positive Rate). + + + + + + Efficiency, the arithmetic mean of sensitivity and specificity + + + + + + Accuracy, or raw performance of the system + + + + The Accuracy is calculated as + ACC = (TP + TN) / (P + N). + + + + + + Prevalence of outcome occurrence. + + + + + + Positive Predictive Value, also known as Positive Precision + + + + + The Positive Predictive Value tells us how likely is + that a patient has a disease, given that the test for + this disease is positive. + + The Positive Predictive Rate is calculated as + PPV = TP / (TP + FP). + + + + + + Negative Predictive Value, also known as Negative Precision + + + + + The Negative Predictive Value tells us how likely it is + that the disease is NOT present for a patient, given that + the patient's test for the disease is negative. + + The Negative Predictive Value is calculated as + NPV = TN / (TN + FN). + + + + + + False Positive Rate, also known as false alarm rate. + + + + + The rate of false alarms in a test. + + The False Positive Rate can be calculated as + FPR = FP / (FP + TN) or FPR = (1-specificity). + + + + + + + False Discovery Rate, or the expected false positive rate. + + + + + The False Discovery Rate is actually the expected false positive rate. + + For example, if 1000 observations were experimentally predicted to + be different, and a maximum FDR for these observations was 0.10, then + 100 of these observations would be expected to be false positives. + + The False Discovery Rate is calculated as + FDR = FP / (FP + TP). + + + + + + Matthews Correlation Coefficient, also known as Phi coefficient + + + + A coefficient of +1 represents a perfect prediction, 0 an + average random prediction and −1 an inverse prediction. + + + + + + Odds-ratio. + + + + References: http://www.iph.ufrgs.br/corpodocente/marques/cd/rd/presabs.htm + + + + + + Kappa coefficient. + + + + References: http://www.iph.ufrgs.br/corpodocente/marques/cd/rd/presabs.htm + + + + + + Gets the standard error of the + coefficient of performance. + + + + + + Gets the variance of the + coefficient of performance. + + + + + + Gets the variance of the + under the null hypothesis that the underlying + Kappa value is 0. + + + + + + Gets the standard error of the + under the null hypothesis that the underlying Kappa + value is 0. + + + + + + Diagnostic power. + + + + + + Normalized Mutual Information. + + + + + + Precision, same as the . + + + + + + Recall, same as the . + + + + + + F-Score, computed as the harmonic mean of + and . + + + + + + Expected values, or values that could + have been generated just by chance. + + + + + + Gets the Chi-Square statistic for the contingency table. + + + + + + Descriptive statistics analysis. + + + + + Descriptive statistics are used to describe the basic features of the data + in a study. They provide simple summaries about the sample and the measures. + Together with simple graphics analysis, they form the basis of virtually + every quantitative analysis of data. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + Wikipedia, The Free Encyclopedia. Descriptive Statistics. Available on: + http://en.wikipedia.org/wiki/Descriptive_statistics + + + + + + // Suppose we would like to compute descriptive + // statistics from the following data samples: + double[,] data = + { + { 1, 52, 5 }, + { 2, 12, 5 }, + { 1, 65, 5 }, + { 1, 25, 5 }, + { 2, 62, 5 }, + }; + + // Create the analysis + DescriptiveAnalysis analysis = new DescriptiveAnalysis(data); + + // Compute + analysis.Compute(); + + // Retrieve interest measures + double[] means = analysis.Means; // { 1.4, 43.2, 5.0 } + double[] modes = analysis.Modes; // { 1.0, 52.0, 5.0 } + + + + + + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + Names for the analyzed variables. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + Names for the analyzed variables. + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the column names from the variables in the data. + + + + + + Gets the mean subtracted data. + + + + + + Gets the mean subtracted and deviation divided data. Also known as Z-Scores. + + + + + + Gets the Covariance Matrix + + + + + + Gets the Correlation Matrix + + + + + + Gets a vector containing the Mean of each data column. + + + + + + Gets a vector containing the Standard Deviation of each data column. + + + + + + Gets a vector containing the Standard Error of the Mean of each data column. + + + + + + Gets the 95% confidence intervals for the . + + + + + + Gets the 95% deviance intervals for the . + + + + A deviance interval uses the standard deviation rather + than the standard error to compute the range interval + for a variable. + + + + + + Gets a vector containing the Mode of each data column. + + + + + + Gets a vector containing the Median of each data column. + + + + + + Gets a vector containing the Variance of each data column. + + + + + + Gets a vector containing the number of distinct elements for each data column. + + + + + + Gets an array containing the Ranges of each data column. + + + + + + Gets an array containing the interquartile range of each data column. + + + + + + Gets an array containing the inner fences of each data column. + + + + + + Gets an array containing the outer fences of each data column. + + + + + + Gets an array containing the sum of each data column. + + + + + + Gets an array containing the skewness for of each data column. + + + + + + Gets an array containing the kurtosis for of each data column. + + + + + + Gets the number of samples (or observations) in the data. + + + + + + Gets the number of variables (or features) in the data. + + + + + + Gets a collection of DescriptiveMeasures objects that can be bound to a DataGridView. + + + + + + Descriptive measures for a variable. + + + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets the descriptive analysis + that originated this measure. + + + + + + Gets the variable's index. + + + + + + Gets the variable's name + + + + + + Gets the variable's total sum. + + + + + + Gets the variable's mean. + + + + + + Gets the variable's standard deviation. + + + + + + Gets the variable's median. + + + + + + Gets the variable's outer fences range. + + + + + + Gets the variable's inner fence range. + + + + + + Gets the variable's interquartile range. + + + + + + Gets the variable's mode. + + + + + + Gets the variable's variance. + + + + + + Gets the variable's skewness. + + + + + + Gets the variable's kurtosis. + + + + + + Gets the variable's standard error of the mean. + + + + + + Gets the variable's maximum value. + + + + + + Gets the variable's minimum value. + + + + + + Gets the variable's length. + + + + + + Gets the number of distinct values for the variable. + + + + + + Gets the number of samples for the variable. + + + + + + Gets the 95% confidence interval around the . + + + + + + Gets the 95% deviance interval around the . + + + + + + Gets the variable's observations. + + + + + + Collection of descriptive measures. + + + + + + + + + Gets the key for item. + + + + + + FastICA's algorithms to be used in Independent Component Analysis. + + + + + + Deflation algorithm. + + + In the deflation algorithm, components are found one + at a time through a series of sequential operations. + It is particularly useful when only a small number of + components should be computed from the input data set. + + + + + + Symmetric parallel algorithm (default). + + + In the parallel (symmetric) algorithm, all components + are computed at once. This is the default algorithm for + Independent + Component Analysis. + + + + + + Independent Component Analysis (ICA). + + + + + Independent Component Analysis is a computational method for separating + a multivariate signal (or mixture) into its additive subcomponents, supposing + the mutual statistical independence of the non-Gaussian source signals. + + When the independence assumption is correct, blind ICA separation of a mixed + signal gives very good results. It is also used for signals that are not supposed + to be generated by a mixing for analysis purposes. + + A simple application of ICA is the "cocktail party problem", where the underlying + speech signals are separated from a sample data consisting of people talking + simultaneously in a room. Usually the problem is simplified by assuming no time + delays or echoes. + + An important note to consider is that if N sources are present, at least N + observations (e.g. microphones) are needed to get the original signals. + + + References: + + + Hyvärinen, A (1999). Fast and Robust Fixed-Point Algorithms for Independent Component + Analysis. IEEE Transactions on Neural Networks, 10(3),626-634. Available on: + + http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.4731 + + E. Bingham and A. Hyvärinen A fast fixed-point algorithm for independent component + analysis of complex-valued signals. Int. J. of Neural Systems, 10(1):1-8, 2000. + + FastICA: FastICA Algorithms to perform ICA and Projection Pursuit. Available on: + + http://cran.r-project.org/web/packages/fastICA/index.html + + Wikipedia, The Free Encyclopedia. Independent component analysis. Available on: + http://en.wikipedia.org/wiki/Independent_component_analysis + + + + + + // Let's create a random dataset containing + // 5000 samples of two dimensional samples. + // + double[,] source = Matrix.Random(5000, 2); + + // Now, we will mix the samples the dimensions of the samples. + // A small amount of the second column will be applied to the + // first, and vice-versa. + // + double[,] mix = + { + { 0.25, 0.25 }, + { -0.25, 0.75 }, + }; + + // mix the source data + double[,] input = source.Multiply(mix); + + // Now, we can use ICA to identify any linear mixing between the variables, such + // as the matrix multiplication we did above. After it has identified it, we will + // be able to revert the process, retrieving our original samples again + + // Create a new Independent Component Analysis + var ica = new IndependentComponentAnalysis(input); + + + // Compute it + ica.Compute(); + + // Now, we can retrieve the mixing and demixing matrices that were + // used to alter the data. Note that the analysis was able to detect + // this information automatically: + + double[,] mixingMatrix = ica.MixingMatrix; // same as the 'mix' matrix + double[,] revertMatrix = ica.DemixingMatrix; // inverse of the 'mix' matrix + + + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The FastICA algorithm to be used in the analysis. Default + is . + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is + . + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is + . + The FastICA algorithm to be used in the analysis. Default + is . + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is + . + The FastICA algorithm to be used in the analysis. Default + is . + + + + + Computes the Independent Component Analysis algorithm. + + + + + + Computes the Independent Component Analysis algorithm. + + + + + + Separates a mixture into its components (demixing). + + + + + + Separates a mixture into its components (demixing). + + + + + + Separates a mixture into its components (demixing). + + + + + + Combines components into a single mixture (mixing). + + + + + + Combines components into a single mixture (mixing). + + + + + + Deflation iterative algorithm. + + + + Returns a matrix in which each row contains + the mixing coefficients for each component. + + + + + + Parallel (symmetric) iterative algorithm. + + + + Returns a matrix in which each row contains + the mixing coefficients for each component. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Computes the maximum absolute change between two members of a matrix. + + + + + + Computes the maximum absolute change between two members of a vector. + + + + + + Source data used in the analysis. + + + + + + Gets or sets the maximum number of iterations + to perform. If zero, the method will run until + convergence. + + + The iterations. + + + + + Gets or sets the maximum absolute change in + parameters between iterations that determine + convergence. + + + + + + Gets the resulting projection of the source + data given on the creation of the analysis + into the space spawned by independent components. + + + The resulting projection in independent component space. + + + + + Gets a matrix containing the mixing coefficients for + the original source data being analyzed. Each column + corresponds to an independent component. + + + + + + Gets a matrix containing the demixing coefficients for + the original source data being analyzed. Each column + corresponds to an independent component. + + + + + + Gets the whitening matrix used to transform + the original data to have unit variance. + + + + + + Gets the Independent Components in a object-oriented structure. + + + The collection of independent components. + + + + + Gets or sets whether calculations will be performed overwriting + data in the original source matrix, using less memory. + + + + + + Gets or sets the + FastICA algorithm used by the analysis. + + + + + + Gets or sets the + Contrast function to be used by the analysis. + + + + + + Gets the column means of the original data. + + + + + + Gets the column standard deviations of the original data. + + + + + + Represents an Independent Component found in the Independent Component + Analysis, allowing it to be directly bound to controls like the DataGridView. + + + + + + Creates an independent component representation. + + + The analysis to which this component belongs. + The component index. + + + + + Gets the Index of this component on the original component collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the mixing vector for the current independent component. + + + + + + Gets the demixing vector for the current independent component. + + + + + + Gets the whitening factor for the current independent component. + + + + + + Represents a Collection of Independent Components found in the + Independent Component Analysis. This class cannot be instantiated. + + + + + + Kernel (Fisher) Discriminant Analysis. + + + + + Kernel (Fisher) discriminant analysis (kernel FDA) is a non-linear generalization + of linear discriminant analysis (LDA) using techniques of kernel methods. Using a + kernel, the originally linear operations of LDA are done in a reproducing kernel + Hilbert space with a non-linear mapping. + + The algorithm used is a multi-class generalization of the original algorithm by + Mika et al. in Fisher discriminant analysis with kernels (1999). + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + Mika et al, Fisher discriminant analysis with kernels (1999). Available on + + http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.35.9904 + + + + + + The following example creates an analysis for a set of + data specified as a jagged (double[][]) array. However, + the same can also be accomplished using multidimensional + double[,] arrays. + + + // Create some sample input data instances. This is the same + // data used in the Gutierrez-Osuna's example available on: + // http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf + + double[][] inputs = + { + // Class 0 + new double[] { 4, 1 }, + new double[] { 2, 4 }, + new double[] { 2, 3 }, + new double[] { 3, 6 }, + new double[] { 4, 4 }, + + // Class 1 + new double[] { 9, 10 }, + new double[] { 6, 8 }, + new double[] { 9, 5 }, + new double[] { 8, 7 }, + new double[] { 10, 8 } + }; + + int[] output = + { + 0, 0, 0, 0, 0, // The first five are from class 0 + 1, 1, 1, 1, 1 // The last five are from class 1 + }; + + // Now we can chose a kernel function to + // use, such as a linear kernel function. + IKernel kernel = new Linear(); + + // Then, we will create a KDA using this linear kernel. + var kda = new KernelDiscriminantAnalysis(inputs, output, kernel); + + kda.Compute(); // Compute the analysis + + + // Now we can project the data into KDA space: + double[][] projection = kda.Transform(inputs); + + // Or perform classification using: + int[] results = kda.Classify(inputs); + + + + + + + Linear Discriminant Analysis (LDA). + + + + + Linear Discriminant Analysis (LDA) is a method of finding such a linear + combination of variables which best separates two or more classes. + + In itself LDA is not a classification algorithm, although it makes use of class + labels. However, the LDA result is mostly used as part of a linear classifier. + The other alternative use is making a dimension reduction before using nonlinear + classification algorithms. + + It should be noted that several similar techniques (differing in requirements to the sample) + go together under the general name of Linear Discriminant Analysis. Described below is one of + these techniques with only two requirements: + + The sample size shall exceed the number of variables, and + Classes may overlap, but their centers shall be distant from each other. + + + + Moreover, LDA requires the following assumptions to be true: + + Independent subjects. + Normality: the variance-covariance matrix of the + predictors is the same in all groups. + + + + If the latter assumption is violated, it is common to use quadratic discriminant analysis in + the same manner as linear discriminant analysis instead. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + R. Gutierrez-Osuna, Linear Discriminant Analysis. Available on: + http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf + + + + + + The following example creates an analysis for a set of + data specified as a jagged (double[][]) array. However, + the same can also be accomplished using multidimensional + double[,] arrays. + + + // Create some sample input data instances. This is the same + // data used in the Gutierrez-Osuna's example available on: + // http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf + + double[][] inputs = + { + // Class 0 + new double[] { 4, 1 }, + new double[] { 2, 4 }, + new double[] { 2, 3 }, + new double[] { 3, 6 }, + new double[] { 4, 4 }, + + // Class 1 + new double[] { 9, 10 }, + new double[] { 6, 8 }, + new double[] { 9, 5 }, + new double[] { 8, 7 }, + new double[] { 10, 8 } + }; + + int[] output = + { + 0, 0, 0, 0, 0, // The first five are from class 0 + 1, 1, 1, 1, 1 // The last five are from class 1 + }; + + // Then, we will create a LDA for the given instances. + var lda = new LinearDiscriminantAnalysis(inputs, output); + + lda.Compute(); // Compute the analysis + + + // Now we can project the data into KDA space: + double[][] projection = lda.Transform(inputs); + + // Or perform classification using: + int[] results = lda.Classify(inputs); + + + + + + + Constructs a new Linear Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + + + + + Constructs a new Linear Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + + + + + Computes the Multi-Class Linear Discriminant Analysis algorithm. + + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + + + + Projects a given matrix into latent discriminant variable space. + + + The matrix to be projected. + + The number of discriminants to use in the projection. + + + + + + Projects a given matrix into latent discriminant variable space. + + + The matrix to be projected. + + The number of discriminants to use in the projection. + + + + + + Projects a given point into discriminant space. + + + The point to be projected. + + + + + Projects a given point into latent discriminant variable space. + + + The point to be projected. + The number of discriminant variables to use in the projection. + + + + + Returns the minimum number of discriminant space dimensions (discriminant + factors) required to represent a given percentile of the data. + + + The percentile of the data requiring representation. + The minimal number of dimensions required. + + + + + Classifies a new instance into one of the available classes. + + + + + + Classifies a new instance into one of the available classes. + + + + + + Classifies new instances into one of the available classes. + + + + + + Gets the discriminant function output for class c. + + + The class index. + The projected input. + + + + + Creates additional information about principal components. + + + + + + Returns the original supplied data to be analyzed. + + + + + + Gets the resulting projection of the source data given on + the creation of the analysis into discriminant space. + + + + + + Gets the original classifications (labels) of the source data + given on the moment of creation of this analysis object. + + + + + + Gets the mean of the original data given at method construction. + + + + + + Gets the standard mean of the original data given at method construction. + + + + + + Gets the Within-Class Scatter Matrix for the data. + + + + + + Gets the Between-Class Scatter Matrix for the data. + + + + + + Gets the Total Scatter Matrix for the data. + + + + + + Gets the Eigenvectors obtained during the analysis, + composing a basis for the discriminant factor space. + + + + + + Gets the Eigenvalues found by the analysis associated + with each vector of the ComponentMatrix matrix. + + + + + + Gets the level of importance each discriminant factor has in + discriminant space. Also known as amount of variance explained. + + + + + + The cumulative distribution of the discriminants factors proportions. + Also known as the cumulative energy of the first dimensions of the discriminant + space or as the amount of variance explained by those dimensions. + + + + + + Gets the discriminant factors in a object-oriented fashion. + + + + + + Gets information about the distinct classes in the analyzed data. + + + + + + Gets the Scatter matrix for each class. + + + + + + Gets the Mean vector for each class. + + + + + + Gets the feature space mean of the projected data. + + + + + + Gets the Standard Deviation vector for each class. + + + + + + Gets the observation count for each class. + + + + + + Constructs a new Kernel Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + The kernel to be used in the analysis. + + + + + Constructs a new Kernel Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + The kernel to be used in the analysis. + + + + + Computes the Multi-Class Kernel Discriminant Analysis algorithm. + + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + The number of discriminant dimensions to use in the projection. + + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + The number of discriminant dimensions to use in the projection. + + + + + + Gets the Kernel used in the analysis. + + + + + + Gets or sets the regularization parameter to + avoid non-singularities at the solution. + + + + + + Gets or sets the minimum variance proportion needed to keep a + discriminant component. If set to zero, all components will be + kept. Default is 0.001 (all components which contribute less + than 0.001 to the variance in the data will be discarded). + + + + + + Kernel Principal Component Analysis. + + + + + Kernel principal component analysis (kernel PCA) is an extension of principal + component analysis (PCA) using techniques of kernel methods. Using a kernel, + the originally linear operations of PCA are done in a reproducing kernel Hilbert + space with a non-linear mapping. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' + property. + + + References: + + + Heiko Hoffmann, Unsupervised Learning of Visuomotor Associations (Kernel PCA topic). + PhD thesis. 2005. Available on: http://www.heikohoffmann.de/htmlthesis/hoffmann_diss.html + + + James T. Kwok, Ivor W. Tsang. The Pre-Image Problem in Kernel Methods. 2003. Available on: + http://www.hpl.hp.com/conferences/icml2003/papers/345.pdf + + + + + + The example below shows a typical usage of the analysis. We will be replicating + the exact same example which can be found on the + documentation page. However, while we will be using a kernel, + any other kernel function could have been used. + + + // Below is the same data used on the excellent paper "Tutorial + // On Principal Component Analysis", by Lindsay Smith (2002). + + double[,] sourceMatrix = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + // Create a new linear kernel + IKernel kernel = new Linear(); + + // Creates the Kernel Principal Component Analysis of the given data + var kpca = new KernelPrincipalComponentAnalysis(sourceMatrix, kernel); + + // Compute the Kernel Principal Component Analysis + kpca.Compute(); + + // Creates a projection considering 80% of the information + double[,] components = kpca.Transform(sourceMatrix, 0.8f); + + + + + + + Principal component analysis (PCA) is a technique used to reduce + multidimensional data sets to lower dimensions for analysis. + + + + + Principal Components Analysis or the Karhunen-Loève expansion is a + classical method for dimensionality reduction or exploratory data + analysis. + + Mathematically, PCA is a process that decomposes the covariance matrix of a matrix + into two parts: Eigenvalues and column eigenvectors, whereas Singular Value Decomposition + (SVD) decomposes a matrix per se into three parts: singular values, column eigenvectors, + and row eigenvectors. The relationships between PCA and SVD lie in that the eigenvalues + are the square of the singular values and the column vectors are the same for both. + + + This class uses SVD on the data set which generally gives better numerical accuracy. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + + + The example below shows a typical usage of the analysis. However, users + often ask why the framework produces different values than other packages + such as STATA or MATLAB. After the simple introductory example below, we + will be exploring why those results are often different. + + + // Below is the same data used on the excellent paper "Tutorial + // On Principal Component Analysis", by Lindsay Smith (2002). + + double[,] sourceMatrix = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + // Creates the Principal Component Analysis of the given source + var pca = new PrincipalComponentAnalysis(sourceMatrix, AnalysisMethod.Center); + + // Compute the Principal Component Analysis + pca.Compute(); + + // Creates a projection considering 80% of the information + double[,] components = pca.Transform(sourceMatrix, 0.8f, true); + + + + + A question often asked by users is "why my matrices have inverted + signs" or "why my results differ from [another software]". In short, + despite any differences, the results are most likely correct (unless + you firmly believe you have found a bug; in this case, please fill + in a bug report). + + The example below explores, in the same steps given in Lindsay's + tutorial, anything that would cause any discrepancies between the + results given by Accord.NET and results given by other softwares. + + + // Reproducing Lindsay Smith's "Tutorial on Principal Component Analysis" + // using the framework's default method. The tutorial can be found online + // at http://www.sccg.sk/~haladova/principal_components.pdf + + // Step 1. Get some data + // --------------------- + + double[,] data = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + + // Step 2. Subtract the mean + // ------------------------- + // Note: The framework does this automatically. By default, the framework + // uses the "Center" method, which only subtracts the mean. However, it is + // also possible to remove the mean *and* divide by the standard deviation + // (thus performing the correlation method) by specifying "Standardize" + // instead of "Center" as the AnalysisMethod. + + AnalysisMethod method = AnalysisMethod.Center; // AnalysisMethod.Standardize + + + // Step 3. Compute the covariance matrix + // ------------------------------------- + // Note: Accord.NET does not need to compute the covariance + // matrix in order to compute PCA. The framework uses the SVD + // method which is more numerically stable, but may require + // more processing or memory. In order to replicate the tutorial + // using covariance matrices, please see the next example below. + + // Create the analysis using the selected method + var pca = new PrincipalComponentAnalysis(data, method); + + // Compute it + pca.Compute(); + + + // Step 4. Compute the eigenvectors and eigenvalues of the covariance matrix + // ------------------------------------------------------------------------- + // Note: Since Accord.NET uses the SVD method rather than the Eigendecomposition + // method, the Eigenvalues are not directly available. However, it is not the + // Eigenvalues themselves which are important, but rather their proportion: + + // Those are the expected eigenvalues, in descending order: + double[] eigenvalues = { 1.28402771, 0.0490833989 }; + + // And this will be their proportion: + double[] proportion = eigenvalues.Divide(eigenvalues.Sum()); + + // Those are the expected eigenvectors, + // in descending order of eigenvalues: + double[,] eigenvectors = + { + { -0.677873399, -0.735178656 }, + { -0.735178656, 0.677873399 } + }; + + // Now, here is the place most users get confused. The fact is that + // the Eigenvalue decomposition (EVD) is not unique, and both the SVD + // and EVD routines used by the framework produces results which are + // numerically different from packages such as STATA or MATLAB, but + // those are correct. + + // If v is an eigenvector, a multiple of this eigenvector (such as a*v, with + // a being a scalar) will also be an eigenvector. In the Lindsay case, the + // framework produces a first eigenvector with inverted signs. This is the same + // as considering a=-1 and taking a*v. The result is still correct. + + // Retrieve the first expected eigenvector + double[] v = eigenvectors.GetColumn(0); + + // Multiply by a scalar and store it back + eigenvectors.SetColumn(0, v.Multiply(-1)); + + // At this point, the eigenvectors should equal the pca.ComponentMatrix, + // and the proportion vector should equal the pca.ComponentProportions up + // to the 9 decimal places shown in the tutorial. + + + // Step 5. Deriving the new data set + // --------------------------------- + + double[,] actual = pca.Transform(data); + + // transformedData shown in pg. 18 + double[,] expected = new double[,] + { + { 0.827970186, -0.175115307 }, + { -1.77758033, 0.142857227 }, + { 0.992197494, 0.384374989 }, + { 0.274210416, 0.130417207 }, + { 1.67580142, -0.209498461 }, + { 0.912949103, 0.175282444 }, + { -0.099109437, -0.349824698 }, + { -1.14457216, 0.046417258 }, + { -0.438046137, 0.017764629 }, + { -1.22382056, -0.162675287 }, + }; + + // At this point, the actual and expected matrices + // should be equal up to 8 decimal places. + + + + + Some users would like to analyze huge amounts of data. In this case, + computing the SVD directly on the data could result in memory exceptions + or excessive computing times. If your data's number of dimensions is much + less than the number of observations (i.e. your matrix have less columns + than rows) then it would be a better idea to summarize your data in the + form of a covariance or correlation matrix and compute PCA using the EVD. + + The example below shows how to compute the analysis with covariance + matrices only. + + + // Reproducing Lindsay Smith's "Tutorial on Principal Component Analysis" + // using the paper's original method. The tutorial can be found online + // at http://www.sccg.sk/~haladova/principal_components.pdf + + // Step 1. Get some data + // --------------------- + + double[,] data = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + + // Step 2. Subtract the mean + // ------------------------- + // Note: The framework does this automatically + // when computing the covariance matrix. In this + // step we will only compute the mean vector. + + double[] mean = Accord.Statistics.Tools.Mean(data); + + + // Step 3. Compute the covariance matrix + // ------------------------------------- + + double[,] covariance = Accord.Statistics.Tools.Covariance(data, mean); + + // Create the analysis using the covariance matrix + var pca = PrincipalComponentAnalysis.FromCovarianceMatrix(mean, covariance); + + // Compute it + pca.Compute(); + + + // Step 4. Compute the eigenvectors and eigenvalues of the covariance matrix + //-------------------------------------------------------------------------- + + // Those are the expected eigenvalues, in descending order: + double[] eigenvalues = { 1.28402771, 0.0490833989 }; + + // And this will be their proportion: + double[] proportion = eigenvalues.Divide(eigenvalues.Sum()); + + // Those are the expected eigenvectors, + // in descending order of eigenvalues: + double[,] eigenvectors = + { + { -0.677873399, -0.735178656 }, + { -0.735178656, 0.677873399 } + }; + + // Now, here is the place most users get confused. The fact is that + // the Eigenvalue decomposition (EVD) is not unique, and both the SVD + // and EVD routines used by the framework produces results which are + // numerically different from packages such as STATA or MATLAB, but + // those are correct. + + // If v is an eigenvector, a multiple of this eigenvector (such as a*v, with + // a being a scalar) will also be an eigenvector. In the Lindsay case, the + // framework produces a first eigenvector with inverted signs. This is the same + // as considering a=-1 and taking a*v. The result is still correct. + + // Retrieve the first expected eigenvector + double[] v = eigenvectors.GetColumn(0); + + // Multiply by a scalar and store it back + eigenvectors.SetColumn(0, v.Multiply(-1)); + + // At this point, the eigenvectors should equal the pca.ComponentMatrix, + // and the proportion vector should equal the pca.ComponentProportions up + // to the 9 decimal places shown in the tutorial. Moreover, unlike the + // previous example, the eigenvalues vector should also be equal to the + // property pca.Eigenvalues. + + + // Step 5. Deriving the new data set + // --------------------------------- + + double[,] actual = pca.Transform(data); + + // transformedData shown in pg. 18 + double[,] expected = new double[,] + { + { 0.827970186, -0.175115307 }, + { -1.77758033, 0.142857227 }, + { 0.992197494, 0.384374989 }, + { 0.274210416, 0.130417207 }, + { 1.67580142, -0.209498461 }, + { 0.912949103, 0.175282444 }, + { -0.099109437, -0.349824698 }, + { -1.14457216, 0.046417258 }, + { -0.438046137, 0.017764629 }, + { -1.22382056, -0.162675287 }, + }; + + // At this point, the actual and expected matrices + // should be equal up to 8 decimal places. + + + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is . + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is . + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + + + + + Computes the Principal Component Analysis algorithm. + + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + The number of components to consider. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + The number of components to consider. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + The number of components to consider. + + + + + Reverts a set of projected data into it's original form. Complete reverse + transformation is only possible if all components are present, and, if the + data has been standardized, the original standard deviation and means of + the original matrix are known. + + + The pca transformed data. + + + + + Returns the minimal number of principal components + required to represent a given percentile of the data. + + + The percentile of the data requiring representation. + The minimal number of components required. + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Creates additional information about principal components. + + + + + + Constructs a new Principal Component Analysis from a Covariance matrix. + + + + This method may be more suitable to high dimensional problems in which + the original data matrix may not fit in memory but the covariance matrix + will. + + The mean vector for the source data. + The covariance matrix of the data. + + + + + Constructs a new Principal Component Analysis from a Correlation matrix. + + + + This method may be more suitable to high dimensional problems in which + the original data matrix may not fit in memory but the covariance matrix + will. + + The mean vector for the source data. + The standard deviation vectors for the source data. + The correlation matrix of the data. + + + + + Returns the original data supplied to the analysis. + + + The original data matrix supplied to the analysis. + + + + + Gets the resulting projection of the source + data given on the creation of the analysis + into the space spawned by principal components. + + + The resulting projection in principal component space. + + + + + Gets a matrix whose columns contain the principal components. Also known as the Eigenvectors or loadings matrix. + + + The matrix of principal components. + + + + + Gets the Principal Components in a object-oriented structure. + + + The collection of principal components. + + + + + The respective role each component plays in the data set. + + + The component proportions. + + + + + The cumulative distribution of the components proportion role. Also known + as the cumulative energy of the principal components. + + + The cumulative proportions. + + + + + Provides access to the Singular Values stored during the analysis. + If a covariance method is chosen, then it will contain an empty vector. + + + The singular values. + + + + + Provides access to the Eigenvalues stored during the analysis. + + + The Eigenvalues. + + + + + Gets the column standard deviations of the source data given at method construction. + + + + + + Gets the column mean of the source data given at method construction. + + + + + + Gets or sets the method used by this analysis. + + + + + + Gets or sets whether calculations will be performed overwriting + data in the original source matrix, using less memory. + + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + True to center the data in feature space, + false otherwise. Default is true. + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + True to center the data in feature space, + false otherwise. Default is true. + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + + + + Constructs the Kernel Principal Component Analysis. + + The source data to perform analysis. + The kernel to be used in the analysis. + + + + Constructs the Kernel Principal Component Analysis. + + The source data to perform analysis. + The kernel to be used in the analysis. + + + + + Computes the Kernel Principal Component Analysis algorithm. + + + + + + Computes the Kernel Principal Component Analysis algorithm. + + + + + + Projects a given matrix into the principal component space. + + + The matrix to be projected. The matrix should contain + variables as columns and observations of each variable as rows. + The number of components to use in the transformation. + + + + + Projects a given matrix into the principal component space. + + + The matrix to be projected. The matrix should contain + variables as columns and observations of each variable as rows. + The number of components to use in the transformation. + + + + + Reverts a set of projected data into it's original form. Complete reverse + transformation is not always possible and is not even guaranteed to exist. + + + + This method works using a closed-form MDS approach as suggested by + Kwok and Tsang. It is currently a direct implementation of the algorithm + without any kind of optimization. + + Reference: + - http://cmp.felk.cvut.cz/cmp/software/stprtool/manual/kernels/preimage/list/rbfpreimg3.html + + + The kpca-transformed data. + + + + + Reverts a set of projected data into it's original form. Complete reverse + transformation is not always possible and is not even guaranteed to exist. + + + + + This method works using a closed-form MDS approach as suggested by + Kwok and Tsang. It is currently a direct implementation of the algorithm + without any kind of optimization. + + + Reference: + - http://cmp.felk.cvut.cz/cmp/software/stprtool/manual/kernels/preimage/list/rbfpreimg3.html + + + + The kpca-transformed data. + The number of nearest neighbors to use while constructing the pre-image. + + + + + Gets the Kernel used in the analysis. + + + + + + Gets or sets whether the points should be centered in feature space. + + + + + + Gets or sets the minimum variance proportion needed to keep a + principal component. If set to zero, all components will be + kept. Default is 0.001 (all components which contribute less + than 0.001 to the variance in the data will be discarded). + + + + + + Represents a class found during Discriminant Analysis, allowing it to + be bound to controls like the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a new Class representation + + + + + + Discriminant function for the class. + + + + + + Gets the Index of this class on the original analysis collection. + + + + + + Gets the number labeling this class. + + + + + + Gets the prevalence of the class on the original data set. + + + + + + Gets the class' mean vector. + + + + + + Gets the feature-space means of the projected data. + + + + + + Gets the class' standard deviation vector. + + + + + + Gets the Scatter matrix for this class. + + + + + + Gets the indices of the rows in the original data which belong to this class. + + + + + + Gets the subset of the original data spawned by this class. + + + + + + Gets the number of observations inside this class. + + + + + + + Represents a discriminant factor found during Discriminant Analysis, + allowing it to be bound to controls like the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a new discriminant factor representation. + + + + + + Gets the index of this discriminant factor + on the original analysis collection. + + + + + + Gets the Eigenvector for this discriminant factor. + + + + + + Gets the Eigenvalue for this discriminant factor. + + + + + + Gets the proportion, or amount of information explained by this discriminant factor. + + + + + + Gets the cumulative proportion of all discriminant factors until this factor. + + + + + + + Represents a collection of Discriminants factors found in the Discriminant Analysis. + + This class cannot be instantiated. + + + + + + + Represents a collection of classes found in the Discriminant Analysis. + + This class cannot be instantiated. + + + + + + Logistic Regression Analysis. + + + + + The Logistic Regression Analysis tries to extract useful + information about a logistic regression model. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + E. F. Connor. Logistic Regression. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + C. Shalizi. Logistic Regression and Newton's Method. Lecture notes. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + A. Storkey. Learning from Data: Learning Logistic Regressors. Available on: + http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + + + + + The following example shows to create a Logistic regresion analysis using a full + dataset composed of input vectors and a binary output vector. Each input vector + has an associated label (1 or 0) in the output vector, where 1 represents a positive + label (yes, or true) and 0 represents a negative label (no, or false). + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (this is completely fictional data). + + double[][] inputs = + { + // Age Smoking + new double[] { 55, 0 }, + new double[] { 28, 0 }, + new double[] { 65, 1 }, + new double[] { 46, 0 }, + new double[] { 86, 1 }, + new double[] { 56, 1 }, + new double[] { 85, 0 }, + new double[] { 33, 0 }, + new double[] { 21, 1 }, + new double[] { 42, 1 }, + }; + + // Additionally, we also have information about whether + // or not they those patients had lung cancer. The array + // below gives 0 for those who did not, and 1 for those + // who did. + + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + // Create a Logistic Regression analysis + var regression = new LogisticRegressionAnalysis(inputs, output); + + regression.Compute(); // compute the analysis. + + // Now we can show a summary of analysis + DataGridBox.Show(regression.Coefficients); + + + + The resulting table is shown below. + + + + // We can also investigate all parameters individually. For + // example the coefficients values will be available at the + // vector + + double[] coef = regression.CoefficientValues; + + // The first value refers to the model's intercept term. We + // can also retrieve the odds ratios and standard errors: + + double[] odds = regression.OddsRatios; + double[] stde = regression.StandardErrors; + + + // Finally, we can also use the analysis to classify a new patient + double y = regression.Regression.Compute(new double[] { 87, 1 }); + + // For those inputs, the answer probability is approximately 75%. + + + + The analysis can also be created from data given in a summary form. Instead of having + one input vector associated with one positive or negative label, each input vector is + associated with the proportion of positive to negative labels in the original dataset. + + + + // Suppose we have a (fictitious) data set about patients who + // underwent cardiac surgery. The first column gives the number + // of arterial bypasses performed during the surgery. The second + // column gives the number of patients whose surgery went well, + // while the third column gives the number of patients who had + // at least one complication during the surgery. + // + int[,] data = + { + // # of stents success complications + { 1, 140, 45 }, + { 2, 130, 60 }, + { 3, 150, 31 }, + { 4, 96, 65 } + }; + + + double[][] inputs = data.GetColumn(0).ToDouble().ToArray(); + + int[] positive = data.GetColumn(1); + int[] negative = data.GetColumn(2); + + // Create a new Logistic Regression Analysis from the summary data + var regression = LogisticRegressionAnalysis.FromSummary(inputs, positive, negative); + + regression.Compute(); // compute the analysis. + + // Now we can show a summary of the analysis + DataGridBox.Show(regression.Coefficients); + + + // We can also investigate all parameters individually. For + // example the coefficients values will be available at the + // vector + + double[] coef = regression.CoefficientValues; + + // The first value refers to the model's intercept term. We + // can also retrieve the odds ratios and standard errors: + + double[] odds = regression.OddsRatios; + double[] stde = regression.StandardErrors; + + + // Finally, we can use it to estimate risk for a new patient + double y = regression.Regression.Compute(new double[] { 4 }); + + + + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The weights associated with each input vector. + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output, binary data for the analysis. + The names of the input variables. + The name of the output variable. + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output, binary data for the analysis. + The names of the input variables. + The name of the output variable. + The weights associated with each input vector. + + + + + Gets the Log-Likelihood Ratio between this model and another model. + + + Another logistic regression model. + The Likelihood-Ratio between the two models. + + + + + Computes the Logistic Regression Analysis. + + + + The likelihood surface for the logistic regression learning + is convex, so there will be only one peak. Any local maxima + will be also a global maxima. + + + + True if the model converged, false otherwise. + + + + + + Computes the Logistic Regression Analysis for an already computed regression. + + + + + + Computes the Logistic Regression Analysis. + + + The likelihood surface for the + logistic regression learning is convex, so there will be only one + peak. Any local maxima will be also a global maxima. + + + + The difference between two iterations of the regression algorithm + when the algorithm should stop. If not specified, the value of + 1e-5 will be used. The difference is calculated based on the largest + absolute parameter change of the regression. + + + + The maximum number of iterations to be performed by the regression + algorithm. + + + + True if the model converged, false otherwise. + + + + + + Creates a new from summarized data. + In summary data, instead of having a set of inputs and their associated outputs, + we have the number of times an input vector had a positive label in the data set + and how many times it had a negative label. + + + The input data. + The number of positives labels for each input vector. + The number of negative labels for each input vector. + + + A created from the given summary data. + + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Gets or sets the regularization value to be + added in the objective function. Default is + 1e-10. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting probabilities obtained + by the logistic regression model. + + + + + + Gets the sample weight associated with each input vector. + + + + + + Gets the Logistic Regression model created + and evaluated by this analysis. + + + + + + Gets the collection of coefficients of the model. + + + + + + Gets the Log-Likelihood for the model. + + + + + + Gets the Chi-Square (Likelihood Ratio) Test for the model. + + + + + + Gets the Deviance of the model. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the Odds Ratio for each coefficient + found during the logistic regression. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the Likelihood-Ratio Tests for each coefficient. + + + + Since this operation might be potentially time-consuming, the likelihood-ratio + tests will be computed on the first time this property is acessed. + + + + + + Gets the value of each coefficient. + + + + + + Gets the 95% Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Represents a Logistic Regression Coefficient found in the Logistic Regression, + allowing it to be bound to controls like the DataGridView. This class cannot + be instantiated outside the . + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the name for the current coefficient. + + + + + + Gets the Odds ratio for the current coefficient. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the 95% confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the 95% confidence interval. + + + + + + Gets the lower limit for the 95% confidence interval. + + + + + + Gets the coefficient value. + + + + + + Gets the Wald's test performed for this coefficient. + + + + + + Gets the Likelihood-Ratio test performed for this coefficient. + + + + Since this operation might be potentially time-consuming, the likelihood-ratio + tests will be computed on the first time this property is acessed. + + + + + + Represents a collection of Logistic Coefficients found in the + . This class cannot be instantiated. + + + + + + The PLS algorithm to use in the Partial Least Squares Analysis. + + + + + + Sijmen de Jong's SIMPLS algorithm. + + + The SIMPLS algorithm is considerably faster than NIPALS, especially when the number of + input variables increases; but gives slightly different results in the case of multiple + outputs. + + + + + + Traditional NIPALS algorithm. + + + + + + Partial Least Squares Regression/Analysis (a.k.a Projection To Latent Structures) + + + + + Partial least squares regression (PLS-regression) is a statistical method that bears + some relation to principal components regression; instead of finding hyperplanes of + maximum variance between the response and independent variables, it finds a linear + regression model by projecting the predicted variables and the observable variables + to a new space. Because both the X and Y data are projected to new spaces, the PLS + family of methods are known as bilinear factor models. + + + References: + + + Abdi, H. (2010). Partial least square regression, projection on latent structure regression, + PLS-Regression. Wiley Interdisciplinary Reviews: Computational Statistics, 2, 97-106. + Available in: http://www.utdallas.edu/~herve/abdi-wireCS-PLS2010.pdf + + Abdi, H. (2007). Partial least square regression (PLS regression). In N.J. Salkind (Ed.): + Encyclopedia of Measurement and Statistics. Thousand Oaks (CA): Sage. pp. 740-744. + Resource available online in: http://www.utdallas.edu/~herve/Abdi-PLS-pretty.pdf + + Martin Anderson, "A comparison of nine PLS1 algorithms". Available on: + http://onlinelibrary.wiley.com/doi/10.1002/cem.1248/pdf + + Mevik, B-H. Wehrens, R. (2007). The pls Package: Principal Component and Partial Least Squares + Regression in R. Journal of Statistical Software, Volume 18, Issue 2. + Resource available online in: http://www.jstatsoft.org/v18/i02/paper + + Garson, D. Partial Least Squares Regression (PLS). + http://faculty.chass.ncsu.edu/garson/PA765/pls.htm + + De Jong, S. (1993). SIMPLS: an alternative approach to partial least squares regression. + Chemometrics and Intelligent Laboratory Systems, 18: 251–263. + http://dx.doi.org/10.1016/0169-7439(93)85002-X + + Rosipal, Roman and Nicole Kramer. (2006). Overview and Recent Advances in Partial Least + Squares, in Subspace, Latent Structure and Feature Selection Techniques, pp 34–51. + http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.7735 + + Yi Cao. (2008). Partial Least-Squares and Discriminant Analysis: A tutorial and tool + using PLS for discriminant analysis. + + Wikipedia contributors. Partial least squares regression. Wikipedia, The Free Encyclopedia; + 2009. Available from: http://en.wikipedia.org/wiki/Partial_least_squares_regression. + + + + + + // Following the small example by Hervé Abdi (Hervé Abdi, Partial Least Square Regression), + // we will create a simple example where the goal is to predict the subjective evaluation of + // a set of 5 wines. The dependent variables that we want to predict for each wine are its + // likeability, and how well it goes with meat, or dessert (as rated by a panel of experts). + // The predictors are the price, the sugar, alcohol, and acidity content of each wine. + + + // Here we will list the inputs, or characteristics we would like to use in order to infer + // information from our wines. Each row denotes a different wine and lists its corresponding + // observable characteristics. The inputs are usually denoted by X in the PLS literature. + + double[,] inputs = + { + // Wine | Price | Sugar | Alcohol | Acidity + { 7, 7, 13, 7 }, + { 4, 3, 14, 7 }, + { 10, 5, 12, 5 }, + { 16, 7, 11, 3 }, + { 13, 3, 10, 3 }, + }; + + + // Here we will list our dependent variables. Dependent variables are the outputs, or what we + // would like to infer or predict from our available data, given a new observation. The outputs + // are usually denoted as Y in the PLS literature. + + double[,] outputs = + { + // Wine | Hedonic | Goes with meat | Goes with dessert + { 14, 7, 8 }, + { 10, 7, 6 }, + { 8, 5, 5 }, + { 2, 4, 7 }, + { 6, 2, 4 }, + }; + + + // Next, we will create our Partial Least Squares Analysis passing the inputs (values for + // predictor variables) and the associated outputs (values for dependent variables). + + // We will also be using the using the Covariance Matrix/Center method (data will only + // be mean centered but not normalized) and the SIMPLS algorithm. + PartialLeastSquaresAnalysis pls = new PartialLeastSquaresAnalysis(inputs, outputs, + AnalysisMethod.Center, PartialLeastSquaresAlgorithm.SIMPLS); + + // Compute the analysis with all factors. The number of factors + // could also have been specified in a overload of this method. + + pls.Compute(); + + // After computing the analysis, we can create a linear regression model in order + // to predict new variables. To do that, we may call the CreateRegression() method. + + MultivariateLinearRegression regression = pls.CreateRegression(); + + // After the regression has been created, we will be able to classify new instances. + // For example, we will compute the outputs for the first input sample: + + double[] y = regression.Compute(new double[] { 7, 7, 13, 7 }); + + // The y output will be very close to the corresponding output used as reference. + // In this case, y is a vector of length 3 with values { 13.98, 7.00, 7.75 }. + + + + + + + Constructs a new Partial Least Squares Analysis. + + + The input source data to perform analysis. + The output source data to perform analysis. + + + + + Constructs a new Partial Least Squares Analysis. + + + The input source data to perform analysis. + The output source data to perform analysis. + The PLS algorithm to use in the analysis. Default is . + + + + + Constructs a new Partial Least Squares Analysis. + + + The input source data to perform analysis. + The output source data to perform analysis. + The analysis method to perform. Default is . + The PLS algorithm to use in the analysis. Default is . + + + + + Computes the Partial Least Squares Analysis. + + + + + Computes the Partial Least Squares Analysis. + + + The number of factors to compute. The number of factors + should be a value between 1 and min(rows-1,cols) where + rows and columns are the number of observations and + variables in the input source data matrix. + + + + Projects a given set of inputs into latent space. + + + + + + Projects a given set of inputs into latent space. + + + + + + Projects a given set of outputs into latent space. + + + + + + Projects a given set of outputs into latent space. + + + + + + Creates a Multivariate Linear Regression model using + coefficients obtained by the Partial Least Squares. + + + + + + Creates a Multivariate Linear Regression model using + coefficients obtained by the Partial Least Squares. + + + + + + Computes PLS parameters using NIPALS algorithm. + + + The number of factors to compute. + The mean-centered (adjusted) input values X. + The mean-centered (adjusted) output values Y. + The tolerance for convergence. + + + + The algorithm implementation follows the original paper by Hervé + Abdi, with overall structure as suggested in Yi Cao's tutorial. + + + References: + + + Abdi, H. (2010). Partial least square regression, projection on latent structure regression, + PLS-Regression. Wiley Interdisciplinary Reviews: Computational Statistics, 2, 97-106. + Available in: http://www.utdallas.edu/~herve/abdi-wireCS-PLS2010.pdf + + Yi Cao. (2008). Partial Least-Squares and Discriminant Analysis: A tutorial and tool + using PLS for discriminant analysis. + + + + + + + Computes PLS parameters using SIMPLS algorithm. + + + The number of factors to compute. + The mean-centered (adjusted) input values X. + The mean-centered (adjusted) output values Y. + + + + The algorithm implementation is based on the appendix code by Martin Anderson, + with modifications for multiple output variables as given in the sources listed + below. + + + References: + + + Martin Anderson, "A comparison of nine PLS1 algorithms". Available on: + http://onlinelibrary.wiley.com/doi/10.1002/cem.1248/pdf + + Abdi, H. (2010). Partial least square regression, projection on latent structure regression, + PLS-Regression. Wiley Interdisciplinary Reviews: Computational Statistics, 2, 97-106. + Available from: http://www.utdallas.edu/~herve/abdi-wireCS-PLS2010.pdf + + StatSoft, Inc. (2012). Electronic Statistics Textbook: Partial Least Squares (PLS). + Tulsa, OK: StatSoft. Available from: http://www.statsoft.com/textbook/partial-least-squares/#SIMPLS + + + De Jong, S. (1993). SIMPLS: an alternative approach to partial least squares regression. + Chemometrics and Intelligent Laboratory Systems, 18: 251–263. + http://dx.doi.org/10.1016/0169-7439(93)85002-X + + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Returns the index for the column with largest squared sum. + + + + + + Computes the variable importance in projection (VIP). + + + + A predictor factors matrix in which each row represents + the importance of the variable in a projection considering + the number of factors indicated by the column's index. + + + + References: + + + Il-Gyo Chong, Chi-Hyuck Jun, Performance of some variable selection methods + when multicollinearity is present, Chemometrics and Intelligent Laboratory + Systems, Volume 78, Issues 1-2, 28 July 2005, Pages 103-112, ISSN 0169-7439, + DOI: 10.1016/j.chemolab.2004.12.011. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variables' values + for each of the source input points. + + + + + + Gets information about independent (input) variables. + + + + + + Gets information about dependent (output) variables. + + + + + + Gets the Weight matrix obtained during the analysis. For the NIPALS algorithm + this is the W matrix. For the SIMPLS algorithm this is the R matrix. + + + + + + Gets information about the factors discovered during the analysis in a + object-oriented structure which can be data-bound directly to many controls. + + + + + + Gets the PLS algorithm used by the analysis. + + + + + + Gets the method used by this analysis. + + + + + + Gets the Variable Importance in Projection (VIP). + + + This method has been implemented considering only PLS + models fitted using the NIPALS algorithm containing a + single response (output) variable. + + + + + + Gets or sets whether calculations will be performed overwriting + data in the original source matrix, using less memory. + + + + + + Represents a Partial Least Squares Factor found in the Partial Least Squares + Analysis, allowing it to be directly bound to controls like the DataGridView. + + + + + + Creates a partial least squares factor representation. + + + The analysis to which this component belongs. + The component index. + + + + + Gets the Index of this component on the original factor collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the proportion of prediction variables + variance explained by this factor. + + + + + + Gets the cumulative proportion of dependent variables + variance explained by this factor. + + + + + + Gets the proportion of dependent variable + variance explained by this factor. + + + + + + Gets the cumulative proportion of dependent variable + variance explained by this factor. + + + + + + Gets the input variable's latent vectors for this factor. + + + + + + Gets the output variable's latent vectors for this factor. + + + + + + Gets the importance of each variable for the given component. + + + + + + Gets the proportion, or amount of information explained by this component. + + + + + + Gets the cumulative proportion of all discriminants until this component. + + + + + + Represents a Collection of Partial Least Squares Factors found in + the Partial Least Squares Analysis. This class cannot be instantiated. + + + + + + Represents source variables used in Partial Least Squares Analysis. Can represent either + input variables (predictor variables) or output variables (independent variables or regressors). + + + + + + Projects a given dataset into latent space. Can be either input variable's + latent space or output variable's latent space, depending if the variables + chosen are predictor variables or dependent variables, respectively. + + + + + + Projects a given dataset into latent space. Can be either input variable's + latent space or output variable's latent space, depending if the variables + chosen are predictor variables or dependent variables, respectively. + + + + + + Source data used in the analysis. Can be either input data + or output data depending if the variables chosen are predictor + variables or dependent variables, respectively. + + + + + + Gets the resulting projection (scores) of the source data + into latent space. Can be either from input data or output + data depending if the variables chosen are predictor variables + or dependent variables, respectively. + + + + + + Gets the column means of the source data. Can be either from + input data or output data, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + Gets the column standard deviations of the source data. Can be either + from input data or output data, depending if the variables chosen are + predictor variables or dependent variables, respectively. + + + + + + Gets the loadings (a.k.a factors or components) for the + variables obtained during the analysis. Can be either from + input data or output data, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + Gets the amount of variance explained by each latent factor. + Can be either by input variables' latent factors or output + variables' latent factors, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + Gets the cumulative variance explained by each latent factor. + Can be either by input variables' latent factors or output + variables' latent factors, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + + Represents a Principal Component found in the Principal Component Analysis, + allowing it to be bound to controls like the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a principal component representation. + + + The analysis to which this component belongs. + The component index. + + + + + Gets the Index of this component on the original analysis principal component collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the proportion of data this component represents. + + + + + + Gets the cumulative proportion of data this component represents. + + + + + + If available, gets the Singular Value of this component found during the Analysis. + + + + + + Gets the Eigenvalue of this component found during the analysis. + + + + + + Gets the Eigenvector of this component. + + + + + + Represents a Collection of Principal Components found in the + . This class cannot be instantiated. + + + + + + Methods for computing the area under + Receiver-Operating Characteristic (ROC) curves (also known as the ROC AUC). + + + + + + Method of DeLong, E. R., D. M. DeLong, and D. L. Clarke-Pearson. 1988. Comparing + the areas under two or more correlated receiver operating characteristic curves: + a nonparametric approach. Biometrics 44:837–845. + + + + + + Method of Hanley, J.A. and McNeil, B.J. 1983. A method of comparing the areas under + receiver operating characteristic curves derived from the same cases. Radiology 148:839-843. + + + + + + Receiver Operating Characteristic (ROC) Curve. + + + + + In signal detection theory, a receiver operating characteristic (ROC), or simply + ROC curve, is a graphical plot of the sensitivity vs. (1 − specificity) for a + binary classifier system as its discrimination threshold is varied. + + This package does not attempt to fit a curve to the obtained points. It just + computes the area under the ROC curve directly using the trapezoidal rule. + + Also note that the curve construction algorithm uses the convention that a + higher test value represents a positive for a condition while computing + sensitivity and specificity values. + + + References: + + + Wikipedia, The Free Encyclopedia. Receiver Operating Characteristic. Available on: + http://en.wikipedia.org/wiki/Receiver_operating_characteristic + + Anaesthesist. The magnificent ROC. Available on: + http://www.anaesthetist.com/mnm/stats/roc/Findex.htm + + + + + + The following example shows how to measure the accuracy + of a binary classifier using a ROC curve. + + + // This example shows how to measure the accuracy of a + // binary classifier using a ROC curve. For this example, + // we will be creating a Support Vector Machine trained + // on the following training instances: + + double[][] inputs = + { + // Those are from class -1 + new double[] { 2, 4, 0 }, + new double[] { 5, 5, 1 }, + new double[] { 4, 5, 0 }, + new double[] { 2, 5, 5 }, + new double[] { 4, 5, 1 }, + new double[] { 4, 5, 0 }, + new double[] { 6, 2, 0 }, + new double[] { 4, 1, 0 }, + + // Those are from class +1 + new double[] { 1, 4, 5 }, + new double[] { 7, 5, 1 }, + new double[] { 2, 6, 0 }, + new double[] { 7, 4, 7 }, + new double[] { 4, 5, 0 }, + new double[] { 6, 2, 9 }, + new double[] { 4, 1, 6 }, + new double[] { 7, 2, 9 }, + }; + + int[] outputs = + { + -1, -1, -1, -1, -1, -1, -1, -1, // fist eight from class -1 + +1, +1, +1, +1, +1, +1, +1, +1 // last eight from class +1 + }; + + // Next, we create a linear Support Vector Machine with 4 inputs + SupportVectorMachine machine = new SupportVectorMachine(inputs: 3); + + // Create the sequential minimal optimization learning algorithm + var smo = new SequentialMinimalOptimization(machine, inputs, outputs); + + // We learn the machine + double error = smo.Run(); + + // And then extract its predicted labels + double[] predicted = new double[inputs.Length]; + for (int i = 0; i < predicted.Length; i++) + predicted[i] = machine.Compute(inputs[i]); + + // At this point, the output vector contains the labels which + // should have been assigned by the machine, and the predicted + // vector contains the labels which have been actually assigned. + + // Create a new ROC curve to assess the performance of the model + var roc = new ReceiverOperatingCharacteristic(outputs, predicted); + roc.Compute(100); // Compute a ROC curve with 100 cut-off points + + // Generate a connected scatter plot for the ROC curve and show it on-screen + ScatterplotBox.Show(roc.GetScatterplot(includeRandom: true), nonBlocking: true) + + .SetSymbolSize(0) // do not display data points + .SetLinesVisible(true) // show lines connecting points + .SetScaleTight(true) // tighten the scale to points + .WaitForClose(); + + + + The resulting graph is shown below. + + + + + + + + + Constructs a new Receiver Operating Characteristic model + + + + An array of binary values. Typically represented as 0 and 1, or -1 and 1, + indicating negative and positive cases, respectively. The maximum value + will be treated as the positive case, and the lowest as the negative. + + An array of continuous values trying to approximate the measurement array. + + + + + + Constructs a new Receiver Operating Characteristic model + + + + An array of binary values. Typically represented as 0 and 1, or -1 and 1, + indicating negative and positive cases, respectively. The maximum value + will be treated as the positive case, and the lowest as the negative. + + An array of continuous values trying to approximate the measurement array. + + + + + + Constructs a new Receiver Operating Characteristic model + + + + An array of binary values. Typically represented as 0 and 1, or -1 and 1, + indicating negative and positive cases, respectively. The maximum value + will be treated as the positive case, and the lowest as the negative. + + An array of continuous values trying to approximate the measurement array. + + + + + + Computes a n-points ROC curve. + + + + Each point in the ROC curve will have a threshold increase of + 1/npoints over the previous point, starting at zero. + + + The number of points for the curve. + + + + + Computes a ROC curve with 1/increment points + + + The increment over the previous point for each point in the curve. + + + + + Computes a ROC curve with 1/increment points + + + The increment over the previous point for each point in the curve. + True to force the inclusion of the (0,0) point, false otherwise. Default is false. + + + + + Computes a ROC curve with the given increment points + + + + + + Computes a single point of a ROC curve using the given cutoff value. + + + + + + Generates a representing the ROC curve. + + + + True to include a plot of the random curve (a diagonal line + going from lower left to upper right); false otherwise. + + + + + Returns a that represents this curve. + + + A that represents this curve. + + + + + Calculates the area under the ROC curve using the trapezium method. + + + The area under a ROC curve can never be less than 0.50. If the area is first calculated as + less than 0.50, the definition of abnormal will be reversed from a higher test value to a + lower test value. + + + + + Saves the curve to a stream. + + + The stream to which the curve is to be serialized. + + + + + Loads a curve from a stream. + + + The stream from which the curve is to be deserialized. + + The deserialized curve. + + + + + Loads a curve from a file. + + + The path to the file from which the curve is to be deserialized. + + The deserialized curve. + + + + + Saves the curve to a stream. + + + The path to the file to which the curve is to be serialized. + + + + + Gets the points of the curve. + + + + + + Gets the number of actual positive cases. + + + + + + Gets the number of actual negative cases. + + + + + + Gets the number of cases (observations) being analyzed. + + + + + + Gets the area under this curve (AUC). + + + + + + Gets the standard error for the . + + + + + + Gets the variance of the curve's . + + + + + + Gets the ground truth values, or the values + which should have been given by the test if + it was perfect. + + + + + + Gets the actual values given by the test. + + + + + + Gets the actual test results for subjects + which should have been labeled as positive. + + + + + + Gets the actual test results for subjects + which should have been labeled as negative. + + + + + + Gets DeLong's pseudoaccuracies for the positive subjects. + + + + + + Gets DeLong's pseudoaccuracies for the negative subjects + + + + + + Object to hold information about a Receiver Operating Characteristic Curve Point + + + + + + Constructs a new Receiver Operating Characteristic point. + + + + + + Returns a System.String that represents the current ReceiverOperatingCharacteristicPoint. + + + + + + Gets the cutoff value (discrimination threshold) for this point. + + + + + + Represents a Collection of Receiver Operating Characteristic (ROC) Curve points. + This class cannot be instantiated. + + + + + + Gets the (1-specificity, sensitivity) values as (x,y) coordinates. + + + + An jagged double array where each element is a double[] vector + with two positions; the first is the value for 1-specificity (x) + and the second the value for sensitivity (y). + + + + + + Gets an array containing (1-specificity) + values for each point in the curve. + + + + + + Gets an array containing (sensitivity) + values for each point in the curve. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Backward Stepwise Logistic Regression Analysis. + + + + + The Backward Stepwise regression is an exploratory analysis procedure, + where the analysis begins with a full (saturated) model and at each step + variables are eliminated from the model in a iterative fashion. + + Significance tests are performed after each removal to track which of + the variables can be discarded safely without implying in degradation. + When no more variables can be removed from the model without causing + a significant loss in the model likelihood, the method can stop. + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (this is completely fictional data). + + double[][] inputs = + { + // Age Smoking + new double[] { 55, 0 }, // 1 + new double[] { 28, 0 }, // 2 + new double[] { 65, 1 }, // 3 + new double[] { 46, 0 }, // 4 + new double[] { 86, 1 }, // 5 + new double[] { 56, 1 }, // 6 + new double[] { 85, 0 }, // 7 + new double[] { 33, 0 }, // 8 + new double[] { 21, 1 }, // 9 + new double[] { 42, 1 }, // 10 + new double[] { 33, 0 }, // 11 + new double[] { 20, 1 }, // 12 + new double[] { 43, 1 }, // 13 + new double[] { 31, 1 }, // 14 + new double[] { 22, 1 }, // 15 + new double[] { 43, 1 }, // 16 + new double[] { 46, 0 }, // 17 + new double[] { 86, 1 }, // 18 + new double[] { 56, 1 }, // 19 + new double[] { 55, 0 }, // 20 + }; + + // Additionally, we also have information about whether + // or not they those patients had lung cancer. The array + // below gives 0 for those who did not, and 1 for those + // who did. + + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, + 0, 1, 1, 1, 1, 1, 0, 1, 1, 0 + }; + + + // Create a Stepwise Logistic Regression analysis + var regression = new StepwiseLogisticRegressionAnalysis(inputs, output, + new[] { "Age", "Smoking" }, "Cancer"); + + regression.Compute(); // compute the analysis. + + // The full model will be stored in the complete property: + StepwiseLogisticRegressionModel full = regression.Complete; + + // The best model will be stored in the current property: + StepwiseLogisticRegressionModel best = regression.Current; + + // Let's check the full model results + DataGridBox.Show(full.Coefficients); + + // We can see only the Smoking variable is statistically significant. + // This is an indication the Age variable could be discarded from + // the model. + + // And check the best inner model result + DataGridBox.Show(best.Coefficients); + + // This is the best nested model found. This model only has the + // Smoking variable, which is still significant. Since no other + // variables can be dropped, this is the best final model. + + // The variables used in the current best model are + string[] inputVariableNames = best.Inputs; // Smoking + + // The best model likelihood ratio p-value is + ChiSquareTest test = best.ChiSquare; // {0.816990081334823} + + // so the model is distinguishable from a null model. We can also + // query the other nested models by checking the Nested property: + + DataGridBox.Show(regression.Nested); + + // Finally, we can also use the analysis to classify a new patient + double y = regression.Current.Regression.Compute(new double[] { 1 }); + + // For a smoking person, the answer probability is approximately 83%. + + + + + + + + + Constructs a Stepwise Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Stepwise Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The names for the input variables. + The name for the output variable. + + + + + Computes the Stepwise Logistic Regression. + + + + + + Computes one step of the Stepwise Logistic Regression Analysis. + + + Returns the index of the variable discarded in the step or -1 + in case no variable could be discarded. + + + + + + Fits a logistic regression model to data until convergence. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting probabilities obtained + by the most likely logistic regression model. + + + + + + Gets the current best nested model. + + + + + + Gets the full model. + + + + + + Gets the collection of nested models obtained after + a step of the backward stepwise procedure. + + + + + + Gets the name of the input variables. + + + + + + Gets the name of the output variables. + + + + + + Gets or sets the significance threshold used to + determine if a nested model is significant or not. + + + + + + Gets the final set of input variables indices + as selected by the stepwise procedure. + + + + + + Stepwise Logistic Regression Nested Model. + + + + + + Constructs a new Logistic regression model. + + + + + + Gets information about the regression model + coefficients in a object-oriented structure. + + + + + + Gets the Stepwise Logistic Regression Analysis + from which this model belongs to. + + + + + + Gets the regression model. + + + + + + Gets the subset of the original variables used by the model. + + + + + + Gets the name of the variables used in + this model combined as a single string. + + + + + + Gets the Chi-Square Likelihood Ratio test for the model. + + + + + + Gets the subset of the original variables used by the model. + + + + + + Gets the Odds Ratio for each coefficient + found during the logistic regression. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the value of each coefficient. + + + + + + Gets the 95% Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Gets the Likelihood-Ratio Tests for each coefficient. + + + + + + Stepwise Logistic Regression Nested Model collection. + This class cannot be instantiated. + + + + + + Represents a Logistic Regression Coefficient found in the Logistic Regression, + allowing it to be bound to controls like the DataGridView. This class cannot + be instantiated outside the . + + + + + + Gets the name for the current coefficient. + + + + + + Gets the Odds ratio for the current coefficient. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the 95% confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the 95% confidence interval. + + + + + + Gets the lower limit for the 95% confidence interval. + + + + + + Gets the coefficient value. + + + + + + Gets the Wald's test performed for this coefficient. + + + + + + Gets the Likelihood-Ratio test performed for this coefficient. + + + + + + Represents a collection of Logistic Coefficients found in the + . This class cannot be instantiated. + + + + + + Set of statistics functions operating over a circular space. + + + + This class represents collection of common functions used in + statistics. The values are handled as belonging to a distribution + defined over a circle, such as the . + + + + + + Transforms circular data into angles (normalizes the data to be between -PI and PI). + + + The samples to be transformed. + The maximum possible sample value (such as 24 for hour data). + Whether to perform the transformation in place. + + A double array containing the same data in , + but normalized between -PI and PI. + + + + + Transforms circular data into angles (normalizes the data to be between -PI and PI). + + + The sample to be transformed. + The maximum possible sample value (such as 24 for hour data). + + The normalized to be between -PI and PI. + + + + + Transforms angular data back into circular data (reverts the + transformation. + + + The angle to be reconverted into the original unit. + The maximum possible sample value (such as 24 for hour data). + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The original before being converted. + + + + + Computes the sum of cosines and sines for the given angles. + + + A double array containing the angles in radians. + + The sum of cosines, returned as an out parameter. + The sum of sines, returned as an out parameter. + + + + + Computes the Mean direction of the given angles. + + + A double array containing the angles in radians. + + The mean direction of the given angles. + + + + + Computes the circular Mean direction of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular Mean direction of the given samples. + + + + + Computes the Mean direction of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The mean direction of the given angles. + + + + + Computes the mean resultant vector length (r) of the given angles. + + + A double array containing the angles in radians. + + The mean resultant vector length of the given angles. + + + + + Computes the resultant vector length (r) of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The mean resultant vector length of the given samples. + + + + + Computes the mean resultant vector length (r) of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The mean resultant vector length of the given angles. + + + + + Computes the circular variance of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular variance of the given samples. + + + + + Computes the Variance of the given angles. + + + A double array containing the angles in radians. + + The variance of the given angles. + + + + + Computes the Variance of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The variance of the angles. + + + + + Computes the circular standard deviation of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular standard deviation of the given samples. + + + + + Computes the Standard Deviation of the given angles. + + + A double array containing the angles in radians. + + The standard deviation of the given angles. + + + + + Computes the Standard Deviation of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The standard deviation of the angles. + + + + + Computes the circular angular deviation of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular angular deviation of the given samples. + + + + + Computes the Angular Deviation of the given angles. + + + A double array containing the angles in radians. + + The angular deviation of the given angles. + + + + + Computes the Angular Deviation of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The angular deviation of the angles. + + + + + Computes the circular standard error of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The confidence level. Default is 0.05. + + The circular standard error of the given samples. + + + + + Computes the standard error of the given angles. + + + A double array containing the angles in radians. + The confidence level. Default is 0.05. + + The standard error of the given angles. + + + + + Computes the standard error of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + The confidence level. Default is 0.05. + + The standard error of the angles. + + + + + Computes the angular distance between two angles. + + + The first angle. + The second angle. + + The distance between the two angles. + + + + + Computes the distance between two circular samples. + + + The first sample. + The second sample. + The maximum possible value of the samples. + + The distance between the two angles. + + + + + Computes the angular distance between two angles. + + + The cosine of the first sample. + The sin of the first sample. + The cosine of the second sample. + The sin of the second sample. + + The distance between the two angles. + + + + + Computes the circular Median of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular Median of the given samples. + + + + + Computes the circular Median direction of the given angles. + + + A double array containing the angles in radians. + + The circular Median of the given angles. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + The median value of the , if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The sample quartiles, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The sample quartiles, as an out parameter. + The median value of the , if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The sample quartiles, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The sample quartiles, as an out parameter. + The angular median, if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + The angular median, if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the concentration (kappa) of the given angles. + + + A double array containing the angles in radians. + + The concentration (kappa) parameter of the + for the given data. + + + + + + Computes the concentration (kappa) of the given angles. + + + A double array containing the angles in radians. + The mean of the angles, if already known. + + The concentration (kappa) parameter of the + for the given data. + + + + + + Computes the Weighted Mean of the given angles. + + + A double array containing the angles in radians. + An unit vector containing the importance of each angle + in . The sum of this array elements should add up to 1. + The mean of the given angles. + + + + + Computes the Weighted Concentration of the given angles. + + + A double array containing the angles in radians. + An unit vector containing the importance of each angle + in . The sum of this array elements should add up to 1. + The mean of the given angles. + + + + + Computes the Weighted Concentration of the given angles. + + + A double array containing the angles in radians. + An unit vector containing the importance of each angle + in . The sum of this array elements should add up to 1. + The mean of the angles, if already known. + The mean of the given angles. + + + + + Computes the maximum likelihood estimate + of kappa given by Best and Fisher (1981). + + + + + This method implements the approximation to the Maximum Likelihood + Estimative of the kappa concentration parameter as suggested by Best + and Fisher (1981), cited by Zheng Sun (2006) and Hussin and Mohamed + (2008). Other useful approximations are given by Suvrit Sra (2009). + + + References: + + + A.G. Hussin and I.B. Mohamed, 2008. Efficient Approximation for the von Mises Concentration Parameter. + Asian Journal of Mathematics & Statistics, 1: 165-169. + + Suvrit Sra, "A short note on parameter approximation for von Mises-Fisher distributions: + and a fast implementation of $I_s(x)$". (revision of Apr. 2009). Computational Statistics (2011). + Available on: http://www.kyb.mpg.de/publications/attachments/vmfnote_7045%5B0%5D.pdf + + Zheng Sun. M.Sc. Comparing measures of fit for circular distributions. Master thesis, 2006. + Available on: https://dspace.library.uvic.ca:8443/bitstream/handle/1828/2698/zhengsun_master_thesis.pdf + + + + + + + Computes the circular skewness of the given circular angles. + + + A double array containing the angles in radians. + + The circular skewness for the given . + + + + + Computes the circular kurtosis of the given circular angles. + + + A double array containing the angles in radians. + + The circular kurtosis for the given . + + + + + Computes the complex circular central + moments of the given circular angles. + + + + + + Computes the complex circular non-central + moments of the given circular angles. + + + + + + Contains more than 40 statistical distributions, with support + for most probability distribution measures and estimation methods. + + + + + This namespace contains a huge collection of probability distributions, ranging the from the common + and simple Normal (Gaussian) and + Poisson distributions to Inverse-Wishart and + multivariate mixture distributions, including many specialized + univariate distributions used in statistical hypothesis testing. + Some of those distributions include the , , + , and many others. + + + For a complete list of all + univariate probability distributions, check the + namespace. For a complete list of all + multivariate distributions, please see the + namespace. + + + A list of density kernels + such as the Gaussian kernel + and the Epanechnikov kernel + are available in the namespace. + + + + The namespace class diagram is shown below. + + + + The namespace class diagram for univariate distributions is shown below. + + + + The namespace class diagram for multivariate distributions is shown below. + + + + + + + + + + + + + + + Contains density estimation kernels which can be used in combination + with empirical distributions + and multivariate empirical + distributions. + + + + + + + + + + + + + Common interface for density estimation kernels. + + + + Those kernels are different from kernel + functions. Density estimation kernels are required to obey normalization rules in + order to fulfill integrability and behavioral properties. Moreover, they are defined + over a single input vector, the point estimate of a random variable. + + + + + + + + + + Computes the kernel density function. + + + The input point. + + A density estimate around . + + + + + Contains special options which can be used in + distribution fitting (estimation) methods. + + + + + + + + + + + BetaPERT's distribution estimation method. + + + + + + Estimates the mode using the classic method. + + + + + + Estimates the mode using the Vose method. + + + + + + Estimation options for + Beta PERT distributions. + + + + + + Common interface for distribution fitting option objects. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the index of the minimum observed + value, if already known. Default is -1. + + + + + + Gets or sets the index of the maximum observed + value, if already known. Default is -1. + + + + + + Gets or sets which estimation method should be used by the fitting + algorithm. Default is . + + + + + + Gets or sets a value indicating whether the observations are already sorted. + + + + Set to true if the observations are sorted; otherwise, false. + + + + + + Gets or sets a value indicating whether the maximum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Gets or sets a value indicating whether the minimum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Estimation methods for + Beta distributions. + + + + + + Method-of-moments estimation. + + + + + + Maximum Likelihood estimation. + + + + + + Estimation options for + Beta distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets which estimation method should be used by the fitting + algorithm. Default is . + + + + + + Triangular distribution's mode estimation method. + + + + + + Estimates the mode using the mean-maximum-minimum method. + + + + + + Estimates the mode using the standard algorithm. + + + + + + Estimates the mode using the bisection algorithm. + + + + + + Estimation options for + Triangular distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the index of the minimum observed + value, if already known. Default is -1. + + + + + + Gets or sets the index of the maximum observed + value, if already known. Default is -1. + + + + + + Gets or sets a value indicating whether the observations are already sorted. + + + + Set to true if the observations are sorted; otherwise, false. + + + + + + Gets or sets the mode estimation method to use. Default + is . + + + + + + Gets or sets a value indicating whether the maximum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Gets or sets a value indicating whether the minimum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Expectation Maximization algorithm for mixture model fitting in the log domain. + + + The type of the observations being fitted. + + + + This class implements a generic version of the Expectation-Maximization algorithm + which can be used with both univariate or multivariate distribution types. + + + + + + Creates a new algorithm. + + + The initial coefficient values. + The initial component distributions. + + + + + Estimates a mixture distribution for the given observations + using the Expectation-Maximization algorithm. + + + The observations from the mixture distribution. + + The log-likelihood of the estimated mixture model. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Gets or sets the fitting options to be used + when any of the component distributions need + to be estimated from the data. + + + + + + Gets or sets convergence properties for + the expectation-maximization algorithm. + + + + + + Gets the current coefficient values. + + + + + + Gets the current component distribution values. + + + + + + Gets the responsibility of each input vector when estimating + each of the component distributions, in the last iteration. + + + + + + Smoothing rule function definition for + Empirical distributions. + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Estimation options for Multivariate Empirical distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the smoothing rule used to compute the smoothing + parameter in the . + Default is to use + Silverman's rule. + + + + + + Gets or sets whether the empirical distribution should be take the + observation and weight vectors directly instead of making a copy + beforehand. + + + + + + Smoothing rule function definition for + Empirical distributions. + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Estimation options for + Empirical distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the smoothing rule used to compute the smoothing + parameter in the . Default + is to use the + normal distribution bandwidth approximation. + + + + + + Gets or sets whether the empirical distribution should be take the + observation and weight vectors directly instead of making a copy + beforehand. + + + + + + Expectation Maximization algorithm for mixture model fitting. + + + The type of the observations being fitted. + + + + This class implements a generic version of the Expectation-Maximization algorithm + which can be used with both univariate or multivariate distribution types. + + + + + + Creates a new algorithm. + + + The initial coefficient values. + The initial component distributions. + + + + + Estimates a mixture distribution for the given observations + using the Expectation-Maximization algorithm. + + + The observations from the mixture distribution. + + The log-likelihood of the estimated mixture model. + + + + + Estimates a mixture distribution for the given observations + using the Expectation-Maximization algorithm, assuming different + weights for each observation. + + + The observations from the mixture distribution. + The weight of each observation. + + The log-likelihood of the estimated mixture model. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Gets or sets the fitting options to be used + when any of the component distributions need + to be estimated from the data. + + + + + + Gets or sets convergence properties for + the expectation-maximization algorithm. + + + + + + Gets the current coefficient values. + + + + + + Gets the current component distribution values. + + + + + + Gets the responsibility of each input vector when estimating + each of the component distributions, in the last iteration. + + + + + + Estimation options for + multivariate independent distributions. + + + + + + Initializes a new instance of the class. + + + The fitting options for the inner + component distributions of the independent distributions. + + + + + Initializes a new instance of the class. + + + The fitting options for the inner + component distributions of the independent distributions. + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the fitting options for the inner + independent components in the joint distribution. + + + + + + Gets or sets the fitting options for the inner + independent components in the joint distribution. + Setting this property should make all component + distributions use the same options specified here. + + + + + + Fitting options for hidden Markov model distributions. + + + + + + Gets or sets the learning function for the hidden Markov model. + + + + + + Options for Survival distributions. + + + + + + Default survival estimation method. Returns . + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the values for + the right-censoring variable. + + + + + + Options for Empirical Hazard distributions. + + + + + + Default hazard estimator. Returns . + + + + + + Default tie handling method. Returns . + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the estimator to be used. Default is . + + + + + + Gets or sets the tie handling method to be used. Default is . + + + + + + Common interface for distributions which can be estimated from data. + + + The type of the observations, such as . + The type of the options specifying object. + + + + + Common interface for distributions which can be estimated from data. + + + The type of the observations, such as . + + + + + Common interface for probability distributions. + + + + + This interface is implemented by all generic probability distributions in the framework, including + s and s. + + + + + + Common interface for probability distributions. + + + + + This interface is implemented by all probability distributions in the framework, including + s and s. This + includes + , + , + , and + + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Common interface for sampleable distributions (i.e. distributions that + allow the generation of new samples through the + method. + + + The type of the observations, such as . + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Epanechnikov density kernel. + + + + + References: + + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Dan Styer, Oberlin College Department of Physics and Astronomy; Volume of a d-dimensional + sphere. Last updated 30 August 2007. Available at: + http://www.oberlin.edu/physics/dstyer/StatMech/VolumeDSphere.pdf + + David W. Scott, Multivariate Density Estimation: Theory, Practice, and + Visualization, Wiley, Aug 31, 1992 + + + + + + + + + Common interface for radially symmetric kernels. + + + + + + + + + + Computes the kernel profile function. + + + The point estimate x. + + The value of the profile function at point . + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + The value of the derivative profile function at point . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The constant by which the kernel formula + is multiplied at the end. Default is to consider the area + of a unit-sphere of dimension 1. + + + + + Initializes a new instance of the class. + + + The desired dimension d. + + + + + Computes the kernel density function. + + + The input point. + + + A density estimate around . + + + + + + Computes the kernel profile function. + + + The point estimate x. + + + The value of the profile function at point . + + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + + The value of the derivative profile function at point . + + + + + + Gets or sets the kernel's normalization constant. + + + + + + Gaussian density kernel. + + + + + References: + + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Dan Styer, Oberlin College Department of Physics and Astronomy; Volume of a d-dimensional + sphere. Last updated 30 August 2007. Available at: + http://www.oberlin.edu/physics/dstyer/StatMech/VolumeDSphere.pdf + + David W. Scott, Multivariate Density Estimation: Theory, Practice, and + Visualization, Wiley, Aug 31, 1992 + + + + + + + + + Initializes a new instance of the class. + + + The desired dimension d. + + + + + Initializes a new instance of the class. + + + The normalization constant to use. + + + + + Computes the kernel density function. + + + The input point. + + + A density estimate around . + + + + + + Computes the kernel profile function. + + + The squared point estimate . + + + The value of the profile function at point ². + + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + + The value of the derivative profile function at point . + + + + + + Gets or sets the kernel's normalization constant. + + + + + + Uniform density kernel. + + + + + References: + + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Dan Styer, Oberlin College Department of Physics and Astronomy; Volume of a d-dimensional + sphere. Last updated 30 August 2007. Available at: + http://www.oberlin.edu/physics/dstyer/StatMech/VolumeDSphere.pdf + + David W. Scott, Multivariate Density Estimation: Theory, Practice, and + Visualization, Wiley, Aug 31, 1992 + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + The normalization constant c. + + + + + Computes the kernel density function. + + + The input point. + + + A density estimate around . + + + + + + Computes the kernel profile function. + + + The point estimate x. + + + The value of the profile function at point . + + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + + The value of the derivative profile function at point . + + + + + + Gets or sets the kernel's normalization constant. + + + + + + Contains a multivariate distributions such as the + multivariate Normal, Multinomial, + Independent, + Joint and Mixture distributions. + + + + + The namespace class diagram is shown below. + + + + + + + + + + + Common interface for multivariate probability distributions. + + + + + This interface is implemented by both multivariate + Discrete Distributions and Continuous + Distributions. + + + For Univariate distributions, see . + + + + + + + + + + + Gets the number of variables for the distribution. + + + + + + Gets the Mean vector for the distribution. + + + An array of double-precision values containing + the mean values for this distribution. + + + + + Gets the Median vector for the distribution. + + + An array of double-precision values containing + the median values for this distribution. + + + + + Gets the Mode vector for the distribution. + + + An array of double-precision values containing + the mode values for this distribution. + + + + + Gets the Variance vector for the distribution. + + + An array of double-precision values containing + the variance values for this distribution. + + + + + Gets the Variance-Covariance matrix for the distribution. + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + Common interface for multivariate probability distributions. + + + + + This interface is implemented by both multivariate + Discrete Distributions and Continuous + Distributions. However, unlike , this interface + has a generic parameter that allows to define the type of the distribution values (i.e. + ). + + + For Univariate distributions, see . + + + + + + + + + + + Gets the number of variables for the distribution. + + + + + + Gets the Mean vector for the distribution. + + + An array of double-precision values containing + the mean values for this distribution. + + + + + Gets the Median vector for the distribution. + + + An array of double-precision values containing + the median values for this distribution. + + + + + Gets the Mode vector for the distribution. + + + An array of double-precision values containing + the mode values for this distribution. + + + + + Gets the Variance vector for the distribution. + + + An array of double-precision values containing + the variance values for this distribution. + + + + + Gets the Variance-Covariance matrix for the distribution. + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + Multivariate empirical distribution. + + + + + Empirical distributions are based solely on the data. This class + uses the empirical distribution function and the Gaussian kernel + density estimation to provide an univariate continuous distribution + implementation which depends only on sampled data. + + + References: + + + Wikipedia, The Free Encyclopedia. Empirical Distribution Function. Available on: + + http://en.wikipedia.org/wiki/Empirical_distribution_function + + PlanetMath. Empirical Distribution Function. Available on: + + http://planetmath.org/encyclopedia/EmpiricalDistributionFunction.html + + Wikipedia, The Free Encyclopedia. Kernel Density Estimation. Available on: + + http://en.wikipedia.org/wiki/Kernel_density_estimation + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Buch-Kromann, T.; Nonparametric Density Estimation (Multidimension), 2007. Available in + http://www.buch-kromann.dk/tine/nonpar/Nonparametric_Density_Estimation_multidim.pdf + + W. Härdle, M. Müller, S. Sperlich, A. Werwatz; Nonparametric and Semiparametric Models, 2004. Available + in http://sfb649.wiwi.hu-berlin.de/fedc_homepage/xplore/ebooks/html/spm/spmhtmlnode18.html + + + + + + + // Suppose we have the following data, and we would + // like to estimate a distribution from this data + + double[][] samples = + { + new double[] { 0, 1 }, + new double[] { 1, 2 }, + new double[] { 5, 1 }, + new double[] { 7, 1 }, + new double[] { 6, 1 }, + new double[] { 5, 7 }, + new double[] { 2, 1 }, + }; + + // Start by specifying a density kernel + IDensityKernel kernel = new EpanechnikovKernel(dimension: 2); + + // Create a multivariate Empirical distribution from the samples + var dist = new MultivariateEmpiricalDistribution(kernel, samples); + + + // Common measures + double[] mean = dist.Mean; // { 3.71, 2.00 } + double[] median = dist.Median; // { 3.71, 2.00 } + double[] var = dist.Variance; // { 7.23, 5.00 } (diagonal from cov) + double[,] cov = dist.Covariance; // { { 7.23, 0.83 }, { 0.83, 5.00 } } + + // Probability mass functions + double pdf1 = dist.ProbabilityDensityFunction(new double[] { 2, 1 }); // 0.039131176997318849 + double pdf2 = dist.ProbabilityDensityFunction(new double[] { 4, 2 }); // 0.010212109770266639 + double pdf3 = dist.ProbabilityDensityFunction(new double[] { 5, 7 }); // 0.02891906722705221 + double lpdf = dist.LogProbabilityDensityFunction(new double[] { 5, 7 }); // -3.5432541357714742 + + + + + + + + + + Abstract class for Multivariate Probability Distributions. + + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given value will occur is called + the probability function (or probability density function, abbreviated PDF), and + the function describing the cumulative probability that a given value or any value + smaller than it will occur is called the distribution function (or cumulative + distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + Base class for statistical distribution implementations. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Constructs a new MultivariateDistribution class. + + + The number of dimensions in the distribution. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Gets the number of variables for this distribution. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Gets the mode for this distribution. + + + A vector containing the mode values for the distribution. + + + + + Gets the median for this distribution. + + + A vector containing the median values for the distribution. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The number of repetition counts for each sample. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples forming the distribution. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples forming the distribution. + The fractional weights to use for the samples. + The weights must sum up to one. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples forming the distribution. + The number of repetition counts for each sample. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples. + The number of repetition counts for each sample. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The number of repetition counts for each sample. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + + An estimative of the smoothing parameter. + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + + An estimative of the smoothing parameter. + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the kernel density function used in this distribution. + + + + + + Gets the samples giving this empirical distribution. + + + + + + Gets the fractional weights associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the repetition counts associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the total number of samples in this distribution. + + + + + + Gets the bandwidth smoothing parameter + used in the kernel density estimation. + + + + + + Gets the mean for this distribution. + + + + A vector containing the mean values for the distribution. + + + + + + Gets the variance for this distribution. + + + + A vector containing the variance values for the distribution. + + + + + + Gets the variance-covariance matrix for this distribution. + + + + A matrix containing the covariance values for the distribution. + + + + + + Inverse Wishart Distribution. + + + + + The inverse Wishart distribution, also called the inverted Wishart distribution, + is a probability distribution defined on real-valued positive-definite matrices. + In Bayesian statistics it is used as the conjugate prior for the covariance matrix + of a multivariate normal distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Inverse Wishart distribution. + Available from: http://en.wikipedia.org/wiki/Inverse-Wishart_distribution + + + + + + // Create a Inverse Wishart with the parameters + var invWishart = new InverseWishartDistribution( + + // Degrees of freedom + degreesOfFreedom: 4, + + // Scale parameter + inverseScale: new double[,] + { + { 1.7, -0.2 }, + { -0.2, 5.3 }, + } + ); + + // Common measures + double[] var = invWishart.Variance; // { -3.4, -10.6 } + double[,] cov = invWishart.Covariance; // see below + double[,] mmean = invWishart.MeanMatrix; // see below + + // cov mean + // -5.78 -4.56 1.7 -0.2 + // -4.56 -56.18 -0.2 5.3 + + // (the above matrix representations have been transcribed to text using) + string scov = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture); + string smean = mmean.ToString(DefaultMatrixFormatProvider.InvariantCulture); + + // For compatibility reasons, .Mean stores a flattened mean matrix + double[] mean = invWishart.Mean; // { 1.7, -0.2, -0.2, 5.3 } + + + // Probability density functions + double pdf = invWishart.ProbabilityDensityFunction(new double[,] + { + { 5.2, 0.2 }, // 0.000029806281690351203 + { 0.2, 4.2 }, + }); + + double lpdf = invWishart.LogProbabilityDensityFunction(new double[,] + { + { 5.2, 0.2 }, // -10.420791391688828 + { 0.2, 4.2 }, + }); + + + + + + + + + Creates a new Inverse Wishart distribution. + + + The degrees of freedom v. + The inverse scale matrix Ψ (psi). + + + + + Not supported. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the mean for this distribution as a flat matrix. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Von-Mises Fisher distribution. + + + + + In directional statistics, the von Mises–Fisher distribution is a probability distribution + on the (p-1)-dimensional sphere in R^p. If p = 2 the distribution reduces to the + von Mises distribution on the circle. + + + References: + + + Wikipedia, The Free Encyclopedia. Von Mises-Fisher Distribution. Available on: + + https://en.wikipedia.org/wiki/Von_Mises%E2%80%93Fisher_distribution + + + + + + + + + Constructs a Von-Mises Fisher distribution with unit mean. + + + The number of dimensions in the distribution. + The concentration value κ (kappa). + + + + + Constructs a Von-Mises Fisher distribution with unit mean. + + + The mean direction vector (with unit length). + The concentration value κ (kappa). + + + + + Not supported. + + + + + + Gets the probability density function (pdf) for this distribution evaluated at point x. + + + + A single point in the distribution range. For a univariate distribution, this should be + a single double value. For a multivariate distribution, this should be a double array. + + + + The probability of x occurring in the current distribution. + + + x;The vector should have the same dimension as the distribution. + + + The Probability Density Function (PDF) describes the probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + A vector containing the mean values for the distribution. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Wishart Distribution. + + + + + The Wishart distribution is a generalization to multiple dimensions of + the Chi-Squared distribution, or, in + the case of non-integer degrees of + freedom, of the Gamma distribution + . + + + References: + + + Wikipedia, The Free Encyclopedia. Wishart distribution. + Available from: http://en.wikipedia.org/wiki/Wishart_distribution + + + + + + // Create a Wishart distribution with the parameters: + WishartDistribution wishart = new WishartDistribution( + + // Degrees of freedom + degreesOfFreedom: 7, + + // Scale parameter + scale: new double[,] + { + { 4, 1, 1 }, + { 1, 2, 2 }, // (must be symmetric and positive definite) + { 1, 2, 6 }, + } + ); + + // Common measures + double[] var = wishart.Variance; // { 224, 56, 504 } + double[,] cov = wishart.Covariance; // see below + double[,] meanm = wishart.MeanMatrix; // see below + + // 224 63 175 28 7 7 + // cov = 63 56 112 mean = 7 14 14 + // 175 112 504 7 14 42 + + // (the above matrix representations have been transcribed to text using) + string scov = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture); + string smean = meanm.ToString(DefaultMatrixFormatProvider.InvariantCulture); + + // For compatibility reasons, .Mean stores a flattened mean matrix + double[] mean = wishart.Mean; // { 28, 7, 7, 7, 14, 14, 7, 14, 42 } + + + // Probability density functions + double pdf = wishart.ProbabilityDensityFunction(new double[,] + { + { 8, 3, 1 }, + { 3, 7, 1 }, // 0.000000011082455043473361 + { 1, 1, 8 }, + }); + + double lpdf = wishart.LogProbabilityDensityFunction(new double[,] + { + { 8, 3, 1 }, + { 3, 7, 1 }, // -18.317902605850534 + { 1, 1, 8 }, + }); + + + + + + + + + Creates a new Wishart distribution. + + + The degrees of freedom n. + The positive-definite matrix scale matrix V. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Unsupported. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the degrees of freedom for this Wishart distribution. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the mean for this distribution as a flat matrix. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Joint distribution assuming independence between vector components. + + + + + In probability and statistics, given at least two random variables X, + Y, ..., that are defined on a probability space, the joint probability + distribution for X, Y, ... is a probability distribution that + gives the probability that each of X, Y, ... falls in any particular range or + discrete set of values specified for that variable. In the case of only two + random variables, this is called a bivariate distribution, but the concept + generalizes to any number of random variables, giving a multivariate distribution. + + + + This class is also available in a generic version, allowing for any + choice of component distribution (. + + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Joint_probability_distribution + + + + + The following example shows how to declare and initialize an Independent Joint + Gaussian Distribution using known means and variances for each component. + + + // Declare two normal distributions + NormalDistribution pa = new NormalDistribution(4.2, 1); // p(a) + NormalDistribution pb = new NormalDistribution(7.0, 2); // p(b) + + // Now, create a joint distribution combining these two: + var joint = new Independent(pa, pb); + + // This distribution assumes the distributions of the two components are independent, + // i.e. if we have 2D input vectors on the form {a, b}, then p({a,b}) = p(a) * p(b). + + // Lets check a simple example. Consider a 2D input vector x = { 4.2, 7.0 } as + // + double[] x = new double[] { 4.2, 7.0 }; + + // Those two should be completely equivalent: + double p1 = joint.ProbabilityDensityFunction(x); + double p2 = pa.ProbabilityDensityFunction(x[0]) * pb.ProbabilityDensityFunction(x[1]); + + bool equal = p1 == p2; // at this point, equal should be true. + + + + + + + + Joint distribution assuming independence between vector components. + + + The type of the underlying distributions. + + + + In probability and statistics, given at least two random variables X, + Y, ..., that are defined on a probability space, the joint probability + distribution for X, Y, ... is a probability distribution that + gives the probability that each of X, Y, ... falls in any particular range or + discrete set of values specified for that variable. In the case of only two + random variables, this is called a bivariate distribution, but the concept + generalizes to any number of random variables, giving a multivariate distribution. + + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Joint_probability_distribution + + + + + + The following example shows how to declare and initialize an Independent Joint + Gaussian Distribution using known means and variances for each component. + + + // Declare two normal distributions + NormalDistribution pa = new NormalDistribution(4.2, 1); // p(a) + NormalDistribution pb = new NormalDistribution(7.0, 2); // p(b) + + // Now, create a joint distribution combining these two: + var joint = new Independent<NormalDistribution>(pa, pb); + + // This distribution assumes the distributions of the two components are independent, + // i.e. if we have 2D input vectors on the form {a, b}, then p({a,b}) = p(a) * p(b). + + // Lets check a simple example. Consider a 2D input vector x = { 4.2, 7.0 } as + // + double[] x = new double[] { 4.2, 7.0 }; + + // Those two should be completely equivalent: + double p1 = joint.ProbabilityDensityFunction(x); + double p2 = pa.ProbabilityDensityFunction(x[0]) * pb.ProbabilityDensityFunction(x[1]); + + bool equal = p1 == p2; // at this point, equal should be true. + + + + The following example shows how to fit a distribution (estimate + its parameters) from a given dataset. + + + // Let's consider an input dataset of 2D vectors. We would + // like to estimate an Independent<NormalDistribution> + // which best models this data. + + double[][] data = + { + // x, y + new double[] { 1, 8 }, + new double[] { 2, 6 }, + new double[] { 5, 7 }, + new double[] { 3, 9 }, + }; + + // We start by declaring some initial guesses for the + // distributions of each random variable (x, and y): + // + var distX = new NormalDistribution(0, 1); + var distY = new NormalDistribution(0, 1); + + // Next, we declare our initial guess Independent distribution + var joint = new Independent<NormalDistribution>(distX, distY); + + // We can now fit the distribution to our data, + // producing an estimate of its parameters: + // + joint.Fit(data); + + // At this point, we have estimated our distribution. + + double[] mean = joint.Mean; // should be { 2.75, 7.50 } + double[] var = joint.Variance; // should be { 2.917, 1.667 } + + // | 2.917, 0.000 | + double[,] cov = joint.Covariance; // Cov = | | + // | 0.000, 1.667 | + + // The covariance matrix is diagonal, as it would be expected + // if is assumed there are no interactions between components. + + + + + + + Initializes a new instance of the class. + + + The components. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + For an example on how to fit an independent joint distribution, please + take a look at the examples section for . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + For an example on how to fit an independent joint distribution, please + take a look at the examples section for . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the component distributions of the joint. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + For an independent distribution, this matrix will always be diagonal. + + + + + + Initializes a new instance of the class. + + + The components. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Contains univariate distributions such as Normal, + Cauchy, + Hypergeometric, Poisson, + Bernoulli, and specialized distributions such + as the Kolmogorov-Smirnov, + Nakagami, + Weibull, and Von-Mises distributions. + + + + + The namespace class diagram is shown below. + + + + + + + + + + + Common interface for univariate probability distributions. + + + + + This interface is implemented by both univariate + Discrete Distributions and Continuous + Distributions. + + + For Multivariate distributions, see . + + + + + + + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for this + distribution in the semi-closed interval (a; b] given as + P(a < X ≤ b). + + + The start of the semi-closed interval (a; b]. + The end of the semi-closed interval (a; b]. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the mean value for the distribution. + + + The distribution's mean. + + + + + Gets the variance value for the distribution. + + + The distribution's variance. + + + + + Gets the median value for the distribution. + + + The distribution's median. + + + + + Gets the mode value for the distribution. + + + The distribution's mode. + + + + + Gets entropy of the distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Gets the Quartiles for this distribution. + + + A object containing the first quartile + (Q1) as its minimum value, and the third quartile (Q2) as the maximum. + + + + + Common interface for univariate probability distributions. + + + + + This interface is implemented by both univariate + Discrete Distributions and Continuous + Distributions. However, unlike , this interface + has a generic parameter that allows to define the type of the distribution values (i.e. + ). + + + For Multivariate distributions, see . + + + + + + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Gets the mean value for the distribution. + + + The distribution's mean. + + + + + Gets the variance value for the distribution. + + + The distribution's variance. + + + + + Gets the median value for the distribution. + + + The distribution's median. + + + + + Gets the mode value for the distribution. + + + The distribution's mode. + + + + + Gets entropy of the distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Estimation options for + Cauchy distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets a value indicating whether the distribution parameters + should be estimated using maximum likelihood. Default is true. + + + + The Cauchy distribution parameters can be estimated in many ways. One + approach is to use order statistics to derive approximations to the + location and scale parameters by analysis the interquartile range of + the data. The other approach is to use Maximum Likelihood to estimate + the parameters. The MLE does not exists in simple algebraic form, so + it has to be estimated using numeric optimization. + + + true if the parameters should be estimated by ML; otherwise, false. + + + + + Gets or sets a value indicating whether the scale + parameter should be estimated. Default is true. + + + true if the scale parameter should be estimated; otherwise, false. + + + + + Gets or sets a value indicating whether the location + parameter should be estimated. Default is true. + + + true if the location parameter should be estimated; otherwise, false. + + + + + Estimable parameters of Hypergeometric distributions. + + + + + + Population size parameter N. + + + + + + Successes in population parameter m. + + + + + + Estimation options for Hypergeometric distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets which parameter of the Hypergeometric distribution should be estimated. + + + The hypergeometric parameters to estimate. + + + + + Estimation options for general discrete (categorical) distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the minimum allowed probability + in the frequency tables specifying the discrete + distribution. + + + + + + Gets ors sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Estimation options for + Von-Mises distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets a value indicating whether to use bias correction + when estimating the concentration parameter of the von-Mises + distribution. + + + true to use bias correction; otherwise, false. + + For more information, see: Best, D. and Fisher N. (1981). The bias + of the maximum likelihood estimators of the von Mises-Fisher concentration + parameters. Communications in Statistics - Simulation and Computation, B10(5), + 493-502. + + + + + + Common interface for mixture distributions. + + + + The type of the mixture distribution, if either univariate or multivariate. + + + + + + Gets the mixture coefficients (component weights). + + + + + + Gets the mixture components. + + + + + + Abstract class for multivariate discrete probability distributions. + + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given discrete value will + occur is called the probability function (or probability mass function, + abbreviated PMF), and the function describing the cumulative probability + that a given value or any value smaller than it will occur is called the + distribution function (or cumulative distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + Constructs a new MultivariateDiscreteDistribution class. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Not supported. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Gets the number of variables for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the mean values for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the variance values for this distribution. + + + + + + Gets the variance for this distribution. + + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + + Gets the mode for this distribution. + + + + An array of double-precision values containing + the mode values for this distribution. + + + + + + Gets the median for this distribution. + + + + An array of double-precision values containing + the median values for this distribution. + + + + + + Estimation options for univariate + and multivariate + mixture distributions. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + + + + + Initializes a new instance of the class. + + + The convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + The fitting options for the inner + component distributions of the mixture density. + + + + + Gets or sets the convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + + + The convergence threshold. + + + + + Gets or sets the maximum number of iterations + to be performed by the Expectation-Maximization + algorithm. Default is zero (iterate until convergence). + + + + + + Gets or sets the fitting options for the inner + component distributions of the mixture density. + + + The fitting options for inner distributions. + + + + + Gets or sets whether to make computations using the log + -domain. This might improve accuracy on large datasets. + + + + + + Estimation options for + Normal distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the regularization step to + avoid singular or non-positive definite + covariance matrices. Default is 0. + + + The regularization step. + + + + + Gets or sets a value indicating whether the covariance + matrix to be estimated should be assumed to be diagonal. + + + true to estimate a diagonal covariance matrix; otherwise, false. + + + + + Gets or sets whether the estimation function should + allow non-positive definite covariance matrices by + using the Singular Value Decomposition Function. + + + + + + Mixture of multivariate probability distributions. + + + + + A mixture density is a probability density function which is expressed + as a convex combination (i.e. a weighted sum, with non-negative weights + that sum to 1) of other probability density functions. The individual + density functions that are combined to make the mixture density are + called the mixture components, and the weights associated with each + component are called the mixture weights. + + + References: + + + Wikipedia, The Free Encyclopedia. Mixture density. Available on: + http://en.wikipedia.org/wiki/Mixture_density + + + + + The type of the multivariate component distributions. + + + + + // Randomly initialize some mixture components + MultivariateNormalDistribution[] components = new MultivariateNormalDistribution[2]; + components[0] = new MultivariateNormalDistribution(new double[] { 2 }, new double[,] { { 1 } }); + components[1] = new MultivariateNormalDistribution(new double[] { 5 }, new double[,] { { 1 } }); + + // Create an initial mixture + var mixture = new MultivariateMixture<MultivariateNormalDistribution>(components); + + // Now, suppose we have a weighted data + // set. Those will be the input points: + + double[][] points = new double[] { 0, 3, 1, 7, 3, 5, 1, 2, -1, 2, 7, 6, 8, 6 } // (14 points) + .ToArray(); + + // And those are their respective unnormalized weights: + double[] weights = { 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 2, 3, 1, 1 }; // (14 weights) + + // Let's normalize the weights so they sum up to one: + weights = weights.Divide(weights.Sum()); + + // Now we can fit our model to the data: + mixture.Fit(points, weights); // done! + + // Our model will be: + double mean1 = mixture.Components[0].Mean[0]; // 1.41126 + double mean2 = mixture.Components[1].Mean[0]; // 6.53301 + + // With mixture coefficients + double pi1 = mixture.Coefficients[0]; // 0.51408489193241225 + double pi2 = mixture.Coefficients[1]; // 0.48591510806758775 + + // If we need the GaussianMixtureModel functionality, we can + // use the estimated mixture to initialize a new model: + GaussianMixtureModel gmm = new GaussianMixtureModel(mixture); + + mean1 = gmm.Gaussians[0].Mean[0]; // 1.41126 (same) + mean2 = gmm.Gaussians[1].Mean[0]; // 6.53301 (same) + + p1 = gmm.Gaussians[0].Proportion; // 0.51408 (same) + p2 = gmm.Gaussians[1].Proportion; // 0.48591 (same) + + + + + + + + + + + Initializes a new instance of the class. + + + The mixture distribution components. + + + + + Initializes a new instance of the class. + + + The mixture weight coefficients. + The mixture distribution components. + + + + + Gets the probability density function (pdf) for one of + the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for one + of the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for one + of the component distributions evaluated at point x. + + + The component distribution's index. + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + The initial mixture coefficients. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + The initial mixture coefficients. + The convergence threshold for the Expectation-Maximization estimation. + Returns a new Mixture fitted to the given observations. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mixture components. + + + + + + Gets the weight coefficients. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance-covariance matrix for this distribution. + + + + + + Gets the variance vector for this distribution. + + + + + + Multinomial probability distribution. + + + + The multinomial distribution is a generalization of the binomial + distribution. The binomial distribution is the probability distribution + of the number of "successes" in n independent + Bernoulli + trials, with the same probability of "success" on each trial. + + In a multinomial distribution, the analog of the + Bernoulli distribution is the + categorical distribution, + where each trial results in exactly one of some fixed finite number + k of possible outcomes, with probabilities p1, ..., pk + and there are n independent trials. + + + References: + + + Wikipedia, The Free Encyclopedia. Multinomial distribution. Available on: + http://en.wikipedia.org/wiki/Multinomial_distribution + + + + + + // distribution parameters + int numberOfTrials = 5; + double[] probabilities = { 0.25, 0.75 }; + + // Create a new Multinomial distribution with 5 trials for 2 symbols + var dist = new MultinomialDistribution(numberOfTrials, probabilities); + + int dimensions = dist.Dimension; // 2 + + double[] mean = dist.Mean; // { 1.25, 3.75 } + double[] median = dist.Median; // { 1.25, 3.75 } + double[] var = dist.Variance; // { -0.9375, -0.9375 } + + double pdf1 = dist.ProbabilityMassFunction(new[] { 2, 3 }); // 0.26367187499999994 + double pdf2 = dist.ProbabilityMassFunction(new[] { 1, 4 }); // 0.3955078125 + double pdf3 = dist.ProbabilityMassFunction(new[] { 5, 0 }); // 0.0009765625 + double lpdf = dist.LogProbabilityMassFunction(new[] { 1, 4 }); // -0.9275847384929139 + + // output is "Multinomial(x; n = 5, p = { 0.25, 0.75 })" + string str = dist.ToString(CultureInfo.InvariantCulture); + + + + + + + + + + Initializes a new instance of the class. + + + The total number of trials N. + A vector containing the probabilities of seeing each of possible outcomes. + + + + + Not supported. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the event probabilities associated with the trials. + + + + + + Gets the number of Bernoulli trials N. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance vector for this distribution. + + + + + + Gets the variance-covariance matrix for this distribution. + + + + + + Beta Distribution (of the first kind). + + + + + The beta distribution is a family of continuous probability distributions + defined on the interval (0, 1) parameterized by two positive shape parameters, + typically denoted by α and β. The beta distribution can be suited to the + statistical modeling of proportions in applications where values of proportions + equal to 0 or 1 do not occur. One theoretical case where the beta distribution + arises is as the distribution of the ratio formed by one random variable having + a Gamma distribution divided by the sum of it and another independent random + variable also having a Gamma distribution with the same scale parameter (but + possibly different shape parameter). + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Beta_distribution + + + + + + Note: More advanced examples, including distribution estimation and random number + generation are also available at the + page. + + + The following example shows how to instantiate and use a Beta + distribution given its alpha and beta parameters: + + + double alpha = 0.42; + double beta = 1.57; + + // Create a new Beta distribution with α = 0.42 and β = 1.57 + BetaDistribution distribution = new BetaDistribution(alpha, beta); + + // Common measures + double mean = distribution.Mean; // 0.21105527638190955 + double median = distribution.Median; // 0.11577711097114812 + double var = distribution.Variance; // 0.055689279830523512 + + // Cumulative distribution functions + double cdf = distribution.DistributionFunction(x: 0.27); // 0.69358638272337991 + double ccdf = distribution.ComplementaryDistributionFunction(x: 0.27); // 0.30641361727662009 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 0.26999999068687469 + + // Probability density functions + double pdf = distribution.ProbabilityDensityFunction(x: 0.27); // 0.94644031936694828 + double lpdf = distribution.LogProbabilityDensityFunction(x: 0.27); // -0.055047364344046057 + + // Hazard (failure rate) functions + double hf = distribution.HazardFunction(x: 0.27); // 3.0887671630877072 + double chf = distribution.CumulativeHazardFunction(x: 0.27); // 1.1828193992944409 + + // String representation + string str = distribution.ToString(); // B(x; α = 0.42, β = 1.57) + + + + The following example shows to create a Beta distribution + given a discrete number of trials and the number of successes + within those trials. It also shows how to compute the 2.5 and + 97.5 percentiles of the distribution: + + + int trials = 100; + int successes = 78; + + BetaDistribution distribution = new BetaDistribution(successes, trials); + + double mean = distribution.Mean; // 0.77450980392156865 + double median = distribution.Median; // 0.77630912598534851 + + double p025 = distribution.InverseDistributionFunction(p: 0.025); // 0.68899653915764347 + double p975 = distribution.InverseDistributionFunction(p: 0.975); // 0.84983461640764513 + + + + The next example shows how to generate 1000 new samples from a Beta distribution: + + + // Using the distribution's parameters + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, min: 0, max: 1, samples: 1000); + + // Using an existing distribution + var b = new GeneralizedBetaDistribution(alpha: 1, beta: 2); + double[] new_samples = b.Generate(1000); + + + + And finally, how to estimate the parameters of a Beta distribution from + a set of observations, using either the Method-of-moments or the Maximum + Likelihood Estimate. + + + // Draw 100000 observations from a Beta with α = 2, β = 3: + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, samples: 100000); + + // Estimate a distribution from the data + var B = BetaDistribution.Estimate(samples); + + // Explicitly using Method-of-moments estimation + var mm = BetaDistribution.Estimate(samples, + new BetaOptions { Method = BetaEstimationMethod.Moments }); + + // Explicitly using Maximum Likelihood estimation + var mle = BetaDistribution.Estimate(samples, + new BetaOptions { Method = BetaEstimationMethod.MaximumLikelihood }); + + + + + + + + + + Abstract class for univariate continuous probability Distributions. + + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given value will occur is called + the probability function (or probability density function, abbreviated PDF), and + the function describing the cumulative probability that a given value or any value + smaller than it will occur is called the distribution function (or cumulative + distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + + + + Constructs a new UnivariateDistribution class. + + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for this + distribution in the semi-closed interval (a; b] given as + P(a < X ≤ b). + + + The start of the semi-closed interval (a; b]. + The end of the semi-closed interval (a; b]. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + + + Gets the Quartiles for this distribution. + + + A object containing the first quartile + (Q1) as its minimum value, and the third quartile (Q2) as the maximum. + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + + + Gets the Standard Deviation (the square root of + the variance) for the current distribution. + + + The distribution's standard deviation. + + + + + Creates a new Beta distribution. + + + + + + Creates a new Beta distribution. + + + The number of success r. Default is 0. + The number of trials n. Default is 1. + + + + + Creates a new Beta distribution. + + + The shape parameter α (alpha). + The shape parameter β (beta). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Beta's CDF is computed using the Incomplete + (regularized) Beta function I_x(a,b) as CDF(x) = I_x(a,b) + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + The Beta's PDF is computed as pdf(x) = c * x^(a - 1) * (1 - x)^(b - 1) + where constant c is c = 1.0 / Beta.Function(a, b) + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Computes the Gradient of the Log-Likelihood function for estimating Beta distributions. + + + The observed values. + The current alpha value. + The current beta value. + + + A bi-dimensional value containing the gradient w.r.t to alpha in its + first position, and the gradient w.r.t to be in its second position. + + + + + + Computes the Gradient of the Log-Likelihood function for estimating Beta distributions. + + + The sum of log(y), where y refers to all observed values. + The sum of log(1 - y), where y refers to all observed values. + The total number of observed values. + The current alpha value. + The current beta value. + A bi-dimensional vector to store the gradient. + + + A bi-dimensional vector containing the gradient w.r.t to alpha in its + first position, and the gradient w.r.t to be in its second position. + + + + + + Computes the Log-Likelihood function for estimating Beta distributions. + + + The observed values. + The current alpha value. + The current beta value. + + The log-likelihood value for the given observations and given Beta parameters. + + + + + Computes the Log-Likelihood function for estimating Beta distributions. + + + The sum of log(y), where y refers to all observed values. + The sum of log(1 - y), where y refers to all observed values. + The total number of observed values. + The current alpha value. + The current beta value. + + The log-likelihood value for the given observations and given Beta parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The number of samples to generate. + + An array of double values sampled from the specified Beta distribution. + + + + + Generates a random observation from the + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + + A random double value sampled from the specified Beta distribution. + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Gets the shape parameter α (alpha) + + + + + + Gets the shape parameter β (beta). + + + + + + Gets the number of successes r. + + + + + + Gets the number of trials n. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + The Beta's mean is computed as μ = a / (a + b). + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + The Beta's variance is computed as σ² = (a * b) / ((a + b)² * (a + b + 1)). + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the mode for this distribution. + + + + The beta distribution's mode is given + by (a - 1) / (a + b - 2). + + + + The distribution's mode value. + + + + + + Beta prime distribution. + + + + + In probability theory and statistics, the beta prime distribution (also known as inverted + beta distribution or beta distribution of the second kind) is an absolutely continuous + probability distribution defined for x > 0 with two parameters α and β, having the + probability density function: + + + x^(α-1) (1+x)^(-α-β) + f(x) = -------------------- + B(α,β) + + + + where B is the Beta function. While the related beta distribution is + the conjugate prior distribution of the parameter of a Bernoulli + distribution expressed as a probability, the beta prime distribution is the conjugate prior + distribution of the parameter of a Bernoulli distribution expressed in odds. The distribution is + a Pearson type VI distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Beta Prime distribution. Available on: + http://en.wikipedia.org/wiki/Beta_prime_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Beta prime distribution given its two non-negative shape parameters: + + + // Create a new Beta-Prime distribution with shape (4,2) + var betaPrime = new BetaPrimeDistribution(alpha: 4, beta: 2); + + double mean = betaPrime.Mean; // 4.0 + double median = betaPrime.Median; // 2.1866398762435981 + double mode = betaPrime.Mode; // 1.0 + double var = betaPrime.Variance; // +inf + + double cdf = betaPrime.DistributionFunction(x: 0.4); // 0.02570357589099781 + double pdf = betaPrime.ProbabilityDensityFunction(x: 0.4); // 0.16999719504628183 + double lpdf = betaPrime.LogProbabilityDensityFunction(x: 0.4); // -1.7719733417957513 + + double ccdf = betaPrime.ComplementaryDistributionFunction(x: 0.4); // 0.97429642410900219 + double icdf = betaPrime.InverseDistributionFunction(p: cdf); // 0.39999982363709291 + + double hf = betaPrime.HazardFunction(x: 0.4); // 0.17448200654307533 + double chf = betaPrime.CumulativeHazardFunction(x: 0.4); // 0.026039684773113869 + + string str = betaPrime.ToString(CultureInfo.InvariantCulture); // BetaPrime(x; α = 4, β = 2) + + + + + + + Constructs a new Beta-Prime distribution with the given + two non-negative shape parameters a and b. + + + The distribution's non-negative shape parameter a. + The distribution's non-negative shape parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's non-negative shape parameter a. + + + + + + Gets the distribution's non-negative shape parameter b. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution, which + for the Beta- Prime distribution ranges from 0 to all + positive numbers. + + + + A containing + the support interval for this distribution. + + + + + + Cauchy-Lorentz distribution. + + + + + The Cauchy distribution, named after Augustin Cauchy, is a continuous probability + distribution. It is also known, especially among physicists, as the Lorentz + distribution (after Hendrik Lorentz), Cauchy–Lorentz distribution, Lorentz(ian) + function, or Breit–Wigner distribution. The simplest Cauchy distribution is called + the standard Cauchy distribution. It has the distribution of a random variable that + is the ratio of two independent standard normal random variables. + + + References: + + + Wikipedia, The Free Encyclopedia. Cauchy distribution. + Available from: http://en.wikipedia.org/wiki/Cauchy_distribution + + + + + + The following example demonstrates how to instantiate a Cauchy distribution + with a given location parameter x0 and scale parameter γ (gamma), calculating + its main properties and characteristics: + + + double location = 0.42; + double scale = 1.57; + + // Create a new Cauchy distribution with x0 = 0.42 and γ = 1.57 + CauchyDistribution cauchy = new CauchyDistribution(location, scale); + + // Common measures + double mean = cauchy.Mean; // NaN - Cauchy's mean is undefined. + double var = cauchy.Variance; // NaN - Cauchy's variance is undefined. + double median = cauchy.Median; // 0.42 + + // Cumulative distribution functions + double cdf = cauchy.DistributionFunction(x: 0.27); // 0.46968025841608563 + double ccdf = cauchy.ComplementaryDistributionFunction(x: 0.27); // 0.53031974158391437 + double icdf = cauchy.InverseDistributionFunction(p: 0.69358638272337991); // 1.5130304686978195 + + // Probability density functions + double pdf = cauchy.ProbabilityDensityFunction(x: 0.27); // 0.2009112009763413 + double lpdf = cauchy.LogProbabilityDensityFunction(x: 0.27); // -1.6048922547266871 + + // Hazard (failure rate) functions + double hf = cauchy.HazardFunction(x: 0.27); // 0.3788491832800277 + double chf = cauchy.CumulativeHazardFunction(x: 0.27); // 0.63427516833243092 + + // String representation + string str = cauchy.ToString(CultureInfo.InvariantCulture); // "Cauchy(x; x0 = 0.42, γ = 1.57) + + + + The following example shows how to fit a Cauchy distribution (estimate its + location and shape parameters) given a set of observation values. + + + // Create an initial distribution + CauchyDistribution cauchy = new CauchyDistribution(); + + // Consider a vector of univariate observations + double[] observations = { 0.25, 0.12, 0.72, 0.21, 0.62, 0.12, 0.62, 0.12 }; + + // Fit to the observations + cauchy.Fit(observations); + + // Check estimated values + double location = cauchy.Location; // 0.18383 + double gamma = cauchy.Scale; // -0.10530 + + + + It is also possible to estimate only some of the Cauchy parameters at + a time. For this, you can specify a object + and pass it alongside the observations: + + + // Create options to estimate location only + CauchyOptions options = new CauchyOptions() + { + EstimateLocation = true, + EstimateScale = false + }; + + // Create an initial distribution with a pre-defined scale + CauchyDistribution cauchy = new CauchyDistribution(location: 0, scale: 4.2); + + // Fit to the observations + cauchy.Fit(observations, options); + + // Check estimated values + double location = cauchy.Location; // 0.3471218110202 + double gamma = cauchy.Scale; // 4.2 (unchanged) + + + + + + + + + + Constructs a Cauchy-Lorentz distribution + with location parameter 0 and scale 1. + + + + + + Constructs a Cauchy-Lorentz distribution + with given location and scale parameters. + + + The location parameter x0. + The scale parameter gamma (γ). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Cauchy's CDF is defined as CDF(x) = 1/π * atan2(x-location, scale) + 0.5. + + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + The Cauchy's PDF is defined as PDF(x) = c / (1.0 + ((x-location)/scale)²) + where the constant c is given by c = 1.0 / (π * scale); + + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random observation from the + Cauchy distribution with the given parameters. + + + The location parameter x0. + The scale parameter gamma. + + A random double value sampled from the specified Cauchy distribution. + + + + + Generates a random vector of observations from the + Cauchy distribution with the given parameters. + + + The location parameter x0. + The scale parameter gamma. + The number of samples to generate. + + An array of double values sampled from the specified Cauchy distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's + location parameter x0. + + + + + + Gets the distribution's + scale parameter gamma. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + The Cauchy's median is the location parameter x0. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + The Cauchy's median is the location parameter x0. + + + + + + Cauchy's mean is undefined. + + + Undefined. + + + + + Cauchy's variance is undefined. + + + Undefined. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + The Cauchy's entropy is defined as log(scale) + log(4*π). + + + + + + Gets the Standard Cauchy Distribution, + with zero location and unitary shape. + + + + + + Dirichlet distribution. + + + + + The Dirichlet distribution, often denoted Dir(α), is a family of continuous + multivariate probability distributions parameterized by a vector α of positive + real numbers. It is the multivariate generalization of the beta distribution. + + Dirichlet distributions are very often used as prior distributions in Bayesian + statistics, and in fact the Dirichlet distribution is the conjugate prior of the + categorical distribution and multinomial distribution. That is, its probability + density function returns the belief that the probabilities of K rival events are + xi given that each event has been observed αi−1 times. + + + References: + + + Wikipedia, The Free Encyclopedia. Dirichlet distribution. + Available from: http://en.wikipedia.org/wiki/Dirichlet_distribution + + + + + + // Create a Dirichlet with the following concentrations + var dirich = new DirichletDistribution(0.42, 0.57, 1.2); + + // Common measures + double[] mean = dirich.Mean; // { 0.19, 0.26, 0.54 } + double[] median = dirich.Median; // { 0.19, 0.26, 0.54 } + double[] var = dirich.Variance; // { 0.048, 0.060, 0.077 } + double[,] cov = dirich.Covariance; // see below + + + // 0.0115297440926238 0.0156475098399895 0.0329421259789253 + // cov = 0.0156475098399895 0.0212359062114143 0.0447071709713986 + // 0.0329421259789253 0.0447071709713986 0.0941203599397865 + + // (the above matrix representation has been transcribed to text using) + string str = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture); + + + // Probability mass functions + double pdf1 = dirich.ProbabilityDensityFunction(new double[] { 2, 5 }); // 0.12121671541846207 + double pdf2 = dirich.ProbabilityDensityFunction(new double[] { 4, 2 }); // 0.12024840322466089 + double pdf3 = dirich.ProbabilityDensityFunction(new double[] { 3, 7 }); // 0.082907634905068528 + double lpdf = dirich.LogProbabilityDensityFunction(new double[] { 3, 7 }); // -2.4900281233124044 + + + + + + + Creates a new symmetric Dirichlet distribution. + + + The number k of categories. + The common concentration parameter α (alpha). + + + + + Creates a new Dirichlet distribution. + + + The concentration parameters αi (alpha_i). + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not supported. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Hidden Markov Model probability distribution. + + + + + + Initializes a new instance of the class. + + + The model. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the mean values for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the variance values for this distribution. + + + + + + Gets the variance for this distribution. + + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + + Birnbaum-Saunders (Fatigue Life) distribution. + + + + + The Birnbaum–Saunders distribution, also known as the fatigue life distribution, + is a probability distribution used extensively in reliability applications to model + failure times. There are several alternative formulations of this distribution in + the literature. It is named after Z. W. Birnbaum and S. C. Saunders. + + + References: + + + Wikipedia, The Free Encyclopedia. Birnbaum–Saunders distribution. + Available from: http://en.wikipedia.org/wiki/Birnbaum%E2%80%93Saunders_distribution + + NIST/SEMATECH e-Handbook of Statistical Methods, Birnbaum-Saunders (Fatigue Life) Distribution + Available from: http://www.itl.nist.gov/div898/handbook/eda/section3/eda366a.htm + + + + + + This example shows how to create a Birnbaum-Saunders distribution + and compute some of its properties. + + + // Creates a new Birnbaum-Saunders distribution + var bs = new BirnbaumSaundersDistribution(shape: 0.42); + + double mean = bs.Mean; // 1.0882000000000001 + double median = bs.Median; // 1.0 + double var = bs.Variance; // 0.21529619999999997 + + double cdf = bs.DistributionFunction(x: 1.4); // 0.78956384911580346 + double pdf = bs.ProbabilityDensityFunction(x: 1.4); // 1.3618433601225426 + double lpdf = bs.LogProbabilityDensityFunction(x: 1.4); // 0.30883919386130815 + + double ccdf = bs.ComplementaryDistributionFunction(x: 1.4); // 0.21043615088419654 + double icdf = bs.InverseDistributionFunction(p: cdf); // 2.0618330099769064 + + double hf = bs.HazardFunction(x: 1.4); // 6.4715276077824093 + double chf = bs.CumulativeHazardFunction(x: 1.4); // 1.5585729930861034 + + string str = bs.ToString(CultureInfo.InvariantCulture); // BirnbaumSaunders(x; μ = 0, β = 1, γ = 0.42) + + + + + + + Constructs a Birnbaum-Saunders distribution + with location parameter 0, scale 1, and shape 1. + + + + + + Constructs a Birnbaum-Saunders distribution + with location parameter 0, scale 1, and the + given shape. + + + The shape parameter gamma (γ). Default is 1. + + + + + Constructs a Birnbaum-Saunders distribution + with given location, shape and scale parameters. + + + The location parameter μ. Default is 0. + The scale parameter beta (β). Default is 1. + The shape parameter gamma (γ). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's location parameter μ. + + + + + + Gets the distribution's scale parameter β. + + + + + + Gets the distribution's shape parameter γ. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The Birnbaum Saunders mean is defined as + 1 + 0.5γ². + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The Birnbaum Saunders variance is defined as + γ² (1 + (5/4)γ²). + + + + The distribution's mean value. + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Distribution types supported by the Anderson-Darling distribution. + + + + + + The statistic should reflect p-values for + a Anderson-Darling comparison against an + Uniform distribution. + + + + + + The statistic should reflect p-values for + a Anderson-Darling comparison against a + Normal distribution. + + + + + + Anderson-Darling (A²) distribution. + + + + + // Create a new Anderson Darling distribution (A²) for comparing against a Gaussian + var a2 = new AndersonDarlingDistribution(AndersonDarlingDistributionType.Normal, 30); + + double median = a2.Median; // 0.33089957635450062 + + double chf = a2.CumulativeHazardFunction(x: 0.27); // 0.42618068373640966 + double cdf = a2.DistributionFunction(x: 0.27); // 0.34700165471995292 + double ccdf = a2.ComplementaryDistributionFunction(x: 0.27); // 0.65299834528004708 + double icdf = a2.InverseDistributionFunction(p: cdf); // 0.27000000012207787 + + string str = a2.ToString(CultureInfo.InvariantCulture); // "A²(x; n = 30)" + + + + + + + + + Creates a new Anderson-Darling distribution. + + + The type of the compared distribution. + The number of samples. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the type of the distribution that the + Anderson-Darling is being performed against. + + + + + + Gets the number of samples distribution parameter. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Kumaraswamy distribution. + + + + + In probability and statistics, the Kumaraswamy's double bounded distribution is a + family of continuous probability distributions defined on the interval [0,1] differing + in the values of their two non-negative shape parameters, a and b. + It is similar to the Beta distribution, but much simpler to use especially in simulation + studies due to the simple closed form of both its probability density function and + cumulative distribution function. This distribution was originally proposed by Poondi + Kumaraswamy for variables that are lower and upper bounded. + + + A good example of the use of the Kumaraswamy distribution is the storage volume of a + reservoir of capacity zmax whose upper bound is zmax and lower + bound is 0 (Fletcher and Ponnambalam, 1996). + + + + References: + + + Wikipedia, The Free Encyclopedia. Kumaraswamy distribution. Available on: + http://en.wikipedia.org/wiki/Kumaraswamy_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Kumaraswamy distribution given its two non-negative shape parameters: + + + // Create a new Kumaraswamy distribution with shape (4,2) + var kumaraswamy = new KumaraswamyDistribution(a: 4, b: 2); + + double mean = kumaraswamy.Mean; // 0.71111111111111114 + double median = kumaraswamy.Median; // 0.73566031573423674 + double mode = kumaraswamy.Mode; // 0.80910671157022118 + double var = kumaraswamy.Variance; // 0.027654320987654302 + + double cdf = kumaraswamy.DistributionFunction(x: 0.4); // 0.050544639999999919 + double pdf = kumaraswamy.ProbabilityDensityFunction(x: 0.4); // 0.49889280000000014 + double lpdf = kumaraswamy.LogProbabilityDensityFunction(x: 0.4); // -0.69536403596913343 + + double ccdf = kumaraswamy.ComplementaryDistributionFunction(x: 0.4); // 0.94945536000000008 + double icdf = kumaraswamy.InverseDistributionFunction(p: cdf); // 0.40000011480618253 + + double hf = kumaraswamy.HazardFunction(x: 0.4); // 0.52545155993431869 + double chf = kumaraswamy.CumulativeHazardFunction(x: 0.4); // 0.051866764053008864 + + string str = kumaraswamy.ToString(CultureInfo.InvariantCulture); // Kumaraswamy(x; a = 4, b = 2) + + + + + + + Constructs a new Kumaraswamy's double bounded distribution with + the given two non-negative shape parameters a and b. + + + The distribution's non-negative shape parameter a. + The distribution's non-negative shape parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's non-negative shape parameter a. + + + + + + Gets the distribution's non-negative shape parameter b. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Abstract class for univariate discrete probability distributions. + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given discrete value will + occur is called the probability function (or probability mass function, + abbreviated PMF), and the function describing the cumulative probability + that a given value or any value smaller than it will occur is called the + distribution function (or cumulative distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + + + + + Constructs a new UnivariateDistribution class. + + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets P(X ≤ k), the cumulative distribution function + (cdf) for this distribution evaluated at point k. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets P(X ≤ k) or P(X < k), the cumulative distribution function + (cdf) for this distribution evaluated at point k, depending + on the value of the parameter. + + + + A single point in the distribution range. + + True to return P(X ≤ x), false to return P(X < x). Default is true. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + // Compute P(X = k) + double equal = dist.ProbabilityMassFunction(k: 1); + + // Compute P(X < k) + double less = dist.DistributionFunction(k: 1, inclusive: false); + + // Compute P(X ≤ k) + double lessThanOrEqual = dist.DistributionFunction(k: 1, inclusive: true); + + // Compute P(X > k) + double greater = dist.ComplementaryDistributionFunction(k: 1); + + // Compute P(X ≥ k) + double greaterThanOrEqual = dist.ComplementaryDistributionFunction(k: 1, inclusive: true); + + + + + + + + Gets the cumulative distribution function (cdf) for this + distribution in the semi-closed interval (a; b] given as + P(a < X ≤ b). + + + The start of the semi-closed interval (a; b]. + The end of the semi-closed interval (a; b]. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p using a numerical + approximation based on binary search. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point k. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + True to return P(X >= x), false to return P(X > x). Default is false. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + // Compute P(X = k) + double equal = dist.ProbabilityMassFunction(k: 1); + + // Compute P(X < k) + double less = dist.DistributionFunction(k: 1, inclusive: false); + + // Compute P(X ≤ k) + double lessThanOrEqual = dist.DistributionFunction(k: 1, inclusive: true); + + // Compute P(X > k) + double greater = dist.ComplementaryDistributionFunction(k: 1); + + // Compute P(X ≥ k) + double greaterThanOrEqual = dist.ComplementaryDistributionFunction(k: 1, inclusive: true); + + + + + + + Gets P(X > k) the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point k. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The probability of k occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + + + Gets the Standard Deviation (the square root of + the variance) for the current distribution. + + + The distribution's standard deviation. + + + + + Gets the Quartiles for this distribution. + + + A object containing the first quartile + (Q1) as its minimum value, and the third quartile (Q2) as the maximum. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Shapiro-Wilk distribution. + + + + + The Shapiro-Wilk distribution models the distribution of + Shapiro-Wilk's test statistic. + + + + References: + + + Royston, P. "Algorithm AS 181: The W test for Normality", Applied Statistics (1982), + Vol. 31, pp. 176–180. + + Royston, P. "Remark AS R94", Applied Statistics (1995), Vol. 44, No. 4, pp. 547-551. + Available at http://lib.stat.cmu.edu/apstat/R94 + + Royston, P. "Approximating the Shapiro-Wilk W-test for non-normality", + Statistics and Computing (1992), Vol. 2, pp. 117-119. + + Royston, P. "An Extension of Shapiro and Wilk's W Test for Normality to Large + Samples", Journal of the Royal Statistical Society Series C (1982a), Vol. 31, + No. 2, pp. 115-124. + + + + + + // Create a new Shapiro-Wilk's W for 5 samples + var sw = new ShapiroWilkDistribution(samples: 5); + + double mean = sw.Mean; // 0.81248567196628929 + double median = sw.Median; // 0.81248567196628929 + double mode = sw.Mode; // 0.81248567196628929 + + double cdf = sw.DistributionFunction(x: 0.84); // 0.83507812080728383 + double pdf = sw.ProbabilityDensityFunction(x: 0.84); // 0.82021062372326459 + double lpdf = sw.LogProbabilityDensityFunction(x: 0.84); // -0.1981941135071546 + + double ccdf = sw.ComplementaryDistributionFunction(x: 0.84); // 0.16492187919271617 + double icdf = sw.InverseDistributionFunction(p: cdf); // 0.84000000194587177 + + double hf = sw.HazardFunction(x: 0.84); // 4.9733281462602292 + double chf = sw.CumulativeHazardFunction(x: 0.84); // 1.8022833766369502 + + string str = sw.ToString(CultureInfo.InvariantCulture); // W(x; n = 12) + + + + + + + Creates a new Shapiro-Wilk distribution. + + + The number of samples. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of samples distribution parameter. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Not supported. + + + + + + Log-Logistic distribution. + + + + + In probability and statistics, the log-logistic distribution (known as the Fisk + distribution in economics) is a continuous probability distribution for a non-negative + random variable. It is used in survival analysis as a parametric model for events + whose rate increases initially and decreases later, for example mortality rate from + cancer following diagnosis or treatment. It has also been used in hydrology to model + stream flow and precipitation, and in economics as a simple model of the distribution + of wealth or income. + + + The log-logistic distribution is the probability distribution of a random variable + whose logarithm has a logistic distribution. It is similar in shape to the log-normal + distribution but has heavier tails. Its cumulative distribution function can be written + in closed form, unlike that of the log-normal. + + + References: + + + Wikipedia, The Free Encyclopedia. Log-logistic distribution. Available on: + http://en.wikipedia.org/wiki/Log-logistic_distribution + + + + + + This examples shows how to create a Log-Logistic distribution + and compute some of its properties and characteristics. + + + // Create a LLD2 distribution with scale = 0.42, shape = 2.2 + var log = new LogLogisticDistribution(scale: 0.42, shape: 2.2); + + double mean = log.Mean; // 0.60592605102976937 + double median = log.Median; // 0.42 + double mode = log.Mode; // 0.26892249963239817 + double var = log.Variance; // 1.4357858982592435 + + double cdf = log.DistributionFunction(x: 1.4); // 0.93393329906725353 + double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.096960115938100763 + double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -2.3334555609306102 + + double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.066066700932746525 + double icdf = log.InverseDistributionFunction(p: cdf); // 1.4000000000000006 + + double hf = log.HazardFunction(x: 1.4); // 1.4676094699628273 + double chf = log.CumulativeHazardFunction(x: 1.4); // 2.7170904270953637 + + string str = log.ToString(CultureInfo.InvariantCulture); // LogLogistic(x; α = 0.42, β = 2.2) + + + + + + + + + + Constructs a Log-Logistic distribution + with unit scale and unit shape. + + + + + + Constructs a Log-Logistic distribution + with the given scale and unit shape. + + + The distribution's scale value α (alpha). + + + + + Constructs a Log-Logistic distribution + with the given scale and shape parameters. + + + The distribution's scale value α (alpha). + The distribution's shape value β (beta). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Creates a new using + the location-shape parametrization. In this parametrization, + is taken as 1 / . + + + The location parameter μ (mu) [taken as μ = α]. + The distribution's shape value σ (sigma) [taken as σ = β]. + + + A with α = μ and β = 1/σ. + + + + + + Gets the distribution's scale value (α). + + + + + + Gets the distribution's shape value (β). + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Inverse chi-Square (χ²) probability distribution + + + + + In probability and statistics, the inverse-chi-squared distribution (or + inverted-chi-square distribution) is a continuous probability distribution + of a positive-valued random variable. It is closely related to the + chi-squared distribution and its + specific importance is that it arises in the application of Bayesian + inference to the normal distribution, where it can be used as the + prior and posterior distribution for an unknown variance. + + + The inverse-chi-squared distribution (or inverted-chi-square distribution) is + the probability distribution of a random variable whose multiplicative inverse + (reciprocal) has a chi-squared distribution. + It is also often defined as the distribution of a random variable whose reciprocal + divided by its degrees of freedom is a chi-squared distribution. That is, if X has + the chi-squared distribution with v degrees of freedom, then according to + the first definition, 1/X has the inverse-chi-squared distribution with v + degrees of freedom; while according to the second definition, vX has the + inverse-chi-squared distribution with v degrees of freedom. Only the first + definition is covered by this class. + + + + References: + + + Wikipedia, The Free Encyclopedia. Inverse-chi-square distribution. Available on: + http://en.wikipedia.org/wiki/Inverse-chi-squared_distribution + + + + + + The following example demonstrates how to create a new inverse + χ² distribution with the given degrees of freedom. + + + // Create a new inverse χ² distribution with 7 d.f. + var invchisq = new InverseChiSquareDistribution(degreesOfFreedom: 7); + double mean = invchisq.Mean; // 0.2 + double median = invchisq.Median; // 6.345811068141737 + double var = invchisq.Variance; // 75 + + double cdf = invchisq.DistributionFunction(x: 6.27); // 0.50860033566176044 + double pdf = invchisq.ProbabilityDensityFunction(x: 6.27); // 0.0000063457380298844403 + double lpdf = invchisq.LogProbabilityDensityFunction(x: 6.27); // -11.967727146795536 + + double ccdf = invchisq.ComplementaryDistributionFunction(x: 6.27); // 0.49139966433823956 + double icdf = invchisq.InverseDistributionFunction(p: cdf); // 6.2699998329362963 + + double hf = invchisq.HazardFunction(x: 6.27); // 0.000012913598625327002 + double chf = invchisq.CumulativeHazardFunction(x: 6.27); // 0.71049750196765715 + + string str = invchisq.ToString(); // "Inv-χ²(x; df = 7)" + + + + + + + + + Constructs a new Inverse Chi-Square distribution + with the given degrees of freedom. + + + The degrees of freedom for the distribution. + + + + + Gets the probability density function (pdf) for + the χ² distribution evaluated at point x. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the cumulative distribution function (cdf) for + the χ² distribution evaluated at point x. + + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + This method is not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the Degrees of Freedom for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + + + + Hyperbolic Secant distribution. + + + + + In probability theory and statistics, the hyperbolic secant distribution is + a continuous probability distribution whose probability density function and + characteristic function are proportional to the hyperbolic secant function. + The hyperbolic secant function is equivalent to the inverse hyperbolic cosine, + and thus this distribution is also called the inverse-cosh distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Hyperbolic secant distribution. Available on: + http://en.wikipedia.org/wiki/Sech_distribution + + + + + + This examples shows how to create a Sech distribution, + compute some of its properties and generate a number of + random samples from it. + + + // Create a new hyperbolic secant distribution + var sech = new HyperbolicSecantDistribution(); + + double mean = sech.Mean; // 0.0 + double median = sech.Median; // 0.0 + double mode = sech.Mode; // 0.0 + double var = sech.Variance; // 1.0 + + double cdf = sech.DistributionFunction(x: 1.4); // 0.92968538268895873 + double pdf = sech.ProbabilityDensityFunction(x: 1.4); // 0.10955386512899701 + double lpdf = sech.LogProbabilityDensityFunction(x: 1.4); // -2.2113389316917877 + + double ccdf = sech.ComplementaryDistributionFunction(x: 1.4); // 0.070314617311041272 + double icdf = sech.InverseDistributionFunction(p: cdf); // 1.40 + + double hf = sech.HazardFunction(x: 1.4); // 1.5580524977385339 + + string str = sech.ToString(); // Sech(x) + + + + + + + Constructs a Hyperbolic Secant (Sech) distribution. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution (always zero). + + + + The distribution's mean value. + + + + + + Gets the median for this distribution (always zero). + + + + The distribution's median value. + + + + + + Gets the variance for this distribution (always one). + + + + The distribution's variance. + + + + + + Gets the Standard Deviation (the square root of + the variance) for the current distribution. + + + + The distribution's standard deviation. + + + + + + Gets the mode for this distribution (always zero). + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution (-inf, +inf). + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Logistic distribution. + + + + + In probability theory and statistics, the logistic distribution is a continuous + probability distribution. Its cumulative distribution function is the logistic + function, which appears in logistic regression and feedforward neural networks. + It resembles the normal distribution in shape but has heavier tails (higher + kurtosis). The Tukey lambda distribution + can be considered a generalization of the logistic distribution since it adds a + shape parameter, λ (the Tukey distribution becomes logistic when λ is zero). + + + References: + + + Wikipedia, The Free Encyclopedia. Logistic distribution. Available on: + http://en.wikipedia.org/wiki/Logistic_distribution + + + + + + This examples shows how to create a Logistic distribution, + compute some of its properties and generate a number of + random samples from it. + + + // Create a logistic distribution with μ = 0.42 and scale = 3 + var log = new LogisticDistribution(location: 0.42, scale: 1.2); + + double mean = log.Mean; // 0.42 + double median = log.Median; // 0.42 + double mode = log.Mode; // 0.42 + double var = log.Variance; // 4.737410112522892 + + double cdf = log.DistributionFunction(x: 1.4); // 0.693528308197921 + double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.17712232827170876 + double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -1.7309146649427332 + + double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.306471691802079 + double icdf = log.InverseDistributionFunction(p: cdf); // 1.3999999999999997 + + double hf = log.HazardFunction(x: 1.4); // 0.57794025683160088 + double chf = log.CumulativeHazardFunction(x: 1.4); // 1.1826298874077226 + + string str = log.ToString(CultureInfo.InvariantCulture); // Logistic(x; μ = 0.42, scale = 1.2) + + + + + + + + + Constructs a Logistic distribution + with zero location and unit scale. + + + + + + Constructs a Logistic distribution + with given location and unit scale. + + + The distribution's location value μ (mu). + + + + + Constructs a Logistic distribution + with given location and scale parameters. + + + The distribution's location value μ (mu). + The distribution's scale value s. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the location value μ (mu). + + + + + + Gets the location value μ (mu). + + + + The distribution's mean value. + + + + + + Gets the distribution's scale value (s). + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + In the logistic distribution, the mode is equal + to the distribution value. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + In the logistic distribution, the entropy is + equal to ln(s) + 2. + + + + The distribution's entropy. + + + + + + General continuous distribution. + + + + + The general continuous distribution provides the automatic calculation for + a variety of distribution functions and measures given only definitions for + the Probability Density Function (PDF) or the Cumulative Distribution Function + (CDF). Values such as the Expected value, Variance, Entropy and others are + computed through numeric integration. + + + + + // Let's suppose we have a formula that defines a probability distribution + // but we dont know much else about it. We don't know the form of its cumulative + // distribution function, for example. We would then like to know more about + // it, such as the underlying distribution's moments, characteristics, and + // properties. + + // Let's suppose the formula we have is this one: + double mu = 5; + double sigma = 4.2; + + Func>double, double> df = x => 1.0 / (sigma * Math.Sqrt(2 * Math.PI)) + * Math.Exp(-Math.Pow(x - mu, 2) / (2 * sigma * sigma)); + + // And for the moment, let's also pretend we don't know it is actually the + // p.d.f. of a Gaussian distribution with mean 5 and std. deviation of 4.2. + + // So, let's create a distribution based _solely_ on the formula we have: + var distribution = GeneralContinuousDistribution.FromDensityFunction(df); + + // Now, we can check everything that we can know about it: + + double mean = distribution.Mean; // 5 (note that all of those have been + double median = distribution.Median; // 5 detected automatically simply from + double var = distribution.Variance; // 17.64 the given density formula through + double mode = distribution.Mode; // 5 numerical methods) + + double cdf = distribution.DistributionFunction(x: 1.4); // 0.19568296915377595 + double pdf = distribution.ProbabilityDensityFunction(x: 1.4); // 0.065784567984404935 + double lpdf = distribution.LogProbabilityDensityFunction(x: 1.4); // -2.7213699972695058 + + double ccdf = distribution.ComplementaryDistributionFunction(x: 1.4); // 0.80431703084622408 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 1.3999999997024655 + + double hf = distribution.HazardFunction(x: 1.4); // 0.081789351041333558 + double chf = distribution.CumulativeHazardFunction(x: 1.4); // 0.21776177055276186 + + + + + + + Creates a new with the given PDF and CDF functions. + + + The distribution's support over the real line. + A probability density function. + A cumulative distribution function. + + + + + Creates a new with the given PDF and CDF functions. + + + A distribution whose properties will be numerically estimated. + + + + + Creates a new + from an existing + continuous distribution. + + + The distribution. + + A representing the same + but whose measures and functions are computed + using numerical integration and differentiation. + + + + + Creates a new + using only a probability density function definition. + + + A probability density function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a probability density function definition. + + + The distribution's support over the real line. + A probability density function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a cumulative distribution function definition. + + + A cumulative distribution function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a cumulative distribution function definition. + + + The distribution's support over the real line. + A cumulative distribution function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a probability density function definition. + + + The distribution's support over the real line. + A probability density function. + The integration method to use for numerical computations. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a cumulative distribution function definition. + + + The distribution's support over the real line. + A cumulative distribution function. + The integration method to use for numerical computations. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Lévy distribution. + + + + + In probability theory and statistics, the Lévy distribution, named after Paul Lévy, is a continuous + probability distribution for a non-negative random variable. In spectroscopy, this distribution, with + frequency as the dependent variable, is known as a van der Waals profile. It is a special case of the + inverse-gamma distribution. + + + It is one of the few distributions that are stable and that have probability density functions that can + be expressed analytically, the others being the normal distribution and the Cauchy distribution. All three + are special cases of the stable distributions, which do not generally have a probability density function + which can be expressed analytically. + + + References: + + + Wikipedia, The Free Encyclopedia. Lévy distribution. Available on: + https://en.wikipedia.org/wiki/L%C3%A9vy_distribution + + + + + + This examples shows how to create a Lévy distribution + and how to compute some of its measures and properties. + + + + // Create a new Lévy distribution on 1 with scale 4.2: + var levy = new LevyDistribution(location: 1, scale: 4.2); + + double mean = levy.Mean; // +inf + double median = levy.Median; // 10.232059220934481 + double mode = levy.Mode; // NaN + double var = levy.Variance; // +inf + + double cdf = levy.DistributionFunction(x: 1.4); // 0.0011937454448720029 + double pdf = levy.ProbabilityDensityFunction(x: 1.4); // 0.016958939623898304 + double lpdf = levy.LogProbabilityDensityFunction(x: 1.4); // -4.0769601727487803 + + double ccdf = levy.ComplementaryDistributionFunction(x: 1.4); // 0.99880625455512795 + double icdf = levy.InverseDistributionFunction(p: cdf); // 1.3999999 + + double hf = levy.HazardFunction(x: 1.4); // 0.016979208476674869 + double chf = levy.CumulativeHazardFunction(x: 1.4); // 0.0011944585265140923 + + string str = levy.ToString(CultureInfo.InvariantCulture); // Lévy(x; μ = 1, c = 4.2) + + + + + + + Constructs a new + with zero location and unit scale. + + + + + + Constructs a new in + the given and with unit scale. + + + The distribution's location. + + + + + Constructs a new in the + given and . + + + The distribution's location. + The distribution's scale. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the location μ (mu) for this distribution. + + + + + + Gets the location c for this distribution. + + + + + + Gets the mean for this distribution, which for + the Levy distribution is always positive infinity. + + + + This property always returns Double.PositiveInfinity. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution, which for + the Levy distribution is always positive infinity. + + + + This property always returns Double.PositiveInfinity. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Folded Normal (Gaussian) distribution. + + + + + The folded normal distribution is a probability distribution related to the normal + distribution. Given a normally distributed random variable X with mean μ and variance + σ², the random variable Y = |X| has a folded normal distribution. Such a case may be + encountered if only the magnitude of some variable is recorded, but not its sign. The + distribution is called Folded because probability mass to the left of the x = 0 is + "folded" over by taking the absolute value. + + + The Half-Normal (Gaussian) distribution is a special + case of this distribution and can be created using a named constructor. + + + + References: + + + Wikipedia, The Free Encyclopedia. Folded Normal distribution. Available on: + https://en.wikipedia.org/wiki/Folded_normal_distribution + + + + + + This examples shows how to create a Folded Normal distribution + and how to compute some of its properties and measures. + + + // Creates a new Folded Normal distribution based on a Normal + // distribution with mean value 4 and standard deviation 4.2: + // + var fn = new FoldedNormalDistribution(mean: 4, stdDev: 4.2); + + double mean = fn.Mean; // 4.765653108337438 + double median = fn.Median; // 4.2593565881862734 + double mode = fn.Mode; // 2.0806531871308014 + double var = fn.Variance; // 10.928550450993715 + + double cdf = fn.DistributionFunction(x: 1.4); // 0.16867109769018807 + double pdf = fn.ProbabilityDensityFunction(x: 1.4); // 0.11998602818182187 + double lpdf = fn.LogProbabilityDensityFunction(x: 1.4); // -2.1203799747969523 + + double ccdf = fn.ComplementaryDistributionFunction(x: 1.4); // 0.83132890230981193 + double icdf = fn.InverseDistributionFunction(p: cdf); // 1.4 + + double hf = fn.HazardFunction(x: 1.4); // 0.14433039420191671 + double chf = fn.CumulativeHazardFunction(x: 1.4); // 0.18472977144474392 + + string str = fn.ToString(CultureInfo.InvariantCulture); // FN(x; μ = 4, σ² = 17.64) + + + + + + + + + Creates a new + with zero mean and unit standard deviation. + + + + + + Creates a new with + the given and unit standard deviation. + + + + The mean of the original normal distribution that should be folded. + + + + + Creates a new with + the given and + standard deviation + + + + The mean of the original normal distribution that should be folded. + + The standard deviation of the original normal distribution that should be folded. + + + + + Creates a new Half-normal distribution with the given + standard deviation. The half-normal distribution is a special case + of the when location is zero. + + + + The standard deviation of the original normal distribution that should be folded. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + This method is not supported. + + + + + + + + Shift Log-Logistic distribution. + + + + + The shifted log-logistic distribution is a probability distribution also known as + the generalized log-logistic or the three-parameter log-logistic distribution. It + has also been called the generalized logistic distribution, but this conflicts with + other uses of the term: see generalized logistic distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Shifted log-logistic distribution. Available on: + http://en.wikipedia.org/wiki/Shifted_log-logistic_distribution + + + + + + This examples shows how to create a Shifted Log-Logistic distribution, + compute some of its properties and generate a number of random samples + from it. + + + // Create a LLD3 distribution with μ = 0.0, scale = 0.42, and shape = 0.1 + var log = new ShiftedLogLogisticDistribution(location: 0, scale: 0.42, shape: 0.1); + + double mean = log.Mean; // 0.069891101544818923 + double median = log.Median; // 0.0 + double mode = log.Mode; // -0.083441677069328604 + double var = log.Variance; // 0.62447259946747213 + + double cdf = log.DistributionFunction(x: 1.4); // 0.94668863559417671 + double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.090123683626808615 + double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -2.4065722895662613 + + double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.053311364405823292 + double icdf = log.InverseDistributionFunction(p: cdf); // 1.4000000037735139 + + double hf = log.HazardFunction(x: 1.4); // 1.6905154207038875 + double chf = log.CumulativeHazardFunction(x: 1.4); // 2.9316057546685061 + + string str = log.ToString(CultureInfo.InvariantCulture); // LLD3(x; μ = 0, σ = 0.42, ξ = 0.1) + + + + + + + + + + Constructs a Shifted Log-Logistic distribution + with zero location, unit scale, and zero shape. + + + + + + Constructs a Shifted Log-Logistic distribution + with the given location, unit scale and zero shape. + + + The distribution's location value μ (mu). + + + + + Constructs a Shifted Log-Logistic distribution + with the given location and scale and zero shape. + + + The distribution's location value μ (mu). + The distribution's scale value σ (sigma). + + + + + Constructs a Shifted Log-Logistic distribution + with the given location and scale and zero shape. + + + The distribution's location value μ (mu). + The distribution's scale value s. + The distribution's shape value ξ (ksi). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the distribution's location value μ (mu). + + + + + + Gets the distribution's scale value (σ). + + + + + + Gets the distribution's shape value (ξ). + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Skew Normal distribution. + + + + + In probability theory and statistics, the skew normal distribution is a + continuous probability distribution + that generalises the normal distribution to allow + for non-zero skewness. + + + References: + + + Wikipedia, The Free Encyclopedia. Skew normal distribution. Available on: + https://en.wikipedia.org/wiki/Skew_normal_distribution + + + + + + This examples shows how to create a Skew normal distribution + and compute some of its properties and derived measures. + + + // Create a Skew normal distribution with location 2, scale 3 and shape 4.2 + var skewNormal = new SkewNormalDistribution(location: 2, scale: 3, shape: 4.2); + + double mean = skewNormal.Mean; // 4.3285611780515953 + double median = skewNormal.Median; // 4.0230040653062265 + double var = skewNormal.Variance; // 3.5778028400709641 + double mode = skewNormal.Mode; // 3.220622226764422 + + double cdf = skewNormal.DistributionFunction(x: 1.4); // 0.020166854942526125 + double pdf = skewNormal.ProbabilityDensityFunction(x: 1.4); // 0.052257431834162059 + double lpdf = skewNormal.LogProbabilityDensityFunction(x: 1.4); // -2.9515731621912877 + + double ccdf = skewNormal.ComplementaryDistributionFunction(x: 1.4); // 0.97983314505747388 + double icdf = skewNormal.InverseDistributionFunction(p: cdf); // 1.3999998597203041 + + double hf = skewNormal.HazardFunction(x: 1.4); // 0.053332990517581239 + double chf = skewNormal.CumulativeHazardFunction(x: 1.4); // 0.020372981958858238 + + string str = skewNormal.ToString(CultureInfo.InvariantCulture); // Sn(x; ξ = 2, ω = 3, α = 4.2) + + + + + + + + + + Constructs a Skew normal distribution with + zero location, unit scale and zero shape. + + + + + + Constructs a Skew normal distribution with + given location, unit scale and zero skewness. + + + The distribution's location value ξ (ksi). + + + + + Constructs a Skew normal distribution with + given location and scale and zero skewness. + + + The distribution's location value ξ (ksi). + The distribution's scale value ω (omega). + + + + + Constructs a Skew normal distribution + with given mean and standard deviation. + + + The distribution's location value ξ (ksi). + The distribution's scale value ω (omega). + The distribution's shape value α (alpha). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Create a new that + corresponds to a with + the given mean and standard deviation. + + + The distribution's mean value μ (mu). + The distribution's standard deviation σ (sigma). + + A representing + a with the given parameters. + + + + + Gets the skew-normal distribution's location value ξ (ksi). + + + + + + Gets the skew-normal distribution's scale value ω (omega). + + + + + + Gets the skew-normal distribution's shape value α (alpha). + + + + + + Not supported. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the skewness for this distribution. + + + + + + Gets the excess kurtosis for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Trapezoidal distribution. + + + + + Trapezoidal distributions have been used in many areas and studied under varying + scopes, such as in the excellent work of (van Dorp and Kotz, 2003), risk analysis + (Pouliquen, 1970) and (Powell and Wilson, 1997), fuzzy set theory (Chen and Hwang, + 1992), applied phyisics, and biomedical applications (Flehinger and Kimmel, 1987). + + + + Trapezoidal distributions are appropriate for modeling events that are comprised + by three different stages: one growth stage, where probability grows up until a + plateau is reached; a stability stage, where probability stays more or less the same; + and a decline stage, where probability decreases until zero (van Dorp and Kotz, 2003). + + + + References: + + + J. René van Dorp, Samuel Kotz, Trapezoidal distribution. Available on: + http://www.seas.gwu.edu/~dorpjr/Publications/JournalPapers/Metrika2003VanDorp.pdf + + Powell MR, Wilson JD (1997). Risk Assessment for National Natural Resource + Conservation Programs, Discussion Paper 97-49. Resources for the Future, Washington + D.C. + + Chen SJ, Hwang CL (1992). Fuzzy Multiple Attribute Decision-Making: Methods and + Applications, Springer-Verlag, Berlin, New York. + + Flehinger BJ, Kimmel M (1987). The natural history of lung cancer in periodically + screened population. Biometrics 1987, 43, 127-144. + + + + + + The following example shows how to create and test the main characteristics + of a Trapezoidal distribution given its parameters: + + + // Create a new trapezoidal distribution with linear growth between + // 0 and 2, stability between 2 and 8, and decrease between 8 and 10. + // + // + // +-----------+ + // /| |\ + // / | | \ + // / | | \ + // -------+---+-----------+---+------- + // ... 0 2 4 6 8 10 ... + // + var trapz = new TrapezoidalDistribution(a: 0, b: 2, c: 8, d: 10, n1: 1, n3: 1); + + double mean = trapz.Mean; // 2.25 + double median = trapz.Median; // 3.0 + double mode = trapz.Mode; // 3.1353457616424696 + double var = trapz.Variance; // 17.986666666666665 + + double cdf = trapz.DistributionFunction(x: 1.4); // 0.13999999999999999 + double pdf = trapz.ProbabilityDensityFunction(x: 1.4); // 0.10000000000000001 + double lpdf = trapz.LogProbabilityDensityFunction(x: 1.4); // -2.3025850929940455 + + double ccdf = trapz.ComplementaryDistributionFunction(x: 1.4); // 0.85999999999999999 + double icdf = trapz.InverseDistributionFunction(p: cdf); // 1.3999999999999997 + + double hf = trapz.HazardFunction(x: 1.4); // 0.11627906976744187 + double chf = trapz.CumulativeHazardFunction(x: 1.4); // 0.15082288973458366 + + string str = trapz.ToString(CultureInfo.InvariantCulture); // Trapezoidal(x; a=0, b=2, c=8, d=10, n1=1, n3=1, α = 1) + + + + + + + Creates a new trapezoidal distribution. + + + The minimum value a. + The beginning of the stability region b. + The end of the stability region c. + The maximum value d. + The growth slope between points and . + The growth slope between points and . + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + The 4-parameter Beta distribution. + + + + + The generalized beta distribution is a family of continuous probability distributions defined + on any interval (min, max) parameterized by two positive shape parameters and two real location + parameters, typically denoted by α, β, a and b. The beta distribution can be suited to the + statistical modeling of proportions in applications where values of proportions equal to 0 or 1 + do not occur. One theoretical case where the beta distribution arises is as the distribution of + the ratio formed by one random variable having a Gamma distribution divided by the sum of it and + another independent random variable also having a Gamma distribution with the same scale parameter + (but possibly different shape parameter). + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Beta_distribution + + Wikipedia, The Free Encyclopedia. Three-point estimation. + Available from: https://en.wikipedia.org/wiki/Three-point_estimation + + Broadleaf Capital International Pty Ltd. Beta PERT origins. + Available from: http://broadleaf.com.au/resource-material/beta-pert-origins/ + + Malcolm, D. G., Roseboom J. H., Clark C.E., and Fazar, W. Application of a technique of research + and development program evaluation, Operations Research, 7, 646-669, 1959. Available from: + http://mech.vub.ac.be/teaching/info/Ontwerpmethodologie/Appendix%20les%202%20PERT.pdf + + Clark, C. E. The PERT model for the distribution of an activity time, Operations Research, 10, 405-406, + 1962. Available from: http://connection.ebscohost.com/c/articles/18246172/pert-model-distribution-activity-time + + + + + + Note: Simpler examples are also available at the page. + + + The following example shows how to create a 4-parameter Beta distribution and + compute some of its properties and measures. + + + // Create a 4-parameter Beta distribution with the following parameters (α, β, a, b): + var beta = new GeneralizedBetaDistribution(alpha: 1.42, beta: 1.57, min: 1, max: 4.2); + + double mean = beta.Mean; // 2.5197324414715716 + double median = beta.Median; // 2.4997705845160225 + double var = beta.Variance; // 0.19999664152943961 + double mode = beta.Mode; // 2.3575757575757574 + double h = beta.Entropy; // -0.050654548091478513 + + double cdf = beta.DistributionFunction(x: 2.27); // 0.40828630817664596 + double pdf = beta.ProbabilityDensityFunction(x: 2.27); // 1.2766172921464953 + double lpdf = beta.LogProbabilityDensityFunction(x: 2.27); // 0.2442138392176838 + + double chf = beta.CumulativeHazardFunction(x: 2.27); // 0.5247323897609667 + double hf = beta.HazardFunction(x: 2.27); // 2.1574915534109484 + + double ccdf = beta.ComplementaryDistributionFunction(x: 2.27); // 0.59171369182335409 + double icdf = beta.InverseDistributionFunction(p: cdf); // 2.27 + + string str = beta.ToString(); // B(x; α = 1.42, β = 1.57, min = 1, max = 4.2) + + + + The following example shows how to create a 4-parameter Beta distribution + with a three-point estimate using PERT. + + + // Create a Beta from a minimum, maximum and most likely value + var b = GeneralizedBetaDistribution.Pert(min: 1, max: 3, mode: 2); + + double mean = b.Mean; // 2.5197324414715716 + double median = b.Median; // 2.4997705845160225 + double var = b.Variance; // 0.19999664152943961 + double mode = b.Mode; // 2.3575757575757574 + + + + The following example shows how to create a 4-parameter Beta distribution + with a three-point estimate using Vose's modification for PERT. + + + // Create a Beta from a minimum, maximum and most likely value + var b = GeneralizedBetaDistribution.Vose(min: 1, max: 3, mode: 1.42); + + double mean = b.Mean; // 1.6133333333333333 + double median = b.Median; // 1.5727889200146494 + double mode = b.Mode; // 1.4471823077804513 + double var = b.Variance; // 0.055555555555555546 + + + + The next example shows how to generate 1000 new samples from a Beta distribution: + + + // Using the distribution's parameters + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, min: 0, max: 1, samples: 1000); + + // Using an existing distribution + var b = new GeneralizedBetaDistribution(alpha: 1, beta: 2); + double[] new_samples = b.Generate(1000); + + + + And finally, how to estimate the parameters of a Beta distribution from + a set of observations, using either the Method-of-moments or the Maximum + Likelihood Estimate. + + + // First we will be drawing 100000 observations from a 4-parameter + // Beta distribution with α = 2, β = 3, min = 10 and max = 15: + + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, min: 10, max: 15, samples: 100000); + + // We can estimate a distribution with the known max and min + var B = GeneralizedBetaDistribution.Estimate(samples, 10, 15); + + // We can explicitly ask for a Method-of-moments estimation + var mm = GeneralizedBetaDistribution.Estimate(samples, 10, 15, + new GeneralizedBetaOptions { Method = BetaEstimationMethod.Moments }); + + // or explicitly ask for the Maximum Likelihood estimation + var mle = GeneralizedBetaDistribution.Estimate(samples, 10, 15, + new GeneralizedBetaOptions { Method = BetaEstimationMethod.MaximumLikelihood }); + + + + + + + + + Constructs a Beta distribution defined in the + interval (0,1) with the given parameters α and β. + + + The shape parameter α (alpha). + The shape parameter β (beta). + + + + + Constructs a Beta distribution defined in the + interval (a, b) with parameters α, β, a and b. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The minimum possible value a. + The maximum possible value b. + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using Vose's PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + + + A Beta distribution initialized using the Vose's PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using Vose's PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + The scale parameter λ (lambda). Default is 4. + + + A Beta distribution initialized using the Vose's PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using usual PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + + + A Beta distribution initialized using the PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using usual PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + The scale parameter λ (lambda). Default is 4. + + + A Beta distribution initialized using the PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using Golenko-Ginzburg observation that the mode is often at 2/3 + of the guessed interval. + + + The minimum possible value a. + The maximum possible value b. + + + A Beta distribution initialized using the Golenko-Ginzburg's method. + + + + + + Constructs a standard Beta distribution defined in the interval (0, 1) + based on the number of successed and trials for an experiment. + + + The number of success r. Default is 0. + The number of trials n. Default is 1. + + + A standard Beta distribution initialized using the given parameters. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The minimum possible value a. + The maximum possible value b. + The number of samples to generate. + + An array of double values sampled from the specified Beta distribution. + + + + + Generates a random observation from a + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The minimum possible value a. + The maximum possible value b. + + A random double value sampled from the specified Beta distribution. + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Gets the minimum value A. + + + + + + Gets the maximum value B. + + + + + + Gets the shape parameter α (alpha) + + + + + + Gets the shape parameter β (beta). + + + + + + Gets the mean for this distribution, + defined as (a + 4 * m + 6 * b). + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution, + defined as ((b - a) / (k+2))² + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + The beta distribution's mode is given + by (a - 1) / (a + b - 2). + + + + The distribution's mode value. + + + + + + Gets the distribution support, defined as (, ). + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Triangular distribution. + + + + + In probability theory and statistics, the triangular distribution is a continuous + probability distribution with lower limit a, upper limit b and mode c, where a < + b and a ≤ c ≤ b. + + + References: + + + Wikipedia, The Free Encyclopedia. Triangular distribution. Available on: + https://en.wikipedia.org/wiki/Triangular_distribution + + + + + + This example shows how to create a Triangular distribution + with minimum 1, maximum 6, and most common value 3. + + + // Create a new Triangular distribution (1, 3, 6). + var trig = new TriangularDistribution(a: 1, b: 6, c: 3); + + double mean = trig.Mean; // 3.3333333333333335 + double median = trig.Median; // 3.2613872124741694 + double mode = trig.Mode; // 3.0 + double var = trig.Variance; // 1.0555555555555556 + + double cdf = trig.DistributionFunction(x: 2); // 0.10000000000000001 + double pdf = trig.ProbabilityDensityFunction(x: 2); // 0.20000000000000001 + double lpdf = trig.LogProbabilityDensityFunction(x: 2); // -1.6094379124341003 + + double ccdf = trig.ComplementaryDistributionFunction(x: 2); // 0.90000000000000002 + double icdf = trig.InverseDistributionFunction(p: cdf); // 2.0000000655718773 + + double hf = trig.HazardFunction(x: 2); // 0.22222222222222224 + double chf = trig.CumulativeHazardFunction(x: 2); // 0.10536051565782628 + + string str = trig.ToString(CultureInfo.InvariantCulture); // Triangular(x; a = 1, b = 6, c = 3) + + + + + + + Constructs a Triangular distribution + with the given parameters a, b and c. + + + The minimum possible value in the distribution (a). + The maximum possible value in the distribution (b). + The most common value in the distribution (c). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Gets the minimum value in a set of weighted observations. + + + + + + Gets the maximum value in a set of weighted observations. + + + + + + Finds the index of the last largest value in a set of observations. + + + + + + Finds the index of the first smallest value in a set of observations. + + + + + + Finds the index of the first smallest value in a set of weighted observations. + + + + + + Finds the index of the last largest value in a set of weighted observations. + + + + + + Gets the triangular parameter A (the minimum value). + + + + + + Gets the triangular parameter B (the maximum value). + + + + + + Gets the mean for this distribution, + defined as (a + b + c) / 3. + + + + The distribution's mean value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution, defined + as (a² + b² + c² - ab - ac - bc) / 18. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution, + also known as the triangular's c. + + + + The distribution's mode value. + + + + + + Gets the distribution support, defined as (, ). + + + + + + Gets the entropy for this distribution, + defined as 0.5 + log((max-min)/2)). + + + + The distribution's entropy. + + + + + + Gumbel distribution (as known as the Extreme Value Type I distribution). + + + + + In probability theory and statistics, the Gumbel distribution is used to model + the distribution of the maximum (or the minimum) of a number of samples of various + distributions. Such a distribution might be used to represent the distribution of + the maximum level of a river in a particular year if there was a list of maximum + values for the past ten years. It is useful in predicting the chance that an extreme + earthquake, flood or other natural disaster will occur. + + + The potential applicability of the Gumbel distribution to represent the distribution + of maxima relates to extreme value theory which indicates that it is likely to be useful + if the distribution of the underlying sample data is of the normal or exponential type. + + + The Gumbel distribution is a particular case of the generalized extreme value + distribution (also known as the Fisher-Tippett distribution). It is also known + as the log-Weibull distribution and the double exponential distribution (a term + that is alternatively sometimes used to refer to the Laplace distribution). It + is related to the Gompertz distribution[citation needed]: when its density is + first reflected about the origin and then restricted to the positive half line, + a Gompertz function is obtained. + + + In the latent variable formulation of the multinomial logit model — common in + discrete choice theory — the errors of the latent variables follow a Gumbel + distribution. This is useful because the difference of two Gumbel-distributed + random variables has a logistic distribution. + + + The Gumbel distribution is named after Emil Julius Gumbel (1891–1966), based on + his original papers describing the distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Gumbel distribution. Available on: + http://en.wikipedia.org/wiki/Gumbel_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Gumbel distribution given its location and scale parameters: + + + var gumbel = new GumbelDistribution(location: 4.795, scale: 1 / 0.392); + + double mean = gumbel.Mean; // 6.2674889410753387 + double median = gumbel.Median; // 5.7299819402593481 + double mode = gumbel.Mode; // 4.7949999999999999 + double var = gumbel.Variance; // 10.704745853604138 + + double cdf = gumbel.DistributionFunction(x: 3.4); // 0.17767760424788051 + double pdf = gumbel.ProbabilityDensityFunction(x: 3.4); // 0.12033954114322486 + double lpdf = gumbel.LogProbabilityDensityFunction(x: 3.4); // -2.1174380222001519 + + double ccdf = gumbel.ComplementaryDistributionFunction(x: 3.4); // 0.82232239575211952 + double icdf = gumbel.InverseDistributionFunction(p: cdf); // 3.3999999904866245 + + double hf = gumbel.HazardFunction(x: 1.4); // 0.03449691276402958 + double chf = gumbel.CumulativeHazardFunction(x: 1.4); // 0.022988793482259906 + + string str = gumbel.ToString(CultureInfo.InvariantCulture); // Gumbel(x; μ = 4.795, β = 2.55) + + + + + + + Creates a new Gumbel distribution + with location zero and unit scale. + + + + + + Creates a new Gumbel distribution + with the given location and scale. + + + The location parameter μ (mu). Default is 0. + The scale parameter β (beta). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's location parameter mu (μ). + + + + + + Gets the distribution's scale parameter beta (β). + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Tukey-Lambda distribution. + + + + + Formalized by John Tukey, the Tukey lambda distribution is a continuous + probability distribution defined in terms of its quantile function. It is + typically used to identify an appropriate distribution and not used in + statistical models directly. + + The Tukey lambda distribution has a single shape parameter λ. As with other + probability distributions, the Tukey lambda distribution can be transformed + with a location parameter, μ, and a scale parameter, σ. Since the general form + of probability distribution can be expressed in terms of the standard distribution, + the subsequent formulas are given for the standard form of the function. + + References: + + + Wikipedia, The Free Encyclopedia. Tukey-Lambda distribution. Available on: + http://en.wikipedia.org/wiki/Tukey_lambda_distribution + + + + + + This examples shows how to create a Tukey distribution and + compute some of its properties . + + + var tukey = new TukeyLambdaDistribution(lambda: 0.14); + + double mean = tukey.Mean; // 0.0 + double median = tukey.Median; // 0.0 + double mode = tukey.Mode; // 0.0 + double var = tukey.Variance; // 2.1102970222144855 + double stdDev = tukey.StandardDeviation; // 1.4526861402982014 + + double cdf = tukey.DistributionFunction(x: 1.4); // 0.83252947230217966 + double pdf = tukey.ProbabilityDensityFunction(x: 1.4); // 0.17181242109370659 + double lpdf = tukey.LogProbabilityDensityFunction(x: 1.4); // -1.7613519723149427 + + double ccdf = tukey.ComplementaryDistributionFunction(x: 1.4); // 0.16747052769782034 + double icdf = tukey.InverseDistributionFunction(p: cdf); // 1.4000000000000004 + + double hf = tukey.HazardFunction(x: 1.4); // 1.0219566231014163 + double chf = tukey.CumulativeHazardFunction(x: 1.4); // 1.7842102556452939 + + string str = tukey.ToString(CultureInfo.InvariantCulture); // Tukey(x; λ = 0.14) + + + + + + + + + + + Constructs a Tukey-Lambda distribution + with the given lambda (shape) parameter. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the log of the quantile + density function, which in turn is the first derivative of + the inverse distribution + function (icdf), evaluated at probability p. + + + A probability value between 0 and 1. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution shape parameter lambda (λ). + + + + + + Gets the mean for this distribution (always zero). + + + + The distribution's mean value. + + + + + + Gets the median for this distribution (always zero). + + + + The distribution's median value. + + + + + + Gets the mode for this distribution (always zero). + + + + The distribution's median value. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Power Lognormal distribution. + + + + + References: + + + NIST/SEMATECH e-Handbook of Statistical Methods. Power Lognormal distribution. Available on: + http://www.itl.nist.gov/div898/handbook/eda/section3/eda366e.htm + + + + + + This example shows how to create a Power Lognormal + distribution and compute some of its properties. + + + // Create a Power-Lognormal distribution with p = 4.2 and s = 1.2 + var plog = new PowerLognormalDistribution(power: 4.2, shape: 1.2); + + double cdf = plog.DistributionFunction(x: 1.4); // 0.98092157745191766 + double pdf = plog.ProbabilityDensityFunction(x: 1.4); // 0.046958580233533977 + double lpdf = plog.LogProbabilityDensityFunction(x: 1.4); // -3.0584893374471496 + + double ccdf = plog.ComplementaryDistributionFunction(x: 1.4); // 0.019078422548082351 + double icdf = plog.InverseDistributionFunction(p: cdf); // 1.4 + + double hf = plog.HazardFunction(x: 1.4); // 10.337649063164642 + double chf = plog.CumulativeHazardFunction(x: 1.4); // 3.9591972920568446 + + string str = plog.ToString(CultureInfo.InvariantCulture); // PLD(x; p = 4.2, σ = 1.2) + + + + + + + Constructs a Power Lognormal distribution + with the given power and shape parameters. + + + The distribution's power p. + The distribution's shape σ. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's power parameter (p). + + + + + + Gets the distribution's shape parameter sigma (σ). + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Generalized Normal distribution (also known as Exponential Power distribution). + + + + + The generalized normal distribution or generalized Gaussian distribution + (GGD) is either of two families of parametric continuous probability + distributions on the real line. Both families add a shape parameter to + the normal distribution. To distinguish the two families, they are referred + to below as "version 1" and "version 2". However this is not a standard + nomenclature. + + Known also as the exponential power distribution, or the generalized error + distribution, this is a parametric family of symmetric distributions. It includes + all normal and Laplace distributions, and as limiting cases it includes all + continuous uniform distributions on bounded intervals of the real line. + + + References: + + + Wikipedia, The Free Encyclopedia. Generalized normal distribution. Available on: + https://en.wikipedia.org/wiki/Generalized_normal_distribution + + + + + + This examples shows how to create a Generalized normal distribution + and compute some of its properties. + + + // Creates a new generalized normal distribution with the given parameters + var normal = new GeneralizedNormalDistribution(location: 1, scale: 5, shape: 0.42); + + double mean = normal.Mean; // 1 + double median = normal.Median; // 1 + double mode = normal.Mode; // 1 + double var = normal.Variance; // 19200.781700666659 + + double cdf = normal.DistributionFunction(x: 1.4); // 0.51076148867681703 + double pdf = normal.ProbabilityDensityFunction(x: 1.4); // 0.024215092283124507 + double lpdf = normal.LogProbabilityDensityFunction(x: 1.4); // -3.7207791921441378 + + double ccdf = normal.ComplementaryDistributionFunction(x: 1.4); // 0.48923851132318297 + double icdf = normal.InverseDistributionFunction(p: cdf); // 1.4000000149740108 + + double hf = normal.HazardFunction(x: 1.4); // 0.049495474543966168 + double chf = normal.CumulativeHazardFunction(x: 1.4); // 0.7149051552030572 + + string str = normal.ToString(CultureInfo.InvariantCulture); // GGD(x; μ = 1, α = 5, β = 0.42) + + + + + + + + + + Constructs a Generalized Normal distribution with the given parameters. + + + The location parameter μ. + The scale parameter α. + The shape parameter β. + + + + + Create an distribution using a + specialization. + + + The Laplace's location parameter μ (mu). + The Laplace's scale parameter b. + + A that provides + a . + + + + + Create an distribution using a + specialization. + + + The Normal's mean parameter μ (mu). + The Normal's standard deviation σ (sigma). + + A that provides + a distribution. + + + + + Gets the cumulative distribution function (cdf) for the + Generalized Normal distribution evaluated at point x. + + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single double value. + For a multivariate distribution, this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the location value μ (mu) for the distribution. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + In the Generalized Normal Distribution, the mode is + equal to the distribution's value. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Entropy for this Normal distribution. + + + + + + Power Normal distribution. + + + + + References: + + + NIST/SEMATECH e-Handbook of Statistical Methods. Power Normal distribution. Available on: + http://www.itl.nist.gov/div898/handbook/eda/section3/eda366d.htm + + + + + + This example shows how to create a Power Normal distribution + and compute some of its properties. + + + // Create a new Power-Normal distribution with p = 4.2 + var pnormal = new PowerNormalDistribution(power: 4.2); + + double cdf = pnormal.DistributionFunction(x: 1.4); // 0.99997428721920678 + double pdf = pnormal.ProbabilityDensityFunction(x: 1.4); // 0.00020022645890003279 + double lpdf = pnormal.LogProbabilityDensityFunction(x: 1.4); // -0.20543269836728234 + + double ccdf = pnormal.ComplementaryDistributionFunction(x: 1.4); // 0.000025712780793218926 + double icdf = pnormal.InverseDistributionFunction(p: cdf); // 1.3999999999998953 + + double hf = pnormal.HazardFunction(x: 1.4); // 7.7870402470368854 + double chf = pnormal.CumulativeHazardFunction(x: 1.4); // 10.568522382550167 + + string str = pnormal.ToString(); // PND(x; p = 4.2) + + + + + + + Constructs a Power Normal distribution + with given power (shape) parameter. + + + The distribution's power p. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution shape (power) parameter. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + U-quadratic distribution. + + + + + In probability theory and statistics, the U-quadratic distribution is a continuous + probability distribution defined by a unique quadratic function with lower limit a + and upper limit b. This distribution is a useful model for symmetric bimodal processes. + Other continuous distributions allow more flexibility, in terms of relaxing the symmetry + and the quadratic shape of the density function, which are enforced in the U-quadratic + distribution - e.g., Beta distribution, Gamma distribution, etc. + + + References: + + + Wikipedia, The Free Encyclopedia. U-quadratic distribution. Available on: + http://en.wikipedia.org/wiki/U-quadratic_distribution + + + + + + The following example shows how to create and test the main characteristics + of an U-quadratic distribution given its two parameters: + + + // Create a new U-quadratic distribution with values + var u2 = new UQuadraticDistribution(a: 0.42, b: 4.2); + + double mean = u2.Mean; // 2.3100000000000001 + double median = u2.Median; // 2.3100000000000001 + double mode = u2.Mode; // 0.8099060089153145 + double var = u2.Variance; // 2.1432600000000002 + + double cdf = u2.DistributionFunction(x: 1.4); // 0.44419041812731797 + double pdf = u2.ProbabilityDensityFunction(x: 1.4); // 0.18398763254730335 + double lpdf = u2.LogProbabilityDensityFunction(x: 1.4); // -1.6928867380489712 + + double ccdf = u2.ComplementaryDistributionFunction(x: 1.4); // 0.55580958187268203 + double icdf = u2.InverseDistributionFunction(p: cdf); // 1.3999998213768274 + + double hf = u2.HazardFunction(x: 1.4); // 0.3310263776442936 + double chf = u2.CumulativeHazardFunction(x: 1.4); // 0.58732952203701494 + + string str = u2.ToString(CultureInfo.InvariantCulture); // "UQuadratic(x; a = 0.42, b = 4.2)" + + + + + + + Constructs a new U-quadratic distribution. + + + Parameter a. + Parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Wrapped Cauchy Distribution. + + + + + In probability theory and directional statistics, a wrapped Cauchy distribution + is a wrapped probability distribution that results from the "wrapping" of the + Cauchy distribution around the unit circle. The Cauchy distribution is sometimes + known as a Lorentzian distribution, and the wrapped Cauchy distribution may + sometimes be referred to as a wrapped Lorentzian distribution. + + + The wrapped Cauchy distribution is often found in the field of spectroscopy where + it is used to analyze diffraction patterns (e.g. see Fabry–Pérot interferometer). + + + References: + + + Wikipedia, The Free Encyclopedia. Directional statistics. Available on: + http://en.wikipedia.org/wiki/Directional_statistics + + Wikipedia, The Free Encyclopedia. Wrapped Cauchy distribution. Available on: + http://en.wikipedia.org/wiki/Wrapped_Cauchy_distribution + + + + + + // Create a Wrapped Cauchy distribution with μ = 0.42, γ = 3 + var dist = new WrappedCauchyDistribution(mu: 0.42, gamma: 3); + + // Common measures + double mean = dist.Mean; // 0.42 + double var = dist.Variance; // 0.950212931632136 + + // Probability density functions + double pdf = dist.ProbabilityDensityFunction(x: 0.42); // 0.1758330112785475 + double lpdf = dist.LogProbabilityDensityFunction(x: 0.42); // -1.7382205338929015 + + // String representation + string str = dist.ToString(); // "WrappedCauchy(x; μ = 0,42, γ = 3)" + + + + + + + + + Initializes a new instance of the class. + + + The mean resultant parameter μ. + The gamma parameter γ. + + + + + Not supported. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Inverse Gamma Distribution. + + + + + The inverse gamma distribution is a two-parameter family of continuous probability + distributions on the positive real line, which is the distribution of the reciprocal + of a variable distributed according to the gamma distribution. Perhaps the chief use + of the inverse gamma distribution is in Bayesian statistics, where it serves as the + conjugate prior of the variance of a normal distribution. However, it is common among + Bayesians to consider an alternative parameterization of the normal distribution in + terms of the precision, defined as the reciprocal of the variance, which allows the + gamma distribution to be used directly as a conjugate prior. + + + References: + + + Wikipedia, The Free Encyclopedia. Inverse Gamma Distribution. + Available from: http://en.wikipedia.org/wiki/Inverse-gamma_distribution + + John D. Cook. (2008). The Inverse Gamma Distribution. + + + + + + // Create a new inverse Gamma distribution with α = 0.42 and β = 0.5 + var invGamma = new InverseGammaDistribution(shape: 0.42, scale: 0.5); + + // Common measures + double mean = invGamma.Mean; // -0.86206896551724133 + double median = invGamma.Median; // 3.1072323347401709 + double var = invGamma.Variance; // -0.47035626665061164 + + // Cumulative distribution functions + double cdf = invGamma.DistributionFunction(x: 0.27); // 0.042243552114989695 + double ccdf = invGamma.ComplementaryDistributionFunction(x: 0.27); // 0.95775644788501035 + double icdf = invGamma.InverseDistributionFunction(p: cdf); // 0.26999994629410995 + + // Probability density functions + double pdf = invGamma.ProbabilityDensityFunction(x: 0.27); // 0.35679850067181362 + double lpdf = invGamma.LogProbabilityDensityFunction(x: 0.27); // -1.0305840804381006 + + // Hazard (failure rate) functions + double hf = invGamma.HazardFunction(x: 0.27); // 0.3725357333377633 + double chf = invGamma.CumulativeHazardFunction(x: 0.27); // 0.043161763098266373 + + // String representation + string str = invGamma.ToString(); // Γ^(-1)(x; α = 0.42, β = 0.5) + + + + + + + + + Creates a new Inverse Gamma Distribution. + + + The shape parameter α (alpha). + The scale parameter β (beta). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + In the Inverse Gamma CDF is computed in terms of the + Upper Incomplete Regularized Gamma Function Q as CDF(x) = Q(a, b / x). + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the Inverse Gamma distribution, the Mean is given as b / (a - 1). + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + In the Inverse Gamma distribution, the Variance is given as b² / ((a - 1)² * (a - 2)). + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Laplace's Distribution (as known as the double exponential distribution). + + + + + In probability theory and statistics, the Laplace distribution is a continuous + probability distribution named after Pierre-Simon Laplace. It is also sometimes called + the double exponential distribution. + + + The difference between two independent identically distributed exponential random + variables is governed by a Laplace distribution, as is a Brownian motion evaluated at an + exponentially distributed random time. Increments of Laplace motion or a variance gamma + process evaluated over the time scale also have a Laplace distribution. + + + The probability density function of the Laplace distribution is also reminiscent of the + normal distribution; however, whereas the normal distribution is expressed in terms of + the squared difference from the mean μ, the Laplace density is expressed in terms of the + absolute difference from the mean. Consequently the Laplace distribution has fatter tails + than the normal distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Laplace distribution. + Available from: http://en.wikipedia.org/wiki/Laplace_distribution + + + + + + // Create a new Laplace distribution with μ = 4 and b = 2 + var laplace = new LaplaceDistribution(location: 4, scale: 2); + + // Common measures + double mean = laplace.Mean; // 4.0 + double median = laplace.Median; // 4.0 + double var = laplace.Variance; // 8.0 + + // Cumulative distribution functions + double cdf = laplace.DistributionFunction(x: 0.27); // 0.077448104942453522 + double ccdf = laplace.ComplementaryDistributionFunction(x: 0.27); // 0.92255189505754642 + double icdf = laplace.InverseDistributionFunction(p: cdf); // 0.27 + + // Probability density functions + double pdf = laplace.ProbabilityDensityFunction(x: 0.27); // 0.038724052471226761 + double lpdf = laplace.LogProbabilityDensityFunction(x: 0.27); // -3.2512943611198906 + + // Hazard (failure rate) functions + double hf = laplace.HazardFunction(x: 0.27); // 0.041974931360160776 + double chf = laplace.CumulativeHazardFunction(x: 0.27); // 0.080611649844768624 + + // String representation + string str = laplace.ToString(CultureInfo.InvariantCulture); // Laplace(x; μ = 4, b = 2) + + + + + + + Creates a new Laplace distribution. + + + The location parameter μ (mu). + The scale parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The Laplace's distribution mean has the + same value as the location parameter μ. + + + + + + Gets the mode for this distribution (μ). + + + + The Laplace's distribution mode has the + same value as the location parameter μ. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + The Laplace's distribution median has the + same value as the location parameter μ. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The Laplace's variance is computed as 2*b². + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + The Laplace's entropy is defined as ln(2*e*b), in which + e is the Euler constant. + + + + + + Mann-Whitney's U statistic distribution. + + + + + This is the distribution for Mann-Whitney's U + statistic used in . This distribution is based on + sample statistics. + + This is the distribution for the first sample statistic, U1. Some textbooks + (and statistical packages) use alternate definitions for U, which should be + compared with the appropriate statistic tables or alternate distributions. + + + + + // Consider the following rank statistics + double[] ranks = { 1, 2, 3, 4, 5 }; + + // Create a new Mann-Whitney U's distribution with n1 = 2 and n2 = 3 + var mannWhitney = new MannWhitneyDistribution(ranks, n1: 2, n2: 3); + + // Common measures + double mean = mannWhitney.Mean; // 2.7870954605658511 + double median = mannWhitney.Median; // 1.5219615583481305 + double var = mannWhitney.Variance; // 18.28163603621158 + + // Cumulative distribution functions + double cdf = mannWhitney.DistributionFunction(x: 4); // 0.6 + double ccdf = mannWhitney.ComplementaryDistributionFunction(x: 4); // 0.4 + double icdf = mannWhitney.InverseDistributionFunction(p: cdf); // 3.6666666666666661 + + // Probability density functions + double pdf = mannWhitney.ProbabilityDensityFunction(x: 4); // 0.2 + double lpdf = mannWhitney.LogProbabilityDensityFunction(x: 4); // -1.6094379124341005 + + // Hazard (failure rate) functions + double hf = mannWhitney.HazardFunction(x: 4); // 0.5 + double chf = mannWhitney.CumulativeHazardFunction(x: 4); // 0.916290731874155 + + // String representation + string str = mannWhitney.ToString(); // MannWhitney(u; n1 = 2, n2 = 3) + + + + + + + + + + + Constructs a Mann-Whitney's U-statistic distribution. + + + The rank statistics. + The number of observations in the first sample. + The number of observations in the second sample. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the Mann-Whitney's U statistic for the smaller sample. + + + + + + Gets the Mann-Whitney's U statistic for the first sample. + + + + + + Gets the Mann-Whitney's U statistic for the second sample. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point u. + + + A single point in the distribution range. + + + The probability of u occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value u will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of u + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value u will occur. + + + + See . + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of observations in the first sample. + + + + + + Gets the number of observations in the second sample. + + + + + + Gets the rank statistics for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The mean of Mann-Whitney's U distribution + is defined as (n1 * n2) / 2. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The variance of Mann-Whitney's U distribution + is defined as (n1 * n2 * (n1 + n2 + 1)) / 12. + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Noncentral t-distribution. + + + + + As with other noncentrality parameters, the noncentral t-distribution generalizes + a probability distribution – Student's t-distribution + – using a noncentrality parameter. Whereas the central distribution describes how a + test statistic is distributed when the difference tested is null, the noncentral + distribution also describes how t is distributed when the null is false. + This leads to its use in statistics, especially calculating statistical power. The + noncentral t-distribution is also known as the singly noncentral t-distribution, and + in addition to its primary use in statistical inference, is also used in robust + modeling for data. + + + References: + + + Wikipedia, The Free Encyclopedia. Noncentral t-distribution. Available on: + http://en.wikipedia.org/wiki/Noncentral_t-distribution + + + + + + var distribution = new NoncentralTDistribution( + degreesOfFreedom: 4, noncentrality: 2.42); + + double mean = distribution.Mean; // 3.0330202123035104 + double median = distribution.Median; // 2.6034842414893795 + double var = distribution.Variance; // 4.5135883917583683 + + double cdf = distribution.DistributionFunction(x: 1.4); // 0.15955740661144721 + double pdf = distribution.ProbabilityDensityFunction(x: 1.4); // 0.23552141805184526 + double lpdf = distribution.LogProbabilityDensityFunction(x: 1.4); // -1.4459534225195116 + + double ccdf = distribution.ComplementaryDistributionFunction(x: 1.4); // 0.84044259338855276 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 1.4000000000123853 + + double hf = distribution.HazardFunction(x: 1.4); // 0.28023498559521387 + double chf = distribution.CumulativeHazardFunction(x: 1.4); // 0.17382662901507062 + + string str = distribution.ToString(CultureInfo.InvariantCulture); // T(x; df = 4, μ = 2.42) + + + + + + + + + + Initializes a new instance of the class. + + + The degrees of freedom v. + The noncentrality parameter μ (mu). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Computes the cumulative probability at t of the + non-central T-distribution with DF degrees of freedom + and non-centrality parameter. + + + + This function is based on the original work done by + Russell Lent hand John Burkardt, shared under the + LGPL license. Original FORTRAN code can be found at: + http://people.sc.fsu.edu/~jburkardt/f77_src/asa243/asa243.html + + + + + + Gets the degrees of freedom (v) for the distribution. + + + + + + Gets the noncentrality parameter μ (mu) for the distribution. + + + + + + Gets the mean for this distribution. + + + + The noncentral t-distribution's mean is defined in terms of + the Gamma function Γ(x) as + μ * sqrt(v/2) * Γ((v - 1) / 2) / Γ(v / 2) for v > 1. + + + + + + Gets the variance for this distribution. + + + + The noncentral t-distribution's variance is defined in terms of + the Gamma function Γ(x) as + a - b * c² in which + a = v*(1+μ²) / (v-2), + b = (u² * v) / 2 and + c = Γ((v - 1) / 2) / Γ(v / 2) for v > 2. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Exponential distribution. + + + + + In probability theory and statistics, the exponential distribution (a.k.a. negative + exponential distribution) is a family of continuous probability distributions. It + describes the time between events in a Poisson process, i.e. a process in which events + occur continuously and independently at a constant average rate. It is the continuous + analogue of the geometric distribution. + + Note that the exponential distribution is not the same as the class of exponential + families of distributions, which is a large class of probability distributions that + includes the exponential distribution as one of its members, but also includes the + normal distribution, binomial distribution, gamma distribution, Poisson, and many + others. + + + References: + + + Wikipedia, The Free Encyclopedia. Exponential distribution. Available on: + http://en.wikipedia.org/wiki/Exponential_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Exponential distribution given a lambda (λ) rate of 0.42: + + + // Create an Exponential distribution with λ = 0.42 + var exp = new ExponentialDistribution(rate: 0.42); + + // Common measures + double mean = exp.Mean; // 2.3809523809523809 + double median = exp.Median; // 1.6503504299046317 + double var = exp.Variance; // 5.6689342403628125 + + // Cumulative distribution functions + double cdf = exp.DistributionFunction(x: 0.27); // 0.10720652870550407 + double ccdf = exp.ComplementaryDistributionFunction(x: 0.27); // 0.89279347129449593 + double icdf = exp.InverseDistributionFunction(p: cdf); // 0.27 + + // Probability density functions + double pdf = exp.ProbabilityDensityFunction(x: 0.27); // 0.3749732579436883 + double lpdf = exp.LogProbabilityDensityFunction(x: 0.27); // -0.98090056770472311 + + // Hazard (failure rate) functions + double hf = exp.HazardFunction(x: 0.27); // 0.42 + double chf = exp.CumulativeHazardFunction(x: 0.27); // 0.1134 + + // String representation + string str = exp.ToString(CultureInfo.InvariantCulture); // Exp(x; λ = 0.42) + + + + The following example shows how to generate random samples drawn + from an Exponential distribution and later how to re-estimate a + distribution from the generated samples. + + + // Create an Exponential distribution with λ = 2.5 + var exp = new ExponentialDistribution(rate: 2.5); + + // Generate a million samples from this distribution: + double[] samples = target.Generate(1000000); + + // Create a default exponential distribution + var newExp = new ExponentialDistribution(); + + // Fit the samples + newExp.Fit(samples); + + // Check the estimated parameters + double rate = newExp.Rate; // 2.5 + + + + + + + Creates a new Exponential distribution with the given rate. + + + + + + Creates a new Exponential distribution with the given rate. + + + The rate parameter lambda (λ). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Exponential CDF is defined as CDF(x) = 1 - exp(-λ*x). + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + The Exponential PDF is defined as PDF(x) = λ * exp(-λ*x). + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + The Exponential ICDF is defined as ICDF(p) = -ln(1-p)/λ. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + Please see . + + + + + + Estimates a new Exponential distribution from a given set of observations. + + + + + + Estimates a new Exponential distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Exponential distribution with the given parameters. + + + The rate parameter lambda. + The number of samples to generate. + + An array of double values sampled from the specified Exponential distribution. + + + + + Generates a random observation from the + Exponential distribution with the given parameters. + + + The rate parameter lambda. + + A random double value sampled from the specified Exponential distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's rate parameter lambda (λ). + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the Exponential distribution, the mean is defined as 1/λ. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + In the Exponential distribution, the variance is defined as 1/(λ²) + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + In the Exponential distribution, the median is defined as ln(2) / λ. + + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + In the Exponential distribution, the median is defined as 0. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + In the Exponential distribution, the median is defined as 1 - ln(λ). + + + + + + Gamma distribution. + + + + + The gamma distribution is a two-parameter family of continuous probability + distributions. There are three different parameterizations in common use: + + + With a parameter k and a + parameter θ. + + With a shape parameter α = k and an inverse scale parameter + β = 1/θ, called a parameter. + + With a shape parameter k and a + parameter μ = k/β. + + + + In each of these three forms, both parameters are positive real numbers. The + parameterization with k and θ appears to be more common in econometrics and + certain other applied fields, where e.g. the gamma distribution is frequently + used to model waiting times. For instance, in life testing, the waiting time + until death is a random variable that is frequently modeled with a gamma + distribution. This is the default + construction method for this class. + + The parameterization with α and β is more common in Bayesian statistics, where + the gamma distribution is used as a conjugate prior distribution for various + types of inverse scale (aka rate) parameters, such as the λ of an exponential + distribution or a Poisson distribution – or for that matter, the β of the gamma + distribution itself. (The closely related inverse gamma distribution is used as + a conjugate prior for scale parameters, such as the variance of a normal distribution.) + In order to create a Gamma distribution using the Bayesian parameterization, you + can use . + + If k is an integer, then the distribution represents an Erlang distribution; i.e., + the sum of k independent exponentially distributed random variables, each of which + has a mean of θ (which is equivalent to a rate parameter of 1/θ). + + The gamma distribution is the maximum entropy probability distribution for a random + variable X for which E[X] = kθ = α/β is fixed and greater than zero, and E[ln(X)] = + ψ(k) + ln(θ) = ψ(α) − ln(β) is fixed (ψ is the digamma function). + + + References: + + + Wikipedia, The Free Encyclopedia. Gamma distribution. Available on: + http://en.wikipedia.org/wiki/Gamma_distribution + + + + + + The following example shows how to create, test and compute the main + functions of a Gamma distribution given parameters θ = 4 and k = 2: + + + // Create a Γ-distribution with k = 2 and θ = 4 + var gamma = new GammaDistribution(theta: 4, k: 2); + + // Common measures + double mean = gamma.Mean; // 8.0 + double median = gamma.Median; // 6.7133878418421506 + double var = gamma.Variance; // 32.0 + + // Cumulative distribution functions + double cdf = gamma.DistributionFunction(x: 0.27); // 0.002178158242390601 + double ccdf = gamma.ComplementaryDistributionFunction(x: 0.27); // 0.99782184175760935 + double icdf = gamma.InverseDistributionFunction(p: cdf); // 0.26999998689819171 + + // Probability density functions + double pdf = gamma.ProbabilityDensityFunction(x: 0.27); // 0.015773530285395465 + double lpdf = gamma.LogProbabilityDensityFunction(x: 0.27); // -4.1494220422235433 + + // Hazard (failure rate) functions + double hf = gamma.HazardFunction(x: 0.27); // 0.015807962529274005 + double chf = gamma.CumulativeHazardFunction(x: 0.27); // 0.0021805338793574793 + + // String representation + string str = gamma.ToString(CultureInfo.InvariantCulture); // "Γ(x; k = 2, θ = 4)" + + + + + + + + + + Constructs a Gamma distribution. + + + + + + Constructs a Gamma distribution. + + + The scale parameter θ (theta). Default is 1. + The shape parameter k. Default is 1. + + + + + Constructs a Gamma distribution using α and β parameterization. + + + The shape parameter α = k. + The inverse scale parameter β = 1/θ. + + A Gamma distribution constructed with the given parameterization. + + + + + Constructs a Gamma distribution using k and μ parameterization. + + + The shape parameter α = k. + The mean parameter μ = k/β. + + A Gamma distribution constructed with the given parameterization. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Gamma's CDF is computed in terms of the + Lower Incomplete Regularized Gamma Function P as CDF(x) = P(shape, + x / scale). + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Gamma distribution from a given set of observations. + + + + + + Estimates a new Gamma distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Gamma distribution with the given parameters. + + + The scale parameter theta. + The shape parameter k. + The number of samples to generate. + + An array of double values sampled from the specified Gamma distribution. + + + + + Generates a random observation from the + Gamma distribution with the given parameters. + + + The scale parameter theta. + The shape parameter k. + + A random double value sampled from the specified Gamma distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's scale + parameter θ (theta). + + + + + + Gets the distribution's + shape parameter k. + + + + + + Gets the inverse scale parameter β = 1/θ. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the Gamma distribution, the mean is computed as k*θ. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + In the Gamma distribution, the variance is computed as k*θ². + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the standard Gamma distribution, + with scale θ = 1 and location k = 1. + + + + + + Kolmogorov-Smirnov distribution. + + + + + This class is based on the excellent paper and original Java code by Simard and + L'Ecuyer (2010). Includes additional modifications for increased performance and + readability, shared under the LGPL under permission of original authors. + + + L'Ecuyer and Simard partitioned the problem of evaluating the CDF using multiple + approximation and asymptotic methods in order to achieve a best compromise between + speed and precision. The distribution function of this class follows the same + partitioning scheme as described by L'Ecuyer and Simard, which is described in the + table below. + + + For n <= 140 and: + 1/n > x >= 1-1/nUses the Ruben-Gambino formula. + 1/n < nx² < 0.754693Uses the Durbin matrix algorithm. + 0.754693 <= nx² < 4Uses the Pomeranz algorithm. + 4 <= nx² < 18Uses the complementary distribution function. + nx² >= 18Returns the constant 1. + + + For 140 < n <= 10^5 + nx² >= 18Returns the constant 1. + nx^(3/2) < 1.4Durbin matrix algorithm. + nx^(3/2) > 1.4Pelz-Good asymptotic series. + + + For n > 10^5 + nx² >= 18Returns the constant 1. + nx² < 18Pelz-Good asymptotic series. + + + References: + + + R. Simard and P. L'Ecuyer. (2011). "Computing the Two-Sided Kolmogorov-Smirnov + Distribution", Journal of Statistical Software, Vol. 39, Issue 11, Mar 2011. + Available on: http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf + + Marsaglia, G., Tsang, W. W., Wang, J. (2003) "Evaluating Kolmogorov's + Distribution", Journal of Statistical Software, 8 (18), 1–4. jstor. + Available on: http://www.jstatsoft.org/v08/i18/paper + + Durbin, J. (1972). Distribution Theory for Tests Based on The Sample + Distribution Function, Society for Industrial & Applied Mathematics, + Philadelphia. + + + + + + The following example shows how to build a Kolmogorov-Smirnov distribution + for 42 samples and compute its main functions and characteristics: + + + // Create a Kolmogorov-Smirnov distribution with n = 42 + var ks = new KolmogorovSmirnovDistribution(samples: 42); + + // Common measures + double mean = ks.Mean; // 0.13404812830261556 + double median = ks.Median; // 0.12393613519421857 + double var = ks.Variance; // 0.019154717445778062 + + // Cumulative distribution functions + double cdf = ks.DistributionFunction(x: 0.27); // 0.99659863602996079 + double ccdf = ks.ComplementaryDistributionFunction(x: 0.27); // 0.0034013639700392062 + double icdf = ks.InverseDistributionFunction(p: cdf); // 0.26999997446092017 + + // Hazard (failure rate) functions + double chf = ks.CumulativeHazardFunction(x: 0.27); // 5.6835787601476619 + + // String representation + string str = ks.ToString(); // "KS(x; n = 42)" + + + + + + + + + Creates a new Kolmogorov-Smirnov distribution. + + + The number of samples. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + See . + + + + + + Computes the Upper Tail of the P[Dn >= x] distribution. + + + + This function approximates the upper tail of the P[Dn >= x] + distribution using the one-sided Kolmogorov-Smirnov statistic. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Computes the Cumulative Distribution Function (CDF) + for the Kolmogorov-Smirnov statistic's distribution. + + + The sample size. + The Kolmogorov-Smirnov statistic. + Returns the cumulative probability of the statistic + under a sample size . + + + + This function computes the cumulative probability P[Dn <= x] of + the Kolmogorov-Smirnov distribution using multiple methods as + suggested by Richard Simard (2010). + + + Simard partitioned the problem of evaluating the CDF using multiple + approximation and asymptotic methods in order to achieve a best compromise + between speed and precision. This function follows the same partitioning as + Simard, which is described in the table below. + + + For n <= 140 and: + 1/n > x >= 1-1/nUses the Ruben-Gambino formula. + 1/n < nx² < 0.754693Uses the Durbin matrix algorithm. + 0.754693 <= nx² < 4Uses the Pomeranz algorithm. + 4 <= nx² < 18Uses the complementary distribution function. + nx² >= 18Returns the constant 1. + + + For 140 < n <= 10^5 + nx² >= 18Returns the constant 1. + nx^(3/2) < 1.4Durbin matrix algorithm. + nx^(3/2) > 1.4Pelz-Good asymptotic series. + + + For n > 10^5 + nx² >= 18Returns the constant 1. + nx² < 18Pelz-Good asymptotic series. + + + + + + + Computes the Complementary Cumulative Distribution Function (1-CDF) + for the Kolmogorov-Smirnov statistic's distribution. + + + The sample size. + The Kolmogorov-Smirnov statistic. + Returns the complementary cumulative probability of the statistic + under a sample size . + + + + + Pelz-Good algorithm for computing lower-tail areas + of the Kolmogorov-Smirnov distribution. + + + + + As stated in Simard's paper, Pelz and Good (1976) generalized Kolmogorov's + approximation to an asymptotic series in 1/sqrt(n). + + References: Wolfgang Pelz and I. J. Good, "Approximating the Lower Tail-Areas of + the Kolmogorov-Smirnov One-Sample Statistic", Journal of the Royal + Statistical Society, Series B. Vol. 38, No. 2 (1976), pp. 152-156 + + + + + + Computes the Upper Tail of the P[Dn >= x] distribution. + + + + This function approximates the upper tail of the P[Dn >= x] + distribution using the one-sided Kolmogorov-Smirnov statistic. + + + + + + Pomeranz algorithm. + + + + + + Durbin's algorithm for computing P[Dn < d] + + + + + The method presented by Marsaglia (2003), as stated in the paper, is based + on a succession of developments starting with Kolmogorov and culminating in + a masterful treatment by Durbin (1972). Durbin's monograph summarized and + extended many previous works published in the years 1933-73. + + This function implements the small C procedure provided by Marsaglia on his + paper with corrections made by Simard (2010). Further optimizations also + have been performed. + + References: + - Marsaglia, G., Tsang, W. W., Wang, J. (2003) "Evaluating Kolmogorov's + Distribution", Journal of Statistical Software, 8 (18), 1–4. jstor. + Available on: http://www.jstatsoft.org/v08/i18/paper + - Durbin, J. (1972) Distribution Theory for Tests Based on The Sample + Distribution Function, Society for Industrial & Applied Mathematics, + Philadelphia. + + + + + + Computes matrix power. Used in the Durbin algorithm. + + + + + + Initializes the Pomeranz algorithm. + + + + + + Creates matrix A of the Pomeranz algorithm. + + + + + + Computes matrix H of the Pomeranz algorithm. + + + + + + Gets the number of samples distribution parameter. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The mean of the K-S distribution for n samples + is computed as Mean = sqrt(π/2) * ln(2) / sqrt(n). + + + + See . + + + + + + Not supported. + + + + + + Gets the variance for this distribution. + + + + The variance of the K-S distribution for n samples + is computed as Var = (π² / 12 - mean²) / n, in which + mean is the K-S distribution . + + + + See . + + + + + + Gets the entropy for this distribution. + + + + + + Bernoulli probability distribution. + + + + + The Bernoulli distribution is a distribution for a single + binary variable x E {0,1}, representing, for example, the + flipping of a coin. It is governed by a single continuous + parameter representing the probability of an observation + to be equal to 1. + + + References: + + + Wikipedia, The Free Encyclopedia. Bernoulli distribution. Available on: + http://en.wikipedia.org/wiki/Bernoulli_distribution + + C. Bishop. “Pattern Recognition and Machine Learning”. Springer. 2006. + + + + + + // Create a distribution with probability 0.42 + var bern = new BernoulliDistribution(mean: 0.42); + + // Common measures + double mean = bern.Mean; // 0.42 + double median = bern.Median; // 0.0 + double var = bern.Variance; // 0.2436 + double mode = bern.Mode; // 0.0 + + // Probability mass functions + double pdf = bern.ProbabilityMassFunction(k: 1); // 0.42 + double lpdf = bern.LogProbabilityMassFunction(k: 0); // -0.54472717544167193 + + // Cumulative distribution functions + double cdf = bern.DistributionFunction(k: 0); // 0.58 + double ccdf = bern.ComplementaryDistributionFunction(k: 0); // 0.42 + + // Quantile functions + int icdf0 = bern.InverseDistributionFunction(p: 0.57); // 0 + int icdf1 = bern.InverseDistributionFunction(p: 0.59); // 1 + + // Hazard / failure rate functions + double hf = bern.HazardFunction(x: 0); // 1.3809523809523814 + double chf = bern.CumulativeHazardFunction(x: 0); // 0.86750056770472328 + + // String representation + string str = bern.ToString(CultureInfo.InvariantCulture); // "Bernoulli(x; p = 0.42, q = 0.58)" + + + + + + + + + Creates a new Bernoulli distribution. + + + + + + Creates a new Bernoulli distribution. + + + The probability of an observation being equal to 1. Default is 0.5 + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets P(X > k) the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point k. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of k + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Binomial probability distribution. + + + + + The binomial distribution is the discrete probability distribution of the number of + successes in a sequence of >n independent yes/no experiments, each of which + yields success with probability p. Such a success/failure experiment is also + called a Bernoulli experiment or Bernoulli trial; when n = 1, the binomial + distribution is a Bernoulli distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Binomial distribution. Available on: + http://en.wikipedia.org/wiki/Binomial_distribution + + C. Bishop. “Pattern Recognition and Machine Learning”. Springer. 2006. + + + + + + // Creates a distribution with n = 16 and success probability 0.12 + var bin = new BinomialDistribution(trials: 16, probability: 0.12); + + // Common measures + double mean = bin.Mean; // 1.92 + double median = bin.Median; // 2 + double var = bin.Variance; // 1.6896 + double mode = bin.Mode; // 2 + + // Probability mass functions + double pdf = bin.ProbabilityMassFunction(k: 1); // 0.28218979948821621 + double lpdf = bin.LogProbabilityMassFunction(k: 0); // -2.0453339441581582 + + // Cumulative distribution functions + double cdf = bin.DistributionFunction(k: 0); // 0.12933699143209909 + double ccdf = bin.ComplementaryDistributionFunction(k: 0); // 0.87066300856790091 + + // Quantile functions + int icdf0 = bin.InverseDistributionFunction(p: 0.37); // 1 + int icdf1 = bin.InverseDistributionFunction(p: 0.50); // 2 + int icdf2 = bin.InverseDistributionFunction(p: 0.99); // 5 + int icdf3 = bin.InverseDistributionFunction(p: 0.999); // 7 + + // Hazard (failure rate) functions + double hf = bin.HazardFunction(x: 0); // 1.3809523809523814 + double chf = bin.CumulativeHazardFunction(x: 0); // 0.86750056770472328 + + // String representation + string str = bin.ToString(CultureInfo.InvariantCulture); // "Binomial(x; n = 16, p = 0.12)" + + + + + + + + + Constructs a new binomial distribution. + + + + + + Constructs a new binomial distribution. + + + The number of trials n. + + + + + Constructs a new binomial distribution. + + + The number of trials n. + The success probability p in each trial. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of trials n for the distribution. + + + + + + Gets the success probability p for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Chi-Square (χ²) probability distribution + + + + + In probability theory and statistics, the chi-square distribution (also chi-squared + or χ²-distribution) with k degrees of freedom is the distribution of a sum of the + squares of k independent standard normal random variables. It is one of the most + widely used probability distributions in inferential statistics, e.g. in hypothesis + testing, or in construction of confidence intervals. + + + References: + + + Wikipedia, The Free Encyclopedia. Chi-square distribution. Available on: + http://en.wikipedia.org/wiki/Chi-square_distribution + + + + + + The following example demonstrates how to create a new χ² + distribution with the given degrees of freedom. + + + // Create a new χ² distribution with 7 d.f. + var chisq = new ChiSquareDistribution(degreesOfFreedom: 7); + + // Common measures + double mean = chisq.Mean; // 7 + double median = chisq.Median; // 6.345811195595612 + double var = chisq.Variance; // 14 + + // Cumulative distribution functions + double cdf = chisq.DistributionFunction(x: 6.27); // 0.49139966433823956 + double ccdf = chisq.ComplementaryDistributionFunction(x: 6.27); // 0.50860033566176044 + double icdf = chisq.InverseDistributionFunction(p: cdf); // 6.2700000000852318 + + // Probability density functions + double pdf = chisq.ProbabilityDensityFunction(x: 6.27); // 0.11388708001184455 + double lpdf = chisq.LogProbabilityDensityFunction(x: 6.27); // -2.1725478476948092 + + // Hazard (failure rate) functions + double hf = chisq.HazardFunction(x: 6.27); // 0.22392254197721179 + double chf = chisq.CumulativeHazardFunction(x: 6.27); // 0.67609276602233315 + + // String representation + string str = chisq.ToString(); // "χ²(x; df = 7) + + + + + + + Constructs a new Chi-Square distribution + with given degrees of freedom. + + + + + + Constructs a new Chi-Square distribution + with given degrees of freedom. + + + The degrees of freedom for the distribution. Default is 1. + + + + + Gets the probability density function (pdf) for + the χ² distribution evaluated at point x. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + References: + + + + Wikipedia, the free encyclopedia. Chi-square distribution. + + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the cumulative distribution function (cdf) for + the χ² distribution evaluated at point x. + + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The χ² distribution function is defined in terms of the + Incomplete Gamma Function Γ(a, x) as CDF(x; df) = Γ(df/2, x/d). + + + + + + Gets the complementary cumulative distribution function + (ccdf) for the χ² distribution evaluated at point x. + This function is also known as the Survival function. + + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + The χ² complementary distribution function is defined in terms of the + Complemented Incomplete Gamma + Function Γc(a, x) as CDF(x; df) = Γc(df/2, x/d). + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + This method is not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Chi-Square distribution with the given parameters. + + + An array of double values sampled from the specified Chi-Square distribution. + + + + + Generates a random observation from the + Chi-Square distribution with the given parameters. + + + The degrees of freedom for the distribution. + + A random double value sampled from the specified Chi-Square distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + The degrees of freedom of the Chi-Square distribution. + + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the Degrees of Freedom for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The χ² distribution mean is the number of degrees of freedom. + + + + + + Gets the variance for this distribution. + + + + The χ² distribution variance is twice its degrees of freedom. + + + + + + Gets the mode for this distribution. + + + + The χ² distribution mode is max(degrees of freedom - 2, 0). + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + + + + Joint distribution of multiple discrete univariate distributions. + + + + + This class builds a (potentially huge) lookup table for discrete + symbol distributions. For example, given a discrete variable A + which may take symbols a, b, c; and a discrete variable B which + may assume values x, y, z, this class will build the probability + table: + + + x y z + a p(a,x) p(a,y) p(a,z) + b p(b,x) p(b,y) p(b,z) + c p(c,x) p(c,y) p(c,z) + + + + Thus comprising the probabilities for all possible simple combination. This + distribution is a generalization of the + + for multivariate discrete observations. + + + + + + The following example should demonstrate how to estimate a joint + distribution of two discrete variables. The first variable can + take up to three distinct values, whereas the second can assume + up to five. + + + // Lets create a joint distribution for two discrete variables: + // the first of which can assume 3 distinct symbol values: 0, 1, 2 + // the second which can assume 5 distinct symbol values: 0, 1, 2, 3, 4 + + int[] symbols = { 3, 5 }; // specify the symbol counts + + // Create the joint distribution for the above variables + JointDistribution joint = new JointDistribution(symbols); + + // Now, suppose we would like to fit the distribution (estimate + // its parameters) from the following multivariate observations: + // + double[][] observations = + { + new double[] { 0, 0 }, + new double[] { 1, 1 }, + new double[] { 2, 1 }, + new double[] { 0, 0 }, + }; + + + // Estimate parameters + joint.Fit(observations); + + // At this point, we can query the distribution for observations: + double p1 = joint.ProbabilityMassFunction(new[] { 0, 0 }); // should be 0.50 + double p2 = joint.ProbabilityMassFunction(new[] { 1, 1 }); // should be 0.25 + double p3 = joint.ProbabilityMassFunction(new[] { 2, 1 }); // should be 0.25 + + // As it can be seem, indeed {0,0} appeared twice at the data, + // and {1,1} and {2,1 appeared one fourth of the data each. + + + + + + + + + + Constructs a new joint discrete distribution. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + A single point in the distribution range. + + The logarithm of the probability of x + occurring in the current distribution. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the frequency of observation of each discrete variable. + + + + + + Gets the number of symbols for each discrete variable. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the mean values for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the variance values for this distribution. + + + + + + Gets the variance for this distribution. + + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + + Wilcoxon's W statistic distribution. + + + + + This is the distribution for the positive side statistic W+ of the Wilcoxon + test. Some textbooks (and statistical packages) use alternate definitions for + W, which should be compared with the appropriate statistic tables or alternate + distributions. + + The Wilcoxon signed-rank test is a non-parametric statistical hypothesis test + used when comparing two related samples, matched samples, or repeated measurements + on a single sample to assess whether their population mean ranks differ (i.e. it + is a paired difference test). It can be used as an alternative to the paired + Student's t-test, t-test for matched pairs, or the t-test for dependent samples + when the population cannot be assumed to be normally distributed. + + + References: + + + Wikipedia, The Free Encyclopedia. Wilcoxon signed-rank test. Available on: + http://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test + + + + + + // Compute some rank statistics (see other examples below) + double[] ranks = { 1, 2, 3, 4, 5.5, 5.5, 7, 8, 9, 10, 11, 12 }; + + // Create a new Wilcoxon's W distribution + WilcoxonDistribution W = new WilcoxonDistribution(ranks); + + // Common measures + double mean = W.Mean; // 39.0 + double median = W.Median; // 38.5 + double var = W.Variance; // 162.5 + + // Probability density functions + double pdf = W.ProbabilityDensityFunction(w: 42); // 0.38418508862319295 + double lpdf = W.LogProbabilityDensityFunction(w: 42); // 0.38418508862319295 + + // Cumulative distribution functions + double cdf = W.DistributionFunction(w: 42); // 0.60817384423279575 + double ccdf = W.ComplementaryDistributionFunction(x: 42); // 0.39182615576720425 + + // Quantile function + double icdf = W.InverseDistributionFunction(p: cdf); // 42 + + // Hazard (failure rate) functions + double hf = W.HazardFunction(x: 42); // 0.98049883339449373 + double chf = W.CumulativeHazardFunction(x: 42); // 0.936937017743799 + + // String representation + string str = W.ToString(); // "W+(x; R)" + + + + The following example shows how to compute the W+ statistic + given a sample. The W+ statistics is given as the sum of all + positive signed ranks + in a sample. + + + // Suppose we have computed a vector of differences between + // samples and an hypothesized value (as in Wilcoxon's test). + + double[] differences = ... // differences between samples and an hypothesized median + + // Compute the ranks of the absolute differences and their sign + double[] ranks = Accord.Statistics.Tools.Rank(differences.Abs()); + int[] signs = Accord.Math.Matrix.Sign(differences).ToInt32(); + + // Compute the W+ statistics from the signed ranks + double W = WilcoxonDistribution.WPositive(Signs, ranks); + + + + + + + + + + Creates a new Wilcoxon's W+ distribution. + + + The rank statistics for the samples. + + + + + Creates a new Wilcoxon's W+ distribution. + + + The rank statistics for the samples. + True to compute the exact test. May requires + a significant amount of processing power for large samples (n > 12). + + + + + Computes the Wilcoxon's W+ statistic. + + + + The W+ statistic is computed as the + sum of all positive signed ranks. + + + + + + Computes the Wilcoxon's W- statistic. + + + + The W- statistic is computed as the + sum of all negative signed ranks. + + + + + + Computes the Wilcoxon's W statistic. + + + + The W statistic is computed as the + minimum of the W+ and W- statistics. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point w. + + + A single point in the distribution range. + + + The probability of w occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point w. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of effective samples. + + + + + + Gets the rank statistics for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. In the current + implementation, returns the same as the . + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Degenerate distribution. + + + + + In mathematics, a degenerate distribution or deterministic distribution is + the probability distribution of a random variable which only takes a single + value. Examples include a two-headed coin and rolling a die whose sides all + show the same number. While this distribution does not appear random in the + everyday sense of the word, it does satisfy the definition of random variable. + + The degenerate distribution is localized at a point k0 on the real line. The + probability mass function is a Delta function at k0. + + + References: + + + Wikipedia, The Free Encyclopedia. Degenerate distribution. Available on: + http://en.wikipedia.org/wiki/Degenerate_distribution + + + + + + This example shows how to create a Degenerate distribution + and compute some of its properties. + + + var dist = new DegenerateDistribution(value: 2); + + double mean = dist.Mean; // 2 + double median = dist.Median; // 2 + double mode = dist.Mode; // 2 + double var = dist.Variance; // 1 + + double cdf1 = dist.DistributionFunction(k: 1); // 0 + double cdf2 = dist.DistributionFunction(k: 2); // 1 + + double pdf1 = dist.ProbabilityMassFunction(k: 1); // 0 + double pdf2 = dist.ProbabilityMassFunction(k: 2); // 1 + double pdf3 = dist.ProbabilityMassFunction(k: 3); // 0 + + double lpdf = dist.LogProbabilityMassFunction(k: 2); // 0 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.0 + + int icdf1 = dist.InverseDistributionFunction(p: 0.0); // 1 + int icdf2 = dist.InverseDistributionFunction(p: 0.5); // 3 + int icdf3 = dist.InverseDistributionFunction(p: 1.0); // 2 + + double hf = dist.HazardFunction(x: 0); // 0.0 + double chf = dist.CumulativeHazardFunction(x: 0); // 0.0 + + string str = dist.ToString(CultureInfo.InvariantCulture); // Degenerate(x; k0 = 2) + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The only value whose probability is different from zero. Default is zero. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + The does not support fitting. + + + + + + Gets the unique value whose probability is different from zero. + + + + + + Gets the mean for this distribution. + + + + In the Degenerate distribution, the mean is equal to the + unique value within its domain. + + + + The distribution's mean value, which should equal . + + + + + + Gets the median for this distribution, which should equal . + + + + In the Degenerate distribution, the mean is equal to the + unique value within its domain. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution, which should equal 0. + + + + In the Degenerate distribution, the variance equals 0. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution, which should equal . + + + + In the Degenerate distribution, the mean is equal to the + unique value within its domain. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution, which is zero. + + + + The distribution's entropy. + + + + + + Gets the support interval for this distribution. + + + + The degenerate distribution's support is given only on the + point interval (, ). + + + + A containing + the support interval for this distribution. + + + + + + Negative Binomial distribution. + + + + + The negative binomial distribution is a discrete probability distribution of the number + of successes in a sequence of Bernoulli trials before a specified (non-random) number of + failures (denoted r) occur. For example, if one throws a die repeatedly until the third + time “1” appears, then the probability distribution of the number of non-“1”s that had + appeared will be negative binomial. + + + References: + + + Wikipedia, The Free Encyclopedia. Negative Binomial distribution. + Available from: http://en.wikipedia.org/wiki/Negative_binomial_distribution + + + + + + // Create a new Negative Binomial distribution with r = 7 and p = 0.42 + var dist = new NegativeBinomialDistribution(failures: 7, probability: 0.42); + + // Common measures + double mean = dist.Mean; // 5.068965517241379 + double median = dist.Median; // 5.0 + double var = dist.Variance; // 8.7395957193816862 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.19605133020527743 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.80394866979472257 + + // Probability mass functions + double pmf1 = dist.ProbabilityMassFunction(k: 4); // 0.054786846293416853 + double pmf2 = dist.ProbabilityMassFunction(k: 5); // 0.069908015870399909 + double pmf3 = dist.ProbabilityMassFunction(k: 6); // 0.0810932984096639 + double lpmf = dist.LogProbabilityMassFunction(k: 2); // -2.3927801721315989 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 2 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 4 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 8 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 0.10490438293398294 + double chf = dist.CumulativeHazardFunction(x: 4); // 0.64959916255036043 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "NegativeBinomial(x; r = 7, p = 0.42)" + + + + + + + + + Creates a new Negative Binomial distribution. + + + Number of failures r. + Success probability in each experiment. + + + + + Gets P( X<= k), the cumulative distribution function + (cdf) for this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Pareto's Distribution. + + + + + The Pareto distribution, named after the Italian economist Vilfredo Pareto, is a power law + probability distribution that coincides with social, scientific, geophysical, actuarial, + and many other types of observable phenomena. Outside the field of economics it is sometimes + referred to as the Bradford distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Pareto distribution. + Available from: http://en.wikipedia.org/wiki/Pareto_distribution + + + + + + // Creates a new Pareto's distribution with xm = 0.42, α = 3 + var pareto = new ParetoDistribution(scale: 0.42, shape: 3); + + // Common measures + double mean = pareto.Mean; // 0.63 + double median = pareto.Median; // 0.52916684095584676 + double var = pareto.Variance; // 0.13229999999999997 + + // Cumulative distribution functions + double cdf = pareto.DistributionFunction(x: 1.4); // 0.973 + double ccdf = pareto.ComplementaryDistributionFunction(x: 1.4); // 0.027000000000000024 + double icdf = pareto.InverseDistributionFunction(p: cdf); // 1.4000000446580794 + + // Probability density functions + double pdf = pareto.ProbabilityDensityFunction(x: 1.4); // 0.057857142857142857 + double lpdf = pareto.LogProbabilityDensityFunction(x: 1.4); // -2.8497783609309111 + + // Hazard (failure rate) functions + double hf = pareto.HazardFunction(x: 1.4); // 2.142857142857141 + double chf = pareto.CumulativeHazardFunction(x: 1.4); // 3.6119184129778072 + + // String representation + string str = pareto.ToString(CultureInfo.InvariantCulture); // Pareto(x; xm = 0.42, α = 3) + + + + + + + Creates new Pareto distribution. + + + + + + Creates new Pareto distribution. + + + The scale parameter xm. Default is 1. + The shape parameter α (alpha). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the scale parameter xm for this distribution. + + + + + + Gets the shape parameter α (alpha) for this distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The Pareto distribution's mean is defined as + α * xm / (α - 1). + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The Pareto distribution's mean is defined as + α * xm² / ((α - 1)² * (α - 2). + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + The Pareto distribution's Entropy is defined as + ln(xm / α) + 1 / α + 1. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + The Pareto distribution's Entropy is defined as xm. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + The Pareto distribution's median is defined + as xm * 2^(1 / α). + + + + + + Discrete uniform distribution. + + + + + In probability theory and statistics, the discrete uniform distribution is a + symmetric probability distribution whereby a finite number of values are equally + likely to be observed; every one of n values has equal probability 1/n. Another + way of saying "discrete uniform distribution" would be "a known, finite number of + outcomes equally likely to happen". + + + A simple example of the discrete uniform distribution is throwing a fair die. + The possible values are 1, 2, 3, 4, 5, 6, and each time the die is thrown the + probability of a given score is 1/6. If two dice are thrown and their values + added, the resulting distribution is no longer uniform since not all sums have + equal probability. + + + The discrete uniform distribution itself is inherently non-parametric. It is + convenient, however, to represent its values generally by an integer interval + [a,b], so that a,b become the main parameters of the distribution (often one + simply considers the interval [1,n] with the single parameter n). + + + References: + + + Wikipedia, The Free Encyclopedia. Uniform distribution (discrete). Available on: + http://en.wikipedia.org/wiki/Uniform_distribution_(discrete) + + + + + + // Create an uniform (discrete) distribution in [2, 6] + var dist = new UniformDiscreteDistribution(a: 2, b: 6); + + // Common measures + double mean = dist.Mean; // 4.0 + double median = dist.Median; // 4.0 + double var = dist.Variance; // 1.3333333333333333 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.2 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.8 + + // Probability mass functions + double pmf1 = dist.ProbabilityMassFunction(k: 4); // 0.2 + double pmf2 = dist.ProbabilityMassFunction(k: 5); // 0.2 + double pmf3 = dist.ProbabilityMassFunction(k: 6); // 0.2 + double lpmf = dist.LogProbabilityMassFunction(k: 2); // -1.6094379124341003 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 2 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 4 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 6 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 0.5 + double chf = dist.CumulativeHazardFunction(x: 4); // 0.916290731874155 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "U(x; a = 2, b = 6)" + + + + + + + Creates a discrete uniform distribution defined in the interval [a;b]. + + + The starting (minimum) value a. + The ending (maximum) value b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + A single point in the distribution range. + + The logarithm of the probability of k + occurring in the current distribution. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Gets the minimum value of the distribution (a). + + + + + + Gets the maximum value of the distribution (b). + + + + + + Gets the length of the distribution (b - a + 1). + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + (Shifted) Geometric Distribution. + + + + + This class represents the shifted version of the Geometric distribution + with support on { 0, 1, 2, 3, ... }. This is the probability distribution + of the number Y = X − 1 of failures before the first success, supported + on the set { 0, 1, 2, 3, ... }. + + + References: + + + Wikipedia, The Free Encyclopedia. Geometric distribution. Available on: + http://en.wikipedia.org/wiki/Geometric_distribution + + + + + + // Create a Geometric distribution with 42% success probability + var dist = new GeometricDistribution(probabilityOfSuccess: 0.42); + + // Common measures + double mean = dist.Mean; // 1.3809523809523812 + double median = dist.Median; // 1.0 + double var = dist.Variance; // 3.2879818594104315 + double mode = dist.Mode; // 0.0 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.80488799999999994 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.19511200000000006 + + // Probability mass functions + double pdf1 = dist.ProbabilityMassFunction(k: 0); // 0.42 + double pdf2 = dist.ProbabilityMassFunction(k: 1); // 0.2436 + double pdf3 = dist.ProbabilityMassFunction(k: 2); // 0.141288 + double lpdf = dist.LogProbabilityMassFunction(k: 2); // -1.956954918588067 + + // Quantile functions + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 0 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 1 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 3 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 0); // 0.72413793103448265 + double chf = dist.CumulativeHazardFunction(x: 0); // 0.54472717544167193 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Geometric(x; p = 0.42)" + + + + + + + + + Creates a new (shifted) geometric distribution. + + + The success probability. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the success probability for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Hypergeometric probability distribution. + + + + + The hypergeometric distribution is a discrete probability distribution that + describes the probability of k successes in n draws from a finite population + without replacement. This is in contrast to the + binomial distribution, which describes the probability of k successes + in n draws with replacement. + + + References: + + + Wikipedia, The Free Encyclopedia. Hypergeometric distribution. Available on: + http://en.wikipedia.org/wiki/Hypergeometric_distribution + + + + + + // Distribution parameters + int populationSize = 15; // population size N + int success = 7; // number of successes in the sample + int samples = 8; // number of samples drawn from N + + // Create a new Hypergeometric distribution with N = 15, n = 8, and s = 7 + var dist = new HypergeometricDistribution(populationSize, success, samples); + + // Common measures + double mean = dist.Mean; // 1.3809523809523812 + double median = dist.Median; // 4.0 + double var = dist.Variance; // 3.2879818594104315 + double mode = dist.Mode; // 4.0 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.80488799999999994 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.19511200000000006 + + // Probability mass functions + double pdf1 = dist.ProbabilityMassFunction(k: 4); // 0.38073038073038074 + double pdf2 = dist.ProbabilityMassFunction(k: 5); // 0.18275058275058276 + double pdf3 = dist.ProbabilityMassFunction(k: 6); // 0.030458430458430458 + double lpdf = dist.LogProbabilityMassFunction(k: 2); // -2.3927801721315989 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 3 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 4 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 5 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 1.7753623188405792 + double chf = dist.CumulativeHazardFunction(x: 4); // 1.5396683418789763 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "HyperGeometric(x; N = 15, m = 7, n = 8)" + + + + + + + + + + Constructs a new Hypergeometric distribution. + + + Size N of the population. + The number m of successes in the population. + The number n of samples drawn from the population. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the size N of the + population for this distribution. + + + + + + Gets the size n of the sample drawn + from N. + + + + + + Gets the count of success trials in the + population for this distribution. This + is often referred as m. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Inverse Gaussian (Normal) Distribution, also known as the Wald distribution. + + + + + The Inverse Gaussian distribution is a two-parameter family of continuous probability + distributions with support on (0,∞). As λ tends to infinity, the inverse Gaussian distribution + becomes more like a normal (Gaussian) distribution. The inverse Gaussian distribution has + several properties analogous to a Gaussian distribution. The name can be misleading: it is + an "inverse" only in that, while the Gaussian describes a Brownian Motion's level at a fixed + time, the inverse Gaussian describes the distribution of the time a Brownian Motion with positive + drift takes to reach a fixed positive level. + + References: + + + Wikipedia, The Free Encyclopedia. Inverse Gaussian distribution. Available on: + http://en.wikipedia.org/wiki/Inverse_Gaussian_distribution + + + + + + // Create a new inverse Gaussian distribution with μ = 0.42 and λ = 1.2 + var invGaussian = new InverseGaussianDistribution(mean: 0.42, shape: 1.2); + + // Common measures + double mean = invGaussian.Mean; // 0.42 + double median = invGaussian.Median; // 0.35856861093990083 + double var = invGaussian.Variance; // 0.061739999999999989 + + // Cumulative distribution functions + double cdf = invGaussian.DistributionFunction(x: 0.27); // 0.30658791274125458 + double ccdf = invGaussian.ComplementaryDistributionFunction(x: 0.27); // 0.69341208725874548 + double icdf = invGaussian.InverseDistributionFunction(p: cdf); // 0.26999999957543408 + + // Probability density functions + double pdf = invGaussian.ProbabilityDensityFunction(x: 0.27); // 2.3461495925760354 + double lpdf = invGaussian.LogProbabilityDensityFunction(x: 0.27); // 0.85277551314980737 + + // Hazard (failure rate) functions + double hf = invGaussian.HazardFunction(x: 0.27); // 3.383485283406336 + double chf = invGaussian.CumulativeHazardFunction(x: 0.27); // 0.36613081401302111 + + // String representation + string str = invGaussian.ToString(CultureInfo.InvariantCulture); // "N^-1(x; μ = 0.42, λ = 1.2)" + + + + + + + + + Constructs a new Inverse Gaussian distribution. + + + The mean parameter mu. + The shape parameter lambda. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random observation from the + Inverse Gaussian distribution with the given parameters. + + + The mean parameter mu. + The shape parameter lambda. + + A random double value sampled from the specified Uniform distribution. + + + + + Generates a random vector of observations from the + Inverse Gaussian distribution with the given parameters. + + + The mean parameter mu. + The shape parameter lambda. + The number of samples to generate. + + An array of double values sampled from the specified Uniform distribution. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the shape parameter (lambda) + for this distribution. + + + The distribution's lambda value. + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Nakagami distribution. + + + + + The Nakagami distribution has been used in the modeling of wireless + signal attenuation while traversing multiple paths. + + + References: + + + Wikipedia, The Free Encyclopedia. Nakagami distribution. Available on: + http://en.wikipedia.org/wiki/Nakagami_distribution + + Laurenson, Dave (1994). "Nakagami Distribution". Indoor Radio Channel Propagation + Modeling by Ray Tracing Techniques. + + R. Kolar, R. Jirik, J. Jan (2004) "Estimator Comparison of the Nakagami-m Parameter + and Its Application in Echocardiography", Radioengineering, 13 (1), 8–12 + + + + + + var nakagami = new NakagamiDistribution(shape: 2.4, spread: 4.2); + + double mean = nakagami.Mean; // 1.946082119049118 + double median = nakagami.Median; // 1.9061151110206338 + double var = nakagami.Variance; // 0.41276438591729486 + + double cdf = nakagami.DistributionFunction(x: 1.4); // 0.20603416752368109 + double pdf = nakagami.ProbabilityDensityFunction(x: 1.4); // 0.49253215371343023 + double lpdf = nakagami.LogProbabilityDensityFunction(x: 1.4); // -0.708195533773302 + + double ccdf = nakagami.ComplementaryDistributionFunction(x: 1.4); // 0.79396583247631891 + double icdf = nakagami.InverseDistributionFunction(p: cdf); // 1.400000000131993 + + double hf = nakagami.HazardFunction(x: 1.4); // 0.62034426869133652 + double chf = nakagami.CumulativeHazardFunction(x: 1.4); // 0.23071485080660473 + + string str = nakagami.ToString(CultureInfo.InvariantCulture); // Nakagami(x; μ = 2,4, ω = 4,2)" + + + + + + + Initializes a new instance of the class. + + + The shape parameter μ (mu). + The spread parameter ω (omega). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + The Nakagami's distribution CDF is defined in terms of the + Lower incomplete regularized + Gamma function P(a, x) as CDF(x) = P(μ, μ / ω) * x². + + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + Nakagami's PDF is defined as + PDF(x) = c * x^(2 * μ - 1) * exp(-(μ / ω) * x²) + in which c = 2 * μ ^ μ / (Γ(μ) * ω ^ μ)) + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + Nakagami's PDF is defined as + PDF(x) = c * x^(2 * μ - 1) * exp(-(μ / ω) * x²) + in which c = 2 * μ ^ μ / (Γ(μ) * ω ^ μ)) + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Nakagami distribution from a given set of observations. + + + + + + Estimates a new Nakagami distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Nakagami distribution with the given parameters. + + + The shape parameter μ. + The spread parameter ω. + The number of samples to generate. + + An array of double values sampled from the specified Nakagami distribution. + + + + + Generates a random observation from the + Nakagami distribution with the given parameters. + + + The shape parameter μ. + The spread parameter ω. + + A random double value sampled from the specified Nakagami distribution. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the distribution's shape parameter μ (mu). + + + The shape parameter μ (mu). + + + + + Gets the distribution's spread parameter ω (omega). + + + The spread parameter ω (omega). + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + Nakagami's mean is defined in terms of the + Gamma function Γ(x) as (Γ(μ + 0.5) / Γ(μ)) * sqrt(ω / μ). + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + Nakagami's variance is defined in terms of the + Gamma function Γ(x) as ω * (1 - (1 / μ) * (Γ(μ + 0.5) / Γ(μ))². + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Rayleigh distribution. + + + + + In probability theory and statistics, the Rayleigh distribution is a continuous + probability distribution. A Rayleigh distribution is often observed when the overall + magnitude of a vector is related to its directional components. + + One example where the Rayleigh distribution naturally arises is when wind speed + is analyzed into its orthogonal 2-dimensional vector components. Assuming that the + magnitude of each component is uncorrelated and normally distributed with equal variance, + then the overall wind speed (vector magnitude) will be characterized by a Rayleigh + distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Rayleigh distribution. Available on: + http://en.wikipedia.org/wiki/Rayleigh_distribution + + + + + + // Create a new Rayleigh's distribution with σ = 0.42 + var rayleigh = new RayleighDistribution(sigma: 0.42); + + // Common measures + double mean = rayleigh.Mean; // 0.52639193767251 + double median = rayleigh.Median; // 0.49451220943852386 + double var = rayleigh.Variance; // 0.075711527953380237 + + // Cumulative distribution functions + double cdf = rayleigh.DistributionFunction(x: 1.4); // 0.99613407986052716 + double ccdf = rayleigh.ComplementaryDistributionFunction(x: 1.4); // 0.0038659201394728449 + double icdf = rayleigh.InverseDistributionFunction(p: cdf); // 1.4000000080222026 + + // Probability density functions + double pdf = rayleigh.ProbabilityDensityFunction(x: 1.4); // 0.030681905868831811 + double lpdf = rayleigh.LogProbabilityDensityFunction(x: 1.4); // -3.4840821835248961 + + // Hazard (failure rate) functions + double hf = rayleigh.HazardFunction(x: 1.4); // 7.9365079365078612 + double chf = rayleigh.CumulativeHazardFunction(x: 1.4); // 5.5555555555555456 + + // String representation + string str = rayleigh.ToString(CultureInfo.InvariantCulture); // Rayleigh(x; σ = 0.42) + + + + + + + Creates a new Rayleigh distribution. + + + The scale parameter σ (sigma). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Gamma distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Rayleigh distribution with the given parameters. + + + The Rayleigh distribution's sigma. + The number of samples to generate. + + An array of double values sampled from the specified Rayleigh distribution. + + + + + Generates a random observation from the + Rayleigh distribution with the given parameters. + + + The Rayleigh distribution's sigma. + + A random double value sampled from the specified Rayleigh distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The Rayleight's mean value is defined + as mean = σ * sqrt(π / 2). + + + + + + Gets the Rayleight's scale parameter σ (sigma) + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The Rayleight's variance value is defined + as var = (4 - π) / 2 * σ². + + + + + + Gets the mode for this distribution. + + + + In the Rayleigh distribution, the mode equals σ (sigma). + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Student's t-distribution. + + + + + In probability and statistics, Student's t-distribution (or simply the + t-distribution) is a family of continuous probability distributions that + arises when estimating the mean of a normally distributed population in + situations where the sample size is small and population standard deviation + is unknown. It plays a role in a number of widely used statistical analyses, + including the Student's t-test for assessing the statistical significance of + the difference between two sample means, the construction of confidence intervals + for the difference between two population means, and in linear regression + analysis. The Student's t-distribution also arises in the Bayesian analysis of + data from a normal family. + + If we take k samples from a normal distribution with fixed unknown mean and + variance, and if we compute the sample mean and sample variance for these k + samples, then the t-distribution (for k) can be defined as the distribution + of the location of the true mean, relative to the sample mean and divided by + the sample standard deviation, after multiplying by the normalizing term + sqrt(n), where n is the sample size. In this way the t-distribution + can be used to estimate how likely it is that the true mean lies in any given + range. + + The t-distribution is symmetric and bell-shaped, like the normal distribution, + but has heavier tails, meaning that it is more prone to producing values that + fall far from its mean. This makes it useful for understanding the statistical + behavior of certain types of ratios of random quantities, in which variation in + the denominator is amplified and may produce outlying values when the denominator + of the ratio falls close to zero. The Student's t-distribution is a special case + of the generalized hyperbolic distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's t-distribution. Available on: + http://en.wikipedia.org/wiki/Student's_t-distribution + + + + + + // Create a new Student's T distribution with d.f = 4.2 + TDistribution t = new TDistribution(degreesOfFreedom: 4.2); + + // Common measures + double mean = t.Mean; // 0.0 + double median = t.Median; // 0.0 + double var = t.Variance; // 1.9090909090909089 + + // Cumulative distribution functions + double cdf = t.DistributionFunction(x: 1.4); // 0.88456136730659074 + double pdf = t.ProbabilityDensityFunction(x: 1.4); // 0.13894002185341031 + double lpdf = t.LogProbabilityDensityFunction(x: 1.4); // -1.9737129364307417 + + // Probability density functions + double ccdf = t.ComplementaryDistributionFunction(x: 1.4); // 0.11543863269340926 + double icdf = t.InverseDistributionFunction(p: cdf); // 1.4000000000000012 + + // Hazard (failure rate) functions + double hf = t.HazardFunction(x: 1.4); // 1.2035833984833988 + double chf = t.CumulativeHazardFunction(x: 1.4); // 2.1590162088918525 + + // String representation + string str = t.ToString(CultureInfo.InvariantCulture); // T(x; df = 4.2) + + + + + + + + + + Initializes a new instance of the class. + + + The degrees of freedom. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + See . + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + the left tail T-distribution evaluated at probability p. + + + + Based on the stdtril function from the Cephes Math Library + Release 2.8, adapted with permission of Stephen L. Moshier. + + + + + + Gets the degrees of freedom for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the T Distribution, the mean is zero if the number of degrees + of freedom is higher than 1. Otherwise, it is undefined. + + + + + + Gets the mode for this distribution (always zero). + + + + The distribution's mode value (zero). + + + + + + Gets the variance for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Not supported. + + + + + + Continuous Uniform Distribution. + + + + + The continuous uniform distribution or rectangular distribution is a family of + symmetric probability distributions such that for each member of the family, all + intervals of the same length on the distribution's support are equally probable. + The support is defined by the two parameters, a and b, which are its minimum and + maximum values. The distribution is often abbreviated U(a,b). It is the maximum + entropy probability distribution for a random variate X under no constraint other + than that it is contained in the distribution's support. + + + References: + + + Wikipedia, The Free Encyclopedia. Uniform Distribution (continuous). Available on: + http://en.wikipedia.org/wiki/Uniform_distribution_(continuous) + + + + + + The following example demonstrates how to create an uniform + distribution defined over the interval [0.42, 1.1]. + + + // Create a new uniform continuous distribution from 0.42 to 1.1 + var uniform = new UniformContinuousDistribution(a: 0.42, b: 1.1); + + // Common measures + double mean = uniform.Mean; // 0.76 + double median = uniform.Median; // 0.76 + double var = uniform.Variance; // 0.03853333333333335 + + // Cumulative distribution functions + double cdf = uniform.DistributionFunction(x: 0.9); // 0.70588235294117641 + double ccdf = uniform.ComplementaryDistributionFunction(x: 0.9); // 0.29411764705882359 + double icdf = uniform.InverseDistributionFunction(p: cdf); // 0.9 + + // Probability density functions + double pdf = uniform.ProbabilityDensityFunction(x: 0.9); // 1.4705882352941173 + double lpdf = uniform.LogProbabilityDensityFunction(x: 0.9); // 0.38566248081198445 + + // Hazard (failure rate) functions + double hf = uniform.HazardFunction(x: 0.9); // 4.9999999999999973 + double chf = uniform.CumulativeHazardFunction(x: 0.9); // 1.2237754316221154 + + // String representation + string str = uniform.ToString(CultureInfo.InvariantCulture); // "U(x; a = 0.42, b = 1.1)" + + + + + + + Creates a new uniform distribution defined in the interval [0;1]. + + + + + + Creates a new uniform distribution defined in the interval [a;b]. + + + The starting number a. + The ending number b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Estimates a new uniform distribution from a given set of observations. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Uniform distribution with the given parameters. + + + The starting number a. + The ending number b. + The number of samples to generate. + + An array of double values sampled from the specified Uniform distribution. + + + + + Generates a random observation from the Uniform + distribution defined in the interval 0 and 1. + + + The number of samples to generate. + + An array of double values sampled from the specified Uniform distribution. + + + + + Generates a random observation from the Uniform + distribution defined in the interval 0 and 1. + + + A random double value sampled from the specified Uniform distribution. + + + + + Generates a random observation from the + Uniform distribution with the given parameters. + + + The starting number a. + The ending number b. + + A random double value sampled from the specified Uniform distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the minimum value of the distribution (a). + + + + + + Gets the maximum value of the distribution (b). + + + + + + Gets the length of the distribution (b-a). + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + The mode of the uniform distribution is any value contained + in the interval of the distribution. The framework return + the same value as the . + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Standard Uniform Distribution, + starting at zero and ending at one (a=0, b=1). + + + + + + Log-Normal (Galton) distribution. + + + + + The log-normal distribution is a probability distribution of a random + variable whose logarithm is normally distributed. + + + References: + + + Wikipedia, The Free Encyclopedia. Log-normal distribution. + Available on: http://en.wikipedia.org/wiki/Log-normal_distribution + + NIST/SEMATECH e-Handbook of Statistical Methods. Lognormal Distribution. + Available on: http://www.itl.nist.gov/div898/handbook/eda/section3/eda3669.htm + + Weisstein, Eric W. "Normal Distribution Function." From MathWorld--A Wolfram Web + Resource. http://mathworld.wolfram.com/NormalDistributionFunction.html + + + + + + // Create a new Log-normal distribution with μ = 2.79 and σ = 1.10 + var log = new LognormalDistribution(location: 0.42, shape: 1.1); + + // Common measures + double mean = log.Mean; // 2.7870954605658511 + double median = log.Median; // 1.5219615583481305 + double var = log.Variance; // 18.28163603621158 + + // Cumulative distribution functions + double cdf = log.DistributionFunction(x: 0.27); // 0.057961222885664958 + double ccdf = log.ComplementaryDistributionFunction(x: 0.27); // 0.942038777114335 + double icdf = log.InverseDistributionFunction(p: cdf); // 0.26999997937815973 + + // Probability density functions + double pdf = log.ProbabilityDensityFunction(x: 0.27); // 0.39035530085982068 + double lpdf = log.LogProbabilityDensityFunction(x: 0.27); // -0.94069792674674835 + + // Hazard (failure rate) functions + double hf = log.HazardFunction(x: 0.27); // 0.41437285846720867 + double chf = log.CumulativeHazardFunction(x: 0.27); // 0.059708840588116374 + + // String representation + string str = log.ToString("N2", CultureInfo.InvariantCulture); // Lognormal(x; μ = 2.79, σ = 1.10) + + + + + + + + + Constructs a Log-Normal (Galton) distribution + with zero location and unit shape. + + + + + + Constructs a Log-Normal (Galton) distribution + with given location and unit shape. + + + The distribution's location value μ (mu). + + + + + Constructs a Log-Normal (Galton) distribution + with given mean and standard deviation. + + + The distribution's location value μ (mu). + The distribution's shape deviation σ (sigma). + + + + + Gets the cumulative distribution function (cdf) for + the this Log-Normal distribution evaluated at point x. + + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The calculation is computed through the relationship to the error function + as erfc(-z/sqrt(2)) / 2. See + [Weisstein] for more details. + + + References: + + + Weisstein, Eric W. "Normal Distribution Function." From MathWorld--A Wolfram Web + Resource. http://mathworld.wolfram.com/NormalDistributionFunction.html + + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Estimates a new Log-Normal distribution from a given set of observations. + + + + + + Estimates a new Log-Normal distribution from a given set of observations. + + + + + + Estimates a new Log-Normal distribution from a given set of observations. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random observation from the + Lognormal distribution with the given parameters. + + + The distribution's location value. + The distribution's shape deviation. + + A random double value sampled from the specified Lognormal distribution. + + + + + Generates a random vector of observations from the + Lognormal distribution with the given parameters. + + + The distribution's location value. + The distribution's shape deviation. + The number of samples to generate. + + An array of double values sampled from the specified Lognormal distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Shape parameter σ (sigma) of + the log-normal distribution. + + + + + + Squared shape parameter σ² (sigma-squared) + of the log-normal distribution. + + + + + + Location parameter μ (mu) of the log-normal distribution. + + + + + + Gets the Mean for this Log-Normal distribution. + + + + The Lognormal distribution's mean is + defined as exp(μ + σ²/2). + + + + + + Gets the Variance (the square of the standard + deviation) for this Log-Normal distribution. + + + + The Lognormal distribution's variance is + defined as (exp(σ²) - 1) * exp(2*μ + σ²). + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Entropy for this Log-Normal distribution. + + + + + + Gets the Standard Log-Normal Distribution, + with location set to zero and unit shape. + + + + + + Empirical distribution. + + + + + Empirical distributions are based solely on the data. This class + uses the empirical distribution function and the Gaussian kernel + density estimation to provide an univariate continuous distribution + implementation which depends only on sampled data. + + + References: + + + Wikipedia, The Free Encyclopedia. Empirical Distribution Function. Available on: + + http://en.wikipedia.org/wiki/Empirical_distribution_function + + PlanetMath. Empirical Distribution Function. Available on: + + http://planetmath.org/encyclopedia/EmpiricalDistributionFunction.html + + Wikipedia, The Free Encyclopedia. Kernel Density Estimation. Available on: + + http://en.wikipedia.org/wiki/Kernel_density_estimation + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + + + + + The following example shows how to build an empirical distribution directly from a sample: + + + // Consider the following univariate samples + double[] samples = { 5, 5, 1, 4, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 4, 3, 2, 3 }; + + // Create a non-parametric, empirical distribution using those samples: + EmpiricalDistribution distribution = new EmpiricalDistribution(samples); + + // Common measures + double mean = distribution.Mean; // 3 + double median = distribution.Median; // 2.9999993064186787 + double var = distribution.Variance; // 1.2941176470588236 + + // Cumulative distribution function + double cdf = distribution.DistributionFunction(x: 4.2); // 0.88888888888888884 + double ccdf = distribution.ComplementaryDistributionFunction(x: 4.2); //0.11111111111111116 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 4.1999999999999993 + + // Probability density functions + double pdf = distribution.ProbabilityDensityFunction(x: 4.2); // 0.15552784414141974 + double lpdf = distribution.LogProbabilityDensityFunction(x: 4.2); // -1.8609305013898356 + + // Hazard (failure rate) functions + double hf = distribution.HazardFunction(x: 4.2); // 1.3997505972727771 + double chf = distribution.CumulativeHazardFunction(x: 4.2); // 2.1972245773362191 + + // Automatically estimated smooth parameter (gamma) + double smoothing = distribution.Smoothing; // 1.9144923416414432 + + // String representation + string str = distribution.ToString(CultureInfo.InvariantCulture); // Fn(x; S) + + + + + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The number of repetition counts for each sample. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + The number of repetition counts for each sample. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the default estimative of the smoothing parameter. + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + + An estimative of the smoothing parameter. + + + + + Gets the default estimative of the smoothing parameter. + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + + An estimative of the smoothing parameter. + + + + + Gets the default estimative of the smoothing parameter. + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Gets the default estimative of the smoothing parameter. + + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the samples giving this empirical distribution. + + + + + + Gets the fractional weights associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the repetition counts associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the total number of samples in this distribution. + + + + + + Gets the bandwidth smoothing parameter + used in the kernel density estimation. + + + + + + Gets the mean for this distribution. + + + + See . + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + See . + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + F (Fisher-Snedecor) distribution. + + + + + In probability theory and statistics, the F-distribution is a continuous + probability distribution. It is also known as Snedecor's F distribution + or the Fisher-Snedecor distribution (after R.A. Fisher and George W. Snedecor). + The F-distribution arises frequently as the null distribution of a test statistic, + most notably in the analysis of variance; see . + + + References: + + + Wikipedia, The Free Encyclopedia. F-distribution. Available on: + http://en.wikipedia.org/wiki/F-distribution + + + + + + The following example shows how to construct a Fisher-Snedecor's F-distribution + with 8 and 5 degrees of freedom, respectively. + + + // Create a Fisher-Snedecor's F distribution with 8 and 5 d.f. + FDistribution F = new FDistribution(degrees1: 8, degrees2: 5); + + // Common measures + double mean = F.Mean; // 1.6666666666666667 + double median = F.Median; // 1.0545096252132447 + double var = F.Variance; // 7.6388888888888893 + + // Cumulative distribution functions + double cdf = F.DistributionFunction(x: 0.27); // 0.049463408057268315 + double ccdf = F.ComplementaryDistributionFunction(x: 0.27); // 0.95053659194273166 + double icdf = F.InverseDistributionFunction(p: cdf); // 0.27 + + // Probability density functions + double pdf = F.ProbabilityDensityFunction(x: 0.27); // 0.45120469723580559 + double lpdf = F.LogProbabilityDensityFunction(x: 0.27); // -0.79583416831212883 + + // Hazard (failure rate) functions + double hf = F.HazardFunction(x: 0.27); // 0.47468419528555084 + double chf = F.CumulativeHazardFunction(x: 0.27); // 0.050728620222091653 + + // String representation + string str = F.ToString(CultureInfo.InvariantCulture); // F(x; df1 = 8, df2 = 5) + + + + + + + Constructs a F-distribution with + the given degrees of freedom. + + + + + + Constructs a F-distribution with + the given degrees of freedom. + + + The first degree of freedom. Default is 1. + The second degree of freedom. Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + the F-distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + The F-distribution CDF is computed in terms of the + Incomplete Beta function Ix(a,b) as CDF(x) = Iu(d1/2, d2/2) in which + u is given as u = (d1 * x) / (d1 * x + d2). + + + + + + Gets the complementary cumulative distribution + function evaluated at point x. + + + + + The F-distribution complementary CDF is computed in terms of the + Incomplete Beta function Ix(a,b) as CDFc(x) = Iu(d2/2, d1/2) in which + u is given as u = (d2 * x) / (d2 * x + d1). + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Gets the probability density function (pdf) for + the F-distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not available. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + F-distribution with the given parameters. + + + The first degree of freedom. + The second degree of freedom. + The number of samples to generate. + + An array of double values sampled from the specified F-distribution. + + + + + Generates a random observation from the + F-distribution with the given parameters. + + + The first degree of freedom. + The second degree of freedom. + + A random double value sampled from the specified F-distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the first degree of freedom. + + + + + + Gets the second degree of freedom. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Outcome status for survival methods. A sample can + enter the experiment, exit the experiment while still + alive or exit the experiment due to failure. + + + + + + Observation started. The observation was left censored before + the current time and has now entered the experiment. This is + equivalent to R's censoring code -1. + + + + + + Failure happened. This is equivalent to R's censoring code 1. + + + + + + The sample was right-censored. This is equivalent to R's censoring code 0. + + + + + + Estimators for estimating parameters of Hazard distributions. + + + + + + Breslow-Nelson-Aalen estimator (default). + + + + + + Kaplan-Meier estimator. + + + + + + Methods for handling ties in hazard/survival estimation algorithms. + + + + + + Efron's method for ties (default). + + + + + + Breslow's method for ties. + + + + + + Estimators for Survival distribution functions. + + + + + + Fleming-Harrington estimator (default). + + + + + + Kaplan-Meier estimator. + + + + + + Empirical Hazard Distribution. + + + + + The Empirical Hazard (or Survival) Distribution can be used as an + estimative of the true Survival function for a dataset which does + not relies on distribution or model assumptions about the data. + + + The most direct use for this class is in Survival Analysis, such as when + using or creating + Cox's Proportional Hazards models. + + // references + http://www.statsdirect.com/help/default.htm#survival_analysis/kaplan_meier.htm + + + + + The following example shows how to construct an empirical hazards + function from a set of hazard values at the given time instants. + + + // Consider the following observations, occurring at the given time steps + double[] times = { 11, 10, 9, 8, 6, 5, 4, 2 }; + double[] values = { 0.22, 0.67, 1.00, 0.18, 1.00, 1.00, 1.00, 0.55 }; + + // Create a new empirical distribution function given the observations and event times + EmpiricalHazardDistribution distribution = new EmpiricalHazardDistribution(times, values); + + // Common measures + double mean = distribution.Mean; // 2.1994135014183138 + double median = distribution.Median; // 3.9999999151458066 + double var = distribution.Variance; // 4.2044065839577112 + + // Cumulative distribution functions + double cdf = distribution.DistributionFunction(x: 4.2); // 0.7877520261732569 + double ccdf = distribution.ComplementaryDistributionFunction(x: 4.2); // 0.21224797382674304 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 4.3304819115496436 + + // Probability density functions + double pdf = distribution.ProbabilityDensityFunction(x: 4.2); // 0.21224797382674304 + double lpdf = distribution.LogProbabilityDensityFunction(x: 4.2); // -1.55 + + // Hazard (failure rate) functions + double hf = distribution.HazardFunction(x: 4.2); // 1.0 + double chf = distribution.CumulativeHazardFunction(x: 4.2); // 1.55 + + // String representation + string str = distribution.ToString(); // H(x; v, t) + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The time steps. + The hazard rates at the time steps. + + + + + Initializes a new instance of the class. + + + The time steps. + The hazard rates at the time steps. + The survival function estimator to be used. Default is + + + + + + Initializes a new instance of the class. + + + The survival function estimator to be used. Default is + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. In the Empirical Hazard Distribution, this function + is computed using the Fleming-Harrington estimator. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + In the Empirical Hazard Distribution, the PDF is defined + as the product of the hazard function h(x) and survival + function S(x), as PDF(x) = h(x) * S(x). + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Sorts time-censored events considering their time of occurrence and the type of event. + Events are first sorted in decreased order of occurrence, and then with failures coming + before censoring. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + + The indices of the new sorting. + + + + + Sorts time-censored events considering their time of occurrence and the type of event. + Events are first sorted in decreased order of occurrence, and then with failures coming + before censoring. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The input vector associated with the event. + + The indices of the new sorting. + + + + + Sorts time-censored events considering their time of occurrence and the type of event. + Events are first sorted in decreased order of occurrence, and then with failures coming + before censoring. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + + The indices of the new sorting. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Gets the time steps of the hazard density values. + + + + + + Gets the hazard rate values at each time step. + + + + + + Gets the survival values at each time step. + + + + + + Gets the survival function estimator being used in this distribution. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gompertz distribution. + + + + + The Gompertz distribution is a continuous probability distribution. The + Gompertz distribution is often applied to describe the distribution of + adult lifespans by demographers and actuaries. Related fields of science + such as biology and gerontology also considered the Gompertz distribution + for the analysis of survival. More recently, computer scientists have also + started to model the failure rates of computer codes by the Gompertz + distribution. In marketing science, it has been used as an individual-level + model of customer lifetime. + + + References: + + + Wikipedia, The Free Encyclopedia. Gompertz distribution. Available on: + http://en.wikipedia.org/wiki/Gompertz_distribution + + + + + + The following example shows how to construct a Gompertz + distribution with η = 4.2 and b = 1.1. + + + // Create a new Gompertz distribution with η = 4.2 and b = 1.1 + GompertzDistribution dist = new GompertzDistribution(eta: 4.2, b: 1.1); + + // Common measures + double median = dist.Median; // 0.13886469671401389 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(x: 0.27); // 0.76599768199799145 + double ccdf = dist.ComplementaryDistributionFunction(x: 0.27); // 0.23400231800200855 + double icdf = dist.InverseDistributionFunction(p: cdf); // 0.26999999999766749 + + // Probability density functions + double pdf = dist.ProbabilityDensityFunction(x: 0.27); // 1.4549484164912097 + double lpdf = dist.LogProbabilityDensityFunction(x: 0.27); // 0.37497044741163688 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 0.27); // 6.2176666834502088 + double chf = dist.CumulativeHazardFunction(x: 0.27); // 1.4524242576820101 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Gompertz(x; η = 4.2, b = 1.1)" + + + + + + + Initializes a new instance of the class. + + + The shape parameter η. + The scale parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Mixture of univariate probability distributions. + + + + + A mixture density is a probability density function which is expressed + as a convex combination (i.e. a weighted sum, with non-negative weights + that sum to 1) of other probability density functions. The individual + density functions that are combined to make the mixture density are + called the mixture components, and the weights associated with each + component are called the mixture weights. + + + References: + + + Wikipedia, The Free Encyclopedia. Mixture density. Available on: + http://en.wikipedia.org/wiki/Mixture_density + + + + + The type of the univariate component distributions. + + + + // Create a new mixture containing two Normal distributions + Mixture<NormalDistribution> mix = new Mixture<NormalDistribution>( + new NormalDistribution(2, 1), new NormalDistribution(5, 1)); + + // Common measures + double mean = mix.Mean; // 3.5 + double median = mix.Median; // 3.4999998506015895 + double var = mix.Variance; // 3.25 + + // Cumulative distribution functions + double cdf = mix.DistributionFunction(x: 4.2); // 0.59897597553494908 + double ccdf = mix.ComplementaryDistributionFunction(x: 4.2); // 0.40102402446505092 + + // Probability mass functions + double pmf1 = mix.ProbabilityDensityFunction(x: 1.2); // 0.14499174984363708 + double pmf2 = mix.ProbabilityDensityFunction(x: 2.3); // 0.19590437513747333 + double pmf3 = mix.ProbabilityDensityFunction(x: 3.7); // 0.13270883471234715 + double lpmf = mix.LogProbabilityDensityFunction(x: 4.2); // -1.8165661905848629 + + // Quantile function + double icdf1 = mix.InverseDistributionFunction(p: 0.17); // 1.5866611690305095 + double icdf2 = mix.InverseDistributionFunction(p: 0.46); // 3.1968506765456883 + double icdf3 = mix.InverseDistributionFunction(p: 0.87); // 5.6437596300843076 + + // Hazard (failure rate) functions + double hf = mix.HazardFunction(x: 4.2); // 0.40541978256972522 + double chf = mix.CumulativeHazardFunction(x: 4.2); // 0.91373394208601633 + + // String representation: + // Mixture(x; 0.5 * N(x; μ = 5, σ² = 1) + 0.5 * N(x; μ = 5, σ² = 1)) + string str = mix.ToString(CultureInfo.InvariantCulture); + + + + The following example shows how to estimate (fit) a Mixture of Normal distributions + from weighted data: + + + // Randomly initialize some mixture components + NormalDistribution[] components = new NormalDistribution[2]; + components[0] = new NormalDistribution(2, 1); + components[1] = new NormalDistribution(5, 1); + + // Create an initial mixture + var mixture = new Mixture<NormalDistribution>(components); + + // Now, suppose we have a weighted data + // set. Those will be the input points: + + double[] points = { 0, 3, 1, 7, 3, 5, 1, 2, -1, 2, 7, 6, 8, 6 }; // (14 points) + + // And those are their respective unnormalized weights: + double[] weights = { 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 2, 3, 1, 1 }; // (14 weights) + + // Let's normalize the weights so they sum up to one: + weights = weights.Divide(weights.Sum()); + + // Now we can fit our model to the data: + mixture.Fit(points, weights); // done! + + // Our model will be: + double mean1 = mixture.Components[0].Mean; // 1.41126 + double mean2 = mixture.Components[1].Mean; // 6.53301 + + // With mixture weights + double pi1 = mixture.Coefficients[0]; // 0.51408 + double pi2 = mixture.Coefficients[0]; // 0.48591 + + // If we need the GaussianMixtureModel functionality, we can + // use the estimated mixture to initialize a new model: + GaussianMixtureModel gmm = new GaussianMixtureModel(mixture); + + mean1 = gmm.Gaussians[0].Mean[0]; // 1.41126 (same) + mean2 = gmm.Gaussians[1].Mean[0]; // 6.53301 (same) + + p1 = gmm.Gaussians[0].Proportion; // 0.51408 (same) + p2 = gmm.Gaussians[1].Proportion; // 0.48591 (same) + + + + + + + + + + + Initializes a new instance of the class. + + + The mixture distribution components. + + + + + Initializes a new instance of the class. + + + The mixture weight coefficients. + The mixture distribution components. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for one of + the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The probability of x occurring in the component distribution, + computed as the PDF of the component distribution times its mixture + coefficient. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for one + of the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The logarithm of the probability of x occurring in the + component distribution, computed as the PDF of the component + distribution times its mixture coefficient. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for one + component of this distribution evaluated at point x. + + + The component distribution's index. + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial mixture coefficients. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial mixture coefficients. + The convergence threshold for the Expectation-Maximization estimation. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mixture components. + + + + + + Gets the weight coefficients. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + References: Lidija Trailovic and Lucy Y. Pao, Variance Estimation and + Ranking of Gaussian Mixture Distributions in Target Tracking + Applications, Department of Electrical and Computer Engineering + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Multivariate Normal (Gaussian) distribution. + + + + + The Gaussian is the most widely used distribution for continuous + variables. In the case of many variables, it is governed by two + parameters, the mean vector and the variance-covariance matrix. + + When a covariance matrix given to the class constructor is not positive + definite, the distribution is degenerate and this may be an indication + indication that it may be entirely contained in a r-dimensional subspace. + Applying a rotation to an orthogonal basis to recover a non-degenerate + r-dimensional distribution may help in this case. + + + References: + + + Ai Access. Glossary of Data Modeling. Positive definite matrix. Available on: + http://www.aiaccess.net/English/Glossaries/GlosMod/e_gm_positive_definite_matrix.htm + + + + + + The following example shows how to create a Multivariate Gaussian + distribution with known parameters mean vector and covariance matrix + + + // Create a multivariate Gaussian distribution + var dist = new MultivariateNormalDistribution( + + // mean vector mu + mean: new double[] + { + 4, 2 + }, + + // covariance matrix sigma + covariance: new double[,] + { + { 0.3, 0.1 }, + { 0.1, 0.7 } + } + ); + + // Common measures + double[] mean = dist.Mean; // { 4, 2 } + double[] median = dist.Median; // { 4, 2 } + double[] var = dist.Variance; // { 0.3, 0.7 } (diagonal from cov) + double[,] cov = dist.Covariance; // { { 0.3, 0.1 }, { 0.1, 0.7 } } + + // Probability mass functions + double pdf1 = dist.ProbabilityDensityFunction(new double[] { 2, 5 }); // 0.000000018917884164743237 + double pdf2 = dist.ProbabilityDensityFunction(new double[] { 4, 2 }); // 0.35588127170858852 + double pdf3 = dist.ProbabilityDensityFunction(new double[] { 3, 7 }); // 0.000000000036520107734505265 + double lpdf = dist.LogProbabilityDensityFunction(new double[] { 3, 7 }); // -24.033158110192296 + + // Cumulative distribution function (for up to two dimensions) + double cdf = dist.DistributionFunction(new double[] { 3, 5 }); // 0.033944035782101548 + + // Generate samples from this distribution: + double[][] sample = dist.Generate(1000000); + + + + The following example demonstrates how to fit a multivariate Gaussian to + a set of observations. Since those observations would lead to numerical + difficulties, the example also demonstrates how to specify a regularization + constant to avoid getting a . + + + + double[][] observations = + { + new double[] { 1, 2 }, + new double[] { 1, 2 }, + new double[] { 1, 2 }, + new double[] { 1, 2 } + }; + + // Create a multivariate Gaussian for 2 dimensions + var normal = new MultivariateNormalDistribution(2); + + // Specify a regularization constant in the fitting options + NormalOptions options = new NormalOptions() { Regularization = double.Epsilon }; + + // Fit the distribution to the data + normal.Fit(observations, options); + + // Check distribution parameters + double[] mean = normal.Mean; // { 1, 2 } + double[] var = normal.Variance; // { 4.9E-324, 4.9E-324 } (almost machine zero) + + + + The next example shows how to estimate a Gaussian distribution from data + available inside a Microsoft Excel spreadsheet using the ExcelReader class. + + + // Create a new Excel reader to read data from a spreadsheet + ExcelReader reader = new ExcelReader(@"test.xls", hasHeaders: false); + + // Extract the "Data" worksheet from the xls + DataTable table = reader.GetWorksheet("Data"); + + // Convert the data table to a jagged matrix + double[][] observations = table.ToArray(); + + + // Estimate a new Multivariate Normal Distribution from the observations + var dist = MultivariateNormalDistribution.Estimate(observations, new NormalOptions() + { + Regularization = 1e-10 // this value will be added to the diagonal until it becomes positive-definite + }); + + + + + + + + + Constructs a multivariate Gaussian distribution + with zero mean vector and identity covariance matrix. + + + The number of dimensions in the distribution. + + + + + Constructs a multivariate Gaussian distribution + with given mean vector and covariance matrix. + + + The mean vector μ (mu) for the distribution. + The covariance matrix Σ (sigma) for the distribution. + + + + + Computes the cumulative distribution function for distributions + up to two dimensions. For more than two dimensions, this method + is not supported. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Please see . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Please see . + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + Please see . + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + Please see . + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + Please see . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Converts this multivariate + normal distribution into a joint distribution + of independent normal distributions. + + + + A independent joint distribution of + normal distributions. + + + + + + Generates a random vector of observations from the current distribution. + + + A random vector of observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Creates a new univariate Normal distribution. + + + The mean value for the distribution. + The standard deviation for the distribution. + + A object that + actually represents a . + + + + + Creates a new bivariate Normal distribution. + + + The mean value for the first variate in the distribution. + The mean value for the second variate in the distribution. + The standard deviation for the first variate. + The standard deviation for the second variate. + The correlation coefficient between the two distributions. + + A bi-dimensional . + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Generates a random vector of observations from a distribution with the given parameters. + + + The number of samples to generate. + The mean vector μ (mu) for the distribution. + The covariance matrix Σ (sigma) for the distribution. + + A random vector of observations drawn from this distribution. + + + + + Gets the Mean vector μ (mu) for + the Gaussian distribution. + + + + + + Gets the Variance vector diag(Σ), the diagonal of + the sigma matrix, for the Gaussian distribution. + + + + + + Gets the variance-covariance matrix + Σ (sigma) for the Gaussian distribution. + + + + + + Univariate general discrete distribution, also referred as the + Categorical distribution. + + + + + An univariate categorical distribution is a statistical distribution + whose variables can take on only discrete values. Each discrete value + defined within the interval of the distribution has an associated + probability value indicating its frequency of occurrence. + + The discrete uniform distribution is a special case of a generic + discrete distribution whose probability values are constant. + + + + + // Create a Categorical distribution for 3 symbols, in which + // the first and second symbol have 25% chance of appearing, + // and the third symbol has 50% chance of appearing. + + // 1st 2nd 3rd + double[] probabilities = { 0.25, 0.25, 0.50 }; + + // Create the categorical with the given probabilities + var dist = new GeneralDiscreteDistribution(probabilities); + + // Common measures + double mean = dist.Mean; // 1.25 + double median = dist.Median; // 1.00 + double var = dist.Variance; // 0.6875 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 1.0 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.0 + + // Probability mass functions + double pdf1 = dist.ProbabilityMassFunction(k: 0); // 0.25 + double pdf2 = dist.ProbabilityMassFunction(k: 1); // 0.25 + double pdf3 = dist.ProbabilityMassFunction(k: 2); // 0.50 + double lpdf = dist.LogProbabilityMassFunction(k: 2); // -0.69314718055994529 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 0 + int icdf2 = dist.InverseDistributionFunction(p: 0.39); // 1 + int icdf3 = dist.InverseDistributionFunction(p: 0.56); // 2 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 0); // 0.33333333333333331 + double chf = dist.CumulativeHazardFunction(x: 0); // 0.2876820724517809 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Categorical(x; p = { 0.25, 0.25, 0.5 })" + + + + + + + Constructs a new generic discrete distribution. + + + + The integer value where the distribution starts, also + known as the offset value. Default value is 0. + + The frequency of occurrence for each integer value in the + distribution. The distribution is assumed to begin in the + interval defined by start up to size of this vector. + + + + + Constructs a new uniform discrete distribution. + + + + The integer value where the distribution starts, also + known as the offset value. Default value is 0. + + The number of discrete values within the distribution. + The distribution is assumed to belong to the interval + [start, start + symbols]. + + + + + Constructs a new generic discrete distribution. + + + + The frequency of occurrence for each integer value in the + distribution. The distribution is assumed to begin in the + interval defined by start up to size of this vector. + + + + + Constructs a new uniform discrete distribution. + + + + The number of discrete values within the distribution. + The distribution is assumed to belong to the interval + [start, start + symbols]. + + + + + Constructs a new uniform discrete distribution. + + + + The integer value where the distribution starts, also + known as a. Default value is 0. + + The integer value where the distribution ends, also + known as b. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value k will occur. + + + + The probability of k occurring + in the current distribution. + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of k + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a random sample within the given symbol probabilities. + + + The probabilities for the discrete symbols. + The number of samples to generate. + + A random sample within the given probabilities. + + + + + Returns a random symbol within the given symbol probabilities. + + + The probabilities for the discrete symbols. + + A random symbol within the given probabilities. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the probability value associated with the symbol . + + + The symbol's index. + + The probability of the given symbol. + + + + + Gets the integer value where the + discrete distribution starts. + + + + + + Gets the integer value where the + discrete distribution ends. + + + + + + Gets the number of symbols in the distribution. + + + + + + Gets the probabilities associated + with each discrete variable value. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Normal (Gaussian) distribution. + + + + + In probability theory, the normal (or Gaussian) distribution is a very + commonly occurring continuous probability distribution—a function that + tells the probability that any real observation will fall between any two + real limits or real numbers, as the curve approaches zero on either side. + Normal distributions are extremely important in statistics and are often + used in the natural and social sciences for real-valued random variables + whose distributions are not known. + + The normal distribution is immensely useful because of the central limit + theorem, which states that, under mild conditions, the mean of many random + variables independently drawn from the same distribution is distributed + approximately normally, irrespective of the form of the original distribution: + physical quantities that are expected to be the sum of many independent processes + (such as measurement errors) often have a distribution very close to the normal. + Moreover, many results and methods (such as propagation of uncertainty and least + squares parameter fitting) can be derived analytically in explicit form when the + relevant variables are normally distributed. + + The Gaussian distribution is sometimes informally called the bell curve. However, + many other distributions are bell-shaped (such as Cauchy's, Student's, and logistic). + The terms Gaussian function and Gaussian bell curve are also ambiguous because they + sometimes refer to multiples of the normal distribution that cannot be directly + interpreted in terms of probabilities. + + + The Gaussian is the most widely used distribution for continuous + variables. In the case of a single variable, it is governed by + two parameters, the mean and the variance. + + + References: + + + Wikipedia, The Free Encyclopedia. Normal distribution. Available on: + https://en.wikipedia.org/wiki/Normal_distribution + + + + + + This examples shows how to create a Normal distribution, + compute some of its properties and generate a number of + random samples from it. + + + // Create a normal distribution with mean 2 and sigma 3 + var normal = new NormalDistribution(mean: 2, stdDev: 3); + + // In a normal distribution, the median and + // the mode coincide with the mean, so + + double mean = normal.Mean; // 2 + double mode = normal.Mode; // 2 + double median = normal.Median; // 2 + + // The variance is the square of the standard deviation + double variance = normal.Variance; // 3² = 9 + + // Let's check what is the cumulative probability of + // a value less than 3 occurring in this distribution: + double cdf = normal.DistributionFunction(3); // 0.63055 + + // Finally, let's generate 1000 samples from this distribution + // and check if they have the specified mean and standard devs + + double[] samples = normal.Generate(1000); + + double sampleMean = samples.Mean(); // 1.92 + double sampleDev = samples.StandardDeviation(); // 3.00 + + + + This example further demonstrates how to compute + derived measures from a Normal distribution: + + + var normal = new NormalDistribution(mean: 4, stdDev: 4.2); + + double mean = normal.Mean; // 4.0 + double median = normal.Median; // 4.0 + double mode = normal.Mode; // 4.0 + double var = normal.Variance; // 17.64 + + double cdf = normal.DistributionFunction(x: 1.4); // 0.26794249453351904 + double pdf = normal.ProbabilityDensityFunction(x: 1.4); // 0.078423391448155175 + double lpdf = normal.LogProbabilityDensityFunction(x: 1.4); // -2.5456330358182586 + + double ccdf = normal.ComplementaryDistributionFunction(x: 1.4); // 0.732057505466481 + double icdf = normal.InverseDistributionFunction(p: cdf); // 1.4 + + double hf = normal.HazardFunction(x: 1.4); // 0.10712736480747137 + double chf = normal.CumulativeHazardFunction(x: 1.4); // 0.31189620872601354 + + string str = normal.ToString(CultureInfo.InvariantCulture); // N(x; μ = 4, σ² = 17.64) + + + + + + + + + + + + + Constructs a Normal (Gaussian) distribution + with zero mean and unit standard deviation. + + + + + + Constructs a Normal (Gaussian) distribution + with given mean and unit standard deviation. + + + The distribution's mean value μ (mu). + + + + + Constructs a Normal (Gaussian) distribution + with given mean and standard deviation. + + + The distribution's mean value μ (mu). + The distribution's standard deviation σ (sigma). + + + + + Gets the cumulative distribution function (cdf) for + the this Normal distribution evaluated at point x. + + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + The calculation is computed through the relationship to the error function + as erfc(-z/sqrt(2)) / 2. + + + References: + + + Weisstein, Eric W. "Normal Distribution." From MathWorld--A Wolfram Web Resource. + Available on: http://mathworld.wolfram.com/NormalDistribution.html + + Wikipedia, The Free Encyclopedia. Normal distribution. Available on: + http://en.wikipedia.org/wiki/Normal_distribution#Cumulative_distribution_function + + + + + See . + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + The Normal distribution's ICDF is defined in terms of the + standard normal inverse cumulative + distribution function I as ICDF(p) = μ + σ * I(p). + + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + The Normal distribution's PDF is defined as + PDF(x) = c * exp((x - μ / σ)²/2). + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the Z-Score for a given value. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Converts this univariate distribution into a + 1-dimensional multivariate distribution. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + A random vector of observations drawn from this distribution. + + + + + Gets the Mean value μ (mu) for this Normal distribution. + + + + + + Gets the median for this distribution. + + + + The normal distribution's median value + equals its value μ. + + + + The distribution's median value. + + + + + + Gets the Variance σ² (sigma-squared), which is the square + of the standard deviation σ for this Normal distribution. + + + + + + Gets the Standard Deviation σ (sigma), which is the + square root of the variance for this Normal distribution. + + + + + + Gets the mode for this distribution. + + + + The normal distribution's mode value + equals its value μ. + + + + The distribution's mode value. + + + + + + Gets the skewness for this distribution. In + the Normal distribution, this is always 0. + + + + + + Gets the excess kurtosis for this distribution. + In the Normal distribution, this is always 0. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Entropy for this Normal distribution. + + + + + + Gets the Standard Gaussian Distribution, with zero mean and unit variance. + + + + + + Poisson probability distribution. + + + + The Poisson distribution is a discrete probability distribution that + expresses the probability of a number of events occurring in a fixed + period of time if these events occur with a known average rate and + independently of the time since the last event. + + + References: + + + Wikipedia, The Free Encyclopedia. Poisson distribution. Available on: + http://en.wikipedia.org/wiki/Poisson_distribution + + + + + + The following example shows how to instantiate a new Poisson distribution + with a given rate λ and how to compute its measures and associated functions. + + + // Create a new Poisson distribution with + var dist = new PoissonDistribution(lambda: 4.2); + + // Common measures + double mean = dist.Mean; // 4.2 + double median = dist.Median; // 4.0 + double var = dist.Variance; // 4.2 + + // Cumulative distribution functions + double cdf1 = dist.DistributionFunction(k: 2); // 0.21023798702309743 + double cdf2 = dist.DistributionFunction(k: 4); // 0.58982702131057763 + double cdf3 = dist.DistributionFunction(k: 7); // 0.93605666027257894 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.78976201297690252 + + // Probability mass functions + double pmf1 = dist.ProbabilityMassFunction(k: 4); // 0.19442365170822165 + double pmf2 = dist.ProbabilityMassFunction(k: 5); // 0.1633158674349062 + double pmf3 = dist.ProbabilityMassFunction(k: 6); // 0.11432110720443435 + double lpmf = dist.LogProbabilityMassFunction(k: 2); // -2.0229781299813 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: cdf1); // 2 + int icdf2 = dist.InverseDistributionFunction(p: cdf2); // 4 + int icdf3 = dist.InverseDistributionFunction(p: cdf3); // 7 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 0.47400404660843515 + double chf = dist.CumulativeHazardFunction(x: 4); // 0.89117630901575073 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Poisson(x; λ = 4.2)" + + + + This example shows hows to call the distribution function + to compute different types of probabilities. + + + // Create a new Poisson distribution + var dist = new PoissonDistribution(lambda: 4.2); + + // P(X = 1) = 0.0629814226460064 + double equal = dist.ProbabilityMassFunction(k: 1); + + // P(X < 1) = 0.0149955768204777 + double less = dist.DistributionFunction(k: 1, inclusive: false); + + // P(X ≤ 1) = 0.0779769994664841 + double lessThanOrEqual = dist.DistributionFunction(k: 1, inclusive: true); + + // P(X > 1) = 0.922023000533516 + double greater = dist.ComplementaryDistributionFunction(k: 1); + + // P(X ≥ 1) = 0.985004423179522 + double greaterThanOrEqual = dist.ComplementaryDistributionFunction(k: 1, inclusive: true); + + + + + + + Creates a new Poisson distribution with λ = 1. + + + + + + Creates a new Poisson distribution with the given λ (lambda). + + + The Poisson's λ (lambda) parameter. Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The logarithm of the probability of k + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + The observation which most likely generated . + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + In Poisson's distribution, the Inverse CDF can be computed using + the inverse Gamma function Γ'(a, x) + as + icdf(p) = Γ'(λ, 1 - p) + . + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the Poisson's parameter λ (lambda). + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the entropy for this distribution. + + + + A closed form expression for the entropy of a Poisson + distribution is unknown. This property returns an approximation + for large lambda. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the standard Poisson distribution, + with lambda (rate) equal to 1. + + + + + + von-Mises (Circular Normal) distribution. + + + + The von Mises distribution (also known as the circular normal distribution + or Tikhonov distribution) is a continuous probability distribution on the circle. + It may be thought of as a close approximation to the wrapped normal distribution, + which is the circular analogue of the normal distribution. + + The wrapped normal distribution describes the distribution of an angle that + is the result of the addition of many small independent angular deviations, such as + target sensing, or grain orientation in a granular material. The von Mises distribution + is more mathematically tractable than the wrapped normal distribution and is the + preferred distribution for many applications. + + + References: + + + Wikipedia, The Free Encyclopedia. Von-Mises distribution. Available on: + http://en.wikipedia.org/wiki/Von_Mises_distribution + + Suvrit Sra, "A short note on parameter approximation for von Mises-Fisher distributions: + and a fast implementation of $I_s(x)$". (revision of Apr. 2009). Computational Statistics (2011). + Available on: http://www.kyb.mpg.de/publications/attachments/vmfnote_7045%5B0%5D.pdf + + Zheng Sun. M.Sc. Comparing measures of fit for circular distributions. Master thesis, 2006. + Available on: https://dspace.library.uvic.ca:8443/bitstream/handle/1828/2698/zhengsun_master_thesis.pdf + + + + + + // Create a new von-Mises distribution with μ = 0.42 and κ = 1.2 + var vonMises = new VonMisesDistribution(mean: 0.42, concentration: 1.2); + + // Common measures + double mean = vonMises.Mean; // 0.42 + double median = vonMises.Median; // 0.42 + double var = vonMises.Variance; // 0.48721760532782921 + + // Cumulative distribution functions + double cdf = vonMises.DistributionFunction(x: 1.4); // 0.81326928491589345 + double ccdf = vonMises.ComplementaryDistributionFunction(x: 1.4); // 0.18673071508410655 + double icdf = vonMises.InverseDistributionFunction(p: cdf); // 1.3999999637927665 + + // Probability density functions + double pdf = vonMises.ProbabilityDensityFunction(x: 1.4); // 0.2228112141141676 + double lpdf = vonMises.LogProbabilityDensityFunction(x: 1.4); // -1.5014304395467863 + + // Hazard (failure rate) functions + double hf = vonMises.HazardFunction(x: 1.4); // 1.1932220899695576 + double chf = vonMises.CumulativeHazardFunction(x: 1.4); // 1.6780877262500649 + + // String representation + string str = vonMises.ToString(CultureInfo.InvariantCulture); // VonMises(x; μ = 0.42, κ = 1.2) + + + + + + + + + Constructs a von-Mises distribution with zero mean. + + + The concentration value κ (kappa). + + + + + Constructs a von-Mises distribution. + + + The mean value μ (mu). + The concentration value κ (kappa). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new circular uniform distribution by creating a + new with zero kappa. + + + The mean value μ (mu). + + + A with zero kappa, which + is equivalent to creating an uniform circular distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Estimates a new von-Mises distribution from a given set of angles. + + + + + + Estimates a new von-Mises distribution from a given set of angles. + + + + + + Estimates a new von-Mises distribution from a given set of angles. + + + + + + von-Mises cumulative distribution function. + + + + This method implements the Von-Mises CDF calculation code + as given by Geoffrey Hill on his original FORTRAN code and + shared under the GNU LGPL license. + + + References: + + Geoffrey Hill, ACM TOMS Algorithm 518, + Incomplete Bessel Function I0: The von Mises Distribution, + ACM Transactions on Mathematical Software, Volume 3, Number 3, + September 1977, pages 279-284. + + + + The point where to calculate the CDF. + The location parameter μ (mu). + The concentration parameter κ (kappa). + + The value of the von-Mises CDF at point . + + + + + Gets the mean value μ (mu) for this distribution. + + + + + + Gets the median value μ (mu) for this distribution. + + + + + + Gets the mode value μ (mu) for this distribution. + + + + + + Gets the concentration κ (kappa) for this distribution. + + + + + + Gets the variance for this distribution. + + + + The von-Mises Variance is defined in terms of the + Bessel function of the first + kind In(x) as var = 1 - I(1, κ) / I(0, κ) + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Weibull distribution. + + + + + In probability theory and statistics, the Weibull distribution is a + continuous probability distribution. It is named after Waloddi Weibull, + who described it in detail in 1951, although it was first identified by + Fréchet (1927) and first applied by Rosin and Rammler (1933) to describe a + particle size distribution. + + + The Weibull distribution is related to a number of other probability distributions; + in particular, it interpolates between the + exponential distribution (for k = 1) and the + Rayleigh distribution (when k = 2). + + + If the quantity x is a "time-to-failure", the Weibull distribution gives a + distribution for which the failure rate is proportional to a power of time. + The shape parameter, k, is that power plus one, and so this parameter can be + interpreted directly as follows: + + + + A value of k < 1 indicates that the failure rate decreases over time. This + happens if there is significant "infant mortality", or defective items failing + early and the failure rate decreasing over time as the defective items are + weeded out of the population. + + A value of k = 1 indicates that the failure rate is constant over time. This + might suggest random external events are causing mortality, or failure. + + A value of k > 1 indicates that the failure rate increases with time. This + happens if there is an "aging" process, or parts that are more likely to fail + as time goes on. + + + In the field of materials science, the shape parameter k of a distribution + of strengths is known as the Weibull modulus. + + + References: + + + Wikipedia, The Free Encyclopedia. Weibull distribution. Available on: + http://en.wikipedia.org/wiki/Weibull_distribution + + + + + + // Create a new Weibull distribution with λ = 0.42 and k = 1.2 + var weilbull = new WeibullDistribution(scale: 0.42, shape: 1.2); + + // Common measures + double mean = weilbull.Mean; // 0.39507546046784414 + double median = weilbull.Median; // 0.30945951550913292 + double var = weilbull.Variance; // 0.10932249666369542 + double mode = weilbull.Mode; // 0.094360430821809421 + + // Cumulative distribution functions + double cdf = weilbull.DistributionFunction(x: 1.4); // 0.98560487188700052 + double pdf = weilbull.ProbabilityDensityFunction(x: 1.4); // 0.052326687031379278 + double lpdf = weilbull.LogProbabilityDensityFunction(x: 1.4); // -2.9502487697674415 + + // Probability density functions + double ccdf = weilbull.ComplementaryDistributionFunction(x: 1.4); // 0.22369885565908001 + double icdf = weilbull.InverseDistributionFunction(p: cdf); // 1.400000001051205 + + // Hazard (failure rate) functions + double hf = weilbull.HazardFunction(x: 1.4); // 1.1093328057258516 + double chf = weilbull.CumulativeHazardFunction(x: 1.4); // 1.4974545260150962 + + // String representation + string str = weilbull.ToString(CultureInfo.InvariantCulture); // Weibull(x; λ = 0.42, k = 1.2) + + + + + + + Initializes a new instance of the class. + + + The scale parameter λ (lambda). + The shape parameter k. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + + + Gets the inverse of the . + The inverse complementary distribution function is also known as the + inverse survival Function. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Weibull distribution with the given parameters. + + + The scale parameter lambda. + The shape parameter k. + The number of samples to generate. + + An array of double values sampled from the specified Weibull distribution. + + + + + Generates a random observation from the + Weibull distribution with the given parameters. + + + The scale parameter lambda. + The shape parameter k. + + A random double value sampled from the specified Weibull distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Base abstract class for the Data Table preprocessing filters. + + The column options type. + + + + + Sample processing filter interface. + + + The interface defines the set of methods which should be + provided by all table processing filters. Methods of this interface should + keep the source table unchanged and return the result of data processing + filter as new data table. + + + + + Applies the filter to a . + + + Source table to apply filter to. + + Returns filter's result obtained by applying the filter to + the source table. + + The method keeps the source table unchanged and returns the + the result of the table processing filter as new data table. + + + + + Creates a new DataTable Filter Base. + + + + + + Applies the Filter to a . + + + The source . + The name of the columns that should be processed. + + The processed . + + + + + Applies the Filter to a . + + + The source . + + The processed . + + + + + Processes the current filter. + + + + + + Gets or sets whether this filter is active. An inactive + filter will repass the input table as output unchanged. + + + + + + Gets the collection of filter options. + + + + + + Gets options associated with a given variable (data column). + + + The name of the variable. + + + + + Gets options associated with a given variable (data column). + + + The column's index for the variable. + + + + + Column options for filter which have per-column settings. + + + + + + Constructs the base class for Column Options. + + + Column's name. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets or sets the name of the column that the options will apply to. + + + + + + Gets or sets a user-determined object associated with this column. + + + + + + Column option collection. + + + + + + Extracts the key from the specified column options. + + + + + + Adds a new column options definition to the collection. + + + The column options to be added. + + The added column options. + + + + + Gets the associated options for the given column name. + + + The name of the column whose options should be retrieved. + The retrieved options. + + True if the options was contained in the collection; false otherwise. + + + + + Data processing interface for in-place filters. + + + + + + Applies the filter to a , + modifying the table in place. + + + Source table to apply filter to. + + The method modifies the source table in place. + + + + + Indicates that a column filter supports automatic initialization. + + + + + + Auto detects the column options by analyzing a given . + + + The column to analyze. + + + + + Indicates that a filter supports automatic initialization. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Branching filter. + + + + The branching filter allows for different filter sequences to be + applied to different subsets of a data table. For instance, consider + a data table whose first column, "IsStudent", is an indicator variable: + a value of 1 indicates the row contains information about a student, and + a value of 0 indicates the row contains information about someone who is + not currently a student. Using the branching filter, it becomes possible + to apply a different set of filters for the rows that represent students + and different filters for rows that represent non-students. + + + + + Suppose we have the following data table. In this table, each row represents + a person, an indicator variable tell us whether this person is a smoker, and + the last column indicates the age of each person. Let's say we would like to + convert the age of smokers to a scale from -1 to 0, and the age of non-smokers + to a scale from 0 to 1. + + + object[,] data = + { + { "Id", "IsSmoker", "Age" }, + { 0, 1, 10 }, + { 1, 1, 15 }, + { 2, 0, 40 }, + { 3, 1, 20 }, + { 4, 0, 70 }, + { 5, 0, 55 }, + }; + + // Create a DataTable from data + DataTable input = data.ToTable(); + + // We will create two filters, one to operate on the smoking + // branch of the data, and other in the non-smoking subjects. + // + var smoker = new LinearScaling(); + var common = new LinearScaling(); + + // for the smokers, we will convert the age to [-1; 0] + smoker.Columns.Add(new LinearScaling.Options("Age") + { + SourceRange = new DoubleRange(10, 20), + OutputRange = new DoubleRange(-1, 0) + }); + + // for non-smokers, we will convert the age to [0; +1] + common.Columns.Add(new LinearScaling.Options("Age") + { + SourceRange = new DoubleRange(40, 70), + OutputRange = new DoubleRange(0, 1) + }); + + // We now configure and create the branch filter + var settings = new Branching.Options("IsSmoker"); + settings.Filters.Add(1, smoker); + settings.Filters.Add(0, common); + + Branching branching = new Branching(settings); + + + // Finally, we can process the input data: + DataTable actual = branching.Apply(input); + + // As result, the generated table will + // then contain the following entries: + + // { "Id", "IsSmoker", "Age" }, + // { 0, 1, -1.0 }, + // { 1, 1, -0.5 }, + // { 2, 0, 0.0 }, + // { 3, 1, 0.0 }, + // { 4, 0, 1.0 }, + // { 5, 0, 0.5 }, + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The columns to use as filters. + + + + + Initializes a new instance of the class. + + + The columns to use as filters. + + + + + Processes the current filter. + + + + + + Column options for the branching filter. + + + + + + Initializes a new instance of the class. + + + The column name. + + + + + Initializes a new instance of the class. + + + + + + Auto detects the column options by analyzing a given . + + + The column to analyze. + + + + + Gets the collection of filters associated with a given label value. + + + + + + Identification filter. + + + + + The identification filter adds a new column to the data containing an + unique id for each of the samples (rows) in the data table (or matrix). + + + + + + Creates a new identification filter. + + + + + + Creates a new identification filter. + + + + + + Applies the filter to the DataTable. + + + + + + Gets or sets the name of the column used + to store row indices. + + + + + + Randomization filter. + + + + + + Initializes a new instance of the class. + + + A fixed random seed value to generate fixed + permutations. If not specified, generates true random permutations. + + + + + Initializes a new instance of the class. + + + + + + Applies the filter to the current data. + + + + + + Gets or sets the fixed random seed to + be used in randomization, if any. + + + The random seed, for fixed permutations; + or null, for true random permutations. + + + + + Imputation filter for filling missing values. + + + + + + Creates a new Imputation filter. + + + + + + Creates a new Imputation filter. + + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Strategies for missing value imputations. + + + + + + Uses a fixed-value to replace missing fields. + + + + + + Uses the mean value to replace missing fields. + + + + + Uses the mode value to replace missing fields. + + + + + Uses the median value to replace missing fields. + + + + + Options for the imputation filter. + + + + + + Constructs a new column option + for the Imputation filter. + + + + + + Constructs a new column option + for the Imputation filter. + + + + + + Auto detects the column options by analyzing + a given . + + + The column to analyze. + + + + + Gets or sets the imputation strategy + to use with this column. + + + + + Missing value indicator. + + + + + + Value to replace missing values with. + + + + + + Grouping filter. + + + + + + Creates a new Grouping filter with equal group + proportions and default Group indicator column. + + + + + + Creates a new Grouping filter. + + + + + + Processes the current filter. + + + + + + Gets or sets a value indicating whether the group labels + are locked and should not be randomly re-selected. + + + true to lock groups; otherwise, false. + + + + + Gets or sets the group index labels. + + + The group indices. + + + + + Gets or sets the two-group proportions. + + + + + + Gets or sets the name of the indicator + column which will be used to distinguish + samples from either group. + + + + + + Options for the grouping filter. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object. + + + + + + Gets or sets the labels used for each class contained in the column. + + + + + + Elimination filter. + + + + + + Creates a elimination filter to remove + rows containing missing values. + + + + + + Creates a elimination filter to remove + rows containing missing values in the + specified columns. + + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Options for the discretization filter. + + + + + + Constructs a new column option + for the Elimination filter. + + + + + + Constructs a new column option + for the Elimination filter. + + + + + + Gets the value indicator of a missing field. + Default is . + + + + + + Time-series windowing filter. + + + + This filter splits a time-series into overlapping time + windows, with optional associated output values. This + filter can be used to create time-window databases for + time-series regression and latent-state identification. + + + + + + Creates a new time segmentation filter. + + + + + + Creates a new time segmentation filter. + + + The size of the time windows to be extracted. + + + + + Creates a new time segmentation filter. + + + The size of the time windows to be extracted. + The number of elements between two taken windows. If set to + the same number of , the windows will not overlap. + Default is 1. + + + + + Processes the current filter. + + + + + + Applies the filter to a time series. + + + The source time series. + + The time-windows extracted from the time-series. + + + + + Applies the filter to a time series. + + + The source time series. + The output associated with each time-window. + + The time-windows extracted from the time-series. + + + + + Gets or sets the length of the time-windows + that should be extracted from the sequences. + + + + + + Gets or sets the step size that should be used + when extracting windows. If set to the same number + as the , windows will not + overlap. Default is 1. + + + + + + Options for segmenting a time-series contained inside a column. + + + + + + Constructs a new Options object. + + + + + + Class equalization filter. + + + Currently this class does only work for a single + column and only for the binary case (two classes). + + + + + + Creates a new class equalization filter. + + + + + + Creates a new classes equalization filter. + + + + + + Creates a new classes equalization filter. + + + + + + Creates a new classes equalization filter. + + + + + + Processes the current filter. + + + + + + Options for the stratification filter. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object. + + + + + + Auto detects the column options by analyzing a given . + + + The column to analyze. + + + + + Gets or sets the labels used for each class contained in the column. + + + + + + Codification type. + + + + + + The variable should be codified as an ordinal variable, + meaning they will be translated to symbols 0, 1, 2, ... n, + where n is the total number of distinct symbols this variable + can assume. + + + + + + This variable should be codified as a 1-of-n vector by creating + one column for each symbol this variable can assume, and marking + the column corresponding to the current symbol as 1 and the rest + as zero. + + + + + + This variable should be codified as a 1-of-(n-1) vector by creating + one column for each symbol this variable can assume, except the + first. This is the same as as , + but the first symbol is handled as a baseline (and should be indicated by + a zero in every column). + + + + + + Codification Filter class. + + + + + The codification filter performs an integer codification of classes in + given in a string form. An unique integer identifier will be assigned + for each of the string classes. + + + + + When handling data tables, often there will be cases in which a single + table contains both numerical variables and categorical data in the form + of text labels. Since most machine learning and statistics algorithms + expect their data to be numeric, the codification filter can be used + to create mappings between text labels and discrete symbols. + + + // Show the start data + DataGridBox.Show(table); + + + + + + // Create a new data projection (column) filter + var filter = new Codification(table, "Category"); + + // Apply the filter and get the result + DataTable result = filter.Apply(table); + + // Show it + DataGridBox.Show(result); + + + + + + + The following more elaborated examples show how to + use the filter without + necessarily handling + DataTables. + + + // Suppose we have a data table relating the age of + // a person and its categorical classification, as + // in "child", "adult" or "elder". + + // The Codification filter is able to extract those + // string labels and transform them into discrete + // symbols, assigning integer labels to each of them + // such as "child" = 0, "adult" = 1, and "elder" = 3. + + // Create the aforementioned sample table + DataTable table = new DataTable("Sample data"); + table.Columns.Add("Age", typeof(int)); + table.Columns.Add("Label", typeof(string)); + + // age label + table.Rows.Add(10, "child"); + table.Rows.Add(07, "child"); + table.Rows.Add(04, "child"); + table.Rows.Add(21, "adult"); + table.Rows.Add(27, "adult"); + table.Rows.Add(12, "child"); + table.Rows.Add(79, "elder"); + table.Rows.Add(40, "adult"); + table.Rows.Add(30, "adult"); + + + // Now, let's say we need to translate those text labels + // into integer symbols. Let's use a Codification filter: + + Codification codebook = new Codification(table); + + + // After that, we can use the codebook to "translate" + // the text labels into discrete symbols, such as: + + int a = codebook.Translate("Label", "child"); // returns 0 + int b = codebook.Translate("Label", "adult"); // returns 1 + int c = codebook.Translate("Label", "elder"); // returns 2 + + // We can also do the reverse: + string labela = codebook.Translate("Label", 0); // returns "child" + string labelb = codebook.Translate("Label", 1); // returns "adult" + string labelc = codebook.Translate("Label", 2); // returns "elder" + + + + After we have created the codebook, we can use it to feed data with + categorical variables to method which would otherwise not know how + to handle text labels data. Continuing with our example, the next + code section shows how to convert an entire data table into a numerical + matrix. + + + // We can process an entire data table at once: + DataTable result = codebook.Apply(table); + + // The resulting table can be transformed to jagged array: + double[][] matrix = Matrix.ToArray(result); + + // and the resulting matrix will be given by + // new double[][] + // { + // new double[] { 10, 0 }, + // new double[] { 7, 0 }, + // new double[] { 4, 0 }, + // new double[] { 21, 1 }, + // new double[] { 27, 1 }, + // new double[] { 12, 0 }, + // new double[] { 79, 2 }, + // new double[] { 40, 1 }, + // new double[] { 30, 1 } + // }; + + // PS: the string representation for the matrix above can be obtained by calling + string str = matrix.ToString(CSharpJaggedMatrixFormatProvider.InvariantCulture); + + + + Finally, by expressing our data in terms of a simple numerical + matrix we will be able to feed it to any machine learning algorithm. + The following code section shows how to create a + linear multi-class Support Vector Machine to classify ages into any + of the previously considered text labels ("child", "adult" or "elder"). + + + // Now we will be able to feed this matrix to any machine learning + // algorithm without having to worry about text labels in our data: + + // Use the first column as input and the second column a output: + + double[][] inputs = matrix.GetColumns(0); // Age column + int[] outputs = matrix.GetColumn(1).ToInt32(); // Label column + + + // Create a multi-class SVM for one input (Age) and three classes (Label) + var machine = new MulticlassSupportVectorMachine(inputs: 1, classes: 3); + + // Create a Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // error will be zero + + + // After we have learned the machine, we can use it to classify + // new data points, and use the codebook to translate the machine + // outputs to the original text labels: + + string result1 = codebook.Translate("Label", machine.Compute(10)); // child + string result2 = codebook.Translate("Label", machine.Compute(40)); // adult + string result3 = codebook.Translate("Label", machine.Compute(70)); // elder + + + + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Translates a value of a given variable + into its integer (codeword) representation. + + + The name of the variable's data column. + The value to be translated. + + An integer which uniquely identifies the given value + for the given variable. + + + + + Translates an array of values into their + integer representation, assuming values + are given in original order of columns. + + + The values to be translated. + + An array of integers in which each value + uniquely identifies the given value for each of + the variables. + + + + + Translates an array of values into their + integer representation, assuming values + are given in original order of columns. + + + A containing the values to be translated. + The columns of the containing the + values to be translated. + + An array of integers in which each value + uniquely identifies the given value for each of + the variables. + + + + + Translates a value of the given variables + into their integer (codeword) representation. + + + The names of the variable's data column. + The values to be translated. + + An array of integers in which each integer + uniquely identifies the given value for the given + variables. + + + + + Translates a value of the given variables + into their integer (codeword) representation. + + + The variable name. + The values to be translated. + + An array of integers in which each integer + uniquely identifies the given value for the given + variables. + + + + + Translates a value of the given variables + into their integer (codeword) representation. + + + The variable name. + The values to be translated. + + An array of integers in which each integer + uniquely identifies the given value for the given + variables. + + + + + Translates an integer (codeword) representation of + the value of a given variable into its original + value. + + + The variable name. + The codeword to be translated. + + The original meaning of the given codeword. + + + + + Translates an integer (codeword) representation of + the value of a given variable into its original + value. + + + The name of the variable's data column. + The codewords to be translated. + + The original meaning of the given codeword. + + + + + Translates the integer (codeword) representations of + the values of the given variables into their original + values. + + + The name of the variables' columns. + The codewords to be translated. + + The original meaning of the given codewords. + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a set of string labels. + + + The variable name. + A set of values that this variable can assume. + + + + + Auto detects the filter options by analyzing a set of string labels. + + + The variable names. + A set of values that those variable can assume. + The first element of the array is assumed to be related to the first + column name parameter. + + + + + Options for processing a column. + + + + + + Forces the given key to have a specific symbol value. + + + The key. + The value that should be associated with this key. + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + The initial mapping for this column. + + + + + Constructs a new Options object. + + + + + + Gets or sets the label mapping for translating + integer labels to the original string labels. + + + + + + Gets the number of symbols used to code this variable. + + + + + + Gets the codification type that should be used for this variable. + + + + + + Gets the values associated with each symbol, in the order of the symbols. + + + + + + Value discretization preprocessing filter. + + + + This filter converts double or decimal values with an fractional + part to the nearest possible integer according to a given threshold + and a rounding rule. + + + + // Show the start data + DataGridBox.Show(table); + + + + + + // Create a new data projection (column) filter + var filter = new Discretization("Cost (M)"); + + // Apply the filter and get the result + DataTable result = filter.Apply(table); + + // Show it + DataGridBox.Show(result); + + + + + + + + + Creates a new Discretization filter. + + + + + + Creates a new Discretization filter. + + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Options for the discretization filter. + + + + + + Constructs a new Options class for the discretization filter. + + + + + + Constructs a new Options object. + + + + + + Gets or sets the threshold for the discretization filter. + + + + + + Gets or sets whether the discretization threshold is symmetric. + + + + + If a symmetric threshold of 0.4 is used, for example, a real value of + 0.5 will be rounded to 1.0 and a real value of -0.5 will be rounded to + -1.0. + + If a non-symmetric threshold of 0.4 is used, a real value of 0.5 + will be rounded towards 1.0, but a real value of -0.5 will be rounded + to 0.0 (because |-0.5| is higher than the threshold of 0.4). + + + + + + Sequence of table processing filters. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Sequence of filters to apply. + + + + + Applies the sequence of filters to a given table. + + + + + Data normalization preprocessing filter. + + + + The normalization filter is able to transform numerical data into + Z-Scores, subtracting the mean for each variable and dividing by + their standard deviation. The filter is able to distinguish + numerical columns automatically, leaving other columns unaffected. + It is also possible to control which columns should be processed + by the filter. + + + + Suppose we have a data table relating the age of a person and its + categorical classification, as in "child", "adult" or "elder". + The normalization filter can be used to transform the "Age" column + into Z-scores, as shown below: + + + // Create the aforementioned sample table + DataTable table = new DataTable("Sample data"); + table.Columns.Add("Age", typeof(double)); + table.Columns.Add("Label", typeof(string)); + + // age label + table.Rows.Add(10, "child"); + table.Rows.Add(07, "child"); + table.Rows.Add(04, "child"); + table.Rows.Add(21, "adult"); + table.Rows.Add(27, "adult"); + table.Rows.Add(12, "child"); + table.Rows.Add(79, "elder"); + table.Rows.Add(40, "adult"); + table.Rows.Add(30, "adult"); + + // The filter will ignore non-real (continuous) data + Normalization normalization = new Normalization(table); + + double mean = normalization["Age"].Mean; // 25.55 + double sdev = normalization["Age"].StandardDeviation; // 23.29 + + // Now we can process another table at once: + DataTable result = normalization.Apply(table); + + // The result will be a table with the same columns, but + // in which any column named "Age" will have been normalized + // using the previously detected mean and standard deviation: + + DataGridBox.Show(result); + + + + The resulting data is shown below: + + + + + + + + + + + Creates a new data normalization filter. + + + + + + Creates a new data normalization filter. + + + + + + Creates a new data normalization filter. + + + + + + Processes the current filter. + + + + + + Applies the Filter to a . + + + The source . + + The processed . + + + + + Applies the Filter to a . + + + The source . + + The processed . + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a given matrix. + + + + + + Options for normalizing a column. + + + + + + Constructs a new Options object. + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + The mean value for normalization. + The standard deviation value for standardization. + + + + + Gets or sets the mean of the data contained in the column. + + + + + Gets or sets the standard deviation of the data contained in the column. + + + + + Gets or sets if the column's data should be standardized to Z-Scores. + + + + + Principal component projection filter. + + + + + + Creates a new Principal Component Projection filter. + + + + + + Creates a new data normalization filter. + + + + + + Processes the filter. + + + The data. + + + + + Auto detects the filter options by analyzing a given . + + + + + + Gets or sets the analysis associated with the filter. + + + + + + Options for normalizing a column. + + + + + + Initializes a new instance of the class. + + + Name of the column. + + + + + Relational-algebra projection filter. + + + + This filter is able to selectively remove columns from tables, and keep + only the columns of interest. + + + + + // Show the start data + DataGridBox.Show(table); + + + + + + // Create a new data projection (column) filter + var filter = new Projection("Floors", "Finished"); + + // Apply the filter and get the result + DataTable result = filter.Apply(table); + + // Show it + DataGridBox.Show(result); + + + + + + + + + + Creates a new projection filter. + + + + + + Creates a new projection filter. + + + + + + Creates a new projection filter. + + + + + + Applies the filter to the DataTable. + + + + + + List of columns to keep in the projection. + + + + + + Linear Scaling Filter + + + + + + Creates a new Linear Scaling Filter. + + + + + + Creates a new Linear Scaling Filter. + + + + + + Creates a new Linear Scaling Filter. + + + + + + Creates a new Linear Scaling Filter. + + + + + + Applies the filter to the DataTable. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Options for the Linear Scaling filter. + + + + + + Creates a new column options. + + + + + + Constructs a new Options object. + + + + + + Range of the input values + + + + + + Target range of the output values after scaling. + + + + + + Relational-algebra selection filter. + + + + + + Constructs a new Selection Filter. + + + The filtering criteria. + The desired sort order. + + + + + Constructs a new Selection Filter. + + + The filtering criteria. + + + + + Constructs a new Selection Filter. + + + + + + Applies the filter to the current data. + + + + + + Gets or sets the eSQL filter expression for the filter. + + + + + + Gets or sets the ordering to apply for the filter. + + + + + + Calculates the prevalence of a class for each variable. + + + An array of counts detailing the occurrence of the first class. + An array of counts detailing the occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Calculates the prevalence of a class. + + + A matrix containing counted, grouped data. + The index for the column which contains counts for occurrence of the first class. + The index for the column which contains counts for occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Groups the occurrences contained in data matrix of binary (dichotomous) data. + + + A data matrix containing at least a column of binary data. + Index of the column which contains the group label name. + Index of the column which contains the binary [0,1] data. + + + A matrix containing the group label in the first column, the number of occurrences of the first class + in the second column and the number of occurrences of the second class in the third column. + + + + + + Divides values into groups given a vector + containing the group labels for every value. + + + The type of the values. + The values to be separated into groups. + + A vector containing the class label associated with each of the + values. The labels must begin on 0 and its maximum value should + be the number of groups - 1. + + The original values divided into groups. + + + + + Divides values into groups given a vector + containing the group labels for every value. + + + The type of the values. + The values to be separated into groups. + + A vector containing the class label associated with each of the + values. The labels must begin on 0 and its maximum value should + be the number of groups - 1. + The number of groups. + + The original values divided into groups. + + + + + Extends a grouped data into a full observation matrix. + + + The group labels. + + An array containing he occurrence of the positive class + for each of the groups. + + An array containing he occurrence of the negative class + for each of the groups. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The grouped data matrix. + Index of the column which contains the labels + in the grouped data matrix. + Index of the column which contains + the occurrences for the first class. + Index of the column which contains + the occurrences for the second class. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Returns a random group assignment for a sample. + + + The sample size. + The number of groups. + + + + + Returns a random group assignment for a sample + into two mutually exclusive groups. + + + The sample size. + The proportion of samples between the groups. + + + + + Returns a random group assignment for a sample, making + sure different class labels are distributed evenly among + the groups. + + + A vector containing class labels. + The number of different classes in . + The number of groups. + + + + + Additive combination of kernels. + + + + + + Base class for kernel functions. This class provides automatic + distance calculations for classes that do not provide optimized + implementations. + + + + + + Kernel space distance interface for kernel functions. + + + + + + + + Kernel function interface. + + + + + In Machine Learning and statistics, a Kernel is a function that returns + the value of the dot product between the images of the two arguments. + + k(x,y) = ‹S(x),S(y)› + + + References: + + + http://www.support-vector.net/icml-tutorial.pdf + + + + + + + The kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + Squared distance between x and y in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + + Squared distance between x and y in feature (kernel) space. + + + + + + The kernel function. + + + Vector x in input space. + Vector y in input space. + + + Dot product in feature (kernel) space. + + + + + + Constructs a new additive kernel. + + + Kernels to combine. + + + + + Constructs a new additive kernel. + + + Kernels to combine. + + + Weight values for each of the kernels. + Default is to assign equal weights. + + + + + Additive Kernel Combination function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gets the combination of kernels to use. + + + + + + Gets the weight array to use in the weighted kernel sum. + + + + + + ANOVA (ANalysis Of VAriance) Kernel. + + + + The ANOVA kernel is a graph kernel, which can be + computed using dynamic programming tables. + + References: + - http://www.cse.ohio-state.edu/mlss09/mlss09_talks/1.june-MON/jst_tutorial.pdf + + + + + + Constructs a new ANOVA Kernel. + + + Length of the input vector. + Length of the subsequences for the ANOVA decomposition. + + + + + ANOVA Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Interface for Radial Basis Function kernels. + + + + + A radial basis function (RBF) is a real-valued function whose value depends only + on the distance from the origin, so that ϕ(x) = ϕ(||x||); or alternatively + on the distance from some other point c, called a center, so that + ϕ(x,c) = ϕ(||x−c||). Any function ϕ that satisfies the property + ϕ(x) = ϕ(||x||) is a radial function. The norm is usually Euclidean distance, + although other distance functions are also possible. + + + References: + + + Wikipedia, The Free Encyclopedia. Radial basis functions. Available on: + https://en.wikipedia.org/wiki/Radial_basis_function + + + + + + + The kernel function. + + + Distance z between two vectors in input space. + + Dot product in feature (kernel) space. + + + + + Interface for kernel functions + with support for automatic parameter estimation. + + + + + + + + + Estimates kernel parameters from the data. + + + The input data. + + + + + Common interface for kernel functions that can explicitly + project input points into the kernel feature space. + + + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Bessel Kernel. + + + + The Bessel kernel is well known in the theory of function spaces + of fractional smoothness. + + + + + + Constructs a new Bessel Kernel. + + + The order for the Bessel function. + The value for sigma. + + + + + Bessel Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Bessel Kernel Function + + + Distance z between two vectors in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the order of the Bessel function. + + + + + + Gets or sets the sigma constant for this kernel. + + + + + + B-Spline Kernel. + + + + + The B-Spline kernel is defined only in the interval [−1, 1]. It is + also a member of the Radial Basis Functions family of kernels. + + References: + + + Bart Hamers, Kernel Models for Large Scale Applications. Doctoral thesis. + Available on: ftp://ftp.esat.kuleuven.ac.be/pub/SISTA/hamers/PhD_bhamers.pdf + + + + + + + + Constructs a new B-Spline Kernel. + + + + + + B-Spline Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the B-Spline order. + + + + + + Cauchy Kernel. + + + + The Cauchy kernel comes from the Cauchy distribution (Basak, 2008). It is a + long-tailed kernel and can be used to give long-range influence and sensitivity + over the high dimension space. + + + + + + Constructs a new Cauchy Kernel. + + + The value for sigma. + + + + + Cauchy Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Cauchy Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Chi-Square Kernel. + + + + The Chi-Square kernel comes from the Chi-Square distribution. + + + + + + Constructs a new Chi-Square kernel. + + + + + + Chi-Square Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Circular Kernel. + + + + The circular kernel comes from a statistics perspective. It is an example + of an isotropic stationary kernel and is positive definite in R^2. + + + + + + Constructs a new Circular Kernel. + + + Value for sigma. + + + + + Circular Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Circular Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Composite Gaussian Kernel. + + + + + + Constructs a new Gaussian Dynamic Time Warping Kernel + + + The inner kernel function of the composite kernel. + + + + + Constructs a new Gaussian Dynamic Time Warping Kernel + + + The inner kernel function of the composite kernel. + The kernel's sigma parameter. + + + + + Gaussian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Estimates kernel parameters from the data. + + + The input data. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Gets or sets the sigma² value for the kernel. When setting + sigma², gamma gets updated accordingly (gamma = 0.5/sigma²). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Pearson VII universal kernel (PUK). + + + + + + Constructs a new Pearson VII universal kernel. + + + The Pearson's omega parameter w. Default is 1. + The Pearson's sigma parameter s. Default is 1. + + + + + Constructs a new Pearson VII universal kernel. + + + + + + Pearson Universal kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Pearson Universal function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's parameter omega. Default is 1. + + + + + + Gets or sets the kernel's parameter sigma. Default is 1. + + + + + + Normalized Kernel. + + + + This kernel definition can be used to provide normalized versions + of other kernel classes, such as the . A + normalized kernel will always produce distances between -1 and 1. + + + + + + Constructs a new Cauchy Kernel. + + + The kernel function to be normalized. + + + + + Normalized Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the inner kernel function + whose results should be normalized. + + + + + + Inverse Multiquadric Kernel. + + + + The inverse multiquadric kernel is only conditionally positive definite. + + + + + + Constructs a new Inverse Multiquadric Kernel. + + + The constant term theta. + + + + + Constructs a new Inverse Multiquadric Kernel. + + + + + + Inverse Multiquadric Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Inverse Multiquadric Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's constant value. + + + + + + Normalized Polynomial Kernel. This class is equivalent to the + Normalized>Polynomial> kernel but has more efficient + implementation. + + + + + + Constructs a new Normalized Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Normalized Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + + + + + Normalized polynomial kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's polynomial degree. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Value cache for kernel function evaluations. + + + + + This class works as a least-recently-used cache for elements + computed from a the kernel (Gram) matrix. Elements which have + not been needed for some time are discarded from the cache; + while elements which are constantly requested remains cached. + + + The use of cache may speedup learning by a large factor; however + the actual speedup may vary according to the choice of cache size. + + + + + + Constructs a new . + + + The kernel function. + The inputs values. + + + + + Constructs a new . + + + The kernel function. + The inputs values. + + The size for the cache, measured in number of + elements from the set. + Default is to use all elements. + + + + + Attempts to retrieve the value of the kernel function + from the diagonal of the kernel matrix. If the value + is not available, it is immediately computed and inserted + in the cache. + + + Index of the point to compute. + + The result of the kernel function k(p[i], p[i]). + + + + + Attempts to retrieve the kernel function evaluated between point at index i + and j. If it is not cached, it will be computed and the cache will be updated. + + + The index of the first point p to compute. + The index of the second point p to compute. + + The result of the kernel function k(p[i], p[j]). + + + + + Clears the cache. + + + + + + Resets cache statistics. + + + + + + Gets the pair of indices associated with a given key. + + + The key. + + A pair of indices of indicating which + element from the Kernel matrix is associated + with the given key. + + + + + Gets the key from the given indices. + + + The index i. + The index j. + + The key associated with the given indices. + + + + + Gets a copy of the data cache. + + + A copy of the data cache. + + + + + Gets a copy of the Least Recently Used (LRU) List of + Kernel Matrix elements. Elements on the start of the + list have been used most; elements at the end are + about to be discarded from the cache. + + + The Least Recently Used list of kernel matrix elements. + + + + + Gets the size of the cache, + measured in number of samples. + + + The size of this cache. + + + + + Gets the total number of cache hits. + + + + + + Gets the total number of cache misses. + + + + + + Gets the percentage of the cache currently in use. + + + + + + Attempts to retrieve the value of the kernel function + from the diagonal of the kernel matrix. If the value + is not available, it is immediately computed and inserted + in the cache. + + + Index of the point to compute. + + The result of the kernel function k(p[i], p[i]). + + + + + Attempts to retrieve the kernel function evaluated between point at index i + and j. If it is not cached, it will be computed and the cache will be updated. + + + The index of the first point p to compute. + The index of the second point p to compute. + + The result of the kernel function k(p[i], p[j]). + + + + + Quadratic Kernel. + + + + + + Input space distance interface for kernel functions. + + + + Kernels which implement this interface can be used to solve the pre-image + problem in + Kernel Principal Component Analysis and other methods based in Multi- + Dimensional Scaling. + + + + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Squared distance between x and y in input space. + + + + + Constructs a new Quadratic kernel. + + + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Quadratic kernel. + + + + + + Quadratic kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Quadratic kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Distance between x and y in input space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + Distance between x and y in input space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + The parameter of the kernel. + + + The feature space representation of the given point. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Symmetric Triangle Kernel. + + + + + References: + + + Chaudhuri et al, A Comparative Study of Kernels for the Multi-class Support Vector + Machine, 2008. Available on: http://www.computer.org/portal/web/csdl/doi/10.1109/ICNC.2008.803 + + + + + + + Constructs a new Symmetric Triangle Kernel + + + + + + Symmetric Triangle Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Symmetric Triangle Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the gamma value for the kernel. + + + + + + Squared Sinc Kernel. + + + + + References: + + + Chaudhuri et al, A Comparative Study of Kernels for the Multi-class Support Vector + Machine, 2008. Available on: http://www.computer.org/portal/web/csdl/doi/10.1109/ICNC.2008.803 + + + + + + + Constructs a new Squared Sinc Kernel + + + + + + Squared Sine Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Squared Sine Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the gamma value for the kernel. + + + + + + Custom Kernel. + + + + + + Constructs a new Custom kernel. + + + + + + Custom kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Dirichlet Kernel. + + + + + References: + + + A Tutorial on Support Vector Machines (1998). Available on: http://www.umiacs.umd.edu/~joseph/support-vector-machines4.pdf + + + + + + + Constructs a new Dirichlet Kernel + + + + + + Dirichlet Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the dimension for the kernel. + + + + + + Dynamic Time Warping Sequence Kernel. + + + + + The Dynamic Time Warping Sequence Kernel is a sequence kernel, accepting + vector sequences of variable size as input. Despite the sequences being + variable in size, the vectors contained in such sequences should have its + size fixed and should be informed at the construction of this kernel. + + The conversion of the DTW global distance to a dot product uses a combination + of a technique known as spherical normalization and the polynomial kernel. The + degree of the polynomial kernel and the alpha for the spherical normalization + should be given at the construction of the kernel. For more information, + please see the referenced papers shown below. + + + The use of a cache is highly advisable + when using this kernel. + + + + References: + + V. Wan, J. Carmichael; Polynomial Dynamic Time Warping Kernel Support + Vector Machines for Dysarthric Speech Recognition with Sparse Training + Data. Interspeech'2005 - Eurospeech - 9th European Conference on Speech + Communication and Technology. Lisboa, 2005. + + + + + + + The following example demonstrates how to create and learn a Support Vector + Machine (SVM) to recognize sequences using the Dynamic Time Warping kernel. + + + // Suppose you have sequences of multivariate observations, and that + // those sequences could be of arbitrary length. On the other hand, + // each observation have a fixed, delimited number of dimensions. + + // In this example, we have sequences of 3-dimensional observations. + // Each sequence can have an arbitrary length, but each observation + // will always have length 3: + + double[][][] sequences = + { + new double[][] // first sequence + { + new double[] { 1, 1, 1 }, // first observation of the first sequence + new double[] { 1, 2, 1 }, // second observation of the first sequence + new double[] { 1, 4, 2 }, // third observation of the first sequence + new double[] { 2, 2, 2 }, // fourth observation of the first sequence + }, + + new double[][] // second sequence (note that this sequence has a different length) + { + new double[] { 1, 1, 1 }, // first observation of the second sequence + new double[] { 1, 5, 6 }, // second observation of the second sequence + new double[] { 2, 7, 1 }, // third observation of the second sequence + }, + + new double[][] // third sequence + { + new double[] { 8, 2, 1 }, // first observation of the third sequence + }, + + new double[][] // fourth sequence + { + new double[] { 8, 2, 5 }, // first observation of the fourth sequence + new double[] { 1, 5, 4 }, // second observation of the fourth sequence + } + }; + + // Now, we will also have different class labels associated which each + // sequence. We will assign -1 to sequences whose observations start + // with { 1, 1, 1 } and +1 to those that do not: + + int[] outputs = + { + -1,-1, // First two sequences are of class -1 (those start with {1,1,1}) + 1, 1, // Last two sequences are of class +1 (don't start with {1,1,1}) + }; + + // At this point, we will have to "flat" out the input sequences from double[][][] + // to a double[][] so they can be properly understood by the SVMs. The problem is + // that, normally, SVMs usually expect the data to be comprised of fixed-length + // input vectors and associated class labels. But in this case, we will be feeding + // them arbitrary-length sequences of input vectors and class labels associated with + // each sequence, instead of each vector. + + double[][] inputs = new double[sequences.Length][]; + for (int i = 0; i < sequences.Length; i++) + inputs[i] = Matrix.Concatenate(sequences[i]); + + + // Now we have to setup the Dynamic Time Warping kernel. We will have to + // inform the length of the fixed-length observations contained in each + // arbitrary-length sequence: + // + DynamicTimeWarping kernel = new DynamicTimeWarping(length: 3); + + // Now we can create the machine. When using variable-length + // kernels, we will need to pass zero as the input length: + var svm = new KernelSupportVectorMachine(kernel, inputs: 0); + + + // Create the Sequential Minimal Optimization learning algorithm + var smo = new SequentialMinimalOptimization(svm, inputs, outputs) + { + Complexity = 1.5 + }; + + // And start learning it! + double error = smo.Run(); // error will be 0.0 + + + // At this point, we should have obtained an useful machine. Let's + // see if it can understand a few examples it hasn't seem before: + + double[][] a = + { + new double[] { 1, 1, 1 }, + new double[] { 7, 2, 5 }, + new double[] { 2, 5, 1 }, + }; + + double[][] b = + { + new double[] { 7, 5, 2 }, + new double[] { 4, 2, 5 }, + new double[] { 1, 1, 1 }, + }; + + // Following the aforementioned logic, sequence (a) should be + // classified as -1, and sequence (b) should be classified as +1. + + int resultA = System.Math.Sign(svm.Compute(Matrix.Concatenate(a))); // -1 + int resultB = System.Math.Sign(svm.Compute(Matrix.Concatenate(b))); // +1 + + + + + + + Constructs a new Dynamic Time Warping kernel. + + + + The length of the feature vectors + contained in each sequence. + + + + + + Constructs a new Dynamic Time Warping kernel. + + + + The length of the feature vectors + contained in each sequence. + + + + The hypersphere ratio. Default value is 1. + + + + + + Constructs a new Dynamic Time Warping kernel. + + + + The length of the feature vectors + contained in each sequence. + + + + The hypersphere ratio. Default value is 1. + + + + The degree of the kernel. Default value is 1 (linear kernel). + + + + + + Dynamic Time Warping kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + + Squared distance between x and y in feature (kernel) space. + + + + + + Global distance D(X,Y) between two sequences of vectors. + + + The current thread local storage. + A sequence of vectors. + A sequence of vectors. + + The global distance between X and Y. + + + + + Projects vectors from a sequence of vectors into + a hypersphere, augmenting their size in one unit + and normalizing them to be unit vectors. + + + A sequence of vectors. + + A sequence of vector projections. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations + before the is reclaimed by garbage collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the length for the feature vectors + contained in each sequence used by the kernel. + + + + + + Gets or sets the hypersphere ratio. + + + + + + Gets or sets the polynomial degree for this kernel. + + + + + + Gaussian Kernel. + + + + + The Gaussian kernel requires tuning for the proper value of σ. Different approaches + to this problem includes the use of brute force (i.e. using a grid-search algorithm) + or a gradient ascent optimization. + + + References: + + + P. F. Evangelista, M. J. Embrechts, and B. K. Szymanski. Some Properties + of the Gaussian Kernel for One Class Learning. Available on: + http://www.cs.rpi.edu/~szymansk/papers/icann07.pdf + + + + + + + Constructs a new Gaussian Kernel + + + + + + Constructs a new Gaussian Kernel + + + The kernel's sigma parameter. + + + + + Gaussian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gaussian Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + Squared distance between x and y in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Computes the distance in input space given + a distance computed in feature space. + + + Distance in feature space. + Distance in input space. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Computes the set of all distances between + all points in a random subset of the data. + + + The inputs points. + The number of samples. + + + + + Estimates kernel parameters from the data. + + + The input data. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Called when the value for any of the + kernel's parameters has changed. + + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + The number of random samples to analyze. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Computes the set of all distances between + all points in a random subset of the data. + + + The inner kernel. + The inputs points. + The number of samples. + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Gets or sets the sigma² value for the kernel. When setting + sigma², gamma gets updated accordingly (gamma = 0.5/sigma²). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Generalized Histogram Intersection Kernel. + + + + The Generalized Histogram Intersection kernel is built based on the + Histogram Intersection Kernel for image classification but applies + in a much larger variety of contexts (Boughorbel, 2005). + + + + + + Constructs a new Generalized Histogram Intersection Kernel. + + + + + + Generalized Histogram Intersection Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Hyperbolic Secant Kernel. + + + + + References: + + + Chaudhuri et al, A Comparative Study of Kernels for the Multi-class Support Vector + Machine, 2008. Available on: http://www.computer.org/portal/web/csdl/doi/10.1109/ICNC.2008.803 + + + + + + + Constructs a new Hyperbolic Secant Kernel + + + + + + Hyperbolic Secant Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Hyperbolic Secant Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the gamma value for the kernel. + + + + + + Laplacian Kernel. + + + + + + Constructs a new Laplacian Kernel + + + + + + Constructs a new Laplacian Kernel + + + The sigma slope value. + + + + + Laplacian Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Laplacian Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Squared distance between x and y in input space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Computes the distance in input space given + a distance computed in feature space. + + + Distance in feature space. + Distance in input space. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + + A Laplacian kernel initialized with an appropriate sigma value. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Laplacian kernel initialized with an appropriate sigma value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Linear Kernel. + + + + + + Constructs a new Linear kernel. + + + A constant intercept term. Default is 1. + + + + + Constructs a new Linear Kernel. + + + + + + Linear kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Linear kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Squared distance between x and y in input space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + The parameter of the kernel. + + + The feature space representation of the given point. + + + + + + Gets or sets the kernel's intercept term. Default is 0. + + + + + + Logarithm Kernel. + + + + The Log kernel seems to be particularly interesting for + images, but is only conditionally positive definite. + + + + + + Constructs a new Log Kernel + + + The kernel's degree. + + + + + Constructs a new Log Kernel + + + The kernel's degree. + + + + + Log Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Log Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's degree. + + + + + + Multiquadric Kernel. + + + + The multiquadric kernel is only conditionally positive-definite. + + + + + + Constructs a new Multiquadric Kernel. + + + The constant term theta. + + + + + Constructs a new Multiquadric Kernel. + + + + + + Multiquadric Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Multiquadric Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's constant value. + + + + + + Polynomial Kernel. + + + + + + Constructs a new Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + + + + + Polynomial kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Polynomial kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + Squared distance between x and y in feature (kernel) space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + Distance between x and y in input space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + The parameter of the kernel. + The parameter of the kernel. + + + The feature space representation of the given point. + + + + + + Gets or sets the kernel's polynomial degree. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Power Kernel, also known as the (Unrectified) Triangular Kernel. + + + + The Power kernel is also known as the (unrectified) triangular kernel. + It is an example of scale-invariant kernel (Sahbi and Fleuret, 2004) + and is also only conditionally positive definite. + + + + + + Constructs a new Power Kernel. + + + The kernel's degree. + + + + + Constructs a new Power Kernel. + + + The kernel's degree. + + + + + Power Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Power Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's degree. + + + + + + Precomputed Gram Matrix Kernel. + + + + + + Constructs a new Precomputed Matrix Kernel. + + + + + + Kernel function. + + + An array containing a first element with the index for input vector x. + An array containing a first element with the index for input vector y. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the precomputed Gram matrix for this kernel. + + + + + + Rational Quadratic Kernel. + + + + The Rational Quadratic kernel is less computationally intensive than + the Gaussian kernel and can be used as an alternative when using the + Gaussian becomes too expensive. + + + + + + Constructs a new Rational Quadratic Kernel. + + + The constant term theta. + + + + + Rational Quadratic Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Rational Quadratic Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's constant term. + + + + + + Sigmoid Kernel. + + + + Sigmoid kernel of the form k(x,z) = tanh(a * x'z + c). Sigmoid kernels are only + conditionally positive definite for some values of a and c, and therefore may not + induce a reproducing kernel Hilbert space. However, they have been successfully + used in practice (Schölkopf and Smola, 2002). + + + + + + Estimates suitable values for the sigmoid kernel + by exploring the response area of the tanh function. + + + An input data set. + + A Sigmoid kernel initialized with appropriate values. + + + + + Estimates suitable values for the sigmoid kernel + by exploring the response area of the tanh function. + + + An input data set. + The size of the subset to use in the estimation. + The interquartile range for the data. + + A Sigmoid kernel initialized with appropriate values. + + + + + Computes the set of all distances between + all points in a random subset of the data. + + + The inputs points. + The number of samples. + + + + + Constructs a Sigmoid kernel. + + + + + + Constructs a Sigmoid kernel. + + + + Alpha parameter. Typically should be set to + a small positive value. Default is 0.01. + + Constant parameter. Typically should be set to + a negative value. Default is -e (Euler's constant). + + + + + Sigmoid kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Sigmoid kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's alpha parameter. + + + + In a sigmoid kernel, alpha is a inner product + coefficient for the hyperbolic tangent function. + + + + + + Gets or sets the kernel's constant term. + + + + + + Sparse Cauchy Kernel. + + + The Cauchy kernel comes from the Cauchy distribution (Basak, 2008). It is a + long-tailed kernel and can be used to give long-range influence and sensitivity + over the high dimension space. + + + + + + Constructs a new Sparse Cauchy Kernel. + + + The value for sigma. + + + + + Cauchy Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Gets or sets the kernel's sigma value. + + + + + + Sparse Gaussian Kernel. + + + + + The Gaussian kernel requires tuning for the proper value of σ. Different approaches + to this problem includes the use of brute force (i.e. using a grid-search algorithm) + or a gradient ascent optimization. + + + For an example on how to create a sparse kernel, please see the page. + + + References: + + + P. F. Evangelista, M. J. Embrechts, and B. K. Szymanski. Some Properties of the + Gaussian Kernel for One Class Learning. Available on: http://www.cs.rpi.edu/~szymansk/papers/icann07.pdf + + + + + + + Constructs a new Sparse Gaussian Kernel + + + + + + Constructs a new Sparse Gaussian Kernel + + + The standard deviation for the Gaussian distribution. Default is 1. + + + + + Gaussian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Distance between x and y in input space. + + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Sparse Laplacian Kernel. + + + + + + Constructs a new Laplacian Kernel + + + + + + Constructs a new Laplacian Kernel + + + The sigma slope value. + + + + + Laplacian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Distance between x and y in input space. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Laplacian kernel initialized with an appropriate sigma value. + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Sparse Linear Kernel. + + + + The Sparse Linear kernel accepts inputs in the libsvm sparse format. + + + + + The following example shows how to teach a kernel support vector machine using + the linear sparse kernel to perform the AND classification task using sparse + vectors. + + + // Example AND problem + double[][] inputs = + { + new double[] { }, // 0 and 0: 0 (label -1) + new double[] { 2,1 }, // 0 and 1: 0 (label -1) + new double[] { 1,1 }, // 1 and 0: 0 (label -1) + new double[] { 1,1, 2,1 } // 1 and 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + // 0, 0, 0, 1 + -1, -1, -1, 1 + }; + + // Create a Support Vector Machine for the given inputs + // (sparse machines should use 0 as the number of inputs) + var machine = new KernelSupportVectorMachine(new SparseLinear(), inputs: 0); + + // Instantiate a new learning algorithm for SVMs + var smo = new SequentialMinimalOptimization(machine, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 100000.0; + + // Run + double error = smo.Run(); // should be zero + + double[] predicted = inputs.Apply(machine.Compute).Sign(); + + // Outputs should be -1, -1, -1, +1 + + + + + + + Constructs a new Linear kernel. + + + A constant intercept term. Default is 0. + + + + + Constructs a new Linear Kernel. + + + + + + Sparse Linear kernel function. + + + Sparse vector x in input space. + Sparse vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + Distance between x and y in input space. + + + + + Computes the product of two vectors given in sparse representation. + + + The first vector x. + The second vector y. + + The inner product x * y between the given vectors. + + + + + Computes the squared Euclidean distance of two vectors given in sparse representation. + + + The first vector x. + The second vector y. + + + The squared Euclidean distance d² = |x - y|² between the given vectors. + + + + + + Gets or sets the kernel's intercept term. + + + + + + Sparse Polynomial Kernel. + + + + + + Constructs a new Sparse Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + + + + + Polynomial kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gets or sets the kernel's polynomial degree. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Sparse Sigmoid Kernel. + + + + Sigmoid kernels are not positive definite and therefore do not induce + a reproducing kernel Hilbert space. However, they have been successfully + used in practice (Schölkopf and Smola, 2002). + + + + + + Constructs a Sparse Sigmoid kernel. + + + Alpha parameter. + Constant parameter. + + + + + Constructs a Sparse Sigmoid kernel. + + + + + + Sigmoid kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gets or sets the kernel's gamma parameter. + + + + In a sigmoid kernel, gamma is a inner product + coefficient for the hyperbolic tangent function. + + + + + + Gets or sets the kernel's constant term. + + + + + + Spherical Kernel. + + + + The spherical kernel comes from a statistics perspective. It is an example + of an isotropic stationary kernel and is positive definite in R^3. + + + + + + Constructs a new Spherical Kernel. + + + Value for sigma. + + + + + Spherical Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Spherical Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Infinite Spline Kernel function. + + + + The Spline kernel is given as a piece-wise cubic + polynomial, as derived in the works by Gunn (1998). + + + + + + Constructs a new Spline Kernel. + + + + + + Spline Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Taylor approximation for the explicit Gaussian kernel. + + + + + References: + + + Lin, Keng-Pei, and Ming-Syan Chen. "Efficient kernel approximation for large-scale support + vector machine classification." Proceedings of the Eleventh SIAM International Conference on + Data Mining. 2011. Available on: http://epubs.siam.org/doi/pdf/10.1137/1.9781611972818.19 + + + + + + + + Constructs a new kernel. + + + + + + Constructs a new kernel with the given sigma. + + + The kernel's sigma parameter. + + + + + Constructs a new kernel with the given sigma. + + + The kernel's sigma parameter. + The Gaussian approximation degree. Default is 1024. + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Called when the value for any of the + kernel's parameters has changed. + + + + + + Gets or sets the approximation degree + for this kernel. Default is 1024. + + + + + + Tensor Product combination of Kernels. + + + + + + Constructs a new additive kernel. + + + Kernels to combine. + + + + + Tensor Product Kernel Combination function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Generalized T-Student Kernel. + + + + The Generalized T-Student Kernel is a Mercer Kernel and thus forms + a positive semi-definite Kernel matrix (Boughorbel, 2004). It has + a similar form to the Inverse Multiquadric Kernel. + + + + + + Constructs a new Generalized T-Student Kernel. + + + The kernel's degree. + + + + + Generalized T-Student Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Generalized T-Student Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the degree of this kernel. + + + + + + Wave Kernel. + + + + The Wave kernel is symmetric positive semi-definite (Huang, 2008). + + + + + + Constructs a new Wave Kernel. + + + Value for sigma. + + + + + Wave Kernel Function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Wave Kernel Function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Wavelet Kernel. + + + + + In Wavelet analysis theory, one of the common goals is to express or + approximate a signal or function using a family of functions generated + by dilations and translations of a function called the mother wavelet. + + The Wavelet kernel uses a mother wavelet function together with dilation + and translation constants to produce such representations and build a + inner product which can be used by kernel methods. The default wavelet + used by this class is the mother function h(x) = cos(1.75x)*exp(-x²/2). + + + References: + + + Li Zhang, Weida Zhou, and Licheng Jiao; Wavelet Support Vector Machine. IEEE + Transactions on Systems, Man, and Cybernetics—Part B: Cybernetics, Vol. 34, + No. 1, February 2004. + + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Wavelet kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the Mother wavelet for this kernel. + + + + + + Gets or sets the wavelet dilation for this kernel. + + + + + + Gets or sets the wavelet translation for this kernel. + + + + + + Gets or sets whether this is + an invariant Wavelet kernel. + + + + + + Absolute link function. + + + + + Link functions can be used in many models, such as in + and Support + Vector Machines. + + + + + + + + + Link function interface. + + + + + The link function provides the relationship between the linear predictor and the + mean of the distribution function. There are many commonly used link functions, and + their choice can be somewhat arbitrary. It can be convenient to match the domain of + the link function to the range of the distribution function's mean. + + + References: + + + Wikipedia contributors. "Generalized linear model." Wikipedia, The Free Encyclopedia. + + + + + + + + + + + The link function. + + + An input value. + + The transformed input value. + + + + + The mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new Absolute link function. + + + The beta value. + + + + + Creates a new Absolute link function. + + + + + + The Absolute link function. + + + An input value. + + The transformed input value. + + + The absolute link function is given by f(x) = abs(x) / b. + + + + + + The mean function. + + + A transformed value. + + The reverse transformed value. + + + The inverse absolute link function is given by g(x) = B * abs(x). + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the absolute link function + is given by f'(x) = B. + + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the absolute link function + in terms of y = f(x) is given by f'(y) = B. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient b (slope). + + + + + + Cauchy link function. + + + + + The Cauchy link function is associated with the + Cauchy distribution. + + + Link functions can be used in many models, such as in + and Support + Vector Machines. + + + + + + + + + Creates a new Cauchit link function. + + + The beta value. Default is 1/pi. + The constant value. Default is 0.5. + + + + + Creates a new Cauchit link function. + + + + + + The Cauchit link function. + + + An input value. + + The transformed input value. + + + The Cauchit link function is given by f(x) = tan((x - A) / B). + + + + + + The Cauchit mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + The inverse Cauchit link function is given by g(x) = tan(x) * B + A. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the Cauchit link function + in terms of y = f(x) is given by + + f'(y) = B / (x * x + 1) + + + + + + + First derivative of the mean function + expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the Cauchit link function + in terms of y = f(x) is given by + + f'(y) = B / (tan((y - A) / B)² + 1) + + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Threshold link function. + + + + + + Creates a new Absolute link function. + + + The threshold value. + + + + + Creates a new Absolute link function. + + + + + + The Absolute link function. + + + An input value. + + The transformed input value. + + + + + The mean function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Threshold coefficient b. + + + + + + Sin link function. + + + + + + Creates a new Sin link function. + + + The beta value. + The constant value. + + + + + Creates a new Sin link function. + + + + + + The Sin link function. + + + An input value. + + The transformed input value. + + + + + The Sin mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Natural logarithm of natural logarithm link function. + + + + + + Creates a new Log-Log link function. + + + The beta value. + The constant value. + + + + + Creates a new Log-Log link function. + + + + + + Creates a Complementary Log-Log link function. + + + + + + The Log-log link function. + + + An input value. + + The transformed input value. + + + + + The Log-log mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Natural logarithm link function. + + + + The natural logarithm link function is associated with + the Poisson distribution. + + + + + + Creates a new Log link function. + + + The beta value. Default is 1. + The constant value. Default is 0. + + + + + Creates a new Log link function. + + + + + + The link function. + + + An input value. + + The transformed input value. + + + + + The mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Inverse squared link function. + + + + The inverse squared link function is associated with the + Inverse Gaussian distribution. + + + + + + Creates a new Inverse squared Link function. + + + The beta value. + The constant value. + + + + + Creates a new Inverse squared Link function. + + + + + + The Inverse Squared link function. + + + An input value. + + The transformed input value. + + + + + The Inverse Squared mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Probit link function. + + + + + + Creates a new Probit link function. + + + + + + The Probit link function. + + + An input value. + + The transformed input value. + + + The Probit link function is given by f(x) = Phi^-1(x), + in which Phi^-1 is the + inverse Normal (Gaussian) cumulative + distribution function. + + + + + + The Probit mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + The Probit link function is given by g(x) = Phi(x), + in which Phi is the + Normal (Gaussian) cumulative + distribution function. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the identity link function is + given by f'(x) = exp(c - (Phi^-1(x))² * 0.5) in + which c = -log(sqrt(2*π) + and Phi^-1 is the + inverse Normal (Gaussian) cumulative distribution function. + + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the identity link function in terms + of y = f(x) is given by f'(y) = exp(c - x * x * 0.5) + in which c = -log(sqrt(2*π) + and x = + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Set of statistics functions. + + + + This class represents collection of common functions used in statistics. + Every Matrix function assumes data is organized in a table-like model, + where Columns represents variables and Rows represents a observation of + each variable. + + + + + + Computes the mean of the given values. + + + A double array containing the vector members. + + The mean of the given data. + + + + + Computes the mean of the given values. + + + An integer array containing the vector members. + + The mean of the given data. + + + + + Computes the Geometric mean of the given values. + + + A double array containing the vector members. + + The geometric mean of the given data. + + + + + Computes the log geometric mean of the given values. + + + A double array containing the vector members. + + The log geometric mean of the given data. + + + + + Computes the geometric mean of the given values. + + + A double array containing the vector members. + + The geometric mean of the given data. + + + + + Computes the log geometric mean of the given values. + + + A double array containing the vector members. + + The log geometric mean of the given data. + + + + + Computes the (weighted) grand mean of a set of samples. + + + A double array containing the sample means. + A integer array containing the sample's sizes. + + The grand mean of the samples. + + + + + Computes the mean of the given values. + + + A unsigned short array containing the vector members. + + The mean of the given data. + + + + + Computes the mean of the given values. + + + A float array containing the vector members. + + The mean of the given data. + + + + + Computes the truncated (trimmed) mean of the given values. + + + A double array containing the vector members. + Whether to perform operations in place, overwriting the original vector. + A boolean parameter informing if the given values have already been sorted. + The percentage of observations to drop from the sample. + + The mean of the given data. + + + + + Computes the contraharmonic mean of the given values. + + + A unsigned short array containing the vector members. + The order of the harmonic mean. Default is 1. + + The contraharmonic mean of the given data. + + + + + Computes the contraharmonic mean of the given values. + + + A unsigned short array containing the vector members. + + The contraharmonic mean of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + The mean of the vector, if already known. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + A float array containing the vector members. + The mean of the vector, if already known. + The standard deviation of the given data. + + + + Computes the Standard Deviation of the given values. + + An integer array containing the vector members. + The mean of the vector, if already known. + The standard deviation of the given data. + + + + Computes the Standard Error for a sample size, which estimates the + standard deviation of the sample mean based on the population mean. + + The sample size. + The sample standard deviation. + The standard error for the sample. + + + + Computes the Standard Error for a sample size, which estimates the + standard deviation of the sample mean based on the population mean. + + A double array containing the samples. + The standard error for the sample. + + + + Computes the Median of the given values. + + A double array containing the vector members. + The median of the given data. + + + + Computes the Median of the given values. + + + An integer array containing the vector members. + A boolean parameter informing if the given values have already been sorted. + The median of the given data. + + + + + Computes the Median of the given values. + + + An integer array containing the vector members. + A boolean parameter informing if the given values have already been sorted. + The length of the subarray, starting at . + The starting index of the array. + + The median of the given data. + + + + + Computes the Quartiles of the given values. + + + An integer array containing the vector members. + A boolean parameter informing if the given values have already been sorted. + The inter-quartile range for the values. + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + An integer array containing the vector members. + The first quartile. + The third quartile. + A boolean parameter informing if the given values have already been sorted. + The second quartile, the median of the given data. + + + + + Computes the Variance of the given values. + + + A double precision number array containing the vector members. + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A double precision number array containing the vector members. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + An integer number array containing the vector members. + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + An integer number array containing the vector members. + + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + A single precision number array containing the vector members. + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + The variance of the given data. + + + + + Computes the pooled standard deviation of the given values. + + + The grouped samples. + + True to compute a pooled standard deviation using unbiased estimates + of the population variance; false otherwise. Default is true. + + + + + Computes the pooled standard deviation of the given values. + + + The grouped samples. + + + + + Computes the pooled standard deviation of the given values. + + + The number of samples used to compute the . + The unbiased variances for the samples. + + True to compute a pooled standard deviation using unbiased estimates + of the population variance; false otherwise. Default is true. + + + + + Computes the pooled variance of the given values. + + + The grouped samples. + + + + + Computes the pooled variance of the given values. + + + + True to obtain an unbiased estimate of the population + variance; false otherwise. Default is true. + + The grouped samples. + + + + + Computes the pooled variance of the given values. + + + The number of samples used to compute the . + The unbiased variances for the samples. + + True to obtain an unbiased estimate of the population + variance; false otherwise. Default is true. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + Returns how many times the detected mode happens in the values. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + Returns how many times the detected mode happens in the values. + + The most common value in the given data. + + + + + Computes the Covariance between two arrays of values. + + + A number array containing the first vector elements. + A number array containing the second vector elements. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Covariance between two arrays of values. + + + A number array containing the first vector elements. + A number array containing the second vector elements. + The mean value of , if known. + The mean value of , if known. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + The values' mean, if already known. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Kurtosis for the given values. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number array containing the vector values. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis of the given data. + + + + + Computes the Kurtosis for the given values. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number array containing the vector values. + The values' mean, if already known. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis of the given data. + + + + + Computes the entropy function for a set of numerical values in a + given . + + + A number array containing the vector values. + A probability distribution function. + + The distribution's entropy for the given values. + + + + + Computes the entropy function for a set of numerical values in a + given . + + + A number array containing the vector values. + A probability distribution function. + The importance for each sample. + + The distribution's entropy for the given values. + + + + + Computes the entropy function for a set of numerical values in a + given . + + + A number array containing the vector values. + A probability distribution function. + The repetition counts for each sample. + + The distribution's entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number array containing the vector values. + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number array containing the vector values. + A small constant to avoid s in + case the there is a zero between the given . + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number matrix containing the matrix values. + A small constant to avoid s in + case the there is a zero between the given . + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number matrix containing the matrix values. + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The starting symbol. + The ending symbol. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The starting symbol. + The ending symbol. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The range of symbols. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The number of distinct classes. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The number of distinct classes. + The evaluated entropy. + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + Returns a row vector containing the column means of the given matrix. + + + + double[,] matrix = + { + { 2, -1.0, 5 }, + { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] means = Accord.Statistics.Tools.Mean(matrix); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + + Returns a vector containing the means of the given matrix. + + + + double[,] matrix = + { + { 2, -1.0, 5 }, + { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] colMeans = Accord.Statistics.Tools.Mean(matrix, 0); + + // row means are equal to (2.0, 5.5) + double[] rowMeans = Accord.Statistics.Tools.Mean(matrix, 1); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + Returns a row vector containing the column means of the given matrix. + + + + double[][] matrix = + { + new double[] { 2, -1.0, 5 }, + new double[] { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] means = Accord.Statistics.Tools.Mean(matrix); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + + Returns a vector containing the means of the given matrix. + + + + double[][] matrix = + { + new double[] { 2, -1.0, 5 }, + new double[] { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] colMeans = Accord.Statistics.Tools.Mean(matrix, 0); + + // row means are equal to (2.0, 5.5) + double[] rowMeans = Accord.Statistics.Tools.Mean(matrix, 1); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + The sum vector containing already calculated sums for each column of the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + The sum vector containing already calculated sums for each column of the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Centers an observation, subtracting the empirical + mean from each element in the observation vector. + + + An array of double precision floating-point numbers. + + + + + Centers an observation, subtracting the empirical + mean from each element in the observation vector. + + + An array of double precision floating-point numbers. + The mean of the , if already known. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already + calculated means for each column of the matrix. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Medians vector. + + + A matrix whose medians will be calculated. + + Returns a vector containing the medians of the given matrix. + + + + + Calculates the matrix Medians vector. + + + A matrix whose medians will be calculated. + + Returns a vector containing the medians of the given matrix. + + + + + Computes the Quartiles of the given values. + + + + A matrix whose medians and quartiles will be calculated. + The inter-quartile range for the values. + + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + A matrix whose medians and quartiles will be calculated. + The inter-quartile range for the values. + + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + + A matrix whose medians and quartiles will be calculated. + The first quartile for each column. + The third quartile for each column. + + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + A matrix whose medians and quartiles will be calculated. + The first quartile for each column. + The third quartile for each column. + + The second quartile, the median of the given data. + + + + + Calculates the matrix Modes vector. + + + A matrix whose modes will be calculated. + + Returns a vector containing the modes of the given matrix. + + + + + Calculates the matrix Modes vector. + + + A matrix whose modes will be calculated. + + Returns a vector containing the modes of the given matrix. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number matrix containing the matrix values. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness vector for the given matrix. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + The mean value for the given values, if already known. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number matrix containing the matrix values. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness vector for the given matrix. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + The column means, if known. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis vector of the given data. + + + + + Computes the sample Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The sample kurtosis vector of the given data. + + + + + Computes the Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis vector of the given data. + + + + + Computes the Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis vector of the given data. + + + + + Computes the Standard Error vector for a given matrix. + + + A number multi-dimensional array containing the matrix values. + Returns the standard error vector for the matrix. + + + + + Computes the Standard Error vector for a given matrix. + + + The number of samples in the matrix. + The values' standard deviation vector, if already known. + + Returns the standard error vector for the matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + + The dimension of the matrix to consider as observations. Pass 0 if the matrix has + observations as rows and variables as columns, pass 1 otherwise. Default is 0. + + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + + Pass 0 if the mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + + The dimension of the matrix to consider as observations. Pass 0 if the matrix has + observations as rows and variables as columns, pass 1 otherwise. Default is 0. + + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + The covariance matrix. + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + A real number to divide each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + The covariance matrix. + + + + Calculates the correlation matrix for a matrix of samples. + + + In statistics and probability theory, the correlation matrix is the same + as the covariance matrix of the standardized random variables. + + A multi-dimensional array containing the matrix values. + The correlation matrix. + + + + Calculates the correlation matrix for a matrix of samples. + + + + In statistics and probability theory, the correlation matrix is the same + as the covariance matrix of the standardized random variables. + + + A multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The correlation matrix. + + + + + Calculates the correlation matrix for a matrix of samples. + + + + In statistics and probability theory, the correlation matrix is the same + as the covariance matrix of the standardized random variables. + + + A multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The correlation matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + + The Z-Scores for the matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The Z-Scores for the matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + + The Z-Scores for the matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The Z-Scores for the matrix. + + + + + Centers column data, subtracting the empirical mean from each variable. + + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + + Centers column data, subtracting the empirical mean from each variable. + + + A matrix where each column represent a variable and each row represent a observation. + The mean value of the given values, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Centers column data, subtracting the empirical mean from each variable. + + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + Centers column data, subtracting the empirical mean from each variable. + + A matrix where each column represent a variable and each row represent a observation. + The mean value of the given values, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + An array of double precision floating-point numbers. + True to perform the operation in place, + altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + An array of double precision floating-point numbers. + The standard deviation of the given + , if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + The values' standard deviation vector, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + The values' standard deviation vector, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + The number of times each sample should be repeated. + A number multi-dimensional array containing the matrix values. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + The number of times each sample should be repeated. + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean value of the given values, if already known. + A real number to multiply each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + The number of times each sample should be repeated. + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to multiply each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Computes the Weighted Mean of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . + + The mean of the given data. + + + + + Computes the Weighted Mean of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + The mean of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . + How the weights should be interpreted for the bias correction. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean of the vector, if already known. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean of the vector, if already known. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The standard deviation of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . + How the weights should be interpreted for the bias correction. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean of the array, if already known. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + An unit vector containing the importance of each sample + in . + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The variance of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the vector, if already known. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the vector, if already known. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The standard deviation of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the array, if already known. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the array, if already known. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The variance of the given data. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + How the weights should be interpreted for the bias correction. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . + How the weights should be interpreted for the bias correction. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + How the weights should be interpreted for the bias correction. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . How those values are interpreted depend on the + value for . + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + Returns a vector containing the variances of the given matrix. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + The number of times each sample should be repeated. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + The number of times each sample should be repeated. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + + The most common value in the given data. + + + + + Gets the maximum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + A vector containing the importance of each sample in . + The index of the maximum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The maximum value in the given data. + + + + + Gets the minimum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + A vector containing the importance of each sample in . + The index of the minimum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The minimum value in the given data. + + + + + Gets the maximum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + The number of times each sample should be repeated. + The index of the maximum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The maximum value in the given data. + + + + + Gets the minimum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + The number of times each sample should be repeated. + The index of the minimum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The minimum value in the given data. + + + + + Creates Tukey's box plot inner fence. + + + + + + Creates Tukey's box plot outer fence. + + + + + + Calculates the prevalence of a class for each variable. + + + An array of counts detailing the occurrence of the first class. + An array of counts detailing the occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Calculates the prevalence of a class. + + + A matrix containing counted, grouped data. + The index for the column which contains counts for occurrence of the first class. + The index for the column which contains counts for occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Groups the occurrences contained in data matrix of binary (dichotomous) data. + + + A data matrix containing at least a column of binary data. + Index of the column which contains the group label name. + Index of the column which contains the binary [0,1] data. + + + A matrix containing the group label in the first column, the number of occurrences of the first class + in the second column and the number of occurrences of the second class in the third column. + + + + + + Extends a grouped data into a full observation matrix. + + + The group labels. + + An array containing he occurrence of the positive class + for each of the groups. + + An array containing he occurrence of the negative class + for each of the groups. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The grouped data matrix. + Index of the column which contains the labels + in the grouped data matrix. + Index of the column which contains + the occurrences for the first class. + Index of the column which contains + the occurrences for the second class. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Gets the coefficient of determination, as known as the R-Squared (R²) + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R^2 coefficient of determination is a statistical measure of how well the + regression approximates the real data points. An R^2 of 1.0 indicates that the + regression perfectly fits the data. + + + + + + Returns a random sample of size k from a population of size n. + + + + + + Returns a random group assignment for a sample. + + + The sample size. + The number of groups. + + + + + Returns a random group assignment for a sample + into two mutually exclusive groups. + + + The sample size. + The proportion of samples between the groups. + + + + + Returns a random group assignment for a sample, making + sure different class labels are distributed evenly among + the groups. + + + A vector containing class labels. + The number of different classes in . + The number of groups. + + + + + Returns a random permutation of size n. + + + + + + Shuffles an array. + + + + + + Shuffles a collection. + + + + + + Computes the whitening transform for the given data, making + its covariance matrix equals the identity matrix. + + A matrix where each column represent a + variable and each row represent a observation. + The base matrix used in the + transformation. + + The transformed source data (which now has unit variance). + + + + + + Gets the rank of a sample, often used with order statistics. + + + + + + Gets the number of distinct values + present in each column of a matrix. + + + + + + Gets the number of distinct values + present in each column of a matrix. + + + + + + Gets the number of distinct values + present in each column of a matrix. + + + + + + Generates a random matrix. + + + The size of the square matrix. + The minimum value for a diagonal element. + The maximum size for a diagonal element. + + A square, positive-definite matrix which + can be interpreted as a covariance matrix. + + + + + Computes the kernel distance for a kernel function even if it doesn't + implement the interface. Can be used to check + the proper implementation of the distance function. + + + The kernel function whose distance needs to be evaluated. + An input point x given in input space. + An input point y given in input space. + + + The distance between and in kernel (feature) space. + + + + + + Contains statistical models with direct applications in machine learning, such as + Hidden Markov Models, + Conditional Random Fields, Hidden Conditional + Random Fields and linear and + logistic regressions. + + + + + The main algorithms and techniques available on this namespaces are certainly + the hidden Markov models. + The Accord.NET Framework contains one of the most popular and well-tested + offerings for creating, training and validating Markov models using either + discrete observations or any arbitrary discrete, continuous or mixed probability distributions to + model the observations. + + + This namespace also brings + Conditional Random Fields, that alongside the Markov models can be + used to build sequence classifiers, + perform gesture recognition, and can even be combined with neural networks + to create hybrid models. Other + models include regression + and survival models. + + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + + Contains classes related to Conditional Random + Fields, Hidden Conditional Random + Fields and their learning + algorithms. + + + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + + + Contains learning algorithms for CRFs and + HCRFs, such as + Conjugate Gradient, + L-BFGS and + RProp-based learning. + + + + + The namespace class diagram is shown below. + + + + + + + + + + Factor Potential function for a Markov model whose states are independent + distributions composed of discrete and Normal distributed components. + + + + + + Factor Potential (Clique Potential) function. + + + The type of the observations being modeled. + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + The index of the first class feature in the 's parameter vector. + The number of class features in this factor. + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + + + + + Computes the factor potential function for the given parameters. + + + A state sequence. + A sequence of observations. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Computes the factor potential function for the given parameters. + + + A state sequence. + A sequence of observations. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Returns an enumerator that iterates through all features in this factor potential function. + + + An object that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through all features in this factor potential function. + + + + An object that can be used to iterate through the collection. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the + to which this factor potential belongs. + + + + + + Gets the number of model states + assumed by this function. + + + + + + Gets the index of this factor in the + potential function. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to all features from this factor. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to the edge features. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to the state features. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to the output features. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The lookup table of states where the independent distributions begin. + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Base class for implementations of the Viterbi learning algorithm. + This class cannot be instantiated. + + + + + This class uses a template method pattern so specialized classes + can be written for each kind of hidden Markov model emission density + (either discrete or continuous). + + + For the actual Viterbi classes, please refer to + or . For other kinds of algorithms, please + see and + and their generic counter-parts. + + + + + + + + + Creates a new instance of the Viterbi learning algorithm. + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Computes the log-likelihood for the current model for the given observations. + + + The observation vectors. + + The log-likelihood of the observations belonging to the model. + + + + + Runs one single epoch (iteration) of the learning algorithm. + + + The observation sequences. + A vector to be populated with the decoded Viterbi sequences. + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Gets or sets on how many batches the learning data should be divided during learning. + Batches are used to estimate adequately the first models so they can better compute + the Viterbi paths for subsequent passes of the algorithm. Default is 1. + + + + + + Common interface for running statistics. + + + Running statistics are measures computed as data becomes available. + When using running statistics, there is no need to know the number of + samples a priori, such as in the case of the direct . + + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Common interface for Hybrid Hidden Markov Models. + + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The state optimized probability. + + The sequence of states that most likely produced the sequence. + + + + + + Calculates the probability that this model has generated the given sequence. + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + Forward algorithm. + + A sequence of observations. + + The probability that the given sequence has been generated by this model. + + + + + + Gets the expected number of dimensions in each observation. + + + + + + Gets the number of states of this model. + + + + + + Gets or sets a user-defined tag. + + + + + + Hybrid Markov classifier for arbitrary state-observation functions. + + + + + + Creates a new Sequence Classifier with the given number of classes. + + + + The models specializing in each of the classes of + the classification problem. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probability of the assigned class. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Gets the Markov models for each sequence class. + + + + + + Gets the number of dimensions of the + observations handled by this classifier. + + + + + + General Markov function for arbitrary state-emission density definitions. + + + The previous state index. + The observation at the current state. + An array containing the values for the observations in each next possible state. + + + + + Hybrid Markov model for arbitrary state-observation functions. + + + + This class can be used to implement HMM hybrids such as ANN-HMM + or SVM-HMMs through the specification of a custom . + + + + + + Initializes a new instance of the class. + + + A function specifying a probability for a transition-emission pair. + The number of states in the model. + The number of dimensions in the model. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The state optimized probability. + + The sequence of states that most likely produced the sequence. + + + + + + Calculates the probability that this model has generated the given sequence. + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + Forward algorithm. + + A sequence of observations. + + The probability that the given sequence has been generated by this model. + + + + + + Gets the Markov function, which takes the previous state, the + next state and a observation and produces a probability value. + + + + + + Gets the number of states in the model. + + + + + + Gets the number of dimensions of the + observations handled by this model. + + + + + + Gets or sets an user-defined object associated with this model. + + + + + + Multiple-trials Baum-Welch learning. + + + + This class can be used to perform multiple attempts on + Baum-Welch learning with multiple different initialization points. It can also + be used as a replacement inside algorithms + wherever a standard class would be used. + + + + + + Common interface for unsupervised learning algorithms for hidden + Markov models such as the Baum-Welch + learning and the Viterbi learning + algorithms. + + + + + In the context of hidden Markov models, + unsupervised algorithms are algorithms which consider that the sequence + of states in a system is hidden, and just the system's outputs can be seen + (or are known) during training. This is in contrast with + supervised learning algorithms such as the + Maximum Likelihood (MLE), which consider that both the sequence of observations + and the sequence of states are observable during training. + + + + + + + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + The observations. + + + + + Common interface for Hidden Conditional Random Fields learning algorithms. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Common interface for unsupervised learning algorithms for hidden + Markov models such as the Baum-Welch + learning and the Viterbi learning + algorithms. + + + + + In the context of hidden Markov models, + unsupervised algorithms are algorithms which consider that the sequence + of states in a system is hidden, and just the system's outputs can be seen + (or are known) during training. This is in contrast with + supervised learning algorithms such as the + Maximum Likelihood (MLE), which consider that both the sequence of observations + and the sequence of states are observable during training. + + + + + + + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + The observations. + + + + + Creates a new instance of the Baum-Welch learning algorithm. + + + The number of inner models to be learned. + The template model used to create all subsequent inner models. + The topology to be used by the inner models. To be useful, + this needs to be a topology configured to create random initialization matrices. + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the learning algorithm. + + + The observations. + + + + + Gets the template model, used to create all other instances. + + + + + + Gets the topology used on the inner models. + + + + + + Gets or sets how many trials should be attempted + before the model with highest log-likelihood is + selected as the best model found. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Internal methods for validation and other shared functions. + + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Non-linear Least Squares for optimization. + + + + + // Suppose we would like to map the continuous values in the + // second column to the integer values in the first column. + double[,] data = + { + { -40, -21142.1111111111 }, + { -30, -21330.1111111111 }, + { -20, -12036.1111111111 }, + { -10, 7255.3888888889 }, + { 0, 32474.8888888889 }, + { 10, 32474.8888888889 }, + { 20, 9060.8888888889 }, + { 30, -11628.1111111111 }, + { 40, -15129.6111111111 }, + }; + + // Extract inputs and outputs + double[][] inputs = data.GetColumn(0).ToArray(); + double[] outputs = data.GetColumn(1); + + // Create a Nonlinear regression using + var regression = new NonlinearRegression(3, + + // Let's assume a quadratic model function: ax² + bx + c + function: (w, x) => w[0] * x[0] * x[0] + w[1] * x[0] + w[2], + + // Derivative in respect to the weights: + gradient: (w, x, r) => + { + r[0] = 2 * w[0]; // w.r.t a: 2a + r[1] = w[1]; // w.r.t b: b + r[2] = w[2]; // w.r.t c: 0 + } + ); + + // Create a non-linear least squares teacher + var nls = new NonlinearLeastSquares(regression); + + // Initialize to some random values + regression.Coefficients[0] = 4.2; + regression.Coefficients[1] = 0.3; + regression.Coefficients[2] = 1; + + // Run the function estimation algorithm + double error; + for (int i = 0; i < 100; i++) + error = nls.Run(inputs, outputs); + + // Use the function to compute the input values + double[] predict = inputs.Apply(regression.Compute); + + + + + + Common interface for regression fitting methods. + + + + + + Runs the fitting algorithm. + + + The input training data. + The output associated with each of the outputs. + + The sum of squared errors after the learning. + + + + + Initializes a new instance of the class. + + + The regression model. + + + + + Initializes a new instance of the class. + + + The regression model. + The least squares + algorithm to be used to estimate the regression parameters. Default is to + use a Levenberg-Marquardt algorithm. + + + + + Runs the fitting algorithm. + + + The input training data. + The output associated with each of the outputs. + + + The sum of squared errors after the learning. + + + + + + Gets or sets a value indicating whether standard + errors should be computed in the next iteration. + + + true to compute standard errors; otherwise, false. + + + + + + Gets the Least-Squares + optimization algorithm used to perform the actual learning. + + + + + + Generalized Linear Model Regression. + + + + + + References: + + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Amos Storkey. (2005). Learning from Data: Learning Logistic Regressors. School of Informatics. + Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + Cosma Shalizi. (2009). Logistic Regression and Newton's Method. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + Edward F. Conor. Logistic Regression. Website. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (This is completely fictional data). + double[][] input = + { + new double[] { 55, 0 }, // 0 - no cancer + new double[] { 28, 0 }, // 0 + new double[] { 65, 1 }, // 0 + new double[] { 46, 0 }, // 1 - have cancer + new double[] { 86, 1 }, // 1 + new double[] { 56, 1 }, // 1 + new double[] { 85, 0 }, // 0 + new double[] { 33, 0 }, // 0 + new double[] { 21, 1 }, // 0 + new double[] { 42, 1 }, // 1 + }; + + // We also know if they have had lung cancer or not, and + // we would like to know whether smoking has any connection + // with lung cancer (This is completely fictional data). + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + + // To verify this hypothesis, we are going to create a GLM + // regression model for those two inputs (age and smoking). + var regression = new GeneralizedLinearRegression(new ProbitLinkFunction(), inputs: 2); + + // Next, we are going to estimate this model. For this, we + // will use the Iteratively Reweighted Least Squares method. + var teacher = new IterativeReweightedLeastSquares(regression); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta = 0; + do + { + // Perform an iteration + delta = teacher.Run(input, output); + + } while (delta > 0.001); + + + + + + + + Creates a new Generalized Linear Regression Model. + + + The link function to use. + The number of input variables for the model. + + + + + Creates a new Generalized Linear Regression Model. + + + The link function to use. + The number of input variables for the model. + The starting intercept value. Default is 0. + + + + + Creates a new Generalized Linear Regression Model. + + + The link function to use. + The coefficient vector. + The standard error vector. + + + + + Computes the model output for the given input vector. + + + The input vector. + + The output value. + + + + + Computes the model output for each of the given input vectors. + + + The array of input vectors. + + The array of output values. + + + + + Gets the Wald Test for a given coefficient. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Log-Likelihood for the model. + + + A set of input data. + A set of output data. + + The Log-Likelihood (a measure of performance) of + the model calculated over the given data sets. + + + + + + Gets the Log-Likelihood for the model. + + + A set of input data. + A set of output data. + The weights associated with each input vector. + + + The Log-Likelihood (a measure of performance) of + the model calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + The weights associated with each input vector. + + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + A set of output data. + Another Logistic Regression model. + + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + A set of output data. + The weights associated with each input vector. + Another Logistic Regression model. + + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + A set of input data. + A set of output data. + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + A set of input data. + A set of output data. + The weights associated with each input vector. + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + Creates a new GeneralizedLinearRegression that is a copy of the current instance. + + + + + + Creates a GeneralizedLinearRegression from a object. + + + A object. + True to make a copy of the logistic regression values, false + to use the actual values. If the actual values are used, changes done on one model + will be reflected on the other model. + + A new which is a copy of the + given . + + + + + Gets the coefficient vector, in which the + first value is always the intercept value. + + + + + + Gets the standard errors associated with each + coefficient during the model estimation phase. + + + + + + Gets the number of inputs handled by this model. + + + + + + Gets the link function used by + this generalized linear model. + + + + + + Gets or sets the intercept term. This is always the + first value of the array. + + + + + + Stochastic Gradient Descent learning for Logistic Regression fitting. + + + + + + Constructs a new Gradient Descent algorithm. + + + The regression to estimate. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + + The maximum relative change in the parameters after the iteration. + + + + + Runs a single pass of the gradient descent algorithm. + + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Computes the sum-of-squared error between the + model outputs and the expected outputs. + + + The input data set. + The output values. + + The sum-of-squared errors. + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets whether this algorithm should use + stochastic updates or not. Default is false. + + + + + + Gets or sets the algorithm + learning rate. Default is 0.1. + + + + + + Regression function delegate. + + + + This delegate represents a parameterized function that, given a set of + model coefficients and an input + vector, produces an associated output value. + + + The model coefficients, also known as parameters or coefficients. + An input vector. + + The output value produced given the + and vector. + + + + + Gradient function delegate. + + + + This delegate represents the gradient of regression + function. A regression function is a parameterized function that, given a set + of model coefficients and an input vector, + produces an associated output value. This function should compute the gradient vector + in respect to the function . + + + The model coefficients, also known as parameters or coefficients. + An input vector. + The resulting gradient vector (w.r.t to the coefficients). + + + + + Nonlinear Regression. + + + + + + Initializes a new instance of the class. + + + The number of variables (free parameters) in the model. + The regression function implementing the regression model. + + + + + Initializes a new instance of the class. + + + The number of variables (free parameters) in the model. + The regression function implementing the regression model. + The function that computes the gradient for . + + + + + Computes the model output for the given input vector. + + + The input vector. + + The output value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the regression coefficients. + + + + + + Gets the standard errors for the regression coefficients. + + + + + + Gets the model function, mapping inputs to + outputs given a suitable parameter vector. + + + + + + Gets or sets a function that computes the gradient of the + in respect to the . + + + + + + Cox's Proportional Hazards Model. + + + + + + Creates a new Cox Proportional-Hazards Model. + + + The number of input variables for the model. + + + + + Creates a new Cox Proportional-Hazards Model. + + + The number of input variables for the model. + The initial baseline hazard distribution. + + + + + Computes the model output for the given input vector. + + + The input vector. + The output value. + + + + + Computes the model output for the given input vector. + + + The input vector. + The output value. + + + + + Computes the model output for the given input vector. + + + The input vector. + The event time. + + The probabilities of the event occurring at + the given time for the given observation. + + + + + Computes the model output for the given time. + + + The event time. + + The probabilities of the event occurring at the given time. + + + + + Computes the model's baseline survival function. This method + simply calls the + of the function. + + + The event time. + + The baseline survival function at the given time. + + + + + Computes the model output for the given input vector. + + + The input vector. + The event times. + + The probabilities of the event occurring at + the given times for the given observations. + + + + + Gets the Log-Hazard Ratio between two observations. + + + The first observation. + The second observation. + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Partial Log-Likelihood for the model. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the Partial Log-Likelihood for the model. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the Partial Log-Likelihood for the model. + + + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the Partial Log-Likelihood for the model. + + + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the 95% confidence interval for the + Hazard Ratio for a given coefficient. + + + + The coefficient's index. + + + + + + Gets the Wald Test for a given coefficient. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + Another Cox Proportional Hazards model. + + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + Creates a new Cox's Proportional Hazards that is a copy of the current instance. + + + + + + Gets the Hazard Ratio for a given coefficient. + + + + The hazard ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + The coefficient's index. + + + The Hazard Ratio for the given coefficient. + + + + + + Gets the mean vector used to center + observations before computations. + + + + + + Gets the coefficient vector, in which the + first value is always the intercept value. + + + + + + Gets the standard errors associated with each + coefficient during the model estimation phase. + + + + + + Gets the baseline hazard function, if specified. + + + + + + Gets the number of inputs handled by this model. + + + + + + Linear-Chain Conditional Random Field (CRF). + + + A conditional random field (CRF) is a type of discriminative undirected + probabilistic graphical model. It is most often used for labeling or parsing + of sequential data, such as natural language text or biological sequences + and computer vision. + + This implementation is currently experimental. + + + + + + Initializes a new instance of the class. + + + The number of states for the model. + The potential function to be used by the model. + + + + + Computes the partition function, as known as Z(x), + for the specified observations. + + + + + + Computes the Log of the partition function. + + + + + + Computes the log-likelihood of the model for the given observations. + This method is equivalent to the + method. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence probability for this model. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence log-likelihood for this model. + + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Loads a random field from a stream. + + + The stream from which the random field is to be deserialized. + + The deserialized random field. + + + + + Loads a random field from a file. + + + The path to the file from which the random field is to be deserialized. + + The deserialized random field. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Gets the number of states in this + linear-chain Conditional Random Field. + + + + + + Gets the potential function encompassing + all feature functions for this model. + + + + + + Common interface for Conditional Random Fields + feature functions + + + The type of the observations being modeled. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the feature for the given parameters. + + + The sequence of states. + The sequence of observations. + The output class label for the sequence. + + The result of the feature. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the potential function containing this feature. + + + + + + Base implementation for Conditional Random Fields + feature functions. + + + The type of the observations being modeled. + + + + + Creates a new feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + + + + + Computes the feature for the given parameters. + + + The sequence of states. + The sequence of observations. + The output class label for the sequence. + + The result of the feature. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Gets the potential function containing this feature. + + + + + + Gets the potential factor to which this feature belongs. + + + + + + State feature for Hidden Markov Model symbol emission probabilities. + + + + + + Constructs a new symbol emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The emission symbol. + The observation dimension this emission feature applies to. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State occupancy function for modeling continuous- + density Hidden Markov Model state emission features. + + + + + + + + Constructs a state occupancy feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The current state. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for second moment Gaussian emission probabilities. + + + + + + Constructs a new symbol emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The dimension of the multidimensional + observation this feature should respond to. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for first moment multivariate Gaussian emission probabilities. + + + + + + Constructs a new first moment emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The multivariate dimension to consider in the computation. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for second moment Gaussian emission probabilities. + + + + + + Constructs a new second moment emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for first moment Gaussian emission probabilities. + + + + + + Constructs a new first moment emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Edge feature for Hidden Markov Model state transition probabilities. + + + + + + Constructs a initial state transition feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The destination state. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for Hidden Markov Model output class symbol probabilities. + + + + + + Constructs a new output class symbol feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The emission symbol. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for Hidden Markov Model symbol emission probabilities. + + + + + + Constructs a new symbol emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The emission symbol. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Edge feature for Hidden Markov Model state transition probabilities. + + + + + + Constructs a state transition feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The originating state. + The destination state. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Forward-Backward algorithms for Conditional Random Fields. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + Computes Backward probabilities for a given potential function and a set of observations(no scaling). + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + Computes Backward probabilities for a given potential function and a set of observations(no scaling). + + + + + Common interface for gradient evaluators for + Hidden Conditional Random Fields . + + + + + + Computes the gradient using the + input/outputs stored in this object. + + + The value of the gradient vector for the given parameters. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood) using + the input/outputs stored in this object. + + + + + + Normal-density Markov Factor Potential (Clique Potential) function. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Multivariate Normal Markov Model Factor Potential (Clique Potential) function. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The number of dimensions for the multivariate observations. + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Discrete-density Markov Factor Potential (Clique Potential) function. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The number of symbols in the discrete alphabet. + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Gets the number of symbols in the discrete + alphabet used by this Markov model factor. + + + + + + Potential function modeling Hidden Markov Classifiers. + + + + + + Base implementation for potential functions. + + + The type of the observations modeled. + + + + + Computes the factor potential function for the given parameters. + + + A state sequence. + A sequence of observations. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Gets the factor potentials (also known as clique potentials) + functions composing this potential function. + + + + + + Gets the number of output classes assumed by this function. + + + + + + Gets or sets the set of weights for each feature function. + + + The weights for each of the feature functions. + + + + + Gets the feature functions composing this potential function. + + + + + + Common interface for CRF's Potential functions. + + + + + + Gets the feature vector for a given input and sequence of states. + + + + + + Gets the factor potentials (also known as clique potentials) + functions composing this potential function. + + + + + + Gets the number of output classes assumed by this function. + + + + + + Gets or sets the set of weights for each feature function. + + + The weights for each of the feature functions. + + + + + Gets the feature functions composing this potential function. + + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Potential function modeling Hidden Markov Models. + + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + True to include class features (priors), false otherwise. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + True to include class features (priors), false otherwise. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A normal density hidden Markov. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + True to include class features (priors), false otherwise. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the total number of dimensions for + this multivariate potential function. + + + + + + Potential function modeling Hidden Markov Models. + + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The number of states. + The number of symbols. + The number of output classes. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The classifier model. + True to include class features (priors), false otherwise. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The number of states. + The number of symbols. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The hidden Markov model. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the number of symbols assumed by this function. + + + + + + Hidden Conditional Random Field (HCRF). + + + + + Conditional random fields (CRFs) are a class of statistical modeling method often applied + in pattern recognition and machine learning, where they are used for structured prediction. + Whereas an ordinary classifier predicts a label for a single sample without regard to "neighboring" + samples, a CRF can take context into account; e.g., the linear chain CRF popular in natural + language processing predicts sequences of labels for sequences of input samples. + + + While Conditional Random Fields can be seen as a generalization of Markov models, Hidden + Conditional Random Fields can be seen as a generalization of Hidden Markov Model Classifiers. + The (linear-chain) Conditional Random Field is the discriminative counterpart of the Markov model. + An observable Markov Model assumes the sequences of states y to be visible, rather than hidden. + Thus they can be used in a different set of problems than the hidden Markov models. Those models + are often used for sequence component labeling, also known as part-of-sequence tagging. After a model + has been trained, they are mostly used to tag parts of a sequence using the Viterbi algorithm. + This is very handy to perform, for example, classification of parts of a speech utterance, such as + classifying phonemes inside an audio signal. + + + References: + + + C. Souza, Sequence Classifiers in C# - Part II: Hidden Conditional Random Fields. CodeProject. Available at: + http://www.codeproject.com/Articles/559535/Sequence-Classifiers-in-Csharp-Part-II-Hidden-Cond + + Chan, Tony F.; Golub, Gene H.; LeVeque, Randall J. (1983). Algorithms for + Computing the Sample Variance: Analysis and Recommendations. The American + Statistician 37, 242-247. + + + + + + In this example, we will create a sequence classifier using a hidden Markov + classifier. Afterwards, we will transform this Markov classifier into an + equivalent Hidden Conditional Random Field by choosing a suitable feature + function. + + + // Let's say we would like to do a very simple mechanism for + // gesture recognition. In this example, we will be trying to + // create a classifier that can distinguish between the words + // "hello", "car", and "wardrobe". + + // Let's say we decided to acquire some data, and we asked some + // people to perform those words in front of a Kinect camera, and, + // using Microsoft's SDK, we were able to captured the x and y + // coordinates of each hand while the word was being performed. + + // Let's say we decided to represent our frames as: + // + // double[] frame = { leftHandX, leftHandY, rightHandX, rightHandY }; + // + // Since we captured words, this means we captured sequences of + // frames as we described above. Let's write some of those as + // rough examples to explain how gesture recognition can be done: + + double[][] hello = + { + new double[] { 1.0, 0.1, 0.0, 0.0 }, // let's say the word + new double[] { 0.0, 1.0, 0.1, 0.1 }, // hello took 6 frames + new double[] { 0.0, 1.0, 0.1, 0.1 }, // to be recorded. + new double[] { 0.0, 0.0, 1.0, 0.0 }, + new double[] { 0.0, 0.0, 1.0, 0.0 }, + new double[] { 0.0, 0.0, 0.1, 1.1 }, + }; + + double[][] car = + { + new double[] { 0.0, 0.0, 0.0, 1.0 }, // the car word + new double[] { 0.1, 0.0, 1.0, 0.1 }, // took only 4. + new double[] { 0.0, 0.0, 0.1, 0.0 }, + new double[] { 1.0, 0.0, 0.0, 0.0 }, + }; + + double[][] wardrobe = + { + new double[] { 0.0, 0.0, 1.0, 0.0 }, // same for the + new double[] { 0.1, 0.0, 1.0, 0.1 }, // wardrobe word. + new double[] { 0.0, 0.1, 1.0, 0.0 }, + new double[] { 0.1, 0.0, 1.0, 0.1 }, + }; + + // Here, please note that a real-world example would involve *lots* + // of samples for each word. Here, we are considering just one from + // each class which is clearly sub-optimal and should _never_ be done + // on practice. For example purposes, however, please disregard this. + + // Those are the words we have in our vocabulary: + // + double[][][] words = { hello, car, wardrobe }; + + // Now, let's associate integer labels with them. This is needed + // for the case where there are multiple samples for each word. + // + int[] labels = { 0, 1, 2 }; + + + // We will create our classifiers assuming an independent + // Gaussian distribution for each component in our feature + // vectors (like assuming a Naive Bayes assumption). + + var initial = new Independent<NormalDistribution> + ( + new NormalDistribution(0, 1), + new NormalDistribution(0, 1), + new NormalDistribution(0, 1), + new NormalDistribution(0, 1) + ); + + + // Now, we can proceed and create our classifier. + // + int numberOfWords = 3; // we are trying to distinguish between 3 words + int numberOfStates = 5; // this value can be found by trial-and-error + + var hmm = new HiddenMarkovClassifier<Independent<NormalDistribution>> + ( + classes: numberOfWords, + topology: new Forward(numberOfStates), // word classifiers should use a forward topology + initial: initial + ); + + // Create a new learning algorithm to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning<Independent<NormalDistribution>>(hmm, + + // Train each model until the log-likelihood changes less than 0.001 + modelIndex => new BaumWelchLearning<Independent<NormalDistribution>>(hmm.Models[modelIndex]) + { + Tolerance = 0.001, + Iterations = 100, + + // This is necessary so the code doesn't blow up when it realize + // there is only one sample per word class. But this could also be + // needed in normal situations as well. + // + FittingOptions = new IndependentOptions() + { + InnerOption = new NormalOptions() { Regularization = 1e-5 } + } + } + ); + + // Finally, we can run the learning algorithm! + double logLikelihood = teacher.Run(words, labels); + + // At this point, the classifier should be successfully + // able to distinguish between our three word classes: + // + int tc1 = hmm.Compute(hello); // should be 0 + int tc2 = hmm.Compute(car); // should be 1 + int tc3 = hmm.Compute(wardrobe); // should be 2 + + + // Now, we can use the Markov classifier to initialize a HCRF + var function = new MarkovMultivariateFunction(hmm); + var hcrf = new HiddenConditionalRandomField<double[]>(function); + + // We can check that both are equivalent, although they have + // formulations that can be learned with different methods + // + for (int i = 0; i < words.Length; i++) + { + // Should be the same + int expected = hmm.Compute(words[i]); + int actual = hcrf.Compute(words[i]); + + // Should be the same + double h0 = hmm.LogLikelihood(words[i], 0); + double c0 = hcrf.LogLikelihood(words[i], 0); + + double h1 = hmm.LogLikelihood(words[i], 1); + double c1 = hcrf.LogLikelihood(words[i], 1); + + double h2 = hmm.LogLikelihood(words[i], 2); + double c2 = hcrf.LogLikelihood(words[i], 2); + } + + + // Now we can learn the HCRF using one of the best learning + // algorithms available, Resilient Backpropagation learning: + + // Create a learning algorithm + var rprop = new HiddenResilientGradientLearning<double[]>(hcrf) + { + Iterations = 50, + Tolerance = 1e-5 + }; + + // Run the algorithm and learn the models + double error = rprop.Run(words, labels); + + // At this point, the HCRF should be successfully + // able to distinguish between our three word classes: + // + int hc1 = hcrf.Compute(hello); // Should be 0 + int hc2 = hcrf.Compute(car); // Should be 1 + int hc3 = hcrf.Compute(wardrobe); // Should be 2 + + + + In order to see how this HCRF can be trained to the data, please take a look + at the page. Resilient Propagation + is one of the best algorithms for HCRF training. + + + The type of the observations modeled by the field. + + + + + + + Initializes a new instance of the class. + + + The potential function to be used by the model. + + + + + Computes the most likely output for the given observations. + + + + + + Computes the most likely output for the given observations. + + + + + + Computes the most likely output for the given observations. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence probability for this model. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence probability for this model. + + + + + + Computes the log-likelihood that the given + observations belong to the desired output. + + + + + + Computes the log-likelihood that the given + observations belong to the desired output. + + + + + + Computes the log-likelihood that the given + observations belong to the desired outputs. + + + + + + Computes the log-likelihood that the given + observations belong to the desired outputs. + + + + + + Computes the partition function Z(x,y). + + + + + + Computes the log-partition function ln Z(x,y). + + + + + + Computes the partition function Z(x). + + + + + + Computes the log-partition function ln Z(x). + + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Loads a random field from a stream. + + + The stream from which the random field is to be deserialized. + + The deserialized random field. + + + + + Loads a random field from a file. + + + The path to the file from which the random field is to be deserialized. + + The deserialized random field. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the number of outputs assumed by the model. + + + + + + Gets the potential function encompassing + all feature functions for this model. + + + + + + Linear Gradient calculator class for + Hidden Conditional Random Fields. + + + The type of the observations being modeled. + + + + + Initializes a new instance of the class. + + + The model to be trained. + + + + + Computes the gradient (vector of derivatives) vector for + the cost function, which may be used to guide optimization. + + + The parameter vector lambda to use in the model. + The inputs to compute the cost function. + The respective outputs to compute the cost function. + The value of the gradient vector for the given parameters. + + + + + Computes the gradient (vector of derivatives) vector for + the cost function, which may be used to guide optimization. + + + The parameter vector lambda to use in the model. + The inputs to compute the cost function. + The respective outputs to compute the cost function. + The value of the gradient vector for the given parameters. + + + + + Computes the gradient using the + input/outputs stored in this object. + + + The parameter vector lambda to use in the model. + The value of the gradient vector for the given parameters. + + + + + Computes the gradient using the + input/outputs stored in this object. + + + The value of the gradient vector for the given parameters. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood). + + + The parameter vector lambda to use in the model. + The inputs to compute the cost function. + The respective outputs to compute the cost function. + The value of the objective function for the given parameters. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood) using + the input/outputs stored in this object. + + + The parameter vector lambda to use in the model. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood) using + the input/outputs stored in this object. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the inputs to be used in the next + call to the Objective or Gradient functions. + + + + + + Gets or sets the outputs to be used in the next + call to the Objective or Gradient functions. + + + + + + Gets or sets the current parameter + vector for the model being learned. + + + + + + Gets the error computed in the last call + to the gradient or objective functions. + + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Gets the model being trained. + + + + + + Common interface for Hidden Conditional Random Fields learning algorithms. + + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation labels. + + The error in the last iteration. + + + + + Runs one iteration of learning algorithm with the specified + input training observations and corresponding output labels. + + + The training observations. + The observations' labels. + + The error in the last iteration. + + + + + Runs the learning algorithm with the specified input + training observation and corresponding output label + until convergence. + + + The training observations. + The observations' labels. + + The error in the last iteration. + + + + + Common interface for Conditional Random Fields learning algorithms. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Conjugate Gradient learning algorithm for + Hidden Conditional Hidden Fields. + + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + + + + + Constructs a new Conjugate Gradient learning algorithm. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Online learning is not supported. + + + + + + Online learning is not supported. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the model being trained. + + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Gets whether the model has converged + or if the line search has failed. + + + + + + Gets the total number of iterations performed + by the conjugate gradient algorithm. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Occurs when the current learning progress has changed. + + + + + + Quasi-Newton (L-BFGS) learning algorithm for + Hidden Conditional Hidden Fields. + + + The type of the observations. + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + + + + + + Constructs a new L-BFGS learning algorithm. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Online learning is not supported. + + + + + + Online learning is not supported. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the model being trained. + + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Quasi-Newton (L-BFGS) learning algorithm for + Conditional Hidden Fields. + + + + + + Constructs a new L-BFGS learning algorithm. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Stochastic Gradient Descent learning algorithm for + Hidden Conditional Hidden Fields. + + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + The type of the observations. + + + + + + + Initializes a new instance of the class. + + + The model to be trained. + + + + + Resets the step size. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the learning rate to use as the gradient + descent step size. Default value is 1e-1. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Gets or sets a value indicating whether this + should use stochastic gradient updates. + + + true for stochastic updates; otherwise, false. + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Gets or sets the model being trained. + + + + + + Occurs when the current learning progress has changed. + + + + + + Identity link function. + + + + + The identity link function is associated with the + Normal distribution. + + + Link functions can be used in many models, such as in + and Support + Vector Machines. + + + + + + + + + Creates a new Identity link function. + + + The variance value. + The mean value. + + + + + Creates a new Identity link function. + + + + + + The Identity link function. + + + An input value. + + The transformed input value. + + + The Identity link function is given by f(x) = (x - A) / B. + + + + + + The mean function. + + + A transformed value. + + The reverse transformed value. + + + The inverse Identity link function is given by g(x) = B * x + A. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the identity link + function is given by f'(x) = B. + + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the identity link function + in terms of y = f(x) is given by f'(y) = B. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Logit link function. + + + + The Logit link function is associated with the + Binomial and + Multinomial distributions. + + + + + + Creates a new Logit link function. + + + The beta value. Default is 1. + The constant value. Default is 0. + + + + + Initializes a new instance of the class. + + + + + + The Logit link function. + + + An input value. + + The transformed input value. + + + The inverse Logit link function is given by + f(x) = (Math.Log(x / (1.0 - x)) - A) / B. + + + + + + The Logit mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + The inverse Logit link function is given by + g(x) = 1.0 / (1.0 + Math.Exp(-z) in + which z = B * x + A. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the identity link + function is given by f'(x) = y * (1.0 - y) + where y = f(x) is the + Logit function. + + + + + + First derivative of the mean function + expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the Logit link function + in terms of y = f(x) is given by y * (1.0 - y). + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Inverse link function. + + + + The inverse link function is associated with the + Exponential and + Gamma distributions. + + + + + + Creates a new Inverse link function. + + + The alpha value. + The constant value. + + + + + Creates a new Inverse link function. + + + + + + The Inverse link function. + + + An input value. + + The transformed input value. + + + + + The Inverse mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Resilient Gradient Learning. + + + The type of the observations being modeled. + + + + // Suppose we would like to learn how to classify the + // following set of sequences among three class labels: + + int[][] inputSequences = + { + // First class of sequences: starts and + // ends with zeros, ones in the middle: + new[] { 0, 1, 1, 1, 0 }, + new[] { 0, 0, 1, 1, 0, 0 }, + new[] { 0, 1, 1, 1, 1, 0 }, + + // Second class of sequences: starts with + // twos and switches to ones until the end. + new[] { 2, 2, 2, 2, 1, 1, 1, 1, 1 }, + new[] { 2, 2, 1, 2, 1, 1, 1, 1, 1 }, + new[] { 2, 2, 2, 2, 2, 1, 1, 1, 1 }, + + // Third class of sequences: can start + // with any symbols, but ends with three. + new[] { 0, 0, 1, 1, 3, 3, 3, 3 }, + new[] { 0, 0, 0, 3, 3, 3, 3 }, + new[] { 1, 0, 1, 2, 2, 2, 3, 3 }, + new[] { 1, 1, 2, 3, 3, 3, 3 }, + new[] { 0, 0, 1, 1, 3, 3, 3, 3 }, + new[] { 2, 2, 0, 3, 3, 3, 3 }, + new[] { 1, 0, 1, 2, 3, 3, 3, 3 }, + new[] { 1, 1, 2, 3, 3, 3, 3 }, + }; + + // Now consider their respective class labels + int[] outputLabels = + { + /* Sequences 1-3 are from class 0: */ 0, 0, 0, + /* Sequences 4-6 are from class 1: */ 1, 1, 1, + /* Sequences 7-14 are from class 2: */ 2, 2, 2, 2, 2, 2, 2, 2 + }; + + + // Create the Hidden Conditional Random Field using a set of discrete features + var function = new MarkovDiscreteFunction(states: 3, symbols: 4, outputClasses: 3); + var classifier = new HiddenConditionalRandomField<int>(function); + + // Create a learning algorithm + var teacher = new HiddenResilientGradientLearning<int>(classifier) + { + Iterations = 50 + }; + + // Run the algorithm and learn the models + teacher.Run(inputSequences, outputLabels); + + + // After training has finished, we can check the + // output classification label for some sequences. + + int y1 = classifier.Compute(new[] { 0, 1, 1, 1, 0 }); // output is y1 = 0 + int y2 = classifier.Compute(new[] { 0, 0, 1, 1, 0, 0 }); // output is y1 = 0 + + int y3 = classifier.Compute(new[] { 2, 2, 2, 2, 1, 1 }); // output is y2 = 1 + int y4 = classifier.Compute(new[] { 2, 2, 1, 1 }); // output is y2 = 1 + + int y5 = classifier.Compute(new[] { 0, 0, 1, 3, 3, 3 }); // output is y3 = 2 + int y6 = classifier.Compute(new[] { 2, 0, 2, 2, 3, 3 }); // output is y3 = 2 + + + + + + + Initializes a new instance of the class. + + + Model to teach. + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Resets the current update steps using the given learning rate. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the model being trained. + + + + + + Gets or sets a value indicating whether this + should use stochastic gradient updates. Default is true. + + + true for stochastic updates; otherwise, false. + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Occurs when the current learning progress has changed. + + + + + + Gets or sets the maximum possible update step, + also referred as delta min. Default is 50. + + + + + + Gets or sets the minimum possible update step, + also referred as delta max. Default is 1e-6. + + + + + + Gets the decrease parameter, also + referred as eta minus. Default is 0.5. + + + + + + Gets the increase parameter, also + referred as eta plus. Default is 1.2. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Maximum Likelihood learning algorithm for discrete-density Hidden Markov Models. + + + + + The maximum likelihood estimate is a + supervised learning algorithm. It considers both the sequence + of observations as well as the sequence of states in the Markov model + are visible and thus during training. + + + Often, the Maximum Likelihood Estimate can be used to give a starting + point to a unsupervised algorithm, making possible to use semi-supervised + techniques with HMMs. It is possible, for example, to use MLE to guess + initial values for an HMM given a small set of manually labeled labels, + and then further estimate this model using the + Viterbi learning algorithm. + + + + + The following example comes from Prof. Yechiam Yemini slides on Hidden Markov + Models, available at http://www.cs.columbia.edu/4761/notes07/chapter4.3-HMM.pdf. + In this example, we will be specifying both the sequence of observations and + the sequence of states assigned to each observation in each sequence to learn + our Markov model. + + + // Those are the observation sequences. Each sequence contains a variable number + // of observation (although in this example they have all the same length, this + // is just a coincidence and not something required). + + int[][] observations = + { + new int[] { 0,0,0,1,0,0 }, + new int[] { 1,0,0,1,0,0 }, + new int[] { 0,0,1,0,0,0 }, + new int[] { 0,0,0,0,1,0 }, + new int[] { 1,0,0,0,1,0 }, + new int[] { 0,0,0,1,1,0 }, + new int[] { 1,0,0,0,0,0 }, + new int[] { 1,0,1,0,0,0 }, + }; + + // Now those are the visible states associated with each observation in each + // observation sequence above. Note that there is always one state assigned + // to each observation, so the lengths of the sequence of observations and + // the sequence of states must always match. + + int[][] paths = + { + new int[] { 0,0,1,0,1,0 }, + new int[] { 1,0,1,0,1,0 }, + new int[] { 1,0,0,1,1,0 }, + new int[] { 1,0,1,1,1,0 }, + new int[] { 1,0,0,1,0,1 }, + new int[] { 0,0,1,0,0,1 }, + new int[] { 0,0,1,1,0,1 }, + new int[] { 0,1,1,1,0,0 }, + }; + + // Since the observation sequences are composed of discrete symbols, we can specify + // a GeneralDiscreteDistribution to simulate a standard discrete HiddenMarkovModel. + var initial = new GeneralDiscreteDistribution(symbols: 2); + + // Create our Markov model with two states (0, 1) and two symbols (0, 1) + HiddenMarkovModel model = new HiddenMarkovModel<(states: 2, symbols: 2); + + // Now we can create our learning algorithm + MaximumLikelihoodLearning teacher = new MaximumLikelihoodLearning(model) + { + // Set some options + UseLaplaceRule = false + }; + + // and finally learn a model using the algorithm + double logLikelihood = teacher.Run(observations, paths); + + + // To check what has been learned, we can extract the emission + // and transition matrices, as well as the initial probability + // vector from the HMM to compare against expected values: + + var pi = Matrix.Exp(model.Probabilities); // { 0.5, 0.5 } + var A = Matrix.Exp(model.Transitions); // { { 7/20, 13/20 }, { 14/20, 6/20 } } + var B = Matrix.Exp(model.Emissions); // { { 17/25, 8/25 }, { 19/23, 4/23 } } + + + + + + + + + + + Common interface for supervised learning algorithms for + hidden Markov models such as the + Maximum Likelihood (MLE) learning algorithm. + + + + + In the context of hidden Markov models, + supervised algorithms are algorithms which consider that both the sequence + of observations and the sequence of states are visible (or known) during + training. This is in contrast with + unsupervised learning algorithms such as the + Baum-Welch, which consider that the sequence of states is hidden. + + + + + + + + + + Runs the learning algorithm. + + + + Supervised learning problem. Given some training observation sequences + O = {o1, o2, ..., oK} and sequence of hidden states H = {h1, h2, ..., hK} + and general structure of HMM (numbers of hidden and visible states), + determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Creates a new instance of the Maximum Likelihood learning algorithm. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Gets the model being trained. + + + + + + Gets or sets whether the emission fitting algorithm should + present weighted samples or simply the clustered samples to + the density estimation + methods. + + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Gets or sets the distribution fitting options + to use when estimating distribution densities + during learning. + + The distribution fitting options. + + + + + Maximum Likelihood learning algorithm for + discrete-density Hidden Markov Models. + + + + + The maximum likelihood estimate is a + supervised learning algorithm. It considers both the sequence + of observations as well as the sequence of states in the Markov model + are visible and thus during training. + + + Often, the Maximum Likelihood Estimate can be used to give a starting + point to a unsupervised algorithm, making possible to use semi-supervised + techniques with HMMs. It is possible, for example, to use MLE to guess + initial values for an HMM given a small set of manually labeled labels, + and then further estimate this model using the + Viterbi learning algorithm. + + + + + The following example comes from Prof. Yechiam Yemini slides on Hidden Markov + Models, available at http://www.cs.columbia.edu/4761/notes07/chapter4.3-HMM.pdf. + In this example, we will be specifying both the sequence of observations and + the sequence of states assigned to each observation in each sequence to learn + our Markov model. + + + // Those are the observation sequences. Each sequence contains a variable number + // of observation (although in this example they have all the same length, this + // is just a coincidence and not something required). + + int[][] observations = + { + new int[] { 0,0,0,1,0,0 }, + new int[] { 1,0,0,1,0,0 }, + new int[] { 0,0,1,0,0,0 }, + new int[] { 0,0,0,0,1,0 }, + new int[] { 1,0,0,0,1,0 }, + new int[] { 0,0,0,1,1,0 }, + new int[] { 1,0,0,0,0,0 }, + new int[] { 1,0,1,0,0,0 }, + }; + + // Now those are the visible states associated with each observation in each + // observation sequence above. Note that there is always one state assigned + // to each observation, so the lengths of the sequence of observations and + // the sequence of states must always match. + + int[][] paths = + { + new int[] { 0,0,1,0,1,0 }, + new int[] { 1,0,1,0,1,0 }, + new int[] { 1,0,0,1,1,0 }, + new int[] { 1,0,1,1,1,0 }, + new int[] { 1,0,0,1,0,1 }, + new int[] { 0,0,1,0,0,1 }, + new int[] { 0,0,1,1,0,1 }, + new int[] { 0,1,1,1,0,0 }, + }; + + // Create our Markov model with two states (0, 1) and two symbols (0, 1) + HiddenMarkovModel model = new HiddenMarkovModel(states: 2, symbols: 2); + + // Now we can create our learning algorithm + MaximumLikelihoodLearning teacher = new MaximumLikelihoodLearning(model) + { + // Set some options + UseLaplaceRule = false + }; + + // and finally learn a model using the algorithm + double logLikelihood = teacher.Run(observations, paths); + + + // To check what has been learned, we can extract the emission + // and transition matrices, as well as the initial probability + // vector from the HMM to compare against expected values: + + var pi = Matrix.Exp(model.Probabilities); // { 0.5, 0.5 } + var A = Matrix.Exp(model.Transitions); // { { 7/20, 13/20 }, { 14/20, 6/20 } } + var B = Matrix.Exp(model.Emissions); // { { 17/25, 8/25 }, { 19/23, 4/23 } } + + + + + + + + + + + Creates a new instance of the Maximum Likelihood learning algorithm. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Gets the model being trained. + + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Viterbi learning algorithm. + + + + + The Viterbi learning algorithm is an alternate learning algorithms + for hidden Markov models. It works by obtaining the Viterbi path + for the set of training observation sequences and then computing + the maximum likelihood estimates for the model parameters. Those + operations are repeated iteratively until model convergence. + + + The Viterbi learning algorithm is also known as the Segmental K-Means + algorithm. + + + + + + + + + + Creates a new instance of the Viterbi learning algorithm. + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs one single epoch (iteration) of the learning algorithm. + + + The observation sequences. + A vector to be populated with the decoded Viterbi sequences. + + + + + Computes the log-likelihood for the current model for the given observations. + + + The observation vectors. + + The log-likelihood of the observations belonging to the model. + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Gets the model being trained. + + + + + + Gets or sets the distribution fitting options + to use when estimating distribution densities + during learning. + + The distribution fitting options. + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + When this property is set, it will only affect the estimation + of the transition and initial state probabilities. To control + the estimation of the emission probabilities, please use the + corresponding property. + + + + + + Viterbi learning algorithm. + + + + + The Viterbi learning algorithm is an alternate learning algorithms + for hidden Markov models. It works by obtaining the Viterbi path + for the set of training observation sequences and then computing + the maximum likelihood estimates for the model parameters. Those + operations are repeated iteratively until model convergence. + + + The Viterbi learning algorithm is also known as the Segmental K-Means + algorithm. + + + + + + + + + + Creates a new instance of the Viterbi learning algorithm. + + + + + + Runs one single epoch (iteration) of the learning algorithm. + + + The observation sequences. + A vector to be populated with the decoded Viterbi sequences. + + + + + Computes the log-likelihood for the current model for the given observations. + + + The observation vectors. + + The log-likelihood of the observations belonging to the model. + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Gets the model being trained. + + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Common interface for multiple regression fitting methods. + + + + + + Runs the fitting algorithm. + + + The input training data. + The output associated with each of the outputs. + + The error. + + + + + Common interface for regression fitting methods. + + + + + + Runs the fitting algorithm. + + + The input training data. + The time until the output happened. + The indication variables used to signal + if the event occurred or if it was censored. + + The error. + + + + + Runs the fitting algorithm. + + + The input training data. + The time until the output happened. + The indication variables used to signal + if the event occurred or if it was censored. + + The error. + + + + + Iterative Reweighted Least Squares for Logistic Regression fitting. + + + + + The Iterative Reweighted Least Squares is an iterative technique based + on the Newton-Raphson iterative optimization scheme. The IRLS method uses + a local quadratic approximation to the log-likelihood function. + + By applying the Newton-Raphson optimization scheme to the cross-entropy + error function (defined as the negative logarithm of the likelihood), one + arises at a weighted formulation for the Hessian matrix. + + + The Iterative Reweighted Least Squares algorithm can also be used to learn + arbitrary generalized linear models. However, the use of this class to learn + such models is currently experimental. + + + + References: + + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Amos Storkey. (2005). Learning from Data: Learning Logistic Regressors. School of Informatics. + Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + Cosma Shalizi. (2009). Logistic Regression and Newton's Method. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + Edward F. Conor. Logistic Regression. Website. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (This is completely fictional data). + double[][] input = + { + new double[] { 55, 0 }, // 0 - no cancer + new double[] { 28, 0 }, // 0 + new double[] { 65, 1 }, // 0 + new double[] { 46, 0 }, // 1 - have cancer + new double[] { 86, 1 }, // 1 + new double[] { 56, 1 }, // 1 + new double[] { 85, 0 }, // 0 + new double[] { 33, 0 }, // 0 + new double[] { 21, 1 }, // 0 + new double[] { 42, 1 }, // 1 + }; + + // We also know if they have had lung cancer or not, and + // we would like to know whether smoking has any connection + // with lung cancer (This is completely fictional data). + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + + // To verify this hypothesis, we are going to create a logistic + // regression model for those two inputs (age and smoking). + LogisticRegression regression = new LogisticRegression(inputs: 2); + + // Next, we are going to estimate this model. For this, we + // will use the Iteratively Reweighted Least Squares method. + var teacher = new IterativeReweightedLeastSquares(regression); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta = 0; + do + { + // Perform an iteration + delta = teacher.Run(input, output); + + } while (delta > 0.001); + + // At this point, we can compute the odds ratio of our variables. + // In the model, the variable at 0 is always the intercept term, + // with the other following in the sequence. Index 1 is the age + // and index 2 is whether the patient smokes or not. + + // For the age variable, we have that individuals with + // higher age have 1.021 greater odds of getting lung + // cancer controlling for cigarette smoking. + double ageOdds = regression.GetOddsRatio(1); // 1.0208597028836701 + + // For the smoking/non smoking category variable, however, we + // have that individuals who smoke have 5.858 greater odds + // of developing lung cancer compared to those who do not + // smoke, controlling for age (remember, this is completely + // fictional and for demonstration purposes only). + double smokeOdds = regression.GetOddsRatio(2); // 5.8584748789881331 + + + + + + + Constructs a new Iterative Reweighted Least Squares. + + + The regression to estimate. + + + + + Constructs a new Iterative Reweighted Least Squares. + + + The regression to estimate. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + An weight associated with each sample. + + The maximum relative change in the parameters after the iteration. + + + + + Computes the sum-of-squared error between the + model outputs and the expected outputs. + + + The input data set. + The output values. + + The sum-of-squared errors. + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets the Hessian matrix computed in + the last Newton-Raphson iteration. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets a value indicating whether standard + errors should be computed in the next iteration. + + + true to compute standard errors; otherwise, false. + + + + + + Gets or sets the regularization value to be + added in the objective function. Default is + 1e-10. + + + + + + Lower-Bound Newton-Raphson for Multinomial logistic regression fitting. + + + + + The Lower Bound principle consists of replacing the second derivative + matrix by a global lower bound in the Leowner ordering [Böhning, 92]. + In the case of multinomial logistic regression estimation, the Hessian + of the negative log-likelihood function can be replaced by one of those + lower bounds, leading to a monotonically converging sequence of iterates. + Furthermore, [Krishnapuram, Carin, Figueiredo and Hartemink, 2005] also + have shown that a lower bound can be achieved which does not depend on + the coefficients for the current iteration. + + + References: + + + B. Krishnapuram, L. Carin, M.A.T. Figueiredo, A. Hartemink. Sparse Multinomial + Logistic Regression: Fast Algorithms and Generalization Bounds. 2005. Available on: + http://www.lx.it.pt/~mtf/Krishnapuram_Carin_Figueiredo_Hartemink_2005.pdf + + D. Böhning. Multinomial logistic regression algorithm. Annals of the Institute + of Statistical Mathematics, 44(9):197 ˝U200, 1992. 2. M. Corney. + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + + + + + // Create a new Multinomial Logistic Regression for 3 categories + var mlr = new MultinomialLogisticRegression(inputs: 2, categories: 3); + + // Create a estimation algorithm to estimate the regression + LowerBoundNewtonRaphson lbnr = new LowerBoundNewtonRaphson(mlr); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta; + int iteration = 0; + + do + { + // Perform an iteration + delta = lbnr.Run(inputs, outputs); + iteration++; + + } while (iteration < 100 && delta > 1e-6); + + + + + + + Creates a new . + + The regression to estimate. + + + + + Runs one iteration of the Lower-Bound Newton-Raphson iteration. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Lower-Bound Newton-Raphson iteration. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets or sets a value indicating whether the + lower bound should be updated using new data. + + + + true if the lower bound should be + updated; otherwise, false. + + + + + Gets the Lower-Bound matrix being used in place of + the Hessian matrix in the Newton-Raphson iterations. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets a value indicating whether standard + errors should be computed in the next iteration. + + + true to compute standard errors; otherwise, false. + + + + + + Nominal Multinomial Logistic Regression. + + + + + // Create a new Multinomial Logistic Regression for 3 categories + var mlr = new MultinomialLogisticRegression(inputs: 2, categories: 3); + + // Create a estimation algorithm to estimate the regression + LowerBoundNewtonRaphson lbnr = new LowerBoundNewtonRaphson(mlr); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta; + int iteration = 0; + + do + { + // Perform an iteration + delta = lbnr.Run(inputs, outputs); + iteration++; + + } while (iteration < 100 && delta > 1e-6); + + + + + + + Creates a new Multinomial Logistic Regression Model. + + + The number of input variables for the model. + The number of categories for the model. + + + + + Creates a new Multinomial Logistic Regression Model. + + + The number of input variables for the model. + The number of categories for the model. + The initial values for the intercepts. + + + + + Computes the model output for the given input vector. + + + + The first category is always considered the baseline category. + + + The input vector. + + The output value. + + + + + Computes the model outputs for the given input vectors. + + + + The first category is always considered the baseline category. + + + The input vector. + + The output value. + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + Gets the 95% confidence interval for the Odds Ratio for a given coefficient. + + + The category's index. + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the 95% confidence intervals for the Odds Ratios for all coefficients. + + + The category's index. + + + + + Gets the Odds Ratio for a given coefficient. + + + + The odds ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + The category index. + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + The Odds Ratio for the given coefficient. + + + + + + Gets the Odds Ratio for all coefficients. + + + + The odds ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + The category index. + + + The Odds Ratio for the given coefficient. + + + + + + Gets the Wald Test for a given coefficient. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + The category index. + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Wald Test for all coefficients. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + The category's index. + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Log-Likelihood for the model. + + + A set of input data. + A set of output data. + + The Log-Likelihood (a measure of performance) of + the model calculated over the given data sets. + + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + A set of output data. + Another Logistic Regression model. + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + Creates a new MultinomialLogisticRegression that is a copy of the current instance. + + + + + + Gets the coefficient vectors, in which the + first columns are always the intercept values. + + + + + + Gets the standard errors associated with each + coefficient during the model estimation phase. + + + + + + Gets the number of categories of the model. + + + + + + Gets the number of inputs of the model. + + + + + Base class for Hidden Markov Models. This class cannot + be instantiated. + + + + + + Constructs a new Hidden Markov Model. + + + + + + Gets the number of states of this model. + + + + + + Gets the log-initial probabilities log(pi) for this model. + + + + + + Gets the log-transition matrix log(A) for this model. + + + + + + Gets or sets a user-defined tag associated with this model. + + + + + + Base class for (HMM) Sequence Classifiers. + This class cannot be instantiated. + + + + + + Initializes a new instance of the class. + + The number of classes in the classification problem. + + + + + Initializes a new instance of the class. + + The models specializing in each of the classes of the classification problem. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probability of the assigned class. + + Return the label of the given sequence, or -1 if it has + been rejected by the threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probabilities for each class. + + Return the label of the given sequence, or -1 if it has + been rejected by the threshold model. + + + + + Computes the log-likelihood that a sequence + belongs to a given class according to this + classifier. + + The sequence of observations. + The output class label. + + The log-likelihood of the sequence belonging to the given class. + + + + + Computes the log-likelihood that a sequence + belongs any of the classes in the classifier. + + The sequence of observations. + + The log-likelihood of the sequence belonging to the classifier. + + + + + Computes the log-likelihood of a set of sequences + belonging to their given respective classes according + to this classifier. + + A set of sequences of observations. + The output class label for each sequence. + + The log-likelihood of the sequences belonging to the given classes. + + + + + Returns an enumerator that iterates through the models in the classifier. + + + + A that + can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the models in the classifier. + + + + A that + can be used to iterate through the collection. + + + + + + Gets or sets the threshold model. + + + + + For gesture spotting, Lee and Kim introduced a threshold model which is + composed of parts of the models in a hidden Markov sequence classifier. + + The threshold model acts as a baseline for decision rejection. If none of + the classifiers is able to produce a higher likelihood than the threshold + model, the decision is rejected. + + In the original Lee and Kim publication, the threshold model is constructed + by creating a fully connected ergodic model by removing all outgoing transitions + of states in all gesture models and fully connecting those states. + + References: + + + H. Lee, J. Kim, An HMM-based threshold model approach for gesture + recognition, IEEE Trans. Pattern Anal. Mach. Intell. 21 (10) (1999) + 961–973. + + + + + + + Gets or sets a value governing the rejection given by + a threshold model (if present). Increasing this value + will result in higher rejection rates. Default is 1. + + + + + + Gets the collection of models specialized in each + class of the sequence classification problem. + + + + + + Gets the Hidden Markov + Model implementation responsible for recognizing + each of the classes given the desired class label. + + The class label of the model to get. + + + + + Gets the number of classes which can be recognized by this classifier. + + + + + + Gets the prior distribution assumed for the classes. + + + + + + Common interface for sequence classifiers using + hidden Markov models. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected. + + + + + Gets the number of classes which can be recognized by this classifier. + + + + + + Arbitrary-density Hidden Markov Model. + + + + + Hidden Markov Models (HMM) are stochastic methods to model temporal and sequence + data. They are especially known for their application in temporal pattern recognition + such as speech, handwriting, gesture recognition, part-of-speech tagging, musical + score following, partial discharges and bioinformatics. + + + This page refers to the arbitrary-density (continuous emission distributions) version + of the model. For discrete distributions, please see . + + + + Dynamical systems of discrete nature assumed to be governed by a Markov chain emits + a sequence of observable outputs. Under the Markov assumption, it is also assumed that + the latest output depends only on the current state of the system. Such states are often + not known from the observer when only the output values are observable. + + + Hidden Markov Models attempt to model such systems and allow, among other things, + + + To infer the most likely sequence of states that produced a given output sequence, + + Infer which will be the most likely next state (and thus predicting the next output), + + Calculate the probability that a given sequence of outputs originated from the system + (allowing the use of hidden Markov models for sequence classification). + + + + The “hidden” in Hidden Markov Models comes from the fact that the observer does not + know in which state the system may be in, but has only a probabilistic insight on where + it should be. + + + The arbitrary-density Hidden Markov Model uses any probability density function (such + as Gaussian + Mixture Model) for + computing the state probability. In other words, in a continuous HMM the matrix of emission + probabilities B is replaced by an array of either discrete or continuous probability density + functions. + + + If a general + discrete distribution is used as the underlying probability density function, the + model becomes equivalent to the discrete Hidden Markov Model. + + + + For a more thorough explanation on some fundamentals on how Hidden Markov Models work, + please see the documentation page. To learn a Markov + model, you can find a list of both supervised and + unsupervised learning algorithms in the + namespace. + + + References: + + + Wikipedia contributors. "Linear regression." Wikipedia, the Free Encyclopedia. + Available at: http://en.wikipedia.org/wiki/Hidden_Markov_model + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + + + + The example below reproduces the same example given in the Wikipedia + entry for the Viterbi algorithm (http://en.wikipedia.org/wiki/Viterbi_algorithm). + As an arbitrary density model, one can use it with any available + probability distributions, including with a discrete probability. In the + following example, the generic model is used with a + to reproduce the same example given in . + Below, the model's parameters are initialized manually. However, it is possible to learn + those automatically using . + + + // Create the transition matrix A + double[,] transitions = + { + { 0.7, 0.3 }, + { 0.4, 0.6 } + }; + + // Create the vector of emission densities B + GeneralDiscreteDistribution[] emissions = + { + new GeneralDiscreteDistribution(0.1, 0.4, 0.5), + new GeneralDiscreteDistribution(0.6, 0.3, 0.1) + }; + + // Create the initial probabilities pi + double[] initial = + { + 0.6, 0.4 + }; + + // Create a new hidden Markov model with discrete probabilities + var hmm = new HiddenMarkovModel<GeneralDiscreteDistribution>(transitions, emissions, initial); + + // After that, one could, for example, query the probability + // of a sequence occurring. We will consider the sequence + double[] sequence = new double[] { 0, 1, 2 }; + + // And now we will evaluate its likelihood + double logLikelihood = hmm.Evaluate(sequence); + + // At this point, the log-likelihood of the sequence + // occurring within the model is -3.3928721329161653. + + // We can also get the Viterbi path of the sequence + int[] path = hmm.Decode(sequence, out logLikelihood); + + // At this point, the state path will be 1-0-0 and the + // log-likelihood will be -4.3095199438871337 + + + + Baum-Welch, one of the most famous + learning algorithms for Hidden Markov Models. + Discrete-density Hidden Markov Model + + + + + + Common interface for Hidden Markov Models. + + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The state optimized probability. + + The sequence of states that most likely produced the sequence. + + + + + + Calculates the probability that this model has generated the given sequence. + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + Forward algorithm. + + A sequence of observations. + + The probability that the given sequence has been generated by this model. + + + + + + Gets the number of states of this model. + + + + + + Gets the initial probabilities for this model. + + + + + + Gets the Transition matrix (A) for this model. + + + + + + Gets or sets a user-defined tag. + + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + + The initial emission probability distribution to be used by each of the states. This + initial probability distribution will be cloned across all states. + + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + + The initial emission probability distributions for each state. + + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + The transitions matrix A for this model. + The emissions matrix B for this model. + The initial state probabilities for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + The number of states for the model. + A initial distribution to be copied to all states in the model. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The sequence of states that most likely produced the sequence. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + The log-likelihood along the most likely sequence. + + The sequence of states that most likely produced the sequence. + + + + + Calculates the probability of each hidden state for each + observation in the observation vector. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the probability of each hidden state for each observation + in the observation vector, and uses those probabilities to decode the + most likely sequence of states for each observation in the sequence + using the posterior decoding method. See remarks for details. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + The sequence of states most likely associated with each + observation, estimated using the posterior decoding method. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the likelihood that this model has generated the given sequence. + + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + either the Viterbi or the Forward algorithms. + + + + A sequence of observations. + + + The log-likelihood that the given sequence has been generated by this model. + + + + + + Calculates the log-likelihood that this model has generated the + given observation sequence along the given state path. + + + A sequence of observations. + A sequence of states. + + + The log-likelihood that the given sequence of observations has + been generated by this model along the given sequence of states. + + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observation that should be coming after the last observation in this sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts the next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the given sequence, plus the predicted + next observations. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + + A random vector of observations drawn from the model. + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + The log-likelihood of the generated observation sequence. + The Viterbi path of the generated observation sequence. + + A random vector of observations drawn from the model. + + + + + Predicts the next observation occurring after a given observation sequence. + + + + + + Predicts the next observation occurring after a given observation sequence. + + + + + + Predicts the next observation occurring after a given observation sequence. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Loads a hidden Markov model from a stream. + + + The stream from which the model is to be deserialized. + + The deserialized model. + + + + + Loads a hidden Markov model from a file. + + + The path to the file from which the model is to be deserialized. + + The deserialized model. + + + + + Gets the number of dimensions in the + probability distributions for the states. + + + + + + Gets the Emission matrix (B) for this model. + + + + + + Arbitrary-density Hidden Markov Model Set for Sequence Classification. + + + + + This class uses a set of density hidden + Markov models to classify sequences of real (double-precision floating point) + numbers or arrays of those numbers. Each model will try to learn and recognize each + of the different output classes. For examples and details on how to learn such models, + please take a look on the documentation for + . + + + For the discrete version of this classifier, please see its non-generic counterpart + . + + + + + Examples are available at the respective learning algorithm pages. For + example, see . + + + + + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + The class labels for each of the models. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + + The models specializing in each of the classes of + the classification problem. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + The class labels for each of the models. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probability of the assigned class. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the log-likelihood of a sequence + belong to a given class according to this + classifier. + + The sequence of observations. + The output class label. + + The log-likelihood of the sequence belonging to the given class. + + + + + Computes the log-likelihood that a sequence + belongs any of the classes in the classifier. + + The sequence of observations. + + The log-likelihood of the sequence belonging to the classifier. + + + + + Computes the log-likelihood of a set of sequences + belonging to their given respective classes according + to this classifier. + + A set of sequences of observations. + The output class label for each sequence. + + The log-likelihood of the sequences belonging to the given classes. + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Loads a classifier from a stream. + + + The stream from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a file. + + + The path to the file from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Gets the number of dimensions of the + observations handled by this classifier. + + + + + + Discrete-density Hidden Markov Model. + + + + + Hidden Markov Models (HMM) are stochastic methods to model temporal and sequence + data. They are especially known for their application in temporal pattern recognition + such as speech, handwriting, gesture recognition, part-of-speech tagging, musical + score following, partial discharges and bioinformatics. + + + This page refers to the discrete-density version of the model. For arbitrary + density (probability distribution) definitions, please see + . + + + + Dynamical systems of discrete nature assumed to be governed by a Markov chain emits + a sequence of observable outputs. Under the Markov assumption, it is also assumed that + the latest output depends only on the current state of the system. Such states are often + not known from the observer when only the output values are observable. + + + Assuming the Markov probability, the probability of any sequence of observations + occurring when following a given sequence of states can be stated as + +

+

+ + + in which the probabilities p(yt|yt-1) can be read as the + probability of being currently in state yt given we just were in the + state yt-1 at the previous instant t-1, and the probability + p(xt|yt) can be understood as the probability of observing + xt at instant t given we are currently in the state + yt. To compute those probabilities, we simple use two matrices + A and B. + The matrix A is the matrix of state probabilities: + it gives the probabilities p(yt|yt-1) of jumping from one state + to the other, and the matrix B is the matrix of observation probabilities, which gives the + distribution density p(xt|yt) associated + a given state yt. In the discrete case, + B is really a matrix. In the continuous case, + B is a vector of probability distributions. The overall model definition + can then be stated by the tuple + +

+

+ + + in which n is an integer representing the total number + of states in the system, A is a matrix + of transition probabilities, B is either + a matrix of observation probabilities (in the discrete case) or a vector of probability + distributions (in the general case) and p is a vector of + initial state probabilities determining the probability of starting in each of the + possible states in the model. + + + Hidden Markov Models attempt to model such systems and allow, among other things, + + + To infer the most likely sequence of states that produced a given output sequence, + + Infer which will be the most likely next state (and thus predicting the next output), + + Calculate the probability that a given sequence of outputs originated from the system + (allowing the use of hidden Markov models for sequence classification). + + + + The “hidden” in Hidden Markov Models comes from the fact that the observer does not + know in which state the system may be in, but has only a probabilistic insight on where + it should be. + + + To learn a Markov model, you can find a list of both + supervised and unsupervised learning + algorithms in the namespace. + + + References: + + + Wikipedia contributors. "Linear regression." Wikipedia, the Free Encyclopedia. + Available at: http://en.wikipedia.org/wiki/Hidden_Markov_model + + Nikolai Shokhirev, Hidden Markov Models. Personal website. Available at: + http://www.shokhirev.com/nikolai/abc/alg/hmm/hmm.html + + X. Huang, A. Acero, H. Hon. "Spoken Language Processing." pp 396-397. + Prentice Hall, 2001. + + Dawei Shen. Some mathematics for HMMs, 2008. Available at: + http://courses.media.mit.edu/2010fall/mas622j/ProblemSets/ps4/tutorial.pdf + +
+ + + The example below reproduces the same example given in the Wikipedia + entry for the Viterbi algorithm (http://en.wikipedia.org/wiki/Viterbi_algorithm). + In this example, the model's parameters are initialized manually. However, it is + possible to learn those automatically using . + + + // Create the transition matrix A + double[,] transition = + { + { 0.7, 0.3 }, + { 0.4, 0.6 } + }; + + // Create the emission matrix B + double[,] emission = + { + { 0.1, 0.4, 0.5 }, + { 0.6, 0.3, 0.1 } + }; + + // Create the initial probabilities pi + double[] initial = + { + 0.6, 0.4 + }; + + // Create a new hidden Markov model + HiddenMarkovModel hmm = new HiddenMarkovModel(transition, emission, initial); + + // After that, one could, for example, query the probability + // of a sequence occurring. We will consider the sequence + int[] sequence = new int[] { 0, 1, 2 }; + + // And now we will evaluate its likelihood + double logLikelihood = hmm.Evaluate(sequence); + + // At this point, the log-likelihood of the sequence + // occurring within the model is -3.3928721329161653. + + // We can also get the Viterbi path of the sequence + int[] path = hmm.Decode(sequence, out logLikelihood); + + // At this point, the state path will be 1-0-0 and the + // log-likelihood will be -4.3095199438871337 + + + + Baum-Welch, one of the most famous + learning algorithms for Hidden Markov Models. + Arbitrary-density + Hidden Markov Model. + + +
+ + + Constructs a new Hidden Markov Model. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The emissions matrix B for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + Whether to initialize emissions with random probabilities + or uniformly with 1 / number of symbols. Default is false (default is + to use 1/symbols). + + + + + Constructs a new Hidden Markov Model. + + + The transitions matrix A for this model. + The emissions matrix B for this model. + The initial state probabilities for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model. + + + The number of states for this model. + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model. + + + The number of states for this model. + The number of output symbols used for this model. + Whether to initialize the model transitions and emissions + with random probabilities or uniformly with 1 / number of states (for + transitions) and 1 / number of symbols (for emissions). Default is false. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The sequence of states that most likely produced the sequence. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + The log-likelihood along the most likely sequence. + The sequence of states that most likely produced the sequence. + + + + + Calculates the probability of each hidden state for each + observation in the observation vector. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the probability of each hidden state for each observation + in the observation vector, and uses those probabilities to decode the + most likely sequence of states for each observation in the sequence + using the posterior decoding method. See remarks for details. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + The sequence of states most likely associated with each + observation, estimated using the posterior decoding method. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the log-likelihood that this model has generated the given sequence. + + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + either the Viterbi or the Forward algorithms. + + + + A sequence of observations. + + + + The log-likelihood that the given sequence has been generated by this model. + + + + + + Calculates the log-likelihood that this model has generated the + given observation sequence along the given state path. + + + A sequence of observations. + A sequence of states. + + + The log-likelihood that the given sequence of observations has + been generated by this model along the given sequence of states. + + + + + + Predicts next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the given sequence, plus the predicted + next observations. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + + + + + Predicts next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the different symbols for each predicted + next observations. In order to convert those values to probabilities, exponentiate the + values in the vectors (using the Exp function) and divide each value by their vector's sum. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observation that should be coming after the last observation in this sequence. + The log-likelihood of the different symbols for the next observation. + In order to convert those values to probabilities, exponentiate the values in the vector (using + the Exp function) and divide each value by the vector sum. This will give the probability of each + next possible symbol to be the next observation in the sequence. + + + + + Predicts the next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the different symbols for each predicted + next observations. In order to convert those values to probabilities, exponentiate the + values in the vectors (using the Exp function) and divide each value by their vector's sum. + The log-likelihood of the given sequence, plus the predicted + next observations. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + + A random vector of observations drawn from the model. + + + + Accord.Math.Tools.SetupGenerator(42); + + // Consider some phrases: + // + string[][] phrases = + { + new[] { "those", "are", "sample", "words", "from", "a", "dictionary" }, + new[] { "those", "are", "sample", "words" }, + new[] { "sample", "words", "are", "words" }, + new[] { "those", "words" }, + new[] { "those", "are", "words" }, + new[] { "words", "from", "a", "dictionary" }, + new[] { "those", "are", "words", "from", "a", "dictionary" } + }; + + // Let's begin by transforming them to sequence of + // integer labels using a codification codebook: + var codebook = new Codification("Words", phrases); + + // Now we can create the training data for the models: + int[][] sequence = codebook.Translate("Words", phrases); + + // To create the models, we will specify a forward topology, + // as the sequences have definite start and ending points. + // + var topology = new Forward(states: 4); + int symbols = codebook["Words"].Symbols; // We have 7 different words + + // Create the hidden Markov model + HiddenMarkovModel hmm = new HiddenMarkovModel(topology, symbols); + + // Create the learning algorithm + BaumWelchLearning teacher = new BaumWelchLearning(hmm); + + // Teach the model about the phrases + double error = teacher.Run(sequence); + + // Now, we can ask the model to generate new samples + // from the word distributions it has just learned: + // + int[] sample = hmm.Generate(3); + + // And the result will be: "those", "are", "words". + string[] result = codebook.Translate("Words", sample); + + + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + The log-likelihood of the generated observation sequence. + The Viterbi path of the generated observation sequence. + + + An usage example is available at the documentation page. + + + A random vector of observations drawn from the model. + + + + + Converts this Discrete density Hidden Markov Model + into a arbitrary density model. + + + + + Converts this Discrete density Hidden Markov Model + to a Continuous density model. + + + + + Constructs a new discrete-density Hidden Markov Model. + + + The transitions matrix A for this model. + The emissions matrix B for this model. + The initial state probabilities for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + Whether to initialize emissions with random probabilities + or uniformly with 1 / number of symbols. Default is false (default is + to use 1/symbols). + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + The number of states for this model. + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + The number of states for this model. + The number of output symbols used for this model. + Whether to initialize emissions with random probabilities + or uniformly with 1 / number of symbols. Default is false (default is + to use 1/symbols). + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Loads a hidden Markov model from a stream. + + + The stream from which the model is to be deserialized. + + The deserialized classifier. + + + + + Loads a hidden Markov model from a file. + + + The path to the file from which the model is to be deserialized. + + The deserialized model. + + + + + Loads a hidden Markov model from a stream. + + + The stream from which the model is to be deserialized. + + The deserialized model. + + + + + Loads a hidden Markov model from a file. + + + The path to the file from which the model is to be deserialized. + + The deserialized model. + + + + + Gets the number of symbols in this model's alphabet. + + + + + + Gets the log-emission matrix log(B) for this model. + + + + + + Learning algorithm for discrete-density + generative hidden Markov sequence classifiers. + + + + + This class acts as a teacher for + classifiers based on discrete hidden Markov models. The learning + algorithm uses a generative approach. It works by training each model in + the generative classifier separately. + + + This class implements discrete classifiers only. Discrete classifiers can + be used whenever the sequence of observations is discrete or can be represented + by discrete symbols, such as class labels, integers, and so on. If you need + to classify sequences of other entities, such as real numbers, vectors (i.e. + multivariate observations), then you can use + generic-density + hidden Markov models. Those models can be modeled after any kind of + probability distribution implementing + the interface. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + The following example shows how to create a hidden Markov model sequence classifier + to classify discrete sequences into two disjoint labels: labels for class 0 and + labels for class 1. The training data is separated in inputs and outputs. The + inputs are the sequences we are trying to learn, and the outputs are the labels + associated with each input sequence. + + + In this example we will be using the Baum-Welch + algorithm to learn each model in our generative classifier; however, any other + unsupervised learning algorithm could be used. + + + + // Declare some testing data + int[][] inputs = new int[][] + { + new int[] { 0,1,1,0 }, // Class 0 + new int[] { 0,0,1,0 }, // Class 0 + new int[] { 0,1,1,1,0 }, // Class 0 + new int[] { 0,1,0 }, // Class 0 + + new int[] { 1,0,0,1 }, // Class 1 + new int[] { 1,1,0,1 }, // Class 1 + new int[] { 1,0,0,0,1 }, // Class 1 + new int[] { 1,0,1 }, // Class 1 + }; + + int[] outputs = new int[] + { + 0,0,0,0, // First four sequences are of class 0 + 1,1,1,1, // Last four sequences are of class 1 + }; + + + // We are trying to predict two different classes + int classes = 2; + + // Each sequence may have up to two symbols (0 or 1) + int symbols = 2; + + // Nested models will have two states each + int[] states = new int[] { 2, 2 }; + + // Creates a new Hidden Markov Model Sequence Classifier with the given parameters + HiddenMarkovClassifier classifier = new HiddenMarkovClassifier(classes, states, symbols); + + // Create a new learning algorithm to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning(classifier, + + // Train each model until the log-likelihood changes less than 0.001 + modelIndex => new BaumWelchLearning(classifier.Models[modelIndex]) + { + Tolerance = 0.001, + Iterations = 0 + } + ); + + // Train the sequence classifier using the algorithm + double likelihood = teacher.Run(inputs, outputs); + + + + + + + + + + + + Abstract base class for Sequence Classifier learning algorithms. + + + + + + Creates a new instance of the learning algorithm for a given + Markov sequence classifier using the specified configuration + function. + + + + + + Trains each model to recognize each of the output labels. + + The sum log-likelihood for all models after training. + + + + + Creates a new threshold model + for the current set of Markov models in this sequence classifier. + + A threshold Markov model. + + + + + Creates the state transition topology for the threshold model. This + method can be used to help in the implementation of the + abstract method which has to be defined for implementers of this class. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Gets the classifier being trained by this instance. + + The classifier being trained by this instance. + + + + + Gets or sets the configuration function specifying which + training algorithm should be used for each of the models + in the hidden Markov model set. + + + + + + Gets or sets a value indicating whether a threshold model + should be created or updated after training to support rejection. + + true to update the threshold model after training; + otherwise, false. + + + + + Gets or sets a value indicating whether the class priors + should be estimated from the data, as in an empirical Bayes method. + + + + + + Occurs when the learning of a class model has started. + + + + + + Occurs when the learning of a class model has finished. + + + + + + Creates a new instance of the learning algorithm for a given + Markov sequence classifier using the specified configuration + function. + + + + + + Trains each model to recognize each of the output labels. + + + The sum log-likelihood for all models after training. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The percent of misclassification errors for the data. + + + + + Creates a new threshold model + for the current set of Markov models in this sequence classifier. + + + + A threshold Markov model. + + + + + + Gets or sets the smoothing kernel's sigma + for the threshold model. + + + The smoothing kernel's sigma. + + + + + Configuration function delegate for Sequence Classifier Learning algorithms. + + + + + Submodel learning event arguments. + + + + + Initializes a new instance of the class. + + + The class label. + The total number of classes. + + + + + Gets the generative class model to + which this event refers to. + + + + + Gets the total number of models + to be learned. + + + + + + Common interface for unsupervised learning algorithms for hidden + Markov models which support for weighted training samples. + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Base class for implementations of the Baum-Welch learning algorithm. + This class cannot be instantiated. + + + + + This class uses a template method pattern so specialized classes + can be written for each kind of hidden Markov model emission density + (either discrete or continuous). The methods , + and should + be overridden by inheriting classes to specify how those probabilities + should be computed for the density being modeled. + + + For the actual Baum-Welch classes, please refer to + or . For other kinds of algorithms, please + see and + and their generic counter-parts. + + + + + + + + + Initializes a new instance of the class. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + + + The average log-likelihood for the observations after the model has been trained. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + The weight associated with each sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + + + Computes the forward and backward probabilities matrices + for a given observation referenced by its index in the + input training data. + + + The index of the observation in the input training data. + Returns the computed forward probabilities matrix. + Returns the computed backward probabilities matrix. + + + + + Computes the ksi matrix of probabilities for a given observation + referenced by its index in the input training data. + + + The index of the observation in the input training data. + The matrix of forward probabilities for the observation. + The matrix of backward probabilities for the observation. + + + + + Updates the emission probability matrix. + + + + Implementations of this method should use the observations + in the training data and the Gamma probability matrix to + update the probability distributions of symbol emissions. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Gets the Ksi matrix of log probabilities created during + the last iteration of the Baum-Welch learning algorithm. + + + + + + Gets the Gamma matrix of log probabilities created during + the last iteration of the Baum-Welch learning algorithm. + + + + + + Gets the sample weights in the last iteration of the + Baum-Welch learning algorithm. + + + + + + Baum-Welch learning algorithm for + discrete-density Hidden Markov Models. + + + + + The Baum-Welch algorithm is an unsupervised algorithm + used to learn a single hidden Markov model object from a set of observation sequences. It works + by using a variant of the + Expectation-Maximization algorithm to search a set of model parameters (i.e. the matrix + of transition probabilities A, the matrix + of emission probabilities B, and the + initial probability vector π) that + would result in a model having a high likelihood of being able + to generate a set of training + sequences given to this algorithm. + + + For increased accuracy, this class performs all computations using log-probabilities. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + // We will try to create a Hidden Markov Model which + // can detect if a given sequence starts with a zero + // and has any number of ones after that. + int[][] sequences = new int[][] + { + new int[] { 0,1,1,1,1,0,1,1,1,1 }, + new int[] { 0,1,1,1,0,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1,1,1,1 }, + }; + + // Creates a new Hidden Markov Model with 3 states for + // an output alphabet of two characters (zero and one) + HiddenMarkovModel hmm = new HiddenMarkovModel(3, 2); + + // Try to fit the model to the data until the difference in + // the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning(hmm) { Tolerance = 0.0001, Iterations = 0 }; + + double ll = teacher.Run(sequences); + + // Calculate the probability that the given + // sequences originated from the model + double l1 = Math.Exp(hmm.Evaluate(new int[] { 0, 1 })); // 0.999 + double l2 = Math.Exp(hmm.Evaluate(new int[] { 0, 1, 1, 1 })); // 0.916 + + // Sequences which do not start with zero have much lesser probability. + double l3 = Math.Exp(hmm.Evaluate(new int[] { 1, 1 })); // 0.000 + double l4 = Math.Exp(hmm.Evaluate(new int[] { 1, 0, 0, 0 })); // 0.000 + + // Sequences which contains few errors have higher probability + // than the ones which do not start with zero. This shows some + // of the temporal elasticity and error tolerance of the HMMs. + double l5 = Math.Exp(hmm.Evaluate(new int[] { 0, 1, 0, 1, 1, 1, 1, 1, 1 })); // 0.034 + double l6 = Math.Exp(hmm.Evaluate(new int[] { 0, 1, 1, 1, 1, 1, 1, 0, 1 })); // 0.034 + + + + + + + + + + + Creates a new instance of the Baum-Welch learning algorithm. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + + + The average log-likelihood for the observations after the model has been trained. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + + The average log-likelihood for the observations after the model has been trained. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Computes the forward and backward probabilities matrices + for a given observation referenced by its index in the + input training data. + + + The index of the observation in the input training data. + Returns the computed forward probabilities matrix. + Returns the computed backward probabilities matrix. + + + + + Updates the emission probability matrix. + + + + Implementations of this method should use the observations + in the training data and the Gamma probability matrix to + update the probability distributions of symbol emissions. + + + + + + Computes the ksi matrix of probabilities for a given observation + referenced by its index in the input training data. + + + The index of the observation in the input training data. + The matrix of forward probabilities for the observation. + The matrix of backward probabilities for the observation. + + + + + Creates a Baum-Welch with default configurations for + hidden Markov models with normal mixture densities. + + + + + + Creates a Baum-Welch with default configurations for + hidden Markov models with normal mixture densities. + + + + + + Gets the model being trained. + + + + + + Baum-Welch learning algorithm for + arbitrary-density (generic) Hidden Markov Models. + + + + + The Baum-Welch algorithm is an unsupervised algorithm + used to learn a single hidden Markov model object from a set of observation sequences. It works + by using a variant of the + Expectation-Maximization algorithm to search a set of model parameters (i.e. the matrix + of transition probabilities A + , the vector of state probability distributions + B, and the initial probability + vector π) that would result in a model having a high likelihood of being able + to generate a set of training + sequences given to this algorithm. + + + For increased accuracy, this class performs all computations using log-probabilities. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + + In the following example, we will create a Continuous Hidden Markov Model using + a univariate Normal distribution to model properly model continuous sequences. + + + // Create continuous sequences. In the sequences below, there + // seems to be two states, one for values between 0 and 1 and + // another for values between 5 and 7. The states seems to be + // switched on every observation. + double[][] sequences = new double[][] + { + new double[] { 0.1, 5.2, 0.3, 6.7, 0.1, 6.0 }, + new double[] { 0.2, 6.2, 0.3, 6.3, 0.1, 5.0 }, + new double[] { 0.1, 7.0, 0.1, 7.0, 0.2, 5.6 }, + }; + + + // Specify a initial normal distribution for the samples. + NormalDistribution density = new NormalDistribution(); + + // Creates a continuous hidden Markov Model with two states organized in a forward + // topology and an underlying univariate Normal distribution as probability density. + var model = new HiddenMarkovModel<NormalDistribution>(new Ergodic(2), density); + + // Configure the learning algorithms to train the sequence classifier until the + // difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<NormalDistribution>(model) + { + Tolerance = 0.0001, + Iterations = 0, + }; + + // Fit the model + double likelihood = teacher.Run(sequences); + + // See the log-probability of the sequences learned + double a1 = model.Evaluate(new[] { 0.1, 5.2, 0.3, 6.7, 0.1, 6.0 }); // -0.12799388666109757 + double a2 = model.Evaluate(new[] { 0.2, 6.2, 0.3, 6.3, 0.1, 5.0 }); // 0.01171157434400194 + + // See the log-probability of an unrelated sequence + double a3 = model.Evaluate(new[] { 1.1, 2.2, 1.3, 3.2, 4.2, 1.0 }); // -298.7465244473417 + + // We can transform the log-probabilities to actual probabilities: + double likelihood = Math.Exp(logLikelihood); + a1 = Math.Exp(a1); // 0.879 + a2 = Math.Exp(a2); // 1.011 + a3 = Math.Exp(a3); // 0.000 + + // We can also ask the model to decode one of the sequences. After + // this step the state variable will contain: { 0, 1, 0, 1, 0, 1 } + + int[] states = model.Decode(new[] { 0.1, 5.2, 0.3, 6.7, 0.1, 6.0 }); + + + + In the following example, we will create a Discrete Hidden Markov Model + using a Generic Discrete Probability Distribution to reproduce the same + code example given in documentation. + + + // Arbitrary-density Markov Models can operate using any + // probability distribution, including discrete ones. + + // In the following example, we will try to create a + // Discrete Hidden Markov Model using a discrete + // distribution to detect if a given sequence starts + // with a zero and has any number of ones after that. + + double[][] sequences = new double[][] + { + new double[] { 0,1,1,1,1,0,1,1,1,1 }, + new double[] { 0,1,1,1,0,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1,1,1,1 }, + }; + + // Create a new Hidden Markov Model with 3 states and + // a generic discrete distribution with two symbols + var hmm = new HiddenMarkovModel.CreateGeneric(3, 2); + + // We will try to fit the model to the data until the difference in + // the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<UniformDiscreteDistribution>(hmm) + { + Tolerance = 0.0001, + Iterations = 0 + }; + + // Begin model training + double ll = teacher.Run(sequences); + + + // Calculate the likelihood that the given sequences originated + // from the model. The commented values on the right are the + // likelihoods computed by taking an exp(x) of the log-likelihoods + // returned by the Evaluate method. + double l1 = Math.Exp(hmm.Evaluate(new double[] { 0, 1 })); // 0.999 + double l2 = Math.Exp(hmm.Evaluate(new double[] { 0, 1, 1, 1 })); // 0.916 + + // Sequences which do not start with zero have much lesser probability. + double l3 = Math.Exp(hmm.Evaluate(new double[] { 1, 1 })); // 0.000 + double l4 = Math.Exp(hmm.Evaluate(new double[] { 1, 0, 0, 0 })); // 0.000 + + // Sequences which contains few errors have higher probability + // than the ones which do not start with zero. This shows some + // of the temporal elasticity and error tolerance of the HMMs. + double l5 = Math.Exp(hmm.Evaluate(new double[] { 0, 1, 0, 1, 1, 1, 1, 1, 1 })); // 0.034 + double l6 = Math.Exp(hmm.Evaluate(new double[] { 0, 1, 1, 1, 1, 1, 1, 0, 1 })); // 0.034 + + + + The next example shows how to create a multivariate model using + a multivariate normal distribution. In this example, sequences + contain vector-valued observations, such as in the case of (x,y) + pairs. + + + // Create sequences of vector-valued observations. In the + // sequence below, a single observation is composed of two + // coordinate values, such as (x, y). There seems to be two + // states, one for (x,y) values less than (5,5) and another + // for higher values. The states seems to be switched on + // every observation. + double[][][] sequences = + { + new double[][] // sequence 1 + { + new double[] { 1, 2 }, // observation 1 of sequence 1 + new double[] { 6, 7 }, // observation 2 of sequence 1 + new double[] { 2, 3 }, // observation 3 of sequence 1 + }, + new double[][] // sequence 2 + { + new double[] { 2, 2 }, // observation 1 of sequence 2 + new double[] { 9, 8 }, // observation 2 of sequence 2 + new double[] { 1, 0 }, // observation 3 of sequence 2 + }, + new double[][] // sequence 3 + { + new double[] { 1, 3 }, // observation 1 of sequence 3 + new double[] { 8, 9 }, // observation 2 of sequence 3 + new double[] { 3, 3 }, // observation 3 of sequence 3 + }, + }; + + + // Specify a initial normal distribution for the samples. + var density = new MultivariateNormalDistribution(dimension: 2); + + // Creates a continuous hidden Markov Model with two states organized in a forward + // topology and an underlying univariate Normal distribution as probability density. + var model = new HiddenMarkovModel<MultivariateNormalDistribution>(new Forward(2), density); + + // Configure the learning algorithms to train the sequence classifier until the + // difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<MultivariateNormalDistribution>(model) + { + Tolerance = 0.0001, + Iterations = 0, + }; + + // Fit the model + double logLikelihood = teacher.Run(sequences); + + // See the likelihood of the sequences learned + double a1 = Math.Exp(model.Evaluate(new [] { + new double[] { 1, 2 }, + new double[] { 6, 7 }, + new double[] { 2, 3 }})); // 0.000208 + + double a2 = Math.Exp(model.Evaluate(new [] { + new double[] { 2, 2 }, + new double[] { 9, 8 }, + new double[] { 1, 0 }})); // 0.0000376 + + // See the likelihood of an unrelated sequence + double a3 = Math.Exp(model.Evaluate(new [] { + new double[] { 8, 7 }, + new double[] { 9, 8 }, + new double[] { 1, 0 }})); // 2.10 x 10^(-89) + + + + The following example shows how to create a hidden Markov model + that considers each feature to be independent of each other. This + is the same as following Bayes' assumption of independence for each + feature in the feature vector. + + + + // Let's say we have 2 meteorological sensors gathering data + // from different time periods of the day. Those periods are + // represented below: + + double[][][] data = + { + new double[][] // first sequence (we just repeated the measurements + { // once, so there is only one observation sequence) + + new double[] { 1, 2 }, // Day 1, 15:00 pm + new double[] { 6, 7 }, // Day 1, 16:00 pm + new double[] { 2, 3 }, // Day 1, 17:00 pm + new double[] { 2, 2 }, // Day 1, 18:00 pm + new double[] { 9, 8 }, // Day 1, 19:00 pm + new double[] { 1, 0 }, // Day 1, 20:00 pm + new double[] { 1, 3 }, // Day 1, 21:00 pm + new double[] { 8, 9 }, // Day 1, 22:00 pm + new double[] { 3, 3 }, // Day 1, 23:00 pm + } + }; + + // Let's assume those sensors are unrelated (for simplicity). As + // such, let's assume the data gathered from the sensors may reside + // into circular centroids denoting each state the underlying system + // might be in. + NormalDistribution[] initial_components = + { + new NormalDistribution(), // initial value for the first variable's distribution + new NormalDistribution() // initial value for the second variable's distribution + }; + + // Specify a initial independent normal distribution for the samples. + var density = new Independent<NormalDistribution>(initial_components); + + // Creates a continuous hidden Markov Model with two states organized in an Ergodic + // topology and an underlying independent Normal distribution as probability density. + var model = new HiddenMarkovModel<Independent<NormalDistribution>>(new Ergodic(2), density); + + // Configure the learning algorithms to train the sequence classifier until the + // difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<Independent<NormalDistribution>>(model) + { + Tolerance = 0.0001, + Iterations = 0, + }; + + // Fit the model + double error = teacher.Run(data); + + // Get the hidden state associated with each observation + // + double logLikelihood; // log-likelihood of the Viterbi path + int[] hidden_states = model.Decode(data[0], out logLikelihood); + + + + Finally, the last example shows how to fit a mixture-density + hidden Markov models. + + + + // Suppose we have a set of six sequences and we would like to + // fit a hidden Markov model with mixtures of Normal distributions + // as the emission densities. + + // First, let's consider a set of univariate sequences: + double[][] sequences = + { + new double[] { 1, 1, 2, 2, 2, 3, 3, 3 }, + new double[] { 1, 2, 2, 2, 3, 3 }, + new double[] { 1, 2, 2, 3, 3, 5 }, + new double[] { 2, 2, 2, 2, 3, 3, 3, 4, 5, 5, 1 }, + new double[] { 1, 1, 1, 2, 2, 5 }, + new double[] { 1, 2, 2, 4, 4, 5 }, + }; + + + // Now we can begin specifying a initial Gaussian mixture distribution. It is + // better to add some different initial parameters to the mixture components: + var density = new Mixture<NormalDistribution>( + new NormalDistribution(mean: 2, stdDev: 1.0), // 1st component in the mixture + new NormalDistribution(mean: 0, stdDev: 0.6), // 2nd component in the mixture + new NormalDistribution(mean: 4, stdDev: 0.4), // 3rd component in the mixture + new NormalDistribution(mean: 6, stdDev: 1.1) // 4th component in the mixture + ); + + // Let's then create a continuous hidden Markov Model with two states organized in a forward + // topology with the underlying univariate Normal mixture distribution as probability density. + var model = new HiddenMarkovModel<Mixture<NormalDistribution>>(new Forward(2), density); + + // Now we should configure the learning algorithms to train the sequence classifier. We will + // learn until the difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<Mixture<NormalDistribution>>(model) + { + Tolerance = 0.0001, + Iterations = 0, + + // Note, however, that since this example is extremely simple and we have only a few + // data points, a full-blown mixture wouldn't really be needed. Thus we will have a + // great chance that the mixture would become degenerated quickly. We can avoid this + // by specifying some regularization constants in the Normal distribution fitting: + + FittingOptions = new MixtureOptions() + { + Iterations = 1, // limit the inner e-m to a single iteration + + InnerOptions = new NormalOptions() + { + Regularization = 1e-5 // specify a regularization constant + + // Please note that specifying a regularization constant avoids getting the exception + // "Variance is zero. Try specifying a regularization constant in the fitting options." + } + } + }; + + // Finally, we can fit the model + double logLikelihood = teacher.Run(sequences); + + // And now check the likelihood of some approximate sequences. + double a1 = Math.Exp(model.Evaluate(new double[] { 1, 1, 2, 2, 3 })); // 2.3413833128741038E+45 + double a2 = Math.Exp(model.Evaluate(new double[] { 1, 1, 2, 5, 5 })); // 9.94607618459872E+19 + + // We can see that the likelihood of an unrelated sequence is much smaller: + double a3 = Math.Exp(model.Evaluate(new double[] { 8, 2, 6, 4, 1 })); // 1.5063654166181737E-44 + + + + + When using Normal distributions, it is often the case we might find problems + which are difficult to solve. Some problems may include constant variables or + other numerical difficulties preventing a the proper estimation of a Normal + distribution from the data. + + + A sign of those difficulties arises when the learning algorithm throws the exception + "Variance is zero. Try specifying a regularization constant in the fitting options" + for univariate distributions (e.g. or a informing that the "Covariance matrix + is not positive definite. Try specifying a regularization constant in the fitting options" + for multivariate distributions like the . + In both cases, this is an indication that the variables being learned can not be suitably + modeled by Normal distributions. To avoid numerical difficulties when estimating those + probabilities, a small regularization constant can be added to the variances or to the + covariance matrices until they become greater than zero or positive definite. + + + To specify a regularization constant as given in the above message, we + can indicate a fitting options object for the model distribution using: + + + + var teacher = new BaumWelchLearning<NormalDistribution>(model) + { + Tolerance = 0.0001, + Iterations = 0, + + FittingOptions = new NormalOptions() + { + Regularization = 1e-5 // specify a regularization constant + } + }; + + + + Typically, any small value would suffice as a regularization constant, + though smaller values may lead to longer fitting times. Too high values, + on the other hand, would lead to decreased accuracy. + + + + + + + + + + + + + + Creates a new instance of the Baum-Welch learning algorithm. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + + The average log-likelihood for the observations after the model has been trained. + + + + + + Computes the ksi matrix of probabilities for a given observation + referenced by its index in the input training data. + + The index of the observation in the input training data. + The matrix of forward probabilities for the observation. + The matrix of backward probabilities for the observation. + + + + + Updates the emission probability matrix. + + + Implementations of this method should use the observations + in the training data and the Gamma probability matrix to + update the probability distributions of symbol emissions. + + + + + + Computes the forward and backward probabilities matrices + for a given observation referenced by its index in the + input training data. + + The index of the observation in the input training data. + Returns the computed forward probabilities matrix. + Returns the computed backward probabilities matrix. + + + + + Gets the model being trained. + + + + + + Gets or sets the distribution fitting options + to use when estimating distribution densities + during learning. + + The distribution fitting options. + + + + + Learning algorithm for + arbitrary-density generative hidden Markov sequence classifiers. + + + + + This class acts as a teacher for + classifiers based on arbitrary-density hidden Markov models. The learning + algorithm uses a generative approach. It works by training each model in the + generative classifier separately. + + + This can teach models that use any probability + distribution. Such arbitrary-density models + can be used for any kind of observation values or vectors. When + + + be used whenever the sequence of observations is discrete or can be represented + by discrete symbols, such as class labels, integers, and so on. If you need + to classify sequences of other entities, such as real numbers, vectors (i.e. + multivariate observations), then you can use + generic-density + hidden Markov models. Those models can be modeled after any kind of + probability distribution implementing + the interface. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + The following example creates a continuous-density hidden Markov model sequence + classifier to recognize two classes of univariate observation sequences. + + + // Create a Continuous density Hidden Markov Model Sequence Classifier + // to detect a univariate sequence and the same sequence backwards. + double[][] sequences = new double[][] + { + new double[] { 0,1,2,3,4 }, // This is the first sequence with label = 0 + new double[] { 4,3,2,1,0 }, // This is the second sequence with label = 1 + }; + + // Labels for the sequences + int[] labels = { 0, 1 }; + + // Creates a new Continuous-density Hidden Markov Model Sequence Classifier + // containing 2 hidden Markov Models with 2 states and an underlying Normal + // distribution as the continuous probability density. + NormalDistribution density = new NormalDistribution(); + var classifier = new HiddenMarkovClassifier<NormalDistribution>(2, new Ergodic(2), density); + + // Create a new learning algorithm to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning<NormalDistribution>(classifier, + + // Train each model until the log-likelihood changes less than 0.001 + modelIndex => new BaumWelchLearning<NormalDistribution>(classifier.Models[modelIndex]) + { + Tolerance = 0.0001, + Iterations = 0 + } + ); + + // Train the sequence classifier using the algorithm + teacher.Run(sequences, labels); + + + // Calculate the probability that the given + // sequences originated from the model + double likelihood; + + // Try to classify the first sequence (output should be 0) + int c1 = classifier.Compute(sequences[0], out likelihood); + + // Try to classify the second sequence (output should be 1) + int c2 = classifier.Compute(sequences[1], out likelihood); + + + + + The following example creates a continuous-density hidden Markov model sequence + classifier to recognize two classes of multivariate sequence of observations. + This example uses multivariate Normal distributions as emission densities. + + + When there is insufficient training data, or one of the variables is constant, + the Normal distribution estimation may fail with a "Covariance matrix is not + positive-definite". In this case, it is possible to sidestep this issue by + specifying a small regularization constant to be added to the diagonal elements + of the covariance matrix. + + + // Create a Continuous density Hidden Markov Model Sequence Classifier + // to detect a multivariate sequence and the same sequence backwards. + + double[][][] sequences = new double[][][] + { + new double[][] + { + // This is the first sequence with label = 0 + new double[] { 0, 1 }, + new double[] { 1, 2 }, + new double[] { 2, 3 }, + new double[] { 3, 4 }, + new double[] { 4, 5 }, + }, + + new double[][] + { + // This is the second sequence with label = 1 + new double[] { 4, 3 }, + new double[] { 3, 2 }, + new double[] { 2, 1 }, + new double[] { 1, 0 }, + new double[] { 0, -1 }, + } + }; + + // Labels for the sequences + int[] labels = { 0, 1 }; + + + var initialDensity = new MultivariateNormalDistribution(2); + + // Creates a sequence classifier containing 2 hidden Markov Models with 2 states + // and an underlying multivariate mixture of Normal distributions as density. + var classifier = new HiddenMarkovClassifier<MultivariateNormalDistribution>( + classes: 2, topology: new Forward(2), initial: initialDensity); + + // Configure the learning algorithms to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning<MultivariateNormalDistribution>( + classifier, + + // Train each model until the log-likelihood changes less than 0.0001 + modelIndex => new BaumWelchLearning<MultivariateNormalDistribution>( + classifier.Models[modelIndex]) + { + Tolerance = 0.0001, + Iterations = 0, + + FittingOptions = new NormalOptions() + { + Diagonal = true, // only diagonal covariance matrices + Regularization = 1e-5 // avoid non-positive definite errors + } + } + ); + + // Train the sequence classifier using the algorithm + double logLikelihood = teacher.Run(sequences, labels); + + + // Calculate the probability that the given + // sequences originated from the model + double likelihood, likelihood2; + + // Try to classify the 1st sequence (output should be 0) + int c1 = classifier.Compute(sequences[0], out likelihood); + + // Try to classify the 2nd sequence (output should be 1) + int c2 = classifier.Compute(sequences[1], out likelihood2); + + + + + + + + + + + Creates a new instance of the learning algorithm for a given + Markov sequence classifier using the specified configuration + function. + + + + + + Trains each model to recognize each of the output labels. + + + The sum log-likelihood for all models after training. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The percent of misclassification errors for the data. + + + + + Creates a new threshold model + for the current set of Markov models in this sequence classifier. + + + + A threshold Markov model. + + + + + + Forward-Backward algorithms for Hidden Markov Models. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Discrete-density Hidden Markov Model Set for Sequence Classification. + + + + + This class uses a set of discrete hidden Markov models + to classify sequences of integer symbols. Each model will try to learn and recognize each + of the different output classes. For examples and details on how to learn such models, + please take a look on the documentation for . + + For other type of sequences, such as discrete sequences (not necessarily symbols) or even + continuous and multivariate variables, please see use the generic classifier counterpart + + + + + + Examples are available at the respective learning algorithm pages. For + example, see . + + + + + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + The optional class names for each of the classifiers. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + The optional class names for each of the classifiers. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The number of symbols in the models' discrete alphabet. + The optional class names for each of the classifiers. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The number of symbols in the models' discrete alphabet. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the log-likelihood of a sequence + belong to a given class according to this + classifier. + + The sequence of observations. + The output class label. + + The log-likelihood of the sequence belonging to the given class. + + + + + Computes the log-likelihood of a set of sequences + belonging to their given respective classes according + to this classifier. + + A set of sequences of observations. + The output class label for each sequence. + + The log-likelihood of the sequences belonging to the given classes. + + + + + Computes the log-likelihood that a sequence + belongs any of the classes in the classifier. + + The sequence of observations. + + The log-likelihood of the sequence belonging to the classifier. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The number of symbols in the models' discrete alphabet. + + + + + Computes the most likely class for a given sequence. + + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Loads a classifier from a stream. + + + The stream from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a file. + + + The path to the file from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a stream. + + + The stream from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a file. + + + The path to the file from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Gets the number of symbols + recognizable by the models. + + + + + + Custom Topology for Hidden Markov Model. + + + + + An Hidden Markov Model Topology specifies how many states and which + initial probabilities a Markov model should have. Two common topologies + can be discussed in terms of transition state probabilities and are + available to construction through the and + classes implementing the + interface. + + Topology specification is important with regard to both learning and + performance: A model with too many states (and thus too many settable + parameters) will require too much training data while an model with an + insufficient number of states will prohibit the HMM from capturing subtle + statistical patterns. + + This custom implementation allows for arbitrarily specification of + the state transition matrix and initial state probabilities for + hidden Markov models. + + + + + + + + + + + + Hidden Markov model topology (architecture) specification. + + + + + An Hidden Markov Model Topology specifies how many states and which + initial probabilities a Markov model should have. Two common topologies + can be discussed in terms of transition state probabilities and are + available to construction through the and + classes implementing this interface. + + Topology specification is important with regard to both learning and + performance: A model with too many states (and thus too many settable + parameters) will require too much training data while an model with an + insufficient number of states will prohibit the HMM from capturing subtle + statistical patterns. + + + + References: + + + Alexander Schliep, "Learning Hidden Markov Model Topology". + + Richard Hughey and Anders Krogh, "Hidden Markov models for sequence analysis: + extension and analysis of the basic method", CABIOS 12(2):95-107, 1996. Available in: + http://compbio.soe.ucsc.edu/html_format_papers/hughkrogh96/cabios.html + + + + + + + + + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + Gets the number of states in this topology. + + + + + Creates a new custom topology with user-defined + transition matrix and initial state probabilities. + + + The initial probabilities for the model. + The transition probabilities for the model. + + + + + Creates a new custom topology with user-defined + transition matrix and initial state probabilities. + + + The initial probabilities for the model. + The transition probabilities for the model. + Set to true if the passed transitions are given + in log-probabilities. Default is false (given values are probabilities). + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + + Gets the number of states in this topology. + + + + + + Gets the initial state probabilities. + + + + + + Gets the state-transitions matrix. + + + + + + Ergodic (fully-connected) Topology for Hidden Markov Models. + + + + + Ergodic models are commonly used to represent models in which a single + (large) sequence of observations is used for training (such as when a + training sequence does not have well defined starting and ending points + and can potentially be infinitely long). + + Models starting with an ergodic transition-state topology typically + have only a small number of states. + + + References: + + + Alexander Schliep, "Learning Hidden Markov Model Topology". + + Richard Hughey and Anders Krogh, "Hidden Markov models for sequence analysis: + extension and analysis of the basic method", CABIOS 12(2):95-107, 1996. Available in: + http://compbio.soe.ucsc.edu/html_format_papers/hughkrogh96/cabios.html + + + + + + + + + + + In a second example, we will create an Ergodic (fully connected) + discrete-density hidden Markov model with uniform probabilities. + + + // Create a new Ergodic hidden Markov model with three + // fully-connected states and four sequence symbols. + var model = new HiddenMarkovModel(new Ergodic(3), 4); + + // After creation, the state transition matrix for the model + // should be given by: + // + // { 0.33, 0.33, 0.33 } + // { 0.33, 0.33, 0.33 } + // { 0.33, 0.33, 0.33 } + // + // in which all state transitions are allowed. + + + + + + + Creates a new Ergodic topology for a given number of states. + + + The number of states to be used in the model. + + + + + Creates a new Ergodic topology for a given number of states. + + + The number of states to be used in the model. + Whether to initialize the model with random probabilities + or uniformly with 1 / number of states. Default is false (default is + to use 1/states). + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + + Gets the number of states in this topology. + + + + + + Gets or sets whether the transition matrix + should be initialized with random probabilities + or not. Default is false. + + + + + + Forward Topology for Hidden Markov Models. + + + + + Forward topologies are commonly used to initialize models in which + training sequences can be organized in samples, such as in the recognition + of spoken words. In spoken word recognition, several examples of a single + word can (and should) be used to train a single model, to achieve the most + general model able to generalize over a great number of word samples. + + + Forward models can typically have a large number of states. + + + References: + + + Alexander Schliep, "Learning Hidden Markov Model Topology". + + Richard Hughey and Anders Krogh, "Hidden Markov models for sequence analysis: + extension and analysis of the basic method", CABIOS 12(2):95-107, 1996. Available in: + http://compbio.soe.ucsc.edu/html_format_papers/hughkrogh96/cabios.html + + + + + + + + + + + + In the following example, we will create a Forward-only + discrete-density hidden Markov model. + + + // Create a new Forward-only hidden Markov model with + // three forward-only states and four sequence symbols. + var model = new HiddenMarkovModel(new Forward(3), 4); + + // After creation, the state transition matrix for the model + // should be given by: + // + // { 0.33, 0.33, 0.33 } + // { 0.00, 0.50, 0.50 } + // { 0.00, 0.00, 1.00 } + // + // in which no backward transitions are allowed (have zero probability). + + + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + The maximum number of forward transitions allowed + for a state. Default is to use the same as the number of states (all forward + connections are allowed). + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + Whether to initialize the model with random probabilities + or uniformly with 1 / number of states. Default is false (default is + to use 1/states). + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + The maximum number of forward transitions allowed + for a state. Default is to use the same as the number of states (all forward + connections are allowed). + Whether to initialize the model with random probabilities + or uniformly with 1 / number of states. Default is false (default is + to use 1/states). + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + + Gets the number of states in this topology. + + + + + + Gets or sets the maximum deepness level allowed + for the forward state transition chains. + + + + + + Gets or sets whether the transition matrix + should be initialized with random probabilities + or not. Default is false. + + + + + + Gets the initial state probabilities. + + + + + + Common interface for Linear Regression Models. + + + + + This interface specifies a common interface for querying + a linear regression model. + + Since a closed-form solution exists for fitting most linear + models, each of the models may also implement a Regress method + for computing actual regression. + + + + + + Computes the model output for a given input. + + + + + + Multiple Linear Regression. + + + + + In multiple linear regression, the model specification is that the dependent + variable, denoted y_i, is a linear combination of the parameters (but need not + be linear in the independent x_i variables). As the linear regression has a + closed form solution, the regression coefficients can be computed by calling + the method only once. + + + + + The following example shows how to fit a multiple linear regression model + to model a plane as an equation in the form ax + by + c = z. + + + // We will try to model a plane as an equation in the form + // "ax + by + c = z". We have two input variables (x and y) + // and we will be trying to find two parameters a and b and + // an intercept term c. + + // Create a multiple linear regression for two input and an intercept + MultipleLinearRegression target = new MultipleLinearRegression(2, true); + + // Now suppose we have some points + double[][] inputs = + { + new double[] { 1, 1 }, + new double[] { 0, 1 }, + new double[] { 1, 0 }, + new double[] { 0, 0 }, + }; + + // located in the same Z (z = 1) + double[] outputs = { 1, 1, 1, 1 }; + + + // Now we will try to fit a regression model + double error = target.Regress(inputs, outputs); + + // As result, we will be given the following: + double a = target.Coefficients[0]; // a = 0 + double b = target.Coefficients[1]; // b = 0 + double c = target.Coefficients[2]; // c = 1 + + // Now, considering we were trying to find a plane, which could be + // described by the equation ax + by + c = z, and we have found the + // aforementioned coefficients, we can conclude the plane we were + // trying to find is giving by the equation: + // + // ax + by + c = z + // -> 0x + 0y + 1 = z + // -> 1 = z. + // + // The plane containing the aforementioned points is, in fact, + // the plane given by z = 1. + + + + + + + Creates a new Multiple Linear Regression. + + + The number of inputs for the regression. + + + + + Creates a new Multiple Linear Regression. + + + The number of inputs for the regression. + True to use an intercept term, false otherwise. Default is false. + + + + + Performs the regression using the input vectors and output + data, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + + Set to true to force the use of the . + This will avoid any rank exceptions, but might be more computing intensive. + + The Sum-Of-Squares error of the regression. + + + + + Performs the regression using the input vectors and output + data, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + The Sum-Of-Squares error of the regression. + + + + + Performs the regression using the input vectors and output + data, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + Gets the Fisher's information matrix. + + Set to true to force the use of the . + This will avoid any rank exceptions, but might be more computing intensive. + + The Sum-Of-Squares error of the regression. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Computes the Multiple Linear Regression for an input vector. + + + The input vector. + + The calculated output. + + + + + Computes the Multiple Linear Regression for input vectors. + + + The input vector data. + + The calculated outputs. + + + + + Returns a System.String representing the regression. + + + + + + Creates a new linear regression directly from data points. + + + The input vectors x. + The output vectors y. + + A linear regression f(x) that most approximates y. + + + + + Returns a that represents this instance. + + + The format to use.-or- A null reference (Nothing in Visual Basic) to use + the default format defined for the type of the System.IFormattable implementation. + The provider to use to format the value.-or- A null reference (Nothing in + Visual Basic) to obtain the numeric format information from the current locale + setting of the operating system. + + + A that represents this instance. + + + + + + Gets the coefficients used by the regression model. If the model + contains an intercept term, it will be in the end of the vector. + + + + + + Gets the number of inputs for the regression model. + + + + + + Gets whether this model has an additional intercept term. + + + + + + Multivariate Linear Regression. + + + Multivariate Linear Regression is a generalization of + Multiple Linear Regression to allow for multiple outputs. + + + + + // The multivariate linear regression is a generalization of + // the multiple linear regression. In the multivariate linear + // regression, not only the input variables are multivariate, + // but also are the output dependent variables. + + // In the following example, we will perform a regression of + // a 2-dimensional output variable over a 3-dimensional input + // variable. + + double[][] inputs = + { + // variables: x1 x2 x3 + new double[] { 1, 1, 1 }, // input sample 1 + new double[] { 2, 1, 1 }, // input sample 2 + new double[] { 3, 1, 1 }, // input sample 3 + }; + + double[][] outputs = + { + // variables: y1 y2 + new double[] { 2, 3 }, // corresponding output to sample 1 + new double[] { 4, 6 }, // corresponding output to sample 2 + new double[] { 6, 9 }, // corresponding output to sample 3 + }; + + // With a quick eye inspection, it is possible to see that + // the first output variable y1 is always the double of the + // first input variable. The second output variable y2 is + // always the triple of the first input variable. The other + // input variables are unused. Nevertheless, we will fit a + // multivariate regression model and confirm the validity + // of our impressions: + + // Create a new multivariate linear regression with 3 inputs and 2 outputs + var regression = new MultivariateLinearRegression(3, 2); + + // Now, compute the multivariate linear regression: + double error = regression.Regress(inputs, outputs); + + // At this point, the regression error will be 0 (the fit was + // perfect). The regression coefficients for the first input + // and first output variables will be 2. The coefficient for + // the first input and second output variables will be 3. All + // others will be 0. + // + // regression.Coefficients should be the matrix given by + // + // double[,] coefficients = { + // { 2, 3 }, + // { 0, 0 }, + // { 0, 0 }, + // }; + // + + // The first input variable coefficients will be 2 and 3: + Assert.AreEqual(2, regression.Coefficients[0, 0], 1e-10); + Assert.AreEqual(3, regression.Coefficients[0, 1], 1e-10); + + // And all other coefficients will be 0: + Assert.AreEqual(0, regression.Coefficients[1, 0], 1e-10); + Assert.AreEqual(0, regression.Coefficients[1, 1], 1e-10); + Assert.AreEqual(0, regression.Coefficients[2, 0], 1e-10); + Assert.AreEqual(0, regression.Coefficients[2, 1], 1e-10); + + // We can also check the r-squared coefficients of determination: + double[] r2 = regression.CoefficientOfDetermination(inputs, outputs); + + // Which should be one for both output variables: + Assert.AreEqual(1, r2[0]); + Assert.AreEqual(1, r2[1]); + + + + + + + Creates a new Multivariate Linear Regression. + + + The number of inputs for the regression. + The number of outputs for the regression. + + + + + Creates a new Multivariate Linear Regression. + + + The number of inputs for the regression. + The number of outputs for the regression. + True to use an intercept term, false otherwise. Default is false. + + + + + Creates a new Multivariate Linear Regression. + + + + + + Performs the regression using the input vectors and output + vectors, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + The Sum-Of-Squares error of the regression. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Computes the Multiple Linear Regression output for a given input. + + + A input vector. + The computed output. + + + + + Computes the Multiple Linear Regression output for a given input. + + + An array of input vectors. + The computed outputs. + + + + + Creates a new linear regression directly from data points. + + + The input vectors x. + The output vectors y. + + A linear regression f(x) that most approximates y. + + + + + Computes the model output for a given input. + + + + + Gets the coefficient matrix used by the regression model. Each + column corresponds to the coefficient vector for each of the outputs. + + + + + + Gets the intercept vector used by the multivariate regression model. + + + + + + Gets the number of inputs in the model. + + + + + + Gets the number of outputs in the model. + + + + + + Simple Linear Regression of the form y = Ax + B. + + + + In linear regression, the model specification is that the dependent + variable, y is a linear combination of the parameters (but need not + be linear in the independent variables). As the linear regression + has a closed form solution, the regression coefficients can be + efficiently computed using the Regress method of this class. + + + + + Let's say we have some univariate, continuous sets of input data, + and a corresponding univariate, continuous set of output data, such + as a set of points in R². A simple linear regression is able to fit + a line relating the input variables to the output variables in which + the minimum-squared-error of the line and the actual output points + is minimum. + + + // Let's say we have some univariate, continuous sets of input data, + // and a corresponding univariate, continuous set of output data, such + // as a set of points in R². A simple linear regression is able to fit + // a line relating the input variables to the output variables in which + // the minimum-squared-error of the line and the actual output points + // is minimum. + + // Declare some sample test data. + double[] inputs = { 80, 60, 10, 20, 30 }; + double[] outputs = { 20, 40, 30, 50, 60 }; + + // Create a new simple linear regression + SimpleLinearRegression regression = new SimpleLinearRegression(); + + // Compute the linear regression + regression.Regress(inputs, outputs); + + // Compute the output for a given input. The + double y = regression.Compute(85); // The answer will be 28.088 + + // We can also extract the slope and the intercept term + // for the line. Those will be -0.26 and 50.5, respectively. + double s = regression.Slope; + double c = regression.Intercept; + + + + Now, let's say we would like to perform a regression using an + intermediary transformation, such as for example logarithmic + regression. In this case, all we have to do is to first transform + the input variables into the desired domain, then apply the + regression as normal: + + + // This is the same data from the example available at + // http://mathbits.com/MathBits/TISection/Statistics2/logarithmic.htm + + // Declare your inputs and output data + double[] inputs = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; + double[] outputs = { 6, 9.5, 13, 15, 16.5, 17.5, 18.5, 19, 19.5, 19.7, 19.8 }; + + // Transform inputs to logarithms + double[] logx = Matrix.Log(inputs); + + // Compute a simple linear regression + var lr = new SimpleLinearRegression(); + + // Compute with the log-transformed data + double error = lr.Regress(logx, outputs); + + // Get an expression representing the learned regression model + // We just have to remember that 'x' will actually mean 'log(x)' + string result = lr.ToString("N4", CultureInfo.InvariantCulture); + + // Result will be "y(x) = 6.1082x + 6.0993" + + + + + + + Creates a new Simple Linear Regression of the form y = Ax + B. + + + + + + Performs the regression using the input and output + data, returning the sum of squared errors of the fit. + + + The input data. + The output data. + The regression Sum-of-Squares error. + + + + + Computes the regression output for a given input. + + + An array of input values. + The array of calculated output values. + + + + + Computes the regression for a single input. + + + The input value. + The calculated output. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, or R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Creates a new linear regression directly from data points. + + + The input vectors x. + The output vectors y. + + A linear regression f(x) that most approximates y. + + + + + Computes the model output for a given input. + + + + + Angular coefficient (Slope). + + + + + + Linear coefficient (Intercept). + + + + + + Binary Logistic Regression. + + + + + In statistics, logistic regression (sometimes called the logistic model or + Logit model) is used for prediction of the probability of occurrence of an + event by fitting data to a logistic curve. It is a generalized linear model + used for binomial regression. + + Like many forms of regression analysis, it makes use of several predictor + variables that may be either numerical or categorical. For example, the + probability that a person has a heart attack within a specified time period + might be predicted from knowledge of the person's age, sex and body mass index. + + Logistic regression is used extensively in the medical and social sciences + as well as marketing applications such as prediction of a customer's + propensity to purchase a product or cease a subscription. + + + References: + + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Amos Storkey. (2005). Learning from Data: Learning Logistic Regressors. School of Informatics. + Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + Cosma Shalizi. (2009). Logistic Regression and Newton's Method. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + Edward F. Conor. Logistic Regression. Website. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (This is completely fictional data). + double[][] input = + { + new double[] { 55, 0 }, // 0 - no cancer + new double[] { 28, 0 }, // 0 + new double[] { 65, 1 }, // 0 + new double[] { 46, 0 }, // 1 - have cancer + new double[] { 86, 1 }, // 1 + new double[] { 56, 1 }, // 1 + new double[] { 85, 0 }, // 0 + new double[] { 33, 0 }, // 0 + new double[] { 21, 1 }, // 0 + new double[] { 42, 1 }, // 1 + }; + + // We also know if they have had lung cancer or not, and + // we would like to know whether smoking has any connection + // with lung cancer (This is completely fictional data). + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + + // To verify this hypothesis, we are going to create a logistic + // regression model for those two inputs (age and smoking). + LogisticRegression regression = new LogisticRegression(inputs: 2); + + // Next, we are going to estimate this model. For this, we + // will use the Iteratively Reweighted Least Squares method. + var teacher = new IterativeReweightedLeastSquares(regression); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta = 0; + do + { + // Perform an iteration + delta = teacher.Run(input, output); + + } while (delta > 0.001); + + // At this point, we can compute the odds ratio of our variables. + // In the model, the variable at 0 is always the intercept term, + // with the other following in the sequence. Index 1 is the age + // and index 2 is whether the patient smokes or not. + + // For the age variable, we have that individuals with + // higher age have 1.021 greater odds of getting lung + // cancer controlling for cigarette smoking. + double ageOdds = regression.GetOddsRatio(1); // 1.0208597028836701 + + // For the smoking/non smoking category variable, however, we + // have that individuals who smoke have 5.858 greater odds + // of developing lung cancer compared to those who do not + // smoke, controlling for age (remember, this is completely + // fictional and for demonstration purposes only). + double smokeOdds = regression.GetOddsRatio(2); // 5.8584748789881331 + + + + + + + Creates a new Logistic Regression Model. + + + The number of input variables for the model. + + + + + Creates a new Logistic Regression Model. + + + The number of input variables for the model. + The starting intercept value. Default is 0. + + + + + Gets the 95% confidence interval for the + Odds Ratio for a given coefficient. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Odds Ratio for a given coefficient. + + + + The odds ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + The Odds Ratio for the given coefficient. + + + + + + Constructs a new from + an array of weights (linear coefficients). The first + weight is interpreted as the intercept value. + + + An array of linear coefficients. + + + A whose + are + the same as in the given array. + + + + + + Polynomial Linear Regression. + + + + In linear regression, the model specification is that the dependent + variable, y is a linear combination of the parameters (but need not + be linear in the independent variables). As the linear regression + has a closed form solution, the regression coefficients can be + efficiently computed using the Regress method of this class. + + + + + + Creates a new Polynomial Linear Regression. + + + The degree of the polynomial used by the model. + + + + + Performs the regression using the input and output + data, returning the sum of squared errors of the fit. + + + The input data. + The output data. + + The regression Sum-of-Squares error. + + + + + Computes the regressed model output for the given inputs. + + + The input data. + The computed outputs. + + + + + Computes the regressed model output for the given input. + + + The input value. + The computed output. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Creates a new polynomial regression directly from data points. + + + The polynomial degree to use. + The input vectors x. + The output vectors y. + + A polynomial regression f(x) that most approximates y. + + + + + Computes the model output for a given input. + + + + + Gets the degree of the polynomial used by the regression. + + + + + + Gets the coefficients of the polynomial regression, + with the first being the higher-order term and the last + the intercept term. + + + + + + Newton-Raphson learning updates for Cox's Proportional Hazards models. + + + + + + Constructs a new Newton-Raphson learning algorithm + for Cox's Proportional Hazards models. + + + The model to estimate. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The input data. + The time-to-event for the training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The input data. + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The input data. + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Gets or sets the maximum absolute parameter change detectable + after an iteration of the algorithm used to detect convergence. + Default is 1e-5. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Gets or sets the number of performed iterations. + + + + + + Gets or sets the hazard estimator that should be used by the + proportional hazards learning algorithm. Default is to use + . + + + + + + Gets or sets the ties handling method to be used by the + proportional hazards learning algorithm. Default is to use + 's method. + + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets the Hessian matrix computed in + the last Newton-Raphson iteration. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets a value indicating whether standard + errors should be computed at the end of the next + iterations. + + + true to compute standard errors; otherwise, false. + + + + + + Gets or sets a value indicating whether an estimate + of the baseline hazard function should be computed + at the end of the next iterations. + + + true to compute the baseline function; otherwise, false. + + + + + + Gets or sets a value indicating whether the Cox model should + be computed using the mean-centered version of the covariates. + Default is true. + + + + + + Gets or sets the smoothing factor used to avoid numerical + problems in the beginning of the training. Default is 0.1. + + + + + + Kalman filter for 2D coordinate systems. + + + + + References: + + + Student Dave's tutorial on Object Tracking in Images Using 2D Kalman Filters. + Available on: http://studentdavestutorials.weebly.com/object-tracking-2d-kalman-filter.html + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The sampling rate. + The acceleration. + The acceleration standard deviation. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Gets or sets the current X position of the object. + + + + + + Gets or sets the current Y position of the object. + + + + + + Gets or sets the current object's velocity in the X axis. + + + + + + Gets or sets the current object's velocity in the Y axis. + + + + + + Gets or sets the observational noise + of the current object's in the X axis. + + + + + + Gets or sets the observational noise + of the current object's in the Y axis. + + + + + + Common interface for running Markov filters. + + + + + Clears all measures previously computed + and indicate the sequence has ended. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Base class for running hidden Markov filters. + + + + + + Initializes a new instance of the class. + + + The Markov model. + + + + + Clears all measures previously computed + and indicate the sequence has ended. + + + + + + Clears all measures previously computed. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Hidden Markov Classifier filter. + + + + + + + + + Creates a new . + + + The hidden Markov classifier model. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + + The next log-likelihood if the occurrence of + is registered. + + The value to be checked. + + + + + Clears all measures previously computed. + + + + + + Gets the used in this filter. + + + + + + Gets the class response probabilities measuring + the likelihood of the current sequence belonging + to each of the classes. + + + + + + Gets the current classification label for + the sequence up to the current observation. + + + + + + Gets the current rejection threshold level + generated by classifier's threshold model. + + + + + + Hidden Markov Classifier filter for general state distributions. + + + + + + + + + Creates a new . + + + The hidden Markov classifier model. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + + The next log-likelihood if the occurrence of + is registered. + + The value to be checked. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + + The next log-likelihood if the occurrence of + is registered. + + The value to be checked. + + + + + Clears all measures previously computed. + + + + + + Gets the used in this filter. + + + + + + Gets the class response probabilities measuring + the likelihood of the current sequence belonging + to each of the classes. + + + + + + Gets the current classification label for + the sequence up to the current observation. + + + + + + Gets the current rejection threshold level + generated by classifier's threshold model. + + + + + + Hidden Markov Model filter. + + + + + + Creates a new . + + + The hidden Markov model to use in this filter. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + The value to be checked. + + + + + Clears this instance. + + + + + + Gets the used in this filter. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Common interface for running statistics. + + + Running statistics are measures computed as data becomes available. + When using running statistics, there is no need to know the number of + samples a priori, such as in the case of the direct . + + + + + + Gets the current mean of the gathered values. + + + The mean of the values. + + + + + Gets the current variance of the gathered values. + + + The variance of the values. + + + + + Gets the current standard deviation of the gathered values. + + + The standard deviation of the values. + + + + + Common interface for moving-window statistics. + + + + Moving-window statistics such as moving average and moving variance, + are a type of finite impulse response filters used to analyze a set + of data points by creating a series of averages of different subsets + of the full data set. + + + + + + Gets the size of the window. + + + The window's size. + + + + + Gets the number of samples within the window. + + + The number of samples within the window. + + + + + Moving-window circular statistics. + + + + + + Initializes a new instance of the class. + + + The size of the moving window. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Gets the sum of the sines of the angles within the window. + + + + + + Gets the sum of the cosines of the angles within the window. + + + + + + Gets the size of the window. + + + The window's size. + + + + + Gets the number of samples within the window. + + + The number of samples within the window. + + + + + Gets the mean of the angles within the window. + + + The mean. + + + + + Gets the variance of the angles within the window. + + + + + + Gets the standard deviation of the angles within the window. + + + + + + Hidden Markov Model filter. + + + + + + Creates a new . + + + The hidden Markov model to use in this filter. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + The value to be checked. + + + + + Clears this instance. + + + + + + Gets the used in this filter. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Running (normal) statistics. + + + + + + This class computes the running variance using Welford’s method. Running statistics + need only one pass over the data, and do not require all data to be available prior + to computing. + + + + References: + + + John D. Cook. Accurately computing running variance. Available on: + http://www.johndcook.com/standard_deviation.html + + Chan, Tony F.; Golub, Gene H.; LeVeque, Randall J. (1983). Algorithms for + Computing the Sample Variance: Analysis and Recommendations. The American + Statistician 37, 242-247. + + Ling, Robert F. (1974). Comparison of Several Algorithms for Computing Sample + Means and Variances. Journal of the American Statistical Association, Vol. 69, + No. 348, 859-866. + + + + + + + Initializes a new instance of the class. + + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Gets the current mean of the gathered values. + + + The mean of the values. + + + + + Gets the current variance of the gathered values. + + + The variance of the values. + + + + + Gets the current standard deviation of the gathered values. + + + The standard deviation of the values. + + + + + Moving-window statistics. + + + + + + Initializes a new instance of the class. + + + The size of the moving window. + + + + + Pushes a value into the window. + + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Removes all elements from the window and resets statistics. + + + + + + Gets the sum the values within the window. + + + The sum of values within the window. + + + + + Gets the sum of squared values within the window. + + + The sum of squared values. + + + + + Gets the size of the window. + + + The window's size. + + + + + Gets the number of samples within the window. + + + The number of samples within the window. + + + + + Gets the mean of the values within the window. + + + The mean of the values. + + + + + Gets the variance of the values within the window. + + + The variance of the values. + + + + + Gets the standard deviation of the values within the window. + + + The standard deviation of the values. + + + + + Contains 34+ statistical hypothesis tests, including one way + and two-way ANOVA tests, non-parametric tests such as the + Kolmogorov-Smirnov test and the + Sign Test for the Median, contingency table + tests such as the Kappa test, including variations for + multiple tables, as well as the + Bhapkar and Bowker tests; and the more traditional + Chi-Square, Z, F + , T and Wald tests. + + + + + This namespace contains a suite of parametric and non-parametric hypothesis tests. Every + test in this library implements the interface, which defines + a few key methods and properties to assert whether + an statistical hypothesis can be supported or not. Every hypothesis test is associated + with an statistic distribution + which can in turn be queried, inspected and computed as any other distribution in the + namespace. + + + By default, tests are created using a 0.05 significance level + , which in the framework is referred as the test's size. P-Values are also ready to be + inspected by checking a test's P-Value property. + + + Furthermore, several tests in this namespace also support + power analysis. The power analysis of a test can be used to suggest an optimal number of samples + which have to be obtained in order to achieve a more interpretable or useful result while doing hypothesis + testing. Power analyses implement the interface, and analyses are available + for the one sample Z, and T tests, + as well as their two sample versions. + + + Some useful parametric tests are the , , + , , , + and . Useful non-parametric tests include the , + , and the . + + + Tests are also available for two or more samples. In this case, we can find two sample variants for the + , , , + , , , + , as well as the for unpaired samples. For + multiple samples we can find the and , as well as the + and . + + + Finally, the namespace also includes several tests for contingency tables. + Those tests include Kappa test for inter-rater agreement and its variants, such + as the , and . + Other tests include , , , + , and the . + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + Hypothesis test for a single ROC curve. + + + + + + + + One-sample Z-Test (location test). + + + + + The term Z-test is often used to refer specifically to the one-sample + location test comparing the mean of a set of measurements to a given + constant. Due to the central limit theorem, many test statistics are + approximately normally distributed for large samples. Therefore, many + statistical tests can be performed as approximate Z-tests if the sample + size is large. + + + If the test is , the null hypothesis + can be rejected in favor of the alternate hypothesis + specified at the creation of the test. + + + This test supports creating power analyses + through its property. + + + References: + + + Wikipedia, The Free Encyclopedia. Z-Test. Available on: + http://en.wikipedia.org/wiki/Z-test + + + + + + This example has been gathered from the Wikipedia's page about + the Z-Test, available from: http://en.wikipedia.org/wiki/Z-test + + + Suppose there is a text comprehension test being run across + a given demographic region. The mean score of the population + from this entire region are around 100 points, with a standard + deviation of 12 points. + + There is a local school, however, whose 55 students attained + an average score in the test of only about 96 points. Would + their scores be surprisingly that low, or could this event + have happened due to chance? + + + // So we would like to check that a sample of + // 55 students with a mean score of 96 points: + + int sampleSize = 55; + double sampleMean = 96; + + // Was expected to have happened by chance in a population with + // an hypothesized mean of 100 points and standard deviation of + // about 12 points: + + double standardDeviation = 12; + double hypothesizedMean = 100; + + + // So we start by creating the test: + ZTest test = new ZTest(sampleMean, standardDeviation, sampleSize, + hypothesizedMean, OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Now, we can check whether this result would be + // unlikely under a standard significance level: + + bool significant = test.Significant; + + // We can also check the test statistic and its P-Value + double statistic = test.Statistic; + double pvalue = test.PValue; + + + + + + + + + + + + + + + Base class for Hypothesis Tests. + + + + A statistical hypothesis test is a method of making decisions using data, whether from + a controlled experiment or an observational study (not controlled). In statistics, a + result is called statistically significant if it is unlikely to have occurred by chance + alone, according to a pre-determined threshold probability, the significance level. + + + References: + + + Wikipedia, The Free Encyclopedia. Statistical Hypothesis Testing. + + + + + + + Common interface for Hypothesis tests depending on a statistical distribution. + + + The test statistic distribution. + + + + + Common interface for Hypothesis tests depending on a statistical distribution. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the test type. + + + + + + Gets whether the null hypothesis should be rejected. + + + + A test result is said to be statistically significant when the + result would be very unlikely to have occurred by chance alone. + + + + + + Gets the distribution associated + with the test statistic. + + + + + + Initializes a new instance of the class. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Called whenever the test significance level changes. + + + + + + Converts the numeric P-Value of this test to its equivalent string representation. + + + + + + Converts the numeric P-Value of this test to its equivalent string representation. + + + + + + Gets the distribution associated + with the test statistic. + + + + + + Gets the P-value associated with this test. + + + + + In statistical hypothesis testing, the p-value is the probability of + obtaining a test statistic at least as extreme as the one that was + actually observed, assuming that the null hypothesis is true. + + The lower the p-value, the less likely the result can be explained + by chance alone, assuming the null hypothesis is true. + + + + + + Gets the test statistic. + + + + + + Gets the test type. + + + + + + Gets the significance level for the + test. Default value is 0.05 (5%). + + + + + + Gets whether the null hypothesis should be rejected. + + + + A test result is said to be statistically significant when the + result would be very unlikely to have occurred by chance alone. + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Constructs a Z test. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The sample's mean. + The sample's standard error. + The hypothesized value for the distribution's mean. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The sample's mean. + The sample's standard deviation. + The hypothesized value for the distribution's mean. + The sample's size. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The test statistic, as given by (x-μ)/SE. + The alternate hypothesis to test. + + + + + Computes the Z test. + + + + + + Computes the Z test. + + + + + + Constructs a T-Test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + The tail of the test distribution. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + The tail of the test distribution. + + The test statistic which would generate the given p-value. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the standard error of the estimated value. + + + + + + Gets the estimated value, such as the mean estimated from a sample. + + + + + + Gets the hypothesized value. + + + + + + Gets the 95% confidence interval for the . + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Creates a new . + + + The curve to be tested. + The hypothesized value for the ROC area. + The alternative hypothesis (research hypothesis) to test. + + + + + Calculates the standard error of an area calculation for a + curve with the given number of positive and negatives instances + + + + + + Calculates the standard error of an area calculation for a + curve with the given number of positive and negatives instances + + + + + + Gets the ROC curve being tested. + + + + + + Kappa test for the average of two groups of contingency tables. + + + + + The two-matrix Kappa test tries to assert whether the Kappa measure + of two groups of contingency tables, each group created by a different + rater or classification model and measured repeatedly, differs significantly. + + + This is a two sample t-test kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + + + + + + + + + + Two-sample Student's T test. + + + + + The two-sample t-test assesses whether the means of two groups are statistically + different from each other. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's T-Test. + + William M.K. Trochim. The T-Test. Research methods Knowledge Base, 2009. + Available on: http://www.le.ac.uk/bl/gat/virtualfc/Stats/ttest.html + + Graeme D. Ruxton. The unequal variance t-test is an underused alternative to Student's + t-test and the Mann–Whitney U test. Oxford Journals, Behavioral Ecology Volume 17, Issue 4, pp. + 688-690. 2006. Available on: http://beheco.oxfordjournals.org/content/17/4/688.full + + + + + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Tests whether the means of two samples are different. + + + The first sample. + The second sample. + The hypothesized sample difference. + True to assume equal variances, false otherwise. Default is true. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests whether the means of two samples are different. + + + The first sample's mean. + The second sample's mean. + The first sample's variance. + The second sample's variance. + The number of observations in the first sample. + The number of observations in the second sample. + True assume equal variances, false otherwise. Default is true. + The hypothesized sample difference. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new two-sample T-Test. + + + + + Computes the T Test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets whether the test assumes equal sample variance. + + + + + + Gets the standard error for the difference. + + + + + + Gets the combined sample variance. + + + + + + Gets the estimated value for the first sample. + + + + + + Gets the estimated value for the second sample. + + + + + + Gets the hypothesized difference between the two estimated values. + + + + + + Gets the actual difference between the two estimated values. + + + + + Gets the degrees of freedom for the test statistic. + + + + + + Gets the 95% confidence interval for the + statistic. + + + + + + Creates a new Two-Table Mean Kappa test. + + + The average kappa value for the first group of contingency tables. + The average kappa value for the second group of contingency tables. + The kappa's variance in the first group of tables. + The kappa's variance in the first group of tables. + The number of contingency tables averaged in the first group. + The number of contingency tables averaged in the second group. + True to assume equal variances, false otherwise. Default is true. + The alternative hypothesis (research hypothesis) to test. + The hypothesized difference between the two Kappa values. + + + + + Creates a new Two-Table Mean Kappa test. + + + The first group of contingency tables. + The second group of contingency tables. + True to assume equal variances, false otherwise. Default is true. + The hypothesized difference between the two average Kappa values. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the variance for the first Kappa value. + + + + + + Gets the variance for the second Kappa value. + + + + + + Kappa Test for multiple contingency tables. + + + + + The multiple-matrix Kappa test tries to assert whether the Kappa measure + of many contingency tables, each of which created by a different rater + or classification model, differs significantly. The computations are + based on the pages 607, 608 of (Fleiss, 2003). + + + This is a Chi-square kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + + + + + + + + + Two-Sample (Goodness-of-fit) Chi-Square Test (Upper Tail) + + + + + A chi-square test (also chi-squared or χ² test) is any statistical + hypothesis test in which the sampling distribution of the test statistic + is a chi-square distribution when + the null hypothesis is true, or any in which this is asymptotically true, + meaning that the sampling distribution (if the null hypothesis is true) + can be made to approximate a chi-square distribution as closely as desired + by making the sample size large enough. + + The chi-square test is used whenever one would like to test whether the + actual data differs from a random distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Chi-Square Test. Available on: + http://en.wikipedia.org/wiki/Chi-square_test + + + J. S. McLaughlin. Chi-Square Test. Available on: + http://www2.lv.psu.edu/jxm57/irp/chisquar.html + + + + + + The following example has been based on the example section + of the + Pearson's chi-squared test article on Wikipedia. + + + // Suppose we would like to test the hypothesis that a random sample of + // 100 people has been drawn from a population in which men and women are + // equal in frequency. + + // Under this hypothesis, the observed number of men and women would be + // compared to the theoretical frequencies of 50 men and 50 women. So, + // after drawing our sample, we found out that there were 44 men and 56 + // women in the sample: + + // man woman + double[] observed = { 44, 56 }; + double[] expected = { 50, 50 }; + + // If the null hypothesis is true (i.e., men and women are chosen with + // equal probability), the test statistic will be drawn from a chi-squared + // distribution with one degree of freedom. If the male frequency is known, + // then the female frequency is determined. + // + int degreesOfFreedom = 1; + + // So now we have: + // + var chi = new ChiSquareTest(expected, observed, degreesOfFreedom); + + + // The chi-squared distribution for 1 degree of freedom shows that the + // probability of observing this difference (or a more extreme difference + // than this) if men and women are equally numerous in the population is + // approximately 0.23. + + double pvalue = chi.PValue; // 0.23 + + // This probability is higher than conventional criteria for statistical + // significance (0.001 or 0.05), so normally we would not reject the null + // hypothesis that the number of men in the population is the same as the + // number of women. + + bool significant = chi.Significant; // false + + + + + + + + + Constructs a Chi-Square Test. + + + The test statistic. + The chi-square distribution degrees of freedom. + + + + + Constructs a Chi-Square Test. + + + The expected variable values. + The observed variable values. + The chi-square distribution degrees of freedom. + + + + + Constructs a Chi-Square Test. + + + + + + Constructs a Chi-Square Test. + + + + + + Constructs a Chi-Square Test. + + + + + + Constructs a Chi-Square Test. + + + + + + Computes the Chi-Square Test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the degrees of freedom for the Chi-Square distribution. + + + + + + Creates a new multiple table Kappa test. + + + The kappa values. + The variance for each kappa value. + + + + + Creates a new multiple table Kappa test. + + + The contingency tables. + + + + + Computes the multiple matrix Kappa test. + + + + + + Gets the overall Kappa value + for the many contingency tables. + + + + + + Gets the overall Kappa variance + for the many contingency tables. + + + + + + Gets the variance for each kappa value. + + + + + + Gets the kappa for each contingency table. + + + + + + Fisher's exact test for contingency tables. + + + + + This test statistic distribution is the + Hypergeometric. + + + + + + + + Constructs a new Fisher's exact test. + + + The matrix to be tested. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the Fisher's exact test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis + can be rejected in favor of this alternative hypothesis. + + + + + + One-sample Anderson-Darling (AD) test. + + + + + + Creates a new Anderson-Darling test. + + + The sample we would like to test as belonging to the . + A fully specified distribution. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the theoretical, hypothesized distribution for the samples, + which should have been stated before any measurements. + + + + + + Shapiro-Wilk test for normality. + + + + + The Shapiro–Wilk test is a test of normality in frequentist statistics. It was published in 1965 by Samuel Sanford Shapiro and Martin Wilk. + + + + References: + + + Wikipedia, The Free Encyclopedia. Shapiro-Wilk test. Available on: + http://en.wikipedia.org/wiki/Shapiro%E2%80%93Wilk_test + + + + + + + Creates a new Shapiro-Wilk test. + + + The sample we would like to test. + + + The sample must contain at least 4 observations. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Multinomial test (approximated). + + + + + In statistics, the multinomial test is the test of the null hypothesis that the + parameters of a multinomial distribution equal specified values. The test can be + approximated using a chi-square distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Multinomial Test. Available on: + http://en.wikipedia.org/wiki/Multinomial_test + + + + + + + The following example is based on the example available on About.com Statistics, + An Example of Chi-Square Test for a Multinomial Experiment By Courtney Taylor. + + In this example, we would like to test if a die is fair. For this, we + will be rolling the die 600 times, annotating the result every time + the die falls. In the end, we got a one 106 times, a two 90 times, a + three 98 times, a four 102 times, a five 100 times and a six 104 times: + + + int[] sample = { 106, 90, 98, 102, 100, 104 }; + + // If the die was fair, we should note that we would be expecting the + // probabilities to be all equal to 1 / 6: + + double[] hypothesizedProportion = + { + // 1 2 3 4 5 6 + 1 / 6.0, 1 / 6.0, 1 / 6.0, 1 / 6.0, 1 / 6.0, 1 / 6.0, + }; + + // Now, we create our test using the samples and the expected proportion + MultinomialTest test = new MultinomialTest(sample, hypothesizedProportion); + + double chiSquare = test.Statistic; // 1.6 + bool significant = test.Significant; // false + + + + Since the test didn't come up significant, it means that we + don't have enough evidence to to reject the null hypothesis + that the die is fair. + + + + + + + + + Creates a new Multinomial test. + + + The proportions for each category in the sample. + The number of observations in the sample. + + + + + Creates a new Multinomial test. + + + The number of occurrences for each category in the sample. + + + + + Creates a new Multinomial test. + + + The number of occurrences for each category in the sample. + The hypothesized category proportions. Default is + to assume uniformly equal proportions. + + + + + Creates a new Multinomial test. + + + The proportions for each category in the sample. + The number of observations in the sample. + The hypothesized category proportions. Default is + to assume uniformly equal proportions. + + + + + Creates a new Multinomial test. + + + The categories for each observation in the sample. + The number of possible categories. + + + + + Creates a new Multinomial test. + + + The categories for each observation in the sample. + The number of possible categories. + The hypothesized category proportions. Default is + to assume uniformly equal proportions. + + + + + Computes the Multinomial test. + + + + + + Gets the observed sample proportions. + + + + + + Gets the hypothesized population proportions. + + + + + + Bartlett's test for equality of variances. + + + + + In statistics, Bartlett's test is used to test if k samples are from populations + with equal variances. Equal variances across samples is called homoscedasticity + or homogeneity of variances. Some statistical tests, for example the + analysis of variance, assume that variances are equal across groups or samples. + The Bartlett test can be used to verify that assumption. + + Bartlett's test is sensitive to departures from normality. That is, if the samples + come from non-normal distributions, then Bartlett's test may simply be testing for + non-normality. Levene's test and the Brown–Forsythe test + are alternatives to the Bartlett test that are less sensitive to departures from + normality. + + + References: + + + Wikipedia, The Free Encyclopedia. Bartlett's test. Available on: + http://en.wikipedia.org/wiki/Bartlett's_test + + + + + + + + + + + + Tests the null hypothesis that all group variances are equal. + + + The grouped samples. + + + + + Levene test computation methods. + + + + + + The test has been computed using the Mean. + + + + + + The test has been computed using the Median + (which is known as the Brown-Forsythe test). + + + + + + The test has been computed using the trimmed mean. + + + + + + Levene's test for equality of variances. + + + + + In statistics, Levene's test is an inferential statistic used to assess the + equality of variances for a variable calculated for two or more groups. Some + common statistical procedures assume that variances of the populations from + which different samples are drawn are equal. Levene's test assesses this + assumption. It tests the null hypothesis that the population variances are + equal (called homogeneity of variance or homoscedasticity). If the resulting + P-value of Levene's test is less than some significance level (typically 0.05), + the obtained differences in sample variances are unlikely to have occurred based + on random sampling from a population with equal variances. Thus, the null hypothesis + of equal variances is rejected and it is concluded that there is a difference + between the variances in the population. + + + Some of the procedures typically assuming homoscedasticity, for which one can use + Levene's tests, include analysis of variance and + t-tests. Levene's test is often used before a comparison of means. When Levene's + test shows significance, one should switch to generalized tests, free from homoscedasticity + assumptions. Levene's test may also be used as a main test for answering a stand-alone + question of whether two sub-samples in a given population have equal or different variances. + + + References: + + + Wikipedia, The Free Encyclopedia. Levene's test. Available on: + http://en.wikipedia.org/wiki/Levene's_test + + + + + + + + + + + + Snedecor's F-Test. + + + + + A F-test is any statistical test in which the test statistic has an + F-distribution under the null hypothesis. + It is most often used when comparing statistical models that have been fit + to a data set, in order to identify the model that best fits the population + from which the data were sampled. + + + References: + + + Wikipedia, The Free Encyclopedia. F-Test. Available on: + http://en.wikipedia.org/wiki/F-test + + + + + + + + + // The following example has been based on the page "F-Test for Equality + // of Two Variances", from NIST/SEMATECH e-Handbook of Statistical Methods: + // + // http://www.itl.nist.gov/div898/handbook/eda/section3/eda359.htm + // + + // Consider a data set containing 480 ceramic strength + // measurements for two batches of material. The summary + // statistics for each batch are shown below: + + // Batch 1: + int numberOfObservations1 = 240; + // double mean1 = 688.9987; + double stdDev1 = 65.54909; + double var1 = stdDev1 * stdDev1; + + // Batch 2: + int numberOfObservations2 = 240; + // double mean2 = 611.1559; + double stdDev2 = 61.85425; + double var2 = stdDev2 * stdDev2; + + // Here, we will be testing the null hypothesis that + // the variances for the two batches are equal. + + int degreesOfFreedom1 = numberOfObservations1 - 1; + int degreesOfFreedom2 = numberOfObservations2 - 1; + + // Now we can create a F-Test to test the difference between variances + var ftest = new FTest(var1, var2, degreesOfFreedom1, degreesOfFreedom2); + + double statistic = ftest.Statistic; // 1.123037 + double pvalue = ftest.PValue; // 0.185191 + bool significant = ftest.Significant; // false + + // The F test indicates that there is not enough evidence + // to reject the null hypothesis that the two batch variances + // are equal at the 0.05 significance level. + + + + + + + + + Creates a new F-Test for a given statistic with given degrees of freedom. + + + The variance of the first sample. + The variance of the second sample. + The degrees of freedom for the first sample. + The degrees of freedom for the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new F-Test for a given statistic with given degrees of freedom. + + + The test statistic. + The degrees of freedom for the numerator. + The degrees of freedom for the denominator. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the F-test. + + + + + + Creates a new F-Test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the degrees of freedom for the + numerator in the test distribution. + + + + + + Gets the degrees of freedom for the + denominator in the test distribution. + + + + + + Tests the null hypothesis that all group variances are equal. + + + The grouped samples. + True to use the median in the Levene calculation. + False to use the mean. Default is false (use the mean). + + + + + Tests the null hypothesis that all group variances are equal. + + + The grouped samples. + The percentage of observations to discard + from the sample when computing the test with the truncated mean. + + + + + Gets the method used to compute the Levene's test. + + + + + + Contains methods for power analysis of several related hypothesis tests, + including support for automatic sample size estimation. + + + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + T-Test for two paired samples. + + + + + The Paired T-test can be used when the samples are dependent; that is, when there + is only one sample that has been tested twice (repeated measures) or when there are + two samples that have been matched or "paired". This is an example of a paired difference + test. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's t-test. + Available from: http://en.wikipedia.org/wiki/Student%27s_t-test#Dependent_t-test_for_paired_samples + + + + + + Suppose we would like to know the effect of a treatment (such + as a new drug) in improving the well-being of 9 patients. The + well-being is measured in a discrete scale, going from 0 to 10. + + // To do so, we need to register the initial state of each patient + // and then register their state after a given time under treatment. + + double[,] patients = + { + // before after + // treatment treatment + /* Patient 1.*/ { 0, 1 }, + /* Patient 2.*/ { 6, 5 }, + /* Patient 3.*/ { 4, 9 }, + /* Patient 4.*/ { 8, 6 }, + /* Patient 5.*/ { 1, 6 }, + /* Patient 6.*/ { 6, 7 }, + /* Patient 7.*/ { 3, 4 }, + /* Patient 8.*/ { 8, 7 }, + /* Patient 9.*/ { 6, 5 }, + }; + + // Extract the before and after columns + double[] before = patients.GetColumn(0); + double[] after = patients.GetColumn(1); + + // Create the paired-sample T-test. Our research hypothesis is + // that the treatment does improve the patient's well-being. So + // we will be testing the hypothesis that the well-being of the + // "before" sample, the first sample, is "smaller" in comparison + // to the "after" treatment group. + + PairedTTest test = new PairedTTest(before, after, + TwoSampleHypothesis.FirstValueIsSmallerThanSecond); + + bool significant = test.Significant; // not significant + double pvalue = test.PValue; // p-value = 0.1650 + double tstat = test.Statistic; // t-stat = -1.0371 + + + + + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Creates a new paired t-test. + + + The observations in the first sample. + The observations in the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the first sample's mean. + + + + + + Gets the second sample's mean. + + + + + + Gets the observed mean difference between the two samples. + + + + + + Gets the standard error of the difference. + + + + + + Gets the size of a sample. + Both samples have equal size. + + + + + + Gets the 95% confidence interval for the + statistic. + + + + + + Z-Test for two sample proportions. + + + + + + + + + Two sample Z-Test. + + + + + References: + + + Wikipedia, The Free Encyclopedia. Z-Test. Available on: + http://en.wikipedia.org/wiki/Z-test + + + + + + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Constructs a Z test. + + + The first data sample. + The second data sample. + The hypothesized sample difference. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The first sample's mean. + The second sample's mean. + The first sample's variance. + The second sample's variance. + The number of observations in the first sample. + The number of observations in the second sample. + The hypothesized sample difference. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + + + + Computes the Z test. + + + + + + Computes the Z test. + + + + + + Computes the Z test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the standard error for the difference. + + + + + + Gets the estimated value for the first sample. + + + + + + Gets the estimated value for the second sample. + + + + + + Gets the hypothesized difference between the two estimated values. + + + + + + Gets the actual difference between the two estimated values. + + + + + Gets the 95% confidence interval for the + statistic. + + + + + + Creates a new Z-Test for two sample proportions. + + + The proportion of success observations in the first sample. + The total number of observations in the first sample. + The proportion of success observations in the second sample. + The total number of observations in the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new Z-Test for two sample proportions. + + + The number of successes in the first sample. + The total number of trials (observations) in the first sample. + The number of successes in the second sample. + The total number of trials (observations) in the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the Z-test for two sample proportions. + + + + + + Hypothesis test for two Receiver-Operating + Characteristic (ROC) curve areas (ROC-AUC). + + + + + + + + + Creates a new test for two ROC curves. + + + The first ROC curve. + The second ROC curve. + The hypothesized difference between the two areas. + The alternative hypothesis (research hypothesis) to test. + + + + + First Receiver-Operating Characteristic curve. + + + + + + First Receiver-Operating Characteristic curve. + + + + + + Gets the summed Kappa variance + for the two contingency tables. + + + + + + Gets the variance for the first Kappa value. + + + + + + Gets the variance for the second Kappa value. + + + + + + Base class for Wilcoxon's W tests. + + + + This is a base class which doesn't need to be used directly. + Instead, you may wish to call + and . + + + + + + + + + + + Creates a new Wilcoxon's W+ test. + + + The signs for the sample differences. + The differences between samples. + The distribution tail to test. + + + + + Creates a new Wilcoxon's W+ test. + + + + + + Computes the Wilcoxon Signed-Rank test. + + + + + + Computes the Wilcoxon Signed-Rank test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the number of samples being tested. + + + + + + Gets the signs for each of the differences. + + + + + + Gets the differences between the samples. + + + + + + Gets the rank statistics for the differences. + + + + + + Mann-Whitney-Wilcoxon test for unpaired samples. + + + + + The Mann–Whitney U test (also called the Mann–Whitney–Wilcoxon (MWW), + Wilcoxon rank-sum test, or Wilcoxon–Mann–Whitney test) is a non-parametric + test of the null hypothesis that two populations are the same against + an alternative hypothesis, especially that a particular population tends + to have larger values than the other. + + + It has greater efficiency than the t-test on + non-normal distributions, such as a mixture + of normal distributions, and it is + nearly as efficient as the t-test on normal + distributions. + + + + + The following example comes from Richard Lowry's page at + http://vassarstats.net/textbook/ch11a.html. As stated by + Richard, this example deals with persons seeking treatment + by claustrophobia. Those persons are randomly divided into + two groups, and each group receive a different treatment + for the disorder. + + + The hypothesis would be that treatment A would more effective + than B. To check this hypothesis, we can use Mann-Whitney's Test + to compare the medians of both groups. + + + // Claustrophobia test scores for people treated with treatment A + double[] sample1 = { 4.6, 4.7, 4.9, 5.1, 5.2, 5.5, 5.8, 6.1, 6.5, 6.5, 7.2 }; + + // Claustrophobia test scores for people treated with treatment B + double[] sample2 = { 5.2, 5.3, 5.4, 5.6, 6.2, 6.3, 6.8, 7.7, 8.0, 8.1 }; + + // Create a new Mann-Whitney-Wilcoxon's test to compare the two samples + MannWhitneyWilcoxonTest test = new MannWhitneyWilcoxonTest(sample1, sample2, + TwoSampleHypothesis.FirstValueIsSmallerThanSecond); + + double sum1 = test.RankSum1; // 96.5 + double sum2 = test.RankSum2; // 134.5 + + double statistic1 = test.Statistic1; // 79.5 + double statistic2 = test.Statistic2; // 30.5 + + double pvalue = test.PValue; // 0.043834132843420748 + + // Check if the test was significant + bool significant = test.Significant; // true + + + + + + + + + + + + Tests whether two samples comes from the + same distribution without assuming normality. + + + The first sample. + The second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the Mann-Whitney-Wilcoxon test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the number of samples in the first sample. + + + + + + Gets the number of samples in the second sample. + + + + + + Gets the rank statistics for the first sample. + + + + + + Gets the rank statistics for the second sample. + + + + + + Gets the sum of ranks for the first sample. Often known as Ta. + + + + + + Gets the sum of ranks for the second sample. Often known as Tb. + + + + + + Gets the difference between the expected value for + the observed value of and its + expected value under the null hypothesis. Often known as Ua. + + + + + + Gets the difference between the expected value for + the observed value of and its + expected value under the null hypothesis. Often known as Ub. + + + + + + Common interface for power analysis objects. + + + + + The power of a statistical test is the probability that it correctly rejects + the null hypothesis when the null hypothesis is false. That is, + + + power = P(reject null hypothesis | null hypothesis is false) + + + + It can be equivalently thought of as the probability of correctly accepting the + alternative hypothesis when the alternative hypothesis is true - that is, the ability + of a test to detect an effect, if the effect actually exists. The power is in general + a function of the possible distributions, often determined by a parameter, under the + alternative hypothesis. As the power increases, the chances of a Type II error occurring + decrease. The probability of a Type II error occurring is referred to as the false + negative rate (β) and the power is equal to 1−β. The power is also known as the sensitivity. + + + + Power analysis can be used to calculate the minimum sample size required so that + one can be reasonably likely to detect an effect of a given size. Power analysis + can also be used to calculate the minimum effect size that is likely to be detected + in a study using a given sample size. In addition, the concept of power is used to + make comparisons between different statistical testing procedures: for example, + between a parametric and a nonparametric test of the same hypothesis. There is also + the concept of a power function of a test, which is the probability of rejecting the + null when the null is true. + + + References: + + + Wikipedia, The Free Encyclopedia. Statistical power. Available on: + http://en.wikipedia.org/wiki/Statistical_power + + + + + + + + + + Gets the test type. + + + + + + Gets the power of the test, also known as the + (1-Beta error rate) or the test's sensitivity. + + + + + + Gets the significance level + for the test. Also known as alpha. + + + + + + Gets the number of samples + considered in the test. + + + + + + Gets the effect size of the test. + + + + + + Common interface for two-sample power analysis objects. + + + + + + Gets the number of observations + contained in the first sample. + + + + + + Gets the number of observations + contained in the second sample. + + + + + + Base class for two sample power analysis methods. + This class cannot be instantiated. + + + + + + Constructs a new power analysis for a two-sample test. + + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + The power for the test under the given conditions. + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the + significance level . + + + The minimum detectable effect + size for the test under the given conditions. + + + + + Computes the minimum significance level for the test + considering the power given in , the + number of samples in and the + effect size . + + + The minimum detectable effect + size for the test under the given conditions. + + + + + Computes the recommended sample size for the test to attain + the power indicated in considering + values of and . + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Gets the minimum difference in the experiment units + to which it is possible to detect a difference. + + + The common standard deviation for the samples. + + The minimum difference in means which can be detected by the test. + + + + + Gets the minimum difference in the experiment units + to which it is possible to detect a difference. + + + The variance for the first sample. + The variance for the second sample. + + The minimum difference in means which can be detected by the test. + + + + + Gets the test type. + + + + + + Gets or sets the power of the test, also + known as the (1-Beta error rate). + + + + + + Gets or sets the significance level + for the test. Also known as alpha. + + + + + + Gets or sets the number of observations + in the first sample considered in the test. + + + + + + Gets or sets the number of observations + in the second sample considered in the test. + + + + + + Gets the total number of observations + in both samples considered in the test. + + + + + + Gets the total number of observations + in both samples considered in the test. + + + + + + Gets or sets the effect size of the test. + + + + + + Power analysis for two-sample Z-Tests. + + + + + Please take a look at the example section. + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Gets the recommended sample size for the test to attain + the power indicating in considering + values of and . + + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the significance + level . + + + + The minimum detectable effect + size for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + The proportion of observations in the second group + when compared to the first group. A proportion of 2:1 results in twice more + samples in the second group than in the first. Default is 1. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The number of observations in the first sample. + The number of observations in the second sample. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Power analysis for two-sample T-Tests. + + + + + There are different ways a power analysis test can be conducted. + + + // Let's say we have two samples, and we would like to know whether those + // samples have the same mean. For this, we can perform a two sample T-Test: + double[] A = { 5.0, 6.0, 7.9, 6.95, 5.3, 10.0, 7.48, 9.4, 7.6, 8.0, 6.22 }; + double[] B = { 5.0, 1.6, 5.75, 5.80, 2.9, 8.88, 4.56, 2.4, 5.0, 10.0 }; + + // Perform the test, assuming the samples have unequal variances + var test = new TwoSampleTTest(A, B, assumeEqualVariances: false); + + double df = test.DegreesOfFreedom; // d.f. = 14.351 + double t = test.Statistic; // t = 2.14 + double p = test.PValue; // p = 0.04999 + bool significant = test.Significant; // true + + // The test gave us an indication that the samples may + // indeed have come from different distributions (whose + // mean value is actually distinct from each other). + + // Now, we would like to perform an _a posteriori_ analysis of the + // test. When doing an a posteriori analysis, we can not change some + // characteristics of the test (because it has been already done), + // but we can measure some important features that may indicate + // whether the test is trustworthy or not. + + // One of the first things would be to check for the test's power. + // A test's power is 1 minus the probability of rejecting the null + // hypothesis when the null hypothesis is actually false. It is + // the other side of the coin when we consider that the P-value + // is the probability of rejecting the null hypothesis when the + // null hypothesis is actually true. + + // Ideally, this should be a high value: + double power = test.Analysis.Power; // 0.5376260 + + // Check how much effect we are trying to detect + double effect = test.Analysis.Effect; // 0.94566 + + // With this power, that is the minimal difference we can spot? + double sigma = Math.Sqrt(test.Variance); + double thres = test.Analysis.Effect * sigma; // 2.0700909090909 + + // This means that, using our test, the smallest difference that + // we could detect with some confidence would be something around + // 2 standard deviations. If we would like to say the samples are + // different when they are less than 2 std. dev. apart, we would + // need to do repeat our experiment differently. + + + + Another way to create the power analysis is to pass the + hypothesis test to the t-test power analysis constructor. + + + // Create an a posteriori analysis of the experiment + var analysis = new TwoSampleTTestPowerAnalysis(test); + + // When creating a power analysis, we have three things we can + // change. We can always freely configure two of those things + // and then ask the analysis to give us the third. + + // Those are: + double e = analysis.Effect; // the test's minimum detectable effect size (0.94566) + double n = analysis.TotalSamples; // the number of samples in the test (21 or (11 + 10)) + double b = analysis.Power; // the probability of committing a type-2 error (0.53) + + // Let's say we would like to create a test with 80% power. + analysis.Power = 0.8; + analysis.ComputeEffect(); // what effect could we detect? + + double detectableEffect = analysis.Effect; // we would detect a difference of 1.290514 + + + + However, to achieve this 80%, we would need to redo our experiment + more carefully. Assuming we are going to redo our experiment, we will + have more freedom about what we can change and what we can not. For + better addressing those points, we will create an a priori analysis + of the experiment: + + + // We would like to know how many samples we would need to gather in + // order to achieve a 80% power test which can detect an effect size + // of one standard deviation: + // + analysis = TwoSampleTTestPowerAnalysis.GetSampleSize + ( + variance1: A.Variance(), + variance2: B.Variance(), + delta: 1.0, // the minimum detectable difference we want + power: 0.8 // the test power that we want + ); + + // How many samples would we need in order to see the effect we need? + int n1 = (int)Math.Ceiling(analysis.Samples1); // 77 + int n2 = (int)Math.Ceiling(analysis.Samples2); // 77 + + // According to our power analysis, we would need at least 77 + // observations in each sample in order to see the effect we + // need with the required 80% power. + + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The proportion of observations in the second group + when compared to the first group. A proportion of 2:1 results in twice more + samples in the second group than in the first. Default is 1. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The first sample variance. + The second sample variance. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The proportion of observations in the second group + when compared to the first group. A proportion of 2:1 results in twice more + samples in the second group than in the first. Default is 1. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Base class for one sample power analysis methods. + This class cannot be instantiated. + + + + + + Constructs a new power analysis for a one-sample test. + + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + The power for the test under the given conditions. + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the significance + level . + + + The minimum detectable effect + size for the test under the given conditions. + + + + + Computes recommended sample size for the test to attain + the power indicated in considering + values of and . + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Gets the minimum difference in the experiment units + to which it is possible to detect a difference. + + + The standard deviation for the samples. + + The minimum difference in means which can be detected by the test. + + + + + Gets the test type. + + + + + + Gets or sets the power of the test, also + known as the (1-Beta error rate). + + + + + + Gets or sets the significance level + for the test. Also known as alpha. + + + + + + Gets or sets the number of samples + considered in the test. + + + + + + Gets or sets the effect size of the test. + + + + + + Bhapkar test of homogeneity for contingency tables. + + + + The Bhapkar test is a more powerful alternative to the + Stuart-Maxwell test. + + + This is a Chi-square kind of test. + + + References: + + + Bhapkar, V.P. (1966). A note on the equivalence of two test criteria + for hypotheses in categorical data. Journal of the American Statistical + Association, 61, 228-235. + + + + + + + + + Creates a new Bhapkar test. + + + The contingency table to test. + + + + + Gets the delta vector d used + in the test calculations. + + + + + + Gets the covariance matrix S + used in the test calculations. + + + + + + Gets the inverse covariance matrix + S^-1 used in the calculations. + + + + + + Bowker test of symmetry for contingency tables. + + + + + This is a Chi-square kind of test. + + + + + + + + Creates a new Bowker test. + + + The contingency table to test. + + + + + Kappa Test for two contingency tables. + + + + + The two-matrix Kappa test tries to assert whether the Kappa measure + of two contingency tables, each of which created by a different rater + or classification model, differs significantly. + + + This is a two sample z-test kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + + Ientilucci, Emmett (2006). "On Using and Computing the Kappa Statistic". + Available on: http://www.cis.rit.edu/~ejipci/Reports/On_Using_and_Computing_the_Kappa_Statistic.pdf + + + + + + + + + + Creates a new Two-Table Kappa test. + + + The kappa value for the first contingency table to test. + The kappa value for the second contingency table to test. + The variance of the kappa value for the first contingency table to test. + The variance of the kappa value for the second contingency table to test. + The alternative hypothesis (research hypothesis) to test. + The hypothesized difference between the two Kappa values. + + + + + Creates a new Two-Table Kappa test. + + + The first contingency table to test. + The second contingency table to test. + The hypothesized difference between the two Kappa values. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the summed Kappa variance + for the two contingency tables. + + + + + + Gets the variance for the first Kappa value. + + + + + + Gets the variance for the second Kappa value. + + + + + + Kappa Test for agreement in contingency tables. + + + + + The Kappa test tries to assert whether the Kappa measure of a + a contingency table, is significantly different from another + hypothesized value. + + + The computations used by the test are the same found in the 1969 paper by + J. L. Fleiss, J. Cohen, B. S. Everitt, in which they presented the finally + corrected version of the Kappa's variance formulae. This is contrast to the + computations traditionally found in the remote sensing literature. For those + variance computations, see the method. + + + + This is a z-test kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + J. L. Fleiss, J. Cohen, B. S. Everitt. Large sample standard errors of + kappa and weighted kappa. Psychological Bulletin, Volume: 72, Issue: 5. Washington, + DC: American Psychological Association, Pages: 323-327, 1969. + + + + + + + + + Creates a new Kappa test. + + + The estimated Kappa statistic. + The standard error of the kappa statistic. If the test is + being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error should be computed with the null hypothesis parameter set to true. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + + + + + Creates a new Kappa test. + + + The estimated Kappa statistic. + The standard error of the kappa statistic. If the test is + being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error should be computed with the null hypothesis parameter set to true. + The hypothesized value for the Kappa statistic. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + + + + + Creates a new Kappa test. + + + The contingency table to test. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + + + + + Creates a new Kappa test. + + + The contingency table to test. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + The hypothesized value for the Kappa statistic. If the test + is being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error will be computed with the null hypothesis parameter set to true. + + + + + Creates a new Kappa test. + + + The contingency table to test. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + The hypothesized value for the Kappa statistic. If the test + is being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error will be computed with the null hypothesis parameter set to true. + + + + + Compute Cohen's Kappa variance using the large sample approximation + given by Congalton, which is common in the remote sensing literature. + + + A representing the ratings. + + Kappa's variance. + + + + + Compute Cohen's Kappa variance using the large sample approximation + given by Congalton, which is common in the remote sensing literature. + + + A representing the ratings. + Kappa's standard deviation. + + Kappa's variance. + + + + + Computes the asymptotic variance for Fleiss's Kappa variance using the formulae + by (Fleiss et al, 1969) when the underlying Kappa is assumed different from zero. + + + A representing the ratings. + + Kappa's variance. + + + + + Computes the asymptotic variance for Fleiss's Kappa variance using the formulae + by (Fleiss et al, 1969). If is set to true, the + method will return the variance under the null hypothesis. + + + A representing the ratings. + Kappa's standard deviation. + True to compute Kappa's variance when the null hypothesis + is true (i.e. that the underlying kappa is zer). False otherwise. Default is false. + + Kappa's variance. + + + + + Computes the asymptotic variance for Fleiss's Kappa variance using the formulae + by (Fleiss et al, 1969). If is set to true, the + method will return the variance under the null hypothesis. + + + A representing the ratings. + Kappa's standard deviation. + True to compute Kappa's variance when the null hypothesis + is true (i.e. that the underlying kappa is zer). False otherwise. Default is false. + + Kappa's variance. + + + + + Gets the variance of the Kappa statistic. + + + + + + McNemar test of homogeneity for 2 x 2 contingency tables. + + + + + McNemar's test is a non-parametric method used on nominal data. It is applied to + 2 × 2 contingency tables with a dichotomous trait, with matched pairs of subjects, + to determine whether the row and column marginal frequencies are equal, i.e. if + the contingency table presents marginal homogeneity. + + + This is a Chi-square kind of test. + + + References: + + + Wikipedia contributors, "McNemar's test," Wikipedia, The Free Encyclopedia, + Available on: http://http://en.wikipedia.org/wiki/McNemar's_test. + + + + + + + + + Creates a new McNemar test. + + + The contingency table to test. + True to use Yate's correction of + continuity, falser otherwise. Default is false. + + + + + One-sample Kolmogorov-Smirnov (KS) test. + + + + + The Kolmogorov-Smirnov test tries to determine if a sample differs significantly + from an hypothesized theoretical probability distribution. The Kolmogorov-Smirnov + test has an interesting advantage in which it does not requires any assumptions + about the data. The distribution of the K-S test statistic does not depend on + which distribution is being tested. + + The K-S test has also the advantage of being an exact test (other tests, such as the + chi-square goodness-of-fit test depends on an adequate sample size). One disadvantage + is that it requires a fully defined distribution which should not have been estimated + from the data. If the parameters of the theoretical distribution have been estimated + from the data, the critical region of the K-S test will be no longer valid. + + This class uses an efficient and high-accuracy algorithm based on work by Richard + Simard (2010). Please see for more details. + + + References: + + + Wikipedia, The Free Encyclopedia. Kolmogorov-Smirnov Test. + Available on: http://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test + + NIST/SEMATECH e-Handbook of Statistical Methods. Kolmogorov-Smirnov Goodness-of-Fit Test. + Available on: http://www.itl.nist.gov/div898/handbook/eda/section3/eda35g.htm + + Richard Simard, Pierre L’Ecuyer. Computing the Two-Sided Kolmogorov-Smirnov Distribution. + Journal of Statistical Software. Volume VV, Issue II. Available on: + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf + + + + + + In this first example, suppose we got a new sample, and we would + like to test whether this sample has been originated from a uniform + continuous distribution. + + + double[] sample = + { + 0.621, 0.503, 0.203, 0.477, 0.710, 0.581, 0.329, 0.480, 0.554, 0.382 + }; + + // First, we create the distribution we would like to test against: + // + var distribution = UniformContinuousDistribution.Standard; + + // Now we can define our hypothesis. The null hypothesis is that the sample + // comes from a standard uniform distribution, while the alternate is that + // the sample is not from a standard uniform distribution. + // + var kstest = new KolmogorovSmirnovTest(sample, distribution); + + double statistic = kstest.Statistic; // 0.29 + double pvalue = kstest.PValue; // 0.3067 + + bool significant = kstest.Significant; // false + + + Since the null hypothesis could not be rejected, then the sample + can perhaps be from a uniform distribution. However, please note + that this doesn't means that the sample *is* from the uniform, it + only means that we could not rule out the possibility. + + + Before we could not rule out the possibility that the sample came from + a uniform distribution, which means the sample was not very far from + uniform. This would be an indicative that it would be far from what + would be expected from a Normal distribution: + + + // First, we create the distribution we would like to test against: + // + NormalDistribution distribution = NormalDistribution.Standard; + + // Now we can define our hypothesis. The null hypothesis is that the sample + // comes from a standard Normal distribution, while the alternate is that + // the sample is not from a standard Normal distribution. + // + var kstest = new KolmogorovSmirnovTest(sample, distribution); + + double statistic = kstest.Statistic; // 0.580432 + double pvalue = kstest.PValue; // 0.000999 + + bool significant = kstest.Significant; // true + + + + Since the test says that the null hypothesis should be rejected, then + this can be regarded as a strong indicative that the sample does not + comes from a Normal distribution, just as we expected. + + + + + + + + Creates a new One-Sample Kolmogorov test. + + + The sample we would like to test as belonging to the . + A fully specified distribution (which must NOT have been estimated from the data). + + + + + Creates a new One-Sample Kolmogorov test. + + + The sample we would like to test as belonging to the . + A fully specified distribution (which must NOT have been estimated from the data). + The alternative hypothesis (research hypothesis) to test. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the theoretical, hypothesized distribution for the samples, + which should have been stated before any measurements. + + + + + + Gets the empirical distribution measured from the sample. + + + + + + ANOVA's result table. + + + + This class represents the results obtained from an ANOVA experiment. + + + + + + Source of variation in an ANOVA experiment. + + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The sum of squares of the source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The mean sum of squares of the source. + The sum of squares of the source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The sum of squares of the source. + The F-Test containing the F-Statistic for the source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The sum of squares of the source. + The mean sum of squares of the source. + The F-Test containing the F-Statistic for the source. + + + + + Gets the ANOVA associated with this source. + + + + + + Gets the name of the variation source. + + + + + + Gets the sum of squares associated with the variation source. + + + + + + Gets the degrees of freedom associated with the variation source. + + + + + + Get the mean squares, or the variance, associated with the source. + + + + + + Gets the significance of the source. + + + + + + Gets the F-Statistic associated with the source's significance. + + + + + + One-way Analysis of Variance (ANOVA). + + + + The one-way ANOVA is a way to test for the equality of three or more means at the same + time by using variances. In its simplest form ANOVA provides a statistical test of whether + or not the means of several groups are all equal, and therefore generalizes t-test to more + than two groups. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + Wikipedia, The Free Encyclopedia. F-Test. + + Wikipedia, The Free Encyclopedia. One-way ANOVA. + + + + + + The following is the same example given in Wikipedia's page for the + F-Test [1]. Suppose one would like to test the effect of three levels + of a fertilizer on plant growth. + + + To achieve this goal, an experimenter has divided a set of 18 plants on + three groups, 6 plants each. Each group has received different levels of + the fertilizer under question. + + + After some months, the experimenter registers the growth for each plant: + + + double[][] samples = + { + new double[] { 6, 8, 4, 5, 3, 4 }, // records for the first group + new double[] { 8, 12, 9, 11, 6, 8 }, // records for the second group + new double[] { 13, 9, 11, 8, 7, 12 }, // records for the third group + }; + + + + Now, he would like to test whether the different fertilizer levels has + indeed caused any effect in plant growth. In other words, he would like + to test if the three groups are indeed significantly different. + + + // To do it, he runs an ANOVA test: + OneWayAnova anova = new OneWayAnova(samples); + + + + After the Anova object has been created, one can display its findings + in the form of a standard ANOVA table by binding anova.Table to a + DataGridView or any other display object supporting data binding. To + illustrate, we could use Accord.NET's DataGridBox to inspect the + table's contents. + + + DataGridBox.Show(anova.Table); + + + Result in: + + + + + The p-level for the analysis is about 0.002, meaning the test is + significant at the 5% significance level. The experimenter would + thus reject the null hypothesis, concluding there is a strong + evidence that the three groups are indeed different. Assuming the + experiment was correctly controlled, this would be an indication + that the fertilizer does indeed affect plant growth. + + + [1] http://en.wikipedia.org/wiki/F_test + + + + + + + Creates a new one-way ANOVA test. + + + The sampled values. + The independent, nominal variables. + + + + + Creates a new one-way ANOVA test. + + + The grouped sampled values. + + + + + Gets the F-Test produced by this one-way ANOVA. + + + + + + Gets the ANOVA results in the form of a table. + + + + + + Two-way ANOVA model types. + + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Fixed-effects model (Model 1). + + + + The fixed-effects model of analysis of variance, as known as model 1, applies + to situations in which the experimenter applies one or more treatments to the + subjects of the experiment to see if the response variable values change. + + This allows the experimenter to estimate the ranges of response variable values + that the treatment would generate in the population as a whole. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Random-effects model (Model 2). + + + + Random effects models are used when the treatments are not fixed. This occurs when + the various factor levels are sampled from a larger population. Because the levels + themselves are random variables, some assumptions and the method of contrasting the + treatments differ from ANOVA model 1. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Mixed-effects models (Model 3). + + + + A mixed-effects model contains experimental factors of both fixed and random-effects + types, with appropriately different interpretations and analysis for the two types. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Two-way Analysis of Variance. + + + + + The two-way ANOVA is an extension of the one-way ANOVA for two independent + variables. There are three classes of models which can also be used in the + analysis, each of which determining the interpretation of the independent + variables in the analysis. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + Carsten Dahl Mørch, ANOVA. Aalborg Universitet. Available on: + http://www.smi.hst.aau.dk/~cdahl/BiostatPhD/ANOVA.pdf + + + + + + + + + Constructs a new . + + + The samples. + The first factor labels. + The second factor labels. + The type of the analysis. + + + + + Constructs a new . + + + The samples in grouped form. + The type of the analysis. + + + + + Gets the number of observations in the sample. + + + + + + Gets the number of samples presenting the first factor. + + + + + + Gets the number of samples presenting the second factor. + + + + + Gets the number of replications of each factor. + + + + + + Gets or sets the variation sources obtained in the analysis. + + The variation sources for the data. + + + + + Gets the ANOVA results in the form of a table. + + + + + + Gets or sets the type of the model. + + The type of the model. + + + + + Variation sources associated with two-way ANOVA. + + + + + + Gets information about the first factor (A). + + + + + + Gets information about the second factor (B) source. + + + + + + Gets information about the interaction factor (AxB) source. + + + + + + Gets information about the error (within-variance) source. + + + + + + Gets information about the grouped (cells) variance source. + + + + + + Gets information about the total source of variance. + + + + + + Stuart-Maxwell test of homogeneity for K x K contingency tables. + + + + + The Stuart-Maxwell test is a generalization of + McNemar's test for multiple categories. + + + This is a Chi-square kind of test. + + + References: + + + Uebersax, John (2006). "McNemar Tests of Marginal Homogeneity". + Available on: http://www.john-uebersax.com/stat/mcnemar.htm + + Sun, Xuezheng; Yang, Zhao (2008). "Generalized McNemar's Test for Homogeneity of the Marginal + Distributions". Available on: http://www2.sas.com/proceedings/forum2008/382-2008.pdf + + + + + + + + + Creates a new Stuart-Maxwell test. + + + The contingency table to test. + + + + + Gets the delta vector d used + in the test calculations. + + + + + + Gets the covariance matrix S + used in the test calculations. + + + + + + Gets the inverse covariance matrix + S^-1 used in the calculations. + + + + + + Power analysis for one-sample T-Tests. + + + + + // When creating a power analysis, we have three things we can + // change. We can always freely configure two of those things + // and then ask the analysis to give us the third. + + var analysis = new TTestPowerAnalysis(OneSampleHypothesis.ValueIsDifferentFromHypothesis); + + // Those are: + double e = analysis.Effect; // the test's minimum detectable effect size + double n = analysis.Samples; // the number of samples in the test + double p = analysis.Power; // the probability of committing a type-2 error + + // Let's set the desired effect size and the + // number of samples so we can get the power + + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputePower(); // what will be the power of this test? + + double power = analysis.Power; // The power is going to be 0.33 (or 33%) + + // Let's set the desired power and the number + // of samples so we can get the effect size + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputeEffect(); // what would be the minimum effect size we can detect? + + double effect = analysis.Effect; // The effect will be 0.36 standard deviations. + + // Let's set the desired power and the effect + // size so we can get the number of samples + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.ComputeSamples(); + + double samples = analysis.Samples; // We would need around 199 samples. + + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The number of observations in the sample. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Power analysis for one-sample Z-Tests. + + + + // When creating a power analysis, we have three things we can + // change. We can always freely configure two of those things + // and then ask the analysis to give us the third. + + var analysis = new ZTestPowerAnalysis(OneSampleHypothesis.ValueIsDifferentFromHypothesis); + + // Those are: + double e = analysis.Effect; // the test's minimum detectable effect size + double n = analysis.Samples; // the number of samples in the test + double p = analysis.Power; // the probability of committing a type-2 error + + // Let's set the desired effect size and the + // number of samples so we can get the power + + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputePower(); // what will be the power of this test? + + double power = analysis.Power; // The power is going to be 0.34 (or 34%) + + // Let's set the desired power and the number + // of samples so we can get the effect size + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputeEffect(); // what would be the minimum effect size we can detect? + + double effect = analysis.Effect; // The effect will be 0.36 standard deviations. + + // Let's set the desired power and the effect + // size so we can get the number of samples + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.ComputeSamples(); + + double samples = analysis.Samples; // We would need around 197 samples. + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Gets the recommended sample size for the test to attain + the power indicating in considering + values of and . + + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the significance + level . + + + + The minimum detectable effect + size for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The number of observations in the sample. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Sign test for the median. + + + + + In statistics, the sign test can be used to test the hypothesis that the difference + median is zero between the continuous distributions of two random variables X and Y, + in the situation when we can draw paired samples from X and Y. It is a non-parametric + test which makes very few assumptions about the nature of the distributions under test + - this means that it has very general applicability but may lack the + statistical power of other tests such as the paired-samples + t-test or the Wilcoxon signed-rank test. + + + References: + + + Wikipedia, The Free Encyclopedia. Sign test. Available on: + http://en.wikipedia.org/wiki/Sign_test + + + + + + // This example has been adapted from the Wikipedia's page about + // the Z-Test, available from: http://en.wikipedia.org/wiki/Z-test + + // We would like to check whether a sample of 20 + // students with a median score of 96 points ... + + double[] sample = + { + 106, 115, 96, 88, 91, 88, 81, 104, 99, 68, + 104, 100, 77, 98, 96, 104, 82, 94, 72, 96 + }; + + // ... could have happened just by chance inside a + // population with an hypothesized median of 100 points. + + double hypothesizedMedian = 100; + + // So we start by creating the test: + SignTest test = new SignTest(sample, hypothesizedMedian, + OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Now, we can check whether this result would be + // unlikely under a standard significance level: + + bool significant = test.Significant; // false (so the event was likely) + + // We can also check the test statistic and its P-Value + double statistic = test.Statistic; // 5 + double pvalue = test.PValue; // 0.99039 + + + + + + + + + + + + Binomial test. + + + + + In statistics, the binomial test is an exact test of the statistical significance + of deviations from a theoretically expected distribution of observations into two + categories. The most common use of the binomial test is in the case where the null + hypothesis is that two categories are equally likely to occur (such as a coin toss). + + When there are more than two categories, and an exact test is required, the + multinomial test, based on the multinomial + distribution, must be used instead of the binomial test. + + + References: + + + Wikipedia, The Free Encyclopedia. Binomial-Test. Available from: + http://en.wikipedia.org/wiki/Binomial_test + + + + + + This is the second example from Wikipedia's page on hypothesis testing. In this example, + a person is tested for clairvoyance (ability of gaining information about something through + extra sensory perception; detecting something without using the known human senses. + + + // A person is shown the reverse of a playing card 25 times and is + // asked which of the four suits the card belongs to. Every time + // the person correctly guesses the suit of the card, we count this + // result as a correct answer. Let's suppose the person obtained 13 + // correctly answers out of the 25 cards. + + // Since each suit appears 1/4 of the time in the card deck, we + // would assume the probability of producing a correct answer by + // chance alone would be of 1/4. + + // And finally, we must consider we are interested in which the + // subject performs better than what would expected by chance. + // In other words, that the person's probability of predicting + // a card is higher than the chance hypothesized value of 1/4. + + BinomialTest test = new BinomialTest( + successes: 13, trials: 25, + hypothesizedProbability: 1.0 / 4.0, + alternate: OneSampleHypothesis.ValueIsGreaterThanHypothesis); + + Console.WriteLine("Test p-Value: " + test.PValue); // ~ 0.003 + Console.WriteLine("Significant? " + test.Significant); // True. + + + + + + + + + Tests the probability of two outcomes in a series of experiments. + + + The experimental trials. + The hypothesized occurrence probability. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the probability of two outcomes in a series of experiments. + + + The number of successes in the trials. + The total number of experimental trials. + The hypothesized occurrence probability. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a Binomial test. + + + + + + Computes the Binomial test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Computes the two-tail probability using the Wilson-Sterne rule, + which defines the tail of the distribution based on a ordering + of the null probabilities of X. (Smirnoff, 2003) + + + + References: Jeffrey S. Simonoff, Analyzing + Categorical Data, Springer, 2003 (pg 64). + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Tests the null hypothesis that the sample median is equal to a hypothesized value. + + + The number of positive samples. + The total number of samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the null hypothesis that the sample median is equal to a hypothesized value. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the one sample sign test. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis + can be rejected in favor of this alternative hypothesis. + + + + + + Wilcoxon signed-rank test for the median. + + + + + The Wilcoxon signed-rank test is a non-parametric statistical hypothesis test + used when comparing two related samples, matched samples, or repeated measurements + on a single sample to assess whether their population mean ranks differ (i.e. it is + a paired difference test). It can be used as an alternative to the paired + Student's t-test, t-test for matched pairs, or the t-test + for dependent samples when the population cannot be assumed to be normally distributed. + + + The Wilcoxon signed-rank test is not the same as the Wilcoxon rank-sum + test, although both are nonparametric and involve summation of ranks. + + + This test uses the positive W statistic, as explained in + https://onlinecourses.science.psu.edu/stat414/node/319 + + + References: + + + Wikipedia, The Free Encyclopedia. Wilcoxon signed-rank test. Available on: + http://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test + + + + + + // This example has been adapted from the Wikipedia's page about + // the Z-Test, available from: http://en.wikipedia.org/wiki/Z-test + + // We would like to check whether a sample of 20 + // students with a median score of 96 points ... + + double[] sample = + { + 106, 115, 96, 88, 91, 88, 81, 104, 99, 68, + 104, 100, 77, 98, 96, 104, 82, 94, 72, 96 + }; + + // ... could have happened just by chance inside a + // population with an hypothesized median of 100 points. + + double hypothesizedMedian = 100; + + // So we start by creating the test: + WilcoxonSignedRankTest test = new WilcoxonSignedRankTest(sample, + hypothesizedMedian, OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Now, we can check whether this result would be + // unlikely under a standard significance level: + + bool significant = test.Significant; // false (so the event was likely) + + // We can also check the test statistic and its P-Value + double statistic = test.Statistic; // 40.0 + double pvalue = test.PValue; // 0.98585347446367344 + + + + + + + + + + + + + + + Tests the null hypothesis that the sample median is equal to a hypothesized value. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Sign test for two paired samples. + + + + + This is a Binomial kind of test. + + + + + + + + + + Creates a new sign test for two samples. + + + The number of positive samples (successes). + The total number of samples (trials). + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new sign test for two samples. + + + The first sample of observations. + The second sample of observations. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the two sample sign test. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis + can be rejected in favor of this alternative hypothesis. + + + + + + Wilcoxon signed-rank test for paired samples. + + + + + + + + + Tests whether the medians of two paired samples are different. + + + The first sample. + The second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + One-sample Student's T test. + + + + + The one-sample t-test assesses whether the mean of a sample is + statistically different from a hypothesized value. + + + This test supports creating power analyses + through its property. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's T-Test. + + William M.K. Trochim. The T-Test. Research methods Knowledge Base, 2009. + Available on: http://www.le.ac.uk/bl/gat/virtualfc/Stats/ttest.html + + Graeme D. Ruxton. The unequal variance t-test is an underused alternative to Student's + t-test and the Mann–Whitney U test. Oxford Journals, Behavioral Ecology Volume 17, Issue 4, pp. + 688-690. 2006. Available on: http://beheco.oxfordjournals.org/content/17/4/688.full + + + + + + // Consider a sample generated from a Gaussian + // distribution with mean 0.5 and unit variance. + + double[] sample = + { + -0.849886940156521, 3.53492346633185, 1.22540422494611, 0.436945126810344, 1.21474290382610, + 0.295033941700225, 0.375855651783688, 1.98969760778547, 1.90903448980048, 1.91719241342961 + }; + + // One may rise the hypothesis that the mean of the sample is not + // significantly different from zero. In other words, the fact that + // this particular sample has mean 0.5 may be attributed to chance. + + double hypothesizedMean = 0; + + // Create a T-Test to check this hypothesis + TTest test = new TTest(sample, hypothesizedMean, + OneSampleHypothesis.ValueIsDifferentFromHypothesis); + + // Check if the mean is significantly different + test.Significant should be true + + // Now, we would like to test if the sample mean is + // significantly greater than the hypothesized zero. + + // Create a T-Test to check this hypothesis + TTest greater = new TTest(sample, hypothesizedMean, + OneSampleHypothesis.ValueIsGreaterThanHypothesis); + + // Check if the mean is significantly larger + greater.Significant should be true + + // Now, we would like to test if the sample mean is + // significantly smaller than the hypothesized zero. + + // Create a T-Test to check this hypothesis + TTest smaller = new TTest(sample, hypothesizedMean, + OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Check if the mean is significantly smaller + smaller.Significant should be false + + + + + + + + + + + + + + + Gets a confidence interval for the estimated value + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The test statistic. + The degrees of freedom for the test distribution. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The estimated value (θ). + The standard error of the estimation (SE). + The hypothesized value (θ'). + The degrees of freedom for the test distribution. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a T-Test. + + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The sample's mean value. + The standard deviation for the samples. + The number of observations in the sample. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the T-Test. + + + + + + Computes the T-test. + + + + + + Computes the T-test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + The tail of the test distribution. + The test distribution. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + The tail of the test distribution. + The test distribution. + + The test statistic which would generate the given p-value. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the standard error of the estimated value. + + + + + + Gets the estimated parameter value, such as the sample's mean value. + + + + + + Gets the hypothesized parameter value. + + + + + + Gets the 95% confidence interval for the . + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Two-sample Kolmogorov-Smirnov (KS) test. + + + + + The Kolmogorov-Smirnov test tries to determine if two samples have been + drawn from the same probability distribution. The Kolmogorov-Smirnov test + has an interesting advantage in which it does not requires any assumptions + about the data. The distribution of the K-S test statistic does not depend + on which distribution is being tested. + + The K-S test has also the advantage of being an exact test (other tests, such as the + chi-square goodness-of-fit test depends on an adequate sample size). One disadvantage + is that it requires a fully defined distribution which should not have been estimated + from the data. If the parameters of the theoretical distribution have been estimated + from the data, the critical region of the K-S test will be no longer valid. + + The two-sample KS test is one of the most useful and general nonparametric methods for + comparing two samples, as it is sensitive to differences in both location and shape of + the empirical cumulative distribution functions of the two samples. + + This class uses an efficient and high-accuracy algorithm based on work by Richard + Simard (2010). Please see for more details. + + + References: + + + Wikipedia, The Free Encyclopedia. Kolmogorov-Smirnov Test. + Available at: http://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test + + NIST/SEMATECH e-Handbook of Statistical Methods. Kolmogorov-Smirnov Goodness-of-Fit Test. + Available at: http://www.itl.nist.gov/div898/handbook/eda/section3/eda35g.htm + + Richard Simard, Pierre L’Ecuyer. Computing the Two-Sided Kolmogorov-Smirnov Distribution. + Journal of Statistical Software. Volume VV, Issue II. Available at: + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf + + Kirkman, T.W. (1996) Statistics to Use. Available at: + http://www.physics.csbsju.edu/stats/ + + + + + + In the following example, we will be creating a K-S test to verify + if two samples have been drawn from different populations. In this + example, we will first generate a number of samples from two different + distributions and then check if the K-S can indeed see the difference + between them: + + // Generate 15 points from a Normal distribution with mean 5 and sigma 2 + double[] sample1 = new NormalDistribution(mean: 5, stdDev: 1).Generate(25); + + // Generate 15 points from an uniform distribution from 0 to 10 + double[] sample2 = new UniformContinuousDistribution(a: 0, b: 10).Generate(25); + + // Now we can create a K-S test and test the unequal hypothesis: + var test = new TwoSampleKolmogorovSmirnovTest(sample1, sample2, + TwoSampleKolmogorovSmirnovTestHypothesis.SamplesDistributionsAreUnequal); + + bool significant = test.Significant; // outputs true + + + + The following example comes from the stats page of the College of Saint Benedict and Saint John's + University (Kirkman, 1996). It is a very interesting example as it shows a case in which a t-test + fails to see a difference between the samples because of the non-normality of the sample's + distributions. The Kolmogorov-Smirnov nonparametric test, on the other hand, succeeds. + + The example deals with the preference of bees between two nearby blooming trees in an empty field. + The experimenter has collected data measuring how much time does a bee spent near a particular + tree. The time starts to be measured when a bee first touches the tree, and is stopped when the bee + moves more than 1 meter far from it. The samples below represents the measured time, in seconds, of + the observed bees for each of the trees. + + + double[] redwell = + { + 23.4, 30.9, 18.8, 23.0, 21.4, 1, 24.6, 23.8, 24.1, 18.7, 16.3, 20.3, + 14.9, 35.4, 21.6, 21.2, 21.0, 15.0, 15.6, 24.0, 34.6, 40.9, 30.7, + 24.5, 16.6, 1, 21.7, 1, 23.6, 1, 25.7, 19.3, 46.9, 23.3, 21.8, 33.3, + 24.9, 24.4, 1, 19.8, 17.2, 21.5, 25.5, 23.3, 18.6, 22.0, 29.8, 33.3, + 1, 21.3, 18.6, 26.8, 19.4, 21.1, 21.2, 20.5, 19.8, 26.3, 39.3, 21.4, + 22.6, 1, 35.3, 7.0, 19.3, 21.3, 10.1, 20.2, 1, 36.2, 16.7, 21.1, 39.1, + 19.9, 32.1, 23.1, 21.8, 30.4, 19.62, 15.5 + }; + + double[] whitney = + { + 16.5, 1, 22.6, 25.3, 23.7, 1, 23.3, 23.9, 16.2, 23.0, 21.6, 10.8, 12.2, + 23.6, 10.1, 24.4, 16.4, 11.7, 17.7, 34.3, 24.3, 18.7, 27.5, 25.8, 22.5, + 14.2, 21.7, 1, 31.2, 13.8, 29.7, 23.1, 26.1, 25.1, 23.4, 21.7, 24.4, 13.2, + 22.1, 26.7, 22.7, 1, 18.2, 28.7, 29.1, 27.4, 22.3, 13.2, 22.5, 25.0, 1, + 6.6, 23.7, 23.5, 17.3, 24.6, 27.8, 29.7, 25.3, 19.9, 18.2, 26.2, 20.4, + 23.3, 26.7, 26.0, 1, 25.1, 33.1, 35.0, 25.3, 23.6, 23.2, 20.2, 24.7, 22.6, + 39.1, 26.5, 22.7 + }; + + // Create a t-test as a first attempt. + var t = new TwoSampleTTest(redwell, whitney); + + Console.WriteLine("T-Test"); + Console.WriteLine("Test p-value: " + t.PValue); // ~0.837 + Console.WriteLine("Significant? " + t.Significant); // false + + // Create a non-parametric Kolmogorov-Smirnov test + var ks = new TwoSampleKolmogorovSmirnovTest(redwell, whitney); + + Console.WriteLine("KS-Test"); + Console.WriteLine("Test p-value: " + ks.PValue); // ~0.038 + Console.WriteLine("Significant? " + ks.Significant); // true + + + + + + + + + + Creates a new Two-Sample Kolmogorov test. + + + The first sample. + The second sample. + + + + + Creates a new Two-Sample Kolmogorov test. + + + The first sample. + The second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the first empirical distribution being tested. + + + + + + Gets the second empirical distribution being tested. + + + + + + Wald's Test using the Normal distribution. + + + + + The Wald test is a parametric statistical test named after Abraham Wald + with a great variety of uses. Whenever a relationship within or between + data items can be expressed as a statistical model with parameters to be + estimated from a sample, the Wald test can be used to test the true value + of the parameter based on the sample estimate. + + + Under the Wald statistical test, the maximum likelihood estimate of the + parameter(s) of interest θ is compared with the proposed value θ', with + the assumption that the difference between the two will be approximately + normal. + + + References: + + + Wikipedia, The Free Encyclopedia. Wald Test. Available on: + http://en.wikipedia.org/wiki/Wald_test + + + + + + + + + + + Constructs a Wald's test. + + + The test statistic, as given by (θ-θ')/SE. + + + + + Constructs a Wald's test. + + + The estimated value (θ). + The hypothesized value (θ'). + The standard error of the estimation (SE). + + + + + Hypothesis type + + + + The type of the hypothesis being made expresses the way in + which a value of a parameter may deviate from that assumed + in the null hypothesis. It can either state that a value is + higher, lower or simply different than the one assumed under + the null hypothesis. + + + + + + The test considers the two tails from a probability distribution. + + + + The two-tailed test is a statistical test in which a given statistical + hypothesis, H0 (the null hypothesis), will be rejected when the value of + the test statistic is either sufficiently small or sufficiently large. + + + + + + The test considers the upper tail from a probability distribution. + + + + The one-tailed, upper tail test is a statistical test in which a given + statistical hypothesis, H0 (the null hypothesis), will be rejected when + the value of the test statistic is sufficiently large. + + + + + + The test considers the lower tail from a probability distribution. + + + + The one-tailed, lower tail test is a statistical test in which a given + statistical hypothesis, H0 (the null hypothesis), will be rejected when + the value of the test statistic is sufficiently small. + + + + + + Common test Hypothesis for one sample tests, such + as and . + + + + + + Tests if the mean (or the parameter under test) + is significantly different from the hypothesized + value, without considering the direction for this + difference. + + + + + + Tests if the mean (or the parameter under test) + is significantly greater (larger, bigger) than + the hypothesized value. + + + + + + Tests if the mean (or the parameter under test) + is significantly smaller (lesser) than the + hypothesized value. + + + + + + Common test Hypothesis for two sample tests, such as + and . + + + + + + Tests if the mean (or the parameter under test) of + the first sample is different from the mean of the + second sample, without considering any particular + direction for the difference. + + + + + + Tests if the mean (or the parameter under test) of + the first sample is greater (larger, bigger) than + the mean of the second sample. + + + + + + Tests if the mean (or the parameter under test) of + the first sample is smaller (lesser) than the mean + of the second sample. + + + + + + Hypothesis for the one-sample Kolmogorov-Smirnov test. + + + + + + Tests whether the sample's distribution is + different from the reference distribution. + + + + + + Tests whether the distribution of one sample is greater + than the reference distribution, in a statistical sense. + + + + + + Tests whether the distribution of one sample is smaller + than the reference distribution, in a statistical sense. + + + + + + Test hypothesis for the two-sample Kolmogorov-Smirnov tests. + + + + + + Tests whether samples have been drawn + from significantly unequal distributions. + + + + + + Tests whether the distribution of one sample is + greater than the other, in a statistical sense. + + + + + + Tests whether the distribution of one sample is + smaller than the other, in a statistical sense. + + + + + + Sample weight types. + + + + + + Weights should be ignored. + + + + + + Weights are integers representing how many times a sample should repeat itself. + + + + + + Weights are fractional numbers that sum up to one. + + + + + + If weights sum up to one, they are handled as fractional + weights. If they sum to a whole number, they are handled as + integer repetition counts. + + + + + + Scatter Plot class. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + + Gets the integer label associated with this class. + + + + + + Gets the indices of all points of this class. + + + + + + Gets all X values of this class. + + + + + + Gets all Y values of this class. + + + + + + Gets or sets the class' text label. + + + + + + Collection of Histogram bins. This class cannot be instantiated. + + + + + + Searches for a bin containing the specified value. + + + The value to search for. + + The histogram bin containing the searched value. + + + + + Attempts to find the index of the bin containing the specified value. + + + The value to search for. + + The index of the bin containing the specified value. + + + + + Histogram Bin + + + + + A "bin" is a container, where each element stores the total number of observations of a sample + whose values lie within a given range. A histogram of a sample consists of a list of such bins + whose range does not overlap with each other; or in other words, bins that are mutually exclusive. + + Unless is true, the ranges of all bins i are + defined as Edge[i] <= x < Edge[i+1]. Otherwise, the last bin will have an inclusive upper + bound (i.e. will be defined as Edge[i] <= x <= Edge[i+1]. + + + + + + Gets whether the Histogram Bin contains the given value. + + + + + + Gets the actual range of data this bin represents. + + + + + + Gets the Width (range) for this histogram bin. + + + + + + Gets the Value (number of occurrences of a variable in a range) + for this histogram bin. + + + + + + Optimum histogram bin size adjustment rule. + + + + + + Does not attempts to automatically calculate + an optimum bin width and preserves the current + histogram organization. + + + + + + Calculates the optimum bin width as 3.49σN, where σ + is the sample standard deviation and N is the number + of samples. + + + Scott, D. 1979. On optimal and data-based histograms. Biometrika, 66:605-610. + + + + + + Calculates the optimum bin width as ceiling( log2(N) + 1 )m + where N is the number of samples. The rule implicitly bases + the bin sizes on the range of the data, and can perform poorly + if n < 30. + + + + + + Calculates the optimum bin width as the square root of the + number of samples. This is the same rule used by Microsoft (c) + Excel and many others. + + + + + + Histogram. + + + + + In a more general mathematical sense, a histogram is a mapping Mi + that counts the number of observations that fall into various + disjoint categories (known as bins). + + This class represents a Histogram mapping of Discrete or Continuous + data. To use it as a discrete mapping, pass a bin size (length) of 1. + To use it as a continuous mapping, pass any real number instead. + + Currently, only a constant bin width is supported. + + + + + + Constructs an empty histogram + + + + + + Constructs an empty histogram + + + The title of this histogram. + + + + + Constructs an empty histogram + + + The values to be binned in the histogram. + + + + + Constructs an empty histogram + + + The title of this histogram. + The values to be binned in the histogram. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired width for the histogram's bins. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired number of histogram's bins. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired number of histogram's bins. + Whether to include an extra upper bin going to infinity. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired number of histogram's bins. + The desired width for the histogram's bins. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + + + + + Initializes the histogram's bins. + + + + + + Sets the histogram's bin ranges (edges). + + + + + + Actually computes the histogram. + + + + + + Computes the optimum number of bins based on a . + + + + + + Integer array implicit conversion. + + + + + + Converts this histogram into an integer array representation. + + + + + + Subtracts one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be subtracted. + + A new containing the result of this operation. + + + + + Subtracts one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be subtracted. + + A new containing the result of this operation. + + + + + Adds one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be added. + + A new containing the result of this operation. + + + + + Adds one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be added. + + A new containing the result of this operation. + + + + + Multiplies one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be multiplied. + + A new containing the result of this operation. + + + + + Multiplies one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The value to be multiplied. + + A new containing the result of this operation. + + + + + Adds a value to each histogram bin. + + + The value to be added. + + A new containing the result of this operation. + + + + + Subtracts a value to each histogram bin. + + + The value to be subtracted. + + A new containing the result of this operation. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the Bin values of this Histogram. + + + Bin index. + + The number of hits of the selected bin. + + + + + Gets the name for this Histogram. + + + + + + Gets the Bin values for this Histogram. + + + + + + Gets the Range of the values in this Histogram. + + + + + + Gets the edges of each bin in this Histogram. + + + + + + Gets the collection of bins of this Histogram. + + + + + + Gets or sets whether this histogram represents a cumulative distribution. + + + + + + Gets or sets the bin size auto adjustment rule + to be used when computing this histogram from + new data. Default is . + + + The bin size auto adjustment rule. + + + + + Gets or sets a value indicating whether the last bin + should have an inclusive upper bound. Default is true. + + + + If set to false, the last bin's range will be defined + as Edge[i] <= x < Edge[i+1]. If set to true, the + last bin will have an inclusive upper bound and be defined as + Edge[i] <= x <= Edge[i+1] instead. + + + + true if the last bin should have an inclusive upper bound; + false otherwise. + + + + + + Scatter Plot. + + + + + + Constructs an empty Scatter plot. + + + + + + Constructs an empty Scatter plot with given title. + + + Scatter plot title. + + + + + Constructs an empty scatter plot with + given title and axis names. + + + Scatter Plot title. + Title for the x-axis. + Title for the y-axis. + + + + + Constructs an empty Scatter Plot with + given title and axis names. + + + Scatter Plot title. + Title for the x-axis. + Title for the y-axis. + Title for the labels. + + + + + Computes the scatter plot. + + + Array of values. + + + + + Computes the scatter plot. + + + Array of X values. + Array of corresponding Y values. + + + + + Computes the scatter plot. + + + Array of X values. + Array of corresponding Y values. + Array of integer labels defining a class for each (x,y) pair. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + Array of integer labels defining a class for each (x,y) pair. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + Array of integer labels defining a class for each (x,y) pair. + + + + + Gets the title of the scatter plot. + + + + + + Gets the name of the X-axis. + + + + + + Gets the name of the Y-axis. + + + + + + Gets the name of the label axis. + + + + + + Gets the values associated with the X-axis. + + + + + + Gets the corresponding Y values associated with each X. + + + + + + Gets the label of each (x,y) pair. + + + + + + Gets an integer array containing the integer labels + associated with each of the classes in the scatter plot. + + + + + + Gets the class labels for each of the classes in the plot. + + + + + + Gets a collection containing information about + each of the classes presented in the scatter plot. + + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net40/Accord.Statistics.dll b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net40/Accord.Statistics.dll new file mode 100644 index 0000000000..f0be47b24 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net40/Accord.Statistics.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net40/Accord.Statistics.xml b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net40/Accord.Statistics.xml new file mode 100644 index 0000000000..7f6030165 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net40/Accord.Statistics.xml @@ -0,0 +1,58736 @@ + + + + Accord.Statistics + + + + + Contains many statistical analysis, such as PCA, + LDA, + KPCA, KDA, + PLS, ICA, + Logistic Regression and Stepwise Logistic Regression + Analyses. Also contains performance assessment analysis such as + contingency tables and ROC curves. + + + + The namespace class diagram is shown below. + + + + + + + + + Common interface for information components. Those are + present in multivariate analysis, such as + and . + + + + + + Gets the index for this component. + + + + + + Gets the proportion, or amount of information explained by this component. + + + + + + Gets the cumulative proportion of all discriminants until this component. + + + + + + Determines the method to be used in a statistical analysis. + + + + + + By choosing Center, the method will be run on the mean-centered data. + + + + In Principal Component Analysis this means the method will operate + on the Covariance matrix of the given data. + + + + + + By choosing Standardize, the method will be run on the mean-centered and + standardized data. + + + + In Principal Component Analysis this means the method + will operate on the Correlation matrix of the given data. One should always + choose to standardize when dealing with different units of variables. + + + + + + Common interface for statistical analysis. + + + + + + Computes the analysis using given source data and parameters. + + + + + + Common interface for descriptive measures, such as + and + . + + + + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets the variable's index. + + + + + + Gets the variable's name + + + + + + Gets the variable's total sum. + + + + + + Gets the variable's mean. + + + + + + Gets the variable's standard deviation. + + + + + + Gets the variable's median. + + + + + + Gets the variable's outer fences range. + + + + + + Gets the variable's inner fence range. + + + + + + Gets the variable's interquartile range. + + + + + + Gets the variable's mode. + + + + + + Gets the variable's variance. + + + + + + Gets the variable's skewness. + + + + + + Gets the variable's kurtosis. + + + + + + Gets the variable's standard error of the mean. + + + + + + Gets the variable's maximum value. + + + + + + Gets the variable's minimum value. + + + + + + Gets the variable's length. + + + + + + Gets the number of distinct values for the variable. + + + + + + Gets the number of samples for the variable. + + + + + + Gets the 95% confidence interval around the . + + + + + + Gets the 95% deviance interval around the . + + + + + + Gets the variable's observations. + + + + + + Common interface for projective statistical analysis. + + + + + + Common interface for multivariate statistical analysis. + + + + + + Source data used in the analysis. + + + + + + Projects new data into latent space. + + + + + + Projects new data into latent space with + given number of dimensions. + + + + + + Common interface for multivariate regression analysis. + + + + + Regression analysis attempt to express many numerical dependent + variables as a combinations of other features or measurements. + + + + + + Gets the dependent variables' values + for each of the source input points. + + + + + + Common interface for regression analysis. + + + + + Regression analysis attempt to express one numerical dependent variable + as a combinations of other features or measurements. + + When the dependent variable is a category label, the class of analysis methods + is known as discriminant analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Common interface for discriminant analysis. + + + + + Discriminant analysis attempt to express one categorical dependent variable + as a combinations of other features or measurements. + + When the dependent variable is a numerical quantity, the class of analysis methods + is known as regression analysis. + + + + + + Gets the classification labels (the dependent variable) + for each of the source input points. + + + + + + Exponential contrast function. + + + + According to Hyvärinen, the Exponential contrast function may be + used when the independent components are highly super-Gaussian or + when robustness is very important. + + + + + + + + Common interface for contrast functions. + + + + Contrast functions are used as objective functions in + neg-entropy calculations. + + + + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Initializes a new instance of the class. + + The exponential alpha constant. Default is 1. + + + + + Initializes a new instance of the class. + + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Gets the exponential alpha constant. + + + + + + Kurtosis contrast function. + + + According to using to Hyvärinen, the kurtosis contrast function is + justified on statistical grounds only for estimating sub-Gaussian + independent components when there are no outliers. + + + + + + + + Initializes a new instance of the class. + + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Log-cosh (Hyperbolic Tangent) contrast function. + + + + According to Hyvärinen, the Logcosh contrast function + is a good general-purpose contrast function. + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The log-cosh alpha constant. Default is 1. + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Gets the exponential log-cosh constant. + + + + + + Descriptive statistics analysis for circular data. + + + + + + + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + The names for the analyzed variable. + + Whether the analysis should conserve memory by doing + operations over the original array. + + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + + Whether the analysis should conserve memory by doing + operations over the original array. + + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + Names for the analyzed variables. + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + Names for the analyzed variables. + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets or sets whether all reported statistics should respect the circular + interval. For example, setting this property to false would allow + the , , + and properties report minimum and maximum values + outside the variable's allowed circular range. Default is true. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the column names from the variables in the data. + + + + + + Gets a vector containing the length of + the circular domain for each data column. + + + + + + Gets a vector containing the Mean of each data column. + + + + + + Gets a vector containing the Mode of each data column. + + + + + + Gets a vector containing the Standard Deviation of each data column. + + + + + + Gets a vector containing the Standard Error of the Mean of each data column. + + + + + + Gets the 95% confidence intervals for the . + + + + + + Gets the 95% deviance intervals for the . + + + + A deviance interval uses the standard deviation rather + than the standard error to compute the range interval + for a variable. + + + + + + Gets a vector containing the Median of each data column. + + + + + + Gets a vector containing the Variance of each data column. + + + + + + Gets a vector containing the number of distinct elements for each data column. + + + + + + Gets an array containing the Ranges of each data column. + + + + + + Gets an array containing the interquartile range of each data column. + + + + + + Gets an array containing the inner fences of each data column. + + + + + + Gets an array containing the outer fences of each data column. + + + + + + Gets an array containing the sum of each data column. If + the analysis has been computed in place, this will contain + the sum of the transformed angle values instead. + + + + + + Gets an array containing the sum of cosines for each data column. + + + + + + Gets an array containing the sum of sines for each data column. + + + + + + Gets an array containing the circular concentration for each data column. + + + + + + Gets an array containing the skewness for of each data column. + + + + + + Gets an array containing the kurtosis for of each data column. + + + + + + Gets the number of samples (or observations) in the data. + + + + + + Gets the number of variables (or features) in the data. + + + + + + Gets a collection of DescriptiveMeasures objects that can be bound to a DataGridView. + + + + + + Circular descriptive measures for a variable. + + + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets the circular analysis + that originated this measure. + + + + + + Gets the variable's index. + + + + + + Gets the variable's name + + + + + + Gets the variable's total sum. + + + + + + Gets the variable's mean. + + + + + + Gets the variable's standard deviation. + + + + + + Gets the variable's median. + + + + + + Gets the variable's mode. + + + + + + Gets the variable's outer fences range. + + + + + + Gets the variable's inner fence range. + + + + + + Gets the variable's interquartile range. + + + + + + Gets the variable's variance. + + + + + + Gets the variable's maximum value. + + + + + + Gets the variable's minimum value. + + + + + + Gets the variable's length. + + + + + + Gets the number of distinct values for the variable. + + + + + + Gets the number of samples for the variable. + + + + + + Gets the sum of cosines for the variable. + + + + + + Gets the sum of sines for the variable. + + + + + + Gets the transformed variable's observations. + + + + + + Gets the variable's standard error of the mean. + + + + + + Gets the 95% confidence interval around the . + + + + + + Gets the 95% deviance interval around the . + + + + + + Gets the variable's observations. + + + + + + Gets the variable skewness. + + + + + + Gets the variable kurtosis. + + + + + + Collection of descriptive measures. + + + + + + + + + Gets the key for item. + + + + + + Distribution fitness analysis. + + + + + + Initializes a new instance of the class. + + + The observations to be fitted against candidate distributions. + + + + + Computes the analysis. + + + + + + Gets all univariate distributions (types implementing + ) loaded in the + current domain. + + + + + + Gets all multivariate distributions (types implementing + ) loaded in the + current domain. + + + + + + Gets a distribution's name in a human-readable form. + + + The distribution whose name must be obtained. + + + + + Gets the tested distribution names. + + + + The distribution names. + + + + + + Gets the estimated distributions. + + + + The estimated distributions. + + + + + + Gets the Kolmogorov-Smirnov tests + performed against each of the candidate distributions. + + + + + + Gets the Chi-Square tests + performed against each of the candidate distributions. + + + + + + Gets the Anderson-Darling tests + performed against each of the candidate distributions. + + + + + + Gets the rank of each distribution according to the Kolmogorov-Smirnov + test statistic. A value of 0 means the distribution is the most likely. + + + + + + Gets the rank of each distribution according to the Chi-Square + test statistic. A value of 0 means the distribution is the most likely. + + + + + + Gets the rank of each distribution according to the Anderson-Darling + test statistic. A value of 0 means the distribution is the most likely. + + + + + + Gets the goodness of fit for each candidate distribution. + + + + + + Goodness-of-fit result for a given distribution. + + + + + + Compares the current object with another object of the same type. + + + An object to compare with this object. + + + A value that indicates the relative order of the objects being compared. The return value + has the following meanings: Value Meaning Less than zero This object is less than the + parameter.Zero This object is equal to . + Greater than zero This object is greater than . + + + + + + Compares the current instance with another object of the same type and returns an + integer that indicates whether the current instance precedes, follows, or occurs in + the same position in the sort order as the other object. + + + An object to compare with this instance. + + + A value that indicates the relative order of the objects being compared. The return + value has these meanings: Value Meaning Less than zero This instance precedes + in the sort order. Zero This instance occurs in the same position in the sort order as + . Greater than zero This instance follows + in the sort order. + + + + + + Gets the analysis that has produced this measure. + + + + + + Gets the variable's index. + + + + + + Gets the distribution name + + + + + + Gets the measured distribution. + + + + The distribution associated with this good-of-fit measure. + + + + + + Gets the value of the Kolmogorov-Smirnov statistic. + + + + The Kolmogorov-Smirnov for the . + + + + + + Gets the rank of this distribution according to the + Kolmogorov-Smirnov test. + + + + An integer value where 0 indicates most probable. + + + + + + Gets the value of the Chi-Square statistic. + + + + The Chi-Square for the . + + + + + + Gets the rank of this distribution according to the + Chi-Square test. + + + + An integer value where 0 indicates most probable. + + + + + + Gets the value of the Anderson-Darling statistic. + + + + The Anderson-Darling for the . + + + + + + Gets the rank of this distribution according to the + Anderson-Darling test. + + + + An integer value where 0 indicates most probable. + + + + + + Collection of goodness-of-fit measures. + + + + + + + + Gets the key for item. + + + + + + Multinomial Logistic Regression Analysis + + + + + In statistics, multinomial logistic regression is a classification method that + generalizes logistic regression to multiclass problems, i.e. with more than two + possible discrete outcomes.[1] That is, it is a model that is used to predict the + probabilities of the different possible outcomes of a categorically distributed + dependent variable, given a set of independent variables (which may be real-valued, + binary-valued, categorical-valued, etc.). + + + Multinomial logistic regression is known by a variety of other names, including + multiclass LR, multinomial regression,[2] softmax regression, multinomial logit, + maximum entropy (MaxEnt) classifier, conditional maximum entropy model.para> + + + References: + + + Wikipedia contributors. "Multinomial logistic regression." Wikipedia, The Free Encyclopedia, 1st April, 2015. + Available at: https://en.wikipedia.org/wiki/Multinomial_logistic_regression + + + + // TODO: Write example + + + + + Constructs a Multinomial Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Multinomial Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The names of the input variables. + The names of the output variables. + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The names of the input variables. + The names of the output variables. + + + + + Computes the Multiple Linear Regression Analysis. + + + + + + Source data used in the analysis. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting values obtained by the regression model. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Gets the number of outputs in the regression problem. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Regression model created + and evaluated by this analysis. + + + + + + Gets the value of each coefficient. + + + + + + Gets the Log-Likelihood for the model. + + + + + + Gets the Chi-Square (Likelihood Ratio) Test for the model. + + + + + + Gets the Deviance of the model. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Gets the collection of coefficients of the model. + + + + + + + Represents a Multinomial Logistic Regression coefficient found in the + multinomial logistic + regression analysis allowing it to be bound to controls like the + DataGridView. + + + This class cannot be instantiated. + + + + + + Creates a regression coefficient representation. + + + The analysis to which this coefficient belongs. + The coefficient's index. + The coefficient's category. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the Index of this coefficient on the original analysis coefficient collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the name of the category that this coefficient belongs to. + + + + + + Gets the name for the current coefficient. + + + + + + Gets the coefficient value. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the confidence interval. + + + + + + Gets the lower limit for the confidence interval. + + + + + + Represents a Collection of Multinomial Logistic Regression Coefficients found in the + . This class cannot be instantiated. + + + + + + Weighted confusion matrix for multi-class decision problems. + + + + + References: + + + + R. G. Congalton. A Review of Assessing the Accuracy of Classifications + of Remotely Sensed Data. Available on: http://uwf.edu/zhu/evr6930/2.pdf + + + G. Banko. A Review of Assessing the Accuracy of Classifications of Remotely Sensed Data and + of Methods Including Remote Sensing Data in Forest Inventory. Interim report. Available on: + http://www.iiasa.ac.at/Admin/PUB/Documents/IR-98-081.pdf + + + + + + + General confusion matrix for multi-class decision problems. + + + + + References: + + + + R. G. Congalton. A Review of Assessing the Accuracy of Classifications + of Remotely Sensed Data. Available on: http://uwf.edu/zhu/evr6930/2.pdf + + + G. Banko. A Review of Assessing the Accuracy of Classifications of Remotely Sensed Data and + of Methods Including Remote Sensing Data in Forest Inventory. Interim report. Available on: + http://www.iiasa.ac.at/Admin/PUB/Documents/IR-98-081.pdf + + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Combines several confusion matrices into one single matrix. + + + The matrices to combine. + + + + + Gets the confusion matrix, in which each element e_ij + represents the number of elements from class i classified + as belonging to class j. + + + + + + Gets the number of samples. + + + + + + Gets the number of classes. + + + + + + Gets the row totals. + + + + + + Gets the column totals. + + + + + + Gets the row marginals (proportions). + + + + + + Gets the column marginals (proportions). + + + + + + Gets the diagonal of the confusion matrix. + + + + + + Gets the maximum number of correct + matches (the maximum over the diagonal) + + + + + + Gets the minimum number of correct + matches (the minimum over the diagonal) + + + + + + Gets the confusion matrix in + terms of cell percentages. + + + + + + Gets the Kappa coefficient of performance. + + + + + + Gets the standard error of the + coefficient of performance. + + + + + + Gets the variance of the + coefficient of performance. + + + + + + Gets the variance of the + under the null hypothesis that the underlying + Kappa value is 0. + + + + + + Gets the standard error of the + under the null hypothesis that the underlying Kappa + value is 0. + + + + + + Gets the Tau coefficient of performance. + + + + + Tau-b statistic, unlike tau-a, makes adjustments for ties and + is suitable for square tables. Values of tau-b range from −1 + (100% negative association, or perfect inversion) to +1 (100% + positive association, or perfect agreement). A value of zero + indicates the absence of association. + + + References: + + + http://en.wikipedia.org/wiki/Kendall_tau_rank_correlation_coefficient + + LEVADA, Alexandre Luis Magalhães. Combinação de modelos de campos aleatórios markovianos + para classificação contextual de imagens multiespectrais [online]. São Carlos : Instituto + de Física de São Carlos, Universidade de São Paulo, 2010. Tese de Doutorado em Física Aplicada. + Disponível em: http://www.teses.usp.br/teses/disponiveis/76/76132/tde-11052010-165642/. + + MA, Z.; REDMOND, R. L. Tau coefficients for accuracy assessment of + classification of remote sensing data. + + + + + + + Phi coefficient. + + + + + The Pearson correlation coefficient (phi) ranges from −1 to +1, where + a value of +1 indicates perfect agreement, a value of -1 indicates perfect + disagreement and a value 0 indicates no agreement or relationship. + + References: + http://en.wikipedia.org/wiki/Phi_coefficient, + http://www.psychstat.missouristate.edu/introbook/sbk28m.htm + + + + + + Gets the Chi-Square statistic for the contingency table. + + + + + + Tschuprow's T association measure. + + + + + Tschuprow's T is a measure of association between two nominal variables, giving + a value between 0 and 1 (inclusive). It is closely related to + Cramér's V, coinciding with it for square contingency tables. + + References: + http://en.wikipedia.org/wiki/Tschuprow's_T + + + + + + Pearson's contingency coefficient C. + + + + + Pearson's C measures the degree of association between the two variables. However, + C suffers from the disadvantage that it does not reach a maximum of 1 or the minimum + of -1; the highest it can reach in a 2 x 2 table is .707; the maximum it can reach in + a 4 × 4 table is 0.870. It can reach values closer to 1 in contingency tables with more + categories. It should, therefore, not be used to compare associations among tables with + different numbers of categories. For a improved version of C, see . + + + References: + http://en.wikipedia.org/wiki/Contingency_table + + + + + + Sakoda's contingency coefficient V. + + + + + Sakoda's V is an adjusted version of Pearson's C + so it reaches a maximum of 1 when there is complete association in a table + of any number of rows and columns. + + References: + http://en.wikipedia.org/wiki/Contingency_table + + + + + + Cramer's V association measure. + + + + + Cramér's V varies from 0 (corresponding to no association between the variables) + to 1 (complete association) and can reach 1 only when the two variables are equal + to each other. In practice, a value of 0.1 already provides a good indication that + there is substantive relationship between the two variables. + + + References: + http://en.wikipedia.org/wiki/Cram%C3%A9r%27s_V, + http://www.acastat.com/Statbook/chisqassoc.htm + + + + + + Overall agreement. + + + + The overall agreement is the sum of the diagonal elements + of the contingency table divided by the number of samples. + + + + + + Geometric agreement. + + + + The geometric agreement is the geometric mean of the + diagonal elements of the confusion matrix. + + + + + + Chance agreement. + + + + The chance agreement tells how many samples + were correctly classified by chance alone. + + + + + + Expected values, or values that could + have been generated just by chance. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Weighted Confusion Matrix with linear weighting. + + + + + + Creates a new Weighted Confusion Matrix with linear weighting. + + + + + + Gets the Weights matrix. + + + + + + Gets the row marginals (proportions). + + + + + + Gets the column marginals (proportions). + + + + + + Gets the Kappa coefficient of performance. + + + + + + Gets the standard error of the + coefficient of performance. + + + + + + Gets the variance of the + coefficient of performance. + + + + + + Gets the variance of the + under the null hypothesis that the underlying + Kappa value is 0. + + + + + + Gets the standard error of the + under the null hypothesis that the underlying Kappa + value is 0. + + + + + + Overall agreement. + + + + + + Chance agreement. + + + + The chance agreement tells how many samples + were correctly classified by chance alone. + + + + + + Cox's Proportional Hazards Survival Analysis. + + + + + Proportional hazards models are a class of survival models in statistics. Survival models + relate the time that passes before some event occurs to one or more covariates that may be + associated with that quantity. In a proportional hazards model, the unique effect of a unit + increase in a covariate is multiplicative with respect to the hazard rate. + + + For example, taking a drug may halve one's hazard rate for a stroke occurring, or, changing + the material from which a manufactured component is constructed may double its hazard rate + for failure. Other types of survival models such as accelerated failure time models do not + exhibit proportional hazards. These models could describe a situation such as a drug that + reduces a subject's immediate risk of having a stroke, but where there is no reduction in + the hazard rate after one year for subjects who do not have a stroke in the first year of + analysis. + + + This class uses the to extract more detailed + information about a given problem, such as confidence intervals, hypothesis tests + and performance measures. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + + + // Consider the following example data, adapted from John C. Pezzullo's + // example for his great Cox's proportional hazards model example in + // JavaScript (http://www.sph.emory.edu/~cdckms/CoxPH/prophaz2.html). + + // In this data, we have three columns. The first column denotes the + // input variables for the problem. The second column, the survival + // times. And the last one is the output of the experiment (if the + // subject has died [1] or has survived [0]). + + double[,] example = + { + // input time censor + { 50, 1, 0 }, + { 70, 2, 1 }, + { 45, 3, 0 }, + { 35, 5, 0 }, + { 62, 7, 1 }, + { 50, 11, 0 }, + { 45, 4, 0 }, + { 57, 6, 0 }, + { 32, 8, 0 }, + { 57, 9, 1 }, + { 60, 10, 1 }, + }; + + // First we will extract the input, times and outputs + double[,] inputs = example.GetColumns(0); + double[] times = example.GetColumn(1); + int[] output = example.GetColumn(2).ToInt32(); + + // Now we can proceed and create the analysis + var cox = new ProportionalHazardsAnalysis(inputs, times, output); + + cox.Compute(); // compute the analysis + + // Now we can show an analysis summary + DataGridBox.Show(cox.Coefficients); + + + + The resulting table is shown below. + + + + // We can also investigate all parameters individually. For + // example the coefficients values will be available at + + double[] coef = cox.CoefficientValues; + double[] stde = cox.StandardErrors; + + // We can also obtain the hazards ratios + double[] ratios = cox.HazardRatios; + + // And other information such as the partial + // likelihood, the deviance and also make + // hypothesis tests on the parameters + + double partial = cox.LogLikelihood; + double deviance = cox.Deviance; + + // Chi-Square for whole model + ChiSquareTest chi = cox.ChiSquare; + + // Wald tests for individual parameters + WaldTest wald = cox.Coefficients[0].Wald; + + + // Finally, we can also use the model to predict + // scores for new observations (without considering time) + + double y1 = cox.Regression.Compute(new double[] { 63 }); + double y2 = cox.Regression.Compute(new double[] { 32 }); + + // Those scores can be interpreted by comparing then + // to 1. If they are greater than one, the odds are + // the patient will not survive. If the value is less + // than one, the patient is likely to survive. + + // The first value, y1, gives approximately 86.138, + // while the second value, y2, gives about 0.00072. + + + // We can also consider instant estimates for a given time: + double p1 = cox.Regression.Compute(new double[] { 63 }, 2); + double p2 = cox.Regression.Compute(new double[] { 63 }, 10); + + // Here, p1 is the score after 2 time instants, with a + // value of 0.0656. The second value, p2, is the time + // after 10 time instants, with a value of 6.2907. + + + + + + + Constructs a new Cox's Proportional Hazards Analysis. + + + The input data for the analysis. + The output data for the analysis. + The right-censoring indicative values. + + + + + Constructs a new Cox's Proportional Hazards Analysis. + + + The input data for the analysis. + The output data for the analysis. + The right-censoring indicative values. + + + + + Constructs a new Cox's Proportional Hazards Analysis. + + + The input data for the analysis. + The output, binary data for the analysis. + The right-censoring indicative values. + The names of the input variables. + The name of the time variable. + The name of the event indication variable. + + + + + Gets the Log-Likelihood Ratio between this model and another model. + + + Another proportional hazards model. + + The Likelihood-Ratio between the two models. + + + + + Computes the Proportional Hazards Analysis for an already computed regression. + + + + + + Computes the Proportional Hazards Analysis. + + + + True if the model converged, false otherwise. + + + + + + Computes the Proportional Hazards Analysis. + + + + The difference between two iterations of the regression algorithm + when the algorithm should stop. If not specified, the value of + 1e-4 will be used. The difference is calculated based on the largest + absolute parameter change of the regression. + + + + The maximum number of iterations to be performed by the regression + algorithm. + + + + True if the model converged, false otherwise. + + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Source data used in the analysis. + + + + + + Gets the time passed until the event + occurred or until the observation was + censored. + + + + + + Gets whether the event of + interest happened or not. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting probabilities obtained + by the logistic regression model. + + + + + + Gets the Proportional Hazards model created + and evaluated by this analysis. + + + + + + Gets the collection of coefficients of the model. + + + + + + Gets the Log-Likelihood for the model. + + + + + + Gets the Chi-Square (Likelihood Ratio) Test for the model. + + + + + + Gets the Deviance of the model. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the name of event occurrence variable in the model. + + + + + + Gets the Hazard Ratio for each coefficient + found during the proportional hazards. + + + + + + Gets the Standard Error for each coefficient + found during the proportional hazards. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the Likelihood-Ratio Tests for each coefficient. + + + + + + Gets the value of each coefficient. + + + + + + Gets the 95% Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Represents a Proportional Hazards Coefficient found in the Cox's Hazards model, + allowing it to be bound to controls like the DataGridView. This class cannot + be instantiated outside the . + + + + + + Gets the name for the current coefficient. + + + + + + Gets the Odds ratio for the current coefficient. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the 95% confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the 95% confidence interval. + + + + + + Gets the lower limit for the 95% confidence interval. + + + + + + Gets the coefficient value. + + + + + + Gets the Wald's test performed for this coefficient. + + + + + + Gets the Likelihood-Ratio test performed for this coefficient. + + + + + + Represents a collection of Hazard Coefficients found in the + . This class cannot be instantiated. + + + + + + Multiple Linear Regression Analysis + + + + + Linear regression is an approach to model the relationship between + a single scalar dependent variable y and one or more explanatory + variables x. This class uses a + to extract information about a given problem, such as confidence intervals, + hypothesis tests and performance measures. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + Wikipedia contributors. "Linear regression." Wikipedia, The Free Encyclopedia, 4 Nov. 2012. + Available at: http://en.wikipedia.org/wiki/Linear_regression + + + + + + // Consider the following data. An experimenter would + // like to infer a relationship between two variables + // A and B and a corresponding outcome variable R. + + double[][] example = + { + // A B R + new double[] { 6.41, 10.11, 26.1 }, + new double[] { 6.61, 22.61, 33.8 }, + new double[] { 8.45, 11.11, 52.7 }, + new double[] { 1.22, 18.11, 16.2 }, + new double[] { 7.42, 12.81, 87.3 }, + new double[] { 4.42, 10.21, 12.5 }, + new double[] { 8.61, 11.94, 77.5 }, + new double[] { 1.73, 13.13, 12.1 }, + new double[] { 7.47, 17.11, 86.5 }, + new double[] { 6.11, 15.13, 62.8 }, + new double[] { 1.42, 16.11, 17.5 }, + }; + + // For this, we first extract the input and output + // pairs. The first two columns have values for the + // input variables, and the last for the output: + + double[][] inputs = example.GetColumns(0, 1); + double[] output = example.GetColumn(2); + + // Next, we can create a new multiple linear regression for the variables + var regression = new MultipleLinearRegressionAnalysis(inputs, output, intercept: true); + + regression.Compute(); // compute the analysis + + // Now we can show a summary of analysis + DataGridBox.Show(regression.Coefficients); + + + + + + // We can also show a summary ANOVA + DataGridBox.Show(regression.Table); + + + + + + // And also extract other useful information, such + // as the linear coefficients' values and std errors: + double[] coef = regression.CoefficientValues; + double[] stde = regression.StandardErrors; + + // Coefficients of performance, such as r² + double rsquared = regression.RSquared; + + // Hypothesis tests for the whole model + ZTest ztest = regression.ZTest; + FTest ftest = regression.FTest; + + // and for individual coefficients + TTest ttest0 = regression.Coefficients[0].TTest; + TTest ttest1 = regression.Coefficients[1].TTest; + + // and also extract confidence intervals + DoubleRange ci = regression.Coefficients[0].Confidence; + + + + + + + Common interface for analyses of variance. + + + + + + + + + Gets the ANOVA results in the form of a table. + + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + True to use an intercept term, false otherwise. Default is false. + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + True to use an intercept term, false otherwise. Default is false. + The names of the input variables. + The name of the output variable. + + + + + Computes the Multiple Linear Regression Analysis. + + + + + + Source data used in the analysis. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting values obtained + by the linear regression model. + + + + + + Gets the standard deviation of the errors. + + + + + + Gets the coefficient of determination, as known as R² + + + + + + Gets the adjusted coefficient of determination, as known as R² adjusted + + + + + + Gets a F-Test between the expected outputs and results. + + + + + + Gets a Z-Test between the expected outputs and the results. + + + + + + Gets a Chi-Square Test between the expected outputs and the results. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Regression model created + and evaluated by this analysis. + + + + + + Gets the value of each coefficient. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Gets the ANOVA table for the analysis. + + + + + + Gets the collection of coefficients of the model. + + + + + + + Represents a Linear Regression coefficient found in the Multiple + Linear Regression Analysis allowing it to be bound to controls like + the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a regression coefficient representation. + + + The analysis to which this coefficient belongs. + The coefficient index. + + + + + Gets the Index of this coefficient on the original analysis coefficient collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the name for the current coefficient. + + + + + + Gets a value indicating whether this coefficient is an intercept term. + + + + true if this coefficient is the intercept; otherwise, false. + + + + + + Gets the coefficient value. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the T-test performed for this coefficient. + + + + + + Gets the F-test performed for this coefficient. + + + + + + Gets the confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the confidence interval. + + + + + + Gets the lower limit for the confidence interval. + + + + + + Represents a Collection of Linear Regression Coefficients found in the + . This class cannot be instantiated. + + + + + + Gets or sets the size of the confidence + intervals reported for the coefficients. + Default is 0.95. + + + + + + Binary decision confusion matrix. + + + + + // The correct and expected output values (as confirmed by a Gold + // standard rule, actual experiment or true verification) + int[] expected = { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 }; + + // The values as predicted by the decision system or + // the test whose performance is being measured. + int[] predicted = { 0, 0, 0, 1, 1, 0, 0, 0, 0, 1 }; + + + // In this test, 1 means positive, 0 means negative + int positiveValue = 1; + int negativeValue = 0; + + // Create a new confusion matrix using the given parameters + ConfusionMatrix matrix = new ConfusionMatrix(predicted, expected, + positiveValue, negativeValue); + + // At this point, + // True Positives should be equal to 1; + // True Negatives should be equal to 6; + // False Negatives should be equal to 1; + // False Positives should be equal to 2. + + + + + + + Constructs a new Confusion Matrix. + + + + + + Constructs a new Confusion Matrix. + + + + + + Constructs a new Confusion Matrix. + + + The values predicted by the model. + The actual, truth values from the data. + + + + + Constructs a new Confusion Matrix. + + + The values predicted by the model. + The actual, truth values from the data. + The integer label which identifies a value as positive. + + + + + Constructs a new Confusion Matrix. + + + The values predicted by the model. + The actual, truth values from the data. + The integer label which identifies a value as positive. + The integer label which identifies a value as negative. + + + + + Returns a representing this confusion matrix. + + + + A representing this confusion matrix. + + + + + + Converts this matrix into a . + + + + A with the same contents as this matrix. + + + + + + Combines several confusion matrices into one single matrix. + + + The matrices to combine. + + + + + Gets the confusion matrix in count matrix form. + + + + The table is listed as true positives, false negatives + on its first row, false positives and true negatives in + its second row. + + + + + + Gets the marginal sums for table rows. + + + + Returns a vector with the sum of true positives and + false negatives on its first position, and the sum + of false positives and true negatives on the second. + + + + + + Gets the marginal sums for table columns. + + + + Returns a vector with the sum of true positives and + false positives on its first position, and the sum + of false negatives and true negatives on the second. + + + + + + Gets the number of observations for this matrix + + + + + + Gets the number of actual positives. + + + + The number of positives cases can be computed by + taking the sum of true positives and false negatives. + + + + + + Gets the number of actual negatives + + + + The number of negatives cases can be computed by + taking the sum of true negatives and false positives. + + + + + + Gets the number of predicted positives. + + + + The number of cases predicted as positive by the + test. This value can be computed by adding the + true positives and false positives. + + + + + + Gets the number of predicted negatives. + + + + The number of cases predicted as negative by the + test. This value can be computed by adding the + true negatives and false negatives. + + + + + + Cases correctly identified by the system as positives. + + + + + + Cases correctly identified by the system as negatives. + + + + + + Cases incorrectly identified by the system as positives. + + + + + + Cases incorrectly identified by the system as negatives. + + + + + + Sensitivity, also known as True Positive Rate + + + + The Sensitivity is calculated as TPR = TP / (TP + FN). + + + + + + Specificity, also known as True Negative Rate + + + + The Specificity is calculated as TNR = TN / (FP + TN). + It can also be calculated as: TNR = (1-False Positive Rate). + + + + + + Efficiency, the arithmetic mean of sensitivity and specificity + + + + + + Accuracy, or raw performance of the system + + + + The Accuracy is calculated as + ACC = (TP + TN) / (P + N). + + + + + + Prevalence of outcome occurrence. + + + + + + Positive Predictive Value, also known as Positive Precision + + + + + The Positive Predictive Value tells us how likely is + that a patient has a disease, given that the test for + this disease is positive. + + The Positive Predictive Rate is calculated as + PPV = TP / (TP + FP). + + + + + + Negative Predictive Value, also known as Negative Precision + + + + + The Negative Predictive Value tells us how likely it is + that the disease is NOT present for a patient, given that + the patient's test for the disease is negative. + + The Negative Predictive Value is calculated as + NPV = TN / (TN + FN). + + + + + + False Positive Rate, also known as false alarm rate. + + + + + The rate of false alarms in a test. + + The False Positive Rate can be calculated as + FPR = FP / (FP + TN) or FPR = (1-specificity). + + + + + + + False Discovery Rate, or the expected false positive rate. + + + + + The False Discovery Rate is actually the expected false positive rate. + + For example, if 1000 observations were experimentally predicted to + be different, and a maximum FDR for these observations was 0.10, then + 100 of these observations would be expected to be false positives. + + The False Discovery Rate is calculated as + FDR = FP / (FP + TP). + + + + + + Matthews Correlation Coefficient, also known as Phi coefficient + + + + A coefficient of +1 represents a perfect prediction, 0 an + average random prediction and −1 an inverse prediction. + + + + + + Odds-ratio. + + + + References: http://www.iph.ufrgs.br/corpodocente/marques/cd/rd/presabs.htm + + + + + + Kappa coefficient. + + + + References: http://www.iph.ufrgs.br/corpodocente/marques/cd/rd/presabs.htm + + + + + + Gets the standard error of the + coefficient of performance. + + + + + + Gets the variance of the + coefficient of performance. + + + + + + Gets the variance of the + under the null hypothesis that the underlying + Kappa value is 0. + + + + + + Gets the standard error of the + under the null hypothesis that the underlying Kappa + value is 0. + + + + + + Diagnostic power. + + + + + + Normalized Mutual Information. + + + + + + Precision, same as the . + + + + + + Recall, same as the . + + + + + + F-Score, computed as the harmonic mean of + and . + + + + + + Expected values, or values that could + have been generated just by chance. + + + + + + Gets the Chi-Square statistic for the contingency table. + + + + + + Descriptive statistics analysis. + + + + + Descriptive statistics are used to describe the basic features of the data + in a study. They provide simple summaries about the sample and the measures. + Together with simple graphics analysis, they form the basis of virtually + every quantitative analysis of data. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + Wikipedia, The Free Encyclopedia. Descriptive Statistics. Available on: + http://en.wikipedia.org/wiki/Descriptive_statistics + + + + + + // Suppose we would like to compute descriptive + // statistics from the following data samples: + double[,] data = + { + { 1, 52, 5 }, + { 2, 12, 5 }, + { 1, 65, 5 }, + { 1, 25, 5 }, + { 2, 62, 5 }, + }; + + // Create the analysis + DescriptiveAnalysis analysis = new DescriptiveAnalysis(data); + + // Compute + analysis.Compute(); + + // Retrieve interest measures + double[] means = analysis.Means; // { 1.4, 43.2, 5.0 } + double[] modes = analysis.Modes; // { 1.0, 52.0, 5.0 } + + + + + + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + Names for the analyzed variables. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + Names for the analyzed variables. + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the column names from the variables in the data. + + + + + + Gets the mean subtracted data. + + + + + + Gets the mean subtracted and deviation divided data. Also known as Z-Scores. + + + + + + Gets the Covariance Matrix + + + + + + Gets the Correlation Matrix + + + + + + Gets a vector containing the Mean of each data column. + + + + + + Gets a vector containing the Standard Deviation of each data column. + + + + + + Gets a vector containing the Standard Error of the Mean of each data column. + + + + + + Gets the 95% confidence intervals for the . + + + + + + Gets the 95% deviance intervals for the . + + + + A deviance interval uses the standard deviation rather + than the standard error to compute the range interval + for a variable. + + + + + + Gets a vector containing the Mode of each data column. + + + + + + Gets a vector containing the Median of each data column. + + + + + + Gets a vector containing the Variance of each data column. + + + + + + Gets a vector containing the number of distinct elements for each data column. + + + + + + Gets an array containing the Ranges of each data column. + + + + + + Gets an array containing the interquartile range of each data column. + + + + + + Gets an array containing the inner fences of each data column. + + + + + + Gets an array containing the outer fences of each data column. + + + + + + Gets an array containing the sum of each data column. + + + + + + Gets an array containing the skewness for of each data column. + + + + + + Gets an array containing the kurtosis for of each data column. + + + + + + Gets the number of samples (or observations) in the data. + + + + + + Gets the number of variables (or features) in the data. + + + + + + Gets a collection of DescriptiveMeasures objects that can be bound to a DataGridView. + + + + + + Descriptive measures for a variable. + + + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets the descriptive analysis + that originated this measure. + + + + + + Gets the variable's index. + + + + + + Gets the variable's name + + + + + + Gets the variable's total sum. + + + + + + Gets the variable's mean. + + + + + + Gets the variable's standard deviation. + + + + + + Gets the variable's median. + + + + + + Gets the variable's outer fences range. + + + + + + Gets the variable's inner fence range. + + + + + + Gets the variable's interquartile range. + + + + + + Gets the variable's mode. + + + + + + Gets the variable's variance. + + + + + + Gets the variable's skewness. + + + + + + Gets the variable's kurtosis. + + + + + + Gets the variable's standard error of the mean. + + + + + + Gets the variable's maximum value. + + + + + + Gets the variable's minimum value. + + + + + + Gets the variable's length. + + + + + + Gets the number of distinct values for the variable. + + + + + + Gets the number of samples for the variable. + + + + + + Gets the 95% confidence interval around the . + + + + + + Gets the 95% deviance interval around the . + + + + + + Gets the variable's observations. + + + + + + Collection of descriptive measures. + + + + + + + + + Gets the key for item. + + + + + + FastICA's algorithms to be used in Independent Component Analysis. + + + + + + Deflation algorithm. + + + In the deflation algorithm, components are found one + at a time through a series of sequential operations. + It is particularly useful when only a small number of + components should be computed from the input data set. + + + + + + Symmetric parallel algorithm (default). + + + In the parallel (symmetric) algorithm, all components + are computed at once. This is the default algorithm for + Independent + Component Analysis. + + + + + + Independent Component Analysis (ICA). + + + + + Independent Component Analysis is a computational method for separating + a multivariate signal (or mixture) into its additive subcomponents, supposing + the mutual statistical independence of the non-Gaussian source signals. + + When the independence assumption is correct, blind ICA separation of a mixed + signal gives very good results. It is also used for signals that are not supposed + to be generated by a mixing for analysis purposes. + + A simple application of ICA is the "cocktail party problem", where the underlying + speech signals are separated from a sample data consisting of people talking + simultaneously in a room. Usually the problem is simplified by assuming no time + delays or echoes. + + An important note to consider is that if N sources are present, at least N + observations (e.g. microphones) are needed to get the original signals. + + + References: + + + Hyvärinen, A (1999). Fast and Robust Fixed-Point Algorithms for Independent Component + Analysis. IEEE Transactions on Neural Networks, 10(3),626-634. Available on: + + http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.4731 + + E. Bingham and A. Hyvärinen A fast fixed-point algorithm for independent component + analysis of complex-valued signals. Int. J. of Neural Systems, 10(1):1-8, 2000. + + FastICA: FastICA Algorithms to perform ICA and Projection Pursuit. Available on: + + http://cran.r-project.org/web/packages/fastICA/index.html + + Wikipedia, The Free Encyclopedia. Independent component analysis. Available on: + http://en.wikipedia.org/wiki/Independent_component_analysis + + + + + + // Let's create a random dataset containing + // 5000 samples of two dimensional samples. + // + double[,] source = Matrix.Random(5000, 2); + + // Now, we will mix the samples the dimensions of the samples. + // A small amount of the second column will be applied to the + // first, and vice-versa. + // + double[,] mix = + { + { 0.25, 0.25 }, + { -0.25, 0.75 }, + }; + + // mix the source data + double[,] input = source.Multiply(mix); + + // Now, we can use ICA to identify any linear mixing between the variables, such + // as the matrix multiplication we did above. After it has identified it, we will + // be able to revert the process, retrieving our original samples again + + // Create a new Independent Component Analysis + var ica = new IndependentComponentAnalysis(input); + + + // Compute it + ica.Compute(); + + // Now, we can retrieve the mixing and demixing matrices that were + // used to alter the data. Note that the analysis was able to detect + // this information automatically: + + double[,] mixingMatrix = ica.MixingMatrix; // same as the 'mix' matrix + double[,] revertMatrix = ica.DemixingMatrix; // inverse of the 'mix' matrix + + + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The FastICA algorithm to be used in the analysis. Default + is . + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is + . + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is + . + The FastICA algorithm to be used in the analysis. Default + is . + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is + . + The FastICA algorithm to be used in the analysis. Default + is . + + + + + Computes the Independent Component Analysis algorithm. + + + + + + Computes the Independent Component Analysis algorithm. + + + + + + Separates a mixture into its components (demixing). + + + + + + Separates a mixture into its components (demixing). + + + + + + Separates a mixture into its components (demixing). + + + + + + Combines components into a single mixture (mixing). + + + + + + Combines components into a single mixture (mixing). + + + + + + Deflation iterative algorithm. + + + + Returns a matrix in which each row contains + the mixing coefficients for each component. + + + + + + Parallel (symmetric) iterative algorithm. + + + + Returns a matrix in which each row contains + the mixing coefficients for each component. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Computes the maximum absolute change between two members of a matrix. + + + + + + Computes the maximum absolute change between two members of a vector. + + + + + + Source data used in the analysis. + + + + + + Gets or sets the maximum number of iterations + to perform. If zero, the method will run until + convergence. + + + The iterations. + + + + + Gets or sets the maximum absolute change in + parameters between iterations that determine + convergence. + + + + + + Gets the resulting projection of the source + data given on the creation of the analysis + into the space spawned by independent components. + + + The resulting projection in independent component space. + + + + + Gets a matrix containing the mixing coefficients for + the original source data being analyzed. Each column + corresponds to an independent component. + + + + + + Gets a matrix containing the demixing coefficients for + the original source data being analyzed. Each column + corresponds to an independent component. + + + + + + Gets the whitening matrix used to transform + the original data to have unit variance. + + + + + + Gets the Independent Components in a object-oriented structure. + + + The collection of independent components. + + + + + Gets or sets whether calculations will be performed overwriting + data in the original source matrix, using less memory. + + + + + + Gets or sets the + FastICA algorithm used by the analysis. + + + + + + Gets or sets the + Contrast function to be used by the analysis. + + + + + + Gets the column means of the original data. + + + + + + Gets the column standard deviations of the original data. + + + + + + Represents an Independent Component found in the Independent Component + Analysis, allowing it to be directly bound to controls like the DataGridView. + + + + + + Creates an independent component representation. + + + The analysis to which this component belongs. + The component index. + + + + + Gets the Index of this component on the original component collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the mixing vector for the current independent component. + + + + + + Gets the demixing vector for the current independent component. + + + + + + Gets the whitening factor for the current independent component. + + + + + + Represents a Collection of Independent Components found in the + Independent Component Analysis. This class cannot be instantiated. + + + + + + Kernel (Fisher) Discriminant Analysis. + + + + + Kernel (Fisher) discriminant analysis (kernel FDA) is a non-linear generalization + of linear discriminant analysis (LDA) using techniques of kernel methods. Using a + kernel, the originally linear operations of LDA are done in a reproducing kernel + Hilbert space with a non-linear mapping. + + The algorithm used is a multi-class generalization of the original algorithm by + Mika et al. in Fisher discriminant analysis with kernels (1999). + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + Mika et al, Fisher discriminant analysis with kernels (1999). Available on + + http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.35.9904 + + + + + + The following example creates an analysis for a set of + data specified as a jagged (double[][]) array. However, + the same can also be accomplished using multidimensional + double[,] arrays. + + + // Create some sample input data instances. This is the same + // data used in the Gutierrez-Osuna's example available on: + // http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf + + double[][] inputs = + { + // Class 0 + new double[] { 4, 1 }, + new double[] { 2, 4 }, + new double[] { 2, 3 }, + new double[] { 3, 6 }, + new double[] { 4, 4 }, + + // Class 1 + new double[] { 9, 10 }, + new double[] { 6, 8 }, + new double[] { 9, 5 }, + new double[] { 8, 7 }, + new double[] { 10, 8 } + }; + + int[] output = + { + 0, 0, 0, 0, 0, // The first five are from class 0 + 1, 1, 1, 1, 1 // The last five are from class 1 + }; + + // Now we can chose a kernel function to + // use, such as a linear kernel function. + IKernel kernel = new Linear(); + + // Then, we will create a KDA using this linear kernel. + var kda = new KernelDiscriminantAnalysis(inputs, output, kernel); + + kda.Compute(); // Compute the analysis + + + // Now we can project the data into KDA space: + double[][] projection = kda.Transform(inputs); + + // Or perform classification using: + int[] results = kda.Classify(inputs); + + + + + + + Linear Discriminant Analysis (LDA). + + + + + Linear Discriminant Analysis (LDA) is a method of finding such a linear + combination of variables which best separates two or more classes. + + In itself LDA is not a classification algorithm, although it makes use of class + labels. However, the LDA result is mostly used as part of a linear classifier. + The other alternative use is making a dimension reduction before using nonlinear + classification algorithms. + + It should be noted that several similar techniques (differing in requirements to the sample) + go together under the general name of Linear Discriminant Analysis. Described below is one of + these techniques with only two requirements: + + The sample size shall exceed the number of variables, and + Classes may overlap, but their centers shall be distant from each other. + + + + Moreover, LDA requires the following assumptions to be true: + + Independent subjects. + Normality: the variance-covariance matrix of the + predictors is the same in all groups. + + + + If the latter assumption is violated, it is common to use quadratic discriminant analysis in + the same manner as linear discriminant analysis instead. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + R. Gutierrez-Osuna, Linear Discriminant Analysis. Available on: + http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf + + + + + + The following example creates an analysis for a set of + data specified as a jagged (double[][]) array. However, + the same can also be accomplished using multidimensional + double[,] arrays. + + + // Create some sample input data instances. This is the same + // data used in the Gutierrez-Osuna's example available on: + // http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf + + double[][] inputs = + { + // Class 0 + new double[] { 4, 1 }, + new double[] { 2, 4 }, + new double[] { 2, 3 }, + new double[] { 3, 6 }, + new double[] { 4, 4 }, + + // Class 1 + new double[] { 9, 10 }, + new double[] { 6, 8 }, + new double[] { 9, 5 }, + new double[] { 8, 7 }, + new double[] { 10, 8 } + }; + + int[] output = + { + 0, 0, 0, 0, 0, // The first five are from class 0 + 1, 1, 1, 1, 1 // The last five are from class 1 + }; + + // Then, we will create a LDA for the given instances. + var lda = new LinearDiscriminantAnalysis(inputs, output); + + lda.Compute(); // Compute the analysis + + + // Now we can project the data into KDA space: + double[][] projection = lda.Transform(inputs); + + // Or perform classification using: + int[] results = lda.Classify(inputs); + + + + + + + Constructs a new Linear Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + + + + + Constructs a new Linear Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + + + + + Computes the Multi-Class Linear Discriminant Analysis algorithm. + + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + + + + Projects a given matrix into latent discriminant variable space. + + + The matrix to be projected. + + The number of discriminants to use in the projection. + + + + + + Projects a given matrix into latent discriminant variable space. + + + The matrix to be projected. + + The number of discriminants to use in the projection. + + + + + + Projects a given point into discriminant space. + + + The point to be projected. + + + + + Projects a given point into latent discriminant variable space. + + + The point to be projected. + The number of discriminant variables to use in the projection. + + + + + Returns the minimum number of discriminant space dimensions (discriminant + factors) required to represent a given percentile of the data. + + + The percentile of the data requiring representation. + The minimal number of dimensions required. + + + + + Classifies a new instance into one of the available classes. + + + + + + Classifies a new instance into one of the available classes. + + + + + + Classifies new instances into one of the available classes. + + + + + + Gets the discriminant function output for class c. + + + The class index. + The projected input. + + + + + Creates additional information about principal components. + + + + + + Returns the original supplied data to be analyzed. + + + + + + Gets the resulting projection of the source data given on + the creation of the analysis into discriminant space. + + + + + + Gets the original classifications (labels) of the source data + given on the moment of creation of this analysis object. + + + + + + Gets the mean of the original data given at method construction. + + + + + + Gets the standard mean of the original data given at method construction. + + + + + + Gets the Within-Class Scatter Matrix for the data. + + + + + + Gets the Between-Class Scatter Matrix for the data. + + + + + + Gets the Total Scatter Matrix for the data. + + + + + + Gets the Eigenvectors obtained during the analysis, + composing a basis for the discriminant factor space. + + + + + + Gets the Eigenvalues found by the analysis associated + with each vector of the ComponentMatrix matrix. + + + + + + Gets the level of importance each discriminant factor has in + discriminant space. Also known as amount of variance explained. + + + + + + The cumulative distribution of the discriminants factors proportions. + Also known as the cumulative energy of the first dimensions of the discriminant + space or as the amount of variance explained by those dimensions. + + + + + + Gets the discriminant factors in a object-oriented fashion. + + + + + + Gets information about the distinct classes in the analyzed data. + + + + + + Gets the Scatter matrix for each class. + + + + + + Gets the Mean vector for each class. + + + + + + Gets the feature space mean of the projected data. + + + + + + Gets the Standard Deviation vector for each class. + + + + + + Gets the observation count for each class. + + + + + + Constructs a new Kernel Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + The kernel to be used in the analysis. + + + + + Constructs a new Kernel Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + The kernel to be used in the analysis. + + + + + Computes the Multi-Class Kernel Discriminant Analysis algorithm. + + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + The number of discriminant dimensions to use in the projection. + + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + The number of discriminant dimensions to use in the projection. + + + + + + Gets the Kernel used in the analysis. + + + + + + Gets or sets the regularization parameter to + avoid non-singularities at the solution. + + + + + + Gets or sets the minimum variance proportion needed to keep a + discriminant component. If set to zero, all components will be + kept. Default is 0.001 (all components which contribute less + than 0.001 to the variance in the data will be discarded). + + + + + + Kernel Principal Component Analysis. + + + + + Kernel principal component analysis (kernel PCA) is an extension of principal + component analysis (PCA) using techniques of kernel methods. Using a kernel, + the originally linear operations of PCA are done in a reproducing kernel Hilbert + space with a non-linear mapping. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' + property. + + + References: + + + Heiko Hoffmann, Unsupervised Learning of Visuomotor Associations (Kernel PCA topic). + PhD thesis. 2005. Available on: http://www.heikohoffmann.de/htmlthesis/hoffmann_diss.html + + + James T. Kwok, Ivor W. Tsang. The Pre-Image Problem in Kernel Methods. 2003. Available on: + http://www.hpl.hp.com/conferences/icml2003/papers/345.pdf + + + + + + The example below shows a typical usage of the analysis. We will be replicating + the exact same example which can be found on the + documentation page. However, while we will be using a kernel, + any other kernel function could have been used. + + + // Below is the same data used on the excellent paper "Tutorial + // On Principal Component Analysis", by Lindsay Smith (2002). + + double[,] sourceMatrix = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + // Create a new linear kernel + IKernel kernel = new Linear(); + + // Creates the Kernel Principal Component Analysis of the given data + var kpca = new KernelPrincipalComponentAnalysis(sourceMatrix, kernel); + + // Compute the Kernel Principal Component Analysis + kpca.Compute(); + + // Creates a projection considering 80% of the information + double[,] components = kpca.Transform(sourceMatrix, 0.8f); + + + + + + + Principal component analysis (PCA) is a technique used to reduce + multidimensional data sets to lower dimensions for analysis. + + + + + Principal Components Analysis or the Karhunen-Loève expansion is a + classical method for dimensionality reduction or exploratory data + analysis. + + Mathematically, PCA is a process that decomposes the covariance matrix of a matrix + into two parts: Eigenvalues and column eigenvectors, whereas Singular Value Decomposition + (SVD) decomposes a matrix per se into three parts: singular values, column eigenvectors, + and row eigenvectors. The relationships between PCA and SVD lie in that the eigenvalues + are the square of the singular values and the column vectors are the same for both. + + + This class uses SVD on the data set which generally gives better numerical accuracy. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + + + The example below shows a typical usage of the analysis. However, users + often ask why the framework produces different values than other packages + such as STATA or MATLAB. After the simple introductory example below, we + will be exploring why those results are often different. + + + // Below is the same data used on the excellent paper "Tutorial + // On Principal Component Analysis", by Lindsay Smith (2002). + + double[,] sourceMatrix = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + // Creates the Principal Component Analysis of the given source + var pca = new PrincipalComponentAnalysis(sourceMatrix, AnalysisMethod.Center); + + // Compute the Principal Component Analysis + pca.Compute(); + + // Creates a projection considering 80% of the information + double[,] components = pca.Transform(sourceMatrix, 0.8f, true); + + + + + A question often asked by users is "why my matrices have inverted + signs" or "why my results differ from [another software]". In short, + despite any differences, the results are most likely correct (unless + you firmly believe you have found a bug; in this case, please fill + in a bug report). + + The example below explores, in the same steps given in Lindsay's + tutorial, anything that would cause any discrepancies between the + results given by Accord.NET and results given by other softwares. + + + // Reproducing Lindsay Smith's "Tutorial on Principal Component Analysis" + // using the framework's default method. The tutorial can be found online + // at http://www.sccg.sk/~haladova/principal_components.pdf + + // Step 1. Get some data + // --------------------- + + double[,] data = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + + // Step 2. Subtract the mean + // ------------------------- + // Note: The framework does this automatically. By default, the framework + // uses the "Center" method, which only subtracts the mean. However, it is + // also possible to remove the mean *and* divide by the standard deviation + // (thus performing the correlation method) by specifying "Standardize" + // instead of "Center" as the AnalysisMethod. + + AnalysisMethod method = AnalysisMethod.Center; // AnalysisMethod.Standardize + + + // Step 3. Compute the covariance matrix + // ------------------------------------- + // Note: Accord.NET does not need to compute the covariance + // matrix in order to compute PCA. The framework uses the SVD + // method which is more numerically stable, but may require + // more processing or memory. In order to replicate the tutorial + // using covariance matrices, please see the next example below. + + // Create the analysis using the selected method + var pca = new PrincipalComponentAnalysis(data, method); + + // Compute it + pca.Compute(); + + + // Step 4. Compute the eigenvectors and eigenvalues of the covariance matrix + // ------------------------------------------------------------------------- + // Note: Since Accord.NET uses the SVD method rather than the Eigendecomposition + // method, the Eigenvalues are not directly available. However, it is not the + // Eigenvalues themselves which are important, but rather their proportion: + + // Those are the expected eigenvalues, in descending order: + double[] eigenvalues = { 1.28402771, 0.0490833989 }; + + // And this will be their proportion: + double[] proportion = eigenvalues.Divide(eigenvalues.Sum()); + + // Those are the expected eigenvectors, + // in descending order of eigenvalues: + double[,] eigenvectors = + { + { -0.677873399, -0.735178656 }, + { -0.735178656, 0.677873399 } + }; + + // Now, here is the place most users get confused. The fact is that + // the Eigenvalue decomposition (EVD) is not unique, and both the SVD + // and EVD routines used by the framework produces results which are + // numerically different from packages such as STATA or MATLAB, but + // those are correct. + + // If v is an eigenvector, a multiple of this eigenvector (such as a*v, with + // a being a scalar) will also be an eigenvector. In the Lindsay case, the + // framework produces a first eigenvector with inverted signs. This is the same + // as considering a=-1 and taking a*v. The result is still correct. + + // Retrieve the first expected eigenvector + double[] v = eigenvectors.GetColumn(0); + + // Multiply by a scalar and store it back + eigenvectors.SetColumn(0, v.Multiply(-1)); + + // At this point, the eigenvectors should equal the pca.ComponentMatrix, + // and the proportion vector should equal the pca.ComponentProportions up + // to the 9 decimal places shown in the tutorial. + + + // Step 5. Deriving the new data set + // --------------------------------- + + double[,] actual = pca.Transform(data); + + // transformedData shown in pg. 18 + double[,] expected = new double[,] + { + { 0.827970186, -0.175115307 }, + { -1.77758033, 0.142857227 }, + { 0.992197494, 0.384374989 }, + { 0.274210416, 0.130417207 }, + { 1.67580142, -0.209498461 }, + { 0.912949103, 0.175282444 }, + { -0.099109437, -0.349824698 }, + { -1.14457216, 0.046417258 }, + { -0.438046137, 0.017764629 }, + { -1.22382056, -0.162675287 }, + }; + + // At this point, the actual and expected matrices + // should be equal up to 8 decimal places. + + + + + Some users would like to analyze huge amounts of data. In this case, + computing the SVD directly on the data could result in memory exceptions + or excessive computing times. If your data's number of dimensions is much + less than the number of observations (i.e. your matrix have less columns + than rows) then it would be a better idea to summarize your data in the + form of a covariance or correlation matrix and compute PCA using the EVD. + + The example below shows how to compute the analysis with covariance + matrices only. + + + // Reproducing Lindsay Smith's "Tutorial on Principal Component Analysis" + // using the paper's original method. The tutorial can be found online + // at http://www.sccg.sk/~haladova/principal_components.pdf + + // Step 1. Get some data + // --------------------- + + double[,] data = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + + // Step 2. Subtract the mean + // ------------------------- + // Note: The framework does this automatically + // when computing the covariance matrix. In this + // step we will only compute the mean vector. + + double[] mean = Accord.Statistics.Tools.Mean(data); + + + // Step 3. Compute the covariance matrix + // ------------------------------------- + + double[,] covariance = Accord.Statistics.Tools.Covariance(data, mean); + + // Create the analysis using the covariance matrix + var pca = PrincipalComponentAnalysis.FromCovarianceMatrix(mean, covariance); + + // Compute it + pca.Compute(); + + + // Step 4. Compute the eigenvectors and eigenvalues of the covariance matrix + //-------------------------------------------------------------------------- + + // Those are the expected eigenvalues, in descending order: + double[] eigenvalues = { 1.28402771, 0.0490833989 }; + + // And this will be their proportion: + double[] proportion = eigenvalues.Divide(eigenvalues.Sum()); + + // Those are the expected eigenvectors, + // in descending order of eigenvalues: + double[,] eigenvectors = + { + { -0.677873399, -0.735178656 }, + { -0.735178656, 0.677873399 } + }; + + // Now, here is the place most users get confused. The fact is that + // the Eigenvalue decomposition (EVD) is not unique, and both the SVD + // and EVD routines used by the framework produces results which are + // numerically different from packages such as STATA or MATLAB, but + // those are correct. + + // If v is an eigenvector, a multiple of this eigenvector (such as a*v, with + // a being a scalar) will also be an eigenvector. In the Lindsay case, the + // framework produces a first eigenvector with inverted signs. This is the same + // as considering a=-1 and taking a*v. The result is still correct. + + // Retrieve the first expected eigenvector + double[] v = eigenvectors.GetColumn(0); + + // Multiply by a scalar and store it back + eigenvectors.SetColumn(0, v.Multiply(-1)); + + // At this point, the eigenvectors should equal the pca.ComponentMatrix, + // and the proportion vector should equal the pca.ComponentProportions up + // to the 9 decimal places shown in the tutorial. Moreover, unlike the + // previous example, the eigenvalues vector should also be equal to the + // property pca.Eigenvalues. + + + // Step 5. Deriving the new data set + // --------------------------------- + + double[,] actual = pca.Transform(data); + + // transformedData shown in pg. 18 + double[,] expected = new double[,] + { + { 0.827970186, -0.175115307 }, + { -1.77758033, 0.142857227 }, + { 0.992197494, 0.384374989 }, + { 0.274210416, 0.130417207 }, + { 1.67580142, -0.209498461 }, + { 0.912949103, 0.175282444 }, + { -0.099109437, -0.349824698 }, + { -1.14457216, 0.046417258 }, + { -0.438046137, 0.017764629 }, + { -1.22382056, -0.162675287 }, + }; + + // At this point, the actual and expected matrices + // should be equal up to 8 decimal places. + + + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is . + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is . + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + + + + + Computes the Principal Component Analysis algorithm. + + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + The number of components to consider. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + The number of components to consider. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + The number of components to consider. + + + + + Reverts a set of projected data into it's original form. Complete reverse + transformation is only possible if all components are present, and, if the + data has been standardized, the original standard deviation and means of + the original matrix are known. + + + The pca transformed data. + + + + + Returns the minimal number of principal components + required to represent a given percentile of the data. + + + The percentile of the data requiring representation. + The minimal number of components required. + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Creates additional information about principal components. + + + + + + Constructs a new Principal Component Analysis from a Covariance matrix. + + + + This method may be more suitable to high dimensional problems in which + the original data matrix may not fit in memory but the covariance matrix + will. + + The mean vector for the source data. + The covariance matrix of the data. + + + + + Constructs a new Principal Component Analysis from a Correlation matrix. + + + + This method may be more suitable to high dimensional problems in which + the original data matrix may not fit in memory but the covariance matrix + will. + + The mean vector for the source data. + The standard deviation vectors for the source data. + The correlation matrix of the data. + + + + + Returns the original data supplied to the analysis. + + + The original data matrix supplied to the analysis. + + + + + Gets the resulting projection of the source + data given on the creation of the analysis + into the space spawned by principal components. + + + The resulting projection in principal component space. + + + + + Gets a matrix whose columns contain the principal components. Also known as the Eigenvectors or loadings matrix. + + + The matrix of principal components. + + + + + Gets the Principal Components in a object-oriented structure. + + + The collection of principal components. + + + + + The respective role each component plays in the data set. + + + The component proportions. + + + + + The cumulative distribution of the components proportion role. Also known + as the cumulative energy of the principal components. + + + The cumulative proportions. + + + + + Provides access to the Singular Values stored during the analysis. + If a covariance method is chosen, then it will contain an empty vector. + + + The singular values. + + + + + Provides access to the Eigenvalues stored during the analysis. + + + The Eigenvalues. + + + + + Gets the column standard deviations of the source data given at method construction. + + + + + + Gets the column mean of the source data given at method construction. + + + + + + Gets or sets the method used by this analysis. + + + + + + Gets or sets whether calculations will be performed overwriting + data in the original source matrix, using less memory. + + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + True to center the data in feature space, + false otherwise. Default is true. + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + True to center the data in feature space, + false otherwise. Default is true. + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + + + + Constructs the Kernel Principal Component Analysis. + + The source data to perform analysis. + The kernel to be used in the analysis. + + + + Constructs the Kernel Principal Component Analysis. + + The source data to perform analysis. + The kernel to be used in the analysis. + + + + + Computes the Kernel Principal Component Analysis algorithm. + + + + + + Computes the Kernel Principal Component Analysis algorithm. + + + + + + Projects a given matrix into the principal component space. + + + The matrix to be projected. The matrix should contain + variables as columns and observations of each variable as rows. + The number of components to use in the transformation. + + + + + Projects a given matrix into the principal component space. + + + The matrix to be projected. The matrix should contain + variables as columns and observations of each variable as rows. + The number of components to use in the transformation. + + + + + Reverts a set of projected data into it's original form. Complete reverse + transformation is not always possible and is not even guaranteed to exist. + + + + This method works using a closed-form MDS approach as suggested by + Kwok and Tsang. It is currently a direct implementation of the algorithm + without any kind of optimization. + + Reference: + - http://cmp.felk.cvut.cz/cmp/software/stprtool/manual/kernels/preimage/list/rbfpreimg3.html + + + The kpca-transformed data. + + + + + Reverts a set of projected data into it's original form. Complete reverse + transformation is not always possible and is not even guaranteed to exist. + + + + + This method works using a closed-form MDS approach as suggested by + Kwok and Tsang. It is currently a direct implementation of the algorithm + without any kind of optimization. + + + Reference: + - http://cmp.felk.cvut.cz/cmp/software/stprtool/manual/kernels/preimage/list/rbfpreimg3.html + + + + The kpca-transformed data. + The number of nearest neighbors to use while constructing the pre-image. + + + + + Gets the Kernel used in the analysis. + + + + + + Gets or sets whether the points should be centered in feature space. + + + + + + Gets or sets the minimum variance proportion needed to keep a + principal component. If set to zero, all components will be + kept. Default is 0.001 (all components which contribute less + than 0.001 to the variance in the data will be discarded). + + + + + + Represents a class found during Discriminant Analysis, allowing it to + be bound to controls like the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a new Class representation + + + + + + Discriminant function for the class. + + + + + + Gets the Index of this class on the original analysis collection. + + + + + + Gets the number labeling this class. + + + + + + Gets the prevalence of the class on the original data set. + + + + + + Gets the class' mean vector. + + + + + + Gets the feature-space means of the projected data. + + + + + + Gets the class' standard deviation vector. + + + + + + Gets the Scatter matrix for this class. + + + + + + Gets the indices of the rows in the original data which belong to this class. + + + + + + Gets the subset of the original data spawned by this class. + + + + + + Gets the number of observations inside this class. + + + + + + + Represents a discriminant factor found during Discriminant Analysis, + allowing it to be bound to controls like the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a new discriminant factor representation. + + + + + + Gets the index of this discriminant factor + on the original analysis collection. + + + + + + Gets the Eigenvector for this discriminant factor. + + + + + + Gets the Eigenvalue for this discriminant factor. + + + + + + Gets the proportion, or amount of information explained by this discriminant factor. + + + + + + Gets the cumulative proportion of all discriminant factors until this factor. + + + + + + + Represents a collection of Discriminants factors found in the Discriminant Analysis. + + This class cannot be instantiated. + + + + + + + Represents a collection of classes found in the Discriminant Analysis. + + This class cannot be instantiated. + + + + + + Logistic Regression Analysis. + + + + + The Logistic Regression Analysis tries to extract useful + information about a logistic regression model. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + E. F. Connor. Logistic Regression. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + C. Shalizi. Logistic Regression and Newton's Method. Lecture notes. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + A. Storkey. Learning from Data: Learning Logistic Regressors. Available on: + http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + + + + + The following example shows to create a Logistic regresion analysis using a full + dataset composed of input vectors and a binary output vector. Each input vector + has an associated label (1 or 0) in the output vector, where 1 represents a positive + label (yes, or true) and 0 represents a negative label (no, or false). + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (this is completely fictional data). + + double[][] inputs = + { + // Age Smoking + new double[] { 55, 0 }, + new double[] { 28, 0 }, + new double[] { 65, 1 }, + new double[] { 46, 0 }, + new double[] { 86, 1 }, + new double[] { 56, 1 }, + new double[] { 85, 0 }, + new double[] { 33, 0 }, + new double[] { 21, 1 }, + new double[] { 42, 1 }, + }; + + // Additionally, we also have information about whether + // or not they those patients had lung cancer. The array + // below gives 0 for those who did not, and 1 for those + // who did. + + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + // Create a Logistic Regression analysis + var regression = new LogisticRegressionAnalysis(inputs, output); + + regression.Compute(); // compute the analysis. + + // Now we can show a summary of analysis + DataGridBox.Show(regression.Coefficients); + + + + The resulting table is shown below. + + + + // We can also investigate all parameters individually. For + // example the coefficients values will be available at the + // vector + + double[] coef = regression.CoefficientValues; + + // The first value refers to the model's intercept term. We + // can also retrieve the odds ratios and standard errors: + + double[] odds = regression.OddsRatios; + double[] stde = regression.StandardErrors; + + + // Finally, we can also use the analysis to classify a new patient + double y = regression.Regression.Compute(new double[] { 87, 1 }); + + // For those inputs, the answer probability is approximately 75%. + + + + The analysis can also be created from data given in a summary form. Instead of having + one input vector associated with one positive or negative label, each input vector is + associated with the proportion of positive to negative labels in the original dataset. + + + + // Suppose we have a (fictitious) data set about patients who + // underwent cardiac surgery. The first column gives the number + // of arterial bypasses performed during the surgery. The second + // column gives the number of patients whose surgery went well, + // while the third column gives the number of patients who had + // at least one complication during the surgery. + // + int[,] data = + { + // # of stents success complications + { 1, 140, 45 }, + { 2, 130, 60 }, + { 3, 150, 31 }, + { 4, 96, 65 } + }; + + + double[][] inputs = data.GetColumn(0).ToDouble().ToArray(); + + int[] positive = data.GetColumn(1); + int[] negative = data.GetColumn(2); + + // Create a new Logistic Regression Analysis from the summary data + var regression = LogisticRegressionAnalysis.FromSummary(inputs, positive, negative); + + regression.Compute(); // compute the analysis. + + // Now we can show a summary of the analysis + DataGridBox.Show(regression.Coefficients); + + + // We can also investigate all parameters individually. For + // example the coefficients values will be available at the + // vector + + double[] coef = regression.CoefficientValues; + + // The first value refers to the model's intercept term. We + // can also retrieve the odds ratios and standard errors: + + double[] odds = regression.OddsRatios; + double[] stde = regression.StandardErrors; + + + // Finally, we can use it to estimate risk for a new patient + double y = regression.Regression.Compute(new double[] { 4 }); + + + + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The weights associated with each input vector. + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output, binary data for the analysis. + The names of the input variables. + The name of the output variable. + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output, binary data for the analysis. + The names of the input variables. + The name of the output variable. + The weights associated with each input vector. + + + + + Gets the Log-Likelihood Ratio between this model and another model. + + + Another logistic regression model. + The Likelihood-Ratio between the two models. + + + + + Computes the Logistic Regression Analysis. + + + + The likelihood surface for the logistic regression learning + is convex, so there will be only one peak. Any local maxima + will be also a global maxima. + + + + True if the model converged, false otherwise. + + + + + + Computes the Logistic Regression Analysis for an already computed regression. + + + + + + Computes the Logistic Regression Analysis. + + + The likelihood surface for the + logistic regression learning is convex, so there will be only one + peak. Any local maxima will be also a global maxima. + + + + The difference between two iterations of the regression algorithm + when the algorithm should stop. If not specified, the value of + 1e-5 will be used. The difference is calculated based on the largest + absolute parameter change of the regression. + + + + The maximum number of iterations to be performed by the regression + algorithm. + + + + True if the model converged, false otherwise. + + + + + + Creates a new from summarized data. + In summary data, instead of having a set of inputs and their associated outputs, + we have the number of times an input vector had a positive label in the data set + and how many times it had a negative label. + + + The input data. + The number of positives labels for each input vector. + The number of negative labels for each input vector. + + + A created from the given summary data. + + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Gets or sets the regularization value to be + added in the objective function. Default is + 1e-10. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting probabilities obtained + by the logistic regression model. + + + + + + Gets the sample weight associated with each input vector. + + + + + + Gets the Logistic Regression model created + and evaluated by this analysis. + + + + + + Gets the collection of coefficients of the model. + + + + + + Gets the Log-Likelihood for the model. + + + + + + Gets the Chi-Square (Likelihood Ratio) Test for the model. + + + + + + Gets the Deviance of the model. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the Odds Ratio for each coefficient + found during the logistic regression. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the Likelihood-Ratio Tests for each coefficient. + + + + Since this operation might be potentially time-consuming, the likelihood-ratio + tests will be computed on the first time this property is acessed. + + + + + + Gets the value of each coefficient. + + + + + + Gets the 95% Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Represents a Logistic Regression Coefficient found in the Logistic Regression, + allowing it to be bound to controls like the DataGridView. This class cannot + be instantiated outside the . + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the name for the current coefficient. + + + + + + Gets the Odds ratio for the current coefficient. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the 95% confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the 95% confidence interval. + + + + + + Gets the lower limit for the 95% confidence interval. + + + + + + Gets the coefficient value. + + + + + + Gets the Wald's test performed for this coefficient. + + + + + + Gets the Likelihood-Ratio test performed for this coefficient. + + + + Since this operation might be potentially time-consuming, the likelihood-ratio + tests will be computed on the first time this property is acessed. + + + + + + Represents a collection of Logistic Coefficients found in the + . This class cannot be instantiated. + + + + + + The PLS algorithm to use in the Partial Least Squares Analysis. + + + + + + Sijmen de Jong's SIMPLS algorithm. + + + The SIMPLS algorithm is considerably faster than NIPALS, especially when the number of + input variables increases; but gives slightly different results in the case of multiple + outputs. + + + + + + Traditional NIPALS algorithm. + + + + + + Partial Least Squares Regression/Analysis (a.k.a Projection To Latent Structures) + + + + + Partial least squares regression (PLS-regression) is a statistical method that bears + some relation to principal components regression; instead of finding hyperplanes of + maximum variance between the response and independent variables, it finds a linear + regression model by projecting the predicted variables and the observable variables + to a new space. Because both the X and Y data are projected to new spaces, the PLS + family of methods are known as bilinear factor models. + + + References: + + + Abdi, H. (2010). Partial least square regression, projection on latent structure regression, + PLS-Regression. Wiley Interdisciplinary Reviews: Computational Statistics, 2, 97-106. + Available in: http://www.utdallas.edu/~herve/abdi-wireCS-PLS2010.pdf + + Abdi, H. (2007). Partial least square regression (PLS regression). In N.J. Salkind (Ed.): + Encyclopedia of Measurement and Statistics. Thousand Oaks (CA): Sage. pp. 740-744. + Resource available online in: http://www.utdallas.edu/~herve/Abdi-PLS-pretty.pdf + + Martin Anderson, "A comparison of nine PLS1 algorithms". Available on: + http://onlinelibrary.wiley.com/doi/10.1002/cem.1248/pdf + + Mevik, B-H. Wehrens, R. (2007). The pls Package: Principal Component and Partial Least Squares + Regression in R. Journal of Statistical Software, Volume 18, Issue 2. + Resource available online in: http://www.jstatsoft.org/v18/i02/paper + + Garson, D. Partial Least Squares Regression (PLS). + http://faculty.chass.ncsu.edu/garson/PA765/pls.htm + + De Jong, S. (1993). SIMPLS: an alternative approach to partial least squares regression. + Chemometrics and Intelligent Laboratory Systems, 18: 251–263. + http://dx.doi.org/10.1016/0169-7439(93)85002-X + + Rosipal, Roman and Nicole Kramer. (2006). Overview and Recent Advances in Partial Least + Squares, in Subspace, Latent Structure and Feature Selection Techniques, pp 34–51. + http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.7735 + + Yi Cao. (2008). Partial Least-Squares and Discriminant Analysis: A tutorial and tool + using PLS for discriminant analysis. + + Wikipedia contributors. Partial least squares regression. Wikipedia, The Free Encyclopedia; + 2009. Available from: http://en.wikipedia.org/wiki/Partial_least_squares_regression. + + + + + + // Following the small example by Hervé Abdi (Hervé Abdi, Partial Least Square Regression), + // we will create a simple example where the goal is to predict the subjective evaluation of + // a set of 5 wines. The dependent variables that we want to predict for each wine are its + // likeability, and how well it goes with meat, or dessert (as rated by a panel of experts). + // The predictors are the price, the sugar, alcohol, and acidity content of each wine. + + + // Here we will list the inputs, or characteristics we would like to use in order to infer + // information from our wines. Each row denotes a different wine and lists its corresponding + // observable characteristics. The inputs are usually denoted by X in the PLS literature. + + double[,] inputs = + { + // Wine | Price | Sugar | Alcohol | Acidity + { 7, 7, 13, 7 }, + { 4, 3, 14, 7 }, + { 10, 5, 12, 5 }, + { 16, 7, 11, 3 }, + { 13, 3, 10, 3 }, + }; + + + // Here we will list our dependent variables. Dependent variables are the outputs, or what we + // would like to infer or predict from our available data, given a new observation. The outputs + // are usually denoted as Y in the PLS literature. + + double[,] outputs = + { + // Wine | Hedonic | Goes with meat | Goes with dessert + { 14, 7, 8 }, + { 10, 7, 6 }, + { 8, 5, 5 }, + { 2, 4, 7 }, + { 6, 2, 4 }, + }; + + + // Next, we will create our Partial Least Squares Analysis passing the inputs (values for + // predictor variables) and the associated outputs (values for dependent variables). + + // We will also be using the using the Covariance Matrix/Center method (data will only + // be mean centered but not normalized) and the SIMPLS algorithm. + PartialLeastSquaresAnalysis pls = new PartialLeastSquaresAnalysis(inputs, outputs, + AnalysisMethod.Center, PartialLeastSquaresAlgorithm.SIMPLS); + + // Compute the analysis with all factors. The number of factors + // could also have been specified in a overload of this method. + + pls.Compute(); + + // After computing the analysis, we can create a linear regression model in order + // to predict new variables. To do that, we may call the CreateRegression() method. + + MultivariateLinearRegression regression = pls.CreateRegression(); + + // After the regression has been created, we will be able to classify new instances. + // For example, we will compute the outputs for the first input sample: + + double[] y = regression.Compute(new double[] { 7, 7, 13, 7 }); + + // The y output will be very close to the corresponding output used as reference. + // In this case, y is a vector of length 3 with values { 13.98, 7.00, 7.75 }. + + + + + + + Constructs a new Partial Least Squares Analysis. + + + The input source data to perform analysis. + The output source data to perform analysis. + + + + + Constructs a new Partial Least Squares Analysis. + + + The input source data to perform analysis. + The output source data to perform analysis. + The PLS algorithm to use in the analysis. Default is . + + + + + Constructs a new Partial Least Squares Analysis. + + + The input source data to perform analysis. + The output source data to perform analysis. + The analysis method to perform. Default is . + The PLS algorithm to use in the analysis. Default is . + + + + + Computes the Partial Least Squares Analysis. + + + + + Computes the Partial Least Squares Analysis. + + + The number of factors to compute. The number of factors + should be a value between 1 and min(rows-1,cols) where + rows and columns are the number of observations and + variables in the input source data matrix. + + + + Projects a given set of inputs into latent space. + + + + + + Projects a given set of inputs into latent space. + + + + + + Projects a given set of outputs into latent space. + + + + + + Projects a given set of outputs into latent space. + + + + + + Creates a Multivariate Linear Regression model using + coefficients obtained by the Partial Least Squares. + + + + + + Creates a Multivariate Linear Regression model using + coefficients obtained by the Partial Least Squares. + + + + + + Computes PLS parameters using NIPALS algorithm. + + + The number of factors to compute. + The mean-centered (adjusted) input values X. + The mean-centered (adjusted) output values Y. + The tolerance for convergence. + + + + The algorithm implementation follows the original paper by Hervé + Abdi, with overall structure as suggested in Yi Cao's tutorial. + + + References: + + + Abdi, H. (2010). Partial least square regression, projection on latent structure regression, + PLS-Regression. Wiley Interdisciplinary Reviews: Computational Statistics, 2, 97-106. + Available in: http://www.utdallas.edu/~herve/abdi-wireCS-PLS2010.pdf + + Yi Cao. (2008). Partial Least-Squares and Discriminant Analysis: A tutorial and tool + using PLS for discriminant analysis. + + + + + + + Computes PLS parameters using SIMPLS algorithm. + + + The number of factors to compute. + The mean-centered (adjusted) input values X. + The mean-centered (adjusted) output values Y. + + + + The algorithm implementation is based on the appendix code by Martin Anderson, + with modifications for multiple output variables as given in the sources listed + below. + + + References: + + + Martin Anderson, "A comparison of nine PLS1 algorithms". Available on: + http://onlinelibrary.wiley.com/doi/10.1002/cem.1248/pdf + + Abdi, H. (2010). Partial least square regression, projection on latent structure regression, + PLS-Regression. Wiley Interdisciplinary Reviews: Computational Statistics, 2, 97-106. + Available from: http://www.utdallas.edu/~herve/abdi-wireCS-PLS2010.pdf + + StatSoft, Inc. (2012). Electronic Statistics Textbook: Partial Least Squares (PLS). + Tulsa, OK: StatSoft. Available from: http://www.statsoft.com/textbook/partial-least-squares/#SIMPLS + + + De Jong, S. (1993). SIMPLS: an alternative approach to partial least squares regression. + Chemometrics and Intelligent Laboratory Systems, 18: 251–263. + http://dx.doi.org/10.1016/0169-7439(93)85002-X + + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Returns the index for the column with largest squared sum. + + + + + + Computes the variable importance in projection (VIP). + + + + A predictor factors matrix in which each row represents + the importance of the variable in a projection considering + the number of factors indicated by the column's index. + + + + References: + + + Il-Gyo Chong, Chi-Hyuck Jun, Performance of some variable selection methods + when multicollinearity is present, Chemometrics and Intelligent Laboratory + Systems, Volume 78, Issues 1-2, 28 July 2005, Pages 103-112, ISSN 0169-7439, + DOI: 10.1016/j.chemolab.2004.12.011. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variables' values + for each of the source input points. + + + + + + Gets information about independent (input) variables. + + + + + + Gets information about dependent (output) variables. + + + + + + Gets the Weight matrix obtained during the analysis. For the NIPALS algorithm + this is the W matrix. For the SIMPLS algorithm this is the R matrix. + + + + + + Gets information about the factors discovered during the analysis in a + object-oriented structure which can be data-bound directly to many controls. + + + + + + Gets the PLS algorithm used by the analysis. + + + + + + Gets the method used by this analysis. + + + + + + Gets the Variable Importance in Projection (VIP). + + + This method has been implemented considering only PLS + models fitted using the NIPALS algorithm containing a + single response (output) variable. + + + + + + Gets or sets whether calculations will be performed overwriting + data in the original source matrix, using less memory. + + + + + + Represents a Partial Least Squares Factor found in the Partial Least Squares + Analysis, allowing it to be directly bound to controls like the DataGridView. + + + + + + Creates a partial least squares factor representation. + + + The analysis to which this component belongs. + The component index. + + + + + Gets the Index of this component on the original factor collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the proportion of prediction variables + variance explained by this factor. + + + + + + Gets the cumulative proportion of dependent variables + variance explained by this factor. + + + + + + Gets the proportion of dependent variable + variance explained by this factor. + + + + + + Gets the cumulative proportion of dependent variable + variance explained by this factor. + + + + + + Gets the input variable's latent vectors for this factor. + + + + + + Gets the output variable's latent vectors for this factor. + + + + + + Gets the importance of each variable for the given component. + + + + + + Gets the proportion, or amount of information explained by this component. + + + + + + Gets the cumulative proportion of all discriminants until this component. + + + + + + Represents a Collection of Partial Least Squares Factors found in + the Partial Least Squares Analysis. This class cannot be instantiated. + + + + + + Represents source variables used in Partial Least Squares Analysis. Can represent either + input variables (predictor variables) or output variables (independent variables or regressors). + + + + + + Projects a given dataset into latent space. Can be either input variable's + latent space or output variable's latent space, depending if the variables + chosen are predictor variables or dependent variables, respectively. + + + + + + Projects a given dataset into latent space. Can be either input variable's + latent space or output variable's latent space, depending if the variables + chosen are predictor variables or dependent variables, respectively. + + + + + + Source data used in the analysis. Can be either input data + or output data depending if the variables chosen are predictor + variables or dependent variables, respectively. + + + + + + Gets the resulting projection (scores) of the source data + into latent space. Can be either from input data or output + data depending if the variables chosen are predictor variables + or dependent variables, respectively. + + + + + + Gets the column means of the source data. Can be either from + input data or output data, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + Gets the column standard deviations of the source data. Can be either + from input data or output data, depending if the variables chosen are + predictor variables or dependent variables, respectively. + + + + + + Gets the loadings (a.k.a factors or components) for the + variables obtained during the analysis. Can be either from + input data or output data, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + Gets the amount of variance explained by each latent factor. + Can be either by input variables' latent factors or output + variables' latent factors, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + Gets the cumulative variance explained by each latent factor. + Can be either by input variables' latent factors or output + variables' latent factors, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + + Represents a Principal Component found in the Principal Component Analysis, + allowing it to be bound to controls like the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a principal component representation. + + + The analysis to which this component belongs. + The component index. + + + + + Gets the Index of this component on the original analysis principal component collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the proportion of data this component represents. + + + + + + Gets the cumulative proportion of data this component represents. + + + + + + If available, gets the Singular Value of this component found during the Analysis. + + + + + + Gets the Eigenvalue of this component found during the analysis. + + + + + + Gets the Eigenvector of this component. + + + + + + Represents a Collection of Principal Components found in the + . This class cannot be instantiated. + + + + + + Methods for computing the area under + Receiver-Operating Characteristic (ROC) curves (also known as the ROC AUC). + + + + + + Method of DeLong, E. R., D. M. DeLong, and D. L. Clarke-Pearson. 1988. Comparing + the areas under two or more correlated receiver operating characteristic curves: + a nonparametric approach. Biometrics 44:837–845. + + + + + + Method of Hanley, J.A. and McNeil, B.J. 1983. A method of comparing the areas under + receiver operating characteristic curves derived from the same cases. Radiology 148:839-843. + + + + + + Receiver Operating Characteristic (ROC) Curve. + + + + + In signal detection theory, a receiver operating characteristic (ROC), or simply + ROC curve, is a graphical plot of the sensitivity vs. (1 − specificity) for a + binary classifier system as its discrimination threshold is varied. + + This package does not attempt to fit a curve to the obtained points. It just + computes the area under the ROC curve directly using the trapezoidal rule. + + Also note that the curve construction algorithm uses the convention that a + higher test value represents a positive for a condition while computing + sensitivity and specificity values. + + + References: + + + Wikipedia, The Free Encyclopedia. Receiver Operating Characteristic. Available on: + http://en.wikipedia.org/wiki/Receiver_operating_characteristic + + Anaesthesist. The magnificent ROC. Available on: + http://www.anaesthetist.com/mnm/stats/roc/Findex.htm + + + + + + The following example shows how to measure the accuracy + of a binary classifier using a ROC curve. + + + // This example shows how to measure the accuracy of a + // binary classifier using a ROC curve. For this example, + // we will be creating a Support Vector Machine trained + // on the following training instances: + + double[][] inputs = + { + // Those are from class -1 + new double[] { 2, 4, 0 }, + new double[] { 5, 5, 1 }, + new double[] { 4, 5, 0 }, + new double[] { 2, 5, 5 }, + new double[] { 4, 5, 1 }, + new double[] { 4, 5, 0 }, + new double[] { 6, 2, 0 }, + new double[] { 4, 1, 0 }, + + // Those are from class +1 + new double[] { 1, 4, 5 }, + new double[] { 7, 5, 1 }, + new double[] { 2, 6, 0 }, + new double[] { 7, 4, 7 }, + new double[] { 4, 5, 0 }, + new double[] { 6, 2, 9 }, + new double[] { 4, 1, 6 }, + new double[] { 7, 2, 9 }, + }; + + int[] outputs = + { + -1, -1, -1, -1, -1, -1, -1, -1, // fist eight from class -1 + +1, +1, +1, +1, +1, +1, +1, +1 // last eight from class +1 + }; + + // Next, we create a linear Support Vector Machine with 4 inputs + SupportVectorMachine machine = new SupportVectorMachine(inputs: 3); + + // Create the sequential minimal optimization learning algorithm + var smo = new SequentialMinimalOptimization(machine, inputs, outputs); + + // We learn the machine + double error = smo.Run(); + + // And then extract its predicted labels + double[] predicted = new double[inputs.Length]; + for (int i = 0; i < predicted.Length; i++) + predicted[i] = machine.Compute(inputs[i]); + + // At this point, the output vector contains the labels which + // should have been assigned by the machine, and the predicted + // vector contains the labels which have been actually assigned. + + // Create a new ROC curve to assess the performance of the model + var roc = new ReceiverOperatingCharacteristic(outputs, predicted); + roc.Compute(100); // Compute a ROC curve with 100 cut-off points + + // Generate a connected scatter plot for the ROC curve and show it on-screen + ScatterplotBox.Show(roc.GetScatterplot(includeRandom: true), nonBlocking: true) + + .SetSymbolSize(0) // do not display data points + .SetLinesVisible(true) // show lines connecting points + .SetScaleTight(true) // tighten the scale to points + .WaitForClose(); + + + + The resulting graph is shown below. + + + + + + + + + Constructs a new Receiver Operating Characteristic model + + + + An array of binary values. Typically represented as 0 and 1, or -1 and 1, + indicating negative and positive cases, respectively. The maximum value + will be treated as the positive case, and the lowest as the negative. + + An array of continuous values trying to approximate the measurement array. + + + + + + Constructs a new Receiver Operating Characteristic model + + + + An array of binary values. Typically represented as 0 and 1, or -1 and 1, + indicating negative and positive cases, respectively. The maximum value + will be treated as the positive case, and the lowest as the negative. + + An array of continuous values trying to approximate the measurement array. + + + + + + Constructs a new Receiver Operating Characteristic model + + + + An array of binary values. Typically represented as 0 and 1, or -1 and 1, + indicating negative and positive cases, respectively. The maximum value + will be treated as the positive case, and the lowest as the negative. + + An array of continuous values trying to approximate the measurement array. + + + + + + Computes a n-points ROC curve. + + + + Each point in the ROC curve will have a threshold increase of + 1/npoints over the previous point, starting at zero. + + + The number of points for the curve. + + + + + Computes a ROC curve with 1/increment points + + + The increment over the previous point for each point in the curve. + + + + + Computes a ROC curve with 1/increment points + + + The increment over the previous point for each point in the curve. + True to force the inclusion of the (0,0) point, false otherwise. Default is false. + + + + + Computes a ROC curve with the given increment points + + + + + + Computes a single point of a ROC curve using the given cutoff value. + + + + + + Generates a representing the ROC curve. + + + + True to include a plot of the random curve (a diagonal line + going from lower left to upper right); false otherwise. + + + + + Returns a that represents this curve. + + + A that represents this curve. + + + + + Calculates the area under the ROC curve using the trapezium method. + + + The area under a ROC curve can never be less than 0.50. If the area is first calculated as + less than 0.50, the definition of abnormal will be reversed from a higher test value to a + lower test value. + + + + + Saves the curve to a stream. + + + The stream to which the curve is to be serialized. + + + + + Loads a curve from a stream. + + + The stream from which the curve is to be deserialized. + + The deserialized curve. + + + + + Loads a curve from a file. + + + The path to the file from which the curve is to be deserialized. + + The deserialized curve. + + + + + Saves the curve to a stream. + + + The path to the file to which the curve is to be serialized. + + + + + Gets the points of the curve. + + + + + + Gets the number of actual positive cases. + + + + + + Gets the number of actual negative cases. + + + + + + Gets the number of cases (observations) being analyzed. + + + + + + Gets the area under this curve (AUC). + + + + + + Gets the standard error for the . + + + + + + Gets the variance of the curve's . + + + + + + Gets the ground truth values, or the values + which should have been given by the test if + it was perfect. + + + + + + Gets the actual values given by the test. + + + + + + Gets the actual test results for subjects + which should have been labeled as positive. + + + + + + Gets the actual test results for subjects + which should have been labeled as negative. + + + + + + Gets DeLong's pseudoaccuracies for the positive subjects. + + + + + + Gets DeLong's pseudoaccuracies for the negative subjects + + + + + + Object to hold information about a Receiver Operating Characteristic Curve Point + + + + + + Constructs a new Receiver Operating Characteristic point. + + + + + + Returns a System.String that represents the current ReceiverOperatingCharacteristicPoint. + + + + + + Gets the cutoff value (discrimination threshold) for this point. + + + + + + Represents a Collection of Receiver Operating Characteristic (ROC) Curve points. + This class cannot be instantiated. + + + + + + Gets the (1-specificity, sensitivity) values as (x,y) coordinates. + + + + An jagged double array where each element is a double[] vector + with two positions; the first is the value for 1-specificity (x) + and the second the value for sensitivity (y). + + + + + + Gets an array containing (1-specificity) + values for each point in the curve. + + + + + + Gets an array containing (sensitivity) + values for each point in the curve. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Backward Stepwise Logistic Regression Analysis. + + + + + The Backward Stepwise regression is an exploratory analysis procedure, + where the analysis begins with a full (saturated) model and at each step + variables are eliminated from the model in a iterative fashion. + + Significance tests are performed after each removal to track which of + the variables can be discarded safely without implying in degradation. + When no more variables can be removed from the model without causing + a significant loss in the model likelihood, the method can stop. + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (this is completely fictional data). + + double[][] inputs = + { + // Age Smoking + new double[] { 55, 0 }, // 1 + new double[] { 28, 0 }, // 2 + new double[] { 65, 1 }, // 3 + new double[] { 46, 0 }, // 4 + new double[] { 86, 1 }, // 5 + new double[] { 56, 1 }, // 6 + new double[] { 85, 0 }, // 7 + new double[] { 33, 0 }, // 8 + new double[] { 21, 1 }, // 9 + new double[] { 42, 1 }, // 10 + new double[] { 33, 0 }, // 11 + new double[] { 20, 1 }, // 12 + new double[] { 43, 1 }, // 13 + new double[] { 31, 1 }, // 14 + new double[] { 22, 1 }, // 15 + new double[] { 43, 1 }, // 16 + new double[] { 46, 0 }, // 17 + new double[] { 86, 1 }, // 18 + new double[] { 56, 1 }, // 19 + new double[] { 55, 0 }, // 20 + }; + + // Additionally, we also have information about whether + // or not they those patients had lung cancer. The array + // below gives 0 for those who did not, and 1 for those + // who did. + + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, + 0, 1, 1, 1, 1, 1, 0, 1, 1, 0 + }; + + + // Create a Stepwise Logistic Regression analysis + var regression = new StepwiseLogisticRegressionAnalysis(inputs, output, + new[] { "Age", "Smoking" }, "Cancer"); + + regression.Compute(); // compute the analysis. + + // The full model will be stored in the complete property: + StepwiseLogisticRegressionModel full = regression.Complete; + + // The best model will be stored in the current property: + StepwiseLogisticRegressionModel best = regression.Current; + + // Let's check the full model results + DataGridBox.Show(full.Coefficients); + + // We can see only the Smoking variable is statistically significant. + // This is an indication the Age variable could be discarded from + // the model. + + // And check the best inner model result + DataGridBox.Show(best.Coefficients); + + // This is the best nested model found. This model only has the + // Smoking variable, which is still significant. Since no other + // variables can be dropped, this is the best final model. + + // The variables used in the current best model are + string[] inputVariableNames = best.Inputs; // Smoking + + // The best model likelihood ratio p-value is + ChiSquareTest test = best.ChiSquare; // {0.816990081334823} + + // so the model is distinguishable from a null model. We can also + // query the other nested models by checking the Nested property: + + DataGridBox.Show(regression.Nested); + + // Finally, we can also use the analysis to classify a new patient + double y = regression.Current.Regression.Compute(new double[] { 1 }); + + // For a smoking person, the answer probability is approximately 83%. + + + + + + + + + Constructs a Stepwise Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Stepwise Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The names for the input variables. + The name for the output variable. + + + + + Computes the Stepwise Logistic Regression. + + + + + + Computes one step of the Stepwise Logistic Regression Analysis. + + + Returns the index of the variable discarded in the step or -1 + in case no variable could be discarded. + + + + + + Fits a logistic regression model to data until convergence. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting probabilities obtained + by the most likely logistic regression model. + + + + + + Gets the current best nested model. + + + + + + Gets the full model. + + + + + + Gets the collection of nested models obtained after + a step of the backward stepwise procedure. + + + + + + Gets the name of the input variables. + + + + + + Gets the name of the output variables. + + + + + + Gets or sets the significance threshold used to + determine if a nested model is significant or not. + + + + + + Gets the final set of input variables indices + as selected by the stepwise procedure. + + + + + + Stepwise Logistic Regression Nested Model. + + + + + + Constructs a new Logistic regression model. + + + + + + Gets information about the regression model + coefficients in a object-oriented structure. + + + + + + Gets the Stepwise Logistic Regression Analysis + from which this model belongs to. + + + + + + Gets the regression model. + + + + + + Gets the subset of the original variables used by the model. + + + + + + Gets the name of the variables used in + this model combined as a single string. + + + + + + Gets the Chi-Square Likelihood Ratio test for the model. + + + + + + Gets the subset of the original variables used by the model. + + + + + + Gets the Odds Ratio for each coefficient + found during the logistic regression. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the value of each coefficient. + + + + + + Gets the 95% Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Gets the Likelihood-Ratio Tests for each coefficient. + + + + + + Stepwise Logistic Regression Nested Model collection. + This class cannot be instantiated. + + + + + + Represents a Logistic Regression Coefficient found in the Logistic Regression, + allowing it to be bound to controls like the DataGridView. This class cannot + be instantiated outside the . + + + + + + Gets the name for the current coefficient. + + + + + + Gets the Odds ratio for the current coefficient. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the 95% confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the 95% confidence interval. + + + + + + Gets the lower limit for the 95% confidence interval. + + + + + + Gets the coefficient value. + + + + + + Gets the Wald's test performed for this coefficient. + + + + + + Gets the Likelihood-Ratio test performed for this coefficient. + + + + + + Represents a collection of Logistic Coefficients found in the + . This class cannot be instantiated. + + + + + + Set of statistics functions operating over a circular space. + + + + This class represents collection of common functions used in + statistics. The values are handled as belonging to a distribution + defined over a circle, such as the . + + + + + + Transforms circular data into angles (normalizes the data to be between -PI and PI). + + + The samples to be transformed. + The maximum possible sample value (such as 24 for hour data). + Whether to perform the transformation in place. + + A double array containing the same data in , + but normalized between -PI and PI. + + + + + Transforms circular data into angles (normalizes the data to be between -PI and PI). + + + The sample to be transformed. + The maximum possible sample value (such as 24 for hour data). + + The normalized to be between -PI and PI. + + + + + Transforms angular data back into circular data (reverts the + transformation. + + + The angle to be reconverted into the original unit. + The maximum possible sample value (such as 24 for hour data). + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The original before being converted. + + + + + Computes the sum of cosines and sines for the given angles. + + + A double array containing the angles in radians. + + The sum of cosines, returned as an out parameter. + The sum of sines, returned as an out parameter. + + + + + Computes the Mean direction of the given angles. + + + A double array containing the angles in radians. + + The mean direction of the given angles. + + + + + Computes the circular Mean direction of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular Mean direction of the given samples. + + + + + Computes the Mean direction of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The mean direction of the given angles. + + + + + Computes the mean resultant vector length (r) of the given angles. + + + A double array containing the angles in radians. + + The mean resultant vector length of the given angles. + + + + + Computes the resultant vector length (r) of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The mean resultant vector length of the given samples. + + + + + Computes the mean resultant vector length (r) of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The mean resultant vector length of the given angles. + + + + + Computes the circular variance of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular variance of the given samples. + + + + + Computes the Variance of the given angles. + + + A double array containing the angles in radians. + + The variance of the given angles. + + + + + Computes the Variance of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The variance of the angles. + + + + + Computes the circular standard deviation of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular standard deviation of the given samples. + + + + + Computes the Standard Deviation of the given angles. + + + A double array containing the angles in radians. + + The standard deviation of the given angles. + + + + + Computes the Standard Deviation of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The standard deviation of the angles. + + + + + Computes the circular angular deviation of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular angular deviation of the given samples. + + + + + Computes the Angular Deviation of the given angles. + + + A double array containing the angles in radians. + + The angular deviation of the given angles. + + + + + Computes the Angular Deviation of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The angular deviation of the angles. + + + + + Computes the circular standard error of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The confidence level. Default is 0.05. + + The circular standard error of the given samples. + + + + + Computes the standard error of the given angles. + + + A double array containing the angles in radians. + The confidence level. Default is 0.05. + + The standard error of the given angles. + + + + + Computes the standard error of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + The confidence level. Default is 0.05. + + The standard error of the angles. + + + + + Computes the angular distance between two angles. + + + The first angle. + The second angle. + + The distance between the two angles. + + + + + Computes the distance between two circular samples. + + + The first sample. + The second sample. + The maximum possible value of the samples. + + The distance between the two angles. + + + + + Computes the angular distance between two angles. + + + The cosine of the first sample. + The sin of the first sample. + The cosine of the second sample. + The sin of the second sample. + + The distance between the two angles. + + + + + Computes the circular Median of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular Median of the given samples. + + + + + Computes the circular Median direction of the given angles. + + + A double array containing the angles in radians. + + The circular Median of the given angles. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + The median value of the , if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The sample quartiles, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The sample quartiles, as an out parameter. + The median value of the , if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The sample quartiles, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The sample quartiles, as an out parameter. + The angular median, if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + The angular median, if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the concentration (kappa) of the given angles. + + + A double array containing the angles in radians. + + The concentration (kappa) parameter of the + for the given data. + + + + + + Computes the concentration (kappa) of the given angles. + + + A double array containing the angles in radians. + The mean of the angles, if already known. + + The concentration (kappa) parameter of the + for the given data. + + + + + + Computes the Weighted Mean of the given angles. + + + A double array containing the angles in radians. + An unit vector containing the importance of each angle + in . The sum of this array elements should add up to 1. + The mean of the given angles. + + + + + Computes the Weighted Concentration of the given angles. + + + A double array containing the angles in radians. + An unit vector containing the importance of each angle + in . The sum of this array elements should add up to 1. + The mean of the given angles. + + + + + Computes the Weighted Concentration of the given angles. + + + A double array containing the angles in radians. + An unit vector containing the importance of each angle + in . The sum of this array elements should add up to 1. + The mean of the angles, if already known. + The mean of the given angles. + + + + + Computes the maximum likelihood estimate + of kappa given by Best and Fisher (1981). + + + + + This method implements the approximation to the Maximum Likelihood + Estimative of the kappa concentration parameter as suggested by Best + and Fisher (1981), cited by Zheng Sun (2006) and Hussin and Mohamed + (2008). Other useful approximations are given by Suvrit Sra (2009). + + + References: + + + A.G. Hussin and I.B. Mohamed, 2008. Efficient Approximation for the von Mises Concentration Parameter. + Asian Journal of Mathematics & Statistics, 1: 165-169. + + Suvrit Sra, "A short note on parameter approximation for von Mises-Fisher distributions: + and a fast implementation of $I_s(x)$". (revision of Apr. 2009). Computational Statistics (2011). + Available on: http://www.kyb.mpg.de/publications/attachments/vmfnote_7045%5B0%5D.pdf + + Zheng Sun. M.Sc. Comparing measures of fit for circular distributions. Master thesis, 2006. + Available on: https://dspace.library.uvic.ca:8443/bitstream/handle/1828/2698/zhengsun_master_thesis.pdf + + + + + + + Computes the circular skewness of the given circular angles. + + + A double array containing the angles in radians. + + The circular skewness for the given . + + + + + Computes the circular kurtosis of the given circular angles. + + + A double array containing the angles in radians. + + The circular kurtosis for the given . + + + + + Computes the complex circular central + moments of the given circular angles. + + + + + + Computes the complex circular non-central + moments of the given circular angles. + + + + + + Contains more than 40 statistical distributions, with support + for most probability distribution measures and estimation methods. + + + + + This namespace contains a huge collection of probability distributions, ranging the from the common + and simple Normal (Gaussian) and + Poisson distributions to Inverse-Wishart and + multivariate mixture distributions, including many specialized + univariate distributions used in statistical hypothesis testing. + Some of those distributions include the , , + , and many others. + + + For a complete list of all + univariate probability distributions, check the + namespace. For a complete list of all + multivariate distributions, please see the + namespace. + + + A list of density kernels + such as the Gaussian kernel + and the Epanechnikov kernel + are available in the namespace. + + + + The namespace class diagram is shown below. + + + + The namespace class diagram for univariate distributions is shown below. + + + + The namespace class diagram for multivariate distributions is shown below. + + + + + + + + + + + + + + + Contains density estimation kernels which can be used in combination + with empirical distributions + and multivariate empirical + distributions. + + + + + + + + + + + + + Common interface for density estimation kernels. + + + + Those kernels are different from kernel + functions. Density estimation kernels are required to obey normalization rules in + order to fulfill integrability and behavioral properties. Moreover, they are defined + over a single input vector, the point estimate of a random variable. + + + + + + + + + + Computes the kernel density function. + + + The input point. + + A density estimate around . + + + + + Contains special options which can be used in + distribution fitting (estimation) methods. + + + + + + + + + + + BetaPERT's distribution estimation method. + + + + + + Estimates the mode using the classic method. + + + + + + Estimates the mode using the Vose method. + + + + + + Estimation options for + Beta PERT distributions. + + + + + + Common interface for distribution fitting option objects. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the index of the minimum observed + value, if already known. Default is -1. + + + + + + Gets or sets the index of the maximum observed + value, if already known. Default is -1. + + + + + + Gets or sets which estimation method should be used by the fitting + algorithm. Default is . + + + + + + Gets or sets a value indicating whether the observations are already sorted. + + + + Set to true if the observations are sorted; otherwise, false. + + + + + + Gets or sets a value indicating whether the maximum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Gets or sets a value indicating whether the minimum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Estimation methods for + Beta distributions. + + + + + + Method-of-moments estimation. + + + + + + Maximum Likelihood estimation. + + + + + + Estimation options for + Beta distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets which estimation method should be used by the fitting + algorithm. Default is . + + + + + + Triangular distribution's mode estimation method. + + + + + + Estimates the mode using the mean-maximum-minimum method. + + + + + + Estimates the mode using the standard algorithm. + + + + + + Estimates the mode using the bisection algorithm. + + + + + + Estimation options for + Triangular distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the index of the minimum observed + value, if already known. Default is -1. + + + + + + Gets or sets the index of the maximum observed + value, if already known. Default is -1. + + + + + + Gets or sets a value indicating whether the observations are already sorted. + + + + Set to true if the observations are sorted; otherwise, false. + + + + + + Gets or sets the mode estimation method to use. Default + is . + + + + + + Gets or sets a value indicating whether the maximum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Gets or sets a value indicating whether the minimum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Expectation Maximization algorithm for mixture model fitting in the log domain. + + + The type of the observations being fitted. + + + + This class implements a generic version of the Expectation-Maximization algorithm + which can be used with both univariate or multivariate distribution types. + + + + + + Creates a new algorithm. + + + The initial coefficient values. + The initial component distributions. + + + + + Estimates a mixture distribution for the given observations + using the Expectation-Maximization algorithm. + + + The observations from the mixture distribution. + + The log-likelihood of the estimated mixture model. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Gets or sets the fitting options to be used + when any of the component distributions need + to be estimated from the data. + + + + + + Gets or sets convergence properties for + the expectation-maximization algorithm. + + + + + + Gets the current coefficient values. + + + + + + Gets the current component distribution values. + + + + + + Gets the responsibility of each input vector when estimating + each of the component distributions, in the last iteration. + + + + + + Smoothing rule function definition for + Empirical distributions. + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Estimation options for Multivariate Empirical distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the smoothing rule used to compute the smoothing + parameter in the . + Default is to use + Silverman's rule. + + + + + + Gets or sets whether the empirical distribution should be take the + observation and weight vectors directly instead of making a copy + beforehand. + + + + + + Smoothing rule function definition for + Empirical distributions. + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Estimation options for + Empirical distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the smoothing rule used to compute the smoothing + parameter in the . Default + is to use the + normal distribution bandwidth approximation. + + + + + + Gets or sets whether the empirical distribution should be take the + observation and weight vectors directly instead of making a copy + beforehand. + + + + + + Expectation Maximization algorithm for mixture model fitting. + + + The type of the observations being fitted. + + + + This class implements a generic version of the Expectation-Maximization algorithm + which can be used with both univariate or multivariate distribution types. + + + + + + Creates a new algorithm. + + + The initial coefficient values. + The initial component distributions. + + + + + Estimates a mixture distribution for the given observations + using the Expectation-Maximization algorithm. + + + The observations from the mixture distribution. + + The log-likelihood of the estimated mixture model. + + + + + Estimates a mixture distribution for the given observations + using the Expectation-Maximization algorithm, assuming different + weights for each observation. + + + The observations from the mixture distribution. + The weight of each observation. + + The log-likelihood of the estimated mixture model. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Gets or sets the fitting options to be used + when any of the component distributions need + to be estimated from the data. + + + + + + Gets or sets convergence properties for + the expectation-maximization algorithm. + + + + + + Gets the current coefficient values. + + + + + + Gets the current component distribution values. + + + + + + Gets the responsibility of each input vector when estimating + each of the component distributions, in the last iteration. + + + + + + Estimation options for + multivariate independent distributions. + + + + + + Initializes a new instance of the class. + + + The fitting options for the inner + component distributions of the independent distributions. + + + + + Initializes a new instance of the class. + + + The fitting options for the inner + component distributions of the independent distributions. + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the fitting options for the inner + independent components in the joint distribution. + + + + + + Gets or sets the fitting options for the inner + independent components in the joint distribution. + Setting this property should make all component + distributions use the same options specified here. + + + + + + Fitting options for hidden Markov model distributions. + + + + + + Gets or sets the learning function for the hidden Markov model. + + + + + + Options for Survival distributions. + + + + + + Default survival estimation method. Returns . + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the values for + the right-censoring variable. + + + + + + Options for Empirical Hazard distributions. + + + + + + Default hazard estimator. Returns . + + + + + + Default tie handling method. Returns . + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the estimator to be used. Default is . + + + + + + Gets or sets the tie handling method to be used. Default is . + + + + + + Common interface for distributions which can be estimated from data. + + + The type of the observations, such as . + The type of the options specifying object. + + + + + Common interface for distributions which can be estimated from data. + + + The type of the observations, such as . + + + + + Common interface for probability distributions. + + + + + This interface is implemented by all generic probability distributions in the framework, including + s and s. + + + + + + Common interface for probability distributions. + + + + + This interface is implemented by all probability distributions in the framework, including + s and s. This + includes + , + , + , and + + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Common interface for sampleable distributions (i.e. distributions that + allow the generation of new samples through the + method. + + + The type of the observations, such as . + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Epanechnikov density kernel. + + + + + References: + + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Dan Styer, Oberlin College Department of Physics and Astronomy; Volume of a d-dimensional + sphere. Last updated 30 August 2007. Available at: + http://www.oberlin.edu/physics/dstyer/StatMech/VolumeDSphere.pdf + + David W. Scott, Multivariate Density Estimation: Theory, Practice, and + Visualization, Wiley, Aug 31, 1992 + + + + + + + + + Common interface for radially symmetric kernels. + + + + + + + + + + Computes the kernel profile function. + + + The point estimate x. + + The value of the profile function at point . + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + The value of the derivative profile function at point . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The constant by which the kernel formula + is multiplied at the end. Default is to consider the area + of a unit-sphere of dimension 1. + + + + + Initializes a new instance of the class. + + + The desired dimension d. + + + + + Computes the kernel density function. + + + The input point. + + + A density estimate around . + + + + + + Computes the kernel profile function. + + + The point estimate x. + + + The value of the profile function at point . + + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + + The value of the derivative profile function at point . + + + + + + Gets or sets the kernel's normalization constant. + + + + + + Gaussian density kernel. + + + + + References: + + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Dan Styer, Oberlin College Department of Physics and Astronomy; Volume of a d-dimensional + sphere. Last updated 30 August 2007. Available at: + http://www.oberlin.edu/physics/dstyer/StatMech/VolumeDSphere.pdf + + David W. Scott, Multivariate Density Estimation: Theory, Practice, and + Visualization, Wiley, Aug 31, 1992 + + + + + + + + + Initializes a new instance of the class. + + + The desired dimension d. + + + + + Initializes a new instance of the class. + + + The normalization constant to use. + + + + + Computes the kernel density function. + + + The input point. + + + A density estimate around . + + + + + + Computes the kernel profile function. + + + The squared point estimate . + + + The value of the profile function at point ². + + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + + The value of the derivative profile function at point . + + + + + + Gets or sets the kernel's normalization constant. + + + + + + Uniform density kernel. + + + + + References: + + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Dan Styer, Oberlin College Department of Physics and Astronomy; Volume of a d-dimensional + sphere. Last updated 30 August 2007. Available at: + http://www.oberlin.edu/physics/dstyer/StatMech/VolumeDSphere.pdf + + David W. Scott, Multivariate Density Estimation: Theory, Practice, and + Visualization, Wiley, Aug 31, 1992 + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + The normalization constant c. + + + + + Computes the kernel density function. + + + The input point. + + + A density estimate around . + + + + + + Computes the kernel profile function. + + + The point estimate x. + + + The value of the profile function at point . + + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + + The value of the derivative profile function at point . + + + + + + Gets or sets the kernel's normalization constant. + + + + + + Contains a multivariate distributions such as the + multivariate Normal, Multinomial, + Independent, + Joint and Mixture distributions. + + + + + The namespace class diagram is shown below. + + + + + + + + + + + Common interface for multivariate probability distributions. + + + + + This interface is implemented by both multivariate + Discrete Distributions and Continuous + Distributions. + + + For Univariate distributions, see . + + + + + + + + + + + Gets the number of variables for the distribution. + + + + + + Gets the Mean vector for the distribution. + + + An array of double-precision values containing + the mean values for this distribution. + + + + + Gets the Median vector for the distribution. + + + An array of double-precision values containing + the median values for this distribution. + + + + + Gets the Mode vector for the distribution. + + + An array of double-precision values containing + the mode values for this distribution. + + + + + Gets the Variance vector for the distribution. + + + An array of double-precision values containing + the variance values for this distribution. + + + + + Gets the Variance-Covariance matrix for the distribution. + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + Common interface for multivariate probability distributions. + + + + + This interface is implemented by both multivariate + Discrete Distributions and Continuous + Distributions. However, unlike , this interface + has a generic parameter that allows to define the type of the distribution values (i.e. + ). + + + For Univariate distributions, see . + + + + + + + + + + + Gets the number of variables for the distribution. + + + + + + Gets the Mean vector for the distribution. + + + An array of double-precision values containing + the mean values for this distribution. + + + + + Gets the Median vector for the distribution. + + + An array of double-precision values containing + the median values for this distribution. + + + + + Gets the Mode vector for the distribution. + + + An array of double-precision values containing + the mode values for this distribution. + + + + + Gets the Variance vector for the distribution. + + + An array of double-precision values containing + the variance values for this distribution. + + + + + Gets the Variance-Covariance matrix for the distribution. + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + Multivariate empirical distribution. + + + + + Empirical distributions are based solely on the data. This class + uses the empirical distribution function and the Gaussian kernel + density estimation to provide an univariate continuous distribution + implementation which depends only on sampled data. + + + References: + + + Wikipedia, The Free Encyclopedia. Empirical Distribution Function. Available on: + + http://en.wikipedia.org/wiki/Empirical_distribution_function + + PlanetMath. Empirical Distribution Function. Available on: + + http://planetmath.org/encyclopedia/EmpiricalDistributionFunction.html + + Wikipedia, The Free Encyclopedia. Kernel Density Estimation. Available on: + + http://en.wikipedia.org/wiki/Kernel_density_estimation + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Buch-Kromann, T.; Nonparametric Density Estimation (Multidimension), 2007. Available in + http://www.buch-kromann.dk/tine/nonpar/Nonparametric_Density_Estimation_multidim.pdf + + W. Härdle, M. Müller, S. Sperlich, A. Werwatz; Nonparametric and Semiparametric Models, 2004. Available + in http://sfb649.wiwi.hu-berlin.de/fedc_homepage/xplore/ebooks/html/spm/spmhtmlnode18.html + + + + + + + // Suppose we have the following data, and we would + // like to estimate a distribution from this data + + double[][] samples = + { + new double[] { 0, 1 }, + new double[] { 1, 2 }, + new double[] { 5, 1 }, + new double[] { 7, 1 }, + new double[] { 6, 1 }, + new double[] { 5, 7 }, + new double[] { 2, 1 }, + }; + + // Start by specifying a density kernel + IDensityKernel kernel = new EpanechnikovKernel(dimension: 2); + + // Create a multivariate Empirical distribution from the samples + var dist = new MultivariateEmpiricalDistribution(kernel, samples); + + + // Common measures + double[] mean = dist.Mean; // { 3.71, 2.00 } + double[] median = dist.Median; // { 3.71, 2.00 } + double[] var = dist.Variance; // { 7.23, 5.00 } (diagonal from cov) + double[,] cov = dist.Covariance; // { { 7.23, 0.83 }, { 0.83, 5.00 } } + + // Probability mass functions + double pdf1 = dist.ProbabilityDensityFunction(new double[] { 2, 1 }); // 0.039131176997318849 + double pdf2 = dist.ProbabilityDensityFunction(new double[] { 4, 2 }); // 0.010212109770266639 + double pdf3 = dist.ProbabilityDensityFunction(new double[] { 5, 7 }); // 0.02891906722705221 + double lpdf = dist.LogProbabilityDensityFunction(new double[] { 5, 7 }); // -3.5432541357714742 + + + + + + + + + + Abstract class for Multivariate Probability Distributions. + + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given value will occur is called + the probability function (or probability density function, abbreviated PDF), and + the function describing the cumulative probability that a given value or any value + smaller than it will occur is called the distribution function (or cumulative + distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + Base class for statistical distribution implementations. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Constructs a new MultivariateDistribution class. + + + The number of dimensions in the distribution. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Gets the number of variables for this distribution. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Gets the mode for this distribution. + + + A vector containing the mode values for the distribution. + + + + + Gets the median for this distribution. + + + A vector containing the median values for the distribution. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The number of repetition counts for each sample. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples forming the distribution. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples forming the distribution. + The fractional weights to use for the samples. + The weights must sum up to one. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples forming the distribution. + The number of repetition counts for each sample. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples. + The number of repetition counts for each sample. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The number of repetition counts for each sample. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + + An estimative of the smoothing parameter. + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + + An estimative of the smoothing parameter. + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the kernel density function used in this distribution. + + + + + + Gets the samples giving this empirical distribution. + + + + + + Gets the fractional weights associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the repetition counts associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the total number of samples in this distribution. + + + + + + Gets the bandwidth smoothing parameter + used in the kernel density estimation. + + + + + + Gets the mean for this distribution. + + + + A vector containing the mean values for the distribution. + + + + + + Gets the variance for this distribution. + + + + A vector containing the variance values for the distribution. + + + + + + Gets the variance-covariance matrix for this distribution. + + + + A matrix containing the covariance values for the distribution. + + + + + + Inverse Wishart Distribution. + + + + + The inverse Wishart distribution, also called the inverted Wishart distribution, + is a probability distribution defined on real-valued positive-definite matrices. + In Bayesian statistics it is used as the conjugate prior for the covariance matrix + of a multivariate normal distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Inverse Wishart distribution. + Available from: http://en.wikipedia.org/wiki/Inverse-Wishart_distribution + + + + + + // Create a Inverse Wishart with the parameters + var invWishart = new InverseWishartDistribution( + + // Degrees of freedom + degreesOfFreedom: 4, + + // Scale parameter + inverseScale: new double[,] + { + { 1.7, -0.2 }, + { -0.2, 5.3 }, + } + ); + + // Common measures + double[] var = invWishart.Variance; // { -3.4, -10.6 } + double[,] cov = invWishart.Covariance; // see below + double[,] mmean = invWishart.MeanMatrix; // see below + + // cov mean + // -5.78 -4.56 1.7 -0.2 + // -4.56 -56.18 -0.2 5.3 + + // (the above matrix representations have been transcribed to text using) + string scov = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture); + string smean = mmean.ToString(DefaultMatrixFormatProvider.InvariantCulture); + + // For compatibility reasons, .Mean stores a flattened mean matrix + double[] mean = invWishart.Mean; // { 1.7, -0.2, -0.2, 5.3 } + + + // Probability density functions + double pdf = invWishart.ProbabilityDensityFunction(new double[,] + { + { 5.2, 0.2 }, // 0.000029806281690351203 + { 0.2, 4.2 }, + }); + + double lpdf = invWishart.LogProbabilityDensityFunction(new double[,] + { + { 5.2, 0.2 }, // -10.420791391688828 + { 0.2, 4.2 }, + }); + + + + + + + + + Creates a new Inverse Wishart distribution. + + + The degrees of freedom v. + The inverse scale matrix Ψ (psi). + + + + + Not supported. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the mean for this distribution as a flat matrix. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Von-Mises Fisher distribution. + + + + + In directional statistics, the von Mises–Fisher distribution is a probability distribution + on the (p-1)-dimensional sphere in R^p. If p = 2 the distribution reduces to the + von Mises distribution on the circle. + + + References: + + + Wikipedia, The Free Encyclopedia. Von Mises-Fisher Distribution. Available on: + + https://en.wikipedia.org/wiki/Von_Mises%E2%80%93Fisher_distribution + + + + + + + + + Constructs a Von-Mises Fisher distribution with unit mean. + + + The number of dimensions in the distribution. + The concentration value κ (kappa). + + + + + Constructs a Von-Mises Fisher distribution with unit mean. + + + The mean direction vector (with unit length). + The concentration value κ (kappa). + + + + + Not supported. + + + + + + Gets the probability density function (pdf) for this distribution evaluated at point x. + + + + A single point in the distribution range. For a univariate distribution, this should be + a single double value. For a multivariate distribution, this should be a double array. + + + + The probability of x occurring in the current distribution. + + + x;The vector should have the same dimension as the distribution. + + + The Probability Density Function (PDF) describes the probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + A vector containing the mean values for the distribution. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Wishart Distribution. + + + + + The Wishart distribution is a generalization to multiple dimensions of + the Chi-Squared distribution, or, in + the case of non-integer degrees of + freedom, of the Gamma distribution + . + + + References: + + + Wikipedia, The Free Encyclopedia. Wishart distribution. + Available from: http://en.wikipedia.org/wiki/Wishart_distribution + + + + + + // Create a Wishart distribution with the parameters: + WishartDistribution wishart = new WishartDistribution( + + // Degrees of freedom + degreesOfFreedom: 7, + + // Scale parameter + scale: new double[,] + { + { 4, 1, 1 }, + { 1, 2, 2 }, // (must be symmetric and positive definite) + { 1, 2, 6 }, + } + ); + + // Common measures + double[] var = wishart.Variance; // { 224, 56, 504 } + double[,] cov = wishart.Covariance; // see below + double[,] meanm = wishart.MeanMatrix; // see below + + // 224 63 175 28 7 7 + // cov = 63 56 112 mean = 7 14 14 + // 175 112 504 7 14 42 + + // (the above matrix representations have been transcribed to text using) + string scov = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture); + string smean = meanm.ToString(DefaultMatrixFormatProvider.InvariantCulture); + + // For compatibility reasons, .Mean stores a flattened mean matrix + double[] mean = wishart.Mean; // { 28, 7, 7, 7, 14, 14, 7, 14, 42 } + + + // Probability density functions + double pdf = wishart.ProbabilityDensityFunction(new double[,] + { + { 8, 3, 1 }, + { 3, 7, 1 }, // 0.000000011082455043473361 + { 1, 1, 8 }, + }); + + double lpdf = wishart.LogProbabilityDensityFunction(new double[,] + { + { 8, 3, 1 }, + { 3, 7, 1 }, // -18.317902605850534 + { 1, 1, 8 }, + }); + + + + + + + + + Creates a new Wishart distribution. + + + The degrees of freedom n. + The positive-definite matrix scale matrix V. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Unsupported. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the degrees of freedom for this Wishart distribution. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the mean for this distribution as a flat matrix. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Joint distribution assuming independence between vector components. + + + + + In probability and statistics, given at least two random variables X, + Y, ..., that are defined on a probability space, the joint probability + distribution for X, Y, ... is a probability distribution that + gives the probability that each of X, Y, ... falls in any particular range or + discrete set of values specified for that variable. In the case of only two + random variables, this is called a bivariate distribution, but the concept + generalizes to any number of random variables, giving a multivariate distribution. + + + + This class is also available in a generic version, allowing for any + choice of component distribution (. + + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Joint_probability_distribution + + + + + The following example shows how to declare and initialize an Independent Joint + Gaussian Distribution using known means and variances for each component. + + + // Declare two normal distributions + NormalDistribution pa = new NormalDistribution(4.2, 1); // p(a) + NormalDistribution pb = new NormalDistribution(7.0, 2); // p(b) + + // Now, create a joint distribution combining these two: + var joint = new Independent(pa, pb); + + // This distribution assumes the distributions of the two components are independent, + // i.e. if we have 2D input vectors on the form {a, b}, then p({a,b}) = p(a) * p(b). + + // Lets check a simple example. Consider a 2D input vector x = { 4.2, 7.0 } as + // + double[] x = new double[] { 4.2, 7.0 }; + + // Those two should be completely equivalent: + double p1 = joint.ProbabilityDensityFunction(x); + double p2 = pa.ProbabilityDensityFunction(x[0]) * pb.ProbabilityDensityFunction(x[1]); + + bool equal = p1 == p2; // at this point, equal should be true. + + + + + + + + Joint distribution assuming independence between vector components. + + + The type of the underlying distributions. + + + + In probability and statistics, given at least two random variables X, + Y, ..., that are defined on a probability space, the joint probability + distribution for X, Y, ... is a probability distribution that + gives the probability that each of X, Y, ... falls in any particular range or + discrete set of values specified for that variable. In the case of only two + random variables, this is called a bivariate distribution, but the concept + generalizes to any number of random variables, giving a multivariate distribution. + + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Joint_probability_distribution + + + + + + The following example shows how to declare and initialize an Independent Joint + Gaussian Distribution using known means and variances for each component. + + + // Declare two normal distributions + NormalDistribution pa = new NormalDistribution(4.2, 1); // p(a) + NormalDistribution pb = new NormalDistribution(7.0, 2); // p(b) + + // Now, create a joint distribution combining these two: + var joint = new Independent<NormalDistribution>(pa, pb); + + // This distribution assumes the distributions of the two components are independent, + // i.e. if we have 2D input vectors on the form {a, b}, then p({a,b}) = p(a) * p(b). + + // Lets check a simple example. Consider a 2D input vector x = { 4.2, 7.0 } as + // + double[] x = new double[] { 4.2, 7.0 }; + + // Those two should be completely equivalent: + double p1 = joint.ProbabilityDensityFunction(x); + double p2 = pa.ProbabilityDensityFunction(x[0]) * pb.ProbabilityDensityFunction(x[1]); + + bool equal = p1 == p2; // at this point, equal should be true. + + + + The following example shows how to fit a distribution (estimate + its parameters) from a given dataset. + + + // Let's consider an input dataset of 2D vectors. We would + // like to estimate an Independent<NormalDistribution> + // which best models this data. + + double[][] data = + { + // x, y + new double[] { 1, 8 }, + new double[] { 2, 6 }, + new double[] { 5, 7 }, + new double[] { 3, 9 }, + }; + + // We start by declaring some initial guesses for the + // distributions of each random variable (x, and y): + // + var distX = new NormalDistribution(0, 1); + var distY = new NormalDistribution(0, 1); + + // Next, we declare our initial guess Independent distribution + var joint = new Independent<NormalDistribution>(distX, distY); + + // We can now fit the distribution to our data, + // producing an estimate of its parameters: + // + joint.Fit(data); + + // At this point, we have estimated our distribution. + + double[] mean = joint.Mean; // should be { 2.75, 7.50 } + double[] var = joint.Variance; // should be { 2.917, 1.667 } + + // | 2.917, 0.000 | + double[,] cov = joint.Covariance; // Cov = | | + // | 0.000, 1.667 | + + // The covariance matrix is diagonal, as it would be expected + // if is assumed there are no interactions between components. + + + + + + + Initializes a new instance of the class. + + + The components. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + For an example on how to fit an independent joint distribution, please + take a look at the examples section for . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + For an example on how to fit an independent joint distribution, please + take a look at the examples section for . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the component distributions of the joint. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + For an independent distribution, this matrix will always be diagonal. + + + + + + Initializes a new instance of the class. + + + The components. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Contains univariate distributions such as Normal, + Cauchy, + Hypergeometric, Poisson, + Bernoulli, and specialized distributions such + as the Kolmogorov-Smirnov, + Nakagami, + Weibull, and Von-Mises distributions. + + + + + The namespace class diagram is shown below. + + + + + + + + + + + Common interface for univariate probability distributions. + + + + + This interface is implemented by both univariate + Discrete Distributions and Continuous + Distributions. + + + For Multivariate distributions, see . + + + + + + + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for this + distribution in the semi-closed interval (a; b] given as + P(a < X ≤ b). + + + The start of the semi-closed interval (a; b]. + The end of the semi-closed interval (a; b]. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the mean value for the distribution. + + + The distribution's mean. + + + + + Gets the variance value for the distribution. + + + The distribution's variance. + + + + + Gets the median value for the distribution. + + + The distribution's median. + + + + + Gets the mode value for the distribution. + + + The distribution's mode. + + + + + Gets entropy of the distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Gets the Quartiles for this distribution. + + + A object containing the first quartile + (Q1) as its minimum value, and the third quartile (Q2) as the maximum. + + + + + Common interface for univariate probability distributions. + + + + + This interface is implemented by both univariate + Discrete Distributions and Continuous + Distributions. However, unlike , this interface + has a generic parameter that allows to define the type of the distribution values (i.e. + ). + + + For Multivariate distributions, see . + + + + + + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Gets the mean value for the distribution. + + + The distribution's mean. + + + + + Gets the variance value for the distribution. + + + The distribution's variance. + + + + + Gets the median value for the distribution. + + + The distribution's median. + + + + + Gets the mode value for the distribution. + + + The distribution's mode. + + + + + Gets entropy of the distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Estimation options for + Cauchy distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets a value indicating whether the distribution parameters + should be estimated using maximum likelihood. Default is true. + + + + The Cauchy distribution parameters can be estimated in many ways. One + approach is to use order statistics to derive approximations to the + location and scale parameters by analysis the interquartile range of + the data. The other approach is to use Maximum Likelihood to estimate + the parameters. The MLE does not exists in simple algebraic form, so + it has to be estimated using numeric optimization. + + + true if the parameters should be estimated by ML; otherwise, false. + + + + + Gets or sets a value indicating whether the scale + parameter should be estimated. Default is true. + + + true if the scale parameter should be estimated; otherwise, false. + + + + + Gets or sets a value indicating whether the location + parameter should be estimated. Default is true. + + + true if the location parameter should be estimated; otherwise, false. + + + + + Estimable parameters of Hypergeometric distributions. + + + + + + Population size parameter N. + + + + + + Successes in population parameter m. + + + + + + Estimation options for Hypergeometric distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets which parameter of the Hypergeometric distribution should be estimated. + + + The hypergeometric parameters to estimate. + + + + + Estimation options for general discrete (categorical) distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the minimum allowed probability + in the frequency tables specifying the discrete + distribution. + + + + + + Gets ors sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Estimation options for + Von-Mises distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets a value indicating whether to use bias correction + when estimating the concentration parameter of the von-Mises + distribution. + + + true to use bias correction; otherwise, false. + + For more information, see: Best, D. and Fisher N. (1981). The bias + of the maximum likelihood estimators of the von Mises-Fisher concentration + parameters. Communications in Statistics - Simulation and Computation, B10(5), + 493-502. + + + + + + Common interface for mixture distributions. + + + + The type of the mixture distribution, if either univariate or multivariate. + + + + + + Gets the mixture coefficients (component weights). + + + + + + Gets the mixture components. + + + + + + Abstract class for multivariate discrete probability distributions. + + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given discrete value will + occur is called the probability function (or probability mass function, + abbreviated PMF), and the function describing the cumulative probability + that a given value or any value smaller than it will occur is called the + distribution function (or cumulative distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + Constructs a new MultivariateDiscreteDistribution class. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Not supported. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Gets the number of variables for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the mean values for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the variance values for this distribution. + + + + + + Gets the variance for this distribution. + + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + + Gets the mode for this distribution. + + + + An array of double-precision values containing + the mode values for this distribution. + + + + + + Gets the median for this distribution. + + + + An array of double-precision values containing + the median values for this distribution. + + + + + + Estimation options for univariate + and multivariate + mixture distributions. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + + + + + Initializes a new instance of the class. + + + The convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + The fitting options for the inner + component distributions of the mixture density. + + + + + Gets or sets the convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + + + The convergence threshold. + + + + + Gets or sets the maximum number of iterations + to be performed by the Expectation-Maximization + algorithm. Default is zero (iterate until convergence). + + + + + + Gets or sets the fitting options for the inner + component distributions of the mixture density. + + + The fitting options for inner distributions. + + + + + Gets or sets whether to make computations using the log + -domain. This might improve accuracy on large datasets. + + + + + + Estimation options for + Normal distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the regularization step to + avoid singular or non-positive definite + covariance matrices. Default is 0. + + + The regularization step. + + + + + Gets or sets a value indicating whether the covariance + matrix to be estimated should be assumed to be diagonal. + + + true to estimate a diagonal covariance matrix; otherwise, false. + + + + + Gets or sets whether the estimation function should + allow non-positive definite covariance matrices by + using the Singular Value Decomposition Function. + + + + + + Mixture of multivariate probability distributions. + + + + + A mixture density is a probability density function which is expressed + as a convex combination (i.e. a weighted sum, with non-negative weights + that sum to 1) of other probability density functions. The individual + density functions that are combined to make the mixture density are + called the mixture components, and the weights associated with each + component are called the mixture weights. + + + References: + + + Wikipedia, The Free Encyclopedia. Mixture density. Available on: + http://en.wikipedia.org/wiki/Mixture_density + + + + + The type of the multivariate component distributions. + + + + + // Randomly initialize some mixture components + MultivariateNormalDistribution[] components = new MultivariateNormalDistribution[2]; + components[0] = new MultivariateNormalDistribution(new double[] { 2 }, new double[,] { { 1 } }); + components[1] = new MultivariateNormalDistribution(new double[] { 5 }, new double[,] { { 1 } }); + + // Create an initial mixture + var mixture = new MultivariateMixture<MultivariateNormalDistribution>(components); + + // Now, suppose we have a weighted data + // set. Those will be the input points: + + double[][] points = new double[] { 0, 3, 1, 7, 3, 5, 1, 2, -1, 2, 7, 6, 8, 6 } // (14 points) + .ToArray(); + + // And those are their respective unnormalized weights: + double[] weights = { 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 2, 3, 1, 1 }; // (14 weights) + + // Let's normalize the weights so they sum up to one: + weights = weights.Divide(weights.Sum()); + + // Now we can fit our model to the data: + mixture.Fit(points, weights); // done! + + // Our model will be: + double mean1 = mixture.Components[0].Mean[0]; // 1.41126 + double mean2 = mixture.Components[1].Mean[0]; // 6.53301 + + // With mixture coefficients + double pi1 = mixture.Coefficients[0]; // 0.51408489193241225 + double pi2 = mixture.Coefficients[1]; // 0.48591510806758775 + + // If we need the GaussianMixtureModel functionality, we can + // use the estimated mixture to initialize a new model: + GaussianMixtureModel gmm = new GaussianMixtureModel(mixture); + + mean1 = gmm.Gaussians[0].Mean[0]; // 1.41126 (same) + mean2 = gmm.Gaussians[1].Mean[0]; // 6.53301 (same) + + p1 = gmm.Gaussians[0].Proportion; // 0.51408 (same) + p2 = gmm.Gaussians[1].Proportion; // 0.48591 (same) + + + + + + + + + + + Initializes a new instance of the class. + + + The mixture distribution components. + + + + + Initializes a new instance of the class. + + + The mixture weight coefficients. + The mixture distribution components. + + + + + Gets the probability density function (pdf) for one of + the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for one + of the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for one + of the component distributions evaluated at point x. + + + The component distribution's index. + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + The initial mixture coefficients. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + The initial mixture coefficients. + The convergence threshold for the Expectation-Maximization estimation. + Returns a new Mixture fitted to the given observations. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mixture components. + + + + + + Gets the weight coefficients. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance-covariance matrix for this distribution. + + + + + + Gets the variance vector for this distribution. + + + + + + Multinomial probability distribution. + + + + The multinomial distribution is a generalization of the binomial + distribution. The binomial distribution is the probability distribution + of the number of "successes" in n independent + Bernoulli + trials, with the same probability of "success" on each trial. + + In a multinomial distribution, the analog of the + Bernoulli distribution is the + categorical distribution, + where each trial results in exactly one of some fixed finite number + k of possible outcomes, with probabilities p1, ..., pk + and there are n independent trials. + + + References: + + + Wikipedia, The Free Encyclopedia. Multinomial distribution. Available on: + http://en.wikipedia.org/wiki/Multinomial_distribution + + + + + + // distribution parameters + int numberOfTrials = 5; + double[] probabilities = { 0.25, 0.75 }; + + // Create a new Multinomial distribution with 5 trials for 2 symbols + var dist = new MultinomialDistribution(numberOfTrials, probabilities); + + int dimensions = dist.Dimension; // 2 + + double[] mean = dist.Mean; // { 1.25, 3.75 } + double[] median = dist.Median; // { 1.25, 3.75 } + double[] var = dist.Variance; // { -0.9375, -0.9375 } + + double pdf1 = dist.ProbabilityMassFunction(new[] { 2, 3 }); // 0.26367187499999994 + double pdf2 = dist.ProbabilityMassFunction(new[] { 1, 4 }); // 0.3955078125 + double pdf3 = dist.ProbabilityMassFunction(new[] { 5, 0 }); // 0.0009765625 + double lpdf = dist.LogProbabilityMassFunction(new[] { 1, 4 }); // -0.9275847384929139 + + // output is "Multinomial(x; n = 5, p = { 0.25, 0.75 })" + string str = dist.ToString(CultureInfo.InvariantCulture); + + + + + + + + + + Initializes a new instance of the class. + + + The total number of trials N. + A vector containing the probabilities of seeing each of possible outcomes. + + + + + Not supported. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the event probabilities associated with the trials. + + + + + + Gets the number of Bernoulli trials N. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance vector for this distribution. + + + + + + Gets the variance-covariance matrix for this distribution. + + + + + + Beta Distribution (of the first kind). + + + + + The beta distribution is a family of continuous probability distributions + defined on the interval (0, 1) parameterized by two positive shape parameters, + typically denoted by α and β. The beta distribution can be suited to the + statistical modeling of proportions in applications where values of proportions + equal to 0 or 1 do not occur. One theoretical case where the beta distribution + arises is as the distribution of the ratio formed by one random variable having + a Gamma distribution divided by the sum of it and another independent random + variable also having a Gamma distribution with the same scale parameter (but + possibly different shape parameter). + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Beta_distribution + + + + + + Note: More advanced examples, including distribution estimation and random number + generation are also available at the + page. + + + The following example shows how to instantiate and use a Beta + distribution given its alpha and beta parameters: + + + double alpha = 0.42; + double beta = 1.57; + + // Create a new Beta distribution with α = 0.42 and β = 1.57 + BetaDistribution distribution = new BetaDistribution(alpha, beta); + + // Common measures + double mean = distribution.Mean; // 0.21105527638190955 + double median = distribution.Median; // 0.11577711097114812 + double var = distribution.Variance; // 0.055689279830523512 + + // Cumulative distribution functions + double cdf = distribution.DistributionFunction(x: 0.27); // 0.69358638272337991 + double ccdf = distribution.ComplementaryDistributionFunction(x: 0.27); // 0.30641361727662009 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 0.26999999068687469 + + // Probability density functions + double pdf = distribution.ProbabilityDensityFunction(x: 0.27); // 0.94644031936694828 + double lpdf = distribution.LogProbabilityDensityFunction(x: 0.27); // -0.055047364344046057 + + // Hazard (failure rate) functions + double hf = distribution.HazardFunction(x: 0.27); // 3.0887671630877072 + double chf = distribution.CumulativeHazardFunction(x: 0.27); // 1.1828193992944409 + + // String representation + string str = distribution.ToString(); // B(x; α = 0.42, β = 1.57) + + + + The following example shows to create a Beta distribution + given a discrete number of trials and the number of successes + within those trials. It also shows how to compute the 2.5 and + 97.5 percentiles of the distribution: + + + int trials = 100; + int successes = 78; + + BetaDistribution distribution = new BetaDistribution(successes, trials); + + double mean = distribution.Mean; // 0.77450980392156865 + double median = distribution.Median; // 0.77630912598534851 + + double p025 = distribution.InverseDistributionFunction(p: 0.025); // 0.68899653915764347 + double p975 = distribution.InverseDistributionFunction(p: 0.975); // 0.84983461640764513 + + + + The next example shows how to generate 1000 new samples from a Beta distribution: + + + // Using the distribution's parameters + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, min: 0, max: 1, samples: 1000); + + // Using an existing distribution + var b = new GeneralizedBetaDistribution(alpha: 1, beta: 2); + double[] new_samples = b.Generate(1000); + + + + And finally, how to estimate the parameters of a Beta distribution from + a set of observations, using either the Method-of-moments or the Maximum + Likelihood Estimate. + + + // Draw 100000 observations from a Beta with α = 2, β = 3: + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, samples: 100000); + + // Estimate a distribution from the data + var B = BetaDistribution.Estimate(samples); + + // Explicitly using Method-of-moments estimation + var mm = BetaDistribution.Estimate(samples, + new BetaOptions { Method = BetaEstimationMethod.Moments }); + + // Explicitly using Maximum Likelihood estimation + var mle = BetaDistribution.Estimate(samples, + new BetaOptions { Method = BetaEstimationMethod.MaximumLikelihood }); + + + + + + + + + + Abstract class for univariate continuous probability Distributions. + + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given value will occur is called + the probability function (or probability density function, abbreviated PDF), and + the function describing the cumulative probability that a given value or any value + smaller than it will occur is called the distribution function (or cumulative + distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + + + + Constructs a new UnivariateDistribution class. + + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for this + distribution in the semi-closed interval (a; b] given as + P(a < X ≤ b). + + + The start of the semi-closed interval (a; b]. + The end of the semi-closed interval (a; b]. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + + + Gets the Quartiles for this distribution. + + + A object containing the first quartile + (Q1) as its minimum value, and the third quartile (Q2) as the maximum. + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + + + Gets the Standard Deviation (the square root of + the variance) for the current distribution. + + + The distribution's standard deviation. + + + + + Creates a new Beta distribution. + + + + + + Creates a new Beta distribution. + + + The number of success r. Default is 0. + The number of trials n. Default is 1. + + + + + Creates a new Beta distribution. + + + The shape parameter α (alpha). + The shape parameter β (beta). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Beta's CDF is computed using the Incomplete + (regularized) Beta function I_x(a,b) as CDF(x) = I_x(a,b) + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + The Beta's PDF is computed as pdf(x) = c * x^(a - 1) * (1 - x)^(b - 1) + where constant c is c = 1.0 / Beta.Function(a, b) + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Computes the Gradient of the Log-Likelihood function for estimating Beta distributions. + + + The observed values. + The current alpha value. + The current beta value. + + + A bi-dimensional value containing the gradient w.r.t to alpha in its + first position, and the gradient w.r.t to be in its second position. + + + + + + Computes the Gradient of the Log-Likelihood function for estimating Beta distributions. + + + The sum of log(y), where y refers to all observed values. + The sum of log(1 - y), where y refers to all observed values. + The total number of observed values. + The current alpha value. + The current beta value. + A bi-dimensional vector to store the gradient. + + + A bi-dimensional vector containing the gradient w.r.t to alpha in its + first position, and the gradient w.r.t to be in its second position. + + + + + + Computes the Log-Likelihood function for estimating Beta distributions. + + + The observed values. + The current alpha value. + The current beta value. + + The log-likelihood value for the given observations and given Beta parameters. + + + + + Computes the Log-Likelihood function for estimating Beta distributions. + + + The sum of log(y), where y refers to all observed values. + The sum of log(1 - y), where y refers to all observed values. + The total number of observed values. + The current alpha value. + The current beta value. + + The log-likelihood value for the given observations and given Beta parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The number of samples to generate. + + An array of double values sampled from the specified Beta distribution. + + + + + Generates a random observation from the + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + + A random double value sampled from the specified Beta distribution. + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Gets the shape parameter α (alpha) + + + + + + Gets the shape parameter β (beta). + + + + + + Gets the number of successes r. + + + + + + Gets the number of trials n. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + The Beta's mean is computed as μ = a / (a + b). + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + The Beta's variance is computed as σ² = (a * b) / ((a + b)² * (a + b + 1)). + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the mode for this distribution. + + + + The beta distribution's mode is given + by (a - 1) / (a + b - 2). + + + + The distribution's mode value. + + + + + + Beta prime distribution. + + + + + In probability theory and statistics, the beta prime distribution (also known as inverted + beta distribution or beta distribution of the second kind) is an absolutely continuous + probability distribution defined for x > 0 with two parameters α and β, having the + probability density function: + + + x^(α-1) (1+x)^(-α-β) + f(x) = -------------------- + B(α,β) + + + + where B is the Beta function. While the related beta distribution is + the conjugate prior distribution of the parameter of a Bernoulli + distribution expressed as a probability, the beta prime distribution is the conjugate prior + distribution of the parameter of a Bernoulli distribution expressed in odds. The distribution is + a Pearson type VI distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Beta Prime distribution. Available on: + http://en.wikipedia.org/wiki/Beta_prime_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Beta prime distribution given its two non-negative shape parameters: + + + // Create a new Beta-Prime distribution with shape (4,2) + var betaPrime = new BetaPrimeDistribution(alpha: 4, beta: 2); + + double mean = betaPrime.Mean; // 4.0 + double median = betaPrime.Median; // 2.1866398762435981 + double mode = betaPrime.Mode; // 1.0 + double var = betaPrime.Variance; // +inf + + double cdf = betaPrime.DistributionFunction(x: 0.4); // 0.02570357589099781 + double pdf = betaPrime.ProbabilityDensityFunction(x: 0.4); // 0.16999719504628183 + double lpdf = betaPrime.LogProbabilityDensityFunction(x: 0.4); // -1.7719733417957513 + + double ccdf = betaPrime.ComplementaryDistributionFunction(x: 0.4); // 0.97429642410900219 + double icdf = betaPrime.InverseDistributionFunction(p: cdf); // 0.39999982363709291 + + double hf = betaPrime.HazardFunction(x: 0.4); // 0.17448200654307533 + double chf = betaPrime.CumulativeHazardFunction(x: 0.4); // 0.026039684773113869 + + string str = betaPrime.ToString(CultureInfo.InvariantCulture); // BetaPrime(x; α = 4, β = 2) + + + + + + + Constructs a new Beta-Prime distribution with the given + two non-negative shape parameters a and b. + + + The distribution's non-negative shape parameter a. + The distribution's non-negative shape parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's non-negative shape parameter a. + + + + + + Gets the distribution's non-negative shape parameter b. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution, which + for the Beta- Prime distribution ranges from 0 to all + positive numbers. + + + + A containing + the support interval for this distribution. + + + + + + Cauchy-Lorentz distribution. + + + + + The Cauchy distribution, named after Augustin Cauchy, is a continuous probability + distribution. It is also known, especially among physicists, as the Lorentz + distribution (after Hendrik Lorentz), Cauchy–Lorentz distribution, Lorentz(ian) + function, or Breit–Wigner distribution. The simplest Cauchy distribution is called + the standard Cauchy distribution. It has the distribution of a random variable that + is the ratio of two independent standard normal random variables. + + + References: + + + Wikipedia, The Free Encyclopedia. Cauchy distribution. + Available from: http://en.wikipedia.org/wiki/Cauchy_distribution + + + + + + The following example demonstrates how to instantiate a Cauchy distribution + with a given location parameter x0 and scale parameter γ (gamma), calculating + its main properties and characteristics: + + + double location = 0.42; + double scale = 1.57; + + // Create a new Cauchy distribution with x0 = 0.42 and γ = 1.57 + CauchyDistribution cauchy = new CauchyDistribution(location, scale); + + // Common measures + double mean = cauchy.Mean; // NaN - Cauchy's mean is undefined. + double var = cauchy.Variance; // NaN - Cauchy's variance is undefined. + double median = cauchy.Median; // 0.42 + + // Cumulative distribution functions + double cdf = cauchy.DistributionFunction(x: 0.27); // 0.46968025841608563 + double ccdf = cauchy.ComplementaryDistributionFunction(x: 0.27); // 0.53031974158391437 + double icdf = cauchy.InverseDistributionFunction(p: 0.69358638272337991); // 1.5130304686978195 + + // Probability density functions + double pdf = cauchy.ProbabilityDensityFunction(x: 0.27); // 0.2009112009763413 + double lpdf = cauchy.LogProbabilityDensityFunction(x: 0.27); // -1.6048922547266871 + + // Hazard (failure rate) functions + double hf = cauchy.HazardFunction(x: 0.27); // 0.3788491832800277 + double chf = cauchy.CumulativeHazardFunction(x: 0.27); // 0.63427516833243092 + + // String representation + string str = cauchy.ToString(CultureInfo.InvariantCulture); // "Cauchy(x; x0 = 0.42, γ = 1.57) + + + + The following example shows how to fit a Cauchy distribution (estimate its + location and shape parameters) given a set of observation values. + + + // Create an initial distribution + CauchyDistribution cauchy = new CauchyDistribution(); + + // Consider a vector of univariate observations + double[] observations = { 0.25, 0.12, 0.72, 0.21, 0.62, 0.12, 0.62, 0.12 }; + + // Fit to the observations + cauchy.Fit(observations); + + // Check estimated values + double location = cauchy.Location; // 0.18383 + double gamma = cauchy.Scale; // -0.10530 + + + + It is also possible to estimate only some of the Cauchy parameters at + a time. For this, you can specify a object + and pass it alongside the observations: + + + // Create options to estimate location only + CauchyOptions options = new CauchyOptions() + { + EstimateLocation = true, + EstimateScale = false + }; + + // Create an initial distribution with a pre-defined scale + CauchyDistribution cauchy = new CauchyDistribution(location: 0, scale: 4.2); + + // Fit to the observations + cauchy.Fit(observations, options); + + // Check estimated values + double location = cauchy.Location; // 0.3471218110202 + double gamma = cauchy.Scale; // 4.2 (unchanged) + + + + + + + + + + Constructs a Cauchy-Lorentz distribution + with location parameter 0 and scale 1. + + + + + + Constructs a Cauchy-Lorentz distribution + with given location and scale parameters. + + + The location parameter x0. + The scale parameter gamma (γ). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Cauchy's CDF is defined as CDF(x) = 1/π * atan2(x-location, scale) + 0.5. + + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + The Cauchy's PDF is defined as PDF(x) = c / (1.0 + ((x-location)/scale)²) + where the constant c is given by c = 1.0 / (π * scale); + + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random observation from the + Cauchy distribution with the given parameters. + + + The location parameter x0. + The scale parameter gamma. + + A random double value sampled from the specified Cauchy distribution. + + + + + Generates a random vector of observations from the + Cauchy distribution with the given parameters. + + + The location parameter x0. + The scale parameter gamma. + The number of samples to generate. + + An array of double values sampled from the specified Cauchy distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's + location parameter x0. + + + + + + Gets the distribution's + scale parameter gamma. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + The Cauchy's median is the location parameter x0. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + The Cauchy's median is the location parameter x0. + + + + + + Cauchy's mean is undefined. + + + Undefined. + + + + + Cauchy's variance is undefined. + + + Undefined. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + The Cauchy's entropy is defined as log(scale) + log(4*π). + + + + + + Gets the Standard Cauchy Distribution, + with zero location and unitary shape. + + + + + + Dirichlet distribution. + + + + + The Dirichlet distribution, often denoted Dir(α), is a family of continuous + multivariate probability distributions parameterized by a vector α of positive + real numbers. It is the multivariate generalization of the beta distribution. + + Dirichlet distributions are very often used as prior distributions in Bayesian + statistics, and in fact the Dirichlet distribution is the conjugate prior of the + categorical distribution and multinomial distribution. That is, its probability + density function returns the belief that the probabilities of K rival events are + xi given that each event has been observed αi−1 times. + + + References: + + + Wikipedia, The Free Encyclopedia. Dirichlet distribution. + Available from: http://en.wikipedia.org/wiki/Dirichlet_distribution + + + + + + // Create a Dirichlet with the following concentrations + var dirich = new DirichletDistribution(0.42, 0.57, 1.2); + + // Common measures + double[] mean = dirich.Mean; // { 0.19, 0.26, 0.54 } + double[] median = dirich.Median; // { 0.19, 0.26, 0.54 } + double[] var = dirich.Variance; // { 0.048, 0.060, 0.077 } + double[,] cov = dirich.Covariance; // see below + + + // 0.0115297440926238 0.0156475098399895 0.0329421259789253 + // cov = 0.0156475098399895 0.0212359062114143 0.0447071709713986 + // 0.0329421259789253 0.0447071709713986 0.0941203599397865 + + // (the above matrix representation has been transcribed to text using) + string str = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture); + + + // Probability mass functions + double pdf1 = dirich.ProbabilityDensityFunction(new double[] { 2, 5 }); // 0.12121671541846207 + double pdf2 = dirich.ProbabilityDensityFunction(new double[] { 4, 2 }); // 0.12024840322466089 + double pdf3 = dirich.ProbabilityDensityFunction(new double[] { 3, 7 }); // 0.082907634905068528 + double lpdf = dirich.LogProbabilityDensityFunction(new double[] { 3, 7 }); // -2.4900281233124044 + + + + + + + Creates a new symmetric Dirichlet distribution. + + + The number k of categories. + The common concentration parameter α (alpha). + + + + + Creates a new Dirichlet distribution. + + + The concentration parameters αi (alpha_i). + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not supported. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Hidden Markov Model probability distribution. + + + + + + Initializes a new instance of the class. + + + The model. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the mean values for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the variance values for this distribution. + + + + + + Gets the variance for this distribution. + + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + + Birnbaum-Saunders (Fatigue Life) distribution. + + + + + The Birnbaum–Saunders distribution, also known as the fatigue life distribution, + is a probability distribution used extensively in reliability applications to model + failure times. There are several alternative formulations of this distribution in + the literature. It is named after Z. W. Birnbaum and S. C. Saunders. + + + References: + + + Wikipedia, The Free Encyclopedia. Birnbaum–Saunders distribution. + Available from: http://en.wikipedia.org/wiki/Birnbaum%E2%80%93Saunders_distribution + + NIST/SEMATECH e-Handbook of Statistical Methods, Birnbaum-Saunders (Fatigue Life) Distribution + Available from: http://www.itl.nist.gov/div898/handbook/eda/section3/eda366a.htm + + + + + + This example shows how to create a Birnbaum-Saunders distribution + and compute some of its properties. + + + // Creates a new Birnbaum-Saunders distribution + var bs = new BirnbaumSaundersDistribution(shape: 0.42); + + double mean = bs.Mean; // 1.0882000000000001 + double median = bs.Median; // 1.0 + double var = bs.Variance; // 0.21529619999999997 + + double cdf = bs.DistributionFunction(x: 1.4); // 0.78956384911580346 + double pdf = bs.ProbabilityDensityFunction(x: 1.4); // 1.3618433601225426 + double lpdf = bs.LogProbabilityDensityFunction(x: 1.4); // 0.30883919386130815 + + double ccdf = bs.ComplementaryDistributionFunction(x: 1.4); // 0.21043615088419654 + double icdf = bs.InverseDistributionFunction(p: cdf); // 2.0618330099769064 + + double hf = bs.HazardFunction(x: 1.4); // 6.4715276077824093 + double chf = bs.CumulativeHazardFunction(x: 1.4); // 1.5585729930861034 + + string str = bs.ToString(CultureInfo.InvariantCulture); // BirnbaumSaunders(x; μ = 0, β = 1, γ = 0.42) + + + + + + + Constructs a Birnbaum-Saunders distribution + with location parameter 0, scale 1, and shape 1. + + + + + + Constructs a Birnbaum-Saunders distribution + with location parameter 0, scale 1, and the + given shape. + + + The shape parameter gamma (γ). Default is 1. + + + + + Constructs a Birnbaum-Saunders distribution + with given location, shape and scale parameters. + + + The location parameter μ. Default is 0. + The scale parameter beta (β). Default is 1. + The shape parameter gamma (γ). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's location parameter μ. + + + + + + Gets the distribution's scale parameter β. + + + + + + Gets the distribution's shape parameter γ. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The Birnbaum Saunders mean is defined as + 1 + 0.5γ². + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The Birnbaum Saunders variance is defined as + γ² (1 + (5/4)γ²). + + + + The distribution's mean value. + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Distribution types supported by the Anderson-Darling distribution. + + + + + + The statistic should reflect p-values for + a Anderson-Darling comparison against an + Uniform distribution. + + + + + + The statistic should reflect p-values for + a Anderson-Darling comparison against a + Normal distribution. + + + + + + Anderson-Darling (A²) distribution. + + + + + // Create a new Anderson Darling distribution (A²) for comparing against a Gaussian + var a2 = new AndersonDarlingDistribution(AndersonDarlingDistributionType.Normal, 30); + + double median = a2.Median; // 0.33089957635450062 + + double chf = a2.CumulativeHazardFunction(x: 0.27); // 0.42618068373640966 + double cdf = a2.DistributionFunction(x: 0.27); // 0.34700165471995292 + double ccdf = a2.ComplementaryDistributionFunction(x: 0.27); // 0.65299834528004708 + double icdf = a2.InverseDistributionFunction(p: cdf); // 0.27000000012207787 + + string str = a2.ToString(CultureInfo.InvariantCulture); // "A²(x; n = 30)" + + + + + + + + + Creates a new Anderson-Darling distribution. + + + The type of the compared distribution. + The number of samples. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the type of the distribution that the + Anderson-Darling is being performed against. + + + + + + Gets the number of samples distribution parameter. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Kumaraswamy distribution. + + + + + In probability and statistics, the Kumaraswamy's double bounded distribution is a + family of continuous probability distributions defined on the interval [0,1] differing + in the values of their two non-negative shape parameters, a and b. + It is similar to the Beta distribution, but much simpler to use especially in simulation + studies due to the simple closed form of both its probability density function and + cumulative distribution function. This distribution was originally proposed by Poondi + Kumaraswamy for variables that are lower and upper bounded. + + + A good example of the use of the Kumaraswamy distribution is the storage volume of a + reservoir of capacity zmax whose upper bound is zmax and lower + bound is 0 (Fletcher and Ponnambalam, 1996). + + + + References: + + + Wikipedia, The Free Encyclopedia. Kumaraswamy distribution. Available on: + http://en.wikipedia.org/wiki/Kumaraswamy_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Kumaraswamy distribution given its two non-negative shape parameters: + + + // Create a new Kumaraswamy distribution with shape (4,2) + var kumaraswamy = new KumaraswamyDistribution(a: 4, b: 2); + + double mean = kumaraswamy.Mean; // 0.71111111111111114 + double median = kumaraswamy.Median; // 0.73566031573423674 + double mode = kumaraswamy.Mode; // 0.80910671157022118 + double var = kumaraswamy.Variance; // 0.027654320987654302 + + double cdf = kumaraswamy.DistributionFunction(x: 0.4); // 0.050544639999999919 + double pdf = kumaraswamy.ProbabilityDensityFunction(x: 0.4); // 0.49889280000000014 + double lpdf = kumaraswamy.LogProbabilityDensityFunction(x: 0.4); // -0.69536403596913343 + + double ccdf = kumaraswamy.ComplementaryDistributionFunction(x: 0.4); // 0.94945536000000008 + double icdf = kumaraswamy.InverseDistributionFunction(p: cdf); // 0.40000011480618253 + + double hf = kumaraswamy.HazardFunction(x: 0.4); // 0.52545155993431869 + double chf = kumaraswamy.CumulativeHazardFunction(x: 0.4); // 0.051866764053008864 + + string str = kumaraswamy.ToString(CultureInfo.InvariantCulture); // Kumaraswamy(x; a = 4, b = 2) + + + + + + + Constructs a new Kumaraswamy's double bounded distribution with + the given two non-negative shape parameters a and b. + + + The distribution's non-negative shape parameter a. + The distribution's non-negative shape parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's non-negative shape parameter a. + + + + + + Gets the distribution's non-negative shape parameter b. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Abstract class for univariate discrete probability distributions. + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given discrete value will + occur is called the probability function (or probability mass function, + abbreviated PMF), and the function describing the cumulative probability + that a given value or any value smaller than it will occur is called the + distribution function (or cumulative distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + + + + + Constructs a new UnivariateDistribution class. + + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets P(X ≤ k), the cumulative distribution function + (cdf) for this distribution evaluated at point k. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets P(X ≤ k) or P(X < k), the cumulative distribution function + (cdf) for this distribution evaluated at point k, depending + on the value of the parameter. + + + + A single point in the distribution range. + + True to return P(X ≤ x), false to return P(X < x). Default is true. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + // Compute P(X = k) + double equal = dist.ProbabilityMassFunction(k: 1); + + // Compute P(X < k) + double less = dist.DistributionFunction(k: 1, inclusive: false); + + // Compute P(X ≤ k) + double lessThanOrEqual = dist.DistributionFunction(k: 1, inclusive: true); + + // Compute P(X > k) + double greater = dist.ComplementaryDistributionFunction(k: 1); + + // Compute P(X ≥ k) + double greaterThanOrEqual = dist.ComplementaryDistributionFunction(k: 1, inclusive: true); + + + + + + + + Gets the cumulative distribution function (cdf) for this + distribution in the semi-closed interval (a; b] given as + P(a < X ≤ b). + + + The start of the semi-closed interval (a; b]. + The end of the semi-closed interval (a; b]. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p using a numerical + approximation based on binary search. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point k. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + True to return P(X >= x), false to return P(X > x). Default is false. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + // Compute P(X = k) + double equal = dist.ProbabilityMassFunction(k: 1); + + // Compute P(X < k) + double less = dist.DistributionFunction(k: 1, inclusive: false); + + // Compute P(X ≤ k) + double lessThanOrEqual = dist.DistributionFunction(k: 1, inclusive: true); + + // Compute P(X > k) + double greater = dist.ComplementaryDistributionFunction(k: 1); + + // Compute P(X ≥ k) + double greaterThanOrEqual = dist.ComplementaryDistributionFunction(k: 1, inclusive: true); + + + + + + + Gets P(X > k) the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point k. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The probability of k occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + + + Gets the Standard Deviation (the square root of + the variance) for the current distribution. + + + The distribution's standard deviation. + + + + + Gets the Quartiles for this distribution. + + + A object containing the first quartile + (Q1) as its minimum value, and the third quartile (Q2) as the maximum. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Shapiro-Wilk distribution. + + + + + The Shapiro-Wilk distribution models the distribution of + Shapiro-Wilk's test statistic. + + + + References: + + + Royston, P. "Algorithm AS 181: The W test for Normality", Applied Statistics (1982), + Vol. 31, pp. 176–180. + + Royston, P. "Remark AS R94", Applied Statistics (1995), Vol. 44, No. 4, pp. 547-551. + Available at http://lib.stat.cmu.edu/apstat/R94 + + Royston, P. "Approximating the Shapiro-Wilk W-test for non-normality", + Statistics and Computing (1992), Vol. 2, pp. 117-119. + + Royston, P. "An Extension of Shapiro and Wilk's W Test for Normality to Large + Samples", Journal of the Royal Statistical Society Series C (1982a), Vol. 31, + No. 2, pp. 115-124. + + + + + + // Create a new Shapiro-Wilk's W for 5 samples + var sw = new ShapiroWilkDistribution(samples: 5); + + double mean = sw.Mean; // 0.81248567196628929 + double median = sw.Median; // 0.81248567196628929 + double mode = sw.Mode; // 0.81248567196628929 + + double cdf = sw.DistributionFunction(x: 0.84); // 0.83507812080728383 + double pdf = sw.ProbabilityDensityFunction(x: 0.84); // 0.82021062372326459 + double lpdf = sw.LogProbabilityDensityFunction(x: 0.84); // -0.1981941135071546 + + double ccdf = sw.ComplementaryDistributionFunction(x: 0.84); // 0.16492187919271617 + double icdf = sw.InverseDistributionFunction(p: cdf); // 0.84000000194587177 + + double hf = sw.HazardFunction(x: 0.84); // 4.9733281462602292 + double chf = sw.CumulativeHazardFunction(x: 0.84); // 1.8022833766369502 + + string str = sw.ToString(CultureInfo.InvariantCulture); // W(x; n = 12) + + + + + + + Creates a new Shapiro-Wilk distribution. + + + The number of samples. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of samples distribution parameter. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Not supported. + + + + + + Log-Logistic distribution. + + + + + In probability and statistics, the log-logistic distribution (known as the Fisk + distribution in economics) is a continuous probability distribution for a non-negative + random variable. It is used in survival analysis as a parametric model for events + whose rate increases initially and decreases later, for example mortality rate from + cancer following diagnosis or treatment. It has also been used in hydrology to model + stream flow and precipitation, and in economics as a simple model of the distribution + of wealth or income. + + + The log-logistic distribution is the probability distribution of a random variable + whose logarithm has a logistic distribution. It is similar in shape to the log-normal + distribution but has heavier tails. Its cumulative distribution function can be written + in closed form, unlike that of the log-normal. + + + References: + + + Wikipedia, The Free Encyclopedia. Log-logistic distribution. Available on: + http://en.wikipedia.org/wiki/Log-logistic_distribution + + + + + + This examples shows how to create a Log-Logistic distribution + and compute some of its properties and characteristics. + + + // Create a LLD2 distribution with scale = 0.42, shape = 2.2 + var log = new LogLogisticDistribution(scale: 0.42, shape: 2.2); + + double mean = log.Mean; // 0.60592605102976937 + double median = log.Median; // 0.42 + double mode = log.Mode; // 0.26892249963239817 + double var = log.Variance; // 1.4357858982592435 + + double cdf = log.DistributionFunction(x: 1.4); // 0.93393329906725353 + double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.096960115938100763 + double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -2.3334555609306102 + + double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.066066700932746525 + double icdf = log.InverseDistributionFunction(p: cdf); // 1.4000000000000006 + + double hf = log.HazardFunction(x: 1.4); // 1.4676094699628273 + double chf = log.CumulativeHazardFunction(x: 1.4); // 2.7170904270953637 + + string str = log.ToString(CultureInfo.InvariantCulture); // LogLogistic(x; α = 0.42, β = 2.2) + + + + + + + + + + Constructs a Log-Logistic distribution + with unit scale and unit shape. + + + + + + Constructs a Log-Logistic distribution + with the given scale and unit shape. + + + The distribution's scale value α (alpha). + + + + + Constructs a Log-Logistic distribution + with the given scale and shape parameters. + + + The distribution's scale value α (alpha). + The distribution's shape value β (beta). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Creates a new using + the location-shape parametrization. In this parametrization, + is taken as 1 / . + + + The location parameter μ (mu) [taken as μ = α]. + The distribution's shape value σ (sigma) [taken as σ = β]. + + + A with α = μ and β = 1/σ. + + + + + + Gets the distribution's scale value (α). + + + + + + Gets the distribution's shape value (β). + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Inverse chi-Square (χ²) probability distribution + + + + + In probability and statistics, the inverse-chi-squared distribution (or + inverted-chi-square distribution) is a continuous probability distribution + of a positive-valued random variable. It is closely related to the + chi-squared distribution and its + specific importance is that it arises in the application of Bayesian + inference to the normal distribution, where it can be used as the + prior and posterior distribution for an unknown variance. + + + The inverse-chi-squared distribution (or inverted-chi-square distribution) is + the probability distribution of a random variable whose multiplicative inverse + (reciprocal) has a chi-squared distribution. + It is also often defined as the distribution of a random variable whose reciprocal + divided by its degrees of freedom is a chi-squared distribution. That is, if X has + the chi-squared distribution with v degrees of freedom, then according to + the first definition, 1/X has the inverse-chi-squared distribution with v + degrees of freedom; while according to the second definition, vX has the + inverse-chi-squared distribution with v degrees of freedom. Only the first + definition is covered by this class. + + + + References: + + + Wikipedia, The Free Encyclopedia. Inverse-chi-square distribution. Available on: + http://en.wikipedia.org/wiki/Inverse-chi-squared_distribution + + + + + + The following example demonstrates how to create a new inverse + χ² distribution with the given degrees of freedom. + + + // Create a new inverse χ² distribution with 7 d.f. + var invchisq = new InverseChiSquareDistribution(degreesOfFreedom: 7); + double mean = invchisq.Mean; // 0.2 + double median = invchisq.Median; // 6.345811068141737 + double var = invchisq.Variance; // 75 + + double cdf = invchisq.DistributionFunction(x: 6.27); // 0.50860033566176044 + double pdf = invchisq.ProbabilityDensityFunction(x: 6.27); // 0.0000063457380298844403 + double lpdf = invchisq.LogProbabilityDensityFunction(x: 6.27); // -11.967727146795536 + + double ccdf = invchisq.ComplementaryDistributionFunction(x: 6.27); // 0.49139966433823956 + double icdf = invchisq.InverseDistributionFunction(p: cdf); // 6.2699998329362963 + + double hf = invchisq.HazardFunction(x: 6.27); // 0.000012913598625327002 + double chf = invchisq.CumulativeHazardFunction(x: 6.27); // 0.71049750196765715 + + string str = invchisq.ToString(); // "Inv-χ²(x; df = 7)" + + + + + + + + + Constructs a new Inverse Chi-Square distribution + with the given degrees of freedom. + + + The degrees of freedom for the distribution. + + + + + Gets the probability density function (pdf) for + the χ² distribution evaluated at point x. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the cumulative distribution function (cdf) for + the χ² distribution evaluated at point x. + + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + This method is not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the Degrees of Freedom for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + + + + Hyperbolic Secant distribution. + + + + + In probability theory and statistics, the hyperbolic secant distribution is + a continuous probability distribution whose probability density function and + characteristic function are proportional to the hyperbolic secant function. + The hyperbolic secant function is equivalent to the inverse hyperbolic cosine, + and thus this distribution is also called the inverse-cosh distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Hyperbolic secant distribution. Available on: + http://en.wikipedia.org/wiki/Sech_distribution + + + + + + This examples shows how to create a Sech distribution, + compute some of its properties and generate a number of + random samples from it. + + + // Create a new hyperbolic secant distribution + var sech = new HyperbolicSecantDistribution(); + + double mean = sech.Mean; // 0.0 + double median = sech.Median; // 0.0 + double mode = sech.Mode; // 0.0 + double var = sech.Variance; // 1.0 + + double cdf = sech.DistributionFunction(x: 1.4); // 0.92968538268895873 + double pdf = sech.ProbabilityDensityFunction(x: 1.4); // 0.10955386512899701 + double lpdf = sech.LogProbabilityDensityFunction(x: 1.4); // -2.2113389316917877 + + double ccdf = sech.ComplementaryDistributionFunction(x: 1.4); // 0.070314617311041272 + double icdf = sech.InverseDistributionFunction(p: cdf); // 1.40 + + double hf = sech.HazardFunction(x: 1.4); // 1.5580524977385339 + + string str = sech.ToString(); // Sech(x) + + + + + + + Constructs a Hyperbolic Secant (Sech) distribution. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution (always zero). + + + + The distribution's mean value. + + + + + + Gets the median for this distribution (always zero). + + + + The distribution's median value. + + + + + + Gets the variance for this distribution (always one). + + + + The distribution's variance. + + + + + + Gets the Standard Deviation (the square root of + the variance) for the current distribution. + + + + The distribution's standard deviation. + + + + + + Gets the mode for this distribution (always zero). + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution (-inf, +inf). + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Logistic distribution. + + + + + In probability theory and statistics, the logistic distribution is a continuous + probability distribution. Its cumulative distribution function is the logistic + function, which appears in logistic regression and feedforward neural networks. + It resembles the normal distribution in shape but has heavier tails (higher + kurtosis). The Tukey lambda distribution + can be considered a generalization of the logistic distribution since it adds a + shape parameter, λ (the Tukey distribution becomes logistic when λ is zero). + + + References: + + + Wikipedia, The Free Encyclopedia. Logistic distribution. Available on: + http://en.wikipedia.org/wiki/Logistic_distribution + + + + + + This examples shows how to create a Logistic distribution, + compute some of its properties and generate a number of + random samples from it. + + + // Create a logistic distribution with μ = 0.42 and scale = 3 + var log = new LogisticDistribution(location: 0.42, scale: 1.2); + + double mean = log.Mean; // 0.42 + double median = log.Median; // 0.42 + double mode = log.Mode; // 0.42 + double var = log.Variance; // 4.737410112522892 + + double cdf = log.DistributionFunction(x: 1.4); // 0.693528308197921 + double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.17712232827170876 + double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -1.7309146649427332 + + double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.306471691802079 + double icdf = log.InverseDistributionFunction(p: cdf); // 1.3999999999999997 + + double hf = log.HazardFunction(x: 1.4); // 0.57794025683160088 + double chf = log.CumulativeHazardFunction(x: 1.4); // 1.1826298874077226 + + string str = log.ToString(CultureInfo.InvariantCulture); // Logistic(x; μ = 0.42, scale = 1.2) + + + + + + + + + Constructs a Logistic distribution + with zero location and unit scale. + + + + + + Constructs a Logistic distribution + with given location and unit scale. + + + The distribution's location value μ (mu). + + + + + Constructs a Logistic distribution + with given location and scale parameters. + + + The distribution's location value μ (mu). + The distribution's scale value s. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the location value μ (mu). + + + + + + Gets the location value μ (mu). + + + + The distribution's mean value. + + + + + + Gets the distribution's scale value (s). + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + In the logistic distribution, the mode is equal + to the distribution value. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + In the logistic distribution, the entropy is + equal to ln(s) + 2. + + + + The distribution's entropy. + + + + + + General continuous distribution. + + + + + The general continuous distribution provides the automatic calculation for + a variety of distribution functions and measures given only definitions for + the Probability Density Function (PDF) or the Cumulative Distribution Function + (CDF). Values such as the Expected value, Variance, Entropy and others are + computed through numeric integration. + + + + + // Let's suppose we have a formula that defines a probability distribution + // but we dont know much else about it. We don't know the form of its cumulative + // distribution function, for example. We would then like to know more about + // it, such as the underlying distribution's moments, characteristics, and + // properties. + + // Let's suppose the formula we have is this one: + double mu = 5; + double sigma = 4.2; + + Func>double, double> df = x => 1.0 / (sigma * Math.Sqrt(2 * Math.PI)) + * Math.Exp(-Math.Pow(x - mu, 2) / (2 * sigma * sigma)); + + // And for the moment, let's also pretend we don't know it is actually the + // p.d.f. of a Gaussian distribution with mean 5 and std. deviation of 4.2. + + // So, let's create a distribution based _solely_ on the formula we have: + var distribution = GeneralContinuousDistribution.FromDensityFunction(df); + + // Now, we can check everything that we can know about it: + + double mean = distribution.Mean; // 5 (note that all of those have been + double median = distribution.Median; // 5 detected automatically simply from + double var = distribution.Variance; // 17.64 the given density formula through + double mode = distribution.Mode; // 5 numerical methods) + + double cdf = distribution.DistributionFunction(x: 1.4); // 0.19568296915377595 + double pdf = distribution.ProbabilityDensityFunction(x: 1.4); // 0.065784567984404935 + double lpdf = distribution.LogProbabilityDensityFunction(x: 1.4); // -2.7213699972695058 + + double ccdf = distribution.ComplementaryDistributionFunction(x: 1.4); // 0.80431703084622408 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 1.3999999997024655 + + double hf = distribution.HazardFunction(x: 1.4); // 0.081789351041333558 + double chf = distribution.CumulativeHazardFunction(x: 1.4); // 0.21776177055276186 + + + + + + + Creates a new with the given PDF and CDF functions. + + + The distribution's support over the real line. + A probability density function. + A cumulative distribution function. + + + + + Creates a new with the given PDF and CDF functions. + + + A distribution whose properties will be numerically estimated. + + + + + Creates a new + from an existing + continuous distribution. + + + The distribution. + + A representing the same + but whose measures and functions are computed + using numerical integration and differentiation. + + + + + Creates a new + using only a probability density function definition. + + + A probability density function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a probability density function definition. + + + The distribution's support over the real line. + A probability density function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a cumulative distribution function definition. + + + A cumulative distribution function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a cumulative distribution function definition. + + + The distribution's support over the real line. + A cumulative distribution function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a probability density function definition. + + + The distribution's support over the real line. + A probability density function. + The integration method to use for numerical computations. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a cumulative distribution function definition. + + + The distribution's support over the real line. + A cumulative distribution function. + The integration method to use for numerical computations. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Lévy distribution. + + + + + In probability theory and statistics, the Lévy distribution, named after Paul Lévy, is a continuous + probability distribution for a non-negative random variable. In spectroscopy, this distribution, with + frequency as the dependent variable, is known as a van der Waals profile. It is a special case of the + inverse-gamma distribution. + + + It is one of the few distributions that are stable and that have probability density functions that can + be expressed analytically, the others being the normal distribution and the Cauchy distribution. All three + are special cases of the stable distributions, which do not generally have a probability density function + which can be expressed analytically. + + + References: + + + Wikipedia, The Free Encyclopedia. Lévy distribution. Available on: + https://en.wikipedia.org/wiki/L%C3%A9vy_distribution + + + + + + This examples shows how to create a Lévy distribution + and how to compute some of its measures and properties. + + + + // Create a new Lévy distribution on 1 with scale 4.2: + var levy = new LevyDistribution(location: 1, scale: 4.2); + + double mean = levy.Mean; // +inf + double median = levy.Median; // 10.232059220934481 + double mode = levy.Mode; // NaN + double var = levy.Variance; // +inf + + double cdf = levy.DistributionFunction(x: 1.4); // 0.0011937454448720029 + double pdf = levy.ProbabilityDensityFunction(x: 1.4); // 0.016958939623898304 + double lpdf = levy.LogProbabilityDensityFunction(x: 1.4); // -4.0769601727487803 + + double ccdf = levy.ComplementaryDistributionFunction(x: 1.4); // 0.99880625455512795 + double icdf = levy.InverseDistributionFunction(p: cdf); // 1.3999999 + + double hf = levy.HazardFunction(x: 1.4); // 0.016979208476674869 + double chf = levy.CumulativeHazardFunction(x: 1.4); // 0.0011944585265140923 + + string str = levy.ToString(CultureInfo.InvariantCulture); // Lévy(x; μ = 1, c = 4.2) + + + + + + + Constructs a new + with zero location and unit scale. + + + + + + Constructs a new in + the given and with unit scale. + + + The distribution's location. + + + + + Constructs a new in the + given and . + + + The distribution's location. + The distribution's scale. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the location μ (mu) for this distribution. + + + + + + Gets the location c for this distribution. + + + + + + Gets the mean for this distribution, which for + the Levy distribution is always positive infinity. + + + + This property always returns Double.PositiveInfinity. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution, which for + the Levy distribution is always positive infinity. + + + + This property always returns Double.PositiveInfinity. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Folded Normal (Gaussian) distribution. + + + + + The folded normal distribution is a probability distribution related to the normal + distribution. Given a normally distributed random variable X with mean μ and variance + σ², the random variable Y = |X| has a folded normal distribution. Such a case may be + encountered if only the magnitude of some variable is recorded, but not its sign. The + distribution is called Folded because probability mass to the left of the x = 0 is + "folded" over by taking the absolute value. + + + The Half-Normal (Gaussian) distribution is a special + case of this distribution and can be created using a named constructor. + + + + References: + + + Wikipedia, The Free Encyclopedia. Folded Normal distribution. Available on: + https://en.wikipedia.org/wiki/Folded_normal_distribution + + + + + + This examples shows how to create a Folded Normal distribution + and how to compute some of its properties and measures. + + + // Creates a new Folded Normal distribution based on a Normal + // distribution with mean value 4 and standard deviation 4.2: + // + var fn = new FoldedNormalDistribution(mean: 4, stdDev: 4.2); + + double mean = fn.Mean; // 4.765653108337438 + double median = fn.Median; // 4.2593565881862734 + double mode = fn.Mode; // 2.0806531871308014 + double var = fn.Variance; // 10.928550450993715 + + double cdf = fn.DistributionFunction(x: 1.4); // 0.16867109769018807 + double pdf = fn.ProbabilityDensityFunction(x: 1.4); // 0.11998602818182187 + double lpdf = fn.LogProbabilityDensityFunction(x: 1.4); // -2.1203799747969523 + + double ccdf = fn.ComplementaryDistributionFunction(x: 1.4); // 0.83132890230981193 + double icdf = fn.InverseDistributionFunction(p: cdf); // 1.4 + + double hf = fn.HazardFunction(x: 1.4); // 0.14433039420191671 + double chf = fn.CumulativeHazardFunction(x: 1.4); // 0.18472977144474392 + + string str = fn.ToString(CultureInfo.InvariantCulture); // FN(x; μ = 4, σ² = 17.64) + + + + + + + + + Creates a new + with zero mean and unit standard deviation. + + + + + + Creates a new with + the given and unit standard deviation. + + + + The mean of the original normal distribution that should be folded. + + + + + Creates a new with + the given and + standard deviation + + + + The mean of the original normal distribution that should be folded. + + The standard deviation of the original normal distribution that should be folded. + + + + + Creates a new Half-normal distribution with the given + standard deviation. The half-normal distribution is a special case + of the when location is zero. + + + + The standard deviation of the original normal distribution that should be folded. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + This method is not supported. + + + + + + + + Shift Log-Logistic distribution. + + + + + The shifted log-logistic distribution is a probability distribution also known as + the generalized log-logistic or the three-parameter log-logistic distribution. It + has also been called the generalized logistic distribution, but this conflicts with + other uses of the term: see generalized logistic distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Shifted log-logistic distribution. Available on: + http://en.wikipedia.org/wiki/Shifted_log-logistic_distribution + + + + + + This examples shows how to create a Shifted Log-Logistic distribution, + compute some of its properties and generate a number of random samples + from it. + + + // Create a LLD3 distribution with μ = 0.0, scale = 0.42, and shape = 0.1 + var log = new ShiftedLogLogisticDistribution(location: 0, scale: 0.42, shape: 0.1); + + double mean = log.Mean; // 0.069891101544818923 + double median = log.Median; // 0.0 + double mode = log.Mode; // -0.083441677069328604 + double var = log.Variance; // 0.62447259946747213 + + double cdf = log.DistributionFunction(x: 1.4); // 0.94668863559417671 + double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.090123683626808615 + double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -2.4065722895662613 + + double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.053311364405823292 + double icdf = log.InverseDistributionFunction(p: cdf); // 1.4000000037735139 + + double hf = log.HazardFunction(x: 1.4); // 1.6905154207038875 + double chf = log.CumulativeHazardFunction(x: 1.4); // 2.9316057546685061 + + string str = log.ToString(CultureInfo.InvariantCulture); // LLD3(x; μ = 0, σ = 0.42, ξ = 0.1) + + + + + + + + + + Constructs a Shifted Log-Logistic distribution + with zero location, unit scale, and zero shape. + + + + + + Constructs a Shifted Log-Logistic distribution + with the given location, unit scale and zero shape. + + + The distribution's location value μ (mu). + + + + + Constructs a Shifted Log-Logistic distribution + with the given location and scale and zero shape. + + + The distribution's location value μ (mu). + The distribution's scale value σ (sigma). + + + + + Constructs a Shifted Log-Logistic distribution + with the given location and scale and zero shape. + + + The distribution's location value μ (mu). + The distribution's scale value s. + The distribution's shape value ξ (ksi). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the distribution's location value μ (mu). + + + + + + Gets the distribution's scale value (σ). + + + + + + Gets the distribution's shape value (ξ). + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Skew Normal distribution. + + + + + In probability theory and statistics, the skew normal distribution is a + continuous probability distribution + that generalises the normal distribution to allow + for non-zero skewness. + + + References: + + + Wikipedia, The Free Encyclopedia. Skew normal distribution. Available on: + https://en.wikipedia.org/wiki/Skew_normal_distribution + + + + + + This examples shows how to create a Skew normal distribution + and compute some of its properties and derived measures. + + + // Create a Skew normal distribution with location 2, scale 3 and shape 4.2 + var skewNormal = new SkewNormalDistribution(location: 2, scale: 3, shape: 4.2); + + double mean = skewNormal.Mean; // 4.3285611780515953 + double median = skewNormal.Median; // 4.0230040653062265 + double var = skewNormal.Variance; // 3.5778028400709641 + double mode = skewNormal.Mode; // 3.220622226764422 + + double cdf = skewNormal.DistributionFunction(x: 1.4); // 0.020166854942526125 + double pdf = skewNormal.ProbabilityDensityFunction(x: 1.4); // 0.052257431834162059 + double lpdf = skewNormal.LogProbabilityDensityFunction(x: 1.4); // -2.9515731621912877 + + double ccdf = skewNormal.ComplementaryDistributionFunction(x: 1.4); // 0.97983314505747388 + double icdf = skewNormal.InverseDistributionFunction(p: cdf); // 1.3999998597203041 + + double hf = skewNormal.HazardFunction(x: 1.4); // 0.053332990517581239 + double chf = skewNormal.CumulativeHazardFunction(x: 1.4); // 0.020372981958858238 + + string str = skewNormal.ToString(CultureInfo.InvariantCulture); // Sn(x; ξ = 2, ω = 3, α = 4.2) + + + + + + + + + + Constructs a Skew normal distribution with + zero location, unit scale and zero shape. + + + + + + Constructs a Skew normal distribution with + given location, unit scale and zero skewness. + + + The distribution's location value ξ (ksi). + + + + + Constructs a Skew normal distribution with + given location and scale and zero skewness. + + + The distribution's location value ξ (ksi). + The distribution's scale value ω (omega). + + + + + Constructs a Skew normal distribution + with given mean and standard deviation. + + + The distribution's location value ξ (ksi). + The distribution's scale value ω (omega). + The distribution's shape value α (alpha). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Create a new that + corresponds to a with + the given mean and standard deviation. + + + The distribution's mean value μ (mu). + The distribution's standard deviation σ (sigma). + + A representing + a with the given parameters. + + + + + Gets the skew-normal distribution's location value ξ (ksi). + + + + + + Gets the skew-normal distribution's scale value ω (omega). + + + + + + Gets the skew-normal distribution's shape value α (alpha). + + + + + + Not supported. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the skewness for this distribution. + + + + + + Gets the excess kurtosis for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Trapezoidal distribution. + + + + + Trapezoidal distributions have been used in many areas and studied under varying + scopes, such as in the excellent work of (van Dorp and Kotz, 2003), risk analysis + (Pouliquen, 1970) and (Powell and Wilson, 1997), fuzzy set theory (Chen and Hwang, + 1992), applied phyisics, and biomedical applications (Flehinger and Kimmel, 1987). + + + + Trapezoidal distributions are appropriate for modeling events that are comprised + by three different stages: one growth stage, where probability grows up until a + plateau is reached; a stability stage, where probability stays more or less the same; + and a decline stage, where probability decreases until zero (van Dorp and Kotz, 2003). + + + + References: + + + J. René van Dorp, Samuel Kotz, Trapezoidal distribution. Available on: + http://www.seas.gwu.edu/~dorpjr/Publications/JournalPapers/Metrika2003VanDorp.pdf + + Powell MR, Wilson JD (1997). Risk Assessment for National Natural Resource + Conservation Programs, Discussion Paper 97-49. Resources for the Future, Washington + D.C. + + Chen SJ, Hwang CL (1992). Fuzzy Multiple Attribute Decision-Making: Methods and + Applications, Springer-Verlag, Berlin, New York. + + Flehinger BJ, Kimmel M (1987). The natural history of lung cancer in periodically + screened population. Biometrics 1987, 43, 127-144. + + + + + + The following example shows how to create and test the main characteristics + of a Trapezoidal distribution given its parameters: + + + // Create a new trapezoidal distribution with linear growth between + // 0 and 2, stability between 2 and 8, and decrease between 8 and 10. + // + // + // +-----------+ + // /| |\ + // / | | \ + // / | | \ + // -------+---+-----------+---+------- + // ... 0 2 4 6 8 10 ... + // + var trapz = new TrapezoidalDistribution(a: 0, b: 2, c: 8, d: 10, n1: 1, n3: 1); + + double mean = trapz.Mean; // 2.25 + double median = trapz.Median; // 3.0 + double mode = trapz.Mode; // 3.1353457616424696 + double var = trapz.Variance; // 17.986666666666665 + + double cdf = trapz.DistributionFunction(x: 1.4); // 0.13999999999999999 + double pdf = trapz.ProbabilityDensityFunction(x: 1.4); // 0.10000000000000001 + double lpdf = trapz.LogProbabilityDensityFunction(x: 1.4); // -2.3025850929940455 + + double ccdf = trapz.ComplementaryDistributionFunction(x: 1.4); // 0.85999999999999999 + double icdf = trapz.InverseDistributionFunction(p: cdf); // 1.3999999999999997 + + double hf = trapz.HazardFunction(x: 1.4); // 0.11627906976744187 + double chf = trapz.CumulativeHazardFunction(x: 1.4); // 0.15082288973458366 + + string str = trapz.ToString(CultureInfo.InvariantCulture); // Trapezoidal(x; a=0, b=2, c=8, d=10, n1=1, n3=1, α = 1) + + + + + + + Creates a new trapezoidal distribution. + + + The minimum value a. + The beginning of the stability region b. + The end of the stability region c. + The maximum value d. + The growth slope between points and . + The growth slope between points and . + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + The 4-parameter Beta distribution. + + + + + The generalized beta distribution is a family of continuous probability distributions defined + on any interval (min, max) parameterized by two positive shape parameters and two real location + parameters, typically denoted by α, β, a and b. The beta distribution can be suited to the + statistical modeling of proportions in applications where values of proportions equal to 0 or 1 + do not occur. One theoretical case where the beta distribution arises is as the distribution of + the ratio formed by one random variable having a Gamma distribution divided by the sum of it and + another independent random variable also having a Gamma distribution with the same scale parameter + (but possibly different shape parameter). + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Beta_distribution + + Wikipedia, The Free Encyclopedia. Three-point estimation. + Available from: https://en.wikipedia.org/wiki/Three-point_estimation + + Broadleaf Capital International Pty Ltd. Beta PERT origins. + Available from: http://broadleaf.com.au/resource-material/beta-pert-origins/ + + Malcolm, D. G., Roseboom J. H., Clark C.E., and Fazar, W. Application of a technique of research + and development program evaluation, Operations Research, 7, 646-669, 1959. Available from: + http://mech.vub.ac.be/teaching/info/Ontwerpmethodologie/Appendix%20les%202%20PERT.pdf + + Clark, C. E. The PERT model for the distribution of an activity time, Operations Research, 10, 405-406, + 1962. Available from: http://connection.ebscohost.com/c/articles/18246172/pert-model-distribution-activity-time + + + + + + Note: Simpler examples are also available at the page. + + + The following example shows how to create a 4-parameter Beta distribution and + compute some of its properties and measures. + + + // Create a 4-parameter Beta distribution with the following parameters (α, β, a, b): + var beta = new GeneralizedBetaDistribution(alpha: 1.42, beta: 1.57, min: 1, max: 4.2); + + double mean = beta.Mean; // 2.5197324414715716 + double median = beta.Median; // 2.4997705845160225 + double var = beta.Variance; // 0.19999664152943961 + double mode = beta.Mode; // 2.3575757575757574 + double h = beta.Entropy; // -0.050654548091478513 + + double cdf = beta.DistributionFunction(x: 2.27); // 0.40828630817664596 + double pdf = beta.ProbabilityDensityFunction(x: 2.27); // 1.2766172921464953 + double lpdf = beta.LogProbabilityDensityFunction(x: 2.27); // 0.2442138392176838 + + double chf = beta.CumulativeHazardFunction(x: 2.27); // 0.5247323897609667 + double hf = beta.HazardFunction(x: 2.27); // 2.1574915534109484 + + double ccdf = beta.ComplementaryDistributionFunction(x: 2.27); // 0.59171369182335409 + double icdf = beta.InverseDistributionFunction(p: cdf); // 2.27 + + string str = beta.ToString(); // B(x; α = 1.42, β = 1.57, min = 1, max = 4.2) + + + + The following example shows how to create a 4-parameter Beta distribution + with a three-point estimate using PERT. + + + // Create a Beta from a minimum, maximum and most likely value + var b = GeneralizedBetaDistribution.Pert(min: 1, max: 3, mode: 2); + + double mean = b.Mean; // 2.5197324414715716 + double median = b.Median; // 2.4997705845160225 + double var = b.Variance; // 0.19999664152943961 + double mode = b.Mode; // 2.3575757575757574 + + + + The following example shows how to create a 4-parameter Beta distribution + with a three-point estimate using Vose's modification for PERT. + + + // Create a Beta from a minimum, maximum and most likely value + var b = GeneralizedBetaDistribution.Vose(min: 1, max: 3, mode: 1.42); + + double mean = b.Mean; // 1.6133333333333333 + double median = b.Median; // 1.5727889200146494 + double mode = b.Mode; // 1.4471823077804513 + double var = b.Variance; // 0.055555555555555546 + + + + The next example shows how to generate 1000 new samples from a Beta distribution: + + + // Using the distribution's parameters + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, min: 0, max: 1, samples: 1000); + + // Using an existing distribution + var b = new GeneralizedBetaDistribution(alpha: 1, beta: 2); + double[] new_samples = b.Generate(1000); + + + + And finally, how to estimate the parameters of a Beta distribution from + a set of observations, using either the Method-of-moments or the Maximum + Likelihood Estimate. + + + // First we will be drawing 100000 observations from a 4-parameter + // Beta distribution with α = 2, β = 3, min = 10 and max = 15: + + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, min: 10, max: 15, samples: 100000); + + // We can estimate a distribution with the known max and min + var B = GeneralizedBetaDistribution.Estimate(samples, 10, 15); + + // We can explicitly ask for a Method-of-moments estimation + var mm = GeneralizedBetaDistribution.Estimate(samples, 10, 15, + new GeneralizedBetaOptions { Method = BetaEstimationMethod.Moments }); + + // or explicitly ask for the Maximum Likelihood estimation + var mle = GeneralizedBetaDistribution.Estimate(samples, 10, 15, + new GeneralizedBetaOptions { Method = BetaEstimationMethod.MaximumLikelihood }); + + + + + + + + + Constructs a Beta distribution defined in the + interval (0,1) with the given parameters α and β. + + + The shape parameter α (alpha). + The shape parameter β (beta). + + + + + Constructs a Beta distribution defined in the + interval (a, b) with parameters α, β, a and b. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The minimum possible value a. + The maximum possible value b. + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using Vose's PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + + + A Beta distribution initialized using the Vose's PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using Vose's PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + The scale parameter λ (lambda). Default is 4. + + + A Beta distribution initialized using the Vose's PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using usual PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + + + A Beta distribution initialized using the PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using usual PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + The scale parameter λ (lambda). Default is 4. + + + A Beta distribution initialized using the PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using Golenko-Ginzburg observation that the mode is often at 2/3 + of the guessed interval. + + + The minimum possible value a. + The maximum possible value b. + + + A Beta distribution initialized using the Golenko-Ginzburg's method. + + + + + + Constructs a standard Beta distribution defined in the interval (0, 1) + based on the number of successed and trials for an experiment. + + + The number of success r. Default is 0. + The number of trials n. Default is 1. + + + A standard Beta distribution initialized using the given parameters. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The minimum possible value a. + The maximum possible value b. + The number of samples to generate. + + An array of double values sampled from the specified Beta distribution. + + + + + Generates a random observation from a + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The minimum possible value a. + The maximum possible value b. + + A random double value sampled from the specified Beta distribution. + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Gets the minimum value A. + + + + + + Gets the maximum value B. + + + + + + Gets the shape parameter α (alpha) + + + + + + Gets the shape parameter β (beta). + + + + + + Gets the mean for this distribution, + defined as (a + 4 * m + 6 * b). + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution, + defined as ((b - a) / (k+2))² + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + The beta distribution's mode is given + by (a - 1) / (a + b - 2). + + + + The distribution's mode value. + + + + + + Gets the distribution support, defined as (, ). + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Triangular distribution. + + + + + In probability theory and statistics, the triangular distribution is a continuous + probability distribution with lower limit a, upper limit b and mode c, where a < + b and a ≤ c ≤ b. + + + References: + + + Wikipedia, The Free Encyclopedia. Triangular distribution. Available on: + https://en.wikipedia.org/wiki/Triangular_distribution + + + + + + This example shows how to create a Triangular distribution + with minimum 1, maximum 6, and most common value 3. + + + // Create a new Triangular distribution (1, 3, 6). + var trig = new TriangularDistribution(a: 1, b: 6, c: 3); + + double mean = trig.Mean; // 3.3333333333333335 + double median = trig.Median; // 3.2613872124741694 + double mode = trig.Mode; // 3.0 + double var = trig.Variance; // 1.0555555555555556 + + double cdf = trig.DistributionFunction(x: 2); // 0.10000000000000001 + double pdf = trig.ProbabilityDensityFunction(x: 2); // 0.20000000000000001 + double lpdf = trig.LogProbabilityDensityFunction(x: 2); // -1.6094379124341003 + + double ccdf = trig.ComplementaryDistributionFunction(x: 2); // 0.90000000000000002 + double icdf = trig.InverseDistributionFunction(p: cdf); // 2.0000000655718773 + + double hf = trig.HazardFunction(x: 2); // 0.22222222222222224 + double chf = trig.CumulativeHazardFunction(x: 2); // 0.10536051565782628 + + string str = trig.ToString(CultureInfo.InvariantCulture); // Triangular(x; a = 1, b = 6, c = 3) + + + + + + + Constructs a Triangular distribution + with the given parameters a, b and c. + + + The minimum possible value in the distribution (a). + The maximum possible value in the distribution (b). + The most common value in the distribution (c). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Gets the minimum value in a set of weighted observations. + + + + + + Gets the maximum value in a set of weighted observations. + + + + + + Finds the index of the last largest value in a set of observations. + + + + + + Finds the index of the first smallest value in a set of observations. + + + + + + Finds the index of the first smallest value in a set of weighted observations. + + + + + + Finds the index of the last largest value in a set of weighted observations. + + + + + + Gets the triangular parameter A (the minimum value). + + + + + + Gets the triangular parameter B (the maximum value). + + + + + + Gets the mean for this distribution, + defined as (a + b + c) / 3. + + + + The distribution's mean value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution, defined + as (a² + b² + c² - ab - ac - bc) / 18. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution, + also known as the triangular's c. + + + + The distribution's mode value. + + + + + + Gets the distribution support, defined as (, ). + + + + + + Gets the entropy for this distribution, + defined as 0.5 + log((max-min)/2)). + + + + The distribution's entropy. + + + + + + Gumbel distribution (as known as the Extreme Value Type I distribution). + + + + + In probability theory and statistics, the Gumbel distribution is used to model + the distribution of the maximum (or the minimum) of a number of samples of various + distributions. Such a distribution might be used to represent the distribution of + the maximum level of a river in a particular year if there was a list of maximum + values for the past ten years. It is useful in predicting the chance that an extreme + earthquake, flood or other natural disaster will occur. + + + The potential applicability of the Gumbel distribution to represent the distribution + of maxima relates to extreme value theory which indicates that it is likely to be useful + if the distribution of the underlying sample data is of the normal or exponential type. + + + The Gumbel distribution is a particular case of the generalized extreme value + distribution (also known as the Fisher-Tippett distribution). It is also known + as the log-Weibull distribution and the double exponential distribution (a term + that is alternatively sometimes used to refer to the Laplace distribution). It + is related to the Gompertz distribution[citation needed]: when its density is + first reflected about the origin and then restricted to the positive half line, + a Gompertz function is obtained. + + + In the latent variable formulation of the multinomial logit model — common in + discrete choice theory — the errors of the latent variables follow a Gumbel + distribution. This is useful because the difference of two Gumbel-distributed + random variables has a logistic distribution. + + + The Gumbel distribution is named after Emil Julius Gumbel (1891–1966), based on + his original papers describing the distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Gumbel distribution. Available on: + http://en.wikipedia.org/wiki/Gumbel_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Gumbel distribution given its location and scale parameters: + + + var gumbel = new GumbelDistribution(location: 4.795, scale: 1 / 0.392); + + double mean = gumbel.Mean; // 6.2674889410753387 + double median = gumbel.Median; // 5.7299819402593481 + double mode = gumbel.Mode; // 4.7949999999999999 + double var = gumbel.Variance; // 10.704745853604138 + + double cdf = gumbel.DistributionFunction(x: 3.4); // 0.17767760424788051 + double pdf = gumbel.ProbabilityDensityFunction(x: 3.4); // 0.12033954114322486 + double lpdf = gumbel.LogProbabilityDensityFunction(x: 3.4); // -2.1174380222001519 + + double ccdf = gumbel.ComplementaryDistributionFunction(x: 3.4); // 0.82232239575211952 + double icdf = gumbel.InverseDistributionFunction(p: cdf); // 3.3999999904866245 + + double hf = gumbel.HazardFunction(x: 1.4); // 0.03449691276402958 + double chf = gumbel.CumulativeHazardFunction(x: 1.4); // 0.022988793482259906 + + string str = gumbel.ToString(CultureInfo.InvariantCulture); // Gumbel(x; μ = 4.795, β = 2.55) + + + + + + + Creates a new Gumbel distribution + with location zero and unit scale. + + + + + + Creates a new Gumbel distribution + with the given location and scale. + + + The location parameter μ (mu). Default is 0. + The scale parameter β (beta). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's location parameter mu (μ). + + + + + + Gets the distribution's scale parameter beta (β). + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Tukey-Lambda distribution. + + + + + Formalized by John Tukey, the Tukey lambda distribution is a continuous + probability distribution defined in terms of its quantile function. It is + typically used to identify an appropriate distribution and not used in + statistical models directly. + + The Tukey lambda distribution has a single shape parameter λ. As with other + probability distributions, the Tukey lambda distribution can be transformed + with a location parameter, μ, and a scale parameter, σ. Since the general form + of probability distribution can be expressed in terms of the standard distribution, + the subsequent formulas are given for the standard form of the function. + + References: + + + Wikipedia, The Free Encyclopedia. Tukey-Lambda distribution. Available on: + http://en.wikipedia.org/wiki/Tukey_lambda_distribution + + + + + + This examples shows how to create a Tukey distribution and + compute some of its properties . + + + var tukey = new TukeyLambdaDistribution(lambda: 0.14); + + double mean = tukey.Mean; // 0.0 + double median = tukey.Median; // 0.0 + double mode = tukey.Mode; // 0.0 + double var = tukey.Variance; // 2.1102970222144855 + double stdDev = tukey.StandardDeviation; // 1.4526861402982014 + + double cdf = tukey.DistributionFunction(x: 1.4); // 0.83252947230217966 + double pdf = tukey.ProbabilityDensityFunction(x: 1.4); // 0.17181242109370659 + double lpdf = tukey.LogProbabilityDensityFunction(x: 1.4); // -1.7613519723149427 + + double ccdf = tukey.ComplementaryDistributionFunction(x: 1.4); // 0.16747052769782034 + double icdf = tukey.InverseDistributionFunction(p: cdf); // 1.4000000000000004 + + double hf = tukey.HazardFunction(x: 1.4); // 1.0219566231014163 + double chf = tukey.CumulativeHazardFunction(x: 1.4); // 1.7842102556452939 + + string str = tukey.ToString(CultureInfo.InvariantCulture); // Tukey(x; λ = 0.14) + + + + + + + + + + + Constructs a Tukey-Lambda distribution + with the given lambda (shape) parameter. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the log of the quantile + density function, which in turn is the first derivative of + the inverse distribution + function (icdf), evaluated at probability p. + + + A probability value between 0 and 1. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution shape parameter lambda (λ). + + + + + + Gets the mean for this distribution (always zero). + + + + The distribution's mean value. + + + + + + Gets the median for this distribution (always zero). + + + + The distribution's median value. + + + + + + Gets the mode for this distribution (always zero). + + + + The distribution's median value. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Power Lognormal distribution. + + + + + References: + + + NIST/SEMATECH e-Handbook of Statistical Methods. Power Lognormal distribution. Available on: + http://www.itl.nist.gov/div898/handbook/eda/section3/eda366e.htm + + + + + + This example shows how to create a Power Lognormal + distribution and compute some of its properties. + + + // Create a Power-Lognormal distribution with p = 4.2 and s = 1.2 + var plog = new PowerLognormalDistribution(power: 4.2, shape: 1.2); + + double cdf = plog.DistributionFunction(x: 1.4); // 0.98092157745191766 + double pdf = plog.ProbabilityDensityFunction(x: 1.4); // 0.046958580233533977 + double lpdf = plog.LogProbabilityDensityFunction(x: 1.4); // -3.0584893374471496 + + double ccdf = plog.ComplementaryDistributionFunction(x: 1.4); // 0.019078422548082351 + double icdf = plog.InverseDistributionFunction(p: cdf); // 1.4 + + double hf = plog.HazardFunction(x: 1.4); // 10.337649063164642 + double chf = plog.CumulativeHazardFunction(x: 1.4); // 3.9591972920568446 + + string str = plog.ToString(CultureInfo.InvariantCulture); // PLD(x; p = 4.2, σ = 1.2) + + + + + + + Constructs a Power Lognormal distribution + with the given power and shape parameters. + + + The distribution's power p. + The distribution's shape σ. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's power parameter (p). + + + + + + Gets the distribution's shape parameter sigma (σ). + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Generalized Normal distribution (also known as Exponential Power distribution). + + + + + The generalized normal distribution or generalized Gaussian distribution + (GGD) is either of two families of parametric continuous probability + distributions on the real line. Both families add a shape parameter to + the normal distribution. To distinguish the two families, they are referred + to below as "version 1" and "version 2". However this is not a standard + nomenclature. + + Known also as the exponential power distribution, or the generalized error + distribution, this is a parametric family of symmetric distributions. It includes + all normal and Laplace distributions, and as limiting cases it includes all + continuous uniform distributions on bounded intervals of the real line. + + + References: + + + Wikipedia, The Free Encyclopedia. Generalized normal distribution. Available on: + https://en.wikipedia.org/wiki/Generalized_normal_distribution + + + + + + This examples shows how to create a Generalized normal distribution + and compute some of its properties. + + + // Creates a new generalized normal distribution with the given parameters + var normal = new GeneralizedNormalDistribution(location: 1, scale: 5, shape: 0.42); + + double mean = normal.Mean; // 1 + double median = normal.Median; // 1 + double mode = normal.Mode; // 1 + double var = normal.Variance; // 19200.781700666659 + + double cdf = normal.DistributionFunction(x: 1.4); // 0.51076148867681703 + double pdf = normal.ProbabilityDensityFunction(x: 1.4); // 0.024215092283124507 + double lpdf = normal.LogProbabilityDensityFunction(x: 1.4); // -3.7207791921441378 + + double ccdf = normal.ComplementaryDistributionFunction(x: 1.4); // 0.48923851132318297 + double icdf = normal.InverseDistributionFunction(p: cdf); // 1.4000000149740108 + + double hf = normal.HazardFunction(x: 1.4); // 0.049495474543966168 + double chf = normal.CumulativeHazardFunction(x: 1.4); // 0.7149051552030572 + + string str = normal.ToString(CultureInfo.InvariantCulture); // GGD(x; μ = 1, α = 5, β = 0.42) + + + + + + + + + + Constructs a Generalized Normal distribution with the given parameters. + + + The location parameter μ. + The scale parameter α. + The shape parameter β. + + + + + Create an distribution using a + specialization. + + + The Laplace's location parameter μ (mu). + The Laplace's scale parameter b. + + A that provides + a . + + + + + Create an distribution using a + specialization. + + + The Normal's mean parameter μ (mu). + The Normal's standard deviation σ (sigma). + + A that provides + a distribution. + + + + + Gets the cumulative distribution function (cdf) for the + Generalized Normal distribution evaluated at point x. + + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single double value. + For a multivariate distribution, this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the location value μ (mu) for the distribution. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + In the Generalized Normal Distribution, the mode is + equal to the distribution's value. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Entropy for this Normal distribution. + + + + + + Power Normal distribution. + + + + + References: + + + NIST/SEMATECH e-Handbook of Statistical Methods. Power Normal distribution. Available on: + http://www.itl.nist.gov/div898/handbook/eda/section3/eda366d.htm + + + + + + This example shows how to create a Power Normal distribution + and compute some of its properties. + + + // Create a new Power-Normal distribution with p = 4.2 + var pnormal = new PowerNormalDistribution(power: 4.2); + + double cdf = pnormal.DistributionFunction(x: 1.4); // 0.99997428721920678 + double pdf = pnormal.ProbabilityDensityFunction(x: 1.4); // 0.00020022645890003279 + double lpdf = pnormal.LogProbabilityDensityFunction(x: 1.4); // -0.20543269836728234 + + double ccdf = pnormal.ComplementaryDistributionFunction(x: 1.4); // 0.000025712780793218926 + double icdf = pnormal.InverseDistributionFunction(p: cdf); // 1.3999999999998953 + + double hf = pnormal.HazardFunction(x: 1.4); // 7.7870402470368854 + double chf = pnormal.CumulativeHazardFunction(x: 1.4); // 10.568522382550167 + + string str = pnormal.ToString(); // PND(x; p = 4.2) + + + + + + + Constructs a Power Normal distribution + with given power (shape) parameter. + + + The distribution's power p. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution shape (power) parameter. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + U-quadratic distribution. + + + + + In probability theory and statistics, the U-quadratic distribution is a continuous + probability distribution defined by a unique quadratic function with lower limit a + and upper limit b. This distribution is a useful model for symmetric bimodal processes. + Other continuous distributions allow more flexibility, in terms of relaxing the symmetry + and the quadratic shape of the density function, which are enforced in the U-quadratic + distribution - e.g., Beta distribution, Gamma distribution, etc. + + + References: + + + Wikipedia, The Free Encyclopedia. U-quadratic distribution. Available on: + http://en.wikipedia.org/wiki/U-quadratic_distribution + + + + + + The following example shows how to create and test the main characteristics + of an U-quadratic distribution given its two parameters: + + + // Create a new U-quadratic distribution with values + var u2 = new UQuadraticDistribution(a: 0.42, b: 4.2); + + double mean = u2.Mean; // 2.3100000000000001 + double median = u2.Median; // 2.3100000000000001 + double mode = u2.Mode; // 0.8099060089153145 + double var = u2.Variance; // 2.1432600000000002 + + double cdf = u2.DistributionFunction(x: 1.4); // 0.44419041812731797 + double pdf = u2.ProbabilityDensityFunction(x: 1.4); // 0.18398763254730335 + double lpdf = u2.LogProbabilityDensityFunction(x: 1.4); // -1.6928867380489712 + + double ccdf = u2.ComplementaryDistributionFunction(x: 1.4); // 0.55580958187268203 + double icdf = u2.InverseDistributionFunction(p: cdf); // 1.3999998213768274 + + double hf = u2.HazardFunction(x: 1.4); // 0.3310263776442936 + double chf = u2.CumulativeHazardFunction(x: 1.4); // 0.58732952203701494 + + string str = u2.ToString(CultureInfo.InvariantCulture); // "UQuadratic(x; a = 0.42, b = 4.2)" + + + + + + + Constructs a new U-quadratic distribution. + + + Parameter a. + Parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Wrapped Cauchy Distribution. + + + + + In probability theory and directional statistics, a wrapped Cauchy distribution + is a wrapped probability distribution that results from the "wrapping" of the + Cauchy distribution around the unit circle. The Cauchy distribution is sometimes + known as a Lorentzian distribution, and the wrapped Cauchy distribution may + sometimes be referred to as a wrapped Lorentzian distribution. + + + The wrapped Cauchy distribution is often found in the field of spectroscopy where + it is used to analyze diffraction patterns (e.g. see Fabry–Pérot interferometer). + + + References: + + + Wikipedia, The Free Encyclopedia. Directional statistics. Available on: + http://en.wikipedia.org/wiki/Directional_statistics + + Wikipedia, The Free Encyclopedia. Wrapped Cauchy distribution. Available on: + http://en.wikipedia.org/wiki/Wrapped_Cauchy_distribution + + + + + + // Create a Wrapped Cauchy distribution with μ = 0.42, γ = 3 + var dist = new WrappedCauchyDistribution(mu: 0.42, gamma: 3); + + // Common measures + double mean = dist.Mean; // 0.42 + double var = dist.Variance; // 0.950212931632136 + + // Probability density functions + double pdf = dist.ProbabilityDensityFunction(x: 0.42); // 0.1758330112785475 + double lpdf = dist.LogProbabilityDensityFunction(x: 0.42); // -1.7382205338929015 + + // String representation + string str = dist.ToString(); // "WrappedCauchy(x; μ = 0,42, γ = 3)" + + + + + + + + + Initializes a new instance of the class. + + + The mean resultant parameter μ. + The gamma parameter γ. + + + + + Not supported. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Inverse Gamma Distribution. + + + + + The inverse gamma distribution is a two-parameter family of continuous probability + distributions on the positive real line, which is the distribution of the reciprocal + of a variable distributed according to the gamma distribution. Perhaps the chief use + of the inverse gamma distribution is in Bayesian statistics, where it serves as the + conjugate prior of the variance of a normal distribution. However, it is common among + Bayesians to consider an alternative parameterization of the normal distribution in + terms of the precision, defined as the reciprocal of the variance, which allows the + gamma distribution to be used directly as a conjugate prior. + + + References: + + + Wikipedia, The Free Encyclopedia. Inverse Gamma Distribution. + Available from: http://en.wikipedia.org/wiki/Inverse-gamma_distribution + + John D. Cook. (2008). The Inverse Gamma Distribution. + + + + + + // Create a new inverse Gamma distribution with α = 0.42 and β = 0.5 + var invGamma = new InverseGammaDistribution(shape: 0.42, scale: 0.5); + + // Common measures + double mean = invGamma.Mean; // -0.86206896551724133 + double median = invGamma.Median; // 3.1072323347401709 + double var = invGamma.Variance; // -0.47035626665061164 + + // Cumulative distribution functions + double cdf = invGamma.DistributionFunction(x: 0.27); // 0.042243552114989695 + double ccdf = invGamma.ComplementaryDistributionFunction(x: 0.27); // 0.95775644788501035 + double icdf = invGamma.InverseDistributionFunction(p: cdf); // 0.26999994629410995 + + // Probability density functions + double pdf = invGamma.ProbabilityDensityFunction(x: 0.27); // 0.35679850067181362 + double lpdf = invGamma.LogProbabilityDensityFunction(x: 0.27); // -1.0305840804381006 + + // Hazard (failure rate) functions + double hf = invGamma.HazardFunction(x: 0.27); // 0.3725357333377633 + double chf = invGamma.CumulativeHazardFunction(x: 0.27); // 0.043161763098266373 + + // String representation + string str = invGamma.ToString(); // Γ^(-1)(x; α = 0.42, β = 0.5) + + + + + + + + + Creates a new Inverse Gamma Distribution. + + + The shape parameter α (alpha). + The scale parameter β (beta). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + In the Inverse Gamma CDF is computed in terms of the + Upper Incomplete Regularized Gamma Function Q as CDF(x) = Q(a, b / x). + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the Inverse Gamma distribution, the Mean is given as b / (a - 1). + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + In the Inverse Gamma distribution, the Variance is given as b² / ((a - 1)² * (a - 2)). + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Laplace's Distribution (as known as the double exponential distribution). + + + + + In probability theory and statistics, the Laplace distribution is a continuous + probability distribution named after Pierre-Simon Laplace. It is also sometimes called + the double exponential distribution. + + + The difference between two independent identically distributed exponential random + variables is governed by a Laplace distribution, as is a Brownian motion evaluated at an + exponentially distributed random time. Increments of Laplace motion or a variance gamma + process evaluated over the time scale also have a Laplace distribution. + + + The probability density function of the Laplace distribution is also reminiscent of the + normal distribution; however, whereas the normal distribution is expressed in terms of + the squared difference from the mean μ, the Laplace density is expressed in terms of the + absolute difference from the mean. Consequently the Laplace distribution has fatter tails + than the normal distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Laplace distribution. + Available from: http://en.wikipedia.org/wiki/Laplace_distribution + + + + + + // Create a new Laplace distribution with μ = 4 and b = 2 + var laplace = new LaplaceDistribution(location: 4, scale: 2); + + // Common measures + double mean = laplace.Mean; // 4.0 + double median = laplace.Median; // 4.0 + double var = laplace.Variance; // 8.0 + + // Cumulative distribution functions + double cdf = laplace.DistributionFunction(x: 0.27); // 0.077448104942453522 + double ccdf = laplace.ComplementaryDistributionFunction(x: 0.27); // 0.92255189505754642 + double icdf = laplace.InverseDistributionFunction(p: cdf); // 0.27 + + // Probability density functions + double pdf = laplace.ProbabilityDensityFunction(x: 0.27); // 0.038724052471226761 + double lpdf = laplace.LogProbabilityDensityFunction(x: 0.27); // -3.2512943611198906 + + // Hazard (failure rate) functions + double hf = laplace.HazardFunction(x: 0.27); // 0.041974931360160776 + double chf = laplace.CumulativeHazardFunction(x: 0.27); // 0.080611649844768624 + + // String representation + string str = laplace.ToString(CultureInfo.InvariantCulture); // Laplace(x; μ = 4, b = 2) + + + + + + + Creates a new Laplace distribution. + + + The location parameter μ (mu). + The scale parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The Laplace's distribution mean has the + same value as the location parameter μ. + + + + + + Gets the mode for this distribution (μ). + + + + The Laplace's distribution mode has the + same value as the location parameter μ. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + The Laplace's distribution median has the + same value as the location parameter μ. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The Laplace's variance is computed as 2*b². + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + The Laplace's entropy is defined as ln(2*e*b), in which + e is the Euler constant. + + + + + + Mann-Whitney's U statistic distribution. + + + + + This is the distribution for Mann-Whitney's U + statistic used in . This distribution is based on + sample statistics. + + This is the distribution for the first sample statistic, U1. Some textbooks + (and statistical packages) use alternate definitions for U, which should be + compared with the appropriate statistic tables or alternate distributions. + + + + + // Consider the following rank statistics + double[] ranks = { 1, 2, 3, 4, 5 }; + + // Create a new Mann-Whitney U's distribution with n1 = 2 and n2 = 3 + var mannWhitney = new MannWhitneyDistribution(ranks, n1: 2, n2: 3); + + // Common measures + double mean = mannWhitney.Mean; // 2.7870954605658511 + double median = mannWhitney.Median; // 1.5219615583481305 + double var = mannWhitney.Variance; // 18.28163603621158 + + // Cumulative distribution functions + double cdf = mannWhitney.DistributionFunction(x: 4); // 0.6 + double ccdf = mannWhitney.ComplementaryDistributionFunction(x: 4); // 0.4 + double icdf = mannWhitney.InverseDistributionFunction(p: cdf); // 3.6666666666666661 + + // Probability density functions + double pdf = mannWhitney.ProbabilityDensityFunction(x: 4); // 0.2 + double lpdf = mannWhitney.LogProbabilityDensityFunction(x: 4); // -1.6094379124341005 + + // Hazard (failure rate) functions + double hf = mannWhitney.HazardFunction(x: 4); // 0.5 + double chf = mannWhitney.CumulativeHazardFunction(x: 4); // 0.916290731874155 + + // String representation + string str = mannWhitney.ToString(); // MannWhitney(u; n1 = 2, n2 = 3) + + + + + + + + + + + Constructs a Mann-Whitney's U-statistic distribution. + + + The rank statistics. + The number of observations in the first sample. + The number of observations in the second sample. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the Mann-Whitney's U statistic for the smaller sample. + + + + + + Gets the Mann-Whitney's U statistic for the first sample. + + + + + + Gets the Mann-Whitney's U statistic for the second sample. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point u. + + + A single point in the distribution range. + + + The probability of u occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value u will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of u + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value u will occur. + + + + See . + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of observations in the first sample. + + + + + + Gets the number of observations in the second sample. + + + + + + Gets the rank statistics for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The mean of Mann-Whitney's U distribution + is defined as (n1 * n2) / 2. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The variance of Mann-Whitney's U distribution + is defined as (n1 * n2 * (n1 + n2 + 1)) / 12. + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Noncentral t-distribution. + + + + + As with other noncentrality parameters, the noncentral t-distribution generalizes + a probability distribution – Student's t-distribution + – using a noncentrality parameter. Whereas the central distribution describes how a + test statistic is distributed when the difference tested is null, the noncentral + distribution also describes how t is distributed when the null is false. + This leads to its use in statistics, especially calculating statistical power. The + noncentral t-distribution is also known as the singly noncentral t-distribution, and + in addition to its primary use in statistical inference, is also used in robust + modeling for data. + + + References: + + + Wikipedia, The Free Encyclopedia. Noncentral t-distribution. Available on: + http://en.wikipedia.org/wiki/Noncentral_t-distribution + + + + + + var distribution = new NoncentralTDistribution( + degreesOfFreedom: 4, noncentrality: 2.42); + + double mean = distribution.Mean; // 3.0330202123035104 + double median = distribution.Median; // 2.6034842414893795 + double var = distribution.Variance; // 4.5135883917583683 + + double cdf = distribution.DistributionFunction(x: 1.4); // 0.15955740661144721 + double pdf = distribution.ProbabilityDensityFunction(x: 1.4); // 0.23552141805184526 + double lpdf = distribution.LogProbabilityDensityFunction(x: 1.4); // -1.4459534225195116 + + double ccdf = distribution.ComplementaryDistributionFunction(x: 1.4); // 0.84044259338855276 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 1.4000000000123853 + + double hf = distribution.HazardFunction(x: 1.4); // 0.28023498559521387 + double chf = distribution.CumulativeHazardFunction(x: 1.4); // 0.17382662901507062 + + string str = distribution.ToString(CultureInfo.InvariantCulture); // T(x; df = 4, μ = 2.42) + + + + + + + + + + Initializes a new instance of the class. + + + The degrees of freedom v. + The noncentrality parameter μ (mu). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Computes the cumulative probability at t of the + non-central T-distribution with DF degrees of freedom + and non-centrality parameter. + + + + This function is based on the original work done by + Russell Lent hand John Burkardt, shared under the + LGPL license. Original FORTRAN code can be found at: + http://people.sc.fsu.edu/~jburkardt/f77_src/asa243/asa243.html + + + + + + Gets the degrees of freedom (v) for the distribution. + + + + + + Gets the noncentrality parameter μ (mu) for the distribution. + + + + + + Gets the mean for this distribution. + + + + The noncentral t-distribution's mean is defined in terms of + the Gamma function Γ(x) as + μ * sqrt(v/2) * Γ((v - 1) / 2) / Γ(v / 2) for v > 1. + + + + + + Gets the variance for this distribution. + + + + The noncentral t-distribution's variance is defined in terms of + the Gamma function Γ(x) as + a - b * c² in which + a = v*(1+μ²) / (v-2), + b = (u² * v) / 2 and + c = Γ((v - 1) / 2) / Γ(v / 2) for v > 2. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Exponential distribution. + + + + + In probability theory and statistics, the exponential distribution (a.k.a. negative + exponential distribution) is a family of continuous probability distributions. It + describes the time between events in a Poisson process, i.e. a process in which events + occur continuously and independently at a constant average rate. It is the continuous + analogue of the geometric distribution. + + Note that the exponential distribution is not the same as the class of exponential + families of distributions, which is a large class of probability distributions that + includes the exponential distribution as one of its members, but also includes the + normal distribution, binomial distribution, gamma distribution, Poisson, and many + others. + + + References: + + + Wikipedia, The Free Encyclopedia. Exponential distribution. Available on: + http://en.wikipedia.org/wiki/Exponential_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Exponential distribution given a lambda (λ) rate of 0.42: + + + // Create an Exponential distribution with λ = 0.42 + var exp = new ExponentialDistribution(rate: 0.42); + + // Common measures + double mean = exp.Mean; // 2.3809523809523809 + double median = exp.Median; // 1.6503504299046317 + double var = exp.Variance; // 5.6689342403628125 + + // Cumulative distribution functions + double cdf = exp.DistributionFunction(x: 0.27); // 0.10720652870550407 + double ccdf = exp.ComplementaryDistributionFunction(x: 0.27); // 0.89279347129449593 + double icdf = exp.InverseDistributionFunction(p: cdf); // 0.27 + + // Probability density functions + double pdf = exp.ProbabilityDensityFunction(x: 0.27); // 0.3749732579436883 + double lpdf = exp.LogProbabilityDensityFunction(x: 0.27); // -0.98090056770472311 + + // Hazard (failure rate) functions + double hf = exp.HazardFunction(x: 0.27); // 0.42 + double chf = exp.CumulativeHazardFunction(x: 0.27); // 0.1134 + + // String representation + string str = exp.ToString(CultureInfo.InvariantCulture); // Exp(x; λ = 0.42) + + + + The following example shows how to generate random samples drawn + from an Exponential distribution and later how to re-estimate a + distribution from the generated samples. + + + // Create an Exponential distribution with λ = 2.5 + var exp = new ExponentialDistribution(rate: 2.5); + + // Generate a million samples from this distribution: + double[] samples = target.Generate(1000000); + + // Create a default exponential distribution + var newExp = new ExponentialDistribution(); + + // Fit the samples + newExp.Fit(samples); + + // Check the estimated parameters + double rate = newExp.Rate; // 2.5 + + + + + + + Creates a new Exponential distribution with the given rate. + + + + + + Creates a new Exponential distribution with the given rate. + + + The rate parameter lambda (λ). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Exponential CDF is defined as CDF(x) = 1 - exp(-λ*x). + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + The Exponential PDF is defined as PDF(x) = λ * exp(-λ*x). + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + The Exponential ICDF is defined as ICDF(p) = -ln(1-p)/λ. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + Please see . + + + + + + Estimates a new Exponential distribution from a given set of observations. + + + + + + Estimates a new Exponential distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Exponential distribution with the given parameters. + + + The rate parameter lambda. + The number of samples to generate. + + An array of double values sampled from the specified Exponential distribution. + + + + + Generates a random observation from the + Exponential distribution with the given parameters. + + + The rate parameter lambda. + + A random double value sampled from the specified Exponential distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's rate parameter lambda (λ). + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the Exponential distribution, the mean is defined as 1/λ. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + In the Exponential distribution, the variance is defined as 1/(λ²) + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + In the Exponential distribution, the median is defined as ln(2) / λ. + + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + In the Exponential distribution, the median is defined as 0. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + In the Exponential distribution, the median is defined as 1 - ln(λ). + + + + + + Gamma distribution. + + + + + The gamma distribution is a two-parameter family of continuous probability + distributions. There are three different parameterizations in common use: + + + With a parameter k and a + parameter θ. + + With a shape parameter α = k and an inverse scale parameter + β = 1/θ, called a parameter. + + With a shape parameter k and a + parameter μ = k/β. + + + + In each of these three forms, both parameters are positive real numbers. The + parameterization with k and θ appears to be more common in econometrics and + certain other applied fields, where e.g. the gamma distribution is frequently + used to model waiting times. For instance, in life testing, the waiting time + until death is a random variable that is frequently modeled with a gamma + distribution. This is the default + construction method for this class. + + The parameterization with α and β is more common in Bayesian statistics, where + the gamma distribution is used as a conjugate prior distribution for various + types of inverse scale (aka rate) parameters, such as the λ of an exponential + distribution or a Poisson distribution – or for that matter, the β of the gamma + distribution itself. (The closely related inverse gamma distribution is used as + a conjugate prior for scale parameters, such as the variance of a normal distribution.) + In order to create a Gamma distribution using the Bayesian parameterization, you + can use . + + If k is an integer, then the distribution represents an Erlang distribution; i.e., + the sum of k independent exponentially distributed random variables, each of which + has a mean of θ (which is equivalent to a rate parameter of 1/θ). + + The gamma distribution is the maximum entropy probability distribution for a random + variable X for which E[X] = kθ = α/β is fixed and greater than zero, and E[ln(X)] = + ψ(k) + ln(θ) = ψ(α) − ln(β) is fixed (ψ is the digamma function). + + + References: + + + Wikipedia, The Free Encyclopedia. Gamma distribution. Available on: + http://en.wikipedia.org/wiki/Gamma_distribution + + + + + + The following example shows how to create, test and compute the main + functions of a Gamma distribution given parameters θ = 4 and k = 2: + + + // Create a Γ-distribution with k = 2 and θ = 4 + var gamma = new GammaDistribution(theta: 4, k: 2); + + // Common measures + double mean = gamma.Mean; // 8.0 + double median = gamma.Median; // 6.7133878418421506 + double var = gamma.Variance; // 32.0 + + // Cumulative distribution functions + double cdf = gamma.DistributionFunction(x: 0.27); // 0.002178158242390601 + double ccdf = gamma.ComplementaryDistributionFunction(x: 0.27); // 0.99782184175760935 + double icdf = gamma.InverseDistributionFunction(p: cdf); // 0.26999998689819171 + + // Probability density functions + double pdf = gamma.ProbabilityDensityFunction(x: 0.27); // 0.015773530285395465 + double lpdf = gamma.LogProbabilityDensityFunction(x: 0.27); // -4.1494220422235433 + + // Hazard (failure rate) functions + double hf = gamma.HazardFunction(x: 0.27); // 0.015807962529274005 + double chf = gamma.CumulativeHazardFunction(x: 0.27); // 0.0021805338793574793 + + // String representation + string str = gamma.ToString(CultureInfo.InvariantCulture); // "Γ(x; k = 2, θ = 4)" + + + + + + + + + + Constructs a Gamma distribution. + + + + + + Constructs a Gamma distribution. + + + The scale parameter θ (theta). Default is 1. + The shape parameter k. Default is 1. + + + + + Constructs a Gamma distribution using α and β parameterization. + + + The shape parameter α = k. + The inverse scale parameter β = 1/θ. + + A Gamma distribution constructed with the given parameterization. + + + + + Constructs a Gamma distribution using k and μ parameterization. + + + The shape parameter α = k. + The mean parameter μ = k/β. + + A Gamma distribution constructed with the given parameterization. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Gamma's CDF is computed in terms of the + Lower Incomplete Regularized Gamma Function P as CDF(x) = P(shape, + x / scale). + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Gamma distribution from a given set of observations. + + + + + + Estimates a new Gamma distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Gamma distribution with the given parameters. + + + The scale parameter theta. + The shape parameter k. + The number of samples to generate. + + An array of double values sampled from the specified Gamma distribution. + + + + + Generates a random observation from the + Gamma distribution with the given parameters. + + + The scale parameter theta. + The shape parameter k. + + A random double value sampled from the specified Gamma distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's scale + parameter θ (theta). + + + + + + Gets the distribution's + shape parameter k. + + + + + + Gets the inverse scale parameter β = 1/θ. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the Gamma distribution, the mean is computed as k*θ. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + In the Gamma distribution, the variance is computed as k*θ². + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the standard Gamma distribution, + with scale θ = 1 and location k = 1. + + + + + + Kolmogorov-Smirnov distribution. + + + + + This class is based on the excellent paper and original Java code by Simard and + L'Ecuyer (2010). Includes additional modifications for increased performance and + readability, shared under the LGPL under permission of original authors. + + + L'Ecuyer and Simard partitioned the problem of evaluating the CDF using multiple + approximation and asymptotic methods in order to achieve a best compromise between + speed and precision. The distribution function of this class follows the same + partitioning scheme as described by L'Ecuyer and Simard, which is described in the + table below. + + + For n <= 140 and: + 1/n > x >= 1-1/nUses the Ruben-Gambino formula. + 1/n < nx² < 0.754693Uses the Durbin matrix algorithm. + 0.754693 <= nx² < 4Uses the Pomeranz algorithm. + 4 <= nx² < 18Uses the complementary distribution function. + nx² >= 18Returns the constant 1. + + + For 140 < n <= 10^5 + nx² >= 18Returns the constant 1. + nx^(3/2) < 1.4Durbin matrix algorithm. + nx^(3/2) > 1.4Pelz-Good asymptotic series. + + + For n > 10^5 + nx² >= 18Returns the constant 1. + nx² < 18Pelz-Good asymptotic series. + + + References: + + + R. Simard and P. L'Ecuyer. (2011). "Computing the Two-Sided Kolmogorov-Smirnov + Distribution", Journal of Statistical Software, Vol. 39, Issue 11, Mar 2011. + Available on: http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf + + Marsaglia, G., Tsang, W. W., Wang, J. (2003) "Evaluating Kolmogorov's + Distribution", Journal of Statistical Software, 8 (18), 1–4. jstor. + Available on: http://www.jstatsoft.org/v08/i18/paper + + Durbin, J. (1972). Distribution Theory for Tests Based on The Sample + Distribution Function, Society for Industrial & Applied Mathematics, + Philadelphia. + + + + + + The following example shows how to build a Kolmogorov-Smirnov distribution + for 42 samples and compute its main functions and characteristics: + + + // Create a Kolmogorov-Smirnov distribution with n = 42 + var ks = new KolmogorovSmirnovDistribution(samples: 42); + + // Common measures + double mean = ks.Mean; // 0.13404812830261556 + double median = ks.Median; // 0.12393613519421857 + double var = ks.Variance; // 0.019154717445778062 + + // Cumulative distribution functions + double cdf = ks.DistributionFunction(x: 0.27); // 0.99659863602996079 + double ccdf = ks.ComplementaryDistributionFunction(x: 0.27); // 0.0034013639700392062 + double icdf = ks.InverseDistributionFunction(p: cdf); // 0.26999997446092017 + + // Hazard (failure rate) functions + double chf = ks.CumulativeHazardFunction(x: 0.27); // 5.6835787601476619 + + // String representation + string str = ks.ToString(); // "KS(x; n = 42)" + + + + + + + + + Creates a new Kolmogorov-Smirnov distribution. + + + The number of samples. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + See . + + + + + + Computes the Upper Tail of the P[Dn >= x] distribution. + + + + This function approximates the upper tail of the P[Dn >= x] + distribution using the one-sided Kolmogorov-Smirnov statistic. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Computes the Cumulative Distribution Function (CDF) + for the Kolmogorov-Smirnov statistic's distribution. + + + The sample size. + The Kolmogorov-Smirnov statistic. + Returns the cumulative probability of the statistic + under a sample size . + + + + This function computes the cumulative probability P[Dn <= x] of + the Kolmogorov-Smirnov distribution using multiple methods as + suggested by Richard Simard (2010). + + + Simard partitioned the problem of evaluating the CDF using multiple + approximation and asymptotic methods in order to achieve a best compromise + between speed and precision. This function follows the same partitioning as + Simard, which is described in the table below. + + + For n <= 140 and: + 1/n > x >= 1-1/nUses the Ruben-Gambino formula. + 1/n < nx² < 0.754693Uses the Durbin matrix algorithm. + 0.754693 <= nx² < 4Uses the Pomeranz algorithm. + 4 <= nx² < 18Uses the complementary distribution function. + nx² >= 18Returns the constant 1. + + + For 140 < n <= 10^5 + nx² >= 18Returns the constant 1. + nx^(3/2) < 1.4Durbin matrix algorithm. + nx^(3/2) > 1.4Pelz-Good asymptotic series. + + + For n > 10^5 + nx² >= 18Returns the constant 1. + nx² < 18Pelz-Good asymptotic series. + + + + + + + Computes the Complementary Cumulative Distribution Function (1-CDF) + for the Kolmogorov-Smirnov statistic's distribution. + + + The sample size. + The Kolmogorov-Smirnov statistic. + Returns the complementary cumulative probability of the statistic + under a sample size . + + + + + Pelz-Good algorithm for computing lower-tail areas + of the Kolmogorov-Smirnov distribution. + + + + + As stated in Simard's paper, Pelz and Good (1976) generalized Kolmogorov's + approximation to an asymptotic series in 1/sqrt(n). + + References: Wolfgang Pelz and I. J. Good, "Approximating the Lower Tail-Areas of + the Kolmogorov-Smirnov One-Sample Statistic", Journal of the Royal + Statistical Society, Series B. Vol. 38, No. 2 (1976), pp. 152-156 + + + + + + Computes the Upper Tail of the P[Dn >= x] distribution. + + + + This function approximates the upper tail of the P[Dn >= x] + distribution using the one-sided Kolmogorov-Smirnov statistic. + + + + + + Pomeranz algorithm. + + + + + + Durbin's algorithm for computing P[Dn < d] + + + + + The method presented by Marsaglia (2003), as stated in the paper, is based + on a succession of developments starting with Kolmogorov and culminating in + a masterful treatment by Durbin (1972). Durbin's monograph summarized and + extended many previous works published in the years 1933-73. + + This function implements the small C procedure provided by Marsaglia on his + paper with corrections made by Simard (2010). Further optimizations also + have been performed. + + References: + - Marsaglia, G., Tsang, W. W., Wang, J. (2003) "Evaluating Kolmogorov's + Distribution", Journal of Statistical Software, 8 (18), 1–4. jstor. + Available on: http://www.jstatsoft.org/v08/i18/paper + - Durbin, J. (1972) Distribution Theory for Tests Based on The Sample + Distribution Function, Society for Industrial & Applied Mathematics, + Philadelphia. + + + + + + Computes matrix power. Used in the Durbin algorithm. + + + + + + Initializes the Pomeranz algorithm. + + + + + + Creates matrix A of the Pomeranz algorithm. + + + + + + Computes matrix H of the Pomeranz algorithm. + + + + + + Gets the number of samples distribution parameter. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The mean of the K-S distribution for n samples + is computed as Mean = sqrt(π/2) * ln(2) / sqrt(n). + + + + See . + + + + + + Not supported. + + + + + + Gets the variance for this distribution. + + + + The variance of the K-S distribution for n samples + is computed as Var = (π² / 12 - mean²) / n, in which + mean is the K-S distribution . + + + + See . + + + + + + Gets the entropy for this distribution. + + + + + + Bernoulli probability distribution. + + + + + The Bernoulli distribution is a distribution for a single + binary variable x E {0,1}, representing, for example, the + flipping of a coin. It is governed by a single continuous + parameter representing the probability of an observation + to be equal to 1. + + + References: + + + Wikipedia, The Free Encyclopedia. Bernoulli distribution. Available on: + http://en.wikipedia.org/wiki/Bernoulli_distribution + + C. Bishop. “Pattern Recognition and Machine Learning”. Springer. 2006. + + + + + + // Create a distribution with probability 0.42 + var bern = new BernoulliDistribution(mean: 0.42); + + // Common measures + double mean = bern.Mean; // 0.42 + double median = bern.Median; // 0.0 + double var = bern.Variance; // 0.2436 + double mode = bern.Mode; // 0.0 + + // Probability mass functions + double pdf = bern.ProbabilityMassFunction(k: 1); // 0.42 + double lpdf = bern.LogProbabilityMassFunction(k: 0); // -0.54472717544167193 + + // Cumulative distribution functions + double cdf = bern.DistributionFunction(k: 0); // 0.58 + double ccdf = bern.ComplementaryDistributionFunction(k: 0); // 0.42 + + // Quantile functions + int icdf0 = bern.InverseDistributionFunction(p: 0.57); // 0 + int icdf1 = bern.InverseDistributionFunction(p: 0.59); // 1 + + // Hazard / failure rate functions + double hf = bern.HazardFunction(x: 0); // 1.3809523809523814 + double chf = bern.CumulativeHazardFunction(x: 0); // 0.86750056770472328 + + // String representation + string str = bern.ToString(CultureInfo.InvariantCulture); // "Bernoulli(x; p = 0.42, q = 0.58)" + + + + + + + + + Creates a new Bernoulli distribution. + + + + + + Creates a new Bernoulli distribution. + + + The probability of an observation being equal to 1. Default is 0.5 + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets P(X > k) the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point k. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of k + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Binomial probability distribution. + + + + + The binomial distribution is the discrete probability distribution of the number of + successes in a sequence of >n independent yes/no experiments, each of which + yields success with probability p. Such a success/failure experiment is also + called a Bernoulli experiment or Bernoulli trial; when n = 1, the binomial + distribution is a Bernoulli distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Binomial distribution. Available on: + http://en.wikipedia.org/wiki/Binomial_distribution + + C. Bishop. “Pattern Recognition and Machine Learning”. Springer. 2006. + + + + + + // Creates a distribution with n = 16 and success probability 0.12 + var bin = new BinomialDistribution(trials: 16, probability: 0.12); + + // Common measures + double mean = bin.Mean; // 1.92 + double median = bin.Median; // 2 + double var = bin.Variance; // 1.6896 + double mode = bin.Mode; // 2 + + // Probability mass functions + double pdf = bin.ProbabilityMassFunction(k: 1); // 0.28218979948821621 + double lpdf = bin.LogProbabilityMassFunction(k: 0); // -2.0453339441581582 + + // Cumulative distribution functions + double cdf = bin.DistributionFunction(k: 0); // 0.12933699143209909 + double ccdf = bin.ComplementaryDistributionFunction(k: 0); // 0.87066300856790091 + + // Quantile functions + int icdf0 = bin.InverseDistributionFunction(p: 0.37); // 1 + int icdf1 = bin.InverseDistributionFunction(p: 0.50); // 2 + int icdf2 = bin.InverseDistributionFunction(p: 0.99); // 5 + int icdf3 = bin.InverseDistributionFunction(p: 0.999); // 7 + + // Hazard (failure rate) functions + double hf = bin.HazardFunction(x: 0); // 1.3809523809523814 + double chf = bin.CumulativeHazardFunction(x: 0); // 0.86750056770472328 + + // String representation + string str = bin.ToString(CultureInfo.InvariantCulture); // "Binomial(x; n = 16, p = 0.12)" + + + + + + + + + Constructs a new binomial distribution. + + + + + + Constructs a new binomial distribution. + + + The number of trials n. + + + + + Constructs a new binomial distribution. + + + The number of trials n. + The success probability p in each trial. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of trials n for the distribution. + + + + + + Gets the success probability p for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Chi-Square (χ²) probability distribution + + + + + In probability theory and statistics, the chi-square distribution (also chi-squared + or χ²-distribution) with k degrees of freedom is the distribution of a sum of the + squares of k independent standard normal random variables. It is one of the most + widely used probability distributions in inferential statistics, e.g. in hypothesis + testing, or in construction of confidence intervals. + + + References: + + + Wikipedia, The Free Encyclopedia. Chi-square distribution. Available on: + http://en.wikipedia.org/wiki/Chi-square_distribution + + + + + + The following example demonstrates how to create a new χ² + distribution with the given degrees of freedom. + + + // Create a new χ² distribution with 7 d.f. + var chisq = new ChiSquareDistribution(degreesOfFreedom: 7); + + // Common measures + double mean = chisq.Mean; // 7 + double median = chisq.Median; // 6.345811195595612 + double var = chisq.Variance; // 14 + + // Cumulative distribution functions + double cdf = chisq.DistributionFunction(x: 6.27); // 0.49139966433823956 + double ccdf = chisq.ComplementaryDistributionFunction(x: 6.27); // 0.50860033566176044 + double icdf = chisq.InverseDistributionFunction(p: cdf); // 6.2700000000852318 + + // Probability density functions + double pdf = chisq.ProbabilityDensityFunction(x: 6.27); // 0.11388708001184455 + double lpdf = chisq.LogProbabilityDensityFunction(x: 6.27); // -2.1725478476948092 + + // Hazard (failure rate) functions + double hf = chisq.HazardFunction(x: 6.27); // 0.22392254197721179 + double chf = chisq.CumulativeHazardFunction(x: 6.27); // 0.67609276602233315 + + // String representation + string str = chisq.ToString(); // "χ²(x; df = 7) + + + + + + + Constructs a new Chi-Square distribution + with given degrees of freedom. + + + + + + Constructs a new Chi-Square distribution + with given degrees of freedom. + + + The degrees of freedom for the distribution. Default is 1. + + + + + Gets the probability density function (pdf) for + the χ² distribution evaluated at point x. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + References: + + + + Wikipedia, the free encyclopedia. Chi-square distribution. + + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the cumulative distribution function (cdf) for + the χ² distribution evaluated at point x. + + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The χ² distribution function is defined in terms of the + Incomplete Gamma Function Γ(a, x) as CDF(x; df) = Γ(df/2, x/d). + + + + + + Gets the complementary cumulative distribution function + (ccdf) for the χ² distribution evaluated at point x. + This function is also known as the Survival function. + + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + The χ² complementary distribution function is defined in terms of the + Complemented Incomplete Gamma + Function Γc(a, x) as CDF(x; df) = Γc(df/2, x/d). + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + This method is not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Chi-Square distribution with the given parameters. + + + An array of double values sampled from the specified Chi-Square distribution. + + + + + Generates a random observation from the + Chi-Square distribution with the given parameters. + + + The degrees of freedom for the distribution. + + A random double value sampled from the specified Chi-Square distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + The degrees of freedom of the Chi-Square distribution. + + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the Degrees of Freedom for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The χ² distribution mean is the number of degrees of freedom. + + + + + + Gets the variance for this distribution. + + + + The χ² distribution variance is twice its degrees of freedom. + + + + + + Gets the mode for this distribution. + + + + The χ² distribution mode is max(degrees of freedom - 2, 0). + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + + + + Joint distribution of multiple discrete univariate distributions. + + + + + This class builds a (potentially huge) lookup table for discrete + symbol distributions. For example, given a discrete variable A + which may take symbols a, b, c; and a discrete variable B which + may assume values x, y, z, this class will build the probability + table: + + + x y z + a p(a,x) p(a,y) p(a,z) + b p(b,x) p(b,y) p(b,z) + c p(c,x) p(c,y) p(c,z) + + + + Thus comprising the probabilities for all possible simple combination. This + distribution is a generalization of the + + for multivariate discrete observations. + + + + + + The following example should demonstrate how to estimate a joint + distribution of two discrete variables. The first variable can + take up to three distinct values, whereas the second can assume + up to five. + + + // Lets create a joint distribution for two discrete variables: + // the first of which can assume 3 distinct symbol values: 0, 1, 2 + // the second which can assume 5 distinct symbol values: 0, 1, 2, 3, 4 + + int[] symbols = { 3, 5 }; // specify the symbol counts + + // Create the joint distribution for the above variables + JointDistribution joint = new JointDistribution(symbols); + + // Now, suppose we would like to fit the distribution (estimate + // its parameters) from the following multivariate observations: + // + double[][] observations = + { + new double[] { 0, 0 }, + new double[] { 1, 1 }, + new double[] { 2, 1 }, + new double[] { 0, 0 }, + }; + + + // Estimate parameters + joint.Fit(observations); + + // At this point, we can query the distribution for observations: + double p1 = joint.ProbabilityMassFunction(new[] { 0, 0 }); // should be 0.50 + double p2 = joint.ProbabilityMassFunction(new[] { 1, 1 }); // should be 0.25 + double p3 = joint.ProbabilityMassFunction(new[] { 2, 1 }); // should be 0.25 + + // As it can be seem, indeed {0,0} appeared twice at the data, + // and {1,1} and {2,1 appeared one fourth of the data each. + + + + + + + + + + Constructs a new joint discrete distribution. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + A single point in the distribution range. + + The logarithm of the probability of x + occurring in the current distribution. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the frequency of observation of each discrete variable. + + + + + + Gets the number of symbols for each discrete variable. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the mean values for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the variance values for this distribution. + + + + + + Gets the variance for this distribution. + + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + + Wilcoxon's W statistic distribution. + + + + + This is the distribution for the positive side statistic W+ of the Wilcoxon + test. Some textbooks (and statistical packages) use alternate definitions for + W, which should be compared with the appropriate statistic tables or alternate + distributions. + + The Wilcoxon signed-rank test is a non-parametric statistical hypothesis test + used when comparing two related samples, matched samples, or repeated measurements + on a single sample to assess whether their population mean ranks differ (i.e. it + is a paired difference test). It can be used as an alternative to the paired + Student's t-test, t-test for matched pairs, or the t-test for dependent samples + when the population cannot be assumed to be normally distributed. + + + References: + + + Wikipedia, The Free Encyclopedia. Wilcoxon signed-rank test. Available on: + http://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test + + + + + + // Compute some rank statistics (see other examples below) + double[] ranks = { 1, 2, 3, 4, 5.5, 5.5, 7, 8, 9, 10, 11, 12 }; + + // Create a new Wilcoxon's W distribution + WilcoxonDistribution W = new WilcoxonDistribution(ranks); + + // Common measures + double mean = W.Mean; // 39.0 + double median = W.Median; // 38.5 + double var = W.Variance; // 162.5 + + // Probability density functions + double pdf = W.ProbabilityDensityFunction(w: 42); // 0.38418508862319295 + double lpdf = W.LogProbabilityDensityFunction(w: 42); // 0.38418508862319295 + + // Cumulative distribution functions + double cdf = W.DistributionFunction(w: 42); // 0.60817384423279575 + double ccdf = W.ComplementaryDistributionFunction(x: 42); // 0.39182615576720425 + + // Quantile function + double icdf = W.InverseDistributionFunction(p: cdf); // 42 + + // Hazard (failure rate) functions + double hf = W.HazardFunction(x: 42); // 0.98049883339449373 + double chf = W.CumulativeHazardFunction(x: 42); // 0.936937017743799 + + // String representation + string str = W.ToString(); // "W+(x; R)" + + + + The following example shows how to compute the W+ statistic + given a sample. The W+ statistics is given as the sum of all + positive signed ranks + in a sample. + + + // Suppose we have computed a vector of differences between + // samples and an hypothesized value (as in Wilcoxon's test). + + double[] differences = ... // differences between samples and an hypothesized median + + // Compute the ranks of the absolute differences and their sign + double[] ranks = Accord.Statistics.Tools.Rank(differences.Abs()); + int[] signs = Accord.Math.Matrix.Sign(differences).ToInt32(); + + // Compute the W+ statistics from the signed ranks + double W = WilcoxonDistribution.WPositive(Signs, ranks); + + + + + + + + + + Creates a new Wilcoxon's W+ distribution. + + + The rank statistics for the samples. + + + + + Creates a new Wilcoxon's W+ distribution. + + + The rank statistics for the samples. + True to compute the exact test. May requires + a significant amount of processing power for large samples (n > 12). + + + + + Computes the Wilcoxon's W+ statistic. + + + + The W+ statistic is computed as the + sum of all positive signed ranks. + + + + + + Computes the Wilcoxon's W- statistic. + + + + The W- statistic is computed as the + sum of all negative signed ranks. + + + + + + Computes the Wilcoxon's W statistic. + + + + The W statistic is computed as the + minimum of the W+ and W- statistics. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point w. + + + A single point in the distribution range. + + + The probability of w occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point w. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of effective samples. + + + + + + Gets the rank statistics for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. In the current + implementation, returns the same as the . + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Degenerate distribution. + + + + + In mathematics, a degenerate distribution or deterministic distribution is + the probability distribution of a random variable which only takes a single + value. Examples include a two-headed coin and rolling a die whose sides all + show the same number. While this distribution does not appear random in the + everyday sense of the word, it does satisfy the definition of random variable. + + The degenerate distribution is localized at a point k0 on the real line. The + probability mass function is a Delta function at k0. + + + References: + + + Wikipedia, The Free Encyclopedia. Degenerate distribution. Available on: + http://en.wikipedia.org/wiki/Degenerate_distribution + + + + + + This example shows how to create a Degenerate distribution + and compute some of its properties. + + + var dist = new DegenerateDistribution(value: 2); + + double mean = dist.Mean; // 2 + double median = dist.Median; // 2 + double mode = dist.Mode; // 2 + double var = dist.Variance; // 1 + + double cdf1 = dist.DistributionFunction(k: 1); // 0 + double cdf2 = dist.DistributionFunction(k: 2); // 1 + + double pdf1 = dist.ProbabilityMassFunction(k: 1); // 0 + double pdf2 = dist.ProbabilityMassFunction(k: 2); // 1 + double pdf3 = dist.ProbabilityMassFunction(k: 3); // 0 + + double lpdf = dist.LogProbabilityMassFunction(k: 2); // 0 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.0 + + int icdf1 = dist.InverseDistributionFunction(p: 0.0); // 1 + int icdf2 = dist.InverseDistributionFunction(p: 0.5); // 3 + int icdf3 = dist.InverseDistributionFunction(p: 1.0); // 2 + + double hf = dist.HazardFunction(x: 0); // 0.0 + double chf = dist.CumulativeHazardFunction(x: 0); // 0.0 + + string str = dist.ToString(CultureInfo.InvariantCulture); // Degenerate(x; k0 = 2) + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The only value whose probability is different from zero. Default is zero. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + The does not support fitting. + + + + + + Gets the unique value whose probability is different from zero. + + + + + + Gets the mean for this distribution. + + + + In the Degenerate distribution, the mean is equal to the + unique value within its domain. + + + + The distribution's mean value, which should equal . + + + + + + Gets the median for this distribution, which should equal . + + + + In the Degenerate distribution, the mean is equal to the + unique value within its domain. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution, which should equal 0. + + + + In the Degenerate distribution, the variance equals 0. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution, which should equal . + + + + In the Degenerate distribution, the mean is equal to the + unique value within its domain. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution, which is zero. + + + + The distribution's entropy. + + + + + + Gets the support interval for this distribution. + + + + The degenerate distribution's support is given only on the + point interval (, ). + + + + A containing + the support interval for this distribution. + + + + + + Negative Binomial distribution. + + + + + The negative binomial distribution is a discrete probability distribution of the number + of successes in a sequence of Bernoulli trials before a specified (non-random) number of + failures (denoted r) occur. For example, if one throws a die repeatedly until the third + time “1” appears, then the probability distribution of the number of non-“1”s that had + appeared will be negative binomial. + + + References: + + + Wikipedia, The Free Encyclopedia. Negative Binomial distribution. + Available from: http://en.wikipedia.org/wiki/Negative_binomial_distribution + + + + + + // Create a new Negative Binomial distribution with r = 7 and p = 0.42 + var dist = new NegativeBinomialDistribution(failures: 7, probability: 0.42); + + // Common measures + double mean = dist.Mean; // 5.068965517241379 + double median = dist.Median; // 5.0 + double var = dist.Variance; // 8.7395957193816862 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.19605133020527743 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.80394866979472257 + + // Probability mass functions + double pmf1 = dist.ProbabilityMassFunction(k: 4); // 0.054786846293416853 + double pmf2 = dist.ProbabilityMassFunction(k: 5); // 0.069908015870399909 + double pmf3 = dist.ProbabilityMassFunction(k: 6); // 0.0810932984096639 + double lpmf = dist.LogProbabilityMassFunction(k: 2); // -2.3927801721315989 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 2 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 4 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 8 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 0.10490438293398294 + double chf = dist.CumulativeHazardFunction(x: 4); // 0.64959916255036043 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "NegativeBinomial(x; r = 7, p = 0.42)" + + + + + + + + + Creates a new Negative Binomial distribution. + + + Number of failures r. + Success probability in each experiment. + + + + + Gets P( X<= k), the cumulative distribution function + (cdf) for this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Pareto's Distribution. + + + + + The Pareto distribution, named after the Italian economist Vilfredo Pareto, is a power law + probability distribution that coincides with social, scientific, geophysical, actuarial, + and many other types of observable phenomena. Outside the field of economics it is sometimes + referred to as the Bradford distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Pareto distribution. + Available from: http://en.wikipedia.org/wiki/Pareto_distribution + + + + + + // Creates a new Pareto's distribution with xm = 0.42, α = 3 + var pareto = new ParetoDistribution(scale: 0.42, shape: 3); + + // Common measures + double mean = pareto.Mean; // 0.63 + double median = pareto.Median; // 0.52916684095584676 + double var = pareto.Variance; // 0.13229999999999997 + + // Cumulative distribution functions + double cdf = pareto.DistributionFunction(x: 1.4); // 0.973 + double ccdf = pareto.ComplementaryDistributionFunction(x: 1.4); // 0.027000000000000024 + double icdf = pareto.InverseDistributionFunction(p: cdf); // 1.4000000446580794 + + // Probability density functions + double pdf = pareto.ProbabilityDensityFunction(x: 1.4); // 0.057857142857142857 + double lpdf = pareto.LogProbabilityDensityFunction(x: 1.4); // -2.8497783609309111 + + // Hazard (failure rate) functions + double hf = pareto.HazardFunction(x: 1.4); // 2.142857142857141 + double chf = pareto.CumulativeHazardFunction(x: 1.4); // 3.6119184129778072 + + // String representation + string str = pareto.ToString(CultureInfo.InvariantCulture); // Pareto(x; xm = 0.42, α = 3) + + + + + + + Creates new Pareto distribution. + + + + + + Creates new Pareto distribution. + + + The scale parameter xm. Default is 1. + The shape parameter α (alpha). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the scale parameter xm for this distribution. + + + + + + Gets the shape parameter α (alpha) for this distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The Pareto distribution's mean is defined as + α * xm / (α - 1). + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The Pareto distribution's mean is defined as + α * xm² / ((α - 1)² * (α - 2). + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + The Pareto distribution's Entropy is defined as + ln(xm / α) + 1 / α + 1. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + The Pareto distribution's Entropy is defined as xm. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + The Pareto distribution's median is defined + as xm * 2^(1 / α). + + + + + + Discrete uniform distribution. + + + + + In probability theory and statistics, the discrete uniform distribution is a + symmetric probability distribution whereby a finite number of values are equally + likely to be observed; every one of n values has equal probability 1/n. Another + way of saying "discrete uniform distribution" would be "a known, finite number of + outcomes equally likely to happen". + + + A simple example of the discrete uniform distribution is throwing a fair die. + The possible values are 1, 2, 3, 4, 5, 6, and each time the die is thrown the + probability of a given score is 1/6. If two dice are thrown and their values + added, the resulting distribution is no longer uniform since not all sums have + equal probability. + + + The discrete uniform distribution itself is inherently non-parametric. It is + convenient, however, to represent its values generally by an integer interval + [a,b], so that a,b become the main parameters of the distribution (often one + simply considers the interval [1,n] with the single parameter n). + + + References: + + + Wikipedia, The Free Encyclopedia. Uniform distribution (discrete). Available on: + http://en.wikipedia.org/wiki/Uniform_distribution_(discrete) + + + + + + // Create an uniform (discrete) distribution in [2, 6] + var dist = new UniformDiscreteDistribution(a: 2, b: 6); + + // Common measures + double mean = dist.Mean; // 4.0 + double median = dist.Median; // 4.0 + double var = dist.Variance; // 1.3333333333333333 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.2 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.8 + + // Probability mass functions + double pmf1 = dist.ProbabilityMassFunction(k: 4); // 0.2 + double pmf2 = dist.ProbabilityMassFunction(k: 5); // 0.2 + double pmf3 = dist.ProbabilityMassFunction(k: 6); // 0.2 + double lpmf = dist.LogProbabilityMassFunction(k: 2); // -1.6094379124341003 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 2 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 4 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 6 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 0.5 + double chf = dist.CumulativeHazardFunction(x: 4); // 0.916290731874155 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "U(x; a = 2, b = 6)" + + + + + + + Creates a discrete uniform distribution defined in the interval [a;b]. + + + The starting (minimum) value a. + The ending (maximum) value b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + A single point in the distribution range. + + The logarithm of the probability of k + occurring in the current distribution. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Gets the minimum value of the distribution (a). + + + + + + Gets the maximum value of the distribution (b). + + + + + + Gets the length of the distribution (b - a + 1). + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + (Shifted) Geometric Distribution. + + + + + This class represents the shifted version of the Geometric distribution + with support on { 0, 1, 2, 3, ... }. This is the probability distribution + of the number Y = X − 1 of failures before the first success, supported + on the set { 0, 1, 2, 3, ... }. + + + References: + + + Wikipedia, The Free Encyclopedia. Geometric distribution. Available on: + http://en.wikipedia.org/wiki/Geometric_distribution + + + + + + // Create a Geometric distribution with 42% success probability + var dist = new GeometricDistribution(probabilityOfSuccess: 0.42); + + // Common measures + double mean = dist.Mean; // 1.3809523809523812 + double median = dist.Median; // 1.0 + double var = dist.Variance; // 3.2879818594104315 + double mode = dist.Mode; // 0.0 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.80488799999999994 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.19511200000000006 + + // Probability mass functions + double pdf1 = dist.ProbabilityMassFunction(k: 0); // 0.42 + double pdf2 = dist.ProbabilityMassFunction(k: 1); // 0.2436 + double pdf3 = dist.ProbabilityMassFunction(k: 2); // 0.141288 + double lpdf = dist.LogProbabilityMassFunction(k: 2); // -1.956954918588067 + + // Quantile functions + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 0 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 1 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 3 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 0); // 0.72413793103448265 + double chf = dist.CumulativeHazardFunction(x: 0); // 0.54472717544167193 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Geometric(x; p = 0.42)" + + + + + + + + + Creates a new (shifted) geometric distribution. + + + The success probability. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the success probability for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Hypergeometric probability distribution. + + + + + The hypergeometric distribution is a discrete probability distribution that + describes the probability of k successes in n draws from a finite population + without replacement. This is in contrast to the + binomial distribution, which describes the probability of k successes + in n draws with replacement. + + + References: + + + Wikipedia, The Free Encyclopedia. Hypergeometric distribution. Available on: + http://en.wikipedia.org/wiki/Hypergeometric_distribution + + + + + + // Distribution parameters + int populationSize = 15; // population size N + int success = 7; // number of successes in the sample + int samples = 8; // number of samples drawn from N + + // Create a new Hypergeometric distribution with N = 15, n = 8, and s = 7 + var dist = new HypergeometricDistribution(populationSize, success, samples); + + // Common measures + double mean = dist.Mean; // 1.3809523809523812 + double median = dist.Median; // 4.0 + double var = dist.Variance; // 3.2879818594104315 + double mode = dist.Mode; // 4.0 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.80488799999999994 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.19511200000000006 + + // Probability mass functions + double pdf1 = dist.ProbabilityMassFunction(k: 4); // 0.38073038073038074 + double pdf2 = dist.ProbabilityMassFunction(k: 5); // 0.18275058275058276 + double pdf3 = dist.ProbabilityMassFunction(k: 6); // 0.030458430458430458 + double lpdf = dist.LogProbabilityMassFunction(k: 2); // -2.3927801721315989 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 3 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 4 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 5 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 1.7753623188405792 + double chf = dist.CumulativeHazardFunction(x: 4); // 1.5396683418789763 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "HyperGeometric(x; N = 15, m = 7, n = 8)" + + + + + + + + + + Constructs a new Hypergeometric distribution. + + + Size N of the population. + The number m of successes in the population. + The number n of samples drawn from the population. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the size N of the + population for this distribution. + + + + + + Gets the size n of the sample drawn + from N. + + + + + + Gets the count of success trials in the + population for this distribution. This + is often referred as m. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Inverse Gaussian (Normal) Distribution, also known as the Wald distribution. + + + + + The Inverse Gaussian distribution is a two-parameter family of continuous probability + distributions with support on (0,∞). As λ tends to infinity, the inverse Gaussian distribution + becomes more like a normal (Gaussian) distribution. The inverse Gaussian distribution has + several properties analogous to a Gaussian distribution. The name can be misleading: it is + an "inverse" only in that, while the Gaussian describes a Brownian Motion's level at a fixed + time, the inverse Gaussian describes the distribution of the time a Brownian Motion with positive + drift takes to reach a fixed positive level. + + References: + + + Wikipedia, The Free Encyclopedia. Inverse Gaussian distribution. Available on: + http://en.wikipedia.org/wiki/Inverse_Gaussian_distribution + + + + + + // Create a new inverse Gaussian distribution with μ = 0.42 and λ = 1.2 + var invGaussian = new InverseGaussianDistribution(mean: 0.42, shape: 1.2); + + // Common measures + double mean = invGaussian.Mean; // 0.42 + double median = invGaussian.Median; // 0.35856861093990083 + double var = invGaussian.Variance; // 0.061739999999999989 + + // Cumulative distribution functions + double cdf = invGaussian.DistributionFunction(x: 0.27); // 0.30658791274125458 + double ccdf = invGaussian.ComplementaryDistributionFunction(x: 0.27); // 0.69341208725874548 + double icdf = invGaussian.InverseDistributionFunction(p: cdf); // 0.26999999957543408 + + // Probability density functions + double pdf = invGaussian.ProbabilityDensityFunction(x: 0.27); // 2.3461495925760354 + double lpdf = invGaussian.LogProbabilityDensityFunction(x: 0.27); // 0.85277551314980737 + + // Hazard (failure rate) functions + double hf = invGaussian.HazardFunction(x: 0.27); // 3.383485283406336 + double chf = invGaussian.CumulativeHazardFunction(x: 0.27); // 0.36613081401302111 + + // String representation + string str = invGaussian.ToString(CultureInfo.InvariantCulture); // "N^-1(x; μ = 0.42, λ = 1.2)" + + + + + + + + + Constructs a new Inverse Gaussian distribution. + + + The mean parameter mu. + The shape parameter lambda. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random observation from the + Inverse Gaussian distribution with the given parameters. + + + The mean parameter mu. + The shape parameter lambda. + + A random double value sampled from the specified Uniform distribution. + + + + + Generates a random vector of observations from the + Inverse Gaussian distribution with the given parameters. + + + The mean parameter mu. + The shape parameter lambda. + The number of samples to generate. + + An array of double values sampled from the specified Uniform distribution. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the shape parameter (lambda) + for this distribution. + + + The distribution's lambda value. + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Nakagami distribution. + + + + + The Nakagami distribution has been used in the modeling of wireless + signal attenuation while traversing multiple paths. + + + References: + + + Wikipedia, The Free Encyclopedia. Nakagami distribution. Available on: + http://en.wikipedia.org/wiki/Nakagami_distribution + + Laurenson, Dave (1994). "Nakagami Distribution". Indoor Radio Channel Propagation + Modeling by Ray Tracing Techniques. + + R. Kolar, R. Jirik, J. Jan (2004) "Estimator Comparison of the Nakagami-m Parameter + and Its Application in Echocardiography", Radioengineering, 13 (1), 8–12 + + + + + + var nakagami = new NakagamiDistribution(shape: 2.4, spread: 4.2); + + double mean = nakagami.Mean; // 1.946082119049118 + double median = nakagami.Median; // 1.9061151110206338 + double var = nakagami.Variance; // 0.41276438591729486 + + double cdf = nakagami.DistributionFunction(x: 1.4); // 0.20603416752368109 + double pdf = nakagami.ProbabilityDensityFunction(x: 1.4); // 0.49253215371343023 + double lpdf = nakagami.LogProbabilityDensityFunction(x: 1.4); // -0.708195533773302 + + double ccdf = nakagami.ComplementaryDistributionFunction(x: 1.4); // 0.79396583247631891 + double icdf = nakagami.InverseDistributionFunction(p: cdf); // 1.400000000131993 + + double hf = nakagami.HazardFunction(x: 1.4); // 0.62034426869133652 + double chf = nakagami.CumulativeHazardFunction(x: 1.4); // 0.23071485080660473 + + string str = nakagami.ToString(CultureInfo.InvariantCulture); // Nakagami(x; μ = 2,4, ω = 4,2)" + + + + + + + Initializes a new instance of the class. + + + The shape parameter μ (mu). + The spread parameter ω (omega). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + The Nakagami's distribution CDF is defined in terms of the + Lower incomplete regularized + Gamma function P(a, x) as CDF(x) = P(μ, μ / ω) * x². + + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + Nakagami's PDF is defined as + PDF(x) = c * x^(2 * μ - 1) * exp(-(μ / ω) * x²) + in which c = 2 * μ ^ μ / (Γ(μ) * ω ^ μ)) + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + Nakagami's PDF is defined as + PDF(x) = c * x^(2 * μ - 1) * exp(-(μ / ω) * x²) + in which c = 2 * μ ^ μ / (Γ(μ) * ω ^ μ)) + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Nakagami distribution from a given set of observations. + + + + + + Estimates a new Nakagami distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Nakagami distribution with the given parameters. + + + The shape parameter μ. + The spread parameter ω. + The number of samples to generate. + + An array of double values sampled from the specified Nakagami distribution. + + + + + Generates a random observation from the + Nakagami distribution with the given parameters. + + + The shape parameter μ. + The spread parameter ω. + + A random double value sampled from the specified Nakagami distribution. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the distribution's shape parameter μ (mu). + + + The shape parameter μ (mu). + + + + + Gets the distribution's spread parameter ω (omega). + + + The spread parameter ω (omega). + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + Nakagami's mean is defined in terms of the + Gamma function Γ(x) as (Γ(μ + 0.5) / Γ(μ)) * sqrt(ω / μ). + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + Nakagami's variance is defined in terms of the + Gamma function Γ(x) as ω * (1 - (1 / μ) * (Γ(μ + 0.5) / Γ(μ))². + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Rayleigh distribution. + + + + + In probability theory and statistics, the Rayleigh distribution is a continuous + probability distribution. A Rayleigh distribution is often observed when the overall + magnitude of a vector is related to its directional components. + + One example where the Rayleigh distribution naturally arises is when wind speed + is analyzed into its orthogonal 2-dimensional vector components. Assuming that the + magnitude of each component is uncorrelated and normally distributed with equal variance, + then the overall wind speed (vector magnitude) will be characterized by a Rayleigh + distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Rayleigh distribution. Available on: + http://en.wikipedia.org/wiki/Rayleigh_distribution + + + + + + // Create a new Rayleigh's distribution with σ = 0.42 + var rayleigh = new RayleighDistribution(sigma: 0.42); + + // Common measures + double mean = rayleigh.Mean; // 0.52639193767251 + double median = rayleigh.Median; // 0.49451220943852386 + double var = rayleigh.Variance; // 0.075711527953380237 + + // Cumulative distribution functions + double cdf = rayleigh.DistributionFunction(x: 1.4); // 0.99613407986052716 + double ccdf = rayleigh.ComplementaryDistributionFunction(x: 1.4); // 0.0038659201394728449 + double icdf = rayleigh.InverseDistributionFunction(p: cdf); // 1.4000000080222026 + + // Probability density functions + double pdf = rayleigh.ProbabilityDensityFunction(x: 1.4); // 0.030681905868831811 + double lpdf = rayleigh.LogProbabilityDensityFunction(x: 1.4); // -3.4840821835248961 + + // Hazard (failure rate) functions + double hf = rayleigh.HazardFunction(x: 1.4); // 7.9365079365078612 + double chf = rayleigh.CumulativeHazardFunction(x: 1.4); // 5.5555555555555456 + + // String representation + string str = rayleigh.ToString(CultureInfo.InvariantCulture); // Rayleigh(x; σ = 0.42) + + + + + + + Creates a new Rayleigh distribution. + + + The scale parameter σ (sigma). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Gamma distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Rayleigh distribution with the given parameters. + + + The Rayleigh distribution's sigma. + The number of samples to generate. + + An array of double values sampled from the specified Rayleigh distribution. + + + + + Generates a random observation from the + Rayleigh distribution with the given parameters. + + + The Rayleigh distribution's sigma. + + A random double value sampled from the specified Rayleigh distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The Rayleight's mean value is defined + as mean = σ * sqrt(π / 2). + + + + + + Gets the Rayleight's scale parameter σ (sigma) + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The Rayleight's variance value is defined + as var = (4 - π) / 2 * σ². + + + + + + Gets the mode for this distribution. + + + + In the Rayleigh distribution, the mode equals σ (sigma). + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Student's t-distribution. + + + + + In probability and statistics, Student's t-distribution (or simply the + t-distribution) is a family of continuous probability distributions that + arises when estimating the mean of a normally distributed population in + situations where the sample size is small and population standard deviation + is unknown. It plays a role in a number of widely used statistical analyses, + including the Student's t-test for assessing the statistical significance of + the difference between two sample means, the construction of confidence intervals + for the difference between two population means, and in linear regression + analysis. The Student's t-distribution also arises in the Bayesian analysis of + data from a normal family. + + If we take k samples from a normal distribution with fixed unknown mean and + variance, and if we compute the sample mean and sample variance for these k + samples, then the t-distribution (for k) can be defined as the distribution + of the location of the true mean, relative to the sample mean and divided by + the sample standard deviation, after multiplying by the normalizing term + sqrt(n), where n is the sample size. In this way the t-distribution + can be used to estimate how likely it is that the true mean lies in any given + range. + + The t-distribution is symmetric and bell-shaped, like the normal distribution, + but has heavier tails, meaning that it is more prone to producing values that + fall far from its mean. This makes it useful for understanding the statistical + behavior of certain types of ratios of random quantities, in which variation in + the denominator is amplified and may produce outlying values when the denominator + of the ratio falls close to zero. The Student's t-distribution is a special case + of the generalized hyperbolic distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's t-distribution. Available on: + http://en.wikipedia.org/wiki/Student's_t-distribution + + + + + + // Create a new Student's T distribution with d.f = 4.2 + TDistribution t = new TDistribution(degreesOfFreedom: 4.2); + + // Common measures + double mean = t.Mean; // 0.0 + double median = t.Median; // 0.0 + double var = t.Variance; // 1.9090909090909089 + + // Cumulative distribution functions + double cdf = t.DistributionFunction(x: 1.4); // 0.88456136730659074 + double pdf = t.ProbabilityDensityFunction(x: 1.4); // 0.13894002185341031 + double lpdf = t.LogProbabilityDensityFunction(x: 1.4); // -1.9737129364307417 + + // Probability density functions + double ccdf = t.ComplementaryDistributionFunction(x: 1.4); // 0.11543863269340926 + double icdf = t.InverseDistributionFunction(p: cdf); // 1.4000000000000012 + + // Hazard (failure rate) functions + double hf = t.HazardFunction(x: 1.4); // 1.2035833984833988 + double chf = t.CumulativeHazardFunction(x: 1.4); // 2.1590162088918525 + + // String representation + string str = t.ToString(CultureInfo.InvariantCulture); // T(x; df = 4.2) + + + + + + + + + + Initializes a new instance of the class. + + + The degrees of freedom. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + See . + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + the left tail T-distribution evaluated at probability p. + + + + Based on the stdtril function from the Cephes Math Library + Release 2.8, adapted with permission of Stephen L. Moshier. + + + + + + Gets the degrees of freedom for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the T Distribution, the mean is zero if the number of degrees + of freedom is higher than 1. Otherwise, it is undefined. + + + + + + Gets the mode for this distribution (always zero). + + + + The distribution's mode value (zero). + + + + + + Gets the variance for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Not supported. + + + + + + Continuous Uniform Distribution. + + + + + The continuous uniform distribution or rectangular distribution is a family of + symmetric probability distributions such that for each member of the family, all + intervals of the same length on the distribution's support are equally probable. + The support is defined by the two parameters, a and b, which are its minimum and + maximum values. The distribution is often abbreviated U(a,b). It is the maximum + entropy probability distribution for a random variate X under no constraint other + than that it is contained in the distribution's support. + + + References: + + + Wikipedia, The Free Encyclopedia. Uniform Distribution (continuous). Available on: + http://en.wikipedia.org/wiki/Uniform_distribution_(continuous) + + + + + + The following example demonstrates how to create an uniform + distribution defined over the interval [0.42, 1.1]. + + + // Create a new uniform continuous distribution from 0.42 to 1.1 + var uniform = new UniformContinuousDistribution(a: 0.42, b: 1.1); + + // Common measures + double mean = uniform.Mean; // 0.76 + double median = uniform.Median; // 0.76 + double var = uniform.Variance; // 0.03853333333333335 + + // Cumulative distribution functions + double cdf = uniform.DistributionFunction(x: 0.9); // 0.70588235294117641 + double ccdf = uniform.ComplementaryDistributionFunction(x: 0.9); // 0.29411764705882359 + double icdf = uniform.InverseDistributionFunction(p: cdf); // 0.9 + + // Probability density functions + double pdf = uniform.ProbabilityDensityFunction(x: 0.9); // 1.4705882352941173 + double lpdf = uniform.LogProbabilityDensityFunction(x: 0.9); // 0.38566248081198445 + + // Hazard (failure rate) functions + double hf = uniform.HazardFunction(x: 0.9); // 4.9999999999999973 + double chf = uniform.CumulativeHazardFunction(x: 0.9); // 1.2237754316221154 + + // String representation + string str = uniform.ToString(CultureInfo.InvariantCulture); // "U(x; a = 0.42, b = 1.1)" + + + + + + + Creates a new uniform distribution defined in the interval [0;1]. + + + + + + Creates a new uniform distribution defined in the interval [a;b]. + + + The starting number a. + The ending number b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Estimates a new uniform distribution from a given set of observations. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Uniform distribution with the given parameters. + + + The starting number a. + The ending number b. + The number of samples to generate. + + An array of double values sampled from the specified Uniform distribution. + + + + + Generates a random observation from the Uniform + distribution defined in the interval 0 and 1. + + + The number of samples to generate. + + An array of double values sampled from the specified Uniform distribution. + + + + + Generates a random observation from the Uniform + distribution defined in the interval 0 and 1. + + + A random double value sampled from the specified Uniform distribution. + + + + + Generates a random observation from the + Uniform distribution with the given parameters. + + + The starting number a. + The ending number b. + + A random double value sampled from the specified Uniform distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the minimum value of the distribution (a). + + + + + + Gets the maximum value of the distribution (b). + + + + + + Gets the length of the distribution (b-a). + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + The mode of the uniform distribution is any value contained + in the interval of the distribution. The framework return + the same value as the . + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Standard Uniform Distribution, + starting at zero and ending at one (a=0, b=1). + + + + + + Log-Normal (Galton) distribution. + + + + + The log-normal distribution is a probability distribution of a random + variable whose logarithm is normally distributed. + + + References: + + + Wikipedia, The Free Encyclopedia. Log-normal distribution. + Available on: http://en.wikipedia.org/wiki/Log-normal_distribution + + NIST/SEMATECH e-Handbook of Statistical Methods. Lognormal Distribution. + Available on: http://www.itl.nist.gov/div898/handbook/eda/section3/eda3669.htm + + Weisstein, Eric W. "Normal Distribution Function." From MathWorld--A Wolfram Web + Resource. http://mathworld.wolfram.com/NormalDistributionFunction.html + + + + + + // Create a new Log-normal distribution with μ = 2.79 and σ = 1.10 + var log = new LognormalDistribution(location: 0.42, shape: 1.1); + + // Common measures + double mean = log.Mean; // 2.7870954605658511 + double median = log.Median; // 1.5219615583481305 + double var = log.Variance; // 18.28163603621158 + + // Cumulative distribution functions + double cdf = log.DistributionFunction(x: 0.27); // 0.057961222885664958 + double ccdf = log.ComplementaryDistributionFunction(x: 0.27); // 0.942038777114335 + double icdf = log.InverseDistributionFunction(p: cdf); // 0.26999997937815973 + + // Probability density functions + double pdf = log.ProbabilityDensityFunction(x: 0.27); // 0.39035530085982068 + double lpdf = log.LogProbabilityDensityFunction(x: 0.27); // -0.94069792674674835 + + // Hazard (failure rate) functions + double hf = log.HazardFunction(x: 0.27); // 0.41437285846720867 + double chf = log.CumulativeHazardFunction(x: 0.27); // 0.059708840588116374 + + // String representation + string str = log.ToString("N2", CultureInfo.InvariantCulture); // Lognormal(x; μ = 2.79, σ = 1.10) + + + + + + + + + Constructs a Log-Normal (Galton) distribution + with zero location and unit shape. + + + + + + Constructs a Log-Normal (Galton) distribution + with given location and unit shape. + + + The distribution's location value μ (mu). + + + + + Constructs a Log-Normal (Galton) distribution + with given mean and standard deviation. + + + The distribution's location value μ (mu). + The distribution's shape deviation σ (sigma). + + + + + Gets the cumulative distribution function (cdf) for + the this Log-Normal distribution evaluated at point x. + + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The calculation is computed through the relationship to the error function + as erfc(-z/sqrt(2)) / 2. See + [Weisstein] for more details. + + + References: + + + Weisstein, Eric W. "Normal Distribution Function." From MathWorld--A Wolfram Web + Resource. http://mathworld.wolfram.com/NormalDistributionFunction.html + + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Estimates a new Log-Normal distribution from a given set of observations. + + + + + + Estimates a new Log-Normal distribution from a given set of observations. + + + + + + Estimates a new Log-Normal distribution from a given set of observations. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random observation from the + Lognormal distribution with the given parameters. + + + The distribution's location value. + The distribution's shape deviation. + + A random double value sampled from the specified Lognormal distribution. + + + + + Generates a random vector of observations from the + Lognormal distribution with the given parameters. + + + The distribution's location value. + The distribution's shape deviation. + The number of samples to generate. + + An array of double values sampled from the specified Lognormal distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Shape parameter σ (sigma) of + the log-normal distribution. + + + + + + Squared shape parameter σ² (sigma-squared) + of the log-normal distribution. + + + + + + Location parameter μ (mu) of the log-normal distribution. + + + + + + Gets the Mean for this Log-Normal distribution. + + + + The Lognormal distribution's mean is + defined as exp(μ + σ²/2). + + + + + + Gets the Variance (the square of the standard + deviation) for this Log-Normal distribution. + + + + The Lognormal distribution's variance is + defined as (exp(σ²) - 1) * exp(2*μ + σ²). + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Entropy for this Log-Normal distribution. + + + + + + Gets the Standard Log-Normal Distribution, + with location set to zero and unit shape. + + + + + + Empirical distribution. + + + + + Empirical distributions are based solely on the data. This class + uses the empirical distribution function and the Gaussian kernel + density estimation to provide an univariate continuous distribution + implementation which depends only on sampled data. + + + References: + + + Wikipedia, The Free Encyclopedia. Empirical Distribution Function. Available on: + + http://en.wikipedia.org/wiki/Empirical_distribution_function + + PlanetMath. Empirical Distribution Function. Available on: + + http://planetmath.org/encyclopedia/EmpiricalDistributionFunction.html + + Wikipedia, The Free Encyclopedia. Kernel Density Estimation. Available on: + + http://en.wikipedia.org/wiki/Kernel_density_estimation + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + + + + + The following example shows how to build an empirical distribution directly from a sample: + + + // Consider the following univariate samples + double[] samples = { 5, 5, 1, 4, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 4, 3, 2, 3 }; + + // Create a non-parametric, empirical distribution using those samples: + EmpiricalDistribution distribution = new EmpiricalDistribution(samples); + + // Common measures + double mean = distribution.Mean; // 3 + double median = distribution.Median; // 2.9999993064186787 + double var = distribution.Variance; // 1.2941176470588236 + + // Cumulative distribution function + double cdf = distribution.DistributionFunction(x: 4.2); // 0.88888888888888884 + double ccdf = distribution.ComplementaryDistributionFunction(x: 4.2); //0.11111111111111116 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 4.1999999999999993 + + // Probability density functions + double pdf = distribution.ProbabilityDensityFunction(x: 4.2); // 0.15552784414141974 + double lpdf = distribution.LogProbabilityDensityFunction(x: 4.2); // -1.8609305013898356 + + // Hazard (failure rate) functions + double hf = distribution.HazardFunction(x: 4.2); // 1.3997505972727771 + double chf = distribution.CumulativeHazardFunction(x: 4.2); // 2.1972245773362191 + + // Automatically estimated smooth parameter (gamma) + double smoothing = distribution.Smoothing; // 1.9144923416414432 + + // String representation + string str = distribution.ToString(CultureInfo.InvariantCulture); // Fn(x; S) + + + + + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The number of repetition counts for each sample. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + The number of repetition counts for each sample. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the default estimative of the smoothing parameter. + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + + An estimative of the smoothing parameter. + + + + + Gets the default estimative of the smoothing parameter. + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + + An estimative of the smoothing parameter. + + + + + Gets the default estimative of the smoothing parameter. + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Gets the default estimative of the smoothing parameter. + + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the samples giving this empirical distribution. + + + + + + Gets the fractional weights associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the repetition counts associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the total number of samples in this distribution. + + + + + + Gets the bandwidth smoothing parameter + used in the kernel density estimation. + + + + + + Gets the mean for this distribution. + + + + See . + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + See . + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + F (Fisher-Snedecor) distribution. + + + + + In probability theory and statistics, the F-distribution is a continuous + probability distribution. It is also known as Snedecor's F distribution + or the Fisher-Snedecor distribution (after R.A. Fisher and George W. Snedecor). + The F-distribution arises frequently as the null distribution of a test statistic, + most notably in the analysis of variance; see . + + + References: + + + Wikipedia, The Free Encyclopedia. F-distribution. Available on: + http://en.wikipedia.org/wiki/F-distribution + + + + + + The following example shows how to construct a Fisher-Snedecor's F-distribution + with 8 and 5 degrees of freedom, respectively. + + + // Create a Fisher-Snedecor's F distribution with 8 and 5 d.f. + FDistribution F = new FDistribution(degrees1: 8, degrees2: 5); + + // Common measures + double mean = F.Mean; // 1.6666666666666667 + double median = F.Median; // 1.0545096252132447 + double var = F.Variance; // 7.6388888888888893 + + // Cumulative distribution functions + double cdf = F.DistributionFunction(x: 0.27); // 0.049463408057268315 + double ccdf = F.ComplementaryDistributionFunction(x: 0.27); // 0.95053659194273166 + double icdf = F.InverseDistributionFunction(p: cdf); // 0.27 + + // Probability density functions + double pdf = F.ProbabilityDensityFunction(x: 0.27); // 0.45120469723580559 + double lpdf = F.LogProbabilityDensityFunction(x: 0.27); // -0.79583416831212883 + + // Hazard (failure rate) functions + double hf = F.HazardFunction(x: 0.27); // 0.47468419528555084 + double chf = F.CumulativeHazardFunction(x: 0.27); // 0.050728620222091653 + + // String representation + string str = F.ToString(CultureInfo.InvariantCulture); // F(x; df1 = 8, df2 = 5) + + + + + + + Constructs a F-distribution with + the given degrees of freedom. + + + + + + Constructs a F-distribution with + the given degrees of freedom. + + + The first degree of freedom. Default is 1. + The second degree of freedom. Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + the F-distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + The F-distribution CDF is computed in terms of the + Incomplete Beta function Ix(a,b) as CDF(x) = Iu(d1/2, d2/2) in which + u is given as u = (d1 * x) / (d1 * x + d2). + + + + + + Gets the complementary cumulative distribution + function evaluated at point x. + + + + + The F-distribution complementary CDF is computed in terms of the + Incomplete Beta function Ix(a,b) as CDFc(x) = Iu(d2/2, d1/2) in which + u is given as u = (d2 * x) / (d2 * x + d1). + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Gets the probability density function (pdf) for + the F-distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not available. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + F-distribution with the given parameters. + + + The first degree of freedom. + The second degree of freedom. + The number of samples to generate. + + An array of double values sampled from the specified F-distribution. + + + + + Generates a random observation from the + F-distribution with the given parameters. + + + The first degree of freedom. + The second degree of freedom. + + A random double value sampled from the specified F-distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the first degree of freedom. + + + + + + Gets the second degree of freedom. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Outcome status for survival methods. A sample can + enter the experiment, exit the experiment while still + alive or exit the experiment due to failure. + + + + + + Observation started. The observation was left censored before + the current time and has now entered the experiment. This is + equivalent to R's censoring code -1. + + + + + + Failure happened. This is equivalent to R's censoring code 1. + + + + + + The sample was right-censored. This is equivalent to R's censoring code 0. + + + + + + Estimators for estimating parameters of Hazard distributions. + + + + + + Breslow-Nelson-Aalen estimator (default). + + + + + + Kaplan-Meier estimator. + + + + + + Methods for handling ties in hazard/survival estimation algorithms. + + + + + + Efron's method for ties (default). + + + + + + Breslow's method for ties. + + + + + + Estimators for Survival distribution functions. + + + + + + Fleming-Harrington estimator (default). + + + + + + Kaplan-Meier estimator. + + + + + + Empirical Hazard Distribution. + + + + + The Empirical Hazard (or Survival) Distribution can be used as an + estimative of the true Survival function for a dataset which does + not relies on distribution or model assumptions about the data. + + + The most direct use for this class is in Survival Analysis, such as when + using or creating + Cox's Proportional Hazards models. + + // references + http://www.statsdirect.com/help/default.htm#survival_analysis/kaplan_meier.htm + + + + + The following example shows how to construct an empirical hazards + function from a set of hazard values at the given time instants. + + + // Consider the following observations, occurring at the given time steps + double[] times = { 11, 10, 9, 8, 6, 5, 4, 2 }; + double[] values = { 0.22, 0.67, 1.00, 0.18, 1.00, 1.00, 1.00, 0.55 }; + + // Create a new empirical distribution function given the observations and event times + EmpiricalHazardDistribution distribution = new EmpiricalHazardDistribution(times, values); + + // Common measures + double mean = distribution.Mean; // 2.1994135014183138 + double median = distribution.Median; // 3.9999999151458066 + double var = distribution.Variance; // 4.2044065839577112 + + // Cumulative distribution functions + double cdf = distribution.DistributionFunction(x: 4.2); // 0.7877520261732569 + double ccdf = distribution.ComplementaryDistributionFunction(x: 4.2); // 0.21224797382674304 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 4.3304819115496436 + + // Probability density functions + double pdf = distribution.ProbabilityDensityFunction(x: 4.2); // 0.21224797382674304 + double lpdf = distribution.LogProbabilityDensityFunction(x: 4.2); // -1.55 + + // Hazard (failure rate) functions + double hf = distribution.HazardFunction(x: 4.2); // 1.0 + double chf = distribution.CumulativeHazardFunction(x: 4.2); // 1.55 + + // String representation + string str = distribution.ToString(); // H(x; v, t) + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The time steps. + The hazard rates at the time steps. + + + + + Initializes a new instance of the class. + + + The time steps. + The hazard rates at the time steps. + The survival function estimator to be used. Default is + + + + + + Initializes a new instance of the class. + + + The survival function estimator to be used. Default is + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. In the Empirical Hazard Distribution, this function + is computed using the Fleming-Harrington estimator. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + In the Empirical Hazard Distribution, the PDF is defined + as the product of the hazard function h(x) and survival + function S(x), as PDF(x) = h(x) * S(x). + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Sorts time-censored events considering their time of occurrence and the type of event. + Events are first sorted in decreased order of occurrence, and then with failures coming + before censoring. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + + The indices of the new sorting. + + + + + Sorts time-censored events considering their time of occurrence and the type of event. + Events are first sorted in decreased order of occurrence, and then with failures coming + before censoring. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The input vector associated with the event. + + The indices of the new sorting. + + + + + Sorts time-censored events considering their time of occurrence and the type of event. + Events are first sorted in decreased order of occurrence, and then with failures coming + before censoring. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + + The indices of the new sorting. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Gets the time steps of the hazard density values. + + + + + + Gets the hazard rate values at each time step. + + + + + + Gets the survival values at each time step. + + + + + + Gets the survival function estimator being used in this distribution. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gompertz distribution. + + + + + The Gompertz distribution is a continuous probability distribution. The + Gompertz distribution is often applied to describe the distribution of + adult lifespans by demographers and actuaries. Related fields of science + such as biology and gerontology also considered the Gompertz distribution + for the analysis of survival. More recently, computer scientists have also + started to model the failure rates of computer codes by the Gompertz + distribution. In marketing science, it has been used as an individual-level + model of customer lifetime. + + + References: + + + Wikipedia, The Free Encyclopedia. Gompertz distribution. Available on: + http://en.wikipedia.org/wiki/Gompertz_distribution + + + + + + The following example shows how to construct a Gompertz + distribution with η = 4.2 and b = 1.1. + + + // Create a new Gompertz distribution with η = 4.2 and b = 1.1 + GompertzDistribution dist = new GompertzDistribution(eta: 4.2, b: 1.1); + + // Common measures + double median = dist.Median; // 0.13886469671401389 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(x: 0.27); // 0.76599768199799145 + double ccdf = dist.ComplementaryDistributionFunction(x: 0.27); // 0.23400231800200855 + double icdf = dist.InverseDistributionFunction(p: cdf); // 0.26999999999766749 + + // Probability density functions + double pdf = dist.ProbabilityDensityFunction(x: 0.27); // 1.4549484164912097 + double lpdf = dist.LogProbabilityDensityFunction(x: 0.27); // 0.37497044741163688 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 0.27); // 6.2176666834502088 + double chf = dist.CumulativeHazardFunction(x: 0.27); // 1.4524242576820101 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Gompertz(x; η = 4.2, b = 1.1)" + + + + + + + Initializes a new instance of the class. + + + The shape parameter η. + The scale parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Mixture of univariate probability distributions. + + + + + A mixture density is a probability density function which is expressed + as a convex combination (i.e. a weighted sum, with non-negative weights + that sum to 1) of other probability density functions. The individual + density functions that are combined to make the mixture density are + called the mixture components, and the weights associated with each + component are called the mixture weights. + + + References: + + + Wikipedia, The Free Encyclopedia. Mixture density. Available on: + http://en.wikipedia.org/wiki/Mixture_density + + + + + The type of the univariate component distributions. + + + + // Create a new mixture containing two Normal distributions + Mixture<NormalDistribution> mix = new Mixture<NormalDistribution>( + new NormalDistribution(2, 1), new NormalDistribution(5, 1)); + + // Common measures + double mean = mix.Mean; // 3.5 + double median = mix.Median; // 3.4999998506015895 + double var = mix.Variance; // 3.25 + + // Cumulative distribution functions + double cdf = mix.DistributionFunction(x: 4.2); // 0.59897597553494908 + double ccdf = mix.ComplementaryDistributionFunction(x: 4.2); // 0.40102402446505092 + + // Probability mass functions + double pmf1 = mix.ProbabilityDensityFunction(x: 1.2); // 0.14499174984363708 + double pmf2 = mix.ProbabilityDensityFunction(x: 2.3); // 0.19590437513747333 + double pmf3 = mix.ProbabilityDensityFunction(x: 3.7); // 0.13270883471234715 + double lpmf = mix.LogProbabilityDensityFunction(x: 4.2); // -1.8165661905848629 + + // Quantile function + double icdf1 = mix.InverseDistributionFunction(p: 0.17); // 1.5866611690305095 + double icdf2 = mix.InverseDistributionFunction(p: 0.46); // 3.1968506765456883 + double icdf3 = mix.InverseDistributionFunction(p: 0.87); // 5.6437596300843076 + + // Hazard (failure rate) functions + double hf = mix.HazardFunction(x: 4.2); // 0.40541978256972522 + double chf = mix.CumulativeHazardFunction(x: 4.2); // 0.91373394208601633 + + // String representation: + // Mixture(x; 0.5 * N(x; μ = 5, σ² = 1) + 0.5 * N(x; μ = 5, σ² = 1)) + string str = mix.ToString(CultureInfo.InvariantCulture); + + + + The following example shows how to estimate (fit) a Mixture of Normal distributions + from weighted data: + + + // Randomly initialize some mixture components + NormalDistribution[] components = new NormalDistribution[2]; + components[0] = new NormalDistribution(2, 1); + components[1] = new NormalDistribution(5, 1); + + // Create an initial mixture + var mixture = new Mixture<NormalDistribution>(components); + + // Now, suppose we have a weighted data + // set. Those will be the input points: + + double[] points = { 0, 3, 1, 7, 3, 5, 1, 2, -1, 2, 7, 6, 8, 6 }; // (14 points) + + // And those are their respective unnormalized weights: + double[] weights = { 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 2, 3, 1, 1 }; // (14 weights) + + // Let's normalize the weights so they sum up to one: + weights = weights.Divide(weights.Sum()); + + // Now we can fit our model to the data: + mixture.Fit(points, weights); // done! + + // Our model will be: + double mean1 = mixture.Components[0].Mean; // 1.41126 + double mean2 = mixture.Components[1].Mean; // 6.53301 + + // With mixture weights + double pi1 = mixture.Coefficients[0]; // 0.51408 + double pi2 = mixture.Coefficients[0]; // 0.48591 + + // If we need the GaussianMixtureModel functionality, we can + // use the estimated mixture to initialize a new model: + GaussianMixtureModel gmm = new GaussianMixtureModel(mixture); + + mean1 = gmm.Gaussians[0].Mean[0]; // 1.41126 (same) + mean2 = gmm.Gaussians[1].Mean[0]; // 6.53301 (same) + + p1 = gmm.Gaussians[0].Proportion; // 0.51408 (same) + p2 = gmm.Gaussians[1].Proportion; // 0.48591 (same) + + + + + + + + + + + Initializes a new instance of the class. + + + The mixture distribution components. + + + + + Initializes a new instance of the class. + + + The mixture weight coefficients. + The mixture distribution components. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for one of + the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The probability of x occurring in the component distribution, + computed as the PDF of the component distribution times its mixture + coefficient. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for one + of the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The logarithm of the probability of x occurring in the + component distribution, computed as the PDF of the component + distribution times its mixture coefficient. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for one + component of this distribution evaluated at point x. + + + The component distribution's index. + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial mixture coefficients. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial mixture coefficients. + The convergence threshold for the Expectation-Maximization estimation. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mixture components. + + + + + + Gets the weight coefficients. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + References: Lidija Trailovic and Lucy Y. Pao, Variance Estimation and + Ranking of Gaussian Mixture Distributions in Target Tracking + Applications, Department of Electrical and Computer Engineering + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Multivariate Normal (Gaussian) distribution. + + + + + The Gaussian is the most widely used distribution for continuous + variables. In the case of many variables, it is governed by two + parameters, the mean vector and the variance-covariance matrix. + + When a covariance matrix given to the class constructor is not positive + definite, the distribution is degenerate and this may be an indication + indication that it may be entirely contained in a r-dimensional subspace. + Applying a rotation to an orthogonal basis to recover a non-degenerate + r-dimensional distribution may help in this case. + + + References: + + + Ai Access. Glossary of Data Modeling. Positive definite matrix. Available on: + http://www.aiaccess.net/English/Glossaries/GlosMod/e_gm_positive_definite_matrix.htm + + + + + + The following example shows how to create a Multivariate Gaussian + distribution with known parameters mean vector and covariance matrix + + + // Create a multivariate Gaussian distribution + var dist = new MultivariateNormalDistribution( + + // mean vector mu + mean: new double[] + { + 4, 2 + }, + + // covariance matrix sigma + covariance: new double[,] + { + { 0.3, 0.1 }, + { 0.1, 0.7 } + } + ); + + // Common measures + double[] mean = dist.Mean; // { 4, 2 } + double[] median = dist.Median; // { 4, 2 } + double[] var = dist.Variance; // { 0.3, 0.7 } (diagonal from cov) + double[,] cov = dist.Covariance; // { { 0.3, 0.1 }, { 0.1, 0.7 } } + + // Probability mass functions + double pdf1 = dist.ProbabilityDensityFunction(new double[] { 2, 5 }); // 0.000000018917884164743237 + double pdf2 = dist.ProbabilityDensityFunction(new double[] { 4, 2 }); // 0.35588127170858852 + double pdf3 = dist.ProbabilityDensityFunction(new double[] { 3, 7 }); // 0.000000000036520107734505265 + double lpdf = dist.LogProbabilityDensityFunction(new double[] { 3, 7 }); // -24.033158110192296 + + // Cumulative distribution function (for up to two dimensions) + double cdf = dist.DistributionFunction(new double[] { 3, 5 }); // 0.033944035782101548 + + // Generate samples from this distribution: + double[][] sample = dist.Generate(1000000); + + + + The following example demonstrates how to fit a multivariate Gaussian to + a set of observations. Since those observations would lead to numerical + difficulties, the example also demonstrates how to specify a regularization + constant to avoid getting a . + + + + double[][] observations = + { + new double[] { 1, 2 }, + new double[] { 1, 2 }, + new double[] { 1, 2 }, + new double[] { 1, 2 } + }; + + // Create a multivariate Gaussian for 2 dimensions + var normal = new MultivariateNormalDistribution(2); + + // Specify a regularization constant in the fitting options + NormalOptions options = new NormalOptions() { Regularization = double.Epsilon }; + + // Fit the distribution to the data + normal.Fit(observations, options); + + // Check distribution parameters + double[] mean = normal.Mean; // { 1, 2 } + double[] var = normal.Variance; // { 4.9E-324, 4.9E-324 } (almost machine zero) + + + + The next example shows how to estimate a Gaussian distribution from data + available inside a Microsoft Excel spreadsheet using the ExcelReader class. + + + // Create a new Excel reader to read data from a spreadsheet + ExcelReader reader = new ExcelReader(@"test.xls", hasHeaders: false); + + // Extract the "Data" worksheet from the xls + DataTable table = reader.GetWorksheet("Data"); + + // Convert the data table to a jagged matrix + double[][] observations = table.ToArray(); + + + // Estimate a new Multivariate Normal Distribution from the observations + var dist = MultivariateNormalDistribution.Estimate(observations, new NormalOptions() + { + Regularization = 1e-10 // this value will be added to the diagonal until it becomes positive-definite + }); + + + + + + + + + Constructs a multivariate Gaussian distribution + with zero mean vector and identity covariance matrix. + + + The number of dimensions in the distribution. + + + + + Constructs a multivariate Gaussian distribution + with given mean vector and covariance matrix. + + + The mean vector μ (mu) for the distribution. + The covariance matrix Σ (sigma) for the distribution. + + + + + Computes the cumulative distribution function for distributions + up to two dimensions. For more than two dimensions, this method + is not supported. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Please see . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Please see . + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + Please see . + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + Please see . + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + Please see . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Converts this multivariate + normal distribution into a joint distribution + of independent normal distributions. + + + + A independent joint distribution of + normal distributions. + + + + + + Generates a random vector of observations from the current distribution. + + + A random vector of observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Creates a new univariate Normal distribution. + + + The mean value for the distribution. + The standard deviation for the distribution. + + A object that + actually represents a . + + + + + Creates a new bivariate Normal distribution. + + + The mean value for the first variate in the distribution. + The mean value for the second variate in the distribution. + The standard deviation for the first variate. + The standard deviation for the second variate. + The correlation coefficient between the two distributions. + + A bi-dimensional . + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Generates a random vector of observations from a distribution with the given parameters. + + + The number of samples to generate. + The mean vector μ (mu) for the distribution. + The covariance matrix Σ (sigma) for the distribution. + + A random vector of observations drawn from this distribution. + + + + + Gets the Mean vector μ (mu) for + the Gaussian distribution. + + + + + + Gets the Variance vector diag(Σ), the diagonal of + the sigma matrix, for the Gaussian distribution. + + + + + + Gets the variance-covariance matrix + Σ (sigma) for the Gaussian distribution. + + + + + + Univariate general discrete distribution, also referred as the + Categorical distribution. + + + + + An univariate categorical distribution is a statistical distribution + whose variables can take on only discrete values. Each discrete value + defined within the interval of the distribution has an associated + probability value indicating its frequency of occurrence. + + The discrete uniform distribution is a special case of a generic + discrete distribution whose probability values are constant. + + + + + // Create a Categorical distribution for 3 symbols, in which + // the first and second symbol have 25% chance of appearing, + // and the third symbol has 50% chance of appearing. + + // 1st 2nd 3rd + double[] probabilities = { 0.25, 0.25, 0.50 }; + + // Create the categorical with the given probabilities + var dist = new GeneralDiscreteDistribution(probabilities); + + // Common measures + double mean = dist.Mean; // 1.25 + double median = dist.Median; // 1.00 + double var = dist.Variance; // 0.6875 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 1.0 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.0 + + // Probability mass functions + double pdf1 = dist.ProbabilityMassFunction(k: 0); // 0.25 + double pdf2 = dist.ProbabilityMassFunction(k: 1); // 0.25 + double pdf3 = dist.ProbabilityMassFunction(k: 2); // 0.50 + double lpdf = dist.LogProbabilityMassFunction(k: 2); // -0.69314718055994529 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 0 + int icdf2 = dist.InverseDistributionFunction(p: 0.39); // 1 + int icdf3 = dist.InverseDistributionFunction(p: 0.56); // 2 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 0); // 0.33333333333333331 + double chf = dist.CumulativeHazardFunction(x: 0); // 0.2876820724517809 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Categorical(x; p = { 0.25, 0.25, 0.5 })" + + + + + + + Constructs a new generic discrete distribution. + + + + The integer value where the distribution starts, also + known as the offset value. Default value is 0. + + The frequency of occurrence for each integer value in the + distribution. The distribution is assumed to begin in the + interval defined by start up to size of this vector. + + + + + Constructs a new uniform discrete distribution. + + + + The integer value where the distribution starts, also + known as the offset value. Default value is 0. + + The number of discrete values within the distribution. + The distribution is assumed to belong to the interval + [start, start + symbols]. + + + + + Constructs a new generic discrete distribution. + + + + The frequency of occurrence for each integer value in the + distribution. The distribution is assumed to begin in the + interval defined by start up to size of this vector. + + + + + Constructs a new uniform discrete distribution. + + + + The number of discrete values within the distribution. + The distribution is assumed to belong to the interval + [start, start + symbols]. + + + + + Constructs a new uniform discrete distribution. + + + + The integer value where the distribution starts, also + known as a. Default value is 0. + + The integer value where the distribution ends, also + known as b. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value k will occur. + + + + The probability of k occurring + in the current distribution. + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of k + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a random sample within the given symbol probabilities. + + + The probabilities for the discrete symbols. + The number of samples to generate. + + A random sample within the given probabilities. + + + + + Returns a random symbol within the given symbol probabilities. + + + The probabilities for the discrete symbols. + + A random symbol within the given probabilities. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the probability value associated with the symbol . + + + The symbol's index. + + The probability of the given symbol. + + + + + Gets the integer value where the + discrete distribution starts. + + + + + + Gets the integer value where the + discrete distribution ends. + + + + + + Gets the number of symbols in the distribution. + + + + + + Gets the probabilities associated + with each discrete variable value. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Normal (Gaussian) distribution. + + + + + In probability theory, the normal (or Gaussian) distribution is a very + commonly occurring continuous probability distribution—a function that + tells the probability that any real observation will fall between any two + real limits or real numbers, as the curve approaches zero on either side. + Normal distributions are extremely important in statistics and are often + used in the natural and social sciences for real-valued random variables + whose distributions are not known. + + The normal distribution is immensely useful because of the central limit + theorem, which states that, under mild conditions, the mean of many random + variables independently drawn from the same distribution is distributed + approximately normally, irrespective of the form of the original distribution: + physical quantities that are expected to be the sum of many independent processes + (such as measurement errors) often have a distribution very close to the normal. + Moreover, many results and methods (such as propagation of uncertainty and least + squares parameter fitting) can be derived analytically in explicit form when the + relevant variables are normally distributed. + + The Gaussian distribution is sometimes informally called the bell curve. However, + many other distributions are bell-shaped (such as Cauchy's, Student's, and logistic). + The terms Gaussian function and Gaussian bell curve are also ambiguous because they + sometimes refer to multiples of the normal distribution that cannot be directly + interpreted in terms of probabilities. + + + The Gaussian is the most widely used distribution for continuous + variables. In the case of a single variable, it is governed by + two parameters, the mean and the variance. + + + References: + + + Wikipedia, The Free Encyclopedia. Normal distribution. Available on: + https://en.wikipedia.org/wiki/Normal_distribution + + + + + + This examples shows how to create a Normal distribution, + compute some of its properties and generate a number of + random samples from it. + + + // Create a normal distribution with mean 2 and sigma 3 + var normal = new NormalDistribution(mean: 2, stdDev: 3); + + // In a normal distribution, the median and + // the mode coincide with the mean, so + + double mean = normal.Mean; // 2 + double mode = normal.Mode; // 2 + double median = normal.Median; // 2 + + // The variance is the square of the standard deviation + double variance = normal.Variance; // 3² = 9 + + // Let's check what is the cumulative probability of + // a value less than 3 occurring in this distribution: + double cdf = normal.DistributionFunction(3); // 0.63055 + + // Finally, let's generate 1000 samples from this distribution + // and check if they have the specified mean and standard devs + + double[] samples = normal.Generate(1000); + + double sampleMean = samples.Mean(); // 1.92 + double sampleDev = samples.StandardDeviation(); // 3.00 + + + + This example further demonstrates how to compute + derived measures from a Normal distribution: + + + var normal = new NormalDistribution(mean: 4, stdDev: 4.2); + + double mean = normal.Mean; // 4.0 + double median = normal.Median; // 4.0 + double mode = normal.Mode; // 4.0 + double var = normal.Variance; // 17.64 + + double cdf = normal.DistributionFunction(x: 1.4); // 0.26794249453351904 + double pdf = normal.ProbabilityDensityFunction(x: 1.4); // 0.078423391448155175 + double lpdf = normal.LogProbabilityDensityFunction(x: 1.4); // -2.5456330358182586 + + double ccdf = normal.ComplementaryDistributionFunction(x: 1.4); // 0.732057505466481 + double icdf = normal.InverseDistributionFunction(p: cdf); // 1.4 + + double hf = normal.HazardFunction(x: 1.4); // 0.10712736480747137 + double chf = normal.CumulativeHazardFunction(x: 1.4); // 0.31189620872601354 + + string str = normal.ToString(CultureInfo.InvariantCulture); // N(x; μ = 4, σ² = 17.64) + + + + + + + + + + + + + Constructs a Normal (Gaussian) distribution + with zero mean and unit standard deviation. + + + + + + Constructs a Normal (Gaussian) distribution + with given mean and unit standard deviation. + + + The distribution's mean value μ (mu). + + + + + Constructs a Normal (Gaussian) distribution + with given mean and standard deviation. + + + The distribution's mean value μ (mu). + The distribution's standard deviation σ (sigma). + + + + + Gets the cumulative distribution function (cdf) for + the this Normal distribution evaluated at point x. + + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + The calculation is computed through the relationship to the error function + as erfc(-z/sqrt(2)) / 2. + + + References: + + + Weisstein, Eric W. "Normal Distribution." From MathWorld--A Wolfram Web Resource. + Available on: http://mathworld.wolfram.com/NormalDistribution.html + + Wikipedia, The Free Encyclopedia. Normal distribution. Available on: + http://en.wikipedia.org/wiki/Normal_distribution#Cumulative_distribution_function + + + + + See . + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + The Normal distribution's ICDF is defined in terms of the + standard normal inverse cumulative + distribution function I as ICDF(p) = μ + σ * I(p). + + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + The Normal distribution's PDF is defined as + PDF(x) = c * exp((x - μ / σ)²/2). + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the Z-Score for a given value. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Converts this univariate distribution into a + 1-dimensional multivariate distribution. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + A random vector of observations drawn from this distribution. + + + + + Gets the Mean value μ (mu) for this Normal distribution. + + + + + + Gets the median for this distribution. + + + + The normal distribution's median value + equals its value μ. + + + + The distribution's median value. + + + + + + Gets the Variance σ² (sigma-squared), which is the square + of the standard deviation σ for this Normal distribution. + + + + + + Gets the Standard Deviation σ (sigma), which is the + square root of the variance for this Normal distribution. + + + + + + Gets the mode for this distribution. + + + + The normal distribution's mode value + equals its value μ. + + + + The distribution's mode value. + + + + + + Gets the skewness for this distribution. In + the Normal distribution, this is always 0. + + + + + + Gets the excess kurtosis for this distribution. + In the Normal distribution, this is always 0. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Entropy for this Normal distribution. + + + + + + Gets the Standard Gaussian Distribution, with zero mean and unit variance. + + + + + + Poisson probability distribution. + + + + The Poisson distribution is a discrete probability distribution that + expresses the probability of a number of events occurring in a fixed + period of time if these events occur with a known average rate and + independently of the time since the last event. + + + References: + + + Wikipedia, The Free Encyclopedia. Poisson distribution. Available on: + http://en.wikipedia.org/wiki/Poisson_distribution + + + + + + The following example shows how to instantiate a new Poisson distribution + with a given rate λ and how to compute its measures and associated functions. + + + // Create a new Poisson distribution with + var dist = new PoissonDistribution(lambda: 4.2); + + // Common measures + double mean = dist.Mean; // 4.2 + double median = dist.Median; // 4.0 + double var = dist.Variance; // 4.2 + + // Cumulative distribution functions + double cdf1 = dist.DistributionFunction(k: 2); // 0.21023798702309743 + double cdf2 = dist.DistributionFunction(k: 4); // 0.58982702131057763 + double cdf3 = dist.DistributionFunction(k: 7); // 0.93605666027257894 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.78976201297690252 + + // Probability mass functions + double pmf1 = dist.ProbabilityMassFunction(k: 4); // 0.19442365170822165 + double pmf2 = dist.ProbabilityMassFunction(k: 5); // 0.1633158674349062 + double pmf3 = dist.ProbabilityMassFunction(k: 6); // 0.11432110720443435 + double lpmf = dist.LogProbabilityMassFunction(k: 2); // -2.0229781299813 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: cdf1); // 2 + int icdf2 = dist.InverseDistributionFunction(p: cdf2); // 4 + int icdf3 = dist.InverseDistributionFunction(p: cdf3); // 7 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 0.47400404660843515 + double chf = dist.CumulativeHazardFunction(x: 4); // 0.89117630901575073 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Poisson(x; λ = 4.2)" + + + + This example shows hows to call the distribution function + to compute different types of probabilities. + + + // Create a new Poisson distribution + var dist = new PoissonDistribution(lambda: 4.2); + + // P(X = 1) = 0.0629814226460064 + double equal = dist.ProbabilityMassFunction(k: 1); + + // P(X < 1) = 0.0149955768204777 + double less = dist.DistributionFunction(k: 1, inclusive: false); + + // P(X ≤ 1) = 0.0779769994664841 + double lessThanOrEqual = dist.DistributionFunction(k: 1, inclusive: true); + + // P(X > 1) = 0.922023000533516 + double greater = dist.ComplementaryDistributionFunction(k: 1); + + // P(X ≥ 1) = 0.985004423179522 + double greaterThanOrEqual = dist.ComplementaryDistributionFunction(k: 1, inclusive: true); + + + + + + + Creates a new Poisson distribution with λ = 1. + + + + + + Creates a new Poisson distribution with the given λ (lambda). + + + The Poisson's λ (lambda) parameter. Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The logarithm of the probability of k + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + The observation which most likely generated . + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + In Poisson's distribution, the Inverse CDF can be computed using + the inverse Gamma function Γ'(a, x) + as + icdf(p) = Γ'(λ, 1 - p) + . + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the Poisson's parameter λ (lambda). + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the entropy for this distribution. + + + + A closed form expression for the entropy of a Poisson + distribution is unknown. This property returns an approximation + for large lambda. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the standard Poisson distribution, + with lambda (rate) equal to 1. + + + + + + von-Mises (Circular Normal) distribution. + + + + The von Mises distribution (also known as the circular normal distribution + or Tikhonov distribution) is a continuous probability distribution on the circle. + It may be thought of as a close approximation to the wrapped normal distribution, + which is the circular analogue of the normal distribution. + + The wrapped normal distribution describes the distribution of an angle that + is the result of the addition of many small independent angular deviations, such as + target sensing, or grain orientation in a granular material. The von Mises distribution + is more mathematically tractable than the wrapped normal distribution and is the + preferred distribution for many applications. + + + References: + + + Wikipedia, The Free Encyclopedia. Von-Mises distribution. Available on: + http://en.wikipedia.org/wiki/Von_Mises_distribution + + Suvrit Sra, "A short note on parameter approximation for von Mises-Fisher distributions: + and a fast implementation of $I_s(x)$". (revision of Apr. 2009). Computational Statistics (2011). + Available on: http://www.kyb.mpg.de/publications/attachments/vmfnote_7045%5B0%5D.pdf + + Zheng Sun. M.Sc. Comparing measures of fit for circular distributions. Master thesis, 2006. + Available on: https://dspace.library.uvic.ca:8443/bitstream/handle/1828/2698/zhengsun_master_thesis.pdf + + + + + + // Create a new von-Mises distribution with μ = 0.42 and κ = 1.2 + var vonMises = new VonMisesDistribution(mean: 0.42, concentration: 1.2); + + // Common measures + double mean = vonMises.Mean; // 0.42 + double median = vonMises.Median; // 0.42 + double var = vonMises.Variance; // 0.48721760532782921 + + // Cumulative distribution functions + double cdf = vonMises.DistributionFunction(x: 1.4); // 0.81326928491589345 + double ccdf = vonMises.ComplementaryDistributionFunction(x: 1.4); // 0.18673071508410655 + double icdf = vonMises.InverseDistributionFunction(p: cdf); // 1.3999999637927665 + + // Probability density functions + double pdf = vonMises.ProbabilityDensityFunction(x: 1.4); // 0.2228112141141676 + double lpdf = vonMises.LogProbabilityDensityFunction(x: 1.4); // -1.5014304395467863 + + // Hazard (failure rate) functions + double hf = vonMises.HazardFunction(x: 1.4); // 1.1932220899695576 + double chf = vonMises.CumulativeHazardFunction(x: 1.4); // 1.6780877262500649 + + // String representation + string str = vonMises.ToString(CultureInfo.InvariantCulture); // VonMises(x; μ = 0.42, κ = 1.2) + + + + + + + + + Constructs a von-Mises distribution with zero mean. + + + The concentration value κ (kappa). + + + + + Constructs a von-Mises distribution. + + + The mean value μ (mu). + The concentration value κ (kappa). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new circular uniform distribution by creating a + new with zero kappa. + + + The mean value μ (mu). + + + A with zero kappa, which + is equivalent to creating an uniform circular distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Estimates a new von-Mises distribution from a given set of angles. + + + + + + Estimates a new von-Mises distribution from a given set of angles. + + + + + + Estimates a new von-Mises distribution from a given set of angles. + + + + + + von-Mises cumulative distribution function. + + + + This method implements the Von-Mises CDF calculation code + as given by Geoffrey Hill on his original FORTRAN code and + shared under the GNU LGPL license. + + + References: + + Geoffrey Hill, ACM TOMS Algorithm 518, + Incomplete Bessel Function I0: The von Mises Distribution, + ACM Transactions on Mathematical Software, Volume 3, Number 3, + September 1977, pages 279-284. + + + + The point where to calculate the CDF. + The location parameter μ (mu). + The concentration parameter κ (kappa). + + The value of the von-Mises CDF at point . + + + + + Gets the mean value μ (mu) for this distribution. + + + + + + Gets the median value μ (mu) for this distribution. + + + + + + Gets the mode value μ (mu) for this distribution. + + + + + + Gets the concentration κ (kappa) for this distribution. + + + + + + Gets the variance for this distribution. + + + + The von-Mises Variance is defined in terms of the + Bessel function of the first + kind In(x) as var = 1 - I(1, κ) / I(0, κ) + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Weibull distribution. + + + + + In probability theory and statistics, the Weibull distribution is a + continuous probability distribution. It is named after Waloddi Weibull, + who described it in detail in 1951, although it was first identified by + Fréchet (1927) and first applied by Rosin and Rammler (1933) to describe a + particle size distribution. + + + The Weibull distribution is related to a number of other probability distributions; + in particular, it interpolates between the + exponential distribution (for k = 1) and the + Rayleigh distribution (when k = 2). + + + If the quantity x is a "time-to-failure", the Weibull distribution gives a + distribution for which the failure rate is proportional to a power of time. + The shape parameter, k, is that power plus one, and so this parameter can be + interpreted directly as follows: + + + + A value of k < 1 indicates that the failure rate decreases over time. This + happens if there is significant "infant mortality", or defective items failing + early and the failure rate decreasing over time as the defective items are + weeded out of the population. + + A value of k = 1 indicates that the failure rate is constant over time. This + might suggest random external events are causing mortality, or failure. + + A value of k > 1 indicates that the failure rate increases with time. This + happens if there is an "aging" process, or parts that are more likely to fail + as time goes on. + + + In the field of materials science, the shape parameter k of a distribution + of strengths is known as the Weibull modulus. + + + References: + + + Wikipedia, The Free Encyclopedia. Weibull distribution. Available on: + http://en.wikipedia.org/wiki/Weibull_distribution + + + + + + // Create a new Weibull distribution with λ = 0.42 and k = 1.2 + var weilbull = new WeibullDistribution(scale: 0.42, shape: 1.2); + + // Common measures + double mean = weilbull.Mean; // 0.39507546046784414 + double median = weilbull.Median; // 0.30945951550913292 + double var = weilbull.Variance; // 0.10932249666369542 + double mode = weilbull.Mode; // 0.094360430821809421 + + // Cumulative distribution functions + double cdf = weilbull.DistributionFunction(x: 1.4); // 0.98560487188700052 + double pdf = weilbull.ProbabilityDensityFunction(x: 1.4); // 0.052326687031379278 + double lpdf = weilbull.LogProbabilityDensityFunction(x: 1.4); // -2.9502487697674415 + + // Probability density functions + double ccdf = weilbull.ComplementaryDistributionFunction(x: 1.4); // 0.22369885565908001 + double icdf = weilbull.InverseDistributionFunction(p: cdf); // 1.400000001051205 + + // Hazard (failure rate) functions + double hf = weilbull.HazardFunction(x: 1.4); // 1.1093328057258516 + double chf = weilbull.CumulativeHazardFunction(x: 1.4); // 1.4974545260150962 + + // String representation + string str = weilbull.ToString(CultureInfo.InvariantCulture); // Weibull(x; λ = 0.42, k = 1.2) + + + + + + + Initializes a new instance of the class. + + + The scale parameter λ (lambda). + The shape parameter k. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + + + Gets the inverse of the . + The inverse complementary distribution function is also known as the + inverse survival Function. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Weibull distribution with the given parameters. + + + The scale parameter lambda. + The shape parameter k. + The number of samples to generate. + + An array of double values sampled from the specified Weibull distribution. + + + + + Generates a random observation from the + Weibull distribution with the given parameters. + + + The scale parameter lambda. + The shape parameter k. + + A random double value sampled from the specified Weibull distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Base abstract class for the Data Table preprocessing filters. + + The column options type. + + + + + Sample processing filter interface. + + + The interface defines the set of methods which should be + provided by all table processing filters. Methods of this interface should + keep the source table unchanged and return the result of data processing + filter as new data table. + + + + + Applies the filter to a . + + + Source table to apply filter to. + + Returns filter's result obtained by applying the filter to + the source table. + + The method keeps the source table unchanged and returns the + the result of the table processing filter as new data table. + + + + + Creates a new DataTable Filter Base. + + + + + + Applies the Filter to a . + + + The source . + The name of the columns that should be processed. + + The processed . + + + + + Applies the Filter to a . + + + The source . + + The processed . + + + + + Processes the current filter. + + + + + + Gets or sets whether this filter is active. An inactive + filter will repass the input table as output unchanged. + + + + + + Gets the collection of filter options. + + + + + + Gets options associated with a given variable (data column). + + + The name of the variable. + + + + + Gets options associated with a given variable (data column). + + + The column's index for the variable. + + + + + Column options for filter which have per-column settings. + + + + + + Constructs the base class for Column Options. + + + Column's name. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets or sets the name of the column that the options will apply to. + + + + + + Gets or sets a user-determined object associated with this column. + + + + + + Column option collection. + + + + + + Extracts the key from the specified column options. + + + + + + Adds a new column options definition to the collection. + + + The column options to be added. + + The added column options. + + + + + Gets the associated options for the given column name. + + + The name of the column whose options should be retrieved. + The retrieved options. + + True if the options was contained in the collection; false otherwise. + + + + + Data processing interface for in-place filters. + + + + + + Applies the filter to a , + modifying the table in place. + + + Source table to apply filter to. + + The method modifies the source table in place. + + + + + Indicates that a column filter supports automatic initialization. + + + + + + Auto detects the column options by analyzing a given . + + + The column to analyze. + + + + + Indicates that a filter supports automatic initialization. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Branching filter. + + + + The branching filter allows for different filter sequences to be + applied to different subsets of a data table. For instance, consider + a data table whose first column, "IsStudent", is an indicator variable: + a value of 1 indicates the row contains information about a student, and + a value of 0 indicates the row contains information about someone who is + not currently a student. Using the branching filter, it becomes possible + to apply a different set of filters for the rows that represent students + and different filters for rows that represent non-students. + + + + + Suppose we have the following data table. In this table, each row represents + a person, an indicator variable tell us whether this person is a smoker, and + the last column indicates the age of each person. Let's say we would like to + convert the age of smokers to a scale from -1 to 0, and the age of non-smokers + to a scale from 0 to 1. + + + object[,] data = + { + { "Id", "IsSmoker", "Age" }, + { 0, 1, 10 }, + { 1, 1, 15 }, + { 2, 0, 40 }, + { 3, 1, 20 }, + { 4, 0, 70 }, + { 5, 0, 55 }, + }; + + // Create a DataTable from data + DataTable input = data.ToTable(); + + // We will create two filters, one to operate on the smoking + // branch of the data, and other in the non-smoking subjects. + // + var smoker = new LinearScaling(); + var common = new LinearScaling(); + + // for the smokers, we will convert the age to [-1; 0] + smoker.Columns.Add(new LinearScaling.Options("Age") + { + SourceRange = new DoubleRange(10, 20), + OutputRange = new DoubleRange(-1, 0) + }); + + // for non-smokers, we will convert the age to [0; +1] + common.Columns.Add(new LinearScaling.Options("Age") + { + SourceRange = new DoubleRange(40, 70), + OutputRange = new DoubleRange(0, 1) + }); + + // We now configure and create the branch filter + var settings = new Branching.Options("IsSmoker"); + settings.Filters.Add(1, smoker); + settings.Filters.Add(0, common); + + Branching branching = new Branching(settings); + + + // Finally, we can process the input data: + DataTable actual = branching.Apply(input); + + // As result, the generated table will + // then contain the following entries: + + // { "Id", "IsSmoker", "Age" }, + // { 0, 1, -1.0 }, + // { 1, 1, -0.5 }, + // { 2, 0, 0.0 }, + // { 3, 1, 0.0 }, + // { 4, 0, 1.0 }, + // { 5, 0, 0.5 }, + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The columns to use as filters. + + + + + Initializes a new instance of the class. + + + The columns to use as filters. + + + + + Processes the current filter. + + + + + + Column options for the branching filter. + + + + + + Initializes a new instance of the class. + + + The column name. + + + + + Initializes a new instance of the class. + + + + + + Auto detects the column options by analyzing a given . + + + The column to analyze. + + + + + Gets the collection of filters associated with a given label value. + + + + + + Identification filter. + + + + + The identification filter adds a new column to the data containing an + unique id for each of the samples (rows) in the data table (or matrix). + + + + + + Creates a new identification filter. + + + + + + Creates a new identification filter. + + + + + + Applies the filter to the DataTable. + + + + + + Gets or sets the name of the column used + to store row indices. + + + + + + Randomization filter. + + + + + + Initializes a new instance of the class. + + + A fixed random seed value to generate fixed + permutations. If not specified, generates true random permutations. + + + + + Initializes a new instance of the class. + + + + + + Applies the filter to the current data. + + + + + + Gets or sets the fixed random seed to + be used in randomization, if any. + + + The random seed, for fixed permutations; + or null, for true random permutations. + + + + + Imputation filter for filling missing values. + + + + + + Creates a new Imputation filter. + + + + + + Creates a new Imputation filter. + + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Strategies for missing value imputations. + + + + + + Uses a fixed-value to replace missing fields. + + + + + + Uses the mean value to replace missing fields. + + + + + Uses the mode value to replace missing fields. + + + + + Uses the median value to replace missing fields. + + + + + Options for the imputation filter. + + + + + + Constructs a new column option + for the Imputation filter. + + + + + + Constructs a new column option + for the Imputation filter. + + + + + + Auto detects the column options by analyzing + a given . + + + The column to analyze. + + + + + Gets or sets the imputation strategy + to use with this column. + + + + + Missing value indicator. + + + + + + Value to replace missing values with. + + + + + + Grouping filter. + + + + + + Creates a new Grouping filter with equal group + proportions and default Group indicator column. + + + + + + Creates a new Grouping filter. + + + + + + Processes the current filter. + + + + + + Gets or sets a value indicating whether the group labels + are locked and should not be randomly re-selected. + + + true to lock groups; otherwise, false. + + + + + Gets or sets the group index labels. + + + The group indices. + + + + + Gets or sets the two-group proportions. + + + + + + Gets or sets the name of the indicator + column which will be used to distinguish + samples from either group. + + + + + + Options for the grouping filter. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object. + + + + + + Gets or sets the labels used for each class contained in the column. + + + + + + Elimination filter. + + + + + + Creates a elimination filter to remove + rows containing missing values. + + + + + + Creates a elimination filter to remove + rows containing missing values in the + specified columns. + + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Options for the discretization filter. + + + + + + Constructs a new column option + for the Elimination filter. + + + + + + Constructs a new column option + for the Elimination filter. + + + + + + Gets the value indicator of a missing field. + Default is . + + + + + + Time-series windowing filter. + + + + This filter splits a time-series into overlapping time + windows, with optional associated output values. This + filter can be used to create time-window databases for + time-series regression and latent-state identification. + + + + + + Creates a new time segmentation filter. + + + + + + Creates a new time segmentation filter. + + + The size of the time windows to be extracted. + + + + + Creates a new time segmentation filter. + + + The size of the time windows to be extracted. + The number of elements between two taken windows. If set to + the same number of , the windows will not overlap. + Default is 1. + + + + + Processes the current filter. + + + + + + Applies the filter to a time series. + + + The source time series. + + The time-windows extracted from the time-series. + + + + + Applies the filter to a time series. + + + The source time series. + The output associated with each time-window. + + The time-windows extracted from the time-series. + + + + + Gets or sets the length of the time-windows + that should be extracted from the sequences. + + + + + + Gets or sets the step size that should be used + when extracting windows. If set to the same number + as the , windows will not + overlap. Default is 1. + + + + + + Options for segmenting a time-series contained inside a column. + + + + + + Constructs a new Options object. + + + + + + Class equalization filter. + + + Currently this class does only work for a single + column and only for the binary case (two classes). + + + + + + Creates a new class equalization filter. + + + + + + Creates a new classes equalization filter. + + + + + + Creates a new classes equalization filter. + + + + + + Creates a new classes equalization filter. + + + + + + Processes the current filter. + + + + + + Options for the stratification filter. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object. + + + + + + Auto detects the column options by analyzing a given . + + + The column to analyze. + + + + + Gets or sets the labels used for each class contained in the column. + + + + + + Codification type. + + + + + + The variable should be codified as an ordinal variable, + meaning they will be translated to symbols 0, 1, 2, ... n, + where n is the total number of distinct symbols this variable + can assume. + + + + + + This variable should be codified as a 1-of-n vector by creating + one column for each symbol this variable can assume, and marking + the column corresponding to the current symbol as 1 and the rest + as zero. + + + + + + This variable should be codified as a 1-of-(n-1) vector by creating + one column for each symbol this variable can assume, except the + first. This is the same as as , + but the first symbol is handled as a baseline (and should be indicated by + a zero in every column). + + + + + + Codification Filter class. + + + + + The codification filter performs an integer codification of classes in + given in a string form. An unique integer identifier will be assigned + for each of the string classes. + + + + + When handling data tables, often there will be cases in which a single + table contains both numerical variables and categorical data in the form + of text labels. Since most machine learning and statistics algorithms + expect their data to be numeric, the codification filter can be used + to create mappings between text labels and discrete symbols. + + + // Show the start data + DataGridBox.Show(table); + + + + + + // Create a new data projection (column) filter + var filter = new Codification(table, "Category"); + + // Apply the filter and get the result + DataTable result = filter.Apply(table); + + // Show it + DataGridBox.Show(result); + + + + + + + The following more elaborated examples show how to + use the filter without + necessarily handling + DataTables. + + + // Suppose we have a data table relating the age of + // a person and its categorical classification, as + // in "child", "adult" or "elder". + + // The Codification filter is able to extract those + // string labels and transform them into discrete + // symbols, assigning integer labels to each of them + // such as "child" = 0, "adult" = 1, and "elder" = 3. + + // Create the aforementioned sample table + DataTable table = new DataTable("Sample data"); + table.Columns.Add("Age", typeof(int)); + table.Columns.Add("Label", typeof(string)); + + // age label + table.Rows.Add(10, "child"); + table.Rows.Add(07, "child"); + table.Rows.Add(04, "child"); + table.Rows.Add(21, "adult"); + table.Rows.Add(27, "adult"); + table.Rows.Add(12, "child"); + table.Rows.Add(79, "elder"); + table.Rows.Add(40, "adult"); + table.Rows.Add(30, "adult"); + + + // Now, let's say we need to translate those text labels + // into integer symbols. Let's use a Codification filter: + + Codification codebook = new Codification(table); + + + // After that, we can use the codebook to "translate" + // the text labels into discrete symbols, such as: + + int a = codebook.Translate("Label", "child"); // returns 0 + int b = codebook.Translate("Label", "adult"); // returns 1 + int c = codebook.Translate("Label", "elder"); // returns 2 + + // We can also do the reverse: + string labela = codebook.Translate("Label", 0); // returns "child" + string labelb = codebook.Translate("Label", 1); // returns "adult" + string labelc = codebook.Translate("Label", 2); // returns "elder" + + + + After we have created the codebook, we can use it to feed data with + categorical variables to method which would otherwise not know how + to handle text labels data. Continuing with our example, the next + code section shows how to convert an entire data table into a numerical + matrix. + + + // We can process an entire data table at once: + DataTable result = codebook.Apply(table); + + // The resulting table can be transformed to jagged array: + double[][] matrix = Matrix.ToArray(result); + + // and the resulting matrix will be given by + // new double[][] + // { + // new double[] { 10, 0 }, + // new double[] { 7, 0 }, + // new double[] { 4, 0 }, + // new double[] { 21, 1 }, + // new double[] { 27, 1 }, + // new double[] { 12, 0 }, + // new double[] { 79, 2 }, + // new double[] { 40, 1 }, + // new double[] { 30, 1 } + // }; + + // PS: the string representation for the matrix above can be obtained by calling + string str = matrix.ToString(CSharpJaggedMatrixFormatProvider.InvariantCulture); + + + + Finally, by expressing our data in terms of a simple numerical + matrix we will be able to feed it to any machine learning algorithm. + The following code section shows how to create a + linear multi-class Support Vector Machine to classify ages into any + of the previously considered text labels ("child", "adult" or "elder"). + + + // Now we will be able to feed this matrix to any machine learning + // algorithm without having to worry about text labels in our data: + + // Use the first column as input and the second column a output: + + double[][] inputs = matrix.GetColumns(0); // Age column + int[] outputs = matrix.GetColumn(1).ToInt32(); // Label column + + + // Create a multi-class SVM for one input (Age) and three classes (Label) + var machine = new MulticlassSupportVectorMachine(inputs: 1, classes: 3); + + // Create a Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // error will be zero + + + // After we have learned the machine, we can use it to classify + // new data points, and use the codebook to translate the machine + // outputs to the original text labels: + + string result1 = codebook.Translate("Label", machine.Compute(10)); // child + string result2 = codebook.Translate("Label", machine.Compute(40)); // adult + string result3 = codebook.Translate("Label", machine.Compute(70)); // elder + + + + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Translates a value of a given variable + into its integer (codeword) representation. + + + The name of the variable's data column. + The value to be translated. + + An integer which uniquely identifies the given value + for the given variable. + + + + + Translates an array of values into their + integer representation, assuming values + are given in original order of columns. + + + The values to be translated. + + An array of integers in which each value + uniquely identifies the given value for each of + the variables. + + + + + Translates an array of values into their + integer representation, assuming values + are given in original order of columns. + + + A containing the values to be translated. + The columns of the containing the + values to be translated. + + An array of integers in which each value + uniquely identifies the given value for each of + the variables. + + + + + Translates a value of the given variables + into their integer (codeword) representation. + + + The names of the variable's data column. + The values to be translated. + + An array of integers in which each integer + uniquely identifies the given value for the given + variables. + + + + + Translates a value of the given variables + into their integer (codeword) representation. + + + The variable name. + The values to be translated. + + An array of integers in which each integer + uniquely identifies the given value for the given + variables. + + + + + Translates a value of the given variables + into their integer (codeword) representation. + + + The variable name. + The values to be translated. + + An array of integers in which each integer + uniquely identifies the given value for the given + variables. + + + + + Translates an integer (codeword) representation of + the value of a given variable into its original + value. + + + The variable name. + The codeword to be translated. + + The original meaning of the given codeword. + + + + + Translates an integer (codeword) representation of + the value of a given variable into its original + value. + + + The name of the variable's data column. + The codewords to be translated. + + The original meaning of the given codeword. + + + + + Translates the integer (codeword) representations of + the values of the given variables into their original + values. + + + The name of the variables' columns. + The codewords to be translated. + + The original meaning of the given codewords. + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a set of string labels. + + + The variable name. + A set of values that this variable can assume. + + + + + Auto detects the filter options by analyzing a set of string labels. + + + The variable names. + A set of values that those variable can assume. + The first element of the array is assumed to be related to the first + column name parameter. + + + + + Options for processing a column. + + + + + + Forces the given key to have a specific symbol value. + + + The key. + The value that should be associated with this key. + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + The initial mapping for this column. + + + + + Constructs a new Options object. + + + + + + Gets or sets the label mapping for translating + integer labels to the original string labels. + + + + + + Gets the number of symbols used to code this variable. + + + + + + Gets the codification type that should be used for this variable. + + + + + + Gets the values associated with each symbol, in the order of the symbols. + + + + + + Value discretization preprocessing filter. + + + + This filter converts double or decimal values with an fractional + part to the nearest possible integer according to a given threshold + and a rounding rule. + + + + // Show the start data + DataGridBox.Show(table); + + + + + + // Create a new data projection (column) filter + var filter = new Discretization("Cost (M)"); + + // Apply the filter and get the result + DataTable result = filter.Apply(table); + + // Show it + DataGridBox.Show(result); + + + + + + + + + Creates a new Discretization filter. + + + + + + Creates a new Discretization filter. + + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Options for the discretization filter. + + + + + + Constructs a new Options class for the discretization filter. + + + + + + Constructs a new Options object. + + + + + + Gets or sets the threshold for the discretization filter. + + + + + + Gets or sets whether the discretization threshold is symmetric. + + + + + If a symmetric threshold of 0.4 is used, for example, a real value of + 0.5 will be rounded to 1.0 and a real value of -0.5 will be rounded to + -1.0. + + If a non-symmetric threshold of 0.4 is used, a real value of 0.5 + will be rounded towards 1.0, but a real value of -0.5 will be rounded + to 0.0 (because |-0.5| is higher than the threshold of 0.4). + + + + + + Sequence of table processing filters. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Sequence of filters to apply. + + + + + Applies the sequence of filters to a given table. + + + + + Data normalization preprocessing filter. + + + + The normalization filter is able to transform numerical data into + Z-Scores, subtracting the mean for each variable and dividing by + their standard deviation. The filter is able to distinguish + numerical columns automatically, leaving other columns unaffected. + It is also possible to control which columns should be processed + by the filter. + + + + Suppose we have a data table relating the age of a person and its + categorical classification, as in "child", "adult" or "elder". + The normalization filter can be used to transform the "Age" column + into Z-scores, as shown below: + + + // Create the aforementioned sample table + DataTable table = new DataTable("Sample data"); + table.Columns.Add("Age", typeof(double)); + table.Columns.Add("Label", typeof(string)); + + // age label + table.Rows.Add(10, "child"); + table.Rows.Add(07, "child"); + table.Rows.Add(04, "child"); + table.Rows.Add(21, "adult"); + table.Rows.Add(27, "adult"); + table.Rows.Add(12, "child"); + table.Rows.Add(79, "elder"); + table.Rows.Add(40, "adult"); + table.Rows.Add(30, "adult"); + + // The filter will ignore non-real (continuous) data + Normalization normalization = new Normalization(table); + + double mean = normalization["Age"].Mean; // 25.55 + double sdev = normalization["Age"].StandardDeviation; // 23.29 + + // Now we can process another table at once: + DataTable result = normalization.Apply(table); + + // The result will be a table with the same columns, but + // in which any column named "Age" will have been normalized + // using the previously detected mean and standard deviation: + + DataGridBox.Show(result); + + + + The resulting data is shown below: + + + + + + + + + + + Creates a new data normalization filter. + + + + + + Creates a new data normalization filter. + + + + + + Creates a new data normalization filter. + + + + + + Processes the current filter. + + + + + + Applies the Filter to a . + + + The source . + + The processed . + + + + + Applies the Filter to a . + + + The source . + + The processed . + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a given matrix. + + + + + + Options for normalizing a column. + + + + + + Constructs a new Options object. + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + The mean value for normalization. + The standard deviation value for standardization. + + + + + Gets or sets the mean of the data contained in the column. + + + + + Gets or sets the standard deviation of the data contained in the column. + + + + + Gets or sets if the column's data should be standardized to Z-Scores. + + + + + Principal component projection filter. + + + + + + Creates a new Principal Component Projection filter. + + + + + + Creates a new data normalization filter. + + + + + + Processes the filter. + + + The data. + + + + + Auto detects the filter options by analyzing a given . + + + + + + Gets or sets the analysis associated with the filter. + + + + + + Options for normalizing a column. + + + + + + Initializes a new instance of the class. + + + Name of the column. + + + + + Relational-algebra projection filter. + + + + This filter is able to selectively remove columns from tables, and keep + only the columns of interest. + + + + + // Show the start data + DataGridBox.Show(table); + + + + + + // Create a new data projection (column) filter + var filter = new Projection("Floors", "Finished"); + + // Apply the filter and get the result + DataTable result = filter.Apply(table); + + // Show it + DataGridBox.Show(result); + + + + + + + + + + Creates a new projection filter. + + + + + + Creates a new projection filter. + + + + + + Creates a new projection filter. + + + + + + Applies the filter to the DataTable. + + + + + + List of columns to keep in the projection. + + + + + + Linear Scaling Filter + + + + + + Creates a new Linear Scaling Filter. + + + + + + Creates a new Linear Scaling Filter. + + + + + + Creates a new Linear Scaling Filter. + + + + + + Creates a new Linear Scaling Filter. + + + + + + Applies the filter to the DataTable. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Options for the Linear Scaling filter. + + + + + + Creates a new column options. + + + + + + Constructs a new Options object. + + + + + + Range of the input values + + + + + + Target range of the output values after scaling. + + + + + + Relational-algebra selection filter. + + + + + + Constructs a new Selection Filter. + + + The filtering criteria. + The desired sort order. + + + + + Constructs a new Selection Filter. + + + The filtering criteria. + + + + + Constructs a new Selection Filter. + + + + + + Applies the filter to the current data. + + + + + + Gets or sets the eSQL filter expression for the filter. + + + + + + Gets or sets the ordering to apply for the filter. + + + + + + Calculates the prevalence of a class for each variable. + + + An array of counts detailing the occurrence of the first class. + An array of counts detailing the occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Calculates the prevalence of a class. + + + A matrix containing counted, grouped data. + The index for the column which contains counts for occurrence of the first class. + The index for the column which contains counts for occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Groups the occurrences contained in data matrix of binary (dichotomous) data. + + + A data matrix containing at least a column of binary data. + Index of the column which contains the group label name. + Index of the column which contains the binary [0,1] data. + + + A matrix containing the group label in the first column, the number of occurrences of the first class + in the second column and the number of occurrences of the second class in the third column. + + + + + + Divides values into groups given a vector + containing the group labels for every value. + + + The type of the values. + The values to be separated into groups. + + A vector containing the class label associated with each of the + values. The labels must begin on 0 and its maximum value should + be the number of groups - 1. + + The original values divided into groups. + + + + + Divides values into groups given a vector + containing the group labels for every value. + + + The type of the values. + The values to be separated into groups. + + A vector containing the class label associated with each of the + values. The labels must begin on 0 and its maximum value should + be the number of groups - 1. + The number of groups. + + The original values divided into groups. + + + + + Extends a grouped data into a full observation matrix. + + + The group labels. + + An array containing he occurrence of the positive class + for each of the groups. + + An array containing he occurrence of the negative class + for each of the groups. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The grouped data matrix. + Index of the column which contains the labels + in the grouped data matrix. + Index of the column which contains + the occurrences for the first class. + Index of the column which contains + the occurrences for the second class. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Returns a random group assignment for a sample. + + + The sample size. + The number of groups. + + + + + Returns a random group assignment for a sample + into two mutually exclusive groups. + + + The sample size. + The proportion of samples between the groups. + + + + + Returns a random group assignment for a sample, making + sure different class labels are distributed evenly among + the groups. + + + A vector containing class labels. + The number of different classes in . + The number of groups. + + + + + Additive combination of kernels. + + + + + + Base class for kernel functions. This class provides automatic + distance calculations for classes that do not provide optimized + implementations. + + + + + + Kernel space distance interface for kernel functions. + + + + + + + + Kernel function interface. + + + + + In Machine Learning and statistics, a Kernel is a function that returns + the value of the dot product between the images of the two arguments. + + k(x,y) = ‹S(x),S(y)› + + + References: + + + http://www.support-vector.net/icml-tutorial.pdf + + + + + + + The kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + Squared distance between x and y in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + + Squared distance between x and y in feature (kernel) space. + + + + + + The kernel function. + + + Vector x in input space. + Vector y in input space. + + + Dot product in feature (kernel) space. + + + + + + Constructs a new additive kernel. + + + Kernels to combine. + + + + + Constructs a new additive kernel. + + + Kernels to combine. + + + Weight values for each of the kernels. + Default is to assign equal weights. + + + + + Additive Kernel Combination function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gets the combination of kernels to use. + + + + + + Gets the weight array to use in the weighted kernel sum. + + + + + + ANOVA (ANalysis Of VAriance) Kernel. + + + + The ANOVA kernel is a graph kernel, which can be + computed using dynamic programming tables. + + References: + - http://www.cse.ohio-state.edu/mlss09/mlss09_talks/1.june-MON/jst_tutorial.pdf + + + + + + Constructs a new ANOVA Kernel. + + + Length of the input vector. + Length of the subsequences for the ANOVA decomposition. + + + + + ANOVA Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Interface for Radial Basis Function kernels. + + + + + A radial basis function (RBF) is a real-valued function whose value depends only + on the distance from the origin, so that ϕ(x) = ϕ(||x||); or alternatively + on the distance from some other point c, called a center, so that + ϕ(x,c) = ϕ(||x−c||). Any function ϕ that satisfies the property + ϕ(x) = ϕ(||x||) is a radial function. The norm is usually Euclidean distance, + although other distance functions are also possible. + + + References: + + + Wikipedia, The Free Encyclopedia. Radial basis functions. Available on: + https://en.wikipedia.org/wiki/Radial_basis_function + + + + + + + The kernel function. + + + Distance z between two vectors in input space. + + Dot product in feature (kernel) space. + + + + + Interface for kernel functions + with support for automatic parameter estimation. + + + + + + + + + Estimates kernel parameters from the data. + + + The input data. + + + + + Common interface for kernel functions that can explicitly + project input points into the kernel feature space. + + + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Bessel Kernel. + + + + The Bessel kernel is well known in the theory of function spaces + of fractional smoothness. + + + + + + Constructs a new Bessel Kernel. + + + The order for the Bessel function. + The value for sigma. + + + + + Bessel Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Bessel Kernel Function + + + Distance z between two vectors in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the order of the Bessel function. + + + + + + Gets or sets the sigma constant for this kernel. + + + + + + B-Spline Kernel. + + + + + The B-Spline kernel is defined only in the interval [−1, 1]. It is + also a member of the Radial Basis Functions family of kernels. + + References: + + + Bart Hamers, Kernel Models for Large Scale Applications. Doctoral thesis. + Available on: ftp://ftp.esat.kuleuven.ac.be/pub/SISTA/hamers/PhD_bhamers.pdf + + + + + + + + Constructs a new B-Spline Kernel. + + + + + + B-Spline Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the B-Spline order. + + + + + + Cauchy Kernel. + + + + The Cauchy kernel comes from the Cauchy distribution (Basak, 2008). It is a + long-tailed kernel and can be used to give long-range influence and sensitivity + over the high dimension space. + + + + + + Constructs a new Cauchy Kernel. + + + The value for sigma. + + + + + Cauchy Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Cauchy Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Chi-Square Kernel. + + + + The Chi-Square kernel comes from the Chi-Square distribution. + + + + + + Constructs a new Chi-Square kernel. + + + + + + Chi-Square Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Circular Kernel. + + + + The circular kernel comes from a statistics perspective. It is an example + of an isotropic stationary kernel and is positive definite in R^2. + + + + + + Constructs a new Circular Kernel. + + + Value for sigma. + + + + + Circular Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Circular Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Composite Gaussian Kernel. + + + + + + Constructs a new Gaussian Dynamic Time Warping Kernel + + + The inner kernel function of the composite kernel. + + + + + Constructs a new Gaussian Dynamic Time Warping Kernel + + + The inner kernel function of the composite kernel. + The kernel's sigma parameter. + + + + + Gaussian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Estimates kernel parameters from the data. + + + The input data. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Gets or sets the sigma² value for the kernel. When setting + sigma², gamma gets updated accordingly (gamma = 0.5/sigma²). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Pearson VII universal kernel (PUK). + + + + + + Constructs a new Pearson VII universal kernel. + + + The Pearson's omega parameter w. Default is 1. + The Pearson's sigma parameter s. Default is 1. + + + + + Constructs a new Pearson VII universal kernel. + + + + + + Pearson Universal kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Pearson Universal function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's parameter omega. Default is 1. + + + + + + Gets or sets the kernel's parameter sigma. Default is 1. + + + + + + Normalized Kernel. + + + + This kernel definition can be used to provide normalized versions + of other kernel classes, such as the . A + normalized kernel will always produce distances between -1 and 1. + + + + + + Constructs a new Cauchy Kernel. + + + The kernel function to be normalized. + + + + + Normalized Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the inner kernel function + whose results should be normalized. + + + + + + Inverse Multiquadric Kernel. + + + + The inverse multiquadric kernel is only conditionally positive definite. + + + + + + Constructs a new Inverse Multiquadric Kernel. + + + The constant term theta. + + + + + Constructs a new Inverse Multiquadric Kernel. + + + + + + Inverse Multiquadric Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Inverse Multiquadric Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's constant value. + + + + + + Normalized Polynomial Kernel. This class is equivalent to the + Normalized>Polynomial> kernel but has more efficient + implementation. + + + + + + Constructs a new Normalized Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Normalized Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + + + + + Normalized polynomial kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's polynomial degree. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Value cache for kernel function evaluations. + + + + + This class works as a least-recently-used cache for elements + computed from a the kernel (Gram) matrix. Elements which have + not been needed for some time are discarded from the cache; + while elements which are constantly requested remains cached. + + + The use of cache may speedup learning by a large factor; however + the actual speedup may vary according to the choice of cache size. + + + + + + Constructs a new . + + + The kernel function. + The inputs values. + + + + + Constructs a new . + + + The kernel function. + The inputs values. + + The size for the cache, measured in number of + elements from the set. + Default is to use all elements. + + + + + Attempts to retrieve the value of the kernel function + from the diagonal of the kernel matrix. If the value + is not available, it is immediately computed and inserted + in the cache. + + + Index of the point to compute. + + The result of the kernel function k(p[i], p[i]). + + + + + Attempts to retrieve the kernel function evaluated between point at index i + and j. If it is not cached, it will be computed and the cache will be updated. + + + The index of the first point p to compute. + The index of the second point p to compute. + + The result of the kernel function k(p[i], p[j]). + + + + + Clears the cache. + + + + + + Resets cache statistics. + + + + + + Gets the pair of indices associated with a given key. + + + The key. + + A pair of indices of indicating which + element from the Kernel matrix is associated + with the given key. + + + + + Gets the key from the given indices. + + + The index i. + The index j. + + The key associated with the given indices. + + + + + Gets a copy of the data cache. + + + A copy of the data cache. + + + + + Gets a copy of the Least Recently Used (LRU) List of + Kernel Matrix elements. Elements on the start of the + list have been used most; elements at the end are + about to be discarded from the cache. + + + The Least Recently Used list of kernel matrix elements. + + + + + Gets the size of the cache, + measured in number of samples. + + + The size of this cache. + + + + + Gets the total number of cache hits. + + + + + + Gets the total number of cache misses. + + + + + + Gets the percentage of the cache currently in use. + + + + + + Attempts to retrieve the value of the kernel function + from the diagonal of the kernel matrix. If the value + is not available, it is immediately computed and inserted + in the cache. + + + Index of the point to compute. + + The result of the kernel function k(p[i], p[i]). + + + + + Attempts to retrieve the kernel function evaluated between point at index i + and j. If it is not cached, it will be computed and the cache will be updated. + + + The index of the first point p to compute. + The index of the second point p to compute. + + The result of the kernel function k(p[i], p[j]). + + + + + Quadratic Kernel. + + + + + + Input space distance interface for kernel functions. + + + + Kernels which implement this interface can be used to solve the pre-image + problem in + Kernel Principal Component Analysis and other methods based in Multi- + Dimensional Scaling. + + + + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Squared distance between x and y in input space. + + + + + Constructs a new Quadratic kernel. + + + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Quadratic kernel. + + + + + + Quadratic kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Quadratic kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Distance between x and y in input space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + Distance between x and y in input space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + The parameter of the kernel. + + + The feature space representation of the given point. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Symmetric Triangle Kernel. + + + + + References: + + + Chaudhuri et al, A Comparative Study of Kernels for the Multi-class Support Vector + Machine, 2008. Available on: http://www.computer.org/portal/web/csdl/doi/10.1109/ICNC.2008.803 + + + + + + + Constructs a new Symmetric Triangle Kernel + + + + + + Symmetric Triangle Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Symmetric Triangle Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the gamma value for the kernel. + + + + + + Squared Sinc Kernel. + + + + + References: + + + Chaudhuri et al, A Comparative Study of Kernels for the Multi-class Support Vector + Machine, 2008. Available on: http://www.computer.org/portal/web/csdl/doi/10.1109/ICNC.2008.803 + + + + + + + Constructs a new Squared Sinc Kernel + + + + + + Squared Sine Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Squared Sine Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the gamma value for the kernel. + + + + + + Custom Kernel. + + + + + + Constructs a new Custom kernel. + + + + + + Custom kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Dirichlet Kernel. + + + + + References: + + + A Tutorial on Support Vector Machines (1998). Available on: http://www.umiacs.umd.edu/~joseph/support-vector-machines4.pdf + + + + + + + Constructs a new Dirichlet Kernel + + + + + + Dirichlet Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the dimension for the kernel. + + + + + + Dynamic Time Warping Sequence Kernel. + + + + + The Dynamic Time Warping Sequence Kernel is a sequence kernel, accepting + vector sequences of variable size as input. Despite the sequences being + variable in size, the vectors contained in such sequences should have its + size fixed and should be informed at the construction of this kernel. + + The conversion of the DTW global distance to a dot product uses a combination + of a technique known as spherical normalization and the polynomial kernel. The + degree of the polynomial kernel and the alpha for the spherical normalization + should be given at the construction of the kernel. For more information, + please see the referenced papers shown below. + + + The use of a cache is highly advisable + when using this kernel. + + + + References: + + V. Wan, J. Carmichael; Polynomial Dynamic Time Warping Kernel Support + Vector Machines for Dysarthric Speech Recognition with Sparse Training + Data. Interspeech'2005 - Eurospeech - 9th European Conference on Speech + Communication and Technology. Lisboa, 2005. + + + + + + + The following example demonstrates how to create and learn a Support Vector + Machine (SVM) to recognize sequences using the Dynamic Time Warping kernel. + + + // Suppose you have sequences of multivariate observations, and that + // those sequences could be of arbitrary length. On the other hand, + // each observation have a fixed, delimited number of dimensions. + + // In this example, we have sequences of 3-dimensional observations. + // Each sequence can have an arbitrary length, but each observation + // will always have length 3: + + double[][][] sequences = + { + new double[][] // first sequence + { + new double[] { 1, 1, 1 }, // first observation of the first sequence + new double[] { 1, 2, 1 }, // second observation of the first sequence + new double[] { 1, 4, 2 }, // third observation of the first sequence + new double[] { 2, 2, 2 }, // fourth observation of the first sequence + }, + + new double[][] // second sequence (note that this sequence has a different length) + { + new double[] { 1, 1, 1 }, // first observation of the second sequence + new double[] { 1, 5, 6 }, // second observation of the second sequence + new double[] { 2, 7, 1 }, // third observation of the second sequence + }, + + new double[][] // third sequence + { + new double[] { 8, 2, 1 }, // first observation of the third sequence + }, + + new double[][] // fourth sequence + { + new double[] { 8, 2, 5 }, // first observation of the fourth sequence + new double[] { 1, 5, 4 }, // second observation of the fourth sequence + } + }; + + // Now, we will also have different class labels associated which each + // sequence. We will assign -1 to sequences whose observations start + // with { 1, 1, 1 } and +1 to those that do not: + + int[] outputs = + { + -1,-1, // First two sequences are of class -1 (those start with {1,1,1}) + 1, 1, // Last two sequences are of class +1 (don't start with {1,1,1}) + }; + + // At this point, we will have to "flat" out the input sequences from double[][][] + // to a double[][] so they can be properly understood by the SVMs. The problem is + // that, normally, SVMs usually expect the data to be comprised of fixed-length + // input vectors and associated class labels. But in this case, we will be feeding + // them arbitrary-length sequences of input vectors and class labels associated with + // each sequence, instead of each vector. + + double[][] inputs = new double[sequences.Length][]; + for (int i = 0; i < sequences.Length; i++) + inputs[i] = Matrix.Concatenate(sequences[i]); + + + // Now we have to setup the Dynamic Time Warping kernel. We will have to + // inform the length of the fixed-length observations contained in each + // arbitrary-length sequence: + // + DynamicTimeWarping kernel = new DynamicTimeWarping(length: 3); + + // Now we can create the machine. When using variable-length + // kernels, we will need to pass zero as the input length: + var svm = new KernelSupportVectorMachine(kernel, inputs: 0); + + + // Create the Sequential Minimal Optimization learning algorithm + var smo = new SequentialMinimalOptimization(svm, inputs, outputs) + { + Complexity = 1.5 + }; + + // And start learning it! + double error = smo.Run(); // error will be 0.0 + + + // At this point, we should have obtained an useful machine. Let's + // see if it can understand a few examples it hasn't seem before: + + double[][] a = + { + new double[] { 1, 1, 1 }, + new double[] { 7, 2, 5 }, + new double[] { 2, 5, 1 }, + }; + + double[][] b = + { + new double[] { 7, 5, 2 }, + new double[] { 4, 2, 5 }, + new double[] { 1, 1, 1 }, + }; + + // Following the aforementioned logic, sequence (a) should be + // classified as -1, and sequence (b) should be classified as +1. + + int resultA = System.Math.Sign(svm.Compute(Matrix.Concatenate(a))); // -1 + int resultB = System.Math.Sign(svm.Compute(Matrix.Concatenate(b))); // +1 + + + + + + + Constructs a new Dynamic Time Warping kernel. + + + + The length of the feature vectors + contained in each sequence. + + + + + + Constructs a new Dynamic Time Warping kernel. + + + + The length of the feature vectors + contained in each sequence. + + + + The hypersphere ratio. Default value is 1. + + + + + + Constructs a new Dynamic Time Warping kernel. + + + + The length of the feature vectors + contained in each sequence. + + + + The hypersphere ratio. Default value is 1. + + + + The degree of the kernel. Default value is 1 (linear kernel). + + + + + + Dynamic Time Warping kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + + Squared distance between x and y in feature (kernel) space. + + + + + + Global distance D(X,Y) between two sequences of vectors. + + + The current thread local storage. + A sequence of vectors. + A sequence of vectors. + + The global distance between X and Y. + + + + + Projects vectors from a sequence of vectors into + a hypersphere, augmenting their size in one unit + and normalizing them to be unit vectors. + + + A sequence of vectors. + + A sequence of vector projections. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations + before the is reclaimed by garbage collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the length for the feature vectors + contained in each sequence used by the kernel. + + + + + + Gets or sets the hypersphere ratio. + + + + + + Gets or sets the polynomial degree for this kernel. + + + + + + Gaussian Kernel. + + + + + The Gaussian kernel requires tuning for the proper value of σ. Different approaches + to this problem includes the use of brute force (i.e. using a grid-search algorithm) + or a gradient ascent optimization. + + + References: + + + P. F. Evangelista, M. J. Embrechts, and B. K. Szymanski. Some Properties + of the Gaussian Kernel for One Class Learning. Available on: + http://www.cs.rpi.edu/~szymansk/papers/icann07.pdf + + + + + + + Constructs a new Gaussian Kernel + + + + + + Constructs a new Gaussian Kernel + + + The kernel's sigma parameter. + + + + + Gaussian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gaussian Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + Squared distance between x and y in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Computes the distance in input space given + a distance computed in feature space. + + + Distance in feature space. + Distance in input space. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Computes the set of all distances between + all points in a random subset of the data. + + + The inputs points. + The number of samples. + + + + + Estimates kernel parameters from the data. + + + The input data. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Called when the value for any of the + kernel's parameters has changed. + + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + The number of random samples to analyze. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Computes the set of all distances between + all points in a random subset of the data. + + + The inner kernel. + The inputs points. + The number of samples. + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Gets or sets the sigma² value for the kernel. When setting + sigma², gamma gets updated accordingly (gamma = 0.5/sigma²). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Generalized Histogram Intersection Kernel. + + + + The Generalized Histogram Intersection kernel is built based on the + Histogram Intersection Kernel for image classification but applies + in a much larger variety of contexts (Boughorbel, 2005). + + + + + + Constructs a new Generalized Histogram Intersection Kernel. + + + + + + Generalized Histogram Intersection Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Hyperbolic Secant Kernel. + + + + + References: + + + Chaudhuri et al, A Comparative Study of Kernels for the Multi-class Support Vector + Machine, 2008. Available on: http://www.computer.org/portal/web/csdl/doi/10.1109/ICNC.2008.803 + + + + + + + Constructs a new Hyperbolic Secant Kernel + + + + + + Hyperbolic Secant Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Hyperbolic Secant Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the gamma value for the kernel. + + + + + + Laplacian Kernel. + + + + + + Constructs a new Laplacian Kernel + + + + + + Constructs a new Laplacian Kernel + + + The sigma slope value. + + + + + Laplacian Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Laplacian Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Squared distance between x and y in input space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Computes the distance in input space given + a distance computed in feature space. + + + Distance in feature space. + Distance in input space. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + + A Laplacian kernel initialized with an appropriate sigma value. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Laplacian kernel initialized with an appropriate sigma value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Linear Kernel. + + + + + + Constructs a new Linear kernel. + + + A constant intercept term. Default is 1. + + + + + Constructs a new Linear Kernel. + + + + + + Linear kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Linear kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Squared distance between x and y in input space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + The parameter of the kernel. + + + The feature space representation of the given point. + + + + + + Gets or sets the kernel's intercept term. Default is 0. + + + + + + Logarithm Kernel. + + + + The Log kernel seems to be particularly interesting for + images, but is only conditionally positive definite. + + + + + + Constructs a new Log Kernel + + + The kernel's degree. + + + + + Constructs a new Log Kernel + + + The kernel's degree. + + + + + Log Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Log Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's degree. + + + + + + Multiquadric Kernel. + + + + The multiquadric kernel is only conditionally positive-definite. + + + + + + Constructs a new Multiquadric Kernel. + + + The constant term theta. + + + + + Constructs a new Multiquadric Kernel. + + + + + + Multiquadric Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Multiquadric Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's constant value. + + + + + + Polynomial Kernel. + + + + + + Constructs a new Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + + + + + Polynomial kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Polynomial kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + Squared distance between x and y in feature (kernel) space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + Distance between x and y in input space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + The parameter of the kernel. + The parameter of the kernel. + + + The feature space representation of the given point. + + + + + + Gets or sets the kernel's polynomial degree. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Power Kernel, also known as the (Unrectified) Triangular Kernel. + + + + The Power kernel is also known as the (unrectified) triangular kernel. + It is an example of scale-invariant kernel (Sahbi and Fleuret, 2004) + and is also only conditionally positive definite. + + + + + + Constructs a new Power Kernel. + + + The kernel's degree. + + + + + Constructs a new Power Kernel. + + + The kernel's degree. + + + + + Power Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Power Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's degree. + + + + + + Precomputed Gram Matrix Kernel. + + + + + + Constructs a new Precomputed Matrix Kernel. + + + + + + Kernel function. + + + An array containing a first element with the index for input vector x. + An array containing a first element with the index for input vector y. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the precomputed Gram matrix for this kernel. + + + + + + Rational Quadratic Kernel. + + + + The Rational Quadratic kernel is less computationally intensive than + the Gaussian kernel and can be used as an alternative when using the + Gaussian becomes too expensive. + + + + + + Constructs a new Rational Quadratic Kernel. + + + The constant term theta. + + + + + Rational Quadratic Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Rational Quadratic Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's constant term. + + + + + + Sigmoid Kernel. + + + + Sigmoid kernel of the form k(x,z) = tanh(a * x'z + c). Sigmoid kernels are only + conditionally positive definite for some values of a and c, and therefore may not + induce a reproducing kernel Hilbert space. However, they have been successfully + used in practice (Schölkopf and Smola, 2002). + + + + + + Estimates suitable values for the sigmoid kernel + by exploring the response area of the tanh function. + + + An input data set. + + A Sigmoid kernel initialized with appropriate values. + + + + + Estimates suitable values for the sigmoid kernel + by exploring the response area of the tanh function. + + + An input data set. + The size of the subset to use in the estimation. + The interquartile range for the data. + + A Sigmoid kernel initialized with appropriate values. + + + + + Computes the set of all distances between + all points in a random subset of the data. + + + The inputs points. + The number of samples. + + + + + Constructs a Sigmoid kernel. + + + + + + Constructs a Sigmoid kernel. + + + + Alpha parameter. Typically should be set to + a small positive value. Default is 0.01. + + Constant parameter. Typically should be set to + a negative value. Default is -e (Euler's constant). + + + + + Sigmoid kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Sigmoid kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's alpha parameter. + + + + In a sigmoid kernel, alpha is a inner product + coefficient for the hyperbolic tangent function. + + + + + + Gets or sets the kernel's constant term. + + + + + + Sparse Cauchy Kernel. + + + The Cauchy kernel comes from the Cauchy distribution (Basak, 2008). It is a + long-tailed kernel and can be used to give long-range influence and sensitivity + over the high dimension space. + + + + + + Constructs a new Sparse Cauchy Kernel. + + + The value for sigma. + + + + + Cauchy Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Gets or sets the kernel's sigma value. + + + + + + Sparse Gaussian Kernel. + + + + + The Gaussian kernel requires tuning for the proper value of σ. Different approaches + to this problem includes the use of brute force (i.e. using a grid-search algorithm) + or a gradient ascent optimization. + + + For an example on how to create a sparse kernel, please see the page. + + + References: + + + P. F. Evangelista, M. J. Embrechts, and B. K. Szymanski. Some Properties of the + Gaussian Kernel for One Class Learning. Available on: http://www.cs.rpi.edu/~szymansk/papers/icann07.pdf + + + + + + + Constructs a new Sparse Gaussian Kernel + + + + + + Constructs a new Sparse Gaussian Kernel + + + The standard deviation for the Gaussian distribution. Default is 1. + + + + + Gaussian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Distance between x and y in input space. + + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Sparse Laplacian Kernel. + + + + + + Constructs a new Laplacian Kernel + + + + + + Constructs a new Laplacian Kernel + + + The sigma slope value. + + + + + Laplacian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Distance between x and y in input space. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Laplacian kernel initialized with an appropriate sigma value. + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Sparse Linear Kernel. + + + + The Sparse Linear kernel accepts inputs in the libsvm sparse format. + + + + + The following example shows how to teach a kernel support vector machine using + the linear sparse kernel to perform the AND classification task using sparse + vectors. + + + // Example AND problem + double[][] inputs = + { + new double[] { }, // 0 and 0: 0 (label -1) + new double[] { 2,1 }, // 0 and 1: 0 (label -1) + new double[] { 1,1 }, // 1 and 0: 0 (label -1) + new double[] { 1,1, 2,1 } // 1 and 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + // 0, 0, 0, 1 + -1, -1, -1, 1 + }; + + // Create a Support Vector Machine for the given inputs + // (sparse machines should use 0 as the number of inputs) + var machine = new KernelSupportVectorMachine(new SparseLinear(), inputs: 0); + + // Instantiate a new learning algorithm for SVMs + var smo = new SequentialMinimalOptimization(machine, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 100000.0; + + // Run + double error = smo.Run(); // should be zero + + double[] predicted = inputs.Apply(machine.Compute).Sign(); + + // Outputs should be -1, -1, -1, +1 + + + + + + + Constructs a new Linear kernel. + + + A constant intercept term. Default is 0. + + + + + Constructs a new Linear Kernel. + + + + + + Sparse Linear kernel function. + + + Sparse vector x in input space. + Sparse vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + Distance between x and y in input space. + + + + + Computes the product of two vectors given in sparse representation. + + + The first vector x. + The second vector y. + + The inner product x * y between the given vectors. + + + + + Computes the squared Euclidean distance of two vectors given in sparse representation. + + + The first vector x. + The second vector y. + + + The squared Euclidean distance d² = |x - y|² between the given vectors. + + + + + + Gets or sets the kernel's intercept term. + + + + + + Sparse Polynomial Kernel. + + + + + + Constructs a new Sparse Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + + + + + Polynomial kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gets or sets the kernel's polynomial degree. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Sparse Sigmoid Kernel. + + + + Sigmoid kernels are not positive definite and therefore do not induce + a reproducing kernel Hilbert space. However, they have been successfully + used in practice (Schölkopf and Smola, 2002). + + + + + + Constructs a Sparse Sigmoid kernel. + + + Alpha parameter. + Constant parameter. + + + + + Constructs a Sparse Sigmoid kernel. + + + + + + Sigmoid kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gets or sets the kernel's gamma parameter. + + + + In a sigmoid kernel, gamma is a inner product + coefficient for the hyperbolic tangent function. + + + + + + Gets or sets the kernel's constant term. + + + + + + Spherical Kernel. + + + + The spherical kernel comes from a statistics perspective. It is an example + of an isotropic stationary kernel and is positive definite in R^3. + + + + + + Constructs a new Spherical Kernel. + + + Value for sigma. + + + + + Spherical Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Spherical Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Infinite Spline Kernel function. + + + + The Spline kernel is given as a piece-wise cubic + polynomial, as derived in the works by Gunn (1998). + + + + + + Constructs a new Spline Kernel. + + + + + + Spline Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Taylor approximation for the explicit Gaussian kernel. + + + + + References: + + + Lin, Keng-Pei, and Ming-Syan Chen. "Efficient kernel approximation for large-scale support + vector machine classification." Proceedings of the Eleventh SIAM International Conference on + Data Mining. 2011. Available on: http://epubs.siam.org/doi/pdf/10.1137/1.9781611972818.19 + + + + + + + + Constructs a new kernel. + + + + + + Constructs a new kernel with the given sigma. + + + The kernel's sigma parameter. + + + + + Constructs a new kernel with the given sigma. + + + The kernel's sigma parameter. + The Gaussian approximation degree. Default is 1024. + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Called when the value for any of the + kernel's parameters has changed. + + + + + + Gets or sets the approximation degree + for this kernel. Default is 1024. + + + + + + Tensor Product combination of Kernels. + + + + + + Constructs a new additive kernel. + + + Kernels to combine. + + + + + Tensor Product Kernel Combination function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Generalized T-Student Kernel. + + + + The Generalized T-Student Kernel is a Mercer Kernel and thus forms + a positive semi-definite Kernel matrix (Boughorbel, 2004). It has + a similar form to the Inverse Multiquadric Kernel. + + + + + + Constructs a new Generalized T-Student Kernel. + + + The kernel's degree. + + + + + Generalized T-Student Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Generalized T-Student Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the degree of this kernel. + + + + + + Wave Kernel. + + + + The Wave kernel is symmetric positive semi-definite (Huang, 2008). + + + + + + Constructs a new Wave Kernel. + + + Value for sigma. + + + + + Wave Kernel Function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Wave Kernel Function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Wavelet Kernel. + + + + + In Wavelet analysis theory, one of the common goals is to express or + approximate a signal or function using a family of functions generated + by dilations and translations of a function called the mother wavelet. + + The Wavelet kernel uses a mother wavelet function together with dilation + and translation constants to produce such representations and build a + inner product which can be used by kernel methods. The default wavelet + used by this class is the mother function h(x) = cos(1.75x)*exp(-x²/2). + + + References: + + + Li Zhang, Weida Zhou, and Licheng Jiao; Wavelet Support Vector Machine. IEEE + Transactions on Systems, Man, and Cybernetics—Part B: Cybernetics, Vol. 34, + No. 1, February 2004. + + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Wavelet kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the Mother wavelet for this kernel. + + + + + + Gets or sets the wavelet dilation for this kernel. + + + + + + Gets or sets the wavelet translation for this kernel. + + + + + + Gets or sets whether this is + an invariant Wavelet kernel. + + + + + + Absolute link function. + + + + + Link functions can be used in many models, such as in + and Support + Vector Machines. + + + + + + + + + Link function interface. + + + + + The link function provides the relationship between the linear predictor and the + mean of the distribution function. There are many commonly used link functions, and + their choice can be somewhat arbitrary. It can be convenient to match the domain of + the link function to the range of the distribution function's mean. + + + References: + + + Wikipedia contributors. "Generalized linear model." Wikipedia, The Free Encyclopedia. + + + + + + + + + + + The link function. + + + An input value. + + The transformed input value. + + + + + The mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new Absolute link function. + + + The beta value. + + + + + Creates a new Absolute link function. + + + + + + The Absolute link function. + + + An input value. + + The transformed input value. + + + The absolute link function is given by f(x) = abs(x) / b. + + + + + + The mean function. + + + A transformed value. + + The reverse transformed value. + + + The inverse absolute link function is given by g(x) = B * abs(x). + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the absolute link function + is given by f'(x) = B. + + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the absolute link function + in terms of y = f(x) is given by f'(y) = B. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient b (slope). + + + + + + Cauchy link function. + + + + + The Cauchy link function is associated with the + Cauchy distribution. + + + Link functions can be used in many models, such as in + and Support + Vector Machines. + + + + + + + + + Creates a new Cauchit link function. + + + The beta value. Default is 1/pi. + The constant value. Default is 0.5. + + + + + Creates a new Cauchit link function. + + + + + + The Cauchit link function. + + + An input value. + + The transformed input value. + + + The Cauchit link function is given by f(x) = tan((x - A) / B). + + + + + + The Cauchit mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + The inverse Cauchit link function is given by g(x) = tan(x) * B + A. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the Cauchit link function + in terms of y = f(x) is given by + + f'(y) = B / (x * x + 1) + + + + + + + First derivative of the mean function + expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the Cauchit link function + in terms of y = f(x) is given by + + f'(y) = B / (tan((y - A) / B)² + 1) + + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Threshold link function. + + + + + + Creates a new Absolute link function. + + + The threshold value. + + + + + Creates a new Absolute link function. + + + + + + The Absolute link function. + + + An input value. + + The transformed input value. + + + + + The mean function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Threshold coefficient b. + + + + + + Sin link function. + + + + + + Creates a new Sin link function. + + + The beta value. + The constant value. + + + + + Creates a new Sin link function. + + + + + + The Sin link function. + + + An input value. + + The transformed input value. + + + + + The Sin mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Natural logarithm of natural logarithm link function. + + + + + + Creates a new Log-Log link function. + + + The beta value. + The constant value. + + + + + Creates a new Log-Log link function. + + + + + + Creates a Complementary Log-Log link function. + + + + + + The Log-log link function. + + + An input value. + + The transformed input value. + + + + + The Log-log mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Natural logarithm link function. + + + + The natural logarithm link function is associated with + the Poisson distribution. + + + + + + Creates a new Log link function. + + + The beta value. Default is 1. + The constant value. Default is 0. + + + + + Creates a new Log link function. + + + + + + The link function. + + + An input value. + + The transformed input value. + + + + + The mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Inverse squared link function. + + + + The inverse squared link function is associated with the + Inverse Gaussian distribution. + + + + + + Creates a new Inverse squared Link function. + + + The beta value. + The constant value. + + + + + Creates a new Inverse squared Link function. + + + + + + The Inverse Squared link function. + + + An input value. + + The transformed input value. + + + + + The Inverse Squared mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Probit link function. + + + + + + Creates a new Probit link function. + + + + + + The Probit link function. + + + An input value. + + The transformed input value. + + + The Probit link function is given by f(x) = Phi^-1(x), + in which Phi^-1 is the + inverse Normal (Gaussian) cumulative + distribution function. + + + + + + The Probit mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + The Probit link function is given by g(x) = Phi(x), + in which Phi is the + Normal (Gaussian) cumulative + distribution function. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the identity link function is + given by f'(x) = exp(c - (Phi^-1(x))² * 0.5) in + which c = -log(sqrt(2*π) + and Phi^-1 is the + inverse Normal (Gaussian) cumulative distribution function. + + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the identity link function in terms + of y = f(x) is given by f'(y) = exp(c - x * x * 0.5) + in which c = -log(sqrt(2*π) + and x = + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Set of statistics functions. + + + + This class represents collection of common functions used in statistics. + Every Matrix function assumes data is organized in a table-like model, + where Columns represents variables and Rows represents a observation of + each variable. + + + + + + Computes the mean of the given values. + + + A double array containing the vector members. + + The mean of the given data. + + + + + Computes the mean of the given values. + + + An integer array containing the vector members. + + The mean of the given data. + + + + + Computes the Geometric mean of the given values. + + + A double array containing the vector members. + + The geometric mean of the given data. + + + + + Computes the log geometric mean of the given values. + + + A double array containing the vector members. + + The log geometric mean of the given data. + + + + + Computes the geometric mean of the given values. + + + A double array containing the vector members. + + The geometric mean of the given data. + + + + + Computes the log geometric mean of the given values. + + + A double array containing the vector members. + + The log geometric mean of the given data. + + + + + Computes the (weighted) grand mean of a set of samples. + + + A double array containing the sample means. + A integer array containing the sample's sizes. + + The grand mean of the samples. + + + + + Computes the mean of the given values. + + + A unsigned short array containing the vector members. + + The mean of the given data. + + + + + Computes the mean of the given values. + + + A float array containing the vector members. + + The mean of the given data. + + + + + Computes the truncated (trimmed) mean of the given values. + + + A double array containing the vector members. + Whether to perform operations in place, overwriting the original vector. + A boolean parameter informing if the given values have already been sorted. + The percentage of observations to drop from the sample. + + The mean of the given data. + + + + + Computes the contraharmonic mean of the given values. + + + A unsigned short array containing the vector members. + The order of the harmonic mean. Default is 1. + + The contraharmonic mean of the given data. + + + + + Computes the contraharmonic mean of the given values. + + + A unsigned short array containing the vector members. + + The contraharmonic mean of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + The mean of the vector, if already known. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + A float array containing the vector members. + The mean of the vector, if already known. + The standard deviation of the given data. + + + + Computes the Standard Deviation of the given values. + + An integer array containing the vector members. + The mean of the vector, if already known. + The standard deviation of the given data. + + + + Computes the Standard Error for a sample size, which estimates the + standard deviation of the sample mean based on the population mean. + + The sample size. + The sample standard deviation. + The standard error for the sample. + + + + Computes the Standard Error for a sample size, which estimates the + standard deviation of the sample mean based on the population mean. + + A double array containing the samples. + The standard error for the sample. + + + + Computes the Median of the given values. + + A double array containing the vector members. + The median of the given data. + + + + Computes the Median of the given values. + + + An integer array containing the vector members. + A boolean parameter informing if the given values have already been sorted. + The median of the given data. + + + + + Computes the Median of the given values. + + + An integer array containing the vector members. + A boolean parameter informing if the given values have already been sorted. + The length of the subarray, starting at . + The starting index of the array. + + The median of the given data. + + + + + Computes the Quartiles of the given values. + + + An integer array containing the vector members. + A boolean parameter informing if the given values have already been sorted. + The inter-quartile range for the values. + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + An integer array containing the vector members. + The first quartile. + The third quartile. + A boolean parameter informing if the given values have already been sorted. + The second quartile, the median of the given data. + + + + + Computes the Variance of the given values. + + + A double precision number array containing the vector members. + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A double precision number array containing the vector members. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + An integer number array containing the vector members. + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + An integer number array containing the vector members. + + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + A single precision number array containing the vector members. + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + The variance of the given data. + + + + + Computes the pooled standard deviation of the given values. + + + The grouped samples. + + True to compute a pooled standard deviation using unbiased estimates + of the population variance; false otherwise. Default is true. + + + + + Computes the pooled standard deviation of the given values. + + + The grouped samples. + + + + + Computes the pooled standard deviation of the given values. + + + The number of samples used to compute the . + The unbiased variances for the samples. + + True to compute a pooled standard deviation using unbiased estimates + of the population variance; false otherwise. Default is true. + + + + + Computes the pooled variance of the given values. + + + The grouped samples. + + + + + Computes the pooled variance of the given values. + + + + True to obtain an unbiased estimate of the population + variance; false otherwise. Default is true. + + The grouped samples. + + + + + Computes the pooled variance of the given values. + + + The number of samples used to compute the . + The unbiased variances for the samples. + + True to obtain an unbiased estimate of the population + variance; false otherwise. Default is true. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + Returns how many times the detected mode happens in the values. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + Returns how many times the detected mode happens in the values. + + The most common value in the given data. + + + + + Computes the Covariance between two arrays of values. + + + A number array containing the first vector elements. + A number array containing the second vector elements. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Covariance between two arrays of values. + + + A number array containing the first vector elements. + A number array containing the second vector elements. + The mean value of , if known. + The mean value of , if known. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + The values' mean, if already known. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Kurtosis for the given values. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number array containing the vector values. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis of the given data. + + + + + Computes the Kurtosis for the given values. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number array containing the vector values. + The values' mean, if already known. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis of the given data. + + + + + Computes the entropy function for a set of numerical values in a + given . + + + A number array containing the vector values. + A probability distribution function. + + The distribution's entropy for the given values. + + + + + Computes the entropy function for a set of numerical values in a + given . + + + A number array containing the vector values. + A probability distribution function. + The importance for each sample. + + The distribution's entropy for the given values. + + + + + Computes the entropy function for a set of numerical values in a + given . + + + A number array containing the vector values. + A probability distribution function. + The repetition counts for each sample. + + The distribution's entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number array containing the vector values. + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number array containing the vector values. + A small constant to avoid s in + case the there is a zero between the given . + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number matrix containing the matrix values. + A small constant to avoid s in + case the there is a zero between the given . + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number matrix containing the matrix values. + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The starting symbol. + The ending symbol. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The starting symbol. + The ending symbol. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The range of symbols. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The number of distinct classes. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The number of distinct classes. + The evaluated entropy. + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + Returns a row vector containing the column means of the given matrix. + + + + double[,] matrix = + { + { 2, -1.0, 5 }, + { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] means = Accord.Statistics.Tools.Mean(matrix); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + + Returns a vector containing the means of the given matrix. + + + + double[,] matrix = + { + { 2, -1.0, 5 }, + { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] colMeans = Accord.Statistics.Tools.Mean(matrix, 0); + + // row means are equal to (2.0, 5.5) + double[] rowMeans = Accord.Statistics.Tools.Mean(matrix, 1); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + Returns a row vector containing the column means of the given matrix. + + + + double[][] matrix = + { + new double[] { 2, -1.0, 5 }, + new double[] { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] means = Accord.Statistics.Tools.Mean(matrix); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + + Returns a vector containing the means of the given matrix. + + + + double[][] matrix = + { + new double[] { 2, -1.0, 5 }, + new double[] { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] colMeans = Accord.Statistics.Tools.Mean(matrix, 0); + + // row means are equal to (2.0, 5.5) + double[] rowMeans = Accord.Statistics.Tools.Mean(matrix, 1); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + The sum vector containing already calculated sums for each column of the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + The sum vector containing already calculated sums for each column of the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Centers an observation, subtracting the empirical + mean from each element in the observation vector. + + + An array of double precision floating-point numbers. + + + + + Centers an observation, subtracting the empirical + mean from each element in the observation vector. + + + An array of double precision floating-point numbers. + The mean of the , if already known. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already + calculated means for each column of the matrix. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Medians vector. + + + A matrix whose medians will be calculated. + + Returns a vector containing the medians of the given matrix. + + + + + Calculates the matrix Medians vector. + + + A matrix whose medians will be calculated. + + Returns a vector containing the medians of the given matrix. + + + + + Computes the Quartiles of the given values. + + + + A matrix whose medians and quartiles will be calculated. + The inter-quartile range for the values. + + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + A matrix whose medians and quartiles will be calculated. + The inter-quartile range for the values. + + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + + A matrix whose medians and quartiles will be calculated. + The first quartile for each column. + The third quartile for each column. + + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + A matrix whose medians and quartiles will be calculated. + The first quartile for each column. + The third quartile for each column. + + The second quartile, the median of the given data. + + + + + Calculates the matrix Modes vector. + + + A matrix whose modes will be calculated. + + Returns a vector containing the modes of the given matrix. + + + + + Calculates the matrix Modes vector. + + + A matrix whose modes will be calculated. + + Returns a vector containing the modes of the given matrix. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number matrix containing the matrix values. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness vector for the given matrix. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + The mean value for the given values, if already known. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number matrix containing the matrix values. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness vector for the given matrix. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + The column means, if known. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis vector of the given data. + + + + + Computes the sample Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The sample kurtosis vector of the given data. + + + + + Computes the Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis vector of the given data. + + + + + Computes the Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis vector of the given data. + + + + + Computes the Standard Error vector for a given matrix. + + + A number multi-dimensional array containing the matrix values. + Returns the standard error vector for the matrix. + + + + + Computes the Standard Error vector for a given matrix. + + + The number of samples in the matrix. + The values' standard deviation vector, if already known. + + Returns the standard error vector for the matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + + The dimension of the matrix to consider as observations. Pass 0 if the matrix has + observations as rows and variables as columns, pass 1 otherwise. Default is 0. + + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + + Pass 0 if the mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + + The dimension of the matrix to consider as observations. Pass 0 if the matrix has + observations as rows and variables as columns, pass 1 otherwise. Default is 0. + + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + The covariance matrix. + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + A real number to divide each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + The covariance matrix. + + + + Calculates the correlation matrix for a matrix of samples. + + + In statistics and probability theory, the correlation matrix is the same + as the covariance matrix of the standardized random variables. + + A multi-dimensional array containing the matrix values. + The correlation matrix. + + + + Calculates the correlation matrix for a matrix of samples. + + + + In statistics and probability theory, the correlation matrix is the same + as the covariance matrix of the standardized random variables. + + + A multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The correlation matrix. + + + + + Calculates the correlation matrix for a matrix of samples. + + + + In statistics and probability theory, the correlation matrix is the same + as the covariance matrix of the standardized random variables. + + + A multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The correlation matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + + The Z-Scores for the matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The Z-Scores for the matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + + The Z-Scores for the matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The Z-Scores for the matrix. + + + + + Centers column data, subtracting the empirical mean from each variable. + + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + + Centers column data, subtracting the empirical mean from each variable. + + + A matrix where each column represent a variable and each row represent a observation. + The mean value of the given values, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Centers column data, subtracting the empirical mean from each variable. + + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + Centers column data, subtracting the empirical mean from each variable. + + A matrix where each column represent a variable and each row represent a observation. + The mean value of the given values, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + An array of double precision floating-point numbers. + True to perform the operation in place, + altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + An array of double precision floating-point numbers. + The standard deviation of the given + , if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + The values' standard deviation vector, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + The values' standard deviation vector, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + The number of times each sample should be repeated. + A number multi-dimensional array containing the matrix values. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + The number of times each sample should be repeated. + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean value of the given values, if already known. + A real number to multiply each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + The number of times each sample should be repeated. + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to multiply each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Computes the Weighted Mean of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . + + The mean of the given data. + + + + + Computes the Weighted Mean of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + The mean of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . + How the weights should be interpreted for the bias correction. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean of the vector, if already known. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean of the vector, if already known. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The standard deviation of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . + How the weights should be interpreted for the bias correction. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean of the array, if already known. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + An unit vector containing the importance of each sample + in . + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The variance of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the vector, if already known. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the vector, if already known. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The standard deviation of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the array, if already known. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the array, if already known. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The variance of the given data. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + How the weights should be interpreted for the bias correction. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . + How the weights should be interpreted for the bias correction. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + How the weights should be interpreted for the bias correction. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . How those values are interpreted depend on the + value for . + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + Returns a vector containing the variances of the given matrix. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + The number of times each sample should be repeated. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + The number of times each sample should be repeated. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + + The most common value in the given data. + + + + + Gets the maximum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + A vector containing the importance of each sample in . + The index of the maximum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The maximum value in the given data. + + + + + Gets the minimum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + A vector containing the importance of each sample in . + The index of the minimum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The minimum value in the given data. + + + + + Gets the maximum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + The number of times each sample should be repeated. + The index of the maximum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The maximum value in the given data. + + + + + Gets the minimum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + The number of times each sample should be repeated. + The index of the minimum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The minimum value in the given data. + + + + + Creates Tukey's box plot inner fence. + + + + + + Creates Tukey's box plot outer fence. + + + + + + Calculates the prevalence of a class for each variable. + + + An array of counts detailing the occurrence of the first class. + An array of counts detailing the occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Calculates the prevalence of a class. + + + A matrix containing counted, grouped data. + The index for the column which contains counts for occurrence of the first class. + The index for the column which contains counts for occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Groups the occurrences contained in data matrix of binary (dichotomous) data. + + + A data matrix containing at least a column of binary data. + Index of the column which contains the group label name. + Index of the column which contains the binary [0,1] data. + + + A matrix containing the group label in the first column, the number of occurrences of the first class + in the second column and the number of occurrences of the second class in the third column. + + + + + + Extends a grouped data into a full observation matrix. + + + The group labels. + + An array containing he occurrence of the positive class + for each of the groups. + + An array containing he occurrence of the negative class + for each of the groups. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The grouped data matrix. + Index of the column which contains the labels + in the grouped data matrix. + Index of the column which contains + the occurrences for the first class. + Index of the column which contains + the occurrences for the second class. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Gets the coefficient of determination, as known as the R-Squared (R²) + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R^2 coefficient of determination is a statistical measure of how well the + regression approximates the real data points. An R^2 of 1.0 indicates that the + regression perfectly fits the data. + + + + + + Returns a random sample of size k from a population of size n. + + + + + + Returns a random group assignment for a sample. + + + The sample size. + The number of groups. + + + + + Returns a random group assignment for a sample + into two mutually exclusive groups. + + + The sample size. + The proportion of samples between the groups. + + + + + Returns a random group assignment for a sample, making + sure different class labels are distributed evenly among + the groups. + + + A vector containing class labels. + The number of different classes in . + The number of groups. + + + + + Returns a random permutation of size n. + + + + + + Shuffles an array. + + + + + + Shuffles a collection. + + + + + + Computes the whitening transform for the given data, making + its covariance matrix equals the identity matrix. + + A matrix where each column represent a + variable and each row represent a observation. + The base matrix used in the + transformation. + + The transformed source data (which now has unit variance). + + + + + + Gets the rank of a sample, often used with order statistics. + + + + + + Gets the number of distinct values + present in each column of a matrix. + + + + + + Gets the number of distinct values + present in each column of a matrix. + + + + + + Gets the number of distinct values + present in each column of a matrix. + + + + + + Generates a random matrix. + + + The size of the square matrix. + The minimum value for a diagonal element. + The maximum size for a diagonal element. + + A square, positive-definite matrix which + can be interpreted as a covariance matrix. + + + + + Computes the kernel distance for a kernel function even if it doesn't + implement the interface. Can be used to check + the proper implementation of the distance function. + + + The kernel function whose distance needs to be evaluated. + An input point x given in input space. + An input point y given in input space. + + + The distance between and in kernel (feature) space. + + + + + + Contains statistical models with direct applications in machine learning, such as + Hidden Markov Models, + Conditional Random Fields, Hidden Conditional + Random Fields and linear and + logistic regressions. + + + + + The main algorithms and techniques available on this namespaces are certainly + the hidden Markov models. + The Accord.NET Framework contains one of the most popular and well-tested + offerings for creating, training and validating Markov models using either + discrete observations or any arbitrary discrete, continuous or mixed probability distributions to + model the observations. + + + This namespace also brings + Conditional Random Fields, that alongside the Markov models can be + used to build sequence classifiers, + perform gesture recognition, and can even be combined with neural networks + to create hybrid models. Other + models include regression + and survival models. + + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + + Contains classes related to Conditional Random + Fields, Hidden Conditional Random + Fields and their learning + algorithms. + + + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + + + Contains learning algorithms for CRFs and + HCRFs, such as + Conjugate Gradient, + L-BFGS and + RProp-based learning. + + + + + The namespace class diagram is shown below. + + + + + + + + + + Factor Potential function for a Markov model whose states are independent + distributions composed of discrete and Normal distributed components. + + + + + + Factor Potential (Clique Potential) function. + + + The type of the observations being modeled. + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + The index of the first class feature in the 's parameter vector. + The number of class features in this factor. + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + + + + + Computes the factor potential function for the given parameters. + + + A state sequence. + A sequence of observations. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Computes the factor potential function for the given parameters. + + + A state sequence. + A sequence of observations. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Returns an enumerator that iterates through all features in this factor potential function. + + + An object that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through all features in this factor potential function. + + + + An object that can be used to iterate through the collection. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the + to which this factor potential belongs. + + + + + + Gets the number of model states + assumed by this function. + + + + + + Gets the index of this factor in the + potential function. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to all features from this factor. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to the edge features. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to the state features. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to the output features. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The lookup table of states where the independent distributions begin. + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Base class for implementations of the Viterbi learning algorithm. + This class cannot be instantiated. + + + + + This class uses a template method pattern so specialized classes + can be written for each kind of hidden Markov model emission density + (either discrete or continuous). + + + For the actual Viterbi classes, please refer to + or . For other kinds of algorithms, please + see and + and their generic counter-parts. + + + + + + + + + Creates a new instance of the Viterbi learning algorithm. + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Computes the log-likelihood for the current model for the given observations. + + + The observation vectors. + + The log-likelihood of the observations belonging to the model. + + + + + Runs one single epoch (iteration) of the learning algorithm. + + + The observation sequences. + A vector to be populated with the decoded Viterbi sequences. + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Gets or sets on how many batches the learning data should be divided during learning. + Batches are used to estimate adequately the first models so they can better compute + the Viterbi paths for subsequent passes of the algorithm. Default is 1. + + + + + + Common interface for running statistics. + + + Running statistics are measures computed as data becomes available. + When using running statistics, there is no need to know the number of + samples a priori, such as in the case of the direct . + + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Common interface for Hybrid Hidden Markov Models. + + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The state optimized probability. + + The sequence of states that most likely produced the sequence. + + + + + + Calculates the probability that this model has generated the given sequence. + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + Forward algorithm. + + A sequence of observations. + + The probability that the given sequence has been generated by this model. + + + + + + Gets the expected number of dimensions in each observation. + + + + + + Gets the number of states of this model. + + + + + + Gets or sets a user-defined tag. + + + + + + Hybrid Markov classifier for arbitrary state-observation functions. + + + + + + Creates a new Sequence Classifier with the given number of classes. + + + + The models specializing in each of the classes of + the classification problem. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probability of the assigned class. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Gets the Markov models for each sequence class. + + + + + + Gets the number of dimensions of the + observations handled by this classifier. + + + + + + General Markov function for arbitrary state-emission density definitions. + + + The previous state index. + The observation at the current state. + An array containing the values for the observations in each next possible state. + + + + + Hybrid Markov model for arbitrary state-observation functions. + + + + This class can be used to implement HMM hybrids such as ANN-HMM + or SVM-HMMs through the specification of a custom . + + + + + + Initializes a new instance of the class. + + + A function specifying a probability for a transition-emission pair. + The number of states in the model. + The number of dimensions in the model. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The state optimized probability. + + The sequence of states that most likely produced the sequence. + + + + + + Calculates the probability that this model has generated the given sequence. + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + Forward algorithm. + + A sequence of observations. + + The probability that the given sequence has been generated by this model. + + + + + + Gets the Markov function, which takes the previous state, the + next state and a observation and produces a probability value. + + + + + + Gets the number of states in the model. + + + + + + Gets the number of dimensions of the + observations handled by this model. + + + + + + Gets or sets an user-defined object associated with this model. + + + + + + Multiple-trials Baum-Welch learning. + + + + This class can be used to perform multiple attempts on + Baum-Welch learning with multiple different initialization points. It can also + be used as a replacement inside algorithms + wherever a standard class would be used. + + + + + + Common interface for unsupervised learning algorithms for hidden + Markov models such as the Baum-Welch + learning and the Viterbi learning + algorithms. + + + + + In the context of hidden Markov models, + unsupervised algorithms are algorithms which consider that the sequence + of states in a system is hidden, and just the system's outputs can be seen + (or are known) during training. This is in contrast with + supervised learning algorithms such as the + Maximum Likelihood (MLE), which consider that both the sequence of observations + and the sequence of states are observable during training. + + + + + + + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + The observations. + + + + + Common interface for Hidden Conditional Random Fields learning algorithms. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Common interface for unsupervised learning algorithms for hidden + Markov models such as the Baum-Welch + learning and the Viterbi learning + algorithms. + + + + + In the context of hidden Markov models, + unsupervised algorithms are algorithms which consider that the sequence + of states in a system is hidden, and just the system's outputs can be seen + (or are known) during training. This is in contrast with + supervised learning algorithms such as the + Maximum Likelihood (MLE), which consider that both the sequence of observations + and the sequence of states are observable during training. + + + + + + + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + The observations. + + + + + Creates a new instance of the Baum-Welch learning algorithm. + + + The number of inner models to be learned. + The template model used to create all subsequent inner models. + The topology to be used by the inner models. To be useful, + this needs to be a topology configured to create random initialization matrices. + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the learning algorithm. + + + The observations. + + + + + Gets the template model, used to create all other instances. + + + + + + Gets the topology used on the inner models. + + + + + + Gets or sets how many trials should be attempted + before the model with highest log-likelihood is + selected as the best model found. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + inner class to hold information about a inner model. + + + + + Internal methods for validation and other shared functions. + + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Non-linear Least Squares for optimization. + + + + + // Suppose we would like to map the continuous values in the + // second column to the integer values in the first column. + double[,] data = + { + { -40, -21142.1111111111 }, + { -30, -21330.1111111111 }, + { -20, -12036.1111111111 }, + { -10, 7255.3888888889 }, + { 0, 32474.8888888889 }, + { 10, 32474.8888888889 }, + { 20, 9060.8888888889 }, + { 30, -11628.1111111111 }, + { 40, -15129.6111111111 }, + }; + + // Extract inputs and outputs + double[][] inputs = data.GetColumn(0).ToArray(); + double[] outputs = data.GetColumn(1); + + // Create a Nonlinear regression using + var regression = new NonlinearRegression(3, + + // Let's assume a quadratic model function: ax² + bx + c + function: (w, x) => w[0] * x[0] * x[0] + w[1] * x[0] + w[2], + + // Derivative in respect to the weights: + gradient: (w, x, r) => + { + r[0] = 2 * w[0]; // w.r.t a: 2a + r[1] = w[1]; // w.r.t b: b + r[2] = w[2]; // w.r.t c: 0 + } + ); + + // Create a non-linear least squares teacher + var nls = new NonlinearLeastSquares(regression); + + // Initialize to some random values + regression.Coefficients[0] = 4.2; + regression.Coefficients[1] = 0.3; + regression.Coefficients[2] = 1; + + // Run the function estimation algorithm + double error; + for (int i = 0; i < 100; i++) + error = nls.Run(inputs, outputs); + + // Use the function to compute the input values + double[] predict = inputs.Apply(regression.Compute); + + + + + + Common interface for regression fitting methods. + + + + + + Runs the fitting algorithm. + + + The input training data. + The output associated with each of the outputs. + + The sum of squared errors after the learning. + + + + + Initializes a new instance of the class. + + + The regression model. + + + + + Initializes a new instance of the class. + + + The regression model. + The least squares + algorithm to be used to estimate the regression parameters. Default is to + use a Levenberg-Marquardt algorithm. + + + + + Runs the fitting algorithm. + + + The input training data. + The output associated with each of the outputs. + + + The sum of squared errors after the learning. + + + + + + Gets or sets a value indicating whether standard + errors should be computed in the next iteration. + + + true to compute standard errors; otherwise, false. + + + + + + Gets the Least-Squares + optimization algorithm used to perform the actual learning. + + + + + + Generalized Linear Model Regression. + + + + + + References: + + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Amos Storkey. (2005). Learning from Data: Learning Logistic Regressors. School of Informatics. + Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + Cosma Shalizi. (2009). Logistic Regression and Newton's Method. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + Edward F. Conor. Logistic Regression. Website. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (This is completely fictional data). + double[][] input = + { + new double[] { 55, 0 }, // 0 - no cancer + new double[] { 28, 0 }, // 0 + new double[] { 65, 1 }, // 0 + new double[] { 46, 0 }, // 1 - have cancer + new double[] { 86, 1 }, // 1 + new double[] { 56, 1 }, // 1 + new double[] { 85, 0 }, // 0 + new double[] { 33, 0 }, // 0 + new double[] { 21, 1 }, // 0 + new double[] { 42, 1 }, // 1 + }; + + // We also know if they have had lung cancer or not, and + // we would like to know whether smoking has any connection + // with lung cancer (This is completely fictional data). + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + + // To verify this hypothesis, we are going to create a GLM + // regression model for those two inputs (age and smoking). + var regression = new GeneralizedLinearRegression(new ProbitLinkFunction(), inputs: 2); + + // Next, we are going to estimate this model. For this, we + // will use the Iteratively Reweighted Least Squares method. + var teacher = new IterativeReweightedLeastSquares(regression); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta = 0; + do + { + // Perform an iteration + delta = teacher.Run(input, output); + + } while (delta > 0.001); + + + + + + + + Creates a new Generalized Linear Regression Model. + + + The link function to use. + The number of input variables for the model. + + + + + Creates a new Generalized Linear Regression Model. + + + The link function to use. + The number of input variables for the model. + The starting intercept value. Default is 0. + + + + + Creates a new Generalized Linear Regression Model. + + + The link function to use. + The coefficient vector. + The standard error vector. + + + + + Computes the model output for the given input vector. + + + The input vector. + + The output value. + + + + + Computes the model output for each of the given input vectors. + + + The array of input vectors. + + The array of output values. + + + + + Gets the Wald Test for a given coefficient. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Log-Likelihood for the model. + + + A set of input data. + A set of output data. + + The Log-Likelihood (a measure of performance) of + the model calculated over the given data sets. + + + + + + Gets the Log-Likelihood for the model. + + + A set of input data. + A set of output data. + The weights associated with each input vector. + + + The Log-Likelihood (a measure of performance) of + the model calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + The weights associated with each input vector. + + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + A set of output data. + Another Logistic Regression model. + + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + A set of output data. + The weights associated with each input vector. + Another Logistic Regression model. + + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + A set of input data. + A set of output data. + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + A set of input data. + A set of output data. + The weights associated with each input vector. + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + Creates a new GeneralizedLinearRegression that is a copy of the current instance. + + + + + + Creates a GeneralizedLinearRegression from a object. + + + A object. + True to make a copy of the logistic regression values, false + to use the actual values. If the actual values are used, changes done on one model + will be reflected on the other model. + + A new which is a copy of the + given . + + + + + Gets the coefficient vector, in which the + first value is always the intercept value. + + + + + + Gets the standard errors associated with each + coefficient during the model estimation phase. + + + + + + Gets the number of inputs handled by this model. + + + + + + Gets the link function used by + this generalized linear model. + + + + + + Gets or sets the intercept term. This is always the + first value of the array. + + + + + + Stochastic Gradient Descent learning for Logistic Regression fitting. + + + + + + Constructs a new Gradient Descent algorithm. + + + The regression to estimate. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + + The maximum relative change in the parameters after the iteration. + + + + + Runs a single pass of the gradient descent algorithm. + + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Computes the sum-of-squared error between the + model outputs and the expected outputs. + + + The input data set. + The output values. + + The sum-of-squared errors. + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets whether this algorithm should use + stochastic updates or not. Default is false. + + + + + + Gets or sets the algorithm + learning rate. Default is 0.1. + + + + + + Regression function delegate. + + + + This delegate represents a parameterized function that, given a set of + model coefficients and an input + vector, produces an associated output value. + + + The model coefficients, also known as parameters or coefficients. + An input vector. + + The output value produced given the + and vector. + + + + + Gradient function delegate. + + + + This delegate represents the gradient of regression + function. A regression function is a parameterized function that, given a set + of model coefficients and an input vector, + produces an associated output value. This function should compute the gradient vector + in respect to the function . + + + The model coefficients, also known as parameters or coefficients. + An input vector. + The resulting gradient vector (w.r.t to the coefficients). + + + + + Nonlinear Regression. + + + + + + Initializes a new instance of the class. + + + The number of variables (free parameters) in the model. + The regression function implementing the regression model. + + + + + Initializes a new instance of the class. + + + The number of variables (free parameters) in the model. + The regression function implementing the regression model. + The function that computes the gradient for . + + + + + Computes the model output for the given input vector. + + + The input vector. + + The output value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the regression coefficients. + + + + + + Gets the standard errors for the regression coefficients. + + + + + + Gets the model function, mapping inputs to + outputs given a suitable parameter vector. + + + + + + Gets or sets a function that computes the gradient of the + in respect to the . + + + + + + Cox's Proportional Hazards Model. + + + + + + Creates a new Cox Proportional-Hazards Model. + + + The number of input variables for the model. + + + + + Creates a new Cox Proportional-Hazards Model. + + + The number of input variables for the model. + The initial baseline hazard distribution. + + + + + Computes the model output for the given input vector. + + + The input vector. + The output value. + + + + + Computes the model output for the given input vector. + + + The input vector. + The output value. + + + + + Computes the model output for the given input vector. + + + The input vector. + The event time. + + The probabilities of the event occurring at + the given time for the given observation. + + + + + Computes the model output for the given time. + + + The event time. + + The probabilities of the event occurring at the given time. + + + + + Computes the model's baseline survival function. This method + simply calls the + of the function. + + + The event time. + + The baseline survival function at the given time. + + + + + Computes the model output for the given input vector. + + + The input vector. + The event times. + + The probabilities of the event occurring at + the given times for the given observations. + + + + + Gets the Log-Hazard Ratio between two observations. + + + The first observation. + The second observation. + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Partial Log-Likelihood for the model. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the Partial Log-Likelihood for the model. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the Partial Log-Likelihood for the model. + + + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the Partial Log-Likelihood for the model. + + + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the 95% confidence interval for the + Hazard Ratio for a given coefficient. + + + + The coefficient's index. + + + + + + Gets the Wald Test for a given coefficient. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + Another Cox Proportional Hazards model. + + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + Creates a new Cox's Proportional Hazards that is a copy of the current instance. + + + + + + Gets the Hazard Ratio for a given coefficient. + + + + The hazard ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + The coefficient's index. + + + The Hazard Ratio for the given coefficient. + + + + + + Gets the mean vector used to center + observations before computations. + + + + + + Gets the coefficient vector, in which the + first value is always the intercept value. + + + + + + Gets the standard errors associated with each + coefficient during the model estimation phase. + + + + + + Gets the baseline hazard function, if specified. + + + + + + Gets the number of inputs handled by this model. + + + + + + Linear-Chain Conditional Random Field (CRF). + + + A conditional random field (CRF) is a type of discriminative undirected + probabilistic graphical model. It is most often used for labeling or parsing + of sequential data, such as natural language text or biological sequences + and computer vision. + + This implementation is currently experimental. + + + + + + Initializes a new instance of the class. + + + The number of states for the model. + The potential function to be used by the model. + + + + + Computes the partition function, as known as Z(x), + for the specified observations. + + + + + + Computes the Log of the partition function. + + + + + + Computes the log-likelihood of the model for the given observations. + This method is equivalent to the + method. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence probability for this model. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence log-likelihood for this model. + + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Loads a random field from a stream. + + + The stream from which the random field is to be deserialized. + + The deserialized random field. + + + + + Loads a random field from a file. + + + The path to the file from which the random field is to be deserialized. + + The deserialized random field. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Gets the number of states in this + linear-chain Conditional Random Field. + + + + + + Gets the potential function encompassing + all feature functions for this model. + + + + + + Common interface for Conditional Random Fields + feature functions + + + The type of the observations being modeled. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the feature for the given parameters. + + + The sequence of states. + The sequence of observations. + The output class label for the sequence. + + The result of the feature. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the potential function containing this feature. + + + + + + Base implementation for Conditional Random Fields + feature functions. + + + The type of the observations being modeled. + + + + + Creates a new feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + + + + + Computes the feature for the given parameters. + + + The sequence of states. + The sequence of observations. + The output class label for the sequence. + + The result of the feature. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Gets the potential function containing this feature. + + + + + + Gets the potential factor to which this feature belongs. + + + + + + State feature for Hidden Markov Model symbol emission probabilities. + + + + + + Constructs a new symbol emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The emission symbol. + The observation dimension this emission feature applies to. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State occupancy function for modeling continuous- + density Hidden Markov Model state emission features. + + + + + + + + Constructs a state occupancy feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The current state. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for second moment Gaussian emission probabilities. + + + + + + Constructs a new symbol emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The dimension of the multidimensional + observation this feature should respond to. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for first moment multivariate Gaussian emission probabilities. + + + + + + Constructs a new first moment emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The multivariate dimension to consider in the computation. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for second moment Gaussian emission probabilities. + + + + + + Constructs a new second moment emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for first moment Gaussian emission probabilities. + + + + + + Constructs a new first moment emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Edge feature for Hidden Markov Model state transition probabilities. + + + + + + Constructs a initial state transition feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The destination state. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for Hidden Markov Model output class symbol probabilities. + + + + + + Constructs a new output class symbol feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The emission symbol. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for Hidden Markov Model symbol emission probabilities. + + + + + + Constructs a new symbol emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The emission symbol. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Edge feature for Hidden Markov Model state transition probabilities. + + + + + + Constructs a state transition feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The originating state. + The destination state. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Forward-Backward algorithms for Conditional Random Fields. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + Computes Backward probabilities for a given potential function and a set of observations(no scaling). + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + Computes Backward probabilities for a given potential function and a set of observations(no scaling). + + + + + Common interface for gradient evaluators for + Hidden Conditional Random Fields . + + + + + + Computes the gradient using the + input/outputs stored in this object. + + + The value of the gradient vector for the given parameters. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood) using + the input/outputs stored in this object. + + + + + + Normal-density Markov Factor Potential (Clique Potential) function. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Multivariate Normal Markov Model Factor Potential (Clique Potential) function. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The number of dimensions for the multivariate observations. + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Discrete-density Markov Factor Potential (Clique Potential) function. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The number of symbols in the discrete alphabet. + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Gets the number of symbols in the discrete + alphabet used by this Markov model factor. + + + + + + Potential function modeling Hidden Markov Classifiers. + + + + + + Base implementation for potential functions. + + + The type of the observations modeled. + + + + + Computes the factor potential function for the given parameters. + + + A state sequence. + A sequence of observations. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Gets the factor potentials (also known as clique potentials) + functions composing this potential function. + + + + + + Gets the number of output classes assumed by this function. + + + + + + Gets or sets the set of weights for each feature function. + + + The weights for each of the feature functions. + + + + + Gets the feature functions composing this potential function. + + + + + + Common interface for CRF's Potential functions. + + + + + + Gets the feature vector for a given input and sequence of states. + + + + + + Gets the factor potentials (also known as clique potentials) + functions composing this potential function. + + + + + + Gets the number of output classes assumed by this function. + + + + + + Gets or sets the set of weights for each feature function. + + + The weights for each of the feature functions. + + + + + Gets the feature functions composing this potential function. + + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Potential function modeling Hidden Markov Models. + + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + True to include class features (priors), false otherwise. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + True to include class features (priors), false otherwise. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A normal density hidden Markov. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + True to include class features (priors), false otherwise. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the total number of dimensions for + this multivariate potential function. + + + + + + Potential function modeling Hidden Markov Models. + + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The number of states. + The number of symbols. + The number of output classes. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The classifier model. + True to include class features (priors), false otherwise. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The number of states. + The number of symbols. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The hidden Markov model. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the number of symbols assumed by this function. + + + + + + Hidden Conditional Random Field (HCRF). + + + + + Conditional random fields (CRFs) are a class of statistical modeling method often applied + in pattern recognition and machine learning, where they are used for structured prediction. + Whereas an ordinary classifier predicts a label for a single sample without regard to "neighboring" + samples, a CRF can take context into account; e.g., the linear chain CRF popular in natural + language processing predicts sequences of labels for sequences of input samples. + + + While Conditional Random Fields can be seen as a generalization of Markov models, Hidden + Conditional Random Fields can be seen as a generalization of Hidden Markov Model Classifiers. + The (linear-chain) Conditional Random Field is the discriminative counterpart of the Markov model. + An observable Markov Model assumes the sequences of states y to be visible, rather than hidden. + Thus they can be used in a different set of problems than the hidden Markov models. Those models + are often used for sequence component labeling, also known as part-of-sequence tagging. After a model + has been trained, they are mostly used to tag parts of a sequence using the Viterbi algorithm. + This is very handy to perform, for example, classification of parts of a speech utterance, such as + classifying phonemes inside an audio signal. + + + References: + + + C. Souza, Sequence Classifiers in C# - Part II: Hidden Conditional Random Fields. CodeProject. Available at: + http://www.codeproject.com/Articles/559535/Sequence-Classifiers-in-Csharp-Part-II-Hidden-Cond + + Chan, Tony F.; Golub, Gene H.; LeVeque, Randall J. (1983). Algorithms for + Computing the Sample Variance: Analysis and Recommendations. The American + Statistician 37, 242-247. + + + + + + In this example, we will create a sequence classifier using a hidden Markov + classifier. Afterwards, we will transform this Markov classifier into an + equivalent Hidden Conditional Random Field by choosing a suitable feature + function. + + + // Let's say we would like to do a very simple mechanism for + // gesture recognition. In this example, we will be trying to + // create a classifier that can distinguish between the words + // "hello", "car", and "wardrobe". + + // Let's say we decided to acquire some data, and we asked some + // people to perform those words in front of a Kinect camera, and, + // using Microsoft's SDK, we were able to captured the x and y + // coordinates of each hand while the word was being performed. + + // Let's say we decided to represent our frames as: + // + // double[] frame = { leftHandX, leftHandY, rightHandX, rightHandY }; + // + // Since we captured words, this means we captured sequences of + // frames as we described above. Let's write some of those as + // rough examples to explain how gesture recognition can be done: + + double[][] hello = + { + new double[] { 1.0, 0.1, 0.0, 0.0 }, // let's say the word + new double[] { 0.0, 1.0, 0.1, 0.1 }, // hello took 6 frames + new double[] { 0.0, 1.0, 0.1, 0.1 }, // to be recorded. + new double[] { 0.0, 0.0, 1.0, 0.0 }, + new double[] { 0.0, 0.0, 1.0, 0.0 }, + new double[] { 0.0, 0.0, 0.1, 1.1 }, + }; + + double[][] car = + { + new double[] { 0.0, 0.0, 0.0, 1.0 }, // the car word + new double[] { 0.1, 0.0, 1.0, 0.1 }, // took only 4. + new double[] { 0.0, 0.0, 0.1, 0.0 }, + new double[] { 1.0, 0.0, 0.0, 0.0 }, + }; + + double[][] wardrobe = + { + new double[] { 0.0, 0.0, 1.0, 0.0 }, // same for the + new double[] { 0.1, 0.0, 1.0, 0.1 }, // wardrobe word. + new double[] { 0.0, 0.1, 1.0, 0.0 }, + new double[] { 0.1, 0.0, 1.0, 0.1 }, + }; + + // Here, please note that a real-world example would involve *lots* + // of samples for each word. Here, we are considering just one from + // each class which is clearly sub-optimal and should _never_ be done + // on practice. For example purposes, however, please disregard this. + + // Those are the words we have in our vocabulary: + // + double[][][] words = { hello, car, wardrobe }; + + // Now, let's associate integer labels with them. This is needed + // for the case where there are multiple samples for each word. + // + int[] labels = { 0, 1, 2 }; + + + // We will create our classifiers assuming an independent + // Gaussian distribution for each component in our feature + // vectors (like assuming a Naive Bayes assumption). + + var initial = new Independent<NormalDistribution> + ( + new NormalDistribution(0, 1), + new NormalDistribution(0, 1), + new NormalDistribution(0, 1), + new NormalDistribution(0, 1) + ); + + + // Now, we can proceed and create our classifier. + // + int numberOfWords = 3; // we are trying to distinguish between 3 words + int numberOfStates = 5; // this value can be found by trial-and-error + + var hmm = new HiddenMarkovClassifier<Independent<NormalDistribution>> + ( + classes: numberOfWords, + topology: new Forward(numberOfStates), // word classifiers should use a forward topology + initial: initial + ); + + // Create a new learning algorithm to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning<Independent<NormalDistribution>>(hmm, + + // Train each model until the log-likelihood changes less than 0.001 + modelIndex => new BaumWelchLearning<Independent<NormalDistribution>>(hmm.Models[modelIndex]) + { + Tolerance = 0.001, + Iterations = 100, + + // This is necessary so the code doesn't blow up when it realize + // there is only one sample per word class. But this could also be + // needed in normal situations as well. + // + FittingOptions = new IndependentOptions() + { + InnerOption = new NormalOptions() { Regularization = 1e-5 } + } + } + ); + + // Finally, we can run the learning algorithm! + double logLikelihood = teacher.Run(words, labels); + + // At this point, the classifier should be successfully + // able to distinguish between our three word classes: + // + int tc1 = hmm.Compute(hello); // should be 0 + int tc2 = hmm.Compute(car); // should be 1 + int tc3 = hmm.Compute(wardrobe); // should be 2 + + + // Now, we can use the Markov classifier to initialize a HCRF + var function = new MarkovMultivariateFunction(hmm); + var hcrf = new HiddenConditionalRandomField<double[]>(function); + + // We can check that both are equivalent, although they have + // formulations that can be learned with different methods + // + for (int i = 0; i < words.Length; i++) + { + // Should be the same + int expected = hmm.Compute(words[i]); + int actual = hcrf.Compute(words[i]); + + // Should be the same + double h0 = hmm.LogLikelihood(words[i], 0); + double c0 = hcrf.LogLikelihood(words[i], 0); + + double h1 = hmm.LogLikelihood(words[i], 1); + double c1 = hcrf.LogLikelihood(words[i], 1); + + double h2 = hmm.LogLikelihood(words[i], 2); + double c2 = hcrf.LogLikelihood(words[i], 2); + } + + + // Now we can learn the HCRF using one of the best learning + // algorithms available, Resilient Backpropagation learning: + + // Create a learning algorithm + var rprop = new HiddenResilientGradientLearning<double[]>(hcrf) + { + Iterations = 50, + Tolerance = 1e-5 + }; + + // Run the algorithm and learn the models + double error = rprop.Run(words, labels); + + // At this point, the HCRF should be successfully + // able to distinguish between our three word classes: + // + int hc1 = hcrf.Compute(hello); // Should be 0 + int hc2 = hcrf.Compute(car); // Should be 1 + int hc3 = hcrf.Compute(wardrobe); // Should be 2 + + + + In order to see how this HCRF can be trained to the data, please take a look + at the page. Resilient Propagation + is one of the best algorithms for HCRF training. + + + The type of the observations modeled by the field. + + + + + + + Initializes a new instance of the class. + + + The potential function to be used by the model. + + + + + Computes the most likely output for the given observations. + + + + + + Computes the most likely output for the given observations. + + + + + + Computes the most likely output for the given observations. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence probability for this model. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence probability for this model. + + + + + + Computes the log-likelihood that the given + observations belong to the desired output. + + + + + + Computes the log-likelihood that the given + observations belong to the desired output. + + + + + + Computes the log-likelihood that the given + observations belong to the desired outputs. + + + + + + Computes the log-likelihood that the given + observations belong to the desired outputs. + + + + + + Computes the partition function Z(x,y). + + + + + + Computes the log-partition function ln Z(x,y). + + + + + + Computes the partition function Z(x). + + + + + + Computes the log-partition function ln Z(x). + + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Loads a random field from a stream. + + + The stream from which the random field is to be deserialized. + + The deserialized random field. + + + + + Loads a random field from a file. + + + The path to the file from which the random field is to be deserialized. + + The deserialized random field. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the number of outputs assumed by the model. + + + + + + Gets the potential function encompassing + all feature functions for this model. + + + + + + Linear Gradient calculator class for + Hidden Conditional Random Fields. + + + The type of the observations being modeled. + + + + + Initializes a new instance of the class. + + + The model to be trained. + + + + + Computes the gradient (vector of derivatives) vector for + the cost function, which may be used to guide optimization. + + + The parameter vector lambda to use in the model. + The inputs to compute the cost function. + The respective outputs to compute the cost function. + The value of the gradient vector for the given parameters. + + + + + Computes the gradient (vector of derivatives) vector for + the cost function, which may be used to guide optimization. + + + The parameter vector lambda to use in the model. + The inputs to compute the cost function. + The respective outputs to compute the cost function. + The value of the gradient vector for the given parameters. + + + + + Computes the gradient using the + input/outputs stored in this object. + + + The parameter vector lambda to use in the model. + The value of the gradient vector for the given parameters. + + + + + Computes the gradient using the + input/outputs stored in this object. + + + The value of the gradient vector for the given parameters. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood). + + + The parameter vector lambda to use in the model. + The inputs to compute the cost function. + The respective outputs to compute the cost function. + The value of the objective function for the given parameters. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood) using + the input/outputs stored in this object. + + + The parameter vector lambda to use in the model. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood) using + the input/outputs stored in this object. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the inputs to be used in the next + call to the Objective or Gradient functions. + + + + + + Gets or sets the outputs to be used in the next + call to the Objective or Gradient functions. + + + + + + Gets or sets the current parameter + vector for the model being learned. + + + + + + Gets the error computed in the last call + to the gradient or objective functions. + + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Gets the model being trained. + + + + + + Common interface for Hidden Conditional Random Fields learning algorithms. + + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation labels. + + The error in the last iteration. + + + + + Runs one iteration of learning algorithm with the specified + input training observations and corresponding output labels. + + + The training observations. + The observations' labels. + + The error in the last iteration. + + + + + Runs the learning algorithm with the specified input + training observation and corresponding output label + until convergence. + + + The training observations. + The observations' labels. + + The error in the last iteration. + + + + + Common interface for Conditional Random Fields learning algorithms. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Conjugate Gradient learning algorithm for + Hidden Conditional Hidden Fields. + + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + + + + + Constructs a new Conjugate Gradient learning algorithm. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Online learning is not supported. + + + + + + Online learning is not supported. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the model being trained. + + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Gets whether the model has converged + or if the line search has failed. + + + + + + Gets the total number of iterations performed + by the conjugate gradient algorithm. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Occurs when the current learning progress has changed. + + + + + + Quasi-Newton (L-BFGS) learning algorithm for + Hidden Conditional Hidden Fields. + + + The type of the observations. + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + + + + + + Constructs a new L-BFGS learning algorithm. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Online learning is not supported. + + + + + + Online learning is not supported. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the model being trained. + + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Quasi-Newton (L-BFGS) learning algorithm for + Conditional Hidden Fields. + + + + + + Constructs a new L-BFGS learning algorithm. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Stochastic Gradient Descent learning algorithm for + Hidden Conditional Hidden Fields. + + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + The type of the observations. + + + + + + + Initializes a new instance of the class. + + + The model to be trained. + + + + + Resets the step size. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the learning rate to use as the gradient + descent step size. Default value is 1e-1. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Gets or sets a value indicating whether this + should use stochastic gradient updates. + + + true for stochastic updates; otherwise, false. + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Gets or sets the model being trained. + + + + + + Occurs when the current learning progress has changed. + + + + + + Identity link function. + + + + + The identity link function is associated with the + Normal distribution. + + + Link functions can be used in many models, such as in + and Support + Vector Machines. + + + + + + + + + Creates a new Identity link function. + + + The variance value. + The mean value. + + + + + Creates a new Identity link function. + + + + + + The Identity link function. + + + An input value. + + The transformed input value. + + + The Identity link function is given by f(x) = (x - A) / B. + + + + + + The mean function. + + + A transformed value. + + The reverse transformed value. + + + The inverse Identity link function is given by g(x) = B * x + A. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the identity link + function is given by f'(x) = B. + + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the identity link function + in terms of y = f(x) is given by f'(y) = B. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Logit link function. + + + + The Logit link function is associated with the + Binomial and + Multinomial distributions. + + + + + + Creates a new Logit link function. + + + The beta value. Default is 1. + The constant value. Default is 0. + + + + + Initializes a new instance of the class. + + + + + + The Logit link function. + + + An input value. + + The transformed input value. + + + The inverse Logit link function is given by + f(x) = (Math.Log(x / (1.0 - x)) - A) / B. + + + + + + The Logit mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + The inverse Logit link function is given by + g(x) = 1.0 / (1.0 + Math.Exp(-z) in + which z = B * x + A. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the identity link + function is given by f'(x) = y * (1.0 - y) + where y = f(x) is the + Logit function. + + + + + + First derivative of the mean function + expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the Logit link function + in terms of y = f(x) is given by y * (1.0 - y). + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Inverse link function. + + + + The inverse link function is associated with the + Exponential and + Gamma distributions. + + + + + + Creates a new Inverse link function. + + + The alpha value. + The constant value. + + + + + Creates a new Inverse link function. + + + + + + The Inverse link function. + + + An input value. + + The transformed input value. + + + + + The Inverse mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Resilient Gradient Learning. + + + The type of the observations being modeled. + + + + // Suppose we would like to learn how to classify the + // following set of sequences among three class labels: + + int[][] inputSequences = + { + // First class of sequences: starts and + // ends with zeros, ones in the middle: + new[] { 0, 1, 1, 1, 0 }, + new[] { 0, 0, 1, 1, 0, 0 }, + new[] { 0, 1, 1, 1, 1, 0 }, + + // Second class of sequences: starts with + // twos and switches to ones until the end. + new[] { 2, 2, 2, 2, 1, 1, 1, 1, 1 }, + new[] { 2, 2, 1, 2, 1, 1, 1, 1, 1 }, + new[] { 2, 2, 2, 2, 2, 1, 1, 1, 1 }, + + // Third class of sequences: can start + // with any symbols, but ends with three. + new[] { 0, 0, 1, 1, 3, 3, 3, 3 }, + new[] { 0, 0, 0, 3, 3, 3, 3 }, + new[] { 1, 0, 1, 2, 2, 2, 3, 3 }, + new[] { 1, 1, 2, 3, 3, 3, 3 }, + new[] { 0, 0, 1, 1, 3, 3, 3, 3 }, + new[] { 2, 2, 0, 3, 3, 3, 3 }, + new[] { 1, 0, 1, 2, 3, 3, 3, 3 }, + new[] { 1, 1, 2, 3, 3, 3, 3 }, + }; + + // Now consider their respective class labels + int[] outputLabels = + { + /* Sequences 1-3 are from class 0: */ 0, 0, 0, + /* Sequences 4-6 are from class 1: */ 1, 1, 1, + /* Sequences 7-14 are from class 2: */ 2, 2, 2, 2, 2, 2, 2, 2 + }; + + + // Create the Hidden Conditional Random Field using a set of discrete features + var function = new MarkovDiscreteFunction(states: 3, symbols: 4, outputClasses: 3); + var classifier = new HiddenConditionalRandomField<int>(function); + + // Create a learning algorithm + var teacher = new HiddenResilientGradientLearning<int>(classifier) + { + Iterations = 50 + }; + + // Run the algorithm and learn the models + teacher.Run(inputSequences, outputLabels); + + + // After training has finished, we can check the + // output classification label for some sequences. + + int y1 = classifier.Compute(new[] { 0, 1, 1, 1, 0 }); // output is y1 = 0 + int y2 = classifier.Compute(new[] { 0, 0, 1, 1, 0, 0 }); // output is y1 = 0 + + int y3 = classifier.Compute(new[] { 2, 2, 2, 2, 1, 1 }); // output is y2 = 1 + int y4 = classifier.Compute(new[] { 2, 2, 1, 1 }); // output is y2 = 1 + + int y5 = classifier.Compute(new[] { 0, 0, 1, 3, 3, 3 }); // output is y3 = 2 + int y6 = classifier.Compute(new[] { 2, 0, 2, 2, 3, 3 }); // output is y3 = 2 + + + + + + + Initializes a new instance of the class. + + + Model to teach. + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Resets the current update steps using the given learning rate. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the model being trained. + + + + + + Gets or sets a value indicating whether this + should use stochastic gradient updates. Default is true. + + + true for stochastic updates; otherwise, false. + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Occurs when the current learning progress has changed. + + + + + + Gets or sets the maximum possible update step, + also referred as delta min. Default is 50. + + + + + + Gets or sets the minimum possible update step, + also referred as delta max. Default is 1e-6. + + + + + + Gets the decrease parameter, also + referred as eta minus. Default is 0.5. + + + + + + Gets the increase parameter, also + referred as eta plus. Default is 1.2. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Maximum Likelihood learning algorithm for discrete-density Hidden Markov Models. + + + + + The maximum likelihood estimate is a + supervised learning algorithm. It considers both the sequence + of observations as well as the sequence of states in the Markov model + are visible and thus during training. + + + Often, the Maximum Likelihood Estimate can be used to give a starting + point to a unsupervised algorithm, making possible to use semi-supervised + techniques with HMMs. It is possible, for example, to use MLE to guess + initial values for an HMM given a small set of manually labeled labels, + and then further estimate this model using the + Viterbi learning algorithm. + + + + + The following example comes from Prof. Yechiam Yemini slides on Hidden Markov + Models, available at http://www.cs.columbia.edu/4761/notes07/chapter4.3-HMM.pdf. + In this example, we will be specifying both the sequence of observations and + the sequence of states assigned to each observation in each sequence to learn + our Markov model. + + + // Those are the observation sequences. Each sequence contains a variable number + // of observation (although in this example they have all the same length, this + // is just a coincidence and not something required). + + int[][] observations = + { + new int[] { 0,0,0,1,0,0 }, + new int[] { 1,0,0,1,0,0 }, + new int[] { 0,0,1,0,0,0 }, + new int[] { 0,0,0,0,1,0 }, + new int[] { 1,0,0,0,1,0 }, + new int[] { 0,0,0,1,1,0 }, + new int[] { 1,0,0,0,0,0 }, + new int[] { 1,0,1,0,0,0 }, + }; + + // Now those are the visible states associated with each observation in each + // observation sequence above. Note that there is always one state assigned + // to each observation, so the lengths of the sequence of observations and + // the sequence of states must always match. + + int[][] paths = + { + new int[] { 0,0,1,0,1,0 }, + new int[] { 1,0,1,0,1,0 }, + new int[] { 1,0,0,1,1,0 }, + new int[] { 1,0,1,1,1,0 }, + new int[] { 1,0,0,1,0,1 }, + new int[] { 0,0,1,0,0,1 }, + new int[] { 0,0,1,1,0,1 }, + new int[] { 0,1,1,1,0,0 }, + }; + + // Since the observation sequences are composed of discrete symbols, we can specify + // a GeneralDiscreteDistribution to simulate a standard discrete HiddenMarkovModel. + var initial = new GeneralDiscreteDistribution(symbols: 2); + + // Create our Markov model with two states (0, 1) and two symbols (0, 1) + HiddenMarkovModel model = new HiddenMarkovModel<(states: 2, symbols: 2); + + // Now we can create our learning algorithm + MaximumLikelihoodLearning teacher = new MaximumLikelihoodLearning(model) + { + // Set some options + UseLaplaceRule = false + }; + + // and finally learn a model using the algorithm + double logLikelihood = teacher.Run(observations, paths); + + + // To check what has been learned, we can extract the emission + // and transition matrices, as well as the initial probability + // vector from the HMM to compare against expected values: + + var pi = Matrix.Exp(model.Probabilities); // { 0.5, 0.5 } + var A = Matrix.Exp(model.Transitions); // { { 7/20, 13/20 }, { 14/20, 6/20 } } + var B = Matrix.Exp(model.Emissions); // { { 17/25, 8/25 }, { 19/23, 4/23 } } + + + + + + + + + + + Common interface for supervised learning algorithms for + hidden Markov models such as the + Maximum Likelihood (MLE) learning algorithm. + + + + + In the context of hidden Markov models, + supervised algorithms are algorithms which consider that both the sequence + of observations and the sequence of states are visible (or known) during + training. This is in contrast with + unsupervised learning algorithms such as the + Baum-Welch, which consider that the sequence of states is hidden. + + + + + + + + + + Runs the learning algorithm. + + + + Supervised learning problem. Given some training observation sequences + O = {o1, o2, ..., oK} and sequence of hidden states H = {h1, h2, ..., hK} + and general structure of HMM (numbers of hidden and visible states), + determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Creates a new instance of the Maximum Likelihood learning algorithm. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Gets the model being trained. + + + + + + Gets or sets whether the emission fitting algorithm should + present weighted samples or simply the clustered samples to + the density estimation + methods. + + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Gets or sets the distribution fitting options + to use when estimating distribution densities + during learning. + + The distribution fitting options. + + + + + Maximum Likelihood learning algorithm for + discrete-density Hidden Markov Models. + + + + + The maximum likelihood estimate is a + supervised learning algorithm. It considers both the sequence + of observations as well as the sequence of states in the Markov model + are visible and thus during training. + + + Often, the Maximum Likelihood Estimate can be used to give a starting + point to a unsupervised algorithm, making possible to use semi-supervised + techniques with HMMs. It is possible, for example, to use MLE to guess + initial values for an HMM given a small set of manually labeled labels, + and then further estimate this model using the + Viterbi learning algorithm. + + + + + The following example comes from Prof. Yechiam Yemini slides on Hidden Markov + Models, available at http://www.cs.columbia.edu/4761/notes07/chapter4.3-HMM.pdf. + In this example, we will be specifying both the sequence of observations and + the sequence of states assigned to each observation in each sequence to learn + our Markov model. + + + // Those are the observation sequences. Each sequence contains a variable number + // of observation (although in this example they have all the same length, this + // is just a coincidence and not something required). + + int[][] observations = + { + new int[] { 0,0,0,1,0,0 }, + new int[] { 1,0,0,1,0,0 }, + new int[] { 0,0,1,0,0,0 }, + new int[] { 0,0,0,0,1,0 }, + new int[] { 1,0,0,0,1,0 }, + new int[] { 0,0,0,1,1,0 }, + new int[] { 1,0,0,0,0,0 }, + new int[] { 1,0,1,0,0,0 }, + }; + + // Now those are the visible states associated with each observation in each + // observation sequence above. Note that there is always one state assigned + // to each observation, so the lengths of the sequence of observations and + // the sequence of states must always match. + + int[][] paths = + { + new int[] { 0,0,1,0,1,0 }, + new int[] { 1,0,1,0,1,0 }, + new int[] { 1,0,0,1,1,0 }, + new int[] { 1,0,1,1,1,0 }, + new int[] { 1,0,0,1,0,1 }, + new int[] { 0,0,1,0,0,1 }, + new int[] { 0,0,1,1,0,1 }, + new int[] { 0,1,1,1,0,0 }, + }; + + // Create our Markov model with two states (0, 1) and two symbols (0, 1) + HiddenMarkovModel model = new HiddenMarkovModel(states: 2, symbols: 2); + + // Now we can create our learning algorithm + MaximumLikelihoodLearning teacher = new MaximumLikelihoodLearning(model) + { + // Set some options + UseLaplaceRule = false + }; + + // and finally learn a model using the algorithm + double logLikelihood = teacher.Run(observations, paths); + + + // To check what has been learned, we can extract the emission + // and transition matrices, as well as the initial probability + // vector from the HMM to compare against expected values: + + var pi = Matrix.Exp(model.Probabilities); // { 0.5, 0.5 } + var A = Matrix.Exp(model.Transitions); // { { 7/20, 13/20 }, { 14/20, 6/20 } } + var B = Matrix.Exp(model.Emissions); // { { 17/25, 8/25 }, { 19/23, 4/23 } } + + + + + + + + + + + Creates a new instance of the Maximum Likelihood learning algorithm. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Gets the model being trained. + + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Viterbi learning algorithm. + + + + + The Viterbi learning algorithm is an alternate learning algorithms + for hidden Markov models. It works by obtaining the Viterbi path + for the set of training observation sequences and then computing + the maximum likelihood estimates for the model parameters. Those + operations are repeated iteratively until model convergence. + + + The Viterbi learning algorithm is also known as the Segmental K-Means + algorithm. + + + + + + + + + + Creates a new instance of the Viterbi learning algorithm. + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs one single epoch (iteration) of the learning algorithm. + + + The observation sequences. + A vector to be populated with the decoded Viterbi sequences. + + + + + Computes the log-likelihood for the current model for the given observations. + + + The observation vectors. + + The log-likelihood of the observations belonging to the model. + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Gets the model being trained. + + + + + + Gets or sets the distribution fitting options + to use when estimating distribution densities + during learning. + + The distribution fitting options. + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + When this property is set, it will only affect the estimation + of the transition and initial state probabilities. To control + the estimation of the emission probabilities, please use the + corresponding property. + + + + + + Viterbi learning algorithm. + + + + + The Viterbi learning algorithm is an alternate learning algorithms + for hidden Markov models. It works by obtaining the Viterbi path + for the set of training observation sequences and then computing + the maximum likelihood estimates for the model parameters. Those + operations are repeated iteratively until model convergence. + + + The Viterbi learning algorithm is also known as the Segmental K-Means + algorithm. + + + + + + + + + + Creates a new instance of the Viterbi learning algorithm. + + + + + + Runs one single epoch (iteration) of the learning algorithm. + + + The observation sequences. + A vector to be populated with the decoded Viterbi sequences. + + + + + Computes the log-likelihood for the current model for the given observations. + + + The observation vectors. + + The log-likelihood of the observations belonging to the model. + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Gets the model being trained. + + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Common interface for multiple regression fitting methods. + + + + + + Runs the fitting algorithm. + + + The input training data. + The output associated with each of the outputs. + + The error. + + + + + Common interface for regression fitting methods. + + + + + + Runs the fitting algorithm. + + + The input training data. + The time until the output happened. + The indication variables used to signal + if the event occurred or if it was censored. + + The error. + + + + + Runs the fitting algorithm. + + + The input training data. + The time until the output happened. + The indication variables used to signal + if the event occurred or if it was censored. + + The error. + + + + + Iterative Reweighted Least Squares for Logistic Regression fitting. + + + + + The Iterative Reweighted Least Squares is an iterative technique based + on the Newton-Raphson iterative optimization scheme. The IRLS method uses + a local quadratic approximation to the log-likelihood function. + + By applying the Newton-Raphson optimization scheme to the cross-entropy + error function (defined as the negative logarithm of the likelihood), one + arises at a weighted formulation for the Hessian matrix. + + + The Iterative Reweighted Least Squares algorithm can also be used to learn + arbitrary generalized linear models. However, the use of this class to learn + such models is currently experimental. + + + + References: + + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Amos Storkey. (2005). Learning from Data: Learning Logistic Regressors. School of Informatics. + Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + Cosma Shalizi. (2009). Logistic Regression and Newton's Method. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + Edward F. Conor. Logistic Regression. Website. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (This is completely fictional data). + double[][] input = + { + new double[] { 55, 0 }, // 0 - no cancer + new double[] { 28, 0 }, // 0 + new double[] { 65, 1 }, // 0 + new double[] { 46, 0 }, // 1 - have cancer + new double[] { 86, 1 }, // 1 + new double[] { 56, 1 }, // 1 + new double[] { 85, 0 }, // 0 + new double[] { 33, 0 }, // 0 + new double[] { 21, 1 }, // 0 + new double[] { 42, 1 }, // 1 + }; + + // We also know if they have had lung cancer or not, and + // we would like to know whether smoking has any connection + // with lung cancer (This is completely fictional data). + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + + // To verify this hypothesis, we are going to create a logistic + // regression model for those two inputs (age and smoking). + LogisticRegression regression = new LogisticRegression(inputs: 2); + + // Next, we are going to estimate this model. For this, we + // will use the Iteratively Reweighted Least Squares method. + var teacher = new IterativeReweightedLeastSquares(regression); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta = 0; + do + { + // Perform an iteration + delta = teacher.Run(input, output); + + } while (delta > 0.001); + + // At this point, we can compute the odds ratio of our variables. + // In the model, the variable at 0 is always the intercept term, + // with the other following in the sequence. Index 1 is the age + // and index 2 is whether the patient smokes or not. + + // For the age variable, we have that individuals with + // higher age have 1.021 greater odds of getting lung + // cancer controlling for cigarette smoking. + double ageOdds = regression.GetOddsRatio(1); // 1.0208597028836701 + + // For the smoking/non smoking category variable, however, we + // have that individuals who smoke have 5.858 greater odds + // of developing lung cancer compared to those who do not + // smoke, controlling for age (remember, this is completely + // fictional and for demonstration purposes only). + double smokeOdds = regression.GetOddsRatio(2); // 5.8584748789881331 + + + + + + + Constructs a new Iterative Reweighted Least Squares. + + + The regression to estimate. + + + + + Constructs a new Iterative Reweighted Least Squares. + + + The regression to estimate. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + An weight associated with each sample. + + The maximum relative change in the parameters after the iteration. + + + + + Computes the sum-of-squared error between the + model outputs and the expected outputs. + + + The input data set. + The output values. + + The sum-of-squared errors. + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets the Hessian matrix computed in + the last Newton-Raphson iteration. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets a value indicating whether standard + errors should be computed in the next iteration. + + + true to compute standard errors; otherwise, false. + + + + + + Gets or sets the regularization value to be + added in the objective function. Default is + 1e-10. + + + + + + Lower-Bound Newton-Raphson for Multinomial logistic regression fitting. + + + + + The Lower Bound principle consists of replacing the second derivative + matrix by a global lower bound in the Leowner ordering [Böhning, 92]. + In the case of multinomial logistic regression estimation, the Hessian + of the negative log-likelihood function can be replaced by one of those + lower bounds, leading to a monotonically converging sequence of iterates. + Furthermore, [Krishnapuram, Carin, Figueiredo and Hartemink, 2005] also + have shown that a lower bound can be achieved which does not depend on + the coefficients for the current iteration. + + + References: + + + B. Krishnapuram, L. Carin, M.A.T. Figueiredo, A. Hartemink. Sparse Multinomial + Logistic Regression: Fast Algorithms and Generalization Bounds. 2005. Available on: + http://www.lx.it.pt/~mtf/Krishnapuram_Carin_Figueiredo_Hartemink_2005.pdf + + D. Böhning. Multinomial logistic regression algorithm. Annals of the Institute + of Statistical Mathematics, 44(9):197 ˝U200, 1992. 2. M. Corney. + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + + + + + // Create a new Multinomial Logistic Regression for 3 categories + var mlr = new MultinomialLogisticRegression(inputs: 2, categories: 3); + + // Create a estimation algorithm to estimate the regression + LowerBoundNewtonRaphson lbnr = new LowerBoundNewtonRaphson(mlr); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta; + int iteration = 0; + + do + { + // Perform an iteration + delta = lbnr.Run(inputs, outputs); + iteration++; + + } while (iteration < 100 && delta > 1e-6); + + + + + + + Creates a new . + + The regression to estimate. + + + + + Runs one iteration of the Lower-Bound Newton-Raphson iteration. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Lower-Bound Newton-Raphson iteration. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets or sets a value indicating whether the + lower bound should be updated using new data. + + + + true if the lower bound should be + updated; otherwise, false. + + + + + Gets the Lower-Bound matrix being used in place of + the Hessian matrix in the Newton-Raphson iterations. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets a value indicating whether standard + errors should be computed in the next iteration. + + + true to compute standard errors; otherwise, false. + + + + + + Nominal Multinomial Logistic Regression. + + + + + // Create a new Multinomial Logistic Regression for 3 categories + var mlr = new MultinomialLogisticRegression(inputs: 2, categories: 3); + + // Create a estimation algorithm to estimate the regression + LowerBoundNewtonRaphson lbnr = new LowerBoundNewtonRaphson(mlr); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta; + int iteration = 0; + + do + { + // Perform an iteration + delta = lbnr.Run(inputs, outputs); + iteration++; + + } while (iteration < 100 && delta > 1e-6); + + + + + + + Creates a new Multinomial Logistic Regression Model. + + + The number of input variables for the model. + The number of categories for the model. + + + + + Creates a new Multinomial Logistic Regression Model. + + + The number of input variables for the model. + The number of categories for the model. + The initial values for the intercepts. + + + + + Computes the model output for the given input vector. + + + + The first category is always considered the baseline category. + + + The input vector. + + The output value. + + + + + Computes the model outputs for the given input vectors. + + + + The first category is always considered the baseline category. + + + The input vector. + + The output value. + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + Gets the 95% confidence interval for the Odds Ratio for a given coefficient. + + + The category's index. + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the 95% confidence intervals for the Odds Ratios for all coefficients. + + + The category's index. + + + + + Gets the Odds Ratio for a given coefficient. + + + + The odds ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + The category index. + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + The Odds Ratio for the given coefficient. + + + + + + Gets the Odds Ratio for all coefficients. + + + + The odds ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + The category index. + + + The Odds Ratio for the given coefficient. + + + + + + Gets the Wald Test for a given coefficient. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + The category index. + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Wald Test for all coefficients. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + The category's index. + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Log-Likelihood for the model. + + + A set of input data. + A set of output data. + + The Log-Likelihood (a measure of performance) of + the model calculated over the given data sets. + + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + A set of output data. + Another Logistic Regression model. + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + Creates a new MultinomialLogisticRegression that is a copy of the current instance. + + + + + + Gets the coefficient vectors, in which the + first columns are always the intercept values. + + + + + + Gets the standard errors associated with each + coefficient during the model estimation phase. + + + + + + Gets the number of categories of the model. + + + + + + Gets the number of inputs of the model. + + + + + Base class for Hidden Markov Models. This class cannot + be instantiated. + + + + + + Constructs a new Hidden Markov Model. + + + + + + Gets the number of states of this model. + + + + + + Gets the log-initial probabilities log(pi) for this model. + + + + + + Gets the log-transition matrix log(A) for this model. + + + + + + Gets or sets a user-defined tag associated with this model. + + + + + + Base class for (HMM) Sequence Classifiers. + This class cannot be instantiated. + + + + + + Initializes a new instance of the class. + + The number of classes in the classification problem. + + + + + Initializes a new instance of the class. + + The models specializing in each of the classes of the classification problem. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probability of the assigned class. + + Return the label of the given sequence, or -1 if it has + been rejected by the threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probabilities for each class. + + Return the label of the given sequence, or -1 if it has + been rejected by the threshold model. + + + + + Computes the log-likelihood that a sequence + belongs to a given class according to this + classifier. + + The sequence of observations. + The output class label. + + The log-likelihood of the sequence belonging to the given class. + + + + + Computes the log-likelihood that a sequence + belongs any of the classes in the classifier. + + The sequence of observations. + + The log-likelihood of the sequence belonging to the classifier. + + + + + Computes the log-likelihood of a set of sequences + belonging to their given respective classes according + to this classifier. + + A set of sequences of observations. + The output class label for each sequence. + + The log-likelihood of the sequences belonging to the given classes. + + + + + Returns an enumerator that iterates through the models in the classifier. + + + + A that + can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the models in the classifier. + + + + A that + can be used to iterate through the collection. + + + + + + Gets or sets the threshold model. + + + + + For gesture spotting, Lee and Kim introduced a threshold model which is + composed of parts of the models in a hidden Markov sequence classifier. + + The threshold model acts as a baseline for decision rejection. If none of + the classifiers is able to produce a higher likelihood than the threshold + model, the decision is rejected. + + In the original Lee and Kim publication, the threshold model is constructed + by creating a fully connected ergodic model by removing all outgoing transitions + of states in all gesture models and fully connecting those states. + + References: + + + H. Lee, J. Kim, An HMM-based threshold model approach for gesture + recognition, IEEE Trans. Pattern Anal. Mach. Intell. 21 (10) (1999) + 961–973. + + + + + + + Gets or sets a value governing the rejection given by + a threshold model (if present). Increasing this value + will result in higher rejection rates. Default is 1. + + + + + + Gets the collection of models specialized in each + class of the sequence classification problem. + + + + + + Gets the Hidden Markov + Model implementation responsible for recognizing + each of the classes given the desired class label. + + The class label of the model to get. + + + + + Gets the number of classes which can be recognized by this classifier. + + + + + + Gets the prior distribution assumed for the classes. + + + + + + Common interface for sequence classifiers using + hidden Markov models. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected. + + + + + Gets the number of classes which can be recognized by this classifier. + + + + + + Arbitrary-density Hidden Markov Model. + + + + + Hidden Markov Models (HMM) are stochastic methods to model temporal and sequence + data. They are especially known for their application in temporal pattern recognition + such as speech, handwriting, gesture recognition, part-of-speech tagging, musical + score following, partial discharges and bioinformatics. + + + This page refers to the arbitrary-density (continuous emission distributions) version + of the model. For discrete distributions, please see . + + + + Dynamical systems of discrete nature assumed to be governed by a Markov chain emits + a sequence of observable outputs. Under the Markov assumption, it is also assumed that + the latest output depends only on the current state of the system. Such states are often + not known from the observer when only the output values are observable. + + + Hidden Markov Models attempt to model such systems and allow, among other things, + + + To infer the most likely sequence of states that produced a given output sequence, + + Infer which will be the most likely next state (and thus predicting the next output), + + Calculate the probability that a given sequence of outputs originated from the system + (allowing the use of hidden Markov models for sequence classification). + + + + The “hidden” in Hidden Markov Models comes from the fact that the observer does not + know in which state the system may be in, but has only a probabilistic insight on where + it should be. + + + The arbitrary-density Hidden Markov Model uses any probability density function (such + as Gaussian + Mixture Model) for + computing the state probability. In other words, in a continuous HMM the matrix of emission + probabilities B is replaced by an array of either discrete or continuous probability density + functions. + + + If a general + discrete distribution is used as the underlying probability density function, the + model becomes equivalent to the discrete Hidden Markov Model. + + + + For a more thorough explanation on some fundamentals on how Hidden Markov Models work, + please see the documentation page. To learn a Markov + model, you can find a list of both supervised and + unsupervised learning algorithms in the + namespace. + + + References: + + + Wikipedia contributors. "Linear regression." Wikipedia, the Free Encyclopedia. + Available at: http://en.wikipedia.org/wiki/Hidden_Markov_model + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + + + + The example below reproduces the same example given in the Wikipedia + entry for the Viterbi algorithm (http://en.wikipedia.org/wiki/Viterbi_algorithm). + As an arbitrary density model, one can use it with any available + probability distributions, including with a discrete probability. In the + following example, the generic model is used with a + to reproduce the same example given in . + Below, the model's parameters are initialized manually. However, it is possible to learn + those automatically using . + + + // Create the transition matrix A + double[,] transitions = + { + { 0.7, 0.3 }, + { 0.4, 0.6 } + }; + + // Create the vector of emission densities B + GeneralDiscreteDistribution[] emissions = + { + new GeneralDiscreteDistribution(0.1, 0.4, 0.5), + new GeneralDiscreteDistribution(0.6, 0.3, 0.1) + }; + + // Create the initial probabilities pi + double[] initial = + { + 0.6, 0.4 + }; + + // Create a new hidden Markov model with discrete probabilities + var hmm = new HiddenMarkovModel<GeneralDiscreteDistribution>(transitions, emissions, initial); + + // After that, one could, for example, query the probability + // of a sequence occurring. We will consider the sequence + double[] sequence = new double[] { 0, 1, 2 }; + + // And now we will evaluate its likelihood + double logLikelihood = hmm.Evaluate(sequence); + + // At this point, the log-likelihood of the sequence + // occurring within the model is -3.3928721329161653. + + // We can also get the Viterbi path of the sequence + int[] path = hmm.Decode(sequence, out logLikelihood); + + // At this point, the state path will be 1-0-0 and the + // log-likelihood will be -4.3095199438871337 + + + + Baum-Welch, one of the most famous + learning algorithms for Hidden Markov Models. + Discrete-density Hidden Markov Model + + + + + + Common interface for Hidden Markov Models. + + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The state optimized probability. + + The sequence of states that most likely produced the sequence. + + + + + + Calculates the probability that this model has generated the given sequence. + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + Forward algorithm. + + A sequence of observations. + + The probability that the given sequence has been generated by this model. + + + + + + Gets the number of states of this model. + + + + + + Gets the initial probabilities for this model. + + + + + + Gets the Transition matrix (A) for this model. + + + + + + Gets or sets a user-defined tag. + + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + + The initial emission probability distribution to be used by each of the states. This + initial probability distribution will be cloned across all states. + + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + + The initial emission probability distributions for each state. + + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + The transitions matrix A for this model. + The emissions matrix B for this model. + The initial state probabilities for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + The number of states for the model. + A initial distribution to be copied to all states in the model. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The sequence of states that most likely produced the sequence. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + The log-likelihood along the most likely sequence. + + The sequence of states that most likely produced the sequence. + + + + + Calculates the probability of each hidden state for each + observation in the observation vector. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the probability of each hidden state for each observation + in the observation vector, and uses those probabilities to decode the + most likely sequence of states for each observation in the sequence + using the posterior decoding method. See remarks for details. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + The sequence of states most likely associated with each + observation, estimated using the posterior decoding method. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the likelihood that this model has generated the given sequence. + + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + either the Viterbi or the Forward algorithms. + + + + A sequence of observations. + + + The log-likelihood that the given sequence has been generated by this model. + + + + + + Calculates the log-likelihood that this model has generated the + given observation sequence along the given state path. + + + A sequence of observations. + A sequence of states. + + + The log-likelihood that the given sequence of observations has + been generated by this model along the given sequence of states. + + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observation that should be coming after the last observation in this sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts the next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the given sequence, plus the predicted + next observations. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + + A random vector of observations drawn from the model. + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + The log-likelihood of the generated observation sequence. + The Viterbi path of the generated observation sequence. + + A random vector of observations drawn from the model. + + + + + Predicts the next observation occurring after a given observation sequence. + + + + + + Predicts the next observation occurring after a given observation sequence. + + + + + + Predicts the next observation occurring after a given observation sequence. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Loads a hidden Markov model from a stream. + + + The stream from which the model is to be deserialized. + + The deserialized model. + + + + + Loads a hidden Markov model from a file. + + + The path to the file from which the model is to be deserialized. + + The deserialized model. + + + + + Gets the number of dimensions in the + probability distributions for the states. + + + + + + Gets the Emission matrix (B) for this model. + + + + + + Arbitrary-density Hidden Markov Model Set for Sequence Classification. + + + + + This class uses a set of density hidden + Markov models to classify sequences of real (double-precision floating point) + numbers or arrays of those numbers. Each model will try to learn and recognize each + of the different output classes. For examples and details on how to learn such models, + please take a look on the documentation for + . + + + For the discrete version of this classifier, please see its non-generic counterpart + . + + + + + Examples are available at the respective learning algorithm pages. For + example, see . + + + + + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + The class labels for each of the models. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + + The models specializing in each of the classes of + the classification problem. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + The class labels for each of the models. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probability of the assigned class. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the log-likelihood of a sequence + belong to a given class according to this + classifier. + + The sequence of observations. + The output class label. + + The log-likelihood of the sequence belonging to the given class. + + + + + Computes the log-likelihood that a sequence + belongs any of the classes in the classifier. + + The sequence of observations. + + The log-likelihood of the sequence belonging to the classifier. + + + + + Computes the log-likelihood of a set of sequences + belonging to their given respective classes according + to this classifier. + + A set of sequences of observations. + The output class label for each sequence. + + The log-likelihood of the sequences belonging to the given classes. + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Loads a classifier from a stream. + + + The stream from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a file. + + + The path to the file from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Gets the number of dimensions of the + observations handled by this classifier. + + + + + + Discrete-density Hidden Markov Model. + + + + + Hidden Markov Models (HMM) are stochastic methods to model temporal and sequence + data. They are especially known for their application in temporal pattern recognition + such as speech, handwriting, gesture recognition, part-of-speech tagging, musical + score following, partial discharges and bioinformatics. + + + This page refers to the discrete-density version of the model. For arbitrary + density (probability distribution) definitions, please see + . + + + + Dynamical systems of discrete nature assumed to be governed by a Markov chain emits + a sequence of observable outputs. Under the Markov assumption, it is also assumed that + the latest output depends only on the current state of the system. Such states are often + not known from the observer when only the output values are observable. + + + Assuming the Markov probability, the probability of any sequence of observations + occurring when following a given sequence of states can be stated as + +

+

+ + + in which the probabilities p(yt|yt-1) can be read as the + probability of being currently in state yt given we just were in the + state yt-1 at the previous instant t-1, and the probability + p(xt|yt) can be understood as the probability of observing + xt at instant t given we are currently in the state + yt. To compute those probabilities, we simple use two matrices + A and B. + The matrix A is the matrix of state probabilities: + it gives the probabilities p(yt|yt-1) of jumping from one state + to the other, and the matrix B is the matrix of observation probabilities, which gives the + distribution density p(xt|yt) associated + a given state yt. In the discrete case, + B is really a matrix. In the continuous case, + B is a vector of probability distributions. The overall model definition + can then be stated by the tuple + +

+

+ + + in which n is an integer representing the total number + of states in the system, A is a matrix + of transition probabilities, B is either + a matrix of observation probabilities (in the discrete case) or a vector of probability + distributions (in the general case) and p is a vector of + initial state probabilities determining the probability of starting in each of the + possible states in the model. + + + Hidden Markov Models attempt to model such systems and allow, among other things, + + + To infer the most likely sequence of states that produced a given output sequence, + + Infer which will be the most likely next state (and thus predicting the next output), + + Calculate the probability that a given sequence of outputs originated from the system + (allowing the use of hidden Markov models for sequence classification). + + + + The “hidden” in Hidden Markov Models comes from the fact that the observer does not + know in which state the system may be in, but has only a probabilistic insight on where + it should be. + + + To learn a Markov model, you can find a list of both + supervised and unsupervised learning + algorithms in the namespace. + + + References: + + + Wikipedia contributors. "Linear regression." Wikipedia, the Free Encyclopedia. + Available at: http://en.wikipedia.org/wiki/Hidden_Markov_model + + Nikolai Shokhirev, Hidden Markov Models. Personal website. Available at: + http://www.shokhirev.com/nikolai/abc/alg/hmm/hmm.html + + X. Huang, A. Acero, H. Hon. "Spoken Language Processing." pp 396-397. + Prentice Hall, 2001. + + Dawei Shen. Some mathematics for HMMs, 2008. Available at: + http://courses.media.mit.edu/2010fall/mas622j/ProblemSets/ps4/tutorial.pdf + +
+ + + The example below reproduces the same example given in the Wikipedia + entry for the Viterbi algorithm (http://en.wikipedia.org/wiki/Viterbi_algorithm). + In this example, the model's parameters are initialized manually. However, it is + possible to learn those automatically using . + + + // Create the transition matrix A + double[,] transition = + { + { 0.7, 0.3 }, + { 0.4, 0.6 } + }; + + // Create the emission matrix B + double[,] emission = + { + { 0.1, 0.4, 0.5 }, + { 0.6, 0.3, 0.1 } + }; + + // Create the initial probabilities pi + double[] initial = + { + 0.6, 0.4 + }; + + // Create a new hidden Markov model + HiddenMarkovModel hmm = new HiddenMarkovModel(transition, emission, initial); + + // After that, one could, for example, query the probability + // of a sequence occurring. We will consider the sequence + int[] sequence = new int[] { 0, 1, 2 }; + + // And now we will evaluate its likelihood + double logLikelihood = hmm.Evaluate(sequence); + + // At this point, the log-likelihood of the sequence + // occurring within the model is -3.3928721329161653. + + // We can also get the Viterbi path of the sequence + int[] path = hmm.Decode(sequence, out logLikelihood); + + // At this point, the state path will be 1-0-0 and the + // log-likelihood will be -4.3095199438871337 + + + + Baum-Welch, one of the most famous + learning algorithms for Hidden Markov Models. + Arbitrary-density + Hidden Markov Model. + + +
+ + + Constructs a new Hidden Markov Model. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The emissions matrix B for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + Whether to initialize emissions with random probabilities + or uniformly with 1 / number of symbols. Default is false (default is + to use 1/symbols). + + + + + Constructs a new Hidden Markov Model. + + + The transitions matrix A for this model. + The emissions matrix B for this model. + The initial state probabilities for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model. + + + The number of states for this model. + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model. + + + The number of states for this model. + The number of output symbols used for this model. + Whether to initialize the model transitions and emissions + with random probabilities or uniformly with 1 / number of states (for + transitions) and 1 / number of symbols (for emissions). Default is false. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The sequence of states that most likely produced the sequence. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + The log-likelihood along the most likely sequence. + The sequence of states that most likely produced the sequence. + + + + + Calculates the probability of each hidden state for each + observation in the observation vector. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the probability of each hidden state for each observation + in the observation vector, and uses those probabilities to decode the + most likely sequence of states for each observation in the sequence + using the posterior decoding method. See remarks for details. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + The sequence of states most likely associated with each + observation, estimated using the posterior decoding method. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the log-likelihood that this model has generated the given sequence. + + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + either the Viterbi or the Forward algorithms. + + + + A sequence of observations. + + + + The log-likelihood that the given sequence has been generated by this model. + + + + + + Calculates the log-likelihood that this model has generated the + given observation sequence along the given state path. + + + A sequence of observations. + A sequence of states. + + + The log-likelihood that the given sequence of observations has + been generated by this model along the given sequence of states. + + + + + + Predicts next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the given sequence, plus the predicted + next observations. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + + + + + Predicts next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the different symbols for each predicted + next observations. In order to convert those values to probabilities, exponentiate the + values in the vectors (using the Exp function) and divide each value by their vector's sum. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observation that should be coming after the last observation in this sequence. + The log-likelihood of the different symbols for the next observation. + In order to convert those values to probabilities, exponentiate the values in the vector (using + the Exp function) and divide each value by the vector sum. This will give the probability of each + next possible symbol to be the next observation in the sequence. + + + + + Predicts the next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the different symbols for each predicted + next observations. In order to convert those values to probabilities, exponentiate the + values in the vectors (using the Exp function) and divide each value by their vector's sum. + The log-likelihood of the given sequence, plus the predicted + next observations. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + + A random vector of observations drawn from the model. + + + + Accord.Math.Tools.SetupGenerator(42); + + // Consider some phrases: + // + string[][] phrases = + { + new[] { "those", "are", "sample", "words", "from", "a", "dictionary" }, + new[] { "those", "are", "sample", "words" }, + new[] { "sample", "words", "are", "words" }, + new[] { "those", "words" }, + new[] { "those", "are", "words" }, + new[] { "words", "from", "a", "dictionary" }, + new[] { "those", "are", "words", "from", "a", "dictionary" } + }; + + // Let's begin by transforming them to sequence of + // integer labels using a codification codebook: + var codebook = new Codification("Words", phrases); + + // Now we can create the training data for the models: + int[][] sequence = codebook.Translate("Words", phrases); + + // To create the models, we will specify a forward topology, + // as the sequences have definite start and ending points. + // + var topology = new Forward(states: 4); + int symbols = codebook["Words"].Symbols; // We have 7 different words + + // Create the hidden Markov model + HiddenMarkovModel hmm = new HiddenMarkovModel(topology, symbols); + + // Create the learning algorithm + BaumWelchLearning teacher = new BaumWelchLearning(hmm); + + // Teach the model about the phrases + double error = teacher.Run(sequence); + + // Now, we can ask the model to generate new samples + // from the word distributions it has just learned: + // + int[] sample = hmm.Generate(3); + + // And the result will be: "those", "are", "words". + string[] result = codebook.Translate("Words", sample); + + + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + The log-likelihood of the generated observation sequence. + The Viterbi path of the generated observation sequence. + + + An usage example is available at the documentation page. + + + A random vector of observations drawn from the model. + + + + + Converts this Discrete density Hidden Markov Model + into a arbitrary density model. + + + + + Converts this Discrete density Hidden Markov Model + to a Continuous density model. + + + + + Constructs a new discrete-density Hidden Markov Model. + + + The transitions matrix A for this model. + The emissions matrix B for this model. + The initial state probabilities for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + Whether to initialize emissions with random probabilities + or uniformly with 1 / number of symbols. Default is false (default is + to use 1/symbols). + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + The number of states for this model. + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + The number of states for this model. + The number of output symbols used for this model. + Whether to initialize emissions with random probabilities + or uniformly with 1 / number of symbols. Default is false (default is + to use 1/symbols). + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Loads a hidden Markov model from a stream. + + + The stream from which the model is to be deserialized. + + The deserialized classifier. + + + + + Loads a hidden Markov model from a file. + + + The path to the file from which the model is to be deserialized. + + The deserialized model. + + + + + Loads a hidden Markov model from a stream. + + + The stream from which the model is to be deserialized. + + The deserialized model. + + + + + Loads a hidden Markov model from a file. + + + The path to the file from which the model is to be deserialized. + + The deserialized model. + + + + + Gets the number of symbols in this model's alphabet. + + + + + + Gets the log-emission matrix log(B) for this model. + + + + + + Learning algorithm for discrete-density + generative hidden Markov sequence classifiers. + + + + + This class acts as a teacher for + classifiers based on discrete hidden Markov models. The learning + algorithm uses a generative approach. It works by training each model in + the generative classifier separately. + + + This class implements discrete classifiers only. Discrete classifiers can + be used whenever the sequence of observations is discrete or can be represented + by discrete symbols, such as class labels, integers, and so on. If you need + to classify sequences of other entities, such as real numbers, vectors (i.e. + multivariate observations), then you can use + generic-density + hidden Markov models. Those models can be modeled after any kind of + probability distribution implementing + the interface. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + The following example shows how to create a hidden Markov model sequence classifier + to classify discrete sequences into two disjoint labels: labels for class 0 and + labels for class 1. The training data is separated in inputs and outputs. The + inputs are the sequences we are trying to learn, and the outputs are the labels + associated with each input sequence. + + + In this example we will be using the Baum-Welch + algorithm to learn each model in our generative classifier; however, any other + unsupervised learning algorithm could be used. + + + + // Declare some testing data + int[][] inputs = new int[][] + { + new int[] { 0,1,1,0 }, // Class 0 + new int[] { 0,0,1,0 }, // Class 0 + new int[] { 0,1,1,1,0 }, // Class 0 + new int[] { 0,1,0 }, // Class 0 + + new int[] { 1,0,0,1 }, // Class 1 + new int[] { 1,1,0,1 }, // Class 1 + new int[] { 1,0,0,0,1 }, // Class 1 + new int[] { 1,0,1 }, // Class 1 + }; + + int[] outputs = new int[] + { + 0,0,0,0, // First four sequences are of class 0 + 1,1,1,1, // Last four sequences are of class 1 + }; + + + // We are trying to predict two different classes + int classes = 2; + + // Each sequence may have up to two symbols (0 or 1) + int symbols = 2; + + // Nested models will have two states each + int[] states = new int[] { 2, 2 }; + + // Creates a new Hidden Markov Model Sequence Classifier with the given parameters + HiddenMarkovClassifier classifier = new HiddenMarkovClassifier(classes, states, symbols); + + // Create a new learning algorithm to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning(classifier, + + // Train each model until the log-likelihood changes less than 0.001 + modelIndex => new BaumWelchLearning(classifier.Models[modelIndex]) + { + Tolerance = 0.001, + Iterations = 0 + } + ); + + // Train the sequence classifier using the algorithm + double likelihood = teacher.Run(inputs, outputs); + + + + + + + + + + + + Abstract base class for Sequence Classifier learning algorithms. + + + + + + Creates a new instance of the learning algorithm for a given + Markov sequence classifier using the specified configuration + function. + + + + + + Trains each model to recognize each of the output labels. + + The sum log-likelihood for all models after training. + + + + + Creates a new threshold model + for the current set of Markov models in this sequence classifier. + + A threshold Markov model. + + + + + Creates the state transition topology for the threshold model. This + method can be used to help in the implementation of the + abstract method which has to be defined for implementers of this class. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Gets the classifier being trained by this instance. + + The classifier being trained by this instance. + + + + + Gets or sets the configuration function specifying which + training algorithm should be used for each of the models + in the hidden Markov model set. + + + + + + Gets or sets a value indicating whether a threshold model + should be created or updated after training to support rejection. + + true to update the threshold model after training; + otherwise, false. + + + + + Gets or sets a value indicating whether the class priors + should be estimated from the data, as in an empirical Bayes method. + + + + + + Occurs when the learning of a class model has started. + + + + + + Occurs when the learning of a class model has finished. + + + + + + Creates a new instance of the learning algorithm for a given + Markov sequence classifier using the specified configuration + function. + + + + + + Trains each model to recognize each of the output labels. + + + The sum log-likelihood for all models after training. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The percent of misclassification errors for the data. + + + + + Creates a new threshold model + for the current set of Markov models in this sequence classifier. + + + + A threshold Markov model. + + + + + + Gets or sets the smoothing kernel's sigma + for the threshold model. + + + The smoothing kernel's sigma. + + + + + Configuration function delegate for Sequence Classifier Learning algorithms. + + + + + Submodel learning event arguments. + + + + + Initializes a new instance of the class. + + + The class label. + The total number of classes. + + + + + Gets the generative class model to + which this event refers to. + + + + + Gets the total number of models + to be learned. + + + + + + Common interface for unsupervised learning algorithms for hidden + Markov models which support for weighted training samples. + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Base class for implementations of the Baum-Welch learning algorithm. + This class cannot be instantiated. + + + + + This class uses a template method pattern so specialized classes + can be written for each kind of hidden Markov model emission density + (either discrete or continuous). The methods , + and should + be overridden by inheriting classes to specify how those probabilities + should be computed for the density being modeled. + + + For the actual Baum-Welch classes, please refer to + or . For other kinds of algorithms, please + see and + and their generic counter-parts. + + + + + + + + + Initializes a new instance of the class. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + + + The average log-likelihood for the observations after the model has been trained. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + The weight associated with each sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + + + Computes the forward and backward probabilities matrices + for a given observation referenced by its index in the + input training data. + + + The index of the observation in the input training data. + Returns the computed forward probabilities matrix. + Returns the computed backward probabilities matrix. + + + + + Computes the ksi matrix of probabilities for a given observation + referenced by its index in the input training data. + + + The index of the observation in the input training data. + The matrix of forward probabilities for the observation. + The matrix of backward probabilities for the observation. + + + + + Updates the emission probability matrix. + + + + Implementations of this method should use the observations + in the training data and the Gamma probability matrix to + update the probability distributions of symbol emissions. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Gets the Ksi matrix of log probabilities created during + the last iteration of the Baum-Welch learning algorithm. + + + + + + Gets the Gamma matrix of log probabilities created during + the last iteration of the Baum-Welch learning algorithm. + + + + + + Gets the sample weights in the last iteration of the + Baum-Welch learning algorithm. + + + + + + Baum-Welch learning algorithm for + discrete-density Hidden Markov Models. + + + + + The Baum-Welch algorithm is an unsupervised algorithm + used to learn a single hidden Markov model object from a set of observation sequences. It works + by using a variant of the + Expectation-Maximization algorithm to search a set of model parameters (i.e. the matrix + of transition probabilities A, the matrix + of emission probabilities B, and the + initial probability vector π) that + would result in a model having a high likelihood of being able + to generate a set of training + sequences given to this algorithm. + + + For increased accuracy, this class performs all computations using log-probabilities. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + // We will try to create a Hidden Markov Model which + // can detect if a given sequence starts with a zero + // and has any number of ones after that. + int[][] sequences = new int[][] + { + new int[] { 0,1,1,1,1,0,1,1,1,1 }, + new int[] { 0,1,1,1,0,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1,1,1,1 }, + }; + + // Creates a new Hidden Markov Model with 3 states for + // an output alphabet of two characters (zero and one) + HiddenMarkovModel hmm = new HiddenMarkovModel(3, 2); + + // Try to fit the model to the data until the difference in + // the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning(hmm) { Tolerance = 0.0001, Iterations = 0 }; + + double ll = teacher.Run(sequences); + + // Calculate the probability that the given + // sequences originated from the model + double l1 = Math.Exp(hmm.Evaluate(new int[] { 0, 1 })); // 0.999 + double l2 = Math.Exp(hmm.Evaluate(new int[] { 0, 1, 1, 1 })); // 0.916 + + // Sequences which do not start with zero have much lesser probability. + double l3 = Math.Exp(hmm.Evaluate(new int[] { 1, 1 })); // 0.000 + double l4 = Math.Exp(hmm.Evaluate(new int[] { 1, 0, 0, 0 })); // 0.000 + + // Sequences which contains few errors have higher probability + // than the ones which do not start with zero. This shows some + // of the temporal elasticity and error tolerance of the HMMs. + double l5 = Math.Exp(hmm.Evaluate(new int[] { 0, 1, 0, 1, 1, 1, 1, 1, 1 })); // 0.034 + double l6 = Math.Exp(hmm.Evaluate(new int[] { 0, 1, 1, 1, 1, 1, 1, 0, 1 })); // 0.034 + + + + + + + + + + + Creates a new instance of the Baum-Welch learning algorithm. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + + + The average log-likelihood for the observations after the model has been trained. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + + The average log-likelihood for the observations after the model has been trained. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Computes the forward and backward probabilities matrices + for a given observation referenced by its index in the + input training data. + + + The index of the observation in the input training data. + Returns the computed forward probabilities matrix. + Returns the computed backward probabilities matrix. + + + + + Updates the emission probability matrix. + + + + Implementations of this method should use the observations + in the training data and the Gamma probability matrix to + update the probability distributions of symbol emissions. + + + + + + Computes the ksi matrix of probabilities for a given observation + referenced by its index in the input training data. + + + The index of the observation in the input training data. + The matrix of forward probabilities for the observation. + The matrix of backward probabilities for the observation. + + + + + Creates a Baum-Welch with default configurations for + hidden Markov models with normal mixture densities. + + + + + + Creates a Baum-Welch with default configurations for + hidden Markov models with normal mixture densities. + + + + + + Gets the model being trained. + + + + + + Baum-Welch learning algorithm for + arbitrary-density (generic) Hidden Markov Models. + + + + + The Baum-Welch algorithm is an unsupervised algorithm + used to learn a single hidden Markov model object from a set of observation sequences. It works + by using a variant of the + Expectation-Maximization algorithm to search a set of model parameters (i.e. the matrix + of transition probabilities A + , the vector of state probability distributions + B, and the initial probability + vector π) that would result in a model having a high likelihood of being able + to generate a set of training + sequences given to this algorithm. + + + For increased accuracy, this class performs all computations using log-probabilities. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + + In the following example, we will create a Continuous Hidden Markov Model using + a univariate Normal distribution to model properly model continuous sequences. + + + // Create continuous sequences. In the sequences below, there + // seems to be two states, one for values between 0 and 1 and + // another for values between 5 and 7. The states seems to be + // switched on every observation. + double[][] sequences = new double[][] + { + new double[] { 0.1, 5.2, 0.3, 6.7, 0.1, 6.0 }, + new double[] { 0.2, 6.2, 0.3, 6.3, 0.1, 5.0 }, + new double[] { 0.1, 7.0, 0.1, 7.0, 0.2, 5.6 }, + }; + + + // Specify a initial normal distribution for the samples. + NormalDistribution density = new NormalDistribution(); + + // Creates a continuous hidden Markov Model with two states organized in a forward + // topology and an underlying univariate Normal distribution as probability density. + var model = new HiddenMarkovModel<NormalDistribution>(new Ergodic(2), density); + + // Configure the learning algorithms to train the sequence classifier until the + // difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<NormalDistribution>(model) + { + Tolerance = 0.0001, + Iterations = 0, + }; + + // Fit the model + double likelihood = teacher.Run(sequences); + + // See the log-probability of the sequences learned + double a1 = model.Evaluate(new[] { 0.1, 5.2, 0.3, 6.7, 0.1, 6.0 }); // -0.12799388666109757 + double a2 = model.Evaluate(new[] { 0.2, 6.2, 0.3, 6.3, 0.1, 5.0 }); // 0.01171157434400194 + + // See the log-probability of an unrelated sequence + double a3 = model.Evaluate(new[] { 1.1, 2.2, 1.3, 3.2, 4.2, 1.0 }); // -298.7465244473417 + + // We can transform the log-probabilities to actual probabilities: + double likelihood = Math.Exp(logLikelihood); + a1 = Math.Exp(a1); // 0.879 + a2 = Math.Exp(a2); // 1.011 + a3 = Math.Exp(a3); // 0.000 + + // We can also ask the model to decode one of the sequences. After + // this step the state variable will contain: { 0, 1, 0, 1, 0, 1 } + + int[] states = model.Decode(new[] { 0.1, 5.2, 0.3, 6.7, 0.1, 6.0 }); + + + + In the following example, we will create a Discrete Hidden Markov Model + using a Generic Discrete Probability Distribution to reproduce the same + code example given in documentation. + + + // Arbitrary-density Markov Models can operate using any + // probability distribution, including discrete ones. + + // In the following example, we will try to create a + // Discrete Hidden Markov Model using a discrete + // distribution to detect if a given sequence starts + // with a zero and has any number of ones after that. + + double[][] sequences = new double[][] + { + new double[] { 0,1,1,1,1,0,1,1,1,1 }, + new double[] { 0,1,1,1,0,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1,1,1,1 }, + }; + + // Create a new Hidden Markov Model with 3 states and + // a generic discrete distribution with two symbols + var hmm = new HiddenMarkovModel.CreateGeneric(3, 2); + + // We will try to fit the model to the data until the difference in + // the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<UniformDiscreteDistribution>(hmm) + { + Tolerance = 0.0001, + Iterations = 0 + }; + + // Begin model training + double ll = teacher.Run(sequences); + + + // Calculate the likelihood that the given sequences originated + // from the model. The commented values on the right are the + // likelihoods computed by taking an exp(x) of the log-likelihoods + // returned by the Evaluate method. + double l1 = Math.Exp(hmm.Evaluate(new double[] { 0, 1 })); // 0.999 + double l2 = Math.Exp(hmm.Evaluate(new double[] { 0, 1, 1, 1 })); // 0.916 + + // Sequences which do not start with zero have much lesser probability. + double l3 = Math.Exp(hmm.Evaluate(new double[] { 1, 1 })); // 0.000 + double l4 = Math.Exp(hmm.Evaluate(new double[] { 1, 0, 0, 0 })); // 0.000 + + // Sequences which contains few errors have higher probability + // than the ones which do not start with zero. This shows some + // of the temporal elasticity and error tolerance of the HMMs. + double l5 = Math.Exp(hmm.Evaluate(new double[] { 0, 1, 0, 1, 1, 1, 1, 1, 1 })); // 0.034 + double l6 = Math.Exp(hmm.Evaluate(new double[] { 0, 1, 1, 1, 1, 1, 1, 0, 1 })); // 0.034 + + + + The next example shows how to create a multivariate model using + a multivariate normal distribution. In this example, sequences + contain vector-valued observations, such as in the case of (x,y) + pairs. + + + // Create sequences of vector-valued observations. In the + // sequence below, a single observation is composed of two + // coordinate values, such as (x, y). There seems to be two + // states, one for (x,y) values less than (5,5) and another + // for higher values. The states seems to be switched on + // every observation. + double[][][] sequences = + { + new double[][] // sequence 1 + { + new double[] { 1, 2 }, // observation 1 of sequence 1 + new double[] { 6, 7 }, // observation 2 of sequence 1 + new double[] { 2, 3 }, // observation 3 of sequence 1 + }, + new double[][] // sequence 2 + { + new double[] { 2, 2 }, // observation 1 of sequence 2 + new double[] { 9, 8 }, // observation 2 of sequence 2 + new double[] { 1, 0 }, // observation 3 of sequence 2 + }, + new double[][] // sequence 3 + { + new double[] { 1, 3 }, // observation 1 of sequence 3 + new double[] { 8, 9 }, // observation 2 of sequence 3 + new double[] { 3, 3 }, // observation 3 of sequence 3 + }, + }; + + + // Specify a initial normal distribution for the samples. + var density = new MultivariateNormalDistribution(dimension: 2); + + // Creates a continuous hidden Markov Model with two states organized in a forward + // topology and an underlying univariate Normal distribution as probability density. + var model = new HiddenMarkovModel<MultivariateNormalDistribution>(new Forward(2), density); + + // Configure the learning algorithms to train the sequence classifier until the + // difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<MultivariateNormalDistribution>(model) + { + Tolerance = 0.0001, + Iterations = 0, + }; + + // Fit the model + double logLikelihood = teacher.Run(sequences); + + // See the likelihood of the sequences learned + double a1 = Math.Exp(model.Evaluate(new [] { + new double[] { 1, 2 }, + new double[] { 6, 7 }, + new double[] { 2, 3 }})); // 0.000208 + + double a2 = Math.Exp(model.Evaluate(new [] { + new double[] { 2, 2 }, + new double[] { 9, 8 }, + new double[] { 1, 0 }})); // 0.0000376 + + // See the likelihood of an unrelated sequence + double a3 = Math.Exp(model.Evaluate(new [] { + new double[] { 8, 7 }, + new double[] { 9, 8 }, + new double[] { 1, 0 }})); // 2.10 x 10^(-89) + + + + The following example shows how to create a hidden Markov model + that considers each feature to be independent of each other. This + is the same as following Bayes' assumption of independence for each + feature in the feature vector. + + + + // Let's say we have 2 meteorological sensors gathering data + // from different time periods of the day. Those periods are + // represented below: + + double[][][] data = + { + new double[][] // first sequence (we just repeated the measurements + { // once, so there is only one observation sequence) + + new double[] { 1, 2 }, // Day 1, 15:00 pm + new double[] { 6, 7 }, // Day 1, 16:00 pm + new double[] { 2, 3 }, // Day 1, 17:00 pm + new double[] { 2, 2 }, // Day 1, 18:00 pm + new double[] { 9, 8 }, // Day 1, 19:00 pm + new double[] { 1, 0 }, // Day 1, 20:00 pm + new double[] { 1, 3 }, // Day 1, 21:00 pm + new double[] { 8, 9 }, // Day 1, 22:00 pm + new double[] { 3, 3 }, // Day 1, 23:00 pm + } + }; + + // Let's assume those sensors are unrelated (for simplicity). As + // such, let's assume the data gathered from the sensors may reside + // into circular centroids denoting each state the underlying system + // might be in. + NormalDistribution[] initial_components = + { + new NormalDistribution(), // initial value for the first variable's distribution + new NormalDistribution() // initial value for the second variable's distribution + }; + + // Specify a initial independent normal distribution for the samples. + var density = new Independent<NormalDistribution>(initial_components); + + // Creates a continuous hidden Markov Model with two states organized in an Ergodic + // topology and an underlying independent Normal distribution as probability density. + var model = new HiddenMarkovModel<Independent<NormalDistribution>>(new Ergodic(2), density); + + // Configure the learning algorithms to train the sequence classifier until the + // difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<Independent<NormalDistribution>>(model) + { + Tolerance = 0.0001, + Iterations = 0, + }; + + // Fit the model + double error = teacher.Run(data); + + // Get the hidden state associated with each observation + // + double logLikelihood; // log-likelihood of the Viterbi path + int[] hidden_states = model.Decode(data[0], out logLikelihood); + + + + Finally, the last example shows how to fit a mixture-density + hidden Markov models. + + + + // Suppose we have a set of six sequences and we would like to + // fit a hidden Markov model with mixtures of Normal distributions + // as the emission densities. + + // First, let's consider a set of univariate sequences: + double[][] sequences = + { + new double[] { 1, 1, 2, 2, 2, 3, 3, 3 }, + new double[] { 1, 2, 2, 2, 3, 3 }, + new double[] { 1, 2, 2, 3, 3, 5 }, + new double[] { 2, 2, 2, 2, 3, 3, 3, 4, 5, 5, 1 }, + new double[] { 1, 1, 1, 2, 2, 5 }, + new double[] { 1, 2, 2, 4, 4, 5 }, + }; + + + // Now we can begin specifying a initial Gaussian mixture distribution. It is + // better to add some different initial parameters to the mixture components: + var density = new Mixture<NormalDistribution>( + new NormalDistribution(mean: 2, stdDev: 1.0), // 1st component in the mixture + new NormalDistribution(mean: 0, stdDev: 0.6), // 2nd component in the mixture + new NormalDistribution(mean: 4, stdDev: 0.4), // 3rd component in the mixture + new NormalDistribution(mean: 6, stdDev: 1.1) // 4th component in the mixture + ); + + // Let's then create a continuous hidden Markov Model with two states organized in a forward + // topology with the underlying univariate Normal mixture distribution as probability density. + var model = new HiddenMarkovModel<Mixture<NormalDistribution>>(new Forward(2), density); + + // Now we should configure the learning algorithms to train the sequence classifier. We will + // learn until the difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<Mixture<NormalDistribution>>(model) + { + Tolerance = 0.0001, + Iterations = 0, + + // Note, however, that since this example is extremely simple and we have only a few + // data points, a full-blown mixture wouldn't really be needed. Thus we will have a + // great chance that the mixture would become degenerated quickly. We can avoid this + // by specifying some regularization constants in the Normal distribution fitting: + + FittingOptions = new MixtureOptions() + { + Iterations = 1, // limit the inner e-m to a single iteration + + InnerOptions = new NormalOptions() + { + Regularization = 1e-5 // specify a regularization constant + + // Please note that specifying a regularization constant avoids getting the exception + // "Variance is zero. Try specifying a regularization constant in the fitting options." + } + } + }; + + // Finally, we can fit the model + double logLikelihood = teacher.Run(sequences); + + // And now check the likelihood of some approximate sequences. + double a1 = Math.Exp(model.Evaluate(new double[] { 1, 1, 2, 2, 3 })); // 2.3413833128741038E+45 + double a2 = Math.Exp(model.Evaluate(new double[] { 1, 1, 2, 5, 5 })); // 9.94607618459872E+19 + + // We can see that the likelihood of an unrelated sequence is much smaller: + double a3 = Math.Exp(model.Evaluate(new double[] { 8, 2, 6, 4, 1 })); // 1.5063654166181737E-44 + + + + + When using Normal distributions, it is often the case we might find problems + which are difficult to solve. Some problems may include constant variables or + other numerical difficulties preventing a the proper estimation of a Normal + distribution from the data. + + + A sign of those difficulties arises when the learning algorithm throws the exception + "Variance is zero. Try specifying a regularization constant in the fitting options" + for univariate distributions (e.g. or a informing that the "Covariance matrix + is not positive definite. Try specifying a regularization constant in the fitting options" + for multivariate distributions like the . + In both cases, this is an indication that the variables being learned can not be suitably + modeled by Normal distributions. To avoid numerical difficulties when estimating those + probabilities, a small regularization constant can be added to the variances or to the + covariance matrices until they become greater than zero or positive definite. + + + To specify a regularization constant as given in the above message, we + can indicate a fitting options object for the model distribution using: + + + + var teacher = new BaumWelchLearning<NormalDistribution>(model) + { + Tolerance = 0.0001, + Iterations = 0, + + FittingOptions = new NormalOptions() + { + Regularization = 1e-5 // specify a regularization constant + } + }; + + + + Typically, any small value would suffice as a regularization constant, + though smaller values may lead to longer fitting times. Too high values, + on the other hand, would lead to decreased accuracy. + + + + + + + + + + + + + + Creates a new instance of the Baum-Welch learning algorithm. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + + The average log-likelihood for the observations after the model has been trained. + + + + + + Computes the ksi matrix of probabilities for a given observation + referenced by its index in the input training data. + + The index of the observation in the input training data. + The matrix of forward probabilities for the observation. + The matrix of backward probabilities for the observation. + + + + + Updates the emission probability matrix. + + + Implementations of this method should use the observations + in the training data and the Gamma probability matrix to + update the probability distributions of symbol emissions. + + + + + + Computes the forward and backward probabilities matrices + for a given observation referenced by its index in the + input training data. + + The index of the observation in the input training data. + Returns the computed forward probabilities matrix. + Returns the computed backward probabilities matrix. + + + + + Gets the model being trained. + + + + + + Gets or sets the distribution fitting options + to use when estimating distribution densities + during learning. + + The distribution fitting options. + + + + + Learning algorithm for + arbitrary-density generative hidden Markov sequence classifiers. + + + + + This class acts as a teacher for + classifiers based on arbitrary-density hidden Markov models. The learning + algorithm uses a generative approach. It works by training each model in the + generative classifier separately. + + + This can teach models that use any probability + distribution. Such arbitrary-density models + can be used for any kind of observation values or vectors. When + + + be used whenever the sequence of observations is discrete or can be represented + by discrete symbols, such as class labels, integers, and so on. If you need + to classify sequences of other entities, such as real numbers, vectors (i.e. + multivariate observations), then you can use + generic-density + hidden Markov models. Those models can be modeled after any kind of + probability distribution implementing + the interface. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + The following example creates a continuous-density hidden Markov model sequence + classifier to recognize two classes of univariate observation sequences. + + + // Create a Continuous density Hidden Markov Model Sequence Classifier + // to detect a univariate sequence and the same sequence backwards. + double[][] sequences = new double[][] + { + new double[] { 0,1,2,3,4 }, // This is the first sequence with label = 0 + new double[] { 4,3,2,1,0 }, // This is the second sequence with label = 1 + }; + + // Labels for the sequences + int[] labels = { 0, 1 }; + + // Creates a new Continuous-density Hidden Markov Model Sequence Classifier + // containing 2 hidden Markov Models with 2 states and an underlying Normal + // distribution as the continuous probability density. + NormalDistribution density = new NormalDistribution(); + var classifier = new HiddenMarkovClassifier<NormalDistribution>(2, new Ergodic(2), density); + + // Create a new learning algorithm to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning<NormalDistribution>(classifier, + + // Train each model until the log-likelihood changes less than 0.001 + modelIndex => new BaumWelchLearning<NormalDistribution>(classifier.Models[modelIndex]) + { + Tolerance = 0.0001, + Iterations = 0 + } + ); + + // Train the sequence classifier using the algorithm + teacher.Run(sequences, labels); + + + // Calculate the probability that the given + // sequences originated from the model + double likelihood; + + // Try to classify the first sequence (output should be 0) + int c1 = classifier.Compute(sequences[0], out likelihood); + + // Try to classify the second sequence (output should be 1) + int c2 = classifier.Compute(sequences[1], out likelihood); + + + + + The following example creates a continuous-density hidden Markov model sequence + classifier to recognize two classes of multivariate sequence of observations. + This example uses multivariate Normal distributions as emission densities. + + + When there is insufficient training data, or one of the variables is constant, + the Normal distribution estimation may fail with a "Covariance matrix is not + positive-definite". In this case, it is possible to sidestep this issue by + specifying a small regularization constant to be added to the diagonal elements + of the covariance matrix. + + + // Create a Continuous density Hidden Markov Model Sequence Classifier + // to detect a multivariate sequence and the same sequence backwards. + + double[][][] sequences = new double[][][] + { + new double[][] + { + // This is the first sequence with label = 0 + new double[] { 0, 1 }, + new double[] { 1, 2 }, + new double[] { 2, 3 }, + new double[] { 3, 4 }, + new double[] { 4, 5 }, + }, + + new double[][] + { + // This is the second sequence with label = 1 + new double[] { 4, 3 }, + new double[] { 3, 2 }, + new double[] { 2, 1 }, + new double[] { 1, 0 }, + new double[] { 0, -1 }, + } + }; + + // Labels for the sequences + int[] labels = { 0, 1 }; + + + var initialDensity = new MultivariateNormalDistribution(2); + + // Creates a sequence classifier containing 2 hidden Markov Models with 2 states + // and an underlying multivariate mixture of Normal distributions as density. + var classifier = new HiddenMarkovClassifier<MultivariateNormalDistribution>( + classes: 2, topology: new Forward(2), initial: initialDensity); + + // Configure the learning algorithms to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning<MultivariateNormalDistribution>( + classifier, + + // Train each model until the log-likelihood changes less than 0.0001 + modelIndex => new BaumWelchLearning<MultivariateNormalDistribution>( + classifier.Models[modelIndex]) + { + Tolerance = 0.0001, + Iterations = 0, + + FittingOptions = new NormalOptions() + { + Diagonal = true, // only diagonal covariance matrices + Regularization = 1e-5 // avoid non-positive definite errors + } + } + ); + + // Train the sequence classifier using the algorithm + double logLikelihood = teacher.Run(sequences, labels); + + + // Calculate the probability that the given + // sequences originated from the model + double likelihood, likelihood2; + + // Try to classify the 1st sequence (output should be 0) + int c1 = classifier.Compute(sequences[0], out likelihood); + + // Try to classify the 2nd sequence (output should be 1) + int c2 = classifier.Compute(sequences[1], out likelihood2); + + + + + + + + + + + Creates a new instance of the learning algorithm for a given + Markov sequence classifier using the specified configuration + function. + + + + + + Trains each model to recognize each of the output labels. + + + The sum log-likelihood for all models after training. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The percent of misclassification errors for the data. + + + + + Creates a new threshold model + for the current set of Markov models in this sequence classifier. + + + + A threshold Markov model. + + + + + + Forward-Backward algorithms for Hidden Markov Models. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Discrete-density Hidden Markov Model Set for Sequence Classification. + + + + + This class uses a set of discrete hidden Markov models + to classify sequences of integer symbols. Each model will try to learn and recognize each + of the different output classes. For examples and details on how to learn such models, + please take a look on the documentation for . + + For other type of sequences, such as discrete sequences (not necessarily symbols) or even + continuous and multivariate variables, please see use the generic classifier counterpart + + + + + + Examples are available at the respective learning algorithm pages. For + example, see . + + + + + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + The optional class names for each of the classifiers. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + The optional class names for each of the classifiers. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The number of symbols in the models' discrete alphabet. + The optional class names for each of the classifiers. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The number of symbols in the models' discrete alphabet. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the log-likelihood of a sequence + belong to a given class according to this + classifier. + + The sequence of observations. + The output class label. + + The log-likelihood of the sequence belonging to the given class. + + + + + Computes the log-likelihood of a set of sequences + belonging to their given respective classes according + to this classifier. + + A set of sequences of observations. + The output class label for each sequence. + + The log-likelihood of the sequences belonging to the given classes. + + + + + Computes the log-likelihood that a sequence + belongs any of the classes in the classifier. + + The sequence of observations. + + The log-likelihood of the sequence belonging to the classifier. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The number of symbols in the models' discrete alphabet. + + + + + Computes the most likely class for a given sequence. + + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Loads a classifier from a stream. + + + The stream from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a file. + + + The path to the file from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a stream. + + + The stream from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a file. + + + The path to the file from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Gets the number of symbols + recognizable by the models. + + + + + + Custom Topology for Hidden Markov Model. + + + + + An Hidden Markov Model Topology specifies how many states and which + initial probabilities a Markov model should have. Two common topologies + can be discussed in terms of transition state probabilities and are + available to construction through the and + classes implementing the + interface. + + Topology specification is important with regard to both learning and + performance: A model with too many states (and thus too many settable + parameters) will require too much training data while an model with an + insufficient number of states will prohibit the HMM from capturing subtle + statistical patterns. + + This custom implementation allows for arbitrarily specification of + the state transition matrix and initial state probabilities for + hidden Markov models. + + + + + + + + + + + + Hidden Markov model topology (architecture) specification. + + + + + An Hidden Markov Model Topology specifies how many states and which + initial probabilities a Markov model should have. Two common topologies + can be discussed in terms of transition state probabilities and are + available to construction through the and + classes implementing this interface. + + Topology specification is important with regard to both learning and + performance: A model with too many states (and thus too many settable + parameters) will require too much training data while an model with an + insufficient number of states will prohibit the HMM from capturing subtle + statistical patterns. + + + + References: + + + Alexander Schliep, "Learning Hidden Markov Model Topology". + + Richard Hughey and Anders Krogh, "Hidden Markov models for sequence analysis: + extension and analysis of the basic method", CABIOS 12(2):95-107, 1996. Available in: + http://compbio.soe.ucsc.edu/html_format_papers/hughkrogh96/cabios.html + + + + + + + + + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + Gets the number of states in this topology. + + + + + Creates a new custom topology with user-defined + transition matrix and initial state probabilities. + + + The initial probabilities for the model. + The transition probabilities for the model. + + + + + Creates a new custom topology with user-defined + transition matrix and initial state probabilities. + + + The initial probabilities for the model. + The transition probabilities for the model. + Set to true if the passed transitions are given + in log-probabilities. Default is false (given values are probabilities). + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + + Gets the number of states in this topology. + + + + + + Gets the initial state probabilities. + + + + + + Gets the state-transitions matrix. + + + + + + Ergodic (fully-connected) Topology for Hidden Markov Models. + + + + + Ergodic models are commonly used to represent models in which a single + (large) sequence of observations is used for training (such as when a + training sequence does not have well defined starting and ending points + and can potentially be infinitely long). + + Models starting with an ergodic transition-state topology typically + have only a small number of states. + + + References: + + + Alexander Schliep, "Learning Hidden Markov Model Topology". + + Richard Hughey and Anders Krogh, "Hidden Markov models for sequence analysis: + extension and analysis of the basic method", CABIOS 12(2):95-107, 1996. Available in: + http://compbio.soe.ucsc.edu/html_format_papers/hughkrogh96/cabios.html + + + + + + + + + + + In a second example, we will create an Ergodic (fully connected) + discrete-density hidden Markov model with uniform probabilities. + + + // Create a new Ergodic hidden Markov model with three + // fully-connected states and four sequence symbols. + var model = new HiddenMarkovModel(new Ergodic(3), 4); + + // After creation, the state transition matrix for the model + // should be given by: + // + // { 0.33, 0.33, 0.33 } + // { 0.33, 0.33, 0.33 } + // { 0.33, 0.33, 0.33 } + // + // in which all state transitions are allowed. + + + + + + + Creates a new Ergodic topology for a given number of states. + + + The number of states to be used in the model. + + + + + Creates a new Ergodic topology for a given number of states. + + + The number of states to be used in the model. + Whether to initialize the model with random probabilities + or uniformly with 1 / number of states. Default is false (default is + to use 1/states). + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + + Gets the number of states in this topology. + + + + + + Gets or sets whether the transition matrix + should be initialized with random probabilities + or not. Default is false. + + + + + + Forward Topology for Hidden Markov Models. + + + + + Forward topologies are commonly used to initialize models in which + training sequences can be organized in samples, such as in the recognition + of spoken words. In spoken word recognition, several examples of a single + word can (and should) be used to train a single model, to achieve the most + general model able to generalize over a great number of word samples. + + + Forward models can typically have a large number of states. + + + References: + + + Alexander Schliep, "Learning Hidden Markov Model Topology". + + Richard Hughey and Anders Krogh, "Hidden Markov models for sequence analysis: + extension and analysis of the basic method", CABIOS 12(2):95-107, 1996. Available in: + http://compbio.soe.ucsc.edu/html_format_papers/hughkrogh96/cabios.html + + + + + + + + + + + + In the following example, we will create a Forward-only + discrete-density hidden Markov model. + + + // Create a new Forward-only hidden Markov model with + // three forward-only states and four sequence symbols. + var model = new HiddenMarkovModel(new Forward(3), 4); + + // After creation, the state transition matrix for the model + // should be given by: + // + // { 0.33, 0.33, 0.33 } + // { 0.00, 0.50, 0.50 } + // { 0.00, 0.00, 1.00 } + // + // in which no backward transitions are allowed (have zero probability). + + + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + The maximum number of forward transitions allowed + for a state. Default is to use the same as the number of states (all forward + connections are allowed). + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + Whether to initialize the model with random probabilities + or uniformly with 1 / number of states. Default is false (default is + to use 1/states). + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + The maximum number of forward transitions allowed + for a state. Default is to use the same as the number of states (all forward + connections are allowed). + Whether to initialize the model with random probabilities + or uniformly with 1 / number of states. Default is false (default is + to use 1/states). + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + + Gets the number of states in this topology. + + + + + + Gets or sets the maximum deepness level allowed + for the forward state transition chains. + + + + + + Gets or sets whether the transition matrix + should be initialized with random probabilities + or not. Default is false. + + + + + + Gets the initial state probabilities. + + + + + + Common interface for Linear Regression Models. + + + + + This interface specifies a common interface for querying + a linear regression model. + + Since a closed-form solution exists for fitting most linear + models, each of the models may also implement a Regress method + for computing actual regression. + + + + + + Computes the model output for a given input. + + + + + + Multiple Linear Regression. + + + + + In multiple linear regression, the model specification is that the dependent + variable, denoted y_i, is a linear combination of the parameters (but need not + be linear in the independent x_i variables). As the linear regression has a + closed form solution, the regression coefficients can be computed by calling + the method only once. + + + + + The following example shows how to fit a multiple linear regression model + to model a plane as an equation in the form ax + by + c = z. + + + // We will try to model a plane as an equation in the form + // "ax + by + c = z". We have two input variables (x and y) + // and we will be trying to find two parameters a and b and + // an intercept term c. + + // Create a multiple linear regression for two input and an intercept + MultipleLinearRegression target = new MultipleLinearRegression(2, true); + + // Now suppose we have some points + double[][] inputs = + { + new double[] { 1, 1 }, + new double[] { 0, 1 }, + new double[] { 1, 0 }, + new double[] { 0, 0 }, + }; + + // located in the same Z (z = 1) + double[] outputs = { 1, 1, 1, 1 }; + + + // Now we will try to fit a regression model + double error = target.Regress(inputs, outputs); + + // As result, we will be given the following: + double a = target.Coefficients[0]; // a = 0 + double b = target.Coefficients[1]; // b = 0 + double c = target.Coefficients[2]; // c = 1 + + // Now, considering we were trying to find a plane, which could be + // described by the equation ax + by + c = z, and we have found the + // aforementioned coefficients, we can conclude the plane we were + // trying to find is giving by the equation: + // + // ax + by + c = z + // -> 0x + 0y + 1 = z + // -> 1 = z. + // + // The plane containing the aforementioned points is, in fact, + // the plane given by z = 1. + + + + + + + Creates a new Multiple Linear Regression. + + + The number of inputs for the regression. + + + + + Creates a new Multiple Linear Regression. + + + The number of inputs for the regression. + True to use an intercept term, false otherwise. Default is false. + + + + + Performs the regression using the input vectors and output + data, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + + Set to true to force the use of the . + This will avoid any rank exceptions, but might be more computing intensive. + + The Sum-Of-Squares error of the regression. + + + + + Performs the regression using the input vectors and output + data, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + The Sum-Of-Squares error of the regression. + + + + + Performs the regression using the input vectors and output + data, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + Gets the Fisher's information matrix. + + Set to true to force the use of the . + This will avoid any rank exceptions, but might be more computing intensive. + + The Sum-Of-Squares error of the regression. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Computes the Multiple Linear Regression for an input vector. + + + The input vector. + + The calculated output. + + + + + Computes the Multiple Linear Regression for input vectors. + + + The input vector data. + + The calculated outputs. + + + + + Returns a System.String representing the regression. + + + + + + Creates a new linear regression directly from data points. + + + The input vectors x. + The output vectors y. + + A linear regression f(x) that most approximates y. + + + + + Returns a that represents this instance. + + + The format to use.-or- A null reference (Nothing in Visual Basic) to use + the default format defined for the type of the System.IFormattable implementation. + The provider to use to format the value.-or- A null reference (Nothing in + Visual Basic) to obtain the numeric format information from the current locale + setting of the operating system. + + + A that represents this instance. + + + + + + Gets the coefficients used by the regression model. If the model + contains an intercept term, it will be in the end of the vector. + + + + + + Gets the number of inputs for the regression model. + + + + + + Gets whether this model has an additional intercept term. + + + + + + Multivariate Linear Regression. + + + Multivariate Linear Regression is a generalization of + Multiple Linear Regression to allow for multiple outputs. + + + + + // The multivariate linear regression is a generalization of + // the multiple linear regression. In the multivariate linear + // regression, not only the input variables are multivariate, + // but also are the output dependent variables. + + // In the following example, we will perform a regression of + // a 2-dimensional output variable over a 3-dimensional input + // variable. + + double[][] inputs = + { + // variables: x1 x2 x3 + new double[] { 1, 1, 1 }, // input sample 1 + new double[] { 2, 1, 1 }, // input sample 2 + new double[] { 3, 1, 1 }, // input sample 3 + }; + + double[][] outputs = + { + // variables: y1 y2 + new double[] { 2, 3 }, // corresponding output to sample 1 + new double[] { 4, 6 }, // corresponding output to sample 2 + new double[] { 6, 9 }, // corresponding output to sample 3 + }; + + // With a quick eye inspection, it is possible to see that + // the first output variable y1 is always the double of the + // first input variable. The second output variable y2 is + // always the triple of the first input variable. The other + // input variables are unused. Nevertheless, we will fit a + // multivariate regression model and confirm the validity + // of our impressions: + + // Create a new multivariate linear regression with 3 inputs and 2 outputs + var regression = new MultivariateLinearRegression(3, 2); + + // Now, compute the multivariate linear regression: + double error = regression.Regress(inputs, outputs); + + // At this point, the regression error will be 0 (the fit was + // perfect). The regression coefficients for the first input + // and first output variables will be 2. The coefficient for + // the first input and second output variables will be 3. All + // others will be 0. + // + // regression.Coefficients should be the matrix given by + // + // double[,] coefficients = { + // { 2, 3 }, + // { 0, 0 }, + // { 0, 0 }, + // }; + // + + // The first input variable coefficients will be 2 and 3: + Assert.AreEqual(2, regression.Coefficients[0, 0], 1e-10); + Assert.AreEqual(3, regression.Coefficients[0, 1], 1e-10); + + // And all other coefficients will be 0: + Assert.AreEqual(0, regression.Coefficients[1, 0], 1e-10); + Assert.AreEqual(0, regression.Coefficients[1, 1], 1e-10); + Assert.AreEqual(0, regression.Coefficients[2, 0], 1e-10); + Assert.AreEqual(0, regression.Coefficients[2, 1], 1e-10); + + // We can also check the r-squared coefficients of determination: + double[] r2 = regression.CoefficientOfDetermination(inputs, outputs); + + // Which should be one for both output variables: + Assert.AreEqual(1, r2[0]); + Assert.AreEqual(1, r2[1]); + + + + + + + Creates a new Multivariate Linear Regression. + + + The number of inputs for the regression. + The number of outputs for the regression. + + + + + Creates a new Multivariate Linear Regression. + + + The number of inputs for the regression. + The number of outputs for the regression. + True to use an intercept term, false otherwise. Default is false. + + + + + Creates a new Multivariate Linear Regression. + + + + + + Performs the regression using the input vectors and output + vectors, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + The Sum-Of-Squares error of the regression. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Computes the Multiple Linear Regression output for a given input. + + + A input vector. + The computed output. + + + + + Computes the Multiple Linear Regression output for a given input. + + + An array of input vectors. + The computed outputs. + + + + + Creates a new linear regression directly from data points. + + + The input vectors x. + The output vectors y. + + A linear regression f(x) that most approximates y. + + + + + Computes the model output for a given input. + + + + + Gets the coefficient matrix used by the regression model. Each + column corresponds to the coefficient vector for each of the outputs. + + + + + + Gets the intercept vector used by the multivariate regression model. + + + + + + Gets the number of inputs in the model. + + + + + + Gets the number of outputs in the model. + + + + + + Simple Linear Regression of the form y = Ax + B. + + + + In linear regression, the model specification is that the dependent + variable, y is a linear combination of the parameters (but need not + be linear in the independent variables). As the linear regression + has a closed form solution, the regression coefficients can be + efficiently computed using the Regress method of this class. + + + + + Let's say we have some univariate, continuous sets of input data, + and a corresponding univariate, continuous set of output data, such + as a set of points in R². A simple linear regression is able to fit + a line relating the input variables to the output variables in which + the minimum-squared-error of the line and the actual output points + is minimum. + + + // Let's say we have some univariate, continuous sets of input data, + // and a corresponding univariate, continuous set of output data, such + // as a set of points in R². A simple linear regression is able to fit + // a line relating the input variables to the output variables in which + // the minimum-squared-error of the line and the actual output points + // is minimum. + + // Declare some sample test data. + double[] inputs = { 80, 60, 10, 20, 30 }; + double[] outputs = { 20, 40, 30, 50, 60 }; + + // Create a new simple linear regression + SimpleLinearRegression regression = new SimpleLinearRegression(); + + // Compute the linear regression + regression.Regress(inputs, outputs); + + // Compute the output for a given input. The + double y = regression.Compute(85); // The answer will be 28.088 + + // We can also extract the slope and the intercept term + // for the line. Those will be -0.26 and 50.5, respectively. + double s = regression.Slope; + double c = regression.Intercept; + + + + Now, let's say we would like to perform a regression using an + intermediary transformation, such as for example logarithmic + regression. In this case, all we have to do is to first transform + the input variables into the desired domain, then apply the + regression as normal: + + + // This is the same data from the example available at + // http://mathbits.com/MathBits/TISection/Statistics2/logarithmic.htm + + // Declare your inputs and output data + double[] inputs = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; + double[] outputs = { 6, 9.5, 13, 15, 16.5, 17.5, 18.5, 19, 19.5, 19.7, 19.8 }; + + // Transform inputs to logarithms + double[] logx = Matrix.Log(inputs); + + // Compute a simple linear regression + var lr = new SimpleLinearRegression(); + + // Compute with the log-transformed data + double error = lr.Regress(logx, outputs); + + // Get an expression representing the learned regression model + // We just have to remember that 'x' will actually mean 'log(x)' + string result = lr.ToString("N4", CultureInfo.InvariantCulture); + + // Result will be "y(x) = 6.1082x + 6.0993" + + + + + + + Creates a new Simple Linear Regression of the form y = Ax + B. + + + + + + Performs the regression using the input and output + data, returning the sum of squared errors of the fit. + + + The input data. + The output data. + The regression Sum-of-Squares error. + + + + + Computes the regression output for a given input. + + + An array of input values. + The array of calculated output values. + + + + + Computes the regression for a single input. + + + The input value. + The calculated output. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, or R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Creates a new linear regression directly from data points. + + + The input vectors x. + The output vectors y. + + A linear regression f(x) that most approximates y. + + + + + Computes the model output for a given input. + + + + + Angular coefficient (Slope). + + + + + + Linear coefficient (Intercept). + + + + + + Binary Logistic Regression. + + + + + In statistics, logistic regression (sometimes called the logistic model or + Logit model) is used for prediction of the probability of occurrence of an + event by fitting data to a logistic curve. It is a generalized linear model + used for binomial regression. + + Like many forms of regression analysis, it makes use of several predictor + variables that may be either numerical or categorical. For example, the + probability that a person has a heart attack within a specified time period + might be predicted from knowledge of the person's age, sex and body mass index. + + Logistic regression is used extensively in the medical and social sciences + as well as marketing applications such as prediction of a customer's + propensity to purchase a product or cease a subscription. + + + References: + + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Amos Storkey. (2005). Learning from Data: Learning Logistic Regressors. School of Informatics. + Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + Cosma Shalizi. (2009). Logistic Regression and Newton's Method. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + Edward F. Conor. Logistic Regression. Website. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (This is completely fictional data). + double[][] input = + { + new double[] { 55, 0 }, // 0 - no cancer + new double[] { 28, 0 }, // 0 + new double[] { 65, 1 }, // 0 + new double[] { 46, 0 }, // 1 - have cancer + new double[] { 86, 1 }, // 1 + new double[] { 56, 1 }, // 1 + new double[] { 85, 0 }, // 0 + new double[] { 33, 0 }, // 0 + new double[] { 21, 1 }, // 0 + new double[] { 42, 1 }, // 1 + }; + + // We also know if they have had lung cancer or not, and + // we would like to know whether smoking has any connection + // with lung cancer (This is completely fictional data). + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + + // To verify this hypothesis, we are going to create a logistic + // regression model for those two inputs (age and smoking). + LogisticRegression regression = new LogisticRegression(inputs: 2); + + // Next, we are going to estimate this model. For this, we + // will use the Iteratively Reweighted Least Squares method. + var teacher = new IterativeReweightedLeastSquares(regression); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta = 0; + do + { + // Perform an iteration + delta = teacher.Run(input, output); + + } while (delta > 0.001); + + // At this point, we can compute the odds ratio of our variables. + // In the model, the variable at 0 is always the intercept term, + // with the other following in the sequence. Index 1 is the age + // and index 2 is whether the patient smokes or not. + + // For the age variable, we have that individuals with + // higher age have 1.021 greater odds of getting lung + // cancer controlling for cigarette smoking. + double ageOdds = regression.GetOddsRatio(1); // 1.0208597028836701 + + // For the smoking/non smoking category variable, however, we + // have that individuals who smoke have 5.858 greater odds + // of developing lung cancer compared to those who do not + // smoke, controlling for age (remember, this is completely + // fictional and for demonstration purposes only). + double smokeOdds = regression.GetOddsRatio(2); // 5.8584748789881331 + + + + + + + Creates a new Logistic Regression Model. + + + The number of input variables for the model. + + + + + Creates a new Logistic Regression Model. + + + The number of input variables for the model. + The starting intercept value. Default is 0. + + + + + Gets the 95% confidence interval for the + Odds Ratio for a given coefficient. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Odds Ratio for a given coefficient. + + + + The odds ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + The Odds Ratio for the given coefficient. + + + + + + Constructs a new from + an array of weights (linear coefficients). The first + weight is interpreted as the intercept value. + + + An array of linear coefficients. + + + A whose + are + the same as in the given array. + + + + + + Polynomial Linear Regression. + + + + In linear regression, the model specification is that the dependent + variable, y is a linear combination of the parameters (but need not + be linear in the independent variables). As the linear regression + has a closed form solution, the regression coefficients can be + efficiently computed using the Regress method of this class. + + + + + + Creates a new Polynomial Linear Regression. + + + The degree of the polynomial used by the model. + + + + + Performs the regression using the input and output + data, returning the sum of squared errors of the fit. + + + The input data. + The output data. + + The regression Sum-of-Squares error. + + + + + Computes the regressed model output for the given inputs. + + + The input data. + The computed outputs. + + + + + Computes the regressed model output for the given input. + + + The input value. + The computed output. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Creates a new polynomial regression directly from data points. + + + The polynomial degree to use. + The input vectors x. + The output vectors y. + + A polynomial regression f(x) that most approximates y. + + + + + Computes the model output for a given input. + + + + + Gets the degree of the polynomial used by the regression. + + + + + + Gets the coefficients of the polynomial regression, + with the first being the higher-order term and the last + the intercept term. + + + + + + Newton-Raphson learning updates for Cox's Proportional Hazards models. + + + + + + Constructs a new Newton-Raphson learning algorithm + for Cox's Proportional Hazards models. + + + The model to estimate. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The input data. + The time-to-event for the training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The input data. + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The input data. + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Gets or sets the maximum absolute parameter change detectable + after an iteration of the algorithm used to detect convergence. + Default is 1e-5. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Gets or sets the number of performed iterations. + + + + + + Gets or sets the hazard estimator that should be used by the + proportional hazards learning algorithm. Default is to use + . + + + + + + Gets or sets the ties handling method to be used by the + proportional hazards learning algorithm. Default is to use + 's method. + + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets the Hessian matrix computed in + the last Newton-Raphson iteration. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets a value indicating whether standard + errors should be computed at the end of the next + iterations. + + + true to compute standard errors; otherwise, false. + + + + + + Gets or sets a value indicating whether an estimate + of the baseline hazard function should be computed + at the end of the next iterations. + + + true to compute the baseline function; otherwise, false. + + + + + + Gets or sets a value indicating whether the Cox model should + be computed using the mean-centered version of the covariates. + Default is true. + + + + + + Gets or sets the smoothing factor used to avoid numerical + problems in the beginning of the training. Default is 0.1. + + + + + + Kalman filter for 2D coordinate systems. + + + + + References: + + + Student Dave's tutorial on Object Tracking in Images Using 2D Kalman Filters. + Available on: http://studentdavestutorials.weebly.com/object-tracking-2d-kalman-filter.html + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The sampling rate. + The acceleration. + The acceleration standard deviation. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Gets or sets the current X position of the object. + + + + + + Gets or sets the current Y position of the object. + + + + + + Gets or sets the current object's velocity in the X axis. + + + + + + Gets or sets the current object's velocity in the Y axis. + + + + + + Gets or sets the observational noise + of the current object's in the X axis. + + + + + + Gets or sets the observational noise + of the current object's in the Y axis. + + + + + + Common interface for running Markov filters. + + + + + Clears all measures previously computed + and indicate the sequence has ended. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Base class for running hidden Markov filters. + + + + + + Initializes a new instance of the class. + + + The Markov model. + + + + + Clears all measures previously computed + and indicate the sequence has ended. + + + + + + Clears all measures previously computed. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Hidden Markov Classifier filter. + + + + + + + + + Creates a new . + + + The hidden Markov classifier model. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + + The next log-likelihood if the occurrence of + is registered. + + The value to be checked. + + + + + Clears all measures previously computed. + + + + + + Gets the used in this filter. + + + + + + Gets the class response probabilities measuring + the likelihood of the current sequence belonging + to each of the classes. + + + + + + Gets the current classification label for + the sequence up to the current observation. + + + + + + Gets the current rejection threshold level + generated by classifier's threshold model. + + + + + + Hidden Markov Classifier filter for general state distributions. + + + + + + + + + Creates a new . + + + The hidden Markov classifier model. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + + The next log-likelihood if the occurrence of + is registered. + + The value to be checked. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + + The next log-likelihood if the occurrence of + is registered. + + The value to be checked. + + + + + Clears all measures previously computed. + + + + + + Gets the used in this filter. + + + + + + Gets the class response probabilities measuring + the likelihood of the current sequence belonging + to each of the classes. + + + + + + Gets the current classification label for + the sequence up to the current observation. + + + + + + Gets the current rejection threshold level + generated by classifier's threshold model. + + + + + + Hidden Markov Model filter. + + + + + + Creates a new . + + + The hidden Markov model to use in this filter. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + The value to be checked. + + + + + Clears this instance. + + + + + + Gets the used in this filter. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Common interface for running statistics. + + + Running statistics are measures computed as data becomes available. + When using running statistics, there is no need to know the number of + samples a priori, such as in the case of the direct . + + + + + + Gets the current mean of the gathered values. + + + The mean of the values. + + + + + Gets the current variance of the gathered values. + + + The variance of the values. + + + + + Gets the current standard deviation of the gathered values. + + + The standard deviation of the values. + + + + + Common interface for moving-window statistics. + + + + Moving-window statistics such as moving average and moving variance, + are a type of finite impulse response filters used to analyze a set + of data points by creating a series of averages of different subsets + of the full data set. + + + + + + Gets the size of the window. + + + The window's size. + + + + + Gets the number of samples within the window. + + + The number of samples within the window. + + + + + Moving-window circular statistics. + + + + + + Initializes a new instance of the class. + + + The size of the moving window. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Gets the sum of the sines of the angles within the window. + + + + + + Gets the sum of the cosines of the angles within the window. + + + + + + Gets the size of the window. + + + The window's size. + + + + + Gets the number of samples within the window. + + + The number of samples within the window. + + + + + Gets the mean of the angles within the window. + + + The mean. + + + + + Gets the variance of the angles within the window. + + + + + + Gets the standard deviation of the angles within the window. + + + + + + Hidden Markov Model filter. + + + + + + Creates a new . + + + The hidden Markov model to use in this filter. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + The value to be checked. + + + + + Clears this instance. + + + + + + Gets the used in this filter. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Running (normal) statistics. + + + + + + This class computes the running variance using Welford’s method. Running statistics + need only one pass over the data, and do not require all data to be available prior + to computing. + + + + References: + + + John D. Cook. Accurately computing running variance. Available on: + http://www.johndcook.com/standard_deviation.html + + Chan, Tony F.; Golub, Gene H.; LeVeque, Randall J. (1983). Algorithms for + Computing the Sample Variance: Analysis and Recommendations. The American + Statistician 37, 242-247. + + Ling, Robert F. (1974). Comparison of Several Algorithms for Computing Sample + Means and Variances. Journal of the American Statistical Association, Vol. 69, + No. 348, 859-866. + + + + + + + Initializes a new instance of the class. + + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Gets the current mean of the gathered values. + + + The mean of the values. + + + + + Gets the current variance of the gathered values. + + + The variance of the values. + + + + + Gets the current standard deviation of the gathered values. + + + The standard deviation of the values. + + + + + Moving-window statistics. + + + + + + Initializes a new instance of the class. + + + The size of the moving window. + + + + + Pushes a value into the window. + + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Removes all elements from the window and resets statistics. + + + + + + Gets the sum the values within the window. + + + The sum of values within the window. + + + + + Gets the sum of squared values within the window. + + + The sum of squared values. + + + + + Gets the size of the window. + + + The window's size. + + + + + Gets the number of samples within the window. + + + The number of samples within the window. + + + + + Gets the mean of the values within the window. + + + The mean of the values. + + + + + Gets the variance of the values within the window. + + + The variance of the values. + + + + + Gets the standard deviation of the values within the window. + + + The standard deviation of the values. + + + + + Contains 34+ statistical hypothesis tests, including one way + and two-way ANOVA tests, non-parametric tests such as the + Kolmogorov-Smirnov test and the + Sign Test for the Median, contingency table + tests such as the Kappa test, including variations for + multiple tables, as well as the + Bhapkar and Bowker tests; and the more traditional + Chi-Square, Z, F + , T and Wald tests. + + + + + This namespace contains a suite of parametric and non-parametric hypothesis tests. Every + test in this library implements the interface, which defines + a few key methods and properties to assert whether + an statistical hypothesis can be supported or not. Every hypothesis test is associated + with an statistic distribution + which can in turn be queried, inspected and computed as any other distribution in the + namespace. + + + By default, tests are created using a 0.05 significance level + , which in the framework is referred as the test's size. P-Values are also ready to be + inspected by checking a test's P-Value property. + + + Furthermore, several tests in this namespace also support + power analysis. The power analysis of a test can be used to suggest an optimal number of samples + which have to be obtained in order to achieve a more interpretable or useful result while doing hypothesis + testing. Power analyses implement the interface, and analyses are available + for the one sample Z, and T tests, + as well as their two sample versions. + + + Some useful parametric tests are the , , + , , , + and . Useful non-parametric tests include the , + , and the . + + + Tests are also available for two or more samples. In this case, we can find two sample variants for the + , , , + , , , + , as well as the for unpaired samples. For + multiple samples we can find the and , as well as the + and . + + + Finally, the namespace also includes several tests for contingency tables. + Those tests include Kappa test for inter-rater agreement and its variants, such + as the , and . + Other tests include , , , + , and the . + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + Hypothesis test for a single ROC curve. + + + + + + + + One-sample Z-Test (location test). + + + + + The term Z-test is often used to refer specifically to the one-sample + location test comparing the mean of a set of measurements to a given + constant. Due to the central limit theorem, many test statistics are + approximately normally distributed for large samples. Therefore, many + statistical tests can be performed as approximate Z-tests if the sample + size is large. + + + If the test is , the null hypothesis + can be rejected in favor of the alternate hypothesis + specified at the creation of the test. + + + This test supports creating power analyses + through its property. + + + References: + + + Wikipedia, The Free Encyclopedia. Z-Test. Available on: + http://en.wikipedia.org/wiki/Z-test + + + + + + This example has been gathered from the Wikipedia's page about + the Z-Test, available from: http://en.wikipedia.org/wiki/Z-test + + + Suppose there is a text comprehension test being run across + a given demographic region. The mean score of the population + from this entire region are around 100 points, with a standard + deviation of 12 points. + + There is a local school, however, whose 55 students attained + an average score in the test of only about 96 points. Would + their scores be surprisingly that low, or could this event + have happened due to chance? + + + // So we would like to check that a sample of + // 55 students with a mean score of 96 points: + + int sampleSize = 55; + double sampleMean = 96; + + // Was expected to have happened by chance in a population with + // an hypothesized mean of 100 points and standard deviation of + // about 12 points: + + double standardDeviation = 12; + double hypothesizedMean = 100; + + + // So we start by creating the test: + ZTest test = new ZTest(sampleMean, standardDeviation, sampleSize, + hypothesizedMean, OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Now, we can check whether this result would be + // unlikely under a standard significance level: + + bool significant = test.Significant; + + // We can also check the test statistic and its P-Value + double statistic = test.Statistic; + double pvalue = test.PValue; + + + + + + + + + + + + + + + Base class for Hypothesis Tests. + + + + A statistical hypothesis test is a method of making decisions using data, whether from + a controlled experiment or an observational study (not controlled). In statistics, a + result is called statistically significant if it is unlikely to have occurred by chance + alone, according to a pre-determined threshold probability, the significance level. + + + References: + + + Wikipedia, The Free Encyclopedia. Statistical Hypothesis Testing. + + + + + + + Common interface for Hypothesis tests depending on a statistical distribution. + + + The test statistic distribution. + + + + + Common interface for Hypothesis tests depending on a statistical distribution. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the test type. + + + + + + Gets whether the null hypothesis should be rejected. + + + + A test result is said to be statistically significant when the + result would be very unlikely to have occurred by chance alone. + + + + + + Gets the distribution associated + with the test statistic. + + + + + + Initializes a new instance of the class. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Called whenever the test significance level changes. + + + + + + Converts the numeric P-Value of this test to its equivalent string representation. + + + + + + Converts the numeric P-Value of this test to its equivalent string representation. + + + + + + Gets the distribution associated + with the test statistic. + + + + + + Gets the P-value associated with this test. + + + + + In statistical hypothesis testing, the p-value is the probability of + obtaining a test statistic at least as extreme as the one that was + actually observed, assuming that the null hypothesis is true. + + The lower the p-value, the less likely the result can be explained + by chance alone, assuming the null hypothesis is true. + + + + + + Gets the test statistic. + + + + + + Gets the test type. + + + + + + Gets the significance level for the + test. Default value is 0.05 (5%). + + + + + + Gets whether the null hypothesis should be rejected. + + + + A test result is said to be statistically significant when the + result would be very unlikely to have occurred by chance alone. + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Constructs a Z test. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The sample's mean. + The sample's standard error. + The hypothesized value for the distribution's mean. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The sample's mean. + The sample's standard deviation. + The hypothesized value for the distribution's mean. + The sample's size. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The test statistic, as given by (x-μ)/SE. + The alternate hypothesis to test. + + + + + Computes the Z test. + + + + + + Computes the Z test. + + + + + + Constructs a T-Test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + The tail of the test distribution. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + The tail of the test distribution. + + The test statistic which would generate the given p-value. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the standard error of the estimated value. + + + + + + Gets the estimated value, such as the mean estimated from a sample. + + + + + + Gets the hypothesized value. + + + + + + Gets the 95% confidence interval for the . + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Creates a new . + + + The curve to be tested. + The hypothesized value for the ROC area. + The alternative hypothesis (research hypothesis) to test. + + + + + Calculates the standard error of an area calculation for a + curve with the given number of positive and negatives instances + + + + + + Calculates the standard error of an area calculation for a + curve with the given number of positive and negatives instances + + + + + + Gets the ROC curve being tested. + + + + + + Kappa test for the average of two groups of contingency tables. + + + + + The two-matrix Kappa test tries to assert whether the Kappa measure + of two groups of contingency tables, each group created by a different + rater or classification model and measured repeatedly, differs significantly. + + + This is a two sample t-test kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + + + + + + + + + + Two-sample Student's T test. + + + + + The two-sample t-test assesses whether the means of two groups are statistically + different from each other. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's T-Test. + + William M.K. Trochim. The T-Test. Research methods Knowledge Base, 2009. + Available on: http://www.le.ac.uk/bl/gat/virtualfc/Stats/ttest.html + + Graeme D. Ruxton. The unequal variance t-test is an underused alternative to Student's + t-test and the Mann–Whitney U test. Oxford Journals, Behavioral Ecology Volume 17, Issue 4, pp. + 688-690. 2006. Available on: http://beheco.oxfordjournals.org/content/17/4/688.full + + + + + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Tests whether the means of two samples are different. + + + The first sample. + The second sample. + The hypothesized sample difference. + True to assume equal variances, false otherwise. Default is true. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests whether the means of two samples are different. + + + The first sample's mean. + The second sample's mean. + The first sample's variance. + The second sample's variance. + The number of observations in the first sample. + The number of observations in the second sample. + True assume equal variances, false otherwise. Default is true. + The hypothesized sample difference. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new two-sample T-Test. + + + + + Computes the T Test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets whether the test assumes equal sample variance. + + + + + + Gets the standard error for the difference. + + + + + + Gets the combined sample variance. + + + + + + Gets the estimated value for the first sample. + + + + + + Gets the estimated value for the second sample. + + + + + + Gets the hypothesized difference between the two estimated values. + + + + + + Gets the actual difference between the two estimated values. + + + + + Gets the degrees of freedom for the test statistic. + + + + + + Gets the 95% confidence interval for the + statistic. + + + + + + Creates a new Two-Table Mean Kappa test. + + + The average kappa value for the first group of contingency tables. + The average kappa value for the second group of contingency tables. + The kappa's variance in the first group of tables. + The kappa's variance in the first group of tables. + The number of contingency tables averaged in the first group. + The number of contingency tables averaged in the second group. + True to assume equal variances, false otherwise. Default is true. + The alternative hypothesis (research hypothesis) to test. + The hypothesized difference between the two Kappa values. + + + + + Creates a new Two-Table Mean Kappa test. + + + The first group of contingency tables. + The second group of contingency tables. + True to assume equal variances, false otherwise. Default is true. + The hypothesized difference between the two average Kappa values. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the variance for the first Kappa value. + + + + + + Gets the variance for the second Kappa value. + + + + + + Kappa Test for multiple contingency tables. + + + + + The multiple-matrix Kappa test tries to assert whether the Kappa measure + of many contingency tables, each of which created by a different rater + or classification model, differs significantly. The computations are + based on the pages 607, 608 of (Fleiss, 2003). + + + This is a Chi-square kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + + + + + + + + + Two-Sample (Goodness-of-fit) Chi-Square Test (Upper Tail) + + + + + A chi-square test (also chi-squared or χ² test) is any statistical + hypothesis test in which the sampling distribution of the test statistic + is a chi-square distribution when + the null hypothesis is true, or any in which this is asymptotically true, + meaning that the sampling distribution (if the null hypothesis is true) + can be made to approximate a chi-square distribution as closely as desired + by making the sample size large enough. + + The chi-square test is used whenever one would like to test whether the + actual data differs from a random distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Chi-Square Test. Available on: + http://en.wikipedia.org/wiki/Chi-square_test + + + J. S. McLaughlin. Chi-Square Test. Available on: + http://www2.lv.psu.edu/jxm57/irp/chisquar.html + + + + + + The following example has been based on the example section + of the + Pearson's chi-squared test article on Wikipedia. + + + // Suppose we would like to test the hypothesis that a random sample of + // 100 people has been drawn from a population in which men and women are + // equal in frequency. + + // Under this hypothesis, the observed number of men and women would be + // compared to the theoretical frequencies of 50 men and 50 women. So, + // after drawing our sample, we found out that there were 44 men and 56 + // women in the sample: + + // man woman + double[] observed = { 44, 56 }; + double[] expected = { 50, 50 }; + + // If the null hypothesis is true (i.e., men and women are chosen with + // equal probability), the test statistic will be drawn from a chi-squared + // distribution with one degree of freedom. If the male frequency is known, + // then the female frequency is determined. + // + int degreesOfFreedom = 1; + + // So now we have: + // + var chi = new ChiSquareTest(expected, observed, degreesOfFreedom); + + + // The chi-squared distribution for 1 degree of freedom shows that the + // probability of observing this difference (or a more extreme difference + // than this) if men and women are equally numerous in the population is + // approximately 0.23. + + double pvalue = chi.PValue; // 0.23 + + // This probability is higher than conventional criteria for statistical + // significance (0.001 or 0.05), so normally we would not reject the null + // hypothesis that the number of men in the population is the same as the + // number of women. + + bool significant = chi.Significant; // false + + + + + + + + + Constructs a Chi-Square Test. + + + The test statistic. + The chi-square distribution degrees of freedom. + + + + + Constructs a Chi-Square Test. + + + The expected variable values. + The observed variable values. + The chi-square distribution degrees of freedom. + + + + + Constructs a Chi-Square Test. + + + + + + Constructs a Chi-Square Test. + + + + + + Constructs a Chi-Square Test. + + + + + + Constructs a Chi-Square Test. + + + + + + Computes the Chi-Square Test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the degrees of freedom for the Chi-Square distribution. + + + + + + Creates a new multiple table Kappa test. + + + The kappa values. + The variance for each kappa value. + + + + + Creates a new multiple table Kappa test. + + + The contingency tables. + + + + + Computes the multiple matrix Kappa test. + + + + + + Gets the overall Kappa value + for the many contingency tables. + + + + + + Gets the overall Kappa variance + for the many contingency tables. + + + + + + Gets the variance for each kappa value. + + + + + + Gets the kappa for each contingency table. + + + + + + Fisher's exact test for contingency tables. + + + + + This test statistic distribution is the + Hypergeometric. + + + + + + + + Constructs a new Fisher's exact test. + + + The matrix to be tested. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the Fisher's exact test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis + can be rejected in favor of this alternative hypothesis. + + + + + + One-sample Anderson-Darling (AD) test. + + + + + + Creates a new Anderson-Darling test. + + + The sample we would like to test as belonging to the . + A fully specified distribution. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the theoretical, hypothesized distribution for the samples, + which should have been stated before any measurements. + + + + + + Shapiro-Wilk test for normality. + + + + + The Shapiro–Wilk test is a test of normality in frequentist statistics. It was published in 1965 by Samuel Sanford Shapiro and Martin Wilk. + + + + References: + + + Wikipedia, The Free Encyclopedia. Shapiro-Wilk test. Available on: + http://en.wikipedia.org/wiki/Shapiro%E2%80%93Wilk_test + + + + + + + Creates a new Shapiro-Wilk test. + + + The sample we would like to test. + + + The sample must contain at least 4 observations. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Multinomial test (approximated). + + + + + In statistics, the multinomial test is the test of the null hypothesis that the + parameters of a multinomial distribution equal specified values. The test can be + approximated using a chi-square distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Multinomial Test. Available on: + http://en.wikipedia.org/wiki/Multinomial_test + + + + + + + The following example is based on the example available on About.com Statistics, + An Example of Chi-Square Test for a Multinomial Experiment By Courtney Taylor. + + In this example, we would like to test if a die is fair. For this, we + will be rolling the die 600 times, annotating the result every time + the die falls. In the end, we got a one 106 times, a two 90 times, a + three 98 times, a four 102 times, a five 100 times and a six 104 times: + + + int[] sample = { 106, 90, 98, 102, 100, 104 }; + + // If the die was fair, we should note that we would be expecting the + // probabilities to be all equal to 1 / 6: + + double[] hypothesizedProportion = + { + // 1 2 3 4 5 6 + 1 / 6.0, 1 / 6.0, 1 / 6.0, 1 / 6.0, 1 / 6.0, 1 / 6.0, + }; + + // Now, we create our test using the samples and the expected proportion + MultinomialTest test = new MultinomialTest(sample, hypothesizedProportion); + + double chiSquare = test.Statistic; // 1.6 + bool significant = test.Significant; // false + + + + Since the test didn't come up significant, it means that we + don't have enough evidence to to reject the null hypothesis + that the die is fair. + + + + + + + + + Creates a new Multinomial test. + + + The proportions for each category in the sample. + The number of observations in the sample. + + + + + Creates a new Multinomial test. + + + The number of occurrences for each category in the sample. + + + + + Creates a new Multinomial test. + + + The number of occurrences for each category in the sample. + The hypothesized category proportions. Default is + to assume uniformly equal proportions. + + + + + Creates a new Multinomial test. + + + The proportions for each category in the sample. + The number of observations in the sample. + The hypothesized category proportions. Default is + to assume uniformly equal proportions. + + + + + Creates a new Multinomial test. + + + The categories for each observation in the sample. + The number of possible categories. + + + + + Creates a new Multinomial test. + + + The categories for each observation in the sample. + The number of possible categories. + The hypothesized category proportions. Default is + to assume uniformly equal proportions. + + + + + Computes the Multinomial test. + + + + + + Gets the observed sample proportions. + + + + + + Gets the hypothesized population proportions. + + + + + + Bartlett's test for equality of variances. + + + + + In statistics, Bartlett's test is used to test if k samples are from populations + with equal variances. Equal variances across samples is called homoscedasticity + or homogeneity of variances. Some statistical tests, for example the + analysis of variance, assume that variances are equal across groups or samples. + The Bartlett test can be used to verify that assumption. + + Bartlett's test is sensitive to departures from normality. That is, if the samples + come from non-normal distributions, then Bartlett's test may simply be testing for + non-normality. Levene's test and the Brown–Forsythe test + are alternatives to the Bartlett test that are less sensitive to departures from + normality. + + + References: + + + Wikipedia, The Free Encyclopedia. Bartlett's test. Available on: + http://en.wikipedia.org/wiki/Bartlett's_test + + + + + + + + + + + + Tests the null hypothesis that all group variances are equal. + + + The grouped samples. + + + + + Levene test computation methods. + + + + + + The test has been computed using the Mean. + + + + + + The test has been computed using the Median + (which is known as the Brown-Forsythe test). + + + + + + The test has been computed using the trimmed mean. + + + + + + Levene's test for equality of variances. + + + + + In statistics, Levene's test is an inferential statistic used to assess the + equality of variances for a variable calculated for two or more groups. Some + common statistical procedures assume that variances of the populations from + which different samples are drawn are equal. Levene's test assesses this + assumption. It tests the null hypothesis that the population variances are + equal (called homogeneity of variance or homoscedasticity). If the resulting + P-value of Levene's test is less than some significance level (typically 0.05), + the obtained differences in sample variances are unlikely to have occurred based + on random sampling from a population with equal variances. Thus, the null hypothesis + of equal variances is rejected and it is concluded that there is a difference + between the variances in the population. + + + Some of the procedures typically assuming homoscedasticity, for which one can use + Levene's tests, include analysis of variance and + t-tests. Levene's test is often used before a comparison of means. When Levene's + test shows significance, one should switch to generalized tests, free from homoscedasticity + assumptions. Levene's test may also be used as a main test for answering a stand-alone + question of whether two sub-samples in a given population have equal or different variances. + + + References: + + + Wikipedia, The Free Encyclopedia. Levene's test. Available on: + http://en.wikipedia.org/wiki/Levene's_test + + + + + + + + + + + + Snedecor's F-Test. + + + + + A F-test is any statistical test in which the test statistic has an + F-distribution under the null hypothesis. + It is most often used when comparing statistical models that have been fit + to a data set, in order to identify the model that best fits the population + from which the data were sampled. + + + References: + + + Wikipedia, The Free Encyclopedia. F-Test. Available on: + http://en.wikipedia.org/wiki/F-test + + + + + + + + + // The following example has been based on the page "F-Test for Equality + // of Two Variances", from NIST/SEMATECH e-Handbook of Statistical Methods: + // + // http://www.itl.nist.gov/div898/handbook/eda/section3/eda359.htm + // + + // Consider a data set containing 480 ceramic strength + // measurements for two batches of material. The summary + // statistics for each batch are shown below: + + // Batch 1: + int numberOfObservations1 = 240; + // double mean1 = 688.9987; + double stdDev1 = 65.54909; + double var1 = stdDev1 * stdDev1; + + // Batch 2: + int numberOfObservations2 = 240; + // double mean2 = 611.1559; + double stdDev2 = 61.85425; + double var2 = stdDev2 * stdDev2; + + // Here, we will be testing the null hypothesis that + // the variances for the two batches are equal. + + int degreesOfFreedom1 = numberOfObservations1 - 1; + int degreesOfFreedom2 = numberOfObservations2 - 1; + + // Now we can create a F-Test to test the difference between variances + var ftest = new FTest(var1, var2, degreesOfFreedom1, degreesOfFreedom2); + + double statistic = ftest.Statistic; // 1.123037 + double pvalue = ftest.PValue; // 0.185191 + bool significant = ftest.Significant; // false + + // The F test indicates that there is not enough evidence + // to reject the null hypothesis that the two batch variances + // are equal at the 0.05 significance level. + + + + + + + + + Creates a new F-Test for a given statistic with given degrees of freedom. + + + The variance of the first sample. + The variance of the second sample. + The degrees of freedom for the first sample. + The degrees of freedom for the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new F-Test for a given statistic with given degrees of freedom. + + + The test statistic. + The degrees of freedom for the numerator. + The degrees of freedom for the denominator. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the F-test. + + + + + + Creates a new F-Test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the degrees of freedom for the + numerator in the test distribution. + + + + + + Gets the degrees of freedom for the + denominator in the test distribution. + + + + + + Tests the null hypothesis that all group variances are equal. + + + The grouped samples. + True to use the median in the Levene calculation. + False to use the mean. Default is false (use the mean). + + + + + Tests the null hypothesis that all group variances are equal. + + + The grouped samples. + The percentage of observations to discard + from the sample when computing the test with the truncated mean. + + + + + Gets the method used to compute the Levene's test. + + + + + + Contains methods for power analysis of several related hypothesis tests, + including support for automatic sample size estimation. + + + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + T-Test for two paired samples. + + + + + The Paired T-test can be used when the samples are dependent; that is, when there + is only one sample that has been tested twice (repeated measures) or when there are + two samples that have been matched or "paired". This is an example of a paired difference + test. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's t-test. + Available from: http://en.wikipedia.org/wiki/Student%27s_t-test#Dependent_t-test_for_paired_samples + + + + + + Suppose we would like to know the effect of a treatment (such + as a new drug) in improving the well-being of 9 patients. The + well-being is measured in a discrete scale, going from 0 to 10. + + // To do so, we need to register the initial state of each patient + // and then register their state after a given time under treatment. + + double[,] patients = + { + // before after + // treatment treatment + /* Patient 1.*/ { 0, 1 }, + /* Patient 2.*/ { 6, 5 }, + /* Patient 3.*/ { 4, 9 }, + /* Patient 4.*/ { 8, 6 }, + /* Patient 5.*/ { 1, 6 }, + /* Patient 6.*/ { 6, 7 }, + /* Patient 7.*/ { 3, 4 }, + /* Patient 8.*/ { 8, 7 }, + /* Patient 9.*/ { 6, 5 }, + }; + + // Extract the before and after columns + double[] before = patients.GetColumn(0); + double[] after = patients.GetColumn(1); + + // Create the paired-sample T-test. Our research hypothesis is + // that the treatment does improve the patient's well-being. So + // we will be testing the hypothesis that the well-being of the + // "before" sample, the first sample, is "smaller" in comparison + // to the "after" treatment group. + + PairedTTest test = new PairedTTest(before, after, + TwoSampleHypothesis.FirstValueIsSmallerThanSecond); + + bool significant = test.Significant; // not significant + double pvalue = test.PValue; // p-value = 0.1650 + double tstat = test.Statistic; // t-stat = -1.0371 + + + + + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Creates a new paired t-test. + + + The observations in the first sample. + The observations in the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the first sample's mean. + + + + + + Gets the second sample's mean. + + + + + + Gets the observed mean difference between the two samples. + + + + + + Gets the standard error of the difference. + + + + + + Gets the size of a sample. + Both samples have equal size. + + + + + + Gets the 95% confidence interval for the + statistic. + + + + + + Z-Test for two sample proportions. + + + + + + + + + Two sample Z-Test. + + + + + References: + + + Wikipedia, The Free Encyclopedia. Z-Test. Available on: + http://en.wikipedia.org/wiki/Z-test + + + + + + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Constructs a Z test. + + + The first data sample. + The second data sample. + The hypothesized sample difference. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The first sample's mean. + The second sample's mean. + The first sample's variance. + The second sample's variance. + The number of observations in the first sample. + The number of observations in the second sample. + The hypothesized sample difference. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + + + + Computes the Z test. + + + + + + Computes the Z test. + + + + + + Computes the Z test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the standard error for the difference. + + + + + + Gets the estimated value for the first sample. + + + + + + Gets the estimated value for the second sample. + + + + + + Gets the hypothesized difference between the two estimated values. + + + + + + Gets the actual difference between the two estimated values. + + + + + Gets the 95% confidence interval for the + statistic. + + + + + + Creates a new Z-Test for two sample proportions. + + + The proportion of success observations in the first sample. + The total number of observations in the first sample. + The proportion of success observations in the second sample. + The total number of observations in the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new Z-Test for two sample proportions. + + + The number of successes in the first sample. + The total number of trials (observations) in the first sample. + The number of successes in the second sample. + The total number of trials (observations) in the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the Z-test for two sample proportions. + + + + + + Hypothesis test for two Receiver-Operating + Characteristic (ROC) curve areas (ROC-AUC). + + + + + + + + + Creates a new test for two ROC curves. + + + The first ROC curve. + The second ROC curve. + The hypothesized difference between the two areas. + The alternative hypothesis (research hypothesis) to test. + + + + + First Receiver-Operating Characteristic curve. + + + + + + First Receiver-Operating Characteristic curve. + + + + + + Gets the summed Kappa variance + for the two contingency tables. + + + + + + Gets the variance for the first Kappa value. + + + + + + Gets the variance for the second Kappa value. + + + + + + Base class for Wilcoxon's W tests. + + + + This is a base class which doesn't need to be used directly. + Instead, you may wish to call + and . + + + + + + + + + + + Creates a new Wilcoxon's W+ test. + + + The signs for the sample differences. + The differences between samples. + The distribution tail to test. + + + + + Creates a new Wilcoxon's W+ test. + + + + + + Computes the Wilcoxon Signed-Rank test. + + + + + + Computes the Wilcoxon Signed-Rank test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the number of samples being tested. + + + + + + Gets the signs for each of the differences. + + + + + + Gets the differences between the samples. + + + + + + Gets the rank statistics for the differences. + + + + + + Mann-Whitney-Wilcoxon test for unpaired samples. + + + + + The Mann–Whitney U test (also called the Mann–Whitney–Wilcoxon (MWW), + Wilcoxon rank-sum test, or Wilcoxon–Mann–Whitney test) is a non-parametric + test of the null hypothesis that two populations are the same against + an alternative hypothesis, especially that a particular population tends + to have larger values than the other. + + + It has greater efficiency than the t-test on + non-normal distributions, such as a mixture + of normal distributions, and it is + nearly as efficient as the t-test on normal + distributions. + + + + + The following example comes from Richard Lowry's page at + http://vassarstats.net/textbook/ch11a.html. As stated by + Richard, this example deals with persons seeking treatment + by claustrophobia. Those persons are randomly divided into + two groups, and each group receive a different treatment + for the disorder. + + + The hypothesis would be that treatment A would more effective + than B. To check this hypothesis, we can use Mann-Whitney's Test + to compare the medians of both groups. + + + // Claustrophobia test scores for people treated with treatment A + double[] sample1 = { 4.6, 4.7, 4.9, 5.1, 5.2, 5.5, 5.8, 6.1, 6.5, 6.5, 7.2 }; + + // Claustrophobia test scores for people treated with treatment B + double[] sample2 = { 5.2, 5.3, 5.4, 5.6, 6.2, 6.3, 6.8, 7.7, 8.0, 8.1 }; + + // Create a new Mann-Whitney-Wilcoxon's test to compare the two samples + MannWhitneyWilcoxonTest test = new MannWhitneyWilcoxonTest(sample1, sample2, + TwoSampleHypothesis.FirstValueIsSmallerThanSecond); + + double sum1 = test.RankSum1; // 96.5 + double sum2 = test.RankSum2; // 134.5 + + double statistic1 = test.Statistic1; // 79.5 + double statistic2 = test.Statistic2; // 30.5 + + double pvalue = test.PValue; // 0.043834132843420748 + + // Check if the test was significant + bool significant = test.Significant; // true + + + + + + + + + + + + Tests whether two samples comes from the + same distribution without assuming normality. + + + The first sample. + The second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the Mann-Whitney-Wilcoxon test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the number of samples in the first sample. + + + + + + Gets the number of samples in the second sample. + + + + + + Gets the rank statistics for the first sample. + + + + + + Gets the rank statistics for the second sample. + + + + + + Gets the sum of ranks for the first sample. Often known as Ta. + + + + + + Gets the sum of ranks for the second sample. Often known as Tb. + + + + + + Gets the difference between the expected value for + the observed value of and its + expected value under the null hypothesis. Often known as Ua. + + + + + + Gets the difference between the expected value for + the observed value of and its + expected value under the null hypothesis. Often known as Ub. + + + + + + Common interface for power analysis objects. + + + + + The power of a statistical test is the probability that it correctly rejects + the null hypothesis when the null hypothesis is false. That is, + + + power = P(reject null hypothesis | null hypothesis is false) + + + + It can be equivalently thought of as the probability of correctly accepting the + alternative hypothesis when the alternative hypothesis is true - that is, the ability + of a test to detect an effect, if the effect actually exists. The power is in general + a function of the possible distributions, often determined by a parameter, under the + alternative hypothesis. As the power increases, the chances of a Type II error occurring + decrease. The probability of a Type II error occurring is referred to as the false + negative rate (β) and the power is equal to 1−β. The power is also known as the sensitivity. + + + + Power analysis can be used to calculate the minimum sample size required so that + one can be reasonably likely to detect an effect of a given size. Power analysis + can also be used to calculate the minimum effect size that is likely to be detected + in a study using a given sample size. In addition, the concept of power is used to + make comparisons between different statistical testing procedures: for example, + between a parametric and a nonparametric test of the same hypothesis. There is also + the concept of a power function of a test, which is the probability of rejecting the + null when the null is true. + + + References: + + + Wikipedia, The Free Encyclopedia. Statistical power. Available on: + http://en.wikipedia.org/wiki/Statistical_power + + + + + + + + + + Gets the test type. + + + + + + Gets the power of the test, also known as the + (1-Beta error rate) or the test's sensitivity. + + + + + + Gets the significance level + for the test. Also known as alpha. + + + + + + Gets the number of samples + considered in the test. + + + + + + Gets the effect size of the test. + + + + + + Common interface for two-sample power analysis objects. + + + + + + Gets the number of observations + contained in the first sample. + + + + + + Gets the number of observations + contained in the second sample. + + + + + + Base class for two sample power analysis methods. + This class cannot be instantiated. + + + + + + Constructs a new power analysis for a two-sample test. + + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + The power for the test under the given conditions. + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the + significance level . + + + The minimum detectable effect + size for the test under the given conditions. + + + + + Computes the minimum significance level for the test + considering the power given in , the + number of samples in and the + effect size . + + + The minimum detectable effect + size for the test under the given conditions. + + + + + Computes the recommended sample size for the test to attain + the power indicated in considering + values of and . + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Gets the minimum difference in the experiment units + to which it is possible to detect a difference. + + + The common standard deviation for the samples. + + The minimum difference in means which can be detected by the test. + + + + + Gets the minimum difference in the experiment units + to which it is possible to detect a difference. + + + The variance for the first sample. + The variance for the second sample. + + The minimum difference in means which can be detected by the test. + + + + + Gets the test type. + + + + + + Gets or sets the power of the test, also + known as the (1-Beta error rate). + + + + + + Gets or sets the significance level + for the test. Also known as alpha. + + + + + + Gets or sets the number of observations + in the first sample considered in the test. + + + + + + Gets or sets the number of observations + in the second sample considered in the test. + + + + + + Gets the total number of observations + in both samples considered in the test. + + + + + + Gets the total number of observations + in both samples considered in the test. + + + + + + Gets or sets the effect size of the test. + + + + + + Power analysis for two-sample Z-Tests. + + + + + Please take a look at the example section. + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Gets the recommended sample size for the test to attain + the power indicating in considering + values of and . + + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the significance + level . + + + + The minimum detectable effect + size for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + The proportion of observations in the second group + when compared to the first group. A proportion of 2:1 results in twice more + samples in the second group than in the first. Default is 1. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The number of observations in the first sample. + The number of observations in the second sample. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Power analysis for two-sample T-Tests. + + + + + There are different ways a power analysis test can be conducted. + + + // Let's say we have two samples, and we would like to know whether those + // samples have the same mean. For this, we can perform a two sample T-Test: + double[] A = { 5.0, 6.0, 7.9, 6.95, 5.3, 10.0, 7.48, 9.4, 7.6, 8.0, 6.22 }; + double[] B = { 5.0, 1.6, 5.75, 5.80, 2.9, 8.88, 4.56, 2.4, 5.0, 10.0 }; + + // Perform the test, assuming the samples have unequal variances + var test = new TwoSampleTTest(A, B, assumeEqualVariances: false); + + double df = test.DegreesOfFreedom; // d.f. = 14.351 + double t = test.Statistic; // t = 2.14 + double p = test.PValue; // p = 0.04999 + bool significant = test.Significant; // true + + // The test gave us an indication that the samples may + // indeed have come from different distributions (whose + // mean value is actually distinct from each other). + + // Now, we would like to perform an _a posteriori_ analysis of the + // test. When doing an a posteriori analysis, we can not change some + // characteristics of the test (because it has been already done), + // but we can measure some important features that may indicate + // whether the test is trustworthy or not. + + // One of the first things would be to check for the test's power. + // A test's power is 1 minus the probability of rejecting the null + // hypothesis when the null hypothesis is actually false. It is + // the other side of the coin when we consider that the P-value + // is the probability of rejecting the null hypothesis when the + // null hypothesis is actually true. + + // Ideally, this should be a high value: + double power = test.Analysis.Power; // 0.5376260 + + // Check how much effect we are trying to detect + double effect = test.Analysis.Effect; // 0.94566 + + // With this power, that is the minimal difference we can spot? + double sigma = Math.Sqrt(test.Variance); + double thres = test.Analysis.Effect * sigma; // 2.0700909090909 + + // This means that, using our test, the smallest difference that + // we could detect with some confidence would be something around + // 2 standard deviations. If we would like to say the samples are + // different when they are less than 2 std. dev. apart, we would + // need to do repeat our experiment differently. + + + + Another way to create the power analysis is to pass the + hypothesis test to the t-test power analysis constructor. + + + // Create an a posteriori analysis of the experiment + var analysis = new TwoSampleTTestPowerAnalysis(test); + + // When creating a power analysis, we have three things we can + // change. We can always freely configure two of those things + // and then ask the analysis to give us the third. + + // Those are: + double e = analysis.Effect; // the test's minimum detectable effect size (0.94566) + double n = analysis.TotalSamples; // the number of samples in the test (21 or (11 + 10)) + double b = analysis.Power; // the probability of committing a type-2 error (0.53) + + // Let's say we would like to create a test with 80% power. + analysis.Power = 0.8; + analysis.ComputeEffect(); // what effect could we detect? + + double detectableEffect = analysis.Effect; // we would detect a difference of 1.290514 + + + + However, to achieve this 80%, we would need to redo our experiment + more carefully. Assuming we are going to redo our experiment, we will + have more freedom about what we can change and what we can not. For + better addressing those points, we will create an a priori analysis + of the experiment: + + + // We would like to know how many samples we would need to gather in + // order to achieve a 80% power test which can detect an effect size + // of one standard deviation: + // + analysis = TwoSampleTTestPowerAnalysis.GetSampleSize + ( + variance1: A.Variance(), + variance2: B.Variance(), + delta: 1.0, // the minimum detectable difference we want + power: 0.8 // the test power that we want + ); + + // How many samples would we need in order to see the effect we need? + int n1 = (int)Math.Ceiling(analysis.Samples1); // 77 + int n2 = (int)Math.Ceiling(analysis.Samples2); // 77 + + // According to our power analysis, we would need at least 77 + // observations in each sample in order to see the effect we + // need with the required 80% power. + + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The proportion of observations in the second group + when compared to the first group. A proportion of 2:1 results in twice more + samples in the second group than in the first. Default is 1. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The first sample variance. + The second sample variance. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The proportion of observations in the second group + when compared to the first group. A proportion of 2:1 results in twice more + samples in the second group than in the first. Default is 1. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Base class for one sample power analysis methods. + This class cannot be instantiated. + + + + + + Constructs a new power analysis for a one-sample test. + + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + The power for the test under the given conditions. + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the significance + level . + + + The minimum detectable effect + size for the test under the given conditions. + + + + + Computes recommended sample size for the test to attain + the power indicated in considering + values of and . + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Gets the minimum difference in the experiment units + to which it is possible to detect a difference. + + + The standard deviation for the samples. + + The minimum difference in means which can be detected by the test. + + + + + Gets the test type. + + + + + + Gets or sets the power of the test, also + known as the (1-Beta error rate). + + + + + + Gets or sets the significance level + for the test. Also known as alpha. + + + + + + Gets or sets the number of samples + considered in the test. + + + + + + Gets or sets the effect size of the test. + + + + + + Bhapkar test of homogeneity for contingency tables. + + + + The Bhapkar test is a more powerful alternative to the + Stuart-Maxwell test. + + + This is a Chi-square kind of test. + + + References: + + + Bhapkar, V.P. (1966). A note on the equivalence of two test criteria + for hypotheses in categorical data. Journal of the American Statistical + Association, 61, 228-235. + + + + + + + + + Creates a new Bhapkar test. + + + The contingency table to test. + + + + + Gets the delta vector d used + in the test calculations. + + + + + + Gets the covariance matrix S + used in the test calculations. + + + + + + Gets the inverse covariance matrix + S^-1 used in the calculations. + + + + + + Bowker test of symmetry for contingency tables. + + + + + This is a Chi-square kind of test. + + + + + + + + Creates a new Bowker test. + + + The contingency table to test. + + + + + Kappa Test for two contingency tables. + + + + + The two-matrix Kappa test tries to assert whether the Kappa measure + of two contingency tables, each of which created by a different rater + or classification model, differs significantly. + + + This is a two sample z-test kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + + Ientilucci, Emmett (2006). "On Using and Computing the Kappa Statistic". + Available on: http://www.cis.rit.edu/~ejipci/Reports/On_Using_and_Computing_the_Kappa_Statistic.pdf + + + + + + + + + + Creates a new Two-Table Kappa test. + + + The kappa value for the first contingency table to test. + The kappa value for the second contingency table to test. + The variance of the kappa value for the first contingency table to test. + The variance of the kappa value for the second contingency table to test. + The alternative hypothesis (research hypothesis) to test. + The hypothesized difference between the two Kappa values. + + + + + Creates a new Two-Table Kappa test. + + + The first contingency table to test. + The second contingency table to test. + The hypothesized difference between the two Kappa values. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the summed Kappa variance + for the two contingency tables. + + + + + + Gets the variance for the first Kappa value. + + + + + + Gets the variance for the second Kappa value. + + + + + + Kappa Test for agreement in contingency tables. + + + + + The Kappa test tries to assert whether the Kappa measure of a + a contingency table, is significantly different from another + hypothesized value. + + + The computations used by the test are the same found in the 1969 paper by + J. L. Fleiss, J. Cohen, B. S. Everitt, in which they presented the finally + corrected version of the Kappa's variance formulae. This is contrast to the + computations traditionally found in the remote sensing literature. For those + variance computations, see the method. + + + + This is a z-test kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + J. L. Fleiss, J. Cohen, B. S. Everitt. Large sample standard errors of + kappa and weighted kappa. Psychological Bulletin, Volume: 72, Issue: 5. Washington, + DC: American Psychological Association, Pages: 323-327, 1969. + + + + + + + + + Creates a new Kappa test. + + + The estimated Kappa statistic. + The standard error of the kappa statistic. If the test is + being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error should be computed with the null hypothesis parameter set to true. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + + + + + Creates a new Kappa test. + + + The estimated Kappa statistic. + The standard error of the kappa statistic. If the test is + being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error should be computed with the null hypothesis parameter set to true. + The hypothesized value for the Kappa statistic. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + + + + + Creates a new Kappa test. + + + The contingency table to test. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + + + + + Creates a new Kappa test. + + + The contingency table to test. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + The hypothesized value for the Kappa statistic. If the test + is being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error will be computed with the null hypothesis parameter set to true. + + + + + Creates a new Kappa test. + + + The contingency table to test. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + The hypothesized value for the Kappa statistic. If the test + is being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error will be computed with the null hypothesis parameter set to true. + + + + + Compute Cohen's Kappa variance using the large sample approximation + given by Congalton, which is common in the remote sensing literature. + + + A representing the ratings. + + Kappa's variance. + + + + + Compute Cohen's Kappa variance using the large sample approximation + given by Congalton, which is common in the remote sensing literature. + + + A representing the ratings. + Kappa's standard deviation. + + Kappa's variance. + + + + + Computes the asymptotic variance for Fleiss's Kappa variance using the formulae + by (Fleiss et al, 1969) when the underlying Kappa is assumed different from zero. + + + A representing the ratings. + + Kappa's variance. + + + + + Computes the asymptotic variance for Fleiss's Kappa variance using the formulae + by (Fleiss et al, 1969). If is set to true, the + method will return the variance under the null hypothesis. + + + A representing the ratings. + Kappa's standard deviation. + True to compute Kappa's variance when the null hypothesis + is true (i.e. that the underlying kappa is zer). False otherwise. Default is false. + + Kappa's variance. + + + + + Computes the asymptotic variance for Fleiss's Kappa variance using the formulae + by (Fleiss et al, 1969). If is set to true, the + method will return the variance under the null hypothesis. + + + A representing the ratings. + Kappa's standard deviation. + True to compute Kappa's variance when the null hypothesis + is true (i.e. that the underlying kappa is zer). False otherwise. Default is false. + + Kappa's variance. + + + + + Gets the variance of the Kappa statistic. + + + + + + McNemar test of homogeneity for 2 x 2 contingency tables. + + + + + McNemar's test is a non-parametric method used on nominal data. It is applied to + 2 × 2 contingency tables with a dichotomous trait, with matched pairs of subjects, + to determine whether the row and column marginal frequencies are equal, i.e. if + the contingency table presents marginal homogeneity. + + + This is a Chi-square kind of test. + + + References: + + + Wikipedia contributors, "McNemar's test," Wikipedia, The Free Encyclopedia, + Available on: http://http://en.wikipedia.org/wiki/McNemar's_test. + + + + + + + + + Creates a new McNemar test. + + + The contingency table to test. + True to use Yate's correction of + continuity, falser otherwise. Default is false. + + + + + One-sample Kolmogorov-Smirnov (KS) test. + + + + + The Kolmogorov-Smirnov test tries to determine if a sample differs significantly + from an hypothesized theoretical probability distribution. The Kolmogorov-Smirnov + test has an interesting advantage in which it does not requires any assumptions + about the data. The distribution of the K-S test statistic does not depend on + which distribution is being tested. + + The K-S test has also the advantage of being an exact test (other tests, such as the + chi-square goodness-of-fit test depends on an adequate sample size). One disadvantage + is that it requires a fully defined distribution which should not have been estimated + from the data. If the parameters of the theoretical distribution have been estimated + from the data, the critical region of the K-S test will be no longer valid. + + This class uses an efficient and high-accuracy algorithm based on work by Richard + Simard (2010). Please see for more details. + + + References: + + + Wikipedia, The Free Encyclopedia. Kolmogorov-Smirnov Test. + Available on: http://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test + + NIST/SEMATECH e-Handbook of Statistical Methods. Kolmogorov-Smirnov Goodness-of-Fit Test. + Available on: http://www.itl.nist.gov/div898/handbook/eda/section3/eda35g.htm + + Richard Simard, Pierre L’Ecuyer. Computing the Two-Sided Kolmogorov-Smirnov Distribution. + Journal of Statistical Software. Volume VV, Issue II. Available on: + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf + + + + + + In this first example, suppose we got a new sample, and we would + like to test whether this sample has been originated from a uniform + continuous distribution. + + + double[] sample = + { + 0.621, 0.503, 0.203, 0.477, 0.710, 0.581, 0.329, 0.480, 0.554, 0.382 + }; + + // First, we create the distribution we would like to test against: + // + var distribution = UniformContinuousDistribution.Standard; + + // Now we can define our hypothesis. The null hypothesis is that the sample + // comes from a standard uniform distribution, while the alternate is that + // the sample is not from a standard uniform distribution. + // + var kstest = new KolmogorovSmirnovTest(sample, distribution); + + double statistic = kstest.Statistic; // 0.29 + double pvalue = kstest.PValue; // 0.3067 + + bool significant = kstest.Significant; // false + + + Since the null hypothesis could not be rejected, then the sample + can perhaps be from a uniform distribution. However, please note + that this doesn't means that the sample *is* from the uniform, it + only means that we could not rule out the possibility. + + + Before we could not rule out the possibility that the sample came from + a uniform distribution, which means the sample was not very far from + uniform. This would be an indicative that it would be far from what + would be expected from a Normal distribution: + + + // First, we create the distribution we would like to test against: + // + NormalDistribution distribution = NormalDistribution.Standard; + + // Now we can define our hypothesis. The null hypothesis is that the sample + // comes from a standard Normal distribution, while the alternate is that + // the sample is not from a standard Normal distribution. + // + var kstest = new KolmogorovSmirnovTest(sample, distribution); + + double statistic = kstest.Statistic; // 0.580432 + double pvalue = kstest.PValue; // 0.000999 + + bool significant = kstest.Significant; // true + + + + Since the test says that the null hypothesis should be rejected, then + this can be regarded as a strong indicative that the sample does not + comes from a Normal distribution, just as we expected. + + + + + + + + Creates a new One-Sample Kolmogorov test. + + + The sample we would like to test as belonging to the . + A fully specified distribution (which must NOT have been estimated from the data). + + + + + Creates a new One-Sample Kolmogorov test. + + + The sample we would like to test as belonging to the . + A fully specified distribution (which must NOT have been estimated from the data). + The alternative hypothesis (research hypothesis) to test. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the theoretical, hypothesized distribution for the samples, + which should have been stated before any measurements. + + + + + + Gets the empirical distribution measured from the sample. + + + + + + ANOVA's result table. + + + + This class represents the results obtained from an ANOVA experiment. + + + + + + Source of variation in an ANOVA experiment. + + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The sum of squares of the source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The mean sum of squares of the source. + The sum of squares of the source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The sum of squares of the source. + The F-Test containing the F-Statistic for the source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The sum of squares of the source. + The mean sum of squares of the source. + The F-Test containing the F-Statistic for the source. + + + + + Gets the ANOVA associated with this source. + + + + + + Gets the name of the variation source. + + + + + + Gets the sum of squares associated with the variation source. + + + + + + Gets the degrees of freedom associated with the variation source. + + + + + + Get the mean squares, or the variance, associated with the source. + + + + + + Gets the significance of the source. + + + + + + Gets the F-Statistic associated with the source's significance. + + + + + + One-way Analysis of Variance (ANOVA). + + + + The one-way ANOVA is a way to test for the equality of three or more means at the same + time by using variances. In its simplest form ANOVA provides a statistical test of whether + or not the means of several groups are all equal, and therefore generalizes t-test to more + than two groups. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + Wikipedia, The Free Encyclopedia. F-Test. + + Wikipedia, The Free Encyclopedia. One-way ANOVA. + + + + + + The following is the same example given in Wikipedia's page for the + F-Test [1]. Suppose one would like to test the effect of three levels + of a fertilizer on plant growth. + + + To achieve this goal, an experimenter has divided a set of 18 plants on + three groups, 6 plants each. Each group has received different levels of + the fertilizer under question. + + + After some months, the experimenter registers the growth for each plant: + + + double[][] samples = + { + new double[] { 6, 8, 4, 5, 3, 4 }, // records for the first group + new double[] { 8, 12, 9, 11, 6, 8 }, // records for the second group + new double[] { 13, 9, 11, 8, 7, 12 }, // records for the third group + }; + + + + Now, he would like to test whether the different fertilizer levels has + indeed caused any effect in plant growth. In other words, he would like + to test if the three groups are indeed significantly different. + + + // To do it, he runs an ANOVA test: + OneWayAnova anova = new OneWayAnova(samples); + + + + After the Anova object has been created, one can display its findings + in the form of a standard ANOVA table by binding anova.Table to a + DataGridView or any other display object supporting data binding. To + illustrate, we could use Accord.NET's DataGridBox to inspect the + table's contents. + + + DataGridBox.Show(anova.Table); + + + Result in: + + + + + The p-level for the analysis is about 0.002, meaning the test is + significant at the 5% significance level. The experimenter would + thus reject the null hypothesis, concluding there is a strong + evidence that the three groups are indeed different. Assuming the + experiment was correctly controlled, this would be an indication + that the fertilizer does indeed affect plant growth. + + + [1] http://en.wikipedia.org/wiki/F_test + + + + + + + Creates a new one-way ANOVA test. + + + The sampled values. + The independent, nominal variables. + + + + + Creates a new one-way ANOVA test. + + + The grouped sampled values. + + + + + Gets the F-Test produced by this one-way ANOVA. + + + + + + Gets the ANOVA results in the form of a table. + + + + + + Two-way ANOVA model types. + + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Fixed-effects model (Model 1). + + + + The fixed-effects model of analysis of variance, as known as model 1, applies + to situations in which the experimenter applies one or more treatments to the + subjects of the experiment to see if the response variable values change. + + This allows the experimenter to estimate the ranges of response variable values + that the treatment would generate in the population as a whole. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Random-effects model (Model 2). + + + + Random effects models are used when the treatments are not fixed. This occurs when + the various factor levels are sampled from a larger population. Because the levels + themselves are random variables, some assumptions and the method of contrasting the + treatments differ from ANOVA model 1. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Mixed-effects models (Model 3). + + + + A mixed-effects model contains experimental factors of both fixed and random-effects + types, with appropriately different interpretations and analysis for the two types. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Two-way Analysis of Variance. + + + + + The two-way ANOVA is an extension of the one-way ANOVA for two independent + variables. There are three classes of models which can also be used in the + analysis, each of which determining the interpretation of the independent + variables in the analysis. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + Carsten Dahl Mørch, ANOVA. Aalborg Universitet. Available on: + http://www.smi.hst.aau.dk/~cdahl/BiostatPhD/ANOVA.pdf + + + + + + + + + Constructs a new . + + + The samples. + The first factor labels. + The second factor labels. + The type of the analysis. + + + + + Constructs a new . + + + The samples in grouped form. + The type of the analysis. + + + + + Gets the number of observations in the sample. + + + + + + Gets the number of samples presenting the first factor. + + + + + + Gets the number of samples presenting the second factor. + + + + + Gets the number of replications of each factor. + + + + + + Gets or sets the variation sources obtained in the analysis. + + The variation sources for the data. + + + + + Gets the ANOVA results in the form of a table. + + + + + + Gets or sets the type of the model. + + The type of the model. + + + + + Variation sources associated with two-way ANOVA. + + + + + + Gets information about the first factor (A). + + + + + + Gets information about the second factor (B) source. + + + + + + Gets information about the interaction factor (AxB) source. + + + + + + Gets information about the error (within-variance) source. + + + + + + Gets information about the grouped (cells) variance source. + + + + + + Gets information about the total source of variance. + + + + + + Stuart-Maxwell test of homogeneity for K x K contingency tables. + + + + + The Stuart-Maxwell test is a generalization of + McNemar's test for multiple categories. + + + This is a Chi-square kind of test. + + + References: + + + Uebersax, John (2006). "McNemar Tests of Marginal Homogeneity". + Available on: http://www.john-uebersax.com/stat/mcnemar.htm + + Sun, Xuezheng; Yang, Zhao (2008). "Generalized McNemar's Test for Homogeneity of the Marginal + Distributions". Available on: http://www2.sas.com/proceedings/forum2008/382-2008.pdf + + + + + + + + + Creates a new Stuart-Maxwell test. + + + The contingency table to test. + + + + + Gets the delta vector d used + in the test calculations. + + + + + + Gets the covariance matrix S + used in the test calculations. + + + + + + Gets the inverse covariance matrix + S^-1 used in the calculations. + + + + + + Power analysis for one-sample T-Tests. + + + + + // When creating a power analysis, we have three things we can + // change. We can always freely configure two of those things + // and then ask the analysis to give us the third. + + var analysis = new TTestPowerAnalysis(OneSampleHypothesis.ValueIsDifferentFromHypothesis); + + // Those are: + double e = analysis.Effect; // the test's minimum detectable effect size + double n = analysis.Samples; // the number of samples in the test + double p = analysis.Power; // the probability of committing a type-2 error + + // Let's set the desired effect size and the + // number of samples so we can get the power + + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputePower(); // what will be the power of this test? + + double power = analysis.Power; // The power is going to be 0.33 (or 33%) + + // Let's set the desired power and the number + // of samples so we can get the effect size + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputeEffect(); // what would be the minimum effect size we can detect? + + double effect = analysis.Effect; // The effect will be 0.36 standard deviations. + + // Let's set the desired power and the effect + // size so we can get the number of samples + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.ComputeSamples(); + + double samples = analysis.Samples; // We would need around 199 samples. + + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The number of observations in the sample. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Power analysis for one-sample Z-Tests. + + + + // When creating a power analysis, we have three things we can + // change. We can always freely configure two of those things + // and then ask the analysis to give us the third. + + var analysis = new ZTestPowerAnalysis(OneSampleHypothesis.ValueIsDifferentFromHypothesis); + + // Those are: + double e = analysis.Effect; // the test's minimum detectable effect size + double n = analysis.Samples; // the number of samples in the test + double p = analysis.Power; // the probability of committing a type-2 error + + // Let's set the desired effect size and the + // number of samples so we can get the power + + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputePower(); // what will be the power of this test? + + double power = analysis.Power; // The power is going to be 0.34 (or 34%) + + // Let's set the desired power and the number + // of samples so we can get the effect size + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputeEffect(); // what would be the minimum effect size we can detect? + + double effect = analysis.Effect; // The effect will be 0.36 standard deviations. + + // Let's set the desired power and the effect + // size so we can get the number of samples + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.ComputeSamples(); + + double samples = analysis.Samples; // We would need around 197 samples. + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Gets the recommended sample size for the test to attain + the power indicating in considering + values of and . + + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the significance + level . + + + + The minimum detectable effect + size for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The number of observations in the sample. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Sign test for the median. + + + + + In statistics, the sign test can be used to test the hypothesis that the difference + median is zero between the continuous distributions of two random variables X and Y, + in the situation when we can draw paired samples from X and Y. It is a non-parametric + test which makes very few assumptions about the nature of the distributions under test + - this means that it has very general applicability but may lack the + statistical power of other tests such as the paired-samples + t-test or the Wilcoxon signed-rank test. + + + References: + + + Wikipedia, The Free Encyclopedia. Sign test. Available on: + http://en.wikipedia.org/wiki/Sign_test + + + + + + // This example has been adapted from the Wikipedia's page about + // the Z-Test, available from: http://en.wikipedia.org/wiki/Z-test + + // We would like to check whether a sample of 20 + // students with a median score of 96 points ... + + double[] sample = + { + 106, 115, 96, 88, 91, 88, 81, 104, 99, 68, + 104, 100, 77, 98, 96, 104, 82, 94, 72, 96 + }; + + // ... could have happened just by chance inside a + // population with an hypothesized median of 100 points. + + double hypothesizedMedian = 100; + + // So we start by creating the test: + SignTest test = new SignTest(sample, hypothesizedMedian, + OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Now, we can check whether this result would be + // unlikely under a standard significance level: + + bool significant = test.Significant; // false (so the event was likely) + + // We can also check the test statistic and its P-Value + double statistic = test.Statistic; // 5 + double pvalue = test.PValue; // 0.99039 + + + + + + + + + + + + Binomial test. + + + + + In statistics, the binomial test is an exact test of the statistical significance + of deviations from a theoretically expected distribution of observations into two + categories. The most common use of the binomial test is in the case where the null + hypothesis is that two categories are equally likely to occur (such as a coin toss). + + When there are more than two categories, and an exact test is required, the + multinomial test, based on the multinomial + distribution, must be used instead of the binomial test. + + + References: + + + Wikipedia, The Free Encyclopedia. Binomial-Test. Available from: + http://en.wikipedia.org/wiki/Binomial_test + + + + + + This is the second example from Wikipedia's page on hypothesis testing. In this example, + a person is tested for clairvoyance (ability of gaining information about something through + extra sensory perception; detecting something without using the known human senses. + + + // A person is shown the reverse of a playing card 25 times and is + // asked which of the four suits the card belongs to. Every time + // the person correctly guesses the suit of the card, we count this + // result as a correct answer. Let's suppose the person obtained 13 + // correctly answers out of the 25 cards. + + // Since each suit appears 1/4 of the time in the card deck, we + // would assume the probability of producing a correct answer by + // chance alone would be of 1/4. + + // And finally, we must consider we are interested in which the + // subject performs better than what would expected by chance. + // In other words, that the person's probability of predicting + // a card is higher than the chance hypothesized value of 1/4. + + BinomialTest test = new BinomialTest( + successes: 13, trials: 25, + hypothesizedProbability: 1.0 / 4.0, + alternate: OneSampleHypothesis.ValueIsGreaterThanHypothesis); + + Console.WriteLine("Test p-Value: " + test.PValue); // ~ 0.003 + Console.WriteLine("Significant? " + test.Significant); // True. + + + + + + + + + Tests the probability of two outcomes in a series of experiments. + + + The experimental trials. + The hypothesized occurrence probability. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the probability of two outcomes in a series of experiments. + + + The number of successes in the trials. + The total number of experimental trials. + The hypothesized occurrence probability. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a Binomial test. + + + + + + Computes the Binomial test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Computes the two-tail probability using the Wilson-Sterne rule, + which defines the tail of the distribution based on a ordering + of the null probabilities of X. (Smirnoff, 2003) + + + + References: Jeffrey S. Simonoff, Analyzing + Categorical Data, Springer, 2003 (pg 64). + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Tests the null hypothesis that the sample median is equal to a hypothesized value. + + + The number of positive samples. + The total number of samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the null hypothesis that the sample median is equal to a hypothesized value. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the one sample sign test. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis + can be rejected in favor of this alternative hypothesis. + + + + + + Wilcoxon signed-rank test for the median. + + + + + The Wilcoxon signed-rank test is a non-parametric statistical hypothesis test + used when comparing two related samples, matched samples, or repeated measurements + on a single sample to assess whether their population mean ranks differ (i.e. it is + a paired difference test). It can be used as an alternative to the paired + Student's t-test, t-test for matched pairs, or the t-test + for dependent samples when the population cannot be assumed to be normally distributed. + + + The Wilcoxon signed-rank test is not the same as the Wilcoxon rank-sum + test, although both are nonparametric and involve summation of ranks. + + + This test uses the positive W statistic, as explained in + https://onlinecourses.science.psu.edu/stat414/node/319 + + + References: + + + Wikipedia, The Free Encyclopedia. Wilcoxon signed-rank test. Available on: + http://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test + + + + + + // This example has been adapted from the Wikipedia's page about + // the Z-Test, available from: http://en.wikipedia.org/wiki/Z-test + + // We would like to check whether a sample of 20 + // students with a median score of 96 points ... + + double[] sample = + { + 106, 115, 96, 88, 91, 88, 81, 104, 99, 68, + 104, 100, 77, 98, 96, 104, 82, 94, 72, 96 + }; + + // ... could have happened just by chance inside a + // population with an hypothesized median of 100 points. + + double hypothesizedMedian = 100; + + // So we start by creating the test: + WilcoxonSignedRankTest test = new WilcoxonSignedRankTest(sample, + hypothesizedMedian, OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Now, we can check whether this result would be + // unlikely under a standard significance level: + + bool significant = test.Significant; // false (so the event was likely) + + // We can also check the test statistic and its P-Value + double statistic = test.Statistic; // 40.0 + double pvalue = test.PValue; // 0.98585347446367344 + + + + + + + + + + + + + + + Tests the null hypothesis that the sample median is equal to a hypothesized value. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Sign test for two paired samples. + + + + + This is a Binomial kind of test. + + + + + + + + + + Creates a new sign test for two samples. + + + The number of positive samples (successes). + The total number of samples (trials). + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new sign test for two samples. + + + The first sample of observations. + The second sample of observations. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the two sample sign test. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis + can be rejected in favor of this alternative hypothesis. + + + + + + Wilcoxon signed-rank test for paired samples. + + + + + + + + + Tests whether the medians of two paired samples are different. + + + The first sample. + The second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + One-sample Student's T test. + + + + + The one-sample t-test assesses whether the mean of a sample is + statistically different from a hypothesized value. + + + This test supports creating power analyses + through its property. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's T-Test. + + William M.K. Trochim. The T-Test. Research methods Knowledge Base, 2009. + Available on: http://www.le.ac.uk/bl/gat/virtualfc/Stats/ttest.html + + Graeme D. Ruxton. The unequal variance t-test is an underused alternative to Student's + t-test and the Mann–Whitney U test. Oxford Journals, Behavioral Ecology Volume 17, Issue 4, pp. + 688-690. 2006. Available on: http://beheco.oxfordjournals.org/content/17/4/688.full + + + + + + // Consider a sample generated from a Gaussian + // distribution with mean 0.5 and unit variance. + + double[] sample = + { + -0.849886940156521, 3.53492346633185, 1.22540422494611, 0.436945126810344, 1.21474290382610, + 0.295033941700225, 0.375855651783688, 1.98969760778547, 1.90903448980048, 1.91719241342961 + }; + + // One may rise the hypothesis that the mean of the sample is not + // significantly different from zero. In other words, the fact that + // this particular sample has mean 0.5 may be attributed to chance. + + double hypothesizedMean = 0; + + // Create a T-Test to check this hypothesis + TTest test = new TTest(sample, hypothesizedMean, + OneSampleHypothesis.ValueIsDifferentFromHypothesis); + + // Check if the mean is significantly different + test.Significant should be true + + // Now, we would like to test if the sample mean is + // significantly greater than the hypothesized zero. + + // Create a T-Test to check this hypothesis + TTest greater = new TTest(sample, hypothesizedMean, + OneSampleHypothesis.ValueIsGreaterThanHypothesis); + + // Check if the mean is significantly larger + greater.Significant should be true + + // Now, we would like to test if the sample mean is + // significantly smaller than the hypothesized zero. + + // Create a T-Test to check this hypothesis + TTest smaller = new TTest(sample, hypothesizedMean, + OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Check if the mean is significantly smaller + smaller.Significant should be false + + + + + + + + + + + + + + + Gets a confidence interval for the estimated value + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The test statistic. + The degrees of freedom for the test distribution. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The estimated value (θ). + The standard error of the estimation (SE). + The hypothesized value (θ'). + The degrees of freedom for the test distribution. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a T-Test. + + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The sample's mean value. + The standard deviation for the samples. + The number of observations in the sample. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the T-Test. + + + + + + Computes the T-test. + + + + + + Computes the T-test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + The tail of the test distribution. + The test distribution. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + The tail of the test distribution. + The test distribution. + + The test statistic which would generate the given p-value. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the standard error of the estimated value. + + + + + + Gets the estimated parameter value, such as the sample's mean value. + + + + + + Gets the hypothesized parameter value. + + + + + + Gets the 95% confidence interval for the . + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Two-sample Kolmogorov-Smirnov (KS) test. + + + + + The Kolmogorov-Smirnov test tries to determine if two samples have been + drawn from the same probability distribution. The Kolmogorov-Smirnov test + has an interesting advantage in which it does not requires any assumptions + about the data. The distribution of the K-S test statistic does not depend + on which distribution is being tested. + + The K-S test has also the advantage of being an exact test (other tests, such as the + chi-square goodness-of-fit test depends on an adequate sample size). One disadvantage + is that it requires a fully defined distribution which should not have been estimated + from the data. If the parameters of the theoretical distribution have been estimated + from the data, the critical region of the K-S test will be no longer valid. + + The two-sample KS test is one of the most useful and general nonparametric methods for + comparing two samples, as it is sensitive to differences in both location and shape of + the empirical cumulative distribution functions of the two samples. + + This class uses an efficient and high-accuracy algorithm based on work by Richard + Simard (2010). Please see for more details. + + + References: + + + Wikipedia, The Free Encyclopedia. Kolmogorov-Smirnov Test. + Available at: http://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test + + NIST/SEMATECH e-Handbook of Statistical Methods. Kolmogorov-Smirnov Goodness-of-Fit Test. + Available at: http://www.itl.nist.gov/div898/handbook/eda/section3/eda35g.htm + + Richard Simard, Pierre L’Ecuyer. Computing the Two-Sided Kolmogorov-Smirnov Distribution. + Journal of Statistical Software. Volume VV, Issue II. Available at: + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf + + Kirkman, T.W. (1996) Statistics to Use. Available at: + http://www.physics.csbsju.edu/stats/ + + + + + + In the following example, we will be creating a K-S test to verify + if two samples have been drawn from different populations. In this + example, we will first generate a number of samples from two different + distributions and then check if the K-S can indeed see the difference + between them: + + // Generate 15 points from a Normal distribution with mean 5 and sigma 2 + double[] sample1 = new NormalDistribution(mean: 5, stdDev: 1).Generate(25); + + // Generate 15 points from an uniform distribution from 0 to 10 + double[] sample2 = new UniformContinuousDistribution(a: 0, b: 10).Generate(25); + + // Now we can create a K-S test and test the unequal hypothesis: + var test = new TwoSampleKolmogorovSmirnovTest(sample1, sample2, + TwoSampleKolmogorovSmirnovTestHypothesis.SamplesDistributionsAreUnequal); + + bool significant = test.Significant; // outputs true + + + + The following example comes from the stats page of the College of Saint Benedict and Saint John's + University (Kirkman, 1996). It is a very interesting example as it shows a case in which a t-test + fails to see a difference between the samples because of the non-normality of the sample's + distributions. The Kolmogorov-Smirnov nonparametric test, on the other hand, succeeds. + + The example deals with the preference of bees between two nearby blooming trees in an empty field. + The experimenter has collected data measuring how much time does a bee spent near a particular + tree. The time starts to be measured when a bee first touches the tree, and is stopped when the bee + moves more than 1 meter far from it. The samples below represents the measured time, in seconds, of + the observed bees for each of the trees. + + + double[] redwell = + { + 23.4, 30.9, 18.8, 23.0, 21.4, 1, 24.6, 23.8, 24.1, 18.7, 16.3, 20.3, + 14.9, 35.4, 21.6, 21.2, 21.0, 15.0, 15.6, 24.0, 34.6, 40.9, 30.7, + 24.5, 16.6, 1, 21.7, 1, 23.6, 1, 25.7, 19.3, 46.9, 23.3, 21.8, 33.3, + 24.9, 24.4, 1, 19.8, 17.2, 21.5, 25.5, 23.3, 18.6, 22.0, 29.8, 33.3, + 1, 21.3, 18.6, 26.8, 19.4, 21.1, 21.2, 20.5, 19.8, 26.3, 39.3, 21.4, + 22.6, 1, 35.3, 7.0, 19.3, 21.3, 10.1, 20.2, 1, 36.2, 16.7, 21.1, 39.1, + 19.9, 32.1, 23.1, 21.8, 30.4, 19.62, 15.5 + }; + + double[] whitney = + { + 16.5, 1, 22.6, 25.3, 23.7, 1, 23.3, 23.9, 16.2, 23.0, 21.6, 10.8, 12.2, + 23.6, 10.1, 24.4, 16.4, 11.7, 17.7, 34.3, 24.3, 18.7, 27.5, 25.8, 22.5, + 14.2, 21.7, 1, 31.2, 13.8, 29.7, 23.1, 26.1, 25.1, 23.4, 21.7, 24.4, 13.2, + 22.1, 26.7, 22.7, 1, 18.2, 28.7, 29.1, 27.4, 22.3, 13.2, 22.5, 25.0, 1, + 6.6, 23.7, 23.5, 17.3, 24.6, 27.8, 29.7, 25.3, 19.9, 18.2, 26.2, 20.4, + 23.3, 26.7, 26.0, 1, 25.1, 33.1, 35.0, 25.3, 23.6, 23.2, 20.2, 24.7, 22.6, + 39.1, 26.5, 22.7 + }; + + // Create a t-test as a first attempt. + var t = new TwoSampleTTest(redwell, whitney); + + Console.WriteLine("T-Test"); + Console.WriteLine("Test p-value: " + t.PValue); // ~0.837 + Console.WriteLine("Significant? " + t.Significant); // false + + // Create a non-parametric Kolmogorov-Smirnov test + var ks = new TwoSampleKolmogorovSmirnovTest(redwell, whitney); + + Console.WriteLine("KS-Test"); + Console.WriteLine("Test p-value: " + ks.PValue); // ~0.038 + Console.WriteLine("Significant? " + ks.Significant); // true + + + + + + + + + + Creates a new Two-Sample Kolmogorov test. + + + The first sample. + The second sample. + + + + + Creates a new Two-Sample Kolmogorov test. + + + The first sample. + The second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the first empirical distribution being tested. + + + + + + Gets the second empirical distribution being tested. + + + + + + Wald's Test using the Normal distribution. + + + + + The Wald test is a parametric statistical test named after Abraham Wald + with a great variety of uses. Whenever a relationship within or between + data items can be expressed as a statistical model with parameters to be + estimated from a sample, the Wald test can be used to test the true value + of the parameter based on the sample estimate. + + + Under the Wald statistical test, the maximum likelihood estimate of the + parameter(s) of interest θ is compared with the proposed value θ', with + the assumption that the difference between the two will be approximately + normal. + + + References: + + + Wikipedia, The Free Encyclopedia. Wald Test. Available on: + http://en.wikipedia.org/wiki/Wald_test + + + + + + + + + + + Constructs a Wald's test. + + + The test statistic, as given by (θ-θ')/SE. + + + + + Constructs a Wald's test. + + + The estimated value (θ). + The hypothesized value (θ'). + The standard error of the estimation (SE). + + + + + Hypothesis type + + + + The type of the hypothesis being made expresses the way in + which a value of a parameter may deviate from that assumed + in the null hypothesis. It can either state that a value is + higher, lower or simply different than the one assumed under + the null hypothesis. + + + + + + The test considers the two tails from a probability distribution. + + + + The two-tailed test is a statistical test in which a given statistical + hypothesis, H0 (the null hypothesis), will be rejected when the value of + the test statistic is either sufficiently small or sufficiently large. + + + + + + The test considers the upper tail from a probability distribution. + + + + The one-tailed, upper tail test is a statistical test in which a given + statistical hypothesis, H0 (the null hypothesis), will be rejected when + the value of the test statistic is sufficiently large. + + + + + + The test considers the lower tail from a probability distribution. + + + + The one-tailed, lower tail test is a statistical test in which a given + statistical hypothesis, H0 (the null hypothesis), will be rejected when + the value of the test statistic is sufficiently small. + + + + + + Common test Hypothesis for one sample tests, such + as and . + + + + + + Tests if the mean (or the parameter under test) + is significantly different from the hypothesized + value, without considering the direction for this + difference. + + + + + + Tests if the mean (or the parameter under test) + is significantly greater (larger, bigger) than + the hypothesized value. + + + + + + Tests if the mean (or the parameter under test) + is significantly smaller (lesser) than the + hypothesized value. + + + + + + Common test Hypothesis for two sample tests, such as + and . + + + + + + Tests if the mean (or the parameter under test) of + the first sample is different from the mean of the + second sample, without considering any particular + direction for the difference. + + + + + + Tests if the mean (or the parameter under test) of + the first sample is greater (larger, bigger) than + the mean of the second sample. + + + + + + Tests if the mean (or the parameter under test) of + the first sample is smaller (lesser) than the mean + of the second sample. + + + + + + Hypothesis for the one-sample Kolmogorov-Smirnov test. + + + + + + Tests whether the sample's distribution is + different from the reference distribution. + + + + + + Tests whether the distribution of one sample is greater + than the reference distribution, in a statistical sense. + + + + + + Tests whether the distribution of one sample is smaller + than the reference distribution, in a statistical sense. + + + + + + Test hypothesis for the two-sample Kolmogorov-Smirnov tests. + + + + + + Tests whether samples have been drawn + from significantly unequal distributions. + + + + + + Tests whether the distribution of one sample is + greater than the other, in a statistical sense. + + + + + + Tests whether the distribution of one sample is + smaller than the other, in a statistical sense. + + + + + + Sample weight types. + + + + + + Weights should be ignored. + + + + + + Weights are integers representing how many times a sample should repeat itself. + + + + + + Weights are fractional numbers that sum up to one. + + + + + + If weights sum up to one, they are handled as fractional + weights. If they sum to a whole number, they are handled as + integer repetition counts. + + + + + + Scatter Plot class. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + + Gets the integer label associated with this class. + + + + + + Gets the indices of all points of this class. + + + + + + Gets all X values of this class. + + + + + + Gets all Y values of this class. + + + + + + Gets or sets the class' text label. + + + + + + Collection of Histogram bins. This class cannot be instantiated. + + + + + + Searches for a bin containing the specified value. + + + The value to search for. + + The histogram bin containing the searched value. + + + + + Attempts to find the index of the bin containing the specified value. + + + The value to search for. + + The index of the bin containing the specified value. + + + + + Histogram Bin + + + + + A "bin" is a container, where each element stores the total number of observations of a sample + whose values lie within a given range. A histogram of a sample consists of a list of such bins + whose range does not overlap with each other; or in other words, bins that are mutually exclusive. + + Unless is true, the ranges of all bins i are + defined as Edge[i] <= x < Edge[i+1]. Otherwise, the last bin will have an inclusive upper + bound (i.e. will be defined as Edge[i] <= x <= Edge[i+1]. + + + + + + Gets whether the Histogram Bin contains the given value. + + + + + + Gets the actual range of data this bin represents. + + + + + + Gets the Width (range) for this histogram bin. + + + + + + Gets the Value (number of occurrences of a variable in a range) + for this histogram bin. + + + + + + Optimum histogram bin size adjustment rule. + + + + + + Does not attempts to automatically calculate + an optimum bin width and preserves the current + histogram organization. + + + + + + Calculates the optimum bin width as 3.49σN, where σ + is the sample standard deviation and N is the number + of samples. + + + Scott, D. 1979. On optimal and data-based histograms. Biometrika, 66:605-610. + + + + + + Calculates the optimum bin width as ceiling( log2(N) + 1 )m + where N is the number of samples. The rule implicitly bases + the bin sizes on the range of the data, and can perform poorly + if n < 30. + + + + + + Calculates the optimum bin width as the square root of the + number of samples. This is the same rule used by Microsoft (c) + Excel and many others. + + + + + + Histogram. + + + + + In a more general mathematical sense, a histogram is a mapping Mi + that counts the number of observations that fall into various + disjoint categories (known as bins). + + This class represents a Histogram mapping of Discrete or Continuous + data. To use it as a discrete mapping, pass a bin size (length) of 1. + To use it as a continuous mapping, pass any real number instead. + + Currently, only a constant bin width is supported. + + + + + + Constructs an empty histogram + + + + + + Constructs an empty histogram + + + The title of this histogram. + + + + + Constructs an empty histogram + + + The values to be binned in the histogram. + + + + + Constructs an empty histogram + + + The title of this histogram. + The values to be binned in the histogram. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired width for the histogram's bins. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired number of histogram's bins. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired number of histogram's bins. + Whether to include an extra upper bin going to infinity. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired number of histogram's bins. + The desired width for the histogram's bins. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + + + + + Initializes the histogram's bins. + + + + + + Sets the histogram's bin ranges (edges). + + + + + + Actually computes the histogram. + + + + + + Computes the optimum number of bins based on a . + + + + + + Integer array implicit conversion. + + + + + + Converts this histogram into an integer array representation. + + + + + + Subtracts one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be subtracted. + + A new containing the result of this operation. + + + + + Subtracts one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be subtracted. + + A new containing the result of this operation. + + + + + Adds one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be added. + + A new containing the result of this operation. + + + + + Adds one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be added. + + A new containing the result of this operation. + + + + + Multiplies one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be multiplied. + + A new containing the result of this operation. + + + + + Multiplies one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The value to be multiplied. + + A new containing the result of this operation. + + + + + Adds a value to each histogram bin. + + + The value to be added. + + A new containing the result of this operation. + + + + + Subtracts a value to each histogram bin. + + + The value to be subtracted. + + A new containing the result of this operation. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the Bin values of this Histogram. + + + Bin index. + + The number of hits of the selected bin. + + + + + Gets the name for this Histogram. + + + + + + Gets the Bin values for this Histogram. + + + + + + Gets the Range of the values in this Histogram. + + + + + + Gets the edges of each bin in this Histogram. + + + + + + Gets the collection of bins of this Histogram. + + + + + + Gets or sets whether this histogram represents a cumulative distribution. + + + + + + Gets or sets the bin size auto adjustment rule + to be used when computing this histogram from + new data. Default is . + + + The bin size auto adjustment rule. + + + + + Gets or sets a value indicating whether the last bin + should have an inclusive upper bound. Default is true. + + + + If set to false, the last bin's range will be defined + as Edge[i] <= x < Edge[i+1]. If set to true, the + last bin will have an inclusive upper bound and be defined as + Edge[i] <= x <= Edge[i+1] instead. + + + + true if the last bin should have an inclusive upper bound; + false otherwise. + + + + + + Scatter Plot. + + + + + + Constructs an empty Scatter plot. + + + + + + Constructs an empty Scatter plot with given title. + + + Scatter plot title. + + + + + Constructs an empty scatter plot with + given title and axis names. + + + Scatter Plot title. + Title for the x-axis. + Title for the y-axis. + + + + + Constructs an empty Scatter Plot with + given title and axis names. + + + Scatter Plot title. + Title for the x-axis. + Title for the y-axis. + Title for the labels. + + + + + Computes the scatter plot. + + + Array of values. + + + + + Computes the scatter plot. + + + Array of X values. + Array of corresponding Y values. + + + + + Computes the scatter plot. + + + Array of X values. + Array of corresponding Y values. + Array of integer labels defining a class for each (x,y) pair. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + Array of integer labels defining a class for each (x,y) pair. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + Array of integer labels defining a class for each (x,y) pair. + + + + + Gets the title of the scatter plot. + + + + + + Gets the name of the X-axis. + + + + + + Gets the name of the Y-axis. + + + + + + Gets the name of the label axis. + + + + + + Gets the values associated with the X-axis. + + + + + + Gets the corresponding Y values associated with each X. + + + + + + Gets the label of each (x,y) pair. + + + + + + Gets an integer array containing the integer labels + associated with each of the classes in the scatter plot. + + + + + + Gets the class labels for each of the classes in the plot. + + + + + + Gets a collection containing information about + each of the classes presented in the scatter plot. + + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net45/Accord.Statistics.dll b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net45/Accord.Statistics.dll new file mode 100644 index 0000000000..92fd49a21 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net45/Accord.Statistics.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net45/Accord.Statistics.xml b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net45/Accord.Statistics.xml new file mode 100644 index 0000000000..7f6030165 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Statistics.3.0.2/lib/net45/Accord.Statistics.xml @@ -0,0 +1,58736 @@ + + + + Accord.Statistics + + + + + Contains many statistical analysis, such as PCA, + LDA, + KPCA, KDA, + PLS, ICA, + Logistic Regression and Stepwise Logistic Regression + Analyses. Also contains performance assessment analysis such as + contingency tables and ROC curves. + + + + The namespace class diagram is shown below. + + + + + + + + + Common interface for information components. Those are + present in multivariate analysis, such as + and . + + + + + + Gets the index for this component. + + + + + + Gets the proportion, or amount of information explained by this component. + + + + + + Gets the cumulative proportion of all discriminants until this component. + + + + + + Determines the method to be used in a statistical analysis. + + + + + + By choosing Center, the method will be run on the mean-centered data. + + + + In Principal Component Analysis this means the method will operate + on the Covariance matrix of the given data. + + + + + + By choosing Standardize, the method will be run on the mean-centered and + standardized data. + + + + In Principal Component Analysis this means the method + will operate on the Correlation matrix of the given data. One should always + choose to standardize when dealing with different units of variables. + + + + + + Common interface for statistical analysis. + + + + + + Computes the analysis using given source data and parameters. + + + + + + Common interface for descriptive measures, such as + and + . + + + + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets the variable's index. + + + + + + Gets the variable's name + + + + + + Gets the variable's total sum. + + + + + + Gets the variable's mean. + + + + + + Gets the variable's standard deviation. + + + + + + Gets the variable's median. + + + + + + Gets the variable's outer fences range. + + + + + + Gets the variable's inner fence range. + + + + + + Gets the variable's interquartile range. + + + + + + Gets the variable's mode. + + + + + + Gets the variable's variance. + + + + + + Gets the variable's skewness. + + + + + + Gets the variable's kurtosis. + + + + + + Gets the variable's standard error of the mean. + + + + + + Gets the variable's maximum value. + + + + + + Gets the variable's minimum value. + + + + + + Gets the variable's length. + + + + + + Gets the number of distinct values for the variable. + + + + + + Gets the number of samples for the variable. + + + + + + Gets the 95% confidence interval around the . + + + + + + Gets the 95% deviance interval around the . + + + + + + Gets the variable's observations. + + + + + + Common interface for projective statistical analysis. + + + + + + Common interface for multivariate statistical analysis. + + + + + + Source data used in the analysis. + + + + + + Projects new data into latent space. + + + + + + Projects new data into latent space with + given number of dimensions. + + + + + + Common interface for multivariate regression analysis. + + + + + Regression analysis attempt to express many numerical dependent + variables as a combinations of other features or measurements. + + + + + + Gets the dependent variables' values + for each of the source input points. + + + + + + Common interface for regression analysis. + + + + + Regression analysis attempt to express one numerical dependent variable + as a combinations of other features or measurements. + + When the dependent variable is a category label, the class of analysis methods + is known as discriminant analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Common interface for discriminant analysis. + + + + + Discriminant analysis attempt to express one categorical dependent variable + as a combinations of other features or measurements. + + When the dependent variable is a numerical quantity, the class of analysis methods + is known as regression analysis. + + + + + + Gets the classification labels (the dependent variable) + for each of the source input points. + + + + + + Exponential contrast function. + + + + According to Hyvärinen, the Exponential contrast function may be + used when the independent components are highly super-Gaussian or + when robustness is very important. + + + + + + + + Common interface for contrast functions. + + + + Contrast functions are used as objective functions in + neg-entropy calculations. + + + + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Initializes a new instance of the class. + + The exponential alpha constant. Default is 1. + + + + + Initializes a new instance of the class. + + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Gets the exponential alpha constant. + + + + + + Kurtosis contrast function. + + + According to using to Hyvärinen, the kurtosis contrast function is + justified on statistical grounds only for estimating sub-Gaussian + independent components when there are no outliers. + + + + + + + + Initializes a new instance of the class. + + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Log-cosh (Hyperbolic Tangent) contrast function. + + + + According to Hyvärinen, the Logcosh contrast function + is a good general-purpose contrast function. + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The log-cosh alpha constant. Default is 1. + + + + + Contrast function. + + + The vector of observations. + At method's return, this parameter + should contain the evaluation of function over the vector + of observations . + At method's return, this parameter + should contain the evaluation of function derivative over + the vector of observations . + + + + + Gets the exponential log-cosh constant. + + + + + + Descriptive statistics analysis for circular data. + + + + + + + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + The names for the analyzed variable. + + Whether the analysis should conserve memory by doing + operations over the original array. + + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + + Whether the analysis should conserve memory by doing + operations over the original array. + + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + Names for the analyzed variables. + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + + + + + Constructs the Circular Descriptive Analysis. + + + The source data to perform analysis. + The length of each circular variable (i.e. 24 for hours). + Names for the analyzed variables. + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets or sets whether all reported statistics should respect the circular + interval. For example, setting this property to false would allow + the , , + and properties report minimum and maximum values + outside the variable's allowed circular range. Default is true. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the column names from the variables in the data. + + + + + + Gets a vector containing the length of + the circular domain for each data column. + + + + + + Gets a vector containing the Mean of each data column. + + + + + + Gets a vector containing the Mode of each data column. + + + + + + Gets a vector containing the Standard Deviation of each data column. + + + + + + Gets a vector containing the Standard Error of the Mean of each data column. + + + + + + Gets the 95% confidence intervals for the . + + + + + + Gets the 95% deviance intervals for the . + + + + A deviance interval uses the standard deviation rather + than the standard error to compute the range interval + for a variable. + + + + + + Gets a vector containing the Median of each data column. + + + + + + Gets a vector containing the Variance of each data column. + + + + + + Gets a vector containing the number of distinct elements for each data column. + + + + + + Gets an array containing the Ranges of each data column. + + + + + + Gets an array containing the interquartile range of each data column. + + + + + + Gets an array containing the inner fences of each data column. + + + + + + Gets an array containing the outer fences of each data column. + + + + + + Gets an array containing the sum of each data column. If + the analysis has been computed in place, this will contain + the sum of the transformed angle values instead. + + + + + + Gets an array containing the sum of cosines for each data column. + + + + + + Gets an array containing the sum of sines for each data column. + + + + + + Gets an array containing the circular concentration for each data column. + + + + + + Gets an array containing the skewness for of each data column. + + + + + + Gets an array containing the kurtosis for of each data column. + + + + + + Gets the number of samples (or observations) in the data. + + + + + + Gets the number of variables (or features) in the data. + + + + + + Gets a collection of DescriptiveMeasures objects that can be bound to a DataGridView. + + + + + + Circular descriptive measures for a variable. + + + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets the circular analysis + that originated this measure. + + + + + + Gets the variable's index. + + + + + + Gets the variable's name + + + + + + Gets the variable's total sum. + + + + + + Gets the variable's mean. + + + + + + Gets the variable's standard deviation. + + + + + + Gets the variable's median. + + + + + + Gets the variable's mode. + + + + + + Gets the variable's outer fences range. + + + + + + Gets the variable's inner fence range. + + + + + + Gets the variable's interquartile range. + + + + + + Gets the variable's variance. + + + + + + Gets the variable's maximum value. + + + + + + Gets the variable's minimum value. + + + + + + Gets the variable's length. + + + + + + Gets the number of distinct values for the variable. + + + + + + Gets the number of samples for the variable. + + + + + + Gets the sum of cosines for the variable. + + + + + + Gets the sum of sines for the variable. + + + + + + Gets the transformed variable's observations. + + + + + + Gets the variable's standard error of the mean. + + + + + + Gets the 95% confidence interval around the . + + + + + + Gets the 95% deviance interval around the . + + + + + + Gets the variable's observations. + + + + + + Gets the variable skewness. + + + + + + Gets the variable kurtosis. + + + + + + Collection of descriptive measures. + + + + + + + + + Gets the key for item. + + + + + + Distribution fitness analysis. + + + + + + Initializes a new instance of the class. + + + The observations to be fitted against candidate distributions. + + + + + Computes the analysis. + + + + + + Gets all univariate distributions (types implementing + ) loaded in the + current domain. + + + + + + Gets all multivariate distributions (types implementing + ) loaded in the + current domain. + + + + + + Gets a distribution's name in a human-readable form. + + + The distribution whose name must be obtained. + + + + + Gets the tested distribution names. + + + + The distribution names. + + + + + + Gets the estimated distributions. + + + + The estimated distributions. + + + + + + Gets the Kolmogorov-Smirnov tests + performed against each of the candidate distributions. + + + + + + Gets the Chi-Square tests + performed against each of the candidate distributions. + + + + + + Gets the Anderson-Darling tests + performed against each of the candidate distributions. + + + + + + Gets the rank of each distribution according to the Kolmogorov-Smirnov + test statistic. A value of 0 means the distribution is the most likely. + + + + + + Gets the rank of each distribution according to the Chi-Square + test statistic. A value of 0 means the distribution is the most likely. + + + + + + Gets the rank of each distribution according to the Anderson-Darling + test statistic. A value of 0 means the distribution is the most likely. + + + + + + Gets the goodness of fit for each candidate distribution. + + + + + + Goodness-of-fit result for a given distribution. + + + + + + Compares the current object with another object of the same type. + + + An object to compare with this object. + + + A value that indicates the relative order of the objects being compared. The return value + has the following meanings: Value Meaning Less than zero This object is less than the + parameter.Zero This object is equal to . + Greater than zero This object is greater than . + + + + + + Compares the current instance with another object of the same type and returns an + integer that indicates whether the current instance precedes, follows, or occurs in + the same position in the sort order as the other object. + + + An object to compare with this instance. + + + A value that indicates the relative order of the objects being compared. The return + value has these meanings: Value Meaning Less than zero This instance precedes + in the sort order. Zero This instance occurs in the same position in the sort order as + . Greater than zero This instance follows + in the sort order. + + + + + + Gets the analysis that has produced this measure. + + + + + + Gets the variable's index. + + + + + + Gets the distribution name + + + + + + Gets the measured distribution. + + + + The distribution associated with this good-of-fit measure. + + + + + + Gets the value of the Kolmogorov-Smirnov statistic. + + + + The Kolmogorov-Smirnov for the . + + + + + + Gets the rank of this distribution according to the + Kolmogorov-Smirnov test. + + + + An integer value where 0 indicates most probable. + + + + + + Gets the value of the Chi-Square statistic. + + + + The Chi-Square for the . + + + + + + Gets the rank of this distribution according to the + Chi-Square test. + + + + An integer value where 0 indicates most probable. + + + + + + Gets the value of the Anderson-Darling statistic. + + + + The Anderson-Darling for the . + + + + + + Gets the rank of this distribution according to the + Anderson-Darling test. + + + + An integer value where 0 indicates most probable. + + + + + + Collection of goodness-of-fit measures. + + + + + + + + Gets the key for item. + + + + + + Multinomial Logistic Regression Analysis + + + + + In statistics, multinomial logistic regression is a classification method that + generalizes logistic regression to multiclass problems, i.e. with more than two + possible discrete outcomes.[1] That is, it is a model that is used to predict the + probabilities of the different possible outcomes of a categorically distributed + dependent variable, given a set of independent variables (which may be real-valued, + binary-valued, categorical-valued, etc.). + + + Multinomial logistic regression is known by a variety of other names, including + multiclass LR, multinomial regression,[2] softmax regression, multinomial logit, + maximum entropy (MaxEnt) classifier, conditional maximum entropy model.para> + + + References: + + + Wikipedia contributors. "Multinomial logistic regression." Wikipedia, The Free Encyclopedia, 1st April, 2015. + Available at: https://en.wikipedia.org/wiki/Multinomial_logistic_regression + + + + // TODO: Write example + + + + + Constructs a Multinomial Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Multinomial Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The names of the input variables. + The names of the output variables. + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The names of the input variables. + The names of the output variables. + + + + + Computes the Multiple Linear Regression Analysis. + + + + + + Source data used in the analysis. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting values obtained by the regression model. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Gets the number of outputs in the regression problem. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Regression model created + and evaluated by this analysis. + + + + + + Gets the value of each coefficient. + + + + + + Gets the Log-Likelihood for the model. + + + + + + Gets the Chi-Square (Likelihood Ratio) Test for the model. + + + + + + Gets the Deviance of the model. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Gets the collection of coefficients of the model. + + + + + + + Represents a Multinomial Logistic Regression coefficient found in the + multinomial logistic + regression analysis allowing it to be bound to controls like the + DataGridView. + + + This class cannot be instantiated. + + + + + + Creates a regression coefficient representation. + + + The analysis to which this coefficient belongs. + The coefficient's index. + The coefficient's category. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the Index of this coefficient on the original analysis coefficient collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the name of the category that this coefficient belongs to. + + + + + + Gets the name for the current coefficient. + + + + + + Gets the coefficient value. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the confidence interval. + + + + + + Gets the lower limit for the confidence interval. + + + + + + Represents a Collection of Multinomial Logistic Regression Coefficients found in the + . This class cannot be instantiated. + + + + + + Weighted confusion matrix for multi-class decision problems. + + + + + References: + + + + R. G. Congalton. A Review of Assessing the Accuracy of Classifications + of Remotely Sensed Data. Available on: http://uwf.edu/zhu/evr6930/2.pdf + + + G. Banko. A Review of Assessing the Accuracy of Classifications of Remotely Sensed Data and + of Methods Including Remote Sensing Data in Forest Inventory. Interim report. Available on: + http://www.iiasa.ac.at/Admin/PUB/Documents/IR-98-081.pdf + + + + + + + General confusion matrix for multi-class decision problems. + + + + + References: + + + + R. G. Congalton. A Review of Assessing the Accuracy of Classifications + of Remotely Sensed Data. Available on: http://uwf.edu/zhu/evr6930/2.pdf + + + G. Banko. A Review of Assessing the Accuracy of Classifications of Remotely Sensed Data and + of Methods Including Remote Sensing Data in Forest Inventory. Interim report. Available on: + http://www.iiasa.ac.at/Admin/PUB/Documents/IR-98-081.pdf + + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Combines several confusion matrices into one single matrix. + + + The matrices to combine. + + + + + Gets the confusion matrix, in which each element e_ij + represents the number of elements from class i classified + as belonging to class j. + + + + + + Gets the number of samples. + + + + + + Gets the number of classes. + + + + + + Gets the row totals. + + + + + + Gets the column totals. + + + + + + Gets the row marginals (proportions). + + + + + + Gets the column marginals (proportions). + + + + + + Gets the diagonal of the confusion matrix. + + + + + + Gets the maximum number of correct + matches (the maximum over the diagonal) + + + + + + Gets the minimum number of correct + matches (the minimum over the diagonal) + + + + + + Gets the confusion matrix in + terms of cell percentages. + + + + + + Gets the Kappa coefficient of performance. + + + + + + Gets the standard error of the + coefficient of performance. + + + + + + Gets the variance of the + coefficient of performance. + + + + + + Gets the variance of the + under the null hypothesis that the underlying + Kappa value is 0. + + + + + + Gets the standard error of the + under the null hypothesis that the underlying Kappa + value is 0. + + + + + + Gets the Tau coefficient of performance. + + + + + Tau-b statistic, unlike tau-a, makes adjustments for ties and + is suitable for square tables. Values of tau-b range from −1 + (100% negative association, or perfect inversion) to +1 (100% + positive association, or perfect agreement). A value of zero + indicates the absence of association. + + + References: + + + http://en.wikipedia.org/wiki/Kendall_tau_rank_correlation_coefficient + + LEVADA, Alexandre Luis Magalhães. Combinação de modelos de campos aleatórios markovianos + para classificação contextual de imagens multiespectrais [online]. São Carlos : Instituto + de Física de São Carlos, Universidade de São Paulo, 2010. Tese de Doutorado em Física Aplicada. + Disponível em: http://www.teses.usp.br/teses/disponiveis/76/76132/tde-11052010-165642/. + + MA, Z.; REDMOND, R. L. Tau coefficients for accuracy assessment of + classification of remote sensing data. + + + + + + + Phi coefficient. + + + + + The Pearson correlation coefficient (phi) ranges from −1 to +1, where + a value of +1 indicates perfect agreement, a value of -1 indicates perfect + disagreement and a value 0 indicates no agreement or relationship. + + References: + http://en.wikipedia.org/wiki/Phi_coefficient, + http://www.psychstat.missouristate.edu/introbook/sbk28m.htm + + + + + + Gets the Chi-Square statistic for the contingency table. + + + + + + Tschuprow's T association measure. + + + + + Tschuprow's T is a measure of association between two nominal variables, giving + a value between 0 and 1 (inclusive). It is closely related to + Cramér's V, coinciding with it for square contingency tables. + + References: + http://en.wikipedia.org/wiki/Tschuprow's_T + + + + + + Pearson's contingency coefficient C. + + + + + Pearson's C measures the degree of association between the two variables. However, + C suffers from the disadvantage that it does not reach a maximum of 1 or the minimum + of -1; the highest it can reach in a 2 x 2 table is .707; the maximum it can reach in + a 4 × 4 table is 0.870. It can reach values closer to 1 in contingency tables with more + categories. It should, therefore, not be used to compare associations among tables with + different numbers of categories. For a improved version of C, see . + + + References: + http://en.wikipedia.org/wiki/Contingency_table + + + + + + Sakoda's contingency coefficient V. + + + + + Sakoda's V is an adjusted version of Pearson's C + so it reaches a maximum of 1 when there is complete association in a table + of any number of rows and columns. + + References: + http://en.wikipedia.org/wiki/Contingency_table + + + + + + Cramer's V association measure. + + + + + Cramér's V varies from 0 (corresponding to no association between the variables) + to 1 (complete association) and can reach 1 only when the two variables are equal + to each other. In practice, a value of 0.1 already provides a good indication that + there is substantive relationship between the two variables. + + + References: + http://en.wikipedia.org/wiki/Cram%C3%A9r%27s_V, + http://www.acastat.com/Statbook/chisqassoc.htm + + + + + + Overall agreement. + + + + The overall agreement is the sum of the diagonal elements + of the contingency table divided by the number of samples. + + + + + + Geometric agreement. + + + + The geometric agreement is the geometric mean of the + diagonal elements of the confusion matrix. + + + + + + Chance agreement. + + + + The chance agreement tells how many samples + were correctly classified by chance alone. + + + + + + Expected values, or values that could + have been generated just by chance. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Confusion Matrix. + + + + + + Creates a new Weighted Confusion Matrix with linear weighting. + + + + + + Creates a new Weighted Confusion Matrix with linear weighting. + + + + + + Gets the Weights matrix. + + + + + + Gets the row marginals (proportions). + + + + + + Gets the column marginals (proportions). + + + + + + Gets the Kappa coefficient of performance. + + + + + + Gets the standard error of the + coefficient of performance. + + + + + + Gets the variance of the + coefficient of performance. + + + + + + Gets the variance of the + under the null hypothesis that the underlying + Kappa value is 0. + + + + + + Gets the standard error of the + under the null hypothesis that the underlying Kappa + value is 0. + + + + + + Overall agreement. + + + + + + Chance agreement. + + + + The chance agreement tells how many samples + were correctly classified by chance alone. + + + + + + Cox's Proportional Hazards Survival Analysis. + + + + + Proportional hazards models are a class of survival models in statistics. Survival models + relate the time that passes before some event occurs to one or more covariates that may be + associated with that quantity. In a proportional hazards model, the unique effect of a unit + increase in a covariate is multiplicative with respect to the hazard rate. + + + For example, taking a drug may halve one's hazard rate for a stroke occurring, or, changing + the material from which a manufactured component is constructed may double its hazard rate + for failure. Other types of survival models such as accelerated failure time models do not + exhibit proportional hazards. These models could describe a situation such as a drug that + reduces a subject's immediate risk of having a stroke, but where there is no reduction in + the hazard rate after one year for subjects who do not have a stroke in the first year of + analysis. + + + This class uses the to extract more detailed + information about a given problem, such as confidence intervals, hypothesis tests + and performance measures. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + + + // Consider the following example data, adapted from John C. Pezzullo's + // example for his great Cox's proportional hazards model example in + // JavaScript (http://www.sph.emory.edu/~cdckms/CoxPH/prophaz2.html). + + // In this data, we have three columns. The first column denotes the + // input variables for the problem. The second column, the survival + // times. And the last one is the output of the experiment (if the + // subject has died [1] or has survived [0]). + + double[,] example = + { + // input time censor + { 50, 1, 0 }, + { 70, 2, 1 }, + { 45, 3, 0 }, + { 35, 5, 0 }, + { 62, 7, 1 }, + { 50, 11, 0 }, + { 45, 4, 0 }, + { 57, 6, 0 }, + { 32, 8, 0 }, + { 57, 9, 1 }, + { 60, 10, 1 }, + }; + + // First we will extract the input, times and outputs + double[,] inputs = example.GetColumns(0); + double[] times = example.GetColumn(1); + int[] output = example.GetColumn(2).ToInt32(); + + // Now we can proceed and create the analysis + var cox = new ProportionalHazardsAnalysis(inputs, times, output); + + cox.Compute(); // compute the analysis + + // Now we can show an analysis summary + DataGridBox.Show(cox.Coefficients); + + + + The resulting table is shown below. + + + + // We can also investigate all parameters individually. For + // example the coefficients values will be available at + + double[] coef = cox.CoefficientValues; + double[] stde = cox.StandardErrors; + + // We can also obtain the hazards ratios + double[] ratios = cox.HazardRatios; + + // And other information such as the partial + // likelihood, the deviance and also make + // hypothesis tests on the parameters + + double partial = cox.LogLikelihood; + double deviance = cox.Deviance; + + // Chi-Square for whole model + ChiSquareTest chi = cox.ChiSquare; + + // Wald tests for individual parameters + WaldTest wald = cox.Coefficients[0].Wald; + + + // Finally, we can also use the model to predict + // scores for new observations (without considering time) + + double y1 = cox.Regression.Compute(new double[] { 63 }); + double y2 = cox.Regression.Compute(new double[] { 32 }); + + // Those scores can be interpreted by comparing then + // to 1. If they are greater than one, the odds are + // the patient will not survive. If the value is less + // than one, the patient is likely to survive. + + // The first value, y1, gives approximately 86.138, + // while the second value, y2, gives about 0.00072. + + + // We can also consider instant estimates for a given time: + double p1 = cox.Regression.Compute(new double[] { 63 }, 2); + double p2 = cox.Regression.Compute(new double[] { 63 }, 10); + + // Here, p1 is the score after 2 time instants, with a + // value of 0.0656. The second value, p2, is the time + // after 10 time instants, with a value of 6.2907. + + + + + + + Constructs a new Cox's Proportional Hazards Analysis. + + + The input data for the analysis. + The output data for the analysis. + The right-censoring indicative values. + + + + + Constructs a new Cox's Proportional Hazards Analysis. + + + The input data for the analysis. + The output data for the analysis. + The right-censoring indicative values. + + + + + Constructs a new Cox's Proportional Hazards Analysis. + + + The input data for the analysis. + The output, binary data for the analysis. + The right-censoring indicative values. + The names of the input variables. + The name of the time variable. + The name of the event indication variable. + + + + + Gets the Log-Likelihood Ratio between this model and another model. + + + Another proportional hazards model. + + The Likelihood-Ratio between the two models. + + + + + Computes the Proportional Hazards Analysis for an already computed regression. + + + + + + Computes the Proportional Hazards Analysis. + + + + True if the model converged, false otherwise. + + + + + + Computes the Proportional Hazards Analysis. + + + + The difference between two iterations of the regression algorithm + when the algorithm should stop. If not specified, the value of + 1e-4 will be used. The difference is calculated based on the largest + absolute parameter change of the regression. + + + + The maximum number of iterations to be performed by the regression + algorithm. + + + + True if the model converged, false otherwise. + + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Source data used in the analysis. + + + + + + Gets the time passed until the event + occurred or until the observation was + censored. + + + + + + Gets whether the event of + interest happened or not. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting probabilities obtained + by the logistic regression model. + + + + + + Gets the Proportional Hazards model created + and evaluated by this analysis. + + + + + + Gets the collection of coefficients of the model. + + + + + + Gets the Log-Likelihood for the model. + + + + + + Gets the Chi-Square (Likelihood Ratio) Test for the model. + + + + + + Gets the Deviance of the model. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the name of event occurrence variable in the model. + + + + + + Gets the Hazard Ratio for each coefficient + found during the proportional hazards. + + + + + + Gets the Standard Error for each coefficient + found during the proportional hazards. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the Likelihood-Ratio Tests for each coefficient. + + + + + + Gets the value of each coefficient. + + + + + + Gets the 95% Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Represents a Proportional Hazards Coefficient found in the Cox's Hazards model, + allowing it to be bound to controls like the DataGridView. This class cannot + be instantiated outside the . + + + + + + Gets the name for the current coefficient. + + + + + + Gets the Odds ratio for the current coefficient. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the 95% confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the 95% confidence interval. + + + + + + Gets the lower limit for the 95% confidence interval. + + + + + + Gets the coefficient value. + + + + + + Gets the Wald's test performed for this coefficient. + + + + + + Gets the Likelihood-Ratio test performed for this coefficient. + + + + + + Represents a collection of Hazard Coefficients found in the + . This class cannot be instantiated. + + + + + + Multiple Linear Regression Analysis + + + + + Linear regression is an approach to model the relationship between + a single scalar dependent variable y and one or more explanatory + variables x. This class uses a + to extract information about a given problem, such as confidence intervals, + hypothesis tests and performance measures. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + Wikipedia contributors. "Linear regression." Wikipedia, The Free Encyclopedia, 4 Nov. 2012. + Available at: http://en.wikipedia.org/wiki/Linear_regression + + + + + + // Consider the following data. An experimenter would + // like to infer a relationship between two variables + // A and B and a corresponding outcome variable R. + + double[][] example = + { + // A B R + new double[] { 6.41, 10.11, 26.1 }, + new double[] { 6.61, 22.61, 33.8 }, + new double[] { 8.45, 11.11, 52.7 }, + new double[] { 1.22, 18.11, 16.2 }, + new double[] { 7.42, 12.81, 87.3 }, + new double[] { 4.42, 10.21, 12.5 }, + new double[] { 8.61, 11.94, 77.5 }, + new double[] { 1.73, 13.13, 12.1 }, + new double[] { 7.47, 17.11, 86.5 }, + new double[] { 6.11, 15.13, 62.8 }, + new double[] { 1.42, 16.11, 17.5 }, + }; + + // For this, we first extract the input and output + // pairs. The first two columns have values for the + // input variables, and the last for the output: + + double[][] inputs = example.GetColumns(0, 1); + double[] output = example.GetColumn(2); + + // Next, we can create a new multiple linear regression for the variables + var regression = new MultipleLinearRegressionAnalysis(inputs, output, intercept: true); + + regression.Compute(); // compute the analysis + + // Now we can show a summary of analysis + DataGridBox.Show(regression.Coefficients); + + + + + + // We can also show a summary ANOVA + DataGridBox.Show(regression.Table); + + + + + + // And also extract other useful information, such + // as the linear coefficients' values and std errors: + double[] coef = regression.CoefficientValues; + double[] stde = regression.StandardErrors; + + // Coefficients of performance, such as r² + double rsquared = regression.RSquared; + + // Hypothesis tests for the whole model + ZTest ztest = regression.ZTest; + FTest ftest = regression.FTest; + + // and for individual coefficients + TTest ttest0 = regression.Coefficients[0].TTest; + TTest ttest1 = regression.Coefficients[1].TTest; + + // and also extract confidence intervals + DoubleRange ci = regression.Coefficients[0].Confidence; + + + + + + + Common interface for analyses of variance. + + + + + + + + + Gets the ANOVA results in the form of a table. + + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + True to use an intercept term, false otherwise. Default is false. + + + + + Constructs a Multiple Linear Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + True to use an intercept term, false otherwise. Default is false. + The names of the input variables. + The name of the output variable. + + + + + Computes the Multiple Linear Regression Analysis. + + + + + + Source data used in the analysis. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting values obtained + by the linear regression model. + + + + + + Gets the standard deviation of the errors. + + + + + + Gets the coefficient of determination, as known as R² + + + + + + Gets the adjusted coefficient of determination, as known as R² adjusted + + + + + + Gets a F-Test between the expected outputs and results. + + + + + + Gets a Z-Test between the expected outputs and the results. + + + + + + Gets a Chi-Square Test between the expected outputs and the results. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Regression model created + and evaluated by this analysis. + + + + + + Gets the value of each coefficient. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Gets the ANOVA table for the analysis. + + + + + + Gets the collection of coefficients of the model. + + + + + + + Represents a Linear Regression coefficient found in the Multiple + Linear Regression Analysis allowing it to be bound to controls like + the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a regression coefficient representation. + + + The analysis to which this coefficient belongs. + The coefficient index. + + + + + Gets the Index of this coefficient on the original analysis coefficient collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the name for the current coefficient. + + + + + + Gets a value indicating whether this coefficient is an intercept term. + + + + true if this coefficient is the intercept; otherwise, false. + + + + + + Gets the coefficient value. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the T-test performed for this coefficient. + + + + + + Gets the F-test performed for this coefficient. + + + + + + Gets the confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the confidence interval. + + + + + + Gets the lower limit for the confidence interval. + + + + + + Represents a Collection of Linear Regression Coefficients found in the + . This class cannot be instantiated. + + + + + + Gets or sets the size of the confidence + intervals reported for the coefficients. + Default is 0.95. + + + + + + Binary decision confusion matrix. + + + + + // The correct and expected output values (as confirmed by a Gold + // standard rule, actual experiment or true verification) + int[] expected = { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 }; + + // The values as predicted by the decision system or + // the test whose performance is being measured. + int[] predicted = { 0, 0, 0, 1, 1, 0, 0, 0, 0, 1 }; + + + // In this test, 1 means positive, 0 means negative + int positiveValue = 1; + int negativeValue = 0; + + // Create a new confusion matrix using the given parameters + ConfusionMatrix matrix = new ConfusionMatrix(predicted, expected, + positiveValue, negativeValue); + + // At this point, + // True Positives should be equal to 1; + // True Negatives should be equal to 6; + // False Negatives should be equal to 1; + // False Positives should be equal to 2. + + + + + + + Constructs a new Confusion Matrix. + + + + + + Constructs a new Confusion Matrix. + + + + + + Constructs a new Confusion Matrix. + + + The values predicted by the model. + The actual, truth values from the data. + + + + + Constructs a new Confusion Matrix. + + + The values predicted by the model. + The actual, truth values from the data. + The integer label which identifies a value as positive. + + + + + Constructs a new Confusion Matrix. + + + The values predicted by the model. + The actual, truth values from the data. + The integer label which identifies a value as positive. + The integer label which identifies a value as negative. + + + + + Returns a representing this confusion matrix. + + + + A representing this confusion matrix. + + + + + + Converts this matrix into a . + + + + A with the same contents as this matrix. + + + + + + Combines several confusion matrices into one single matrix. + + + The matrices to combine. + + + + + Gets the confusion matrix in count matrix form. + + + + The table is listed as true positives, false negatives + on its first row, false positives and true negatives in + its second row. + + + + + + Gets the marginal sums for table rows. + + + + Returns a vector with the sum of true positives and + false negatives on its first position, and the sum + of false positives and true negatives on the second. + + + + + + Gets the marginal sums for table columns. + + + + Returns a vector with the sum of true positives and + false positives on its first position, and the sum + of false negatives and true negatives on the second. + + + + + + Gets the number of observations for this matrix + + + + + + Gets the number of actual positives. + + + + The number of positives cases can be computed by + taking the sum of true positives and false negatives. + + + + + + Gets the number of actual negatives + + + + The number of negatives cases can be computed by + taking the sum of true negatives and false positives. + + + + + + Gets the number of predicted positives. + + + + The number of cases predicted as positive by the + test. This value can be computed by adding the + true positives and false positives. + + + + + + Gets the number of predicted negatives. + + + + The number of cases predicted as negative by the + test. This value can be computed by adding the + true negatives and false negatives. + + + + + + Cases correctly identified by the system as positives. + + + + + + Cases correctly identified by the system as negatives. + + + + + + Cases incorrectly identified by the system as positives. + + + + + + Cases incorrectly identified by the system as negatives. + + + + + + Sensitivity, also known as True Positive Rate + + + + The Sensitivity is calculated as TPR = TP / (TP + FN). + + + + + + Specificity, also known as True Negative Rate + + + + The Specificity is calculated as TNR = TN / (FP + TN). + It can also be calculated as: TNR = (1-False Positive Rate). + + + + + + Efficiency, the arithmetic mean of sensitivity and specificity + + + + + + Accuracy, or raw performance of the system + + + + The Accuracy is calculated as + ACC = (TP + TN) / (P + N). + + + + + + Prevalence of outcome occurrence. + + + + + + Positive Predictive Value, also known as Positive Precision + + + + + The Positive Predictive Value tells us how likely is + that a patient has a disease, given that the test for + this disease is positive. + + The Positive Predictive Rate is calculated as + PPV = TP / (TP + FP). + + + + + + Negative Predictive Value, also known as Negative Precision + + + + + The Negative Predictive Value tells us how likely it is + that the disease is NOT present for a patient, given that + the patient's test for the disease is negative. + + The Negative Predictive Value is calculated as + NPV = TN / (TN + FN). + + + + + + False Positive Rate, also known as false alarm rate. + + + + + The rate of false alarms in a test. + + The False Positive Rate can be calculated as + FPR = FP / (FP + TN) or FPR = (1-specificity). + + + + + + + False Discovery Rate, or the expected false positive rate. + + + + + The False Discovery Rate is actually the expected false positive rate. + + For example, if 1000 observations were experimentally predicted to + be different, and a maximum FDR for these observations was 0.10, then + 100 of these observations would be expected to be false positives. + + The False Discovery Rate is calculated as + FDR = FP / (FP + TP). + + + + + + Matthews Correlation Coefficient, also known as Phi coefficient + + + + A coefficient of +1 represents a perfect prediction, 0 an + average random prediction and −1 an inverse prediction. + + + + + + Odds-ratio. + + + + References: http://www.iph.ufrgs.br/corpodocente/marques/cd/rd/presabs.htm + + + + + + Kappa coefficient. + + + + References: http://www.iph.ufrgs.br/corpodocente/marques/cd/rd/presabs.htm + + + + + + Gets the standard error of the + coefficient of performance. + + + + + + Gets the variance of the + coefficient of performance. + + + + + + Gets the variance of the + under the null hypothesis that the underlying + Kappa value is 0. + + + + + + Gets the standard error of the + under the null hypothesis that the underlying Kappa + value is 0. + + + + + + Diagnostic power. + + + + + + Normalized Mutual Information. + + + + + + Precision, same as the . + + + + + + Recall, same as the . + + + + + + F-Score, computed as the harmonic mean of + and . + + + + + + Expected values, or values that could + have been generated just by chance. + + + + + + Gets the Chi-Square statistic for the contingency table. + + + + + + Descriptive statistics analysis. + + + + + Descriptive statistics are used to describe the basic features of the data + in a study. They provide simple summaries about the sample and the measures. + Together with simple graphics analysis, they form the basis of virtually + every quantitative analysis of data. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + Wikipedia, The Free Encyclopedia. Descriptive Statistics. Available on: + http://en.wikipedia.org/wiki/Descriptive_statistics + + + + + + // Suppose we would like to compute descriptive + // statistics from the following data samples: + double[,] data = + { + { 1, 52, 5 }, + { 2, 12, 5 }, + { 1, 65, 5 }, + { 1, 25, 5 }, + { 2, 62, 5 }, + }; + + // Create the analysis + DescriptiveAnalysis analysis = new DescriptiveAnalysis(data); + + // Compute + analysis.Compute(); + + // Retrieve interest measures + double[] means = analysis.Means; // { 1.4, 43.2, 5.0 } + double[] modes = analysis.Modes; // { 1.0, 52.0, 5.0 } + + + + + + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + Names for the analyzed variables. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + + + + + Constructs the Descriptive Analysis. + + + The source data to perform analysis. + Names for the analyzed variables. + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + The index of the data column whose confidence + interval should be calculated. + + A confidence interval for the estimated value. + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the column names from the variables in the data. + + + + + + Gets the mean subtracted data. + + + + + + Gets the mean subtracted and deviation divided data. Also known as Z-Scores. + + + + + + Gets the Covariance Matrix + + + + + + Gets the Correlation Matrix + + + + + + Gets a vector containing the Mean of each data column. + + + + + + Gets a vector containing the Standard Deviation of each data column. + + + + + + Gets a vector containing the Standard Error of the Mean of each data column. + + + + + + Gets the 95% confidence intervals for the . + + + + + + Gets the 95% deviance intervals for the . + + + + A deviance interval uses the standard deviation rather + than the standard error to compute the range interval + for a variable. + + + + + + Gets a vector containing the Mode of each data column. + + + + + + Gets a vector containing the Median of each data column. + + + + + + Gets a vector containing the Variance of each data column. + + + + + + Gets a vector containing the number of distinct elements for each data column. + + + + + + Gets an array containing the Ranges of each data column. + + + + + + Gets an array containing the interquartile range of each data column. + + + + + + Gets an array containing the inner fences of each data column. + + + + + + Gets an array containing the outer fences of each data column. + + + + + + Gets an array containing the sum of each data column. + + + + + + Gets an array containing the skewness for of each data column. + + + + + + Gets an array containing the kurtosis for of each data column. + + + + + + Gets the number of samples (or observations) in the data. + + + + + + Gets the number of variables (or features) in the data. + + + + + + Gets a collection of DescriptiveMeasures objects that can be bound to a DataGridView. + + + + + + Descriptive measures for a variable. + + + + + + + + Gets a confidence interval for the + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets a deviance interval for the + within the given confidence level percentage (i.e. uses + the standard deviation rather than the standard error to + compute the range interval for the variable). + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Gets the descriptive analysis + that originated this measure. + + + + + + Gets the variable's index. + + + + + + Gets the variable's name + + + + + + Gets the variable's total sum. + + + + + + Gets the variable's mean. + + + + + + Gets the variable's standard deviation. + + + + + + Gets the variable's median. + + + + + + Gets the variable's outer fences range. + + + + + + Gets the variable's inner fence range. + + + + + + Gets the variable's interquartile range. + + + + + + Gets the variable's mode. + + + + + + Gets the variable's variance. + + + + + + Gets the variable's skewness. + + + + + + Gets the variable's kurtosis. + + + + + + Gets the variable's standard error of the mean. + + + + + + Gets the variable's maximum value. + + + + + + Gets the variable's minimum value. + + + + + + Gets the variable's length. + + + + + + Gets the number of distinct values for the variable. + + + + + + Gets the number of samples for the variable. + + + + + + Gets the 95% confidence interval around the . + + + + + + Gets the 95% deviance interval around the . + + + + + + Gets the variable's observations. + + + + + + Collection of descriptive measures. + + + + + + + + + Gets the key for item. + + + + + + FastICA's algorithms to be used in Independent Component Analysis. + + + + + + Deflation algorithm. + + + In the deflation algorithm, components are found one + at a time through a series of sequential operations. + It is particularly useful when only a small number of + components should be computed from the input data set. + + + + + + Symmetric parallel algorithm (default). + + + In the parallel (symmetric) algorithm, all components + are computed at once. This is the default algorithm for + Independent + Component Analysis. + + + + + + Independent Component Analysis (ICA). + + + + + Independent Component Analysis is a computational method for separating + a multivariate signal (or mixture) into its additive subcomponents, supposing + the mutual statistical independence of the non-Gaussian source signals. + + When the independence assumption is correct, blind ICA separation of a mixed + signal gives very good results. It is also used for signals that are not supposed + to be generated by a mixing for analysis purposes. + + A simple application of ICA is the "cocktail party problem", where the underlying + speech signals are separated from a sample data consisting of people talking + simultaneously in a room. Usually the problem is simplified by assuming no time + delays or echoes. + + An important note to consider is that if N sources are present, at least N + observations (e.g. microphones) are needed to get the original signals. + + + References: + + + Hyvärinen, A (1999). Fast and Robust Fixed-Point Algorithms for Independent Component + Analysis. IEEE Transactions on Neural Networks, 10(3),626-634. Available on: + + http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.4731 + + E. Bingham and A. Hyvärinen A fast fixed-point algorithm for independent component + analysis of complex-valued signals. Int. J. of Neural Systems, 10(1):1-8, 2000. + + FastICA: FastICA Algorithms to perform ICA and Projection Pursuit. Available on: + + http://cran.r-project.org/web/packages/fastICA/index.html + + Wikipedia, The Free Encyclopedia. Independent component analysis. Available on: + http://en.wikipedia.org/wiki/Independent_component_analysis + + + + + + // Let's create a random dataset containing + // 5000 samples of two dimensional samples. + // + double[,] source = Matrix.Random(5000, 2); + + // Now, we will mix the samples the dimensions of the samples. + // A small amount of the second column will be applied to the + // first, and vice-versa. + // + double[,] mix = + { + { 0.25, 0.25 }, + { -0.25, 0.75 }, + }; + + // mix the source data + double[,] input = source.Multiply(mix); + + // Now, we can use ICA to identify any linear mixing between the variables, such + // as the matrix multiplication we did above. After it has identified it, we will + // be able to revert the process, retrieving our original samples again + + // Create a new Independent Component Analysis + var ica = new IndependentComponentAnalysis(input); + + + // Compute it + ica.Compute(); + + // Now, we can retrieve the mixing and demixing matrices that were + // used to alter the data. Note that the analysis was able to detect + // this information automatically: + + double[,] mixingMatrix = ica.MixingMatrix; // same as the 'mix' matrix + double[,] revertMatrix = ica.DemixingMatrix; // inverse of the 'mix' matrix + + + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The FastICA algorithm to be used in the analysis. Default + is . + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is + . + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is + . + The FastICA algorithm to be used in the analysis. Default + is . + + + + + Constructs a new Independent Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is + . + The FastICA algorithm to be used in the analysis. Default + is . + + + + + Computes the Independent Component Analysis algorithm. + + + + + + Computes the Independent Component Analysis algorithm. + + + + + + Separates a mixture into its components (demixing). + + + + + + Separates a mixture into its components (demixing). + + + + + + Separates a mixture into its components (demixing). + + + + + + Combines components into a single mixture (mixing). + + + + + + Combines components into a single mixture (mixing). + + + + + + Deflation iterative algorithm. + + + + Returns a matrix in which each row contains + the mixing coefficients for each component. + + + + + + Parallel (symmetric) iterative algorithm. + + + + Returns a matrix in which each row contains + the mixing coefficients for each component. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Computes the maximum absolute change between two members of a matrix. + + + + + + Computes the maximum absolute change between two members of a vector. + + + + + + Source data used in the analysis. + + + + + + Gets or sets the maximum number of iterations + to perform. If zero, the method will run until + convergence. + + + The iterations. + + + + + Gets or sets the maximum absolute change in + parameters between iterations that determine + convergence. + + + + + + Gets the resulting projection of the source + data given on the creation of the analysis + into the space spawned by independent components. + + + The resulting projection in independent component space. + + + + + Gets a matrix containing the mixing coefficients for + the original source data being analyzed. Each column + corresponds to an independent component. + + + + + + Gets a matrix containing the demixing coefficients for + the original source data being analyzed. Each column + corresponds to an independent component. + + + + + + Gets the whitening matrix used to transform + the original data to have unit variance. + + + + + + Gets the Independent Components in a object-oriented structure. + + + The collection of independent components. + + + + + Gets or sets whether calculations will be performed overwriting + data in the original source matrix, using less memory. + + + + + + Gets or sets the + FastICA algorithm used by the analysis. + + + + + + Gets or sets the + Contrast function to be used by the analysis. + + + + + + Gets the column means of the original data. + + + + + + Gets the column standard deviations of the original data. + + + + + + Represents an Independent Component found in the Independent Component + Analysis, allowing it to be directly bound to controls like the DataGridView. + + + + + + Creates an independent component representation. + + + The analysis to which this component belongs. + The component index. + + + + + Gets the Index of this component on the original component collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the mixing vector for the current independent component. + + + + + + Gets the demixing vector for the current independent component. + + + + + + Gets the whitening factor for the current independent component. + + + + + + Represents a Collection of Independent Components found in the + Independent Component Analysis. This class cannot be instantiated. + + + + + + Kernel (Fisher) Discriminant Analysis. + + + + + Kernel (Fisher) discriminant analysis (kernel FDA) is a non-linear generalization + of linear discriminant analysis (LDA) using techniques of kernel methods. Using a + kernel, the originally linear operations of LDA are done in a reproducing kernel + Hilbert space with a non-linear mapping. + + The algorithm used is a multi-class generalization of the original algorithm by + Mika et al. in Fisher discriminant analysis with kernels (1999). + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + Mika et al, Fisher discriminant analysis with kernels (1999). Available on + + http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.35.9904 + + + + + + The following example creates an analysis for a set of + data specified as a jagged (double[][]) array. However, + the same can also be accomplished using multidimensional + double[,] arrays. + + + // Create some sample input data instances. This is the same + // data used in the Gutierrez-Osuna's example available on: + // http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf + + double[][] inputs = + { + // Class 0 + new double[] { 4, 1 }, + new double[] { 2, 4 }, + new double[] { 2, 3 }, + new double[] { 3, 6 }, + new double[] { 4, 4 }, + + // Class 1 + new double[] { 9, 10 }, + new double[] { 6, 8 }, + new double[] { 9, 5 }, + new double[] { 8, 7 }, + new double[] { 10, 8 } + }; + + int[] output = + { + 0, 0, 0, 0, 0, // The first five are from class 0 + 1, 1, 1, 1, 1 // The last five are from class 1 + }; + + // Now we can chose a kernel function to + // use, such as a linear kernel function. + IKernel kernel = new Linear(); + + // Then, we will create a KDA using this linear kernel. + var kda = new KernelDiscriminantAnalysis(inputs, output, kernel); + + kda.Compute(); // Compute the analysis + + + // Now we can project the data into KDA space: + double[][] projection = kda.Transform(inputs); + + // Or perform classification using: + int[] results = kda.Classify(inputs); + + + + + + + Linear Discriminant Analysis (LDA). + + + + + Linear Discriminant Analysis (LDA) is a method of finding such a linear + combination of variables which best separates two or more classes. + + In itself LDA is not a classification algorithm, although it makes use of class + labels. However, the LDA result is mostly used as part of a linear classifier. + The other alternative use is making a dimension reduction before using nonlinear + classification algorithms. + + It should be noted that several similar techniques (differing in requirements to the sample) + go together under the general name of Linear Discriminant Analysis. Described below is one of + these techniques with only two requirements: + + The sample size shall exceed the number of variables, and + Classes may overlap, but their centers shall be distant from each other. + + + + Moreover, LDA requires the following assumptions to be true: + + Independent subjects. + Normality: the variance-covariance matrix of the + predictors is the same in all groups. + + + + If the latter assumption is violated, it is common to use quadratic discriminant analysis in + the same manner as linear discriminant analysis instead. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + R. Gutierrez-Osuna, Linear Discriminant Analysis. Available on: + http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf + + + + + + The following example creates an analysis for a set of + data specified as a jagged (double[][]) array. However, + the same can also be accomplished using multidimensional + double[,] arrays. + + + // Create some sample input data instances. This is the same + // data used in the Gutierrez-Osuna's example available on: + // http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf + + double[][] inputs = + { + // Class 0 + new double[] { 4, 1 }, + new double[] { 2, 4 }, + new double[] { 2, 3 }, + new double[] { 3, 6 }, + new double[] { 4, 4 }, + + // Class 1 + new double[] { 9, 10 }, + new double[] { 6, 8 }, + new double[] { 9, 5 }, + new double[] { 8, 7 }, + new double[] { 10, 8 } + }; + + int[] output = + { + 0, 0, 0, 0, 0, // The first five are from class 0 + 1, 1, 1, 1, 1 // The last five are from class 1 + }; + + // Then, we will create a LDA for the given instances. + var lda = new LinearDiscriminantAnalysis(inputs, output); + + lda.Compute(); // Compute the analysis + + + // Now we can project the data into KDA space: + double[][] projection = lda.Transform(inputs); + + // Or perform classification using: + int[] results = lda.Classify(inputs); + + + + + + + Constructs a new Linear Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + + + + + Constructs a new Linear Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + + + + + Computes the Multi-Class Linear Discriminant Analysis algorithm. + + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + + + + Projects a given matrix into latent discriminant variable space. + + + The matrix to be projected. + + The number of discriminants to use in the projection. + + + + + + Projects a given matrix into latent discriminant variable space. + + + The matrix to be projected. + + The number of discriminants to use in the projection. + + + + + + Projects a given point into discriminant space. + + + The point to be projected. + + + + + Projects a given point into latent discriminant variable space. + + + The point to be projected. + The number of discriminant variables to use in the projection. + + + + + Returns the minimum number of discriminant space dimensions (discriminant + factors) required to represent a given percentile of the data. + + + The percentile of the data requiring representation. + The minimal number of dimensions required. + + + + + Classifies a new instance into one of the available classes. + + + + + + Classifies a new instance into one of the available classes. + + + + + + Classifies new instances into one of the available classes. + + + + + + Gets the discriminant function output for class c. + + + The class index. + The projected input. + + + + + Creates additional information about principal components. + + + + + + Returns the original supplied data to be analyzed. + + + + + + Gets the resulting projection of the source data given on + the creation of the analysis into discriminant space. + + + + + + Gets the original classifications (labels) of the source data + given on the moment of creation of this analysis object. + + + + + + Gets the mean of the original data given at method construction. + + + + + + Gets the standard mean of the original data given at method construction. + + + + + + Gets the Within-Class Scatter Matrix for the data. + + + + + + Gets the Between-Class Scatter Matrix for the data. + + + + + + Gets the Total Scatter Matrix for the data. + + + + + + Gets the Eigenvectors obtained during the analysis, + composing a basis for the discriminant factor space. + + + + + + Gets the Eigenvalues found by the analysis associated + with each vector of the ComponentMatrix matrix. + + + + + + Gets the level of importance each discriminant factor has in + discriminant space. Also known as amount of variance explained. + + + + + + The cumulative distribution of the discriminants factors proportions. + Also known as the cumulative energy of the first dimensions of the discriminant + space or as the amount of variance explained by those dimensions. + + + + + + Gets the discriminant factors in a object-oriented fashion. + + + + + + Gets information about the distinct classes in the analyzed data. + + + + + + Gets the Scatter matrix for each class. + + + + + + Gets the Mean vector for each class. + + + + + + Gets the feature space mean of the projected data. + + + + + + Gets the Standard Deviation vector for each class. + + + + + + Gets the observation count for each class. + + + + + + Constructs a new Kernel Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + The kernel to be used in the analysis. + + + + + Constructs a new Kernel Discriminant Analysis object. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The labels for each observation row in the input matrix. + The kernel to be used in the analysis. + + + + + Computes the Multi-Class Kernel Discriminant Analysis algorithm. + + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + The number of discriminant dimensions to use in the projection. + + + + + + Projects a given matrix into discriminant space. + + + The matrix to be projected. + + The number of discriminant dimensions to use in the projection. + + + + + + Gets the Kernel used in the analysis. + + + + + + Gets or sets the regularization parameter to + avoid non-singularities at the solution. + + + + + + Gets or sets the minimum variance proportion needed to keep a + discriminant component. If set to zero, all components will be + kept. Default is 0.001 (all components which contribute less + than 0.001 to the variance in the data will be discarded). + + + + + + Kernel Principal Component Analysis. + + + + + Kernel principal component analysis (kernel PCA) is an extension of principal + component analysis (PCA) using techniques of kernel methods. Using a kernel, + the originally linear operations of PCA are done in a reproducing kernel Hilbert + space with a non-linear mapping. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' + property. + + + References: + + + Heiko Hoffmann, Unsupervised Learning of Visuomotor Associations (Kernel PCA topic). + PhD thesis. 2005. Available on: http://www.heikohoffmann.de/htmlthesis/hoffmann_diss.html + + + James T. Kwok, Ivor W. Tsang. The Pre-Image Problem in Kernel Methods. 2003. Available on: + http://www.hpl.hp.com/conferences/icml2003/papers/345.pdf + + + + + + The example below shows a typical usage of the analysis. We will be replicating + the exact same example which can be found on the + documentation page. However, while we will be using a kernel, + any other kernel function could have been used. + + + // Below is the same data used on the excellent paper "Tutorial + // On Principal Component Analysis", by Lindsay Smith (2002). + + double[,] sourceMatrix = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + // Create a new linear kernel + IKernel kernel = new Linear(); + + // Creates the Kernel Principal Component Analysis of the given data + var kpca = new KernelPrincipalComponentAnalysis(sourceMatrix, kernel); + + // Compute the Kernel Principal Component Analysis + kpca.Compute(); + + // Creates a projection considering 80% of the information + double[,] components = kpca.Transform(sourceMatrix, 0.8f); + + + + + + + Principal component analysis (PCA) is a technique used to reduce + multidimensional data sets to lower dimensions for analysis. + + + + + Principal Components Analysis or the Karhunen-Loève expansion is a + classical method for dimensionality reduction or exploratory data + analysis. + + Mathematically, PCA is a process that decomposes the covariance matrix of a matrix + into two parts: Eigenvalues and column eigenvectors, whereas Singular Value Decomposition + (SVD) decomposes a matrix per se into three parts: singular values, column eigenvectors, + and row eigenvectors. The relationships between PCA and SVD lie in that the eigenvalues + are the square of the singular values and the column vectors are the same for both. + + + This class uses SVD on the data set which generally gives better numerical accuracy. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + + + The example below shows a typical usage of the analysis. However, users + often ask why the framework produces different values than other packages + such as STATA or MATLAB. After the simple introductory example below, we + will be exploring why those results are often different. + + + // Below is the same data used on the excellent paper "Tutorial + // On Principal Component Analysis", by Lindsay Smith (2002). + + double[,] sourceMatrix = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + // Creates the Principal Component Analysis of the given source + var pca = new PrincipalComponentAnalysis(sourceMatrix, AnalysisMethod.Center); + + // Compute the Principal Component Analysis + pca.Compute(); + + // Creates a projection considering 80% of the information + double[,] components = pca.Transform(sourceMatrix, 0.8f, true); + + + + + A question often asked by users is "why my matrices have inverted + signs" or "why my results differ from [another software]". In short, + despite any differences, the results are most likely correct (unless + you firmly believe you have found a bug; in this case, please fill + in a bug report). + + The example below explores, in the same steps given in Lindsay's + tutorial, anything that would cause any discrepancies between the + results given by Accord.NET and results given by other softwares. + + + // Reproducing Lindsay Smith's "Tutorial on Principal Component Analysis" + // using the framework's default method. The tutorial can be found online + // at http://www.sccg.sk/~haladova/principal_components.pdf + + // Step 1. Get some data + // --------------------- + + double[,] data = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + + // Step 2. Subtract the mean + // ------------------------- + // Note: The framework does this automatically. By default, the framework + // uses the "Center" method, which only subtracts the mean. However, it is + // also possible to remove the mean *and* divide by the standard deviation + // (thus performing the correlation method) by specifying "Standardize" + // instead of "Center" as the AnalysisMethod. + + AnalysisMethod method = AnalysisMethod.Center; // AnalysisMethod.Standardize + + + // Step 3. Compute the covariance matrix + // ------------------------------------- + // Note: Accord.NET does not need to compute the covariance + // matrix in order to compute PCA. The framework uses the SVD + // method which is more numerically stable, but may require + // more processing or memory. In order to replicate the tutorial + // using covariance matrices, please see the next example below. + + // Create the analysis using the selected method + var pca = new PrincipalComponentAnalysis(data, method); + + // Compute it + pca.Compute(); + + + // Step 4. Compute the eigenvectors and eigenvalues of the covariance matrix + // ------------------------------------------------------------------------- + // Note: Since Accord.NET uses the SVD method rather than the Eigendecomposition + // method, the Eigenvalues are not directly available. However, it is not the + // Eigenvalues themselves which are important, but rather their proportion: + + // Those are the expected eigenvalues, in descending order: + double[] eigenvalues = { 1.28402771, 0.0490833989 }; + + // And this will be their proportion: + double[] proportion = eigenvalues.Divide(eigenvalues.Sum()); + + // Those are the expected eigenvectors, + // in descending order of eigenvalues: + double[,] eigenvectors = + { + { -0.677873399, -0.735178656 }, + { -0.735178656, 0.677873399 } + }; + + // Now, here is the place most users get confused. The fact is that + // the Eigenvalue decomposition (EVD) is not unique, and both the SVD + // and EVD routines used by the framework produces results which are + // numerically different from packages such as STATA or MATLAB, but + // those are correct. + + // If v is an eigenvector, a multiple of this eigenvector (such as a*v, with + // a being a scalar) will also be an eigenvector. In the Lindsay case, the + // framework produces a first eigenvector with inverted signs. This is the same + // as considering a=-1 and taking a*v. The result is still correct. + + // Retrieve the first expected eigenvector + double[] v = eigenvectors.GetColumn(0); + + // Multiply by a scalar and store it back + eigenvectors.SetColumn(0, v.Multiply(-1)); + + // At this point, the eigenvectors should equal the pca.ComponentMatrix, + // and the proportion vector should equal the pca.ComponentProportions up + // to the 9 decimal places shown in the tutorial. + + + // Step 5. Deriving the new data set + // --------------------------------- + + double[,] actual = pca.Transform(data); + + // transformedData shown in pg. 18 + double[,] expected = new double[,] + { + { 0.827970186, -0.175115307 }, + { -1.77758033, 0.142857227 }, + { 0.992197494, 0.384374989 }, + { 0.274210416, 0.130417207 }, + { 1.67580142, -0.209498461 }, + { 0.912949103, 0.175282444 }, + { -0.099109437, -0.349824698 }, + { -1.14457216, 0.046417258 }, + { -0.438046137, 0.017764629 }, + { -1.22382056, -0.162675287 }, + }; + + // At this point, the actual and expected matrices + // should be equal up to 8 decimal places. + + + + + Some users would like to analyze huge amounts of data. In this case, + computing the SVD directly on the data could result in memory exceptions + or excessive computing times. If your data's number of dimensions is much + less than the number of observations (i.e. your matrix have less columns + than rows) then it would be a better idea to summarize your data in the + form of a covariance or correlation matrix and compute PCA using the EVD. + + The example below shows how to compute the analysis with covariance + matrices only. + + + // Reproducing Lindsay Smith's "Tutorial on Principal Component Analysis" + // using the paper's original method. The tutorial can be found online + // at http://www.sccg.sk/~haladova/principal_components.pdf + + // Step 1. Get some data + // --------------------- + + double[,] data = + { + { 2.5, 2.4 }, + { 0.5, 0.7 }, + { 2.2, 2.9 }, + { 1.9, 2.2 }, + { 3.1, 3.0 }, + { 2.3, 2.7 }, + { 2.0, 1.6 }, + { 1.0, 1.1 }, + { 1.5, 1.6 }, + { 1.1, 0.9 } + }; + + + // Step 2. Subtract the mean + // ------------------------- + // Note: The framework does this automatically + // when computing the covariance matrix. In this + // step we will only compute the mean vector. + + double[] mean = Accord.Statistics.Tools.Mean(data); + + + // Step 3. Compute the covariance matrix + // ------------------------------------- + + double[,] covariance = Accord.Statistics.Tools.Covariance(data, mean); + + // Create the analysis using the covariance matrix + var pca = PrincipalComponentAnalysis.FromCovarianceMatrix(mean, covariance); + + // Compute it + pca.Compute(); + + + // Step 4. Compute the eigenvectors and eigenvalues of the covariance matrix + //-------------------------------------------------------------------------- + + // Those are the expected eigenvalues, in descending order: + double[] eigenvalues = { 1.28402771, 0.0490833989 }; + + // And this will be their proportion: + double[] proportion = eigenvalues.Divide(eigenvalues.Sum()); + + // Those are the expected eigenvectors, + // in descending order of eigenvalues: + double[,] eigenvectors = + { + { -0.677873399, -0.735178656 }, + { -0.735178656, 0.677873399 } + }; + + // Now, here is the place most users get confused. The fact is that + // the Eigenvalue decomposition (EVD) is not unique, and both the SVD + // and EVD routines used by the framework produces results which are + // numerically different from packages such as STATA or MATLAB, but + // those are correct. + + // If v is an eigenvector, a multiple of this eigenvector (such as a*v, with + // a being a scalar) will also be an eigenvector. In the Lindsay case, the + // framework produces a first eigenvector with inverted signs. This is the same + // as considering a=-1 and taking a*v. The result is still correct. + + // Retrieve the first expected eigenvector + double[] v = eigenvectors.GetColumn(0); + + // Multiply by a scalar and store it back + eigenvectors.SetColumn(0, v.Multiply(-1)); + + // At this point, the eigenvectors should equal the pca.ComponentMatrix, + // and the proportion vector should equal the pca.ComponentProportions up + // to the 9 decimal places shown in the tutorial. Moreover, unlike the + // previous example, the eigenvalues vector should also be equal to the + // property pca.Eigenvalues. + + + // Step 5. Deriving the new data set + // --------------------------------- + + double[,] actual = pca.Transform(data); + + // transformedData shown in pg. 18 + double[,] expected = new double[,] + { + { 0.827970186, -0.175115307 }, + { -1.77758033, 0.142857227 }, + { 0.992197494, 0.384374989 }, + { 0.274210416, 0.130417207 }, + { 1.67580142, -0.209498461 }, + { 0.912949103, 0.175282444 }, + { -0.099109437, -0.349824698 }, + { -1.14457216, 0.046417258 }, + { -0.438046137, 0.017764629 }, + { -1.22382056, -0.162675287 }, + }; + + // At this point, the actual and expected matrices + // should be equal up to 8 decimal places. + + + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is . + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The analysis method to perform. Default is . + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + + + + + Constructs a new Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + + + + + Computes the Principal Component Analysis algorithm. + + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + The number of components to consider. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + The number of components to consider. + + + + + Projects a given matrix into principal component space. + + + The matrix to be projected. + The number of components to consider. + + + + + Reverts a set of projected data into it's original form. Complete reverse + transformation is only possible if all components are present, and, if the + data has been standardized, the original standard deviation and means of + the original matrix are known. + + + The pca transformed data. + + + + + Returns the minimal number of principal components + required to represent a given percentile of the data. + + + The percentile of the data requiring representation. + The minimal number of components required. + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Creates additional information about principal components. + + + + + + Constructs a new Principal Component Analysis from a Covariance matrix. + + + + This method may be more suitable to high dimensional problems in which + the original data matrix may not fit in memory but the covariance matrix + will. + + The mean vector for the source data. + The covariance matrix of the data. + + + + + Constructs a new Principal Component Analysis from a Correlation matrix. + + + + This method may be more suitable to high dimensional problems in which + the original data matrix may not fit in memory but the covariance matrix + will. + + The mean vector for the source data. + The standard deviation vectors for the source data. + The correlation matrix of the data. + + + + + Returns the original data supplied to the analysis. + + + The original data matrix supplied to the analysis. + + + + + Gets the resulting projection of the source + data given on the creation of the analysis + into the space spawned by principal components. + + + The resulting projection in principal component space. + + + + + Gets a matrix whose columns contain the principal components. Also known as the Eigenvectors or loadings matrix. + + + The matrix of principal components. + + + + + Gets the Principal Components in a object-oriented structure. + + + The collection of principal components. + + + + + The respective role each component plays in the data set. + + + The component proportions. + + + + + The cumulative distribution of the components proportion role. Also known + as the cumulative energy of the principal components. + + + The cumulative proportions. + + + + + Provides access to the Singular Values stored during the analysis. + If a covariance method is chosen, then it will contain an empty vector. + + + The singular values. + + + + + Provides access to the Eigenvalues stored during the analysis. + + + The Eigenvalues. + + + + + Gets the column standard deviations of the source data given at method construction. + + + + + + Gets the column mean of the source data given at method construction. + + + + + + Gets or sets the method used by this analysis. + + + + + + Gets or sets whether calculations will be performed overwriting + data in the original source matrix, using less memory. + + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + True to center the data in feature space, + false otherwise. Default is true. + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + True to center the data in feature space, + false otherwise. Default is true. + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + + + + + Constructs the Kernel Principal Component Analysis. + + + The source data to perform analysis. The matrix should contain + variables as columns and observations of each variable as rows. + The kernel to be used in the analysis. + The analysis method to perform. + + + + Constructs the Kernel Principal Component Analysis. + + The source data to perform analysis. + The kernel to be used in the analysis. + + + + Constructs the Kernel Principal Component Analysis. + + The source data to perform analysis. + The kernel to be used in the analysis. + + + + + Computes the Kernel Principal Component Analysis algorithm. + + + + + + Computes the Kernel Principal Component Analysis algorithm. + + + + + + Projects a given matrix into the principal component space. + + + The matrix to be projected. The matrix should contain + variables as columns and observations of each variable as rows. + The number of components to use in the transformation. + + + + + Projects a given matrix into the principal component space. + + + The matrix to be projected. The matrix should contain + variables as columns and observations of each variable as rows. + The number of components to use in the transformation. + + + + + Reverts a set of projected data into it's original form. Complete reverse + transformation is not always possible and is not even guaranteed to exist. + + + + This method works using a closed-form MDS approach as suggested by + Kwok and Tsang. It is currently a direct implementation of the algorithm + without any kind of optimization. + + Reference: + - http://cmp.felk.cvut.cz/cmp/software/stprtool/manual/kernels/preimage/list/rbfpreimg3.html + + + The kpca-transformed data. + + + + + Reverts a set of projected data into it's original form. Complete reverse + transformation is not always possible and is not even guaranteed to exist. + + + + + This method works using a closed-form MDS approach as suggested by + Kwok and Tsang. It is currently a direct implementation of the algorithm + without any kind of optimization. + + + Reference: + - http://cmp.felk.cvut.cz/cmp/software/stprtool/manual/kernels/preimage/list/rbfpreimg3.html + + + + The kpca-transformed data. + The number of nearest neighbors to use while constructing the pre-image. + + + + + Gets the Kernel used in the analysis. + + + + + + Gets or sets whether the points should be centered in feature space. + + + + + + Gets or sets the minimum variance proportion needed to keep a + principal component. If set to zero, all components will be + kept. Default is 0.001 (all components which contribute less + than 0.001 to the variance in the data will be discarded). + + + + + + Represents a class found during Discriminant Analysis, allowing it to + be bound to controls like the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a new Class representation + + + + + + Discriminant function for the class. + + + + + + Gets the Index of this class on the original analysis collection. + + + + + + Gets the number labeling this class. + + + + + + Gets the prevalence of the class on the original data set. + + + + + + Gets the class' mean vector. + + + + + + Gets the feature-space means of the projected data. + + + + + + Gets the class' standard deviation vector. + + + + + + Gets the Scatter matrix for this class. + + + + + + Gets the indices of the rows in the original data which belong to this class. + + + + + + Gets the subset of the original data spawned by this class. + + + + + + Gets the number of observations inside this class. + + + + + + + Represents a discriminant factor found during Discriminant Analysis, + allowing it to be bound to controls like the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a new discriminant factor representation. + + + + + + Gets the index of this discriminant factor + on the original analysis collection. + + + + + + Gets the Eigenvector for this discriminant factor. + + + + + + Gets the Eigenvalue for this discriminant factor. + + + + + + Gets the proportion, or amount of information explained by this discriminant factor. + + + + + + Gets the cumulative proportion of all discriminant factors until this factor. + + + + + + + Represents a collection of Discriminants factors found in the Discriminant Analysis. + + This class cannot be instantiated. + + + + + + + Represents a collection of classes found in the Discriminant Analysis. + + This class cannot be instantiated. + + + + + + Logistic Regression Analysis. + + + + + The Logistic Regression Analysis tries to extract useful + information about a logistic regression model. + + + This class can also be bound to standard controls such as the + DataGridView + by setting their DataSource property to the analysis' property. + + + References: + + + E. F. Connor. Logistic Regression. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + C. Shalizi. Logistic Regression and Newton's Method. Lecture notes. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + A. Storkey. Learning from Data: Learning Logistic Regressors. Available on: + http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + + + + + The following example shows to create a Logistic regresion analysis using a full + dataset composed of input vectors and a binary output vector. Each input vector + has an associated label (1 or 0) in the output vector, where 1 represents a positive + label (yes, or true) and 0 represents a negative label (no, or false). + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (this is completely fictional data). + + double[][] inputs = + { + // Age Smoking + new double[] { 55, 0 }, + new double[] { 28, 0 }, + new double[] { 65, 1 }, + new double[] { 46, 0 }, + new double[] { 86, 1 }, + new double[] { 56, 1 }, + new double[] { 85, 0 }, + new double[] { 33, 0 }, + new double[] { 21, 1 }, + new double[] { 42, 1 }, + }; + + // Additionally, we also have information about whether + // or not they those patients had lung cancer. The array + // below gives 0 for those who did not, and 1 for those + // who did. + + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + // Create a Logistic Regression analysis + var regression = new LogisticRegressionAnalysis(inputs, output); + + regression.Compute(); // compute the analysis. + + // Now we can show a summary of analysis + DataGridBox.Show(regression.Coefficients); + + + + The resulting table is shown below. + + + + // We can also investigate all parameters individually. For + // example the coefficients values will be available at the + // vector + + double[] coef = regression.CoefficientValues; + + // The first value refers to the model's intercept term. We + // can also retrieve the odds ratios and standard errors: + + double[] odds = regression.OddsRatios; + double[] stde = regression.StandardErrors; + + + // Finally, we can also use the analysis to classify a new patient + double y = regression.Regression.Compute(new double[] { 87, 1 }); + + // For those inputs, the answer probability is approximately 75%. + + + + The analysis can also be created from data given in a summary form. Instead of having + one input vector associated with one positive or negative label, each input vector is + associated with the proportion of positive to negative labels in the original dataset. + + + + // Suppose we have a (fictitious) data set about patients who + // underwent cardiac surgery. The first column gives the number + // of arterial bypasses performed during the surgery. The second + // column gives the number of patients whose surgery went well, + // while the third column gives the number of patients who had + // at least one complication during the surgery. + // + int[,] data = + { + // # of stents success complications + { 1, 140, 45 }, + { 2, 130, 60 }, + { 3, 150, 31 }, + { 4, 96, 65 } + }; + + + double[][] inputs = data.GetColumn(0).ToDouble().ToArray(); + + int[] positive = data.GetColumn(1); + int[] negative = data.GetColumn(2); + + // Create a new Logistic Regression Analysis from the summary data + var regression = LogisticRegressionAnalysis.FromSummary(inputs, positive, negative); + + regression.Compute(); // compute the analysis. + + // Now we can show a summary of the analysis + DataGridBox.Show(regression.Coefficients); + + + // We can also investigate all parameters individually. For + // example the coefficients values will be available at the + // vector + + double[] coef = regression.CoefficientValues; + + // The first value refers to the model's intercept term. We + // can also retrieve the odds ratios and standard errors: + + double[] odds = regression.OddsRatios; + double[] stde = regression.StandardErrors; + + + // Finally, we can use it to estimate risk for a new patient + double y = regression.Regression.Compute(new double[] { 4 }); + + + + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The weights associated with each input vector. + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output, binary data for the analysis. + The names of the input variables. + The name of the output variable. + + + + + Constructs a Logistic Regression Analysis. + + + The input data for the analysis. + The output, binary data for the analysis. + The names of the input variables. + The name of the output variable. + The weights associated with each input vector. + + + + + Gets the Log-Likelihood Ratio between this model and another model. + + + Another logistic regression model. + The Likelihood-Ratio between the two models. + + + + + Computes the Logistic Regression Analysis. + + + + The likelihood surface for the logistic regression learning + is convex, so there will be only one peak. Any local maxima + will be also a global maxima. + + + + True if the model converged, false otherwise. + + + + + + Computes the Logistic Regression Analysis for an already computed regression. + + + + + + Computes the Logistic Regression Analysis. + + + The likelihood surface for the + logistic regression learning is convex, so there will be only one + peak. Any local maxima will be also a global maxima. + + + + The difference between two iterations of the regression algorithm + when the algorithm should stop. If not specified, the value of + 1e-5 will be used. The difference is calculated based on the largest + absolute parameter change of the regression. + + + + The maximum number of iterations to be performed by the regression + algorithm. + + + + True if the model converged, false otherwise. + + + + + + Creates a new from summarized data. + In summary data, instead of having a set of inputs and their associated outputs, + we have the number of times an input vector had a positive label in the data set + and how many times it had a negative label. + + + The input data. + The number of positives labels for each input vector. + The number of negative labels for each input vector. + + + A created from the given summary data. + + + + + + Computes the analysis using given source data and parameters. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Gets or sets the regularization value to be + added in the objective function. Default is + 1e-10. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the source matrix from which the analysis was run. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting probabilities obtained + by the logistic regression model. + + + + + + Gets the sample weight associated with each input vector. + + + + + + Gets the Logistic Regression model created + and evaluated by this analysis. + + + + + + Gets the collection of coefficients of the model. + + + + + + Gets the Log-Likelihood for the model. + + + + + + Gets the Chi-Square (Likelihood Ratio) Test for the model. + + + + + + Gets the Deviance of the model. + + + + + + Gets the name of the input variables for the model. + + + + + + Gets the name of the output variable for the model. + + + + + + Gets the Odds Ratio for each coefficient + found during the logistic regression. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the Likelihood-Ratio Tests for each coefficient. + + + + Since this operation might be potentially time-consuming, the likelihood-ratio + tests will be computed on the first time this property is acessed. + + + + + + Gets the value of each coefficient. + + + + + + Gets the 95% Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Represents a Logistic Regression Coefficient found in the Logistic Regression, + allowing it to be bound to controls like the DataGridView. This class cannot + be instantiated outside the . + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the name for the current coefficient. + + + + + + Gets the Odds ratio for the current coefficient. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the 95% confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the 95% confidence interval. + + + + + + Gets the lower limit for the 95% confidence interval. + + + + + + Gets the coefficient value. + + + + + + Gets the Wald's test performed for this coefficient. + + + + + + Gets the Likelihood-Ratio test performed for this coefficient. + + + + Since this operation might be potentially time-consuming, the likelihood-ratio + tests will be computed on the first time this property is acessed. + + + + + + Represents a collection of Logistic Coefficients found in the + . This class cannot be instantiated. + + + + + + The PLS algorithm to use in the Partial Least Squares Analysis. + + + + + + Sijmen de Jong's SIMPLS algorithm. + + + The SIMPLS algorithm is considerably faster than NIPALS, especially when the number of + input variables increases; but gives slightly different results in the case of multiple + outputs. + + + + + + Traditional NIPALS algorithm. + + + + + + Partial Least Squares Regression/Analysis (a.k.a Projection To Latent Structures) + + + + + Partial least squares regression (PLS-regression) is a statistical method that bears + some relation to principal components regression; instead of finding hyperplanes of + maximum variance between the response and independent variables, it finds a linear + regression model by projecting the predicted variables and the observable variables + to a new space. Because both the X and Y data are projected to new spaces, the PLS + family of methods are known as bilinear factor models. + + + References: + + + Abdi, H. (2010). Partial least square regression, projection on latent structure regression, + PLS-Regression. Wiley Interdisciplinary Reviews: Computational Statistics, 2, 97-106. + Available in: http://www.utdallas.edu/~herve/abdi-wireCS-PLS2010.pdf + + Abdi, H. (2007). Partial least square regression (PLS regression). In N.J. Salkind (Ed.): + Encyclopedia of Measurement and Statistics. Thousand Oaks (CA): Sage. pp. 740-744. + Resource available online in: http://www.utdallas.edu/~herve/Abdi-PLS-pretty.pdf + + Martin Anderson, "A comparison of nine PLS1 algorithms". Available on: + http://onlinelibrary.wiley.com/doi/10.1002/cem.1248/pdf + + Mevik, B-H. Wehrens, R. (2007). The pls Package: Principal Component and Partial Least Squares + Regression in R. Journal of Statistical Software, Volume 18, Issue 2. + Resource available online in: http://www.jstatsoft.org/v18/i02/paper + + Garson, D. Partial Least Squares Regression (PLS). + http://faculty.chass.ncsu.edu/garson/PA765/pls.htm + + De Jong, S. (1993). SIMPLS: an alternative approach to partial least squares regression. + Chemometrics and Intelligent Laboratory Systems, 18: 251–263. + http://dx.doi.org/10.1016/0169-7439(93)85002-X + + Rosipal, Roman and Nicole Kramer. (2006). Overview and Recent Advances in Partial Least + Squares, in Subspace, Latent Structure and Feature Selection Techniques, pp 34–51. + http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.7735 + + Yi Cao. (2008). Partial Least-Squares and Discriminant Analysis: A tutorial and tool + using PLS for discriminant analysis. + + Wikipedia contributors. Partial least squares regression. Wikipedia, The Free Encyclopedia; + 2009. Available from: http://en.wikipedia.org/wiki/Partial_least_squares_regression. + + + + + + // Following the small example by Hervé Abdi (Hervé Abdi, Partial Least Square Regression), + // we will create a simple example where the goal is to predict the subjective evaluation of + // a set of 5 wines. The dependent variables that we want to predict for each wine are its + // likeability, and how well it goes with meat, or dessert (as rated by a panel of experts). + // The predictors are the price, the sugar, alcohol, and acidity content of each wine. + + + // Here we will list the inputs, or characteristics we would like to use in order to infer + // information from our wines. Each row denotes a different wine and lists its corresponding + // observable characteristics. The inputs are usually denoted by X in the PLS literature. + + double[,] inputs = + { + // Wine | Price | Sugar | Alcohol | Acidity + { 7, 7, 13, 7 }, + { 4, 3, 14, 7 }, + { 10, 5, 12, 5 }, + { 16, 7, 11, 3 }, + { 13, 3, 10, 3 }, + }; + + + // Here we will list our dependent variables. Dependent variables are the outputs, or what we + // would like to infer or predict from our available data, given a new observation. The outputs + // are usually denoted as Y in the PLS literature. + + double[,] outputs = + { + // Wine | Hedonic | Goes with meat | Goes with dessert + { 14, 7, 8 }, + { 10, 7, 6 }, + { 8, 5, 5 }, + { 2, 4, 7 }, + { 6, 2, 4 }, + }; + + + // Next, we will create our Partial Least Squares Analysis passing the inputs (values for + // predictor variables) and the associated outputs (values for dependent variables). + + // We will also be using the using the Covariance Matrix/Center method (data will only + // be mean centered but not normalized) and the SIMPLS algorithm. + PartialLeastSquaresAnalysis pls = new PartialLeastSquaresAnalysis(inputs, outputs, + AnalysisMethod.Center, PartialLeastSquaresAlgorithm.SIMPLS); + + // Compute the analysis with all factors. The number of factors + // could also have been specified in a overload of this method. + + pls.Compute(); + + // After computing the analysis, we can create a linear regression model in order + // to predict new variables. To do that, we may call the CreateRegression() method. + + MultivariateLinearRegression regression = pls.CreateRegression(); + + // After the regression has been created, we will be able to classify new instances. + // For example, we will compute the outputs for the first input sample: + + double[] y = regression.Compute(new double[] { 7, 7, 13, 7 }); + + // The y output will be very close to the corresponding output used as reference. + // In this case, y is a vector of length 3 with values { 13.98, 7.00, 7.75 }. + + + + + + + Constructs a new Partial Least Squares Analysis. + + + The input source data to perform analysis. + The output source data to perform analysis. + + + + + Constructs a new Partial Least Squares Analysis. + + + The input source data to perform analysis. + The output source data to perform analysis. + The PLS algorithm to use in the analysis. Default is . + + + + + Constructs a new Partial Least Squares Analysis. + + + The input source data to perform analysis. + The output source data to perform analysis. + The analysis method to perform. Default is . + The PLS algorithm to use in the analysis. Default is . + + + + + Computes the Partial Least Squares Analysis. + + + + + Computes the Partial Least Squares Analysis. + + + The number of factors to compute. The number of factors + should be a value between 1 and min(rows-1,cols) where + rows and columns are the number of observations and + variables in the input source data matrix. + + + + Projects a given set of inputs into latent space. + + + + + + Projects a given set of inputs into latent space. + + + + + + Projects a given set of outputs into latent space. + + + + + + Projects a given set of outputs into latent space. + + + + + + Creates a Multivariate Linear Regression model using + coefficients obtained by the Partial Least Squares. + + + + + + Creates a Multivariate Linear Regression model using + coefficients obtained by the Partial Least Squares. + + + + + + Computes PLS parameters using NIPALS algorithm. + + + The number of factors to compute. + The mean-centered (adjusted) input values X. + The mean-centered (adjusted) output values Y. + The tolerance for convergence. + + + + The algorithm implementation follows the original paper by Hervé + Abdi, with overall structure as suggested in Yi Cao's tutorial. + + + References: + + + Abdi, H. (2010). Partial least square regression, projection on latent structure regression, + PLS-Regression. Wiley Interdisciplinary Reviews: Computational Statistics, 2, 97-106. + Available in: http://www.utdallas.edu/~herve/abdi-wireCS-PLS2010.pdf + + Yi Cao. (2008). Partial Least-Squares and Discriminant Analysis: A tutorial and tool + using PLS for discriminant analysis. + + + + + + + Computes PLS parameters using SIMPLS algorithm. + + + The number of factors to compute. + The mean-centered (adjusted) input values X. + The mean-centered (adjusted) output values Y. + + + + The algorithm implementation is based on the appendix code by Martin Anderson, + with modifications for multiple output variables as given in the sources listed + below. + + + References: + + + Martin Anderson, "A comparison of nine PLS1 algorithms". Available on: + http://onlinelibrary.wiley.com/doi/10.1002/cem.1248/pdf + + Abdi, H. (2010). Partial least square regression, projection on latent structure regression, + PLS-Regression. Wiley Interdisciplinary Reviews: Computational Statistics, 2, 97-106. + Available from: http://www.utdallas.edu/~herve/abdi-wireCS-PLS2010.pdf + + StatSoft, Inc. (2012). Electronic Statistics Textbook: Partial Least Squares (PLS). + Tulsa, OK: StatSoft. Available from: http://www.statsoft.com/textbook/partial-least-squares/#SIMPLS + + + De Jong, S. (1993). SIMPLS: an alternative approach to partial least squares regression. + Chemometrics and Intelligent Laboratory Systems, 18: 251–263. + http://dx.doi.org/10.1016/0169-7439(93)85002-X + + + + + + + Adjusts a data matrix, centering and standardizing its values + using the already computed column's means and standard deviations. + + + + + + Returns the index for the column with largest squared sum. + + + + + + Computes the variable importance in projection (VIP). + + + + A predictor factors matrix in which each row represents + the importance of the variable in a projection considering + the number of factors indicated by the column's index. + + + + References: + + + Il-Gyo Chong, Chi-Hyuck Jun, Performance of some variable selection methods + when multicollinearity is present, Chemometrics and Intelligent Laboratory + Systems, Volume 78, Issues 1-2, 28 July 2005, Pages 103-112, ISSN 0169-7439, + DOI: 10.1016/j.chemolab.2004.12.011. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variables' values + for each of the source input points. + + + + + + Gets information about independent (input) variables. + + + + + + Gets information about dependent (output) variables. + + + + + + Gets the Weight matrix obtained during the analysis. For the NIPALS algorithm + this is the W matrix. For the SIMPLS algorithm this is the R matrix. + + + + + + Gets information about the factors discovered during the analysis in a + object-oriented structure which can be data-bound directly to many controls. + + + + + + Gets the PLS algorithm used by the analysis. + + + + + + Gets the method used by this analysis. + + + + + + Gets the Variable Importance in Projection (VIP). + + + This method has been implemented considering only PLS + models fitted using the NIPALS algorithm containing a + single response (output) variable. + + + + + + Gets or sets whether calculations will be performed overwriting + data in the original source matrix, using less memory. + + + + + + Represents a Partial Least Squares Factor found in the Partial Least Squares + Analysis, allowing it to be directly bound to controls like the DataGridView. + + + + + + Creates a partial least squares factor representation. + + + The analysis to which this component belongs. + The component index. + + + + + Gets the Index of this component on the original factor collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the proportion of prediction variables + variance explained by this factor. + + + + + + Gets the cumulative proportion of dependent variables + variance explained by this factor. + + + + + + Gets the proportion of dependent variable + variance explained by this factor. + + + + + + Gets the cumulative proportion of dependent variable + variance explained by this factor. + + + + + + Gets the input variable's latent vectors for this factor. + + + + + + Gets the output variable's latent vectors for this factor. + + + + + + Gets the importance of each variable for the given component. + + + + + + Gets the proportion, or amount of information explained by this component. + + + + + + Gets the cumulative proportion of all discriminants until this component. + + + + + + Represents a Collection of Partial Least Squares Factors found in + the Partial Least Squares Analysis. This class cannot be instantiated. + + + + + + Represents source variables used in Partial Least Squares Analysis. Can represent either + input variables (predictor variables) or output variables (independent variables or regressors). + + + + + + Projects a given dataset into latent space. Can be either input variable's + latent space or output variable's latent space, depending if the variables + chosen are predictor variables or dependent variables, respectively. + + + + + + Projects a given dataset into latent space. Can be either input variable's + latent space or output variable's latent space, depending if the variables + chosen are predictor variables or dependent variables, respectively. + + + + + + Source data used in the analysis. Can be either input data + or output data depending if the variables chosen are predictor + variables or dependent variables, respectively. + + + + + + Gets the resulting projection (scores) of the source data + into latent space. Can be either from input data or output + data depending if the variables chosen are predictor variables + or dependent variables, respectively. + + + + + + Gets the column means of the source data. Can be either from + input data or output data, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + Gets the column standard deviations of the source data. Can be either + from input data or output data, depending if the variables chosen are + predictor variables or dependent variables, respectively. + + + + + + Gets the loadings (a.k.a factors or components) for the + variables obtained during the analysis. Can be either from + input data or output data, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + Gets the amount of variance explained by each latent factor. + Can be either by input variables' latent factors or output + variables' latent factors, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + Gets the cumulative variance explained by each latent factor. + Can be either by input variables' latent factors or output + variables' latent factors, depending if the variables chosen + are predictor variables or dependent variables, respectively. + + + + + + + Represents a Principal Component found in the Principal Component Analysis, + allowing it to be bound to controls like the DataGridView. + + This class cannot be instantiated. + + + + + + Creates a principal component representation. + + + The analysis to which this component belongs. + The component index. + + + + + Gets the Index of this component on the original analysis principal component collection. + + + + + + Returns a reference to the parent analysis object. + + + + + + Gets the proportion of data this component represents. + + + + + + Gets the cumulative proportion of data this component represents. + + + + + + If available, gets the Singular Value of this component found during the Analysis. + + + + + + Gets the Eigenvalue of this component found during the analysis. + + + + + + Gets the Eigenvector of this component. + + + + + + Represents a Collection of Principal Components found in the + . This class cannot be instantiated. + + + + + + Methods for computing the area under + Receiver-Operating Characteristic (ROC) curves (also known as the ROC AUC). + + + + + + Method of DeLong, E. R., D. M. DeLong, and D. L. Clarke-Pearson. 1988. Comparing + the areas under two or more correlated receiver operating characteristic curves: + a nonparametric approach. Biometrics 44:837–845. + + + + + + Method of Hanley, J.A. and McNeil, B.J. 1983. A method of comparing the areas under + receiver operating characteristic curves derived from the same cases. Radiology 148:839-843. + + + + + + Receiver Operating Characteristic (ROC) Curve. + + + + + In signal detection theory, a receiver operating characteristic (ROC), or simply + ROC curve, is a graphical plot of the sensitivity vs. (1 − specificity) for a + binary classifier system as its discrimination threshold is varied. + + This package does not attempt to fit a curve to the obtained points. It just + computes the area under the ROC curve directly using the trapezoidal rule. + + Also note that the curve construction algorithm uses the convention that a + higher test value represents a positive for a condition while computing + sensitivity and specificity values. + + + References: + + + Wikipedia, The Free Encyclopedia. Receiver Operating Characteristic. Available on: + http://en.wikipedia.org/wiki/Receiver_operating_characteristic + + Anaesthesist. The magnificent ROC. Available on: + http://www.anaesthetist.com/mnm/stats/roc/Findex.htm + + + + + + The following example shows how to measure the accuracy + of a binary classifier using a ROC curve. + + + // This example shows how to measure the accuracy of a + // binary classifier using a ROC curve. For this example, + // we will be creating a Support Vector Machine trained + // on the following training instances: + + double[][] inputs = + { + // Those are from class -1 + new double[] { 2, 4, 0 }, + new double[] { 5, 5, 1 }, + new double[] { 4, 5, 0 }, + new double[] { 2, 5, 5 }, + new double[] { 4, 5, 1 }, + new double[] { 4, 5, 0 }, + new double[] { 6, 2, 0 }, + new double[] { 4, 1, 0 }, + + // Those are from class +1 + new double[] { 1, 4, 5 }, + new double[] { 7, 5, 1 }, + new double[] { 2, 6, 0 }, + new double[] { 7, 4, 7 }, + new double[] { 4, 5, 0 }, + new double[] { 6, 2, 9 }, + new double[] { 4, 1, 6 }, + new double[] { 7, 2, 9 }, + }; + + int[] outputs = + { + -1, -1, -1, -1, -1, -1, -1, -1, // fist eight from class -1 + +1, +1, +1, +1, +1, +1, +1, +1 // last eight from class +1 + }; + + // Next, we create a linear Support Vector Machine with 4 inputs + SupportVectorMachine machine = new SupportVectorMachine(inputs: 3); + + // Create the sequential minimal optimization learning algorithm + var smo = new SequentialMinimalOptimization(machine, inputs, outputs); + + // We learn the machine + double error = smo.Run(); + + // And then extract its predicted labels + double[] predicted = new double[inputs.Length]; + for (int i = 0; i < predicted.Length; i++) + predicted[i] = machine.Compute(inputs[i]); + + // At this point, the output vector contains the labels which + // should have been assigned by the machine, and the predicted + // vector contains the labels which have been actually assigned. + + // Create a new ROC curve to assess the performance of the model + var roc = new ReceiverOperatingCharacteristic(outputs, predicted); + roc.Compute(100); // Compute a ROC curve with 100 cut-off points + + // Generate a connected scatter plot for the ROC curve and show it on-screen + ScatterplotBox.Show(roc.GetScatterplot(includeRandom: true), nonBlocking: true) + + .SetSymbolSize(0) // do not display data points + .SetLinesVisible(true) // show lines connecting points + .SetScaleTight(true) // tighten the scale to points + .WaitForClose(); + + + + The resulting graph is shown below. + + + + + + + + + Constructs a new Receiver Operating Characteristic model + + + + An array of binary values. Typically represented as 0 and 1, or -1 and 1, + indicating negative and positive cases, respectively. The maximum value + will be treated as the positive case, and the lowest as the negative. + + An array of continuous values trying to approximate the measurement array. + + + + + + Constructs a new Receiver Operating Characteristic model + + + + An array of binary values. Typically represented as 0 and 1, or -1 and 1, + indicating negative and positive cases, respectively. The maximum value + will be treated as the positive case, and the lowest as the negative. + + An array of continuous values trying to approximate the measurement array. + + + + + + Constructs a new Receiver Operating Characteristic model + + + + An array of binary values. Typically represented as 0 and 1, or -1 and 1, + indicating negative and positive cases, respectively. The maximum value + will be treated as the positive case, and the lowest as the negative. + + An array of continuous values trying to approximate the measurement array. + + + + + + Computes a n-points ROC curve. + + + + Each point in the ROC curve will have a threshold increase of + 1/npoints over the previous point, starting at zero. + + + The number of points for the curve. + + + + + Computes a ROC curve with 1/increment points + + + The increment over the previous point for each point in the curve. + + + + + Computes a ROC curve with 1/increment points + + + The increment over the previous point for each point in the curve. + True to force the inclusion of the (0,0) point, false otherwise. Default is false. + + + + + Computes a ROC curve with the given increment points + + + + + + Computes a single point of a ROC curve using the given cutoff value. + + + + + + Generates a representing the ROC curve. + + + + True to include a plot of the random curve (a diagonal line + going from lower left to upper right); false otherwise. + + + + + Returns a that represents this curve. + + + A that represents this curve. + + + + + Calculates the area under the ROC curve using the trapezium method. + + + The area under a ROC curve can never be less than 0.50. If the area is first calculated as + less than 0.50, the definition of abnormal will be reversed from a higher test value to a + lower test value. + + + + + Saves the curve to a stream. + + + The stream to which the curve is to be serialized. + + + + + Loads a curve from a stream. + + + The stream from which the curve is to be deserialized. + + The deserialized curve. + + + + + Loads a curve from a file. + + + The path to the file from which the curve is to be deserialized. + + The deserialized curve. + + + + + Saves the curve to a stream. + + + The path to the file to which the curve is to be serialized. + + + + + Gets the points of the curve. + + + + + + Gets the number of actual positive cases. + + + + + + Gets the number of actual negative cases. + + + + + + Gets the number of cases (observations) being analyzed. + + + + + + Gets the area under this curve (AUC). + + + + + + Gets the standard error for the . + + + + + + Gets the variance of the curve's . + + + + + + Gets the ground truth values, or the values + which should have been given by the test if + it was perfect. + + + + + + Gets the actual values given by the test. + + + + + + Gets the actual test results for subjects + which should have been labeled as positive. + + + + + + Gets the actual test results for subjects + which should have been labeled as negative. + + + + + + Gets DeLong's pseudoaccuracies for the positive subjects. + + + + + + Gets DeLong's pseudoaccuracies for the negative subjects + + + + + + Object to hold information about a Receiver Operating Characteristic Curve Point + + + + + + Constructs a new Receiver Operating Characteristic point. + + + + + + Returns a System.String that represents the current ReceiverOperatingCharacteristicPoint. + + + + + + Gets the cutoff value (discrimination threshold) for this point. + + + + + + Represents a Collection of Receiver Operating Characteristic (ROC) Curve points. + This class cannot be instantiated. + + + + + + Gets the (1-specificity, sensitivity) values as (x,y) coordinates. + + + + An jagged double array where each element is a double[] vector + with two positions; the first is the value for 1-specificity (x) + and the second the value for sensitivity (y). + + + + + + Gets an array containing (1-specificity) + values for each point in the curve. + + + + + + Gets an array containing (sensitivity) + values for each point in the curve. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Backward Stepwise Logistic Regression Analysis. + + + + + The Backward Stepwise regression is an exploratory analysis procedure, + where the analysis begins with a full (saturated) model and at each step + variables are eliminated from the model in a iterative fashion. + + Significance tests are performed after each removal to track which of + the variables can be discarded safely without implying in degradation. + When no more variables can be removed from the model without causing + a significant loss in the model likelihood, the method can stop. + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (this is completely fictional data). + + double[][] inputs = + { + // Age Smoking + new double[] { 55, 0 }, // 1 + new double[] { 28, 0 }, // 2 + new double[] { 65, 1 }, // 3 + new double[] { 46, 0 }, // 4 + new double[] { 86, 1 }, // 5 + new double[] { 56, 1 }, // 6 + new double[] { 85, 0 }, // 7 + new double[] { 33, 0 }, // 8 + new double[] { 21, 1 }, // 9 + new double[] { 42, 1 }, // 10 + new double[] { 33, 0 }, // 11 + new double[] { 20, 1 }, // 12 + new double[] { 43, 1 }, // 13 + new double[] { 31, 1 }, // 14 + new double[] { 22, 1 }, // 15 + new double[] { 43, 1 }, // 16 + new double[] { 46, 0 }, // 17 + new double[] { 86, 1 }, // 18 + new double[] { 56, 1 }, // 19 + new double[] { 55, 0 }, // 20 + }; + + // Additionally, we also have information about whether + // or not they those patients had lung cancer. The array + // below gives 0 for those who did not, and 1 for those + // who did. + + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, + 0, 1, 1, 1, 1, 1, 0, 1, 1, 0 + }; + + + // Create a Stepwise Logistic Regression analysis + var regression = new StepwiseLogisticRegressionAnalysis(inputs, output, + new[] { "Age", "Smoking" }, "Cancer"); + + regression.Compute(); // compute the analysis. + + // The full model will be stored in the complete property: + StepwiseLogisticRegressionModel full = regression.Complete; + + // The best model will be stored in the current property: + StepwiseLogisticRegressionModel best = regression.Current; + + // Let's check the full model results + DataGridBox.Show(full.Coefficients); + + // We can see only the Smoking variable is statistically significant. + // This is an indication the Age variable could be discarded from + // the model. + + // And check the best inner model result + DataGridBox.Show(best.Coefficients); + + // This is the best nested model found. This model only has the + // Smoking variable, which is still significant. Since no other + // variables can be dropped, this is the best final model. + + // The variables used in the current best model are + string[] inputVariableNames = best.Inputs; // Smoking + + // The best model likelihood ratio p-value is + ChiSquareTest test = best.ChiSquare; // {0.816990081334823} + + // so the model is distinguishable from a null model. We can also + // query the other nested models by checking the Nested property: + + DataGridBox.Show(regression.Nested); + + // Finally, we can also use the analysis to classify a new patient + double y = regression.Current.Regression.Compute(new double[] { 1 }); + + // For a smoking person, the answer probability is approximately 83%. + + + + + + + + + Constructs a Stepwise Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + + + + + Constructs a Stepwise Logistic Regression Analysis. + + + The input data for the analysis. + The output data for the analysis. + The names for the input variables. + The name for the output variable. + + + + + Computes the Stepwise Logistic Regression. + + + + + + Computes one step of the Stepwise Logistic Regression Analysis. + + + Returns the index of the variable discarded in the step or -1 + in case no variable could be discarded. + + + + + + Fits a logistic regression model to data until convergence. + + + + + + Gets or sets the maximum number of iterations to be + performed by the regression algorithm. Default is 50. + + + + + + Gets or sets the difference between two iterations of the regression + algorithm when the algorithm should stop. The difference is calculated + based on the largest absolute parameter change of the regression. Default + is 1e-5. + + + + + + Source data used in the analysis. + + + + + + Gets the dependent variable value + for each of the source input points. + + + + + + Gets the resulting probabilities obtained + by the most likely logistic regression model. + + + + + + Gets the current best nested model. + + + + + + Gets the full model. + + + + + + Gets the collection of nested models obtained after + a step of the backward stepwise procedure. + + + + + + Gets the name of the input variables. + + + + + + Gets the name of the output variables. + + + + + + Gets or sets the significance threshold used to + determine if a nested model is significant or not. + + + + + + Gets the final set of input variables indices + as selected by the stepwise procedure. + + + + + + Stepwise Logistic Regression Nested Model. + + + + + + Constructs a new Logistic regression model. + + + + + + Gets information about the regression model + coefficients in a object-oriented structure. + + + + + + Gets the Stepwise Logistic Regression Analysis + from which this model belongs to. + + + + + + Gets the regression model. + + + + + + Gets the subset of the original variables used by the model. + + + + + + Gets the name of the variables used in + this model combined as a single string. + + + + + + Gets the Chi-Square Likelihood Ratio test for the model. + + + + + + Gets the subset of the original variables used by the model. + + + + + + Gets the Odds Ratio for each coefficient + found during the logistic regression. + + + + + + Gets the Standard Error for each coefficient + found during the logistic regression. + + + + + + Gets the Wald Tests for each coefficient. + + + + + + Gets the value of each coefficient. + + + + + + Gets the 95% Confidence Intervals (C.I.) + for each coefficient found in the regression. + + + + + + Gets the Likelihood-Ratio Tests for each coefficient. + + + + + + Stepwise Logistic Regression Nested Model collection. + This class cannot be instantiated. + + + + + + Represents a Logistic Regression Coefficient found in the Logistic Regression, + allowing it to be bound to controls like the DataGridView. This class cannot + be instantiated outside the . + + + + + + Gets the name for the current coefficient. + + + + + + Gets the Odds ratio for the current coefficient. + + + + + + Gets the Standard Error for the current coefficient. + + + + + + Gets the 95% confidence interval (C.I.) for the current coefficient. + + + + + + Gets the upper limit for the 95% confidence interval. + + + + + + Gets the lower limit for the 95% confidence interval. + + + + + + Gets the coefficient value. + + + + + + Gets the Wald's test performed for this coefficient. + + + + + + Gets the Likelihood-Ratio test performed for this coefficient. + + + + + + Represents a collection of Logistic Coefficients found in the + . This class cannot be instantiated. + + + + + + Set of statistics functions operating over a circular space. + + + + This class represents collection of common functions used in + statistics. The values are handled as belonging to a distribution + defined over a circle, such as the . + + + + + + Transforms circular data into angles (normalizes the data to be between -PI and PI). + + + The samples to be transformed. + The maximum possible sample value (such as 24 for hour data). + Whether to perform the transformation in place. + + A double array containing the same data in , + but normalized between -PI and PI. + + + + + Transforms circular data into angles (normalizes the data to be between -PI and PI). + + + The sample to be transformed. + The maximum possible sample value (such as 24 for hour data). + + The normalized to be between -PI and PI. + + + + + Transforms angular data back into circular data (reverts the + transformation. + + + The angle to be reconverted into the original unit. + The maximum possible sample value (such as 24 for hour data). + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The original before being converted. + + + + + Computes the sum of cosines and sines for the given angles. + + + A double array containing the angles in radians. + + The sum of cosines, returned as an out parameter. + The sum of sines, returned as an out parameter. + + + + + Computes the Mean direction of the given angles. + + + A double array containing the angles in radians. + + The mean direction of the given angles. + + + + + Computes the circular Mean direction of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular Mean direction of the given samples. + + + + + Computes the Mean direction of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The mean direction of the given angles. + + + + + Computes the mean resultant vector length (r) of the given angles. + + + A double array containing the angles in radians. + + The mean resultant vector length of the given angles. + + + + + Computes the resultant vector length (r) of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The mean resultant vector length of the given samples. + + + + + Computes the mean resultant vector length (r) of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The mean resultant vector length of the given angles. + + + + + Computes the circular variance of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular variance of the given samples. + + + + + Computes the Variance of the given angles. + + + A double array containing the angles in radians. + + The variance of the given angles. + + + + + Computes the Variance of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The variance of the angles. + + + + + Computes the circular standard deviation of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular standard deviation of the given samples. + + + + + Computes the Standard Deviation of the given angles. + + + A double array containing the angles in radians. + + The standard deviation of the given angles. + + + + + Computes the Standard Deviation of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The standard deviation of the angles. + + + + + Computes the circular angular deviation of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular angular deviation of the given samples. + + + + + Computes the Angular Deviation of the given angles. + + + A double array containing the angles in radians. + + The angular deviation of the given angles. + + + + + Computes the Angular Deviation of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + + The angular deviation of the angles. + + + + + Computes the circular standard error of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The confidence level. Default is 0.05. + + The circular standard error of the given samples. + + + + + Computes the standard error of the given angles. + + + A double array containing the angles in radians. + The confidence level. Default is 0.05. + + The standard error of the given angles. + + + + + Computes the standard error of the given angles. + + + The number of samples. + The sum of the cosines of the samples. + The sum of the sines of the samples. + The confidence level. Default is 0.05. + + The standard error of the angles. + + + + + Computes the angular distance between two angles. + + + The first angle. + The second angle. + + The distance between the two angles. + + + + + Computes the distance between two circular samples. + + + The first sample. + The second sample. + The maximum possible value of the samples. + + The distance between the two angles. + + + + + Computes the angular distance between two angles. + + + The cosine of the first sample. + The sin of the first sample. + The cosine of the second sample. + The sin of the second sample. + + The distance between the two angles. + + + + + Computes the circular Median of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + + The circular Median of the given samples. + + + + + Computes the circular Median direction of the given angles. + + + A double array containing the angles in radians. + + The circular Median of the given angles. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + The median value of the , if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The sample quartiles, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular samples. + The minimum possible value for a sample must be zero and the maximum must + be indicated in the parameter . + + + A double array containing the circular samples. + The maximum possible value of the samples. + The sample quartiles, as an out parameter. + The median value of the , if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given samples. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The sample quartiles, as an out parameter. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The sample quartiles, as an out parameter. + The angular median, if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the circular quartiles of the given circular angles. + + + A double array containing the angles in radians. + The first quartile, as an out parameter. + The third quartile, as an out parameter. + The angular median, if already known. + + Whether range values should be wrapped to be contained in the circle. If + set to false, range values could be returned outside the [+pi;-pi] range. + + + The median of the given angles. + + + + + Computes the concentration (kappa) of the given angles. + + + A double array containing the angles in radians. + + The concentration (kappa) parameter of the + for the given data. + + + + + + Computes the concentration (kappa) of the given angles. + + + A double array containing the angles in radians. + The mean of the angles, if already known. + + The concentration (kappa) parameter of the + for the given data. + + + + + + Computes the Weighted Mean of the given angles. + + + A double array containing the angles in radians. + An unit vector containing the importance of each angle + in . The sum of this array elements should add up to 1. + The mean of the given angles. + + + + + Computes the Weighted Concentration of the given angles. + + + A double array containing the angles in radians. + An unit vector containing the importance of each angle + in . The sum of this array elements should add up to 1. + The mean of the given angles. + + + + + Computes the Weighted Concentration of the given angles. + + + A double array containing the angles in radians. + An unit vector containing the importance of each angle + in . The sum of this array elements should add up to 1. + The mean of the angles, if already known. + The mean of the given angles. + + + + + Computes the maximum likelihood estimate + of kappa given by Best and Fisher (1981). + + + + + This method implements the approximation to the Maximum Likelihood + Estimative of the kappa concentration parameter as suggested by Best + and Fisher (1981), cited by Zheng Sun (2006) and Hussin and Mohamed + (2008). Other useful approximations are given by Suvrit Sra (2009). + + + References: + + + A.G. Hussin and I.B. Mohamed, 2008. Efficient Approximation for the von Mises Concentration Parameter. + Asian Journal of Mathematics & Statistics, 1: 165-169. + + Suvrit Sra, "A short note on parameter approximation for von Mises-Fisher distributions: + and a fast implementation of $I_s(x)$". (revision of Apr. 2009). Computational Statistics (2011). + Available on: http://www.kyb.mpg.de/publications/attachments/vmfnote_7045%5B0%5D.pdf + + Zheng Sun. M.Sc. Comparing measures of fit for circular distributions. Master thesis, 2006. + Available on: https://dspace.library.uvic.ca:8443/bitstream/handle/1828/2698/zhengsun_master_thesis.pdf + + + + + + + Computes the circular skewness of the given circular angles. + + + A double array containing the angles in radians. + + The circular skewness for the given . + + + + + Computes the circular kurtosis of the given circular angles. + + + A double array containing the angles in radians. + + The circular kurtosis for the given . + + + + + Computes the complex circular central + moments of the given circular angles. + + + + + + Computes the complex circular non-central + moments of the given circular angles. + + + + + + Contains more than 40 statistical distributions, with support + for most probability distribution measures and estimation methods. + + + + + This namespace contains a huge collection of probability distributions, ranging the from the common + and simple Normal (Gaussian) and + Poisson distributions to Inverse-Wishart and + multivariate mixture distributions, including many specialized + univariate distributions used in statistical hypothesis testing. + Some of those distributions include the , , + , and many others. + + + For a complete list of all + univariate probability distributions, check the + namespace. For a complete list of all + multivariate distributions, please see the + namespace. + + + A list of density kernels + such as the Gaussian kernel + and the Epanechnikov kernel + are available in the namespace. + + + + The namespace class diagram is shown below. + + + + The namespace class diagram for univariate distributions is shown below. + + + + The namespace class diagram for multivariate distributions is shown below. + + + + + + + + + + + + + + + Contains density estimation kernels which can be used in combination + with empirical distributions + and multivariate empirical + distributions. + + + + + + + + + + + + + Common interface for density estimation kernels. + + + + Those kernels are different from kernel + functions. Density estimation kernels are required to obey normalization rules in + order to fulfill integrability and behavioral properties. Moreover, they are defined + over a single input vector, the point estimate of a random variable. + + + + + + + + + + Computes the kernel density function. + + + The input point. + + A density estimate around . + + + + + Contains special options which can be used in + distribution fitting (estimation) methods. + + + + + + + + + + + BetaPERT's distribution estimation method. + + + + + + Estimates the mode using the classic method. + + + + + + Estimates the mode using the Vose method. + + + + + + Estimation options for + Beta PERT distributions. + + + + + + Common interface for distribution fitting option objects. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the index of the minimum observed + value, if already known. Default is -1. + + + + + + Gets or sets the index of the maximum observed + value, if already known. Default is -1. + + + + + + Gets or sets which estimation method should be used by the fitting + algorithm. Default is . + + + + + + Gets or sets a value indicating whether the observations are already sorted. + + + + Set to true if the observations are sorted; otherwise, false. + + + + + + Gets or sets a value indicating whether the maximum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Gets or sets a value indicating whether the minimum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Estimation methods for + Beta distributions. + + + + + + Method-of-moments estimation. + + + + + + Maximum Likelihood estimation. + + + + + + Estimation options for + Beta distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets which estimation method should be used by the fitting + algorithm. Default is . + + + + + + Triangular distribution's mode estimation method. + + + + + + Estimates the mode using the mean-maximum-minimum method. + + + + + + Estimates the mode using the standard algorithm. + + + + + + Estimates the mode using the bisection algorithm. + + + + + + Estimation options for + Triangular distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the index of the minimum observed + value, if already known. Default is -1. + + + + + + Gets or sets the index of the maximum observed + value, if already known. Default is -1. + + + + + + Gets or sets a value indicating whether the observations are already sorted. + + + + Set to true if the observations are sorted; otherwise, false. + + + + + + Gets or sets the mode estimation method to use. Default + is . + + + + + + Gets or sets a value indicating whether the maximum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Gets or sets a value indicating whether the minimum + value should be treated as fixed and not be estimated. + Default is true. + + + + + + Expectation Maximization algorithm for mixture model fitting in the log domain. + + + The type of the observations being fitted. + + + + This class implements a generic version of the Expectation-Maximization algorithm + which can be used with both univariate or multivariate distribution types. + + + + + + Creates a new algorithm. + + + The initial coefficient values. + The initial component distributions. + + + + + Estimates a mixture distribution for the given observations + using the Expectation-Maximization algorithm. + + + The observations from the mixture distribution. + + The log-likelihood of the estimated mixture model. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Gets or sets the fitting options to be used + when any of the component distributions need + to be estimated from the data. + + + + + + Gets or sets convergence properties for + the expectation-maximization algorithm. + + + + + + Gets the current coefficient values. + + + + + + Gets the current component distribution values. + + + + + + Gets the responsibility of each input vector when estimating + each of the component distributions, in the last iteration. + + + + + + Smoothing rule function definition for + Empirical distributions. + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Estimation options for Multivariate Empirical distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the smoothing rule used to compute the smoothing + parameter in the . + Default is to use + Silverman's rule. + + + + + + Gets or sets whether the empirical distribution should be take the + observation and weight vectors directly instead of making a copy + beforehand. + + + + + + Smoothing rule function definition for + Empirical distributions. + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Estimation options for + Empirical distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the smoothing rule used to compute the smoothing + parameter in the . Default + is to use the + normal distribution bandwidth approximation. + + + + + + Gets or sets whether the empirical distribution should be take the + observation and weight vectors directly instead of making a copy + beforehand. + + + + + + Expectation Maximization algorithm for mixture model fitting. + + + The type of the observations being fitted. + + + + This class implements a generic version of the Expectation-Maximization algorithm + which can be used with both univariate or multivariate distribution types. + + + + + + Creates a new algorithm. + + + The initial coefficient values. + The initial component distributions. + + + + + Estimates a mixture distribution for the given observations + using the Expectation-Maximization algorithm. + + + The observations from the mixture distribution. + + The log-likelihood of the estimated mixture model. + + + + + Estimates a mixture distribution for the given observations + using the Expectation-Maximization algorithm, assuming different + weights for each observation. + + + The observations from the mixture distribution. + The weight of each observation. + + The log-likelihood of the estimated mixture model. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Gets or sets the fitting options to be used + when any of the component distributions need + to be estimated from the data. + + + + + + Gets or sets convergence properties for + the expectation-maximization algorithm. + + + + + + Gets the current coefficient values. + + + + + + Gets the current component distribution values. + + + + + + Gets the responsibility of each input vector when estimating + each of the component distributions, in the last iteration. + + + + + + Estimation options for + multivariate independent distributions. + + + + + + Initializes a new instance of the class. + + + The fitting options for the inner + component distributions of the independent distributions. + + + + + Initializes a new instance of the class. + + + The fitting options for the inner + component distributions of the independent distributions. + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the fitting options for the inner + independent components in the joint distribution. + + + + + + Gets or sets the fitting options for the inner + independent components in the joint distribution. + Setting this property should make all component + distributions use the same options specified here. + + + + + + Fitting options for hidden Markov model distributions. + + + + + + Gets or sets the learning function for the hidden Markov model. + + + + + + Options for Survival distributions. + + + + + + Default survival estimation method. Returns . + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the values for + the right-censoring variable. + + + + + + Options for Empirical Hazard distributions. + + + + + + Default hazard estimator. Returns . + + + + + + Default tie handling method. Returns . + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the estimator to be used. Default is . + + + + + + Gets or sets the tie handling method to be used. Default is . + + + + + + Common interface for distributions which can be estimated from data. + + + The type of the observations, such as . + The type of the options specifying object. + + + + + Common interface for distributions which can be estimated from data. + + + The type of the observations, such as . + + + + + Common interface for probability distributions. + + + + + This interface is implemented by all generic probability distributions in the framework, including + s and s. + + + + + + Common interface for probability distributions. + + + + + This interface is implemented by all probability distributions in the framework, including + s and s. This + includes + , + , + , and + + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Common interface for sampleable distributions (i.e. distributions that + allow the generation of new samples through the + method. + + + The type of the observations, such as . + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Epanechnikov density kernel. + + + + + References: + + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Dan Styer, Oberlin College Department of Physics and Astronomy; Volume of a d-dimensional + sphere. Last updated 30 August 2007. Available at: + http://www.oberlin.edu/physics/dstyer/StatMech/VolumeDSphere.pdf + + David W. Scott, Multivariate Density Estimation: Theory, Practice, and + Visualization, Wiley, Aug 31, 1992 + + + + + + + + + Common interface for radially symmetric kernels. + + + + + + + + + + Computes the kernel profile function. + + + The point estimate x. + + The value of the profile function at point . + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + The value of the derivative profile function at point . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The constant by which the kernel formula + is multiplied at the end. Default is to consider the area + of a unit-sphere of dimension 1. + + + + + Initializes a new instance of the class. + + + The desired dimension d. + + + + + Computes the kernel density function. + + + The input point. + + + A density estimate around . + + + + + + Computes the kernel profile function. + + + The point estimate x. + + + The value of the profile function at point . + + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + + The value of the derivative profile function at point . + + + + + + Gets or sets the kernel's normalization constant. + + + + + + Gaussian density kernel. + + + + + References: + + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Dan Styer, Oberlin College Department of Physics and Astronomy; Volume of a d-dimensional + sphere. Last updated 30 August 2007. Available at: + http://www.oberlin.edu/physics/dstyer/StatMech/VolumeDSphere.pdf + + David W. Scott, Multivariate Density Estimation: Theory, Practice, and + Visualization, Wiley, Aug 31, 1992 + + + + + + + + + Initializes a new instance of the class. + + + The desired dimension d. + + + + + Initializes a new instance of the class. + + + The normalization constant to use. + + + + + Computes the kernel density function. + + + The input point. + + + A density estimate around . + + + + + + Computes the kernel profile function. + + + The squared point estimate . + + + The value of the profile function at point ². + + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + + The value of the derivative profile function at point . + + + + + + Gets or sets the kernel's normalization constant. + + + + + + Uniform density kernel. + + + + + References: + + + Comaniciu, Dorin, and Peter Meer. "Mean shift: A robust approach toward + feature space analysis." Pattern Analysis and Machine Intelligence, IEEE + Transactions on 24.5 (2002): 603-619. Available at: + http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1000236 + + Dan Styer, Oberlin College Department of Physics and Astronomy; Volume of a d-dimensional + sphere. Last updated 30 August 2007. Available at: + http://www.oberlin.edu/physics/dstyer/StatMech/VolumeDSphere.pdf + + David W. Scott, Multivariate Density Estimation: Theory, Practice, and + Visualization, Wiley, Aug 31, 1992 + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + The normalization constant c. + + + + + Computes the kernel density function. + + + The input point. + + + A density estimate around . + + + + + + Computes the kernel profile function. + + + The point estimate x. + + + The value of the profile function at point . + + + + + + Computes the derivative of the kernel profile function. + + + The point estimate x. + + + The value of the derivative profile function at point . + + + + + + Gets or sets the kernel's normalization constant. + + + + + + Contains a multivariate distributions such as the + multivariate Normal, Multinomial, + Independent, + Joint and Mixture distributions. + + + + + The namespace class diagram is shown below. + + + + + + + + + + + Common interface for multivariate probability distributions. + + + + + This interface is implemented by both multivariate + Discrete Distributions and Continuous + Distributions. + + + For Univariate distributions, see . + + + + + + + + + + + Gets the number of variables for the distribution. + + + + + + Gets the Mean vector for the distribution. + + + An array of double-precision values containing + the mean values for this distribution. + + + + + Gets the Median vector for the distribution. + + + An array of double-precision values containing + the median values for this distribution. + + + + + Gets the Mode vector for the distribution. + + + An array of double-precision values containing + the mode values for this distribution. + + + + + Gets the Variance vector for the distribution. + + + An array of double-precision values containing + the variance values for this distribution. + + + + + Gets the Variance-Covariance matrix for the distribution. + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + Common interface for multivariate probability distributions. + + + + + This interface is implemented by both multivariate + Discrete Distributions and Continuous + Distributions. However, unlike , this interface + has a generic parameter that allows to define the type of the distribution values (i.e. + ). + + + For Univariate distributions, see . + + + + + + + + + + + Gets the number of variables for the distribution. + + + + + + Gets the Mean vector for the distribution. + + + An array of double-precision values containing + the mean values for this distribution. + + + + + Gets the Median vector for the distribution. + + + An array of double-precision values containing + the median values for this distribution. + + + + + Gets the Mode vector for the distribution. + + + An array of double-precision values containing + the mode values for this distribution. + + + + + Gets the Variance vector for the distribution. + + + An array of double-precision values containing + the variance values for this distribution. + + + + + Gets the Variance-Covariance matrix for the distribution. + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + Multivariate empirical distribution. + + + + + Empirical distributions are based solely on the data. This class + uses the empirical distribution function and the Gaussian kernel + density estimation to provide an univariate continuous distribution + implementation which depends only on sampled data. + + + References: + + + Wikipedia, The Free Encyclopedia. Empirical Distribution Function. Available on: + + http://en.wikipedia.org/wiki/Empirical_distribution_function + + PlanetMath. Empirical Distribution Function. Available on: + + http://planetmath.org/encyclopedia/EmpiricalDistributionFunction.html + + Wikipedia, The Free Encyclopedia. Kernel Density Estimation. Available on: + + http://en.wikipedia.org/wiki/Kernel_density_estimation + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Buch-Kromann, T.; Nonparametric Density Estimation (Multidimension), 2007. Available in + http://www.buch-kromann.dk/tine/nonpar/Nonparametric_Density_Estimation_multidim.pdf + + W. Härdle, M. Müller, S. Sperlich, A. Werwatz; Nonparametric and Semiparametric Models, 2004. Available + in http://sfb649.wiwi.hu-berlin.de/fedc_homepage/xplore/ebooks/html/spm/spmhtmlnode18.html + + + + + + + // Suppose we have the following data, and we would + // like to estimate a distribution from this data + + double[][] samples = + { + new double[] { 0, 1 }, + new double[] { 1, 2 }, + new double[] { 5, 1 }, + new double[] { 7, 1 }, + new double[] { 6, 1 }, + new double[] { 5, 7 }, + new double[] { 2, 1 }, + }; + + // Start by specifying a density kernel + IDensityKernel kernel = new EpanechnikovKernel(dimension: 2); + + // Create a multivariate Empirical distribution from the samples + var dist = new MultivariateEmpiricalDistribution(kernel, samples); + + + // Common measures + double[] mean = dist.Mean; // { 3.71, 2.00 } + double[] median = dist.Median; // { 3.71, 2.00 } + double[] var = dist.Variance; // { 7.23, 5.00 } (diagonal from cov) + double[,] cov = dist.Covariance; // { { 7.23, 0.83 }, { 0.83, 5.00 } } + + // Probability mass functions + double pdf1 = dist.ProbabilityDensityFunction(new double[] { 2, 1 }); // 0.039131176997318849 + double pdf2 = dist.ProbabilityDensityFunction(new double[] { 4, 2 }); // 0.010212109770266639 + double pdf3 = dist.ProbabilityDensityFunction(new double[] { 5, 7 }); // 0.02891906722705221 + double lpdf = dist.LogProbabilityDensityFunction(new double[] { 5, 7 }); // -3.5432541357714742 + + + + + + + + + + Abstract class for Multivariate Probability Distributions. + + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given value will occur is called + the probability function (or probability density function, abbreviated PDF), and + the function describing the cumulative probability that a given value or any value + smaller than it will occur is called the distribution function (or cumulative + distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + Base class for statistical distribution implementations. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Constructs a new MultivariateDistribution class. + + + The number of dimensions in the distribution. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Gets the number of variables for this distribution. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Gets the mode for this distribution. + + + A vector containing the mode values for the distribution. + + + + + Gets the median for this distribution. + + + A vector containing the median values for the distribution. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The number of repetition counts for each sample. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples forming the distribution. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples forming the distribution. + The fractional weights to use for the samples. + The weights must sum up to one. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples forming the distribution. + The number of repetition counts for each sample. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples. + The number of repetition counts for each sample. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The kernel density function to use. + Default is to use the . + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The number of repetition counts for each sample. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + + An estimative of the smoothing parameter. + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + + An estimative of the smoothing parameter. + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Gets the Silverman's rule. estimative of the smoothing parameter. + This is the default smoothing rule applied used when estimating + s. + + + + This method is described on Wikipedia, at + http://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the kernel density function used in this distribution. + + + + + + Gets the samples giving this empirical distribution. + + + + + + Gets the fractional weights associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the repetition counts associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the total number of samples in this distribution. + + + + + + Gets the bandwidth smoothing parameter + used in the kernel density estimation. + + + + + + Gets the mean for this distribution. + + + + A vector containing the mean values for the distribution. + + + + + + Gets the variance for this distribution. + + + + A vector containing the variance values for the distribution. + + + + + + Gets the variance-covariance matrix for this distribution. + + + + A matrix containing the covariance values for the distribution. + + + + + + Inverse Wishart Distribution. + + + + + The inverse Wishart distribution, also called the inverted Wishart distribution, + is a probability distribution defined on real-valued positive-definite matrices. + In Bayesian statistics it is used as the conjugate prior for the covariance matrix + of a multivariate normal distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Inverse Wishart distribution. + Available from: http://en.wikipedia.org/wiki/Inverse-Wishart_distribution + + + + + + // Create a Inverse Wishart with the parameters + var invWishart = new InverseWishartDistribution( + + // Degrees of freedom + degreesOfFreedom: 4, + + // Scale parameter + inverseScale: new double[,] + { + { 1.7, -0.2 }, + { -0.2, 5.3 }, + } + ); + + // Common measures + double[] var = invWishart.Variance; // { -3.4, -10.6 } + double[,] cov = invWishart.Covariance; // see below + double[,] mmean = invWishart.MeanMatrix; // see below + + // cov mean + // -5.78 -4.56 1.7 -0.2 + // -4.56 -56.18 -0.2 5.3 + + // (the above matrix representations have been transcribed to text using) + string scov = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture); + string smean = mmean.ToString(DefaultMatrixFormatProvider.InvariantCulture); + + // For compatibility reasons, .Mean stores a flattened mean matrix + double[] mean = invWishart.Mean; // { 1.7, -0.2, -0.2, 5.3 } + + + // Probability density functions + double pdf = invWishart.ProbabilityDensityFunction(new double[,] + { + { 5.2, 0.2 }, // 0.000029806281690351203 + { 0.2, 4.2 }, + }); + + double lpdf = invWishart.LogProbabilityDensityFunction(new double[,] + { + { 5.2, 0.2 }, // -10.420791391688828 + { 0.2, 4.2 }, + }); + + + + + + + + + Creates a new Inverse Wishart distribution. + + + The degrees of freedom v. + The inverse scale matrix Ψ (psi). + + + + + Not supported. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the mean for this distribution as a flat matrix. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Von-Mises Fisher distribution. + + + + + In directional statistics, the von Mises–Fisher distribution is a probability distribution + on the (p-1)-dimensional sphere in R^p. If p = 2 the distribution reduces to the + von Mises distribution on the circle. + + + References: + + + Wikipedia, The Free Encyclopedia. Von Mises-Fisher Distribution. Available on: + + https://en.wikipedia.org/wiki/Von_Mises%E2%80%93Fisher_distribution + + + + + + + + + Constructs a Von-Mises Fisher distribution with unit mean. + + + The number of dimensions in the distribution. + The concentration value κ (kappa). + + + + + Constructs a Von-Mises Fisher distribution with unit mean. + + + The mean direction vector (with unit length). + The concentration value κ (kappa). + + + + + Not supported. + + + + + + Gets the probability density function (pdf) for this distribution evaluated at point x. + + + + A single point in the distribution range. For a univariate distribution, this should be + a single double value. For a multivariate distribution, this should be a double array. + + + + The probability of x occurring in the current distribution. + + + x;The vector should have the same dimension as the distribution. + + + The Probability Density Function (PDF) describes the probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + A vector containing the mean values for the distribution. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Wishart Distribution. + + + + + The Wishart distribution is a generalization to multiple dimensions of + the Chi-Squared distribution, or, in + the case of non-integer degrees of + freedom, of the Gamma distribution + . + + + References: + + + Wikipedia, The Free Encyclopedia. Wishart distribution. + Available from: http://en.wikipedia.org/wiki/Wishart_distribution + + + + + + // Create a Wishart distribution with the parameters: + WishartDistribution wishart = new WishartDistribution( + + // Degrees of freedom + degreesOfFreedom: 7, + + // Scale parameter + scale: new double[,] + { + { 4, 1, 1 }, + { 1, 2, 2 }, // (must be symmetric and positive definite) + { 1, 2, 6 }, + } + ); + + // Common measures + double[] var = wishart.Variance; // { 224, 56, 504 } + double[,] cov = wishart.Covariance; // see below + double[,] meanm = wishart.MeanMatrix; // see below + + // 224 63 175 28 7 7 + // cov = 63 56 112 mean = 7 14 14 + // 175 112 504 7 14 42 + + // (the above matrix representations have been transcribed to text using) + string scov = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture); + string smean = meanm.ToString(DefaultMatrixFormatProvider.InvariantCulture); + + // For compatibility reasons, .Mean stores a flattened mean matrix + double[] mean = wishart.Mean; // { 28, 7, 7, 7, 14, 14, 7, 14, 42 } + + + // Probability density functions + double pdf = wishart.ProbabilityDensityFunction(new double[,] + { + { 8, 3, 1 }, + { 3, 7, 1 }, // 0.000000011082455043473361 + { 1, 1, 8 }, + }); + + double lpdf = wishart.LogProbabilityDensityFunction(new double[,] + { + { 8, 3, 1 }, + { 3, 7, 1 }, // -18.317902605850534 + { 1, 1, 8 }, + }); + + + + + + + + + Creates a new Wishart distribution. + + + The degrees of freedom n. + The positive-definite matrix scale matrix V. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. + For a matrix distribution, such as the Wishart's, this + should be a positive-definite matrix or a matrix written + in flat vector form. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Unsupported. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the degrees of freedom for this Wishart distribution. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the mean for this distribution as a flat matrix. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Joint distribution assuming independence between vector components. + + + + + In probability and statistics, given at least two random variables X, + Y, ..., that are defined on a probability space, the joint probability + distribution for X, Y, ... is a probability distribution that + gives the probability that each of X, Y, ... falls in any particular range or + discrete set of values specified for that variable. In the case of only two + random variables, this is called a bivariate distribution, but the concept + generalizes to any number of random variables, giving a multivariate distribution. + + + + This class is also available in a generic version, allowing for any + choice of component distribution (. + + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Joint_probability_distribution + + + + + The following example shows how to declare and initialize an Independent Joint + Gaussian Distribution using known means and variances for each component. + + + // Declare two normal distributions + NormalDistribution pa = new NormalDistribution(4.2, 1); // p(a) + NormalDistribution pb = new NormalDistribution(7.0, 2); // p(b) + + // Now, create a joint distribution combining these two: + var joint = new Independent(pa, pb); + + // This distribution assumes the distributions of the two components are independent, + // i.e. if we have 2D input vectors on the form {a, b}, then p({a,b}) = p(a) * p(b). + + // Lets check a simple example. Consider a 2D input vector x = { 4.2, 7.0 } as + // + double[] x = new double[] { 4.2, 7.0 }; + + // Those two should be completely equivalent: + double p1 = joint.ProbabilityDensityFunction(x); + double p2 = pa.ProbabilityDensityFunction(x[0]) * pb.ProbabilityDensityFunction(x[1]); + + bool equal = p1 == p2; // at this point, equal should be true. + + + + + + + + Joint distribution assuming independence between vector components. + + + The type of the underlying distributions. + + + + In probability and statistics, given at least two random variables X, + Y, ..., that are defined on a probability space, the joint probability + distribution for X, Y, ... is a probability distribution that + gives the probability that each of X, Y, ... falls in any particular range or + discrete set of values specified for that variable. In the case of only two + random variables, this is called a bivariate distribution, but the concept + generalizes to any number of random variables, giving a multivariate distribution. + + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Joint_probability_distribution + + + + + + The following example shows how to declare and initialize an Independent Joint + Gaussian Distribution using known means and variances for each component. + + + // Declare two normal distributions + NormalDistribution pa = new NormalDistribution(4.2, 1); // p(a) + NormalDistribution pb = new NormalDistribution(7.0, 2); // p(b) + + // Now, create a joint distribution combining these two: + var joint = new Independent<NormalDistribution>(pa, pb); + + // This distribution assumes the distributions of the two components are independent, + // i.e. if we have 2D input vectors on the form {a, b}, then p({a,b}) = p(a) * p(b). + + // Lets check a simple example. Consider a 2D input vector x = { 4.2, 7.0 } as + // + double[] x = new double[] { 4.2, 7.0 }; + + // Those two should be completely equivalent: + double p1 = joint.ProbabilityDensityFunction(x); + double p2 = pa.ProbabilityDensityFunction(x[0]) * pb.ProbabilityDensityFunction(x[1]); + + bool equal = p1 == p2; // at this point, equal should be true. + + + + The following example shows how to fit a distribution (estimate + its parameters) from a given dataset. + + + // Let's consider an input dataset of 2D vectors. We would + // like to estimate an Independent<NormalDistribution> + // which best models this data. + + double[][] data = + { + // x, y + new double[] { 1, 8 }, + new double[] { 2, 6 }, + new double[] { 5, 7 }, + new double[] { 3, 9 }, + }; + + // We start by declaring some initial guesses for the + // distributions of each random variable (x, and y): + // + var distX = new NormalDistribution(0, 1); + var distY = new NormalDistribution(0, 1); + + // Next, we declare our initial guess Independent distribution + var joint = new Independent<NormalDistribution>(distX, distY); + + // We can now fit the distribution to our data, + // producing an estimate of its parameters: + // + joint.Fit(data); + + // At this point, we have estimated our distribution. + + double[] mean = joint.Mean; // should be { 2.75, 7.50 } + double[] var = joint.Variance; // should be { 2.917, 1.667 } + + // | 2.917, 0.000 | + double[,] cov = joint.Covariance; // Cov = | | + // | 0.000, 1.667 | + + // The covariance matrix is diagonal, as it would be expected + // if is assumed there are no interactions between components. + + + + + + + Initializes a new instance of the class. + + + The components. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + For an example on how to fit an independent joint distribution, please + take a look at the examples section for . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + For an example on how to fit an independent joint distribution, please + take a look at the examples section for . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the component distributions of the joint. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + For an independent distribution, this matrix will always be diagonal. + + + + + + Initializes a new instance of the class. + + + The components. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Contains univariate distributions such as Normal, + Cauchy, + Hypergeometric, Poisson, + Bernoulli, and specialized distributions such + as the Kolmogorov-Smirnov, + Nakagami, + Weibull, and Von-Mises distributions. + + + + + The namespace class diagram is shown below. + + + + + + + + + + + Common interface for univariate probability distributions. + + + + + This interface is implemented by both univariate + Discrete Distributions and Continuous + Distributions. + + + For Multivariate distributions, see . + + + + + + + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for this + distribution in the semi-closed interval (a; b] given as + P(a < X ≤ b). + + + The start of the semi-closed interval (a; b]. + The end of the semi-closed interval (a; b]. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the mean value for the distribution. + + + The distribution's mean. + + + + + Gets the variance value for the distribution. + + + The distribution's variance. + + + + + Gets the median value for the distribution. + + + The distribution's median. + + + + + Gets the mode value for the distribution. + + + The distribution's mode. + + + + + Gets entropy of the distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Gets the Quartiles for this distribution. + + + A object containing the first quartile + (Q1) as its minimum value, and the third quartile (Q2) as the maximum. + + + + + Common interface for univariate probability distributions. + + + + + This interface is implemented by both univariate + Discrete Distributions and Continuous + Distributions. However, unlike , this interface + has a generic parameter that allows to define the type of the distribution values (i.e. + ). + + + For Multivariate distributions, see . + + + + + + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Gets the mean value for the distribution. + + + The distribution's mean. + + + + + Gets the variance value for the distribution. + + + The distribution's variance. + + + + + Gets the median value for the distribution. + + + The distribution's median. + + + + + Gets the mode value for the distribution. + + + The distribution's mode. + + + + + Gets entropy of the distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Estimation options for + Cauchy distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets a value indicating whether the distribution parameters + should be estimated using maximum likelihood. Default is true. + + + + The Cauchy distribution parameters can be estimated in many ways. One + approach is to use order statistics to derive approximations to the + location and scale parameters by analysis the interquartile range of + the data. The other approach is to use Maximum Likelihood to estimate + the parameters. The MLE does not exists in simple algebraic form, so + it has to be estimated using numeric optimization. + + + true if the parameters should be estimated by ML; otherwise, false. + + + + + Gets or sets a value indicating whether the scale + parameter should be estimated. Default is true. + + + true if the scale parameter should be estimated; otherwise, false. + + + + + Gets or sets a value indicating whether the location + parameter should be estimated. Default is true. + + + true if the location parameter should be estimated; otherwise, false. + + + + + Estimable parameters of Hypergeometric distributions. + + + + + + Population size parameter N. + + + + + + Successes in population parameter m. + + + + + + Estimation options for Hypergeometric distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets which parameter of the Hypergeometric distribution should be estimated. + + + The hypergeometric parameters to estimate. + + + + + Estimation options for general discrete (categorical) distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the minimum allowed probability + in the frequency tables specifying the discrete + distribution. + + + + + + Gets ors sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Estimation options for + Von-Mises distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets a value indicating whether to use bias correction + when estimating the concentration parameter of the von-Mises + distribution. + + + true to use bias correction; otherwise, false. + + For more information, see: Best, D. and Fisher N. (1981). The bias + of the maximum likelihood estimators of the von Mises-Fisher concentration + parameters. Communications in Statistics - Simulation and Computation, B10(5), + 493-502. + + + + + + Common interface for mixture distributions. + + + + The type of the mixture distribution, if either univariate or multivariate. + + + + + + Gets the mixture coefficients (component weights). + + + + + + Gets the mixture components. + + + + + + Abstract class for multivariate discrete probability distributions. + + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given discrete value will + occur is called the probability function (or probability mass function, + abbreviated PMF), and the function describing the cumulative probability + that a given value or any value smaller than it will occur is called the + distribution function (or cumulative distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + Constructs a new MultivariateDiscreteDistribution class. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Not supported. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Gets the number of variables for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the mean values for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the variance values for this distribution. + + + + + + Gets the variance for this distribution. + + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + + Gets the mode for this distribution. + + + + An array of double-precision values containing + the mode values for this distribution. + + + + + + Gets the median for this distribution. + + + + An array of double-precision values containing + the median values for this distribution. + + + + + + Estimation options for univariate + and multivariate + mixture distributions. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + + + + + Initializes a new instance of the class. + + + The convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + The fitting options for the inner + component distributions of the mixture density. + + + + + Gets or sets the convergence criterion for the + Expectation-Maximization algorithm. Default is 1e-3. + + + The convergence threshold. + + + + + Gets or sets the maximum number of iterations + to be performed by the Expectation-Maximization + algorithm. Default is zero (iterate until convergence). + + + + + + Gets or sets the fitting options for the inner + component distributions of the mixture density. + + + The fitting options for inner distributions. + + + + + Gets or sets whether to make computations using the log + -domain. This might improve accuracy on large datasets. + + + + + + Estimation options for + Normal distributions. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the regularization step to + avoid singular or non-positive definite + covariance matrices. Default is 0. + + + The regularization step. + + + + + Gets or sets a value indicating whether the covariance + matrix to be estimated should be assumed to be diagonal. + + + true to estimate a diagonal covariance matrix; otherwise, false. + + + + + Gets or sets whether the estimation function should + allow non-positive definite covariance matrices by + using the Singular Value Decomposition Function. + + + + + + Mixture of multivariate probability distributions. + + + + + A mixture density is a probability density function which is expressed + as a convex combination (i.e. a weighted sum, with non-negative weights + that sum to 1) of other probability density functions. The individual + density functions that are combined to make the mixture density are + called the mixture components, and the weights associated with each + component are called the mixture weights. + + + References: + + + Wikipedia, The Free Encyclopedia. Mixture density. Available on: + http://en.wikipedia.org/wiki/Mixture_density + + + + + The type of the multivariate component distributions. + + + + + // Randomly initialize some mixture components + MultivariateNormalDistribution[] components = new MultivariateNormalDistribution[2]; + components[0] = new MultivariateNormalDistribution(new double[] { 2 }, new double[,] { { 1 } }); + components[1] = new MultivariateNormalDistribution(new double[] { 5 }, new double[,] { { 1 } }); + + // Create an initial mixture + var mixture = new MultivariateMixture<MultivariateNormalDistribution>(components); + + // Now, suppose we have a weighted data + // set. Those will be the input points: + + double[][] points = new double[] { 0, 3, 1, 7, 3, 5, 1, 2, -1, 2, 7, 6, 8, 6 } // (14 points) + .ToArray(); + + // And those are their respective unnormalized weights: + double[] weights = { 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 2, 3, 1, 1 }; // (14 weights) + + // Let's normalize the weights so they sum up to one: + weights = weights.Divide(weights.Sum()); + + // Now we can fit our model to the data: + mixture.Fit(points, weights); // done! + + // Our model will be: + double mean1 = mixture.Components[0].Mean[0]; // 1.41126 + double mean2 = mixture.Components[1].Mean[0]; // 6.53301 + + // With mixture coefficients + double pi1 = mixture.Coefficients[0]; // 0.51408489193241225 + double pi2 = mixture.Coefficients[1]; // 0.48591510806758775 + + // If we need the GaussianMixtureModel functionality, we can + // use the estimated mixture to initialize a new model: + GaussianMixtureModel gmm = new GaussianMixtureModel(mixture); + + mean1 = gmm.Gaussians[0].Mean[0]; // 1.41126 (same) + mean2 = gmm.Gaussians[1].Mean[0]; // 6.53301 (same) + + p1 = gmm.Gaussians[0].Proportion; // 0.51408 (same) + p2 = gmm.Gaussians[1].Proportion; // 0.48591 (same) + + + + + + + + + + + Initializes a new instance of the class. + + + The mixture distribution components. + + + + + Initializes a new instance of the class. + + + The mixture weight coefficients. + The mixture distribution components. + + + + + Gets the probability density function (pdf) for one of + the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for one + of the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for one + of the component distributions evaluated at point x. + + + The component distribution's index. + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + The initial mixture coefficients. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + The initial mixture coefficients. + The convergence threshold for the Expectation-Maximization estimation. + Returns a new Mixture fitted to the given observations. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mixture components. + + + + + + Gets the weight coefficients. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance-covariance matrix for this distribution. + + + + + + Gets the variance vector for this distribution. + + + + + + Multinomial probability distribution. + + + + The multinomial distribution is a generalization of the binomial + distribution. The binomial distribution is the probability distribution + of the number of "successes" in n independent + Bernoulli + trials, with the same probability of "success" on each trial. + + In a multinomial distribution, the analog of the + Bernoulli distribution is the + categorical distribution, + where each trial results in exactly one of some fixed finite number + k of possible outcomes, with probabilities p1, ..., pk + and there are n independent trials. + + + References: + + + Wikipedia, The Free Encyclopedia. Multinomial distribution. Available on: + http://en.wikipedia.org/wiki/Multinomial_distribution + + + + + + // distribution parameters + int numberOfTrials = 5; + double[] probabilities = { 0.25, 0.75 }; + + // Create a new Multinomial distribution with 5 trials for 2 symbols + var dist = new MultinomialDistribution(numberOfTrials, probabilities); + + int dimensions = dist.Dimension; // 2 + + double[] mean = dist.Mean; // { 1.25, 3.75 } + double[] median = dist.Median; // { 1.25, 3.75 } + double[] var = dist.Variance; // { -0.9375, -0.9375 } + + double pdf1 = dist.ProbabilityMassFunction(new[] { 2, 3 }); // 0.26367187499999994 + double pdf2 = dist.ProbabilityMassFunction(new[] { 1, 4 }); // 0.3955078125 + double pdf3 = dist.ProbabilityMassFunction(new[] { 5, 0 }); // 0.0009765625 + double lpdf = dist.LogProbabilityMassFunction(new[] { 1, 4 }); // -0.9275847384929139 + + // output is "Multinomial(x; n = 5, p = { 0.25, 0.75 })" + string str = dist.ToString(CultureInfo.InvariantCulture); + + + + + + + + + + Initializes a new instance of the class. + + + The total number of trials N. + A vector containing the probabilities of seeing each of possible outcomes. + + + + + Not supported. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the event probabilities associated with the trials. + + + + + + Gets the number of Bernoulli trials N. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance vector for this distribution. + + + + + + Gets the variance-covariance matrix for this distribution. + + + + + + Beta Distribution (of the first kind). + + + + + The beta distribution is a family of continuous probability distributions + defined on the interval (0, 1) parameterized by two positive shape parameters, + typically denoted by α and β. The beta distribution can be suited to the + statistical modeling of proportions in applications where values of proportions + equal to 0 or 1 do not occur. One theoretical case where the beta distribution + arises is as the distribution of the ratio formed by one random variable having + a Gamma distribution divided by the sum of it and another independent random + variable also having a Gamma distribution with the same scale parameter (but + possibly different shape parameter). + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Beta_distribution + + + + + + Note: More advanced examples, including distribution estimation and random number + generation are also available at the + page. + + + The following example shows how to instantiate and use a Beta + distribution given its alpha and beta parameters: + + + double alpha = 0.42; + double beta = 1.57; + + // Create a new Beta distribution with α = 0.42 and β = 1.57 + BetaDistribution distribution = new BetaDistribution(alpha, beta); + + // Common measures + double mean = distribution.Mean; // 0.21105527638190955 + double median = distribution.Median; // 0.11577711097114812 + double var = distribution.Variance; // 0.055689279830523512 + + // Cumulative distribution functions + double cdf = distribution.DistributionFunction(x: 0.27); // 0.69358638272337991 + double ccdf = distribution.ComplementaryDistributionFunction(x: 0.27); // 0.30641361727662009 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 0.26999999068687469 + + // Probability density functions + double pdf = distribution.ProbabilityDensityFunction(x: 0.27); // 0.94644031936694828 + double lpdf = distribution.LogProbabilityDensityFunction(x: 0.27); // -0.055047364344046057 + + // Hazard (failure rate) functions + double hf = distribution.HazardFunction(x: 0.27); // 3.0887671630877072 + double chf = distribution.CumulativeHazardFunction(x: 0.27); // 1.1828193992944409 + + // String representation + string str = distribution.ToString(); // B(x; α = 0.42, β = 1.57) + + + + The following example shows to create a Beta distribution + given a discrete number of trials and the number of successes + within those trials. It also shows how to compute the 2.5 and + 97.5 percentiles of the distribution: + + + int trials = 100; + int successes = 78; + + BetaDistribution distribution = new BetaDistribution(successes, trials); + + double mean = distribution.Mean; // 0.77450980392156865 + double median = distribution.Median; // 0.77630912598534851 + + double p025 = distribution.InverseDistributionFunction(p: 0.025); // 0.68899653915764347 + double p975 = distribution.InverseDistributionFunction(p: 0.975); // 0.84983461640764513 + + + + The next example shows how to generate 1000 new samples from a Beta distribution: + + + // Using the distribution's parameters + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, min: 0, max: 1, samples: 1000); + + // Using an existing distribution + var b = new GeneralizedBetaDistribution(alpha: 1, beta: 2); + double[] new_samples = b.Generate(1000); + + + + And finally, how to estimate the parameters of a Beta distribution from + a set of observations, using either the Method-of-moments or the Maximum + Likelihood Estimate. + + + // Draw 100000 observations from a Beta with α = 2, β = 3: + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, samples: 100000); + + // Estimate a distribution from the data + var B = BetaDistribution.Estimate(samples); + + // Explicitly using Method-of-moments estimation + var mm = BetaDistribution.Estimate(samples, + new BetaOptions { Method = BetaEstimationMethod.Moments }); + + // Explicitly using Maximum Likelihood estimation + var mle = BetaDistribution.Estimate(samples, + new BetaOptions { Method = BetaEstimationMethod.MaximumLikelihood }); + + + + + + + + + + Abstract class for univariate continuous probability Distributions. + + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given value will occur is called + the probability function (or probability density function, abbreviated PDF), and + the function describing the cumulative probability that a given value or any value + smaller than it will occur is called the distribution function (or cumulative + distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + + + + Constructs a new UnivariateDistribution class. + + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for this + distribution in the semi-closed interval (a; b] given as + P(a < X ≤ b). + + + The start of the semi-closed interval (a; b]. + The end of the semi-closed interval (a; b]. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + + + Gets the Quartiles for this distribution. + + + A object containing the first quartile + (Q1) as its minimum value, and the third quartile (Q2) as the maximum. + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + + + Gets the Standard Deviation (the square root of + the variance) for the current distribution. + + + The distribution's standard deviation. + + + + + Creates a new Beta distribution. + + + + + + Creates a new Beta distribution. + + + The number of success r. Default is 0. + The number of trials n. Default is 1. + + + + + Creates a new Beta distribution. + + + The shape parameter α (alpha). + The shape parameter β (beta). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Beta's CDF is computed using the Incomplete + (regularized) Beta function I_x(a,b) as CDF(x) = I_x(a,b) + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + The Beta's PDF is computed as pdf(x) = c * x^(a - 1) * (1 - x)^(b - 1) + where constant c is c = 1.0 / Beta.Function(a, b) + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Computes the Gradient of the Log-Likelihood function for estimating Beta distributions. + + + The observed values. + The current alpha value. + The current beta value. + + + A bi-dimensional value containing the gradient w.r.t to alpha in its + first position, and the gradient w.r.t to be in its second position. + + + + + + Computes the Gradient of the Log-Likelihood function for estimating Beta distributions. + + + The sum of log(y), where y refers to all observed values. + The sum of log(1 - y), where y refers to all observed values. + The total number of observed values. + The current alpha value. + The current beta value. + A bi-dimensional vector to store the gradient. + + + A bi-dimensional vector containing the gradient w.r.t to alpha in its + first position, and the gradient w.r.t to be in its second position. + + + + + + Computes the Log-Likelihood function for estimating Beta distributions. + + + The observed values. + The current alpha value. + The current beta value. + + The log-likelihood value for the given observations and given Beta parameters. + + + + + Computes the Log-Likelihood function for estimating Beta distributions. + + + The sum of log(y), where y refers to all observed values. + The sum of log(1 - y), where y refers to all observed values. + The total number of observed values. + The current alpha value. + The current beta value. + + The log-likelihood value for the given observations and given Beta parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The number of samples to generate. + + An array of double values sampled from the specified Beta distribution. + + + + + Generates a random observation from the + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + + A random double value sampled from the specified Beta distribution. + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Gets the shape parameter α (alpha) + + + + + + Gets the shape parameter β (beta). + + + + + + Gets the number of successes r. + + + + + + Gets the number of trials n. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + The Beta's mean is computed as μ = a / (a + b). + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + The Beta's variance is computed as σ² = (a * b) / ((a + b)² * (a + b + 1)). + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the mode for this distribution. + + + + The beta distribution's mode is given + by (a - 1) / (a + b - 2). + + + + The distribution's mode value. + + + + + + Beta prime distribution. + + + + + In probability theory and statistics, the beta prime distribution (also known as inverted + beta distribution or beta distribution of the second kind) is an absolutely continuous + probability distribution defined for x > 0 with two parameters α and β, having the + probability density function: + + + x^(α-1) (1+x)^(-α-β) + f(x) = -------------------- + B(α,β) + + + + where B is the Beta function. While the related beta distribution is + the conjugate prior distribution of the parameter of a Bernoulli + distribution expressed as a probability, the beta prime distribution is the conjugate prior + distribution of the parameter of a Bernoulli distribution expressed in odds. The distribution is + a Pearson type VI distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Beta Prime distribution. Available on: + http://en.wikipedia.org/wiki/Beta_prime_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Beta prime distribution given its two non-negative shape parameters: + + + // Create a new Beta-Prime distribution with shape (4,2) + var betaPrime = new BetaPrimeDistribution(alpha: 4, beta: 2); + + double mean = betaPrime.Mean; // 4.0 + double median = betaPrime.Median; // 2.1866398762435981 + double mode = betaPrime.Mode; // 1.0 + double var = betaPrime.Variance; // +inf + + double cdf = betaPrime.DistributionFunction(x: 0.4); // 0.02570357589099781 + double pdf = betaPrime.ProbabilityDensityFunction(x: 0.4); // 0.16999719504628183 + double lpdf = betaPrime.LogProbabilityDensityFunction(x: 0.4); // -1.7719733417957513 + + double ccdf = betaPrime.ComplementaryDistributionFunction(x: 0.4); // 0.97429642410900219 + double icdf = betaPrime.InverseDistributionFunction(p: cdf); // 0.39999982363709291 + + double hf = betaPrime.HazardFunction(x: 0.4); // 0.17448200654307533 + double chf = betaPrime.CumulativeHazardFunction(x: 0.4); // 0.026039684773113869 + + string str = betaPrime.ToString(CultureInfo.InvariantCulture); // BetaPrime(x; α = 4, β = 2) + + + + + + + Constructs a new Beta-Prime distribution with the given + two non-negative shape parameters a and b. + + + The distribution's non-negative shape parameter a. + The distribution's non-negative shape parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's non-negative shape parameter a. + + + + + + Gets the distribution's non-negative shape parameter b. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution, which + for the Beta- Prime distribution ranges from 0 to all + positive numbers. + + + + A containing + the support interval for this distribution. + + + + + + Cauchy-Lorentz distribution. + + + + + The Cauchy distribution, named after Augustin Cauchy, is a continuous probability + distribution. It is also known, especially among physicists, as the Lorentz + distribution (after Hendrik Lorentz), Cauchy–Lorentz distribution, Lorentz(ian) + function, or Breit–Wigner distribution. The simplest Cauchy distribution is called + the standard Cauchy distribution. It has the distribution of a random variable that + is the ratio of two independent standard normal random variables. + + + References: + + + Wikipedia, The Free Encyclopedia. Cauchy distribution. + Available from: http://en.wikipedia.org/wiki/Cauchy_distribution + + + + + + The following example demonstrates how to instantiate a Cauchy distribution + with a given location parameter x0 and scale parameter γ (gamma), calculating + its main properties and characteristics: + + + double location = 0.42; + double scale = 1.57; + + // Create a new Cauchy distribution with x0 = 0.42 and γ = 1.57 + CauchyDistribution cauchy = new CauchyDistribution(location, scale); + + // Common measures + double mean = cauchy.Mean; // NaN - Cauchy's mean is undefined. + double var = cauchy.Variance; // NaN - Cauchy's variance is undefined. + double median = cauchy.Median; // 0.42 + + // Cumulative distribution functions + double cdf = cauchy.DistributionFunction(x: 0.27); // 0.46968025841608563 + double ccdf = cauchy.ComplementaryDistributionFunction(x: 0.27); // 0.53031974158391437 + double icdf = cauchy.InverseDistributionFunction(p: 0.69358638272337991); // 1.5130304686978195 + + // Probability density functions + double pdf = cauchy.ProbabilityDensityFunction(x: 0.27); // 0.2009112009763413 + double lpdf = cauchy.LogProbabilityDensityFunction(x: 0.27); // -1.6048922547266871 + + // Hazard (failure rate) functions + double hf = cauchy.HazardFunction(x: 0.27); // 0.3788491832800277 + double chf = cauchy.CumulativeHazardFunction(x: 0.27); // 0.63427516833243092 + + // String representation + string str = cauchy.ToString(CultureInfo.InvariantCulture); // "Cauchy(x; x0 = 0.42, γ = 1.57) + + + + The following example shows how to fit a Cauchy distribution (estimate its + location and shape parameters) given a set of observation values. + + + // Create an initial distribution + CauchyDistribution cauchy = new CauchyDistribution(); + + // Consider a vector of univariate observations + double[] observations = { 0.25, 0.12, 0.72, 0.21, 0.62, 0.12, 0.62, 0.12 }; + + // Fit to the observations + cauchy.Fit(observations); + + // Check estimated values + double location = cauchy.Location; // 0.18383 + double gamma = cauchy.Scale; // -0.10530 + + + + It is also possible to estimate only some of the Cauchy parameters at + a time. For this, you can specify a object + and pass it alongside the observations: + + + // Create options to estimate location only + CauchyOptions options = new CauchyOptions() + { + EstimateLocation = true, + EstimateScale = false + }; + + // Create an initial distribution with a pre-defined scale + CauchyDistribution cauchy = new CauchyDistribution(location: 0, scale: 4.2); + + // Fit to the observations + cauchy.Fit(observations, options); + + // Check estimated values + double location = cauchy.Location; // 0.3471218110202 + double gamma = cauchy.Scale; // 4.2 (unchanged) + + + + + + + + + + Constructs a Cauchy-Lorentz distribution + with location parameter 0 and scale 1. + + + + + + Constructs a Cauchy-Lorentz distribution + with given location and scale parameters. + + + The location parameter x0. + The scale parameter gamma (γ). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Cauchy's CDF is defined as CDF(x) = 1/π * atan2(x-location, scale) + 0.5. + + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + The Cauchy's PDF is defined as PDF(x) = c / (1.0 + ((x-location)/scale)²) + where the constant c is given by c = 1.0 / (π * scale); + + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random observation from the + Cauchy distribution with the given parameters. + + + The location parameter x0. + The scale parameter gamma. + + A random double value sampled from the specified Cauchy distribution. + + + + + Generates a random vector of observations from the + Cauchy distribution with the given parameters. + + + The location parameter x0. + The scale parameter gamma. + The number of samples to generate. + + An array of double values sampled from the specified Cauchy distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's + location parameter x0. + + + + + + Gets the distribution's + scale parameter gamma. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + The Cauchy's median is the location parameter x0. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + The Cauchy's median is the location parameter x0. + + + + + + Cauchy's mean is undefined. + + + Undefined. + + + + + Cauchy's variance is undefined. + + + Undefined. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + The Cauchy's entropy is defined as log(scale) + log(4*π). + + + + + + Gets the Standard Cauchy Distribution, + with zero location and unitary shape. + + + + + + Dirichlet distribution. + + + + + The Dirichlet distribution, often denoted Dir(α), is a family of continuous + multivariate probability distributions parameterized by a vector α of positive + real numbers. It is the multivariate generalization of the beta distribution. + + Dirichlet distributions are very often used as prior distributions in Bayesian + statistics, and in fact the Dirichlet distribution is the conjugate prior of the + categorical distribution and multinomial distribution. That is, its probability + density function returns the belief that the probabilities of K rival events are + xi given that each event has been observed αi−1 times. + + + References: + + + Wikipedia, The Free Encyclopedia. Dirichlet distribution. + Available from: http://en.wikipedia.org/wiki/Dirichlet_distribution + + + + + + // Create a Dirichlet with the following concentrations + var dirich = new DirichletDistribution(0.42, 0.57, 1.2); + + // Common measures + double[] mean = dirich.Mean; // { 0.19, 0.26, 0.54 } + double[] median = dirich.Median; // { 0.19, 0.26, 0.54 } + double[] var = dirich.Variance; // { 0.048, 0.060, 0.077 } + double[,] cov = dirich.Covariance; // see below + + + // 0.0115297440926238 0.0156475098399895 0.0329421259789253 + // cov = 0.0156475098399895 0.0212359062114143 0.0447071709713986 + // 0.0329421259789253 0.0447071709713986 0.0941203599397865 + + // (the above matrix representation has been transcribed to text using) + string str = cov.ToString(DefaultMatrixFormatProvider.InvariantCulture); + + + // Probability mass functions + double pdf1 = dirich.ProbabilityDensityFunction(new double[] { 2, 5 }); // 0.12121671541846207 + double pdf2 = dirich.ProbabilityDensityFunction(new double[] { 4, 2 }); // 0.12024840322466089 + double pdf3 = dirich.ProbabilityDensityFunction(new double[] { 3, 7 }); // 0.082907634905068528 + double lpdf = dirich.LogProbabilityDensityFunction(new double[] { 3, 7 }); // -2.4900281233124044 + + + + + + + Creates a new symmetric Dirichlet distribution. + + + The number k of categories. + The common concentration parameter α (alpha). + + + + + Creates a new Dirichlet distribution. + + + The concentration parameters αi (alpha_i). + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not supported. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + A vector containing the mean values for the distribution. + + + + + Gets the variance for this distribution. + + + A vector containing the variance values for the distribution. + + + + + Gets the variance-covariance matrix for this distribution. + + + A matrix containing the covariance values for the distribution. + + + + + Hidden Markov Model probability distribution. + + + + + + Initializes a new instance of the class. + + + The model. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the mean values for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the variance values for this distribution. + + + + + + Gets the variance for this distribution. + + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + + Birnbaum-Saunders (Fatigue Life) distribution. + + + + + The Birnbaum–Saunders distribution, also known as the fatigue life distribution, + is a probability distribution used extensively in reliability applications to model + failure times. There are several alternative formulations of this distribution in + the literature. It is named after Z. W. Birnbaum and S. C. Saunders. + + + References: + + + Wikipedia, The Free Encyclopedia. Birnbaum–Saunders distribution. + Available from: http://en.wikipedia.org/wiki/Birnbaum%E2%80%93Saunders_distribution + + NIST/SEMATECH e-Handbook of Statistical Methods, Birnbaum-Saunders (Fatigue Life) Distribution + Available from: http://www.itl.nist.gov/div898/handbook/eda/section3/eda366a.htm + + + + + + This example shows how to create a Birnbaum-Saunders distribution + and compute some of its properties. + + + // Creates a new Birnbaum-Saunders distribution + var bs = new BirnbaumSaundersDistribution(shape: 0.42); + + double mean = bs.Mean; // 1.0882000000000001 + double median = bs.Median; // 1.0 + double var = bs.Variance; // 0.21529619999999997 + + double cdf = bs.DistributionFunction(x: 1.4); // 0.78956384911580346 + double pdf = bs.ProbabilityDensityFunction(x: 1.4); // 1.3618433601225426 + double lpdf = bs.LogProbabilityDensityFunction(x: 1.4); // 0.30883919386130815 + + double ccdf = bs.ComplementaryDistributionFunction(x: 1.4); // 0.21043615088419654 + double icdf = bs.InverseDistributionFunction(p: cdf); // 2.0618330099769064 + + double hf = bs.HazardFunction(x: 1.4); // 6.4715276077824093 + double chf = bs.CumulativeHazardFunction(x: 1.4); // 1.5585729930861034 + + string str = bs.ToString(CultureInfo.InvariantCulture); // BirnbaumSaunders(x; μ = 0, β = 1, γ = 0.42) + + + + + + + Constructs a Birnbaum-Saunders distribution + with location parameter 0, scale 1, and shape 1. + + + + + + Constructs a Birnbaum-Saunders distribution + with location parameter 0, scale 1, and the + given shape. + + + The shape parameter gamma (γ). Default is 1. + + + + + Constructs a Birnbaum-Saunders distribution + with given location, shape and scale parameters. + + + The location parameter μ. Default is 0. + The scale parameter beta (β). Default is 1. + The shape parameter gamma (γ). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's location parameter μ. + + + + + + Gets the distribution's scale parameter β. + + + + + + Gets the distribution's shape parameter γ. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The Birnbaum Saunders mean is defined as + 1 + 0.5γ². + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The Birnbaum Saunders variance is defined as + γ² (1 + (5/4)γ²). + + + + The distribution's mean value. + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Distribution types supported by the Anderson-Darling distribution. + + + + + + The statistic should reflect p-values for + a Anderson-Darling comparison against an + Uniform distribution. + + + + + + The statistic should reflect p-values for + a Anderson-Darling comparison against a + Normal distribution. + + + + + + Anderson-Darling (A²) distribution. + + + + + // Create a new Anderson Darling distribution (A²) for comparing against a Gaussian + var a2 = new AndersonDarlingDistribution(AndersonDarlingDistributionType.Normal, 30); + + double median = a2.Median; // 0.33089957635450062 + + double chf = a2.CumulativeHazardFunction(x: 0.27); // 0.42618068373640966 + double cdf = a2.DistributionFunction(x: 0.27); // 0.34700165471995292 + double ccdf = a2.ComplementaryDistributionFunction(x: 0.27); // 0.65299834528004708 + double icdf = a2.InverseDistributionFunction(p: cdf); // 0.27000000012207787 + + string str = a2.ToString(CultureInfo.InvariantCulture); // "A²(x; n = 30)" + + + + + + + + + Creates a new Anderson-Darling distribution. + + + The type of the compared distribution. + The number of samples. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the type of the distribution that the + Anderson-Darling is being performed against. + + + + + + Gets the number of samples distribution parameter. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Kumaraswamy distribution. + + + + + In probability and statistics, the Kumaraswamy's double bounded distribution is a + family of continuous probability distributions defined on the interval [0,1] differing + in the values of their two non-negative shape parameters, a and b. + It is similar to the Beta distribution, but much simpler to use especially in simulation + studies due to the simple closed form of both its probability density function and + cumulative distribution function. This distribution was originally proposed by Poondi + Kumaraswamy for variables that are lower and upper bounded. + + + A good example of the use of the Kumaraswamy distribution is the storage volume of a + reservoir of capacity zmax whose upper bound is zmax and lower + bound is 0 (Fletcher and Ponnambalam, 1996). + + + + References: + + + Wikipedia, The Free Encyclopedia. Kumaraswamy distribution. Available on: + http://en.wikipedia.org/wiki/Kumaraswamy_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Kumaraswamy distribution given its two non-negative shape parameters: + + + // Create a new Kumaraswamy distribution with shape (4,2) + var kumaraswamy = new KumaraswamyDistribution(a: 4, b: 2); + + double mean = kumaraswamy.Mean; // 0.71111111111111114 + double median = kumaraswamy.Median; // 0.73566031573423674 + double mode = kumaraswamy.Mode; // 0.80910671157022118 + double var = kumaraswamy.Variance; // 0.027654320987654302 + + double cdf = kumaraswamy.DistributionFunction(x: 0.4); // 0.050544639999999919 + double pdf = kumaraswamy.ProbabilityDensityFunction(x: 0.4); // 0.49889280000000014 + double lpdf = kumaraswamy.LogProbabilityDensityFunction(x: 0.4); // -0.69536403596913343 + + double ccdf = kumaraswamy.ComplementaryDistributionFunction(x: 0.4); // 0.94945536000000008 + double icdf = kumaraswamy.InverseDistributionFunction(p: cdf); // 0.40000011480618253 + + double hf = kumaraswamy.HazardFunction(x: 0.4); // 0.52545155993431869 + double chf = kumaraswamy.CumulativeHazardFunction(x: 0.4); // 0.051866764053008864 + + string str = kumaraswamy.ToString(CultureInfo.InvariantCulture); // Kumaraswamy(x; a = 4, b = 2) + + + + + + + Constructs a new Kumaraswamy's double bounded distribution with + the given two non-negative shape parameters a and b. + + + The distribution's non-negative shape parameter a. + The distribution's non-negative shape parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's non-negative shape parameter a. + + + + + + Gets the distribution's non-negative shape parameter b. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Abstract class for univariate discrete probability distributions. + + + + A probability distribution identifies either the probability of each value of an + unidentified random variable (when the variable is discrete), or the probability + of the value falling within a particular interval (when the variable is continuous). + + The probability distribution describes the range of possible values that a random + variable can attain and the probability that the value of the random variable is + within any (measurable) subset of that range. + + The function describing the probability that a given discrete value will + occur is called the probability function (or probability mass function, + abbreviated PMF), and the function describing the cumulative probability + that a given value or any value smaller than it will occur is called the + distribution function (or cumulative distribution function, abbreviated CDF). + + + References: + + + Wikipedia, The Free Encyclopedia. Probability distribution. Available on: + http://en.wikipedia.org/wiki/Probability_distribution + + Weisstein, Eric W. "Statistical Distribution." From MathWorld--A Wolfram Web Resource. + http://mathworld.wolfram.com/StatisticalDistribution.html + + + + + + + + + + + Constructs a new UnivariateDistribution class. + + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the distribution range within a given percentile. + + + + If 0.25 is passed as the argument, + this function returns the same as the function. + + + + The percentile at which the distribution ranges will be returned. + + A object containing the minimum value + for the distribution value, and the third quartile (Q2) as the maximum. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets P(X ≤ k), the cumulative distribution function + (cdf) for this distribution evaluated at point k. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets P(X ≤ k) or P(X < k), the cumulative distribution function + (cdf) for this distribution evaluated at point k, depending + on the value of the parameter. + + + + A single point in the distribution range. + + True to return P(X ≤ x), false to return P(X < x). Default is true. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + // Compute P(X = k) + double equal = dist.ProbabilityMassFunction(k: 1); + + // Compute P(X < k) + double less = dist.DistributionFunction(k: 1, inclusive: false); + + // Compute P(X ≤ k) + double lessThanOrEqual = dist.DistributionFunction(k: 1, inclusive: true); + + // Compute P(X > k) + double greater = dist.ComplementaryDistributionFunction(k: 1); + + // Compute P(X ≥ k) + double greaterThanOrEqual = dist.ComplementaryDistributionFunction(k: 1, inclusive: true); + + + + + + + + Gets the cumulative distribution function (cdf) for this + distribution in the semi-closed interval (a; b] given as + P(a < X ≤ b). + + + The start of the semi-closed interval (a; b]. + The end of the semi-closed interval (a; b]. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p using a numerical + approximation based on binary search. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point k. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + True to return P(X >= x), false to return P(X > x). Default is false. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + // Compute P(X = k) + double equal = dist.ProbabilityMassFunction(k: 1); + + // Compute P(X < k) + double less = dist.DistributionFunction(k: 1, inclusive: false); + + // Compute P(X ≤ k) + double lessThanOrEqual = dist.DistributionFunction(k: 1, inclusive: true); + + // Compute P(X > k) + double greater = dist.ComplementaryDistributionFunction(k: 1); + + // Compute P(X ≥ k) + double greaterThanOrEqual = dist.ComplementaryDistributionFunction(k: 1, inclusive: true); + + + + + + + Gets P(X > k) the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point k. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The probability of k occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + + The weight vector containing the weight for each of the samples. + + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + A containing + the support interval for this distribution. + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + + + Gets the Standard Deviation (the square root of + the variance) for the current distribution. + + + The distribution's standard deviation. + + + + + Gets the Quartiles for this distribution. + + + A object containing the first quartile + (Q1) as its minimum value, and the third quartile (Q2) as the maximum. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Shapiro-Wilk distribution. + + + + + The Shapiro-Wilk distribution models the distribution of + Shapiro-Wilk's test statistic. + + + + References: + + + Royston, P. "Algorithm AS 181: The W test for Normality", Applied Statistics (1982), + Vol. 31, pp. 176–180. + + Royston, P. "Remark AS R94", Applied Statistics (1995), Vol. 44, No. 4, pp. 547-551. + Available at http://lib.stat.cmu.edu/apstat/R94 + + Royston, P. "Approximating the Shapiro-Wilk W-test for non-normality", + Statistics and Computing (1992), Vol. 2, pp. 117-119. + + Royston, P. "An Extension of Shapiro and Wilk's W Test for Normality to Large + Samples", Journal of the Royal Statistical Society Series C (1982a), Vol. 31, + No. 2, pp. 115-124. + + + + + + // Create a new Shapiro-Wilk's W for 5 samples + var sw = new ShapiroWilkDistribution(samples: 5); + + double mean = sw.Mean; // 0.81248567196628929 + double median = sw.Median; // 0.81248567196628929 + double mode = sw.Mode; // 0.81248567196628929 + + double cdf = sw.DistributionFunction(x: 0.84); // 0.83507812080728383 + double pdf = sw.ProbabilityDensityFunction(x: 0.84); // 0.82021062372326459 + double lpdf = sw.LogProbabilityDensityFunction(x: 0.84); // -0.1981941135071546 + + double ccdf = sw.ComplementaryDistributionFunction(x: 0.84); // 0.16492187919271617 + double icdf = sw.InverseDistributionFunction(p: cdf); // 0.84000000194587177 + + double hf = sw.HazardFunction(x: 0.84); // 4.9733281462602292 + double chf = sw.CumulativeHazardFunction(x: 0.84); // 1.8022833766369502 + + string str = sw.ToString(CultureInfo.InvariantCulture); // W(x; n = 12) + + + + + + + Creates a new Shapiro-Wilk distribution. + + + The number of samples. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of samples distribution parameter. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Not supported. + + + + + + Log-Logistic distribution. + + + + + In probability and statistics, the log-logistic distribution (known as the Fisk + distribution in economics) is a continuous probability distribution for a non-negative + random variable. It is used in survival analysis as a parametric model for events + whose rate increases initially and decreases later, for example mortality rate from + cancer following diagnosis or treatment. It has also been used in hydrology to model + stream flow and precipitation, and in economics as a simple model of the distribution + of wealth or income. + + + The log-logistic distribution is the probability distribution of a random variable + whose logarithm has a logistic distribution. It is similar in shape to the log-normal + distribution but has heavier tails. Its cumulative distribution function can be written + in closed form, unlike that of the log-normal. + + + References: + + + Wikipedia, The Free Encyclopedia. Log-logistic distribution. Available on: + http://en.wikipedia.org/wiki/Log-logistic_distribution + + + + + + This examples shows how to create a Log-Logistic distribution + and compute some of its properties and characteristics. + + + // Create a LLD2 distribution with scale = 0.42, shape = 2.2 + var log = new LogLogisticDistribution(scale: 0.42, shape: 2.2); + + double mean = log.Mean; // 0.60592605102976937 + double median = log.Median; // 0.42 + double mode = log.Mode; // 0.26892249963239817 + double var = log.Variance; // 1.4357858982592435 + + double cdf = log.DistributionFunction(x: 1.4); // 0.93393329906725353 + double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.096960115938100763 + double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -2.3334555609306102 + + double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.066066700932746525 + double icdf = log.InverseDistributionFunction(p: cdf); // 1.4000000000000006 + + double hf = log.HazardFunction(x: 1.4); // 1.4676094699628273 + double chf = log.CumulativeHazardFunction(x: 1.4); // 2.7170904270953637 + + string str = log.ToString(CultureInfo.InvariantCulture); // LogLogistic(x; α = 0.42, β = 2.2) + + + + + + + + + + Constructs a Log-Logistic distribution + with unit scale and unit shape. + + + + + + Constructs a Log-Logistic distribution + with the given scale and unit shape. + + + The distribution's scale value α (alpha). + + + + + Constructs a Log-Logistic distribution + with the given scale and shape parameters. + + + The distribution's scale value α (alpha). + The distribution's shape value β (beta). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Creates a new using + the location-shape parametrization. In this parametrization, + is taken as 1 / . + + + The location parameter μ (mu) [taken as μ = α]. + The distribution's shape value σ (sigma) [taken as σ = β]. + + + A with α = μ and β = 1/σ. + + + + + + Gets the distribution's scale value (α). + + + + + + Gets the distribution's shape value (β). + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Inverse chi-Square (χ²) probability distribution + + + + + In probability and statistics, the inverse-chi-squared distribution (or + inverted-chi-square distribution) is a continuous probability distribution + of a positive-valued random variable. It is closely related to the + chi-squared distribution and its + specific importance is that it arises in the application of Bayesian + inference to the normal distribution, where it can be used as the + prior and posterior distribution for an unknown variance. + + + The inverse-chi-squared distribution (or inverted-chi-square distribution) is + the probability distribution of a random variable whose multiplicative inverse + (reciprocal) has a chi-squared distribution. + It is also often defined as the distribution of a random variable whose reciprocal + divided by its degrees of freedom is a chi-squared distribution. That is, if X has + the chi-squared distribution with v degrees of freedom, then according to + the first definition, 1/X has the inverse-chi-squared distribution with v + degrees of freedom; while according to the second definition, vX has the + inverse-chi-squared distribution with v degrees of freedom. Only the first + definition is covered by this class. + + + + References: + + + Wikipedia, The Free Encyclopedia. Inverse-chi-square distribution. Available on: + http://en.wikipedia.org/wiki/Inverse-chi-squared_distribution + + + + + + The following example demonstrates how to create a new inverse + χ² distribution with the given degrees of freedom. + + + // Create a new inverse χ² distribution with 7 d.f. + var invchisq = new InverseChiSquareDistribution(degreesOfFreedom: 7); + double mean = invchisq.Mean; // 0.2 + double median = invchisq.Median; // 6.345811068141737 + double var = invchisq.Variance; // 75 + + double cdf = invchisq.DistributionFunction(x: 6.27); // 0.50860033566176044 + double pdf = invchisq.ProbabilityDensityFunction(x: 6.27); // 0.0000063457380298844403 + double lpdf = invchisq.LogProbabilityDensityFunction(x: 6.27); // -11.967727146795536 + + double ccdf = invchisq.ComplementaryDistributionFunction(x: 6.27); // 0.49139966433823956 + double icdf = invchisq.InverseDistributionFunction(p: cdf); // 6.2699998329362963 + + double hf = invchisq.HazardFunction(x: 6.27); // 0.000012913598625327002 + double chf = invchisq.CumulativeHazardFunction(x: 6.27); // 0.71049750196765715 + + string str = invchisq.ToString(); // "Inv-χ²(x; df = 7)" + + + + + + + + + Constructs a new Inverse Chi-Square distribution + with the given degrees of freedom. + + + The degrees of freedom for the distribution. + + + + + Gets the probability density function (pdf) for + the χ² distribution evaluated at point x. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the cumulative distribution function (cdf) for + the χ² distribution evaluated at point x. + + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + This method is not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the Degrees of Freedom for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + + + + Hyperbolic Secant distribution. + + + + + In probability theory and statistics, the hyperbolic secant distribution is + a continuous probability distribution whose probability density function and + characteristic function are proportional to the hyperbolic secant function. + The hyperbolic secant function is equivalent to the inverse hyperbolic cosine, + and thus this distribution is also called the inverse-cosh distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Hyperbolic secant distribution. Available on: + http://en.wikipedia.org/wiki/Sech_distribution + + + + + + This examples shows how to create a Sech distribution, + compute some of its properties and generate a number of + random samples from it. + + + // Create a new hyperbolic secant distribution + var sech = new HyperbolicSecantDistribution(); + + double mean = sech.Mean; // 0.0 + double median = sech.Median; // 0.0 + double mode = sech.Mode; // 0.0 + double var = sech.Variance; // 1.0 + + double cdf = sech.DistributionFunction(x: 1.4); // 0.92968538268895873 + double pdf = sech.ProbabilityDensityFunction(x: 1.4); // 0.10955386512899701 + double lpdf = sech.LogProbabilityDensityFunction(x: 1.4); // -2.2113389316917877 + + double ccdf = sech.ComplementaryDistributionFunction(x: 1.4); // 0.070314617311041272 + double icdf = sech.InverseDistributionFunction(p: cdf); // 1.40 + + double hf = sech.HazardFunction(x: 1.4); // 1.5580524977385339 + + string str = sech.ToString(); // Sech(x) + + + + + + + Constructs a Hyperbolic Secant (Sech) distribution. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the mean for this distribution (always zero). + + + + The distribution's mean value. + + + + + + Gets the median for this distribution (always zero). + + + + The distribution's median value. + + + + + + Gets the variance for this distribution (always one). + + + + The distribution's variance. + + + + + + Gets the Standard Deviation (the square root of + the variance) for the current distribution. + + + + The distribution's standard deviation. + + + + + + Gets the mode for this distribution (always zero). + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution (-inf, +inf). + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Logistic distribution. + + + + + In probability theory and statistics, the logistic distribution is a continuous + probability distribution. Its cumulative distribution function is the logistic + function, which appears in logistic regression and feedforward neural networks. + It resembles the normal distribution in shape but has heavier tails (higher + kurtosis). The Tukey lambda distribution + can be considered a generalization of the logistic distribution since it adds a + shape parameter, λ (the Tukey distribution becomes logistic when λ is zero). + + + References: + + + Wikipedia, The Free Encyclopedia. Logistic distribution. Available on: + http://en.wikipedia.org/wiki/Logistic_distribution + + + + + + This examples shows how to create a Logistic distribution, + compute some of its properties and generate a number of + random samples from it. + + + // Create a logistic distribution with μ = 0.42 and scale = 3 + var log = new LogisticDistribution(location: 0.42, scale: 1.2); + + double mean = log.Mean; // 0.42 + double median = log.Median; // 0.42 + double mode = log.Mode; // 0.42 + double var = log.Variance; // 4.737410112522892 + + double cdf = log.DistributionFunction(x: 1.4); // 0.693528308197921 + double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.17712232827170876 + double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -1.7309146649427332 + + double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.306471691802079 + double icdf = log.InverseDistributionFunction(p: cdf); // 1.3999999999999997 + + double hf = log.HazardFunction(x: 1.4); // 0.57794025683160088 + double chf = log.CumulativeHazardFunction(x: 1.4); // 1.1826298874077226 + + string str = log.ToString(CultureInfo.InvariantCulture); // Logistic(x; μ = 0.42, scale = 1.2) + + + + + + + + + Constructs a Logistic distribution + with zero location and unit scale. + + + + + + Constructs a Logistic distribution + with given location and unit scale. + + + The distribution's location value μ (mu). + + + + + Constructs a Logistic distribution + with given location and scale parameters. + + + The distribution's location value μ (mu). + The distribution's scale value s. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the location value μ (mu). + + + + + + Gets the location value μ (mu). + + + + The distribution's mean value. + + + + + + Gets the distribution's scale value (s). + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + In the logistic distribution, the mode is equal + to the distribution value. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + In the logistic distribution, the entropy is + equal to ln(s) + 2. + + + + The distribution's entropy. + + + + + + General continuous distribution. + + + + + The general continuous distribution provides the automatic calculation for + a variety of distribution functions and measures given only definitions for + the Probability Density Function (PDF) or the Cumulative Distribution Function + (CDF). Values such as the Expected value, Variance, Entropy and others are + computed through numeric integration. + + + + + // Let's suppose we have a formula that defines a probability distribution + // but we dont know much else about it. We don't know the form of its cumulative + // distribution function, for example. We would then like to know more about + // it, such as the underlying distribution's moments, characteristics, and + // properties. + + // Let's suppose the formula we have is this one: + double mu = 5; + double sigma = 4.2; + + Func>double, double> df = x => 1.0 / (sigma * Math.Sqrt(2 * Math.PI)) + * Math.Exp(-Math.Pow(x - mu, 2) / (2 * sigma * sigma)); + + // And for the moment, let's also pretend we don't know it is actually the + // p.d.f. of a Gaussian distribution with mean 5 and std. deviation of 4.2. + + // So, let's create a distribution based _solely_ on the formula we have: + var distribution = GeneralContinuousDistribution.FromDensityFunction(df); + + // Now, we can check everything that we can know about it: + + double mean = distribution.Mean; // 5 (note that all of those have been + double median = distribution.Median; // 5 detected automatically simply from + double var = distribution.Variance; // 17.64 the given density formula through + double mode = distribution.Mode; // 5 numerical methods) + + double cdf = distribution.DistributionFunction(x: 1.4); // 0.19568296915377595 + double pdf = distribution.ProbabilityDensityFunction(x: 1.4); // 0.065784567984404935 + double lpdf = distribution.LogProbabilityDensityFunction(x: 1.4); // -2.7213699972695058 + + double ccdf = distribution.ComplementaryDistributionFunction(x: 1.4); // 0.80431703084622408 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 1.3999999997024655 + + double hf = distribution.HazardFunction(x: 1.4); // 0.081789351041333558 + double chf = distribution.CumulativeHazardFunction(x: 1.4); // 0.21776177055276186 + + + + + + + Creates a new with the given PDF and CDF functions. + + + The distribution's support over the real line. + A probability density function. + A cumulative distribution function. + + + + + Creates a new with the given PDF and CDF functions. + + + A distribution whose properties will be numerically estimated. + + + + + Creates a new + from an existing + continuous distribution. + + + The distribution. + + A representing the same + but whose measures and functions are computed + using numerical integration and differentiation. + + + + + Creates a new + using only a probability density function definition. + + + A probability density function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a probability density function definition. + + + The distribution's support over the real line. + A probability density function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a cumulative distribution function definition. + + + A cumulative distribution function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a cumulative distribution function definition. + + + The distribution's support over the real line. + A cumulative distribution function. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a probability density function definition. + + + The distribution's support over the real line. + A probability density function. + The integration method to use for numerical computations. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Creates a new + using only a cumulative distribution function definition. + + + The distribution's support over the real line. + A cumulative distribution function. + The integration method to use for numerical computations. + + A created from the + whose measures and functions are computed using + numerical integration and differentiation. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Lévy distribution. + + + + + In probability theory and statistics, the Lévy distribution, named after Paul Lévy, is a continuous + probability distribution for a non-negative random variable. In spectroscopy, this distribution, with + frequency as the dependent variable, is known as a van der Waals profile. It is a special case of the + inverse-gamma distribution. + + + It is one of the few distributions that are stable and that have probability density functions that can + be expressed analytically, the others being the normal distribution and the Cauchy distribution. All three + are special cases of the stable distributions, which do not generally have a probability density function + which can be expressed analytically. + + + References: + + + Wikipedia, The Free Encyclopedia. Lévy distribution. Available on: + https://en.wikipedia.org/wiki/L%C3%A9vy_distribution + + + + + + This examples shows how to create a Lévy distribution + and how to compute some of its measures and properties. + + + + // Create a new Lévy distribution on 1 with scale 4.2: + var levy = new LevyDistribution(location: 1, scale: 4.2); + + double mean = levy.Mean; // +inf + double median = levy.Median; // 10.232059220934481 + double mode = levy.Mode; // NaN + double var = levy.Variance; // +inf + + double cdf = levy.DistributionFunction(x: 1.4); // 0.0011937454448720029 + double pdf = levy.ProbabilityDensityFunction(x: 1.4); // 0.016958939623898304 + double lpdf = levy.LogProbabilityDensityFunction(x: 1.4); // -4.0769601727487803 + + double ccdf = levy.ComplementaryDistributionFunction(x: 1.4); // 0.99880625455512795 + double icdf = levy.InverseDistributionFunction(p: cdf); // 1.3999999 + + double hf = levy.HazardFunction(x: 1.4); // 0.016979208476674869 + double chf = levy.CumulativeHazardFunction(x: 1.4); // 0.0011944585265140923 + + string str = levy.ToString(CultureInfo.InvariantCulture); // Lévy(x; μ = 1, c = 4.2) + + + + + + + Constructs a new + with zero location and unit scale. + + + + + + Constructs a new in + the given and with unit scale. + + + The distribution's location. + + + + + Constructs a new in the + given and . + + + The distribution's location. + The distribution's scale. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the location μ (mu) for this distribution. + + + + + + Gets the location c for this distribution. + + + + + + Gets the mean for this distribution, which for + the Levy distribution is always positive infinity. + + + + This property always returns Double.PositiveInfinity. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution, which for + the Levy distribution is always positive infinity. + + + + This property always returns Double.PositiveInfinity. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Folded Normal (Gaussian) distribution. + + + + + The folded normal distribution is a probability distribution related to the normal + distribution. Given a normally distributed random variable X with mean μ and variance + σ², the random variable Y = |X| has a folded normal distribution. Such a case may be + encountered if only the magnitude of some variable is recorded, but not its sign. The + distribution is called Folded because probability mass to the left of the x = 0 is + "folded" over by taking the absolute value. + + + The Half-Normal (Gaussian) distribution is a special + case of this distribution and can be created using a named constructor. + + + + References: + + + Wikipedia, The Free Encyclopedia. Folded Normal distribution. Available on: + https://en.wikipedia.org/wiki/Folded_normal_distribution + + + + + + This examples shows how to create a Folded Normal distribution + and how to compute some of its properties and measures. + + + // Creates a new Folded Normal distribution based on a Normal + // distribution with mean value 4 and standard deviation 4.2: + // + var fn = new FoldedNormalDistribution(mean: 4, stdDev: 4.2); + + double mean = fn.Mean; // 4.765653108337438 + double median = fn.Median; // 4.2593565881862734 + double mode = fn.Mode; // 2.0806531871308014 + double var = fn.Variance; // 10.928550450993715 + + double cdf = fn.DistributionFunction(x: 1.4); // 0.16867109769018807 + double pdf = fn.ProbabilityDensityFunction(x: 1.4); // 0.11998602818182187 + double lpdf = fn.LogProbabilityDensityFunction(x: 1.4); // -2.1203799747969523 + + double ccdf = fn.ComplementaryDistributionFunction(x: 1.4); // 0.83132890230981193 + double icdf = fn.InverseDistributionFunction(p: cdf); // 1.4 + + double hf = fn.HazardFunction(x: 1.4); // 0.14433039420191671 + double chf = fn.CumulativeHazardFunction(x: 1.4); // 0.18472977144474392 + + string str = fn.ToString(CultureInfo.InvariantCulture); // FN(x; μ = 4, σ² = 17.64) + + + + + + + + + Creates a new + with zero mean and unit standard deviation. + + + + + + Creates a new with + the given and unit standard deviation. + + + + The mean of the original normal distribution that should be folded. + + + + + Creates a new with + the given and + standard deviation + + + + The mean of the original normal distribution that should be folded. + + The standard deviation of the original normal distribution that should be folded. + + + + + Creates a new Half-normal distribution with the given + standard deviation. The half-normal distribution is a special case + of the when location is zero. + + + + The standard deviation of the original normal distribution that should be folded. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + This method is not supported. + + + + + + + + Shift Log-Logistic distribution. + + + + + The shifted log-logistic distribution is a probability distribution also known as + the generalized log-logistic or the three-parameter log-logistic distribution. It + has also been called the generalized logistic distribution, but this conflicts with + other uses of the term: see generalized logistic distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Shifted log-logistic distribution. Available on: + http://en.wikipedia.org/wiki/Shifted_log-logistic_distribution + + + + + + This examples shows how to create a Shifted Log-Logistic distribution, + compute some of its properties and generate a number of random samples + from it. + + + // Create a LLD3 distribution with μ = 0.0, scale = 0.42, and shape = 0.1 + var log = new ShiftedLogLogisticDistribution(location: 0, scale: 0.42, shape: 0.1); + + double mean = log.Mean; // 0.069891101544818923 + double median = log.Median; // 0.0 + double mode = log.Mode; // -0.083441677069328604 + double var = log.Variance; // 0.62447259946747213 + + double cdf = log.DistributionFunction(x: 1.4); // 0.94668863559417671 + double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.090123683626808615 + double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -2.4065722895662613 + + double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.053311364405823292 + double icdf = log.InverseDistributionFunction(p: cdf); // 1.4000000037735139 + + double hf = log.HazardFunction(x: 1.4); // 1.6905154207038875 + double chf = log.CumulativeHazardFunction(x: 1.4); // 2.9316057546685061 + + string str = log.ToString(CultureInfo.InvariantCulture); // LLD3(x; μ = 0, σ = 0.42, ξ = 0.1) + + + + + + + + + + Constructs a Shifted Log-Logistic distribution + with zero location, unit scale, and zero shape. + + + + + + Constructs a Shifted Log-Logistic distribution + with the given location, unit scale and zero shape. + + + The distribution's location value μ (mu). + + + + + Constructs a Shifted Log-Logistic distribution + with the given location and scale and zero shape. + + + The distribution's location value μ (mu). + The distribution's scale value σ (sigma). + + + + + Constructs a Shifted Log-Logistic distribution + with the given location and scale and zero shape. + + + The distribution's location value μ (mu). + The distribution's scale value s. + The distribution's shape value ξ (ksi). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the distribution's location value μ (mu). + + + + + + Gets the distribution's scale value (σ). + + + + + + Gets the distribution's shape value (ξ). + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Skew Normal distribution. + + + + + In probability theory and statistics, the skew normal distribution is a + continuous probability distribution + that generalises the normal distribution to allow + for non-zero skewness. + + + References: + + + Wikipedia, The Free Encyclopedia. Skew normal distribution. Available on: + https://en.wikipedia.org/wiki/Skew_normal_distribution + + + + + + This examples shows how to create a Skew normal distribution + and compute some of its properties and derived measures. + + + // Create a Skew normal distribution with location 2, scale 3 and shape 4.2 + var skewNormal = new SkewNormalDistribution(location: 2, scale: 3, shape: 4.2); + + double mean = skewNormal.Mean; // 4.3285611780515953 + double median = skewNormal.Median; // 4.0230040653062265 + double var = skewNormal.Variance; // 3.5778028400709641 + double mode = skewNormal.Mode; // 3.220622226764422 + + double cdf = skewNormal.DistributionFunction(x: 1.4); // 0.020166854942526125 + double pdf = skewNormal.ProbabilityDensityFunction(x: 1.4); // 0.052257431834162059 + double lpdf = skewNormal.LogProbabilityDensityFunction(x: 1.4); // -2.9515731621912877 + + double ccdf = skewNormal.ComplementaryDistributionFunction(x: 1.4); // 0.97983314505747388 + double icdf = skewNormal.InverseDistributionFunction(p: cdf); // 1.3999998597203041 + + double hf = skewNormal.HazardFunction(x: 1.4); // 0.053332990517581239 + double chf = skewNormal.CumulativeHazardFunction(x: 1.4); // 0.020372981958858238 + + string str = skewNormal.ToString(CultureInfo.InvariantCulture); // Sn(x; ξ = 2, ω = 3, α = 4.2) + + + + + + + + + + Constructs a Skew normal distribution with + zero location, unit scale and zero shape. + + + + + + Constructs a Skew normal distribution with + given location, unit scale and zero skewness. + + + The distribution's location value ξ (ksi). + + + + + Constructs a Skew normal distribution with + given location and scale and zero skewness. + + + The distribution's location value ξ (ksi). + The distribution's scale value ω (omega). + + + + + Constructs a Skew normal distribution + with given mean and standard deviation. + + + The distribution's location value ξ (ksi). + The distribution's scale value ω (omega). + The distribution's shape value α (alpha). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Create a new that + corresponds to a with + the given mean and standard deviation. + + + The distribution's mean value μ (mu). + The distribution's standard deviation σ (sigma). + + A representing + a with the given parameters. + + + + + Gets the skew-normal distribution's location value ξ (ksi). + + + + + + Gets the skew-normal distribution's scale value ω (omega). + + + + + + Gets the skew-normal distribution's shape value α (alpha). + + + + + + Not supported. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the skewness for this distribution. + + + + + + Gets the excess kurtosis for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Trapezoidal distribution. + + + + + Trapezoidal distributions have been used in many areas and studied under varying + scopes, such as in the excellent work of (van Dorp and Kotz, 2003), risk analysis + (Pouliquen, 1970) and (Powell and Wilson, 1997), fuzzy set theory (Chen and Hwang, + 1992), applied phyisics, and biomedical applications (Flehinger and Kimmel, 1987). + + + + Trapezoidal distributions are appropriate for modeling events that are comprised + by three different stages: one growth stage, where probability grows up until a + plateau is reached; a stability stage, where probability stays more or less the same; + and a decline stage, where probability decreases until zero (van Dorp and Kotz, 2003). + + + + References: + + + J. René van Dorp, Samuel Kotz, Trapezoidal distribution. Available on: + http://www.seas.gwu.edu/~dorpjr/Publications/JournalPapers/Metrika2003VanDorp.pdf + + Powell MR, Wilson JD (1997). Risk Assessment for National Natural Resource + Conservation Programs, Discussion Paper 97-49. Resources for the Future, Washington + D.C. + + Chen SJ, Hwang CL (1992). Fuzzy Multiple Attribute Decision-Making: Methods and + Applications, Springer-Verlag, Berlin, New York. + + Flehinger BJ, Kimmel M (1987). The natural history of lung cancer in periodically + screened population. Biometrics 1987, 43, 127-144. + + + + + + The following example shows how to create and test the main characteristics + of a Trapezoidal distribution given its parameters: + + + // Create a new trapezoidal distribution with linear growth between + // 0 and 2, stability between 2 and 8, and decrease between 8 and 10. + // + // + // +-----------+ + // /| |\ + // / | | \ + // / | | \ + // -------+---+-----------+---+------- + // ... 0 2 4 6 8 10 ... + // + var trapz = new TrapezoidalDistribution(a: 0, b: 2, c: 8, d: 10, n1: 1, n3: 1); + + double mean = trapz.Mean; // 2.25 + double median = trapz.Median; // 3.0 + double mode = trapz.Mode; // 3.1353457616424696 + double var = trapz.Variance; // 17.986666666666665 + + double cdf = trapz.DistributionFunction(x: 1.4); // 0.13999999999999999 + double pdf = trapz.ProbabilityDensityFunction(x: 1.4); // 0.10000000000000001 + double lpdf = trapz.LogProbabilityDensityFunction(x: 1.4); // -2.3025850929940455 + + double ccdf = trapz.ComplementaryDistributionFunction(x: 1.4); // 0.85999999999999999 + double icdf = trapz.InverseDistributionFunction(p: cdf); // 1.3999999999999997 + + double hf = trapz.HazardFunction(x: 1.4); // 0.11627906976744187 + double chf = trapz.CumulativeHazardFunction(x: 1.4); // 0.15082288973458366 + + string str = trapz.ToString(CultureInfo.InvariantCulture); // Trapezoidal(x; a=0, b=2, c=8, d=10, n1=1, n3=1, α = 1) + + + + + + + Creates a new trapezoidal distribution. + + + The minimum value a. + The beginning of the stability region b. + The end of the stability region c. + The maximum value d. + The growth slope between points and . + The growth slope between points and . + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + The 4-parameter Beta distribution. + + + + + The generalized beta distribution is a family of continuous probability distributions defined + on any interval (min, max) parameterized by two positive shape parameters and two real location + parameters, typically denoted by α, β, a and b. The beta distribution can be suited to the + statistical modeling of proportions in applications where values of proportions equal to 0 or 1 + do not occur. One theoretical case where the beta distribution arises is as the distribution of + the ratio formed by one random variable having a Gamma distribution divided by the sum of it and + another independent random variable also having a Gamma distribution with the same scale parameter + (but possibly different shape parameter). + + + References: + + + Wikipedia, The Free Encyclopedia. Beta distribution. + Available from: http://en.wikipedia.org/wiki/Beta_distribution + + Wikipedia, The Free Encyclopedia. Three-point estimation. + Available from: https://en.wikipedia.org/wiki/Three-point_estimation + + Broadleaf Capital International Pty Ltd. Beta PERT origins. + Available from: http://broadleaf.com.au/resource-material/beta-pert-origins/ + + Malcolm, D. G., Roseboom J. H., Clark C.E., and Fazar, W. Application of a technique of research + and development program evaluation, Operations Research, 7, 646-669, 1959. Available from: + http://mech.vub.ac.be/teaching/info/Ontwerpmethodologie/Appendix%20les%202%20PERT.pdf + + Clark, C. E. The PERT model for the distribution of an activity time, Operations Research, 10, 405-406, + 1962. Available from: http://connection.ebscohost.com/c/articles/18246172/pert-model-distribution-activity-time + + + + + + Note: Simpler examples are also available at the page. + + + The following example shows how to create a 4-parameter Beta distribution and + compute some of its properties and measures. + + + // Create a 4-parameter Beta distribution with the following parameters (α, β, a, b): + var beta = new GeneralizedBetaDistribution(alpha: 1.42, beta: 1.57, min: 1, max: 4.2); + + double mean = beta.Mean; // 2.5197324414715716 + double median = beta.Median; // 2.4997705845160225 + double var = beta.Variance; // 0.19999664152943961 + double mode = beta.Mode; // 2.3575757575757574 + double h = beta.Entropy; // -0.050654548091478513 + + double cdf = beta.DistributionFunction(x: 2.27); // 0.40828630817664596 + double pdf = beta.ProbabilityDensityFunction(x: 2.27); // 1.2766172921464953 + double lpdf = beta.LogProbabilityDensityFunction(x: 2.27); // 0.2442138392176838 + + double chf = beta.CumulativeHazardFunction(x: 2.27); // 0.5247323897609667 + double hf = beta.HazardFunction(x: 2.27); // 2.1574915534109484 + + double ccdf = beta.ComplementaryDistributionFunction(x: 2.27); // 0.59171369182335409 + double icdf = beta.InverseDistributionFunction(p: cdf); // 2.27 + + string str = beta.ToString(); // B(x; α = 1.42, β = 1.57, min = 1, max = 4.2) + + + + The following example shows how to create a 4-parameter Beta distribution + with a three-point estimate using PERT. + + + // Create a Beta from a minimum, maximum and most likely value + var b = GeneralizedBetaDistribution.Pert(min: 1, max: 3, mode: 2); + + double mean = b.Mean; // 2.5197324414715716 + double median = b.Median; // 2.4997705845160225 + double var = b.Variance; // 0.19999664152943961 + double mode = b.Mode; // 2.3575757575757574 + + + + The following example shows how to create a 4-parameter Beta distribution + with a three-point estimate using Vose's modification for PERT. + + + // Create a Beta from a minimum, maximum and most likely value + var b = GeneralizedBetaDistribution.Vose(min: 1, max: 3, mode: 1.42); + + double mean = b.Mean; // 1.6133333333333333 + double median = b.Median; // 1.5727889200146494 + double mode = b.Mode; // 1.4471823077804513 + double var = b.Variance; // 0.055555555555555546 + + + + The next example shows how to generate 1000 new samples from a Beta distribution: + + + // Using the distribution's parameters + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, min: 0, max: 1, samples: 1000); + + // Using an existing distribution + var b = new GeneralizedBetaDistribution(alpha: 1, beta: 2); + double[] new_samples = b.Generate(1000); + + + + And finally, how to estimate the parameters of a Beta distribution from + a set of observations, using either the Method-of-moments or the Maximum + Likelihood Estimate. + + + // First we will be drawing 100000 observations from a 4-parameter + // Beta distribution with α = 2, β = 3, min = 10 and max = 15: + + double[] samples = GeneralizedBetaDistribution + .Random(alpha: 2, beta: 3, min: 10, max: 15, samples: 100000); + + // We can estimate a distribution with the known max and min + var B = GeneralizedBetaDistribution.Estimate(samples, 10, 15); + + // We can explicitly ask for a Method-of-moments estimation + var mm = GeneralizedBetaDistribution.Estimate(samples, 10, 15, + new GeneralizedBetaOptions { Method = BetaEstimationMethod.Moments }); + + // or explicitly ask for the Maximum Likelihood estimation + var mle = GeneralizedBetaDistribution.Estimate(samples, 10, 15, + new GeneralizedBetaOptions { Method = BetaEstimationMethod.MaximumLikelihood }); + + + + + + + + + Constructs a Beta distribution defined in the + interval (0,1) with the given parameters α and β. + + + The shape parameter α (alpha). + The shape parameter β (beta). + + + + + Constructs a Beta distribution defined in the + interval (a, b) with parameters α, β, a and b. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The minimum possible value a. + The maximum possible value b. + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using Vose's PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + + + A Beta distribution initialized using the Vose's PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using Vose's PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + The scale parameter λ (lambda). Default is 4. + + + A Beta distribution initialized using the Vose's PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using usual PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + + + A Beta distribution initialized using the PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using usual PERT estimation for the parameters a, b, mode and λ. + + + The minimum possible value a. + The maximum possible value b. + The most likely value m. + The scale parameter λ (lambda). Default is 4. + + + A Beta distribution initialized using the PERT method. + + + + + + Constructs a BetaPERT distribution defined in the interval (a, b) + using Golenko-Ginzburg observation that the mode is often at 2/3 + of the guessed interval. + + + The minimum possible value a. + The maximum possible value b. + + + A Beta distribution initialized using the Golenko-Ginzburg's method. + + + + + + Constructs a standard Beta distribution defined in the interval (0, 1) + based on the number of successed and trials for an experiment. + + + The number of success r. Default is 0. + The number of trials n. Default is 1. + + + A standard Beta distribution initialized using the given parameters. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The minimum possible value a. + The maximum possible value b. + The number of samples to generate. + + An array of double values sampled from the specified Beta distribution. + + + + + Generates a random observation from a + Beta distribution with the given parameters. + + + The shape parameter α (alpha). + The shape parameter β (beta). + The minimum possible value a. + The maximum possible value b. + + A random double value sampled from the specified Beta distribution. + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of weighted observations. + + + + + + Estimates a new Beta distribution from a set of observations. + + + + + + Gets the minimum value A. + + + + + + Gets the maximum value B. + + + + + + Gets the shape parameter α (alpha) + + + + + + Gets the shape parameter β (beta). + + + + + + Gets the mean for this distribution, + defined as (a + 4 * m + 6 * b). + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution, + defined as ((b - a) / (k+2))² + + + + The distribution's variance. + + + + + + Gets the mode for this distribution. + + + + The beta distribution's mode is given + by (a - 1) / (a + b - 2). + + + + The distribution's mode value. + + + + + + Gets the distribution support, defined as (, ). + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Triangular distribution. + + + + + In probability theory and statistics, the triangular distribution is a continuous + probability distribution with lower limit a, upper limit b and mode c, where a < + b and a ≤ c ≤ b. + + + References: + + + Wikipedia, The Free Encyclopedia. Triangular distribution. Available on: + https://en.wikipedia.org/wiki/Triangular_distribution + + + + + + This example shows how to create a Triangular distribution + with minimum 1, maximum 6, and most common value 3. + + + // Create a new Triangular distribution (1, 3, 6). + var trig = new TriangularDistribution(a: 1, b: 6, c: 3); + + double mean = trig.Mean; // 3.3333333333333335 + double median = trig.Median; // 3.2613872124741694 + double mode = trig.Mode; // 3.0 + double var = trig.Variance; // 1.0555555555555556 + + double cdf = trig.DistributionFunction(x: 2); // 0.10000000000000001 + double pdf = trig.ProbabilityDensityFunction(x: 2); // 0.20000000000000001 + double lpdf = trig.LogProbabilityDensityFunction(x: 2); // -1.6094379124341003 + + double ccdf = trig.ComplementaryDistributionFunction(x: 2); // 0.90000000000000002 + double icdf = trig.InverseDistributionFunction(p: cdf); // 2.0000000655718773 + + double hf = trig.HazardFunction(x: 2); // 0.22222222222222224 + double chf = trig.CumulativeHazardFunction(x: 2); // 0.10536051565782628 + + string str = trig.ToString(CultureInfo.InvariantCulture); // Triangular(x; a = 1, b = 6, c = 3) + + + + + + + Constructs a Triangular distribution + with the given parameters a, b and c. + + + The minimum possible value in the distribution (a). + The maximum possible value in the distribution (b). + The most common value in the distribution (c). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. + The array elements can be either of type double (for univariate data) or type + double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, + such as regularization constants and additional parameters. + + + + + Gets the minimum value in a set of weighted observations. + + + + + + Gets the maximum value in a set of weighted observations. + + + + + + Finds the index of the last largest value in a set of observations. + + + + + + Finds the index of the first smallest value in a set of observations. + + + + + + Finds the index of the first smallest value in a set of weighted observations. + + + + + + Finds the index of the last largest value in a set of weighted observations. + + + + + + Gets the triangular parameter A (the minimum value). + + + + + + Gets the triangular parameter B (the maximum value). + + + + + + Gets the mean for this distribution, + defined as (a + b + c) / 3. + + + + The distribution's mean value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution, defined + as (a² + b² + c² - ab - ac - bc) / 18. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution, + also known as the triangular's c. + + + + The distribution's mode value. + + + + + + Gets the distribution support, defined as (, ). + + + + + + Gets the entropy for this distribution, + defined as 0.5 + log((max-min)/2)). + + + + The distribution's entropy. + + + + + + Gumbel distribution (as known as the Extreme Value Type I distribution). + + + + + In probability theory and statistics, the Gumbel distribution is used to model + the distribution of the maximum (or the minimum) of a number of samples of various + distributions. Such a distribution might be used to represent the distribution of + the maximum level of a river in a particular year if there was a list of maximum + values for the past ten years. It is useful in predicting the chance that an extreme + earthquake, flood or other natural disaster will occur. + + + The potential applicability of the Gumbel distribution to represent the distribution + of maxima relates to extreme value theory which indicates that it is likely to be useful + if the distribution of the underlying sample data is of the normal or exponential type. + + + The Gumbel distribution is a particular case of the generalized extreme value + distribution (also known as the Fisher-Tippett distribution). It is also known + as the log-Weibull distribution and the double exponential distribution (a term + that is alternatively sometimes used to refer to the Laplace distribution). It + is related to the Gompertz distribution[citation needed]: when its density is + first reflected about the origin and then restricted to the positive half line, + a Gompertz function is obtained. + + + In the latent variable formulation of the multinomial logit model — common in + discrete choice theory — the errors of the latent variables follow a Gumbel + distribution. This is useful because the difference of two Gumbel-distributed + random variables has a logistic distribution. + + + The Gumbel distribution is named after Emil Julius Gumbel (1891–1966), based on + his original papers describing the distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Gumbel distribution. Available on: + http://en.wikipedia.org/wiki/Gumbel_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Gumbel distribution given its location and scale parameters: + + + var gumbel = new GumbelDistribution(location: 4.795, scale: 1 / 0.392); + + double mean = gumbel.Mean; // 6.2674889410753387 + double median = gumbel.Median; // 5.7299819402593481 + double mode = gumbel.Mode; // 4.7949999999999999 + double var = gumbel.Variance; // 10.704745853604138 + + double cdf = gumbel.DistributionFunction(x: 3.4); // 0.17767760424788051 + double pdf = gumbel.ProbabilityDensityFunction(x: 3.4); // 0.12033954114322486 + double lpdf = gumbel.LogProbabilityDensityFunction(x: 3.4); // -2.1174380222001519 + + double ccdf = gumbel.ComplementaryDistributionFunction(x: 3.4); // 0.82232239575211952 + double icdf = gumbel.InverseDistributionFunction(p: cdf); // 3.3999999904866245 + + double hf = gumbel.HazardFunction(x: 1.4); // 0.03449691276402958 + double chf = gumbel.CumulativeHazardFunction(x: 1.4); // 0.022988793482259906 + + string str = gumbel.ToString(CultureInfo.InvariantCulture); // Gumbel(x; μ = 4.795, β = 2.55) + + + + + + + Creates a new Gumbel distribution + with location zero and unit scale. + + + + + + Creates a new Gumbel distribution + with the given location and scale. + + + The location parameter μ (mu). Default is 0. + The scale parameter β (beta). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + The hazard function is the ratio of the probability + density function f(x) to the survival function, S(x). + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's location parameter mu (μ). + + + + + + Gets the distribution's scale parameter beta (β). + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Tukey-Lambda distribution. + + + + + Formalized by John Tukey, the Tukey lambda distribution is a continuous + probability distribution defined in terms of its quantile function. It is + typically used to identify an appropriate distribution and not used in + statistical models directly. + + The Tukey lambda distribution has a single shape parameter λ. As with other + probability distributions, the Tukey lambda distribution can be transformed + with a location parameter, μ, and a scale parameter, σ. Since the general form + of probability distribution can be expressed in terms of the standard distribution, + the subsequent formulas are given for the standard form of the function. + + References: + + + Wikipedia, The Free Encyclopedia. Tukey-Lambda distribution. Available on: + http://en.wikipedia.org/wiki/Tukey_lambda_distribution + + + + + + This examples shows how to create a Tukey distribution and + compute some of its properties . + + + var tukey = new TukeyLambdaDistribution(lambda: 0.14); + + double mean = tukey.Mean; // 0.0 + double median = tukey.Median; // 0.0 + double mode = tukey.Mode; // 0.0 + double var = tukey.Variance; // 2.1102970222144855 + double stdDev = tukey.StandardDeviation; // 1.4526861402982014 + + double cdf = tukey.DistributionFunction(x: 1.4); // 0.83252947230217966 + double pdf = tukey.ProbabilityDensityFunction(x: 1.4); // 0.17181242109370659 + double lpdf = tukey.LogProbabilityDensityFunction(x: 1.4); // -1.7613519723149427 + + double ccdf = tukey.ComplementaryDistributionFunction(x: 1.4); // 0.16747052769782034 + double icdf = tukey.InverseDistributionFunction(p: cdf); // 1.4000000000000004 + + double hf = tukey.HazardFunction(x: 1.4); // 1.0219566231014163 + double chf = tukey.CumulativeHazardFunction(x: 1.4); // 1.7842102556452939 + + string str = tukey.ToString(CultureInfo.InvariantCulture); // Tukey(x; λ = 0.14) + + + + + + + + + + + Constructs a Tukey-Lambda distribution + with the given lambda (shape) parameter. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the first derivative of the + inverse distribution function (icdf) for this distribution evaluated + at probability p. + + + A probability value between 0 and 1. + + + + + Gets the log of the quantile + density function, which in turn is the first derivative of + the inverse distribution + function (icdf), evaluated at probability p. + + + A probability value between 0 and 1. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution shape parameter lambda (λ). + + + + + + Gets the mean for this distribution (always zero). + + + + The distribution's mean value. + + + + + + Gets the median for this distribution (always zero). + + + + The distribution's median value. + + + + + + Gets the mode for this distribution (always zero). + + + + The distribution's median value. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Power Lognormal distribution. + + + + + References: + + + NIST/SEMATECH e-Handbook of Statistical Methods. Power Lognormal distribution. Available on: + http://www.itl.nist.gov/div898/handbook/eda/section3/eda366e.htm + + + + + + This example shows how to create a Power Lognormal + distribution and compute some of its properties. + + + // Create a Power-Lognormal distribution with p = 4.2 and s = 1.2 + var plog = new PowerLognormalDistribution(power: 4.2, shape: 1.2); + + double cdf = plog.DistributionFunction(x: 1.4); // 0.98092157745191766 + double pdf = plog.ProbabilityDensityFunction(x: 1.4); // 0.046958580233533977 + double lpdf = plog.LogProbabilityDensityFunction(x: 1.4); // -3.0584893374471496 + + double ccdf = plog.ComplementaryDistributionFunction(x: 1.4); // 0.019078422548082351 + double icdf = plog.InverseDistributionFunction(p: cdf); // 1.4 + + double hf = plog.HazardFunction(x: 1.4); // 10.337649063164642 + double chf = plog.CumulativeHazardFunction(x: 1.4); // 3.9591972920568446 + + string str = plog.ToString(CultureInfo.InvariantCulture); // PLD(x; p = 4.2, σ = 1.2) + + + + + + + Constructs a Power Lognormal distribution + with the given power and shape parameters. + + + The distribution's power p. + The distribution's shape σ. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's power parameter (p). + + + + + + Gets the distribution's shape parameter sigma (σ). + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Generalized Normal distribution (also known as Exponential Power distribution). + + + + + The generalized normal distribution or generalized Gaussian distribution + (GGD) is either of two families of parametric continuous probability + distributions on the real line. Both families add a shape parameter to + the normal distribution. To distinguish the two families, they are referred + to below as "version 1" and "version 2". However this is not a standard + nomenclature. + + Known also as the exponential power distribution, or the generalized error + distribution, this is a parametric family of symmetric distributions. It includes + all normal and Laplace distributions, and as limiting cases it includes all + continuous uniform distributions on bounded intervals of the real line. + + + References: + + + Wikipedia, The Free Encyclopedia. Generalized normal distribution. Available on: + https://en.wikipedia.org/wiki/Generalized_normal_distribution + + + + + + This examples shows how to create a Generalized normal distribution + and compute some of its properties. + + + // Creates a new generalized normal distribution with the given parameters + var normal = new GeneralizedNormalDistribution(location: 1, scale: 5, shape: 0.42); + + double mean = normal.Mean; // 1 + double median = normal.Median; // 1 + double mode = normal.Mode; // 1 + double var = normal.Variance; // 19200.781700666659 + + double cdf = normal.DistributionFunction(x: 1.4); // 0.51076148867681703 + double pdf = normal.ProbabilityDensityFunction(x: 1.4); // 0.024215092283124507 + double lpdf = normal.LogProbabilityDensityFunction(x: 1.4); // -3.7207791921441378 + + double ccdf = normal.ComplementaryDistributionFunction(x: 1.4); // 0.48923851132318297 + double icdf = normal.InverseDistributionFunction(p: cdf); // 1.4000000149740108 + + double hf = normal.HazardFunction(x: 1.4); // 0.049495474543966168 + double chf = normal.CumulativeHazardFunction(x: 1.4); // 0.7149051552030572 + + string str = normal.ToString(CultureInfo.InvariantCulture); // GGD(x; μ = 1, α = 5, β = 0.42) + + + + + + + + + + Constructs a Generalized Normal distribution with the given parameters. + + + The location parameter μ. + The scale parameter α. + The shape parameter β. + + + + + Create an distribution using a + specialization. + + + The Laplace's location parameter μ (mu). + The Laplace's scale parameter b. + + A that provides + a . + + + + + Create an distribution using a + specialization. + + + The Normal's mean parameter μ (mu). + The Normal's standard deviation σ (sigma). + + A that provides + a distribution. + + + + + Gets the cumulative distribution function (cdf) for the + Generalized Normal distribution evaluated at point x. + + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single double value. + For a multivariate distribution, this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the location value μ (mu) for the distribution. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + In the Generalized Normal Distribution, the mode is + equal to the distribution's value. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Entropy for this Normal distribution. + + + + + + Power Normal distribution. + + + + + References: + + + NIST/SEMATECH e-Handbook of Statistical Methods. Power Normal distribution. Available on: + http://www.itl.nist.gov/div898/handbook/eda/section3/eda366d.htm + + + + + + This example shows how to create a Power Normal distribution + and compute some of its properties. + + + // Create a new Power-Normal distribution with p = 4.2 + var pnormal = new PowerNormalDistribution(power: 4.2); + + double cdf = pnormal.DistributionFunction(x: 1.4); // 0.99997428721920678 + double pdf = pnormal.ProbabilityDensityFunction(x: 1.4); // 0.00020022645890003279 + double lpdf = pnormal.LogProbabilityDensityFunction(x: 1.4); // -0.20543269836728234 + + double ccdf = pnormal.ComplementaryDistributionFunction(x: 1.4); // 0.000025712780793218926 + double icdf = pnormal.InverseDistributionFunction(p: cdf); // 1.3999999999998953 + + double hf = pnormal.HazardFunction(x: 1.4); // 7.7870402470368854 + double chf = pnormal.CumulativeHazardFunction(x: 1.4); // 10.568522382550167 + + string str = pnormal.ToString(); // PND(x; p = 4.2) + + + + + + + Constructs a Power Normal distribution + with given power (shape) parameter. + + + The distribution's power p. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + A probability value between 0 and 1. + + A sample which could original the given probability + value when applied in the . + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution shape (power) parameter. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + U-quadratic distribution. + + + + + In probability theory and statistics, the U-quadratic distribution is a continuous + probability distribution defined by a unique quadratic function with lower limit a + and upper limit b. This distribution is a useful model for symmetric bimodal processes. + Other continuous distributions allow more flexibility, in terms of relaxing the symmetry + and the quadratic shape of the density function, which are enforced in the U-quadratic + distribution - e.g., Beta distribution, Gamma distribution, etc. + + + References: + + + Wikipedia, The Free Encyclopedia. U-quadratic distribution. Available on: + http://en.wikipedia.org/wiki/U-quadratic_distribution + + + + + + The following example shows how to create and test the main characteristics + of an U-quadratic distribution given its two parameters: + + + // Create a new U-quadratic distribution with values + var u2 = new UQuadraticDistribution(a: 0.42, b: 4.2); + + double mean = u2.Mean; // 2.3100000000000001 + double median = u2.Median; // 2.3100000000000001 + double mode = u2.Mode; // 0.8099060089153145 + double var = u2.Variance; // 2.1432600000000002 + + double cdf = u2.DistributionFunction(x: 1.4); // 0.44419041812731797 + double pdf = u2.ProbabilityDensityFunction(x: 1.4); // 0.18398763254730335 + double lpdf = u2.LogProbabilityDensityFunction(x: 1.4); // -1.6928867380489712 + + double ccdf = u2.ComplementaryDistributionFunction(x: 1.4); // 0.55580958187268203 + double icdf = u2.InverseDistributionFunction(p: cdf); // 1.3999998213768274 + + double hf = u2.HazardFunction(x: 1.4); // 0.3310263776442936 + double chf = u2.CumulativeHazardFunction(x: 1.4); // 0.58732952203701494 + + string str = u2.ToString(CultureInfo.InvariantCulture); // "UQuadratic(x; a = 0.42, b = 4.2)" + + + + + + + Constructs a new U-quadratic distribution. + + + Parameter a. + Parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Wrapped Cauchy Distribution. + + + + + In probability theory and directional statistics, a wrapped Cauchy distribution + is a wrapped probability distribution that results from the "wrapping" of the + Cauchy distribution around the unit circle. The Cauchy distribution is sometimes + known as a Lorentzian distribution, and the wrapped Cauchy distribution may + sometimes be referred to as a wrapped Lorentzian distribution. + + + The wrapped Cauchy distribution is often found in the field of spectroscopy where + it is used to analyze diffraction patterns (e.g. see Fabry–Pérot interferometer). + + + References: + + + Wikipedia, The Free Encyclopedia. Directional statistics. Available on: + http://en.wikipedia.org/wiki/Directional_statistics + + Wikipedia, The Free Encyclopedia. Wrapped Cauchy distribution. Available on: + http://en.wikipedia.org/wiki/Wrapped_Cauchy_distribution + + + + + + // Create a Wrapped Cauchy distribution with μ = 0.42, γ = 3 + var dist = new WrappedCauchyDistribution(mu: 0.42, gamma: 3); + + // Common measures + double mean = dist.Mean; // 0.42 + double var = dist.Variance; // 0.950212931632136 + + // Probability density functions + double pdf = dist.ProbabilityDensityFunction(x: 0.42); // 0.1758330112785475 + double lpdf = dist.LogProbabilityDensityFunction(x: 0.42); // -1.7382205338929015 + + // String representation + string str = dist.ToString(); // "WrappedCauchy(x; μ = 0,42, γ = 3)" + + + + + + + + + Initializes a new instance of the class. + + + The mean resultant parameter μ. + The gamma parameter γ. + + + + + Not supported. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + The distribution's entropy. + + + + + + Inverse Gamma Distribution. + + + + + The inverse gamma distribution is a two-parameter family of continuous probability + distributions on the positive real line, which is the distribution of the reciprocal + of a variable distributed according to the gamma distribution. Perhaps the chief use + of the inverse gamma distribution is in Bayesian statistics, where it serves as the + conjugate prior of the variance of a normal distribution. However, it is common among + Bayesians to consider an alternative parameterization of the normal distribution in + terms of the precision, defined as the reciprocal of the variance, which allows the + gamma distribution to be used directly as a conjugate prior. + + + References: + + + Wikipedia, The Free Encyclopedia. Inverse Gamma Distribution. + Available from: http://en.wikipedia.org/wiki/Inverse-gamma_distribution + + John D. Cook. (2008). The Inverse Gamma Distribution. + + + + + + // Create a new inverse Gamma distribution with α = 0.42 and β = 0.5 + var invGamma = new InverseGammaDistribution(shape: 0.42, scale: 0.5); + + // Common measures + double mean = invGamma.Mean; // -0.86206896551724133 + double median = invGamma.Median; // 3.1072323347401709 + double var = invGamma.Variance; // -0.47035626665061164 + + // Cumulative distribution functions + double cdf = invGamma.DistributionFunction(x: 0.27); // 0.042243552114989695 + double ccdf = invGamma.ComplementaryDistributionFunction(x: 0.27); // 0.95775644788501035 + double icdf = invGamma.InverseDistributionFunction(p: cdf); // 0.26999994629410995 + + // Probability density functions + double pdf = invGamma.ProbabilityDensityFunction(x: 0.27); // 0.35679850067181362 + double lpdf = invGamma.LogProbabilityDensityFunction(x: 0.27); // -1.0305840804381006 + + // Hazard (failure rate) functions + double hf = invGamma.HazardFunction(x: 0.27); // 0.3725357333377633 + double chf = invGamma.CumulativeHazardFunction(x: 0.27); // 0.043161763098266373 + + // String representation + string str = invGamma.ToString(); // Γ^(-1)(x; α = 0.42, β = 0.5) + + + + + + + + + Creates a new Inverse Gamma Distribution. + + + The shape parameter α (alpha). + The scale parameter β (beta). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + In the Inverse Gamma CDF is computed in terms of the + Upper Incomplete Regularized Gamma Function Q as CDF(x) = Q(a, b / x). + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the Inverse Gamma distribution, the Mean is given as b / (a - 1). + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + In the Inverse Gamma distribution, the Variance is given as b² / ((a - 1)² * (a - 2)). + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Laplace's Distribution (as known as the double exponential distribution). + + + + + In probability theory and statistics, the Laplace distribution is a continuous + probability distribution named after Pierre-Simon Laplace. It is also sometimes called + the double exponential distribution. + + + The difference between two independent identically distributed exponential random + variables is governed by a Laplace distribution, as is a Brownian motion evaluated at an + exponentially distributed random time. Increments of Laplace motion or a variance gamma + process evaluated over the time scale also have a Laplace distribution. + + + The probability density function of the Laplace distribution is also reminiscent of the + normal distribution; however, whereas the normal distribution is expressed in terms of + the squared difference from the mean μ, the Laplace density is expressed in terms of the + absolute difference from the mean. Consequently the Laplace distribution has fatter tails + than the normal distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Laplace distribution. + Available from: http://en.wikipedia.org/wiki/Laplace_distribution + + + + + + // Create a new Laplace distribution with μ = 4 and b = 2 + var laplace = new LaplaceDistribution(location: 4, scale: 2); + + // Common measures + double mean = laplace.Mean; // 4.0 + double median = laplace.Median; // 4.0 + double var = laplace.Variance; // 8.0 + + // Cumulative distribution functions + double cdf = laplace.DistributionFunction(x: 0.27); // 0.077448104942453522 + double ccdf = laplace.ComplementaryDistributionFunction(x: 0.27); // 0.92255189505754642 + double icdf = laplace.InverseDistributionFunction(p: cdf); // 0.27 + + // Probability density functions + double pdf = laplace.ProbabilityDensityFunction(x: 0.27); // 0.038724052471226761 + double lpdf = laplace.LogProbabilityDensityFunction(x: 0.27); // -3.2512943611198906 + + // Hazard (failure rate) functions + double hf = laplace.HazardFunction(x: 0.27); // 0.041974931360160776 + double chf = laplace.CumulativeHazardFunction(x: 0.27); // 0.080611649844768624 + + // String representation + string str = laplace.ToString(CultureInfo.InvariantCulture); // Laplace(x; μ = 4, b = 2) + + + + + + + Creates a new Laplace distribution. + + + The location parameter μ (mu). + The scale parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The Laplace's distribution mean has the + same value as the location parameter μ. + + + + + + Gets the mode for this distribution (μ). + + + + The Laplace's distribution mode has the + same value as the location parameter μ. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + The Laplace's distribution median has the + same value as the location parameter μ. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The Laplace's variance is computed as 2*b². + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + The Laplace's entropy is defined as ln(2*e*b), in which + e is the Euler constant. + + + + + + Mann-Whitney's U statistic distribution. + + + + + This is the distribution for Mann-Whitney's U + statistic used in . This distribution is based on + sample statistics. + + This is the distribution for the first sample statistic, U1. Some textbooks + (and statistical packages) use alternate definitions for U, which should be + compared with the appropriate statistic tables or alternate distributions. + + + + + // Consider the following rank statistics + double[] ranks = { 1, 2, 3, 4, 5 }; + + // Create a new Mann-Whitney U's distribution with n1 = 2 and n2 = 3 + var mannWhitney = new MannWhitneyDistribution(ranks, n1: 2, n2: 3); + + // Common measures + double mean = mannWhitney.Mean; // 2.7870954605658511 + double median = mannWhitney.Median; // 1.5219615583481305 + double var = mannWhitney.Variance; // 18.28163603621158 + + // Cumulative distribution functions + double cdf = mannWhitney.DistributionFunction(x: 4); // 0.6 + double ccdf = mannWhitney.ComplementaryDistributionFunction(x: 4); // 0.4 + double icdf = mannWhitney.InverseDistributionFunction(p: cdf); // 3.6666666666666661 + + // Probability density functions + double pdf = mannWhitney.ProbabilityDensityFunction(x: 4); // 0.2 + double lpdf = mannWhitney.LogProbabilityDensityFunction(x: 4); // -1.6094379124341005 + + // Hazard (failure rate) functions + double hf = mannWhitney.HazardFunction(x: 4); // 0.5 + double chf = mannWhitney.CumulativeHazardFunction(x: 4); // 0.916290731874155 + + // String representation + string str = mannWhitney.ToString(); // MannWhitney(u; n1 = 2, n2 = 3) + + + + + + + + + + + Constructs a Mann-Whitney's U-statistic distribution. + + + The rank statistics. + The number of observations in the first sample. + The number of observations in the second sample. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the Mann-Whitney's U statistic for the smaller sample. + + + + + + Gets the Mann-Whitney's U statistic for the first sample. + + + + + + Gets the Mann-Whitney's U statistic for the second sample. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point u. + + + A single point in the distribution range. + + + The probability of u occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value u will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of u + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value u will occur. + + + + See . + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of observations in the first sample. + + + + + + Gets the number of observations in the second sample. + + + + + + Gets the rank statistics for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The mean of Mann-Whitney's U distribution + is defined as (n1 * n2) / 2. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The variance of Mann-Whitney's U distribution + is defined as (n1 * n2 * (n1 + n2 + 1)) / 12. + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Noncentral t-distribution. + + + + + As with other noncentrality parameters, the noncentral t-distribution generalizes + a probability distribution – Student's t-distribution + – using a noncentrality parameter. Whereas the central distribution describes how a + test statistic is distributed when the difference tested is null, the noncentral + distribution also describes how t is distributed when the null is false. + This leads to its use in statistics, especially calculating statistical power. The + noncentral t-distribution is also known as the singly noncentral t-distribution, and + in addition to its primary use in statistical inference, is also used in robust + modeling for data. + + + References: + + + Wikipedia, The Free Encyclopedia. Noncentral t-distribution. Available on: + http://en.wikipedia.org/wiki/Noncentral_t-distribution + + + + + + var distribution = new NoncentralTDistribution( + degreesOfFreedom: 4, noncentrality: 2.42); + + double mean = distribution.Mean; // 3.0330202123035104 + double median = distribution.Median; // 2.6034842414893795 + double var = distribution.Variance; // 4.5135883917583683 + + double cdf = distribution.DistributionFunction(x: 1.4); // 0.15955740661144721 + double pdf = distribution.ProbabilityDensityFunction(x: 1.4); // 0.23552141805184526 + double lpdf = distribution.LogProbabilityDensityFunction(x: 1.4); // -1.4459534225195116 + + double ccdf = distribution.ComplementaryDistributionFunction(x: 1.4); // 0.84044259338855276 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 1.4000000000123853 + + double hf = distribution.HazardFunction(x: 1.4); // 0.28023498559521387 + double chf = distribution.CumulativeHazardFunction(x: 1.4); // 0.17382662901507062 + + string str = distribution.ToString(CultureInfo.InvariantCulture); // T(x; df = 4, μ = 2.42) + + + + + + + + + + Initializes a new instance of the class. + + + The degrees of freedom v. + The noncentrality parameter μ (mu). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Computes the cumulative probability at t of the + non-central T-distribution with DF degrees of freedom + and non-centrality parameter. + + + + This function is based on the original work done by + Russell Lent hand John Burkardt, shared under the + LGPL license. Original FORTRAN code can be found at: + http://people.sc.fsu.edu/~jburkardt/f77_src/asa243/asa243.html + + + + + + Gets the degrees of freedom (v) for the distribution. + + + + + + Gets the noncentrality parameter μ (mu) for the distribution. + + + + + + Gets the mean for this distribution. + + + + The noncentral t-distribution's mean is defined in terms of + the Gamma function Γ(x) as + μ * sqrt(v/2) * Γ((v - 1) / 2) / Γ(v / 2) for v > 1. + + + + + + Gets the variance for this distribution. + + + + The noncentral t-distribution's variance is defined in terms of + the Gamma function Γ(x) as + a - b * c² in which + a = v*(1+μ²) / (v-2), + b = (u² * v) / 2 and + c = Γ((v - 1) / 2) / Γ(v / 2) for v > 2. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Exponential distribution. + + + + + In probability theory and statistics, the exponential distribution (a.k.a. negative + exponential distribution) is a family of continuous probability distributions. It + describes the time between events in a Poisson process, i.e. a process in which events + occur continuously and independently at a constant average rate. It is the continuous + analogue of the geometric distribution. + + Note that the exponential distribution is not the same as the class of exponential + families of distributions, which is a large class of probability distributions that + includes the exponential distribution as one of its members, but also includes the + normal distribution, binomial distribution, gamma distribution, Poisson, and many + others. + + + References: + + + Wikipedia, The Free Encyclopedia. Exponential distribution. Available on: + http://en.wikipedia.org/wiki/Exponential_distribution + + + + + + The following example shows how to create and test the main characteristics + of an Exponential distribution given a lambda (λ) rate of 0.42: + + + // Create an Exponential distribution with λ = 0.42 + var exp = new ExponentialDistribution(rate: 0.42); + + // Common measures + double mean = exp.Mean; // 2.3809523809523809 + double median = exp.Median; // 1.6503504299046317 + double var = exp.Variance; // 5.6689342403628125 + + // Cumulative distribution functions + double cdf = exp.DistributionFunction(x: 0.27); // 0.10720652870550407 + double ccdf = exp.ComplementaryDistributionFunction(x: 0.27); // 0.89279347129449593 + double icdf = exp.InverseDistributionFunction(p: cdf); // 0.27 + + // Probability density functions + double pdf = exp.ProbabilityDensityFunction(x: 0.27); // 0.3749732579436883 + double lpdf = exp.LogProbabilityDensityFunction(x: 0.27); // -0.98090056770472311 + + // Hazard (failure rate) functions + double hf = exp.HazardFunction(x: 0.27); // 0.42 + double chf = exp.CumulativeHazardFunction(x: 0.27); // 0.1134 + + // String representation + string str = exp.ToString(CultureInfo.InvariantCulture); // Exp(x; λ = 0.42) + + + + The following example shows how to generate random samples drawn + from an Exponential distribution and later how to re-estimate a + distribution from the generated samples. + + + // Create an Exponential distribution with λ = 2.5 + var exp = new ExponentialDistribution(rate: 2.5); + + // Generate a million samples from this distribution: + double[] samples = target.Generate(1000000); + + // Create a default exponential distribution + var newExp = new ExponentialDistribution(); + + // Fit the samples + newExp.Fit(samples); + + // Check the estimated parameters + double rate = newExp.Rate; // 2.5 + + + + + + + Creates a new Exponential distribution with the given rate. + + + + + + Creates a new Exponential distribution with the given rate. + + + The rate parameter lambda (λ). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Exponential CDF is defined as CDF(x) = 1 - exp(-λ*x). + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + The Exponential PDF is defined as PDF(x) = λ * exp(-λ*x). + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + The Exponential ICDF is defined as ICDF(p) = -ln(1-p)/λ. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + Please see . + + + + + + Estimates a new Exponential distribution from a given set of observations. + + + + + + Estimates a new Exponential distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Exponential distribution with the given parameters. + + + The rate parameter lambda. + The number of samples to generate. + + An array of double values sampled from the specified Exponential distribution. + + + + + Generates a random observation from the + Exponential distribution with the given parameters. + + + The rate parameter lambda. + + A random double value sampled from the specified Exponential distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's rate parameter lambda (λ). + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the Exponential distribution, the mean is defined as 1/λ. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + In the Exponential distribution, the variance is defined as 1/(λ²) + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + In the Exponential distribution, the median is defined as ln(2) / λ. + + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + In the Exponential distribution, the median is defined as 0. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + In the Exponential distribution, the median is defined as 1 - ln(λ). + + + + + + Gamma distribution. + + + + + The gamma distribution is a two-parameter family of continuous probability + distributions. There are three different parameterizations in common use: + + + With a parameter k and a + parameter θ. + + With a shape parameter α = k and an inverse scale parameter + β = 1/θ, called a parameter. + + With a shape parameter k and a + parameter μ = k/β. + + + + In each of these three forms, both parameters are positive real numbers. The + parameterization with k and θ appears to be more common in econometrics and + certain other applied fields, where e.g. the gamma distribution is frequently + used to model waiting times. For instance, in life testing, the waiting time + until death is a random variable that is frequently modeled with a gamma + distribution. This is the default + construction method for this class. + + The parameterization with α and β is more common in Bayesian statistics, where + the gamma distribution is used as a conjugate prior distribution for various + types of inverse scale (aka rate) parameters, such as the λ of an exponential + distribution or a Poisson distribution – or for that matter, the β of the gamma + distribution itself. (The closely related inverse gamma distribution is used as + a conjugate prior for scale parameters, such as the variance of a normal distribution.) + In order to create a Gamma distribution using the Bayesian parameterization, you + can use . + + If k is an integer, then the distribution represents an Erlang distribution; i.e., + the sum of k independent exponentially distributed random variables, each of which + has a mean of θ (which is equivalent to a rate parameter of 1/θ). + + The gamma distribution is the maximum entropy probability distribution for a random + variable X for which E[X] = kθ = α/β is fixed and greater than zero, and E[ln(X)] = + ψ(k) + ln(θ) = ψ(α) − ln(β) is fixed (ψ is the digamma function). + + + References: + + + Wikipedia, The Free Encyclopedia. Gamma distribution. Available on: + http://en.wikipedia.org/wiki/Gamma_distribution + + + + + + The following example shows how to create, test and compute the main + functions of a Gamma distribution given parameters θ = 4 and k = 2: + + + // Create a Γ-distribution with k = 2 and θ = 4 + var gamma = new GammaDistribution(theta: 4, k: 2); + + // Common measures + double mean = gamma.Mean; // 8.0 + double median = gamma.Median; // 6.7133878418421506 + double var = gamma.Variance; // 32.0 + + // Cumulative distribution functions + double cdf = gamma.DistributionFunction(x: 0.27); // 0.002178158242390601 + double ccdf = gamma.ComplementaryDistributionFunction(x: 0.27); // 0.99782184175760935 + double icdf = gamma.InverseDistributionFunction(p: cdf); // 0.26999998689819171 + + // Probability density functions + double pdf = gamma.ProbabilityDensityFunction(x: 0.27); // 0.015773530285395465 + double lpdf = gamma.LogProbabilityDensityFunction(x: 0.27); // -4.1494220422235433 + + // Hazard (failure rate) functions + double hf = gamma.HazardFunction(x: 0.27); // 0.015807962529274005 + double chf = gamma.CumulativeHazardFunction(x: 0.27); // 0.0021805338793574793 + + // String representation + string str = gamma.ToString(CultureInfo.InvariantCulture); // "Γ(x; k = 2, θ = 4)" + + + + + + + + + + Constructs a Gamma distribution. + + + + + + Constructs a Gamma distribution. + + + The scale parameter θ (theta). Default is 1. + The shape parameter k. Default is 1. + + + + + Constructs a Gamma distribution using α and β parameterization. + + + The shape parameter α = k. + The inverse scale parameter β = 1/θ. + + A Gamma distribution constructed with the given parameterization. + + + + + Constructs a Gamma distribution using k and μ parameterization. + + + The shape parameter α = k. + The mean parameter μ = k/β. + + A Gamma distribution constructed with the given parameterization. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The Gamma's CDF is computed in terms of the + Lower Incomplete Regularized Gamma Function P as CDF(x) = P(shape, + x / scale). + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Gamma distribution from a given set of observations. + + + + + + Estimates a new Gamma distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Gamma distribution with the given parameters. + + + The scale parameter theta. + The shape parameter k. + The number of samples to generate. + + An array of double values sampled from the specified Gamma distribution. + + + + + Generates a random observation from the + Gamma distribution with the given parameters. + + + The scale parameter theta. + The shape parameter k. + + A random double value sampled from the specified Gamma distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the distribution's scale + parameter θ (theta). + + + + + + Gets the distribution's + shape parameter k. + + + + + + Gets the inverse scale parameter β = 1/θ. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the Gamma distribution, the mean is computed as k*θ. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + In the Gamma distribution, the variance is computed as k*θ². + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the standard Gamma distribution, + with scale θ = 1 and location k = 1. + + + + + + Kolmogorov-Smirnov distribution. + + + + + This class is based on the excellent paper and original Java code by Simard and + L'Ecuyer (2010). Includes additional modifications for increased performance and + readability, shared under the LGPL under permission of original authors. + + + L'Ecuyer and Simard partitioned the problem of evaluating the CDF using multiple + approximation and asymptotic methods in order to achieve a best compromise between + speed and precision. The distribution function of this class follows the same + partitioning scheme as described by L'Ecuyer and Simard, which is described in the + table below. + + + For n <= 140 and: + 1/n > x >= 1-1/nUses the Ruben-Gambino formula. + 1/n < nx² < 0.754693Uses the Durbin matrix algorithm. + 0.754693 <= nx² < 4Uses the Pomeranz algorithm. + 4 <= nx² < 18Uses the complementary distribution function. + nx² >= 18Returns the constant 1. + + + For 140 < n <= 10^5 + nx² >= 18Returns the constant 1. + nx^(3/2) < 1.4Durbin matrix algorithm. + nx^(3/2) > 1.4Pelz-Good asymptotic series. + + + For n > 10^5 + nx² >= 18Returns the constant 1. + nx² < 18Pelz-Good asymptotic series. + + + References: + + + R. Simard and P. L'Ecuyer. (2011). "Computing the Two-Sided Kolmogorov-Smirnov + Distribution", Journal of Statistical Software, Vol. 39, Issue 11, Mar 2011. + Available on: http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf + + Marsaglia, G., Tsang, W. W., Wang, J. (2003) "Evaluating Kolmogorov's + Distribution", Journal of Statistical Software, 8 (18), 1–4. jstor. + Available on: http://www.jstatsoft.org/v08/i18/paper + + Durbin, J. (1972). Distribution Theory for Tests Based on The Sample + Distribution Function, Society for Industrial & Applied Mathematics, + Philadelphia. + + + + + + The following example shows how to build a Kolmogorov-Smirnov distribution + for 42 samples and compute its main functions and characteristics: + + + // Create a Kolmogorov-Smirnov distribution with n = 42 + var ks = new KolmogorovSmirnovDistribution(samples: 42); + + // Common measures + double mean = ks.Mean; // 0.13404812830261556 + double median = ks.Median; // 0.12393613519421857 + double var = ks.Variance; // 0.019154717445778062 + + // Cumulative distribution functions + double cdf = ks.DistributionFunction(x: 0.27); // 0.99659863602996079 + double ccdf = ks.ComplementaryDistributionFunction(x: 0.27); // 0.0034013639700392062 + double icdf = ks.InverseDistributionFunction(p: cdf); // 0.26999997446092017 + + // Hazard (failure rate) functions + double chf = ks.CumulativeHazardFunction(x: 0.27); // 5.6835787601476619 + + // String representation + string str = ks.ToString(); // "KS(x; n = 42)" + + + + + + + + + Creates a new Kolmogorov-Smirnov distribution. + + + The number of samples. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + See . + + + + + + Computes the Upper Tail of the P[Dn >= x] distribution. + + + + This function approximates the upper tail of the P[Dn >= x] + distribution using the one-sided Kolmogorov-Smirnov statistic. + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Computes the Cumulative Distribution Function (CDF) + for the Kolmogorov-Smirnov statistic's distribution. + + + The sample size. + The Kolmogorov-Smirnov statistic. + Returns the cumulative probability of the statistic + under a sample size . + + + + This function computes the cumulative probability P[Dn <= x] of + the Kolmogorov-Smirnov distribution using multiple methods as + suggested by Richard Simard (2010). + + + Simard partitioned the problem of evaluating the CDF using multiple + approximation and asymptotic methods in order to achieve a best compromise + between speed and precision. This function follows the same partitioning as + Simard, which is described in the table below. + + + For n <= 140 and: + 1/n > x >= 1-1/nUses the Ruben-Gambino formula. + 1/n < nx² < 0.754693Uses the Durbin matrix algorithm. + 0.754693 <= nx² < 4Uses the Pomeranz algorithm. + 4 <= nx² < 18Uses the complementary distribution function. + nx² >= 18Returns the constant 1. + + + For 140 < n <= 10^5 + nx² >= 18Returns the constant 1. + nx^(3/2) < 1.4Durbin matrix algorithm. + nx^(3/2) > 1.4Pelz-Good asymptotic series. + + + For n > 10^5 + nx² >= 18Returns the constant 1. + nx² < 18Pelz-Good asymptotic series. + + + + + + + Computes the Complementary Cumulative Distribution Function (1-CDF) + for the Kolmogorov-Smirnov statistic's distribution. + + + The sample size. + The Kolmogorov-Smirnov statistic. + Returns the complementary cumulative probability of the statistic + under a sample size . + + + + + Pelz-Good algorithm for computing lower-tail areas + of the Kolmogorov-Smirnov distribution. + + + + + As stated in Simard's paper, Pelz and Good (1976) generalized Kolmogorov's + approximation to an asymptotic series in 1/sqrt(n). + + References: Wolfgang Pelz and I. J. Good, "Approximating the Lower Tail-Areas of + the Kolmogorov-Smirnov One-Sample Statistic", Journal of the Royal + Statistical Society, Series B. Vol. 38, No. 2 (1976), pp. 152-156 + + + + + + Computes the Upper Tail of the P[Dn >= x] distribution. + + + + This function approximates the upper tail of the P[Dn >= x] + distribution using the one-sided Kolmogorov-Smirnov statistic. + + + + + + Pomeranz algorithm. + + + + + + Durbin's algorithm for computing P[Dn < d] + + + + + The method presented by Marsaglia (2003), as stated in the paper, is based + on a succession of developments starting with Kolmogorov and culminating in + a masterful treatment by Durbin (1972). Durbin's monograph summarized and + extended many previous works published in the years 1933-73. + + This function implements the small C procedure provided by Marsaglia on his + paper with corrections made by Simard (2010). Further optimizations also + have been performed. + + References: + - Marsaglia, G., Tsang, W. W., Wang, J. (2003) "Evaluating Kolmogorov's + Distribution", Journal of Statistical Software, 8 (18), 1–4. jstor. + Available on: http://www.jstatsoft.org/v08/i18/paper + - Durbin, J. (1972) Distribution Theory for Tests Based on The Sample + Distribution Function, Society for Industrial & Applied Mathematics, + Philadelphia. + + + + + + Computes matrix power. Used in the Durbin algorithm. + + + + + + Initializes the Pomeranz algorithm. + + + + + + Creates matrix A of the Pomeranz algorithm. + + + + + + Computes matrix H of the Pomeranz algorithm. + + + + + + Gets the number of samples distribution parameter. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The mean of the K-S distribution for n samples + is computed as Mean = sqrt(π/2) * ln(2) / sqrt(n). + + + + See . + + + + + + Not supported. + + + + + + Gets the variance for this distribution. + + + + The variance of the K-S distribution for n samples + is computed as Var = (π² / 12 - mean²) / n, in which + mean is the K-S distribution . + + + + See . + + + + + + Gets the entropy for this distribution. + + + + + + Bernoulli probability distribution. + + + + + The Bernoulli distribution is a distribution for a single + binary variable x E {0,1}, representing, for example, the + flipping of a coin. It is governed by a single continuous + parameter representing the probability of an observation + to be equal to 1. + + + References: + + + Wikipedia, The Free Encyclopedia. Bernoulli distribution. Available on: + http://en.wikipedia.org/wiki/Bernoulli_distribution + + C. Bishop. “Pattern Recognition and Machine Learning”. Springer. 2006. + + + + + + // Create a distribution with probability 0.42 + var bern = new BernoulliDistribution(mean: 0.42); + + // Common measures + double mean = bern.Mean; // 0.42 + double median = bern.Median; // 0.0 + double var = bern.Variance; // 0.2436 + double mode = bern.Mode; // 0.0 + + // Probability mass functions + double pdf = bern.ProbabilityMassFunction(k: 1); // 0.42 + double lpdf = bern.LogProbabilityMassFunction(k: 0); // -0.54472717544167193 + + // Cumulative distribution functions + double cdf = bern.DistributionFunction(k: 0); // 0.58 + double ccdf = bern.ComplementaryDistributionFunction(k: 0); // 0.42 + + // Quantile functions + int icdf0 = bern.InverseDistributionFunction(p: 0.57); // 0 + int icdf1 = bern.InverseDistributionFunction(p: 0.59); // 1 + + // Hazard / failure rate functions + double hf = bern.HazardFunction(x: 0); // 1.3809523809523814 + double chf = bern.CumulativeHazardFunction(x: 0); // 0.86750056770472328 + + // String representation + string str = bern.ToString(CultureInfo.InvariantCulture); // "Bernoulli(x; p = 0.42, q = 0.58)" + + + + + + + + + Creates a new Bernoulli distribution. + + + + + + Creates a new Bernoulli distribution. + + + The probability of an observation being equal to 1. Default is 0.5 + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets P(X > k) the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point k. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of k + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Binomial probability distribution. + + + + + The binomial distribution is the discrete probability distribution of the number of + successes in a sequence of >n independent yes/no experiments, each of which + yields success with probability p. Such a success/failure experiment is also + called a Bernoulli experiment or Bernoulli trial; when n = 1, the binomial + distribution is a Bernoulli distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Binomial distribution. Available on: + http://en.wikipedia.org/wiki/Binomial_distribution + + C. Bishop. “Pattern Recognition and Machine Learning”. Springer. 2006. + + + + + + // Creates a distribution with n = 16 and success probability 0.12 + var bin = new BinomialDistribution(trials: 16, probability: 0.12); + + // Common measures + double mean = bin.Mean; // 1.92 + double median = bin.Median; // 2 + double var = bin.Variance; // 1.6896 + double mode = bin.Mode; // 2 + + // Probability mass functions + double pdf = bin.ProbabilityMassFunction(k: 1); // 0.28218979948821621 + double lpdf = bin.LogProbabilityMassFunction(k: 0); // -2.0453339441581582 + + // Cumulative distribution functions + double cdf = bin.DistributionFunction(k: 0); // 0.12933699143209909 + double ccdf = bin.ComplementaryDistributionFunction(k: 0); // 0.87066300856790091 + + // Quantile functions + int icdf0 = bin.InverseDistributionFunction(p: 0.37); // 1 + int icdf1 = bin.InverseDistributionFunction(p: 0.50); // 2 + int icdf2 = bin.InverseDistributionFunction(p: 0.99); // 5 + int icdf3 = bin.InverseDistributionFunction(p: 0.999); // 7 + + // Hazard (failure rate) functions + double hf = bin.HazardFunction(x: 0); // 1.3809523809523814 + double chf = bin.CumulativeHazardFunction(x: 0); // 0.86750056770472328 + + // String representation + string str = bin.ToString(CultureInfo.InvariantCulture); // "Binomial(x; n = 16, p = 0.12)" + + + + + + + + + Constructs a new binomial distribution. + + + + + + Constructs a new binomial distribution. + + + The number of trials n. + + + + + Constructs a new binomial distribution. + + + The number of trials n. + The success probability p in each trial. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of trials n for the distribution. + + + + + + Gets the success probability p for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Chi-Square (χ²) probability distribution + + + + + In probability theory and statistics, the chi-square distribution (also chi-squared + or χ²-distribution) with k degrees of freedom is the distribution of a sum of the + squares of k independent standard normal random variables. It is one of the most + widely used probability distributions in inferential statistics, e.g. in hypothesis + testing, or in construction of confidence intervals. + + + References: + + + Wikipedia, The Free Encyclopedia. Chi-square distribution. Available on: + http://en.wikipedia.org/wiki/Chi-square_distribution + + + + + + The following example demonstrates how to create a new χ² + distribution with the given degrees of freedom. + + + // Create a new χ² distribution with 7 d.f. + var chisq = new ChiSquareDistribution(degreesOfFreedom: 7); + + // Common measures + double mean = chisq.Mean; // 7 + double median = chisq.Median; // 6.345811195595612 + double var = chisq.Variance; // 14 + + // Cumulative distribution functions + double cdf = chisq.DistributionFunction(x: 6.27); // 0.49139966433823956 + double ccdf = chisq.ComplementaryDistributionFunction(x: 6.27); // 0.50860033566176044 + double icdf = chisq.InverseDistributionFunction(p: cdf); // 6.2700000000852318 + + // Probability density functions + double pdf = chisq.ProbabilityDensityFunction(x: 6.27); // 0.11388708001184455 + double lpdf = chisq.LogProbabilityDensityFunction(x: 6.27); // -2.1725478476948092 + + // Hazard (failure rate) functions + double hf = chisq.HazardFunction(x: 6.27); // 0.22392254197721179 + double chf = chisq.CumulativeHazardFunction(x: 6.27); // 0.67609276602233315 + + // String representation + string str = chisq.ToString(); // "χ²(x; df = 7) + + + + + + + Constructs a new Chi-Square distribution + with given degrees of freedom. + + + + + + Constructs a new Chi-Square distribution + with given degrees of freedom. + + + The degrees of freedom for the distribution. Default is 1. + + + + + Gets the probability density function (pdf) for + the χ² distribution evaluated at point x. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + References: + + + + Wikipedia, the free encyclopedia. Chi-square distribution. + + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the cumulative distribution function (cdf) for + the χ² distribution evaluated at point x. + + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The χ² distribution function is defined in terms of the + Incomplete Gamma Function Γ(a, x) as CDF(x; df) = Γ(df/2, x/d). + + + + + + Gets the complementary cumulative distribution function + (ccdf) for the χ² distribution evaluated at point x. + This function is also known as the Survival function. + + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + The χ² complementary distribution function is defined in terms of the + Complemented Incomplete Gamma + Function Γc(a, x) as CDF(x; df) = Γc(df/2, x/d). + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + This method is not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Chi-Square distribution with the given parameters. + + + An array of double values sampled from the specified Chi-Square distribution. + + + + + Generates a random observation from the + Chi-Square distribution with the given parameters. + + + The degrees of freedom for the distribution. + + A random double value sampled from the specified Chi-Square distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + The degrees of freedom of the Chi-Square distribution. + + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the Degrees of Freedom for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mean for this distribution. + + + + The χ² distribution mean is the number of degrees of freedom. + + + + + + Gets the variance for this distribution. + + + + The χ² distribution variance is twice its degrees of freedom. + + + + + + Gets the mode for this distribution. + + + + The χ² distribution mode is max(degrees of freedom - 2, 0). + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + + + + Joint distribution of multiple discrete univariate distributions. + + + + + This class builds a (potentially huge) lookup table for discrete + symbol distributions. For example, given a discrete variable A + which may take symbols a, b, c; and a discrete variable B which + may assume values x, y, z, this class will build the probability + table: + + + x y z + a p(a,x) p(a,y) p(a,z) + b p(b,x) p(b,y) p(b,z) + c p(c,x) p(c,y) p(c,z) + + + + Thus comprising the probabilities for all possible simple combination. This + distribution is a generalization of the + + for multivariate discrete observations. + + + + + + The following example should demonstrate how to estimate a joint + distribution of two discrete variables. The first variable can + take up to three distinct values, whereas the second can assume + up to five. + + + // Lets create a joint distribution for two discrete variables: + // the first of which can assume 3 distinct symbol values: 0, 1, 2 + // the second which can assume 5 distinct symbol values: 0, 1, 2, 3, 4 + + int[] symbols = { 3, 5 }; // specify the symbol counts + + // Create the joint distribution for the above variables + JointDistribution joint = new JointDistribution(symbols); + + // Now, suppose we would like to fit the distribution (estimate + // its parameters) from the following multivariate observations: + // + double[][] observations = + { + new double[] { 0, 0 }, + new double[] { 1, 1 }, + new double[] { 2, 1 }, + new double[] { 0, 0 }, + }; + + + // Estimate parameters + joint.Fit(observations); + + // At this point, we can query the distribution for observations: + double p1 = joint.ProbabilityMassFunction(new[] { 0, 0 }); // should be 0.50 + double p2 = joint.ProbabilityMassFunction(new[] { 1, 1 }); // should be 0.25 + double p3 = joint.ProbabilityMassFunction(new[] { 2, 1 }); // should be 0.25 + + // As it can be seem, indeed {0,0} appeared twice at the data, + // and {1,1} and {2,1 appeared one fourth of the data each. + + + + + + + + + + Constructs a new joint discrete distribution. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + A single point in the distribution range. + + The logarithm of the probability of x + occurring in the current distribution. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the frequency of observation of each discrete variable. + + + + + + Gets the number of symbols for each discrete variable. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the mean values for this distribution. + + + + + + Gets the mean for this distribution. + + + + An array of double-precision values containing + the variance values for this distribution. + + + + + + Gets the variance for this distribution. + + + + An multidimensional array of double-precision values + containing the covariance values for this distribution. + + + + + + Wilcoxon's W statistic distribution. + + + + + This is the distribution for the positive side statistic W+ of the Wilcoxon + test. Some textbooks (and statistical packages) use alternate definitions for + W, which should be compared with the appropriate statistic tables or alternate + distributions. + + The Wilcoxon signed-rank test is a non-parametric statistical hypothesis test + used when comparing two related samples, matched samples, or repeated measurements + on a single sample to assess whether their population mean ranks differ (i.e. it + is a paired difference test). It can be used as an alternative to the paired + Student's t-test, t-test for matched pairs, or the t-test for dependent samples + when the population cannot be assumed to be normally distributed. + + + References: + + + Wikipedia, The Free Encyclopedia. Wilcoxon signed-rank test. Available on: + http://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test + + + + + + // Compute some rank statistics (see other examples below) + double[] ranks = { 1, 2, 3, 4, 5.5, 5.5, 7, 8, 9, 10, 11, 12 }; + + // Create a new Wilcoxon's W distribution + WilcoxonDistribution W = new WilcoxonDistribution(ranks); + + // Common measures + double mean = W.Mean; // 39.0 + double median = W.Median; // 38.5 + double var = W.Variance; // 162.5 + + // Probability density functions + double pdf = W.ProbabilityDensityFunction(w: 42); // 0.38418508862319295 + double lpdf = W.LogProbabilityDensityFunction(w: 42); // 0.38418508862319295 + + // Cumulative distribution functions + double cdf = W.DistributionFunction(w: 42); // 0.60817384423279575 + double ccdf = W.ComplementaryDistributionFunction(x: 42); // 0.39182615576720425 + + // Quantile function + double icdf = W.InverseDistributionFunction(p: cdf); // 42 + + // Hazard (failure rate) functions + double hf = W.HazardFunction(x: 42); // 0.98049883339449373 + double chf = W.CumulativeHazardFunction(x: 42); // 0.936937017743799 + + // String representation + string str = W.ToString(); // "W+(x; R)" + + + + The following example shows how to compute the W+ statistic + given a sample. The W+ statistics is given as the sum of all + positive signed ranks + in a sample. + + + // Suppose we have computed a vector of differences between + // samples and an hypothesized value (as in Wilcoxon's test). + + double[] differences = ... // differences between samples and an hypothesized median + + // Compute the ranks of the absolute differences and their sign + double[] ranks = Accord.Statistics.Tools.Rank(differences.Abs()); + int[] signs = Accord.Math.Matrix.Sign(differences).ToInt32(); + + // Compute the W+ statistics from the signed ranks + double W = WilcoxonDistribution.WPositive(Signs, ranks); + + + + + + + + + + Creates a new Wilcoxon's W+ distribution. + + + The rank statistics for the samples. + + + + + Creates a new Wilcoxon's W+ distribution. + + + The rank statistics for the samples. + True to compute the exact test. May requires + a significant amount of processing power for large samples (n > 12). + + + + + Computes the Wilcoxon's W+ statistic. + + + + The W+ statistic is computed as the + sum of all positive signed ranks. + + + + + + Computes the Wilcoxon's W- statistic. + + + + The W- statistic is computed as the + sum of all negative signed ranks. + + + + + + Computes the Wilcoxon's W statistic. + + + + The W statistic is computed as the + minimum of the W+ and W- statistics. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point w. + + + A single point in the distribution range. + + + The probability of w occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point w. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the number of effective samples. + + + + + + Gets the rank statistics for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. In the current + implementation, returns the same as the . + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Degenerate distribution. + + + + + In mathematics, a degenerate distribution or deterministic distribution is + the probability distribution of a random variable which only takes a single + value. Examples include a two-headed coin and rolling a die whose sides all + show the same number. While this distribution does not appear random in the + everyday sense of the word, it does satisfy the definition of random variable. + + The degenerate distribution is localized at a point k0 on the real line. The + probability mass function is a Delta function at k0. + + + References: + + + Wikipedia, The Free Encyclopedia. Degenerate distribution. Available on: + http://en.wikipedia.org/wiki/Degenerate_distribution + + + + + + This example shows how to create a Degenerate distribution + and compute some of its properties. + + + var dist = new DegenerateDistribution(value: 2); + + double mean = dist.Mean; // 2 + double median = dist.Median; // 2 + double mode = dist.Mode; // 2 + double var = dist.Variance; // 1 + + double cdf1 = dist.DistributionFunction(k: 1); // 0 + double cdf2 = dist.DistributionFunction(k: 2); // 1 + + double pdf1 = dist.ProbabilityMassFunction(k: 1); // 0 + double pdf2 = dist.ProbabilityMassFunction(k: 2); // 1 + double pdf3 = dist.ProbabilityMassFunction(k: 3); // 0 + + double lpdf = dist.LogProbabilityMassFunction(k: 2); // 0 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.0 + + int icdf1 = dist.InverseDistributionFunction(p: 0.0); // 1 + int icdf2 = dist.InverseDistributionFunction(p: 0.5); // 3 + int icdf3 = dist.InverseDistributionFunction(p: 1.0); // 2 + + double hf = dist.HazardFunction(x: 0); // 0.0 + double chf = dist.CumulativeHazardFunction(x: 0); // 0.0 + + string str = dist.ToString(CultureInfo.InvariantCulture); // Degenerate(x; k0 = 2) + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The only value whose probability is different from zero. Default is zero. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + The does not support fitting. + + + + + + Gets the unique value whose probability is different from zero. + + + + + + Gets the mean for this distribution. + + + + In the Degenerate distribution, the mean is equal to the + unique value within its domain. + + + + The distribution's mean value, which should equal . + + + + + + Gets the median for this distribution, which should equal . + + + + In the Degenerate distribution, the mean is equal to the + unique value within its domain. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution, which should equal 0. + + + + In the Degenerate distribution, the variance equals 0. + + + + The distribution's variance. + + + + + + Gets the mode for this distribution, which should equal . + + + + In the Degenerate distribution, the mean is equal to the + unique value within its domain. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution, which is zero. + + + + The distribution's entropy. + + + + + + Gets the support interval for this distribution. + + + + The degenerate distribution's support is given only on the + point interval (, ). + + + + A containing + the support interval for this distribution. + + + + + + Negative Binomial distribution. + + + + + The negative binomial distribution is a discrete probability distribution of the number + of successes in a sequence of Bernoulli trials before a specified (non-random) number of + failures (denoted r) occur. For example, if one throws a die repeatedly until the third + time “1” appears, then the probability distribution of the number of non-“1”s that had + appeared will be negative binomial. + + + References: + + + Wikipedia, The Free Encyclopedia. Negative Binomial distribution. + Available from: http://en.wikipedia.org/wiki/Negative_binomial_distribution + + + + + + // Create a new Negative Binomial distribution with r = 7 and p = 0.42 + var dist = new NegativeBinomialDistribution(failures: 7, probability: 0.42); + + // Common measures + double mean = dist.Mean; // 5.068965517241379 + double median = dist.Median; // 5.0 + double var = dist.Variance; // 8.7395957193816862 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.19605133020527743 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.80394866979472257 + + // Probability mass functions + double pmf1 = dist.ProbabilityMassFunction(k: 4); // 0.054786846293416853 + double pmf2 = dist.ProbabilityMassFunction(k: 5); // 0.069908015870399909 + double pmf3 = dist.ProbabilityMassFunction(k: 6); // 0.0810932984096639 + double lpmf = dist.LogProbabilityMassFunction(k: 2); // -2.3927801721315989 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 2 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 4 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 8 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 0.10490438293398294 + double chf = dist.CumulativeHazardFunction(x: 4); // 0.64959916255036043 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "NegativeBinomial(x; r = 7, p = 0.42)" + + + + + + + + + Creates a new Negative Binomial distribution. + + + Number of failures r. + Success probability in each experiment. + + + + + Gets P( X<= k), the cumulative distribution function + (cdf) for this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Pareto's Distribution. + + + + + The Pareto distribution, named after the Italian economist Vilfredo Pareto, is a power law + probability distribution that coincides with social, scientific, geophysical, actuarial, + and many other types of observable phenomena. Outside the field of economics it is sometimes + referred to as the Bradford distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Pareto distribution. + Available from: http://en.wikipedia.org/wiki/Pareto_distribution + + + + + + // Creates a new Pareto's distribution with xm = 0.42, α = 3 + var pareto = new ParetoDistribution(scale: 0.42, shape: 3); + + // Common measures + double mean = pareto.Mean; // 0.63 + double median = pareto.Median; // 0.52916684095584676 + double var = pareto.Variance; // 0.13229999999999997 + + // Cumulative distribution functions + double cdf = pareto.DistributionFunction(x: 1.4); // 0.973 + double ccdf = pareto.ComplementaryDistributionFunction(x: 1.4); // 0.027000000000000024 + double icdf = pareto.InverseDistributionFunction(p: cdf); // 1.4000000446580794 + + // Probability density functions + double pdf = pareto.ProbabilityDensityFunction(x: 1.4); // 0.057857142857142857 + double lpdf = pareto.LogProbabilityDensityFunction(x: 1.4); // -2.8497783609309111 + + // Hazard (failure rate) functions + double hf = pareto.HazardFunction(x: 1.4); // 2.142857142857141 + double chf = pareto.CumulativeHazardFunction(x: 1.4); // 3.6119184129778072 + + // String representation + string str = pareto.ToString(CultureInfo.InvariantCulture); // Pareto(x; xm = 0.42, α = 3) + + + + + + + Creates new Pareto distribution. + + + + + + Creates new Pareto distribution. + + + The scale parameter xm. Default is 1. + The shape parameter α (alpha). Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + + The weight vector containing the weight for each of the samples. + + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the scale parameter xm for this distribution. + + + + + + Gets the shape parameter α (alpha) for this distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The Pareto distribution's mean is defined as + α * xm / (α - 1). + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The Pareto distribution's mean is defined as + α * xm² / ((α - 1)² * (α - 2). + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + The Pareto distribution's Entropy is defined as + ln(xm / α) + 1 / α + 1. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the mode for this distribution. + + + The distribution's mode value. + + + The Pareto distribution's Entropy is defined as xm. + + + + + + Gets the median for this distribution. + + + The distribution's median value. + + + The Pareto distribution's median is defined + as xm * 2^(1 / α). + + + + + + Discrete uniform distribution. + + + + + In probability theory and statistics, the discrete uniform distribution is a + symmetric probability distribution whereby a finite number of values are equally + likely to be observed; every one of n values has equal probability 1/n. Another + way of saying "discrete uniform distribution" would be "a known, finite number of + outcomes equally likely to happen". + + + A simple example of the discrete uniform distribution is throwing a fair die. + The possible values are 1, 2, 3, 4, 5, 6, and each time the die is thrown the + probability of a given score is 1/6. If two dice are thrown and their values + added, the resulting distribution is no longer uniform since not all sums have + equal probability. + + + The discrete uniform distribution itself is inherently non-parametric. It is + convenient, however, to represent its values generally by an integer interval + [a,b], so that a,b become the main parameters of the distribution (often one + simply considers the interval [1,n] with the single parameter n). + + + References: + + + Wikipedia, The Free Encyclopedia. Uniform distribution (discrete). Available on: + http://en.wikipedia.org/wiki/Uniform_distribution_(discrete) + + + + + + // Create an uniform (discrete) distribution in [2, 6] + var dist = new UniformDiscreteDistribution(a: 2, b: 6); + + // Common measures + double mean = dist.Mean; // 4.0 + double median = dist.Median; // 4.0 + double var = dist.Variance; // 1.3333333333333333 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.2 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.8 + + // Probability mass functions + double pmf1 = dist.ProbabilityMassFunction(k: 4); // 0.2 + double pmf2 = dist.ProbabilityMassFunction(k: 5); // 0.2 + double pmf3 = dist.ProbabilityMassFunction(k: 6); // 0.2 + double lpmf = dist.LogProbabilityMassFunction(k: 2); // -1.6094379124341003 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 2 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 4 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 6 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 0.5 + double chf = dist.CumulativeHazardFunction(x: 4); // 0.916290731874155 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "U(x; a = 2, b = 6)" + + + + + + + Creates a discrete uniform distribution defined in the interval [a;b]. + + + The starting (minimum) value a. + The ending (maximum) value b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + A single point in the distribution range. + + The logarithm of the probability of k + occurring in the current distribution. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Gets the minimum value of the distribution (a). + + + + + + Gets the maximum value of the distribution (b). + + + + + + Gets the length of the distribution (b - a + 1). + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + (Shifted) Geometric Distribution. + + + + + This class represents the shifted version of the Geometric distribution + with support on { 0, 1, 2, 3, ... }. This is the probability distribution + of the number Y = X − 1 of failures before the first success, supported + on the set { 0, 1, 2, 3, ... }. + + + References: + + + Wikipedia, The Free Encyclopedia. Geometric distribution. Available on: + http://en.wikipedia.org/wiki/Geometric_distribution + + + + + + // Create a Geometric distribution with 42% success probability + var dist = new GeometricDistribution(probabilityOfSuccess: 0.42); + + // Common measures + double mean = dist.Mean; // 1.3809523809523812 + double median = dist.Median; // 1.0 + double var = dist.Variance; // 3.2879818594104315 + double mode = dist.Mode; // 0.0 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.80488799999999994 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.19511200000000006 + + // Probability mass functions + double pdf1 = dist.ProbabilityMassFunction(k: 0); // 0.42 + double pdf2 = dist.ProbabilityMassFunction(k: 1); // 0.2436 + double pdf3 = dist.ProbabilityMassFunction(k: 2); // 0.141288 + double lpdf = dist.LogProbabilityMassFunction(k: 2); // -1.956954918588067 + + // Quantile functions + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 0 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 1 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 3 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 0); // 0.72413793103448265 + double chf = dist.CumulativeHazardFunction(x: 0); // 0.54472717544167193 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Geometric(x; p = 0.42)" + + + + + + + + + Creates a new (shifted) geometric distribution. + + + The success probability. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + + A sample which could original the given probability + value when applied in the . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the success probability for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Hypergeometric probability distribution. + + + + + The hypergeometric distribution is a discrete probability distribution that + describes the probability of k successes in n draws from a finite population + without replacement. This is in contrast to the + binomial distribution, which describes the probability of k successes + in n draws with replacement. + + + References: + + + Wikipedia, The Free Encyclopedia. Hypergeometric distribution. Available on: + http://en.wikipedia.org/wiki/Hypergeometric_distribution + + + + + + // Distribution parameters + int populationSize = 15; // population size N + int success = 7; // number of successes in the sample + int samples = 8; // number of samples drawn from N + + // Create a new Hypergeometric distribution with N = 15, n = 8, and s = 7 + var dist = new HypergeometricDistribution(populationSize, success, samples); + + // Common measures + double mean = dist.Mean; // 1.3809523809523812 + double median = dist.Median; // 4.0 + double var = dist.Variance; // 3.2879818594104315 + double mode = dist.Mode; // 4.0 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 0.80488799999999994 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.19511200000000006 + + // Probability mass functions + double pdf1 = dist.ProbabilityMassFunction(k: 4); // 0.38073038073038074 + double pdf2 = dist.ProbabilityMassFunction(k: 5); // 0.18275058275058276 + double pdf3 = dist.ProbabilityMassFunction(k: 6); // 0.030458430458430458 + double lpdf = dist.LogProbabilityMassFunction(k: 2); // -2.3927801721315989 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 3 + int icdf2 = dist.InverseDistributionFunction(p: 0.46); // 4 + int icdf3 = dist.InverseDistributionFunction(p: 0.87); // 5 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 1.7753623188405792 + double chf = dist.CumulativeHazardFunction(x: 4); // 1.5396683418789763 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "HyperGeometric(x; N = 15, m = 7, n = 8)" + + + + + + + + + + Constructs a new Hypergeometric distribution. + + + Size N of the population. + The number m of successes in the population. + The number n of samples drawn from the population. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of k occurring + in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the size N of the + population for this distribution. + + + + + + Gets the size n of the sample drawn + from N. + + + + + + Gets the count of success trials in the + population for this distribution. This + is often referred as m. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Inverse Gaussian (Normal) Distribution, also known as the Wald distribution. + + + + + The Inverse Gaussian distribution is a two-parameter family of continuous probability + distributions with support on (0,∞). As λ tends to infinity, the inverse Gaussian distribution + becomes more like a normal (Gaussian) distribution. The inverse Gaussian distribution has + several properties analogous to a Gaussian distribution. The name can be misleading: it is + an "inverse" only in that, while the Gaussian describes a Brownian Motion's level at a fixed + time, the inverse Gaussian describes the distribution of the time a Brownian Motion with positive + drift takes to reach a fixed positive level. + + References: + + + Wikipedia, The Free Encyclopedia. Inverse Gaussian distribution. Available on: + http://en.wikipedia.org/wiki/Inverse_Gaussian_distribution + + + + + + // Create a new inverse Gaussian distribution with μ = 0.42 and λ = 1.2 + var invGaussian = new InverseGaussianDistribution(mean: 0.42, shape: 1.2); + + // Common measures + double mean = invGaussian.Mean; // 0.42 + double median = invGaussian.Median; // 0.35856861093990083 + double var = invGaussian.Variance; // 0.061739999999999989 + + // Cumulative distribution functions + double cdf = invGaussian.DistributionFunction(x: 0.27); // 0.30658791274125458 + double ccdf = invGaussian.ComplementaryDistributionFunction(x: 0.27); // 0.69341208725874548 + double icdf = invGaussian.InverseDistributionFunction(p: cdf); // 0.26999999957543408 + + // Probability density functions + double pdf = invGaussian.ProbabilityDensityFunction(x: 0.27); // 2.3461495925760354 + double lpdf = invGaussian.LogProbabilityDensityFunction(x: 0.27); // 0.85277551314980737 + + // Hazard (failure rate) functions + double hf = invGaussian.HazardFunction(x: 0.27); // 3.383485283406336 + double chf = invGaussian.CumulativeHazardFunction(x: 0.27); // 0.36613081401302111 + + // String representation + string str = invGaussian.ToString(CultureInfo.InvariantCulture); // "N^-1(x; μ = 0.42, λ = 1.2)" + + + + + + + + + Constructs a new Inverse Gaussian distribution. + + + The mean parameter mu. + The shape parameter lambda. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random observation from the + Inverse Gaussian distribution with the given parameters. + + + The mean parameter mu. + The shape parameter lambda. + + A random double value sampled from the specified Uniform distribution. + + + + + Generates a random vector of observations from the + Inverse Gaussian distribution with the given parameters. + + + The mean parameter mu. + The shape parameter lambda. + The number of samples to generate. + + An array of double values sampled from the specified Uniform distribution. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the shape parameter (lambda) + for this distribution. + + + The distribution's lambda value. + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Nakagami distribution. + + + + + The Nakagami distribution has been used in the modeling of wireless + signal attenuation while traversing multiple paths. + + + References: + + + Wikipedia, The Free Encyclopedia. Nakagami distribution. Available on: + http://en.wikipedia.org/wiki/Nakagami_distribution + + Laurenson, Dave (1994). "Nakagami Distribution". Indoor Radio Channel Propagation + Modeling by Ray Tracing Techniques. + + R. Kolar, R. Jirik, J. Jan (2004) "Estimator Comparison of the Nakagami-m Parameter + and Its Application in Echocardiography", Radioengineering, 13 (1), 8–12 + + + + + + var nakagami = new NakagamiDistribution(shape: 2.4, spread: 4.2); + + double mean = nakagami.Mean; // 1.946082119049118 + double median = nakagami.Median; // 1.9061151110206338 + double var = nakagami.Variance; // 0.41276438591729486 + + double cdf = nakagami.DistributionFunction(x: 1.4); // 0.20603416752368109 + double pdf = nakagami.ProbabilityDensityFunction(x: 1.4); // 0.49253215371343023 + double lpdf = nakagami.LogProbabilityDensityFunction(x: 1.4); // -0.708195533773302 + + double ccdf = nakagami.ComplementaryDistributionFunction(x: 1.4); // 0.79396583247631891 + double icdf = nakagami.InverseDistributionFunction(p: cdf); // 1.400000000131993 + + double hf = nakagami.HazardFunction(x: 1.4); // 0.62034426869133652 + double chf = nakagami.CumulativeHazardFunction(x: 1.4); // 0.23071485080660473 + + string str = nakagami.ToString(CultureInfo.InvariantCulture); // Nakagami(x; μ = 2,4, ω = 4,2)" + + + + + + + Initializes a new instance of the class. + + + The shape parameter μ (mu). + The spread parameter ω (omega). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + The Nakagami's distribution CDF is defined in terms of the + Lower incomplete regularized + Gamma function P(a, x) as CDF(x) = P(μ, μ / ω) * x². + + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + Nakagami's PDF is defined as + PDF(x) = c * x^(2 * μ - 1) * exp(-(μ / ω) * x²) + in which c = 2 * μ ^ μ / (Γ(μ) * ω ^ μ)) + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + Nakagami's PDF is defined as + PDF(x) = c * x^(2 * μ - 1) * exp(-(μ / ω) * x²) + in which c = 2 * μ ^ μ / (Γ(μ) * ω ^ μ)) + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Nakagami distribution from a given set of observations. + + + + + + Estimates a new Nakagami distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Nakagami distribution with the given parameters. + + + The shape parameter μ. + The spread parameter ω. + The number of samples to generate. + + An array of double values sampled from the specified Nakagami distribution. + + + + + Generates a random observation from the + Nakagami distribution with the given parameters. + + + The shape parameter μ. + The spread parameter ω. + + A random double value sampled from the specified Nakagami distribution. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Gets the distribution's shape parameter μ (mu). + + + The shape parameter μ (mu). + + + + + Gets the distribution's spread parameter ω (omega). + + + The spread parameter ω (omega). + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + Nakagami's mean is defined in terms of the + Gamma function Γ(x) as (Γ(μ + 0.5) / Γ(μ)) * sqrt(ω / μ). + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + Nakagami's variance is defined in terms of the + Gamma function Γ(x) as ω * (1 - (1 / μ) * (Γ(μ + 0.5) / Γ(μ))². + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Rayleigh distribution. + + + + + In probability theory and statistics, the Rayleigh distribution is a continuous + probability distribution. A Rayleigh distribution is often observed when the overall + magnitude of a vector is related to its directional components. + + One example where the Rayleigh distribution naturally arises is when wind speed + is analyzed into its orthogonal 2-dimensional vector components. Assuming that the + magnitude of each component is uncorrelated and normally distributed with equal variance, + then the overall wind speed (vector magnitude) will be characterized by a Rayleigh + distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Rayleigh distribution. Available on: + http://en.wikipedia.org/wiki/Rayleigh_distribution + + + + + + // Create a new Rayleigh's distribution with σ = 0.42 + var rayleigh = new RayleighDistribution(sigma: 0.42); + + // Common measures + double mean = rayleigh.Mean; // 0.52639193767251 + double median = rayleigh.Median; // 0.49451220943852386 + double var = rayleigh.Variance; // 0.075711527953380237 + + // Cumulative distribution functions + double cdf = rayleigh.DistributionFunction(x: 1.4); // 0.99613407986052716 + double ccdf = rayleigh.ComplementaryDistributionFunction(x: 1.4); // 0.0038659201394728449 + double icdf = rayleigh.InverseDistributionFunction(p: cdf); // 1.4000000080222026 + + // Probability density functions + double pdf = rayleigh.ProbabilityDensityFunction(x: 1.4); // 0.030681905868831811 + double lpdf = rayleigh.LogProbabilityDensityFunction(x: 1.4); // -3.4840821835248961 + + // Hazard (failure rate) functions + double hf = rayleigh.HazardFunction(x: 1.4); // 7.9365079365078612 + double chf = rayleigh.CumulativeHazardFunction(x: 1.4); // 5.5555555555555456 + + // String representation + string str = rayleigh.ToString(CultureInfo.InvariantCulture); // Rayleigh(x; σ = 0.42) + + + + + + + Creates a new Rayleigh distribution. + + + The scale parameter σ (sigma). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Estimates a new Gamma distribution from a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Rayleigh distribution with the given parameters. + + + The Rayleigh distribution's sigma. + The number of samples to generate. + + An array of double values sampled from the specified Rayleigh distribution. + + + + + Generates a random observation from the + Rayleigh distribution with the given parameters. + + + The Rayleigh distribution's sigma. + + A random double value sampled from the specified Rayleigh distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + The Rayleight's mean value is defined + as mean = σ * sqrt(π / 2). + + + + + + Gets the Rayleight's scale parameter σ (sigma) + + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + The Rayleight's variance value is defined + as var = (4 - π) / 2 * σ². + + + + + + Gets the mode for this distribution. + + + + In the Rayleigh distribution, the mode equals σ (sigma). + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Student's t-distribution. + + + + + In probability and statistics, Student's t-distribution (or simply the + t-distribution) is a family of continuous probability distributions that + arises when estimating the mean of a normally distributed population in + situations where the sample size is small and population standard deviation + is unknown. It plays a role in a number of widely used statistical analyses, + including the Student's t-test for assessing the statistical significance of + the difference between two sample means, the construction of confidence intervals + for the difference between two population means, and in linear regression + analysis. The Student's t-distribution also arises in the Bayesian analysis of + data from a normal family. + + If we take k samples from a normal distribution with fixed unknown mean and + variance, and if we compute the sample mean and sample variance for these k + samples, then the t-distribution (for k) can be defined as the distribution + of the location of the true mean, relative to the sample mean and divided by + the sample standard deviation, after multiplying by the normalizing term + sqrt(n), where n is the sample size. In this way the t-distribution + can be used to estimate how likely it is that the true mean lies in any given + range. + + The t-distribution is symmetric and bell-shaped, like the normal distribution, + but has heavier tails, meaning that it is more prone to producing values that + fall far from its mean. This makes it useful for understanding the statistical + behavior of certain types of ratios of random quantities, in which variation in + the denominator is amplified and may produce outlying values when the denominator + of the ratio falls close to zero. The Student's t-distribution is a special case + of the generalized hyperbolic distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's t-distribution. Available on: + http://en.wikipedia.org/wiki/Student's_t-distribution + + + + + + // Create a new Student's T distribution with d.f = 4.2 + TDistribution t = new TDistribution(degreesOfFreedom: 4.2); + + // Common measures + double mean = t.Mean; // 0.0 + double median = t.Median; // 0.0 + double var = t.Variance; // 1.9090909090909089 + + // Cumulative distribution functions + double cdf = t.DistributionFunction(x: 1.4); // 0.88456136730659074 + double pdf = t.ProbabilityDensityFunction(x: 1.4); // 0.13894002185341031 + double lpdf = t.LogProbabilityDensityFunction(x: 1.4); // -1.9737129364307417 + + // Probability density functions + double ccdf = t.ComplementaryDistributionFunction(x: 1.4); // 0.11543863269340926 + double icdf = t.InverseDistributionFunction(p: cdf); // 1.4000000000000012 + + // Hazard (failure rate) functions + double hf = t.HazardFunction(x: 1.4); // 1.2035833984833988 + double chf = t.CumulativeHazardFunction(x: 1.4); // 2.1590162088918525 + + // String representation + string str = t.ToString(CultureInfo.InvariantCulture); // T(x; df = 4.2) + + + + + + + + + + Initializes a new instance of the class. + + + The degrees of freedom. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + See . + + + + + + Not supported. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + the left tail T-distribution evaluated at probability p. + + + + Based on the stdtril function from the Cephes Math Library + Release 2.8, adapted with permission of Stephen L. Moshier. + + + + + + Gets the degrees of freedom for the distribution. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + In the T Distribution, the mean is zero if the number of degrees + of freedom is higher than 1. Otherwise, it is undefined. + + + + + + Gets the mode for this distribution (always zero). + + + + The distribution's mode value (zero). + + + + + + Gets the variance for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Not supported. + + + + + + Continuous Uniform Distribution. + + + + + The continuous uniform distribution or rectangular distribution is a family of + symmetric probability distributions such that for each member of the family, all + intervals of the same length on the distribution's support are equally probable. + The support is defined by the two parameters, a and b, which are its minimum and + maximum values. The distribution is often abbreviated U(a,b). It is the maximum + entropy probability distribution for a random variate X under no constraint other + than that it is contained in the distribution's support. + + + References: + + + Wikipedia, The Free Encyclopedia. Uniform Distribution (continuous). Available on: + http://en.wikipedia.org/wiki/Uniform_distribution_(continuous) + + + + + + The following example demonstrates how to create an uniform + distribution defined over the interval [0.42, 1.1]. + + + // Create a new uniform continuous distribution from 0.42 to 1.1 + var uniform = new UniformContinuousDistribution(a: 0.42, b: 1.1); + + // Common measures + double mean = uniform.Mean; // 0.76 + double median = uniform.Median; // 0.76 + double var = uniform.Variance; // 0.03853333333333335 + + // Cumulative distribution functions + double cdf = uniform.DistributionFunction(x: 0.9); // 0.70588235294117641 + double ccdf = uniform.ComplementaryDistributionFunction(x: 0.9); // 0.29411764705882359 + double icdf = uniform.InverseDistributionFunction(p: cdf); // 0.9 + + // Probability density functions + double pdf = uniform.ProbabilityDensityFunction(x: 0.9); // 1.4705882352941173 + double lpdf = uniform.LogProbabilityDensityFunction(x: 0.9); // 0.38566248081198445 + + // Hazard (failure rate) functions + double hf = uniform.HazardFunction(x: 0.9); // 4.9999999999999973 + double chf = uniform.CumulativeHazardFunction(x: 0.9); // 1.2237754316221154 + + // String representation + string str = uniform.ToString(CultureInfo.InvariantCulture); // "U(x; a = 0.42, b = 1.1)" + + + + + + + Creates a new uniform distribution defined in the interval [0;1]. + + + + + + Creates a new uniform distribution defined in the interval [a;b]. + + + The starting number a. + The ending number b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Estimates a new uniform distribution from a given set of observations. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Uniform distribution with the given parameters. + + + The starting number a. + The ending number b. + The number of samples to generate. + + An array of double values sampled from the specified Uniform distribution. + + + + + Generates a random observation from the Uniform + distribution defined in the interval 0 and 1. + + + The number of samples to generate. + + An array of double values sampled from the specified Uniform distribution. + + + + + Generates a random observation from the Uniform + distribution defined in the interval 0 and 1. + + + A random double value sampled from the specified Uniform distribution. + + + + + Generates a random observation from the + Uniform distribution with the given parameters. + + + The starting number a. + The ending number b. + + A random double value sampled from the specified Uniform distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the minimum value of the distribution (a). + + + + + + Gets the maximum value of the distribution (b). + + + + + + Gets the length of the distribution (b-a). + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + The mode of the uniform distribution is any value contained + in the interval of the distribution. The framework return + the same value as the . + + + + The distribution's mode value. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Standard Uniform Distribution, + starting at zero and ending at one (a=0, b=1). + + + + + + Log-Normal (Galton) distribution. + + + + + The log-normal distribution is a probability distribution of a random + variable whose logarithm is normally distributed. + + + References: + + + Wikipedia, The Free Encyclopedia. Log-normal distribution. + Available on: http://en.wikipedia.org/wiki/Log-normal_distribution + + NIST/SEMATECH e-Handbook of Statistical Methods. Lognormal Distribution. + Available on: http://www.itl.nist.gov/div898/handbook/eda/section3/eda3669.htm + + Weisstein, Eric W. "Normal Distribution Function." From MathWorld--A Wolfram Web + Resource. http://mathworld.wolfram.com/NormalDistributionFunction.html + + + + + + // Create a new Log-normal distribution with μ = 2.79 and σ = 1.10 + var log = new LognormalDistribution(location: 0.42, shape: 1.1); + + // Common measures + double mean = log.Mean; // 2.7870954605658511 + double median = log.Median; // 1.5219615583481305 + double var = log.Variance; // 18.28163603621158 + + // Cumulative distribution functions + double cdf = log.DistributionFunction(x: 0.27); // 0.057961222885664958 + double ccdf = log.ComplementaryDistributionFunction(x: 0.27); // 0.942038777114335 + double icdf = log.InverseDistributionFunction(p: cdf); // 0.26999997937815973 + + // Probability density functions + double pdf = log.ProbabilityDensityFunction(x: 0.27); // 0.39035530085982068 + double lpdf = log.LogProbabilityDensityFunction(x: 0.27); // -0.94069792674674835 + + // Hazard (failure rate) functions + double hf = log.HazardFunction(x: 0.27); // 0.41437285846720867 + double chf = log.CumulativeHazardFunction(x: 0.27); // 0.059708840588116374 + + // String representation + string str = log.ToString("N2", CultureInfo.InvariantCulture); // Lognormal(x; μ = 2.79, σ = 1.10) + + + + + + + + + Constructs a Log-Normal (Galton) distribution + with zero location and unit shape. + + + + + + Constructs a Log-Normal (Galton) distribution + with given location and unit shape. + + + The distribution's location value μ (mu). + + + + + Constructs a Log-Normal (Galton) distribution + with given mean and standard deviation. + + + The distribution's location value μ (mu). + The distribution's shape deviation σ (sigma). + + + + + Gets the cumulative distribution function (cdf) for + the this Log-Normal distribution evaluated at point x. + + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + The calculation is computed through the relationship to the error function + as erfc(-z/sqrt(2)) / 2. See + [Weisstein] for more details. + + + References: + + + Weisstein, Eric W. "Normal Distribution Function." From MathWorld--A Wolfram Web + Resource. http://mathworld.wolfram.com/NormalDistributionFunction.html + + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Estimates a new Log-Normal distribution from a given set of observations. + + + + + + Estimates a new Log-Normal distribution from a given set of observations. + + + + + + Estimates a new Log-Normal distribution from a given set of observations. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random observation from the + Lognormal distribution with the given parameters. + + + The distribution's location value. + The distribution's shape deviation. + + A random double value sampled from the specified Lognormal distribution. + + + + + Generates a random vector of observations from the + Lognormal distribution with the given parameters. + + + The distribution's location value. + The distribution's shape deviation. + The number of samples to generate. + + An array of double values sampled from the specified Lognormal distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Shape parameter σ (sigma) of + the log-normal distribution. + + + + + + Squared shape parameter σ² (sigma-squared) + of the log-normal distribution. + + + + + + Location parameter μ (mu) of the log-normal distribution. + + + + + + Gets the Mean for this Log-Normal distribution. + + + + The Lognormal distribution's mean is + defined as exp(μ + σ²/2). + + + + + + Gets the Variance (the square of the standard + deviation) for this Log-Normal distribution. + + + + The Lognormal distribution's variance is + defined as (exp(σ²) - 1) * exp(2*μ + σ²). + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Entropy for this Log-Normal distribution. + + + + + + Gets the Standard Log-Normal Distribution, + with location set to zero and unit shape. + + + + + + Empirical distribution. + + + + + Empirical distributions are based solely on the data. This class + uses the empirical distribution function and the Gaussian kernel + density estimation to provide an univariate continuous distribution + implementation which depends only on sampled data. + + + References: + + + Wikipedia, The Free Encyclopedia. Empirical Distribution Function. Available on: + + http://en.wikipedia.org/wiki/Empirical_distribution_function + + PlanetMath. Empirical Distribution Function. Available on: + + http://planetmath.org/encyclopedia/EmpiricalDistributionFunction.html + + Wikipedia, The Free Encyclopedia. Kernel Density Estimation. Available on: + + http://en.wikipedia.org/wiki/Kernel_density_estimation + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + + + + + The following example shows how to build an empirical distribution directly from a sample: + + + // Consider the following univariate samples + double[] samples = { 5, 5, 1, 4, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 4, 3, 2, 3 }; + + // Create a non-parametric, empirical distribution using those samples: + EmpiricalDistribution distribution = new EmpiricalDistribution(samples); + + // Common measures + double mean = distribution.Mean; // 3 + double median = distribution.Median; // 2.9999993064186787 + double var = distribution.Variance; // 1.2941176470588236 + + // Cumulative distribution function + double cdf = distribution.DistributionFunction(x: 4.2); // 0.88888888888888884 + double ccdf = distribution.ComplementaryDistributionFunction(x: 4.2); //0.11111111111111116 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 4.1999999999999993 + + // Probability density functions + double pdf = distribution.ProbabilityDensityFunction(x: 4.2); // 0.15552784414141974 + double lpdf = distribution.LogProbabilityDensityFunction(x: 4.2); // -1.8609305013898356 + + // Hazard (failure rate) functions + double hf = distribution.HazardFunction(x: 4.2); // 1.3997505972727771 + double chf = distribution.CumulativeHazardFunction(x: 4.2); // 2.1972245773362191 + + // Automatically estimated smooth parameter (gamma) + double smoothing = distribution.Smoothing; // 1.9144923416414432 + + // String representation + string str = distribution.ToString(CultureInfo.InvariantCulture); // Fn(x; S) + + + + + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The number of repetition counts for each sample. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + The fractional weights to use for the samples. + The weights must sum up to one. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + + + + + Creates a new Empirical Distribution from the data samples. + + + The data samples. + + The kernel smoothing or bandwidth to be used in density estimation. + By default, the normal distribution approximation will be used. + The number of repetition counts for each sample. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + See . + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the default estimative of the smoothing parameter. + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + + An estimative of the smoothing parameter. + + + + + Gets the default estimative of the smoothing parameter. + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + + An estimative of the smoothing parameter. + + + + + Gets the default estimative of the smoothing parameter. + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Gets the default estimative of the smoothing parameter. + + + + This method is based on the practical estimation of the bandwidth as + suggested in Wikipedia: http://en.wikipedia.org/wiki/Kernel_density_estimation + + + The observations for the empirical distribution. + The fractional importance for each sample. Those values must sum up to one. + The number of times each sample should be repeated. + + An estimative of the smoothing parameter. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Gets the samples giving this empirical distribution. + + + + + + Gets the fractional weights associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the repetition counts associated with each sample. Note that + changing values on this array will not result int any effect in + this distribution. The distribution must be computed from scratch + with new values in case new weights needs to be used. + + + + + + Gets the total number of samples in this distribution. + + + + + + Gets the bandwidth smoothing parameter + used in the kernel density estimation. + + + + + + Gets the mean for this distribution. + + + + See . + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the variance for this distribution. + + + + See . + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + F (Fisher-Snedecor) distribution. + + + + + In probability theory and statistics, the F-distribution is a continuous + probability distribution. It is also known as Snedecor's F distribution + or the Fisher-Snedecor distribution (after R.A. Fisher and George W. Snedecor). + The F-distribution arises frequently as the null distribution of a test statistic, + most notably in the analysis of variance; see . + + + References: + + + Wikipedia, The Free Encyclopedia. F-distribution. Available on: + http://en.wikipedia.org/wiki/F-distribution + + + + + + The following example shows how to construct a Fisher-Snedecor's F-distribution + with 8 and 5 degrees of freedom, respectively. + + + // Create a Fisher-Snedecor's F distribution with 8 and 5 d.f. + FDistribution F = new FDistribution(degrees1: 8, degrees2: 5); + + // Common measures + double mean = F.Mean; // 1.6666666666666667 + double median = F.Median; // 1.0545096252132447 + double var = F.Variance; // 7.6388888888888893 + + // Cumulative distribution functions + double cdf = F.DistributionFunction(x: 0.27); // 0.049463408057268315 + double ccdf = F.ComplementaryDistributionFunction(x: 0.27); // 0.95053659194273166 + double icdf = F.InverseDistributionFunction(p: cdf); // 0.27 + + // Probability density functions + double pdf = F.ProbabilityDensityFunction(x: 0.27); // 0.45120469723580559 + double lpdf = F.LogProbabilityDensityFunction(x: 0.27); // -0.79583416831212883 + + // Hazard (failure rate) functions + double hf = F.HazardFunction(x: 0.27); // 0.47468419528555084 + double chf = F.CumulativeHazardFunction(x: 0.27); // 0.050728620222091653 + + // String representation + string str = F.ToString(CultureInfo.InvariantCulture); // F(x; df1 = 8, df2 = 5) + + + + + + + Constructs a F-distribution with + the given degrees of freedom. + + + + + + Constructs a F-distribution with + the given degrees of freedom. + + + The first degree of freedom. Default is 1. + The second degree of freedom. Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + the F-distribution evaluated at point x. + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + The F-distribution CDF is computed in terms of the + Incomplete Beta function Ix(a,b) as CDF(x) = Iu(d1/2, d2/2) in which + u is given as u = (d1 * x) / (d1 * x + d2). + + + + + + Gets the complementary cumulative distribution + function evaluated at point x. + + + + + The F-distribution complementary CDF is computed in terms of the + Incomplete Beta function Ix(a,b) as CDFc(x) = Iu(d2/2, d1/2) in which + u is given as u = (d2 * x) / (d2 * x + d1). + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + + + + + Gets the probability density function (pdf) for + the F-distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Not available. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + F-distribution with the given parameters. + + + The first degree of freedom. + The second degree of freedom. + The number of samples to generate. + + An array of double values sampled from the specified F-distribution. + + + + + Generates a random observation from the + F-distribution with the given parameters. + + + The first degree of freedom. + The second degree of freedom. + + A random double value sampled from the specified F-distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the first degree of freedom. + + + + + + Gets the second degree of freedom. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Outcome status for survival methods. A sample can + enter the experiment, exit the experiment while still + alive or exit the experiment due to failure. + + + + + + Observation started. The observation was left censored before + the current time and has now entered the experiment. This is + equivalent to R's censoring code -1. + + + + + + Failure happened. This is equivalent to R's censoring code 1. + + + + + + The sample was right-censored. This is equivalent to R's censoring code 0. + + + + + + Estimators for estimating parameters of Hazard distributions. + + + + + + Breslow-Nelson-Aalen estimator (default). + + + + + + Kaplan-Meier estimator. + + + + + + Methods for handling ties in hazard/survival estimation algorithms. + + + + + + Efron's method for ties (default). + + + + + + Breslow's method for ties. + + + + + + Estimators for Survival distribution functions. + + + + + + Fleming-Harrington estimator (default). + + + + + + Kaplan-Meier estimator. + + + + + + Empirical Hazard Distribution. + + + + + The Empirical Hazard (or Survival) Distribution can be used as an + estimative of the true Survival function for a dataset which does + not relies on distribution or model assumptions about the data. + + + The most direct use for this class is in Survival Analysis, such as when + using or creating + Cox's Proportional Hazards models. + + // references + http://www.statsdirect.com/help/default.htm#survival_analysis/kaplan_meier.htm + + + + + The following example shows how to construct an empirical hazards + function from a set of hazard values at the given time instants. + + + // Consider the following observations, occurring at the given time steps + double[] times = { 11, 10, 9, 8, 6, 5, 4, 2 }; + double[] values = { 0.22, 0.67, 1.00, 0.18, 1.00, 1.00, 1.00, 0.55 }; + + // Create a new empirical distribution function given the observations and event times + EmpiricalHazardDistribution distribution = new EmpiricalHazardDistribution(times, values); + + // Common measures + double mean = distribution.Mean; // 2.1994135014183138 + double median = distribution.Median; // 3.9999999151458066 + double var = distribution.Variance; // 4.2044065839577112 + + // Cumulative distribution functions + double cdf = distribution.DistributionFunction(x: 4.2); // 0.7877520261732569 + double ccdf = distribution.ComplementaryDistributionFunction(x: 4.2); // 0.21224797382674304 + double icdf = distribution.InverseDistributionFunction(p: cdf); // 4.3304819115496436 + + // Probability density functions + double pdf = distribution.ProbabilityDensityFunction(x: 4.2); // 0.21224797382674304 + double lpdf = distribution.LogProbabilityDensityFunction(x: 4.2); // -1.55 + + // Hazard (failure rate) functions + double hf = distribution.HazardFunction(x: 4.2); // 1.0 + double chf = distribution.CumulativeHazardFunction(x: 4.2); // 1.55 + + // String representation + string str = distribution.ToString(); // H(x; v, t) + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The time steps. + The hazard rates at the time steps. + + + + + Initializes a new instance of the class. + + + The time steps. + The hazard rates at the time steps. + The survival function estimator to be used. Default is + + + + + + Initializes a new instance of the class. + + + The survival function estimator to be used. Default is + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + A single point in the distribution range. + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. In the Empirical Hazard Distribution, this function + is computed using the Fleming-Harrington estimator. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring in the current distribution. + + + + In the Empirical Hazard Distribution, the PDF is defined + as the product of the hazard function h(x) and survival + function S(x), as PDF(x) = h(x) * S(x). + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Sorts time-censored events considering their time of occurrence and the type of event. + Events are first sorted in decreased order of occurrence, and then with failures coming + before censoring. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + + The indices of the new sorting. + + + + + Sorts time-censored events considering their time of occurrence and the type of event. + Events are first sorted in decreased order of occurrence, and then with failures coming + before censoring. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The input vector associated with the event. + + The indices of the new sorting. + + + + + Sorts time-censored events considering their time of occurrence and the type of event. + Events are first sorted in decreased order of occurrence, and then with failures coming + before censoring. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + + The indices of the new sorting. + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + + The estimated from the given data. + + + + + Estimates an Empirical Hazards distribution considering event times and the outcome of the + observed sample at the time of event, plus additional parameters for the hazard estimation. + + + The time of occurrence for the event. + The outcome at the time of event (failure or censored). + The weights associated with each event. + The hazard estimator to use. Default is . + The survival estimator to use. Default is . + The method for handling event ties. Default is . + + The estimated from the given data. + + + + + Gets the time steps of the hazard density values. + + + + + + Gets the hazard rate values at each time step. + + + + + + Gets the survival values at each time step. + + + + + + Gets the survival function estimator being used in this distribution. + + + + + + Gets the mean for this distribution. + + + + The distribution's mean value. + + + + + + Gets the variance for this distribution. + + + + The distribution's variance. + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gompertz distribution. + + + + + The Gompertz distribution is a continuous probability distribution. The + Gompertz distribution is often applied to describe the distribution of + adult lifespans by demographers and actuaries. Related fields of science + such as biology and gerontology also considered the Gompertz distribution + for the analysis of survival. More recently, computer scientists have also + started to model the failure rates of computer codes by the Gompertz + distribution. In marketing science, it has been used as an individual-level + model of customer lifetime. + + + References: + + + Wikipedia, The Free Encyclopedia. Gompertz distribution. Available on: + http://en.wikipedia.org/wiki/Gompertz_distribution + + + + + + The following example shows how to construct a Gompertz + distribution with η = 4.2 and b = 1.1. + + + // Create a new Gompertz distribution with η = 4.2 and b = 1.1 + GompertzDistribution dist = new GompertzDistribution(eta: 4.2, b: 1.1); + + // Common measures + double median = dist.Median; // 0.13886469671401389 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(x: 0.27); // 0.76599768199799145 + double ccdf = dist.ComplementaryDistributionFunction(x: 0.27); // 0.23400231800200855 + double icdf = dist.InverseDistributionFunction(p: cdf); // 0.26999999999766749 + + // Probability density functions + double pdf = dist.ProbabilityDensityFunction(x: 0.27); // 1.4549484164912097 + double lpdf = dist.LogProbabilityDensityFunction(x: 0.27); // 0.37497044741163688 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 0.27); // 6.2176666834502088 + double chf = dist.CumulativeHazardFunction(x: 0.27); // 1.4524242576820101 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Gompertz(x; η = 4.2, b = 1.1)" + + + + + + + Initializes a new instance of the class. + + + The shape parameter η. + The scale parameter b. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Not supported. + + + + + + Not supported. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Mixture of univariate probability distributions. + + + + + A mixture density is a probability density function which is expressed + as a convex combination (i.e. a weighted sum, with non-negative weights + that sum to 1) of other probability density functions. The individual + density functions that are combined to make the mixture density are + called the mixture components, and the weights associated with each + component are called the mixture weights. + + + References: + + + Wikipedia, The Free Encyclopedia. Mixture density. Available on: + http://en.wikipedia.org/wiki/Mixture_density + + + + + The type of the univariate component distributions. + + + + // Create a new mixture containing two Normal distributions + Mixture<NormalDistribution> mix = new Mixture<NormalDistribution>( + new NormalDistribution(2, 1), new NormalDistribution(5, 1)); + + // Common measures + double mean = mix.Mean; // 3.5 + double median = mix.Median; // 3.4999998506015895 + double var = mix.Variance; // 3.25 + + // Cumulative distribution functions + double cdf = mix.DistributionFunction(x: 4.2); // 0.59897597553494908 + double ccdf = mix.ComplementaryDistributionFunction(x: 4.2); // 0.40102402446505092 + + // Probability mass functions + double pmf1 = mix.ProbabilityDensityFunction(x: 1.2); // 0.14499174984363708 + double pmf2 = mix.ProbabilityDensityFunction(x: 2.3); // 0.19590437513747333 + double pmf3 = mix.ProbabilityDensityFunction(x: 3.7); // 0.13270883471234715 + double lpmf = mix.LogProbabilityDensityFunction(x: 4.2); // -1.8165661905848629 + + // Quantile function + double icdf1 = mix.InverseDistributionFunction(p: 0.17); // 1.5866611690305095 + double icdf2 = mix.InverseDistributionFunction(p: 0.46); // 3.1968506765456883 + double icdf3 = mix.InverseDistributionFunction(p: 0.87); // 5.6437596300843076 + + // Hazard (failure rate) functions + double hf = mix.HazardFunction(x: 4.2); // 0.40541978256972522 + double chf = mix.CumulativeHazardFunction(x: 4.2); // 0.91373394208601633 + + // String representation: + // Mixture(x; 0.5 * N(x; μ = 5, σ² = 1) + 0.5 * N(x; μ = 5, σ² = 1)) + string str = mix.ToString(CultureInfo.InvariantCulture); + + + + The following example shows how to estimate (fit) a Mixture of Normal distributions + from weighted data: + + + // Randomly initialize some mixture components + NormalDistribution[] components = new NormalDistribution[2]; + components[0] = new NormalDistribution(2, 1); + components[1] = new NormalDistribution(5, 1); + + // Create an initial mixture + var mixture = new Mixture<NormalDistribution>(components); + + // Now, suppose we have a weighted data + // set. Those will be the input points: + + double[] points = { 0, 3, 1, 7, 3, 5, 1, 2, -1, 2, 7, 6, 8, 6 }; // (14 points) + + // And those are their respective unnormalized weights: + double[] weights = { 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 2, 3, 1, 1 }; // (14 weights) + + // Let's normalize the weights so they sum up to one: + weights = weights.Divide(weights.Sum()); + + // Now we can fit our model to the data: + mixture.Fit(points, weights); // done! + + // Our model will be: + double mean1 = mixture.Components[0].Mean; // 1.41126 + double mean2 = mixture.Components[1].Mean; // 6.53301 + + // With mixture weights + double pi1 = mixture.Coefficients[0]; // 0.51408 + double pi2 = mixture.Coefficients[0]; // 0.48591 + + // If we need the GaussianMixtureModel functionality, we can + // use the estimated mixture to initialize a new model: + GaussianMixtureModel gmm = new GaussianMixtureModel(mixture); + + mean1 = gmm.Gaussians[0].Mean[0]; // 1.41126 (same) + mean2 = gmm.Gaussians[1].Mean[0]; // 6.53301 (same) + + p1 = gmm.Gaussians[0].Proportion; // 0.51408 (same) + p2 = gmm.Gaussians[1].Proportion; // 0.48591 (same) + + + + + + + + + + + Initializes a new instance of the class. + + + The mixture distribution components. + + + + + Initializes a new instance of the class. + + + The mixture weight coefficients. + The mixture distribution components. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the probability density function (pdf) for one of + the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The probability of x occurring in the component distribution, + computed as the PDF of the component distribution times its mixture + coefficient. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for one + of the component distributions evaluated at point x. + + + The index of the desired component distribution. + A single point in the distribution range. + + + The logarithm of the probability of x occurring in the + component distribution, computed as the PDF of the component + distribution times its mixture coefficient. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the cumulative distribution function (cdf) for one + component of this distribution evaluated at point x. + + + The component distribution's index. + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Computes the log-likelihood of the distribution + for a given set of observations. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial mixture coefficients. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Estimates a new mixture model from a given set of observations. + + + A set of observations. + The initial mixture coefficients. + The convergence threshold for the Expectation-Maximization estimation. + The initial components of the mixture model. + Returns a new Mixture fitted to the given observations. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mixture components. + + + + + + Gets the weight coefficients. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + References: Lidija Trailovic and Lucy Y. Pao, Variance Estimation and + Ranking of Gaussian Mixture Distributions in Target Tracking + Applications, Department of Electrical and Computer Engineering + + + + + + This method is not supported. + + + + + + This method is not supported. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Multivariate Normal (Gaussian) distribution. + + + + + The Gaussian is the most widely used distribution for continuous + variables. In the case of many variables, it is governed by two + parameters, the mean vector and the variance-covariance matrix. + + When a covariance matrix given to the class constructor is not positive + definite, the distribution is degenerate and this may be an indication + indication that it may be entirely contained in a r-dimensional subspace. + Applying a rotation to an orthogonal basis to recover a non-degenerate + r-dimensional distribution may help in this case. + + + References: + + + Ai Access. Glossary of Data Modeling. Positive definite matrix. Available on: + http://www.aiaccess.net/English/Glossaries/GlosMod/e_gm_positive_definite_matrix.htm + + + + + + The following example shows how to create a Multivariate Gaussian + distribution with known parameters mean vector and covariance matrix + + + // Create a multivariate Gaussian distribution + var dist = new MultivariateNormalDistribution( + + // mean vector mu + mean: new double[] + { + 4, 2 + }, + + // covariance matrix sigma + covariance: new double[,] + { + { 0.3, 0.1 }, + { 0.1, 0.7 } + } + ); + + // Common measures + double[] mean = dist.Mean; // { 4, 2 } + double[] median = dist.Median; // { 4, 2 } + double[] var = dist.Variance; // { 0.3, 0.7 } (diagonal from cov) + double[,] cov = dist.Covariance; // { { 0.3, 0.1 }, { 0.1, 0.7 } } + + // Probability mass functions + double pdf1 = dist.ProbabilityDensityFunction(new double[] { 2, 5 }); // 0.000000018917884164743237 + double pdf2 = dist.ProbabilityDensityFunction(new double[] { 4, 2 }); // 0.35588127170858852 + double pdf3 = dist.ProbabilityDensityFunction(new double[] { 3, 7 }); // 0.000000000036520107734505265 + double lpdf = dist.LogProbabilityDensityFunction(new double[] { 3, 7 }); // -24.033158110192296 + + // Cumulative distribution function (for up to two dimensions) + double cdf = dist.DistributionFunction(new double[] { 3, 5 }); // 0.033944035782101548 + + // Generate samples from this distribution: + double[][] sample = dist.Generate(1000000); + + + + The following example demonstrates how to fit a multivariate Gaussian to + a set of observations. Since those observations would lead to numerical + difficulties, the example also demonstrates how to specify a regularization + constant to avoid getting a . + + + + double[][] observations = + { + new double[] { 1, 2 }, + new double[] { 1, 2 }, + new double[] { 1, 2 }, + new double[] { 1, 2 } + }; + + // Create a multivariate Gaussian for 2 dimensions + var normal = new MultivariateNormalDistribution(2); + + // Specify a regularization constant in the fitting options + NormalOptions options = new NormalOptions() { Regularization = double.Epsilon }; + + // Fit the distribution to the data + normal.Fit(observations, options); + + // Check distribution parameters + double[] mean = normal.Mean; // { 1, 2 } + double[] var = normal.Variance; // { 4.9E-324, 4.9E-324 } (almost machine zero) + + + + The next example shows how to estimate a Gaussian distribution from data + available inside a Microsoft Excel spreadsheet using the ExcelReader class. + + + // Create a new Excel reader to read data from a spreadsheet + ExcelReader reader = new ExcelReader(@"test.xls", hasHeaders: false); + + // Extract the "Data" worksheet from the xls + DataTable table = reader.GetWorksheet("Data"); + + // Convert the data table to a jagged matrix + double[][] observations = table.ToArray(); + + + // Estimate a new Multivariate Normal Distribution from the observations + var dist = MultivariateNormalDistribution.Estimate(observations, new NormalOptions() + { + Regularization = 1e-10 // this value will be added to the diagonal until it becomes positive-definite + }); + + + + + + + + + Constructs a multivariate Gaussian distribution + with zero mean vector and identity covariance matrix. + + + The number of dimensions in the distribution. + + + + + Constructs a multivariate Gaussian distribution + with given mean vector and covariance matrix. + + + The mean vector μ (mu) for the distribution. + The covariance matrix Σ (sigma) for the distribution. + + + + + Computes the cumulative distribution function for distributions + up to two dimensions. For more than two dimensions, this method + is not supported. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + + The Complementary Cumulative Distribution Function (CCDF) is + the complement of the Cumulative Distribution Function, or 1 + minus the CDF. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) + for this distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Please see . + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Please see . + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + Please see . + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + Please see . + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + Please see . + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Converts this multivariate + normal distribution into a joint distribution + of independent normal distributions. + + + + A independent joint distribution of + normal distributions. + + + + + + Generates a random vector of observations from the current distribution. + + + A random vector of observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Creates a new univariate Normal distribution. + + + The mean value for the distribution. + The standard deviation for the distribution. + + A object that + actually represents a . + + + + + Creates a new bivariate Normal distribution. + + + The mean value for the first variate in the distribution. + The mean value for the second variate in the distribution. + The standard deviation for the first variate. + The standard deviation for the second variate. + The correlation coefficient between the two distributions. + + A bi-dimensional . + + + + + Returns a that represents this instance. + + + The format. + The format provider. + + + A that represents this instance. + + + + + + Generates a random vector of observations from a distribution with the given parameters. + + + The number of samples to generate. + The mean vector μ (mu) for the distribution. + The covariance matrix Σ (sigma) for the distribution. + + A random vector of observations drawn from this distribution. + + + + + Gets the Mean vector μ (mu) for + the Gaussian distribution. + + + + + + Gets the Variance vector diag(Σ), the diagonal of + the sigma matrix, for the Gaussian distribution. + + + + + + Gets the variance-covariance matrix + Σ (sigma) for the Gaussian distribution. + + + + + + Univariate general discrete distribution, also referred as the + Categorical distribution. + + + + + An univariate categorical distribution is a statistical distribution + whose variables can take on only discrete values. Each discrete value + defined within the interval of the distribution has an associated + probability value indicating its frequency of occurrence. + + The discrete uniform distribution is a special case of a generic + discrete distribution whose probability values are constant. + + + + + // Create a Categorical distribution for 3 symbols, in which + // the first and second symbol have 25% chance of appearing, + // and the third symbol has 50% chance of appearing. + + // 1st 2nd 3rd + double[] probabilities = { 0.25, 0.25, 0.50 }; + + // Create the categorical with the given probabilities + var dist = new GeneralDiscreteDistribution(probabilities); + + // Common measures + double mean = dist.Mean; // 1.25 + double median = dist.Median; // 1.00 + double var = dist.Variance; // 0.6875 + + // Cumulative distribution functions + double cdf = dist.DistributionFunction(k: 2); // 1.0 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.0 + + // Probability mass functions + double pdf1 = dist.ProbabilityMassFunction(k: 0); // 0.25 + double pdf2 = dist.ProbabilityMassFunction(k: 1); // 0.25 + double pdf3 = dist.ProbabilityMassFunction(k: 2); // 0.50 + double lpdf = dist.LogProbabilityMassFunction(k: 2); // -0.69314718055994529 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: 0.17); // 0 + int icdf2 = dist.InverseDistributionFunction(p: 0.39); // 1 + int icdf3 = dist.InverseDistributionFunction(p: 0.56); // 2 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 0); // 0.33333333333333331 + double chf = dist.CumulativeHazardFunction(x: 0); // 0.2876820724517809 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Categorical(x; p = { 0.25, 0.25, 0.5 })" + + + + + + + Constructs a new generic discrete distribution. + + + + The integer value where the distribution starts, also + known as the offset value. Default value is 0. + + The frequency of occurrence for each integer value in the + distribution. The distribution is assumed to begin in the + interval defined by start up to size of this vector. + + + + + Constructs a new uniform discrete distribution. + + + + The integer value where the distribution starts, also + known as the offset value. Default value is 0. + + The number of discrete values within the distribution. + The distribution is assumed to belong to the interval + [start, start + symbols]. + + + + + Constructs a new generic discrete distribution. + + + + The frequency of occurrence for each integer value in the + distribution. The distribution is assumed to begin in the + interval defined by start up to size of this vector. + + + + + Constructs a new uniform discrete distribution. + + + + The number of discrete values within the distribution. + The distribution is assumed to belong to the interval + [start, start + symbols]. + + + + + Constructs a new uniform discrete distribution. + + + + The integer value where the distribution starts, also + known as a. Default value is 0. + + The integer value where the distribution ends, also + known as b. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The Probability Density Function (PDF) describes the + probability that a given value k will occur. + + + + The probability of k occurring + in the current distribution. + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of k + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value x will occur. + + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a random sample within the given symbol probabilities. + + + The probabilities for the discrete symbols. + The number of samples to generate. + + A random sample within the given probabilities. + + + + + Returns a random symbol within the given symbol probabilities. + + + The probabilities for the discrete symbols. + + A random symbol within the given probabilities. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the probability value associated with the symbol . + + + The symbol's index. + + The probability of the given symbol. + + + + + Gets the integer value where the + discrete distribution starts. + + + + + + Gets the integer value where the + discrete distribution ends. + + + + + + Gets the number of symbols in the distribution. + + + + + + Gets the probabilities associated + with each discrete variable value. + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the mode for this distribution. + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Normal (Gaussian) distribution. + + + + + In probability theory, the normal (or Gaussian) distribution is a very + commonly occurring continuous probability distribution—a function that + tells the probability that any real observation will fall between any two + real limits or real numbers, as the curve approaches zero on either side. + Normal distributions are extremely important in statistics and are often + used in the natural and social sciences for real-valued random variables + whose distributions are not known. + + The normal distribution is immensely useful because of the central limit + theorem, which states that, under mild conditions, the mean of many random + variables independently drawn from the same distribution is distributed + approximately normally, irrespective of the form of the original distribution: + physical quantities that are expected to be the sum of many independent processes + (such as measurement errors) often have a distribution very close to the normal. + Moreover, many results and methods (such as propagation of uncertainty and least + squares parameter fitting) can be derived analytically in explicit form when the + relevant variables are normally distributed. + + The Gaussian distribution is sometimes informally called the bell curve. However, + many other distributions are bell-shaped (such as Cauchy's, Student's, and logistic). + The terms Gaussian function and Gaussian bell curve are also ambiguous because they + sometimes refer to multiples of the normal distribution that cannot be directly + interpreted in terms of probabilities. + + + The Gaussian is the most widely used distribution for continuous + variables. In the case of a single variable, it is governed by + two parameters, the mean and the variance. + + + References: + + + Wikipedia, The Free Encyclopedia. Normal distribution. Available on: + https://en.wikipedia.org/wiki/Normal_distribution + + + + + + This examples shows how to create a Normal distribution, + compute some of its properties and generate a number of + random samples from it. + + + // Create a normal distribution with mean 2 and sigma 3 + var normal = new NormalDistribution(mean: 2, stdDev: 3); + + // In a normal distribution, the median and + // the mode coincide with the mean, so + + double mean = normal.Mean; // 2 + double mode = normal.Mode; // 2 + double median = normal.Median; // 2 + + // The variance is the square of the standard deviation + double variance = normal.Variance; // 3² = 9 + + // Let's check what is the cumulative probability of + // a value less than 3 occurring in this distribution: + double cdf = normal.DistributionFunction(3); // 0.63055 + + // Finally, let's generate 1000 samples from this distribution + // and check if they have the specified mean and standard devs + + double[] samples = normal.Generate(1000); + + double sampleMean = samples.Mean(); // 1.92 + double sampleDev = samples.StandardDeviation(); // 3.00 + + + + This example further demonstrates how to compute + derived measures from a Normal distribution: + + + var normal = new NormalDistribution(mean: 4, stdDev: 4.2); + + double mean = normal.Mean; // 4.0 + double median = normal.Median; // 4.0 + double mode = normal.Mode; // 4.0 + double var = normal.Variance; // 17.64 + + double cdf = normal.DistributionFunction(x: 1.4); // 0.26794249453351904 + double pdf = normal.ProbabilityDensityFunction(x: 1.4); // 0.078423391448155175 + double lpdf = normal.LogProbabilityDensityFunction(x: 1.4); // -2.5456330358182586 + + double ccdf = normal.ComplementaryDistributionFunction(x: 1.4); // 0.732057505466481 + double icdf = normal.InverseDistributionFunction(p: cdf); // 1.4 + + double hf = normal.HazardFunction(x: 1.4); // 0.10712736480747137 + double chf = normal.CumulativeHazardFunction(x: 1.4); // 0.31189620872601354 + + string str = normal.ToString(CultureInfo.InvariantCulture); // N(x; μ = 4, σ² = 17.64) + + + + + + + + + + + + + Constructs a Normal (Gaussian) distribution + with zero mean and unit standard deviation. + + + + + + Constructs a Normal (Gaussian) distribution + with given mean and unit standard deviation. + + + The distribution's mean value μ (mu). + + + + + Constructs a Normal (Gaussian) distribution + with given mean and standard deviation. + + + The distribution's mean value μ (mu). + The distribution's standard deviation σ (sigma). + + + + + Gets the cumulative distribution function (cdf) for + the this Normal distribution evaluated at point x. + + + + A single point in the distribution range. + + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + The calculation is computed through the relationship to the error function + as erfc(-z/sqrt(2)) / 2. + + + References: + + + Weisstein, Eric W. "Normal Distribution." From MathWorld--A Wolfram Web Resource. + Available on: http://mathworld.wolfram.com/NormalDistribution.html + + Wikipedia, The Free Encyclopedia. Normal distribution. Available on: + http://en.wikipedia.org/wiki/Normal_distribution#Cumulative_distribution_function + + + + + See . + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + The Normal distribution's ICDF is defined in terms of the + standard normal inverse cumulative + distribution function I as ICDF(p) = μ + σ * I(p). + + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + The Normal distribution's PDF is defined as + PDF(x) = c * exp((x - μ / σ)²/2). + + + + See . + + + + + + Gets the probability density function (pdf) for + the Normal distribution evaluated at point x. + + + A single point in the distribution range. For a + univariate distribution, this should be a single + double value. For a multivariate distribution, + this should be a double array. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + See . + + + + + + Gets the Z-Score for a given value. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Estimates a new Normal distribution from a given set of observations. + + + + + + Converts this univariate distribution into a + 1-dimensional multivariate distribution. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + + A random vector of observations drawn from this distribution. + + + + + Generates a random vector of observations from the current distribution. + + + A random vector of observations drawn from this distribution. + + + + + Gets the Mean value μ (mu) for this Normal distribution. + + + + + + Gets the median for this distribution. + + + + The normal distribution's median value + equals its value μ. + + + + The distribution's median value. + + + + + + Gets the Variance σ² (sigma-squared), which is the square + of the standard deviation σ for this Normal distribution. + + + + + + Gets the Standard Deviation σ (sigma), which is the + square root of the variance for this Normal distribution. + + + + + + Gets the mode for this distribution. + + + + The normal distribution's mode value + equals its value μ. + + + + The distribution's mode value. + + + + + + Gets the skewness for this distribution. In + the Normal distribution, this is always 0. + + + + + + Gets the excess kurtosis for this distribution. + In the Normal distribution, this is always 0. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the Entropy for this Normal distribution. + + + + + + Gets the Standard Gaussian Distribution, with zero mean and unit variance. + + + + + + Poisson probability distribution. + + + + The Poisson distribution is a discrete probability distribution that + expresses the probability of a number of events occurring in a fixed + period of time if these events occur with a known average rate and + independently of the time since the last event. + + + References: + + + Wikipedia, The Free Encyclopedia. Poisson distribution. Available on: + http://en.wikipedia.org/wiki/Poisson_distribution + + + + + + The following example shows how to instantiate a new Poisson distribution + with a given rate λ and how to compute its measures and associated functions. + + + // Create a new Poisson distribution with + var dist = new PoissonDistribution(lambda: 4.2); + + // Common measures + double mean = dist.Mean; // 4.2 + double median = dist.Median; // 4.0 + double var = dist.Variance; // 4.2 + + // Cumulative distribution functions + double cdf1 = dist.DistributionFunction(k: 2); // 0.21023798702309743 + double cdf2 = dist.DistributionFunction(k: 4); // 0.58982702131057763 + double cdf3 = dist.DistributionFunction(k: 7); // 0.93605666027257894 + double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.78976201297690252 + + // Probability mass functions + double pmf1 = dist.ProbabilityMassFunction(k: 4); // 0.19442365170822165 + double pmf2 = dist.ProbabilityMassFunction(k: 5); // 0.1633158674349062 + double pmf3 = dist.ProbabilityMassFunction(k: 6); // 0.11432110720443435 + double lpmf = dist.LogProbabilityMassFunction(k: 2); // -2.0229781299813 + + // Quantile function + int icdf1 = dist.InverseDistributionFunction(p: cdf1); // 2 + int icdf2 = dist.InverseDistributionFunction(p: cdf2); // 4 + int icdf3 = dist.InverseDistributionFunction(p: cdf3); // 7 + + // Hazard (failure rate) functions + double hf = dist.HazardFunction(x: 4); // 0.47400404660843515 + double chf = dist.CumulativeHazardFunction(x: 4); // 0.89117630901575073 + + // String representation + string str = dist.ToString(CultureInfo.InvariantCulture); // "Poisson(x; λ = 4.2)" + + + + This example shows hows to call the distribution function + to compute different types of probabilities. + + + // Create a new Poisson distribution + var dist = new PoissonDistribution(lambda: 4.2); + + // P(X = 1) = 0.0629814226460064 + double equal = dist.ProbabilityMassFunction(k: 1); + + // P(X < 1) = 0.0149955768204777 + double less = dist.DistributionFunction(k: 1, inclusive: false); + + // P(X ≤ 1) = 0.0779769994664841 + double lessThanOrEqual = dist.DistributionFunction(k: 1, inclusive: true); + + // P(X > 1) = 0.922023000533516 + double greater = dist.ComplementaryDistributionFunction(k: 1); + + // P(X ≥ 1) = 0.985004423179522 + double greaterThanOrEqual = dist.ComplementaryDistributionFunction(k: 1, inclusive: true); + + + + + + + Creates a new Poisson distribution with λ = 1. + + + + + + Creates a new Poisson distribution with the given λ (lambda). + + + The Poisson's λ (lambda) parameter. Default is 1. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point k. + + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability mass function (pmf) for + this distribution evaluated at point x. + + + + A single point in the distribution range. + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + The probability of x occurring + in the current distribution. + + + + + Gets the log-probability mass function (pmf) for + this distribution evaluated at point k. + + + A single point in the distribution range. + + + The logarithm of the probability of k + occurring in the current distribution. + + + + The Probability Mass Function (PMF) describes the + probability that a given value k will occur. + + + + + + Gets the inverse of the cumulative distribution function (icdf) for + this distribution evaluated at probability p. This function + is also known as the Quantile function. + + + A probability value between 0 and 1. + + The observation which most likely generated . + + + + The Inverse Cumulative Distribution Function (ICDF) specifies, for + a given probability, the value which the random variable will be at, + or below, with that probability. + + In Poisson's distribution, the Inverse CDF can be computed using + the inverse Gamma function Γ'(a, x) + as + icdf(p) = Γ'(λ, 1 - p) + . + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the Poisson's parameter λ (lambda). + + + + + + Gets the mean for this distribution. + + + + + + Gets the variance for this distribution. + + + + + + Gets the entropy for this distribution. + + + + A closed form expression for the entropy of a Poisson + distribution is unknown. This property returns an approximation + for large lambda. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the standard Poisson distribution, + with lambda (rate) equal to 1. + + + + + + von-Mises (Circular Normal) distribution. + + + + The von Mises distribution (also known as the circular normal distribution + or Tikhonov distribution) is a continuous probability distribution on the circle. + It may be thought of as a close approximation to the wrapped normal distribution, + which is the circular analogue of the normal distribution. + + The wrapped normal distribution describes the distribution of an angle that + is the result of the addition of many small independent angular deviations, such as + target sensing, or grain orientation in a granular material. The von Mises distribution + is more mathematically tractable than the wrapped normal distribution and is the + preferred distribution for many applications. + + + References: + + + Wikipedia, The Free Encyclopedia. Von-Mises distribution. Available on: + http://en.wikipedia.org/wiki/Von_Mises_distribution + + Suvrit Sra, "A short note on parameter approximation for von Mises-Fisher distributions: + and a fast implementation of $I_s(x)$". (revision of Apr. 2009). Computational Statistics (2011). + Available on: http://www.kyb.mpg.de/publications/attachments/vmfnote_7045%5B0%5D.pdf + + Zheng Sun. M.Sc. Comparing measures of fit for circular distributions. Master thesis, 2006. + Available on: https://dspace.library.uvic.ca:8443/bitstream/handle/1828/2698/zhengsun_master_thesis.pdf + + + + + + // Create a new von-Mises distribution with μ = 0.42 and κ = 1.2 + var vonMises = new VonMisesDistribution(mean: 0.42, concentration: 1.2); + + // Common measures + double mean = vonMises.Mean; // 0.42 + double median = vonMises.Median; // 0.42 + double var = vonMises.Variance; // 0.48721760532782921 + + // Cumulative distribution functions + double cdf = vonMises.DistributionFunction(x: 1.4); // 0.81326928491589345 + double ccdf = vonMises.ComplementaryDistributionFunction(x: 1.4); // 0.18673071508410655 + double icdf = vonMises.InverseDistributionFunction(p: cdf); // 1.3999999637927665 + + // Probability density functions + double pdf = vonMises.ProbabilityDensityFunction(x: 1.4); // 0.2228112141141676 + double lpdf = vonMises.LogProbabilityDensityFunction(x: 1.4); // -1.5014304395467863 + + // Hazard (failure rate) functions + double hf = vonMises.HazardFunction(x: 1.4); // 1.1932220899695576 + double chf = vonMises.CumulativeHazardFunction(x: 1.4); // 1.6780877262500649 + + // String representation + string str = vonMises.ToString(CultureInfo.InvariantCulture); // VonMises(x; μ = 0.42, κ = 1.2) + + + + + + + + + Constructs a von-Mises distribution with zero mean. + + + The concentration value κ (kappa). + + + + + Constructs a von-Mises distribution. + + + The mean value μ (mu). + The concentration value κ (kappa). + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new circular uniform distribution by creating a + new with zero kappa. + + + The mean value μ (mu). + + + A with zero kappa, which + is equivalent to creating an uniform circular distribution. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Estimates a new von-Mises distribution from a given set of angles. + + + + + + Estimates a new von-Mises distribution from a given set of angles. + + + + + + Estimates a new von-Mises distribution from a given set of angles. + + + + + + von-Mises cumulative distribution function. + + + + This method implements the Von-Mises CDF calculation code + as given by Geoffrey Hill on his original FORTRAN code and + shared under the GNU LGPL license. + + + References: + + Geoffrey Hill, ACM TOMS Algorithm 518, + Incomplete Bessel Function I0: The von Mises Distribution, + ACM Transactions on Mathematical Software, Volume 3, Number 3, + September 1977, pages 279-284. + + + + The point where to calculate the CDF. + The location parameter μ (mu). + The concentration parameter κ (kappa). + + The value of the von-Mises CDF at point . + + + + + Gets the mean value μ (mu) for this distribution. + + + + + + Gets the median value μ (mu) for this distribution. + + + + + + Gets the mode value μ (mu) for this distribution. + + + + + + Gets the concentration κ (kappa) for this distribution. + + + + + + Gets the variance for this distribution. + + + + The von-Mises Variance is defined in terms of the + Bessel function of the first + kind In(x) as var = 1 - I(1, κ) / I(0, κ) + + + + + + Gets the entropy for this distribution. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Weibull distribution. + + + + + In probability theory and statistics, the Weibull distribution is a + continuous probability distribution. It is named after Waloddi Weibull, + who described it in detail in 1951, although it was first identified by + Fréchet (1927) and first applied by Rosin and Rammler (1933) to describe a + particle size distribution. + + + The Weibull distribution is related to a number of other probability distributions; + in particular, it interpolates between the + exponential distribution (for k = 1) and the + Rayleigh distribution (when k = 2). + + + If the quantity x is a "time-to-failure", the Weibull distribution gives a + distribution for which the failure rate is proportional to a power of time. + The shape parameter, k, is that power plus one, and so this parameter can be + interpreted directly as follows: + + + + A value of k < 1 indicates that the failure rate decreases over time. This + happens if there is significant "infant mortality", or defective items failing + early and the failure rate decreasing over time as the defective items are + weeded out of the population. + + A value of k = 1 indicates that the failure rate is constant over time. This + might suggest random external events are causing mortality, or failure. + + A value of k > 1 indicates that the failure rate increases with time. This + happens if there is an "aging" process, or parts that are more likely to fail + as time goes on. + + + In the field of materials science, the shape parameter k of a distribution + of strengths is known as the Weibull modulus. + + + References: + + + Wikipedia, The Free Encyclopedia. Weibull distribution. Available on: + http://en.wikipedia.org/wiki/Weibull_distribution + + + + + + // Create a new Weibull distribution with λ = 0.42 and k = 1.2 + var weilbull = new WeibullDistribution(scale: 0.42, shape: 1.2); + + // Common measures + double mean = weilbull.Mean; // 0.39507546046784414 + double median = weilbull.Median; // 0.30945951550913292 + double var = weilbull.Variance; // 0.10932249666369542 + double mode = weilbull.Mode; // 0.094360430821809421 + + // Cumulative distribution functions + double cdf = weilbull.DistributionFunction(x: 1.4); // 0.98560487188700052 + double pdf = weilbull.ProbabilityDensityFunction(x: 1.4); // 0.052326687031379278 + double lpdf = weilbull.LogProbabilityDensityFunction(x: 1.4); // -2.9502487697674415 + + // Probability density functions + double ccdf = weilbull.ComplementaryDistributionFunction(x: 1.4); // 0.22369885565908001 + double icdf = weilbull.InverseDistributionFunction(p: cdf); // 1.400000001051205 + + // Hazard (failure rate) functions + double hf = weilbull.HazardFunction(x: 1.4); // 1.1093328057258516 + double chf = weilbull.CumulativeHazardFunction(x: 1.4); // 1.4974545260150962 + + // String representation + string str = weilbull.ToString(CultureInfo.InvariantCulture); // Weibull(x; λ = 0.42, k = 1.2) + + + + + + + Initializes a new instance of the class. + + + The scale parameter λ (lambda). + The shape parameter k. + + + + + Gets the cumulative distribution function (cdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The Cumulative Distribution Function (CDF) describes the cumulative + probability that a given value or any value smaller than it will occur. + + + + + + Gets the probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The probability of x occurring + in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the log-probability density function (pdf) for + this distribution evaluated at point x. + + + A single point in the distribution range. + + + The logarithm of the probability of x + occurring in the current distribution. + + + + The Probability Density Function (PDF) describes the + probability that a given value x will occur. + + + + + + Gets the hazard function, also known as the failure rate or + the conditional failure density function for this distribution + evaluated at point x. + + + A single point in the distribution range. + + + The conditional failure density function h(x) + evaluated at x in the current distribution. + + + + + + Gets the cumulative hazard function for this + distribution evaluated at point x. + + + A single point in the distribution range. + + + The cumulative hazard function H(x) + evaluated at x in the current distribution. + + + + + + Gets the complementary cumulative distribution function + (ccdf) for this distribution evaluated at point x. + This function is also known as the Survival function. + + + A single point in the distribution range. + + + + + Gets the inverse of the . + The inverse complementary distribution function is also known as the + inverse survival Function. + + + + + + Fits the underlying distribution to a given set of observations. + + + The array of observations to fit the model against. The array + elements can be either of type double (for univariate data) or + type double[] (for multivariate data). + The weight vector containing the weight for each of the samples. + Optional arguments which may be used during fitting, such + as regularization constants and additional parameters. + + + Although both double[] and double[][] arrays are supported, + providing a double[] for a multivariate distribution or a + double[][] for a univariate distribution may have a negative + impact in performance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Generates a random vector of observations from the current distribution. + + + The number of samples to generate. + A random vector of observations drawn from this distribution. + + + + + Generates a random observation from the current distribution. + + + A random observations drawn from this distribution. + + + + + Generates a random vector of observations from the + Weibull distribution with the given parameters. + + + The scale parameter lambda. + The shape parameter k. + The number of samples to generate. + + An array of double values sampled from the specified Weibull distribution. + + + + + Generates a random observation from the + Weibull distribution with the given parameters. + + + The scale parameter lambda. + The shape parameter k. + + A random double value sampled from the specified Weibull distribution. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets the mean for this distribution. + + + The distribution's mean value. + + + + + Gets the variance for this distribution. + + + The distribution's variance. + + + + + Gets the median for this distribution. + + + + The distribution's median value. + + + + + + Gets the mode for this distribution. + + + + The distribution's mode value. + + + + + + Gets the support interval for this distribution. + + + + A containing + the support interval for this distribution. + + + + + + Gets the entropy for this distribution. + + + The distribution's entropy. + + + + + Base abstract class for the Data Table preprocessing filters. + + The column options type. + + + + + Sample processing filter interface. + + + The interface defines the set of methods which should be + provided by all table processing filters. Methods of this interface should + keep the source table unchanged and return the result of data processing + filter as new data table. + + + + + Applies the filter to a . + + + Source table to apply filter to. + + Returns filter's result obtained by applying the filter to + the source table. + + The method keeps the source table unchanged and returns the + the result of the table processing filter as new data table. + + + + + Creates a new DataTable Filter Base. + + + + + + Applies the Filter to a . + + + The source . + The name of the columns that should be processed. + + The processed . + + + + + Applies the Filter to a . + + + The source . + + The processed . + + + + + Processes the current filter. + + + + + + Gets or sets whether this filter is active. An inactive + filter will repass the input table as output unchanged. + + + + + + Gets the collection of filter options. + + + + + + Gets options associated with a given variable (data column). + + + The name of the variable. + + + + + Gets options associated with a given variable (data column). + + + The column's index for the variable. + + + + + Column options for filter which have per-column settings. + + + + + + Constructs the base class for Column Options. + + + Column's name. + + + + + Returns a that represents this instance. + + + + A that represents this instance. + + + + + + Gets or sets the name of the column that the options will apply to. + + + + + + Gets or sets a user-determined object associated with this column. + + + + + + Column option collection. + + + + + + Extracts the key from the specified column options. + + + + + + Adds a new column options definition to the collection. + + + The column options to be added. + + The added column options. + + + + + Gets the associated options for the given column name. + + + The name of the column whose options should be retrieved. + The retrieved options. + + True if the options was contained in the collection; false otherwise. + + + + + Data processing interface for in-place filters. + + + + + + Applies the filter to a , + modifying the table in place. + + + Source table to apply filter to. + + The method modifies the source table in place. + + + + + Indicates that a column filter supports automatic initialization. + + + + + + Auto detects the column options by analyzing a given . + + + The column to analyze. + + + + + Indicates that a filter supports automatic initialization. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Branching filter. + + + + The branching filter allows for different filter sequences to be + applied to different subsets of a data table. For instance, consider + a data table whose first column, "IsStudent", is an indicator variable: + a value of 1 indicates the row contains information about a student, and + a value of 0 indicates the row contains information about someone who is + not currently a student. Using the branching filter, it becomes possible + to apply a different set of filters for the rows that represent students + and different filters for rows that represent non-students. + + + + + Suppose we have the following data table. In this table, each row represents + a person, an indicator variable tell us whether this person is a smoker, and + the last column indicates the age of each person. Let's say we would like to + convert the age of smokers to a scale from -1 to 0, and the age of non-smokers + to a scale from 0 to 1. + + + object[,] data = + { + { "Id", "IsSmoker", "Age" }, + { 0, 1, 10 }, + { 1, 1, 15 }, + { 2, 0, 40 }, + { 3, 1, 20 }, + { 4, 0, 70 }, + { 5, 0, 55 }, + }; + + // Create a DataTable from data + DataTable input = data.ToTable(); + + // We will create two filters, one to operate on the smoking + // branch of the data, and other in the non-smoking subjects. + // + var smoker = new LinearScaling(); + var common = new LinearScaling(); + + // for the smokers, we will convert the age to [-1; 0] + smoker.Columns.Add(new LinearScaling.Options("Age") + { + SourceRange = new DoubleRange(10, 20), + OutputRange = new DoubleRange(-1, 0) + }); + + // for non-smokers, we will convert the age to [0; +1] + common.Columns.Add(new LinearScaling.Options("Age") + { + SourceRange = new DoubleRange(40, 70), + OutputRange = new DoubleRange(0, 1) + }); + + // We now configure and create the branch filter + var settings = new Branching.Options("IsSmoker"); + settings.Filters.Add(1, smoker); + settings.Filters.Add(0, common); + + Branching branching = new Branching(settings); + + + // Finally, we can process the input data: + DataTable actual = branching.Apply(input); + + // As result, the generated table will + // then contain the following entries: + + // { "Id", "IsSmoker", "Age" }, + // { 0, 1, -1.0 }, + // { 1, 1, -0.5 }, + // { 2, 0, 0.0 }, + // { 3, 1, 0.0 }, + // { 4, 0, 1.0 }, + // { 5, 0, 0.5 }, + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The columns to use as filters. + + + + + Initializes a new instance of the class. + + + The columns to use as filters. + + + + + Processes the current filter. + + + + + + Column options for the branching filter. + + + + + + Initializes a new instance of the class. + + + The column name. + + + + + Initializes a new instance of the class. + + + + + + Auto detects the column options by analyzing a given . + + + The column to analyze. + + + + + Gets the collection of filters associated with a given label value. + + + + + + Identification filter. + + + + + The identification filter adds a new column to the data containing an + unique id for each of the samples (rows) in the data table (or matrix). + + + + + + Creates a new identification filter. + + + + + + Creates a new identification filter. + + + + + + Applies the filter to the DataTable. + + + + + + Gets or sets the name of the column used + to store row indices. + + + + + + Randomization filter. + + + + + + Initializes a new instance of the class. + + + A fixed random seed value to generate fixed + permutations. If not specified, generates true random permutations. + + + + + Initializes a new instance of the class. + + + + + + Applies the filter to the current data. + + + + + + Gets or sets the fixed random seed to + be used in randomization, if any. + + + The random seed, for fixed permutations; + or null, for true random permutations. + + + + + Imputation filter for filling missing values. + + + + + + Creates a new Imputation filter. + + + + + + Creates a new Imputation filter. + + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Strategies for missing value imputations. + + + + + + Uses a fixed-value to replace missing fields. + + + + + + Uses the mean value to replace missing fields. + + + + + Uses the mode value to replace missing fields. + + + + + Uses the median value to replace missing fields. + + + + + Options for the imputation filter. + + + + + + Constructs a new column option + for the Imputation filter. + + + + + + Constructs a new column option + for the Imputation filter. + + + + + + Auto detects the column options by analyzing + a given . + + + The column to analyze. + + + + + Gets or sets the imputation strategy + to use with this column. + + + + + Missing value indicator. + + + + + + Value to replace missing values with. + + + + + + Grouping filter. + + + + + + Creates a new Grouping filter with equal group + proportions and default Group indicator column. + + + + + + Creates a new Grouping filter. + + + + + + Processes the current filter. + + + + + + Gets or sets a value indicating whether the group labels + are locked and should not be randomly re-selected. + + + true to lock groups; otherwise, false. + + + + + Gets or sets the group index labels. + + + The group indices. + + + + + Gets or sets the two-group proportions. + + + + + + Gets or sets the name of the indicator + column which will be used to distinguish + samples from either group. + + + + + + Options for the grouping filter. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object. + + + + + + Gets or sets the labels used for each class contained in the column. + + + + + + Elimination filter. + + + + + + Creates a elimination filter to remove + rows containing missing values. + + + + + + Creates a elimination filter to remove + rows containing missing values in the + specified columns. + + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Options for the discretization filter. + + + + + + Constructs a new column option + for the Elimination filter. + + + + + + Constructs a new column option + for the Elimination filter. + + + + + + Gets the value indicator of a missing field. + Default is . + + + + + + Time-series windowing filter. + + + + This filter splits a time-series into overlapping time + windows, with optional associated output values. This + filter can be used to create time-window databases for + time-series regression and latent-state identification. + + + + + + Creates a new time segmentation filter. + + + + + + Creates a new time segmentation filter. + + + The size of the time windows to be extracted. + + + + + Creates a new time segmentation filter. + + + The size of the time windows to be extracted. + The number of elements between two taken windows. If set to + the same number of , the windows will not overlap. + Default is 1. + + + + + Processes the current filter. + + + + + + Applies the filter to a time series. + + + The source time series. + + The time-windows extracted from the time-series. + + + + + Applies the filter to a time series. + + + The source time series. + The output associated with each time-window. + + The time-windows extracted from the time-series. + + + + + Gets or sets the length of the time-windows + that should be extracted from the sequences. + + + + + + Gets or sets the step size that should be used + when extracting windows. If set to the same number + as the , windows will not + overlap. Default is 1. + + + + + + Options for segmenting a time-series contained inside a column. + + + + + + Constructs a new Options object. + + + + + + Class equalization filter. + + + Currently this class does only work for a single + column and only for the binary case (two classes). + + + + + + Creates a new class equalization filter. + + + + + + Creates a new classes equalization filter. + + + + + + Creates a new classes equalization filter. + + + + + + Creates a new classes equalization filter. + + + + + + Processes the current filter. + + + + + + Options for the stratification filter. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object. + + + + + + Auto detects the column options by analyzing a given . + + + The column to analyze. + + + + + Gets or sets the labels used for each class contained in the column. + + + + + + Codification type. + + + + + + The variable should be codified as an ordinal variable, + meaning they will be translated to symbols 0, 1, 2, ... n, + where n is the total number of distinct symbols this variable + can assume. + + + + + + This variable should be codified as a 1-of-n vector by creating + one column for each symbol this variable can assume, and marking + the column corresponding to the current symbol as 1 and the rest + as zero. + + + + + + This variable should be codified as a 1-of-(n-1) vector by creating + one column for each symbol this variable can assume, except the + first. This is the same as as , + but the first symbol is handled as a baseline (and should be indicated by + a zero in every column). + + + + + + Codification Filter class. + + + + + The codification filter performs an integer codification of classes in + given in a string form. An unique integer identifier will be assigned + for each of the string classes. + + + + + When handling data tables, often there will be cases in which a single + table contains both numerical variables and categorical data in the form + of text labels. Since most machine learning and statistics algorithms + expect their data to be numeric, the codification filter can be used + to create mappings between text labels and discrete symbols. + + + // Show the start data + DataGridBox.Show(table); + + + + + + // Create a new data projection (column) filter + var filter = new Codification(table, "Category"); + + // Apply the filter and get the result + DataTable result = filter.Apply(table); + + // Show it + DataGridBox.Show(result); + + + + + + + The following more elaborated examples show how to + use the filter without + necessarily handling + DataTables. + + + // Suppose we have a data table relating the age of + // a person and its categorical classification, as + // in "child", "adult" or "elder". + + // The Codification filter is able to extract those + // string labels and transform them into discrete + // symbols, assigning integer labels to each of them + // such as "child" = 0, "adult" = 1, and "elder" = 3. + + // Create the aforementioned sample table + DataTable table = new DataTable("Sample data"); + table.Columns.Add("Age", typeof(int)); + table.Columns.Add("Label", typeof(string)); + + // age label + table.Rows.Add(10, "child"); + table.Rows.Add(07, "child"); + table.Rows.Add(04, "child"); + table.Rows.Add(21, "adult"); + table.Rows.Add(27, "adult"); + table.Rows.Add(12, "child"); + table.Rows.Add(79, "elder"); + table.Rows.Add(40, "adult"); + table.Rows.Add(30, "adult"); + + + // Now, let's say we need to translate those text labels + // into integer symbols. Let's use a Codification filter: + + Codification codebook = new Codification(table); + + + // After that, we can use the codebook to "translate" + // the text labels into discrete symbols, such as: + + int a = codebook.Translate("Label", "child"); // returns 0 + int b = codebook.Translate("Label", "adult"); // returns 1 + int c = codebook.Translate("Label", "elder"); // returns 2 + + // We can also do the reverse: + string labela = codebook.Translate("Label", 0); // returns "child" + string labelb = codebook.Translate("Label", 1); // returns "adult" + string labelc = codebook.Translate("Label", 2); // returns "elder" + + + + After we have created the codebook, we can use it to feed data with + categorical variables to method which would otherwise not know how + to handle text labels data. Continuing with our example, the next + code section shows how to convert an entire data table into a numerical + matrix. + + + // We can process an entire data table at once: + DataTable result = codebook.Apply(table); + + // The resulting table can be transformed to jagged array: + double[][] matrix = Matrix.ToArray(result); + + // and the resulting matrix will be given by + // new double[][] + // { + // new double[] { 10, 0 }, + // new double[] { 7, 0 }, + // new double[] { 4, 0 }, + // new double[] { 21, 1 }, + // new double[] { 27, 1 }, + // new double[] { 12, 0 }, + // new double[] { 79, 2 }, + // new double[] { 40, 1 }, + // new double[] { 30, 1 } + // }; + + // PS: the string representation for the matrix above can be obtained by calling + string str = matrix.ToString(CSharpJaggedMatrixFormatProvider.InvariantCulture); + + + + Finally, by expressing our data in terms of a simple numerical + matrix we will be able to feed it to any machine learning algorithm. + The following code section shows how to create a + linear multi-class Support Vector Machine to classify ages into any + of the previously considered text labels ("child", "adult" or "elder"). + + + // Now we will be able to feed this matrix to any machine learning + // algorithm without having to worry about text labels in our data: + + // Use the first column as input and the second column a output: + + double[][] inputs = matrix.GetColumns(0); // Age column + int[] outputs = matrix.GetColumn(1).ToInt32(); // Label column + + + // Create a multi-class SVM for one input (Age) and three classes (Label) + var machine = new MulticlassSupportVectorMachine(inputs: 1, classes: 3); + + // Create a Multi-class learning algorithm for the machine + var teacher = new MulticlassSupportVectorLearning(machine, inputs, outputs); + + // Configure the learning algorithm to use SMO to train the + // underlying SVMs in each of the binary class subproblems. + teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => + new SequentialMinimalOptimization(svm, classInputs, classOutputs); + + // Run the learning algorithm + double error = teacher.Run(); // error will be zero + + + // After we have learned the machine, we can use it to classify + // new data points, and use the codebook to translate the machine + // outputs to the original text labels: + + string result1 = codebook.Translate("Label", machine.Compute(10)); // child + string result2 = codebook.Translate("Label", machine.Compute(40)); // adult + string result3 = codebook.Translate("Label", machine.Compute(70)); // elder + + + + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Creates a new Codification Filter. + + + + + + Translates a value of a given variable + into its integer (codeword) representation. + + + The name of the variable's data column. + The value to be translated. + + An integer which uniquely identifies the given value + for the given variable. + + + + + Translates an array of values into their + integer representation, assuming values + are given in original order of columns. + + + The values to be translated. + + An array of integers in which each value + uniquely identifies the given value for each of + the variables. + + + + + Translates an array of values into their + integer representation, assuming values + are given in original order of columns. + + + A containing the values to be translated. + The columns of the containing the + values to be translated. + + An array of integers in which each value + uniquely identifies the given value for each of + the variables. + + + + + Translates a value of the given variables + into their integer (codeword) representation. + + + The names of the variable's data column. + The values to be translated. + + An array of integers in which each integer + uniquely identifies the given value for the given + variables. + + + + + Translates a value of the given variables + into their integer (codeword) representation. + + + The variable name. + The values to be translated. + + An array of integers in which each integer + uniquely identifies the given value for the given + variables. + + + + + Translates a value of the given variables + into their integer (codeword) representation. + + + The variable name. + The values to be translated. + + An array of integers in which each integer + uniquely identifies the given value for the given + variables. + + + + + Translates an integer (codeword) representation of + the value of a given variable into its original + value. + + + The variable name. + The codeword to be translated. + + The original meaning of the given codeword. + + + + + Translates an integer (codeword) representation of + the value of a given variable into its original + value. + + + The name of the variable's data column. + The codewords to be translated. + + The original meaning of the given codeword. + + + + + Translates the integer (codeword) representations of + the values of the given variables into their original + values. + + + The name of the variables' columns. + The codewords to be translated. + + The original meaning of the given codewords. + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a set of string labels. + + + The variable name. + A set of values that this variable can assume. + + + + + Auto detects the filter options by analyzing a set of string labels. + + + The variable names. + A set of values that those variable can assume. + The first element of the array is assumed to be related to the first + column name parameter. + + + + + Options for processing a column. + + + + + + Forces the given key to have a specific symbol value. + + + The key. + The value that should be associated with this key. + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + The initial mapping for this column. + + + + + Constructs a new Options object. + + + + + + Gets or sets the label mapping for translating + integer labels to the original string labels. + + + + + + Gets the number of symbols used to code this variable. + + + + + + Gets the codification type that should be used for this variable. + + + + + + Gets the values associated with each symbol, in the order of the symbols. + + + + + + Value discretization preprocessing filter. + + + + This filter converts double or decimal values with an fractional + part to the nearest possible integer according to a given threshold + and a rounding rule. + + + + // Show the start data + DataGridBox.Show(table); + + + + + + // Create a new data projection (column) filter + var filter = new Discretization("Cost (M)"); + + // Apply the filter and get the result + DataTable result = filter.Apply(table); + + // Show it + DataGridBox.Show(result); + + + + + + + + + Creates a new Discretization filter. + + + + + + Creates a new Discretization filter. + + + + + + Processes the current filter. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Options for the discretization filter. + + + + + + Constructs a new Options class for the discretization filter. + + + + + + Constructs a new Options object. + + + + + + Gets or sets the threshold for the discretization filter. + + + + + + Gets or sets whether the discretization threshold is symmetric. + + + + + If a symmetric threshold of 0.4 is used, for example, a real value of + 0.5 will be rounded to 1.0 and a real value of -0.5 will be rounded to + -1.0. + + If a non-symmetric threshold of 0.4 is used, a real value of 0.5 + will be rounded towards 1.0, but a real value of -0.5 will be rounded + to 0.0 (because |-0.5| is higher than the threshold of 0.4). + + + + + + Sequence of table processing filters. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Sequence of filters to apply. + + + + + Applies the sequence of filters to a given table. + + + + + Data normalization preprocessing filter. + + + + The normalization filter is able to transform numerical data into + Z-Scores, subtracting the mean for each variable and dividing by + their standard deviation. The filter is able to distinguish + numerical columns automatically, leaving other columns unaffected. + It is also possible to control which columns should be processed + by the filter. + + + + Suppose we have a data table relating the age of a person and its + categorical classification, as in "child", "adult" or "elder". + The normalization filter can be used to transform the "Age" column + into Z-scores, as shown below: + + + // Create the aforementioned sample table + DataTable table = new DataTable("Sample data"); + table.Columns.Add("Age", typeof(double)); + table.Columns.Add("Label", typeof(string)); + + // age label + table.Rows.Add(10, "child"); + table.Rows.Add(07, "child"); + table.Rows.Add(04, "child"); + table.Rows.Add(21, "adult"); + table.Rows.Add(27, "adult"); + table.Rows.Add(12, "child"); + table.Rows.Add(79, "elder"); + table.Rows.Add(40, "adult"); + table.Rows.Add(30, "adult"); + + // The filter will ignore non-real (continuous) data + Normalization normalization = new Normalization(table); + + double mean = normalization["Age"].Mean; // 25.55 + double sdev = normalization["Age"].StandardDeviation; // 23.29 + + // Now we can process another table at once: + DataTable result = normalization.Apply(table); + + // The result will be a table with the same columns, but + // in which any column named "Age" will have been normalized + // using the previously detected mean and standard deviation: + + DataGridBox.Show(result); + + + + The resulting data is shown below: + + + + + + + + + + + Creates a new data normalization filter. + + + + + + Creates a new data normalization filter. + + + + + + Creates a new data normalization filter. + + + + + + Processes the current filter. + + + + + + Applies the Filter to a . + + + The source . + + The processed . + + + + + Applies the Filter to a . + + + The source . + + The processed . + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a given matrix. + + + + + + Options for normalizing a column. + + + + + + Constructs a new Options object. + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + + + + Constructs a new Options object for the given column. + + + + The name of the column to create this options for. + + + The mean value for normalization. + The standard deviation value for standardization. + + + + + Gets or sets the mean of the data contained in the column. + + + + + Gets or sets the standard deviation of the data contained in the column. + + + + + Gets or sets if the column's data should be standardized to Z-Scores. + + + + + Principal component projection filter. + + + + + + Creates a new Principal Component Projection filter. + + + + + + Creates a new data normalization filter. + + + + + + Processes the filter. + + + The data. + + + + + Auto detects the filter options by analyzing a given . + + + + + + Gets or sets the analysis associated with the filter. + + + + + + Options for normalizing a column. + + + + + + Initializes a new instance of the class. + + + Name of the column. + + + + + Relational-algebra projection filter. + + + + This filter is able to selectively remove columns from tables, and keep + only the columns of interest. + + + + + // Show the start data + DataGridBox.Show(table); + + + + + + // Create a new data projection (column) filter + var filter = new Projection("Floors", "Finished"); + + // Apply the filter and get the result + DataTable result = filter.Apply(table); + + // Show it + DataGridBox.Show(result); + + + + + + + + + + Creates a new projection filter. + + + + + + Creates a new projection filter. + + + + + + Creates a new projection filter. + + + + + + Applies the filter to the DataTable. + + + + + + List of columns to keep in the projection. + + + + + + Linear Scaling Filter + + + + + + Creates a new Linear Scaling Filter. + + + + + + Creates a new Linear Scaling Filter. + + + + + + Creates a new Linear Scaling Filter. + + + + + + Creates a new Linear Scaling Filter. + + + + + + Applies the filter to the DataTable. + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Auto detects the filter options by analyzing a given . + + + + + + Options for the Linear Scaling filter. + + + + + + Creates a new column options. + + + + + + Constructs a new Options object. + + + + + + Range of the input values + + + + + + Target range of the output values after scaling. + + + + + + Relational-algebra selection filter. + + + + + + Constructs a new Selection Filter. + + + The filtering criteria. + The desired sort order. + + + + + Constructs a new Selection Filter. + + + The filtering criteria. + + + + + Constructs a new Selection Filter. + + + + + + Applies the filter to the current data. + + + + + + Gets or sets the eSQL filter expression for the filter. + + + + + + Gets or sets the ordering to apply for the filter. + + + + + + Calculates the prevalence of a class for each variable. + + + An array of counts detailing the occurrence of the first class. + An array of counts detailing the occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Calculates the prevalence of a class. + + + A matrix containing counted, grouped data. + The index for the column which contains counts for occurrence of the first class. + The index for the column which contains counts for occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Groups the occurrences contained in data matrix of binary (dichotomous) data. + + + A data matrix containing at least a column of binary data. + Index of the column which contains the group label name. + Index of the column which contains the binary [0,1] data. + + + A matrix containing the group label in the first column, the number of occurrences of the first class + in the second column and the number of occurrences of the second class in the third column. + + + + + + Divides values into groups given a vector + containing the group labels for every value. + + + The type of the values. + The values to be separated into groups. + + A vector containing the class label associated with each of the + values. The labels must begin on 0 and its maximum value should + be the number of groups - 1. + + The original values divided into groups. + + + + + Divides values into groups given a vector + containing the group labels for every value. + + + The type of the values. + The values to be separated into groups. + + A vector containing the class label associated with each of the + values. The labels must begin on 0 and its maximum value should + be the number of groups - 1. + The number of groups. + + The original values divided into groups. + + + + + Extends a grouped data into a full observation matrix. + + + The group labels. + + An array containing he occurrence of the positive class + for each of the groups. + + An array containing he occurrence of the negative class + for each of the groups. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The grouped data matrix. + Index of the column which contains the labels + in the grouped data matrix. + Index of the column which contains + the occurrences for the first class. + Index of the column which contains + the occurrences for the second class. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Returns a random group assignment for a sample. + + + The sample size. + The number of groups. + + + + + Returns a random group assignment for a sample + into two mutually exclusive groups. + + + The sample size. + The proportion of samples between the groups. + + + + + Returns a random group assignment for a sample, making + sure different class labels are distributed evenly among + the groups. + + + A vector containing class labels. + The number of different classes in . + The number of groups. + + + + + Additive combination of kernels. + + + + + + Base class for kernel functions. This class provides automatic + distance calculations for classes that do not provide optimized + implementations. + + + + + + Kernel space distance interface for kernel functions. + + + + + + + + Kernel function interface. + + + + + In Machine Learning and statistics, a Kernel is a function that returns + the value of the dot product between the images of the two arguments. + + k(x,y) = ‹S(x),S(y)› + + + References: + + + http://www.support-vector.net/icml-tutorial.pdf + + + + + + + The kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + Squared distance between x and y in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + + Squared distance between x and y in feature (kernel) space. + + + + + + The kernel function. + + + Vector x in input space. + Vector y in input space. + + + Dot product in feature (kernel) space. + + + + + + Constructs a new additive kernel. + + + Kernels to combine. + + + + + Constructs a new additive kernel. + + + Kernels to combine. + + + Weight values for each of the kernels. + Default is to assign equal weights. + + + + + Additive Kernel Combination function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gets the combination of kernels to use. + + + + + + Gets the weight array to use in the weighted kernel sum. + + + + + + ANOVA (ANalysis Of VAriance) Kernel. + + + + The ANOVA kernel is a graph kernel, which can be + computed using dynamic programming tables. + + References: + - http://www.cse.ohio-state.edu/mlss09/mlss09_talks/1.june-MON/jst_tutorial.pdf + + + + + + Constructs a new ANOVA Kernel. + + + Length of the input vector. + Length of the subsequences for the ANOVA decomposition. + + + + + ANOVA Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Interface for Radial Basis Function kernels. + + + + + A radial basis function (RBF) is a real-valued function whose value depends only + on the distance from the origin, so that ϕ(x) = ϕ(||x||); or alternatively + on the distance from some other point c, called a center, so that + ϕ(x,c) = ϕ(||x−c||). Any function ϕ that satisfies the property + ϕ(x) = ϕ(||x||) is a radial function. The norm is usually Euclidean distance, + although other distance functions are also possible. + + + References: + + + Wikipedia, The Free Encyclopedia. Radial basis functions. Available on: + https://en.wikipedia.org/wiki/Radial_basis_function + + + + + + + The kernel function. + + + Distance z between two vectors in input space. + + Dot product in feature (kernel) space. + + + + + Interface for kernel functions + with support for automatic parameter estimation. + + + + + + + + + Estimates kernel parameters from the data. + + + The input data. + + + + + Common interface for kernel functions that can explicitly + project input points into the kernel feature space. + + + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Bessel Kernel. + + + + The Bessel kernel is well known in the theory of function spaces + of fractional smoothness. + + + + + + Constructs a new Bessel Kernel. + + + The order for the Bessel function. + The value for sigma. + + + + + Bessel Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Bessel Kernel Function + + + Distance z between two vectors in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the order of the Bessel function. + + + + + + Gets or sets the sigma constant for this kernel. + + + + + + B-Spline Kernel. + + + + + The B-Spline kernel is defined only in the interval [−1, 1]. It is + also a member of the Radial Basis Functions family of kernels. + + References: + + + Bart Hamers, Kernel Models for Large Scale Applications. Doctoral thesis. + Available on: ftp://ftp.esat.kuleuven.ac.be/pub/SISTA/hamers/PhD_bhamers.pdf + + + + + + + + Constructs a new B-Spline Kernel. + + + + + + B-Spline Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the B-Spline order. + + + + + + Cauchy Kernel. + + + + The Cauchy kernel comes from the Cauchy distribution (Basak, 2008). It is a + long-tailed kernel and can be used to give long-range influence and sensitivity + over the high dimension space. + + + + + + Constructs a new Cauchy Kernel. + + + The value for sigma. + + + + + Cauchy Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Cauchy Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Chi-Square Kernel. + + + + The Chi-Square kernel comes from the Chi-Square distribution. + + + + + + Constructs a new Chi-Square kernel. + + + + + + Chi-Square Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Circular Kernel. + + + + The circular kernel comes from a statistics perspective. It is an example + of an isotropic stationary kernel and is positive definite in R^2. + + + + + + Constructs a new Circular Kernel. + + + Value for sigma. + + + + + Circular Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Circular Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Composite Gaussian Kernel. + + + + + + Constructs a new Gaussian Dynamic Time Warping Kernel + + + The inner kernel function of the composite kernel. + + + + + Constructs a new Gaussian Dynamic Time Warping Kernel + + + The inner kernel function of the composite kernel. + The kernel's sigma parameter. + + + + + Gaussian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Estimates kernel parameters from the data. + + + The input data. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Gets or sets the sigma² value for the kernel. When setting + sigma², gamma gets updated accordingly (gamma = 0.5/sigma²). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Pearson VII universal kernel (PUK). + + + + + + Constructs a new Pearson VII universal kernel. + + + The Pearson's omega parameter w. Default is 1. + The Pearson's sigma parameter s. Default is 1. + + + + + Constructs a new Pearson VII universal kernel. + + + + + + Pearson Universal kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Pearson Universal function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's parameter omega. Default is 1. + + + + + + Gets or sets the kernel's parameter sigma. Default is 1. + + + + + + Normalized Kernel. + + + + This kernel definition can be used to provide normalized versions + of other kernel classes, such as the . A + normalized kernel will always produce distances between -1 and 1. + + + + + + Constructs a new Cauchy Kernel. + + + The kernel function to be normalized. + + + + + Normalized Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the inner kernel function + whose results should be normalized. + + + + + + Inverse Multiquadric Kernel. + + + + The inverse multiquadric kernel is only conditionally positive definite. + + + + + + Constructs a new Inverse Multiquadric Kernel. + + + The constant term theta. + + + + + Constructs a new Inverse Multiquadric Kernel. + + + + + + Inverse Multiquadric Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Inverse Multiquadric Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's constant value. + + + + + + Normalized Polynomial Kernel. This class is equivalent to the + Normalized>Polynomial> kernel but has more efficient + implementation. + + + + + + Constructs a new Normalized Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Normalized Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + + + + + Normalized polynomial kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's polynomial degree. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Value cache for kernel function evaluations. + + + + + This class works as a least-recently-used cache for elements + computed from a the kernel (Gram) matrix. Elements which have + not been needed for some time are discarded from the cache; + while elements which are constantly requested remains cached. + + + The use of cache may speedup learning by a large factor; however + the actual speedup may vary according to the choice of cache size. + + + + + + Constructs a new . + + + The kernel function. + The inputs values. + + + + + Constructs a new . + + + The kernel function. + The inputs values. + + The size for the cache, measured in number of + elements from the set. + Default is to use all elements. + + + + + Attempts to retrieve the value of the kernel function + from the diagonal of the kernel matrix. If the value + is not available, it is immediately computed and inserted + in the cache. + + + Index of the point to compute. + + The result of the kernel function k(p[i], p[i]). + + + + + Attempts to retrieve the kernel function evaluated between point at index i + and j. If it is not cached, it will be computed and the cache will be updated. + + + The index of the first point p to compute. + The index of the second point p to compute. + + The result of the kernel function k(p[i], p[j]). + + + + + Clears the cache. + + + + + + Resets cache statistics. + + + + + + Gets the pair of indices associated with a given key. + + + The key. + + A pair of indices of indicating which + element from the Kernel matrix is associated + with the given key. + + + + + Gets the key from the given indices. + + + The index i. + The index j. + + The key associated with the given indices. + + + + + Gets a copy of the data cache. + + + A copy of the data cache. + + + + + Gets a copy of the Least Recently Used (LRU) List of + Kernel Matrix elements. Elements on the start of the + list have been used most; elements at the end are + about to be discarded from the cache. + + + The Least Recently Used list of kernel matrix elements. + + + + + Gets the size of the cache, + measured in number of samples. + + + The size of this cache. + + + + + Gets the total number of cache hits. + + + + + + Gets the total number of cache misses. + + + + + + Gets the percentage of the cache currently in use. + + + + + + Attempts to retrieve the value of the kernel function + from the diagonal of the kernel matrix. If the value + is not available, it is immediately computed and inserted + in the cache. + + + Index of the point to compute. + + The result of the kernel function k(p[i], p[i]). + + + + + Attempts to retrieve the kernel function evaluated between point at index i + and j. If it is not cached, it will be computed and the cache will be updated. + + + The index of the first point p to compute. + The index of the second point p to compute. + + The result of the kernel function k(p[i], p[j]). + + + + + Quadratic Kernel. + + + + + + Input space distance interface for kernel functions. + + + + Kernels which implement this interface can be used to solve the pre-image + problem in + Kernel Principal Component Analysis and other methods based in Multi- + Dimensional Scaling. + + + + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Squared distance between x and y in input space. + + + + + Constructs a new Quadratic kernel. + + + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Quadratic kernel. + + + + + + Quadratic kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Quadratic kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Distance between x and y in input space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + Distance between x and y in input space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + The parameter of the kernel. + + + The feature space representation of the given point. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Symmetric Triangle Kernel. + + + + + References: + + + Chaudhuri et al, A Comparative Study of Kernels for the Multi-class Support Vector + Machine, 2008. Available on: http://www.computer.org/portal/web/csdl/doi/10.1109/ICNC.2008.803 + + + + + + + Constructs a new Symmetric Triangle Kernel + + + + + + Symmetric Triangle Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Symmetric Triangle Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the gamma value for the kernel. + + + + + + Squared Sinc Kernel. + + + + + References: + + + Chaudhuri et al, A Comparative Study of Kernels for the Multi-class Support Vector + Machine, 2008. Available on: http://www.computer.org/portal/web/csdl/doi/10.1109/ICNC.2008.803 + + + + + + + Constructs a new Squared Sinc Kernel + + + + + + Squared Sine Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Squared Sine Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the gamma value for the kernel. + + + + + + Custom Kernel. + + + + + + Constructs a new Custom kernel. + + + + + + Custom kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Dirichlet Kernel. + + + + + References: + + + A Tutorial on Support Vector Machines (1998). Available on: http://www.umiacs.umd.edu/~joseph/support-vector-machines4.pdf + + + + + + + Constructs a new Dirichlet Kernel + + + + + + Dirichlet Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the dimension for the kernel. + + + + + + Dynamic Time Warping Sequence Kernel. + + + + + The Dynamic Time Warping Sequence Kernel is a sequence kernel, accepting + vector sequences of variable size as input. Despite the sequences being + variable in size, the vectors contained in such sequences should have its + size fixed and should be informed at the construction of this kernel. + + The conversion of the DTW global distance to a dot product uses a combination + of a technique known as spherical normalization and the polynomial kernel. The + degree of the polynomial kernel and the alpha for the spherical normalization + should be given at the construction of the kernel. For more information, + please see the referenced papers shown below. + + + The use of a cache is highly advisable + when using this kernel. + + + + References: + + V. Wan, J. Carmichael; Polynomial Dynamic Time Warping Kernel Support + Vector Machines for Dysarthric Speech Recognition with Sparse Training + Data. Interspeech'2005 - Eurospeech - 9th European Conference on Speech + Communication and Technology. Lisboa, 2005. + + + + + + + The following example demonstrates how to create and learn a Support Vector + Machine (SVM) to recognize sequences using the Dynamic Time Warping kernel. + + + // Suppose you have sequences of multivariate observations, and that + // those sequences could be of arbitrary length. On the other hand, + // each observation have a fixed, delimited number of dimensions. + + // In this example, we have sequences of 3-dimensional observations. + // Each sequence can have an arbitrary length, but each observation + // will always have length 3: + + double[][][] sequences = + { + new double[][] // first sequence + { + new double[] { 1, 1, 1 }, // first observation of the first sequence + new double[] { 1, 2, 1 }, // second observation of the first sequence + new double[] { 1, 4, 2 }, // third observation of the first sequence + new double[] { 2, 2, 2 }, // fourth observation of the first sequence + }, + + new double[][] // second sequence (note that this sequence has a different length) + { + new double[] { 1, 1, 1 }, // first observation of the second sequence + new double[] { 1, 5, 6 }, // second observation of the second sequence + new double[] { 2, 7, 1 }, // third observation of the second sequence + }, + + new double[][] // third sequence + { + new double[] { 8, 2, 1 }, // first observation of the third sequence + }, + + new double[][] // fourth sequence + { + new double[] { 8, 2, 5 }, // first observation of the fourth sequence + new double[] { 1, 5, 4 }, // second observation of the fourth sequence + } + }; + + // Now, we will also have different class labels associated which each + // sequence. We will assign -1 to sequences whose observations start + // with { 1, 1, 1 } and +1 to those that do not: + + int[] outputs = + { + -1,-1, // First two sequences are of class -1 (those start with {1,1,1}) + 1, 1, // Last two sequences are of class +1 (don't start with {1,1,1}) + }; + + // At this point, we will have to "flat" out the input sequences from double[][][] + // to a double[][] so they can be properly understood by the SVMs. The problem is + // that, normally, SVMs usually expect the data to be comprised of fixed-length + // input vectors and associated class labels. But in this case, we will be feeding + // them arbitrary-length sequences of input vectors and class labels associated with + // each sequence, instead of each vector. + + double[][] inputs = new double[sequences.Length][]; + for (int i = 0; i < sequences.Length; i++) + inputs[i] = Matrix.Concatenate(sequences[i]); + + + // Now we have to setup the Dynamic Time Warping kernel. We will have to + // inform the length of the fixed-length observations contained in each + // arbitrary-length sequence: + // + DynamicTimeWarping kernel = new DynamicTimeWarping(length: 3); + + // Now we can create the machine. When using variable-length + // kernels, we will need to pass zero as the input length: + var svm = new KernelSupportVectorMachine(kernel, inputs: 0); + + + // Create the Sequential Minimal Optimization learning algorithm + var smo = new SequentialMinimalOptimization(svm, inputs, outputs) + { + Complexity = 1.5 + }; + + // And start learning it! + double error = smo.Run(); // error will be 0.0 + + + // At this point, we should have obtained an useful machine. Let's + // see if it can understand a few examples it hasn't seem before: + + double[][] a = + { + new double[] { 1, 1, 1 }, + new double[] { 7, 2, 5 }, + new double[] { 2, 5, 1 }, + }; + + double[][] b = + { + new double[] { 7, 5, 2 }, + new double[] { 4, 2, 5 }, + new double[] { 1, 1, 1 }, + }; + + // Following the aforementioned logic, sequence (a) should be + // classified as -1, and sequence (b) should be classified as +1. + + int resultA = System.Math.Sign(svm.Compute(Matrix.Concatenate(a))); // -1 + int resultB = System.Math.Sign(svm.Compute(Matrix.Concatenate(b))); // +1 + + + + + + + Constructs a new Dynamic Time Warping kernel. + + + + The length of the feature vectors + contained in each sequence. + + + + + + Constructs a new Dynamic Time Warping kernel. + + + + The length of the feature vectors + contained in each sequence. + + + + The hypersphere ratio. Default value is 1. + + + + + + Constructs a new Dynamic Time Warping kernel. + + + + The length of the feature vectors + contained in each sequence. + + + + The hypersphere ratio. Default value is 1. + + + + The degree of the kernel. Default value is 1 (linear kernel). + + + + + + Dynamic Time Warping kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + + Squared distance between x and y in feature (kernel) space. + + + + + + Global distance D(X,Y) between two sequences of vectors. + + + The current thread local storage. + A sequence of vectors. + A sequence of vectors. + + The global distance between X and Y. + + + + + Projects vectors from a sequence of vectors into + a hypersphere, augmenting their size in one unit + and normalizing them to be unit vectors. + + + A sequence of vectors. + + A sequence of vector projections. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations + before the is reclaimed by garbage collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the length for the feature vectors + contained in each sequence used by the kernel. + + + + + + Gets or sets the hypersphere ratio. + + + + + + Gets or sets the polynomial degree for this kernel. + + + + + + Gaussian Kernel. + + + + + The Gaussian kernel requires tuning for the proper value of σ. Different approaches + to this problem includes the use of brute force (i.e. using a grid-search algorithm) + or a gradient ascent optimization. + + + References: + + + P. F. Evangelista, M. J. Embrechts, and B. K. Szymanski. Some Properties + of the Gaussian Kernel for One Class Learning. Available on: + http://www.cs.rpi.edu/~szymansk/papers/icann07.pdf + + + + + + + Constructs a new Gaussian Kernel + + + + + + Constructs a new Gaussian Kernel + + + The kernel's sigma parameter. + + + + + Gaussian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gaussian Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + Squared distance between x and y in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Computes the distance in input space given + a distance computed in feature space. + + + Distance in feature space. + Distance in input space. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Computes the set of all distances between + all points in a random subset of the data. + + + The inputs points. + The number of samples. + + + + + Estimates kernel parameters from the data. + + + The input data. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Called when the value for any of the + kernel's parameters has changed. + + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + The number of random samples to analyze. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Estimates appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The inner kernel. + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Computes the set of all distances between + all points in a random subset of the data. + + + The inner kernel. + The inputs points. + The number of samples. + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Gets or sets the sigma² value for the kernel. When setting + sigma², gamma gets updated accordingly (gamma = 0.5/sigma²). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5/sigma^2). + + + + + + Generalized Histogram Intersection Kernel. + + + + The Generalized Histogram Intersection kernel is built based on the + Histogram Intersection Kernel for image classification but applies + in a much larger variety of contexts (Boughorbel, 2005). + + + + + + Constructs a new Generalized Histogram Intersection Kernel. + + + + + + Generalized Histogram Intersection Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Hyperbolic Secant Kernel. + + + + + References: + + + Chaudhuri et al, A Comparative Study of Kernels for the Multi-class Support Vector + Machine, 2008. Available on: http://www.computer.org/portal/web/csdl/doi/10.1109/ICNC.2008.803 + + + + + + + Constructs a new Hyperbolic Secant Kernel + + + + + + Hyperbolic Secant Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Hyperbolic Secant Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the gamma value for the kernel. + + + + + + Laplacian Kernel. + + + + + + Constructs a new Laplacian Kernel + + + + + + Constructs a new Laplacian Kernel + + + The sigma slope value. + + + + + Laplacian Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Laplacian Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Squared distance between x and y in input space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Computes the distance in input space given + a distance computed in feature space. + + + Distance in feature space. + Distance in input space. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + + A Laplacian kernel initialized with an appropriate sigma value. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Laplacian kernel initialized with an appropriate sigma value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Linear Kernel. + + + + + + Constructs a new Linear kernel. + + + A constant intercept term. Default is 1. + + + + + Constructs a new Linear Kernel. + + + + + + Linear kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Linear kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Squared distance between x and y in input space. + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + The parameter of the kernel. + + + The feature space representation of the given point. + + + + + + Gets or sets the kernel's intercept term. Default is 0. + + + + + + Logarithm Kernel. + + + + The Log kernel seems to be particularly interesting for + images, but is only conditionally positive definite. + + + + + + Constructs a new Log Kernel + + + The kernel's degree. + + + + + Constructs a new Log Kernel + + + The kernel's degree. + + + + + Log Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Log Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's degree. + + + + + + Multiquadric Kernel. + + + + The multiquadric kernel is only conditionally positive-definite. + + + + + + Constructs a new Multiquadric Kernel. + + + The constant term theta. + + + + + Constructs a new Multiquadric Kernel. + + + + + + Multiquadric Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Multiquadric Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's constant value. + + + + + + Polynomial Kernel. + + + + + + Constructs a new Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + + + + + Polynomial kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Polynomial kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in input space. + Vector y in input space. + + Squared distance between x and y in feature (kernel) space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + Distance between x and y in input space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + The parameter of the kernel. + The parameter of the kernel. + + + The feature space representation of the given point. + + + + + + Gets or sets the kernel's polynomial degree. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Power Kernel, also known as the (Unrectified) Triangular Kernel. + + + + The Power kernel is also known as the (unrectified) triangular kernel. + It is an example of scale-invariant kernel (Sahbi and Fleuret, 2004) + and is also only conditionally positive definite. + + + + + + Constructs a new Power Kernel. + + + The kernel's degree. + + + + + Constructs a new Power Kernel. + + + The kernel's degree. + + + + + Power Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Power Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's degree. + + + + + + Precomputed Gram Matrix Kernel. + + + + + + Constructs a new Precomputed Matrix Kernel. + + + + + + Kernel function. + + + An array containing a first element with the index for input vector x. + An array containing a first element with the index for input vector y. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the precomputed Gram matrix for this kernel. + + + + + + Rational Quadratic Kernel. + + + + The Rational Quadratic kernel is less computationally intensive than + the Gaussian kernel and can be used as an alternative when using the + Gaussian becomes too expensive. + + + + + + Constructs a new Rational Quadratic Kernel. + + + The constant term theta. + + + + + Rational Quadratic Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Rational Quadratic Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's constant term. + + + + + + Sigmoid Kernel. + + + + Sigmoid kernel of the form k(x,z) = tanh(a * x'z + c). Sigmoid kernels are only + conditionally positive definite for some values of a and c, and therefore may not + induce a reproducing kernel Hilbert space. However, they have been successfully + used in practice (Schölkopf and Smola, 2002). + + + + + + Estimates suitable values for the sigmoid kernel + by exploring the response area of the tanh function. + + + An input data set. + + A Sigmoid kernel initialized with appropriate values. + + + + + Estimates suitable values for the sigmoid kernel + by exploring the response area of the tanh function. + + + An input data set. + The size of the subset to use in the estimation. + The interquartile range for the data. + + A Sigmoid kernel initialized with appropriate values. + + + + + Computes the set of all distances between + all points in a random subset of the data. + + + The inputs points. + The number of samples. + + + + + Constructs a Sigmoid kernel. + + + + + + Constructs a Sigmoid kernel. + + + + Alpha parameter. Typically should be set to + a small positive value. Default is 0.01. + + Constant parameter. Typically should be set to + a negative value. Default is -e (Euler's constant). + + + + + Sigmoid kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Sigmoid kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's alpha parameter. + + + + In a sigmoid kernel, alpha is a inner product + coefficient for the hyperbolic tangent function. + + + + + + Gets or sets the kernel's constant term. + + + + + + Sparse Cauchy Kernel. + + + The Cauchy kernel comes from the Cauchy distribution (Basak, 2008). It is a + long-tailed kernel and can be used to give long-range influence and sensitivity + over the high dimension space. + + + + + + Constructs a new Sparse Cauchy Kernel. + + + The value for sigma. + + + + + Cauchy Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Gets or sets the kernel's sigma value. + + + + + + Sparse Gaussian Kernel. + + + + + The Gaussian kernel requires tuning for the proper value of σ. Different approaches + to this problem includes the use of brute force (i.e. using a grid-search algorithm) + or a gradient ascent optimization. + + + For an example on how to create a sparse kernel, please see the page. + + + References: + + + P. F. Evangelista, M. J. Embrechts, and B. K. Szymanski. Some Properties of the + Gaussian Kernel for One Class Learning. Available on: http://www.cs.rpi.edu/~szymansk/papers/icann07.pdf + + + + + + + Constructs a new Sparse Gaussian Kernel + + + + + + Constructs a new Sparse Gaussian Kernel + + + The standard deviation for the Gaussian distribution. Default is 1. + + + + + Gaussian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Distance between x and y in input space. + + + + + + Computes the squared distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + + Squared distance between x and y in input space. + + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + A Gaussian kernel initialized with an appropriate sigma value. + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Sparse Laplacian Kernel. + + + + + + Constructs a new Laplacian Kernel + + + + + + Constructs a new Laplacian Kernel + + + The sigma slope value. + + + + + Laplacian Kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the distance in input space + between two points given in feature space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + + Distance between x and y in input space. + + + + + Estimate appropriate values for sigma given a data set. + + + + This method uses a simple heuristic to obtain appropriate values + for sigma in a radial basis function kernel. The heuristic is shown + by Caputo, Sim, Furesjo and Smola, "Appearance-based object + recognition using SVMs: which kernel should I use?", 2002. + + + The data set. + The number of random samples to analyze. + The range of suitable values for sigma. + + A Laplacian kernel initialized with an appropriate sigma value. + + + + + Gets or sets the sigma value for the kernel. When setting + sigma, gamma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Gets or sets the gamma value for the kernel. When setting + gamma, sigma gets updated accordingly (gamma = 0.5*/sigma^2). + + + + + + Sparse Linear Kernel. + + + + The Sparse Linear kernel accepts inputs in the libsvm sparse format. + + + + + The following example shows how to teach a kernel support vector machine using + the linear sparse kernel to perform the AND classification task using sparse + vectors. + + + // Example AND problem + double[][] inputs = + { + new double[] { }, // 0 and 0: 0 (label -1) + new double[] { 2,1 }, // 0 and 1: 0 (label -1) + new double[] { 1,1 }, // 1 and 0: 0 (label -1) + new double[] { 1,1, 2,1 } // 1 and 1: 1 (label +1) + }; + + // Dichotomy SVM outputs should be given as [-1;+1] + int[] labels = + { + // 0, 0, 0, 1 + -1, -1, -1, 1 + }; + + // Create a Support Vector Machine for the given inputs + // (sparse machines should use 0 as the number of inputs) + var machine = new KernelSupportVectorMachine(new SparseLinear(), inputs: 0); + + // Instantiate a new learning algorithm for SVMs + var smo = new SequentialMinimalOptimization(machine, inputs, labels); + + // Set up the learning algorithm + smo.Complexity = 100000.0; + + // Run + double error = smo.Run(); // should be zero + + double[] predicted = inputs.Apply(machine.Compute).Sign(); + + // Outputs should be -1, -1, -1, +1 + + + + + + + Constructs a new Linear kernel. + + + A constant intercept term. Default is 0. + + + + + Constructs a new Linear Kernel. + + + + + + Sparse Linear kernel function. + + + Sparse vector x in input space. + Sparse vector y in input space. + Dot product in feature (kernel) space. + + + + + Computes the squared distance in feature space + between two points given in input space. + + + Vector x in feature (kernel) space. + Vector y in feature (kernel) space. + Distance between x and y in input space. + + + + + Computes the product of two vectors given in sparse representation. + + + The first vector x. + The second vector y. + + The inner product x * y between the given vectors. + + + + + Computes the squared Euclidean distance of two vectors given in sparse representation. + + + The first vector x. + The second vector y. + + + The squared Euclidean distance d² = |x - y|² between the given vectors. + + + + + + Gets or sets the kernel's intercept term. + + + + + + Sparse Polynomial Kernel. + + + + + + Constructs a new Sparse Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + The polynomial constant for this kernel. Default is 1. + + + + + Constructs a new Polynomial kernel of a given degree. + + + The polynomial degree for this kernel. + + + + + Polynomial kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gets or sets the kernel's polynomial degree. + + + + + + Gets or sets the kernel's polynomial constant term. + + + + + + Sparse Sigmoid Kernel. + + + + Sigmoid kernels are not positive definite and therefore do not induce + a reproducing kernel Hilbert space. However, they have been successfully + used in practice (Schölkopf and Smola, 2002). + + + + + + Constructs a Sparse Sigmoid kernel. + + + Alpha parameter. + Constant parameter. + + + + + Constructs a Sparse Sigmoid kernel. + + + + + + Sigmoid kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Gets or sets the kernel's gamma parameter. + + + + In a sigmoid kernel, gamma is a inner product + coefficient for the hyperbolic tangent function. + + + + + + Gets or sets the kernel's constant term. + + + + + + Spherical Kernel. + + + + The spherical kernel comes from a statistics perspective. It is an example + of an isotropic stationary kernel and is positive definite in R^3. + + + + + + Constructs a new Spherical Kernel. + + + Value for sigma. + + + + + Spherical Kernel Function + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Spherical Kernel Function + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Infinite Spline Kernel function. + + + + The Spline kernel is given as a piece-wise cubic + polynomial, as derived in the works by Gunn (1998). + + + + + + Constructs a new Spline Kernel. + + + + + + Spline Kernel Function + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Taylor approximation for the explicit Gaussian kernel. + + + + + References: + + + Lin, Keng-Pei, and Ming-Syan Chen. "Efficient kernel approximation for large-scale support + vector machine classification." Proceedings of the Eleventh SIAM International Conference on + Data Mining. 2011. Available on: http://epubs.siam.org/doi/pdf/10.1137/1.9781611972818.19 + + + + + + + + Constructs a new kernel. + + + + + + Constructs a new kernel with the given sigma. + + + The kernel's sigma parameter. + + + + + Constructs a new kernel with the given sigma. + + + The kernel's sigma parameter. + The Gaussian approximation degree. Default is 1024. + + + + + Projects an input point into feature space. + + + The input point to be projected into feature space. + + + The feature space representation of the given point. + + + + + + Called when the value for any of the + kernel's parameters has changed. + + + + + + Gets or sets the approximation degree + for this kernel. Default is 1024. + + + + + + Tensor Product combination of Kernels. + + + + + + Constructs a new additive kernel. + + + Kernels to combine. + + + + + Tensor Product Kernel Combination function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Generalized T-Student Kernel. + + + + The Generalized T-Student Kernel is a Mercer Kernel and thus forms + a positive semi-definite Kernel matrix (Boughorbel, 2004). It has + a similar form to the Inverse Multiquadric Kernel. + + + + + + Constructs a new Generalized T-Student Kernel. + + + The kernel's degree. + + + + + Generalized T-Student Kernel function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Generalized T-Student Kernel function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the degree of this kernel. + + + + + + Wave Kernel. + + + + The Wave kernel is symmetric positive semi-definite (Huang, 2008). + + + + + + Constructs a new Wave Kernel. + + + Value for sigma. + + + + + Wave Kernel Function. + + + Vector x in input space. + Vector y in input space. + + Dot product in feature (kernel) space. + + + + + Wave Kernel Function. + + + Distance z in input space. + + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the kernel's sigma value. + + + + + + Wavelet Kernel. + + + + + In Wavelet analysis theory, one of the common goals is to express or + approximate a signal or function using a family of functions generated + by dilations and translations of a function called the mother wavelet. + + The Wavelet kernel uses a mother wavelet function together with dilation + and translation constants to produce such representations and build a + inner product which can be used by kernel methods. The default wavelet + used by this class is the mother function h(x) = cos(1.75x)*exp(-x²/2). + + + References: + + + Li Zhang, Weida Zhou, and Licheng Jiao; Wavelet Support Vector Machine. IEEE + Transactions on Systems, Man, and Cybernetics—Part B: Cybernetics, Vol. 34, + No. 1, February 2004. + + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Constructs a new Wavelet kernel. + + + + + + Wavelet kernel function. + + + Vector x in input space. + Vector y in input space. + Dot product in feature (kernel) space. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the Mother wavelet for this kernel. + + + + + + Gets or sets the wavelet dilation for this kernel. + + + + + + Gets or sets the wavelet translation for this kernel. + + + + + + Gets or sets whether this is + an invariant Wavelet kernel. + + + + + + Absolute link function. + + + + + Link functions can be used in many models, such as in + and Support + Vector Machines. + + + + + + + + + Link function interface. + + + + + The link function provides the relationship between the linear predictor and the + mean of the distribution function. There are many commonly used link functions, and + their choice can be somewhat arbitrary. It can be convenient to match the domain of + the link function to the range of the distribution function's mean. + + + References: + + + Wikipedia contributors. "Generalized linear model." Wikipedia, The Free Encyclopedia. + + + + + + + + + + + The link function. + + + An input value. + + The transformed input value. + + + + + The mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new Absolute link function. + + + The beta value. + + + + + Creates a new Absolute link function. + + + + + + The Absolute link function. + + + An input value. + + The transformed input value. + + + The absolute link function is given by f(x) = abs(x) / b. + + + + + + The mean function. + + + A transformed value. + + The reverse transformed value. + + + The inverse absolute link function is given by g(x) = B * abs(x). + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the absolute link function + is given by f'(x) = B. + + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the absolute link function + in terms of y = f(x) is given by f'(y) = B. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient b (slope). + + + + + + Cauchy link function. + + + + + The Cauchy link function is associated with the + Cauchy distribution. + + + Link functions can be used in many models, such as in + and Support + Vector Machines. + + + + + + + + + Creates a new Cauchit link function. + + + The beta value. Default is 1/pi. + The constant value. Default is 0.5. + + + + + Creates a new Cauchit link function. + + + + + + The Cauchit link function. + + + An input value. + + The transformed input value. + + + The Cauchit link function is given by f(x) = tan((x - A) / B). + + + + + + The Cauchit mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + The inverse Cauchit link function is given by g(x) = tan(x) * B + A. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the Cauchit link function + in terms of y = f(x) is given by + + f'(y) = B / (x * x + 1) + + + + + + + First derivative of the mean function + expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the Cauchit link function + in terms of y = f(x) is given by + + f'(y) = B / (tan((y - A) / B)² + 1) + + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Threshold link function. + + + + + + Creates a new Absolute link function. + + + The threshold value. + + + + + Creates a new Absolute link function. + + + + + + The Absolute link function. + + + An input value. + + The transformed input value. + + + + + The mean function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Threshold coefficient b. + + + + + + Sin link function. + + + + + + Creates a new Sin link function. + + + The beta value. + The constant value. + + + + + Creates a new Sin link function. + + + + + + The Sin link function. + + + An input value. + + The transformed input value. + + + + + The Sin mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Natural logarithm of natural logarithm link function. + + + + + + Creates a new Log-Log link function. + + + The beta value. + The constant value. + + + + + Creates a new Log-Log link function. + + + + + + Creates a Complementary Log-Log link function. + + + + + + The Log-log link function. + + + An input value. + + The transformed input value. + + + + + The Log-log mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Natural logarithm link function. + + + + The natural logarithm link function is associated with + the Poisson distribution. + + + + + + Creates a new Log link function. + + + The beta value. Default is 1. + The constant value. Default is 0. + + + + + Creates a new Log link function. + + + + + + The link function. + + + An input value. + + The transformed input value. + + + + + The mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Inverse squared link function. + + + + The inverse squared link function is associated with the + Inverse Gaussian distribution. + + + + + + Creates a new Inverse squared Link function. + + + The beta value. + The constant value. + + + + + Creates a new Inverse squared Link function. + + + + + + The Inverse Squared link function. + + + An input value. + + The transformed input value. + + + + + The Inverse Squared mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Probit link function. + + + + + + Creates a new Probit link function. + + + + + + The Probit link function. + + + An input value. + + The transformed input value. + + + The Probit link function is given by f(x) = Phi^-1(x), + in which Phi^-1 is the + inverse Normal (Gaussian) cumulative + distribution function. + + + + + + The Probit mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + The Probit link function is given by g(x) = Phi(x), + in which Phi is the + Normal (Gaussian) cumulative + distribution function. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the identity link function is + given by f'(x) = exp(c - (Phi^-1(x))² * 0.5) in + which c = -log(sqrt(2*π) + and Phi^-1 is the + inverse Normal (Gaussian) cumulative distribution function. + + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the identity link function in terms + of y = f(x) is given by f'(y) = exp(c - x * x * 0.5) + in which c = -log(sqrt(2*π) + and x = + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Set of statistics functions. + + + + This class represents collection of common functions used in statistics. + Every Matrix function assumes data is organized in a table-like model, + where Columns represents variables and Rows represents a observation of + each variable. + + + + + + Computes the mean of the given values. + + + A double array containing the vector members. + + The mean of the given data. + + + + + Computes the mean of the given values. + + + An integer array containing the vector members. + + The mean of the given data. + + + + + Computes the Geometric mean of the given values. + + + A double array containing the vector members. + + The geometric mean of the given data. + + + + + Computes the log geometric mean of the given values. + + + A double array containing the vector members. + + The log geometric mean of the given data. + + + + + Computes the geometric mean of the given values. + + + A double array containing the vector members. + + The geometric mean of the given data. + + + + + Computes the log geometric mean of the given values. + + + A double array containing the vector members. + + The log geometric mean of the given data. + + + + + Computes the (weighted) grand mean of a set of samples. + + + A double array containing the sample means. + A integer array containing the sample's sizes. + + The grand mean of the samples. + + + + + Computes the mean of the given values. + + + A unsigned short array containing the vector members. + + The mean of the given data. + + + + + Computes the mean of the given values. + + + A float array containing the vector members. + + The mean of the given data. + + + + + Computes the truncated (trimmed) mean of the given values. + + + A double array containing the vector members. + Whether to perform operations in place, overwriting the original vector. + A boolean parameter informing if the given values have already been sorted. + The percentage of observations to drop from the sample. + + The mean of the given data. + + + + + Computes the contraharmonic mean of the given values. + + + A unsigned short array containing the vector members. + The order of the harmonic mean. Default is 1. + + The contraharmonic mean of the given data. + + + + + Computes the contraharmonic mean of the given values. + + + A unsigned short array containing the vector members. + + The contraharmonic mean of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + The mean of the vector, if already known. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + A float array containing the vector members. + The mean of the vector, if already known. + The standard deviation of the given data. + + + + Computes the Standard Deviation of the given values. + + An integer array containing the vector members. + The mean of the vector, if already known. + The standard deviation of the given data. + + + + Computes the Standard Error for a sample size, which estimates the + standard deviation of the sample mean based on the population mean. + + The sample size. + The sample standard deviation. + The standard error for the sample. + + + + Computes the Standard Error for a sample size, which estimates the + standard deviation of the sample mean based on the population mean. + + A double array containing the samples. + The standard error for the sample. + + + + Computes the Median of the given values. + + A double array containing the vector members. + The median of the given data. + + + + Computes the Median of the given values. + + + An integer array containing the vector members. + A boolean parameter informing if the given values have already been sorted. + The median of the given data. + + + + + Computes the Median of the given values. + + + An integer array containing the vector members. + A boolean parameter informing if the given values have already been sorted. + The length of the subarray, starting at . + The starting index of the array. + + The median of the given data. + + + + + Computes the Quartiles of the given values. + + + An integer array containing the vector members. + A boolean parameter informing if the given values have already been sorted. + The inter-quartile range for the values. + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + An integer array containing the vector members. + The first quartile. + The third quartile. + A boolean parameter informing if the given values have already been sorted. + The second quartile, the median of the given data. + + + + + Computes the Variance of the given values. + + + A double precision number array containing the vector members. + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A double precision number array containing the vector members. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + An integer number array containing the vector members. + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + An integer number array containing the vector members. + + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + A single precision number array containing the vector members. + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + + The variance of the given data. + + + + + Computes the Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + The variance of the given data. + + + + + Computes the pooled standard deviation of the given values. + + + The grouped samples. + + True to compute a pooled standard deviation using unbiased estimates + of the population variance; false otherwise. Default is true. + + + + + Computes the pooled standard deviation of the given values. + + + The grouped samples. + + + + + Computes the pooled standard deviation of the given values. + + + The number of samples used to compute the . + The unbiased variances for the samples. + + True to compute a pooled standard deviation using unbiased estimates + of the population variance; false otherwise. Default is true. + + + + + Computes the pooled variance of the given values. + + + The grouped samples. + + + + + Computes the pooled variance of the given values. + + + + True to obtain an unbiased estimate of the population + variance; false otherwise. Default is true. + + The grouped samples. + + + + + Computes the pooled variance of the given values. + + + The number of samples used to compute the . + The unbiased variances for the samples. + + True to obtain an unbiased estimate of the population + variance; false otherwise. Default is true. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + Returns how many times the detected mode happens in the values. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + Returns how many times the detected mode happens in the values. + + The most common value in the given data. + + + + + Computes the Covariance between two arrays of values. + + + A number array containing the first vector elements. + A number array containing the second vector elements. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Covariance between two arrays of values. + + + A number array containing the first vector elements. + A number array containing the second vector elements. + The mean value of , if known. + The mean value of , if known. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + The variance of the given data. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + The values' mean, if already known. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Kurtosis for the given values. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number array containing the vector values. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis of the given data. + + + + + Computes the Kurtosis for the given values. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number array containing the vector values. + The values' mean, if already known. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis of the given data. + + + + + Computes the entropy function for a set of numerical values in a + given . + + + A number array containing the vector values. + A probability distribution function. + + The distribution's entropy for the given values. + + + + + Computes the entropy function for a set of numerical values in a + given . + + + A number array containing the vector values. + A probability distribution function. + The importance for each sample. + + The distribution's entropy for the given values. + + + + + Computes the entropy function for a set of numerical values in a + given . + + + A number array containing the vector values. + A probability distribution function. + The repetition counts for each sample. + + The distribution's entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number array containing the vector values. + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number array containing the vector values. + A small constant to avoid s in + case the there is a zero between the given . + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number matrix containing the matrix values. + A small constant to avoid s in + case the there is a zero between the given . + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + A number matrix containing the matrix values. + + The calculated entropy for the given values. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The starting symbol. + The ending symbol. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The starting symbol. + The ending symbol. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The range of symbols. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The number of distinct classes. + The evaluated entropy. + + + + + Computes the entropy for the given values. + + + An array of integer symbols. + The number of distinct classes. + The evaluated entropy. + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + Returns a row vector containing the column means of the given matrix. + + + + double[,] matrix = + { + { 2, -1.0, 5 }, + { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] means = Accord.Statistics.Tools.Mean(matrix); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + + Returns a vector containing the means of the given matrix. + + + + double[,] matrix = + { + { 2, -1.0, 5 }, + { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] colMeans = Accord.Statistics.Tools.Mean(matrix, 0); + + // row means are equal to (2.0, 5.5) + double[] rowMeans = Accord.Statistics.Tools.Mean(matrix, 1); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + Returns a row vector containing the column means of the given matrix. + + + + double[][] matrix = + { + new double[] { 2, -1.0, 5 }, + new double[] { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] means = Accord.Statistics.Tools.Mean(matrix); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + + Returns a vector containing the means of the given matrix. + + + + double[][] matrix = + { + new double[] { 2, -1.0, 5 }, + new double[] { 7, 0.5, 9 }, + }; + + // column means are equal to (4.5, -0.25, 7.0) + double[] colMeans = Accord.Statistics.Tools.Mean(matrix, 0); + + // row means are equal to (2.0, 5.5) + double[] rowMeans = Accord.Statistics.Tools.Mean(matrix, 1); + + + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + The sum vector containing already calculated sums for each column of the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the matrix Mean vector. + + + A matrix whose means will be calculated. + The sum vector containing already calculated sums for each column of the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Centers an observation, subtracting the empirical + mean from each element in the observation vector. + + + An array of double precision floating-point numbers. + + + + + Centers an observation, subtracting the empirical + mean from each element in the observation vector. + + + An array of double precision floating-point numbers. + The mean of the , if already known. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already + calculated means for each column of the matrix. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the sample variance; or pass false to compute + the population variance. See remarks for more details. + + + Setting to true will make this method + compute the variance σ² using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true + will thus compute σ² using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Medians vector. + + + A matrix whose medians will be calculated. + + Returns a vector containing the medians of the given matrix. + + + + + Calculates the matrix Medians vector. + + + A matrix whose medians will be calculated. + + Returns a vector containing the medians of the given matrix. + + + + + Computes the Quartiles of the given values. + + + + A matrix whose medians and quartiles will be calculated. + The inter-quartile range for the values. + + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + A matrix whose medians and quartiles will be calculated. + The inter-quartile range for the values. + + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + + A matrix whose medians and quartiles will be calculated. + The first quartile for each column. + The third quartile for each column. + + The second quartile, the median of the given data. + + + + + Computes the Quartiles of the given values. + + + A matrix whose medians and quartiles will be calculated. + The first quartile for each column. + The third quartile for each column. + + The second quartile, the median of the given data. + + + + + Calculates the matrix Modes vector. + + + A matrix whose modes will be calculated. + + Returns a vector containing the modes of the given matrix. + + + + + Calculates the matrix Modes vector. + + + A matrix whose modes will be calculated. + + Returns a vector containing the modes of the given matrix. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number matrix containing the matrix values. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness vector for the given matrix. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + The mean value for the given values, if already known. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness for the given values. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number matrix containing the matrix values. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Skewness vector for the given matrix. + + + + Skewness characterizes the degree of asymmetry of a distribution + around its mean. Positive skewness indicates a distribution with + an asymmetric tail extending towards more positive values. Negative + skewness indicates a distribution with an asymmetric tail extending + towards more negative values. + + + A number array containing the vector values. + The column means, if known. + + True to compute the unbiased estimate of the population + skewness, false otherwise. Default is true (compute the + unbiased estimator). + + The skewness of the given data. + + + + + Computes the Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis vector of the given data. + + + + + Computes the sample Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The sample kurtosis vector of the given data. + + + + + Computes the Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis vector of the given data. + + + + + Computes the Kurtosis vector for the given matrix. + + + + The framework uses the same definition used by default in SAS and SPSS. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + True to compute the unbiased estimate of the population + kurtosis, false otherwise. Default is true (compute the + unbiased estimator). + + The kurtosis vector of the given data. + + + + + Computes the Standard Error vector for a given matrix. + + + A number multi-dimensional array containing the matrix values. + Returns the standard error vector for the matrix. + + + + + Computes the Standard Error vector for a given matrix. + + + The number of samples in the matrix. + The values' standard deviation vector, if already known. + + Returns the standard error vector for the matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + + The dimension of the matrix to consider as observations. Pass 0 if the matrix has + observations as rows and variables as columns, pass 1 otherwise. Default is 0. + + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + + Pass 0 if the mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + + The dimension of the matrix to consider as observations. Pass 0 if the matrix has + observations as rows and variables as columns, pass 1 otherwise. Default is 0. + + + The covariance matrix. + + + + + Calculates the covariance matrix of a sample matrix. + + + + In statistics and probability theory, the covariance matrix is a matrix of + covariances between elements of a vector. It is the natural generalization + to higher dimensions of the concept of the variance of a scalar-valued + random variable. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + The covariance matrix. + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + A real number to divide each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to divide each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + The covariance matrix. + + + + Calculates the correlation matrix for a matrix of samples. + + + In statistics and probability theory, the correlation matrix is the same + as the covariance matrix of the standardized random variables. + + A multi-dimensional array containing the matrix values. + The correlation matrix. + + + + Calculates the correlation matrix for a matrix of samples. + + + + In statistics and probability theory, the correlation matrix is the same + as the covariance matrix of the standardized random variables. + + + A multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The correlation matrix. + + + + + Calculates the correlation matrix for a matrix of samples. + + + + In statistics and probability theory, the correlation matrix is the same + as the covariance matrix of the standardized random variables. + + + A multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The correlation matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + + The Z-Scores for the matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The Z-Scores for the matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + + The Z-Scores for the matrix. + + + + + Generates the Standard Scores, also known as Z-Scores, from the given data. + + + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + The values' standard deviation vector, if already known. + + The Z-Scores for the matrix. + + + + + Centers column data, subtracting the empirical mean from each variable. + + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + + Centers column data, subtracting the empirical mean from each variable. + + + A matrix where each column represent a variable and each row represent a observation. + The mean value of the given values, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Centers column data, subtracting the empirical mean from each variable. + + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + Centers column data, subtracting the empirical mean from each variable. + + A matrix where each column represent a variable and each row represent a observation. + The mean value of the given values, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + An array of double precision floating-point numbers. + True to perform the operation in place, + altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + An array of double precision floating-point numbers. + The standard deviation of the given + , if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + The values' standard deviation vector, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + True to perform the operation in place, altering the original input matrix. + + + + + Standardizes column data, removing the empirical standard deviation from each variable. + + + This method does not remove the empirical mean prior to execution. + + A matrix where each column represent a variable and each row represent a observation. + The values' standard deviation vector, if already known. + True to perform the operation in place, altering the original input matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the weighted matrix Mean vector. + + A matrix whose means will be calculated. + A vector containing the importance of each sample in the matrix. + + The dimension along which the means will be calculated. Pass + 0 to compute a row vector containing the mean of each column, + or 1 to compute a column vector containing the mean of each row. + Default value is 0. + + Returns a vector containing the means of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the matrix Standard Deviations vector. + + + A matrix whose deviations will be calculated. + + Pass true to compute the standard deviation using the sample variance. + Pass false to compute it using the population variance. See remarks + for more details. + The number of times each sample should be repeated. + + + + Setting to true will make this method + compute the standard deviation σ using the sample variance, which is an unbiased + estimator of the true population variance. Setting this parameter to true will + thus compute σ using the following formula: + + N + σ² = 1 / (N - 1) ∑ (x_i − μ)² + i=1 + + + Setting to false will assume the given values + already represent the whole population, and will compute the population variance + using the formula: + + N + σ² = (1 / N) ∑ (x_i − μ)² + i=1 + + + + Returns a vector containing the standard deviations of the given matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean value of the given values, if already known. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + The number of times each sample should be repeated. + A number multi-dimensional array containing the matrix values. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + The number of times each sample should be repeated. + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + A number multi-dimensional array containing the matrix values. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean value of the given values, if already known. + A real number to multiply each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Calculates the scatter matrix of a sample matrix. + + + + By dividing the Scatter matrix by the sample size, we get the population + Covariance matrix. By dividing by the sample size minus one, we get the + sample Covariance matrix. + + + The number of times each sample should be repeated. + A number multi-dimensional array containing the matrix values. + The mean value of the given values, if already known. + A real number to multiply each member of the matrix. + + Pass 0 to if mean vector is a row vector, 1 otherwise. Default value is 0. + + + The covariance matrix. + + + + + Computes the Weighted Mean of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . + + The mean of the given data. + + + + + Computes the Weighted Mean of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + The mean of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . + How the weights should be interpreted for the bias correction. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean of the vector, if already known. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean of the vector, if already known. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The standard deviation of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . + How the weights should be interpreted for the bias correction. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean of the array, if already known. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + The mean of the array, if already known. + An unit vector containing the importance of each sample + in . + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + The variance of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the vector, if already known. + + The standard deviation of the given data. + + + + + Computes the Standard Deviation of the given values. + + + A double array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the vector, if already known. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The standard deviation of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the array, if already known. + + The variance of the given data. + + + + + Computes the weighted Variance of the given values. + + + A number array containing the vector members. + A vector containing how many times each element + in repeats itself in the non-weighted data. + The mean of the array, if already known. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + The variance of the given data. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + How the weights should be interpreted for the bias correction. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . + How the weights should be interpreted for the bias correction. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . The sum of this array elements should add up to 1. + The mean vector containing already calculated means for each column of the matrix. + How the weights should be interpreted for the bias correction. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + An unit vector containing the importance of each sample + in . How those values are interpreted depend on the + value for . + The mean vector containing already calculated means for each column of the matrix. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + How the weights should be interpreted for the bias correction. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Returns a vector containing the variances of the given matrix. + + + + + Calculates the matrix Variance vector. + + + A matrix whose variances will be calculated. + The mean vector containing already calculated means for each column of the matrix. + The number of times each sample should be repeated. + + Pass true to compute the sample variance; or pass false to compute the + population variance. For integers weights + , the bias correction is equivalent to the non-weighted case. For + fractional weights, the variance + bias cannot be completely eliminated. + + Returns a vector containing the variances of the given matrix. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + The number of times each sample should be repeated. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + + The most common value in the given data. + + + + + Computes the Mode of the given values. + + + A number array containing the vector values. + The number of times each sample should be repeated. + True to perform the operation in place, altering the original input vector. + Pass true if the list of values is already sorted. + + The most common value in the given data. + + + + + Gets the maximum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + A vector containing the importance of each sample in . + The index of the maximum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The maximum value in the given data. + + + + + Gets the minimum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + A vector containing the importance of each sample in . + The index of the minimum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The minimum value in the given data. + + + + + Gets the maximum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + The number of times each sample should be repeated. + The index of the maximum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The maximum value in the given data. + + + + + Gets the minimum value in a vector of observations that has a weight higher than zero. + + + A number array containing the vector values. + The number of times each sample should be repeated. + The index of the minimum element in the vector, or -1 if it could not be found. + Pass true if the list of values is already sorted. + + The minimum value in the given data. + + + + + Creates Tukey's box plot inner fence. + + + + + + Creates Tukey's box plot outer fence. + + + + + + Calculates the prevalence of a class for each variable. + + + An array of counts detailing the occurrence of the first class. + An array of counts detailing the occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Calculates the prevalence of a class. + + + A matrix containing counted, grouped data. + The index for the column which contains counts for occurrence of the first class. + The index for the column which contains counts for occurrence of the second class. + + An array containing the proportion of the first class over the total of occurrences. + + + + + Groups the occurrences contained in data matrix of binary (dichotomous) data. + + + A data matrix containing at least a column of binary data. + Index of the column which contains the group label name. + Index of the column which contains the binary [0,1] data. + + + A matrix containing the group label in the first column, the number of occurrences of the first class + in the second column and the number of occurrences of the second class in the third column. + + + + + + Extends a grouped data into a full observation matrix. + + + The group labels. + + An array containing he occurrence of the positive class + for each of the groups. + + An array containing he occurrence of the negative class + for each of the groups. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The grouped data matrix. + Index of the column which contains the labels + in the grouped data matrix. + Index of the column which contains + the occurrences for the first class. + Index of the column which contains + the occurrences for the second class. + + A full sized observation matrix. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the positive value on the position corresponding + to the label index, and the negative value on all others. + + + + + Expands a grouped data into a full observation matrix. + + + The class labels. + The number of classes. + The negative value to indicate the absence of the class. + The positive value to indicate the presence of the class. + + A jagged matrix where each row corresponds to each element + given in the parameter, and each row has + the same length as the number of in the + problem. Each row contains the value 1 on the position corresponding + to the label index. + + + + + Gets the coefficient of determination, as known as the R-Squared (R²) + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R^2 coefficient of determination is a statistical measure of how well the + regression approximates the real data points. An R^2 of 1.0 indicates that the + regression perfectly fits the data. + + + + + + Returns a random sample of size k from a population of size n. + + + + + + Returns a random group assignment for a sample. + + + The sample size. + The number of groups. + + + + + Returns a random group assignment for a sample + into two mutually exclusive groups. + + + The sample size. + The proportion of samples between the groups. + + + + + Returns a random group assignment for a sample, making + sure different class labels are distributed evenly among + the groups. + + + A vector containing class labels. + The number of different classes in . + The number of groups. + + + + + Returns a random permutation of size n. + + + + + + Shuffles an array. + + + + + + Shuffles a collection. + + + + + + Computes the whitening transform for the given data, making + its covariance matrix equals the identity matrix. + + A matrix where each column represent a + variable and each row represent a observation. + The base matrix used in the + transformation. + + The transformed source data (which now has unit variance). + + + + + + Gets the rank of a sample, often used with order statistics. + + + + + + Gets the number of distinct values + present in each column of a matrix. + + + + + + Gets the number of distinct values + present in each column of a matrix. + + + + + + Gets the number of distinct values + present in each column of a matrix. + + + + + + Generates a random matrix. + + + The size of the square matrix. + The minimum value for a diagonal element. + The maximum size for a diagonal element. + + A square, positive-definite matrix which + can be interpreted as a covariance matrix. + + + + + Computes the kernel distance for a kernel function even if it doesn't + implement the interface. Can be used to check + the proper implementation of the distance function. + + + The kernel function whose distance needs to be evaluated. + An input point x given in input space. + An input point y given in input space. + + + The distance between and in kernel (feature) space. + + + + + + Contains statistical models with direct applications in machine learning, such as + Hidden Markov Models, + Conditional Random Fields, Hidden Conditional + Random Fields and linear and + logistic regressions. + + + + + The main algorithms and techniques available on this namespaces are certainly + the hidden Markov models. + The Accord.NET Framework contains one of the most popular and well-tested + offerings for creating, training and validating Markov models using either + discrete observations or any arbitrary discrete, continuous or mixed probability distributions to + model the observations. + + + This namespace also brings + Conditional Random Fields, that alongside the Markov models can be + used to build sequence classifiers, + perform gesture recognition, and can even be combined with neural networks + to create hybrid models. Other + models include regression + and survival models. + + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + + Contains classes related to Conditional Random + Fields, Hidden Conditional Random + Fields and their learning + algorithms. + + + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + + + Contains learning algorithms for CRFs and + HCRFs, such as + Conjugate Gradient, + L-BFGS and + RProp-based learning. + + + + + The namespace class diagram is shown below. + + + + + + + + + + Factor Potential function for a Markov model whose states are independent + distributions composed of discrete and Normal distributed components. + + + + + + Factor Potential (Clique Potential) function. + + + The type of the observations being modeled. + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + The index of the first class feature in the 's parameter vector. + The number of class features in this factor. + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + + + + + Computes the factor potential function for the given parameters. + + + A state sequence. + A sequence of observations. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Computes the factor potential function for the given parameters. + + + A state sequence. + A sequence of observations. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Returns an enumerator that iterates through all features in this factor potential function. + + + An object that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through all features in this factor potential function. + + + + An object that can be used to iterate through the collection. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the + to which this factor potential belongs. + + + + + + Gets the number of model states + assumed by this function. + + + + + + Gets the index of this factor in the + potential function. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to all features from this factor. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to the edge features. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to the state features. + + + + + + Gets the segment of the parameter vector which contains + parameters respective to the output features. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The lookup table of states where the independent distributions begin. + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Base class for implementations of the Viterbi learning algorithm. + This class cannot be instantiated. + + + + + This class uses a template method pattern so specialized classes + can be written for each kind of hidden Markov model emission density + (either discrete or continuous). + + + For the actual Viterbi classes, please refer to + or . For other kinds of algorithms, please + see and + and their generic counter-parts. + + + + + + + + + Creates a new instance of the Viterbi learning algorithm. + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Computes the log-likelihood for the current model for the given observations. + + + The observation vectors. + + The log-likelihood of the observations belonging to the model. + + + + + Runs one single epoch (iteration) of the learning algorithm. + + + The observation sequences. + A vector to be populated with the decoded Viterbi sequences. + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Gets or sets on how many batches the learning data should be divided during learning. + Batches are used to estimate adequately the first models so they can better compute + the Viterbi paths for subsequent passes of the algorithm. Default is 1. + + + + + + Common interface for running statistics. + + + Running statistics are measures computed as data becomes available. + When using running statistics, there is no need to know the number of + samples a priori, such as in the case of the direct . + + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Common interface for Hybrid Hidden Markov Models. + + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The state optimized probability. + + The sequence of states that most likely produced the sequence. + + + + + + Calculates the probability that this model has generated the given sequence. + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + Forward algorithm. + + A sequence of observations. + + The probability that the given sequence has been generated by this model. + + + + + + Gets the expected number of dimensions in each observation. + + + + + + Gets the number of states of this model. + + + + + + Gets or sets a user-defined tag. + + + + + + Hybrid Markov classifier for arbitrary state-observation functions. + + + + + + Creates a new Sequence Classifier with the given number of classes. + + + + The models specializing in each of the classes of + the classification problem. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probability of the assigned class. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Gets the Markov models for each sequence class. + + + + + + Gets the number of dimensions of the + observations handled by this classifier. + + + + + + General Markov function for arbitrary state-emission density definitions. + + + The previous state index. + The observation at the current state. + An array containing the values for the observations in each next possible state. + + + + + Hybrid Markov model for arbitrary state-observation functions. + + + + This class can be used to implement HMM hybrids such as ANN-HMM + or SVM-HMMs through the specification of a custom . + + + + + + Initializes a new instance of the class. + + + A function specifying a probability for a transition-emission pair. + The number of states in the model. + The number of dimensions in the model. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The state optimized probability. + + The sequence of states that most likely produced the sequence. + + + + + + Calculates the probability that this model has generated the given sequence. + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + Forward algorithm. + + A sequence of observations. + + The probability that the given sequence has been generated by this model. + + + + + + Gets the Markov function, which takes the previous state, the + next state and a observation and produces a probability value. + + + + + + Gets the number of states in the model. + + + + + + Gets the number of dimensions of the + observations handled by this model. + + + + + + Gets or sets an user-defined object associated with this model. + + + + + + Multiple-trials Baum-Welch learning. + + + + This class can be used to perform multiple attempts on + Baum-Welch learning with multiple different initialization points. It can also + be used as a replacement inside algorithms + wherever a standard class would be used. + + + + + + Common interface for unsupervised learning algorithms for hidden + Markov models such as the Baum-Welch + learning and the Viterbi learning + algorithms. + + + + + In the context of hidden Markov models, + unsupervised algorithms are algorithms which consider that the sequence + of states in a system is hidden, and just the system's outputs can be seen + (or are known) during training. This is in contrast with + supervised learning algorithms such as the + Maximum Likelihood (MLE), which consider that both the sequence of observations + and the sequence of states are observable during training. + + + + + + + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + The observations. + + + + + Common interface for Hidden Conditional Random Fields learning algorithms. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Common interface for unsupervised learning algorithms for hidden + Markov models such as the Baum-Welch + learning and the Viterbi learning + algorithms. + + + + + In the context of hidden Markov models, + unsupervised algorithms are algorithms which consider that the sequence + of states in a system is hidden, and just the system's outputs can be seen + (or are known) during training. This is in contrast with + supervised learning algorithms such as the + Maximum Likelihood (MLE), which consider that both the sequence of observations + and the sequence of states are observable during training. + + + + + + + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + The observations. + + + + + Creates a new instance of the Baum-Welch learning algorithm. + + + The number of inner models to be learned. + The template model used to create all subsequent inner models. + The topology to be used by the inner models. To be useful, + this needs to be a topology configured to create random initialization matrices. + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the learning algorithm. + + + The observations. + + + + + Gets the template model, used to create all other instances. + + + + + + Gets the topology used on the inner models. + + + + + + Gets or sets how many trials should be attempted + before the model with highest log-likelihood is + selected as the best model found. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + inner class to hold information about a inner model. + + + + + Internal methods for validation and other shared functions. + + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Non-linear Least Squares for optimization. + + + + + // Suppose we would like to map the continuous values in the + // second column to the integer values in the first column. + double[,] data = + { + { -40, -21142.1111111111 }, + { -30, -21330.1111111111 }, + { -20, -12036.1111111111 }, + { -10, 7255.3888888889 }, + { 0, 32474.8888888889 }, + { 10, 32474.8888888889 }, + { 20, 9060.8888888889 }, + { 30, -11628.1111111111 }, + { 40, -15129.6111111111 }, + }; + + // Extract inputs and outputs + double[][] inputs = data.GetColumn(0).ToArray(); + double[] outputs = data.GetColumn(1); + + // Create a Nonlinear regression using + var regression = new NonlinearRegression(3, + + // Let's assume a quadratic model function: ax² + bx + c + function: (w, x) => w[0] * x[0] * x[0] + w[1] * x[0] + w[2], + + // Derivative in respect to the weights: + gradient: (w, x, r) => + { + r[0] = 2 * w[0]; // w.r.t a: 2a + r[1] = w[1]; // w.r.t b: b + r[2] = w[2]; // w.r.t c: 0 + } + ); + + // Create a non-linear least squares teacher + var nls = new NonlinearLeastSquares(regression); + + // Initialize to some random values + regression.Coefficients[0] = 4.2; + regression.Coefficients[1] = 0.3; + regression.Coefficients[2] = 1; + + // Run the function estimation algorithm + double error; + for (int i = 0; i < 100; i++) + error = nls.Run(inputs, outputs); + + // Use the function to compute the input values + double[] predict = inputs.Apply(regression.Compute); + + + + + + Common interface for regression fitting methods. + + + + + + Runs the fitting algorithm. + + + The input training data. + The output associated with each of the outputs. + + The sum of squared errors after the learning. + + + + + Initializes a new instance of the class. + + + The regression model. + + + + + Initializes a new instance of the class. + + + The regression model. + The least squares + algorithm to be used to estimate the regression parameters. Default is to + use a Levenberg-Marquardt algorithm. + + + + + Runs the fitting algorithm. + + + The input training data. + The output associated with each of the outputs. + + + The sum of squared errors after the learning. + + + + + + Gets or sets a value indicating whether standard + errors should be computed in the next iteration. + + + true to compute standard errors; otherwise, false. + + + + + + Gets the Least-Squares + optimization algorithm used to perform the actual learning. + + + + + + Generalized Linear Model Regression. + + + + + + References: + + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Amos Storkey. (2005). Learning from Data: Learning Logistic Regressors. School of Informatics. + Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + Cosma Shalizi. (2009). Logistic Regression and Newton's Method. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + Edward F. Conor. Logistic Regression. Website. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (This is completely fictional data). + double[][] input = + { + new double[] { 55, 0 }, // 0 - no cancer + new double[] { 28, 0 }, // 0 + new double[] { 65, 1 }, // 0 + new double[] { 46, 0 }, // 1 - have cancer + new double[] { 86, 1 }, // 1 + new double[] { 56, 1 }, // 1 + new double[] { 85, 0 }, // 0 + new double[] { 33, 0 }, // 0 + new double[] { 21, 1 }, // 0 + new double[] { 42, 1 }, // 1 + }; + + // We also know if they have had lung cancer or not, and + // we would like to know whether smoking has any connection + // with lung cancer (This is completely fictional data). + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + + // To verify this hypothesis, we are going to create a GLM + // regression model for those two inputs (age and smoking). + var regression = new GeneralizedLinearRegression(new ProbitLinkFunction(), inputs: 2); + + // Next, we are going to estimate this model. For this, we + // will use the Iteratively Reweighted Least Squares method. + var teacher = new IterativeReweightedLeastSquares(regression); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta = 0; + do + { + // Perform an iteration + delta = teacher.Run(input, output); + + } while (delta > 0.001); + + + + + + + + Creates a new Generalized Linear Regression Model. + + + The link function to use. + The number of input variables for the model. + + + + + Creates a new Generalized Linear Regression Model. + + + The link function to use. + The number of input variables for the model. + The starting intercept value. Default is 0. + + + + + Creates a new Generalized Linear Regression Model. + + + The link function to use. + The coefficient vector. + The standard error vector. + + + + + Computes the model output for the given input vector. + + + The input vector. + + The output value. + + + + + Computes the model output for each of the given input vectors. + + + The array of input vectors. + + The array of output values. + + + + + Gets the Wald Test for a given coefficient. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Log-Likelihood for the model. + + + A set of input data. + A set of output data. + + The Log-Likelihood (a measure of performance) of + the model calculated over the given data sets. + + + + + + Gets the Log-Likelihood for the model. + + + A set of input data. + A set of output data. + The weights associated with each input vector. + + + The Log-Likelihood (a measure of performance) of + the model calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + The weights associated with each input vector. + + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + A set of output data. + Another Logistic Regression model. + + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + A set of output data. + The weights associated with each input vector. + Another Logistic Regression model. + + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + A set of input data. + A set of output data. + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + A set of input data. + A set of output data. + The weights associated with each input vector. + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + Creates a new GeneralizedLinearRegression that is a copy of the current instance. + + + + + + Creates a GeneralizedLinearRegression from a object. + + + A object. + True to make a copy of the logistic regression values, false + to use the actual values. If the actual values are used, changes done on one model + will be reflected on the other model. + + A new which is a copy of the + given . + + + + + Gets the coefficient vector, in which the + first value is always the intercept value. + + + + + + Gets the standard errors associated with each + coefficient during the model estimation phase. + + + + + + Gets the number of inputs handled by this model. + + + + + + Gets the link function used by + this generalized linear model. + + + + + + Gets or sets the intercept term. This is always the + first value of the array. + + + + + + Stochastic Gradient Descent learning for Logistic Regression fitting. + + + + + + Constructs a new Gradient Descent algorithm. + + + The regression to estimate. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + + The maximum relative change in the parameters after the iteration. + + + + + Runs a single pass of the gradient descent algorithm. + + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Computes the sum-of-squared error between the + model outputs and the expected outputs. + + + The input data set. + The output values. + + The sum-of-squared errors. + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets whether this algorithm should use + stochastic updates or not. Default is false. + + + + + + Gets or sets the algorithm + learning rate. Default is 0.1. + + + + + + Regression function delegate. + + + + This delegate represents a parameterized function that, given a set of + model coefficients and an input + vector, produces an associated output value. + + + The model coefficients, also known as parameters or coefficients. + An input vector. + + The output value produced given the + and vector. + + + + + Gradient function delegate. + + + + This delegate represents the gradient of regression + function. A regression function is a parameterized function that, given a set + of model coefficients and an input vector, + produces an associated output value. This function should compute the gradient vector + in respect to the function . + + + The model coefficients, also known as parameters or coefficients. + An input vector. + The resulting gradient vector (w.r.t to the coefficients). + + + + + Nonlinear Regression. + + + + + + Initializes a new instance of the class. + + + The number of variables (free parameters) in the model. + The regression function implementing the regression model. + + + + + Initializes a new instance of the class. + + + The number of variables (free parameters) in the model. + The regression function implementing the regression model. + The function that computes the gradient for . + + + + + Computes the model output for the given input vector. + + + The input vector. + + The output value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the regression coefficients. + + + + + + Gets the standard errors for the regression coefficients. + + + + + + Gets the model function, mapping inputs to + outputs given a suitable parameter vector. + + + + + + Gets or sets a function that computes the gradient of the + in respect to the . + + + + + + Cox's Proportional Hazards Model. + + + + + + Creates a new Cox Proportional-Hazards Model. + + + The number of input variables for the model. + + + + + Creates a new Cox Proportional-Hazards Model. + + + The number of input variables for the model. + The initial baseline hazard distribution. + + + + + Computes the model output for the given input vector. + + + The input vector. + The output value. + + + + + Computes the model output for the given input vector. + + + The input vector. + The output value. + + + + + Computes the model output for the given input vector. + + + The input vector. + The event time. + + The probabilities of the event occurring at + the given time for the given observation. + + + + + Computes the model output for the given time. + + + The event time. + + The probabilities of the event occurring at the given time. + + + + + Computes the model's baseline survival function. This method + simply calls the + of the function. + + + The event time. + + The baseline survival function at the given time. + + + + + Computes the model output for the given input vector. + + + The input vector. + The event times. + + The probabilities of the event occurring at + the given times for the given observations. + + + + + Gets the Log-Hazard Ratio between two observations. + + + The first observation. + The second observation. + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Partial Log-Likelihood for the model. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the Partial Log-Likelihood for the model. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the Partial Log-Likelihood for the model. + + + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the Partial Log-Likelihood for the model. + + + The time-to-event before the output occurs. + The corresponding output data. + + + The Partial Log-Likelihood (a measure of performance) + of the model calculated over the given data set. + + + + + + Gets the 95% confidence interval for the + Hazard Ratio for a given coefficient. + + + + The coefficient's index. + + + + + + Gets the Wald Test for a given coefficient. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + Another Cox Proportional Hazards model. + + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + A set of input data. + The time-to-event before the output occurs. + The corresponding output data. + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + Creates a new Cox's Proportional Hazards that is a copy of the current instance. + + + + + + Gets the Hazard Ratio for a given coefficient. + + + + The hazard ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + The coefficient's index. + + + The Hazard Ratio for the given coefficient. + + + + + + Gets the mean vector used to center + observations before computations. + + + + + + Gets the coefficient vector, in which the + first value is always the intercept value. + + + + + + Gets the standard errors associated with each + coefficient during the model estimation phase. + + + + + + Gets the baseline hazard function, if specified. + + + + + + Gets the number of inputs handled by this model. + + + + + + Linear-Chain Conditional Random Field (CRF). + + + A conditional random field (CRF) is a type of discriminative undirected + probabilistic graphical model. It is most often used for labeling or parsing + of sequential data, such as natural language text or biological sequences + and computer vision. + + This implementation is currently experimental. + + + + + + Initializes a new instance of the class. + + + The number of states for the model. + The potential function to be used by the model. + + + + + Computes the partition function, as known as Z(x), + for the specified observations. + + + + + + Computes the Log of the partition function. + + + + + + Computes the log-likelihood of the model for the given observations. + This method is equivalent to the + method. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence probability for this model. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence log-likelihood for this model. + + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Loads a random field from a stream. + + + The stream from which the random field is to be deserialized. + + The deserialized random field. + + + + + Loads a random field from a file. + + + The path to the file from which the random field is to be deserialized. + + The deserialized random field. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Gets the number of states in this + linear-chain Conditional Random Field. + + + + + + Gets the potential function encompassing + all feature functions for this model. + + + + + + Common interface for Conditional Random Fields + feature functions + + + The type of the observations being modeled. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the feature for the given parameters. + + + The sequence of states. + The sequence of observations. + The output class label for the sequence. + + The result of the feature. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the potential function containing this feature. + + + + + + Base implementation for Conditional Random Fields + feature functions. + + + The type of the observations being modeled. + + + + + Creates a new feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + + + + + Computes the feature for the given parameters. + + + The sequence of states. + The sequence of observations. + The output class label for the sequence. + + The result of the feature. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Gets the potential function containing this feature. + + + + + + Gets the potential factor to which this feature belongs. + + + + + + State feature for Hidden Markov Model symbol emission probabilities. + + + + + + Constructs a new symbol emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The emission symbol. + The observation dimension this emission feature applies to. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State occupancy function for modeling continuous- + density Hidden Markov Model state emission features. + + + + + + + + Constructs a state occupancy feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The current state. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for second moment Gaussian emission probabilities. + + + + + + Constructs a new symbol emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The dimension of the multidimensional + observation this feature should respond to. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for first moment multivariate Gaussian emission probabilities. + + + + + + Constructs a new first moment emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The multivariate dimension to consider in the computation. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for second moment Gaussian emission probabilities. + + + + + + Constructs a new second moment emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for first moment Gaussian emission probabilities. + + + + + + Constructs a new first moment emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Edge feature for Hidden Markov Model state transition probabilities. + + + + + + Constructs a initial state transition feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The destination state. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for Hidden Markov Model output class symbol probabilities. + + + + + + Constructs a new output class symbol feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The emission symbol. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + State feature for Hidden Markov Model symbol emission probabilities. + + + + + + Constructs a new symbol emission feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The state for the emission. + The emission symbol. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Edge feature for Hidden Markov Model state transition probabilities. + + + + + + Constructs a state transition feature. + + + The potential function to which this feature belongs. + The index of the potential factor to which this feature belongs. + The originating state. + The destination state. + + + + + Computes the feature for the given parameters. + + + The previous state. + The current state. + The observations. + The index of the current observation. + The output class label for the sequence. + + + + + Computes the probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state probabilities. + The matrix of backward state probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Computes the log-probability of occurrence of this + feature given a sequence of observations. + + + The matrix of forward state log-probabilities. + The matrix of backward state log-probabilities. + The observation sequence. + The output class label for the sequence. + + The probability of occurrence of this feature. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Forward-Backward algorithms for Conditional Random Fields. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + Computes Backward probabilities for a given potential function and a set of observations(no scaling). + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Forward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + + Computes Backward probabilities for a given potential function and a set of observations. + + + + + Computes Backward probabilities for a given potential function and a set of observations(no scaling). + + + + + Common interface for gradient evaluators for + Hidden Conditional Random Fields . + + + + + + Computes the gradient using the + input/outputs stored in this object. + + + The value of the gradient vector for the given parameters. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood) using + the input/outputs stored in this object. + + + + + + Normal-density Markov Factor Potential (Clique Potential) function. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Multivariate Normal Markov Model Factor Potential (Clique Potential) function. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The number of dimensions for the multivariate observations. + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Discrete-density Markov Factor Potential (Clique Potential) function. + + + + + + Creates a new factor (clique) potential function. + + + The owner . + The number of states in this clique potential. + The index of this factor potential in the . + The number of symbols in the discrete alphabet. + The index of the first class label feature in the 's parameter vector. + The number of class label features in this factor. + The index of the first edge feature in the 's parameter vector. + The number of edge features in this factor. + The index of the first state feature in the 's parameter vector. + The number of state features in this factor. + + + + + Computes the factor potential function for the given parameters. + + + The previous state in a given sequence of states. + The current state in a given sequence of states. + The observation vector. + The index of the observation in the current state of the sequence. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Gets the number of symbols in the discrete + alphabet used by this Markov model factor. + + + + + + Potential function modeling Hidden Markov Classifiers. + + + + + + Base implementation for potential functions. + + + The type of the observations modeled. + + + + + Computes the factor potential function for the given parameters. + + + A state sequence. + A sequence of observations. + The output class label for the sequence. + The value of the factor potential function evaluated for the given parameters. + + + + + Gets the factor potentials (also known as clique potentials) + functions composing this potential function. + + + + + + Gets the number of output classes assumed by this function. + + + + + + Gets or sets the set of weights for each feature function. + + + The weights for each of the feature functions. + + + + + Gets the feature functions composing this potential function. + + + + + + Common interface for CRF's Potential functions. + + + + + + Gets the feature vector for a given input and sequence of states. + + + + + + Gets the factor potentials (also known as clique potentials) + functions composing this potential function. + + + + + + Gets the number of output classes assumed by this function. + + + + + + Gets or sets the set of weights for each feature function. + + + The weights for each of the feature functions. + + + + + Gets the feature functions composing this potential function. + + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Potential function modeling Hidden Markov Models. + + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + True to include class features (priors), false otherwise. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + True to include class features (priors), false otherwise. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A normal density hidden Markov. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + A hidden Markov sequence classifier. + True to include class features (priors), false otherwise. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the total number of dimensions for + this multivariate potential function. + + + + + + Potential function modeling Hidden Markov Models. + + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The number of states. + The number of symbols. + The number of output classes. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The classifier model. + True to include class features (priors), false otherwise. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The number of states. + The number of symbols. + + + + + Constructs a new potential function modeling Hidden Markov Models. + + + The hidden Markov model. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the number of symbols assumed by this function. + + + + + + Hidden Conditional Random Field (HCRF). + + + + + Conditional random fields (CRFs) are a class of statistical modeling method often applied + in pattern recognition and machine learning, where they are used for structured prediction. + Whereas an ordinary classifier predicts a label for a single sample without regard to "neighboring" + samples, a CRF can take context into account; e.g., the linear chain CRF popular in natural + language processing predicts sequences of labels for sequences of input samples. + + + While Conditional Random Fields can be seen as a generalization of Markov models, Hidden + Conditional Random Fields can be seen as a generalization of Hidden Markov Model Classifiers. + The (linear-chain) Conditional Random Field is the discriminative counterpart of the Markov model. + An observable Markov Model assumes the sequences of states y to be visible, rather than hidden. + Thus they can be used in a different set of problems than the hidden Markov models. Those models + are often used for sequence component labeling, also known as part-of-sequence tagging. After a model + has been trained, they are mostly used to tag parts of a sequence using the Viterbi algorithm. + This is very handy to perform, for example, classification of parts of a speech utterance, such as + classifying phonemes inside an audio signal. + + + References: + + + C. Souza, Sequence Classifiers in C# - Part II: Hidden Conditional Random Fields. CodeProject. Available at: + http://www.codeproject.com/Articles/559535/Sequence-Classifiers-in-Csharp-Part-II-Hidden-Cond + + Chan, Tony F.; Golub, Gene H.; LeVeque, Randall J. (1983). Algorithms for + Computing the Sample Variance: Analysis and Recommendations. The American + Statistician 37, 242-247. + + + + + + In this example, we will create a sequence classifier using a hidden Markov + classifier. Afterwards, we will transform this Markov classifier into an + equivalent Hidden Conditional Random Field by choosing a suitable feature + function. + + + // Let's say we would like to do a very simple mechanism for + // gesture recognition. In this example, we will be trying to + // create a classifier that can distinguish between the words + // "hello", "car", and "wardrobe". + + // Let's say we decided to acquire some data, and we asked some + // people to perform those words in front of a Kinect camera, and, + // using Microsoft's SDK, we were able to captured the x and y + // coordinates of each hand while the word was being performed. + + // Let's say we decided to represent our frames as: + // + // double[] frame = { leftHandX, leftHandY, rightHandX, rightHandY }; + // + // Since we captured words, this means we captured sequences of + // frames as we described above. Let's write some of those as + // rough examples to explain how gesture recognition can be done: + + double[][] hello = + { + new double[] { 1.0, 0.1, 0.0, 0.0 }, // let's say the word + new double[] { 0.0, 1.0, 0.1, 0.1 }, // hello took 6 frames + new double[] { 0.0, 1.0, 0.1, 0.1 }, // to be recorded. + new double[] { 0.0, 0.0, 1.0, 0.0 }, + new double[] { 0.0, 0.0, 1.0, 0.0 }, + new double[] { 0.0, 0.0, 0.1, 1.1 }, + }; + + double[][] car = + { + new double[] { 0.0, 0.0, 0.0, 1.0 }, // the car word + new double[] { 0.1, 0.0, 1.0, 0.1 }, // took only 4. + new double[] { 0.0, 0.0, 0.1, 0.0 }, + new double[] { 1.0, 0.0, 0.0, 0.0 }, + }; + + double[][] wardrobe = + { + new double[] { 0.0, 0.0, 1.0, 0.0 }, // same for the + new double[] { 0.1, 0.0, 1.0, 0.1 }, // wardrobe word. + new double[] { 0.0, 0.1, 1.0, 0.0 }, + new double[] { 0.1, 0.0, 1.0, 0.1 }, + }; + + // Here, please note that a real-world example would involve *lots* + // of samples for each word. Here, we are considering just one from + // each class which is clearly sub-optimal and should _never_ be done + // on practice. For example purposes, however, please disregard this. + + // Those are the words we have in our vocabulary: + // + double[][][] words = { hello, car, wardrobe }; + + // Now, let's associate integer labels with them. This is needed + // for the case where there are multiple samples for each word. + // + int[] labels = { 0, 1, 2 }; + + + // We will create our classifiers assuming an independent + // Gaussian distribution for each component in our feature + // vectors (like assuming a Naive Bayes assumption). + + var initial = new Independent<NormalDistribution> + ( + new NormalDistribution(0, 1), + new NormalDistribution(0, 1), + new NormalDistribution(0, 1), + new NormalDistribution(0, 1) + ); + + + // Now, we can proceed and create our classifier. + // + int numberOfWords = 3; // we are trying to distinguish between 3 words + int numberOfStates = 5; // this value can be found by trial-and-error + + var hmm = new HiddenMarkovClassifier<Independent<NormalDistribution>> + ( + classes: numberOfWords, + topology: new Forward(numberOfStates), // word classifiers should use a forward topology + initial: initial + ); + + // Create a new learning algorithm to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning<Independent<NormalDistribution>>(hmm, + + // Train each model until the log-likelihood changes less than 0.001 + modelIndex => new BaumWelchLearning<Independent<NormalDistribution>>(hmm.Models[modelIndex]) + { + Tolerance = 0.001, + Iterations = 100, + + // This is necessary so the code doesn't blow up when it realize + // there is only one sample per word class. But this could also be + // needed in normal situations as well. + // + FittingOptions = new IndependentOptions() + { + InnerOption = new NormalOptions() { Regularization = 1e-5 } + } + } + ); + + // Finally, we can run the learning algorithm! + double logLikelihood = teacher.Run(words, labels); + + // At this point, the classifier should be successfully + // able to distinguish between our three word classes: + // + int tc1 = hmm.Compute(hello); // should be 0 + int tc2 = hmm.Compute(car); // should be 1 + int tc3 = hmm.Compute(wardrobe); // should be 2 + + + // Now, we can use the Markov classifier to initialize a HCRF + var function = new MarkovMultivariateFunction(hmm); + var hcrf = new HiddenConditionalRandomField<double[]>(function); + + // We can check that both are equivalent, although they have + // formulations that can be learned with different methods + // + for (int i = 0; i < words.Length; i++) + { + // Should be the same + int expected = hmm.Compute(words[i]); + int actual = hcrf.Compute(words[i]); + + // Should be the same + double h0 = hmm.LogLikelihood(words[i], 0); + double c0 = hcrf.LogLikelihood(words[i], 0); + + double h1 = hmm.LogLikelihood(words[i], 1); + double c1 = hcrf.LogLikelihood(words[i], 1); + + double h2 = hmm.LogLikelihood(words[i], 2); + double c2 = hcrf.LogLikelihood(words[i], 2); + } + + + // Now we can learn the HCRF using one of the best learning + // algorithms available, Resilient Backpropagation learning: + + // Create a learning algorithm + var rprop = new HiddenResilientGradientLearning<double[]>(hcrf) + { + Iterations = 50, + Tolerance = 1e-5 + }; + + // Run the algorithm and learn the models + double error = rprop.Run(words, labels); + + // At this point, the HCRF should be successfully + // able to distinguish between our three word classes: + // + int hc1 = hcrf.Compute(hello); // Should be 0 + int hc2 = hcrf.Compute(car); // Should be 1 + int hc3 = hcrf.Compute(wardrobe); // Should be 2 + + + + In order to see how this HCRF can be trained to the data, please take a look + at the page. Resilient Propagation + is one of the best algorithms for HCRF training. + + + The type of the observations modeled by the field. + + + + + + + Initializes a new instance of the class. + + + The potential function to be used by the model. + + + + + Computes the most likely output for the given observations. + + + + + + Computes the most likely output for the given observations. + + + + + + Computes the most likely output for the given observations. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence probability for this model. + + + + + + Computes the most likely state labels for the given observations, + returning the overall sequence probability for this model. + + + + + + Computes the log-likelihood that the given + observations belong to the desired output. + + + + + + Computes the log-likelihood that the given + observations belong to the desired output. + + + + + + Computes the log-likelihood that the given + observations belong to the desired outputs. + + + + + + Computes the log-likelihood that the given + observations belong to the desired outputs. + + + + + + Computes the partition function Z(x,y). + + + + + + Computes the log-partition function ln Z(x,y). + + + + + + Computes the partition function Z(x). + + + + + + Computes the log-partition function ln Z(x). + + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Saves the random field to a stream. + + + The stream to which the random field is to be serialized. + + + + + Loads a random field from a stream. + + + The stream from which the random field is to be deserialized. + + The deserialized random field. + + + + + Loads a random field from a file. + + + The path to the file from which the random field is to be deserialized. + + The deserialized random field. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the number of outputs assumed by the model. + + + + + + Gets the potential function encompassing + all feature functions for this model. + + + + + + Linear Gradient calculator class for + Hidden Conditional Random Fields. + + + The type of the observations being modeled. + + + + + Initializes a new instance of the class. + + + The model to be trained. + + + + + Computes the gradient (vector of derivatives) vector for + the cost function, which may be used to guide optimization. + + + The parameter vector lambda to use in the model. + The inputs to compute the cost function. + The respective outputs to compute the cost function. + The value of the gradient vector for the given parameters. + + + + + Computes the gradient (vector of derivatives) vector for + the cost function, which may be used to guide optimization. + + + The parameter vector lambda to use in the model. + The inputs to compute the cost function. + The respective outputs to compute the cost function. + The value of the gradient vector for the given parameters. + + + + + Computes the gradient using the + input/outputs stored in this object. + + + The parameter vector lambda to use in the model. + The value of the gradient vector for the given parameters. + + + + + Computes the gradient using the + input/outputs stored in this object. + + + The value of the gradient vector for the given parameters. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood). + + + The parameter vector lambda to use in the model. + The inputs to compute the cost function. + The respective outputs to compute the cost function. + The value of the objective function for the given parameters. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood) using + the input/outputs stored in this object. + + + The parameter vector lambda to use in the model. + + + + + Computes the objective (cost) function for the Hidden + Conditional Random Field (negative log-likelihood) using + the input/outputs stored in this object. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the inputs to be used in the next + call to the Objective or Gradient functions. + + + + + + Gets or sets the outputs to be used in the next + call to the Objective or Gradient functions. + + + + + + Gets or sets the current parameter + vector for the model being learned. + + + + + + Gets the error computed in the last call + to the gradient or objective functions. + + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Gets the model being trained. + + + + + + Common interface for Hidden Conditional Random Fields learning algorithms. + + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation labels. + + The error in the last iteration. + + + + + Runs one iteration of learning algorithm with the specified + input training observations and corresponding output labels. + + + The training observations. + The observations' labels. + + The error in the last iteration. + + + + + Runs the learning algorithm with the specified input + training observation and corresponding output label + until convergence. + + + The training observations. + The observations' labels. + + The error in the last iteration. + + + + + Common interface for Conditional Random Fields learning algorithms. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Conjugate Gradient learning algorithm for + Hidden Conditional Hidden Fields. + + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + + + + + Constructs a new Conjugate Gradient learning algorithm. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Online learning is not supported. + + + + + + Online learning is not supported. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the model being trained. + + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Gets whether the model has converged + or if the line search has failed. + + + + + + Gets the total number of iterations performed + by the conjugate gradient algorithm. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Occurs when the current learning progress has changed. + + + + + + Quasi-Newton (L-BFGS) learning algorithm for + Hidden Conditional Hidden Fields. + + + The type of the observations. + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + + + + + + Constructs a new L-BFGS learning algorithm. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Online learning is not supported. + + + + + + Online learning is not supported. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the model being trained. + + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Quasi-Newton (L-BFGS) learning algorithm for + Conditional Hidden Fields. + + + + + + Constructs a new L-BFGS learning algorithm. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + + + + Stochastic Gradient Descent learning algorithm for + Hidden Conditional Hidden Fields. + + + + + For an example on how to learn Hidden Conditional Random Fields, please see the + Hidden Resilient Gradient Learning + page. All learning algorithms can be utilized in a similar manner. + + + The type of the observations. + + + + + + + Initializes a new instance of the class. + + + The model to be trained. + + + + + Resets the step size. + + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the learning rate to use as the gradient + descent step size. Default value is 1e-1. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Gets or sets a value indicating whether this + should use stochastic gradient updates. + + + true for stochastic updates; otherwise, false. + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Gets or sets the model being trained. + + + + + + Occurs when the current learning progress has changed. + + + + + + Identity link function. + + + + + The identity link function is associated with the + Normal distribution. + + + Link functions can be used in many models, such as in + and Support + Vector Machines. + + + + + + + + + Creates a new Identity link function. + + + The variance value. + The mean value. + + + + + Creates a new Identity link function. + + + + + + The Identity link function. + + + An input value. + + The transformed input value. + + + The Identity link function is given by f(x) = (x - A) / B. + + + + + + The mean function. + + + A transformed value. + + The reverse transformed value. + + + The inverse Identity link function is given by g(x) = B * x + A. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the identity link + function is given by f'(x) = B. + + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the identity link function + in terms of y = f(x) is given by f'(y) = B. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Logit link function. + + + + The Logit link function is associated with the + Binomial and + Multinomial distributions. + + + + + + Creates a new Logit link function. + + + The beta value. Default is 1. + The constant value. Default is 0. + + + + + Initializes a new instance of the class. + + + + + + The Logit link function. + + + An input value. + + The transformed input value. + + + The inverse Logit link function is given by + f(x) = (Math.Log(x / (1.0 - x)) - A) / B. + + + + + + The Logit mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + The inverse Logit link function is given by + g(x) = 1.0 / (1.0 + Math.Exp(-z) in + which z = B * x + A. + + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + The first derivative of the identity link + function is given by f'(x) = y * (1.0 - y) + where y = f(x) is the + Logit function. + + + + + + First derivative of the mean function + expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + The first derivative of the Logit link function + in terms of y = f(x) is given by y * (1.0 - y). + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Inverse link function. + + + + The inverse link function is associated with the + Exponential and + Gamma distributions. + + + + + + Creates a new Inverse link function. + + + The alpha value. + The constant value. + + + + + Creates a new Inverse link function. + + + + + + The Inverse link function. + + + An input value. + + The transformed input value. + + + + + The Inverse mean (activation) function. + + + A transformed value. + + The reverse transformed value. + + + + + First derivative of the function. + + + The input value. + + The first derivative of the input value. + + + + + First derivative of the + function expressed in terms of it's output. + + + The reverse transformed value. + + The first derivative of the input value. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Linear scaling coefficient a (intercept). + + + + + + Linear scaling coefficient b (slope). + + + + + + Resilient Gradient Learning. + + + The type of the observations being modeled. + + + + // Suppose we would like to learn how to classify the + // following set of sequences among three class labels: + + int[][] inputSequences = + { + // First class of sequences: starts and + // ends with zeros, ones in the middle: + new[] { 0, 1, 1, 1, 0 }, + new[] { 0, 0, 1, 1, 0, 0 }, + new[] { 0, 1, 1, 1, 1, 0 }, + + // Second class of sequences: starts with + // twos and switches to ones until the end. + new[] { 2, 2, 2, 2, 1, 1, 1, 1, 1 }, + new[] { 2, 2, 1, 2, 1, 1, 1, 1, 1 }, + new[] { 2, 2, 2, 2, 2, 1, 1, 1, 1 }, + + // Third class of sequences: can start + // with any symbols, but ends with three. + new[] { 0, 0, 1, 1, 3, 3, 3, 3 }, + new[] { 0, 0, 0, 3, 3, 3, 3 }, + new[] { 1, 0, 1, 2, 2, 2, 3, 3 }, + new[] { 1, 1, 2, 3, 3, 3, 3 }, + new[] { 0, 0, 1, 1, 3, 3, 3, 3 }, + new[] { 2, 2, 0, 3, 3, 3, 3 }, + new[] { 1, 0, 1, 2, 3, 3, 3, 3 }, + new[] { 1, 1, 2, 3, 3, 3, 3 }, + }; + + // Now consider their respective class labels + int[] outputLabels = + { + /* Sequences 1-3 are from class 0: */ 0, 0, 0, + /* Sequences 4-6 are from class 1: */ 1, 1, 1, + /* Sequences 7-14 are from class 2: */ 2, 2, 2, 2, 2, 2, 2, 2 + }; + + + // Create the Hidden Conditional Random Field using a set of discrete features + var function = new MarkovDiscreteFunction(states: 3, symbols: 4, outputClasses: 3); + var classifier = new HiddenConditionalRandomField<int>(function); + + // Create a learning algorithm + var teacher = new HiddenResilientGradientLearning<int>(classifier) + { + Iterations = 50 + }; + + // Run the algorithm and learn the models + teacher.Run(inputSequences, outputLabels); + + + // After training has finished, we can check the + // output classification label for some sequences. + + int y1 = classifier.Compute(new[] { 0, 1, 1, 1, 0 }); // output is y1 = 0 + int y2 = classifier.Compute(new[] { 0, 0, 1, 1, 0, 0 }); // output is y1 = 0 + + int y3 = classifier.Compute(new[] { 2, 2, 2, 2, 1, 1 }); // output is y2 = 1 + int y4 = classifier.Compute(new[] { 2, 2, 1, 1 }); // output is y2 = 1 + + int y5 = classifier.Compute(new[] { 0, 0, 1, 3, 3, 3 }); // output is y3 = 2 + int y6 = classifier.Compute(new[] { 2, 0, 2, 2, 3, 3 }); // output is y3 = 2 + + + + + + + Initializes a new instance of the class. + + + Model to teach. + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs the learning algorithm with the specified input + training observations and corresponding output labels. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Runs one iteration of the learning algorithm with the + specified input training observation and corresponding + output label. + + + The training observations. + The observation's labels. + + The error in the last iteration. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Resets the current update steps using the given learning rate. + + + + + + Performs application-defined tasks associated with freeing, + releasing, or resetting unmanaged resources. + + + + + + Releases unmanaged resources and performs other cleanup operations before + the is reclaimed by garbage + collection. + + + + + + Releases unmanaged and - optionally - managed resources + + + true to release both managed + and unmanaged resources; false to release only unmanaged + resources. + + + + + Gets or sets the model being trained. + + + + + + Gets or sets a value indicating whether this + should use stochastic gradient updates. Default is true. + + + true for stochastic updates; otherwise, false. + + + + + Gets or sets the amount of the parameter weights + which should be included in the objective function. + Default is 0 (do not include regularization). + + + + + + Occurs when the current learning progress has changed. + + + + + + Gets or sets the maximum possible update step, + also referred as delta min. Default is 50. + + + + + + Gets or sets the minimum possible update step, + also referred as delta max. Default is 1e-6. + + + + + + Gets the decrease parameter, also + referred as eta minus. Default is 0.5. + + + + + + Gets the increase parameter, also + referred as eta plus. Default is 1.2. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Maximum Likelihood learning algorithm for discrete-density Hidden Markov Models. + + + + + The maximum likelihood estimate is a + supervised learning algorithm. It considers both the sequence + of observations as well as the sequence of states in the Markov model + are visible and thus during training. + + + Often, the Maximum Likelihood Estimate can be used to give a starting + point to a unsupervised algorithm, making possible to use semi-supervised + techniques with HMMs. It is possible, for example, to use MLE to guess + initial values for an HMM given a small set of manually labeled labels, + and then further estimate this model using the + Viterbi learning algorithm. + + + + + The following example comes from Prof. Yechiam Yemini slides on Hidden Markov + Models, available at http://www.cs.columbia.edu/4761/notes07/chapter4.3-HMM.pdf. + In this example, we will be specifying both the sequence of observations and + the sequence of states assigned to each observation in each sequence to learn + our Markov model. + + + // Those are the observation sequences. Each sequence contains a variable number + // of observation (although in this example they have all the same length, this + // is just a coincidence and not something required). + + int[][] observations = + { + new int[] { 0,0,0,1,0,0 }, + new int[] { 1,0,0,1,0,0 }, + new int[] { 0,0,1,0,0,0 }, + new int[] { 0,0,0,0,1,0 }, + new int[] { 1,0,0,0,1,0 }, + new int[] { 0,0,0,1,1,0 }, + new int[] { 1,0,0,0,0,0 }, + new int[] { 1,0,1,0,0,0 }, + }; + + // Now those are the visible states associated with each observation in each + // observation sequence above. Note that there is always one state assigned + // to each observation, so the lengths of the sequence of observations and + // the sequence of states must always match. + + int[][] paths = + { + new int[] { 0,0,1,0,1,0 }, + new int[] { 1,0,1,0,1,0 }, + new int[] { 1,0,0,1,1,0 }, + new int[] { 1,0,1,1,1,0 }, + new int[] { 1,0,0,1,0,1 }, + new int[] { 0,0,1,0,0,1 }, + new int[] { 0,0,1,1,0,1 }, + new int[] { 0,1,1,1,0,0 }, + }; + + // Since the observation sequences are composed of discrete symbols, we can specify + // a GeneralDiscreteDistribution to simulate a standard discrete HiddenMarkovModel. + var initial = new GeneralDiscreteDistribution(symbols: 2); + + // Create our Markov model with two states (0, 1) and two symbols (0, 1) + HiddenMarkovModel model = new HiddenMarkovModel<(states: 2, symbols: 2); + + // Now we can create our learning algorithm + MaximumLikelihoodLearning teacher = new MaximumLikelihoodLearning(model) + { + // Set some options + UseLaplaceRule = false + }; + + // and finally learn a model using the algorithm + double logLikelihood = teacher.Run(observations, paths); + + + // To check what has been learned, we can extract the emission + // and transition matrices, as well as the initial probability + // vector from the HMM to compare against expected values: + + var pi = Matrix.Exp(model.Probabilities); // { 0.5, 0.5 } + var A = Matrix.Exp(model.Transitions); // { { 7/20, 13/20 }, { 14/20, 6/20 } } + var B = Matrix.Exp(model.Emissions); // { { 17/25, 8/25 }, { 19/23, 4/23 } } + + + + + + + + + + + Common interface for supervised learning algorithms for + hidden Markov models such as the + Maximum Likelihood (MLE) learning algorithm. + + + + + In the context of hidden Markov models, + supervised algorithms are algorithms which consider that both the sequence + of observations and the sequence of states are visible (or known) during + training. This is in contrast with + unsupervised learning algorithms such as the + Baum-Welch, which consider that the sequence of states is hidden. + + + + + + + + + + Runs the learning algorithm. + + + + Supervised learning problem. Given some training observation sequences + O = {o1, o2, ..., oK} and sequence of hidden states H = {h1, h2, ..., hK} + and general structure of HMM (numbers of hidden and visible states), + determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Creates a new instance of the Maximum Likelihood learning algorithm. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Gets the model being trained. + + + + + + Gets or sets whether the emission fitting algorithm should + present weighted samples or simply the clustered samples to + the density estimation + methods. + + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Gets or sets the distribution fitting options + to use when estimating distribution densities + during learning. + + The distribution fitting options. + + + + + Maximum Likelihood learning algorithm for + discrete-density Hidden Markov Models. + + + + + The maximum likelihood estimate is a + supervised learning algorithm. It considers both the sequence + of observations as well as the sequence of states in the Markov model + are visible and thus during training. + + + Often, the Maximum Likelihood Estimate can be used to give a starting + point to a unsupervised algorithm, making possible to use semi-supervised + techniques with HMMs. It is possible, for example, to use MLE to guess + initial values for an HMM given a small set of manually labeled labels, + and then further estimate this model using the + Viterbi learning algorithm. + + + + + The following example comes from Prof. Yechiam Yemini slides on Hidden Markov + Models, available at http://www.cs.columbia.edu/4761/notes07/chapter4.3-HMM.pdf. + In this example, we will be specifying both the sequence of observations and + the sequence of states assigned to each observation in each sequence to learn + our Markov model. + + + // Those are the observation sequences. Each sequence contains a variable number + // of observation (although in this example they have all the same length, this + // is just a coincidence and not something required). + + int[][] observations = + { + new int[] { 0,0,0,1,0,0 }, + new int[] { 1,0,0,1,0,0 }, + new int[] { 0,0,1,0,0,0 }, + new int[] { 0,0,0,0,1,0 }, + new int[] { 1,0,0,0,1,0 }, + new int[] { 0,0,0,1,1,0 }, + new int[] { 1,0,0,0,0,0 }, + new int[] { 1,0,1,0,0,0 }, + }; + + // Now those are the visible states associated with each observation in each + // observation sequence above. Note that there is always one state assigned + // to each observation, so the lengths of the sequence of observations and + // the sequence of states must always match. + + int[][] paths = + { + new int[] { 0,0,1,0,1,0 }, + new int[] { 1,0,1,0,1,0 }, + new int[] { 1,0,0,1,1,0 }, + new int[] { 1,0,1,1,1,0 }, + new int[] { 1,0,0,1,0,1 }, + new int[] { 0,0,1,0,0,1 }, + new int[] { 0,0,1,1,0,1 }, + new int[] { 0,1,1,1,0,0 }, + }; + + // Create our Markov model with two states (0, 1) and two symbols (0, 1) + HiddenMarkovModel model = new HiddenMarkovModel(states: 2, symbols: 2); + + // Now we can create our learning algorithm + MaximumLikelihoodLearning teacher = new MaximumLikelihoodLearning(model) + { + // Set some options + UseLaplaceRule = false + }; + + // and finally learn a model using the algorithm + double logLikelihood = teacher.Run(observations, paths); + + + // To check what has been learned, we can extract the emission + // and transition matrices, as well as the initial probability + // vector from the HMM to compare against expected values: + + var pi = Matrix.Exp(model.Probabilities); // { 0.5, 0.5 } + var A = Matrix.Exp(model.Transitions); // { { 7/20, 13/20 }, { 14/20, 6/20 } } + var B = Matrix.Exp(model.Emissions); // { { 17/25, 8/25 }, { 19/23, 4/23 } } + + + + + + + + + + + Creates a new instance of the Maximum Likelihood learning algorithm. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the Maximum Likelihood learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + An array of state labels associated to each observation sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + Supervised learning problem. Given some training observation sequences O = {o1, o2, ..., oK}, + known training state paths H = {h1, h2, ..., hK} and general structure of HMM (numbers of + hidden and visible states), determine HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Gets the model being trained. + + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Viterbi learning algorithm. + + + + + The Viterbi learning algorithm is an alternate learning algorithms + for hidden Markov models. It works by obtaining the Viterbi path + for the set of training observation sequences and then computing + the maximum likelihood estimates for the model parameters. Those + operations are repeated iteratively until model convergence. + + + The Viterbi learning algorithm is also known as the Segmental K-Means + algorithm. + + + + + + + + + + Creates a new instance of the Viterbi learning algorithm. + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs one single epoch (iteration) of the learning algorithm. + + + The observation sequences. + A vector to be populated with the decoded Viterbi sequences. + + + + + Computes the log-likelihood for the current model for the given observations. + + + The observation vectors. + + The log-likelihood of the observations belonging to the model. + + + + + Converts a univariate or multivariate array + of observations into a two-dimensional jagged array. + + + + + + Gets the model being trained. + + + + + + Gets or sets the distribution fitting options + to use when estimating distribution densities + during learning. + + The distribution fitting options. + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + When this property is set, it will only affect the estimation + of the transition and initial state probabilities. To control + the estimation of the emission probabilities, please use the + corresponding property. + + + + + + Viterbi learning algorithm. + + + + + The Viterbi learning algorithm is an alternate learning algorithms + for hidden Markov models. It works by obtaining the Viterbi path + for the set of training observation sequences and then computing + the maximum likelihood estimates for the model parameters. Those + operations are repeated iteratively until model convergence. + + + The Viterbi learning algorithm is also known as the Segmental K-Means + algorithm. + + + + + + + + + + Creates a new instance of the Viterbi learning algorithm. + + + + + + Runs one single epoch (iteration) of the learning algorithm. + + + The observation sequences. + A vector to be populated with the decoded Viterbi sequences. + + + + + Computes the log-likelihood for the current model for the given observations. + + + The observation vectors. + + The log-likelihood of the observations belonging to the model. + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Gets the model being trained. + + + + + + Gets or sets whether to use Laplace's rule + of succession to avoid zero probabilities. + + + + + + Common interface for multiple regression fitting methods. + + + + + + Runs the fitting algorithm. + + + The input training data. + The output associated with each of the outputs. + + The error. + + + + + Common interface for regression fitting methods. + + + + + + Runs the fitting algorithm. + + + The input training data. + The time until the output happened. + The indication variables used to signal + if the event occurred or if it was censored. + + The error. + + + + + Runs the fitting algorithm. + + + The input training data. + The time until the output happened. + The indication variables used to signal + if the event occurred or if it was censored. + + The error. + + + + + Iterative Reweighted Least Squares for Logistic Regression fitting. + + + + + The Iterative Reweighted Least Squares is an iterative technique based + on the Newton-Raphson iterative optimization scheme. The IRLS method uses + a local quadratic approximation to the log-likelihood function. + + By applying the Newton-Raphson optimization scheme to the cross-entropy + error function (defined as the negative logarithm of the likelihood), one + arises at a weighted formulation for the Hessian matrix. + + + The Iterative Reweighted Least Squares algorithm can also be used to learn + arbitrary generalized linear models. However, the use of this class to learn + such models is currently experimental. + + + + References: + + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Amos Storkey. (2005). Learning from Data: Learning Logistic Regressors. School of Informatics. + Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + Cosma Shalizi. (2009). Logistic Regression and Newton's Method. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + Edward F. Conor. Logistic Regression. Website. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (This is completely fictional data). + double[][] input = + { + new double[] { 55, 0 }, // 0 - no cancer + new double[] { 28, 0 }, // 0 + new double[] { 65, 1 }, // 0 + new double[] { 46, 0 }, // 1 - have cancer + new double[] { 86, 1 }, // 1 + new double[] { 56, 1 }, // 1 + new double[] { 85, 0 }, // 0 + new double[] { 33, 0 }, // 0 + new double[] { 21, 1 }, // 0 + new double[] { 42, 1 }, // 1 + }; + + // We also know if they have had lung cancer or not, and + // we would like to know whether smoking has any connection + // with lung cancer (This is completely fictional data). + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + + // To verify this hypothesis, we are going to create a logistic + // regression model for those two inputs (age and smoking). + LogisticRegression regression = new LogisticRegression(inputs: 2); + + // Next, we are going to estimate this model. For this, we + // will use the Iteratively Reweighted Least Squares method. + var teacher = new IterativeReweightedLeastSquares(regression); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta = 0; + do + { + // Perform an iteration + delta = teacher.Run(input, output); + + } while (delta > 0.001); + + // At this point, we can compute the odds ratio of our variables. + // In the model, the variable at 0 is always the intercept term, + // with the other following in the sequence. Index 1 is the age + // and index 2 is whether the patient smokes or not. + + // For the age variable, we have that individuals with + // higher age have 1.021 greater odds of getting lung + // cancer controlling for cigarette smoking. + double ageOdds = regression.GetOddsRatio(1); // 1.0208597028836701 + + // For the smoking/non smoking category variable, however, we + // have that individuals who smoke have 5.858 greater odds + // of developing lung cancer compared to those who do not + // smoke, controlling for age (remember, this is completely + // fictional and for demonstration purposes only). + double smokeOdds = regression.GetOddsRatio(2); // 5.8584748789881331 + + + + + + + Constructs a new Iterative Reweighted Least Squares. + + + The regression to estimate. + + + + + Constructs a new Iterative Reweighted Least Squares. + + + The regression to estimate. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Reweighted Least Squares algorithm. + + + The input data. + The outputs associated with each input vector. + An weight associated with each sample. + + The maximum relative change in the parameters after the iteration. + + + + + Computes the sum-of-squared error between the + model outputs and the expected outputs. + + + The input data set. + The output values. + + The sum-of-squared errors. + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets the Hessian matrix computed in + the last Newton-Raphson iteration. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets a value indicating whether standard + errors should be computed in the next iteration. + + + true to compute standard errors; otherwise, false. + + + + + + Gets or sets the regularization value to be + added in the objective function. Default is + 1e-10. + + + + + + Lower-Bound Newton-Raphson for Multinomial logistic regression fitting. + + + + + The Lower Bound principle consists of replacing the second derivative + matrix by a global lower bound in the Leowner ordering [Böhning, 92]. + In the case of multinomial logistic regression estimation, the Hessian + of the negative log-likelihood function can be replaced by one of those + lower bounds, leading to a monotonically converging sequence of iterates. + Furthermore, [Krishnapuram, Carin, Figueiredo and Hartemink, 2005] also + have shown that a lower bound can be achieved which does not depend on + the coefficients for the current iteration. + + + References: + + + B. Krishnapuram, L. Carin, M.A.T. Figueiredo, A. Hartemink. Sparse Multinomial + Logistic Regression: Fast Algorithms and Generalization Bounds. 2005. Available on: + http://www.lx.it.pt/~mtf/Krishnapuram_Carin_Figueiredo_Hartemink_2005.pdf + + D. Böhning. Multinomial logistic regression algorithm. Annals of the Institute + of Statistical Mathematics, 44(9):197 ˝U200, 1992. 2. M. Corney. + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + + + + + // Create a new Multinomial Logistic Regression for 3 categories + var mlr = new MultinomialLogisticRegression(inputs: 2, categories: 3); + + // Create a estimation algorithm to estimate the regression + LowerBoundNewtonRaphson lbnr = new LowerBoundNewtonRaphson(mlr); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta; + int iteration = 0; + + do + { + // Perform an iteration + delta = lbnr.Run(inputs, outputs); + iteration++; + + } while (iteration < 100 && delta > 1e-6); + + + + + + + Creates a new . + + The regression to estimate. + + + + + Runs one iteration of the Lower-Bound Newton-Raphson iteration. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Runs one iteration of the Lower-Bound Newton-Raphson iteration. + + The input data. + The outputs associated with each input vector. + The maximum relative change in the parameters after the iteration. + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets or sets a value indicating whether the + lower bound should be updated using new data. + + + + true if the lower bound should be + updated; otherwise, false. + + + + + Gets the Lower-Bound matrix being used in place of + the Hessian matrix in the Newton-Raphson iterations. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets a value indicating whether standard + errors should be computed in the next iteration. + + + true to compute standard errors; otherwise, false. + + + + + + Nominal Multinomial Logistic Regression. + + + + + // Create a new Multinomial Logistic Regression for 3 categories + var mlr = new MultinomialLogisticRegression(inputs: 2, categories: 3); + + // Create a estimation algorithm to estimate the regression + LowerBoundNewtonRaphson lbnr = new LowerBoundNewtonRaphson(mlr); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta; + int iteration = 0; + + do + { + // Perform an iteration + delta = lbnr.Run(inputs, outputs); + iteration++; + + } while (iteration < 100 && delta > 1e-6); + + + + + + + Creates a new Multinomial Logistic Regression Model. + + + The number of input variables for the model. + The number of categories for the model. + + + + + Creates a new Multinomial Logistic Regression Model. + + + The number of input variables for the model. + The number of categories for the model. + The initial values for the intercepts. + + + + + Computes the model output for the given input vector. + + + + The first category is always considered the baseline category. + + + The input vector. + + The output value. + + + + + Computes the model outputs for the given input vectors. + + + + The first category is always considered the baseline category. + + + The input vector. + + The output value. + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + The likelihood ratio test of the overall model, also called the model chi-square test. + + + + + The Chi-square test, also called the likelihood ratio test or the log-likelihood test + is based on the deviance of the model (-2*log-likelihood). The log-likelihood ratio test + indicates whether there is evidence of the need to move from a simpler model to a more + complicated one (where the simpler model is nested within the complicated one). + + The difference between the log-likelihood ratios for the researcher's model and a + simpler model is often called the "model chi-square". + + + + + + Gets the 95% confidence interval for the Odds Ratio for a given coefficient. + + + The category's index. + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the 95% confidence intervals for the Odds Ratios for all coefficients. + + + The category's index. + + + + + Gets the Odds Ratio for a given coefficient. + + + + The odds ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + The category index. + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + The Odds Ratio for the given coefficient. + + + + + + Gets the Odds Ratio for all coefficients. + + + + The odds ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + The category index. + + + The Odds Ratio for the given coefficient. + + + + + + Gets the Wald Test for a given coefficient. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + The category index. + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Wald Test for all coefficients. + + + + The Wald statistical test is a test for a model parameter in which + the estimated parameter θ is compared with another proposed parameter + under the assumption that the difference between them will be approximately + normal. There are several problems with the use of the Wald test. Please + take a look on substitute tests based on the log-likelihood if possible. + + + The category's index. + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Deviance for the model. + + + + The deviance is defined as -2*Log-Likelihood. + + + A set of input data. + A set of output data. + + The deviance (a measure of performance) of the model + calculated over the given data sets. + + + + + + Gets the Log-Likelihood for the model. + + + A set of input data. + A set of output data. + + The Log-Likelihood (a measure of performance) of + the model calculated over the given data sets. + + + + + + Gets the Log-Likelihood Ratio between two models. + + + + The Log-Likelihood ratio is defined as 2*(LL - LL0). + + + A set of input data. + A set of output data. + Another Logistic Regression model. + The Log-Likelihood ratio (a measure of performance + between two models) calculated over the given data sets. + + + + + Creates a new MultinomialLogisticRegression that is a copy of the current instance. + + + + + + Gets the coefficient vectors, in which the + first columns are always the intercept values. + + + + + + Gets the standard errors associated with each + coefficient during the model estimation phase. + + + + + + Gets the number of categories of the model. + + + + + + Gets the number of inputs of the model. + + + + + Base class for Hidden Markov Models. This class cannot + be instantiated. + + + + + + Constructs a new Hidden Markov Model. + + + + + + Gets the number of states of this model. + + + + + + Gets the log-initial probabilities log(pi) for this model. + + + + + + Gets the log-transition matrix log(A) for this model. + + + + + + Gets or sets a user-defined tag associated with this model. + + + + + + Base class for (HMM) Sequence Classifiers. + This class cannot be instantiated. + + + + + + Initializes a new instance of the class. + + The number of classes in the classification problem. + + + + + Initializes a new instance of the class. + + The models specializing in each of the classes of the classification problem. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probability of the assigned class. + + Return the label of the given sequence, or -1 if it has + been rejected by the threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probabilities for each class. + + Return the label of the given sequence, or -1 if it has + been rejected by the threshold model. + + + + + Computes the log-likelihood that a sequence + belongs to a given class according to this + classifier. + + The sequence of observations. + The output class label. + + The log-likelihood of the sequence belonging to the given class. + + + + + Computes the log-likelihood that a sequence + belongs any of the classes in the classifier. + + The sequence of observations. + + The log-likelihood of the sequence belonging to the classifier. + + + + + Computes the log-likelihood of a set of sequences + belonging to their given respective classes according + to this classifier. + + A set of sequences of observations. + The output class label for each sequence. + + The log-likelihood of the sequences belonging to the given classes. + + + + + Returns an enumerator that iterates through the models in the classifier. + + + + A that + can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through the models in the classifier. + + + + A that + can be used to iterate through the collection. + + + + + + Gets or sets the threshold model. + + + + + For gesture spotting, Lee and Kim introduced a threshold model which is + composed of parts of the models in a hidden Markov sequence classifier. + + The threshold model acts as a baseline for decision rejection. If none of + the classifiers is able to produce a higher likelihood than the threshold + model, the decision is rejected. + + In the original Lee and Kim publication, the threshold model is constructed + by creating a fully connected ergodic model by removing all outgoing transitions + of states in all gesture models and fully connecting those states. + + References: + + + H. Lee, J. Kim, An HMM-based threshold model approach for gesture + recognition, IEEE Trans. Pattern Anal. Mach. Intell. 21 (10) (1999) + 961–973. + + + + + + + Gets or sets a value governing the rejection given by + a threshold model (if present). Increasing this value + will result in higher rejection rates. Default is 1. + + + + + + Gets the collection of models specialized in each + class of the sequence classification problem. + + + + + + Gets the Hidden Markov + Model implementation responsible for recognizing + each of the classes given the desired class label. + + The class label of the model to get. + + + + + Gets the number of classes which can be recognized by this classifier. + + + + + + Gets the prior distribution assumed for the classes. + + + + + + Common interface for sequence classifiers using + hidden Markov models. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected. + + + + + Gets the number of classes which can be recognized by this classifier. + + + + + + Arbitrary-density Hidden Markov Model. + + + + + Hidden Markov Models (HMM) are stochastic methods to model temporal and sequence + data. They are especially known for their application in temporal pattern recognition + such as speech, handwriting, gesture recognition, part-of-speech tagging, musical + score following, partial discharges and bioinformatics. + + + This page refers to the arbitrary-density (continuous emission distributions) version + of the model. For discrete distributions, please see . + + + + Dynamical systems of discrete nature assumed to be governed by a Markov chain emits + a sequence of observable outputs. Under the Markov assumption, it is also assumed that + the latest output depends only on the current state of the system. Such states are often + not known from the observer when only the output values are observable. + + + Hidden Markov Models attempt to model such systems and allow, among other things, + + + To infer the most likely sequence of states that produced a given output sequence, + + Infer which will be the most likely next state (and thus predicting the next output), + + Calculate the probability that a given sequence of outputs originated from the system + (allowing the use of hidden Markov models for sequence classification). + + + + The “hidden” in Hidden Markov Models comes from the fact that the observer does not + know in which state the system may be in, but has only a probabilistic insight on where + it should be. + + + The arbitrary-density Hidden Markov Model uses any probability density function (such + as Gaussian + Mixture Model) for + computing the state probability. In other words, in a continuous HMM the matrix of emission + probabilities B is replaced by an array of either discrete or continuous probability density + functions. + + + If a general + discrete distribution is used as the underlying probability density function, the + model becomes equivalent to the discrete Hidden Markov Model. + + + + For a more thorough explanation on some fundamentals on how Hidden Markov Models work, + please see the documentation page. To learn a Markov + model, you can find a list of both supervised and + unsupervised learning algorithms in the + namespace. + + + References: + + + Wikipedia contributors. "Linear regression." Wikipedia, the Free Encyclopedia. + Available at: http://en.wikipedia.org/wiki/Hidden_Markov_model + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + + + + The example below reproduces the same example given in the Wikipedia + entry for the Viterbi algorithm (http://en.wikipedia.org/wiki/Viterbi_algorithm). + As an arbitrary density model, one can use it with any available + probability distributions, including with a discrete probability. In the + following example, the generic model is used with a + to reproduce the same example given in . + Below, the model's parameters are initialized manually. However, it is possible to learn + those automatically using . + + + // Create the transition matrix A + double[,] transitions = + { + { 0.7, 0.3 }, + { 0.4, 0.6 } + }; + + // Create the vector of emission densities B + GeneralDiscreteDistribution[] emissions = + { + new GeneralDiscreteDistribution(0.1, 0.4, 0.5), + new GeneralDiscreteDistribution(0.6, 0.3, 0.1) + }; + + // Create the initial probabilities pi + double[] initial = + { + 0.6, 0.4 + }; + + // Create a new hidden Markov model with discrete probabilities + var hmm = new HiddenMarkovModel<GeneralDiscreteDistribution>(transitions, emissions, initial); + + // After that, one could, for example, query the probability + // of a sequence occurring. We will consider the sequence + double[] sequence = new double[] { 0, 1, 2 }; + + // And now we will evaluate its likelihood + double logLikelihood = hmm.Evaluate(sequence); + + // At this point, the log-likelihood of the sequence + // occurring within the model is -3.3928721329161653. + + // We can also get the Viterbi path of the sequence + int[] path = hmm.Decode(sequence, out logLikelihood); + + // At this point, the state path will be 1-0-0 and the + // log-likelihood will be -4.3095199438871337 + + + + Baum-Welch, one of the most famous + learning algorithms for Hidden Markov Models. + Discrete-density Hidden Markov Model + + + + + + Common interface for Hidden Markov Models. + + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The state optimized probability. + + The sequence of states that most likely produced the sequence. + + + + + + Calculates the probability that this model has generated the given sequence. + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + Forward algorithm. + + A sequence of observations. + + The probability that the given sequence has been generated by this model. + + + + + + Gets the number of states of this model. + + + + + + Gets the initial probabilities for this model. + + + + + + Gets the Transition matrix (A) for this model. + + + + + + Gets or sets a user-defined tag. + + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + + The initial emission probability distribution to be used by each of the states. This + initial probability distribution will be cloned across all states. + + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + + The initial emission probability distributions for each state. + + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + The transitions matrix A for this model. + The emissions matrix B for this model. + The initial state probabilities for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model with arbitrary-density state probabilities. + + + The number of states for the model. + A initial distribution to be copied to all states in the model. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The sequence of states that most likely produced the sequence. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + The log-likelihood along the most likely sequence. + + The sequence of states that most likely produced the sequence. + + + + + Calculates the probability of each hidden state for each + observation in the observation vector. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the probability of each hidden state for each observation + in the observation vector, and uses those probabilities to decode the + most likely sequence of states for each observation in the sequence + using the posterior decoding method. See remarks for details. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + The sequence of states most likely associated with each + observation, estimated using the posterior decoding method. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the likelihood that this model has generated the given sequence. + + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + either the Viterbi or the Forward algorithms. + + + + A sequence of observations. + + + The log-likelihood that the given sequence has been generated by this model. + + + + + + Calculates the log-likelihood that this model has generated the + given observation sequence along the given state path. + + + A sequence of observations. + A sequence of states. + + + The log-likelihood that the given sequence of observations has + been generated by this model along the given sequence of states. + + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observation that should be coming after the last observation in this sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + The continuous probability distribution describing the next observations + that are likely to be generated. Taking the mode of this distribution might give the most likely + next value in the observed sequence. + + + + + Predicts the next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the given sequence, plus the predicted + next observation. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts the next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the given sequence, plus the predicted + next observations. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + + A random vector of observations drawn from the model. + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + The log-likelihood of the generated observation sequence. + The Viterbi path of the generated observation sequence. + + A random vector of observations drawn from the model. + + + + + Predicts the next observation occurring after a given observation sequence. + + + + + + Predicts the next observation occurring after a given observation sequence. + + + + + + Predicts the next observation occurring after a given observation sequence. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Loads a hidden Markov model from a stream. + + + The stream from which the model is to be deserialized. + + The deserialized model. + + + + + Loads a hidden Markov model from a file. + + + The path to the file from which the model is to be deserialized. + + The deserialized model. + + + + + Gets the number of dimensions in the + probability distributions for the states. + + + + + + Gets the Emission matrix (B) for this model. + + + + + + Arbitrary-density Hidden Markov Model Set for Sequence Classification. + + + + + This class uses a set of density hidden + Markov models to classify sequences of real (double-precision floating point) + numbers or arrays of those numbers. Each model will try to learn and recognize each + of the different output classes. For examples and details on how to learn such models, + please take a look on the documentation for + . + + + For the discrete version of this classifier, please see its non-generic counterpart + . + + + + + Examples are available at the respective learning algorithm pages. For + example, see . + + + + + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + The class labels for each of the models. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + + The models specializing in each of the classes of + the classification problem. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The initial probability distributions for the hidden states. + For multivariate continuous density distributions, such as Normal mixtures, the + choice of initial values is crucial for a good performance. + The class labels for each of the models. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The probability of the assigned class. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the log-likelihood of a sequence + belong to a given class according to this + classifier. + + The sequence of observations. + The output class label. + + The log-likelihood of the sequence belonging to the given class. + + + + + Computes the log-likelihood that a sequence + belongs any of the classes in the classifier. + + The sequence of observations. + + The log-likelihood of the sequence belonging to the classifier. + + + + + Computes the log-likelihood of a set of sequences + belonging to their given respective classes according + to this classifier. + + A set of sequences of observations. + The output class label for each sequence. + + The log-likelihood of the sequences belonging to the given classes. + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Loads a classifier from a stream. + + + The stream from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a file. + + + The path to the file from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Gets the number of dimensions of the + observations handled by this classifier. + + + + + + Discrete-density Hidden Markov Model. + + + + + Hidden Markov Models (HMM) are stochastic methods to model temporal and sequence + data. They are especially known for their application in temporal pattern recognition + such as speech, handwriting, gesture recognition, part-of-speech tagging, musical + score following, partial discharges and bioinformatics. + + + This page refers to the discrete-density version of the model. For arbitrary + density (probability distribution) definitions, please see + . + + + + Dynamical systems of discrete nature assumed to be governed by a Markov chain emits + a sequence of observable outputs. Under the Markov assumption, it is also assumed that + the latest output depends only on the current state of the system. Such states are often + not known from the observer when only the output values are observable. + + + Assuming the Markov probability, the probability of any sequence of observations + occurring when following a given sequence of states can be stated as + +

+

+ + + in which the probabilities p(yt|yt-1) can be read as the + probability of being currently in state yt given we just were in the + state yt-1 at the previous instant t-1, and the probability + p(xt|yt) can be understood as the probability of observing + xt at instant t given we are currently in the state + yt. To compute those probabilities, we simple use two matrices + A and B. + The matrix A is the matrix of state probabilities: + it gives the probabilities p(yt|yt-1) of jumping from one state + to the other, and the matrix B is the matrix of observation probabilities, which gives the + distribution density p(xt|yt) associated + a given state yt. In the discrete case, + B is really a matrix. In the continuous case, + B is a vector of probability distributions. The overall model definition + can then be stated by the tuple + +

+

+ + + in which n is an integer representing the total number + of states in the system, A is a matrix + of transition probabilities, B is either + a matrix of observation probabilities (in the discrete case) or a vector of probability + distributions (in the general case) and p is a vector of + initial state probabilities determining the probability of starting in each of the + possible states in the model. + + + Hidden Markov Models attempt to model such systems and allow, among other things, + + + To infer the most likely sequence of states that produced a given output sequence, + + Infer which will be the most likely next state (and thus predicting the next output), + + Calculate the probability that a given sequence of outputs originated from the system + (allowing the use of hidden Markov models for sequence classification). + + + + The “hidden” in Hidden Markov Models comes from the fact that the observer does not + know in which state the system may be in, but has only a probabilistic insight on where + it should be. + + + To learn a Markov model, you can find a list of both + supervised and unsupervised learning + algorithms in the namespace. + + + References: + + + Wikipedia contributors. "Linear regression." Wikipedia, the Free Encyclopedia. + Available at: http://en.wikipedia.org/wiki/Hidden_Markov_model + + Nikolai Shokhirev, Hidden Markov Models. Personal website. Available at: + http://www.shokhirev.com/nikolai/abc/alg/hmm/hmm.html + + X. Huang, A. Acero, H. Hon. "Spoken Language Processing." pp 396-397. + Prentice Hall, 2001. + + Dawei Shen. Some mathematics for HMMs, 2008. Available at: + http://courses.media.mit.edu/2010fall/mas622j/ProblemSets/ps4/tutorial.pdf + +
+ + + The example below reproduces the same example given in the Wikipedia + entry for the Viterbi algorithm (http://en.wikipedia.org/wiki/Viterbi_algorithm). + In this example, the model's parameters are initialized manually. However, it is + possible to learn those automatically using . + + + // Create the transition matrix A + double[,] transition = + { + { 0.7, 0.3 }, + { 0.4, 0.6 } + }; + + // Create the emission matrix B + double[,] emission = + { + { 0.1, 0.4, 0.5 }, + { 0.6, 0.3, 0.1 } + }; + + // Create the initial probabilities pi + double[] initial = + { + 0.6, 0.4 + }; + + // Create a new hidden Markov model + HiddenMarkovModel hmm = new HiddenMarkovModel(transition, emission, initial); + + // After that, one could, for example, query the probability + // of a sequence occurring. We will consider the sequence + int[] sequence = new int[] { 0, 1, 2 }; + + // And now we will evaluate its likelihood + double logLikelihood = hmm.Evaluate(sequence); + + // At this point, the log-likelihood of the sequence + // occurring within the model is -3.3928721329161653. + + // We can also get the Viterbi path of the sequence + int[] path = hmm.Decode(sequence, out logLikelihood); + + // At this point, the state path will be 1-0-0 and the + // log-likelihood will be -4.3095199438871337 + + + + Baum-Welch, one of the most famous + learning algorithms for Hidden Markov Models. + Arbitrary-density + Hidden Markov Model. + + +
+ + + Constructs a new Hidden Markov Model. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The emissions matrix B for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + Whether to initialize emissions with random probabilities + or uniformly with 1 / number of symbols. Default is false (default is + to use 1/symbols). + + + + + Constructs a new Hidden Markov Model. + + + The transitions matrix A for this model. + The emissions matrix B for this model. + The initial state probabilities for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model. + + + The number of states for this model. + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model. + + + The number of states for this model. + The number of output symbols used for this model. + Whether to initialize the model transitions and emissions + with random probabilities or uniformly with 1 / number of states (for + transitions) and 1 / number of symbols (for emissions). Default is false. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + + The sequence of states that most likely produced the sequence. + + + + + Calculates the most likely sequence of hidden states + that produced the given observation sequence. + + + + Decoding problem. Given the HMM M = (A, B, pi) and the observation sequence + O = {o1,o2, ..., oK}, calculate the most likely sequence of hidden states Si + that produced this observation sequence O. This can be computed efficiently + using the Viterbi algorithm. + + + A sequence of observations. + The log-likelihood along the most likely sequence. + The sequence of states that most likely produced the sequence. + + + + + Calculates the probability of each hidden state for each + observation in the observation vector. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the probability of each hidden state for each observation + in the observation vector, and uses those probabilities to decode the + most likely sequence of states for each observation in the sequence + using the posterior decoding method. See remarks for details. + + + + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. By following those probabilities in order, we may decode those + probabilities into a sequence of most likely states. However, the sequence + of obtained states may not be valid in the model. + + + A sequence of observations. + The sequence of states most likely associated with each + observation, estimated using the posterior decoding method. + + A vector of the same size as the observation vectors, containing + the probabilities for each state in the model for the current observation. + If there are 3 states in the model, and the + array contains 5 elements, the resulting vector will contain 5 vectors of + size 3 each. Each vector of size 3 will contain probability values that sum + up to one. + + + + + Calculates the log-likelihood that this model has generated the given sequence. + + + + Evaluation problem. Given the HMM M = (A, B, pi) and the observation + sequence O = {o1, o2, ..., oK}, calculate the probability that model + M has generated sequence O. This can be computed efficiently using the + either the Viterbi or the Forward algorithms. + + + + A sequence of observations. + + + + The log-likelihood that the given sequence has been generated by this model. + + + + + + Calculates the log-likelihood that this model has generated the + given observation sequence along the given state path. + + + A sequence of observations. + A sequence of states. + + + The log-likelihood that the given sequence of observations has + been generated by this model along the given sequence of states. + + + + + + Predicts next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the given sequence, plus the predicted + next observations. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Predicts next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + + + + + Predicts next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the different symbols for each predicted + next observations. In order to convert those values to probabilities, exponentiate the + values in the vectors (using the Exp function) and divide each value by their vector's sum. + + + + + Predicts the next observation occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observation that should be coming after the last observation in this sequence. + The log-likelihood of the different symbols for the next observation. + In order to convert those values to probabilities, exponentiate the values in the vector (using + the Exp function) and divide each value by the vector sum. This will give the probability of each + next possible symbol to be the next observation in the sequence. + + + + + Predicts the next observations occurring after a given observation sequence. + + + A sequence of observations. Predictions will be made regarding + the next observations that should be coming after the last observation in this sequence. + The number of observations to be predicted. Default is 1. + The log-likelihood of the different symbols for each predicted + next observations. In order to convert those values to probabilities, exponentiate the + values in the vectors (using the Exp function) and divide each value by their vector's sum. + The log-likelihood of the given sequence, plus the predicted + next observations. Exponentiate this value (use the System.Math.Exp function) to obtain + a likelihood value. + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + + A random vector of observations drawn from the model. + + + + Accord.Math.Tools.SetupGenerator(42); + + // Consider some phrases: + // + string[][] phrases = + { + new[] { "those", "are", "sample", "words", "from", "a", "dictionary" }, + new[] { "those", "are", "sample", "words" }, + new[] { "sample", "words", "are", "words" }, + new[] { "those", "words" }, + new[] { "those", "are", "words" }, + new[] { "words", "from", "a", "dictionary" }, + new[] { "those", "are", "words", "from", "a", "dictionary" } + }; + + // Let's begin by transforming them to sequence of + // integer labels using a codification codebook: + var codebook = new Codification("Words", phrases); + + // Now we can create the training data for the models: + int[][] sequence = codebook.Translate("Words", phrases); + + // To create the models, we will specify a forward topology, + // as the sequences have definite start and ending points. + // + var topology = new Forward(states: 4); + int symbols = codebook["Words"].Symbols; // We have 7 different words + + // Create the hidden Markov model + HiddenMarkovModel hmm = new HiddenMarkovModel(topology, symbols); + + // Create the learning algorithm + BaumWelchLearning teacher = new BaumWelchLearning(hmm); + + // Teach the model about the phrases + double error = teacher.Run(sequence); + + // Now, we can ask the model to generate new samples + // from the word distributions it has just learned: + // + int[] sample = hmm.Generate(3); + + // And the result will be: "those", "are", "words". + string[] result = codebook.Translate("Words", sample); + + + + + + + Generates a random vector of observations from the model. + + + The number of samples to generate. + The log-likelihood of the generated observation sequence. + The Viterbi path of the generated observation sequence. + + + An usage example is available at the documentation page. + + + A random vector of observations drawn from the model. + + + + + Converts this Discrete density Hidden Markov Model + into a arbitrary density model. + + + + + Converts this Discrete density Hidden Markov Model + to a Continuous density model. + + + + + Constructs a new discrete-density Hidden Markov Model. + + + The transitions matrix A for this model. + The emissions matrix B for this model. + The initial state probabilities for this model. + Set to true if the matrices are given with logarithms of the + intended probabilities; set to false otherwise. Default is false. + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + + A object specifying the initial values of the matrix of transition + probabilities A and initial state probabilities pi to be used by this model. + + The number of output symbols used for this model. + Whether to initialize emissions with random probabilities + or uniformly with 1 / number of symbols. Default is false (default is + to use 1/symbols). + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + The number of states for this model. + The number of output symbols used for this model. + + + + + Constructs a new Hidden Markov Model with discrete state probabilities. + + + The number of states for this model. + The number of output symbols used for this model. + Whether to initialize emissions with random probabilities + or uniformly with 1 / number of symbols. Default is false (default is + to use 1/symbols). + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Saves the hidden Markov model to a stream. + + + The stream to which the model is to be serialized. + + + + + Loads a hidden Markov model from a stream. + + + The stream from which the model is to be deserialized. + + The deserialized classifier. + + + + + Loads a hidden Markov model from a file. + + + The path to the file from which the model is to be deserialized. + + The deserialized model. + + + + + Loads a hidden Markov model from a stream. + + + The stream from which the model is to be deserialized. + + The deserialized model. + + + + + Loads a hidden Markov model from a file. + + + The path to the file from which the model is to be deserialized. + + The deserialized model. + + + + + Gets the number of symbols in this model's alphabet. + + + + + + Gets the log-emission matrix log(B) for this model. + + + + + + Learning algorithm for discrete-density + generative hidden Markov sequence classifiers. + + + + + This class acts as a teacher for + classifiers based on discrete hidden Markov models. The learning + algorithm uses a generative approach. It works by training each model in + the generative classifier separately. + + + This class implements discrete classifiers only. Discrete classifiers can + be used whenever the sequence of observations is discrete or can be represented + by discrete symbols, such as class labels, integers, and so on. If you need + to classify sequences of other entities, such as real numbers, vectors (i.e. + multivariate observations), then you can use + generic-density + hidden Markov models. Those models can be modeled after any kind of + probability distribution implementing + the interface. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + The following example shows how to create a hidden Markov model sequence classifier + to classify discrete sequences into two disjoint labels: labels for class 0 and + labels for class 1. The training data is separated in inputs and outputs. The + inputs are the sequences we are trying to learn, and the outputs are the labels + associated with each input sequence. + + + In this example we will be using the Baum-Welch + algorithm to learn each model in our generative classifier; however, any other + unsupervised learning algorithm could be used. + + + + // Declare some testing data + int[][] inputs = new int[][] + { + new int[] { 0,1,1,0 }, // Class 0 + new int[] { 0,0,1,0 }, // Class 0 + new int[] { 0,1,1,1,0 }, // Class 0 + new int[] { 0,1,0 }, // Class 0 + + new int[] { 1,0,0,1 }, // Class 1 + new int[] { 1,1,0,1 }, // Class 1 + new int[] { 1,0,0,0,1 }, // Class 1 + new int[] { 1,0,1 }, // Class 1 + }; + + int[] outputs = new int[] + { + 0,0,0,0, // First four sequences are of class 0 + 1,1,1,1, // Last four sequences are of class 1 + }; + + + // We are trying to predict two different classes + int classes = 2; + + // Each sequence may have up to two symbols (0 or 1) + int symbols = 2; + + // Nested models will have two states each + int[] states = new int[] { 2, 2 }; + + // Creates a new Hidden Markov Model Sequence Classifier with the given parameters + HiddenMarkovClassifier classifier = new HiddenMarkovClassifier(classes, states, symbols); + + // Create a new learning algorithm to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning(classifier, + + // Train each model until the log-likelihood changes less than 0.001 + modelIndex => new BaumWelchLearning(classifier.Models[modelIndex]) + { + Tolerance = 0.001, + Iterations = 0 + } + ); + + // Train the sequence classifier using the algorithm + double likelihood = teacher.Run(inputs, outputs); + + + + + + + + + + + + Abstract base class for Sequence Classifier learning algorithms. + + + + + + Creates a new instance of the learning algorithm for a given + Markov sequence classifier using the specified configuration + function. + + + + + + Trains each model to recognize each of the output labels. + + The sum log-likelihood for all models after training. + + + + + Creates a new threshold model + for the current set of Markov models in this sequence classifier. + + A threshold Markov model. + + + + + Creates the state transition topology for the threshold model. This + method can be used to help in the implementation of the + abstract method which has to be defined for implementers of this class. + + + + + + Raises the event. + + + The instance containing the event data. + + + + + Raises the event. + + + The instance containing the event data. + + + + + Gets the classifier being trained by this instance. + + The classifier being trained by this instance. + + + + + Gets or sets the configuration function specifying which + training algorithm should be used for each of the models + in the hidden Markov model set. + + + + + + Gets or sets a value indicating whether a threshold model + should be created or updated after training to support rejection. + + true to update the threshold model after training; + otherwise, false. + + + + + Gets or sets a value indicating whether the class priors + should be estimated from the data, as in an empirical Bayes method. + + + + + + Occurs when the learning of a class model has started. + + + + + + Occurs when the learning of a class model has finished. + + + + + + Creates a new instance of the learning algorithm for a given + Markov sequence classifier using the specified configuration + function. + + + + + + Trains each model to recognize each of the output labels. + + + The sum log-likelihood for all models after training. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The percent of misclassification errors for the data. + + + + + Creates a new threshold model + for the current set of Markov models in this sequence classifier. + + + + A threshold Markov model. + + + + + + Gets or sets the smoothing kernel's sigma + for the threshold model. + + + The smoothing kernel's sigma. + + + + + Configuration function delegate for Sequence Classifier Learning algorithms. + + + + + Submodel learning event arguments. + + + + + Initializes a new instance of the class. + + + The class label. + The total number of classes. + + + + + Gets the generative class model to + which this event refers to. + + + + + Gets the total number of models + to be learned. + + + + + + Common interface for unsupervised learning algorithms for hidden + Markov models which support for weighted training samples. + + + + + + Runs the learning algorithm. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Base class for implementations of the Baum-Welch learning algorithm. + This class cannot be instantiated. + + + + + This class uses a template method pattern so specialized classes + can be written for each kind of hidden Markov model emission density + (either discrete or continuous). The methods , + and should + be overridden by inheriting classes to specify how those probabilities + should be computed for the density being modeled. + + + For the actual Baum-Welch classes, please refer to + or . For other kinds of algorithms, please + see and + and their generic counter-parts. + + + + + + + + + Initializes a new instance of the class. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + + + The average log-likelihood for the observations after the model has been trained. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + The weight associated with each sequence. + + + The average log-likelihood for the observations after the model has been trained. + + + + + + Computes the forward and backward probabilities matrices + for a given observation referenced by its index in the + input training data. + + + The index of the observation in the input training data. + Returns the computed forward probabilities matrix. + Returns the computed backward probabilities matrix. + + + + + Computes the ksi matrix of probabilities for a given observation + referenced by its index in the input training data. + + + The index of the observation in the input training data. + The matrix of forward probabilities for the observation. + The matrix of backward probabilities for the observation. + + + + + Updates the emission probability matrix. + + + + Implementations of this method should use the observations + in the training data and the Gamma probability matrix to + update the probability distributions of symbol emissions. + + + + + + Gets or sets the maximum change in the average log-likelihood + after an iteration of the algorithm used to detect convergence. + + + + This is the likelihood convergence limit L between two iterations of the algorithm. The + algorithm will stop when the change in the likelihood for two consecutive iterations + has not changed by more than L percent of the likelihood. If left as zero, the + algorithm will ignore this parameter and iterate over a number of fixed iterations + specified by the previous parameter. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + This is the maximum number of iterations to be performed by the learning algorithm. If + specified as zero, the algorithm will learn until convergence of the model average + likelihood respecting the desired limit. + + + + + + Gets the Ksi matrix of log probabilities created during + the last iteration of the Baum-Welch learning algorithm. + + + + + + Gets the Gamma matrix of log probabilities created during + the last iteration of the Baum-Welch learning algorithm. + + + + + + Gets the sample weights in the last iteration of the + Baum-Welch learning algorithm. + + + + + + Baum-Welch learning algorithm for + discrete-density Hidden Markov Models. + + + + + The Baum-Welch algorithm is an unsupervised algorithm + used to learn a single hidden Markov model object from a set of observation sequences. It works + by using a variant of the + Expectation-Maximization algorithm to search a set of model parameters (i.e. the matrix + of transition probabilities A, the matrix + of emission probabilities B, and the + initial probability vector π) that + would result in a model having a high likelihood of being able + to generate a set of training + sequences given to this algorithm. + + + For increased accuracy, this class performs all computations using log-probabilities. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + // We will try to create a Hidden Markov Model which + // can detect if a given sequence starts with a zero + // and has any number of ones after that. + int[][] sequences = new int[][] + { + new int[] { 0,1,1,1,1,0,1,1,1,1 }, + new int[] { 0,1,1,1,0,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1,1,1,1 }, + new int[] { 0,1,1,1,1,1,1,1,1,1 }, + }; + + // Creates a new Hidden Markov Model with 3 states for + // an output alphabet of two characters (zero and one) + HiddenMarkovModel hmm = new HiddenMarkovModel(3, 2); + + // Try to fit the model to the data until the difference in + // the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning(hmm) { Tolerance = 0.0001, Iterations = 0 }; + + double ll = teacher.Run(sequences); + + // Calculate the probability that the given + // sequences originated from the model + double l1 = Math.Exp(hmm.Evaluate(new int[] { 0, 1 })); // 0.999 + double l2 = Math.Exp(hmm.Evaluate(new int[] { 0, 1, 1, 1 })); // 0.916 + + // Sequences which do not start with zero have much lesser probability. + double l3 = Math.Exp(hmm.Evaluate(new int[] { 1, 1 })); // 0.000 + double l4 = Math.Exp(hmm.Evaluate(new int[] { 1, 0, 0, 0 })); // 0.000 + + // Sequences which contains few errors have higher probability + // than the ones which do not start with zero. This shows some + // of the temporal elasticity and error tolerance of the HMMs. + double l5 = Math.Exp(hmm.Evaluate(new int[] { 0, 1, 0, 1, 1, 1, 1, 1, 1 })); // 0.034 + double l6 = Math.Exp(hmm.Evaluate(new int[] { 0, 1, 1, 1, 1, 1, 1, 0, 1 })); // 0.034 + + + + + + + + + + + Creates a new instance of the Baum-Welch learning algorithm. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + An array of observation sequences to be used to train the model. + + + The average log-likelihood for the observations after the model has been trained. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + + The average log-likelihood for the observations after the model has been trained. + + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + + + + Computes the forward and backward probabilities matrices + for a given observation referenced by its index in the + input training data. + + + The index of the observation in the input training data. + Returns the computed forward probabilities matrix. + Returns the computed backward probabilities matrix. + + + + + Updates the emission probability matrix. + + + + Implementations of this method should use the observations + in the training data and the Gamma probability matrix to + update the probability distributions of symbol emissions. + + + + + + Computes the ksi matrix of probabilities for a given observation + referenced by its index in the input training data. + + + The index of the observation in the input training data. + The matrix of forward probabilities for the observation. + The matrix of backward probabilities for the observation. + + + + + Creates a Baum-Welch with default configurations for + hidden Markov models with normal mixture densities. + + + + + + Creates a Baum-Welch with default configurations for + hidden Markov models with normal mixture densities. + + + + + + Gets the model being trained. + + + + + + Baum-Welch learning algorithm for + arbitrary-density (generic) Hidden Markov Models. + + + + + The Baum-Welch algorithm is an unsupervised algorithm + used to learn a single hidden Markov model object from a set of observation sequences. It works + by using a variant of the + Expectation-Maximization algorithm to search a set of model parameters (i.e. the matrix + of transition probabilities A + , the vector of state probability distributions + B, and the initial probability + vector π) that would result in a model having a high likelihood of being able + to generate a set of training + sequences given to this algorithm. + + + For increased accuracy, this class performs all computations using log-probabilities. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + + In the following example, we will create a Continuous Hidden Markov Model using + a univariate Normal distribution to model properly model continuous sequences. + + + // Create continuous sequences. In the sequences below, there + // seems to be two states, one for values between 0 and 1 and + // another for values between 5 and 7. The states seems to be + // switched on every observation. + double[][] sequences = new double[][] + { + new double[] { 0.1, 5.2, 0.3, 6.7, 0.1, 6.0 }, + new double[] { 0.2, 6.2, 0.3, 6.3, 0.1, 5.0 }, + new double[] { 0.1, 7.0, 0.1, 7.0, 0.2, 5.6 }, + }; + + + // Specify a initial normal distribution for the samples. + NormalDistribution density = new NormalDistribution(); + + // Creates a continuous hidden Markov Model with two states organized in a forward + // topology and an underlying univariate Normal distribution as probability density. + var model = new HiddenMarkovModel<NormalDistribution>(new Ergodic(2), density); + + // Configure the learning algorithms to train the sequence classifier until the + // difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<NormalDistribution>(model) + { + Tolerance = 0.0001, + Iterations = 0, + }; + + // Fit the model + double likelihood = teacher.Run(sequences); + + // See the log-probability of the sequences learned + double a1 = model.Evaluate(new[] { 0.1, 5.2, 0.3, 6.7, 0.1, 6.0 }); // -0.12799388666109757 + double a2 = model.Evaluate(new[] { 0.2, 6.2, 0.3, 6.3, 0.1, 5.0 }); // 0.01171157434400194 + + // See the log-probability of an unrelated sequence + double a3 = model.Evaluate(new[] { 1.1, 2.2, 1.3, 3.2, 4.2, 1.0 }); // -298.7465244473417 + + // We can transform the log-probabilities to actual probabilities: + double likelihood = Math.Exp(logLikelihood); + a1 = Math.Exp(a1); // 0.879 + a2 = Math.Exp(a2); // 1.011 + a3 = Math.Exp(a3); // 0.000 + + // We can also ask the model to decode one of the sequences. After + // this step the state variable will contain: { 0, 1, 0, 1, 0, 1 } + + int[] states = model.Decode(new[] { 0.1, 5.2, 0.3, 6.7, 0.1, 6.0 }); + + + + In the following example, we will create a Discrete Hidden Markov Model + using a Generic Discrete Probability Distribution to reproduce the same + code example given in documentation. + + + // Arbitrary-density Markov Models can operate using any + // probability distribution, including discrete ones. + + // In the following example, we will try to create a + // Discrete Hidden Markov Model using a discrete + // distribution to detect if a given sequence starts + // with a zero and has any number of ones after that. + + double[][] sequences = new double[][] + { + new double[] { 0,1,1,1,1,0,1,1,1,1 }, + new double[] { 0,1,1,1,0,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1,1,1,1 }, + new double[] { 0,1,1,1,1,1,1,1,1,1 }, + }; + + // Create a new Hidden Markov Model with 3 states and + // a generic discrete distribution with two symbols + var hmm = new HiddenMarkovModel.CreateGeneric(3, 2); + + // We will try to fit the model to the data until the difference in + // the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<UniformDiscreteDistribution>(hmm) + { + Tolerance = 0.0001, + Iterations = 0 + }; + + // Begin model training + double ll = teacher.Run(sequences); + + + // Calculate the likelihood that the given sequences originated + // from the model. The commented values on the right are the + // likelihoods computed by taking an exp(x) of the log-likelihoods + // returned by the Evaluate method. + double l1 = Math.Exp(hmm.Evaluate(new double[] { 0, 1 })); // 0.999 + double l2 = Math.Exp(hmm.Evaluate(new double[] { 0, 1, 1, 1 })); // 0.916 + + // Sequences which do not start with zero have much lesser probability. + double l3 = Math.Exp(hmm.Evaluate(new double[] { 1, 1 })); // 0.000 + double l4 = Math.Exp(hmm.Evaluate(new double[] { 1, 0, 0, 0 })); // 0.000 + + // Sequences which contains few errors have higher probability + // than the ones which do not start with zero. This shows some + // of the temporal elasticity and error tolerance of the HMMs. + double l5 = Math.Exp(hmm.Evaluate(new double[] { 0, 1, 0, 1, 1, 1, 1, 1, 1 })); // 0.034 + double l6 = Math.Exp(hmm.Evaluate(new double[] { 0, 1, 1, 1, 1, 1, 1, 0, 1 })); // 0.034 + + + + The next example shows how to create a multivariate model using + a multivariate normal distribution. In this example, sequences + contain vector-valued observations, such as in the case of (x,y) + pairs. + + + // Create sequences of vector-valued observations. In the + // sequence below, a single observation is composed of two + // coordinate values, such as (x, y). There seems to be two + // states, one for (x,y) values less than (5,5) and another + // for higher values. The states seems to be switched on + // every observation. + double[][][] sequences = + { + new double[][] // sequence 1 + { + new double[] { 1, 2 }, // observation 1 of sequence 1 + new double[] { 6, 7 }, // observation 2 of sequence 1 + new double[] { 2, 3 }, // observation 3 of sequence 1 + }, + new double[][] // sequence 2 + { + new double[] { 2, 2 }, // observation 1 of sequence 2 + new double[] { 9, 8 }, // observation 2 of sequence 2 + new double[] { 1, 0 }, // observation 3 of sequence 2 + }, + new double[][] // sequence 3 + { + new double[] { 1, 3 }, // observation 1 of sequence 3 + new double[] { 8, 9 }, // observation 2 of sequence 3 + new double[] { 3, 3 }, // observation 3 of sequence 3 + }, + }; + + + // Specify a initial normal distribution for the samples. + var density = new MultivariateNormalDistribution(dimension: 2); + + // Creates a continuous hidden Markov Model with two states organized in a forward + // topology and an underlying univariate Normal distribution as probability density. + var model = new HiddenMarkovModel<MultivariateNormalDistribution>(new Forward(2), density); + + // Configure the learning algorithms to train the sequence classifier until the + // difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<MultivariateNormalDistribution>(model) + { + Tolerance = 0.0001, + Iterations = 0, + }; + + // Fit the model + double logLikelihood = teacher.Run(sequences); + + // See the likelihood of the sequences learned + double a1 = Math.Exp(model.Evaluate(new [] { + new double[] { 1, 2 }, + new double[] { 6, 7 }, + new double[] { 2, 3 }})); // 0.000208 + + double a2 = Math.Exp(model.Evaluate(new [] { + new double[] { 2, 2 }, + new double[] { 9, 8 }, + new double[] { 1, 0 }})); // 0.0000376 + + // See the likelihood of an unrelated sequence + double a3 = Math.Exp(model.Evaluate(new [] { + new double[] { 8, 7 }, + new double[] { 9, 8 }, + new double[] { 1, 0 }})); // 2.10 x 10^(-89) + + + + The following example shows how to create a hidden Markov model + that considers each feature to be independent of each other. This + is the same as following Bayes' assumption of independence for each + feature in the feature vector. + + + + // Let's say we have 2 meteorological sensors gathering data + // from different time periods of the day. Those periods are + // represented below: + + double[][][] data = + { + new double[][] // first sequence (we just repeated the measurements + { // once, so there is only one observation sequence) + + new double[] { 1, 2 }, // Day 1, 15:00 pm + new double[] { 6, 7 }, // Day 1, 16:00 pm + new double[] { 2, 3 }, // Day 1, 17:00 pm + new double[] { 2, 2 }, // Day 1, 18:00 pm + new double[] { 9, 8 }, // Day 1, 19:00 pm + new double[] { 1, 0 }, // Day 1, 20:00 pm + new double[] { 1, 3 }, // Day 1, 21:00 pm + new double[] { 8, 9 }, // Day 1, 22:00 pm + new double[] { 3, 3 }, // Day 1, 23:00 pm + } + }; + + // Let's assume those sensors are unrelated (for simplicity). As + // such, let's assume the data gathered from the sensors may reside + // into circular centroids denoting each state the underlying system + // might be in. + NormalDistribution[] initial_components = + { + new NormalDistribution(), // initial value for the first variable's distribution + new NormalDistribution() // initial value for the second variable's distribution + }; + + // Specify a initial independent normal distribution for the samples. + var density = new Independent<NormalDistribution>(initial_components); + + // Creates a continuous hidden Markov Model with two states organized in an Ergodic + // topology and an underlying independent Normal distribution as probability density. + var model = new HiddenMarkovModel<Independent<NormalDistribution>>(new Ergodic(2), density); + + // Configure the learning algorithms to train the sequence classifier until the + // difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<Independent<NormalDistribution>>(model) + { + Tolerance = 0.0001, + Iterations = 0, + }; + + // Fit the model + double error = teacher.Run(data); + + // Get the hidden state associated with each observation + // + double logLikelihood; // log-likelihood of the Viterbi path + int[] hidden_states = model.Decode(data[0], out logLikelihood); + + + + Finally, the last example shows how to fit a mixture-density + hidden Markov models. + + + + // Suppose we have a set of six sequences and we would like to + // fit a hidden Markov model with mixtures of Normal distributions + // as the emission densities. + + // First, let's consider a set of univariate sequences: + double[][] sequences = + { + new double[] { 1, 1, 2, 2, 2, 3, 3, 3 }, + new double[] { 1, 2, 2, 2, 3, 3 }, + new double[] { 1, 2, 2, 3, 3, 5 }, + new double[] { 2, 2, 2, 2, 3, 3, 3, 4, 5, 5, 1 }, + new double[] { 1, 1, 1, 2, 2, 5 }, + new double[] { 1, 2, 2, 4, 4, 5 }, + }; + + + // Now we can begin specifying a initial Gaussian mixture distribution. It is + // better to add some different initial parameters to the mixture components: + var density = new Mixture<NormalDistribution>( + new NormalDistribution(mean: 2, stdDev: 1.0), // 1st component in the mixture + new NormalDistribution(mean: 0, stdDev: 0.6), // 2nd component in the mixture + new NormalDistribution(mean: 4, stdDev: 0.4), // 3rd component in the mixture + new NormalDistribution(mean: 6, stdDev: 1.1) // 4th component in the mixture + ); + + // Let's then create a continuous hidden Markov Model with two states organized in a forward + // topology with the underlying univariate Normal mixture distribution as probability density. + var model = new HiddenMarkovModel<Mixture<NormalDistribution>>(new Forward(2), density); + + // Now we should configure the learning algorithms to train the sequence classifier. We will + // learn until the difference in the average log-likelihood changes only by as little as 0.0001 + var teacher = new BaumWelchLearning<Mixture<NormalDistribution>>(model) + { + Tolerance = 0.0001, + Iterations = 0, + + // Note, however, that since this example is extremely simple and we have only a few + // data points, a full-blown mixture wouldn't really be needed. Thus we will have a + // great chance that the mixture would become degenerated quickly. We can avoid this + // by specifying some regularization constants in the Normal distribution fitting: + + FittingOptions = new MixtureOptions() + { + Iterations = 1, // limit the inner e-m to a single iteration + + InnerOptions = new NormalOptions() + { + Regularization = 1e-5 // specify a regularization constant + + // Please note that specifying a regularization constant avoids getting the exception + // "Variance is zero. Try specifying a regularization constant in the fitting options." + } + } + }; + + // Finally, we can fit the model + double logLikelihood = teacher.Run(sequences); + + // And now check the likelihood of some approximate sequences. + double a1 = Math.Exp(model.Evaluate(new double[] { 1, 1, 2, 2, 3 })); // 2.3413833128741038E+45 + double a2 = Math.Exp(model.Evaluate(new double[] { 1, 1, 2, 5, 5 })); // 9.94607618459872E+19 + + // We can see that the likelihood of an unrelated sequence is much smaller: + double a3 = Math.Exp(model.Evaluate(new double[] { 8, 2, 6, 4, 1 })); // 1.5063654166181737E-44 + + + + + When using Normal distributions, it is often the case we might find problems + which are difficult to solve. Some problems may include constant variables or + other numerical difficulties preventing a the proper estimation of a Normal + distribution from the data. + + + A sign of those difficulties arises when the learning algorithm throws the exception + "Variance is zero. Try specifying a regularization constant in the fitting options" + for univariate distributions (e.g. or a informing that the "Covariance matrix + is not positive definite. Try specifying a regularization constant in the fitting options" + for multivariate distributions like the . + In both cases, this is an indication that the variables being learned can not be suitably + modeled by Normal distributions. To avoid numerical difficulties when estimating those + probabilities, a small regularization constant can be added to the variances or to the + covariance matrices until they become greater than zero or positive definite. + + + To specify a regularization constant as given in the above message, we + can indicate a fitting options object for the model distribution using: + + + + var teacher = new BaumWelchLearning<NormalDistribution>(model) + { + Tolerance = 0.0001, + Iterations = 0, + + FittingOptions = new NormalOptions() + { + Regularization = 1e-5 // specify a regularization constant + } + }; + + + + Typically, any small value would suffice as a regularization constant, + though smaller values may lead to longer fitting times. Too high values, + on the other hand, would lead to decreased accuracy. + + + + + + + + + + + + + + Creates a new instance of the Baum-Welch learning algorithm. + + + + + + Runs the Baum-Welch learning algorithm for hidden Markov models. + + + Learning problem. Given some training observation sequences O = {o1, o2, ..., oK} + and general structure of HMM (numbers of hidden and visible states), determine + HMM parameters M = (A, B, pi) that best fit training data. + + + The sequences of univariate or multivariate observations used to train the model. + Can be either of type double[] (for the univariate case) or double[][] for the + multivariate case. + + + The average log-likelihood for the observations after the model has been trained. + + + + + + Computes the ksi matrix of probabilities for a given observation + referenced by its index in the input training data. + + The index of the observation in the input training data. + The matrix of forward probabilities for the observation. + The matrix of backward probabilities for the observation. + + + + + Updates the emission probability matrix. + + + Implementations of this method should use the observations + in the training data and the Gamma probability matrix to + update the probability distributions of symbol emissions. + + + + + + Computes the forward and backward probabilities matrices + for a given observation referenced by its index in the + input training data. + + The index of the observation in the input training data. + Returns the computed forward probabilities matrix. + Returns the computed backward probabilities matrix. + + + + + Gets the model being trained. + + + + + + Gets or sets the distribution fitting options + to use when estimating distribution densities + during learning. + + The distribution fitting options. + + + + + Learning algorithm for + arbitrary-density generative hidden Markov sequence classifiers. + + + + + This class acts as a teacher for + classifiers based on arbitrary-density hidden Markov models. The learning + algorithm uses a generative approach. It works by training each model in the + generative classifier separately. + + + This can teach models that use any probability + distribution. Such arbitrary-density models + can be used for any kind of observation values or vectors. When + + + be used whenever the sequence of observations is discrete or can be represented + by discrete symbols, such as class labels, integers, and so on. If you need + to classify sequences of other entities, such as real numbers, vectors (i.e. + multivariate observations), then you can use + generic-density + hidden Markov models. Those models can be modeled after any kind of + probability distribution implementing + the interface. + + + For a more thorough explanation on hidden Markov models + with practical examples on gesture recognition, please see + + Sequence Classifiers in C#, Part I: Hidden Markov Models [1]. + + + [1]: + http://www.codeproject.com/Articles/541428/Sequence-Classifiers-in-Csharp-Part-I-Hidden-Marko + + + + + + The following example creates a continuous-density hidden Markov model sequence + classifier to recognize two classes of univariate observation sequences. + + + // Create a Continuous density Hidden Markov Model Sequence Classifier + // to detect a univariate sequence and the same sequence backwards. + double[][] sequences = new double[][] + { + new double[] { 0,1,2,3,4 }, // This is the first sequence with label = 0 + new double[] { 4,3,2,1,0 }, // This is the second sequence with label = 1 + }; + + // Labels for the sequences + int[] labels = { 0, 1 }; + + // Creates a new Continuous-density Hidden Markov Model Sequence Classifier + // containing 2 hidden Markov Models with 2 states and an underlying Normal + // distribution as the continuous probability density. + NormalDistribution density = new NormalDistribution(); + var classifier = new HiddenMarkovClassifier<NormalDistribution>(2, new Ergodic(2), density); + + // Create a new learning algorithm to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning<NormalDistribution>(classifier, + + // Train each model until the log-likelihood changes less than 0.001 + modelIndex => new BaumWelchLearning<NormalDistribution>(classifier.Models[modelIndex]) + { + Tolerance = 0.0001, + Iterations = 0 + } + ); + + // Train the sequence classifier using the algorithm + teacher.Run(sequences, labels); + + + // Calculate the probability that the given + // sequences originated from the model + double likelihood; + + // Try to classify the first sequence (output should be 0) + int c1 = classifier.Compute(sequences[0], out likelihood); + + // Try to classify the second sequence (output should be 1) + int c2 = classifier.Compute(sequences[1], out likelihood); + + + + + The following example creates a continuous-density hidden Markov model sequence + classifier to recognize two classes of multivariate sequence of observations. + This example uses multivariate Normal distributions as emission densities. + + + When there is insufficient training data, or one of the variables is constant, + the Normal distribution estimation may fail with a "Covariance matrix is not + positive-definite". In this case, it is possible to sidestep this issue by + specifying a small regularization constant to be added to the diagonal elements + of the covariance matrix. + + + // Create a Continuous density Hidden Markov Model Sequence Classifier + // to detect a multivariate sequence and the same sequence backwards. + + double[][][] sequences = new double[][][] + { + new double[][] + { + // This is the first sequence with label = 0 + new double[] { 0, 1 }, + new double[] { 1, 2 }, + new double[] { 2, 3 }, + new double[] { 3, 4 }, + new double[] { 4, 5 }, + }, + + new double[][] + { + // This is the second sequence with label = 1 + new double[] { 4, 3 }, + new double[] { 3, 2 }, + new double[] { 2, 1 }, + new double[] { 1, 0 }, + new double[] { 0, -1 }, + } + }; + + // Labels for the sequences + int[] labels = { 0, 1 }; + + + var initialDensity = new MultivariateNormalDistribution(2); + + // Creates a sequence classifier containing 2 hidden Markov Models with 2 states + // and an underlying multivariate mixture of Normal distributions as density. + var classifier = new HiddenMarkovClassifier<MultivariateNormalDistribution>( + classes: 2, topology: new Forward(2), initial: initialDensity); + + // Configure the learning algorithms to train the sequence classifier + var teacher = new HiddenMarkovClassifierLearning<MultivariateNormalDistribution>( + classifier, + + // Train each model until the log-likelihood changes less than 0.0001 + modelIndex => new BaumWelchLearning<MultivariateNormalDistribution>( + classifier.Models[modelIndex]) + { + Tolerance = 0.0001, + Iterations = 0, + + FittingOptions = new NormalOptions() + { + Diagonal = true, // only diagonal covariance matrices + Regularization = 1e-5 // avoid non-positive definite errors + } + } + ); + + // Train the sequence classifier using the algorithm + double logLikelihood = teacher.Run(sequences, labels); + + + // Calculate the probability that the given + // sequences originated from the model + double likelihood, likelihood2; + + // Try to classify the 1st sequence (output should be 0) + int c1 = classifier.Compute(sequences[0], out likelihood); + + // Try to classify the 2nd sequence (output should be 1) + int c2 = classifier.Compute(sequences[1], out likelihood2); + + + + + + + + + + + Creates a new instance of the learning algorithm for a given + Markov sequence classifier using the specified configuration + function. + + + + + + Trains each model to recognize each of the output labels. + + + The sum log-likelihood for all models after training. + + + + + Compute model error for a given data set. + + + The input points. + The output points. + + The percent of misclassification errors for the data. + + + + + Creates a new threshold model + for the current set of Markov models in this sequence classifier. + + + + A threshold Markov model. + + + + + + Forward-Backward algorithms for Hidden Markov Models. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Forward probabilities for a given hidden Markov model and a set of observations. + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations. + + + + + + Computes Backward probabilities for a given hidden Markov model and a set of observations (no scaling). + + + + + Discrete-density Hidden Markov Model Set for Sequence Classification. + + + + + This class uses a set of discrete hidden Markov models + to classify sequences of integer symbols. Each model will try to learn and recognize each + of the different output classes. For examples and details on how to learn such models, + please take a look on the documentation for . + + For other type of sequences, such as discrete sequences (not necessarily symbols) or even + continuous and multivariate variables, please see use the generic classifier counterpart + + + + + + Examples are available at the respective learning algorithm pages. For + example, see . + + + + + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + The optional class names for each of the classifiers. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + The topology of the hidden states. A forward-only topology + is indicated to sequence classification problems, such as speech recognition. + The number of symbols in the models' discrete alphabet. + The optional class names for each of the classifiers. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The number of symbols in the models' discrete alphabet. + The optional class names for each of the classifiers. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The number of symbols in the models' discrete alphabet. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the most likely class for a given sequence. + + + The sequence of observations. + The class responsibilities (or + the probability of the sequence to belong to each class). When + using threshold models, the sum of the probabilities will not + equal one, and the amount left was the threshold probability. + If a threshold model is not being used, the array should sum to + one. + + Return the label of the given sequence, or -1 if it has + been rejected by the + threshold model. + + + + + Computes the log-likelihood of a sequence + belong to a given class according to this + classifier. + + The sequence of observations. + The output class label. + + The log-likelihood of the sequence belonging to the given class. + + + + + Computes the log-likelihood of a set of sequences + belonging to their given respective classes according + to this classifier. + + A set of sequences of observations. + The output class label for each sequence. + + The log-likelihood of the sequences belonging to the given classes. + + + + + Computes the log-likelihood that a sequence + belongs any of the classes in the classifier. + + The sequence of observations. + + The log-likelihood of the sequence belonging to the classifier. + + + + + Creates a new Sequence Classifier with the given number of classes. + + + The number of classes in the classifier. + An array specifying the number of hidden states for each + of the classifiers. By default, and Ergodic topology will be used. + The number of symbols in the models' discrete alphabet. + + + + + Computes the most likely class for a given sequence. + + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Saves the classifier to a stream. + + + The stream to which the classifier is to be serialized. + + + + + Loads a classifier from a stream. + + + The stream from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a file. + + + The path to the file from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a stream. + + + The stream from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Loads a classifier from a file. + + + The path to the file from which the classifier is to be deserialized. + + The deserialized classifier. + + + + + Gets the number of symbols + recognizable by the models. + + + + + + Custom Topology for Hidden Markov Model. + + + + + An Hidden Markov Model Topology specifies how many states and which + initial probabilities a Markov model should have. Two common topologies + can be discussed in terms of transition state probabilities and are + available to construction through the and + classes implementing the + interface. + + Topology specification is important with regard to both learning and + performance: A model with too many states (and thus too many settable + parameters) will require too much training data while an model with an + insufficient number of states will prohibit the HMM from capturing subtle + statistical patterns. + + This custom implementation allows for arbitrarily specification of + the state transition matrix and initial state probabilities for + hidden Markov models. + + + + + + + + + + + + Hidden Markov model topology (architecture) specification. + + + + + An Hidden Markov Model Topology specifies how many states and which + initial probabilities a Markov model should have. Two common topologies + can be discussed in terms of transition state probabilities and are + available to construction through the and + classes implementing this interface. + + Topology specification is important with regard to both learning and + performance: A model with too many states (and thus too many settable + parameters) will require too much training data while an model with an + insufficient number of states will prohibit the HMM from capturing subtle + statistical patterns. + + + + References: + + + Alexander Schliep, "Learning Hidden Markov Model Topology". + + Richard Hughey and Anders Krogh, "Hidden Markov models for sequence analysis: + extension and analysis of the basic method", CABIOS 12(2):95-107, 1996. Available in: + http://compbio.soe.ucsc.edu/html_format_papers/hughkrogh96/cabios.html + + + + + + + + + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + Gets the number of states in this topology. + + + + + Creates a new custom topology with user-defined + transition matrix and initial state probabilities. + + + The initial probabilities for the model. + The transition probabilities for the model. + + + + + Creates a new custom topology with user-defined + transition matrix and initial state probabilities. + + + The initial probabilities for the model. + The transition probabilities for the model. + Set to true if the passed transitions are given + in log-probabilities. Default is false (given values are probabilities). + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + + Gets the number of states in this topology. + + + + + + Gets the initial state probabilities. + + + + + + Gets the state-transitions matrix. + + + + + + Ergodic (fully-connected) Topology for Hidden Markov Models. + + + + + Ergodic models are commonly used to represent models in which a single + (large) sequence of observations is used for training (such as when a + training sequence does not have well defined starting and ending points + and can potentially be infinitely long). + + Models starting with an ergodic transition-state topology typically + have only a small number of states. + + + References: + + + Alexander Schliep, "Learning Hidden Markov Model Topology". + + Richard Hughey and Anders Krogh, "Hidden Markov models for sequence analysis: + extension and analysis of the basic method", CABIOS 12(2):95-107, 1996. Available in: + http://compbio.soe.ucsc.edu/html_format_papers/hughkrogh96/cabios.html + + + + + + + + + + + In a second example, we will create an Ergodic (fully connected) + discrete-density hidden Markov model with uniform probabilities. + + + // Create a new Ergodic hidden Markov model with three + // fully-connected states and four sequence symbols. + var model = new HiddenMarkovModel(new Ergodic(3), 4); + + // After creation, the state transition matrix for the model + // should be given by: + // + // { 0.33, 0.33, 0.33 } + // { 0.33, 0.33, 0.33 } + // { 0.33, 0.33, 0.33 } + // + // in which all state transitions are allowed. + + + + + + + Creates a new Ergodic topology for a given number of states. + + + The number of states to be used in the model. + + + + + Creates a new Ergodic topology for a given number of states. + + + The number of states to be used in the model. + Whether to initialize the model with random probabilities + or uniformly with 1 / number of states. Default is false (default is + to use 1/states). + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + + Gets the number of states in this topology. + + + + + + Gets or sets whether the transition matrix + should be initialized with random probabilities + or not. Default is false. + + + + + + Forward Topology for Hidden Markov Models. + + + + + Forward topologies are commonly used to initialize models in which + training sequences can be organized in samples, such as in the recognition + of spoken words. In spoken word recognition, several examples of a single + word can (and should) be used to train a single model, to achieve the most + general model able to generalize over a great number of word samples. + + + Forward models can typically have a large number of states. + + + References: + + + Alexander Schliep, "Learning Hidden Markov Model Topology". + + Richard Hughey and Anders Krogh, "Hidden Markov models for sequence analysis: + extension and analysis of the basic method", CABIOS 12(2):95-107, 1996. Available in: + http://compbio.soe.ucsc.edu/html_format_papers/hughkrogh96/cabios.html + + + + + + + + + + + + In the following example, we will create a Forward-only + discrete-density hidden Markov model. + + + // Create a new Forward-only hidden Markov model with + // three forward-only states and four sequence symbols. + var model = new HiddenMarkovModel(new Forward(3), 4); + + // After creation, the state transition matrix for the model + // should be given by: + // + // { 0.33, 0.33, 0.33 } + // { 0.00, 0.50, 0.50 } + // { 0.00, 0.00, 1.00 } + // + // in which no backward transitions are allowed (have zero probability). + + + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + The maximum number of forward transitions allowed + for a state. Default is to use the same as the number of states (all forward + connections are allowed). + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + Whether to initialize the model with random probabilities + or uniformly with 1 / number of states. Default is false (default is + to use 1/states). + + + + + Creates a new Forward topology for a given number of states. + + + The number of states to be used in the model. + The maximum number of forward transitions allowed + for a state. Default is to use the same as the number of states (all forward + connections are allowed). + Whether to initialize the model with random probabilities + or uniformly with 1 / number of states. Default is false (default is + to use 1/states). + + + + + Creates the state transitions matrix and the + initial state probabilities for this topology. + + + + + + Gets the number of states in this topology. + + + + + + Gets or sets the maximum deepness level allowed + for the forward state transition chains. + + + + + + Gets or sets whether the transition matrix + should be initialized with random probabilities + or not. Default is false. + + + + + + Gets the initial state probabilities. + + + + + + Common interface for Linear Regression Models. + + + + + This interface specifies a common interface for querying + a linear regression model. + + Since a closed-form solution exists for fitting most linear + models, each of the models may also implement a Regress method + for computing actual regression. + + + + + + Computes the model output for a given input. + + + + + + Multiple Linear Regression. + + + + + In multiple linear regression, the model specification is that the dependent + variable, denoted y_i, is a linear combination of the parameters (but need not + be linear in the independent x_i variables). As the linear regression has a + closed form solution, the regression coefficients can be computed by calling + the method only once. + + + + + The following example shows how to fit a multiple linear regression model + to model a plane as an equation in the form ax + by + c = z. + + + // We will try to model a plane as an equation in the form + // "ax + by + c = z". We have two input variables (x and y) + // and we will be trying to find two parameters a and b and + // an intercept term c. + + // Create a multiple linear regression for two input and an intercept + MultipleLinearRegression target = new MultipleLinearRegression(2, true); + + // Now suppose we have some points + double[][] inputs = + { + new double[] { 1, 1 }, + new double[] { 0, 1 }, + new double[] { 1, 0 }, + new double[] { 0, 0 }, + }; + + // located in the same Z (z = 1) + double[] outputs = { 1, 1, 1, 1 }; + + + // Now we will try to fit a regression model + double error = target.Regress(inputs, outputs); + + // As result, we will be given the following: + double a = target.Coefficients[0]; // a = 0 + double b = target.Coefficients[1]; // b = 0 + double c = target.Coefficients[2]; // c = 1 + + // Now, considering we were trying to find a plane, which could be + // described by the equation ax + by + c = z, and we have found the + // aforementioned coefficients, we can conclude the plane we were + // trying to find is giving by the equation: + // + // ax + by + c = z + // -> 0x + 0y + 1 = z + // -> 1 = z. + // + // The plane containing the aforementioned points is, in fact, + // the plane given by z = 1. + + + + + + + Creates a new Multiple Linear Regression. + + + The number of inputs for the regression. + + + + + Creates a new Multiple Linear Regression. + + + The number of inputs for the regression. + True to use an intercept term, false otherwise. Default is false. + + + + + Performs the regression using the input vectors and output + data, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + + Set to true to force the use of the . + This will avoid any rank exceptions, but might be more computing intensive. + + The Sum-Of-Squares error of the regression. + + + + + Performs the regression using the input vectors and output + data, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + The Sum-Of-Squares error of the regression. + + + + + Performs the regression using the input vectors and output + data, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + Gets the Fisher's information matrix. + + Set to true to force the use of the . + This will avoid any rank exceptions, but might be more computing intensive. + + The Sum-Of-Squares error of the regression. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Computes the Multiple Linear Regression for an input vector. + + + The input vector. + + The calculated output. + + + + + Computes the Multiple Linear Regression for input vectors. + + + The input vector data. + + The calculated outputs. + + + + + Returns a System.String representing the regression. + + + + + + Creates a new linear regression directly from data points. + + + The input vectors x. + The output vectors y. + + A linear regression f(x) that most approximates y. + + + + + Returns a that represents this instance. + + + The format to use.-or- A null reference (Nothing in Visual Basic) to use + the default format defined for the type of the System.IFormattable implementation. + The provider to use to format the value.-or- A null reference (Nothing in + Visual Basic) to obtain the numeric format information from the current locale + setting of the operating system. + + + A that represents this instance. + + + + + + Gets the coefficients used by the regression model. If the model + contains an intercept term, it will be in the end of the vector. + + + + + + Gets the number of inputs for the regression model. + + + + + + Gets whether this model has an additional intercept term. + + + + + + Multivariate Linear Regression. + + + Multivariate Linear Regression is a generalization of + Multiple Linear Regression to allow for multiple outputs. + + + + + // The multivariate linear regression is a generalization of + // the multiple linear regression. In the multivariate linear + // regression, not only the input variables are multivariate, + // but also are the output dependent variables. + + // In the following example, we will perform a regression of + // a 2-dimensional output variable over a 3-dimensional input + // variable. + + double[][] inputs = + { + // variables: x1 x2 x3 + new double[] { 1, 1, 1 }, // input sample 1 + new double[] { 2, 1, 1 }, // input sample 2 + new double[] { 3, 1, 1 }, // input sample 3 + }; + + double[][] outputs = + { + // variables: y1 y2 + new double[] { 2, 3 }, // corresponding output to sample 1 + new double[] { 4, 6 }, // corresponding output to sample 2 + new double[] { 6, 9 }, // corresponding output to sample 3 + }; + + // With a quick eye inspection, it is possible to see that + // the first output variable y1 is always the double of the + // first input variable. The second output variable y2 is + // always the triple of the first input variable. The other + // input variables are unused. Nevertheless, we will fit a + // multivariate regression model and confirm the validity + // of our impressions: + + // Create a new multivariate linear regression with 3 inputs and 2 outputs + var regression = new MultivariateLinearRegression(3, 2); + + // Now, compute the multivariate linear regression: + double error = regression.Regress(inputs, outputs); + + // At this point, the regression error will be 0 (the fit was + // perfect). The regression coefficients for the first input + // and first output variables will be 2. The coefficient for + // the first input and second output variables will be 3. All + // others will be 0. + // + // regression.Coefficients should be the matrix given by + // + // double[,] coefficients = { + // { 2, 3 }, + // { 0, 0 }, + // { 0, 0 }, + // }; + // + + // The first input variable coefficients will be 2 and 3: + Assert.AreEqual(2, regression.Coefficients[0, 0], 1e-10); + Assert.AreEqual(3, regression.Coefficients[0, 1], 1e-10); + + // And all other coefficients will be 0: + Assert.AreEqual(0, regression.Coefficients[1, 0], 1e-10); + Assert.AreEqual(0, regression.Coefficients[1, 1], 1e-10); + Assert.AreEqual(0, regression.Coefficients[2, 0], 1e-10); + Assert.AreEqual(0, regression.Coefficients[2, 1], 1e-10); + + // We can also check the r-squared coefficients of determination: + double[] r2 = regression.CoefficientOfDetermination(inputs, outputs); + + // Which should be one for both output variables: + Assert.AreEqual(1, r2[0]); + Assert.AreEqual(1, r2[1]); + + + + + + + Creates a new Multivariate Linear Regression. + + + The number of inputs for the regression. + The number of outputs for the regression. + + + + + Creates a new Multivariate Linear Regression. + + + The number of inputs for the regression. + The number of outputs for the regression. + True to use an intercept term, false otherwise. Default is false. + + + + + Creates a new Multivariate Linear Regression. + + + + + + Performs the regression using the input vectors and output + vectors, returning the sum of squared errors of the fit. + + + The input vectors to be used in the regression. + The output values for each input vector. + The Sum-Of-Squares error of the regression. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Computes the Multiple Linear Regression output for a given input. + + + A input vector. + The computed output. + + + + + Computes the Multiple Linear Regression output for a given input. + + + An array of input vectors. + The computed outputs. + + + + + Creates a new linear regression directly from data points. + + + The input vectors x. + The output vectors y. + + A linear regression f(x) that most approximates y. + + + + + Computes the model output for a given input. + + + + + Gets the coefficient matrix used by the regression model. Each + column corresponds to the coefficient vector for each of the outputs. + + + + + + Gets the intercept vector used by the multivariate regression model. + + + + + + Gets the number of inputs in the model. + + + + + + Gets the number of outputs in the model. + + + + + + Simple Linear Regression of the form y = Ax + B. + + + + In linear regression, the model specification is that the dependent + variable, y is a linear combination of the parameters (but need not + be linear in the independent variables). As the linear regression + has a closed form solution, the regression coefficients can be + efficiently computed using the Regress method of this class. + + + + + Let's say we have some univariate, continuous sets of input data, + and a corresponding univariate, continuous set of output data, such + as a set of points in R². A simple linear regression is able to fit + a line relating the input variables to the output variables in which + the minimum-squared-error of the line and the actual output points + is minimum. + + + // Let's say we have some univariate, continuous sets of input data, + // and a corresponding univariate, continuous set of output data, such + // as a set of points in R². A simple linear regression is able to fit + // a line relating the input variables to the output variables in which + // the minimum-squared-error of the line and the actual output points + // is minimum. + + // Declare some sample test data. + double[] inputs = { 80, 60, 10, 20, 30 }; + double[] outputs = { 20, 40, 30, 50, 60 }; + + // Create a new simple linear regression + SimpleLinearRegression regression = new SimpleLinearRegression(); + + // Compute the linear regression + regression.Regress(inputs, outputs); + + // Compute the output for a given input. The + double y = regression.Compute(85); // The answer will be 28.088 + + // We can also extract the slope and the intercept term + // for the line. Those will be -0.26 and 50.5, respectively. + double s = regression.Slope; + double c = regression.Intercept; + + + + Now, let's say we would like to perform a regression using an + intermediary transformation, such as for example logarithmic + regression. In this case, all we have to do is to first transform + the input variables into the desired domain, then apply the + regression as normal: + + + // This is the same data from the example available at + // http://mathbits.com/MathBits/TISection/Statistics2/logarithmic.htm + + // Declare your inputs and output data + double[] inputs = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; + double[] outputs = { 6, 9.5, 13, 15, 16.5, 17.5, 18.5, 19, 19.5, 19.7, 19.8 }; + + // Transform inputs to logarithms + double[] logx = Matrix.Log(inputs); + + // Compute a simple linear regression + var lr = new SimpleLinearRegression(); + + // Compute with the log-transformed data + double error = lr.Regress(logx, outputs); + + // Get an expression representing the learned regression model + // We just have to remember that 'x' will actually mean 'log(x)' + string result = lr.ToString("N4", CultureInfo.InvariantCulture); + + // Result will be "y(x) = 6.1082x + 6.0993" + + + + + + + Creates a new Simple Linear Regression of the form y = Ax + B. + + + + + + Performs the regression using the input and output + data, returning the sum of squared errors of the fit. + + + The input data. + The output data. + The regression Sum-of-Squares error. + + + + + Computes the regression output for a given input. + + + An array of input values. + The array of calculated output values. + + + + + Computes the regression for a single input. + + + The input value. + The calculated output. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, or R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Creates a new linear regression directly from data points. + + + The input vectors x. + The output vectors y. + + A linear regression f(x) that most approximates y. + + + + + Computes the model output for a given input. + + + + + Angular coefficient (Slope). + + + + + + Linear coefficient (Intercept). + + + + + + Binary Logistic Regression. + + + + + In statistics, logistic regression (sometimes called the logistic model or + Logit model) is used for prediction of the probability of occurrence of an + event by fitting data to a logistic curve. It is a generalized linear model + used for binomial regression. + + Like many forms of regression analysis, it makes use of several predictor + variables that may be either numerical or categorical. For example, the + probability that a person has a heart attack within a specified time period + might be predicted from knowledge of the person's age, sex and body mass index. + + Logistic regression is used extensively in the medical and social sciences + as well as marketing applications such as prediction of a customer's + propensity to purchase a product or cease a subscription. + + + References: + + + Bishop, Christopher M.; Pattern Recognition and Machine Learning. + Springer; 1st ed. 2006. + + Amos Storkey. (2005). Learning from Data: Learning Logistic Regressors. School of Informatics. + Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf + + Cosma Shalizi. (2009). Logistic Regression and Newton's Method. Available on: + http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf + + Edward F. Conor. Logistic Regression. Website. Available on: + http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm + + + + + + // Suppose we have the following data about some patients. + // The first variable is continuous and represent patient + // age. The second variable is dichotomic and give whether + // they smoke or not (This is completely fictional data). + double[][] input = + { + new double[] { 55, 0 }, // 0 - no cancer + new double[] { 28, 0 }, // 0 + new double[] { 65, 1 }, // 0 + new double[] { 46, 0 }, // 1 - have cancer + new double[] { 86, 1 }, // 1 + new double[] { 56, 1 }, // 1 + new double[] { 85, 0 }, // 0 + new double[] { 33, 0 }, // 0 + new double[] { 21, 1 }, // 0 + new double[] { 42, 1 }, // 1 + }; + + // We also know if they have had lung cancer or not, and + // we would like to know whether smoking has any connection + // with lung cancer (This is completely fictional data). + double[] output = + { + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1 + }; + + + // To verify this hypothesis, we are going to create a logistic + // regression model for those two inputs (age and smoking). + LogisticRegression regression = new LogisticRegression(inputs: 2); + + // Next, we are going to estimate this model. For this, we + // will use the Iteratively Reweighted Least Squares method. + var teacher = new IterativeReweightedLeastSquares(regression); + + // Now, we will iteratively estimate our model. The Run method returns + // the maximum relative change in the model parameters and we will use + // it as the convergence criteria. + + double delta = 0; + do + { + // Perform an iteration + delta = teacher.Run(input, output); + + } while (delta > 0.001); + + // At this point, we can compute the odds ratio of our variables. + // In the model, the variable at 0 is always the intercept term, + // with the other following in the sequence. Index 1 is the age + // and index 2 is whether the patient smokes or not. + + // For the age variable, we have that individuals with + // higher age have 1.021 greater odds of getting lung + // cancer controlling for cigarette smoking. + double ageOdds = regression.GetOddsRatio(1); // 1.0208597028836701 + + // For the smoking/non smoking category variable, however, we + // have that individuals who smoke have 5.858 greater odds + // of developing lung cancer compared to those who do not + // smoke, controlling for age (remember, this is completely + // fictional and for demonstration purposes only). + double smokeOdds = regression.GetOddsRatio(2); // 5.8584748789881331 + + + + + + + Creates a new Logistic Regression Model. + + + The number of input variables for the model. + + + + + Creates a new Logistic Regression Model. + + + The number of input variables for the model. + The starting intercept value. Default is 0. + + + + + Gets the 95% confidence interval for the + Odds Ratio for a given coefficient. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + + + Gets the Odds Ratio for a given coefficient. + + + + The odds ratio can be computed raising Euler's number + (e ~~ 2.71) to the power of the associated coefficient. + + + + The coefficient's index. The first value + (at zero index) is the intercept value. + + + + The Odds Ratio for the given coefficient. + + + + + + Constructs a new from + an array of weights (linear coefficients). The first + weight is interpreted as the intercept value. + + + An array of linear coefficients. + + + A whose + are + the same as in the given array. + + + + + + Polynomial Linear Regression. + + + + In linear regression, the model specification is that the dependent + variable, y is a linear combination of the parameters (but need not + be linear in the independent variables). As the linear regression + has a closed form solution, the regression coefficients can be + efficiently computed using the Regress method of this class. + + + + + + Creates a new Polynomial Linear Regression. + + + The degree of the polynomial used by the model. + + + + + Performs the regression using the input and output + data, returning the sum of squared errors of the fit. + + + The input data. + The output data. + + The regression Sum-of-Squares error. + + + + + Computes the regressed model output for the given inputs. + + + The input data. + The computed outputs. + + + + + Computes the regressed model output for the given input. + + + The input value. + The computed output. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Gets the coefficient of determination, as known as R² (r-squared). + + + + + The coefficient of determination is used in the context of statistical models + whose main purpose is the prediction of future outcomes on the basis of other + related information. It is the proportion of variability in a data set that + is accounted for by the statistical model. It provides a measure of how well + future outcomes are likely to be predicted by the model. + + The R² coefficient of determination is a statistical measure of how well the + regression line approximates the real data points. An R² of 1.0 indicates + that the regression line perfectly fits the data. + + + The R² (r-squared) coefficient for the given data. + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Returns a System.String representing the regression. + + + + + + Creates a new polynomial regression directly from data points. + + + The polynomial degree to use. + The input vectors x. + The output vectors y. + + A polynomial regression f(x) that most approximates y. + + + + + Computes the model output for a given input. + + + + + Gets the degree of the polynomial used by the regression. + + + + + + Gets the coefficients of the polynomial regression, + with the first being the higher-order term and the last + the intercept term. + + + + + + Newton-Raphson learning updates for Cox's Proportional Hazards models. + + + + + + Constructs a new Newton-Raphson learning algorithm + for Cox's Proportional Hazards models. + + + The model to estimate. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The input data. + The time-to-event for the training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The input data. + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The input data. + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Runs the Newton-Raphson update for Cox's hazards learning until convergence. + + + The output (event) associated with each input vector. + The time-to-event for the non-censored training samples. + + The maximum relative change in the parameters after the iteration. + + + + + Gets or sets the maximum absolute parameter change detectable + after an iteration of the algorithm used to detect convergence. + Default is 1e-5. + + + + + + Gets or sets the maximum number of iterations + performed by the learning algorithm. + + + + + + Gets or sets the number of performed iterations. + + + + + + Gets or sets the hazard estimator that should be used by the + proportional hazards learning algorithm. Default is to use + . + + + + + + Gets or sets the ties handling method to be used by the + proportional hazards learning algorithm. Default is to use + 's method. + + + + + + Gets the previous values for the coefficients which were + in place before the last learning iteration was performed. + + + + + + Gets the current values for the coefficients. + + + + + + Gets the Hessian matrix computed in + the last Newton-Raphson iteration. + + + + + + Gets the Gradient vector computed in + the last Newton-Raphson iteration. + + + + + + Gets the total number of parameters in the model. + + + + + + Gets or sets a value indicating whether standard + errors should be computed at the end of the next + iterations. + + + true to compute standard errors; otherwise, false. + + + + + + Gets or sets a value indicating whether an estimate + of the baseline hazard function should be computed + at the end of the next iterations. + + + true to compute the baseline function; otherwise, false. + + + + + + Gets or sets a value indicating whether the Cox model should + be computed using the mean-centered version of the covariates. + Default is true. + + + + + + Gets or sets the smoothing factor used to avoid numerical + problems in the beginning of the training. Default is 0.1. + + + + + + Kalman filter for 2D coordinate systems. + + + + + References: + + + Student Dave's tutorial on Object Tracking in Images Using 2D Kalman Filters. + Available on: http://studentdavestutorials.weebly.com/object-tracking-2d-kalman-filter.html + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The sampling rate. + The acceleration. + The acceleration standard deviation. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Gets or sets the current X position of the object. + + + + + + Gets or sets the current Y position of the object. + + + + + + Gets or sets the current object's velocity in the X axis. + + + + + + Gets or sets the current object's velocity in the Y axis. + + + + + + Gets or sets the observational noise + of the current object's in the X axis. + + + + + + Gets or sets the observational noise + of the current object's in the Y axis. + + + + + + Common interface for running Markov filters. + + + + + Clears all measures previously computed + and indicate the sequence has ended. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Base class for running hidden Markov filters. + + + + + + Initializes a new instance of the class. + + + The Markov model. + + + + + Clears all measures previously computed + and indicate the sequence has ended. + + + + + + Clears all measures previously computed. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Hidden Markov Classifier filter. + + + + + + + + + Creates a new . + + + The hidden Markov classifier model. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + + The next log-likelihood if the occurrence of + is registered. + + The value to be checked. + + + + + Clears all measures previously computed. + + + + + + Gets the used in this filter. + + + + + + Gets the class response probabilities measuring + the likelihood of the current sequence belonging + to each of the classes. + + + + + + Gets the current classification label for + the sequence up to the current observation. + + + + + + Gets the current rejection threshold level + generated by classifier's threshold model. + + + + + + Hidden Markov Classifier filter for general state distributions. + + + + + + + + + Creates a new . + + + The hidden Markov classifier model. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + + The next log-likelihood if the occurrence of + is registered. + + The value to be checked. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + + The next log-likelihood if the occurrence of + is registered. + + The value to be checked. + + + + + Clears all measures previously computed. + + + + + + Gets the used in this filter. + + + + + + Gets the class response probabilities measuring + the likelihood of the current sequence belonging + to each of the classes. + + + + + + Gets the current classification label for + the sequence up to the current observation. + + + + + + Gets the current rejection threshold level + generated by classifier's threshold model. + + + + + + Hidden Markov Model filter. + + + + + + Creates a new . + + + The hidden Markov model to use in this filter. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + The value to be checked. + + + + + Clears this instance. + + + + + + Gets the used in this filter. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Common interface for running statistics. + + + Running statistics are measures computed as data becomes available. + When using running statistics, there is no need to know the number of + samples a priori, such as in the case of the direct . + + + + + + Gets the current mean of the gathered values. + + + The mean of the values. + + + + + Gets the current variance of the gathered values. + + + The variance of the values. + + + + + Gets the current standard deviation of the gathered values. + + + The standard deviation of the values. + + + + + Common interface for moving-window statistics. + + + + Moving-window statistics such as moving average and moving variance, + are a type of finite impulse response filters used to analyze a set + of data points by creating a series of averages of different subsets + of the full data set. + + + + + + Gets the size of the window. + + + The window's size. + + + + + Gets the number of samples within the window. + + + The number of samples within the window. + + + + + Moving-window circular statistics. + + + + + + Initializes a new instance of the class. + + + The size of the moving window. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Gets the sum of the sines of the angles within the window. + + + + + + Gets the sum of the cosines of the angles within the window. + + + + + + Gets the size of the window. + + + The window's size. + + + + + Gets the number of samples within the window. + + + The number of samples within the window. + + + + + Gets the mean of the angles within the window. + + + The mean. + + + + + Gets the variance of the angles within the window. + + + + + + Gets the standard deviation of the angles within the window. + + + + + + Hidden Markov Model filter. + + + + + + Creates a new . + + + The hidden Markov model to use in this filter. + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Checks the classification after the insertion + of a new value without registering this value. + + + The value to be checked. + + + + + Clears this instance. + + + + + + Gets the used in this filter. + + + + + + Gets whether the model has been initialized or not. + + + + + + Gets the current vector of probabilities of being in each state. + + + + + + Gets the current most likely state (in the Viterbi path). + + + + + + Gets the current Viterbi probability + (along the most likely path). + + + + + + Gets the current Forward probability + (along all possible paths). + + + + + + Running (normal) statistics. + + + + + + This class computes the running variance using Welford’s method. Running statistics + need only one pass over the data, and do not require all data to be available prior + to computing. + + + + References: + + + John D. Cook. Accurately computing running variance. Available on: + http://www.johndcook.com/standard_deviation.html + + Chan, Tony F.; Golub, Gene H.; LeVeque, Randall J. (1983). Algorithms for + Computing the Sample Variance: Analysis and Recommendations. The American + Statistician 37, 242-247. + + Ling, Robert F. (1974). Comparison of Several Algorithms for Computing Sample + Means and Variances. Journal of the American Statistical Association, Vol. 69, + No. 348, 859-866. + + + + + + + Initializes a new instance of the class. + + + + + + Registers the occurrence of a value. + + + The value to be registered. + + + + + Clears all measures previously computed. + + + + + + Gets the current mean of the gathered values. + + + The mean of the values. + + + + + Gets the current variance of the gathered values. + + + The variance of the values. + + + + + Gets the current standard deviation of the gathered values. + + + The standard deviation of the values. + + + + + Moving-window statistics. + + + + + + Initializes a new instance of the class. + + + The size of the moving window. + + + + + Pushes a value into the window. + + + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + + + + + Removes all elements from the window and resets statistics. + + + + + + Gets the sum the values within the window. + + + The sum of values within the window. + + + + + Gets the sum of squared values within the window. + + + The sum of squared values. + + + + + Gets the size of the window. + + + The window's size. + + + + + Gets the number of samples within the window. + + + The number of samples within the window. + + + + + Gets the mean of the values within the window. + + + The mean of the values. + + + + + Gets the variance of the values within the window. + + + The variance of the values. + + + + + Gets the standard deviation of the values within the window. + + + The standard deviation of the values. + + + + + Contains 34+ statistical hypothesis tests, including one way + and two-way ANOVA tests, non-parametric tests such as the + Kolmogorov-Smirnov test and the + Sign Test for the Median, contingency table + tests such as the Kappa test, including variations for + multiple tables, as well as the + Bhapkar and Bowker tests; and the more traditional + Chi-Square, Z, F + , T and Wald tests. + + + + + This namespace contains a suite of parametric and non-parametric hypothesis tests. Every + test in this library implements the interface, which defines + a few key methods and properties to assert whether + an statistical hypothesis can be supported or not. Every hypothesis test is associated + with an statistic distribution + which can in turn be queried, inspected and computed as any other distribution in the + namespace. + + + By default, tests are created using a 0.05 significance level + , which in the framework is referred as the test's size. P-Values are also ready to be + inspected by checking a test's P-Value property. + + + Furthermore, several tests in this namespace also support + power analysis. The power analysis of a test can be used to suggest an optimal number of samples + which have to be obtained in order to achieve a more interpretable or useful result while doing hypothesis + testing. Power analyses implement the interface, and analyses are available + for the one sample Z, and T tests, + as well as their two sample versions. + + + Some useful parametric tests are the , , + , , , + and . Useful non-parametric tests include the , + , and the . + + + Tests are also available for two or more samples. In this case, we can find two sample variants for the + , , , + , , , + , as well as the for unpaired samples. For + multiple samples we can find the and , as well as the + and . + + + Finally, the namespace also includes several tests for contingency tables. + Those tests include Kappa test for inter-rater agreement and its variants, such + as the , and . + Other tests include , , , + , and the . + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + Hypothesis test for a single ROC curve. + + + + + + + + One-sample Z-Test (location test). + + + + + The term Z-test is often used to refer specifically to the one-sample + location test comparing the mean of a set of measurements to a given + constant. Due to the central limit theorem, many test statistics are + approximately normally distributed for large samples. Therefore, many + statistical tests can be performed as approximate Z-tests if the sample + size is large. + + + If the test is , the null hypothesis + can be rejected in favor of the alternate hypothesis + specified at the creation of the test. + + + This test supports creating power analyses + through its property. + + + References: + + + Wikipedia, The Free Encyclopedia. Z-Test. Available on: + http://en.wikipedia.org/wiki/Z-test + + + + + + This example has been gathered from the Wikipedia's page about + the Z-Test, available from: http://en.wikipedia.org/wiki/Z-test + + + Suppose there is a text comprehension test being run across + a given demographic region. The mean score of the population + from this entire region are around 100 points, with a standard + deviation of 12 points. + + There is a local school, however, whose 55 students attained + an average score in the test of only about 96 points. Would + their scores be surprisingly that low, or could this event + have happened due to chance? + + + // So we would like to check that a sample of + // 55 students with a mean score of 96 points: + + int sampleSize = 55; + double sampleMean = 96; + + // Was expected to have happened by chance in a population with + // an hypothesized mean of 100 points and standard deviation of + // about 12 points: + + double standardDeviation = 12; + double hypothesizedMean = 100; + + + // So we start by creating the test: + ZTest test = new ZTest(sampleMean, standardDeviation, sampleSize, + hypothesizedMean, OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Now, we can check whether this result would be + // unlikely under a standard significance level: + + bool significant = test.Significant; + + // We can also check the test statistic and its P-Value + double statistic = test.Statistic; + double pvalue = test.PValue; + + + + + + + + + + + + + + + Base class for Hypothesis Tests. + + + + A statistical hypothesis test is a method of making decisions using data, whether from + a controlled experiment or an observational study (not controlled). In statistics, a + result is called statistically significant if it is unlikely to have occurred by chance + alone, according to a pre-determined threshold probability, the significance level. + + + References: + + + Wikipedia, The Free Encyclopedia. Statistical Hypothesis Testing. + + + + + + + Common interface for Hypothesis tests depending on a statistical distribution. + + + The test statistic distribution. + + + + + Common interface for Hypothesis tests depending on a statistical distribution. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the test type. + + + + + + Gets whether the null hypothesis should be rejected. + + + + A test result is said to be statistically significant when the + result would be very unlikely to have occurred by chance alone. + + + + + + Gets the distribution associated + with the test statistic. + + + + + + Initializes a new instance of the class. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Called whenever the test significance level changes. + + + + + + Converts the numeric P-Value of this test to its equivalent string representation. + + + + + + Converts the numeric P-Value of this test to its equivalent string representation. + + + + + + Gets the distribution associated + with the test statistic. + + + + + + Gets the P-value associated with this test. + + + + + In statistical hypothesis testing, the p-value is the probability of + obtaining a test statistic at least as extreme as the one that was + actually observed, assuming that the null hypothesis is true. + + The lower the p-value, the less likely the result can be explained + by chance alone, assuming the null hypothesis is true. + + + + + + Gets the test statistic. + + + + + + Gets the test type. + + + + + + Gets the significance level for the + test. Default value is 0.05 (5%). + + + + + + Gets whether the null hypothesis should be rejected. + + + + A test result is said to be statistically significant when the + result would be very unlikely to have occurred by chance alone. + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Constructs a Z test. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The sample's mean. + The sample's standard error. + The hypothesized value for the distribution's mean. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The sample's mean. + The sample's standard deviation. + The hypothesized value for the distribution's mean. + The sample's size. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The test statistic, as given by (x-μ)/SE. + The alternate hypothesis to test. + + + + + Computes the Z test. + + + + + + Computes the Z test. + + + + + + Constructs a T-Test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + The tail of the test distribution. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + The tail of the test distribution. + + The test statistic which would generate the given p-value. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the standard error of the estimated value. + + + + + + Gets the estimated value, such as the mean estimated from a sample. + + + + + + Gets the hypothesized value. + + + + + + Gets the 95% confidence interval for the . + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Creates a new . + + + The curve to be tested. + The hypothesized value for the ROC area. + The alternative hypothesis (research hypothesis) to test. + + + + + Calculates the standard error of an area calculation for a + curve with the given number of positive and negatives instances + + + + + + Calculates the standard error of an area calculation for a + curve with the given number of positive and negatives instances + + + + + + Gets the ROC curve being tested. + + + + + + Kappa test for the average of two groups of contingency tables. + + + + + The two-matrix Kappa test tries to assert whether the Kappa measure + of two groups of contingency tables, each group created by a different + rater or classification model and measured repeatedly, differs significantly. + + + This is a two sample t-test kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + + + + + + + + + + Two-sample Student's T test. + + + + + The two-sample t-test assesses whether the means of two groups are statistically + different from each other. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's T-Test. + + William M.K. Trochim. The T-Test. Research methods Knowledge Base, 2009. + Available on: http://www.le.ac.uk/bl/gat/virtualfc/Stats/ttest.html + + Graeme D. Ruxton. The unequal variance t-test is an underused alternative to Student's + t-test and the Mann–Whitney U test. Oxford Journals, Behavioral Ecology Volume 17, Issue 4, pp. + 688-690. 2006. Available on: http://beheco.oxfordjournals.org/content/17/4/688.full + + + + + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Tests whether the means of two samples are different. + + + The first sample. + The second sample. + The hypothesized sample difference. + True to assume equal variances, false otherwise. Default is true. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests whether the means of two samples are different. + + + The first sample's mean. + The second sample's mean. + The first sample's variance. + The second sample's variance. + The number of observations in the first sample. + The number of observations in the second sample. + True assume equal variances, false otherwise. Default is true. + The hypothesized sample difference. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new two-sample T-Test. + + + + + Computes the T Test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets whether the test assumes equal sample variance. + + + + + + Gets the standard error for the difference. + + + + + + Gets the combined sample variance. + + + + + + Gets the estimated value for the first sample. + + + + + + Gets the estimated value for the second sample. + + + + + + Gets the hypothesized difference between the two estimated values. + + + + + + Gets the actual difference between the two estimated values. + + + + + Gets the degrees of freedom for the test statistic. + + + + + + Gets the 95% confidence interval for the + statistic. + + + + + + Creates a new Two-Table Mean Kappa test. + + + The average kappa value for the first group of contingency tables. + The average kappa value for the second group of contingency tables. + The kappa's variance in the first group of tables. + The kappa's variance in the first group of tables. + The number of contingency tables averaged in the first group. + The number of contingency tables averaged in the second group. + True to assume equal variances, false otherwise. Default is true. + The alternative hypothesis (research hypothesis) to test. + The hypothesized difference between the two Kappa values. + + + + + Creates a new Two-Table Mean Kappa test. + + + The first group of contingency tables. + The second group of contingency tables. + True to assume equal variances, false otherwise. Default is true. + The hypothesized difference between the two average Kappa values. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the variance for the first Kappa value. + + + + + + Gets the variance for the second Kappa value. + + + + + + Kappa Test for multiple contingency tables. + + + + + The multiple-matrix Kappa test tries to assert whether the Kappa measure + of many contingency tables, each of which created by a different rater + or classification model, differs significantly. The computations are + based on the pages 607, 608 of (Fleiss, 2003). + + + This is a Chi-square kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + + + + + + + + + Two-Sample (Goodness-of-fit) Chi-Square Test (Upper Tail) + + + + + A chi-square test (also chi-squared or χ² test) is any statistical + hypothesis test in which the sampling distribution of the test statistic + is a chi-square distribution when + the null hypothesis is true, or any in which this is asymptotically true, + meaning that the sampling distribution (if the null hypothesis is true) + can be made to approximate a chi-square distribution as closely as desired + by making the sample size large enough. + + The chi-square test is used whenever one would like to test whether the + actual data differs from a random distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Chi-Square Test. Available on: + http://en.wikipedia.org/wiki/Chi-square_test + + + J. S. McLaughlin. Chi-Square Test. Available on: + http://www2.lv.psu.edu/jxm57/irp/chisquar.html + + + + + + The following example has been based on the example section + of the + Pearson's chi-squared test article on Wikipedia. + + + // Suppose we would like to test the hypothesis that a random sample of + // 100 people has been drawn from a population in which men and women are + // equal in frequency. + + // Under this hypothesis, the observed number of men and women would be + // compared to the theoretical frequencies of 50 men and 50 women. So, + // after drawing our sample, we found out that there were 44 men and 56 + // women in the sample: + + // man woman + double[] observed = { 44, 56 }; + double[] expected = { 50, 50 }; + + // If the null hypothesis is true (i.e., men and women are chosen with + // equal probability), the test statistic will be drawn from a chi-squared + // distribution with one degree of freedom. If the male frequency is known, + // then the female frequency is determined. + // + int degreesOfFreedom = 1; + + // So now we have: + // + var chi = new ChiSquareTest(expected, observed, degreesOfFreedom); + + + // The chi-squared distribution for 1 degree of freedom shows that the + // probability of observing this difference (or a more extreme difference + // than this) if men and women are equally numerous in the population is + // approximately 0.23. + + double pvalue = chi.PValue; // 0.23 + + // This probability is higher than conventional criteria for statistical + // significance (0.001 or 0.05), so normally we would not reject the null + // hypothesis that the number of men in the population is the same as the + // number of women. + + bool significant = chi.Significant; // false + + + + + + + + + Constructs a Chi-Square Test. + + + The test statistic. + The chi-square distribution degrees of freedom. + + + + + Constructs a Chi-Square Test. + + + The expected variable values. + The observed variable values. + The chi-square distribution degrees of freedom. + + + + + Constructs a Chi-Square Test. + + + + + + Constructs a Chi-Square Test. + + + + + + Constructs a Chi-Square Test. + + + + + + Constructs a Chi-Square Test. + + + + + + Computes the Chi-Square Test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the degrees of freedom for the Chi-Square distribution. + + + + + + Creates a new multiple table Kappa test. + + + The kappa values. + The variance for each kappa value. + + + + + Creates a new multiple table Kappa test. + + + The contingency tables. + + + + + Computes the multiple matrix Kappa test. + + + + + + Gets the overall Kappa value + for the many contingency tables. + + + + + + Gets the overall Kappa variance + for the many contingency tables. + + + + + + Gets the variance for each kappa value. + + + + + + Gets the kappa for each contingency table. + + + + + + Fisher's exact test for contingency tables. + + + + + This test statistic distribution is the + Hypergeometric. + + + + + + + + Constructs a new Fisher's exact test. + + + The matrix to be tested. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the Fisher's exact test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis + can be rejected in favor of this alternative hypothesis. + + + + + + One-sample Anderson-Darling (AD) test. + + + + + + Creates a new Anderson-Darling test. + + + The sample we would like to test as belonging to the . + A fully specified distribution. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the theoretical, hypothesized distribution for the samples, + which should have been stated before any measurements. + + + + + + Shapiro-Wilk test for normality. + + + + + The Shapiro–Wilk test is a test of normality in frequentist statistics. It was published in 1965 by Samuel Sanford Shapiro and Martin Wilk. + + + + References: + + + Wikipedia, The Free Encyclopedia. Shapiro-Wilk test. Available on: + http://en.wikipedia.org/wiki/Shapiro%E2%80%93Wilk_test + + + + + + + Creates a new Shapiro-Wilk test. + + + The sample we would like to test. + + + The sample must contain at least 4 observations. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Multinomial test (approximated). + + + + + In statistics, the multinomial test is the test of the null hypothesis that the + parameters of a multinomial distribution equal specified values. The test can be + approximated using a chi-square distribution. + + + References: + + + Wikipedia, The Free Encyclopedia. Multinomial Test. Available on: + http://en.wikipedia.org/wiki/Multinomial_test + + + + + + + The following example is based on the example available on About.com Statistics, + An Example of Chi-Square Test for a Multinomial Experiment By Courtney Taylor. + + In this example, we would like to test if a die is fair. For this, we + will be rolling the die 600 times, annotating the result every time + the die falls. In the end, we got a one 106 times, a two 90 times, a + three 98 times, a four 102 times, a five 100 times and a six 104 times: + + + int[] sample = { 106, 90, 98, 102, 100, 104 }; + + // If the die was fair, we should note that we would be expecting the + // probabilities to be all equal to 1 / 6: + + double[] hypothesizedProportion = + { + // 1 2 3 4 5 6 + 1 / 6.0, 1 / 6.0, 1 / 6.0, 1 / 6.0, 1 / 6.0, 1 / 6.0, + }; + + // Now, we create our test using the samples and the expected proportion + MultinomialTest test = new MultinomialTest(sample, hypothesizedProportion); + + double chiSquare = test.Statistic; // 1.6 + bool significant = test.Significant; // false + + + + Since the test didn't come up significant, it means that we + don't have enough evidence to to reject the null hypothesis + that the die is fair. + + + + + + + + + Creates a new Multinomial test. + + + The proportions for each category in the sample. + The number of observations in the sample. + + + + + Creates a new Multinomial test. + + + The number of occurrences for each category in the sample. + + + + + Creates a new Multinomial test. + + + The number of occurrences for each category in the sample. + The hypothesized category proportions. Default is + to assume uniformly equal proportions. + + + + + Creates a new Multinomial test. + + + The proportions for each category in the sample. + The number of observations in the sample. + The hypothesized category proportions. Default is + to assume uniformly equal proportions. + + + + + Creates a new Multinomial test. + + + The categories for each observation in the sample. + The number of possible categories. + + + + + Creates a new Multinomial test. + + + The categories for each observation in the sample. + The number of possible categories. + The hypothesized category proportions. Default is + to assume uniformly equal proportions. + + + + + Computes the Multinomial test. + + + + + + Gets the observed sample proportions. + + + + + + Gets the hypothesized population proportions. + + + + + + Bartlett's test for equality of variances. + + + + + In statistics, Bartlett's test is used to test if k samples are from populations + with equal variances. Equal variances across samples is called homoscedasticity + or homogeneity of variances. Some statistical tests, for example the + analysis of variance, assume that variances are equal across groups or samples. + The Bartlett test can be used to verify that assumption. + + Bartlett's test is sensitive to departures from normality. That is, if the samples + come from non-normal distributions, then Bartlett's test may simply be testing for + non-normality. Levene's test and the Brown–Forsythe test + are alternatives to the Bartlett test that are less sensitive to departures from + normality. + + + References: + + + Wikipedia, The Free Encyclopedia. Bartlett's test. Available on: + http://en.wikipedia.org/wiki/Bartlett's_test + + + + + + + + + + + + Tests the null hypothesis that all group variances are equal. + + + The grouped samples. + + + + + Levene test computation methods. + + + + + + The test has been computed using the Mean. + + + + + + The test has been computed using the Median + (which is known as the Brown-Forsythe test). + + + + + + The test has been computed using the trimmed mean. + + + + + + Levene's test for equality of variances. + + + + + In statistics, Levene's test is an inferential statistic used to assess the + equality of variances for a variable calculated for two or more groups. Some + common statistical procedures assume that variances of the populations from + which different samples are drawn are equal. Levene's test assesses this + assumption. It tests the null hypothesis that the population variances are + equal (called homogeneity of variance or homoscedasticity). If the resulting + P-value of Levene's test is less than some significance level (typically 0.05), + the obtained differences in sample variances are unlikely to have occurred based + on random sampling from a population with equal variances. Thus, the null hypothesis + of equal variances is rejected and it is concluded that there is a difference + between the variances in the population. + + + Some of the procedures typically assuming homoscedasticity, for which one can use + Levene's tests, include analysis of variance and + t-tests. Levene's test is often used before a comparison of means. When Levene's + test shows significance, one should switch to generalized tests, free from homoscedasticity + assumptions. Levene's test may also be used as a main test for answering a stand-alone + question of whether two sub-samples in a given population have equal or different variances. + + + References: + + + Wikipedia, The Free Encyclopedia. Levene's test. Available on: + http://en.wikipedia.org/wiki/Levene's_test + + + + + + + + + + + + Snedecor's F-Test. + + + + + A F-test is any statistical test in which the test statistic has an + F-distribution under the null hypothesis. + It is most often used when comparing statistical models that have been fit + to a data set, in order to identify the model that best fits the population + from which the data were sampled. + + + References: + + + Wikipedia, The Free Encyclopedia. F-Test. Available on: + http://en.wikipedia.org/wiki/F-test + + + + + + + + + // The following example has been based on the page "F-Test for Equality + // of Two Variances", from NIST/SEMATECH e-Handbook of Statistical Methods: + // + // http://www.itl.nist.gov/div898/handbook/eda/section3/eda359.htm + // + + // Consider a data set containing 480 ceramic strength + // measurements for two batches of material. The summary + // statistics for each batch are shown below: + + // Batch 1: + int numberOfObservations1 = 240; + // double mean1 = 688.9987; + double stdDev1 = 65.54909; + double var1 = stdDev1 * stdDev1; + + // Batch 2: + int numberOfObservations2 = 240; + // double mean2 = 611.1559; + double stdDev2 = 61.85425; + double var2 = stdDev2 * stdDev2; + + // Here, we will be testing the null hypothesis that + // the variances for the two batches are equal. + + int degreesOfFreedom1 = numberOfObservations1 - 1; + int degreesOfFreedom2 = numberOfObservations2 - 1; + + // Now we can create a F-Test to test the difference between variances + var ftest = new FTest(var1, var2, degreesOfFreedom1, degreesOfFreedom2); + + double statistic = ftest.Statistic; // 1.123037 + double pvalue = ftest.PValue; // 0.185191 + bool significant = ftest.Significant; // false + + // The F test indicates that there is not enough evidence + // to reject the null hypothesis that the two batch variances + // are equal at the 0.05 significance level. + + + + + + + + + Creates a new F-Test for a given statistic with given degrees of freedom. + + + The variance of the first sample. + The variance of the second sample. + The degrees of freedom for the first sample. + The degrees of freedom for the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new F-Test for a given statistic with given degrees of freedom. + + + The test statistic. + The degrees of freedom for the numerator. + The degrees of freedom for the denominator. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the F-test. + + + + + + Creates a new F-Test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the degrees of freedom for the + numerator in the test distribution. + + + + + + Gets the degrees of freedom for the + denominator in the test distribution. + + + + + + Tests the null hypothesis that all group variances are equal. + + + The grouped samples. + True to use the median in the Levene calculation. + False to use the mean. Default is false (use the mean). + + + + + Tests the null hypothesis that all group variances are equal. + + + The grouped samples. + The percentage of observations to discard + from the sample when computing the test with the truncated mean. + + + + + Gets the method used to compute the Levene's test. + + + + + + Contains methods for power analysis of several related hypothesis tests, + including support for automatic sample size estimation. + + + + + The namespace class diagram is shown below. + + + + Please note that class diagrams for each of the inner namespaces are + also available within their own documentation pages. + + + + + + + + + T-Test for two paired samples. + + + + + The Paired T-test can be used when the samples are dependent; that is, when there + is only one sample that has been tested twice (repeated measures) or when there are + two samples that have been matched or "paired". This is an example of a paired difference + test. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's t-test. + Available from: http://en.wikipedia.org/wiki/Student%27s_t-test#Dependent_t-test_for_paired_samples + + + + + + Suppose we would like to know the effect of a treatment (such + as a new drug) in improving the well-being of 9 patients. The + well-being is measured in a discrete scale, going from 0 to 10. + + // To do so, we need to register the initial state of each patient + // and then register their state after a given time under treatment. + + double[,] patients = + { + // before after + // treatment treatment + /* Patient 1.*/ { 0, 1 }, + /* Patient 2.*/ { 6, 5 }, + /* Patient 3.*/ { 4, 9 }, + /* Patient 4.*/ { 8, 6 }, + /* Patient 5.*/ { 1, 6 }, + /* Patient 6.*/ { 6, 7 }, + /* Patient 7.*/ { 3, 4 }, + /* Patient 8.*/ { 8, 7 }, + /* Patient 9.*/ { 6, 5 }, + }; + + // Extract the before and after columns + double[] before = patients.GetColumn(0); + double[] after = patients.GetColumn(1); + + // Create the paired-sample T-test. Our research hypothesis is + // that the treatment does improve the patient's well-being. So + // we will be testing the hypothesis that the well-being of the + // "before" sample, the first sample, is "smaller" in comparison + // to the "after" treatment group. + + PairedTTest test = new PairedTTest(before, after, + TwoSampleHypothesis.FirstValueIsSmallerThanSecond); + + bool significant = test.Significant; // not significant + double pvalue = test.PValue; // p-value = 0.1650 + double tstat = test.Statistic; // t-stat = -1.0371 + + + + + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Creates a new paired t-test. + + + The observations in the first sample. + The observations in the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the first sample's mean. + + + + + + Gets the second sample's mean. + + + + + + Gets the observed mean difference between the two samples. + + + + + + Gets the standard error of the difference. + + + + + + Gets the size of a sample. + Both samples have equal size. + + + + + + Gets the 95% confidence interval for the + statistic. + + + + + + Z-Test for two sample proportions. + + + + + + + + + Two sample Z-Test. + + + + + References: + + + Wikipedia, The Free Encyclopedia. Z-Test. Available on: + http://en.wikipedia.org/wiki/Z-test + + + + + + + + + + + Gets a confidence interval for the + statistic within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Constructs a Z test. + + + The first data sample. + The second data sample. + The hypothesized sample difference. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + The first sample's mean. + The second sample's mean. + The first sample's variance. + The second sample's variance. + The number of observations in the first sample. + The number of observations in the second sample. + The hypothesized sample difference. + The alternative hypothesis (research hypothesis) to test. + + + + + Constructs a Z test. + + + + + + Computes the Z test. + + + + + + Computes the Z test. + + + + + + Computes the Z test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the standard error for the difference. + + + + + + Gets the estimated value for the first sample. + + + + + + Gets the estimated value for the second sample. + + + + + + Gets the hypothesized difference between the two estimated values. + + + + + + Gets the actual difference between the two estimated values. + + + + + Gets the 95% confidence interval for the + statistic. + + + + + + Creates a new Z-Test for two sample proportions. + + + The proportion of success observations in the first sample. + The total number of observations in the first sample. + The proportion of success observations in the second sample. + The total number of observations in the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new Z-Test for two sample proportions. + + + The number of successes in the first sample. + The total number of trials (observations) in the first sample. + The number of successes in the second sample. + The total number of trials (observations) in the second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the Z-test for two sample proportions. + + + + + + Hypothesis test for two Receiver-Operating + Characteristic (ROC) curve areas (ROC-AUC). + + + + + + + + + Creates a new test for two ROC curves. + + + The first ROC curve. + The second ROC curve. + The hypothesized difference between the two areas. + The alternative hypothesis (research hypothesis) to test. + + + + + First Receiver-Operating Characteristic curve. + + + + + + First Receiver-Operating Characteristic curve. + + + + + + Gets the summed Kappa variance + for the two contingency tables. + + + + + + Gets the variance for the first Kappa value. + + + + + + Gets the variance for the second Kappa value. + + + + + + Base class for Wilcoxon's W tests. + + + + This is a base class which doesn't need to be used directly. + Instead, you may wish to call + and . + + + + + + + + + + + Creates a new Wilcoxon's W+ test. + + + The signs for the sample differences. + The differences between samples. + The distribution tail to test. + + + + + Creates a new Wilcoxon's W+ test. + + + + + + Computes the Wilcoxon Signed-Rank test. + + + + + + Computes the Wilcoxon Signed-Rank test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the number of samples being tested. + + + + + + Gets the signs for each of the differences. + + + + + + Gets the differences between the samples. + + + + + + Gets the rank statistics for the differences. + + + + + + Mann-Whitney-Wilcoxon test for unpaired samples. + + + + + The Mann–Whitney U test (also called the Mann–Whitney–Wilcoxon (MWW), + Wilcoxon rank-sum test, or Wilcoxon–Mann–Whitney test) is a non-parametric + test of the null hypothesis that two populations are the same against + an alternative hypothesis, especially that a particular population tends + to have larger values than the other. + + + It has greater efficiency than the t-test on + non-normal distributions, such as a mixture + of normal distributions, and it is + nearly as efficient as the t-test on normal + distributions. + + + + + The following example comes from Richard Lowry's page at + http://vassarstats.net/textbook/ch11a.html. As stated by + Richard, this example deals with persons seeking treatment + by claustrophobia. Those persons are randomly divided into + two groups, and each group receive a different treatment + for the disorder. + + + The hypothesis would be that treatment A would more effective + than B. To check this hypothesis, we can use Mann-Whitney's Test + to compare the medians of both groups. + + + // Claustrophobia test scores for people treated with treatment A + double[] sample1 = { 4.6, 4.7, 4.9, 5.1, 5.2, 5.5, 5.8, 6.1, 6.5, 6.5, 7.2 }; + + // Claustrophobia test scores for people treated with treatment B + double[] sample2 = { 5.2, 5.3, 5.4, 5.6, 6.2, 6.3, 6.8, 7.7, 8.0, 8.1 }; + + // Create a new Mann-Whitney-Wilcoxon's test to compare the two samples + MannWhitneyWilcoxonTest test = new MannWhitneyWilcoxonTest(sample1, sample2, + TwoSampleHypothesis.FirstValueIsSmallerThanSecond); + + double sum1 = test.RankSum1; // 96.5 + double sum2 = test.RankSum2; // 134.5 + + double statistic1 = test.Statistic1; // 79.5 + double statistic2 = test.Statistic2; // 30.5 + + double pvalue = test.PValue; // 0.043834132843420748 + + // Check if the test was significant + bool significant = test.Significant; // true + + + + + + + + + + + + Tests whether two samples comes from the + same distribution without assuming normality. + + + The first sample. + The second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the Mann-Whitney-Wilcoxon test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the number of samples in the first sample. + + + + + + Gets the number of samples in the second sample. + + + + + + Gets the rank statistics for the first sample. + + + + + + Gets the rank statistics for the second sample. + + + + + + Gets the sum of ranks for the first sample. Often known as Ta. + + + + + + Gets the sum of ranks for the second sample. Often known as Tb. + + + + + + Gets the difference between the expected value for + the observed value of and its + expected value under the null hypothesis. Often known as Ua. + + + + + + Gets the difference between the expected value for + the observed value of and its + expected value under the null hypothesis. Often known as Ub. + + + + + + Common interface for power analysis objects. + + + + + The power of a statistical test is the probability that it correctly rejects + the null hypothesis when the null hypothesis is false. That is, + + + power = P(reject null hypothesis | null hypothesis is false) + + + + It can be equivalently thought of as the probability of correctly accepting the + alternative hypothesis when the alternative hypothesis is true - that is, the ability + of a test to detect an effect, if the effect actually exists. The power is in general + a function of the possible distributions, often determined by a parameter, under the + alternative hypothesis. As the power increases, the chances of a Type II error occurring + decrease. The probability of a Type II error occurring is referred to as the false + negative rate (β) and the power is equal to 1−β. The power is also known as the sensitivity. + + + + Power analysis can be used to calculate the minimum sample size required so that + one can be reasonably likely to detect an effect of a given size. Power analysis + can also be used to calculate the minimum effect size that is likely to be detected + in a study using a given sample size. In addition, the concept of power is used to + make comparisons between different statistical testing procedures: for example, + between a parametric and a nonparametric test of the same hypothesis. There is also + the concept of a power function of a test, which is the probability of rejecting the + null when the null is true. + + + References: + + + Wikipedia, The Free Encyclopedia. Statistical power. Available on: + http://en.wikipedia.org/wiki/Statistical_power + + + + + + + + + + Gets the test type. + + + + + + Gets the power of the test, also known as the + (1-Beta error rate) or the test's sensitivity. + + + + + + Gets the significance level + for the test. Also known as alpha. + + + + + + Gets the number of samples + considered in the test. + + + + + + Gets the effect size of the test. + + + + + + Common interface for two-sample power analysis objects. + + + + + + Gets the number of observations + contained in the first sample. + + + + + + Gets the number of observations + contained in the second sample. + + + + + + Base class for two sample power analysis methods. + This class cannot be instantiated. + + + + + + Constructs a new power analysis for a two-sample test. + + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + The power for the test under the given conditions. + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the + significance level . + + + The minimum detectable effect + size for the test under the given conditions. + + + + + Computes the minimum significance level for the test + considering the power given in , the + number of samples in and the + effect size . + + + The minimum detectable effect + size for the test under the given conditions. + + + + + Computes the recommended sample size for the test to attain + the power indicated in considering + values of and . + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Gets the minimum difference in the experiment units + to which it is possible to detect a difference. + + + The common standard deviation for the samples. + + The minimum difference in means which can be detected by the test. + + + + + Gets the minimum difference in the experiment units + to which it is possible to detect a difference. + + + The variance for the first sample. + The variance for the second sample. + + The minimum difference in means which can be detected by the test. + + + + + Gets the test type. + + + + + + Gets or sets the power of the test, also + known as the (1-Beta error rate). + + + + + + Gets or sets the significance level + for the test. Also known as alpha. + + + + + + Gets or sets the number of observations + in the first sample considered in the test. + + + + + + Gets or sets the number of observations + in the second sample considered in the test. + + + + + + Gets the total number of observations + in both samples considered in the test. + + + + + + Gets the total number of observations + in both samples considered in the test. + + + + + + Gets or sets the effect size of the test. + + + + + + Power analysis for two-sample Z-Tests. + + + + + Please take a look at the example section. + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Gets the recommended sample size for the test to attain + the power indicating in considering + values of and . + + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the significance + level . + + + + The minimum detectable effect + size for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + The proportion of observations in the second group + when compared to the first group. A proportion of 2:1 results in twice more + samples in the second group than in the first. Default is 1. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The number of observations in the first sample. + The number of observations in the second sample. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Power analysis for two-sample T-Tests. + + + + + There are different ways a power analysis test can be conducted. + + + // Let's say we have two samples, and we would like to know whether those + // samples have the same mean. For this, we can perform a two sample T-Test: + double[] A = { 5.0, 6.0, 7.9, 6.95, 5.3, 10.0, 7.48, 9.4, 7.6, 8.0, 6.22 }; + double[] B = { 5.0, 1.6, 5.75, 5.80, 2.9, 8.88, 4.56, 2.4, 5.0, 10.0 }; + + // Perform the test, assuming the samples have unequal variances + var test = new TwoSampleTTest(A, B, assumeEqualVariances: false); + + double df = test.DegreesOfFreedom; // d.f. = 14.351 + double t = test.Statistic; // t = 2.14 + double p = test.PValue; // p = 0.04999 + bool significant = test.Significant; // true + + // The test gave us an indication that the samples may + // indeed have come from different distributions (whose + // mean value is actually distinct from each other). + + // Now, we would like to perform an _a posteriori_ analysis of the + // test. When doing an a posteriori analysis, we can not change some + // characteristics of the test (because it has been already done), + // but we can measure some important features that may indicate + // whether the test is trustworthy or not. + + // One of the first things would be to check for the test's power. + // A test's power is 1 minus the probability of rejecting the null + // hypothesis when the null hypothesis is actually false. It is + // the other side of the coin when we consider that the P-value + // is the probability of rejecting the null hypothesis when the + // null hypothesis is actually true. + + // Ideally, this should be a high value: + double power = test.Analysis.Power; // 0.5376260 + + // Check how much effect we are trying to detect + double effect = test.Analysis.Effect; // 0.94566 + + // With this power, that is the minimal difference we can spot? + double sigma = Math.Sqrt(test.Variance); + double thres = test.Analysis.Effect * sigma; // 2.0700909090909 + + // This means that, using our test, the smallest difference that + // we could detect with some confidence would be something around + // 2 standard deviations. If we would like to say the samples are + // different when they are less than 2 std. dev. apart, we would + // need to do repeat our experiment differently. + + + + Another way to create the power analysis is to pass the + hypothesis test to the t-test power analysis constructor. + + + // Create an a posteriori analysis of the experiment + var analysis = new TwoSampleTTestPowerAnalysis(test); + + // When creating a power analysis, we have three things we can + // change. We can always freely configure two of those things + // and then ask the analysis to give us the third. + + // Those are: + double e = analysis.Effect; // the test's minimum detectable effect size (0.94566) + double n = analysis.TotalSamples; // the number of samples in the test (21 or (11 + 10)) + double b = analysis.Power; // the probability of committing a type-2 error (0.53) + + // Let's say we would like to create a test with 80% power. + analysis.Power = 0.8; + analysis.ComputeEffect(); // what effect could we detect? + + double detectableEffect = analysis.Effect; // we would detect a difference of 1.290514 + + + + However, to achieve this 80%, we would need to redo our experiment + more carefully. Assuming we are going to redo our experiment, we will + have more freedom about what we can change and what we can not. For + better addressing those points, we will create an a priori analysis + of the experiment: + + + // We would like to know how many samples we would need to gather in + // order to achieve a 80% power test which can detect an effect size + // of one standard deviation: + // + analysis = TwoSampleTTestPowerAnalysis.GetSampleSize + ( + variance1: A.Variance(), + variance2: B.Variance(), + delta: 1.0, // the minimum detectable difference we want + power: 0.8 // the test power that we want + ); + + // How many samples would we need in order to see the effect we need? + int n1 = (int)Math.Ceiling(analysis.Samples1); // 77 + int n2 = (int)Math.Ceiling(analysis.Samples2); // 77 + + // According to our power analysis, we would need at least 77 + // observations in each sample in order to see the effect we + // need with the required 80% power. + + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The proportion of observations in the second group + when compared to the first group. A proportion of 2:1 results in twice more + samples in the second group than in the first. Default is 1. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The first sample variance. + The second sample variance. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The proportion of observations in the second group + when compared to the first group. A proportion of 2:1 results in twice more + samples in the second group than in the first. Default is 1. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Base class for one sample power analysis methods. + This class cannot be instantiated. + + + + + + Constructs a new power analysis for a one-sample test. + + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + The power for the test under the given conditions. + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the significance + level . + + + The minimum detectable effect + size for the test under the given conditions. + + + + + Computes recommended sample size for the test to attain + the power indicated in considering + values of and . + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Converts the numeric power of this test to its equivalent string representation. + + + + + + Gets the minimum difference in the experiment units + to which it is possible to detect a difference. + + + The standard deviation for the samples. + + The minimum difference in means which can be detected by the test. + + + + + Gets the test type. + + + + + + Gets or sets the power of the test, also + known as the (1-Beta error rate). + + + + + + Gets or sets the significance level + for the test. Also known as alpha. + + + + + + Gets or sets the number of samples + considered in the test. + + + + + + Gets or sets the effect size of the test. + + + + + + Bhapkar test of homogeneity for contingency tables. + + + + The Bhapkar test is a more powerful alternative to the + Stuart-Maxwell test. + + + This is a Chi-square kind of test. + + + References: + + + Bhapkar, V.P. (1966). A note on the equivalence of two test criteria + for hypotheses in categorical data. Journal of the American Statistical + Association, 61, 228-235. + + + + + + + + + Creates a new Bhapkar test. + + + The contingency table to test. + + + + + Gets the delta vector d used + in the test calculations. + + + + + + Gets the covariance matrix S + used in the test calculations. + + + + + + Gets the inverse covariance matrix + S^-1 used in the calculations. + + + + + + Bowker test of symmetry for contingency tables. + + + + + This is a Chi-square kind of test. + + + + + + + + Creates a new Bowker test. + + + The contingency table to test. + + + + + Kappa Test for two contingency tables. + + + + + The two-matrix Kappa test tries to assert whether the Kappa measure + of two contingency tables, each of which created by a different rater + or classification model, differs significantly. + + + This is a two sample z-test kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + + Ientilucci, Emmett (2006). "On Using and Computing the Kappa Statistic". + Available on: http://www.cis.rit.edu/~ejipci/Reports/On_Using_and_Computing_the_Kappa_Statistic.pdf + + + + + + + + + + Creates a new Two-Table Kappa test. + + + The kappa value for the first contingency table to test. + The kappa value for the second contingency table to test. + The variance of the kappa value for the first contingency table to test. + The variance of the kappa value for the second contingency table to test. + The alternative hypothesis (research hypothesis) to test. + The hypothesized difference between the two Kappa values. + + + + + Creates a new Two-Table Kappa test. + + + The first contingency table to test. + The second contingency table to test. + The hypothesized difference between the two Kappa values. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the summed Kappa variance + for the two contingency tables. + + + + + + Gets the variance for the first Kappa value. + + + + + + Gets the variance for the second Kappa value. + + + + + + Kappa Test for agreement in contingency tables. + + + + + The Kappa test tries to assert whether the Kappa measure of a + a contingency table, is significantly different from another + hypothesized value. + + + The computations used by the test are the same found in the 1969 paper by + J. L. Fleiss, J. Cohen, B. S. Everitt, in which they presented the finally + corrected version of the Kappa's variance formulae. This is contrast to the + computations traditionally found in the remote sensing literature. For those + variance computations, see the method. + + + + This is a z-test kind of test. + + + References: + + J. L. Fleiss. Statistical methods for rates and proportions. + Wiley-Interscience; 3rd edition (September 5, 2003) + J. L. Fleiss, J. Cohen, B. S. Everitt. Large sample standard errors of + kappa and weighted kappa. Psychological Bulletin, Volume: 72, Issue: 5. Washington, + DC: American Psychological Association, Pages: 323-327, 1969. + + + + + + + + + Creates a new Kappa test. + + + The estimated Kappa statistic. + The standard error of the kappa statistic. If the test is + being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error should be computed with the null hypothesis parameter set to true. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + + + + + Creates a new Kappa test. + + + The estimated Kappa statistic. + The standard error of the kappa statistic. If the test is + being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error should be computed with the null hypothesis parameter set to true. + The hypothesized value for the Kappa statistic. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + + + + + Creates a new Kappa test. + + + The contingency table to test. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + + + + + Creates a new Kappa test. + + + The contingency table to test. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + The hypothesized value for the Kappa statistic. If the test + is being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error will be computed with the null hypothesis parameter set to true. + + + + + Creates a new Kappa test. + + + The contingency table to test. + The alternative hypothesis (research hypothesis) to test. If the + hypothesized kappa is left unspecified, a one-tailed test will be used. Otherwise, the + default is to use a two-sided test. + The hypothesized value for the Kappa statistic. If the test + is being used to assert independency between two raters (i.e. testing the null hypothesis + that the underlying Kappa is zero), then the + standard error will be computed with the null hypothesis parameter set to true. + + + + + Compute Cohen's Kappa variance using the large sample approximation + given by Congalton, which is common in the remote sensing literature. + + + A representing the ratings. + + Kappa's variance. + + + + + Compute Cohen's Kappa variance using the large sample approximation + given by Congalton, which is common in the remote sensing literature. + + + A representing the ratings. + Kappa's standard deviation. + + Kappa's variance. + + + + + Computes the asymptotic variance for Fleiss's Kappa variance using the formulae + by (Fleiss et al, 1969) when the underlying Kappa is assumed different from zero. + + + A representing the ratings. + + Kappa's variance. + + + + + Computes the asymptotic variance for Fleiss's Kappa variance using the formulae + by (Fleiss et al, 1969). If is set to true, the + method will return the variance under the null hypothesis. + + + A representing the ratings. + Kappa's standard deviation. + True to compute Kappa's variance when the null hypothesis + is true (i.e. that the underlying kappa is zer). False otherwise. Default is false. + + Kappa's variance. + + + + + Computes the asymptotic variance for Fleiss's Kappa variance using the formulae + by (Fleiss et al, 1969). If is set to true, the + method will return the variance under the null hypothesis. + + + A representing the ratings. + Kappa's standard deviation. + True to compute Kappa's variance when the null hypothesis + is true (i.e. that the underlying kappa is zer). False otherwise. Default is false. + + Kappa's variance. + + + + + Gets the variance of the Kappa statistic. + + + + + + McNemar test of homogeneity for 2 x 2 contingency tables. + + + + + McNemar's test is a non-parametric method used on nominal data. It is applied to + 2 × 2 contingency tables with a dichotomous trait, with matched pairs of subjects, + to determine whether the row and column marginal frequencies are equal, i.e. if + the contingency table presents marginal homogeneity. + + + This is a Chi-square kind of test. + + + References: + + + Wikipedia contributors, "McNemar's test," Wikipedia, The Free Encyclopedia, + Available on: http://http://en.wikipedia.org/wiki/McNemar's_test. + + + + + + + + + Creates a new McNemar test. + + + The contingency table to test. + True to use Yate's correction of + continuity, falser otherwise. Default is false. + + + + + One-sample Kolmogorov-Smirnov (KS) test. + + + + + The Kolmogorov-Smirnov test tries to determine if a sample differs significantly + from an hypothesized theoretical probability distribution. The Kolmogorov-Smirnov + test has an interesting advantage in which it does not requires any assumptions + about the data. The distribution of the K-S test statistic does not depend on + which distribution is being tested. + + The K-S test has also the advantage of being an exact test (other tests, such as the + chi-square goodness-of-fit test depends on an adequate sample size). One disadvantage + is that it requires a fully defined distribution which should not have been estimated + from the data. If the parameters of the theoretical distribution have been estimated + from the data, the critical region of the K-S test will be no longer valid. + + This class uses an efficient and high-accuracy algorithm based on work by Richard + Simard (2010). Please see for more details. + + + References: + + + Wikipedia, The Free Encyclopedia. Kolmogorov-Smirnov Test. + Available on: http://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test + + NIST/SEMATECH e-Handbook of Statistical Methods. Kolmogorov-Smirnov Goodness-of-Fit Test. + Available on: http://www.itl.nist.gov/div898/handbook/eda/section3/eda35g.htm + + Richard Simard, Pierre L’Ecuyer. Computing the Two-Sided Kolmogorov-Smirnov Distribution. + Journal of Statistical Software. Volume VV, Issue II. Available on: + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf + + + + + + In this first example, suppose we got a new sample, and we would + like to test whether this sample has been originated from a uniform + continuous distribution. + + + double[] sample = + { + 0.621, 0.503, 0.203, 0.477, 0.710, 0.581, 0.329, 0.480, 0.554, 0.382 + }; + + // First, we create the distribution we would like to test against: + // + var distribution = UniformContinuousDistribution.Standard; + + // Now we can define our hypothesis. The null hypothesis is that the sample + // comes from a standard uniform distribution, while the alternate is that + // the sample is not from a standard uniform distribution. + // + var kstest = new KolmogorovSmirnovTest(sample, distribution); + + double statistic = kstest.Statistic; // 0.29 + double pvalue = kstest.PValue; // 0.3067 + + bool significant = kstest.Significant; // false + + + Since the null hypothesis could not be rejected, then the sample + can perhaps be from a uniform distribution. However, please note + that this doesn't means that the sample *is* from the uniform, it + only means that we could not rule out the possibility. + + + Before we could not rule out the possibility that the sample came from + a uniform distribution, which means the sample was not very far from + uniform. This would be an indicative that it would be far from what + would be expected from a Normal distribution: + + + // First, we create the distribution we would like to test against: + // + NormalDistribution distribution = NormalDistribution.Standard; + + // Now we can define our hypothesis. The null hypothesis is that the sample + // comes from a standard Normal distribution, while the alternate is that + // the sample is not from a standard Normal distribution. + // + var kstest = new KolmogorovSmirnovTest(sample, distribution); + + double statistic = kstest.Statistic; // 0.580432 + double pvalue = kstest.PValue; // 0.000999 + + bool significant = kstest.Significant; // true + + + + Since the test says that the null hypothesis should be rejected, then + this can be regarded as a strong indicative that the sample does not + comes from a Normal distribution, just as we expected. + + + + + + + + Creates a new One-Sample Kolmogorov test. + + + The sample we would like to test as belonging to the . + A fully specified distribution (which must NOT have been estimated from the data). + + + + + Creates a new One-Sample Kolmogorov test. + + + The sample we would like to test as belonging to the . + A fully specified distribution (which must NOT have been estimated from the data). + The alternative hypothesis (research hypothesis) to test. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the theoretical, hypothesized distribution for the samples, + which should have been stated before any measurements. + + + + + + Gets the empirical distribution measured from the sample. + + + + + + ANOVA's result table. + + + + This class represents the results obtained from an ANOVA experiment. + + + + + + Source of variation in an ANOVA experiment. + + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The sum of squares of the source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The mean sum of squares of the source. + The sum of squares of the source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The sum of squares of the source. + The F-Test containing the F-Statistic for the source. + + + + + Creates a new object representation of a variation source in an ANOVA experiment. + + + The associated ANOVA analysis. + The name of the variation source. + The degrees of freedom for the source. + The sum of squares of the source. + The mean sum of squares of the source. + The F-Test containing the F-Statistic for the source. + + + + + Gets the ANOVA associated with this source. + + + + + + Gets the name of the variation source. + + + + + + Gets the sum of squares associated with the variation source. + + + + + + Gets the degrees of freedom associated with the variation source. + + + + + + Get the mean squares, or the variance, associated with the source. + + + + + + Gets the significance of the source. + + + + + + Gets the F-Statistic associated with the source's significance. + + + + + + One-way Analysis of Variance (ANOVA). + + + + The one-way ANOVA is a way to test for the equality of three or more means at the same + time by using variances. In its simplest form ANOVA provides a statistical test of whether + or not the means of several groups are all equal, and therefore generalizes t-test to more + than two groups. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + Wikipedia, The Free Encyclopedia. F-Test. + + Wikipedia, The Free Encyclopedia. One-way ANOVA. + + + + + + The following is the same example given in Wikipedia's page for the + F-Test [1]. Suppose one would like to test the effect of three levels + of a fertilizer on plant growth. + + + To achieve this goal, an experimenter has divided a set of 18 plants on + three groups, 6 plants each. Each group has received different levels of + the fertilizer under question. + + + After some months, the experimenter registers the growth for each plant: + + + double[][] samples = + { + new double[] { 6, 8, 4, 5, 3, 4 }, // records for the first group + new double[] { 8, 12, 9, 11, 6, 8 }, // records for the second group + new double[] { 13, 9, 11, 8, 7, 12 }, // records for the third group + }; + + + + Now, he would like to test whether the different fertilizer levels has + indeed caused any effect in plant growth. In other words, he would like + to test if the three groups are indeed significantly different. + + + // To do it, he runs an ANOVA test: + OneWayAnova anova = new OneWayAnova(samples); + + + + After the Anova object has been created, one can display its findings + in the form of a standard ANOVA table by binding anova.Table to a + DataGridView or any other display object supporting data binding. To + illustrate, we could use Accord.NET's DataGridBox to inspect the + table's contents. + + + DataGridBox.Show(anova.Table); + + + Result in: + + + + + The p-level for the analysis is about 0.002, meaning the test is + significant at the 5% significance level. The experimenter would + thus reject the null hypothesis, concluding there is a strong + evidence that the three groups are indeed different. Assuming the + experiment was correctly controlled, this would be an indication + that the fertilizer does indeed affect plant growth. + + + [1] http://en.wikipedia.org/wiki/F_test + + + + + + + Creates a new one-way ANOVA test. + + + The sampled values. + The independent, nominal variables. + + + + + Creates a new one-way ANOVA test. + + + The grouped sampled values. + + + + + Gets the F-Test produced by this one-way ANOVA. + + + + + + Gets the ANOVA results in the form of a table. + + + + + + Two-way ANOVA model types. + + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Fixed-effects model (Model 1). + + + + The fixed-effects model of analysis of variance, as known as model 1, applies + to situations in which the experimenter applies one or more treatments to the + subjects of the experiment to see if the response variable values change. + + This allows the experimenter to estimate the ranges of response variable values + that the treatment would generate in the population as a whole. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Random-effects model (Model 2). + + + + Random effects models are used when the treatments are not fixed. This occurs when + the various factor levels are sampled from a larger population. Because the levels + themselves are random variables, some assumptions and the method of contrasting the + treatments differ from ANOVA model 1. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Mixed-effects models (Model 3). + + + + A mixed-effects model contains experimental factors of both fixed and random-effects + types, with appropriately different interpretations and analysis for the two types. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + + + + + + Two-way Analysis of Variance. + + + + + The two-way ANOVA is an extension of the one-way ANOVA for two independent + variables. There are three classes of models which can also be used in the + analysis, each of which determining the interpretation of the independent + variables in the analysis. + + + References: + + + Wikipedia, The Free Encyclopedia. Analysis of variance. + + Carsten Dahl Mørch, ANOVA. Aalborg Universitet. Available on: + http://www.smi.hst.aau.dk/~cdahl/BiostatPhD/ANOVA.pdf + + + + + + + + + Constructs a new . + + + The samples. + The first factor labels. + The second factor labels. + The type of the analysis. + + + + + Constructs a new . + + + The samples in grouped form. + The type of the analysis. + + + + + Gets the number of observations in the sample. + + + + + + Gets the number of samples presenting the first factor. + + + + + + Gets the number of samples presenting the second factor. + + + + + Gets the number of replications of each factor. + + + + + + Gets or sets the variation sources obtained in the analysis. + + The variation sources for the data. + + + + + Gets the ANOVA results in the form of a table. + + + + + + Gets or sets the type of the model. + + The type of the model. + + + + + Variation sources associated with two-way ANOVA. + + + + + + Gets information about the first factor (A). + + + + + + Gets information about the second factor (B) source. + + + + + + Gets information about the interaction factor (AxB) source. + + + + + + Gets information about the error (within-variance) source. + + + + + + Gets information about the grouped (cells) variance source. + + + + + + Gets information about the total source of variance. + + + + + + Stuart-Maxwell test of homogeneity for K x K contingency tables. + + + + + The Stuart-Maxwell test is a generalization of + McNemar's test for multiple categories. + + + This is a Chi-square kind of test. + + + References: + + + Uebersax, John (2006). "McNemar Tests of Marginal Homogeneity". + Available on: http://www.john-uebersax.com/stat/mcnemar.htm + + Sun, Xuezheng; Yang, Zhao (2008). "Generalized McNemar's Test for Homogeneity of the Marginal + Distributions". Available on: http://www2.sas.com/proceedings/forum2008/382-2008.pdf + + + + + + + + + Creates a new Stuart-Maxwell test. + + + The contingency table to test. + + + + + Gets the delta vector d used + in the test calculations. + + + + + + Gets the covariance matrix S + used in the test calculations. + + + + + + Gets the inverse covariance matrix + S^-1 used in the calculations. + + + + + + Power analysis for one-sample T-Tests. + + + + + // When creating a power analysis, we have three things we can + // change. We can always freely configure two of those things + // and then ask the analysis to give us the third. + + var analysis = new TTestPowerAnalysis(OneSampleHypothesis.ValueIsDifferentFromHypothesis); + + // Those are: + double e = analysis.Effect; // the test's minimum detectable effect size + double n = analysis.Samples; // the number of samples in the test + double p = analysis.Power; // the probability of committing a type-2 error + + // Let's set the desired effect size and the + // number of samples so we can get the power + + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputePower(); // what will be the power of this test? + + double power = analysis.Power; // The power is going to be 0.33 (or 33%) + + // Let's set the desired power and the number + // of samples so we can get the effect size + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputeEffect(); // what would be the minimum effect size we can detect? + + double effect = analysis.Effect; // The effect will be 0.36 standard deviations. + + // Let's set the desired power and the effect + // size so we can get the number of samples + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.ComputeSamples(); + + double samples = analysis.Samples; // We would need around 199 samples. + + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The number of observations in the sample. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Power analysis for one-sample Z-Tests. + + + + // When creating a power analysis, we have three things we can + // change. We can always freely configure two of those things + // and then ask the analysis to give us the third. + + var analysis = new ZTestPowerAnalysis(OneSampleHypothesis.ValueIsDifferentFromHypothesis); + + // Those are: + double e = analysis.Effect; // the test's minimum detectable effect size + double n = analysis.Samples; // the number of samples in the test + double p = analysis.Power; // the probability of committing a type-2 error + + // Let's set the desired effect size and the + // number of samples so we can get the power + + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputePower(); // what will be the power of this test? + + double power = analysis.Power; // The power is going to be 0.34 (or 34%) + + // Let's set the desired power and the number + // of samples so we can get the effect size + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Samples = 60; // we would like to use at most 60 samples + analysis.ComputeEffect(); // what would be the minimum effect size we can detect? + + double effect = analysis.Effect; // The effect will be 0.36 standard deviations. + + // Let's set the desired power and the effect + // size so we can get the number of samples + + analysis.Power = 0.8; // we would like to create a test with 80% power + analysis.Effect = 0.2; // we would like to detect at least 0.2 std. dev. apart + analysis.ComputeSamples(); + + double samples = analysis.Samples; // We would need around 197 samples. + + + + + + + + + + Creates a new . + + + The hypothesis tested. + + + + + Creates a new . + + + The test to create the analysis for. + + + + + Computes the power for a test with givens values of + effect size and + number of samples under . + + + + The power for the test under the given conditions. + + + + + + Gets the recommended sample size for the test to attain + the power indicating in considering + values of and . + + + + Recommended sample size for attaining the given + for size effect + under the given . + + + + + + Computes the minimum detectable effect size for the test + considering the power given in , the + number of samples in and the significance + level . + + + + The minimum detectable effect + size for the test under the given conditions. + + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The minimum detectable difference. + The difference standard deviation. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Estimates the number of samples necessary to attain the + required power level for the given effect size. + + + The number of observations in the sample. + The desired power level. Default is 0.8. + The desired significance level. Default is 0.05. + The alternative hypothesis (research hypothesis) to be tested. + + The required number of samples. + + + + + Sign test for the median. + + + + + In statistics, the sign test can be used to test the hypothesis that the difference + median is zero between the continuous distributions of two random variables X and Y, + in the situation when we can draw paired samples from X and Y. It is a non-parametric + test which makes very few assumptions about the nature of the distributions under test + - this means that it has very general applicability but may lack the + statistical power of other tests such as the paired-samples + t-test or the Wilcoxon signed-rank test. + + + References: + + + Wikipedia, The Free Encyclopedia. Sign test. Available on: + http://en.wikipedia.org/wiki/Sign_test + + + + + + // This example has been adapted from the Wikipedia's page about + // the Z-Test, available from: http://en.wikipedia.org/wiki/Z-test + + // We would like to check whether a sample of 20 + // students with a median score of 96 points ... + + double[] sample = + { + 106, 115, 96, 88, 91, 88, 81, 104, 99, 68, + 104, 100, 77, 98, 96, 104, 82, 94, 72, 96 + }; + + // ... could have happened just by chance inside a + // population with an hypothesized median of 100 points. + + double hypothesizedMedian = 100; + + // So we start by creating the test: + SignTest test = new SignTest(sample, hypothesizedMedian, + OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Now, we can check whether this result would be + // unlikely under a standard significance level: + + bool significant = test.Significant; // false (so the event was likely) + + // We can also check the test statistic and its P-Value + double statistic = test.Statistic; // 5 + double pvalue = test.PValue; // 0.99039 + + + + + + + + + + + + Binomial test. + + + + + In statistics, the binomial test is an exact test of the statistical significance + of deviations from a theoretically expected distribution of observations into two + categories. The most common use of the binomial test is in the case where the null + hypothesis is that two categories are equally likely to occur (such as a coin toss). + + When there are more than two categories, and an exact test is required, the + multinomial test, based on the multinomial + distribution, must be used instead of the binomial test. + + + References: + + + Wikipedia, The Free Encyclopedia. Binomial-Test. Available from: + http://en.wikipedia.org/wiki/Binomial_test + + + + + + This is the second example from Wikipedia's page on hypothesis testing. In this example, + a person is tested for clairvoyance (ability of gaining information about something through + extra sensory perception; detecting something without using the known human senses. + + + // A person is shown the reverse of a playing card 25 times and is + // asked which of the four suits the card belongs to. Every time + // the person correctly guesses the suit of the card, we count this + // result as a correct answer. Let's suppose the person obtained 13 + // correctly answers out of the 25 cards. + + // Since each suit appears 1/4 of the time in the card deck, we + // would assume the probability of producing a correct answer by + // chance alone would be of 1/4. + + // And finally, we must consider we are interested in which the + // subject performs better than what would expected by chance. + // In other words, that the person's probability of predicting + // a card is higher than the chance hypothesized value of 1/4. + + BinomialTest test = new BinomialTest( + successes: 13, trials: 25, + hypothesizedProbability: 1.0 / 4.0, + alternate: OneSampleHypothesis.ValueIsGreaterThanHypothesis); + + Console.WriteLine("Test p-Value: " + test.PValue); // ~ 0.003 + Console.WriteLine("Significant? " + test.Significant); // True. + + + + + + + + + Tests the probability of two outcomes in a series of experiments. + + + The experimental trials. + The hypothesized occurrence probability. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the probability of two outcomes in a series of experiments. + + + The number of successes in the trials. + The total number of experimental trials. + The hypothesized occurrence probability. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a Binomial test. + + + + + + Computes the Binomial test. + + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Computes the two-tail probability using the Wilson-Sterne rule, + which defines the tail of the distribution based on a ordering + of the null probabilities of X. (Smirnoff, 2003) + + + + References: Jeffrey S. Simonoff, Analyzing + Categorical Data, Springer, 2003 (pg 64). + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Tests the null hypothesis that the sample median is equal to a hypothesized value. + + + The number of positive samples. + The total number of samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the null hypothesis that the sample median is equal to a hypothesized value. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the one sample sign test. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis + can be rejected in favor of this alternative hypothesis. + + + + + + Wilcoxon signed-rank test for the median. + + + + + The Wilcoxon signed-rank test is a non-parametric statistical hypothesis test + used when comparing two related samples, matched samples, or repeated measurements + on a single sample to assess whether their population mean ranks differ (i.e. it is + a paired difference test). It can be used as an alternative to the paired + Student's t-test, t-test for matched pairs, or the t-test + for dependent samples when the population cannot be assumed to be normally distributed. + + + The Wilcoxon signed-rank test is not the same as the Wilcoxon rank-sum + test, although both are nonparametric and involve summation of ranks. + + + This test uses the positive W statistic, as explained in + https://onlinecourses.science.psu.edu/stat414/node/319 + + + References: + + + Wikipedia, The Free Encyclopedia. Wilcoxon signed-rank test. Available on: + http://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test + + + + + + // This example has been adapted from the Wikipedia's page about + // the Z-Test, available from: http://en.wikipedia.org/wiki/Z-test + + // We would like to check whether a sample of 20 + // students with a median score of 96 points ... + + double[] sample = + { + 106, 115, 96, 88, 91, 88, 81, 104, 99, 68, + 104, 100, 77, 98, 96, 104, 82, 94, 72, 96 + }; + + // ... could have happened just by chance inside a + // population with an hypothesized median of 100 points. + + double hypothesizedMedian = 100; + + // So we start by creating the test: + WilcoxonSignedRankTest test = new WilcoxonSignedRankTest(sample, + hypothesizedMedian, OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Now, we can check whether this result would be + // unlikely under a standard significance level: + + bool significant = test.Significant; // false (so the event was likely) + + // We can also check the test statistic and its P-Value + double statistic = test.Statistic; // 40.0 + double pvalue = test.PValue; // 0.98585347446367344 + + + + + + + + + + + + + + + Tests the null hypothesis that the sample median is equal to a hypothesized value. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Sign test for two paired samples. + + + + + This is a Binomial kind of test. + + + + + + + + + + Creates a new sign test for two samples. + + + The number of positive samples (successes). + The total number of samples (trials). + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a new sign test for two samples. + + + The first sample of observations. + The second sample of observations. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the two sample sign test. + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis + can be rejected in favor of this alternative hypothesis. + + + + + + Wilcoxon signed-rank test for paired samples. + + + + + + + + + Tests whether the medians of two paired samples are different. + + + The first sample. + The second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + One-sample Student's T test. + + + + + The one-sample t-test assesses whether the mean of a sample is + statistically different from a hypothesized value. + + + This test supports creating power analyses + through its property. + + + References: + + + Wikipedia, The Free Encyclopedia. Student's T-Test. + + William M.K. Trochim. The T-Test. Research methods Knowledge Base, 2009. + Available on: http://www.le.ac.uk/bl/gat/virtualfc/Stats/ttest.html + + Graeme D. Ruxton. The unequal variance t-test is an underused alternative to Student's + t-test and the Mann–Whitney U test. Oxford Journals, Behavioral Ecology Volume 17, Issue 4, pp. + 688-690. 2006. Available on: http://beheco.oxfordjournals.org/content/17/4/688.full + + + + + + // Consider a sample generated from a Gaussian + // distribution with mean 0.5 and unit variance. + + double[] sample = + { + -0.849886940156521, 3.53492346633185, 1.22540422494611, 0.436945126810344, 1.21474290382610, + 0.295033941700225, 0.375855651783688, 1.98969760778547, 1.90903448980048, 1.91719241342961 + }; + + // One may rise the hypothesis that the mean of the sample is not + // significantly different from zero. In other words, the fact that + // this particular sample has mean 0.5 may be attributed to chance. + + double hypothesizedMean = 0; + + // Create a T-Test to check this hypothesis + TTest test = new TTest(sample, hypothesizedMean, + OneSampleHypothesis.ValueIsDifferentFromHypothesis); + + // Check if the mean is significantly different + test.Significant should be true + + // Now, we would like to test if the sample mean is + // significantly greater than the hypothesized zero. + + // Create a T-Test to check this hypothesis + TTest greater = new TTest(sample, hypothesizedMean, + OneSampleHypothesis.ValueIsGreaterThanHypothesis); + + // Check if the mean is significantly larger + greater.Significant should be true + + // Now, we would like to test if the sample mean is + // significantly smaller than the hypothesized zero. + + // Create a T-Test to check this hypothesis + TTest smaller = new TTest(sample, hypothesizedMean, + OneSampleHypothesis.ValueIsSmallerThanHypothesis); + + // Check if the mean is significantly smaller + smaller.Significant should be false + + + + + + + + + + + + + + + Gets a confidence interval for the estimated value + within the given confidence level percentage. + + + The confidence level. Default is 0.95. + + A confidence interval for the estimated value. + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The test statistic. + The degrees of freedom for the test distribution. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The estimated value (θ). + The standard error of the estimation (SE). + The hypothesized value (θ'). + The degrees of freedom for the test distribution. + The alternative hypothesis (research hypothesis) to test. + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The data samples from which the test will be performed. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Creates a T-Test. + + + + + + Tests the null hypothesis that the population mean is equal to a specified value. + + + The sample's mean value. + The standard deviation for the samples. + The number of observations in the sample. + The constant to be compared with the samples. + The alternative hypothesis (research hypothesis) to test. + + + + + Computes the T-Test. + + + + + + Computes the T-test. + + + + + + Computes the T-test. + + + + + Update event. + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + The tail of the test distribution. + The test distribution. + + The p-value for the given statistic. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + The tail of the test distribution. + The test distribution. + + The test statistic which would generate the given p-value. + + + + + Gets the power analysis for the test, if available. + + + + + + Gets the standard error of the estimated value. + + + + + + Gets the estimated parameter value, such as the sample's mean value. + + + + + + Gets the hypothesized parameter value. + + + + + + Gets the 95% confidence interval for the . + + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Two-sample Kolmogorov-Smirnov (KS) test. + + + + + The Kolmogorov-Smirnov test tries to determine if two samples have been + drawn from the same probability distribution. The Kolmogorov-Smirnov test + has an interesting advantage in which it does not requires any assumptions + about the data. The distribution of the K-S test statistic does not depend + on which distribution is being tested. + + The K-S test has also the advantage of being an exact test (other tests, such as the + chi-square goodness-of-fit test depends on an adequate sample size). One disadvantage + is that it requires a fully defined distribution which should not have been estimated + from the data. If the parameters of the theoretical distribution have been estimated + from the data, the critical region of the K-S test will be no longer valid. + + The two-sample KS test is one of the most useful and general nonparametric methods for + comparing two samples, as it is sensitive to differences in both location and shape of + the empirical cumulative distribution functions of the two samples. + + This class uses an efficient and high-accuracy algorithm based on work by Richard + Simard (2010). Please see for more details. + + + References: + + + Wikipedia, The Free Encyclopedia. Kolmogorov-Smirnov Test. + Available at: http://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test + + NIST/SEMATECH e-Handbook of Statistical Methods. Kolmogorov-Smirnov Goodness-of-Fit Test. + Available at: http://www.itl.nist.gov/div898/handbook/eda/section3/eda35g.htm + + Richard Simard, Pierre L’Ecuyer. Computing the Two-Sided Kolmogorov-Smirnov Distribution. + Journal of Statistical Software. Volume VV, Issue II. Available at: + http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf + + Kirkman, T.W. (1996) Statistics to Use. Available at: + http://www.physics.csbsju.edu/stats/ + + + + + + In the following example, we will be creating a K-S test to verify + if two samples have been drawn from different populations. In this + example, we will first generate a number of samples from two different + distributions and then check if the K-S can indeed see the difference + between them: + + // Generate 15 points from a Normal distribution with mean 5 and sigma 2 + double[] sample1 = new NormalDistribution(mean: 5, stdDev: 1).Generate(25); + + // Generate 15 points from an uniform distribution from 0 to 10 + double[] sample2 = new UniformContinuousDistribution(a: 0, b: 10).Generate(25); + + // Now we can create a K-S test and test the unequal hypothesis: + var test = new TwoSampleKolmogorovSmirnovTest(sample1, sample2, + TwoSampleKolmogorovSmirnovTestHypothesis.SamplesDistributionsAreUnequal); + + bool significant = test.Significant; // outputs true + + + + The following example comes from the stats page of the College of Saint Benedict and Saint John's + University (Kirkman, 1996). It is a very interesting example as it shows a case in which a t-test + fails to see a difference between the samples because of the non-normality of the sample's + distributions. The Kolmogorov-Smirnov nonparametric test, on the other hand, succeeds. + + The example deals with the preference of bees between two nearby blooming trees in an empty field. + The experimenter has collected data measuring how much time does a bee spent near a particular + tree. The time starts to be measured when a bee first touches the tree, and is stopped when the bee + moves more than 1 meter far from it. The samples below represents the measured time, in seconds, of + the observed bees for each of the trees. + + + double[] redwell = + { + 23.4, 30.9, 18.8, 23.0, 21.4, 1, 24.6, 23.8, 24.1, 18.7, 16.3, 20.3, + 14.9, 35.4, 21.6, 21.2, 21.0, 15.0, 15.6, 24.0, 34.6, 40.9, 30.7, + 24.5, 16.6, 1, 21.7, 1, 23.6, 1, 25.7, 19.3, 46.9, 23.3, 21.8, 33.3, + 24.9, 24.4, 1, 19.8, 17.2, 21.5, 25.5, 23.3, 18.6, 22.0, 29.8, 33.3, + 1, 21.3, 18.6, 26.8, 19.4, 21.1, 21.2, 20.5, 19.8, 26.3, 39.3, 21.4, + 22.6, 1, 35.3, 7.0, 19.3, 21.3, 10.1, 20.2, 1, 36.2, 16.7, 21.1, 39.1, + 19.9, 32.1, 23.1, 21.8, 30.4, 19.62, 15.5 + }; + + double[] whitney = + { + 16.5, 1, 22.6, 25.3, 23.7, 1, 23.3, 23.9, 16.2, 23.0, 21.6, 10.8, 12.2, + 23.6, 10.1, 24.4, 16.4, 11.7, 17.7, 34.3, 24.3, 18.7, 27.5, 25.8, 22.5, + 14.2, 21.7, 1, 31.2, 13.8, 29.7, 23.1, 26.1, 25.1, 23.4, 21.7, 24.4, 13.2, + 22.1, 26.7, 22.7, 1, 18.2, 28.7, 29.1, 27.4, 22.3, 13.2, 22.5, 25.0, 1, + 6.6, 23.7, 23.5, 17.3, 24.6, 27.8, 29.7, 25.3, 19.9, 18.2, 26.2, 20.4, + 23.3, 26.7, 26.0, 1, 25.1, 33.1, 35.0, 25.3, 23.6, 23.2, 20.2, 24.7, 22.6, + 39.1, 26.5, 22.7 + }; + + // Create a t-test as a first attempt. + var t = new TwoSampleTTest(redwell, whitney); + + Console.WriteLine("T-Test"); + Console.WriteLine("Test p-value: " + t.PValue); // ~0.837 + Console.WriteLine("Significant? " + t.Significant); // false + + // Create a non-parametric Kolmogorov-Smirnov test + var ks = new TwoSampleKolmogorovSmirnovTest(redwell, whitney); + + Console.WriteLine("KS-Test"); + Console.WriteLine("Test p-value: " + ks.PValue); // ~0.038 + Console.WriteLine("Significant? " + ks.Significant); // true + + + + + + + + + + Creates a new Two-Sample Kolmogorov test. + + + The first sample. + The second sample. + + + + + Creates a new Two-Sample Kolmogorov test. + + + The first sample. + The second sample. + The alternative hypothesis (research hypothesis) to test. + + + + + Converts a given p-value to a test statistic. + + + The p-value. + + The test statistic which would generate the given p-value. + + + + + Converts a given test statistic to a p-value. + + + The value of the test statistic. + + The p-value for the given statistic. + + + + + Gets the alternative hypothesis under test. If the test is + , the null hypothesis can be rejected + in favor of this alternative hypothesis. + + + + + + Gets the first empirical distribution being tested. + + + + + + Gets the second empirical distribution being tested. + + + + + + Wald's Test using the Normal distribution. + + + + + The Wald test is a parametric statistical test named after Abraham Wald + with a great variety of uses. Whenever a relationship within or between + data items can be expressed as a statistical model with parameters to be + estimated from a sample, the Wald test can be used to test the true value + of the parameter based on the sample estimate. + + + Under the Wald statistical test, the maximum likelihood estimate of the + parameter(s) of interest θ is compared with the proposed value θ', with + the assumption that the difference between the two will be approximately + normal. + + + References: + + + Wikipedia, The Free Encyclopedia. Wald Test. Available on: + http://en.wikipedia.org/wiki/Wald_test + + + + + + + + + + + Constructs a Wald's test. + + + The test statistic, as given by (θ-θ')/SE. + + + + + Constructs a Wald's test. + + + The estimated value (θ). + The hypothesized value (θ'). + The standard error of the estimation (SE). + + + + + Hypothesis type + + + + The type of the hypothesis being made expresses the way in + which a value of a parameter may deviate from that assumed + in the null hypothesis. It can either state that a value is + higher, lower or simply different than the one assumed under + the null hypothesis. + + + + + + The test considers the two tails from a probability distribution. + + + + The two-tailed test is a statistical test in which a given statistical + hypothesis, H0 (the null hypothesis), will be rejected when the value of + the test statistic is either sufficiently small or sufficiently large. + + + + + + The test considers the upper tail from a probability distribution. + + + + The one-tailed, upper tail test is a statistical test in which a given + statistical hypothesis, H0 (the null hypothesis), will be rejected when + the value of the test statistic is sufficiently large. + + + + + + The test considers the lower tail from a probability distribution. + + + + The one-tailed, lower tail test is a statistical test in which a given + statistical hypothesis, H0 (the null hypothesis), will be rejected when + the value of the test statistic is sufficiently small. + + + + + + Common test Hypothesis for one sample tests, such + as and . + + + + + + Tests if the mean (or the parameter under test) + is significantly different from the hypothesized + value, without considering the direction for this + difference. + + + + + + Tests if the mean (or the parameter under test) + is significantly greater (larger, bigger) than + the hypothesized value. + + + + + + Tests if the mean (or the parameter under test) + is significantly smaller (lesser) than the + hypothesized value. + + + + + + Common test Hypothesis for two sample tests, such as + and . + + + + + + Tests if the mean (or the parameter under test) of + the first sample is different from the mean of the + second sample, without considering any particular + direction for the difference. + + + + + + Tests if the mean (or the parameter under test) of + the first sample is greater (larger, bigger) than + the mean of the second sample. + + + + + + Tests if the mean (or the parameter under test) of + the first sample is smaller (lesser) than the mean + of the second sample. + + + + + + Hypothesis for the one-sample Kolmogorov-Smirnov test. + + + + + + Tests whether the sample's distribution is + different from the reference distribution. + + + + + + Tests whether the distribution of one sample is greater + than the reference distribution, in a statistical sense. + + + + + + Tests whether the distribution of one sample is smaller + than the reference distribution, in a statistical sense. + + + + + + Test hypothesis for the two-sample Kolmogorov-Smirnov tests. + + + + + + Tests whether samples have been drawn + from significantly unequal distributions. + + + + + + Tests whether the distribution of one sample is + greater than the other, in a statistical sense. + + + + + + Tests whether the distribution of one sample is + smaller than the other, in a statistical sense. + + + + + + Sample weight types. + + + + + + Weights should be ignored. + + + + + + Weights are integers representing how many times a sample should repeat itself. + + + + + + Weights are fractional numbers that sum up to one. + + + + + + If weights sum up to one, they are handled as fractional + weights. If they sum to a whole number, they are handled as + integer repetition counts. + + + + + + Scatter Plot class. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + + Gets the integer label associated with this class. + + + + + + Gets the indices of all points of this class. + + + + + + Gets all X values of this class. + + + + + + Gets all Y values of this class. + + + + + + Gets or sets the class' text label. + + + + + + Collection of Histogram bins. This class cannot be instantiated. + + + + + + Searches for a bin containing the specified value. + + + The value to search for. + + The histogram bin containing the searched value. + + + + + Attempts to find the index of the bin containing the specified value. + + + The value to search for. + + The index of the bin containing the specified value. + + + + + Histogram Bin + + + + + A "bin" is a container, where each element stores the total number of observations of a sample + whose values lie within a given range. A histogram of a sample consists of a list of such bins + whose range does not overlap with each other; or in other words, bins that are mutually exclusive. + + Unless is true, the ranges of all bins i are + defined as Edge[i] <= x < Edge[i+1]. Otherwise, the last bin will have an inclusive upper + bound (i.e. will be defined as Edge[i] <= x <= Edge[i+1]. + + + + + + Gets whether the Histogram Bin contains the given value. + + + + + + Gets the actual range of data this bin represents. + + + + + + Gets the Width (range) for this histogram bin. + + + + + + Gets the Value (number of occurrences of a variable in a range) + for this histogram bin. + + + + + + Optimum histogram bin size adjustment rule. + + + + + + Does not attempts to automatically calculate + an optimum bin width and preserves the current + histogram organization. + + + + + + Calculates the optimum bin width as 3.49σN, where σ + is the sample standard deviation and N is the number + of samples. + + + Scott, D. 1979. On optimal and data-based histograms. Biometrika, 66:605-610. + + + + + + Calculates the optimum bin width as ceiling( log2(N) + 1 )m + where N is the number of samples. The rule implicitly bases + the bin sizes on the range of the data, and can perform poorly + if n < 30. + + + + + + Calculates the optimum bin width as the square root of the + number of samples. This is the same rule used by Microsoft (c) + Excel and many others. + + + + + + Histogram. + + + + + In a more general mathematical sense, a histogram is a mapping Mi + that counts the number of observations that fall into various + disjoint categories (known as bins). + + This class represents a Histogram mapping of Discrete or Continuous + data. To use it as a discrete mapping, pass a bin size (length) of 1. + To use it as a continuous mapping, pass any real number instead. + + Currently, only a constant bin width is supported. + + + + + + Constructs an empty histogram + + + + + + Constructs an empty histogram + + + The title of this histogram. + + + + + Constructs an empty histogram + + + The values to be binned in the histogram. + + + + + Constructs an empty histogram + + + The title of this histogram. + The values to be binned in the histogram. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired width for the histogram's bins. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired number of histogram's bins. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired number of histogram's bins. + Whether to include an extra upper bin going to infinity. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + The desired number of histogram's bins. + The desired width for the histogram's bins. + + + + + Computes (populates) an Histogram mapping with values from a sample. + + + The values to be binned in the histogram. + + + + + Initializes the histogram's bins. + + + + + + Sets the histogram's bin ranges (edges). + + + + + + Actually computes the histogram. + + + + + + Computes the optimum number of bins based on a . + + + + + + Integer array implicit conversion. + + + + + + Converts this histogram into an integer array representation. + + + + + + Subtracts one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be subtracted. + + A new containing the result of this operation. + + + + + Subtracts one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be subtracted. + + A new containing the result of this operation. + + + + + Adds one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be added. + + A new containing the result of this operation. + + + + + Adds one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be added. + + A new containing the result of this operation. + + + + + Multiplies one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The histogram whose bin values will be multiplied. + + A new containing the result of this operation. + + + + + Multiplies one histogram from the other, storing + results in a new histogram, without changing the + current instance. + + + The value to be multiplied. + + A new containing the result of this operation. + + + + + Adds a value to each histogram bin. + + + The value to be added. + + A new containing the result of this operation. + + + + + Subtracts a value to each histogram bin. + + + The value to be subtracted. + + A new containing the result of this operation. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets the Bin values of this Histogram. + + + Bin index. + + The number of hits of the selected bin. + + + + + Gets the name for this Histogram. + + + + + + Gets the Bin values for this Histogram. + + + + + + Gets the Range of the values in this Histogram. + + + + + + Gets the edges of each bin in this Histogram. + + + + + + Gets the collection of bins of this Histogram. + + + + + + Gets or sets whether this histogram represents a cumulative distribution. + + + + + + Gets or sets the bin size auto adjustment rule + to be used when computing this histogram from + new data. Default is . + + + The bin size auto adjustment rule. + + + + + Gets or sets a value indicating whether the last bin + should have an inclusive upper bound. Default is true. + + + + If set to false, the last bin's range will be defined + as Edge[i] <= x < Edge[i+1]. If set to true, the + last bin will have an inclusive upper bound and be defined as + Edge[i] <= x <= Edge[i+1] instead. + + + + true if the last bin should have an inclusive upper bound; + false otherwise. + + + + + + Scatter Plot. + + + + + + Constructs an empty Scatter plot. + + + + + + Constructs an empty Scatter plot with given title. + + + Scatter plot title. + + + + + Constructs an empty scatter plot with + given title and axis names. + + + Scatter Plot title. + Title for the x-axis. + Title for the y-axis. + + + + + Constructs an empty Scatter Plot with + given title and axis names. + + + Scatter Plot title. + Title for the x-axis. + Title for the y-axis. + Title for the labels. + + + + + Computes the scatter plot. + + + Array of values. + + + + + Computes the scatter plot. + + + Array of X values. + Array of corresponding Y values. + + + + + Computes the scatter plot. + + + Array of X values. + Array of corresponding Y values. + Array of integer labels defining a class for each (x,y) pair. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + Array of integer labels defining a class for each (x,y) pair. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + + + + + Computes the scatter plot. + + + Array of { x,y } values. + Array of integer labels defining a class for each (x,y) pair. + + + + + Gets the title of the scatter plot. + + + + + + Gets the name of the X-axis. + + + + + + Gets the name of the Y-axis. + + + + + + Gets the name of the label axis. + + + + + + Gets the values associated with the X-axis. + + + + + + Gets the corresponding Y values associated with each X. + + + + + + Gets the label of each (x,y) pair. + + + + + + Gets an integer array containing the integer labels + associated with each of the classes in the scatter plot. + + + + + + Gets the class labels for each of the classes in the plot. + + + + + + Gets a collection containing information about + each of the classes presented in the scatter plot. + + + +
+
diff --git a/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/Accord.Video.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/Accord.Video.3.0.2.nupkg new file mode 100644 index 0000000000..7dcdd4f8a Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/Accord.Video.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net35/Accord.Video.dll b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net35/Accord.Video.dll new file mode 100644 index 0000000000..8fe0ab504 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net35/Accord.Video.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net35/Accord.Video.xml b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net35/Accord.Video.xml new file mode 100644 index 0000000000..419ec494d --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net35/Accord.Video.xml @@ -0,0 +1,1190 @@ + + + + Accord.Video + + + + + Proxy video source for asynchronous processing of another nested video source. + + + The class represents a simple proxy, which wraps the specified + with the aim of asynchronous processing of received video frames. The class intercepts + event from the nested video source and fires it to clients from its own thread, which is different from the thread + used by nested video source for video acquisition. This allows clients to perform processing of video frames + without blocking video acquisition thread, which continue to run and acquire next video frame while current is still + processed. + + For example, let’s suppose that it takes 100 ms for the nested video source to acquire single frame, so the original + frame rate is 10 frames per second. Also let’s assume that we have an image processing routine, which also takes + 100 ms to process a single frame. If the acquisition and processing are done sequentially, then resulting + frame rate will drop to 5 frames per second. However, if doing both in parallel, then there is a good chance to + keep resulting frame rate equal (or close) to the original frame rate. + + The class provides a bonus side effect - easer debugging of image processing routines, which are put into + event handler. In many cases video source classes fire their + event from a try/catch block, which makes it very hard to spot error made in user's code - the catch block simply + hides exception raised in user’s code. The does not have any try/catch blocks around + firing of event, so always user gets exception in the case it comes from his code. At the same time + nested video source is not affected by the user's exception, since it runs in different thread. + + Sample usage: + + // usage of AsyncVideoSource is the same as usage of any + // other video source class, so code change is very little + + // create nested video source, for example JPEGStream + JPEGStream stream = new JPEGStream( "some url" ); + // create async video source + AsyncVideoSource asyncSource = new AsyncVideoSource( stream ); + // set NewFrame event handler + asyncSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + asyncSource.Start( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Video source interface. + + + The interface describes common methods for different type of video sources. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for video source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + + + + New frame event. + + + This event is used to notify clients about new available video frame. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, but video source is responsible for + disposing its own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + The meaning of the property depends on particular video source. + Depending on video source it may be a file name, URL or any other string + describing the video source. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Initializes a new instance of the class. + + + Nested video source which is the target for asynchronous processing. + + + + + Initializes a new instance of the class. + + + Nested video source which is the target for asynchronous processing. + Specifies if the object should skip frames from the nested video source + in the case if it is still busy processing the previous video frame. + + + + + Start video source. + + + Starts the nested video source and returns execution to caller. This object creates + an extra thread which is used to fire events, so the image processing could be + done on another thread without blocking video acquisition thread. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for video source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops nested video source by calling its method. + See documentation of the particular video source for additional details. + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + This event is fired from a different thread other than the video acquisition thread created + by . This allows nested video frame to continue acquisition of the next + video frame while clients perform processing of the current video frame. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + Unlike event, this event is simply redirected to the corresponding + event of the , so it is fired from the thread of the nested video source. + + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + Unlike event, this event is simply redirected to the corresponding + event of the , so it is fired from the thread of the nested video source. + + + + + + Nested video source which is the target for asynchronous processing. + + + The property is set through the class constructor. + + All calls to this object are actually redirected to the nested video source. The only + exception is the event, which is handled differently. This object gets + event from the nested class and then fires another + event, but from a different thread. + + + + + + Specifies if the object should skip frames from the nested video source when it is busy. + + + Specifies if the object should skip frames from the nested video source + in the case if it is still busy processing the previous video frame in its own thread. + + Default value is set to . + + + + + Video source string. + + + The property is redirected to the corresponding property of , + so check its documentation to find what it means. + + + + + Received frames count. + + + Number of frames the nested video source received from + the moment of the last access to the property. + + + + + + Received bytes count. + + + Number of bytes the nested video source received from + the moment of the last access to the property. + + + + + Processed frames count. + + + The property keeps the number of processed video frames since the last access to this property. + + + The value of this property equals to in most cases if the + property is set to - every received frame gets processed + sooner or later. However, if the property is set to , + then value of this property may be lower than the value of the property, which + means that nested video source performs acquisition faster than client perform processing of the received frame + and some frame are skipped from processing. + + + + + + State of the video source. + + + Current state of the video source object - running or not. + + + + + Some internal utilities for handling arrays. + + + + + + Check if the array contains needle at specified position. + + + Source array to check for needle. + Needle we are searching for. + Start index in source array. + + Returns true if the source array contains the needle at + the specified index. Otherwise it returns false. + + + + + Find subarray in the source array. + + + Source array to search for needle. + Needle we are searching for. + Start index in source array. + Number of bytes in source array, where the needle is searched for. + + Returns starting position of the needle if it was found or -1 otherwise. + + + + + Video related exception. + + + The exception is thrown in the case of some video related issues, like + failure of initializing codec, compression, etc. + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + JPEG video source. + + + The video source constantly downloads JPEG files from the specified URL. + + Sample usage: + + // create JPEG video source + JPEGStream stream = new JPEGStream( "some url" ); + // set NewFrame event handler + stream.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + stream.Start( ); + // ... + // signal to stop + stream.SignalToStop( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + Some cameras produce HTTP header, which does not conform strictly to + standard, what leads to .NET exception. To avoid this exception the useUnsafeHeaderParsing + configuration option of httpWebRequest should be set, what may be done using application + configuration file. + + <configuration> + <system.net> + <settings> + <httpWebRequest useUnsafeHeaderParsing="true" /> + </settings> + </system.net> + </configuration> + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + URL, which provides JPEG files. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Use or not separate connection group. + + + The property indicates to open web request in separate connection group. + + + + + Use or not caching. + + + If the property is set to true, then a fake random parameter will be added + to URL to prevent caching. It's required for clients, who are behind proxy server. + + + + + Frame interval. + + + The property sets the interval in milliseconds betwen frames. If the property is + set to 100, then the desired frame rate will be 10 frames per second. Default value is 0 - + get new frames as fast as possible. + + + + + Video source. + + + URL, which provides JPEG files. + + + + + Login value. + + + Login required to access video source. + + + + + Password value. + + + Password required to access video source. + + + + + Gets or sets proxy information for the request. + + + The local computer or application config file may specify that a default + proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy + property overridea the local computer or application config file and the instance will use + the proxy settings specified. If no proxy is specified in a config file + and the Proxy property is unspecified, the request uses the proxy settings + inherited from Internet Explorer on the local computer. If there are no proxy settings + in Internet Explorer, the request is sent directly to the server. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Request timeout value. + + + The property sets timeout value in milliseconds for web requests. + + Default value is set 10000 milliseconds. + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Force using of basic authentication when connecting to the video source. + + + For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials + does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be + present on connection request). So this property allows to force basic authentication by adding required HTTP headers when + request is sent. + + Default value is set to . + + + + + + MJPEG video source. + + + The video source downloads JPEG images from the specified URL, which represents + MJPEG stream. + + Sample usage: + + // create MJPEG video source + MJPEGStream stream = new MJPEGStream( "some url" ); + // set event handlers + stream.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + stream.Start( ); + // ... + + + Some cameras produce HTTP header, which does not conform strictly to + standard, what leads to .NET exception. To avoid this exception the useUnsafeHeaderParsing + configuration option of httpWebRequest should be set, what may be done using application + configuration file. + + <configuration> + <system.net> + <settings> + <httpWebRequest useUnsafeHeaderParsing="true" /> + </settings> + </system.net> + </configuration> + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + URL, which provides MJPEG stream. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Use or not separate connection group. + + + The property indicates to open web request in separate connection group. + + + + + Video source. + + + URL, which provides MJPEG stream. + + + + + Login value. + + + Login required to access video source. + + + + + Password value. + + + Password required to access video source. + + + + + Gets or sets proxy information for the request. + + + The local computer or application config file may specify that a default + proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy + property overridea the local computer or application config file and the instance will use + the proxy settings specified. If no proxy is specified in a config file + and the Proxy property is unspecified, the request uses the proxy settings + inherited from Internet Explorer on the local computer. If there are no proxy settings + in Internet Explorer, the request is sent directly to the server. + + + + + + User agent to specify in HTTP request header. + + + Some IP cameras check what is the requesting user agent and depending + on it they provide video in different formats or do not provide it at all. The property + sets the value of user agent string, which is sent to camera in request header. + + + Default value is set to "Mozilla/5.0". If the value is set to , + the user agent string is not sent in request header. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Request timeout value. + + + The property sets timeout value in milliseconds for web requests. + Default value is 10000 milliseconds. + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Force using of basic authentication when connecting to the video source. + + + For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials + does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be + present on connection request). So this property allows to force basic authentication by adding required HTTP headers when + request is sent. + + Default value is set to . + + + + + + Screen capture video source. + + + The video source constantly captures the desktop screen. + + Sample usage: + + // get entire desktop area size + Rectangle screenArea = Rectangle.Empty; + foreach ( System.Windows.Forms.Screen screen in + System.Windows.Forms.Screen.AllScreens ) + { + screenArea = Rectangle.Union( screenArea, screen.Bounds ); + } + + // create screen capture video source + ScreenCaptureStream stream = new ScreenCaptureStream( screenArea ); + + // set NewFrame event handler + stream.NewFrame += new NewFrameEventHandler( video_NewFrame ); + + // start the video source + stream.Start( ); + + // ... + // signal to stop + stream.SignalToStop( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + Screen's rectangle to capture (the rectangle may cover multiple displays). + + + + + Initializes a new instance of the class. + + + Screen's rectangle to capture (the rectangle may cover multiple displays). + Time interval between making screen shots, ms. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + + + + Gets or sets the screen capture region. + + + This property specifies which region (rectangle) of the screen to capture. It may cover multiple displays + if those are available in the system. + + The property must be set before starting video source to have any effect. + + + + + + Time interval between making screen shots, ms. + + + The property specifies time interval in milliseconds between consequent screen captures. + Expected frame rate of the stream should be approximately 1000/FrameInteval. + + If the property is set to 0, then the stream will capture screen as fast as the system allows. + + Default value is set to 100. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + The property is not implemented for this video source and always returns 0. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Delegate for new frame event handler. + + + Sender object. + Event arguments. + + + + + Delegate for video source error event handler. + + + Sender object. + Event arguments. + + + + + Delegate for playing finished event handler. + + + Sender object. + Reason of finishing video playing. + + + + + Reason of finishing video playing. + + + When video source class fire the event, they + need to specify reason of finishing video playing. For example, it may be end of stream reached. + + + + + Video playing has finished because it end was reached. + + + + + Video playing has finished because it was stopped by user. + + + + + Video playing has finished because the device was lost (unplugged). + + + + + Video playing has finished because of some error happened the video source (camera, stream, file, etc.). + A error reporting event usually is fired to provide error information. + + + + + Arguments for new frame event from video source. + + + + + + Initializes a new instance of the class. + + + New frame. + + + + + New frame from video source. + + + + + + Arguments for video source error event from video source. + + + + + + Initializes a new instance of the class. + + + Error description. + + + + + Video source error description. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net40/Accord.Video.dll b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net40/Accord.Video.dll new file mode 100644 index 0000000000..7aa334573 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net40/Accord.Video.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net40/Accord.Video.xml b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net40/Accord.Video.xml new file mode 100644 index 0000000000..419ec494d --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net40/Accord.Video.xml @@ -0,0 +1,1190 @@ + + + + Accord.Video + + + + + Proxy video source for asynchronous processing of another nested video source. + + + The class represents a simple proxy, which wraps the specified + with the aim of asynchronous processing of received video frames. The class intercepts + event from the nested video source and fires it to clients from its own thread, which is different from the thread + used by nested video source for video acquisition. This allows clients to perform processing of video frames + without blocking video acquisition thread, which continue to run and acquire next video frame while current is still + processed. + + For example, let’s suppose that it takes 100 ms for the nested video source to acquire single frame, so the original + frame rate is 10 frames per second. Also let’s assume that we have an image processing routine, which also takes + 100 ms to process a single frame. If the acquisition and processing are done sequentially, then resulting + frame rate will drop to 5 frames per second. However, if doing both in parallel, then there is a good chance to + keep resulting frame rate equal (or close) to the original frame rate. + + The class provides a bonus side effect - easer debugging of image processing routines, which are put into + event handler. In many cases video source classes fire their + event from a try/catch block, which makes it very hard to spot error made in user's code - the catch block simply + hides exception raised in user’s code. The does not have any try/catch blocks around + firing of event, so always user gets exception in the case it comes from his code. At the same time + nested video source is not affected by the user's exception, since it runs in different thread. + + Sample usage: + + // usage of AsyncVideoSource is the same as usage of any + // other video source class, so code change is very little + + // create nested video source, for example JPEGStream + JPEGStream stream = new JPEGStream( "some url" ); + // create async video source + AsyncVideoSource asyncSource = new AsyncVideoSource( stream ); + // set NewFrame event handler + asyncSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + asyncSource.Start( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Video source interface. + + + The interface describes common methods for different type of video sources. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for video source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + + + + New frame event. + + + This event is used to notify clients about new available video frame. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, but video source is responsible for + disposing its own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + The meaning of the property depends on particular video source. + Depending on video source it may be a file name, URL or any other string + describing the video source. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Initializes a new instance of the class. + + + Nested video source which is the target for asynchronous processing. + + + + + Initializes a new instance of the class. + + + Nested video source which is the target for asynchronous processing. + Specifies if the object should skip frames from the nested video source + in the case if it is still busy processing the previous video frame. + + + + + Start video source. + + + Starts the nested video source and returns execution to caller. This object creates + an extra thread which is used to fire events, so the image processing could be + done on another thread without blocking video acquisition thread. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for video source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops nested video source by calling its method. + See documentation of the particular video source for additional details. + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + This event is fired from a different thread other than the video acquisition thread created + by . This allows nested video frame to continue acquisition of the next + video frame while clients perform processing of the current video frame. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + Unlike event, this event is simply redirected to the corresponding + event of the , so it is fired from the thread of the nested video source. + + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + Unlike event, this event is simply redirected to the corresponding + event of the , so it is fired from the thread of the nested video source. + + + + + + Nested video source which is the target for asynchronous processing. + + + The property is set through the class constructor. + + All calls to this object are actually redirected to the nested video source. The only + exception is the event, which is handled differently. This object gets + event from the nested class and then fires another + event, but from a different thread. + + + + + + Specifies if the object should skip frames from the nested video source when it is busy. + + + Specifies if the object should skip frames from the nested video source + in the case if it is still busy processing the previous video frame in its own thread. + + Default value is set to . + + + + + Video source string. + + + The property is redirected to the corresponding property of , + so check its documentation to find what it means. + + + + + Received frames count. + + + Number of frames the nested video source received from + the moment of the last access to the property. + + + + + + Received bytes count. + + + Number of bytes the nested video source received from + the moment of the last access to the property. + + + + + Processed frames count. + + + The property keeps the number of processed video frames since the last access to this property. + + + The value of this property equals to in most cases if the + property is set to - every received frame gets processed + sooner or later. However, if the property is set to , + then value of this property may be lower than the value of the property, which + means that nested video source performs acquisition faster than client perform processing of the received frame + and some frame are skipped from processing. + + + + + + State of the video source. + + + Current state of the video source object - running or not. + + + + + Some internal utilities for handling arrays. + + + + + + Check if the array contains needle at specified position. + + + Source array to check for needle. + Needle we are searching for. + Start index in source array. + + Returns true if the source array contains the needle at + the specified index. Otherwise it returns false. + + + + + Find subarray in the source array. + + + Source array to search for needle. + Needle we are searching for. + Start index in source array. + Number of bytes in source array, where the needle is searched for. + + Returns starting position of the needle if it was found or -1 otherwise. + + + + + Video related exception. + + + The exception is thrown in the case of some video related issues, like + failure of initializing codec, compression, etc. + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + JPEG video source. + + + The video source constantly downloads JPEG files from the specified URL. + + Sample usage: + + // create JPEG video source + JPEGStream stream = new JPEGStream( "some url" ); + // set NewFrame event handler + stream.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + stream.Start( ); + // ... + // signal to stop + stream.SignalToStop( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + Some cameras produce HTTP header, which does not conform strictly to + standard, what leads to .NET exception. To avoid this exception the useUnsafeHeaderParsing + configuration option of httpWebRequest should be set, what may be done using application + configuration file. + + <configuration> + <system.net> + <settings> + <httpWebRequest useUnsafeHeaderParsing="true" /> + </settings> + </system.net> + </configuration> + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + URL, which provides JPEG files. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Use or not separate connection group. + + + The property indicates to open web request in separate connection group. + + + + + Use or not caching. + + + If the property is set to true, then a fake random parameter will be added + to URL to prevent caching. It's required for clients, who are behind proxy server. + + + + + Frame interval. + + + The property sets the interval in milliseconds betwen frames. If the property is + set to 100, then the desired frame rate will be 10 frames per second. Default value is 0 - + get new frames as fast as possible. + + + + + Video source. + + + URL, which provides JPEG files. + + + + + Login value. + + + Login required to access video source. + + + + + Password value. + + + Password required to access video source. + + + + + Gets or sets proxy information for the request. + + + The local computer or application config file may specify that a default + proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy + property overridea the local computer or application config file and the instance will use + the proxy settings specified. If no proxy is specified in a config file + and the Proxy property is unspecified, the request uses the proxy settings + inherited from Internet Explorer on the local computer. If there are no proxy settings + in Internet Explorer, the request is sent directly to the server. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Request timeout value. + + + The property sets timeout value in milliseconds for web requests. + + Default value is set 10000 milliseconds. + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Force using of basic authentication when connecting to the video source. + + + For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials + does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be + present on connection request). So this property allows to force basic authentication by adding required HTTP headers when + request is sent. + + Default value is set to . + + + + + + MJPEG video source. + + + The video source downloads JPEG images from the specified URL, which represents + MJPEG stream. + + Sample usage: + + // create MJPEG video source + MJPEGStream stream = new MJPEGStream( "some url" ); + // set event handlers + stream.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + stream.Start( ); + // ... + + + Some cameras produce HTTP header, which does not conform strictly to + standard, what leads to .NET exception. To avoid this exception the useUnsafeHeaderParsing + configuration option of httpWebRequest should be set, what may be done using application + configuration file. + + <configuration> + <system.net> + <settings> + <httpWebRequest useUnsafeHeaderParsing="true" /> + </settings> + </system.net> + </configuration> + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + URL, which provides MJPEG stream. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Use or not separate connection group. + + + The property indicates to open web request in separate connection group. + + + + + Video source. + + + URL, which provides MJPEG stream. + + + + + Login value. + + + Login required to access video source. + + + + + Password value. + + + Password required to access video source. + + + + + Gets or sets proxy information for the request. + + + The local computer or application config file may specify that a default + proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy + property overridea the local computer or application config file and the instance will use + the proxy settings specified. If no proxy is specified in a config file + and the Proxy property is unspecified, the request uses the proxy settings + inherited from Internet Explorer on the local computer. If there are no proxy settings + in Internet Explorer, the request is sent directly to the server. + + + + + + User agent to specify in HTTP request header. + + + Some IP cameras check what is the requesting user agent and depending + on it they provide video in different formats or do not provide it at all. The property + sets the value of user agent string, which is sent to camera in request header. + + + Default value is set to "Mozilla/5.0". If the value is set to , + the user agent string is not sent in request header. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Request timeout value. + + + The property sets timeout value in milliseconds for web requests. + Default value is 10000 milliseconds. + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Force using of basic authentication when connecting to the video source. + + + For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials + does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be + present on connection request). So this property allows to force basic authentication by adding required HTTP headers when + request is sent. + + Default value is set to . + + + + + + Screen capture video source. + + + The video source constantly captures the desktop screen. + + Sample usage: + + // get entire desktop area size + Rectangle screenArea = Rectangle.Empty; + foreach ( System.Windows.Forms.Screen screen in + System.Windows.Forms.Screen.AllScreens ) + { + screenArea = Rectangle.Union( screenArea, screen.Bounds ); + } + + // create screen capture video source + ScreenCaptureStream stream = new ScreenCaptureStream( screenArea ); + + // set NewFrame event handler + stream.NewFrame += new NewFrameEventHandler( video_NewFrame ); + + // start the video source + stream.Start( ); + + // ... + // signal to stop + stream.SignalToStop( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + Screen's rectangle to capture (the rectangle may cover multiple displays). + + + + + Initializes a new instance of the class. + + + Screen's rectangle to capture (the rectangle may cover multiple displays). + Time interval between making screen shots, ms. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + + + + Gets or sets the screen capture region. + + + This property specifies which region (rectangle) of the screen to capture. It may cover multiple displays + if those are available in the system. + + The property must be set before starting video source to have any effect. + + + + + + Time interval between making screen shots, ms. + + + The property specifies time interval in milliseconds between consequent screen captures. + Expected frame rate of the stream should be approximately 1000/FrameInteval. + + If the property is set to 0, then the stream will capture screen as fast as the system allows. + + Default value is set to 100. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + The property is not implemented for this video source and always returns 0. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Delegate for new frame event handler. + + + Sender object. + Event arguments. + + + + + Delegate for video source error event handler. + + + Sender object. + Event arguments. + + + + + Delegate for playing finished event handler. + + + Sender object. + Reason of finishing video playing. + + + + + Reason of finishing video playing. + + + When video source class fire the event, they + need to specify reason of finishing video playing. For example, it may be end of stream reached. + + + + + Video playing has finished because it end was reached. + + + + + Video playing has finished because it was stopped by user. + + + + + Video playing has finished because the device was lost (unplugged). + + + + + Video playing has finished because of some error happened the video source (camera, stream, file, etc.). + A error reporting event usually is fired to provide error information. + + + + + Arguments for new frame event from video source. + + + + + + Initializes a new instance of the class. + + + New frame. + + + + + New frame from video source. + + + + + + Arguments for video source error event from video source. + + + + + + Initializes a new instance of the class. + + + Error description. + + + + + Video source error description. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net45/Accord.Video.dll b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net45/Accord.Video.dll new file mode 100644 index 0000000000..9a989e44a Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net45/Accord.Video.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net45/Accord.Video.xml b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net45/Accord.Video.xml new file mode 100644 index 0000000000..419ec494d --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.3.0.2/lib/net45/Accord.Video.xml @@ -0,0 +1,1190 @@ + + + + Accord.Video + + + + + Proxy video source for asynchronous processing of another nested video source. + + + The class represents a simple proxy, which wraps the specified + with the aim of asynchronous processing of received video frames. The class intercepts + event from the nested video source and fires it to clients from its own thread, which is different from the thread + used by nested video source for video acquisition. This allows clients to perform processing of video frames + without blocking video acquisition thread, which continue to run and acquire next video frame while current is still + processed. + + For example, let’s suppose that it takes 100 ms for the nested video source to acquire single frame, so the original + frame rate is 10 frames per second. Also let’s assume that we have an image processing routine, which also takes + 100 ms to process a single frame. If the acquisition and processing are done sequentially, then resulting + frame rate will drop to 5 frames per second. However, if doing both in parallel, then there is a good chance to + keep resulting frame rate equal (or close) to the original frame rate. + + The class provides a bonus side effect - easer debugging of image processing routines, which are put into + event handler. In many cases video source classes fire their + event from a try/catch block, which makes it very hard to spot error made in user's code - the catch block simply + hides exception raised in user’s code. The does not have any try/catch blocks around + firing of event, so always user gets exception in the case it comes from his code. At the same time + nested video source is not affected by the user's exception, since it runs in different thread. + + Sample usage: + + // usage of AsyncVideoSource is the same as usage of any + // other video source class, so code change is very little + + // create nested video source, for example JPEGStream + JPEGStream stream = new JPEGStream( "some url" ); + // create async video source + AsyncVideoSource asyncSource = new AsyncVideoSource( stream ); + // set NewFrame event handler + asyncSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + asyncSource.Start( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Video source interface. + + + The interface describes common methods for different type of video sources. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for video source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + + + + New frame event. + + + This event is used to notify clients about new available video frame. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, but video source is responsible for + disposing its own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + The meaning of the property depends on particular video source. + Depending on video source it may be a file name, URL or any other string + describing the video source. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Initializes a new instance of the class. + + + Nested video source which is the target for asynchronous processing. + + + + + Initializes a new instance of the class. + + + Nested video source which is the target for asynchronous processing. + Specifies if the object should skip frames from the nested video source + in the case if it is still busy processing the previous video frame. + + + + + Start video source. + + + Starts the nested video source and returns execution to caller. This object creates + an extra thread which is used to fire events, so the image processing could be + done on another thread without blocking video acquisition thread. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for video source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops nested video source by calling its method. + See documentation of the particular video source for additional details. + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + This event is fired from a different thread other than the video acquisition thread created + by . This allows nested video frame to continue acquisition of the next + video frame while clients perform processing of the current video frame. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + Unlike event, this event is simply redirected to the corresponding + event of the , so it is fired from the thread of the nested video source. + + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + Unlike event, this event is simply redirected to the corresponding + event of the , so it is fired from the thread of the nested video source. + + + + + + Nested video source which is the target for asynchronous processing. + + + The property is set through the class constructor. + + All calls to this object are actually redirected to the nested video source. The only + exception is the event, which is handled differently. This object gets + event from the nested class and then fires another + event, but from a different thread. + + + + + + Specifies if the object should skip frames from the nested video source when it is busy. + + + Specifies if the object should skip frames from the nested video source + in the case if it is still busy processing the previous video frame in its own thread. + + Default value is set to . + + + + + Video source string. + + + The property is redirected to the corresponding property of , + so check its documentation to find what it means. + + + + + Received frames count. + + + Number of frames the nested video source received from + the moment of the last access to the property. + + + + + + Received bytes count. + + + Number of bytes the nested video source received from + the moment of the last access to the property. + + + + + Processed frames count. + + + The property keeps the number of processed video frames since the last access to this property. + + + The value of this property equals to in most cases if the + property is set to - every received frame gets processed + sooner or later. However, if the property is set to , + then value of this property may be lower than the value of the property, which + means that nested video source performs acquisition faster than client perform processing of the received frame + and some frame are skipped from processing. + + + + + + State of the video source. + + + Current state of the video source object - running or not. + + + + + Some internal utilities for handling arrays. + + + + + + Check if the array contains needle at specified position. + + + Source array to check for needle. + Needle we are searching for. + Start index in source array. + + Returns true if the source array contains the needle at + the specified index. Otherwise it returns false. + + + + + Find subarray in the source array. + + + Source array to search for needle. + Needle we are searching for. + Start index in source array. + Number of bytes in source array, where the needle is searched for. + + Returns starting position of the needle if it was found or -1 otherwise. + + + + + Video related exception. + + + The exception is thrown in the case of some video related issues, like + failure of initializing codec, compression, etc. + + + + + Initializes a new instance of the class. + + + Exception's message. + + + + + JPEG video source. + + + The video source constantly downloads JPEG files from the specified URL. + + Sample usage: + + // create JPEG video source + JPEGStream stream = new JPEGStream( "some url" ); + // set NewFrame event handler + stream.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + stream.Start( ); + // ... + // signal to stop + stream.SignalToStop( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + Some cameras produce HTTP header, which does not conform strictly to + standard, what leads to .NET exception. To avoid this exception the useUnsafeHeaderParsing + configuration option of httpWebRequest should be set, what may be done using application + configuration file. + + <configuration> + <system.net> + <settings> + <httpWebRequest useUnsafeHeaderParsing="true" /> + </settings> + </system.net> + </configuration> + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + URL, which provides JPEG files. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Use or not separate connection group. + + + The property indicates to open web request in separate connection group. + + + + + Use or not caching. + + + If the property is set to true, then a fake random parameter will be added + to URL to prevent caching. It's required for clients, who are behind proxy server. + + + + + Frame interval. + + + The property sets the interval in milliseconds betwen frames. If the property is + set to 100, then the desired frame rate will be 10 frames per second. Default value is 0 - + get new frames as fast as possible. + + + + + Video source. + + + URL, which provides JPEG files. + + + + + Login value. + + + Login required to access video source. + + + + + Password value. + + + Password required to access video source. + + + + + Gets or sets proxy information for the request. + + + The local computer or application config file may specify that a default + proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy + property overridea the local computer or application config file and the instance will use + the proxy settings specified. If no proxy is specified in a config file + and the Proxy property is unspecified, the request uses the proxy settings + inherited from Internet Explorer on the local computer. If there are no proxy settings + in Internet Explorer, the request is sent directly to the server. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Request timeout value. + + + The property sets timeout value in milliseconds for web requests. + + Default value is set 10000 milliseconds. + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Force using of basic authentication when connecting to the video source. + + + For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials + does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be + present on connection request). So this property allows to force basic authentication by adding required HTTP headers when + request is sent. + + Default value is set to . + + + + + + MJPEG video source. + + + The video source downloads JPEG images from the specified URL, which represents + MJPEG stream. + + Sample usage: + + // create MJPEG video source + MJPEGStream stream = new MJPEGStream( "some url" ); + // set event handlers + stream.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + stream.Start( ); + // ... + + + Some cameras produce HTTP header, which does not conform strictly to + standard, what leads to .NET exception. To avoid this exception the useUnsafeHeaderParsing + configuration option of httpWebRequest should be set, what may be done using application + configuration file. + + <configuration> + <system.net> + <settings> + <httpWebRequest useUnsafeHeaderParsing="true" /> + </settings> + </system.net> + </configuration> + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + URL, which provides MJPEG stream. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Use or not separate connection group. + + + The property indicates to open web request in separate connection group. + + + + + Video source. + + + URL, which provides MJPEG stream. + + + + + Login value. + + + Login required to access video source. + + + + + Password value. + + + Password required to access video source. + + + + + Gets or sets proxy information for the request. + + + The local computer or application config file may specify that a default + proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy + property overridea the local computer or application config file and the instance will use + the proxy settings specified. If no proxy is specified in a config file + and the Proxy property is unspecified, the request uses the proxy settings + inherited from Internet Explorer on the local computer. If there are no proxy settings + in Internet Explorer, the request is sent directly to the server. + + + + + + User agent to specify in HTTP request header. + + + Some IP cameras check what is the requesting user agent and depending + on it they provide video in different formats or do not provide it at all. The property + sets the value of user agent string, which is sent to camera in request header. + + + Default value is set to "Mozilla/5.0". If the value is set to , + the user agent string is not sent in request header. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Request timeout value. + + + The property sets timeout value in milliseconds for web requests. + Default value is 10000 milliseconds. + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Force using of basic authentication when connecting to the video source. + + + For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials + does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be + present on connection request). So this property allows to force basic authentication by adding required HTTP headers when + request is sent. + + Default value is set to . + + + + + + Screen capture video source. + + + The video source constantly captures the desktop screen. + + Sample usage: + + // get entire desktop area size + Rectangle screenArea = Rectangle.Empty; + foreach ( System.Windows.Forms.Screen screen in + System.Windows.Forms.Screen.AllScreens ) + { + screenArea = Rectangle.Union( screenArea, screen.Bounds ); + } + + // create screen capture video source + ScreenCaptureStream stream = new ScreenCaptureStream( screenArea ); + + // set NewFrame event handler + stream.NewFrame += new NewFrameEventHandler( video_NewFrame ); + + // start the video source + stream.Start( ); + + // ... + // signal to stop + stream.SignalToStop( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + Screen's rectangle to capture (the rectangle may cover multiple displays). + + + + + Initializes a new instance of the class. + + + Screen's rectangle to capture (the rectangle may cover multiple displays). + Time interval between making screen shots, ms. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + + + + Gets or sets the screen capture region. + + + This property specifies which region (rectangle) of the screen to capture. It may cover multiple displays + if those are available in the system. + + The property must be set before starting video source to have any effect. + + + + + + Time interval between making screen shots, ms. + + + The property specifies time interval in milliseconds between consequent screen captures. + Expected frame rate of the stream should be approximately 1000/FrameInteval. + + If the property is set to 0, then the stream will capture screen as fast as the system allows. + + Default value is set to 100. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + The property is not implemented for this video source and always returns 0. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Delegate for new frame event handler. + + + Sender object. + Event arguments. + + + + + Delegate for video source error event handler. + + + Sender object. + Event arguments. + + + + + Delegate for playing finished event handler. + + + Sender object. + Reason of finishing video playing. + + + + + Reason of finishing video playing. + + + When video source class fire the event, they + need to specify reason of finishing video playing. For example, it may be end of stream reached. + + + + + Video playing has finished because it end was reached. + + + + + Video playing has finished because it was stopped by user. + + + + + Video playing has finished because the device was lost (unplugged). + + + + + Video playing has finished because of some error happened the video source (camera, stream, file, etc.). + A error reporting event usually is fired to provide error information. + + + + + Arguments for new frame event from video source. + + + + + + Initializes a new instance of the class. + + + New frame. + + + + + New frame from video source. + + + + + + Arguments for video source error event from video source. + + + + + + Initializes a new instance of the class. + + + Error description. + + + + + Video source error description. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/Accord.Video.DirectShow.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/Accord.Video.DirectShow.3.0.2.nupkg new file mode 100644 index 0000000000..c7849943d Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/Accord.Video.DirectShow.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net35/Accord.Video.DirectShow.dll b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net35/Accord.Video.DirectShow.dll new file mode 100644 index 0000000000..e4fe02239 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net35/Accord.Video.DirectShow.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net35/Accord.Video.DirectShow.xml b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net35/Accord.Video.DirectShow.xml new file mode 100644 index 0000000000..d670d3f92 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net35/Accord.Video.DirectShow.xml @@ -0,0 +1,4113 @@ + + + + Accord.Video.DirectShow + + + + + The enumeration specifies a setting on a camera. + + + + + Pan control. + + + + + Tilt control. + + + + + Roll control. + + + + + Zoom control. + + + + + Exposure control. + + + + + Iris control. + + + + + Focus control. + + + + + The enumeration defines whether a camera setting is controlled manually or automatically. + + + + + No control flag. + + + + + Auto control Flag. + + + + + Manual control Flag. + + + + + Video source for video files. + + + The video source provides access to video files. DirectShow is used to access video + files. + + Sample usage: + + // create video source + FileVideoSource videoSource = new FileVideoSource( fileName ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + // signal to stop + videoSource.SignalToStop( ); + // ... + + // New frame event handler, which is invoked on each new available video frame + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Video file name. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Worker thread. + + + + + + Notifies client about new frame. + + + New frame's image. + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + Video source is represented by video file name. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Prevent video freezing after screen saver and workstation lock or not. + + + + The value specifies if the class should prevent video freezing during and + after screen saver or workstation lock. To prevent freezing the DirectShow graph + should not contain Renderer filter, which is added by Render() method + of graph. However, in some cases it may be required to call Render() method of graph, since + it may add some more filters, which may be required for playing video. So, the property is + a trade off - it is possible to prevent video freezing skipping adding renderer filter or + it is possible to keep renderer filter, but video may freeze during screen saver. + + The property may become obsolete in the future when approach to disable freezing + and adding all required filters is found. + + The property should be set before calling method + of the class to have effect. + + Default value of this property is set to false. + + + + + + + Enables/disables reference clock on the graph. + + + Disabling reference clocks causes DirectShow graph to run as fast as + it can process data. When enabled, it will process frames according to presentation + time of a video file. + + The property should be set before calling method + of the class to have effect. + + Default value of this property is set to true. + + + + + + The interface provides callback methods for the method. + + + + + + Callback method that receives a pointer to the media sample. + + + Starting time of the sample, in seconds. + Pointer to the sample's IMediaSample interface. + + Return's HRESULT error code. + + + + + Callback method that receives a pointer to the sample bufferþ + + + Starting time of the sample, in seconds. + Pointer to a buffer that contains the sample data. + Length of the buffer pointed to by buffer, in bytes + + Return's HRESULT error code. + + + + + The IAMCameraControl interface controls camera settings such as zoom, pan, aperture adjustment, + or shutter speed. To obtain this interface, query the filter that controls the camera. + + + + + Gets the range and default value of a specified camera property. + + + Specifies the property to query. + Receives the minimum value of the property. + Receives the maximum value of the property. + Receives the step size for the property. + Receives the default value of the property. + Receives a member of the CameraControlFlags enumeration, indicating whether the property is controlled automatically or manually. + + Return's HRESULT error code. + + + + + Sets a specified property on the camera. + + + Specifies the property to set. + Specifies the new value of the property. + Specifies the desired control setting, as a member of the CameraControlFlags enumeration. + + Return's HRESULT error code. + + + + + Gets the current setting of a camera property. + + + Specifies the property to retrieve. + Receives the value of the property. + Receives a member of the CameraControlFlags enumeration. + The returned value indicates whether the setting is controlled manually or automatically. + + Return's HRESULT error code. + + + + + The IAMCrossbar interface routes signals from an analog or digital source to a video capture filter. + + + + + Retrieves the number of input and output pins on the crossbar filter. + + + Variable that receives the number of output pins. + Variable that receives the number of input pins. + + Return's HRESULT error code. + + + + + Queries whether a specified input pin can be routed to a specified output pin. + + + Specifies the index of the output pin. + Specifies the index of input pin. + + Return's HRESULT error code. + + + + + Routes an input pin to an output pin. + + + Specifies the index of the output pin. + Specifies the index of the input pin. + + Return's HRESULT error code. + + + + + Retrieves the input pin that is currently routed to the specified output pin. + + + Specifies the index of the output pin. + Variable that receives the index of the input pin, or -1 if no input pin is routed to this output pin. + + Return's HRESULT error code. + + + + + Retrieves information about a specified pin. + + + Specifies the direction of the pin. Use one of the following values. + Specifies the index of the pin. + Variable that receives the index of the related pin, or –1 if no pin is related to this pin. + Variable that receives a member of the PhysicalConnectorType enumeration, indicating the pin's physical type. + + Return's HRESULT error code. + + + + + This interface sets the output format on certain capture and compression filters, + for both audio and video. + + + + + + Set the output format on the pin. + + + Media type to set. + + Return's HRESULT error code. + + + + + Retrieves the audio or video stream's format. + + + Retrieved media type. + + Return's HRESULT error code. + + + + + Retrieve the number of format capabilities that this pin supports. + + + Variable that receives the number of format capabilities. + Variable that receives the size of the configuration structure in bytes. + + Return's HRESULT error code. + + + + + Retrieve a set of format capabilities. + + + Specifies the format capability to retrieve, indexed from zero. + Retrieved media type. + Byte array, which receives information about capabilities. + + Return's HRESULT error code. + + + + + The interface controls certain video capture operations such as enumerating available + frame rates and image orientation. + + + + + + Retrieves the capabilities of the underlying hardware. + + + Pin to query capabilities from. + Get capabilities of the specified pin. + + Return's HRESULT error code. + + + + + Sets the video control mode of operation. + + + The pin to set the video control mode on. + Value specifying a combination of the flags to set the video control mode. + + Return's HRESULT error code. + + + + + Retrieves the video control mode of operation. + + + The pin to retrieve the video control mode from. + Gets combination of flags, which specify the video control mode. + + Return's HRESULT error code. + + + + + The method retrieves the actual frame rate, expressed as a frame duration in 100-nanosecond units. + USB (Universal Serial Bus) and IEEE 1394 cameras may provide lower frame rates than requested + because of bandwidth availability. This is only available during video streaming. + + + The pin to retrieve the frame rate from. + Gets frame rate in frame duration in 100-nanosecond units. + + Return's HRESULT error code. + + + + + Retrieves the maximum frame rate currently available based on bus bandwidth usage for connections + such as USB and IEEE 1394 camera devices where the maximum frame rate can be limited by bandwidth + availability. + + + The pin to retrieve the maximum frame rate from. + Index of the format to query for maximum frame rate. This index corresponds + to the order in which formats are enumerated by . + Frame image size (width and height) in pixels. + Gets maximum available frame rate. The frame rate is expressed as frame duration in 100-nanosecond units. + + Return's HRESULT error code. + + + + + Retrieves a list of available frame rates. + + + The pin to retrieve the maximum frame rate from. + Index of the format to query for maximum frame rate. This index corresponds + to the order in which formats are enumerated by . + Frame image size (width and height) in pixels. + Number of elements in the list of frame rates. + Array of frame rates in 100-nanosecond units. + + Return's HRESULT error code. + + + + + The IBaseFilter interface provides methods for controlling a filter. + All DirectShow filters expose this interface + + + + + + Returns the class identifier (CLSID) for the component object. + + + Points to the location of the CLSID on return. + + Return's HRESULT error code. + + + + + Stops the filter. + + + Return's HRESULT error code. + + + + + Pauses the filter. + + + Return's HRESULT error code. + + + + + Runs the filter. + + + Reference time corresponding to stream time 0. + + Return's HRESULT error code. + + + + + Retrieves the state of the filter (running, stopped, or paused). + + + Time-out interval, in milliseconds. + Pointer to a variable that receives filter's state. + + Return's HRESULT error code. + + + + + Sets the reference clock for the filter or the filter graph. + + + Pointer to the clock's IReferenceClock interface, or NULL. + + Return's HRESULT error code. + + + + + Retrieves the current reference clock. + + + Address of a variable that receives a pointer to the clock's IReferenceClock interface. + + Return's HRESULT error code. + + + + + Enumerates the pins on this filter. + + + Address of a variable that receives a pointer to the IEnumPins interface. + + Return's HRESULT error code. + + + + + Retrieves the pin with the specified identifier. + + + Pointer to a constant wide-character string that identifies the pin. + Address of a variable that receives a pointer to the pin's IPin interface. + + Return's HRESULT error code. + + + + + Retrieves information about the filter. + + + Pointer to FilterInfo structure. + + Return's HRESULT error code. + + + + + Notifies the filter that it has joined or left the filter graph. + + + Pointer to the Filter Graph Manager's IFilterGraph interface, or NULL + if the filter is leaving the graph. + String that specifies a name for the filter. + + Return's HRESULT error code. + + + + + Retrieves a string containing vendor information. + + + Receives a string containing the vendor information. + + Return's HRESULT error code. + + + + + This interface builds capture graphs and other custom filter graphs. + + + + + + Specify filter graph for the capture graph builder to use. + + + Filter graph's interface. + + Return's HRESULT error code. + + + + + Retrieve the filter graph that the builder is using. + + + Filter graph's interface. + + Return's HRESULT error code. + + + + + Create file writing section of the filter graph. + + + GUID that represents either the media subtype of the output or the + class identifier (CLSID) of a multiplexer filter or file writer filter. + Output file name. + Receives the multiplexer's interface. + Receives the file writer's IFileSinkFilter interface. Can be NULL. + + Return's HRESULT error code. + + + + + Searche the graph for a specified interface, starting from a specified filter. + + + GUID that specifies the search criteria. + GUID that specifies the major media type of an output pin, or NULL. + interface of the filter. The method begins searching from this filter. + Interface identifier (IID) of the interface to locate. + Receives found interface. + + Return's HRESULT error code. + + + + + Connect an output pin on a source filter to a rendering filter, optionally through a compression filter. + + + Pin category. + Major-type GUID that specifies the media type of the output pin. + Starting filter for the connection. + Interface of an intermediate filter, such as a compression filter. Can be NULL. + Sink filter, such as a renderer or mux filter. + + Return's HRESULT error code. + + + + + Set the start and stop times for one or more streams of captured data. + + + Pin category. + Major-type GUID that specifies the media type. + interface that specifies which filter to control. + Start time. + Stop time. + Value that is sent as the second parameter of the + EC_STREAM_CONTROL_STARTED event notification. + Value that is sent as the second parameter of the + EC_STREAM_CONTROL_STOPPED event notification. + + Return's HRESULT error code. + + + + + Preallocate a capture file to a specified size. + + + File name to create or resize. + Size of the file to allocate, in bytes. + + Return's HRESULT error code. + + + + + Copy the valid media data from a capture file. + + + Old file name. + New file name. + Boolean value that specifies whether pressing the ESC key cancels the copy operation. + IAMCopyCaptureFileProgress interface to display progress information, or NULL. + + Return's HRESULT error code. + + + + + + + + Interface on a filter, or to an interface on a pin. + Pin direction (input or output). + Pin category. + Media type. + Boolean value that specifies whether the pin must be unconnected. + Zero-based index of the pin to retrieve, from the set of matching pins. + Interface of the matching pin. + + Return's HRESULT error code. + + + + + The ICreateDevEnum interface creates an enumerator for devices within a particular category, + such as video capture devices, audio capture devices, video compressors, and so forth. + + + + + + Creates a class enumerator for a specified device category. + + + Specifies the class identifier of the device category. + Address of a variable that receives an IEnumMoniker interface pointer + Bitwise combination of zero or more flags. If zero, the method enumerates every filter in the category. + + Return's HRESULT error code. + + + + + This interface is used by applications or other filters to determine + what filters exist in the filter graph. + + + + + + Retrieves the specified number of filters in the enumeration sequence. + + + Number of filters to retrieve. + Array in which to place interfaces. + Actual number of filters placed in the array. + + Return's HRESULT error code. + + + + + Skips a specified number of filters in the enumeration sequence. + + + Number of filters to skip. + + Return's HRESULT error code. + + + + + Resets the enumeration sequence to the beginning. + + + Return's HRESULT error code. + + + + + Makes a copy of the enumerator with the same enumeration state. + + + Duplicate of the enumerator. + + + Return's HRESULT error code. + + + + + + Enumerates pins on a filter. + + + + + + Retrieves a specified number of pins. + + + Number of pins to retrieve. + Array of size cPins that is filled with IPin pointers. + Receives the number of pins retrieved. + + Return's HRESULT error code. + + + + + Skips a specified number of pins in the enumeration sequence. + + + Number of pins to skip. + + Return's HRESULT error code. + + + + + Resets the enumeration sequence to the beginning. + + + Return's HRESULT error code. + + + + + Makes a copy of the enumerator with the same enumeration state. + + + Duplicate of the enumerator. + + Return's HRESULT error code. + + + + + The interface is exposed by source filters to set the file name and media type of the media file that they are to render. + + + + + + Loads the source filter with the file. + + + The name of the file to open. + Media type of the file. This can be null. + + Return's HRESULT error code. + + + + + Retrieves the current file. + + + Name of media file. + Receives media type. + + Return's HRESULT error code. + + + + + The interface provides methods for building a filter graph. An application can use it to add filters to + the graph, connect or disconnect filters, remove filters, and perform other basic operations. + + + + + + Adds a filter to the graph and gives it a name. + + + Filter to add to the graph. + Name of the filter. + + Return's HRESULT error code. + + + + + Removes a filter from the graph. + + + Filter to be removed from the graph. + + Return's HRESULT error code. + + + + + Provides an enumerator for all filters in the graph. + + + Filter enumerator. + + Return's HRESULT error code. + + + + + Finds a filter that was added with a specified name. + + + Name of filter to search for. + Interface of found filter. + + Return's HRESULT error code. + + + + + Connects two pins directly (without intervening filters). + + + Output pin. + Input pin. + Media type to use for the connection. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin. + + + Pin to disconnect and reconnect. + + Return's HRESULT error code. + + + + + Disconnects a specified pin. + + + Pin to disconnect. + + Return's HRESULT error code. + + + + + Sets the reference clock to the default clock. + + + Return's HRESULT error code. + + + + + This interface extends the and + interfaces, which contain methods for building filter graphs. + + + + + + Adds a filter to the graph and gives it a name. + + + Filter to add to the graph. + Name of the filter. + + Return's HRESULT error code. + + + + + Removes a filter from the graph. + + + Filter to be removed from the graph. + + Return's HRESULT error code. + + + + + Provides an enumerator for all filters in the graph. + + + Filter enumerator. + + Return's HRESULT error code. + + + + + Finds a filter that was added with a specified name. + + + Name of filter to search for. + Interface of found filter. + + Return's HRESULT error code. + + + + + Connects two pins directly (without intervening filters). + + + Output pin. + Input pin. + Media type to use for the connection. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin. + + + Pin to disconnect and reconnect. + + Return's HRESULT error code. + + + + + Disconnects a specified pin. + + + Pin to disconnect. + + Return's HRESULT error code. + + + + + Sets the reference clock to the default clock. + + + Return's HRESULT error code. + + + + + Connects two pins. If they will not connect directly, this method connects them with intervening transforms. + + + Output pin. + Input pin. + + Return's HRESULT error code. + + + + + Adds a chain of filters to a specified output pin to render it. + + + Output pin. + + Return's HRESULT error code. + + + + + Builds a filter graph that renders the specified file. + + + Specifies a string that contains file name or device moniker. + Reserved. + + Return's HRESULT error code. + + + + + Adds a source filter to the filter graph for a specific file. + + + Specifies the name of the file to load. + Specifies a name for the source filter. + Variable that receives the interface of the source filter. + + Return's HRESULT error code. + + + + + Sets the file for logging actions taken when attempting to perform an operation. + + + Handle to the log file. + + Return's HRESULT error code. + + + + + Requests that the graph builder return as soon as possible from its current task. + + + Return's HRESULT error code. + + + + + Queries whether the current operation should continue. + + + Return's HRESULT error code. + + + + + + + + Moniker interface. + Bind context interface. + Name for the filter. + Receives source filter's IBaseFilter interface. + The caller must release the interface. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin, + using a specified media type. + + + Pin to disconnect and reconnect. + Media type to reconnect with. + + Return's HRESULT error code. + + + + + Render an output pin, with an option to use existing renderers only. + + + Interface of the output pin. + Flag that specifies how to render the pin. + Reserved. + + Return's HRESULT error code. + + + + + This interface provides methods that enable an application to build a filter graph. + + + + + + Adds a filter to the graph and gives it a name. + + + Filter to add to the graph. + Name of the filter. + + Return's HRESULT error code. + + + + + Removes a filter from the graph. + + + Filter to be removed from the graph. + + Return's HRESULT error code. + + + + + Provides an enumerator for all filters in the graph. + + + Filter enumerator. + + Return's HRESULT error code. + + + + + Finds a filter that was added with a specified name. + + + Name of filter to search for. + Interface of found filter. + + Return's HRESULT error code. + + + + + Connects two pins directly (without intervening filters). + + + Output pin. + Input pin. + Media type to use for the connection. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin. + + + Pin to disconnect and reconnect. + + Return's HRESULT error code. + + + + + Disconnects a specified pin. + + + Pin to disconnect. + + Return's HRESULT error code. + + + + + Sets the reference clock to the default clock. + + + Return's HRESULT error code. + + + + + Connects two pins. If they will not connect directly, this method connects them with intervening transforms. + + + Output pin. + Input pin. + + Return's HRESULT error code. + + + + + Adds a chain of filters to a specified output pin to render it. + + + Output pin. + + Return's HRESULT error code. + + + + + Builds a filter graph that renders the specified file. + + + Specifies a string that contains file name or device moniker. + Reserved. + + Return's HRESULT error code. + + + + + Adds a source filter to the filter graph for a specific file. + + + Specifies the name of the file to load. + Specifies a name for the source filter. + Variable that receives the interface of the source filter. + + Return's HRESULT error code. + + + + + Sets the file for logging actions taken when attempting to perform an operation. + + + Handle to the log file. + + Return's HRESULT error code. + + + + + Requests that the graph builder return as soon as possible from its current task. + + + Return's HRESULT error code. + + + + + Queries whether the current operation should continue. + + + Return's HRESULT error code. + + + + + The interface provides methods for controlling the flow of data through the filter graph. + It includes methods for running, pausing, and stopping the graph. + + + + + + Runs all the filters in the filter graph. + + + Return's HRESULT error code. + + + + + Pauses all filters in the filter graph. + + + Return's HRESULT error code. + + + + + Stops all the filters in the filter graph. + + + Return's HRESULT error code. + + + + + Retrieves the state of the filter graph. + + + Duration of the time-out, in milliseconds, or INFINITE to specify an infinite time-out. + Ìariable that receives a member of the FILTER_STATE enumeration. + + Return's HRESULT error code. + + + + + Builds a filter graph that renders the specified file. + + + Name of the file to render + + Return's HRESULT error code. + + + + + Adds a source filter to the filter graph, for a specified file. + + + Name of the file containing the source video. + Receives interface of filter information object. + + Return's HRESULT error code. + + + + + Retrieves a collection of the filters in the filter graph. + + + Receives the IAMCollection interface. + + Return's HRESULT error code. + + + + + Retrieves a collection of all the filters listed in the registry. + + + Receives the IDispatch interface of IAMCollection object. + + Return's HRESULT error code. + + + + + Pauses the filter graph, allowing filters to queue data, and then stops the filter graph. + + + Return's HRESULT error code. + + + + + The interface inherits contains methods for retrieving event notifications and for overriding the + filter graph's default handling of events. + + + + + Retrieves a handle to a manual-reset event that remains signaled while the queue contains event notifications. + + Pointer to a variable that receives the event handle. + + Return's HRESULT error code. + + + + + Retrieves the next event notification from the event queue. + + + Variable that receives the event code. + Pointer to a variable that receives the first event parameter. + Pointer to a variable that receives the second event parameter. + Time-out interval, in milliseconds. + + Return's HRESULT error code. + + + + + Waits for the filter graph to render all available data. + + + Time-out interval, in milliseconds. Pass zero to return immediately. + Pointer to a variable that receives an event code. + + Return's HRESULT error code. + + + + + Cancels the Filter Graph Manager's default handling for a specified event. + + + Event code for which to cancel default handling. + + Return's HRESULT error code. + + + + + Restores the Filter Graph Manager's default handling for a specified event. + + Event code for which to restore default handling. + + Return's HRESULT error code. + + + + + Frees resources associated with the parameters of an event. + + Event code. + First event parameter. + Second event parameter. + + Return's HRESULT error code. + + + + + Registers a window to process event notifications. + + + Handle to the window, or to stop receiving event messages. + Window message to be passed as the notification. + Value to be passed as the lParam parameter for the lMsg message. + + Return's HRESULT error code. + + + + + Enables or disables event notifications. + + + Value indicating whether to enable or disable event notifications. + + Return's HRESULT error code. + + + + + Determines whether event notifications are enabled. + + + Variable that receives current notification status. + + Return's HRESULT error code. + + + + + The interface provides methods for controlling the flow of data through the filter graph. + It includes methods for running, pausing, and stopping the graph. + + + + + + Provides the CLSID of an object that can be stored persistently in the system. Allows the object to specify which object + handler to use in the client process, as it is used in the default implementation of marshaling. + + + + + Retrieves the class identifier (CLSID) of the object. + + + + + + + This method informs the filter to transition to the new state. + + + Return's HRESULT error code. + + + + + This method informs the filter to transition to the new state. + + + Return's HRESULT error code. + + + + + This method informs the filter to transition to the new (running) state. Passes a time value to synchronize independent streams. + + + Time value of the reference clock. The amount to be added to the IMediaSample time stamp to determine the time at which that sample should be rendered according to the reference clock. That is, it is the reference time at which a sample with a stream time of zero should be rendered. + + Return's HRESULT error code. + + + + + This method determines the filter's state. + + + Duration of the time-out, in milliseconds. To block indefinitely, pass INFINITE. + Returned state of the filter. States include stopped, paused, running, or intermediate (in the process of changing). + + Return's HRESULT error code. + + + + + This method identifies the reference clock to which the filter should synchronize activity. + + + Pointer to the IReferenceClock interface. + + Return's HRESULT error code. + + + + + This method retrieves the current reference clock in use by this filter. + + + Pointer to a reference clock; it will be set to the IReferenceClock interface. + + + Return's HRESULT error code. + + + + + This interface is exposed by all input and output pins of DirectShow filters. + + + + + + Connects the pin to another pin. + + + Other pin to connect to. + Type to use for the connections (optional). + + Return's HRESULT error code. + + + + + Makes a connection to this pin and is called by a connecting pin. + + + Connecting pin. + Media type of the samples to be streamed. + + Return's HRESULT error code. + + + + + Breaks the current pin connection. + + + Return's HRESULT error code. + + + + + Returns a pointer to the connecting pin. + + + Receives IPin interface of connected pin (if any). + + Return's HRESULT error code. + + + + + Returns the media type of this pin's connection. + + + Pointer to an structure. If the pin is connected, + the media type is returned. Otherwise, the structure is initialized to a default state in which + all elements are 0, with the exception of lSampleSize, which is set to 1, and + FixedSizeSamples, which is set to true. + + Return's HRESULT error code. + + + + + Retrieves information about this pin (for example, the name, owning filter, and direction). + + + structure that receives the pin information. + + Return's HRESULT error code. + + + + + Retrieves the direction for this pin. + + + Receives direction of the pin. + + Return's HRESULT error code. + + + + + Retrieves an identifier for the pin. + + + Pin identifier. + + Return's HRESULT error code. + + + + + Queries whether a given media type is acceptable by the pin. + + + structure that specifies the media type. + + Return's HRESULT error code. + + + + + Provides an enumerator for this pin's preferred media types. + + + Address of a variable that receives a pointer to the IEnumMediaTypes interface. + + Return's HRESULT error code. + + + + + Provides an array of the pins to which this pin internally connects. + + + Address of an array of IPin pointers. + On input, specifies the size of the array. When the method returns, + the value is set to the number of pointers returned in the array. + + Return's HRESULT error code. + + + + + Notifies the pin that no additional data is expected. + + + Return's HRESULT error code. + + + + + Begins a flush operation. + + + Return's HRESULT error code. + + + + + Ends a flush operation. + + + Return's HRESULT error code. + + + + + Specifies that samples following this call are grouped as a segment with a given start time, stop time, and rate. + + + Start time of the segment, relative to the original source, in 100-nanosecond units. + End time of the segment, relative to the original source, in 100-nanosecond units. + Rate at which this segment should be processed, as a percentage of the original rate. + + Return's HRESULT error code. + + + + + The IPropertyBag interface provides an object with a property bag in + which the object can persistently save its properties. + + + + + + Read a property from property bag. + + + Property name to read. + Property value. + Caller's error log. + + Return's HRESULT error code. + + + + + Write property to property bag. + + + Property name to read. + Property value. + + Return's HRESULT error code. + + + + + The IReferenceClock interface provides the reference time for the filter graph. + + Filters that can act as a reference clock can expose this interface. It is also exposed by the System Reference Clock. + The filter graph manager uses this interface to synchronize the filter graph. Applications can use this interface to + retrieve the current reference time, or to request notification of an elapsed time. + + + + + The GetTime method retrieves the current reference time. + + + Pointer to a variable that receives the current time, in 100-nanosecond units. + + Return's HRESULT error code. + + + + + The AdviseTime method creates a one-shot advise request. + + + Base reference time, in 100-nanosecond units. See Remarks. + Stream offset time, in 100-nanosecond units. See Remarks. + Handle to an event, created by the caller. + Pointer to a variable that receives an identifier for the advise request. + + Return's HRESULT error code. + + + + + The AdvisePeriodic method creates a periodic advise request. + + + Time of the first notification, in 100-nanosecond units. Must be greater than zero and less than MAX_TIME. + Time between notifications, in 100-nanosecond units. Must be greater than zero. + Handle to a semaphore, created by the caller. + Pointer to a variable that receives an identifier for the advise request. + + Return's HRESULT error code. + + + + + The Unadvise method removes a pending advise request. + + + Identifier of the request to remove. Use the value returned by IReferenceClock::AdviseTime or IReferenceClock::AdvisePeriodic in the pdwAdviseToken parameter. + + Return's HRESULT error code. + + + + + The interface is exposed by the Sample Grabber Filter. It enables an application to retrieve + individual media samples as they move through the filter graph. + + + + + + Specifies whether the filter should stop the graph after receiving one sample. + + + Boolean value specifying whether the filter should stop the graph after receiving one sample. + + Return's HRESULT error code. + + + + + Specifies the media type for the connection on the Sample Grabber's input pin. + + + Specifies the required media type. + + Return's HRESULT error code. + + + + + Retrieves the media type for the connection on the Sample Grabber's input pin. + + + structure, which receives media type. + + Return's HRESULT error code. + + + + + Specifies whether to copy sample data into a buffer as it goes through the filter. + + + Boolean value specifying whether to buffer sample data. + If true, the filter copies sample data into an internal buffer. + + Return's HRESULT error code. + + + + + Retrieves a copy of the sample that the filter received most recently. + + + Pointer to the size of the buffer. If pBuffer is NULL, this parameter receives the required size. + Pointer to a buffer to receive a copy of the sample, or NULL. + + Return's HRESULT error code. + + + + + Not currently implemented. + + + + + Return's HRESULT error code. + + + + + Specifies a callback method to call on incoming samples. + + + interface containing the callback method, or NULL to cancel the callback. + Index specifying the callback method. + + Return's HRESULT error code. + + + + + The interface indicates that an object supports property pages. + + + + + + Fills a counted array of GUID values where each GUID specifies the + CLSID of each property page that can be displayed in the property + sheet for this object. + + + Pointer to a CAUUID structure that must be initialized + and filled before returning. + + Return's HRESULT error code. + + + + + The interface sets properties on the video window. + + + + + + Sets the video window caption. + + + Caption. + + Return's HRESULT error code. + + + + + Retrieves the video window caption. + + + Caption. + + Return's HRESULT error code. + + + + + Sets the window style on the video window. + + + Window style flags. + + Return's HRESULT error code. + + + + + Retrieves the window style on the video window. + + + Window style flags. + + Return's HRESULT error code. + + + + + Sets the extended window style on the video window. + + + Window extended style flags. + + Return's HRESULT error code. + + + + + Retrieves the extended window style on the video window. + + + Window extended style flags. + + Return's HRESULT error code. + + + + + Specifies whether the video renderer automatically shows the video window when it receives video data. + + + Specifies whether the video renderer automatically shows the video window. + + Return's HRESULT error code. + + + + + Queries whether the video renderer automatically shows the video window when it receives video data. + + + REceives window auto show flag. + + Return's HRESULT error code. + + + + + Shows, hides, minimizes, or maximizes the video window. + + + Window state. + + Return's HRESULT error code. + + + + + Queries whether the video window is visible, hidden, minimized, or maximized. + + + Window state. + + Return's HRESULT error code. + + + + + Specifies whether the video window realizes its palette in the background. + + + Value that specifies whether the video renderer realizes it palette in the background. + + Return's HRESULT error code. + + + + + Queries whether the video window realizes its palette in the background. + + + Receives state of background palette flag. + + Return's HRESULT error code. + + + + + Shows or hides the video window. + + + Value that specifies whether to show or hide the window. + + Return's HRESULT error code. + + + + + Queries whether the video window is visible. + + + Visibility flag. + + Return's HRESULT error code. + + + + + Sets the video window's x-coordinate. + + + Specifies the x-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the video window's x-coordinate. + + + x-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Sets the width of the video window. + + + Specifies the width, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the width of the video window. + + + Width, in pixels. + + Return's HRESULT error code. + + + + + Sets the video window's y-coordinate. + + + Specifies the y-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the video window's y-coordinate. + + + y-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Sets the height of the video window. + + + Specifies the height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the height of the video window. + + + Height, in pixels. + + Return's HRESULT error code. + + + + + Specifies a parent window for the video windowþ + + + Specifies a handle to the parent window. + + Return's HRESULT error code. + + + + + Retrieves the video window's parent window, if anyþ + + + Parent window's handle. + + Return's HRESULT error code. + + + + + Specifies a window to receive mouse and keyboard messages from the video window. + + + Specifies a handle to the window. + + Return's HRESULT error code. + + + + + Retrieves the window that receives mouse and keyboard messages from the video window, if any. + + + Window's handle. + + Return's HRESULT error code. + + + + + Retrieves the color that appears around the edges of the destination rectangle. + + + Border's color. + + Return's HRESULT error code. + + + + + Sets the color that appears around the edges of the destination rectangle. + + + Specifies the border color. + + Return's HRESULT error code. + + + + + Queries whether the video renderer is in full-screen mode. + + + Full-screen mode. + + Return's HRESULT error code. + + + + + Enables or disables full-screen mode. + + + Boolean value that specifies whether to enable or disable full-screen mode. + + Return's HRESULT error code. + + + + + Places the video window at the top of the Z order. + + + Value that specifies whether to give the window focus. + + Return's HRESULT error code. + + + + + Forwards a message to the video window. + + + Handle to the window. + Specifies the message. + Message parameter. + Message parameter. + + Return's HRESULT error code. + + + + + Sets the position of the video windowþ + + + Specifies the x-coordinate, in pixels. + Specifies the y-coordinate, in pixels. + Specifies the width, in pixels. + Specifies the height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the position of the video window. + + + x-coordinate, in pixels. + y-coordinate, in pixels. + Width, in pixels. + Height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the minimum ideal size for the video image. + + + Receives the minimum ideal width, in pixels. + Receives the minimum ideal height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the maximum ideal size for the video image. + + + Receives the maximum ideal width, in pixels. + Receives the maximum ideal height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the restored window position. + + + x-coordinate, in pixels. + y-coordinate, in pixels. + Width, in pixels. + Height, in pixels. + + Return's HRESULT error code. + + + + + Hides the cursor. + + + Specifies whether to hide or display the cursor. + + Return's HRESULT error code. + + + + + Queries whether the cursor is hidden. + + + Specifies if cursor is hidden or not. + + Return's HRESULT error code. + + + + + This enumeration indicates a pin's direction. + + + + + + Input pin. + + + + + Output pin. + + + + + The structure describes the format of a media sample. + + + + + + Globally unique identifier (GUID) that specifies the major type of the media sample. + + + + + GUID that specifies the subtype of the media sample. + + + + + If true, samples are of a fixed size. + + + + + If true, samples are compressed using temporal (interframe) compression. + + + + + Size of the sample in bytes. For compressed data, the value can be zero. + + + + + GUID that specifies the structure used for the format block. + + + + + Not used. + + + + + Size of the format block, in bytes. + + + + + Pointer to the format block. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + + + + Dispose the object + + + Indicates if disposing was initiated manually. + + + + + The structure contains information about a pin. + + + + + + Owning filter. + + + + + Direction of the pin. + + + + + Name of the pin. + + + + + Filter's name. + + + + + Owning graph. + + + + + The structure describes the bitmap and color information for a video image. + + + + + + structure that specifies the source video window. + + + + + structure that specifies the destination video window. + + + + + Approximate data rate of the video stream, in bits per second. + + + + + Data error rate, in bit errors per second. + + + + + The desired average display time of the video frames, in 100-nanosecond units. + + + + + structure that contains color and dimension information for the video image bitmap. + + + + + The structure describes the bitmap and color information for a video image (v2). + + + + + + structure that specifies the source video window. + + + + + structure that specifies the destination video window. + + + + + Approximate data rate of the video stream, in bits per second. + + + + + Data error rate, in bit errors per second. + + + + + The desired average display time of the video frames, in 100-nanosecond units. + + + + + Flags that specify how the video is interlaced. + + + + + Flag set to indicate that the duplication of the stream should be restricted. + + + + + The X dimension of picture aspect ratio. + + + + + The Y dimension of picture aspect ratio. + + + + + Reserved for future use. + + + + + Reserved for future use. + + + + + structure that contains color and dimension information for the video image bitmap. + + + + + The structure contains information about the dimensions and color format of a device-independent bitmap (DIB). + + + + + + Specifies the number of bytes required by the structure. + + + + + Specifies the width of the bitmap. + + + + + Specifies the height of the bitmap, in pixels. + + + + + Specifies the number of planes for the target device. This value must be set to 1. + + + + + Specifies the number of bits per pixel. + + + + + If the bitmap is compressed, this member is a FOURCC the specifies the compression. + + + + + Specifies the size, in bytes, of the image. + + + + + Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap. + + + + + Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap. + + + + + Specifies the number of color indices in the color table that are actually used by the bitmap. + + + + + Specifies the number of color indices that are considered important for displaying the bitmap. + + + + + The structure defines the coordinates of the upper-left and lower-right corners of a rectangle. + + + + + + Specifies the x-coordinate of the upper-left corner of the rectangle. + + + + + Specifies the y-coordinate of the upper-left corner of the rectangle. + + + + + Specifies the x-coordinate of the lower-right corner of the rectangle. + + + + + Specifies the y-coordinate of the lower-right corner of the rectangle. + + + + + The CAUUID structure is a Counted Array of UUID or GUID types. + + + + + + Size of the array pointed to by pElems. + + + + + Pointer to an array of UUID values, each of which specifies UUID. + + + + + Performs manual marshaling of pElems to retrieve an array of Guid objects. + + + A managed representation of pElems. + + + + + Enumeration of DirectShow event codes. + + + + + Specifies a filter's state or the state of the filter graph. + + + + + Stopped. The filter is not processing data. + + + + + Paused. The filter is processing data, but not rendering it. + + + + + Running. The filter is processing and rendering data. + + + + + Some miscellaneous functions. + + + + + + Get filter's pin. + + + Filter to get pin of. + Pin's direction. + Pin's number. + + Returns filter's pin. + + + + + Get filter's input pin. + + + Filter to get pin of. + Pin's number. + + Returns filter's pin. + + + + + Get filter's output pin. + + + Filter to get pin of. + Pin's number. + + Returns filter's pin. + + + + + DirectShow class IDs. + + + + + System device enumerator. + + + Equals to CLSID_SystemDeviceEnum. + + + + + Filter graph. + + + Equals to CLSID_FilterGraph. + + + + + Sample grabber. + + + Equals to CLSID_SampleGrabber. + + + + + Capture graph builder. + + + Equals to CLSID_CaptureGraphBuilder2. + + + + + Async reader. + + + Equals to CLSID_AsyncReader. + + + + + DirectShow format types. + + + + + + VideoInfo. + + + Equals to FORMAT_VideoInfo. + + + + + VideoInfo2. + + + Equals to FORMAT_VideoInfo2. + + + + + DirectShow media types. + + + + + + Video. + + + Equals to MEDIATYPE_Video. + + + + + Interleaved. Used by Digital Video (DV). + + + Equals to MEDIATYPE_Interleaved. + + + + + Audio. + + + Equals to MEDIATYPE_Audio. + + + + + Text. + + + Equals to MEDIATYPE_Text. + + + + + Byte stream with no time stamps. + + + Equals to MEDIATYPE_Stream. + + + + + DirectShow media subtypes. + + + + + + YUY2 (packed 4:2:2). + + + Equals to MEDIASUBTYPE_YUYV. + + + + + IYUV. + + + Equals to MEDIASUBTYPE_IYUV. + + + + + A DV encoding format. (FOURCC 'DVSD') + + + Equals to MEDIASUBTYPE_DVSD. + + + + + RGB, 1 bit per pixel (bpp), palettized. + + + Equals to MEDIASUBTYPE_RGB1. + + + + + RGB, 4 bpp, palettized. + + + Equals to MEDIASUBTYPE_RGB4. + + + + + RGB, 8 bpp. + + + Equals to MEDIASUBTYPE_RGB8. + + + + + RGB 565, 16 bpp. + + + Equals to MEDIASUBTYPE_RGB565. + + + + + RGB 555, 16 bpp. + + + Equals to MEDIASUBTYPE_RGB555. + + + + + RGB, 24 bpp. + + + Equals to MEDIASUBTYPE_RGB24. + + + + + RGB, 32 bpp, no alpha channel. + + + Equals to MEDIASUBTYPE_RGB32. + + + + + Data from AVI file. + + + Equals to MEDIASUBTYPE_Avi. + + + + + Advanced Streaming Format (ASF). + + + Equals to MEDIASUBTYPE_Asf. + + + + + DirectShow pin categories. + + + + + + Capture pin. + + + Equals to PIN_CATEGORY_CAPTURE. + + + + + Still image pin. + + + Equals to PIN_CATEGORY_STILL. + + + + Equals to LOOK_UPSTREAM_ONLY. + + + Equals to LOOK_DOWNSTREAM_ONLY. + + + + Some Win32 API used internally. + + + + + + Supplies a pointer to an implementation of IBindCtx (a bind context object). + This object stores information about a particular moniker-binding operation. + + + Reserved for future use; must be zero. + Address of IBindCtx* pointer variable that receives the + interface pointer to the new bind context object. + + Returns S_OK on success. + + + + + Converts a string into a moniker that identifies the object named by the string. + + + Pointer to the IBindCtx interface on the bind context object to be used in this binding operation. + Pointer to a zero-terminated wide character string containing the display name to be parsed. + Pointer to the number of characters of szUserName that were consumed. + Address of IMoniker* pointer variable that receives the interface pointer + to the moniker that was built from szUserName. + + Returns S_OK on success. + + + + + Copy a block of memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's the value of dst - pointer to destination. + + + + + Invokes a new property frame, that is, a property sheet dialog box. + + + Parent window of property sheet dialog box. + Horizontal position for dialog box. + Vertical position for dialog box. + Dialog box caption. + Number of object pointers in ppUnk. + Pointer to the objects for property sheet. + Number of property pages in lpPageClsID. + Array of CLSIDs for each property page. + Locale identifier for property sheet locale. + Reserved. + Reserved. + + Returns S_OK on success. + + + + + DirectShow filter information. + + + + + + Initializes a new instance of the class. + + + Filters's moniker string. + + + + + Initializes a new instance of the class. + + + Filter's moniker object. + + + + + Compare the object with another instance of this class. + + + Object to compare with. + + A signed number indicating the relative values of this instance and value. + + + + + Create an instance of the filter. + + + Filter's moniker string. + + Returns filter's object, which implements IBaseFilter interface. + + The returned filter's object should be released using Marshal.ReleaseComObject(). + + + + + Filter name. + + + + + Filters's moniker string. + + + + + + Collection of filters' information objects. + + + The class allows to enumerate DirectShow filters of specified category. For + a list of categories see . + + Sample usage: + + // enumerate video devices + videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); + // list devices + foreach ( FilterInfo device in videoDevices ) + { + // ... + } + + + + + + + Initializes a new instance of the class. + + + Guid of DirectShow filter category. See . + + Build collection of filters' information objects for the + specified filter category. + + + + + Get filter information object. + + + Index of filter information object to retrieve. + + Filter information object. + + + + + Specifies the physical type of pin (audio or video). + + + + + Default value of connection type. Physically it does not exist, but just either to specify that + connection type should not be changed (input) or was not determined (output). + + + + + Specifies a tuner pin for video. + + + + + Specifies a composite pin for video. + + + + + Specifies an S-Video (Y/C video) pin. + + + + + Specifies an RGB pin for video. + + + + + Specifies a YRYBY (Y, R–Y, B–Y) pin for video. + + + + + Specifies a serial digital pin for video. + + + + + Specifies a parallel digital pin for video. + + + + + Specifies a SCSI (Small Computer System Interface) pin for video. + + + + + Specifies an AUX (auxiliary) pin for video. + + + + + Specifies an IEEE 1394 pin for video. + + + + + Specifies a USB (Universal Serial Bus) pin for video. + + + + + Specifies a video decoder pin. + + + + + Specifies a video encoder pin. + + + + + Specifies a SCART (Peritel) pin for video. + + + + + Not used. + + + + + Specifies a tuner pin for audio. + + + + + Specifies a line pin for audio. + + + + + Specifies a microphone pin. + + + + + Specifies an AES/EBU (Audio Engineering Society/European Broadcast Union) digital pin for audio. + + + + + Specifies an S/PDIF (Sony/Philips Digital Interface Format) digital pin for audio. + + + + + Specifies a SCSI pin for audio. + + + + + Specifies an AUX pin for audio. + + + + + Specifies an IEEE 1394 pin for audio. + + + + + Specifies a USB pin for audio. + + + + + Specifies an audio decoder pin. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized resource of type System.Drawing.Bitmap. + + + + + DirectShow filter categories. + + + + + Audio input device category. + + + Equals to CLSID_AudioInputDeviceCategory. + + + + + Video input device category. + + + Equals to CLSID_VideoInputDeviceCategory. + + + + + Video compressor category. + + + Equals to CLSID_VideoCompressorCategory. + + + + + Audio compressor category + + + Equals to CLSID_AudioCompressorCategory. + + + + + Capabilities of video device such as frame size and frame rate. + + + + + Frame size supported by video device. + + + + + Average frame rate of video device for corresponding frame size. + + + + + Maximum frame rate of video device for corresponding frame size. + + + + + Number of bits per pixel provided by the camera. + + + + + Check if the video capability equals to the specified object. + + + Object to compare with. + + Returns true if both are equal are equal or false otherwise. + + + + + Check if two video capabilities are equal. + + + Second video capability to compare with. + + Returns true if both video capabilities are equal or false otherwise. + + + + + Get hash code of the object. + + + Returns hash code ot the object + + + + Equality operator. + + + First object to check. + Seconds object to check. + + Return true if both objects are equal or false otherwise. + + + + Inequality operator. + + + First object to check. + Seconds object to check. + + Return true if both objects are not equal or false otherwise. + + + + Frame rate supported by video device for corresponding frame size. + + + This field is depricated - should not be used. + Its value equals to . + + + + + + Video source for local video capture device (for example USB webcam). + + + This video source class captures video data from local video capture device, + like USB web camera (or internal), frame grabber, capture board - anything which + supports DirectShow interface. For devices which has a shutter button or + support external software triggering, the class also allows to do snapshots. Both + video size and snapshot size can be configured. + + Sample usage: + + // enumerate video devices + videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); + // create video source + VideoCaptureDevice videoSource = new VideoCaptureDevice( videoDevices[0].MonikerString ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + // signal to stop when you no longer need capturing + videoSource.SignalToStop( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Moniker string of video capture device. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Display property window for the video capture device providing its configuration + capabilities. + + + Handle of parent window. + + If you pass parent window's handle to this method, then the + displayed property page will become modal window and none of the controls from the + parent window will be accessible. In order to make it modeless it is required + to pass as parent window's handle. + + + + The video source does not support configuration property page. + + + + + Display property page of video crossbar (Analog Video Crossbar filter). + + + Handle of parent window. + + The Analog Video Crossbar filter is modeled after a general switching matrix, + with n inputs and m outputs. For example, a video card might have two external connectors: + a coaxial connector for TV, and an S-video input. These would be represented as input pins on + the filter. The displayed property page allows to configure the crossbar by selecting input + of a video card to use. + + This method can be invoked only when video source is running ( is + ). Otherwise it generates exception. + + Use method to check if running video source provides + crossbar configuration. + + + The video source must be running in order to display crossbar property page. + Crossbar configuration is not supported by currently running video source. + + + + + Check if running video source provides crossbar for configuration. + + + Returns if crossbar configuration is available or + otherwise. + + The method reports if the video source provides crossbar configuration + using . + + + + + + Simulates an external trigger. + + + The method simulates external trigger for video cameras, which support + providing still image snapshots. The effect is equivalent as pressing camera's shutter + button - a snapshot will be provided through event. + + The property must be set to + to enable receiving snapshots. + + + + + + Sets a specified property on the camera. + + + Specifies the property to set. + Specifies the new value of the property. + Specifies the desired control setting. + + Returns true on sucee or false otherwise. + + Video source is not specified - device moniker is not set. + Failed creating device object for moniker. + The video source does not support camera control. + + + + + Gets the current setting of a camera property. + + + Specifies the property to retrieve. + Receives the value of the property. + Receives the value indicating whether the setting is controlled manually or automatically + + Returns true on sucee or false otherwise. + + Video source is not specified - device moniker is not set. + Failed creating device object for moniker. + The video source does not support camera control. + + + + + Gets the range and default value of a specified camera property. + + + Specifies the property to query. + Receives the minimum value of the property. + Receives the maximum value of the property. + Receives the step size for the property. + Receives the default value of the property. + Receives a member of the enumeration, indicating whether the property is controlled automatically or manually. + + Returns true on sucee or false otherwise. + + Video source is not specified - device moniker is not set. + Failed creating device object for moniker. + The video source does not support camera control. + + + + + Worker thread. + + + + + + Notifies clients about new frame. + + + New frame's image. + + + + + Notifies clients about new snapshot frame. + + + New snapshot's image. + + + + + Current video input of capture card. + + + The property specifies video input to use for video devices like capture cards + (those which provide crossbar configuration). List of available video inputs can be obtained + from property. + + To check if the video device supports crossbar configuration, the + method can be used. + + This property can be set as before running video device, as while running it. + + By default this property is set to , which means video input + will not be set when running video device, but currently configured will be used. After video device + is started this property will be updated anyway to tell current video input. + + + + + + Available inputs of the video capture card. + + + The property provides list of video inputs for devices like video capture cards. + Such devices usually provide several video inputs, which can be selected using crossbar. + If video device represented by the object of this class supports crossbar, then this property + will list all video inputs. However if it is a regular USB camera, for example, which does not + provide crossbar configuration, the property will provide zero length array. + + Video input to be used can be selected using . See also + method, which provides crossbar configuration dialog. + + It is recomended not to call this property immediately after method, since + device may not start yet and provide its information. It is better to call the property + before starting device or a bit after (but not immediately after). + + + + + + Specifies if snapshots should be provided or not. + + + Some USB cameras/devices may have a shutter button, which may result into snapshot if it + is pressed. So the property specifies if the video source will try providing snapshots or not - it will + check if the camera supports providing still image snapshots. If camera supports snapshots and the property + is set to , then snapshots will be provided through + event. + + Check supported sizes of snapshots using property and set the + desired size using property. + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Snapshot frame event. + + + Notifies clients about new available snapshot frame - the one which comes when + camera's snapshot/shutter button is pressed. + + See documentation to for additional information. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed snapshot frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + Video source is represented by moniker string of video capture device. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Obsolete - no longer in use + + + The property is obsolete. Use property instead. + Setting this property does not have any effect. + + + + + Obsolete - no longer in use + + + The property is obsolete. Use property instead. + Setting this property does not have any effect. + + + + + Obsolete - no longer in use. + + + The property is obsolete. Setting this property does not have any effect. + + + + + Video resolution to set. + + + The property allows to set one of the video resolutions supported by the camera. + Use property to get the list of supported video resolutions. + + The property must be set before camera is started to make any effect. + + Default value of the property is set to , which means default video + resolution is used. + + + + + + Snapshot resolution to set. + + + The property allows to set one of the snapshot resolutions supported by the camera. + Use property to get the list of supported snapshot resolutions. + + The property must be set before camera is started to make any effect. + + Default value of the property is set to , which means default snapshot + resolution is used. + + + + + + Video capabilities of the device. + + + The property provides list of device's video capabilities. + + It is recomended not to call this property immediately after method, since + device may not start yet and provide its information. It is better to call the property + before starting device or a bit after (but not immediately after). + + + + + + Snapshot capabilities of the device. + + + The property provides list of device's snapshot capabilities. + + If the array has zero length, then it means that this device does not support making + snapshots. + + See documentation to for additional information. + + It is recomended not to call this property immediately after method, since + device may not start yet and provide its information. It is better to call the property + before starting device or a bit after (but not immediately after). + + + + + + + + Source COM object of camera capture device. + + + The source COM object of camera capture device is exposed for the + case when user may need get direct access to the object for making some custom + configuration of camera through DirectShow interface, for example. + + + If camera is not running, the property is set to . + + + + + + Local video device selection form. + + + The form provides a standard way of selecting local video + device (USB web camera, capture board, etc. - anything supporting DirectShow + interface), which can be reused across applications. It allows selecting video + device, video size and snapshots size (if device supports snapshots and + user needs them). + + + + + + + + Initializes a new instance of the class. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Specifies if snapshot configuration should be done or not. + + + The property specifies if the dialog form should + allow configuration of snapshot sizes (if selected video source supports + snapshots). If the property is set to , then + the form will provide additional combo box enumerating supported + snapshot sizes. Otherwise the combo boxes will be hidden. + + + If the property is set to and selected + device supports snapshots, then + property of the configured device is set to + . + + Default value of the property is set to . + + + + + + Provides configured video device. + + + The property provides configured video device if user confirmed + the dialog using "OK" button. If user canceled the dialog, the property is + set to . + + + + + Moniker string of the selected video device. + + + The property allows to get moniker string of the selected device + on form completion or set video device which should be selected by default on + form loading. + + + + + Video frame size of the selected device. + + + The property allows to get video size of the selected device + on form completion or set the size to be selected by default on form loading. + + + + + + Snapshot frame size of the selected device. + + + The property allows to get snapshot size of the selected device + on form completion or set the size to be selected by default on form loading + (if property is set ). + + + + + Video input to use with video capture card. + + + The property allows to get video input of the selected device + on form completion or set it to be selected by default on form loading. + + + + + Video input of a capture board. + + + The class is used to describe video input of devices like video capture boards, + which usually provide several inputs. + + + + + + Index of the video input. + + + + + Type of the video input. + + + + + Default video input. Used to specify that it should not be changed. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net40/Accord.Video.DirectShow.dll b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net40/Accord.Video.DirectShow.dll new file mode 100644 index 0000000000..312f11826 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net40/Accord.Video.DirectShow.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net40/Accord.Video.DirectShow.xml b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net40/Accord.Video.DirectShow.xml new file mode 100644 index 0000000000..d670d3f92 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net40/Accord.Video.DirectShow.xml @@ -0,0 +1,4113 @@ + + + + Accord.Video.DirectShow + + + + + The enumeration specifies a setting on a camera. + + + + + Pan control. + + + + + Tilt control. + + + + + Roll control. + + + + + Zoom control. + + + + + Exposure control. + + + + + Iris control. + + + + + Focus control. + + + + + The enumeration defines whether a camera setting is controlled manually or automatically. + + + + + No control flag. + + + + + Auto control Flag. + + + + + Manual control Flag. + + + + + Video source for video files. + + + The video source provides access to video files. DirectShow is used to access video + files. + + Sample usage: + + // create video source + FileVideoSource videoSource = new FileVideoSource( fileName ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + // signal to stop + videoSource.SignalToStop( ); + // ... + + // New frame event handler, which is invoked on each new available video frame + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Video file name. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Worker thread. + + + + + + Notifies client about new frame. + + + New frame's image. + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + Video source is represented by video file name. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Prevent video freezing after screen saver and workstation lock or not. + + + + The value specifies if the class should prevent video freezing during and + after screen saver or workstation lock. To prevent freezing the DirectShow graph + should not contain Renderer filter, which is added by Render() method + of graph. However, in some cases it may be required to call Render() method of graph, since + it may add some more filters, which may be required for playing video. So, the property is + a trade off - it is possible to prevent video freezing skipping adding renderer filter or + it is possible to keep renderer filter, but video may freeze during screen saver. + + The property may become obsolete in the future when approach to disable freezing + and adding all required filters is found. + + The property should be set before calling method + of the class to have effect. + + Default value of this property is set to false. + + + + + + + Enables/disables reference clock on the graph. + + + Disabling reference clocks causes DirectShow graph to run as fast as + it can process data. When enabled, it will process frames according to presentation + time of a video file. + + The property should be set before calling method + of the class to have effect. + + Default value of this property is set to true. + + + + + + The interface provides callback methods for the method. + + + + + + Callback method that receives a pointer to the media sample. + + + Starting time of the sample, in seconds. + Pointer to the sample's IMediaSample interface. + + Return's HRESULT error code. + + + + + Callback method that receives a pointer to the sample bufferþ + + + Starting time of the sample, in seconds. + Pointer to a buffer that contains the sample data. + Length of the buffer pointed to by buffer, in bytes + + Return's HRESULT error code. + + + + + The IAMCameraControl interface controls camera settings such as zoom, pan, aperture adjustment, + or shutter speed. To obtain this interface, query the filter that controls the camera. + + + + + Gets the range and default value of a specified camera property. + + + Specifies the property to query. + Receives the minimum value of the property. + Receives the maximum value of the property. + Receives the step size for the property. + Receives the default value of the property. + Receives a member of the CameraControlFlags enumeration, indicating whether the property is controlled automatically or manually. + + Return's HRESULT error code. + + + + + Sets a specified property on the camera. + + + Specifies the property to set. + Specifies the new value of the property. + Specifies the desired control setting, as a member of the CameraControlFlags enumeration. + + Return's HRESULT error code. + + + + + Gets the current setting of a camera property. + + + Specifies the property to retrieve. + Receives the value of the property. + Receives a member of the CameraControlFlags enumeration. + The returned value indicates whether the setting is controlled manually or automatically. + + Return's HRESULT error code. + + + + + The IAMCrossbar interface routes signals from an analog or digital source to a video capture filter. + + + + + Retrieves the number of input and output pins on the crossbar filter. + + + Variable that receives the number of output pins. + Variable that receives the number of input pins. + + Return's HRESULT error code. + + + + + Queries whether a specified input pin can be routed to a specified output pin. + + + Specifies the index of the output pin. + Specifies the index of input pin. + + Return's HRESULT error code. + + + + + Routes an input pin to an output pin. + + + Specifies the index of the output pin. + Specifies the index of the input pin. + + Return's HRESULT error code. + + + + + Retrieves the input pin that is currently routed to the specified output pin. + + + Specifies the index of the output pin. + Variable that receives the index of the input pin, or -1 if no input pin is routed to this output pin. + + Return's HRESULT error code. + + + + + Retrieves information about a specified pin. + + + Specifies the direction of the pin. Use one of the following values. + Specifies the index of the pin. + Variable that receives the index of the related pin, or –1 if no pin is related to this pin. + Variable that receives a member of the PhysicalConnectorType enumeration, indicating the pin's physical type. + + Return's HRESULT error code. + + + + + This interface sets the output format on certain capture and compression filters, + for both audio and video. + + + + + + Set the output format on the pin. + + + Media type to set. + + Return's HRESULT error code. + + + + + Retrieves the audio or video stream's format. + + + Retrieved media type. + + Return's HRESULT error code. + + + + + Retrieve the number of format capabilities that this pin supports. + + + Variable that receives the number of format capabilities. + Variable that receives the size of the configuration structure in bytes. + + Return's HRESULT error code. + + + + + Retrieve a set of format capabilities. + + + Specifies the format capability to retrieve, indexed from zero. + Retrieved media type. + Byte array, which receives information about capabilities. + + Return's HRESULT error code. + + + + + The interface controls certain video capture operations such as enumerating available + frame rates and image orientation. + + + + + + Retrieves the capabilities of the underlying hardware. + + + Pin to query capabilities from. + Get capabilities of the specified pin. + + Return's HRESULT error code. + + + + + Sets the video control mode of operation. + + + The pin to set the video control mode on. + Value specifying a combination of the flags to set the video control mode. + + Return's HRESULT error code. + + + + + Retrieves the video control mode of operation. + + + The pin to retrieve the video control mode from. + Gets combination of flags, which specify the video control mode. + + Return's HRESULT error code. + + + + + The method retrieves the actual frame rate, expressed as a frame duration in 100-nanosecond units. + USB (Universal Serial Bus) and IEEE 1394 cameras may provide lower frame rates than requested + because of bandwidth availability. This is only available during video streaming. + + + The pin to retrieve the frame rate from. + Gets frame rate in frame duration in 100-nanosecond units. + + Return's HRESULT error code. + + + + + Retrieves the maximum frame rate currently available based on bus bandwidth usage for connections + such as USB and IEEE 1394 camera devices where the maximum frame rate can be limited by bandwidth + availability. + + + The pin to retrieve the maximum frame rate from. + Index of the format to query for maximum frame rate. This index corresponds + to the order in which formats are enumerated by . + Frame image size (width and height) in pixels. + Gets maximum available frame rate. The frame rate is expressed as frame duration in 100-nanosecond units. + + Return's HRESULT error code. + + + + + Retrieves a list of available frame rates. + + + The pin to retrieve the maximum frame rate from. + Index of the format to query for maximum frame rate. This index corresponds + to the order in which formats are enumerated by . + Frame image size (width and height) in pixels. + Number of elements in the list of frame rates. + Array of frame rates in 100-nanosecond units. + + Return's HRESULT error code. + + + + + The IBaseFilter interface provides methods for controlling a filter. + All DirectShow filters expose this interface + + + + + + Returns the class identifier (CLSID) for the component object. + + + Points to the location of the CLSID on return. + + Return's HRESULT error code. + + + + + Stops the filter. + + + Return's HRESULT error code. + + + + + Pauses the filter. + + + Return's HRESULT error code. + + + + + Runs the filter. + + + Reference time corresponding to stream time 0. + + Return's HRESULT error code. + + + + + Retrieves the state of the filter (running, stopped, or paused). + + + Time-out interval, in milliseconds. + Pointer to a variable that receives filter's state. + + Return's HRESULT error code. + + + + + Sets the reference clock for the filter or the filter graph. + + + Pointer to the clock's IReferenceClock interface, or NULL. + + Return's HRESULT error code. + + + + + Retrieves the current reference clock. + + + Address of a variable that receives a pointer to the clock's IReferenceClock interface. + + Return's HRESULT error code. + + + + + Enumerates the pins on this filter. + + + Address of a variable that receives a pointer to the IEnumPins interface. + + Return's HRESULT error code. + + + + + Retrieves the pin with the specified identifier. + + + Pointer to a constant wide-character string that identifies the pin. + Address of a variable that receives a pointer to the pin's IPin interface. + + Return's HRESULT error code. + + + + + Retrieves information about the filter. + + + Pointer to FilterInfo structure. + + Return's HRESULT error code. + + + + + Notifies the filter that it has joined or left the filter graph. + + + Pointer to the Filter Graph Manager's IFilterGraph interface, or NULL + if the filter is leaving the graph. + String that specifies a name for the filter. + + Return's HRESULT error code. + + + + + Retrieves a string containing vendor information. + + + Receives a string containing the vendor information. + + Return's HRESULT error code. + + + + + This interface builds capture graphs and other custom filter graphs. + + + + + + Specify filter graph for the capture graph builder to use. + + + Filter graph's interface. + + Return's HRESULT error code. + + + + + Retrieve the filter graph that the builder is using. + + + Filter graph's interface. + + Return's HRESULT error code. + + + + + Create file writing section of the filter graph. + + + GUID that represents either the media subtype of the output or the + class identifier (CLSID) of a multiplexer filter or file writer filter. + Output file name. + Receives the multiplexer's interface. + Receives the file writer's IFileSinkFilter interface. Can be NULL. + + Return's HRESULT error code. + + + + + Searche the graph for a specified interface, starting from a specified filter. + + + GUID that specifies the search criteria. + GUID that specifies the major media type of an output pin, or NULL. + interface of the filter. The method begins searching from this filter. + Interface identifier (IID) of the interface to locate. + Receives found interface. + + Return's HRESULT error code. + + + + + Connect an output pin on a source filter to a rendering filter, optionally through a compression filter. + + + Pin category. + Major-type GUID that specifies the media type of the output pin. + Starting filter for the connection. + Interface of an intermediate filter, such as a compression filter. Can be NULL. + Sink filter, such as a renderer or mux filter. + + Return's HRESULT error code. + + + + + Set the start and stop times for one or more streams of captured data. + + + Pin category. + Major-type GUID that specifies the media type. + interface that specifies which filter to control. + Start time. + Stop time. + Value that is sent as the second parameter of the + EC_STREAM_CONTROL_STARTED event notification. + Value that is sent as the second parameter of the + EC_STREAM_CONTROL_STOPPED event notification. + + Return's HRESULT error code. + + + + + Preallocate a capture file to a specified size. + + + File name to create or resize. + Size of the file to allocate, in bytes. + + Return's HRESULT error code. + + + + + Copy the valid media data from a capture file. + + + Old file name. + New file name. + Boolean value that specifies whether pressing the ESC key cancels the copy operation. + IAMCopyCaptureFileProgress interface to display progress information, or NULL. + + Return's HRESULT error code. + + + + + + + + Interface on a filter, or to an interface on a pin. + Pin direction (input or output). + Pin category. + Media type. + Boolean value that specifies whether the pin must be unconnected. + Zero-based index of the pin to retrieve, from the set of matching pins. + Interface of the matching pin. + + Return's HRESULT error code. + + + + + The ICreateDevEnum interface creates an enumerator for devices within a particular category, + such as video capture devices, audio capture devices, video compressors, and so forth. + + + + + + Creates a class enumerator for a specified device category. + + + Specifies the class identifier of the device category. + Address of a variable that receives an IEnumMoniker interface pointer + Bitwise combination of zero or more flags. If zero, the method enumerates every filter in the category. + + Return's HRESULT error code. + + + + + This interface is used by applications or other filters to determine + what filters exist in the filter graph. + + + + + + Retrieves the specified number of filters in the enumeration sequence. + + + Number of filters to retrieve. + Array in which to place interfaces. + Actual number of filters placed in the array. + + Return's HRESULT error code. + + + + + Skips a specified number of filters in the enumeration sequence. + + + Number of filters to skip. + + Return's HRESULT error code. + + + + + Resets the enumeration sequence to the beginning. + + + Return's HRESULT error code. + + + + + Makes a copy of the enumerator with the same enumeration state. + + + Duplicate of the enumerator. + + + Return's HRESULT error code. + + + + + + Enumerates pins on a filter. + + + + + + Retrieves a specified number of pins. + + + Number of pins to retrieve. + Array of size cPins that is filled with IPin pointers. + Receives the number of pins retrieved. + + Return's HRESULT error code. + + + + + Skips a specified number of pins in the enumeration sequence. + + + Number of pins to skip. + + Return's HRESULT error code. + + + + + Resets the enumeration sequence to the beginning. + + + Return's HRESULT error code. + + + + + Makes a copy of the enumerator with the same enumeration state. + + + Duplicate of the enumerator. + + Return's HRESULT error code. + + + + + The interface is exposed by source filters to set the file name and media type of the media file that they are to render. + + + + + + Loads the source filter with the file. + + + The name of the file to open. + Media type of the file. This can be null. + + Return's HRESULT error code. + + + + + Retrieves the current file. + + + Name of media file. + Receives media type. + + Return's HRESULT error code. + + + + + The interface provides methods for building a filter graph. An application can use it to add filters to + the graph, connect or disconnect filters, remove filters, and perform other basic operations. + + + + + + Adds a filter to the graph and gives it a name. + + + Filter to add to the graph. + Name of the filter. + + Return's HRESULT error code. + + + + + Removes a filter from the graph. + + + Filter to be removed from the graph. + + Return's HRESULT error code. + + + + + Provides an enumerator for all filters in the graph. + + + Filter enumerator. + + Return's HRESULT error code. + + + + + Finds a filter that was added with a specified name. + + + Name of filter to search for. + Interface of found filter. + + Return's HRESULT error code. + + + + + Connects two pins directly (without intervening filters). + + + Output pin. + Input pin. + Media type to use for the connection. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin. + + + Pin to disconnect and reconnect. + + Return's HRESULT error code. + + + + + Disconnects a specified pin. + + + Pin to disconnect. + + Return's HRESULT error code. + + + + + Sets the reference clock to the default clock. + + + Return's HRESULT error code. + + + + + This interface extends the and + interfaces, which contain methods for building filter graphs. + + + + + + Adds a filter to the graph and gives it a name. + + + Filter to add to the graph. + Name of the filter. + + Return's HRESULT error code. + + + + + Removes a filter from the graph. + + + Filter to be removed from the graph. + + Return's HRESULT error code. + + + + + Provides an enumerator for all filters in the graph. + + + Filter enumerator. + + Return's HRESULT error code. + + + + + Finds a filter that was added with a specified name. + + + Name of filter to search for. + Interface of found filter. + + Return's HRESULT error code. + + + + + Connects two pins directly (without intervening filters). + + + Output pin. + Input pin. + Media type to use for the connection. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin. + + + Pin to disconnect and reconnect. + + Return's HRESULT error code. + + + + + Disconnects a specified pin. + + + Pin to disconnect. + + Return's HRESULT error code. + + + + + Sets the reference clock to the default clock. + + + Return's HRESULT error code. + + + + + Connects two pins. If they will not connect directly, this method connects them with intervening transforms. + + + Output pin. + Input pin. + + Return's HRESULT error code. + + + + + Adds a chain of filters to a specified output pin to render it. + + + Output pin. + + Return's HRESULT error code. + + + + + Builds a filter graph that renders the specified file. + + + Specifies a string that contains file name or device moniker. + Reserved. + + Return's HRESULT error code. + + + + + Adds a source filter to the filter graph for a specific file. + + + Specifies the name of the file to load. + Specifies a name for the source filter. + Variable that receives the interface of the source filter. + + Return's HRESULT error code. + + + + + Sets the file for logging actions taken when attempting to perform an operation. + + + Handle to the log file. + + Return's HRESULT error code. + + + + + Requests that the graph builder return as soon as possible from its current task. + + + Return's HRESULT error code. + + + + + Queries whether the current operation should continue. + + + Return's HRESULT error code. + + + + + + + + Moniker interface. + Bind context interface. + Name for the filter. + Receives source filter's IBaseFilter interface. + The caller must release the interface. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin, + using a specified media type. + + + Pin to disconnect and reconnect. + Media type to reconnect with. + + Return's HRESULT error code. + + + + + Render an output pin, with an option to use existing renderers only. + + + Interface of the output pin. + Flag that specifies how to render the pin. + Reserved. + + Return's HRESULT error code. + + + + + This interface provides methods that enable an application to build a filter graph. + + + + + + Adds a filter to the graph and gives it a name. + + + Filter to add to the graph. + Name of the filter. + + Return's HRESULT error code. + + + + + Removes a filter from the graph. + + + Filter to be removed from the graph. + + Return's HRESULT error code. + + + + + Provides an enumerator for all filters in the graph. + + + Filter enumerator. + + Return's HRESULT error code. + + + + + Finds a filter that was added with a specified name. + + + Name of filter to search for. + Interface of found filter. + + Return's HRESULT error code. + + + + + Connects two pins directly (without intervening filters). + + + Output pin. + Input pin. + Media type to use for the connection. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin. + + + Pin to disconnect and reconnect. + + Return's HRESULT error code. + + + + + Disconnects a specified pin. + + + Pin to disconnect. + + Return's HRESULT error code. + + + + + Sets the reference clock to the default clock. + + + Return's HRESULT error code. + + + + + Connects two pins. If they will not connect directly, this method connects them with intervening transforms. + + + Output pin. + Input pin. + + Return's HRESULT error code. + + + + + Adds a chain of filters to a specified output pin to render it. + + + Output pin. + + Return's HRESULT error code. + + + + + Builds a filter graph that renders the specified file. + + + Specifies a string that contains file name or device moniker. + Reserved. + + Return's HRESULT error code. + + + + + Adds a source filter to the filter graph for a specific file. + + + Specifies the name of the file to load. + Specifies a name for the source filter. + Variable that receives the interface of the source filter. + + Return's HRESULT error code. + + + + + Sets the file for logging actions taken when attempting to perform an operation. + + + Handle to the log file. + + Return's HRESULT error code. + + + + + Requests that the graph builder return as soon as possible from its current task. + + + Return's HRESULT error code. + + + + + Queries whether the current operation should continue. + + + Return's HRESULT error code. + + + + + The interface provides methods for controlling the flow of data through the filter graph. + It includes methods for running, pausing, and stopping the graph. + + + + + + Runs all the filters in the filter graph. + + + Return's HRESULT error code. + + + + + Pauses all filters in the filter graph. + + + Return's HRESULT error code. + + + + + Stops all the filters in the filter graph. + + + Return's HRESULT error code. + + + + + Retrieves the state of the filter graph. + + + Duration of the time-out, in milliseconds, or INFINITE to specify an infinite time-out. + Ìariable that receives a member of the FILTER_STATE enumeration. + + Return's HRESULT error code. + + + + + Builds a filter graph that renders the specified file. + + + Name of the file to render + + Return's HRESULT error code. + + + + + Adds a source filter to the filter graph, for a specified file. + + + Name of the file containing the source video. + Receives interface of filter information object. + + Return's HRESULT error code. + + + + + Retrieves a collection of the filters in the filter graph. + + + Receives the IAMCollection interface. + + Return's HRESULT error code. + + + + + Retrieves a collection of all the filters listed in the registry. + + + Receives the IDispatch interface of IAMCollection object. + + Return's HRESULT error code. + + + + + Pauses the filter graph, allowing filters to queue data, and then stops the filter graph. + + + Return's HRESULT error code. + + + + + The interface inherits contains methods for retrieving event notifications and for overriding the + filter graph's default handling of events. + + + + + Retrieves a handle to a manual-reset event that remains signaled while the queue contains event notifications. + + Pointer to a variable that receives the event handle. + + Return's HRESULT error code. + + + + + Retrieves the next event notification from the event queue. + + + Variable that receives the event code. + Pointer to a variable that receives the first event parameter. + Pointer to a variable that receives the second event parameter. + Time-out interval, in milliseconds. + + Return's HRESULT error code. + + + + + Waits for the filter graph to render all available data. + + + Time-out interval, in milliseconds. Pass zero to return immediately. + Pointer to a variable that receives an event code. + + Return's HRESULT error code. + + + + + Cancels the Filter Graph Manager's default handling for a specified event. + + + Event code for which to cancel default handling. + + Return's HRESULT error code. + + + + + Restores the Filter Graph Manager's default handling for a specified event. + + Event code for which to restore default handling. + + Return's HRESULT error code. + + + + + Frees resources associated with the parameters of an event. + + Event code. + First event parameter. + Second event parameter. + + Return's HRESULT error code. + + + + + Registers a window to process event notifications. + + + Handle to the window, or to stop receiving event messages. + Window message to be passed as the notification. + Value to be passed as the lParam parameter for the lMsg message. + + Return's HRESULT error code. + + + + + Enables or disables event notifications. + + + Value indicating whether to enable or disable event notifications. + + Return's HRESULT error code. + + + + + Determines whether event notifications are enabled. + + + Variable that receives current notification status. + + Return's HRESULT error code. + + + + + The interface provides methods for controlling the flow of data through the filter graph. + It includes methods for running, pausing, and stopping the graph. + + + + + + Provides the CLSID of an object that can be stored persistently in the system. Allows the object to specify which object + handler to use in the client process, as it is used in the default implementation of marshaling. + + + + + Retrieves the class identifier (CLSID) of the object. + + + + + + + This method informs the filter to transition to the new state. + + + Return's HRESULT error code. + + + + + This method informs the filter to transition to the new state. + + + Return's HRESULT error code. + + + + + This method informs the filter to transition to the new (running) state. Passes a time value to synchronize independent streams. + + + Time value of the reference clock. The amount to be added to the IMediaSample time stamp to determine the time at which that sample should be rendered according to the reference clock. That is, it is the reference time at which a sample with a stream time of zero should be rendered. + + Return's HRESULT error code. + + + + + This method determines the filter's state. + + + Duration of the time-out, in milliseconds. To block indefinitely, pass INFINITE. + Returned state of the filter. States include stopped, paused, running, or intermediate (in the process of changing). + + Return's HRESULT error code. + + + + + This method identifies the reference clock to which the filter should synchronize activity. + + + Pointer to the IReferenceClock interface. + + Return's HRESULT error code. + + + + + This method retrieves the current reference clock in use by this filter. + + + Pointer to a reference clock; it will be set to the IReferenceClock interface. + + + Return's HRESULT error code. + + + + + This interface is exposed by all input and output pins of DirectShow filters. + + + + + + Connects the pin to another pin. + + + Other pin to connect to. + Type to use for the connections (optional). + + Return's HRESULT error code. + + + + + Makes a connection to this pin and is called by a connecting pin. + + + Connecting pin. + Media type of the samples to be streamed. + + Return's HRESULT error code. + + + + + Breaks the current pin connection. + + + Return's HRESULT error code. + + + + + Returns a pointer to the connecting pin. + + + Receives IPin interface of connected pin (if any). + + Return's HRESULT error code. + + + + + Returns the media type of this pin's connection. + + + Pointer to an structure. If the pin is connected, + the media type is returned. Otherwise, the structure is initialized to a default state in which + all elements are 0, with the exception of lSampleSize, which is set to 1, and + FixedSizeSamples, which is set to true. + + Return's HRESULT error code. + + + + + Retrieves information about this pin (for example, the name, owning filter, and direction). + + + structure that receives the pin information. + + Return's HRESULT error code. + + + + + Retrieves the direction for this pin. + + + Receives direction of the pin. + + Return's HRESULT error code. + + + + + Retrieves an identifier for the pin. + + + Pin identifier. + + Return's HRESULT error code. + + + + + Queries whether a given media type is acceptable by the pin. + + + structure that specifies the media type. + + Return's HRESULT error code. + + + + + Provides an enumerator for this pin's preferred media types. + + + Address of a variable that receives a pointer to the IEnumMediaTypes interface. + + Return's HRESULT error code. + + + + + Provides an array of the pins to which this pin internally connects. + + + Address of an array of IPin pointers. + On input, specifies the size of the array. When the method returns, + the value is set to the number of pointers returned in the array. + + Return's HRESULT error code. + + + + + Notifies the pin that no additional data is expected. + + + Return's HRESULT error code. + + + + + Begins a flush operation. + + + Return's HRESULT error code. + + + + + Ends a flush operation. + + + Return's HRESULT error code. + + + + + Specifies that samples following this call are grouped as a segment with a given start time, stop time, and rate. + + + Start time of the segment, relative to the original source, in 100-nanosecond units. + End time of the segment, relative to the original source, in 100-nanosecond units. + Rate at which this segment should be processed, as a percentage of the original rate. + + Return's HRESULT error code. + + + + + The IPropertyBag interface provides an object with a property bag in + which the object can persistently save its properties. + + + + + + Read a property from property bag. + + + Property name to read. + Property value. + Caller's error log. + + Return's HRESULT error code. + + + + + Write property to property bag. + + + Property name to read. + Property value. + + Return's HRESULT error code. + + + + + The IReferenceClock interface provides the reference time for the filter graph. + + Filters that can act as a reference clock can expose this interface. It is also exposed by the System Reference Clock. + The filter graph manager uses this interface to synchronize the filter graph. Applications can use this interface to + retrieve the current reference time, or to request notification of an elapsed time. + + + + + The GetTime method retrieves the current reference time. + + + Pointer to a variable that receives the current time, in 100-nanosecond units. + + Return's HRESULT error code. + + + + + The AdviseTime method creates a one-shot advise request. + + + Base reference time, in 100-nanosecond units. See Remarks. + Stream offset time, in 100-nanosecond units. See Remarks. + Handle to an event, created by the caller. + Pointer to a variable that receives an identifier for the advise request. + + Return's HRESULT error code. + + + + + The AdvisePeriodic method creates a periodic advise request. + + + Time of the first notification, in 100-nanosecond units. Must be greater than zero and less than MAX_TIME. + Time between notifications, in 100-nanosecond units. Must be greater than zero. + Handle to a semaphore, created by the caller. + Pointer to a variable that receives an identifier for the advise request. + + Return's HRESULT error code. + + + + + The Unadvise method removes a pending advise request. + + + Identifier of the request to remove. Use the value returned by IReferenceClock::AdviseTime or IReferenceClock::AdvisePeriodic in the pdwAdviseToken parameter. + + Return's HRESULT error code. + + + + + The interface is exposed by the Sample Grabber Filter. It enables an application to retrieve + individual media samples as they move through the filter graph. + + + + + + Specifies whether the filter should stop the graph after receiving one sample. + + + Boolean value specifying whether the filter should stop the graph after receiving one sample. + + Return's HRESULT error code. + + + + + Specifies the media type for the connection on the Sample Grabber's input pin. + + + Specifies the required media type. + + Return's HRESULT error code. + + + + + Retrieves the media type for the connection on the Sample Grabber's input pin. + + + structure, which receives media type. + + Return's HRESULT error code. + + + + + Specifies whether to copy sample data into a buffer as it goes through the filter. + + + Boolean value specifying whether to buffer sample data. + If true, the filter copies sample data into an internal buffer. + + Return's HRESULT error code. + + + + + Retrieves a copy of the sample that the filter received most recently. + + + Pointer to the size of the buffer. If pBuffer is NULL, this parameter receives the required size. + Pointer to a buffer to receive a copy of the sample, or NULL. + + Return's HRESULT error code. + + + + + Not currently implemented. + + + + + Return's HRESULT error code. + + + + + Specifies a callback method to call on incoming samples. + + + interface containing the callback method, or NULL to cancel the callback. + Index specifying the callback method. + + Return's HRESULT error code. + + + + + The interface indicates that an object supports property pages. + + + + + + Fills a counted array of GUID values where each GUID specifies the + CLSID of each property page that can be displayed in the property + sheet for this object. + + + Pointer to a CAUUID structure that must be initialized + and filled before returning. + + Return's HRESULT error code. + + + + + The interface sets properties on the video window. + + + + + + Sets the video window caption. + + + Caption. + + Return's HRESULT error code. + + + + + Retrieves the video window caption. + + + Caption. + + Return's HRESULT error code. + + + + + Sets the window style on the video window. + + + Window style flags. + + Return's HRESULT error code. + + + + + Retrieves the window style on the video window. + + + Window style flags. + + Return's HRESULT error code. + + + + + Sets the extended window style on the video window. + + + Window extended style flags. + + Return's HRESULT error code. + + + + + Retrieves the extended window style on the video window. + + + Window extended style flags. + + Return's HRESULT error code. + + + + + Specifies whether the video renderer automatically shows the video window when it receives video data. + + + Specifies whether the video renderer automatically shows the video window. + + Return's HRESULT error code. + + + + + Queries whether the video renderer automatically shows the video window when it receives video data. + + + REceives window auto show flag. + + Return's HRESULT error code. + + + + + Shows, hides, minimizes, or maximizes the video window. + + + Window state. + + Return's HRESULT error code. + + + + + Queries whether the video window is visible, hidden, minimized, or maximized. + + + Window state. + + Return's HRESULT error code. + + + + + Specifies whether the video window realizes its palette in the background. + + + Value that specifies whether the video renderer realizes it palette in the background. + + Return's HRESULT error code. + + + + + Queries whether the video window realizes its palette in the background. + + + Receives state of background palette flag. + + Return's HRESULT error code. + + + + + Shows or hides the video window. + + + Value that specifies whether to show or hide the window. + + Return's HRESULT error code. + + + + + Queries whether the video window is visible. + + + Visibility flag. + + Return's HRESULT error code. + + + + + Sets the video window's x-coordinate. + + + Specifies the x-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the video window's x-coordinate. + + + x-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Sets the width of the video window. + + + Specifies the width, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the width of the video window. + + + Width, in pixels. + + Return's HRESULT error code. + + + + + Sets the video window's y-coordinate. + + + Specifies the y-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the video window's y-coordinate. + + + y-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Sets the height of the video window. + + + Specifies the height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the height of the video window. + + + Height, in pixels. + + Return's HRESULT error code. + + + + + Specifies a parent window for the video windowþ + + + Specifies a handle to the parent window. + + Return's HRESULT error code. + + + + + Retrieves the video window's parent window, if anyþ + + + Parent window's handle. + + Return's HRESULT error code. + + + + + Specifies a window to receive mouse and keyboard messages from the video window. + + + Specifies a handle to the window. + + Return's HRESULT error code. + + + + + Retrieves the window that receives mouse and keyboard messages from the video window, if any. + + + Window's handle. + + Return's HRESULT error code. + + + + + Retrieves the color that appears around the edges of the destination rectangle. + + + Border's color. + + Return's HRESULT error code. + + + + + Sets the color that appears around the edges of the destination rectangle. + + + Specifies the border color. + + Return's HRESULT error code. + + + + + Queries whether the video renderer is in full-screen mode. + + + Full-screen mode. + + Return's HRESULT error code. + + + + + Enables or disables full-screen mode. + + + Boolean value that specifies whether to enable or disable full-screen mode. + + Return's HRESULT error code. + + + + + Places the video window at the top of the Z order. + + + Value that specifies whether to give the window focus. + + Return's HRESULT error code. + + + + + Forwards a message to the video window. + + + Handle to the window. + Specifies the message. + Message parameter. + Message parameter. + + Return's HRESULT error code. + + + + + Sets the position of the video windowþ + + + Specifies the x-coordinate, in pixels. + Specifies the y-coordinate, in pixels. + Specifies the width, in pixels. + Specifies the height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the position of the video window. + + + x-coordinate, in pixels. + y-coordinate, in pixels. + Width, in pixels. + Height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the minimum ideal size for the video image. + + + Receives the minimum ideal width, in pixels. + Receives the minimum ideal height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the maximum ideal size for the video image. + + + Receives the maximum ideal width, in pixels. + Receives the maximum ideal height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the restored window position. + + + x-coordinate, in pixels. + y-coordinate, in pixels. + Width, in pixels. + Height, in pixels. + + Return's HRESULT error code. + + + + + Hides the cursor. + + + Specifies whether to hide or display the cursor. + + Return's HRESULT error code. + + + + + Queries whether the cursor is hidden. + + + Specifies if cursor is hidden or not. + + Return's HRESULT error code. + + + + + This enumeration indicates a pin's direction. + + + + + + Input pin. + + + + + Output pin. + + + + + The structure describes the format of a media sample. + + + + + + Globally unique identifier (GUID) that specifies the major type of the media sample. + + + + + GUID that specifies the subtype of the media sample. + + + + + If true, samples are of a fixed size. + + + + + If true, samples are compressed using temporal (interframe) compression. + + + + + Size of the sample in bytes. For compressed data, the value can be zero. + + + + + GUID that specifies the structure used for the format block. + + + + + Not used. + + + + + Size of the format block, in bytes. + + + + + Pointer to the format block. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + + + + Dispose the object + + + Indicates if disposing was initiated manually. + + + + + The structure contains information about a pin. + + + + + + Owning filter. + + + + + Direction of the pin. + + + + + Name of the pin. + + + + + Filter's name. + + + + + Owning graph. + + + + + The structure describes the bitmap and color information for a video image. + + + + + + structure that specifies the source video window. + + + + + structure that specifies the destination video window. + + + + + Approximate data rate of the video stream, in bits per second. + + + + + Data error rate, in bit errors per second. + + + + + The desired average display time of the video frames, in 100-nanosecond units. + + + + + structure that contains color and dimension information for the video image bitmap. + + + + + The structure describes the bitmap and color information for a video image (v2). + + + + + + structure that specifies the source video window. + + + + + structure that specifies the destination video window. + + + + + Approximate data rate of the video stream, in bits per second. + + + + + Data error rate, in bit errors per second. + + + + + The desired average display time of the video frames, in 100-nanosecond units. + + + + + Flags that specify how the video is interlaced. + + + + + Flag set to indicate that the duplication of the stream should be restricted. + + + + + The X dimension of picture aspect ratio. + + + + + The Y dimension of picture aspect ratio. + + + + + Reserved for future use. + + + + + Reserved for future use. + + + + + structure that contains color and dimension information for the video image bitmap. + + + + + The structure contains information about the dimensions and color format of a device-independent bitmap (DIB). + + + + + + Specifies the number of bytes required by the structure. + + + + + Specifies the width of the bitmap. + + + + + Specifies the height of the bitmap, in pixels. + + + + + Specifies the number of planes for the target device. This value must be set to 1. + + + + + Specifies the number of bits per pixel. + + + + + If the bitmap is compressed, this member is a FOURCC the specifies the compression. + + + + + Specifies the size, in bytes, of the image. + + + + + Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap. + + + + + Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap. + + + + + Specifies the number of color indices in the color table that are actually used by the bitmap. + + + + + Specifies the number of color indices that are considered important for displaying the bitmap. + + + + + The structure defines the coordinates of the upper-left and lower-right corners of a rectangle. + + + + + + Specifies the x-coordinate of the upper-left corner of the rectangle. + + + + + Specifies the y-coordinate of the upper-left corner of the rectangle. + + + + + Specifies the x-coordinate of the lower-right corner of the rectangle. + + + + + Specifies the y-coordinate of the lower-right corner of the rectangle. + + + + + The CAUUID structure is a Counted Array of UUID or GUID types. + + + + + + Size of the array pointed to by pElems. + + + + + Pointer to an array of UUID values, each of which specifies UUID. + + + + + Performs manual marshaling of pElems to retrieve an array of Guid objects. + + + A managed representation of pElems. + + + + + Enumeration of DirectShow event codes. + + + + + Specifies a filter's state or the state of the filter graph. + + + + + Stopped. The filter is not processing data. + + + + + Paused. The filter is processing data, but not rendering it. + + + + + Running. The filter is processing and rendering data. + + + + + Some miscellaneous functions. + + + + + + Get filter's pin. + + + Filter to get pin of. + Pin's direction. + Pin's number. + + Returns filter's pin. + + + + + Get filter's input pin. + + + Filter to get pin of. + Pin's number. + + Returns filter's pin. + + + + + Get filter's output pin. + + + Filter to get pin of. + Pin's number. + + Returns filter's pin. + + + + + DirectShow class IDs. + + + + + System device enumerator. + + + Equals to CLSID_SystemDeviceEnum. + + + + + Filter graph. + + + Equals to CLSID_FilterGraph. + + + + + Sample grabber. + + + Equals to CLSID_SampleGrabber. + + + + + Capture graph builder. + + + Equals to CLSID_CaptureGraphBuilder2. + + + + + Async reader. + + + Equals to CLSID_AsyncReader. + + + + + DirectShow format types. + + + + + + VideoInfo. + + + Equals to FORMAT_VideoInfo. + + + + + VideoInfo2. + + + Equals to FORMAT_VideoInfo2. + + + + + DirectShow media types. + + + + + + Video. + + + Equals to MEDIATYPE_Video. + + + + + Interleaved. Used by Digital Video (DV). + + + Equals to MEDIATYPE_Interleaved. + + + + + Audio. + + + Equals to MEDIATYPE_Audio. + + + + + Text. + + + Equals to MEDIATYPE_Text. + + + + + Byte stream with no time stamps. + + + Equals to MEDIATYPE_Stream. + + + + + DirectShow media subtypes. + + + + + + YUY2 (packed 4:2:2). + + + Equals to MEDIASUBTYPE_YUYV. + + + + + IYUV. + + + Equals to MEDIASUBTYPE_IYUV. + + + + + A DV encoding format. (FOURCC 'DVSD') + + + Equals to MEDIASUBTYPE_DVSD. + + + + + RGB, 1 bit per pixel (bpp), palettized. + + + Equals to MEDIASUBTYPE_RGB1. + + + + + RGB, 4 bpp, palettized. + + + Equals to MEDIASUBTYPE_RGB4. + + + + + RGB, 8 bpp. + + + Equals to MEDIASUBTYPE_RGB8. + + + + + RGB 565, 16 bpp. + + + Equals to MEDIASUBTYPE_RGB565. + + + + + RGB 555, 16 bpp. + + + Equals to MEDIASUBTYPE_RGB555. + + + + + RGB, 24 bpp. + + + Equals to MEDIASUBTYPE_RGB24. + + + + + RGB, 32 bpp, no alpha channel. + + + Equals to MEDIASUBTYPE_RGB32. + + + + + Data from AVI file. + + + Equals to MEDIASUBTYPE_Avi. + + + + + Advanced Streaming Format (ASF). + + + Equals to MEDIASUBTYPE_Asf. + + + + + DirectShow pin categories. + + + + + + Capture pin. + + + Equals to PIN_CATEGORY_CAPTURE. + + + + + Still image pin. + + + Equals to PIN_CATEGORY_STILL. + + + + Equals to LOOK_UPSTREAM_ONLY. + + + Equals to LOOK_DOWNSTREAM_ONLY. + + + + Some Win32 API used internally. + + + + + + Supplies a pointer to an implementation of IBindCtx (a bind context object). + This object stores information about a particular moniker-binding operation. + + + Reserved for future use; must be zero. + Address of IBindCtx* pointer variable that receives the + interface pointer to the new bind context object. + + Returns S_OK on success. + + + + + Converts a string into a moniker that identifies the object named by the string. + + + Pointer to the IBindCtx interface on the bind context object to be used in this binding operation. + Pointer to a zero-terminated wide character string containing the display name to be parsed. + Pointer to the number of characters of szUserName that were consumed. + Address of IMoniker* pointer variable that receives the interface pointer + to the moniker that was built from szUserName. + + Returns S_OK on success. + + + + + Copy a block of memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's the value of dst - pointer to destination. + + + + + Invokes a new property frame, that is, a property sheet dialog box. + + + Parent window of property sheet dialog box. + Horizontal position for dialog box. + Vertical position for dialog box. + Dialog box caption. + Number of object pointers in ppUnk. + Pointer to the objects for property sheet. + Number of property pages in lpPageClsID. + Array of CLSIDs for each property page. + Locale identifier for property sheet locale. + Reserved. + Reserved. + + Returns S_OK on success. + + + + + DirectShow filter information. + + + + + + Initializes a new instance of the class. + + + Filters's moniker string. + + + + + Initializes a new instance of the class. + + + Filter's moniker object. + + + + + Compare the object with another instance of this class. + + + Object to compare with. + + A signed number indicating the relative values of this instance and value. + + + + + Create an instance of the filter. + + + Filter's moniker string. + + Returns filter's object, which implements IBaseFilter interface. + + The returned filter's object should be released using Marshal.ReleaseComObject(). + + + + + Filter name. + + + + + Filters's moniker string. + + + + + + Collection of filters' information objects. + + + The class allows to enumerate DirectShow filters of specified category. For + a list of categories see . + + Sample usage: + + // enumerate video devices + videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); + // list devices + foreach ( FilterInfo device in videoDevices ) + { + // ... + } + + + + + + + Initializes a new instance of the class. + + + Guid of DirectShow filter category. See . + + Build collection of filters' information objects for the + specified filter category. + + + + + Get filter information object. + + + Index of filter information object to retrieve. + + Filter information object. + + + + + Specifies the physical type of pin (audio or video). + + + + + Default value of connection type. Physically it does not exist, but just either to specify that + connection type should not be changed (input) or was not determined (output). + + + + + Specifies a tuner pin for video. + + + + + Specifies a composite pin for video. + + + + + Specifies an S-Video (Y/C video) pin. + + + + + Specifies an RGB pin for video. + + + + + Specifies a YRYBY (Y, R–Y, B–Y) pin for video. + + + + + Specifies a serial digital pin for video. + + + + + Specifies a parallel digital pin for video. + + + + + Specifies a SCSI (Small Computer System Interface) pin for video. + + + + + Specifies an AUX (auxiliary) pin for video. + + + + + Specifies an IEEE 1394 pin for video. + + + + + Specifies a USB (Universal Serial Bus) pin for video. + + + + + Specifies a video decoder pin. + + + + + Specifies a video encoder pin. + + + + + Specifies a SCART (Peritel) pin for video. + + + + + Not used. + + + + + Specifies a tuner pin for audio. + + + + + Specifies a line pin for audio. + + + + + Specifies a microphone pin. + + + + + Specifies an AES/EBU (Audio Engineering Society/European Broadcast Union) digital pin for audio. + + + + + Specifies an S/PDIF (Sony/Philips Digital Interface Format) digital pin for audio. + + + + + Specifies a SCSI pin for audio. + + + + + Specifies an AUX pin for audio. + + + + + Specifies an IEEE 1394 pin for audio. + + + + + Specifies a USB pin for audio. + + + + + Specifies an audio decoder pin. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized resource of type System.Drawing.Bitmap. + + + + + DirectShow filter categories. + + + + + Audio input device category. + + + Equals to CLSID_AudioInputDeviceCategory. + + + + + Video input device category. + + + Equals to CLSID_VideoInputDeviceCategory. + + + + + Video compressor category. + + + Equals to CLSID_VideoCompressorCategory. + + + + + Audio compressor category + + + Equals to CLSID_AudioCompressorCategory. + + + + + Capabilities of video device such as frame size and frame rate. + + + + + Frame size supported by video device. + + + + + Average frame rate of video device for corresponding frame size. + + + + + Maximum frame rate of video device for corresponding frame size. + + + + + Number of bits per pixel provided by the camera. + + + + + Check if the video capability equals to the specified object. + + + Object to compare with. + + Returns true if both are equal are equal or false otherwise. + + + + + Check if two video capabilities are equal. + + + Second video capability to compare with. + + Returns true if both video capabilities are equal or false otherwise. + + + + + Get hash code of the object. + + + Returns hash code ot the object + + + + Equality operator. + + + First object to check. + Seconds object to check. + + Return true if both objects are equal or false otherwise. + + + + Inequality operator. + + + First object to check. + Seconds object to check. + + Return true if both objects are not equal or false otherwise. + + + + Frame rate supported by video device for corresponding frame size. + + + This field is depricated - should not be used. + Its value equals to . + + + + + + Video source for local video capture device (for example USB webcam). + + + This video source class captures video data from local video capture device, + like USB web camera (or internal), frame grabber, capture board - anything which + supports DirectShow interface. For devices which has a shutter button or + support external software triggering, the class also allows to do snapshots. Both + video size and snapshot size can be configured. + + Sample usage: + + // enumerate video devices + videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); + // create video source + VideoCaptureDevice videoSource = new VideoCaptureDevice( videoDevices[0].MonikerString ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + // signal to stop when you no longer need capturing + videoSource.SignalToStop( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Moniker string of video capture device. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Display property window for the video capture device providing its configuration + capabilities. + + + Handle of parent window. + + If you pass parent window's handle to this method, then the + displayed property page will become modal window and none of the controls from the + parent window will be accessible. In order to make it modeless it is required + to pass as parent window's handle. + + + + The video source does not support configuration property page. + + + + + Display property page of video crossbar (Analog Video Crossbar filter). + + + Handle of parent window. + + The Analog Video Crossbar filter is modeled after a general switching matrix, + with n inputs and m outputs. For example, a video card might have two external connectors: + a coaxial connector for TV, and an S-video input. These would be represented as input pins on + the filter. The displayed property page allows to configure the crossbar by selecting input + of a video card to use. + + This method can be invoked only when video source is running ( is + ). Otherwise it generates exception. + + Use method to check if running video source provides + crossbar configuration. + + + The video source must be running in order to display crossbar property page. + Crossbar configuration is not supported by currently running video source. + + + + + Check if running video source provides crossbar for configuration. + + + Returns if crossbar configuration is available or + otherwise. + + The method reports if the video source provides crossbar configuration + using . + + + + + + Simulates an external trigger. + + + The method simulates external trigger for video cameras, which support + providing still image snapshots. The effect is equivalent as pressing camera's shutter + button - a snapshot will be provided through event. + + The property must be set to + to enable receiving snapshots. + + + + + + Sets a specified property on the camera. + + + Specifies the property to set. + Specifies the new value of the property. + Specifies the desired control setting. + + Returns true on sucee or false otherwise. + + Video source is not specified - device moniker is not set. + Failed creating device object for moniker. + The video source does not support camera control. + + + + + Gets the current setting of a camera property. + + + Specifies the property to retrieve. + Receives the value of the property. + Receives the value indicating whether the setting is controlled manually or automatically + + Returns true on sucee or false otherwise. + + Video source is not specified - device moniker is not set. + Failed creating device object for moniker. + The video source does not support camera control. + + + + + Gets the range and default value of a specified camera property. + + + Specifies the property to query. + Receives the minimum value of the property. + Receives the maximum value of the property. + Receives the step size for the property. + Receives the default value of the property. + Receives a member of the enumeration, indicating whether the property is controlled automatically or manually. + + Returns true on sucee or false otherwise. + + Video source is not specified - device moniker is not set. + Failed creating device object for moniker. + The video source does not support camera control. + + + + + Worker thread. + + + + + + Notifies clients about new frame. + + + New frame's image. + + + + + Notifies clients about new snapshot frame. + + + New snapshot's image. + + + + + Current video input of capture card. + + + The property specifies video input to use for video devices like capture cards + (those which provide crossbar configuration). List of available video inputs can be obtained + from property. + + To check if the video device supports crossbar configuration, the + method can be used. + + This property can be set as before running video device, as while running it. + + By default this property is set to , which means video input + will not be set when running video device, but currently configured will be used. After video device + is started this property will be updated anyway to tell current video input. + + + + + + Available inputs of the video capture card. + + + The property provides list of video inputs for devices like video capture cards. + Such devices usually provide several video inputs, which can be selected using crossbar. + If video device represented by the object of this class supports crossbar, then this property + will list all video inputs. However if it is a regular USB camera, for example, which does not + provide crossbar configuration, the property will provide zero length array. + + Video input to be used can be selected using . See also + method, which provides crossbar configuration dialog. + + It is recomended not to call this property immediately after method, since + device may not start yet and provide its information. It is better to call the property + before starting device or a bit after (but not immediately after). + + + + + + Specifies if snapshots should be provided or not. + + + Some USB cameras/devices may have a shutter button, which may result into snapshot if it + is pressed. So the property specifies if the video source will try providing snapshots or not - it will + check if the camera supports providing still image snapshots. If camera supports snapshots and the property + is set to , then snapshots will be provided through + event. + + Check supported sizes of snapshots using property and set the + desired size using property. + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Snapshot frame event. + + + Notifies clients about new available snapshot frame - the one which comes when + camera's snapshot/shutter button is pressed. + + See documentation to for additional information. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed snapshot frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + Video source is represented by moniker string of video capture device. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Obsolete - no longer in use + + + The property is obsolete. Use property instead. + Setting this property does not have any effect. + + + + + Obsolete - no longer in use + + + The property is obsolete. Use property instead. + Setting this property does not have any effect. + + + + + Obsolete - no longer in use. + + + The property is obsolete. Setting this property does not have any effect. + + + + + Video resolution to set. + + + The property allows to set one of the video resolutions supported by the camera. + Use property to get the list of supported video resolutions. + + The property must be set before camera is started to make any effect. + + Default value of the property is set to , which means default video + resolution is used. + + + + + + Snapshot resolution to set. + + + The property allows to set one of the snapshot resolutions supported by the camera. + Use property to get the list of supported snapshot resolutions. + + The property must be set before camera is started to make any effect. + + Default value of the property is set to , which means default snapshot + resolution is used. + + + + + + Video capabilities of the device. + + + The property provides list of device's video capabilities. + + It is recomended not to call this property immediately after method, since + device may not start yet and provide its information. It is better to call the property + before starting device or a bit after (but not immediately after). + + + + + + Snapshot capabilities of the device. + + + The property provides list of device's snapshot capabilities. + + If the array has zero length, then it means that this device does not support making + snapshots. + + See documentation to for additional information. + + It is recomended not to call this property immediately after method, since + device may not start yet and provide its information. It is better to call the property + before starting device or a bit after (but not immediately after). + + + + + + + + Source COM object of camera capture device. + + + The source COM object of camera capture device is exposed for the + case when user may need get direct access to the object for making some custom + configuration of camera through DirectShow interface, for example. + + + If camera is not running, the property is set to . + + + + + + Local video device selection form. + + + The form provides a standard way of selecting local video + device (USB web camera, capture board, etc. - anything supporting DirectShow + interface), which can be reused across applications. It allows selecting video + device, video size and snapshots size (if device supports snapshots and + user needs them). + + + + + + + + Initializes a new instance of the class. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Specifies if snapshot configuration should be done or not. + + + The property specifies if the dialog form should + allow configuration of snapshot sizes (if selected video source supports + snapshots). If the property is set to , then + the form will provide additional combo box enumerating supported + snapshot sizes. Otherwise the combo boxes will be hidden. + + + If the property is set to and selected + device supports snapshots, then + property of the configured device is set to + . + + Default value of the property is set to . + + + + + + Provides configured video device. + + + The property provides configured video device if user confirmed + the dialog using "OK" button. If user canceled the dialog, the property is + set to . + + + + + Moniker string of the selected video device. + + + The property allows to get moniker string of the selected device + on form completion or set video device which should be selected by default on + form loading. + + + + + Video frame size of the selected device. + + + The property allows to get video size of the selected device + on form completion or set the size to be selected by default on form loading. + + + + + + Snapshot frame size of the selected device. + + + The property allows to get snapshot size of the selected device + on form completion or set the size to be selected by default on form loading + (if property is set ). + + + + + Video input to use with video capture card. + + + The property allows to get video input of the selected device + on form completion or set it to be selected by default on form loading. + + + + + Video input of a capture board. + + + The class is used to describe video input of devices like video capture boards, + which usually provide several inputs. + + + + + + Index of the video input. + + + + + Type of the video input. + + + + + Default video input. Used to specify that it should not be changed. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net45/Accord.Video.DirectShow.dll b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net45/Accord.Video.DirectShow.dll new file mode 100644 index 0000000000..b7f481124 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net45/Accord.Video.DirectShow.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net45/Accord.Video.DirectShow.xml b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net45/Accord.Video.DirectShow.xml new file mode 100644 index 0000000000..d670d3f92 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.DirectShow.3.0.2/lib/net45/Accord.Video.DirectShow.xml @@ -0,0 +1,4113 @@ + + + + Accord.Video.DirectShow + + + + + The enumeration specifies a setting on a camera. + + + + + Pan control. + + + + + Tilt control. + + + + + Roll control. + + + + + Zoom control. + + + + + Exposure control. + + + + + Iris control. + + + + + Focus control. + + + + + The enumeration defines whether a camera setting is controlled manually or automatically. + + + + + No control flag. + + + + + Auto control Flag. + + + + + Manual control Flag. + + + + + Video source for video files. + + + The video source provides access to video files. DirectShow is used to access video + files. + + Sample usage: + + // create video source + FileVideoSource videoSource = new FileVideoSource( fileName ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + // signal to stop + videoSource.SignalToStop( ); + // ... + + // New frame event handler, which is invoked on each new available video frame + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Video file name. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Worker thread. + + + + + + Notifies client about new frame. + + + New frame's image. + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + Video source is represented by video file name. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Prevent video freezing after screen saver and workstation lock or not. + + + + The value specifies if the class should prevent video freezing during and + after screen saver or workstation lock. To prevent freezing the DirectShow graph + should not contain Renderer filter, which is added by Render() method + of graph. However, in some cases it may be required to call Render() method of graph, since + it may add some more filters, which may be required for playing video. So, the property is + a trade off - it is possible to prevent video freezing skipping adding renderer filter or + it is possible to keep renderer filter, but video may freeze during screen saver. + + The property may become obsolete in the future when approach to disable freezing + and adding all required filters is found. + + The property should be set before calling method + of the class to have effect. + + Default value of this property is set to false. + + + + + + + Enables/disables reference clock on the graph. + + + Disabling reference clocks causes DirectShow graph to run as fast as + it can process data. When enabled, it will process frames according to presentation + time of a video file. + + The property should be set before calling method + of the class to have effect. + + Default value of this property is set to true. + + + + + + The interface provides callback methods for the method. + + + + + + Callback method that receives a pointer to the media sample. + + + Starting time of the sample, in seconds. + Pointer to the sample's IMediaSample interface. + + Return's HRESULT error code. + + + + + Callback method that receives a pointer to the sample bufferþ + + + Starting time of the sample, in seconds. + Pointer to a buffer that contains the sample data. + Length of the buffer pointed to by buffer, in bytes + + Return's HRESULT error code. + + + + + The IAMCameraControl interface controls camera settings such as zoom, pan, aperture adjustment, + or shutter speed. To obtain this interface, query the filter that controls the camera. + + + + + Gets the range and default value of a specified camera property. + + + Specifies the property to query. + Receives the minimum value of the property. + Receives the maximum value of the property. + Receives the step size for the property. + Receives the default value of the property. + Receives a member of the CameraControlFlags enumeration, indicating whether the property is controlled automatically or manually. + + Return's HRESULT error code. + + + + + Sets a specified property on the camera. + + + Specifies the property to set. + Specifies the new value of the property. + Specifies the desired control setting, as a member of the CameraControlFlags enumeration. + + Return's HRESULT error code. + + + + + Gets the current setting of a camera property. + + + Specifies the property to retrieve. + Receives the value of the property. + Receives a member of the CameraControlFlags enumeration. + The returned value indicates whether the setting is controlled manually or automatically. + + Return's HRESULT error code. + + + + + The IAMCrossbar interface routes signals from an analog or digital source to a video capture filter. + + + + + Retrieves the number of input and output pins on the crossbar filter. + + + Variable that receives the number of output pins. + Variable that receives the number of input pins. + + Return's HRESULT error code. + + + + + Queries whether a specified input pin can be routed to a specified output pin. + + + Specifies the index of the output pin. + Specifies the index of input pin. + + Return's HRESULT error code. + + + + + Routes an input pin to an output pin. + + + Specifies the index of the output pin. + Specifies the index of the input pin. + + Return's HRESULT error code. + + + + + Retrieves the input pin that is currently routed to the specified output pin. + + + Specifies the index of the output pin. + Variable that receives the index of the input pin, or -1 if no input pin is routed to this output pin. + + Return's HRESULT error code. + + + + + Retrieves information about a specified pin. + + + Specifies the direction of the pin. Use one of the following values. + Specifies the index of the pin. + Variable that receives the index of the related pin, or –1 if no pin is related to this pin. + Variable that receives a member of the PhysicalConnectorType enumeration, indicating the pin's physical type. + + Return's HRESULT error code. + + + + + This interface sets the output format on certain capture and compression filters, + for both audio and video. + + + + + + Set the output format on the pin. + + + Media type to set. + + Return's HRESULT error code. + + + + + Retrieves the audio or video stream's format. + + + Retrieved media type. + + Return's HRESULT error code. + + + + + Retrieve the number of format capabilities that this pin supports. + + + Variable that receives the number of format capabilities. + Variable that receives the size of the configuration structure in bytes. + + Return's HRESULT error code. + + + + + Retrieve a set of format capabilities. + + + Specifies the format capability to retrieve, indexed from zero. + Retrieved media type. + Byte array, which receives information about capabilities. + + Return's HRESULT error code. + + + + + The interface controls certain video capture operations such as enumerating available + frame rates and image orientation. + + + + + + Retrieves the capabilities of the underlying hardware. + + + Pin to query capabilities from. + Get capabilities of the specified pin. + + Return's HRESULT error code. + + + + + Sets the video control mode of operation. + + + The pin to set the video control mode on. + Value specifying a combination of the flags to set the video control mode. + + Return's HRESULT error code. + + + + + Retrieves the video control mode of operation. + + + The pin to retrieve the video control mode from. + Gets combination of flags, which specify the video control mode. + + Return's HRESULT error code. + + + + + The method retrieves the actual frame rate, expressed as a frame duration in 100-nanosecond units. + USB (Universal Serial Bus) and IEEE 1394 cameras may provide lower frame rates than requested + because of bandwidth availability. This is only available during video streaming. + + + The pin to retrieve the frame rate from. + Gets frame rate in frame duration in 100-nanosecond units. + + Return's HRESULT error code. + + + + + Retrieves the maximum frame rate currently available based on bus bandwidth usage for connections + such as USB and IEEE 1394 camera devices where the maximum frame rate can be limited by bandwidth + availability. + + + The pin to retrieve the maximum frame rate from. + Index of the format to query for maximum frame rate. This index corresponds + to the order in which formats are enumerated by . + Frame image size (width and height) in pixels. + Gets maximum available frame rate. The frame rate is expressed as frame duration in 100-nanosecond units. + + Return's HRESULT error code. + + + + + Retrieves a list of available frame rates. + + + The pin to retrieve the maximum frame rate from. + Index of the format to query for maximum frame rate. This index corresponds + to the order in which formats are enumerated by . + Frame image size (width and height) in pixels. + Number of elements in the list of frame rates. + Array of frame rates in 100-nanosecond units. + + Return's HRESULT error code. + + + + + The IBaseFilter interface provides methods for controlling a filter. + All DirectShow filters expose this interface + + + + + + Returns the class identifier (CLSID) for the component object. + + + Points to the location of the CLSID on return. + + Return's HRESULT error code. + + + + + Stops the filter. + + + Return's HRESULT error code. + + + + + Pauses the filter. + + + Return's HRESULT error code. + + + + + Runs the filter. + + + Reference time corresponding to stream time 0. + + Return's HRESULT error code. + + + + + Retrieves the state of the filter (running, stopped, or paused). + + + Time-out interval, in milliseconds. + Pointer to a variable that receives filter's state. + + Return's HRESULT error code. + + + + + Sets the reference clock for the filter or the filter graph. + + + Pointer to the clock's IReferenceClock interface, or NULL. + + Return's HRESULT error code. + + + + + Retrieves the current reference clock. + + + Address of a variable that receives a pointer to the clock's IReferenceClock interface. + + Return's HRESULT error code. + + + + + Enumerates the pins on this filter. + + + Address of a variable that receives a pointer to the IEnumPins interface. + + Return's HRESULT error code. + + + + + Retrieves the pin with the specified identifier. + + + Pointer to a constant wide-character string that identifies the pin. + Address of a variable that receives a pointer to the pin's IPin interface. + + Return's HRESULT error code. + + + + + Retrieves information about the filter. + + + Pointer to FilterInfo structure. + + Return's HRESULT error code. + + + + + Notifies the filter that it has joined or left the filter graph. + + + Pointer to the Filter Graph Manager's IFilterGraph interface, or NULL + if the filter is leaving the graph. + String that specifies a name for the filter. + + Return's HRESULT error code. + + + + + Retrieves a string containing vendor information. + + + Receives a string containing the vendor information. + + Return's HRESULT error code. + + + + + This interface builds capture graphs and other custom filter graphs. + + + + + + Specify filter graph for the capture graph builder to use. + + + Filter graph's interface. + + Return's HRESULT error code. + + + + + Retrieve the filter graph that the builder is using. + + + Filter graph's interface. + + Return's HRESULT error code. + + + + + Create file writing section of the filter graph. + + + GUID that represents either the media subtype of the output or the + class identifier (CLSID) of a multiplexer filter or file writer filter. + Output file name. + Receives the multiplexer's interface. + Receives the file writer's IFileSinkFilter interface. Can be NULL. + + Return's HRESULT error code. + + + + + Searche the graph for a specified interface, starting from a specified filter. + + + GUID that specifies the search criteria. + GUID that specifies the major media type of an output pin, or NULL. + interface of the filter. The method begins searching from this filter. + Interface identifier (IID) of the interface to locate. + Receives found interface. + + Return's HRESULT error code. + + + + + Connect an output pin on a source filter to a rendering filter, optionally through a compression filter. + + + Pin category. + Major-type GUID that specifies the media type of the output pin. + Starting filter for the connection. + Interface of an intermediate filter, such as a compression filter. Can be NULL. + Sink filter, such as a renderer or mux filter. + + Return's HRESULT error code. + + + + + Set the start and stop times for one or more streams of captured data. + + + Pin category. + Major-type GUID that specifies the media type. + interface that specifies which filter to control. + Start time. + Stop time. + Value that is sent as the second parameter of the + EC_STREAM_CONTROL_STARTED event notification. + Value that is sent as the second parameter of the + EC_STREAM_CONTROL_STOPPED event notification. + + Return's HRESULT error code. + + + + + Preallocate a capture file to a specified size. + + + File name to create or resize. + Size of the file to allocate, in bytes. + + Return's HRESULT error code. + + + + + Copy the valid media data from a capture file. + + + Old file name. + New file name. + Boolean value that specifies whether pressing the ESC key cancels the copy operation. + IAMCopyCaptureFileProgress interface to display progress information, or NULL. + + Return's HRESULT error code. + + + + + + + + Interface on a filter, or to an interface on a pin. + Pin direction (input or output). + Pin category. + Media type. + Boolean value that specifies whether the pin must be unconnected. + Zero-based index of the pin to retrieve, from the set of matching pins. + Interface of the matching pin. + + Return's HRESULT error code. + + + + + The ICreateDevEnum interface creates an enumerator for devices within a particular category, + such as video capture devices, audio capture devices, video compressors, and so forth. + + + + + + Creates a class enumerator for a specified device category. + + + Specifies the class identifier of the device category. + Address of a variable that receives an IEnumMoniker interface pointer + Bitwise combination of zero or more flags. If zero, the method enumerates every filter in the category. + + Return's HRESULT error code. + + + + + This interface is used by applications or other filters to determine + what filters exist in the filter graph. + + + + + + Retrieves the specified number of filters in the enumeration sequence. + + + Number of filters to retrieve. + Array in which to place interfaces. + Actual number of filters placed in the array. + + Return's HRESULT error code. + + + + + Skips a specified number of filters in the enumeration sequence. + + + Number of filters to skip. + + Return's HRESULT error code. + + + + + Resets the enumeration sequence to the beginning. + + + Return's HRESULT error code. + + + + + Makes a copy of the enumerator with the same enumeration state. + + + Duplicate of the enumerator. + + + Return's HRESULT error code. + + + + + + Enumerates pins on a filter. + + + + + + Retrieves a specified number of pins. + + + Number of pins to retrieve. + Array of size cPins that is filled with IPin pointers. + Receives the number of pins retrieved. + + Return's HRESULT error code. + + + + + Skips a specified number of pins in the enumeration sequence. + + + Number of pins to skip. + + Return's HRESULT error code. + + + + + Resets the enumeration sequence to the beginning. + + + Return's HRESULT error code. + + + + + Makes a copy of the enumerator with the same enumeration state. + + + Duplicate of the enumerator. + + Return's HRESULT error code. + + + + + The interface is exposed by source filters to set the file name and media type of the media file that they are to render. + + + + + + Loads the source filter with the file. + + + The name of the file to open. + Media type of the file. This can be null. + + Return's HRESULT error code. + + + + + Retrieves the current file. + + + Name of media file. + Receives media type. + + Return's HRESULT error code. + + + + + The interface provides methods for building a filter graph. An application can use it to add filters to + the graph, connect or disconnect filters, remove filters, and perform other basic operations. + + + + + + Adds a filter to the graph and gives it a name. + + + Filter to add to the graph. + Name of the filter. + + Return's HRESULT error code. + + + + + Removes a filter from the graph. + + + Filter to be removed from the graph. + + Return's HRESULT error code. + + + + + Provides an enumerator for all filters in the graph. + + + Filter enumerator. + + Return's HRESULT error code. + + + + + Finds a filter that was added with a specified name. + + + Name of filter to search for. + Interface of found filter. + + Return's HRESULT error code. + + + + + Connects two pins directly (without intervening filters). + + + Output pin. + Input pin. + Media type to use for the connection. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin. + + + Pin to disconnect and reconnect. + + Return's HRESULT error code. + + + + + Disconnects a specified pin. + + + Pin to disconnect. + + Return's HRESULT error code. + + + + + Sets the reference clock to the default clock. + + + Return's HRESULT error code. + + + + + This interface extends the and + interfaces, which contain methods for building filter graphs. + + + + + + Adds a filter to the graph and gives it a name. + + + Filter to add to the graph. + Name of the filter. + + Return's HRESULT error code. + + + + + Removes a filter from the graph. + + + Filter to be removed from the graph. + + Return's HRESULT error code. + + + + + Provides an enumerator for all filters in the graph. + + + Filter enumerator. + + Return's HRESULT error code. + + + + + Finds a filter that was added with a specified name. + + + Name of filter to search for. + Interface of found filter. + + Return's HRESULT error code. + + + + + Connects two pins directly (without intervening filters). + + + Output pin. + Input pin. + Media type to use for the connection. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin. + + + Pin to disconnect and reconnect. + + Return's HRESULT error code. + + + + + Disconnects a specified pin. + + + Pin to disconnect. + + Return's HRESULT error code. + + + + + Sets the reference clock to the default clock. + + + Return's HRESULT error code. + + + + + Connects two pins. If they will not connect directly, this method connects them with intervening transforms. + + + Output pin. + Input pin. + + Return's HRESULT error code. + + + + + Adds a chain of filters to a specified output pin to render it. + + + Output pin. + + Return's HRESULT error code. + + + + + Builds a filter graph that renders the specified file. + + + Specifies a string that contains file name or device moniker. + Reserved. + + Return's HRESULT error code. + + + + + Adds a source filter to the filter graph for a specific file. + + + Specifies the name of the file to load. + Specifies a name for the source filter. + Variable that receives the interface of the source filter. + + Return's HRESULT error code. + + + + + Sets the file for logging actions taken when attempting to perform an operation. + + + Handle to the log file. + + Return's HRESULT error code. + + + + + Requests that the graph builder return as soon as possible from its current task. + + + Return's HRESULT error code. + + + + + Queries whether the current operation should continue. + + + Return's HRESULT error code. + + + + + + + + Moniker interface. + Bind context interface. + Name for the filter. + Receives source filter's IBaseFilter interface. + The caller must release the interface. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin, + using a specified media type. + + + Pin to disconnect and reconnect. + Media type to reconnect with. + + Return's HRESULT error code. + + + + + Render an output pin, with an option to use existing renderers only. + + + Interface of the output pin. + Flag that specifies how to render the pin. + Reserved. + + Return's HRESULT error code. + + + + + This interface provides methods that enable an application to build a filter graph. + + + + + + Adds a filter to the graph and gives it a name. + + + Filter to add to the graph. + Name of the filter. + + Return's HRESULT error code. + + + + + Removes a filter from the graph. + + + Filter to be removed from the graph. + + Return's HRESULT error code. + + + + + Provides an enumerator for all filters in the graph. + + + Filter enumerator. + + Return's HRESULT error code. + + + + + Finds a filter that was added with a specified name. + + + Name of filter to search for. + Interface of found filter. + + Return's HRESULT error code. + + + + + Connects two pins directly (without intervening filters). + + + Output pin. + Input pin. + Media type to use for the connection. + + Return's HRESULT error code. + + + + + Breaks the existing pin connection and reconnects it to the same pin. + + + Pin to disconnect and reconnect. + + Return's HRESULT error code. + + + + + Disconnects a specified pin. + + + Pin to disconnect. + + Return's HRESULT error code. + + + + + Sets the reference clock to the default clock. + + + Return's HRESULT error code. + + + + + Connects two pins. If they will not connect directly, this method connects them with intervening transforms. + + + Output pin. + Input pin. + + Return's HRESULT error code. + + + + + Adds a chain of filters to a specified output pin to render it. + + + Output pin. + + Return's HRESULT error code. + + + + + Builds a filter graph that renders the specified file. + + + Specifies a string that contains file name or device moniker. + Reserved. + + Return's HRESULT error code. + + + + + Adds a source filter to the filter graph for a specific file. + + + Specifies the name of the file to load. + Specifies a name for the source filter. + Variable that receives the interface of the source filter. + + Return's HRESULT error code. + + + + + Sets the file for logging actions taken when attempting to perform an operation. + + + Handle to the log file. + + Return's HRESULT error code. + + + + + Requests that the graph builder return as soon as possible from its current task. + + + Return's HRESULT error code. + + + + + Queries whether the current operation should continue. + + + Return's HRESULT error code. + + + + + The interface provides methods for controlling the flow of data through the filter graph. + It includes methods for running, pausing, and stopping the graph. + + + + + + Runs all the filters in the filter graph. + + + Return's HRESULT error code. + + + + + Pauses all filters in the filter graph. + + + Return's HRESULT error code. + + + + + Stops all the filters in the filter graph. + + + Return's HRESULT error code. + + + + + Retrieves the state of the filter graph. + + + Duration of the time-out, in milliseconds, or INFINITE to specify an infinite time-out. + Ìariable that receives a member of the FILTER_STATE enumeration. + + Return's HRESULT error code. + + + + + Builds a filter graph that renders the specified file. + + + Name of the file to render + + Return's HRESULT error code. + + + + + Adds a source filter to the filter graph, for a specified file. + + + Name of the file containing the source video. + Receives interface of filter information object. + + Return's HRESULT error code. + + + + + Retrieves a collection of the filters in the filter graph. + + + Receives the IAMCollection interface. + + Return's HRESULT error code. + + + + + Retrieves a collection of all the filters listed in the registry. + + + Receives the IDispatch interface of IAMCollection object. + + Return's HRESULT error code. + + + + + Pauses the filter graph, allowing filters to queue data, and then stops the filter graph. + + + Return's HRESULT error code. + + + + + The interface inherits contains methods for retrieving event notifications and for overriding the + filter graph's default handling of events. + + + + + Retrieves a handle to a manual-reset event that remains signaled while the queue contains event notifications. + + Pointer to a variable that receives the event handle. + + Return's HRESULT error code. + + + + + Retrieves the next event notification from the event queue. + + + Variable that receives the event code. + Pointer to a variable that receives the first event parameter. + Pointer to a variable that receives the second event parameter. + Time-out interval, in milliseconds. + + Return's HRESULT error code. + + + + + Waits for the filter graph to render all available data. + + + Time-out interval, in milliseconds. Pass zero to return immediately. + Pointer to a variable that receives an event code. + + Return's HRESULT error code. + + + + + Cancels the Filter Graph Manager's default handling for a specified event. + + + Event code for which to cancel default handling. + + Return's HRESULT error code. + + + + + Restores the Filter Graph Manager's default handling for a specified event. + + Event code for which to restore default handling. + + Return's HRESULT error code. + + + + + Frees resources associated with the parameters of an event. + + Event code. + First event parameter. + Second event parameter. + + Return's HRESULT error code. + + + + + Registers a window to process event notifications. + + + Handle to the window, or to stop receiving event messages. + Window message to be passed as the notification. + Value to be passed as the lParam parameter for the lMsg message. + + Return's HRESULT error code. + + + + + Enables or disables event notifications. + + + Value indicating whether to enable or disable event notifications. + + Return's HRESULT error code. + + + + + Determines whether event notifications are enabled. + + + Variable that receives current notification status. + + Return's HRESULT error code. + + + + + The interface provides methods for controlling the flow of data through the filter graph. + It includes methods for running, pausing, and stopping the graph. + + + + + + Provides the CLSID of an object that can be stored persistently in the system. Allows the object to specify which object + handler to use in the client process, as it is used in the default implementation of marshaling. + + + + + Retrieves the class identifier (CLSID) of the object. + + + + + + + This method informs the filter to transition to the new state. + + + Return's HRESULT error code. + + + + + This method informs the filter to transition to the new state. + + + Return's HRESULT error code. + + + + + This method informs the filter to transition to the new (running) state. Passes a time value to synchronize independent streams. + + + Time value of the reference clock. The amount to be added to the IMediaSample time stamp to determine the time at which that sample should be rendered according to the reference clock. That is, it is the reference time at which a sample with a stream time of zero should be rendered. + + Return's HRESULT error code. + + + + + This method determines the filter's state. + + + Duration of the time-out, in milliseconds. To block indefinitely, pass INFINITE. + Returned state of the filter. States include stopped, paused, running, or intermediate (in the process of changing). + + Return's HRESULT error code. + + + + + This method identifies the reference clock to which the filter should synchronize activity. + + + Pointer to the IReferenceClock interface. + + Return's HRESULT error code. + + + + + This method retrieves the current reference clock in use by this filter. + + + Pointer to a reference clock; it will be set to the IReferenceClock interface. + + + Return's HRESULT error code. + + + + + This interface is exposed by all input and output pins of DirectShow filters. + + + + + + Connects the pin to another pin. + + + Other pin to connect to. + Type to use for the connections (optional). + + Return's HRESULT error code. + + + + + Makes a connection to this pin and is called by a connecting pin. + + + Connecting pin. + Media type of the samples to be streamed. + + Return's HRESULT error code. + + + + + Breaks the current pin connection. + + + Return's HRESULT error code. + + + + + Returns a pointer to the connecting pin. + + + Receives IPin interface of connected pin (if any). + + Return's HRESULT error code. + + + + + Returns the media type of this pin's connection. + + + Pointer to an structure. If the pin is connected, + the media type is returned. Otherwise, the structure is initialized to a default state in which + all elements are 0, with the exception of lSampleSize, which is set to 1, and + FixedSizeSamples, which is set to true. + + Return's HRESULT error code. + + + + + Retrieves information about this pin (for example, the name, owning filter, and direction). + + + structure that receives the pin information. + + Return's HRESULT error code. + + + + + Retrieves the direction for this pin. + + + Receives direction of the pin. + + Return's HRESULT error code. + + + + + Retrieves an identifier for the pin. + + + Pin identifier. + + Return's HRESULT error code. + + + + + Queries whether a given media type is acceptable by the pin. + + + structure that specifies the media type. + + Return's HRESULT error code. + + + + + Provides an enumerator for this pin's preferred media types. + + + Address of a variable that receives a pointer to the IEnumMediaTypes interface. + + Return's HRESULT error code. + + + + + Provides an array of the pins to which this pin internally connects. + + + Address of an array of IPin pointers. + On input, specifies the size of the array. When the method returns, + the value is set to the number of pointers returned in the array. + + Return's HRESULT error code. + + + + + Notifies the pin that no additional data is expected. + + + Return's HRESULT error code. + + + + + Begins a flush operation. + + + Return's HRESULT error code. + + + + + Ends a flush operation. + + + Return's HRESULT error code. + + + + + Specifies that samples following this call are grouped as a segment with a given start time, stop time, and rate. + + + Start time of the segment, relative to the original source, in 100-nanosecond units. + End time of the segment, relative to the original source, in 100-nanosecond units. + Rate at which this segment should be processed, as a percentage of the original rate. + + Return's HRESULT error code. + + + + + The IPropertyBag interface provides an object with a property bag in + which the object can persistently save its properties. + + + + + + Read a property from property bag. + + + Property name to read. + Property value. + Caller's error log. + + Return's HRESULT error code. + + + + + Write property to property bag. + + + Property name to read. + Property value. + + Return's HRESULT error code. + + + + + The IReferenceClock interface provides the reference time for the filter graph. + + Filters that can act as a reference clock can expose this interface. It is also exposed by the System Reference Clock. + The filter graph manager uses this interface to synchronize the filter graph. Applications can use this interface to + retrieve the current reference time, or to request notification of an elapsed time. + + + + + The GetTime method retrieves the current reference time. + + + Pointer to a variable that receives the current time, in 100-nanosecond units. + + Return's HRESULT error code. + + + + + The AdviseTime method creates a one-shot advise request. + + + Base reference time, in 100-nanosecond units. See Remarks. + Stream offset time, in 100-nanosecond units. See Remarks. + Handle to an event, created by the caller. + Pointer to a variable that receives an identifier for the advise request. + + Return's HRESULT error code. + + + + + The AdvisePeriodic method creates a periodic advise request. + + + Time of the first notification, in 100-nanosecond units. Must be greater than zero and less than MAX_TIME. + Time between notifications, in 100-nanosecond units. Must be greater than zero. + Handle to a semaphore, created by the caller. + Pointer to a variable that receives an identifier for the advise request. + + Return's HRESULT error code. + + + + + The Unadvise method removes a pending advise request. + + + Identifier of the request to remove. Use the value returned by IReferenceClock::AdviseTime or IReferenceClock::AdvisePeriodic in the pdwAdviseToken parameter. + + Return's HRESULT error code. + + + + + The interface is exposed by the Sample Grabber Filter. It enables an application to retrieve + individual media samples as they move through the filter graph. + + + + + + Specifies whether the filter should stop the graph after receiving one sample. + + + Boolean value specifying whether the filter should stop the graph after receiving one sample. + + Return's HRESULT error code. + + + + + Specifies the media type for the connection on the Sample Grabber's input pin. + + + Specifies the required media type. + + Return's HRESULT error code. + + + + + Retrieves the media type for the connection on the Sample Grabber's input pin. + + + structure, which receives media type. + + Return's HRESULT error code. + + + + + Specifies whether to copy sample data into a buffer as it goes through the filter. + + + Boolean value specifying whether to buffer sample data. + If true, the filter copies sample data into an internal buffer. + + Return's HRESULT error code. + + + + + Retrieves a copy of the sample that the filter received most recently. + + + Pointer to the size of the buffer. If pBuffer is NULL, this parameter receives the required size. + Pointer to a buffer to receive a copy of the sample, or NULL. + + Return's HRESULT error code. + + + + + Not currently implemented. + + + + + Return's HRESULT error code. + + + + + Specifies a callback method to call on incoming samples. + + + interface containing the callback method, or NULL to cancel the callback. + Index specifying the callback method. + + Return's HRESULT error code. + + + + + The interface indicates that an object supports property pages. + + + + + + Fills a counted array of GUID values where each GUID specifies the + CLSID of each property page that can be displayed in the property + sheet for this object. + + + Pointer to a CAUUID structure that must be initialized + and filled before returning. + + Return's HRESULT error code. + + + + + The interface sets properties on the video window. + + + + + + Sets the video window caption. + + + Caption. + + Return's HRESULT error code. + + + + + Retrieves the video window caption. + + + Caption. + + Return's HRESULT error code. + + + + + Sets the window style on the video window. + + + Window style flags. + + Return's HRESULT error code. + + + + + Retrieves the window style on the video window. + + + Window style flags. + + Return's HRESULT error code. + + + + + Sets the extended window style on the video window. + + + Window extended style flags. + + Return's HRESULT error code. + + + + + Retrieves the extended window style on the video window. + + + Window extended style flags. + + Return's HRESULT error code. + + + + + Specifies whether the video renderer automatically shows the video window when it receives video data. + + + Specifies whether the video renderer automatically shows the video window. + + Return's HRESULT error code. + + + + + Queries whether the video renderer automatically shows the video window when it receives video data. + + + REceives window auto show flag. + + Return's HRESULT error code. + + + + + Shows, hides, minimizes, or maximizes the video window. + + + Window state. + + Return's HRESULT error code. + + + + + Queries whether the video window is visible, hidden, minimized, or maximized. + + + Window state. + + Return's HRESULT error code. + + + + + Specifies whether the video window realizes its palette in the background. + + + Value that specifies whether the video renderer realizes it palette in the background. + + Return's HRESULT error code. + + + + + Queries whether the video window realizes its palette in the background. + + + Receives state of background palette flag. + + Return's HRESULT error code. + + + + + Shows or hides the video window. + + + Value that specifies whether to show or hide the window. + + Return's HRESULT error code. + + + + + Queries whether the video window is visible. + + + Visibility flag. + + Return's HRESULT error code. + + + + + Sets the video window's x-coordinate. + + + Specifies the x-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the video window's x-coordinate. + + + x-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Sets the width of the video window. + + + Specifies the width, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the width of the video window. + + + Width, in pixels. + + Return's HRESULT error code. + + + + + Sets the video window's y-coordinate. + + + Specifies the y-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the video window's y-coordinate. + + + y-coordinate, in pixels. + + Return's HRESULT error code. + + + + + Sets the height of the video window. + + + Specifies the height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the height of the video window. + + + Height, in pixels. + + Return's HRESULT error code. + + + + + Specifies a parent window for the video windowþ + + + Specifies a handle to the parent window. + + Return's HRESULT error code. + + + + + Retrieves the video window's parent window, if anyþ + + + Parent window's handle. + + Return's HRESULT error code. + + + + + Specifies a window to receive mouse and keyboard messages from the video window. + + + Specifies a handle to the window. + + Return's HRESULT error code. + + + + + Retrieves the window that receives mouse and keyboard messages from the video window, if any. + + + Window's handle. + + Return's HRESULT error code. + + + + + Retrieves the color that appears around the edges of the destination rectangle. + + + Border's color. + + Return's HRESULT error code. + + + + + Sets the color that appears around the edges of the destination rectangle. + + + Specifies the border color. + + Return's HRESULT error code. + + + + + Queries whether the video renderer is in full-screen mode. + + + Full-screen mode. + + Return's HRESULT error code. + + + + + Enables or disables full-screen mode. + + + Boolean value that specifies whether to enable or disable full-screen mode. + + Return's HRESULT error code. + + + + + Places the video window at the top of the Z order. + + + Value that specifies whether to give the window focus. + + Return's HRESULT error code. + + + + + Forwards a message to the video window. + + + Handle to the window. + Specifies the message. + Message parameter. + Message parameter. + + Return's HRESULT error code. + + + + + Sets the position of the video windowþ + + + Specifies the x-coordinate, in pixels. + Specifies the y-coordinate, in pixels. + Specifies the width, in pixels. + Specifies the height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the position of the video window. + + + x-coordinate, in pixels. + y-coordinate, in pixels. + Width, in pixels. + Height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the minimum ideal size for the video image. + + + Receives the minimum ideal width, in pixels. + Receives the minimum ideal height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the maximum ideal size for the video image. + + + Receives the maximum ideal width, in pixels. + Receives the maximum ideal height, in pixels. + + Return's HRESULT error code. + + + + + Retrieves the restored window position. + + + x-coordinate, in pixels. + y-coordinate, in pixels. + Width, in pixels. + Height, in pixels. + + Return's HRESULT error code. + + + + + Hides the cursor. + + + Specifies whether to hide or display the cursor. + + Return's HRESULT error code. + + + + + Queries whether the cursor is hidden. + + + Specifies if cursor is hidden or not. + + Return's HRESULT error code. + + + + + This enumeration indicates a pin's direction. + + + + + + Input pin. + + + + + Output pin. + + + + + The structure describes the format of a media sample. + + + + + + Globally unique identifier (GUID) that specifies the major type of the media sample. + + + + + GUID that specifies the subtype of the media sample. + + + + + If true, samples are of a fixed size. + + + + + If true, samples are compressed using temporal (interframe) compression. + + + + + Size of the sample in bytes. For compressed data, the value can be zero. + + + + + GUID that specifies the structure used for the format block. + + + + + Not used. + + + + + Size of the format block, in bytes. + + + + + Pointer to the format block. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + + + + Dispose the object + + + Indicates if disposing was initiated manually. + + + + + The structure contains information about a pin. + + + + + + Owning filter. + + + + + Direction of the pin. + + + + + Name of the pin. + + + + + Filter's name. + + + + + Owning graph. + + + + + The structure describes the bitmap and color information for a video image. + + + + + + structure that specifies the source video window. + + + + + structure that specifies the destination video window. + + + + + Approximate data rate of the video stream, in bits per second. + + + + + Data error rate, in bit errors per second. + + + + + The desired average display time of the video frames, in 100-nanosecond units. + + + + + structure that contains color and dimension information for the video image bitmap. + + + + + The structure describes the bitmap and color information for a video image (v2). + + + + + + structure that specifies the source video window. + + + + + structure that specifies the destination video window. + + + + + Approximate data rate of the video stream, in bits per second. + + + + + Data error rate, in bit errors per second. + + + + + The desired average display time of the video frames, in 100-nanosecond units. + + + + + Flags that specify how the video is interlaced. + + + + + Flag set to indicate that the duplication of the stream should be restricted. + + + + + The X dimension of picture aspect ratio. + + + + + The Y dimension of picture aspect ratio. + + + + + Reserved for future use. + + + + + Reserved for future use. + + + + + structure that contains color and dimension information for the video image bitmap. + + + + + The structure contains information about the dimensions and color format of a device-independent bitmap (DIB). + + + + + + Specifies the number of bytes required by the structure. + + + + + Specifies the width of the bitmap. + + + + + Specifies the height of the bitmap, in pixels. + + + + + Specifies the number of planes for the target device. This value must be set to 1. + + + + + Specifies the number of bits per pixel. + + + + + If the bitmap is compressed, this member is a FOURCC the specifies the compression. + + + + + Specifies the size, in bytes, of the image. + + + + + Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap. + + + + + Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap. + + + + + Specifies the number of color indices in the color table that are actually used by the bitmap. + + + + + Specifies the number of color indices that are considered important for displaying the bitmap. + + + + + The structure defines the coordinates of the upper-left and lower-right corners of a rectangle. + + + + + + Specifies the x-coordinate of the upper-left corner of the rectangle. + + + + + Specifies the y-coordinate of the upper-left corner of the rectangle. + + + + + Specifies the x-coordinate of the lower-right corner of the rectangle. + + + + + Specifies the y-coordinate of the lower-right corner of the rectangle. + + + + + The CAUUID structure is a Counted Array of UUID or GUID types. + + + + + + Size of the array pointed to by pElems. + + + + + Pointer to an array of UUID values, each of which specifies UUID. + + + + + Performs manual marshaling of pElems to retrieve an array of Guid objects. + + + A managed representation of pElems. + + + + + Enumeration of DirectShow event codes. + + + + + Specifies a filter's state or the state of the filter graph. + + + + + Stopped. The filter is not processing data. + + + + + Paused. The filter is processing data, but not rendering it. + + + + + Running. The filter is processing and rendering data. + + + + + Some miscellaneous functions. + + + + + + Get filter's pin. + + + Filter to get pin of. + Pin's direction. + Pin's number. + + Returns filter's pin. + + + + + Get filter's input pin. + + + Filter to get pin of. + Pin's number. + + Returns filter's pin. + + + + + Get filter's output pin. + + + Filter to get pin of. + Pin's number. + + Returns filter's pin. + + + + + DirectShow class IDs. + + + + + System device enumerator. + + + Equals to CLSID_SystemDeviceEnum. + + + + + Filter graph. + + + Equals to CLSID_FilterGraph. + + + + + Sample grabber. + + + Equals to CLSID_SampleGrabber. + + + + + Capture graph builder. + + + Equals to CLSID_CaptureGraphBuilder2. + + + + + Async reader. + + + Equals to CLSID_AsyncReader. + + + + + DirectShow format types. + + + + + + VideoInfo. + + + Equals to FORMAT_VideoInfo. + + + + + VideoInfo2. + + + Equals to FORMAT_VideoInfo2. + + + + + DirectShow media types. + + + + + + Video. + + + Equals to MEDIATYPE_Video. + + + + + Interleaved. Used by Digital Video (DV). + + + Equals to MEDIATYPE_Interleaved. + + + + + Audio. + + + Equals to MEDIATYPE_Audio. + + + + + Text. + + + Equals to MEDIATYPE_Text. + + + + + Byte stream with no time stamps. + + + Equals to MEDIATYPE_Stream. + + + + + DirectShow media subtypes. + + + + + + YUY2 (packed 4:2:2). + + + Equals to MEDIASUBTYPE_YUYV. + + + + + IYUV. + + + Equals to MEDIASUBTYPE_IYUV. + + + + + A DV encoding format. (FOURCC 'DVSD') + + + Equals to MEDIASUBTYPE_DVSD. + + + + + RGB, 1 bit per pixel (bpp), palettized. + + + Equals to MEDIASUBTYPE_RGB1. + + + + + RGB, 4 bpp, palettized. + + + Equals to MEDIASUBTYPE_RGB4. + + + + + RGB, 8 bpp. + + + Equals to MEDIASUBTYPE_RGB8. + + + + + RGB 565, 16 bpp. + + + Equals to MEDIASUBTYPE_RGB565. + + + + + RGB 555, 16 bpp. + + + Equals to MEDIASUBTYPE_RGB555. + + + + + RGB, 24 bpp. + + + Equals to MEDIASUBTYPE_RGB24. + + + + + RGB, 32 bpp, no alpha channel. + + + Equals to MEDIASUBTYPE_RGB32. + + + + + Data from AVI file. + + + Equals to MEDIASUBTYPE_Avi. + + + + + Advanced Streaming Format (ASF). + + + Equals to MEDIASUBTYPE_Asf. + + + + + DirectShow pin categories. + + + + + + Capture pin. + + + Equals to PIN_CATEGORY_CAPTURE. + + + + + Still image pin. + + + Equals to PIN_CATEGORY_STILL. + + + + Equals to LOOK_UPSTREAM_ONLY. + + + Equals to LOOK_DOWNSTREAM_ONLY. + + + + Some Win32 API used internally. + + + + + + Supplies a pointer to an implementation of IBindCtx (a bind context object). + This object stores information about a particular moniker-binding operation. + + + Reserved for future use; must be zero. + Address of IBindCtx* pointer variable that receives the + interface pointer to the new bind context object. + + Returns S_OK on success. + + + + + Converts a string into a moniker that identifies the object named by the string. + + + Pointer to the IBindCtx interface on the bind context object to be used in this binding operation. + Pointer to a zero-terminated wide character string containing the display name to be parsed. + Pointer to the number of characters of szUserName that were consumed. + Address of IMoniker* pointer variable that receives the interface pointer + to the moniker that was built from szUserName. + + Returns S_OK on success. + + + + + Copy a block of memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's the value of dst - pointer to destination. + + + + + Invokes a new property frame, that is, a property sheet dialog box. + + + Parent window of property sheet dialog box. + Horizontal position for dialog box. + Vertical position for dialog box. + Dialog box caption. + Number of object pointers in ppUnk. + Pointer to the objects for property sheet. + Number of property pages in lpPageClsID. + Array of CLSIDs for each property page. + Locale identifier for property sheet locale. + Reserved. + Reserved. + + Returns S_OK on success. + + + + + DirectShow filter information. + + + + + + Initializes a new instance of the class. + + + Filters's moniker string. + + + + + Initializes a new instance of the class. + + + Filter's moniker object. + + + + + Compare the object with another instance of this class. + + + Object to compare with. + + A signed number indicating the relative values of this instance and value. + + + + + Create an instance of the filter. + + + Filter's moniker string. + + Returns filter's object, which implements IBaseFilter interface. + + The returned filter's object should be released using Marshal.ReleaseComObject(). + + + + + Filter name. + + + + + Filters's moniker string. + + + + + + Collection of filters' information objects. + + + The class allows to enumerate DirectShow filters of specified category. For + a list of categories see . + + Sample usage: + + // enumerate video devices + videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); + // list devices + foreach ( FilterInfo device in videoDevices ) + { + // ... + } + + + + + + + Initializes a new instance of the class. + + + Guid of DirectShow filter category. See . + + Build collection of filters' information objects for the + specified filter category. + + + + + Get filter information object. + + + Index of filter information object to retrieve. + + Filter information object. + + + + + Specifies the physical type of pin (audio or video). + + + + + Default value of connection type. Physically it does not exist, but just either to specify that + connection type should not be changed (input) or was not determined (output). + + + + + Specifies a tuner pin for video. + + + + + Specifies a composite pin for video. + + + + + Specifies an S-Video (Y/C video) pin. + + + + + Specifies an RGB pin for video. + + + + + Specifies a YRYBY (Y, R–Y, B–Y) pin for video. + + + + + Specifies a serial digital pin for video. + + + + + Specifies a parallel digital pin for video. + + + + + Specifies a SCSI (Small Computer System Interface) pin for video. + + + + + Specifies an AUX (auxiliary) pin for video. + + + + + Specifies an IEEE 1394 pin for video. + + + + + Specifies a USB (Universal Serial Bus) pin for video. + + + + + Specifies a video decoder pin. + + + + + Specifies a video encoder pin. + + + + + Specifies a SCART (Peritel) pin for video. + + + + + Not used. + + + + + Specifies a tuner pin for audio. + + + + + Specifies a line pin for audio. + + + + + Specifies a microphone pin. + + + + + Specifies an AES/EBU (Audio Engineering Society/European Broadcast Union) digital pin for audio. + + + + + Specifies an S/PDIF (Sony/Philips Digital Interface Format) digital pin for audio. + + + + + Specifies a SCSI pin for audio. + + + + + Specifies an AUX pin for audio. + + + + + Specifies an IEEE 1394 pin for audio. + + + + + Specifies a USB pin for audio. + + + + + Specifies an audio decoder pin. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized resource of type System.Drawing.Bitmap. + + + + + DirectShow filter categories. + + + + + Audio input device category. + + + Equals to CLSID_AudioInputDeviceCategory. + + + + + Video input device category. + + + Equals to CLSID_VideoInputDeviceCategory. + + + + + Video compressor category. + + + Equals to CLSID_VideoCompressorCategory. + + + + + Audio compressor category + + + Equals to CLSID_AudioCompressorCategory. + + + + + Capabilities of video device such as frame size and frame rate. + + + + + Frame size supported by video device. + + + + + Average frame rate of video device for corresponding frame size. + + + + + Maximum frame rate of video device for corresponding frame size. + + + + + Number of bits per pixel provided by the camera. + + + + + Check if the video capability equals to the specified object. + + + Object to compare with. + + Returns true if both are equal are equal or false otherwise. + + + + + Check if two video capabilities are equal. + + + Second video capability to compare with. + + Returns true if both video capabilities are equal or false otherwise. + + + + + Get hash code of the object. + + + Returns hash code ot the object + + + + Equality operator. + + + First object to check. + Seconds object to check. + + Return true if both objects are equal or false otherwise. + + + + Inequality operator. + + + First object to check. + Seconds object to check. + + Return true if both objects are not equal or false otherwise. + + + + Frame rate supported by video device for corresponding frame size. + + + This field is depricated - should not be used. + Its value equals to . + + + + + + Video source for local video capture device (for example USB webcam). + + + This video source class captures video data from local video capture device, + like USB web camera (or internal), frame grabber, capture board - anything which + supports DirectShow interface. For devices which has a shutter button or + support external software triggering, the class also allows to do snapshots. Both + video size and snapshot size can be configured. + + Sample usage: + + // enumerate video devices + videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); + // create video source + VideoCaptureDevice videoSource = new VideoCaptureDevice( videoDevices[0].MonikerString ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + // signal to stop when you no longer need capturing + videoSource.SignalToStop( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Moniker string of video capture device. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Display property window for the video capture device providing its configuration + capabilities. + + + Handle of parent window. + + If you pass parent window's handle to this method, then the + displayed property page will become modal window and none of the controls from the + parent window will be accessible. In order to make it modeless it is required + to pass as parent window's handle. + + + + The video source does not support configuration property page. + + + + + Display property page of video crossbar (Analog Video Crossbar filter). + + + Handle of parent window. + + The Analog Video Crossbar filter is modeled after a general switching matrix, + with n inputs and m outputs. For example, a video card might have two external connectors: + a coaxial connector for TV, and an S-video input. These would be represented as input pins on + the filter. The displayed property page allows to configure the crossbar by selecting input + of a video card to use. + + This method can be invoked only when video source is running ( is + ). Otherwise it generates exception. + + Use method to check if running video source provides + crossbar configuration. + + + The video source must be running in order to display crossbar property page. + Crossbar configuration is not supported by currently running video source. + + + + + Check if running video source provides crossbar for configuration. + + + Returns if crossbar configuration is available or + otherwise. + + The method reports if the video source provides crossbar configuration + using . + + + + + + Simulates an external trigger. + + + The method simulates external trigger for video cameras, which support + providing still image snapshots. The effect is equivalent as pressing camera's shutter + button - a snapshot will be provided through event. + + The property must be set to + to enable receiving snapshots. + + + + + + Sets a specified property on the camera. + + + Specifies the property to set. + Specifies the new value of the property. + Specifies the desired control setting. + + Returns true on sucee or false otherwise. + + Video source is not specified - device moniker is not set. + Failed creating device object for moniker. + The video source does not support camera control. + + + + + Gets the current setting of a camera property. + + + Specifies the property to retrieve. + Receives the value of the property. + Receives the value indicating whether the setting is controlled manually or automatically + + Returns true on sucee or false otherwise. + + Video source is not specified - device moniker is not set. + Failed creating device object for moniker. + The video source does not support camera control. + + + + + Gets the range and default value of a specified camera property. + + + Specifies the property to query. + Receives the minimum value of the property. + Receives the maximum value of the property. + Receives the step size for the property. + Receives the default value of the property. + Receives a member of the enumeration, indicating whether the property is controlled automatically or manually. + + Returns true on sucee or false otherwise. + + Video source is not specified - device moniker is not set. + Failed creating device object for moniker. + The video source does not support camera control. + + + + + Worker thread. + + + + + + Notifies clients about new frame. + + + New frame's image. + + + + + Notifies clients about new snapshot frame. + + + New snapshot's image. + + + + + Current video input of capture card. + + + The property specifies video input to use for video devices like capture cards + (those which provide crossbar configuration). List of available video inputs can be obtained + from property. + + To check if the video device supports crossbar configuration, the + method can be used. + + This property can be set as before running video device, as while running it. + + By default this property is set to , which means video input + will not be set when running video device, but currently configured will be used. After video device + is started this property will be updated anyway to tell current video input. + + + + + + Available inputs of the video capture card. + + + The property provides list of video inputs for devices like video capture cards. + Such devices usually provide several video inputs, which can be selected using crossbar. + If video device represented by the object of this class supports crossbar, then this property + will list all video inputs. However if it is a regular USB camera, for example, which does not + provide crossbar configuration, the property will provide zero length array. + + Video input to be used can be selected using . See also + method, which provides crossbar configuration dialog. + + It is recomended not to call this property immediately after method, since + device may not start yet and provide its information. It is better to call the property + before starting device or a bit after (but not immediately after). + + + + + + Specifies if snapshots should be provided or not. + + + Some USB cameras/devices may have a shutter button, which may result into snapshot if it + is pressed. So the property specifies if the video source will try providing snapshots or not - it will + check if the camera supports providing still image snapshots. If camera supports snapshots and the property + is set to , then snapshots will be provided through + event. + + Check supported sizes of snapshots using property and set the + desired size using property. + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Snapshot frame event. + + + Notifies clients about new available snapshot frame - the one which comes when + camera's snapshot/shutter button is pressed. + + See documentation to for additional information. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed snapshot frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Video source. + + + Video source is represented by moniker string of video capture device. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Obsolete - no longer in use + + + The property is obsolete. Use property instead. + Setting this property does not have any effect. + + + + + Obsolete - no longer in use + + + The property is obsolete. Use property instead. + Setting this property does not have any effect. + + + + + Obsolete - no longer in use. + + + The property is obsolete. Setting this property does not have any effect. + + + + + Video resolution to set. + + + The property allows to set one of the video resolutions supported by the camera. + Use property to get the list of supported video resolutions. + + The property must be set before camera is started to make any effect. + + Default value of the property is set to , which means default video + resolution is used. + + + + + + Snapshot resolution to set. + + + The property allows to set one of the snapshot resolutions supported by the camera. + Use property to get the list of supported snapshot resolutions. + + The property must be set before camera is started to make any effect. + + Default value of the property is set to , which means default snapshot + resolution is used. + + + + + + Video capabilities of the device. + + + The property provides list of device's video capabilities. + + It is recomended not to call this property immediately after method, since + device may not start yet and provide its information. It is better to call the property + before starting device or a bit after (but not immediately after). + + + + + + Snapshot capabilities of the device. + + + The property provides list of device's snapshot capabilities. + + If the array has zero length, then it means that this device does not support making + snapshots. + + See documentation to for additional information. + + It is recomended not to call this property immediately after method, since + device may not start yet and provide its information. It is better to call the property + before starting device or a bit after (but not immediately after). + + + + + + + + Source COM object of camera capture device. + + + The source COM object of camera capture device is exposed for the + case when user may need get direct access to the object for making some custom + configuration of camera through DirectShow interface, for example. + + + If camera is not running, the property is set to . + + + + + + Local video device selection form. + + + The form provides a standard way of selecting local video + device (USB web camera, capture board, etc. - anything supporting DirectShow + interface), which can be reused across applications. It allows selecting video + device, video size and snapshots size (if device supports snapshots and + user needs them). + + + + + + + + Initializes a new instance of the class. + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Specifies if snapshot configuration should be done or not. + + + The property specifies if the dialog form should + allow configuration of snapshot sizes (if selected video source supports + snapshots). If the property is set to , then + the form will provide additional combo box enumerating supported + snapshot sizes. Otherwise the combo boxes will be hidden. + + + If the property is set to and selected + device supports snapshots, then + property of the configured device is set to + . + + Default value of the property is set to . + + + + + + Provides configured video device. + + + The property provides configured video device if user confirmed + the dialog using "OK" button. If user canceled the dialog, the property is + set to . + + + + + Moniker string of the selected video device. + + + The property allows to get moniker string of the selected device + on form completion or set video device which should be selected by default on + form loading. + + + + + Video frame size of the selected device. + + + The property allows to get video size of the selected device + on form completion or set the size to be selected by default on form loading. + + + + + + Snapshot frame size of the selected device. + + + The property allows to get snapshot size of the selected device + on form completion or set the size to be selected by default on form loading + (if property is set ). + + + + + Video input to use with video capture card. + + + The property allows to get video input of the selected device + on form completion or set it to be selected by default on form loading. + + + + + Video input of a capture board. + + + The class is used to describe video input of devices like video capture boards, + which usually provide several inputs. + + + + + + Index of the video input. + + + + + Type of the video input. + + + + + Default video input. Used to specify that it should not be changed. + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/Accord.Video.FFMPEG.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/Accord.Video.FFMPEG.3.0.2.nupkg new file mode 100644 index 0000000000..8cf60f2ad Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/Accord.Video.FFMPEG.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/Accord.Video.FFMPEG.targets b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/Accord.Video.FFMPEG.targets new file mode 100644 index 0000000000..a236bdc85 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/Accord.Video.FFMPEG.targets @@ -0,0 +1,29 @@ + + + + + + + + x86 + + + + + $(PrepareForRunDependsOn); + CopyNativeBinaries + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/FFMPEG-README.txt b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/FFMPEG-README.txt new file mode 100644 index 0000000000..b4472b004 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/FFMPEG-README.txt @@ -0,0 +1,80 @@ +This is a FFmpeg Win32 shared build by Kyle Schwarz. + +Zeranoe's FFmpeg Builds Home Page: http://ffmpeg.zeranoe.com/builds/ + +Built on Jan 27 2012 18:37:07 + +FFmpeg version git-01fcbdf + libavutil 51. 34.101 / 51. 34.101 + libavcodec 53. 60.100 / 53. 60.100 + libavformat 53. 31.100 / 53. 31.100 + libavdevice 53. 4.100 / 53. 4.100 + libavfilter 2. 60.100 / 2. 60.100 + libswscale 2. 1.100 / 2. 1.100 + libswresample 0. 6.100 / 0. 6.100 + libpostproc 52. 0.100 / 52. 0.100 + +FFmpeg configured with: + --disable-static + --enable-shared + --enable-gpl + --enable-version3 + --disable-w32threads + --enable-runtime-cpudetect + --enable-avisynth + --enable-bzlib + --enable-frei0r + --enable-libopencore-amrnb + --enable-libopencore-amrwb + --enable-libfreetype + --enable-libgsm + --enable-libmp3lame + --enable-libopenjpeg + --enable-librtmp + --enable-libschroedinger + --enable-libspeex + --enable-libtheora + --enable-libvo-aacenc + --enable-libvo-amrwbenc + --enable-libvorbis + --enable-libvpx + --enable-libx264 + --enable-libxavs + --enable-libxvid + --enable-zlib + +The source code for this FFmpeg build can be found at: + http://ffmpeg.zeranoe.com/builds/source/ffmpeg/ + +This version of FFmpeg was built on: + Ubuntu Desktop 10.04: http://www.ubuntu.com/desktop + +The cross-compile toolchain used to compile this FFmpeg was: + MinGW-w64: http://mingw-w64.sourceforge.net/ + winpthreads (part of MinGW-w64) + +The GCC version used to compile this FFmpeg was: + GCC 4.6.2: http://gcc.gnu.org/ + +The external libaries compiled into this FFmpeg are: + bzip2 1.0.6 http://www.bzip.org + Frei0r 1.3 http://frei0r.dyne.org/ + opencore-amr 0.1.2 http://sourceforge.net/projects/opencore-amr/ + FreeType 2.4.6 http://www.freetype.org/ + gsm 1.0.13 http://libgsm.sourcearchive.com/ + LAME 3.98.4 http://lame.sourceforge.net/ + OpenJPEG 1.4 http://www.openjpeg.org/ + RTMP git-60218d0a http://rtmpdump.mplayerhq.hu/ + Schroedinger 1.0.10 http://diracvideo.org/ + Speex 1.2rc1 http://www.speex.org/ + Theora 1.1.1 http://www.theora.org/ + vo-aacenc 0.1.1 http://sourceforge.net/projects/opencore-amr/ + vo-amrwbenc 0.1.1 http://sourceforge.net/projects/opencore-amr/ + Vorbis 1.3.2 http://www.vorbis.com/ + libvpx v0.9.7-p1 http://www.webmproject.org/code/ + x264 git-bcd41db http://www.videolan.org/developers/x264.html + XAVS r55 http://xavs.sourceforge.net/ + Xvid 1.3.2 http://www.xvid.org/ + zlib 1.2.5 http://zlib.net/ + +License for each library can be found in the licenses folder. diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avcodec-53.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avcodec-53.dll new file mode 100644 index 0000000000..f762b3df0 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avcodec-53.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avdevice-53.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avdevice-53.dll new file mode 100644 index 0000000000..e7cb3b436 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avdevice-53.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avformat-53.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avformat-53.dll new file mode 100644 index 0000000000..21267dd12 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avformat-53.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avutil-51.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avutil-51.dll new file mode 100644 index 0000000000..ef175d8c5 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/avutil-51.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/postproc-52.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/postproc-52.dll new file mode 100644 index 0000000000..2a77b3bfa Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/postproc-52.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/swresample-0.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/swresample-0.dll new file mode 100644 index 0000000000..1e6d8e117 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/swresample-0.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/swscale-2.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/swscale-2.dll new file mode 100644 index 0000000000..f060f9f24 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/build/x86/swscale-2.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net35/Accord.Video.FFMPEG.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net35/Accord.Video.FFMPEG.dll new file mode 100644 index 0000000000..f257a3022 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net35/Accord.Video.FFMPEG.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net35/Accord.Video.FFMPEG.xml b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net35/Accord.Video.FFMPEG.xml new file mode 100644 index 0000000000..52f8281f3 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net35/Accord.Video.FFMPEG.xml @@ -0,0 +1,5808 @@ + + + + "Accord.Video.FFMPEG (GPL)" + + + + Get the AVClass for swsContext. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + + Convert an 8-bit paletted frame into a frame with a color depth of 24 bits. + + With the palette format "ABCD", the destination frame ends up with the format "ABC". + + @param src source frame buffer + @param dst destination frame buffer + @param num_pixels number of pixels to convert + @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src + + + + Convert an 8-bit paletted frame into a frame with a color depth of 32 bits. + + The output frame will have the same packed format as the palette. + + @param src source frame buffer + @param dst destination frame buffer + @param num_pixels number of pixels to convert + @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src + + + +Allocate and return a clone of the vector a, that is a vector +with the same coefficients as a. + + + +Scale all the coefficients of a so that their sum equals height. + + + +Scale all the coefficients of a by the scalar value. + + + +Allocate and return a vector with just one coefficient, with +value 1.0. + + + +Allocate and return a vector with length coefficients, all +with the same value c. + + + +Return a normalized Gaussian curve used to filter stuff +quality = 3 is high quality, lower is lower quality. + + + +Allocate and return an uninitialized vector with length coefficients. + + + +@return -1 if not supported + + + +@param inv_table the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x] +@return -1 if not supported + + + + Scale the image slice in srcSlice and put the resulting scaled + slice in the image in dst. A slice is a sequence of consecutive + rows in an image. + + Slices have to be provided in sequential order, either in + top-bottom or bottom-top order. If slices are provided in + non-sequential order the behavior of the function is undefined. + + @param c the scaling context previously created with + sws_getContext() + @param srcSlice the array containing the pointers to the planes of + the source slice + @param srcStride the array containing the strides for each plane of + the source image + @param srcSliceY the position in the source image of the slice to + process, that is the number (counted starting from + zero) in the image of the first row of the slice + @param srcSliceH the height of the source slice, that is the number + of rows in the slice + @param dst the array containing the pointers to the planes of + the destination image + @param dstStride the array containing the strides for each plane of + the destination image + @return the height of the output slice + + + +Free the swscaler context swsContext. +If swsContext is NULL, then does nothing. + + + + Initialize the swscaler context sws_context. + + @return zero or positive value on success, a negative value on + error + + + +Allocate an empty SwsContext. This must be filled and passed to +sws_init_context(). For filling see AVOptions, options.c and +sws_setColorspaceDetails(). + + + Allocate and return an SwsContext. You need it to perform + scaling/conversion operations using sws_scale(). + + @param srcW the width of the source image + @param srcH the height of the source image + @param srcFormat the source image format + @param dstW the width of the destination image + @param dstH the height of the destination image + @param dstFormat the destination image format + @param flags specify which algorithm and options to use for rescaling + @return a pointer to an allocated context, or NULL in case of error + @note this function is to be removed after a saner alternative is + written + @deprecated Use sws_getCachedContext() instead. + + + Check if context can be reused, otherwise reallocate a new one. + + If context is NULL, just calls sws_getContext() to get a new + context. Otherwise, checks if the parameters are the ones already + saved in context. If that is the case, returns the current + context. Otherwise, frees context and gets a new context with + the new parameters. + + Be warned that srcFilter and dstFilter are not checked, they + are assumed to remain the same. + + + +Return a positive value if pix_fmt is a supported output format, 0 +otherwise. + + + +Return a positive value if pix_fmt is a supported input format, 0 +otherwise. + + + +Return the libswscale license. + + + +Return the libswscale build-time configuration. + + + +@} + +@file +@brief + external api for the swscale stuff + +Those FF_API_* defines are not part of public API. +They may change, break or disappear at any time. + +Return the LIBSWSCALE_VERSION_INT constant. + + + + Test if the given container can store a codec. + + @param std_compliance standards compliance level, one of FF_COMPLIANCE_* + + @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. + A negative number if this information is not available. + + + + Return a positive value if the given filename has one of the given + extensions, 0 otherwise. + + @param extensions a comma-separated list of filename extensions + + + + Generate an SDP for an RTP session. + + @param ac array of AVFormatContexts describing the RTP streams. If the + array is composed by only one context, such context can contain + multiple AVStreams (one AVStream per RTP stream). Otherwise, + all the contexts in the array (an AVCodecContext per RTP stream) + must contain only one AVStream. + @param n_files number of AVCodecContexts contained in ac + @param buf buffer where the SDP will be stored (must be allocated by + the caller) + @param size the size of the buffer + @return 0 if OK, AVERROR_xxx on error + + + + Check whether filename actually is a numbered sequence generator. + + @param filename possible numbered sequence string + @return 1 if a valid numbered sequence string, 0 otherwise + + + + Return in 'buf' the path with '%d' replaced by a number. + + Also handles the '%0nd' format where 'n' is the total number + of digits and '%%'. + + @param buf destination buffer + @param buf_size destination buffer size + @param path numbered sequence string + @param number frame number + @return 0 if OK, -1 on format error + + + +@deprecated use av_find_info_tag in libavutil instead. + + + +Get the current time in microseconds. + + + + Parse datestr and return a corresponding number of microseconds. + + @param datestr String representing a date or a duration. + See av_parse_time() for the syntax of the provided string. + @deprecated in favor of av_parse_time() + + + +@deprecated Deprecated in favor of av_dump_format(). + + + + Split a URL string into components. + + The pointers to buffers for storing individual components may be null, + in order to ignore that component. Buffers for components not found are + set to empty strings. If the port is not found, it is set to a negative + value. + + @param proto the buffer for the protocol + @param proto_size the size of the proto buffer + @param authorization the buffer for the authorization + @param authorization_size the size of the authorization buffer + @param hostname the buffer for the host name + @param hostname_size the size of the hostname buffer + @param port_ptr a pointer to store the port number in + @param path the buffer for the path + @param path_size the size of the path buffer + @param url the URL to split + + + + Add an index entry into a sorted list. Update the entry if the list + already contains it. + + @param timestamp timestamp in the time base of the given stream + + + + Get the codec tag for the given codec id id. + If no codec tag is found returns 0. + + @param tags list of supported codec_id-codec_tag pairs, as stored + in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + + + + Send a nice dump of a packet to the log. + + @param avcl A pointer to an arbitrary struct of which the first field is a + pointer to an AVClass struct. + @param level The importance level of the message, lower values signifying + higher importance. + @param pkt packet to dump + @param dump_payload True if the payload must be displayed, too. + @param st AVStream that the packet belongs to + + + + Send a nice dump of a packet to the specified file stream. + + @param f The file stream pointer where the dump should be sent to. + @param pkt packet to dump + @param dump_payload True if the payload must be displayed, too. + @param st AVStream that the packet belongs to + + + + Send a nice hexadecimal dump of a buffer to the log. + + @param avcl A pointer to an arbitrary struct of which the first field is a + pointer to an AVClass struct. + @param level The importance level of the message, lower values signifying + higher importance. + @param buf buffer + @param size buffer size + + @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 + + + +@} + + @defgroup lavf_misc Utility functions + @ingroup libavf + @{ + + Miscelaneous utility functions related to both muxing and demuxing + (or neither). + + Send a nice hexadecimal dump of a buffer to the specified file stream. + + @param f The file stream pointer where the dump should be sent to. + @param buf buffer + @param size buffer size + + @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 + + + +Get timing information for the data currently output. +The exact meaning of "currently output" depends on the format. +It is mostly relevant for devices that have an internal buffer and/or +work in real time. +@param s media file handle +@param stream stream in the media file +@param dts[out] DTS of the last packet output for the stream, in stream + time_base units +@param wall[out] absolute time when that packet whas output, + in microsecond +@return 0 if OK, AVERROR(ENOSYS) if the format does not support it +Note: some formats or devices may not allow to measure dts and wall +atomically. + + + + Return the output format in the list of registered output formats + which best matches the provided parameters, or return NULL if + there is no match. + + @param short_name if non-NULL checks if short_name matches with the + names of the registered formats + @param filename if non-NULL checks if filename terminates with the + extensions of the registered formats + @param mime_type if non-NULL checks if mime_type matches with the + MIME type of the registered formats + + + + Write the stream trailer to an output media file and free the + file private data. + + May only be called after a successful call to av_write_header. + + @param s media file handle + @return 0 if OK, AVERROR_xxx on error + + + + Write a packet to an output media file ensuring correct interleaving. + + The packet must contain one audio or video frame. + If the packets are already correctly interleaved, the application should + call av_write_frame() instead as it is slightly faster. It is also important + to keep in mind that completely non-interleaved input will need huge amounts + of memory to interleave with this, so it is preferable to interleave at the + demuxer level. + + @param s media file handle + @param pkt The packet containing the data to be written. Libavformat takes + ownership of the data and will free it when it sees fit using the packet's + @ref AVPacket.destruct "destruct" field. The caller must not access the data + after this function returns, as it may already be freed. + Packet's @ref AVPacket.stream_index "stream_index" field must be set to the + index of the corresponding stream in @ref AVFormatContext.streams + "s.streams". + It is very strongly recommended that timing information (@ref AVPacket.pts + "pts", @ref AVPacket.dts "dts" @ref AVPacket.duration "duration") is set to + correct values. + + @return 0 on success, a negative AVERROR on error. + + + + Allocate the stream private data and write the stream header to an + output media file. + @note: this sets stream time-bases, if possible to stream->codec->time_base + but for some formats it might also be some other time base + + @param s media file handle + @return 0 if OK, AVERROR_xxx on error + + @deprecated use avformat_write_header. + + + +@addtogroup lavf_encoding +@{ + + Allocate the stream private data and write the stream header to + an output media file. + + @param s Media file handle, must be allocated with avformat_alloc_context(). + Its oformat field must be set to the desired output format; + Its pb field must be set to an already openened AVIOContext. + @param options An AVDictionary filled with AVFormatContext and muxer-private options. + On return this parameter will be destroyed and replaced with a dict containing + options that were not found. May be NULL. + + @return 0 on success, negative AVERROR on failure. + + @see av_opt_find, av_dict_set, avio_open, av_oformat_next. + + + +@deprecated pass the options to avformat_write_header directly. + + + +@deprecated this function is not supposed to be called outside of lavf + + + +@} + + Add a new stream to a media file. + + Can only be called in the read_header() function. If the flag + AVFMTCTX_NOHEADER is in the format context, then new streams + can be added in read_packet too. + + @param s media file handle + @param id file-format-dependent stream ID + + + +Close an opened input AVFormatContext. Free it and all its contents +and set *s to NULL. + + + + @deprecated use avformat_close_input() + Close a media file (but not its codecs). + + @param s media file handle + + + +Free a AVFormatContext allocated by av_open_input_stream. +@param s context to free +@deprecated use av_close_input_file() + + + + Pause a network-based stream (e.g. RTSP stream). + + Use av_read_play() to resume it. + + + +Start playing a network-based stream (e.g. RTSP stream) at the +current position. + + + +Seek to the keyframe at timestamp. +'timestamp' in 'stream_index'. +@param stream_index If stream_index is (-1), a default +stream is selected, and timestamp is automatically converted +from AV_TIME_BASE units to the stream specific time_base. +@param timestamp Timestamp in AVStream.time_base units + or, if no stream is specified, in AV_TIME_BASE units. +@param flags flags which select direction and seeking mode +@return >= 0 on success + + + + Read a transport packet from a media file. + + This function is obsolete and should never be used. + Use av_read_frame() instead. + + @param s media file handle + @param pkt is filled + @return 0 if OK, AVERROR_xxx on error + + + + Find the "best" stream in the file. + The best stream is determined according to various heuristics as the most + likely to be what the user expects. + If the decoder parameter is non-NULL, av_find_best_stream will find the + default decoder for the stream's codec; streams for which no decoder can + be found are ignored. + + @param ic media file handle + @param type stream type: video, audio, subtitles, etc. + @param wanted_stream_nb user-requested stream number, + or -1 for automatic selection + @param related_stream try to find a stream related (eg. in the same + program) to this one, or -1 if none + @param decoder_ret if non-NULL, returns the decoder for the + selected stream + @param flags flags; none are currently defined + @return the non-negative stream number in case of success, + AVERROR_STREAM_NOT_FOUND if no stream with the requested type + could be found, + AVERROR_DECODER_NOT_FOUND if streams were found but no decoder + @note If av_find_best_stream returns successfully and decoder_ret is not + NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec. + + + + Find the programs which belong to a given stream. + + @param ic media file handle + @param last the last found program, the search will start after this + program, or from the beginning if it is NULL + @param s stream index + @return the next program which belongs to s, NULL if no program is found or + the last program is not among the programs of ic. + + + + Read packets of a media file to get stream information. This + is useful for file formats with no headers such as MPEG. This + function also computes the real framerate in case of MPEG-2 repeat + frame mode. + The logical file position is not changed by this function; + examined packets may be buffered for later processing. + + @param ic media file handle + @param options If non-NULL, an ic.nb_streams long array of pointers to + dictionaries, where i-th member contains options for + codec corresponding to i-th stream. + On return each dictionary will be filled with options that were not found. + @return >=0 if OK, AVERROR_xxx on error + + @note this function isn't guaranteed to open all the codecs, so + options being non-empty at return is a perfectly normal behavior. + + @todo Let the user decide somehow what information is needed so that + we do not waste time getting stuff the user does not need. + + + + Read packets of a media file to get stream information. This + is useful for file formats with no headers such as MPEG. This + function also computes the real framerate in case of MPEG-2 repeat + frame mode. + The logical file position is not changed by this function; + examined packets may be buffered for later processing. + + @param ic media file handle + @return >=0 if OK, AVERROR_xxx on error + @todo Let the user decide somehow what information is needed so that + we do not waste time getting stuff the user does not need. + + @deprecated use avformat_find_stream_info. + + + + Open an input stream and read the header. The codecs are not opened. + The stream must be closed with av_close_input_file(). + + @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context). + May be a pointer to NULL, in which case an AVFormatContext is allocated by this + function and written into ps. + Note that a user-supplied AVFormatContext will be freed on failure. + @param filename Name of the stream to open. + @param fmt If non-NULL, this parameter forces a specific input format. + Otherwise the format is autodetected. + @param options A dictionary filled with AVFormatContext and demuxer-private options. + On return this parameter will be destroyed and replaced with a dict containing + options that were not found. May be NULL. + + @return 0 on success, a negative AVERROR on failure. + + @note If you want to use custom IO, preallocate the format context and set its pb field. + + + + Open a media file as input. The codecs are not opened. Only the file + header (if present) is read. + + @param ic_ptr The opened media file handle is put here. + @param filename filename to open + @param fmt If non-NULL, force the file format to use. + @param buf_size optional buffer size (zero if default is OK) + @param ap Additional parameters needed when opening the file + (NULL if default). + @return 0 if OK, AVERROR_xxx otherwise + + @deprecated use avformat_open_input instead. + + + +Allocate all the structures needed to read an input stream. + This does not open the needed codecs for decoding the stream[s]. +@deprecated use avformat_open_input instead. + + + + Probe a bytestream to determine the input format. Each time a probe returns + with a score that is too low, the probe buffer size is increased and another + attempt is made. When the maximum probe size is reached, the input format + with the highest score is returned. + + @param pb the bytestream to probe + @param fmt the input format is put here + @param filename the filename of the stream + @param logctx the log context + @param offset the offset within the bytestream to probe from + @param max_probe_size the maximum probe buffer size (zero for default) + @return 0 in case of success, a negative value corresponding to an + AVERROR code otherwise + + + + Guess the file format. + + @param is_opened Whether the file is already opened; determines whether + demuxers with or without AVFMT_NOFILE are probed. + @param score_ret The score of the best detection. + + + + Guess the file format. + + @param is_opened Whether the file is already opened; determines whether + demuxers with or without AVFMT_NOFILE are probed. + + + +@addtogroup lavf_decoding +@{ + +Find AVInputFormat based on the short name of the input format. + + + + Allocate an AVFormatContext for an output format. + avformat_free_context() can be used to free the context and + everything allocated by the framework within it. + + @param *ctx is set to the created format context, or to NULL in + case of failure + @param oformat format to use for allocating the context, if NULL + format_name and filename are used instead + @param format_name the name of output format to use for allocating the + context, if NULL filename is used instead + @param filename the name of the filename to use for allocating the + context, may be NULL + @return >= 0 in case of success, a negative AVERROR code in case of + failure + + + +@deprecated deprecated in favor of avformat_alloc_output_context2() + + + + Add a new stream to a media file. + + When demuxing, it is called by the demuxer in read_header(). If the + flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also + be called in read_packet(). + + When muxing, should be called by the user before avformat_write_header(). + + @param c If non-NULL, the AVCodecContext corresponding to the new stream + will be initialized to use this codec. This is needed for e.g. codec-specific + defaults to be set, so codec should be provided if it is known. + + @return newly created stream or NULL on error. + + + + Get the AVClass for AVFormatContext. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + +Free an AVFormatContext and all its streams. +@param s context to free + + + +Allocate an AVFormatContext. +avformat_free_context() can be used to free the context and everything +allocated by the framework within it. + + + +If f is NULL, returns the first registered output format, +if f is non-NULL, returns the next registered output format after f +or NULL if f is the last one. + + + +If f is NULL, returns the first registered input format, +if f is non-NULL, returns the next registered input format after f +or NULL if f is the last one. + + + +Undo the initialization done by avformat_network_init. + + + + Do global initialization of network components. This is optional, + but recommended, since it avoids the overhead of implicitly + doing the setup for each session. + + Calling this function will become mandatory if using network + protocols at some major version bump. + + + + Initialize libavformat and register all the muxers, demuxers and + protocols. If you do not call this function, then you can select + exactly which formats you want to support. + + @see av_register_input_format() + @see av_register_output_format() + @see av_register_protocol() + + + +Return the libavformat license. + + + +Return the libavformat build-time configuration. + + + + @defgroup lavf_core Core functions + @ingroup libavf + + Functions for querying libavformat capabilities, allocating core structures, + etc. + @{ + +Return the LIBAVFORMAT_VERSION_INT constant. + + + +Max chunk size in bytes +Note, not all formats support this and unpredictable things may happen if it is used when not supported. +- encoding: Set by user via AVOptions (NO direct access) +- decoding: unused + + + +Max chunk time in microseconds. +Note, not all formats support this and unpredictable things may happen if it is used when not supported. +- encoding: Set by user via AVOptions (NO direct access) +- decoding: unused + + + +Audio preload in microseconds. +Note, not all formats support this and unpredictable things may happen if it is used when not supported. +- encoding: Set by user via AVOptions (NO direct access) +- decoding: unused + + + +Transport stream id. +This will be moved into demuxer private options. Thus no API/ABI compatibility + + + + Custom interrupt callbacks for the I/O layer. + + decoding: set by the user before avformat_open_input(). + encoding: set by the user before avformat_write_header() + (mainly useful for AVFMT_NOFILE formats). The callback + should also be passed to avio_open2() if it's used to + open the file. + + + +Error recognition; higher values will detect more errors but may +misdetect some more or less valid parts as errors. +- encoding: unused +- decoding: Set by user. + + + +decoding: number of frames used to probe fps + + + +Start time of the stream in real world time, in microseconds +since the unix epoch (00:00 1st January 1970). That is, pts=0 +in the stream was captured at this real world time. +- encoding: Set by user. +- decoding: Unused. + + + +Remaining size available for raw_packet_buffer, in bytes. +NOT PART OF PUBLIC API + + + +Flags to enable debugging. + + + +Maximum amount of memory in bytes to use for buffering frames +obtained from realtime capture devices. + + + +Maximum amount of memory in bytes to use for the index of each stream. +If the index exceeds this size, entries will be discarded as +needed to maintain a smaller size. This can lead to slower or less +accurate seeking (depends on demuxer). +Demuxers for which a full in-memory index is mandatory will ignore +this. +muxing : unused +demuxing: set by user + + + +decoding: maximum time (in AV_TIME_BASE units) during which the input should +be analyzed in avformat_find_stream_info(). + + + +decoding: size of data to probe; encoding: unused. + + + +@deprecated, use the 'loop' img2 demuxer private option. + + + + number of times to loop output in formats that support it + + @deprecated use the 'loop' private option in the gif muxer. + + + +use mpeg muxer private options instead + + + +Decoding: total stream bitrate in bit/s, 0 if not +available. Never set it directly if the file_size and the +duration are known as FFmpeg can compute it automatically. + + + +decoding: total file size, 0 if unknown + + + +Decoding: duration of the stream, in AV_TIME_BASE fractional +seconds. Only set this value if you know none of the individual stream +durations and also do not set any of them. This is deduced from the +AVStream values if not set. + + + +Decoding: position of the first frame of the component, in +AV_TIME_BASE fractional seconds. NEVER set this value directly: +It is deduced from the AVStream values. + + + +@deprecated use 'creation_time' metadata tag instead + + + + A list of all streams in the file. New streams are created with + avformat_new_stream(). + + decoding: streams are created by libavformat in avformat_open_input(). + If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also + appear in av_read_frame(). + encoding: streams are created by the user before avformat_write_header(). + + + +Format private data. This is an AVOptions-enabled struct +if and only if iformat/oformat.priv_class is not NULL. + + + +A class for logging and AVOptions. Set by avformat_alloc_context(). +Exports (de)muxer private options if they exist. + + + +Format I/O context. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(AVFormatContext) must not be used outside libav*, use +avformat_alloc_context() to create an AVFormatContext. + + + +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(AVProgram) must not be used outside libav*. + + + +flag to indicate that probing is requested +NOT PART OF PUBLIC API + + + +Stream Identifier +This is the MPEG-TS stream identifier +1 +0 means unknown + + + +Number of frames that have been demuxed during av_find_stream_info() + + + +Average framerate + + + +last packet in packet_buffer for this stream when muxing. +Used internally, NOT PART OF PUBLIC API, do not read or +write from outside of libav* + + +This buffer is only needed when packets were already buffered but +not decoded, for example to get the codec parameters in MPEG +streams. + + +Raw packets from the demuxer, prior to parsing and decoding. +This buffer is used for buffering packets until the codec can +be identified, as parsing cannot be done without knowing the +codec. + + + +Number of packets to buffer for codec probing +NOT PART OF PUBLIC API + + + + Timestamp corresponding to the last dts sync point. + + Initialized when AVCodecParserContext.dts_sync_point >= 0 and + a DTS is received from the underlying container. Otherwise set to + AV_NOPTS_VALUE by default. + + + +sample aspect ratio (0 if unknown) +- encoding: Set by user. +- decoding: Set by libavformat. + + + +Decoding: duration of the stream, in stream time base. +If a source file does not specify a duration, but does specify +a bitrate, this value will be estimated from bitrate and file size. + + + +Decoding: pts of the first frame of the stream in presentation order, in stream time base. +Only set this if you are absolutely 100% sure that the value you set +it to really is the pts of the first frame. +This may be undefined (AV_NOPTS_VALUE). +@note The ASF header does NOT contain a correct start_time the ASF +demuxer must NOT set this. + + + +Quality, as it has been removed from AVCodecContext and put in AVVideoFrame. +MN: dunno if that is the right place for it + + + +This is the fundamental unit of time (in seconds) in terms +of which frame timestamps are represented. For fixed-fps content, +time base should be 1/framerate and timestamp increments should be 1. +decoding: set by libavformat +encoding: set by libavformat in av_write_header + + + +encoding: pts generation when outputting stream + + + +Real base framerate of the stream. +This is the lowest framerate with which all timestamps can be +represented accurately (it is the least common multiple of all +framerates in the stream). Note, this value is just a guess! +For example, if the time base is 1/90000 and all frames have either +approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. + + + +Track should be used during playback by default. +Useful for subtitle track that should be displayed +even when user did not explicitly ask for subtitles. + +Stream structure. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(AVStream) must not be used outside libav*. + + + +@} + + + +Pause playing - only meaningful if using a network-based format +(RTSP). + + + +Start/resume playing - only meaningful if using a network-based format +(RTSP). + + + +General purpose read-only value that the format can use. + + + +If extensions are defined, then no probe is done. You should +usually not use extension format guessing because it is not +reliable enough + + + +Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, +AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, +AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK. + + + +Get the next timestamp in stream[stream_index].time_base units. +@return the timestamp or AV_NOPTS_VALUE if an error occurred + + + +Seek to a given timestamp relative to the frames in +stream component stream_index. +@param stream_index Must not be -1. +@param flags Selects which direction should be preferred if no exact + match is available. +@return >= 0 on success (but not necessarily the new offset) + + + +Close the stream. The AVFormatContext and AVStreams are not +freed by this function + + + +Read the format header and initialize the AVFormatContext +structure. Return 0 if OK. 'ap' if non-NULL contains +additional parameters. Only used in raw format right +now. 'av_new_stream' should be called to create new streams. + + + +Tell if a given file has a chance of being parsed as this format. +The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes +big so you do not have to check for that unless you need more. + + + +Size of private data so that it can be allocated in the wrapper. + + + +Descriptive name for the format, meant to be more human-readable +than name. You should use the NULL_IF_CONFIG_SMALL() macro +to define it. + + + +A comma separated list of short names for the format. New names +may be appended with a minor bump. + + + +@} + +@addtogroup lavf_decoding +@{ + + + Can only be iformat or oformat, not both at the same time. + + decoding: set by avformat_open_input(). + encoding: set by the user. + + + + Test if the given codec can be stored in this container. + + @return 1 if the codec is supported, 0 if it is not. + A negative number if unknown. + + + +List of supported codec_id-codec_tag pairs, ordered by "better +choice first". The arrays are all terminated by CODEC_ID_NONE. + + + +can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE, +AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, +AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH + + + +Write a packet. If AVFMT_ALLOW_FLUSH is set in flags, +pkt can be NULL in order to flush data buffered in the muxer. +When flushing, return 0 if there still is more data to flush, +or 1 if everything was flushed and there is no more buffered +data. + + + +size of private data so that it can be allocated in the wrapper + + + +Descriptive name for the format, meant to be more human-readable +than name. You should use the NULL_IF_CONFIG_SMALL() macro +to define it. + + + +Demuxer will use avio_open, no opened file should be provided by the caller. +@addtogroup lavf_encoding +@{ + + + +This structure contains the data a format has to probe a file. + + + + Read data and append it to the current content of the AVPacket. + If pkt->size is 0 this is identical to av_get_packet. + Note that this uses av_grow_packet and thus involves a realloc + which is inefficient. Thus this function should only be used + when there is no reasonable way to know (an upper bound of) + the final size. + + @param pkt packet + @param size amount of data to read + @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data + will not be lost even if an error occurs. + + + +@} + + Allocate and read the payload of a packet and initialize its + fields with default values. + + @param pkt packet + @param size desired payload size + @return >0 (read size) if OK, AVERROR_xxx otherwise + + + +Free all the memory allocated for an AVDictionary struct. + + + +Copy metadata from one AVDictionary struct into another. +@param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + this function will allocate a struct for you and put it in *dst +@param src pointer to source AVDictionary struct +@param flags flags to use when setting metadata in *dst +@note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + + + +This function is provided for compatibility reason and currently does nothing. + + + + Get a metadata element with matching key. + + @param prev Set to the previous matching element to find the next. + If set to NULL the first matching element is returned. + @param flags Allows case as well as suffix-insensitive comparisons. + @return Found tag or NULL, changing key or value leads to undefined behavior. + + + +Seek to a given timestamp relative to some component stream. +Only meaningful if using a network streaming protocol (e.g. MMS.). +@param stream_index The stream index that the timestamp is relative to. + If stream_index is (-1) the timestamp should be in AV_TIME_BASE + units from the beginning of the presentation. + If a stream_index >= 0 is used and the protocol does not support + seeking based on component streams, the call will fail. +@param timestamp timestamp in AVStream.time_base units + or if there is no stream specified then in AV_TIME_BASE units. +@param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE + and AVSEEK_FLAG_ANY. The protocol may silently ignore + AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will + fail if used and not supported. +@return >= 0 on success +@see AVInputFormat::read_seek + + + +Pause and resume playing - only meaningful if using a network streaming +protocol (e.g. MMS). +@param pause 1 for pause, 0 for resume + + + + Iterate through names of available protocols. + @note it is recommanded to use av_protocol_next() instead of this + + @param opaque A private pointer representing current protocol. + It must be a pointer to NULL on first iteration and will + be updated by successive calls to avio_enum_protocols. + @param output If set to 1, iterate over output protocols, + otherwise over input protocols. + + @return A static string containing the name of current protocol or NULL + + + + Return the written size and a pointer to the buffer. The buffer + must be freed with av_free(). + Padding of FF_INPUT_BUFFER_PADDING_SIZE is added to the buffer. + + @param s IO context + @param pbuffer pointer to a byte buffer + @return the length of the byte buffer + + + + Open a write only memory stream. + + @param s new IO context + @return zero if no error. + + + + Create and initialize a AVIOContext for accessing the + resource indicated by url. + @note When the resource indicated by url has been opened in + read+write mode, the AVIOContext can be used only for writing. + + @param s Used to return the pointer to the created AVIOContext. + In case of failure the pointed to value is set to NULL. + @param flags flags which control how the resource indicated by url + is to be opened + @param int_cb an interrupt callback to be used at the protocols level + @param options A dictionary filled with protocol-private options. On return + this parameter will be destroyed and replaced with a dict containing options + that were not found. May be NULL. + @return 0 in case of success, a negative value corresponding to an + AVERROR code in case of failure + + + +@name URL open modes +The flags argument to avio_open must be one of the following +constants, optionally ORed with other flags. +@{ + +@} + +Use non-blocking mode. +If this flag is set, operations on the context will return +AVERROR(EAGAIN) if they can not be performed immediately. +If this flag is not set, operations on the context will never return +AVERROR(EAGAIN). +Note that this flag does not affect the opening/connecting of the +context. Connecting a protocol will always block if necessary (e.g. on +network protocols) but never hang (e.g. on busy devices). +Warning: non-blocking protocols is work-in-progress; this flag may be +silently ignored. + + Create and initialize a AVIOContext for accessing the + resource indicated by url. + @note When the resource indicated by url has been opened in + read+write mode, the AVIOContext can be used only for writing. + + @param s Used to return the pointer to the created AVIOContext. + In case of failure the pointed to value is set to NULL. + @param flags flags which control how the resource indicated by url + is to be opened + @return 0 in case of success, a negative value corresponding to an + AVERROR code in case of failure + + + + @name Functions for reading from AVIOContext + @{ + + @note return 0 if EOF, so you cannot use it if EOF handling is + necessary + + + +Read size bytes from AVIOContext into buf. +@return number of bytes read or AVERROR + + + +@warning currently size is limited + + +feof() equivalent for AVIOContext. +@return non zero if and only if end of file + + + +Get the filesize. +@return filesize or AVERROR + + + +ftell() equivalent for AVIOContext. +@return position or AVERROR. + + + +Skip given number of bytes forward +@return new position or AVERROR. + + + +Convert an UTF-8 string to UTF-16LE and write it. +@return number of bytes written. + + + +Write a NULL-terminated string. +@return number of bytes written. + + + + Allocate and initialize an AVIOContext for buffered I/O. It must be later + freed with av_free(). + + @param buffer Memory block for input/output operations via AVIOContext. + The buffer must be allocated with av_malloc() and friends. + @param buffer_size The buffer size is very important for performance. + For protocols with fixed blocksize it should be set to this blocksize. + For others a typical size is a cache page, e.g. 4kb. + @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. + @param opaque An opaque pointer to user-specific data. + @param read_packet A function for refilling the buffer, may be NULL. + @param write_packet A function for writing the buffer contents, may be NULL. + @param seek A function for seeking to specified byte position, may be NULL. + + @return Allocated AVIOContext or NULL on failure. + + + +The callback is called in blocking functions to test regulary if +asynchronous interruption is needed. AVERROR_EXIT is returned +in this case by the interrupted function. 'NULL' means no interrupt +callback is given. +@deprecated Use interrupt_callback in AVFormatContext/avio_open2 + instead. + + + + Return AVIO_FLAG_* access flags corresponding to the access permissions + of the resource in url, or a negative value corresponding to an + AVERROR code in case of failure. The returned access flags are + masked by the value in flags. + + @note This function is intrinsically unsafe, in the sense that the + checked resource may change its existence or permission status from + one call to another. Thus you should not trust the returned value, + unless you are sure that no other processes are accessing the + checked resource. + + + +Return a non-zero value if the resource indicated by url +exists, 0 otherwise. +@deprecated Use avio_check instead. + + + +return the written or read size + + +@deprecated use AVIOContext.max_packet_size directly. + + + +@deprecated Use AVIOContext.seekable field directly. + + + +@deprecated use avio_get_str instead + + + +@note unlike fgets, the EOL character is not returned and a whole + line is parsed. return NULL if first char read was EOF + + +@} + + + +@defgroup old_url_f_funcs Old url_f* functions +The following functions are deprecated, use the "avio_"-prefixed functions instead. +@{ +@ingroup lavf_io + + + +@} + + + +@defgroup old_avio_funcs Old put_/get_*() functions +The following functions are deprecated. Use the "avio_"-prefixed functions instead. +@{ +@ingroup lavf_io + + + +@} + + + + Register the URLProtocol protocol. + + @param size the size of the URLProtocol struct referenced + + + +returns the next registered protocol after the given protocol (the first if +NULL is given), or NULL if protocol is the last one. + + + +@defgroup old_url_funcs Old url_* functions +The following functions are deprecated. Use the buffered API based on #AVIOContext instead. +@{ +@ingroup lavf_io + + + +@name URL open modes +The flags argument to url_open and cosins must be one of the following +constants, optionally ORed with other flags. +@{ + +@} + +Use non-blocking mode. +If this flag is set, operations on the context will return +AVERROR(EAGAIN) if they can not be performed immediately. +If this flag is not set, operations on the context will never return +AVERROR(EAGAIN). +Note that this flag does not affect the opening/connecting of the +context. Connecting a protocol will always block if necessary (e.g. on +network protocols) but never hang (e.g. on busy devices). +Warning: non-blocking protocols is work-in-progress; this flag may be +silently ignored. + + + +@deprecated This struct is to be made private. Use the higher-level + AVIOContext-based API instead. + + + +URL Context. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(URLContext) must not be used outside libav*. +@deprecated This struct will be made private + + + + +Close currently opened video file if any. + + + + +Write new video frame with a specific timestamp into currently opened video file. + + Bitmap to add as a new video frame. + Frame timestamp, total time since recording started. + + The specified bitmap must be either color 24 or 32 bpp image or grayscale 8 bpp (indexed) image. + + The parameter allows user to specify presentation +time of the frame being saved. However, it is user's responsibility to make sure the value is increasing +over time. + + + Thrown if no video file was open. + The provided bitmap must be 24 or 32 bpp color image or 8 bpp grayscale image. + Bitmap size must be of the same as video size, which was specified on opening video file. + A error occurred while writing new video frame. See exception message. + + + +Write new video frame into currently opened video file. + + Bitmap to add as a new video frame. + + The specified bitmap must be either color 24 or 32 bpp image or grayscale 8 bpp (indexed) image. + + Thrown if no video file was open. + The provided bitmap must be 24 or 32 bpp color image or 8 bpp grayscale image. + Bitmap size must be of the same as video size, which was specified on opening video file. + A error occurred while writing new video frame. See exception message. + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + Frame rate of the video file. + Video codec to use for compression. + Bit rate of the video stream. + + The methods creates new video file with the specified name. +If a file with such name already exists in the file system, it will be overwritten. + When adding new video frames using method, +the video frame must have width and height as specified during file opening. + + The bit rate parameter represents a trade-off value between video quality +and video file size. Higher bit rate value increase video quality and result in larger +file size. Smaller values result in opposite – worse quality and small video files. + + + Video file resolution must be a multiple of two. + Invalid video codec is specified. + A error occurred while creating new video file. See exception message. + Cannot open video file with the specified name. + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + Frame rate of the video file. + Video codec to use for compression. + + The methods creates new video file with the specified name. +If a file with such name already exists in the file system, it will be overwritten. + When adding new video frames using method, +the video frame must have width and height as specified during file opening. + + Video file resolution must be a multiple of two. + Invalid video codec is specified. + A error occurred while creating new video file. See exception message. + Cannot open video file with the specified name. + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + Frame rate of the video file. + + See documentation to the +for more information and the list of possible exceptions. + + The method opens the video file using +codec. + + + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + + See documentation to the +for more information and the list of possible exceptions. + + The method opens the video file using +codec and 25 fps frame rate. + + + + + +Disposes the object and frees its resources. + + + + +Initializes a new instance of the class. + + + + +Object's finalizer. + + + + +The property specifies if a video file is opened or not by this instance of the class. + + + + +Codec to use for the video file. + + Thrown if no video file was open. + + + +Bit rate of the video stream. + + Thrown if no video file was open. + + + +Frame rate of the opened video file. + + Thrown if no video file was open. + + + +Frame height of the opened video file. + + Thrown if no video file was open. + + + +Frame width of the opened video file. + + Thrown if no video file was open. + + + +Class for writing video files utilizing FFmpeg library. + + + The class allows to write video files using FFmpeg library. + + Make sure you have FFmpeg binaries (DLLs) in the output folder of your application in order +to use this class successfully. FFmpeg binaries can be found in Externals folder provided with AForge.NET +framework's distribution. + + Sample usage: + +int width = 320; +int height = 240; + +// create instance of video writer +VideoFileWriter writer = new VideoFileWriter( ); +// create new video file +writer.Open( "test.avi", width, height, 25, VideoCodec.MPEG4 ); +// create a bitmap to save into the video file +Bitmap image = new Bitmap( width, height, PixelFormat.Format24bppRgb ); +// write 1000 video frames +for ( int i = 0; i < 1000; i++ ) +{ + image.SetPixel( i % width, i % height, Color.Red ); + writer.WriteVideoFrame( image ); +} +writer.Close( ); + + + + + +Close currently opened video file if any. + + + + +Read next video frame of the currently opened video file. + + Returns next video frame of the opened file or if end of +file was reached. The returned video frame has 24 bpp color format. + Thrown if no video file was open. + A error occurred while reading next video frame. See exception message. + + + +Open video file with the specified name. + + Video file name to open. + Cannot open video file with the specified name. + A error occurred while opening the video file. See exception message. + + + +Disposes the object and frees its resources. + + + + +Initializes a new instance of the class. + + + + +Object's finalizer. + + + + +The property specifies if a video file is opened or not by this instance of the class. + + + + +Name of codec used for encoding the opened video file. + + Thrown if no video file was open. + + + +Number of video frames in the opened video file. + + + + + Warning: some video file formats may report different value +from the actual number of video frames in the file (subject to fix/investigate). + + + Thrown if no video file was open. + + + +Frame rate of the opened video file. + + Thrown if no video file was open. + + + +Frame height of the opened video file. + + Thrown if no video file was open. + + + +Frame width of the opened video file. + + Thrown if no video file was open. + + + +Class for reading video files utilizing FFmpeg library. + + + The class allows to read video files using FFmpeg library. + + Make sure you have FFmpeg binaries (DLLs) in the output folder of your application in order +to use this class successfully. FFmpeg binaries can be found in Externals folder provided with AForge.NET +framework's distribution. + + Sample usage: + +// create instance of video reader +VideoFileReader reader = new VideoFileReader( ); +// open video file +reader.Open( "test.avi" ); +// check some of its attributes +Console.WriteLine( "width: " + reader.Width ); +Console.WriteLine( "height: " + reader.Height ); +Console.WriteLine( "fps: " + reader.FrameRate ); +Console.WriteLine( "codec: " + reader.CodecName ); +// read 100 video frames out of it +for ( int i = 0; i < 100; i++ ) +{ + Bitmap videoFrame = reader.ReadVideoFrame( ); + // process the frame somehow + // ... + + // dispose the frame when it is no longer required + videoFrame.Dispose( ); +} +reader.Close( ); + + + + + +Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred +and should be done only if there are no other options. The correct way of stopping camera +is signaling it stop and then +waiting for background thread's completion. + + + + + +Wait for video source has stopped. + + Waits for source stopping after it was signalled to stop using + method. + + + +Signal video source to stop its work. + + Signals video source to stop its background thread, stop to +provide new frames and free resources. + + + +Start video source. + + Starts video source and return execution to caller. Video source +object creates background thread and notifies about new frames with the +help of event. + Video source is not specified. + + + +Initializes a new instance of the class. + + + + +Get frame interval from source or use manually specified. + + + The property specifies which frame rate to use for video playing. +If the property is set to , then video is played +with original frame rate, which is set in source video file. If the property is +set to , then custom frame rate is used, which is +calculated based on the manually specified frame interval. + Default value is set to . + + + + +Frame interval. + + + The property sets the interval in milliseconds between frames. If the property is +set to 100, then the desired frame rate will be 10 frames per second. + + Setting this property to 0 leads to no delay between video frames - frames +are read as fast as possible. + + + Setting this property has effect only when +is set to . + + Default value is set to 0. + + + + +State of the video source. + + Current state of video source object - running or not. + + + +Received bytes count. + + Number of bytes the video source provided from the moment of the last +access to the property. + + + + +Received frames count. + + Number of frames the video source provided from the moment of the last +access to the property. + + + + +Video source. + + + Video file name to play. + + + + +Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + +Video source error event. + + This event is used to notify clients about any type of errors occurred in +video source object, for example internal exceptions. + + + +New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for +making a copy (cloning) of the passed video frame, because the video source disposes its +own original copy after notifying of clients. + + + + + +Video source for video files. + + + The video source provides access to video files using FFmpeg library. + + The class provides video only. Sound is not supported. + + + The class ignores presentation time of video frames while retrieving them from +video file. Instead it provides video frames according to the FPS rate of the video file +or the configured . + + + Make sure you have FFmpeg binaries (DLLs) in the output folder of your application in order +to use this class successfully. FFmpeg binaries can be found in Externals folder provided with AForge.NET +framework's distribution. + + Sample usage: + +// create video source +VideoFileSource videoSource = new VideoFileSource( fileName ); +// set NewFrame event handler +videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); +// start the video source +videoSource.Start( ); +// ... + +// New frame event handler, which is invoked on each new available video frame +private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) +{ + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame +} + + + + + Get the AVClass for AVFrame. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + + Get the AVClass for AVCodecContext. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + + Register a user provided lock manager supporting the operations + specified by AVLockOp. mutex points to a (void *) where the + lockmgr should store/get a pointer to a user allocated mutex. It's + NULL upon AV_LOCK_CREATE and != NULL for all other ops. + + @param cb User defined callback. Note: FFmpeg may invoke calls to this + callback during the call to av_lockmgr_register(). + Thus, the application must be prepared to handle that. + If cb is set to NULL the lockmgr will be unregistered. + Also note that during unregistration the previously registered + lockmgr callback may also be invoked. + + + +Lock operation used by lockmgr + + + +If hwaccel is NULL, returns the first registered hardware accelerator, +if hwaccel is non-NULL, returns the next registered hardware accelerator +after hwaccel, or NULL if hwaccel is the last one. + + + +Register the hardware accelerator hwaccel. + + + +Log a generic warning message asking for a sample. This function is +intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) +only, and would normally not be used by applications. +@param[in] avc a pointer to an arbitrary struct of which the first field is +a pointer to an AVClass struct +@param[in] msg string containing an optional message, or NULL if no message + + + +Log a generic warning message about a missing feature. This function is +intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) +only, and would normally not be used by applications. +@param[in] avc a pointer to an arbitrary struct of which the first field is +a pointer to an AVClass struct +@param[in] feature string containing the name of the missing feature +@param[in] want_sample indicates if samples are wanted which exhibit this feature. +If want_sample is non-zero, additional verbage will be added to the log +message which tells the user how to report samples to the development +mailing list. + + + + Encode extradata length to a buffer. Used by xiph codecs. + + @param s buffer to write to; must be at least (v/255+1) bytes long + @param v size of extradata in bytes + @return number of bytes written to the buffer. + + + +Pad image. + + + +Crop image top and left side. + + + +Copy image src to dst. Wraps av_picture_data_copy() above. + + + + Same behaviour av_fast_malloc but the buffer has additional + FF_INPUT_PADDING_SIZE at the end which will will always be 0. + + In addition the whole buffer will initially and after resizes + be 0-initialized so that no uninitialized data will ever appear. + + + + Allocate a buffer, reusing the given one if large enough. + + Contrary to av_fast_realloc the current buffer contents might not be + preserved and on error the old buffer is freed, thus no special + handling to avoid memleaks is necessary. + + @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer + @param size size of the buffer *ptr points to + @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and + *size 0 if an error occurred. + + + + Reallocate the given block if it is not large enough, otherwise do nothing. + + @see av_realloc + + + +Previous frame byte position. + + + +Byte position of currently parsed frame in stream. + + + + Position of the packet in file. + + Analogous to cur_frame_pts/dts + + + + Presentation delay of current frame in units of AVCodecContext.time_base. + + Set to INT_MIN when dts_sync_point unused. Otherwise, it must + contain valid non-negative timestamp delta (presentation time of a frame + must not lie in the past). + + This delay represents the difference between decoding and presentation + time of the frame. + + For example, this corresponds to H.264 dpb_output_delay. + + + + Offset of the current timestamp against last timestamp sync point in + units of AVCodecContext.time_base. + + Set to INT_MIN when dts_sync_point unused. Otherwise, it must + contain a valid timestamp offset. + + Note that the timestamp of sync point has usually a nonzero + dts_ref_dts_delta, which refers to the previous sync point. Offset of + the next frame after timestamp sync point will be usually 1. + + For example, this corresponds to H.264 cpb_removal_delay. + + + + Time difference in stream time base units from the pts of this + packet to the point at which the output from the decoder has converged + independent from the availability of previous frames. That is, the + frames are virtually identical no matter if decoding started from + the very first frame or from this keyframe. + Is AV_NOPTS_VALUE if unknown. + This field is not the display duration of the current frame. + This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + set. + + The purpose of this field is to allow seeking in streams that have no + keyframes in the conventional sense. It corresponds to the + recovery point SEI in H.264 and match_time_delta in NUT. It is also + essential for some types of subtitle streams to ensure that all + subtitles are correctly displayed after seeking. + + + +Set by parser to 1 for key frames and 0 for non-key frames. +It is initialized to -1, so if the parser doesn't set this flag, +old-style fallback using AV_PICTURE_TYPE_I picture type as key frames +will be used. + + + +Set if the parser has a valid file offset + + + This field is used for proper frame duration computation in lavf. + It signals, how much longer the frame duration of the current frame + is compared to normal frame duration. + + frame_duration = (1 + repeat_pict) * time_base + + It is used by codecs like H.264 to display telecined material. + + + +@deprecated Use av_get_bytes_per_sample() instead. + + + + Return codec bits per sample. + + @param[in] codec_id the codec + @return Number of bits per sample or zero if unknown for the given codec. + + + + Return a single letter to describe the given picture type pict_type. + + @param[in] pict_type the picture type + @return A single character representing the picture type. + @deprecated Use av_get_picture_type_char() instead. + + + +Flush buffers, should be called when seeking or when switching to a different stream. + + + + Register all the codecs, parsers and bitstream filters which were enabled at + configuration time. If you do not call this function you can select exactly + which formats you want to support, by using the individual registration + functions. + + @see avcodec_register + @see av_register_codec_parser + @see av_register_bitstream_filter + + + + Encode a video frame from pict into buf. + The input picture should be + stored using a specific format, namely avctx.pix_fmt. + + @param avctx the codec context + @param[out] buf the output buffer for the bitstream of encoded frame + @param[in] buf_size the size of the output buffer in bytes + @param[in] pict the input picture to encode + @return On error a negative value is returned, on success zero or the number + of bytes used from the output buffer. + + + + Fill audio frame data and linesize. + AVFrame extended_data channel pointers are allocated if necessary for + planar audio. + + @param frame the AVFrame + frame->nb_samples must be set prior to calling the + function. This function fills in frame->data, + frame->extended_data, frame->linesize[0]. + @param nb_channels channel count + @param sample_fmt sample format + @param buf buffer to use for frame data + @param buf_size size of buffer + @param align plane size sample alignment + @return 0 on success, negative error code on failure + + + + Encode a frame of audio. + + Takes input samples from frame and writes the next output packet, if + available, to avpkt. The output packet does not necessarily contain data for + the most recent frame, as encoders can delay, split, and combine input frames + internally as needed. + + @param avctx codec context + @param avpkt output AVPacket. + The user can supply an output buffer by setting + avpkt->data and avpkt->size prior to calling the + function, but if the size of the user-provided data is not + large enough, encoding will fail. All other AVPacket fields + will be reset by the encoder using av_init_packet(). If + avpkt->data is NULL, the encoder will allocate it. + The encoder will set avpkt->size to the size of the + output packet. + @param[in] frame AVFrame containing the raw audio data to be encoded. + May be NULL when flushing an encoder that has the + CODEC_CAP_DELAY capability set. + There are 2 codec capabilities that affect the allowed + values of frame->nb_samples. + If CODEC_CAP_SMALL_LAST_FRAME is set, then only the final + frame may be smaller than avctx->frame_size, and all other + frames must be equal to avctx->frame_size. + If CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame + can have any number of samples. + If neither is set, frame->nb_samples must be equal to + avctx->frame_size for all frames. + @param[out] got_packet_ptr This field is set to 1 by libavcodec if the + output packet is non-empty, and to 0 if it is + empty. If the function returns an error, the + packet can be assumed to be invalid, and the + value of got_packet_ptr is undefined and should + not be used. + @return 0 on success, negative error code on failure + + + + Encode an audio frame from samples into buf. + + @deprecated Use avcodec_encode_audio2 instead. + + @note The output buffer should be at least FF_MIN_BUFFER_SIZE bytes large. + However, for codecs with avctx->frame_size equal to 0 (e.g. PCM) the user + will know how much space is needed because it depends on the value passed + in buf_size as described below. In that case a lower value can be used. + + @param avctx the codec context + @param[out] buf the output buffer + @param[in] buf_size the output buffer size + @param[in] samples the input buffer containing the samples + The number of samples read from this buffer is frame_size*channels, + both of which are defined in avctx. + For codecs which have avctx->frame_size equal to 0 (e.g. PCM) the number of + samples read from samples is equal to: + buf_size * 8 / (avctx->channels * av_get_bits_per_sample(avctx->codec_id)) + This also implies that av_get_bits_per_sample() must not return 0 for these + codecs. + @return On error a negative value is returned, on success zero or the number + of bytes used to encode the data read from the input buffer. + + + + Free all allocated data in the given subtitle struct. + + @param sub AVSubtitle to free. + + + + * Decode a subtitle message. + * Return a negative value on error, otherwise return the number of bytes used. + * If no subtitle could be decompressed, got_sub_ptr is zero. + * Otherwise, the subtitle is stored in *sub. + * Note that CODEC_CAP_DR1 is not available for subtitle codecs. This is for + * simplicity, because the performance difference is expect to be negligible + * and reusing a get_buffer written for video codecs would probably perform badly + * due to a potentially very different allocation pattern. + * + * @param avctx the codec context + * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be + freed with avsubtitle_free if *got_sub_ptr is set. + * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. + * @param[in] avpkt The input AVPacket containing the input buffer. + + + + Decode the audio frame of size avpkt->size from avpkt->data into frame. + + Some decoders may support multiple frames in a single AVPacket. Such + decoders would then just decode the first frame. In this case, + avcodec_decode_audio4 has to be called again with an AVPacket containing + the remaining data in order to decode the second frame, etc... + Even if no frames are returned, the packet needs to be fed to the decoder + with remaining data until it is completely consumed or an error occurs. + + @warning The input buffer, avpkt->data must be FF_INPUT_BUFFER_PADDING_SIZE + larger than the actual read bytes because some optimized bitstream + readers read 32 or 64 bits at once and could read over the end. + + @note You might have to align the input buffer. The alignment requirements + depend on the CPU and the decoder. + + @param avctx the codec context + @param[out] frame The AVFrame in which to store decoded audio samples. + Decoders request a buffer of a particular size by setting + AVFrame.nb_samples prior to calling get_buffer(). The + decoder may, however, only utilize part of the buffer by + setting AVFrame.nb_samples to a smaller value in the + output frame. + @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is + non-zero. + @param[in] avpkt The input AVPacket containing the input buffer. + At least avpkt->data and avpkt->size should be set. Some + decoders might also require additional fields to be set. + @return A negative error code is returned if an error occurred during + decoding, otherwise the number of bytes consumed from the input + AVPacket is returned. + + + + Wrapper function which calls avcodec_decode_audio4. + + @deprecated Use avcodec_decode_audio4 instead. + + Decode the audio frame of size avpkt->size from avpkt->data into samples. + Some decoders may support multiple frames in a single AVPacket, such + decoders would then just decode the first frame. In this case, + avcodec_decode_audio3 has to be called again with an AVPacket that contains + the remaining data in order to decode the second frame etc. + If no frame + could be outputted, frame_size_ptr is zero. Otherwise, it is the + decompressed frame size in bytes. + + @warning You must set frame_size_ptr to the allocated size of the + output buffer before calling avcodec_decode_audio3(). + + @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than + the actual read bytes because some optimized bitstream readers read 32 or 64 + bits at once and could read over the end. + + @warning The end of the input buffer avpkt->data should be set to 0 to ensure that + no overreading happens for damaged MPEG streams. + + @warning You must not provide a custom get_buffer() when using + avcodec_decode_audio3(). Doing so will override it with + avcodec_default_get_buffer. Use avcodec_decode_audio4() instead, + which does allow the application to provide a custom get_buffer(). + + @note You might have to align the input buffer avpkt->data and output buffer + samples. The alignment requirements depend on the CPU: On some CPUs it isn't + necessary at all, on others it won't work at all if not aligned and on others + it will work but it will have an impact on performance. + + In practice, avpkt->data should have 4 byte alignment at minimum and + samples should be 16 byte aligned unless the CPU doesn't need it + (AltiVec and SSE do). + + @note Codecs which have the CODEC_CAP_DELAY capability set have a delay + between input and output, these need to be fed with avpkt->data=NULL, + avpkt->size=0 at the end to return the remaining frames. + + @param avctx the codec context + @param[out] samples the output buffer, sample type in avctx->sample_fmt + If the sample format is planar, each channel plane will + be the same size, with no padding between channels. + @param[in,out] frame_size_ptr the output buffer size in bytes + @param[in] avpkt The input AVPacket containing the input buffer. + You can create such packet with av_init_packet() and by then setting + data and size, some decoders might in addition need other fields. + All decoders are designed to use the least fields possible though. + @return On error a negative value is returned, otherwise the number of bytes + used or zero if no frame data was decompressed (used) from the input AVPacket. + + + +@deprecated Set s->thread_count before calling avcodec_open2() instead of calling this. + + + + Modify width and height values so that they will result in a memory + buffer that is acceptable for the codec if you also ensure that all + line sizes are a multiple of the respective linesize_align[i]. + + May only be used if a codec with CODEC_CAP_DR1 has been opened. + If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + according to avcodec_get_edge_width() before. + + + + Modify width and height values so that they will result in a memory + buffer that is acceptable for the codec if you do not use any horizontal + padding. + + May only be used if a codec with CODEC_CAP_DR1 has been opened. + If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + according to avcodec_get_edge_width() before. + + + + Return the amount of padding in pixels which the get_buffer callback must + provide around the edge of the image for codecs which do not have the + CODEC_FLAG_EMU_EDGE flag. + + @return Required padding in pixels. + + + + Allocate an AVFrame and set its fields to default values. The resulting + struct can be deallocated by simply calling av_free(). + + @return An AVFrame filled with default values or NULL on failure. + @see avcodec_get_frame_defaults + + + + Set the fields of the given AVFrame to default values. + + @param pic The AVFrame of which the fields should be set to default values. + + + + Copy the settings of the source AVCodecContext into the destination + AVCodecContext. The resulting destination codec context will be + unopened, i.e. you are required to call avcodec_open2() before you + can use this AVCodecContext to decode/encode video/audio data. + + @param dest target codec context, should be initialized with + avcodec_alloc_context3(), but otherwise uninitialized + @param src source codec context + @return AVERROR() on error (e.g. memory allocation error), 0 on success + + + + Allocate an AVCodecContext and set its fields to default values. The + resulting struct can be deallocated by simply calling av_free(). + + @param codec if non-NULL, allocate private data and initialize defaults + for the given codec. It is illegal to then call avcodec_open2() + with a different codec. + + @return An AVCodecContext filled with default values or NULL on failure. + @see avcodec_get_context_defaults + + + +THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! + + + Allocate an AVCodecContext and set its fields to default values. The + resulting struct can be deallocated by simply calling av_free(). + + @return An AVCodecContext filled with default values or NULL on failure. + @see avcodec_get_context_defaults + + @deprecated use avcodec_alloc_context3() + + + + Set the fields of the given AVCodecContext to default values corresponding + to the given codec (defaults may be codec-dependent). + + Do not call this function if a non-NULL codec has been passed + to avcodec_alloc_context3() that allocated this AVCodecContext. + If codec is non-NULL, it is illegal to call avcodec_open2() with a + different codec on this AVCodecContext. + + + +THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! + + + Set the fields of the given AVCodecContext to default values. + + @param s The AVCodecContext of which the fields should be set to default values. + @deprecated use avcodec_get_context_defaults3 + + + + Return a name for the specified profile, if available. + + @param codec the codec that is searched for the given profile + @param profile the profile value for which a name is requested + @return A name for the profile if found, NULL otherwise. + + + + Find a registered decoder with the specified name. + + @param name name of the requested decoder + @return A decoder if one was found, NULL otherwise. + + + + Find a registered decoder with a matching codec ID. + + @param id CodecID of the requested decoder + @return A decoder if one was found, NULL otherwise. + + + + Find a registered encoder with the specified name. + + @param name name of the requested encoder + @return An encoder if one was found, NULL otherwise. + + + + Find a registered encoder with a matching codec ID. + + @param id CodecID of the requested encoder + @return An encoder if one was found, NULL otherwise. + + + + Register the codec codec and initialize libavcodec. + + @warning either this function or avcodec_register_all() must be called + before any other libavcodec functions. + + @see avcodec_register_all() + + + +@deprecated this function is called automatically from avcodec_register() +and avcodec_register_all(), there is no need to call it manually + + + +Return the libavcodec license. + + + +Return the libavcodec build-time configuration. + + + +Return the LIBAVCODEC_VERSION_INT constant. + + + +If c is NULL, returns the first registered codec, +if c is non-NULL, returns the next registered codec after c, +or NULL if c is the last one. + + + +Tell if an image really has transparent alpha values. +@return ored mask of FF_ALPHA_xxx constants + + + + Compute what kind of losses will occur when converting from one specific + pixel format to another. + When converting from one pixel format to another, information loss may occur. + For example, when converting from RGB24 to GRAY, the color information will + be lost. Similarly, other losses occur when converting from some formats to + other formats. These losses can involve loss of chroma, but also loss of + resolution, loss of color depth, loss due to the color space conversion, loss + of the alpha bits or loss due to color quantization. + avcodec_get_fix_fmt_loss() informs you about the various types of losses + which will occur when converting from one pixel format to another. + + @param[in] dst_pix_fmt destination pixel format + @param[in] src_pix_fmt source pixel format + @param[in] has_alpha Whether the source pixel format alpha channel is used. + @return Combination of flags informing you what kind of losses will occur + (maximum loss for an invalid dst_pix_fmt). + + + + Put a string representing the codec tag codec_tag in buf. + + @param buf_size size in bytes of buf + @return the length of the string that would have been generated if + enough space had been available, excluding the trailing null + + + +Return a value representing the fourCC code associated to the +pixel format pix_fmt, or 0 if no associated fourCC code can be +found. + + + + Return the short name for a pixel format. + + \see av_get_pix_fmt(), av_get_pix_fmt_string(). + @deprecated Deprecated in favor of av_get_pix_fmt_name(). + + + +Get the name of a codec. +@return a static string identifying the codec; never NULL + + + + Calculate the size in bytes that a picture of the given width and height + would occupy if stored in the given picture format. + Note that this returns the size of a compact representation as generated + by avpicture_layout(), which can be smaller than the size required for e.g. + avpicture_fill(). + + @param pix_fmt the given picture format + @param width the width of the image + @param height the height of the image + @return Image data size in bytes or -1 on error (e.g. too large dimensions). + + + + Copy pixel data from an AVPicture into a buffer. + The data is stored compactly, without any gaps for alignment or padding + which may be applied by avpicture_fill(). + + @see avpicture_get_size() + + @param[in] src AVPicture containing image data + @param[in] pix_fmt The format in which the picture data is stored. + @param[in] width the width of the image in pixels. + @param[in] height the height of the image in pixels. + @param[out] dest A buffer into which picture data will be copied. + @param[in] dest_size The size of 'dest'. + @return The number of bytes written to dest, or a negative value (error code) on error. + + + + Fill in the AVPicture fields. + The fields of the given AVPicture are filled in by using the 'ptr' address + which points to the image data buffer. Depending on the specified picture + format, one or multiple image data pointers and line sizes will be set. + If a planar format is specified, several pointers will be set pointing to + the different picture planes and the line sizes of the different planes + will be stored in the lines_sizes array. + Call with ptr == NULL to get the required size for the ptr buffer. + + To allocate the buffer and fill in the AVPicture fields in one call, + use avpicture_alloc(). + + @param picture AVPicture whose fields are to be filled in + @param ptr Buffer which will contain or contains the actual image data + @param pix_fmt The format in which the picture data is stored. + @param width the width of the image in pixels + @param height the height of the image in pixels + @return size of the image data in bytes + + + + Free a picture previously allocated by avpicture_alloc(). + The data buffer used by the AVPicture is freed, but the AVPicture structure + itself is not. + + @param picture the AVPicture to be freed + + + + Allocate memory for a picture. Call avpicture_free() to free it. + + @see avpicture_fill() + + @param picture the picture to be filled in + @param pix_fmt the format of the picture + @param width the width of the picture + @param height the height of the picture + @return zero if successful, a negative value if not + + + + Compensate samplerate/timestamp drift. The compensation is done by changing + the resampler parameters, so no audible clicks or similar distortions occur + @param compensation_distance distance in output samples over which the compensation should be performed + @param sample_delta number of output samples which should be output less + + example: av_resample_compensate(c, 10, 500) + here instead of 510 samples only 500 samples would be output + + note, due to rounding the actual compensation might be slightly different, + especially if the compensation_distance is large and the in_rate used during init is small + + + +Resample an array of samples using a previously configured context. +@param src an array of unconsumed samples +@param consumed the number of samples of src which have been consumed are returned here +@param src_size the number of unconsumed samples available +@param dst_size the amount of space in samples available in dst +@param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. +@return the number of samples written in dst or -1 if an error occurred + + + + * Initialize an audio resampler. + * Note, if either rate is not an integer then simply scale both rates up so they are. + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear If 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + + + + Free resample context. + + @param s a non-NULL pointer to a resample context previously + created with av_audio_resample_init() + + + + * Initialize audio resampling context. + * + * @param output_channels number of output channels + * @param input_channels number of input channels + * @param output_rate output sample rate + * @param input_rate input sample rate + * @param sample_fmt_out requested output sample format + * @param sample_fmt_in input sample format + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff frequency + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear if 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + * @return allocated ReSampleContext, NULL if error occurred + + + + Get side information from packet. + + @param pkt packet + @param type desired side information type + @param size pointer for side information size to store (optional) + @return pointer to data if present or NULL otherwise + + + + Allocate new information of a packet. + + @param pkt packet + @param type side information type + @param size side information size + @return pointer to fresh allocated data or NULL otherwise + + + + Free a packet. + + @param pkt packet to free + + + +@warning This is a hack - the packet memory allocation stuff is broken. The +packet is allocated if it was not really allocated. + + + + Increase packet size, correctly zeroing padding + + @param pkt packet + @param grow_by number of bytes by which to increase the size of the packet + + + + Reduce packet size, correctly zeroing padding + + @param pkt packet + @param size new size + + + + Allocate the payload of a packet and initialize its fields with + default values. + + @param pkt packet + @param size wanted payload size + @return 0 if OK, AVERROR_xxx otherwise + + + + Initialize optional fields of a packet with default values. + + @param pkt packet + + + +Default packet destructor. + + + +@deprecated use NULL instead + + + +0 terminated ASS/SSA compatible event line. +The pressentation of this is unaffected by the other values in this +struct. + + + +data+linesize for the bitmap of this subtitle. +can be set for text/ass as well once they where rendered + + + +Formatted text, the ass field must be set by the decoder and is +authoritative. pict and text fields may contain approximations. + + + +Plain text, the text field must be set by the decoder and is +authoritative. ass and pict fields may contain approximations. + + + +four components are given, that's all. +the last component is alpha + + + + Size of HW accelerator private data. + + Private data is allocated with av_mallocz() before + AVCodecContext.get_buffer() and deallocated after + AVCodecContext.release_buffer(). + + + + Called at the end of each frame or field picture. + + The whole picture is parsed at this point and can now be sent + to the hardware accelerator. This function is mandatory. + + @param avctx the codec context + @return zero if successful, a negative value otherwise + + + + Callback for each slice. + + Meaningful slice information (codec specific) is guaranteed to + be parsed at this point. This function is mandatory. + + @param avctx the codec context + @param buf the slice data buffer base + @param buf_size the size of the slice in bytes + @return zero if successful, a negative value otherwise + + + + Called at the beginning of each frame or field picture. + + Meaningful frame information (codec specific) is guaranteed to + be parsed at this point. This function is mandatory. + + Note that buf can be NULL along with buf_size set to 0. + Otherwise, this means the whole frame is available at this point. + + @param avctx the codec context + @param buf the frame data buffer base + @param buf_size the size of the frame in bytes + @return zero if successful, a negative value otherwise + + + +Hardware accelerated codec capabilities. +see FF_HWACCEL_CODEC_CAP_* + + + +Name of the hardware accelerated codec. +The name is globally unique among encoders and among decoders (but an +encoder and a decoder can share the same name). + + + + Encode data to an AVPacket. + + @param avctx codec context + @param avpkt output AVPacket (may contain a user-provided buffer) + @param[in] frame AVFrame containing the raw data to be encoded + @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a + non-empty packet was returned in avpkt. + @return 0 on success, negative error code on failure + + + +Initialize codec static data, called from avcodec_register(). + + + +@} +Private codec-specific defaults. + + + + Copy necessary context variables from a previous thread context to the current one. + If not defined, the next thread will start automatically; otherwise, the codec + must call ff_thread_finish_setup(). + + dst and src will (rarely) point to the same context, in which case memcpy should be skipped. + + + +@name Frame-level threading support functions +@{ + +If defined, called on thread contexts when they are created. +If the codec allocates writable tables in init(), re-allocate them here. +priv_data will be set to a copy of the original. + + + +Descriptive name for the codec, meant to be more human readable than name. +You should use the NULL_IF_CONFIG_SMALL() macro to define it. + + + +Flush buffers. +Will be called when seeking + + + +Codec capabilities. +see CODEC_CAP_* + + + +Name of the codec implementation. +The name is globally unique among encoders and among decoders (but an +encoder and a decoder can share the same name). +This is the primary way to find a codec from the user perspective. + + + +AVCodec. + + + +AVProfile. + + + +Current statistics for PTS correction. +- decoding: maintained and used by libavcodec, not intended to be used by user apps +- encoding: unused + + + +Field order + * - encoding: set by libavcodec + * - decoding: Set by libavcodec + + + + Private context used for internal data. + + Unlike priv_data, this is not codec-specific. It is used in general + libavcodec functions. + + + +Error recognition; may misdetect some more or less valid parts as errors. +- encoding: unused +- decoding: Set by user. + + + +Type of service that the audio stream conveys. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +VBV delay coded in the last frame (in periods of a 27 MHz clock). +Used for compliant TS muxing. +- encoding: Set by libavcodec. +- decoding: unused. + + + +Set by the client if its custom get_buffer() callback can be called +from another thread, which allows faster multithreaded decoding. +draw_horiz_band() will be called from other threads regardless of this setting. +Ignored if the default get_buffer() is used. +- encoding: Set by user. +- decoding: Set by user. + + + +Which multithreading methods are in use by the codec. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + + Which multithreading methods to use. + Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, + so clients which cannot provide future frames should not use it. + + - encoding: Set by user, otherwise the default is used. + - decoding: Set by user, otherwise the default is used. + + + + Whether this is a copy of the context which had init() called on it. + This is used by multithreading - shared tables and picture pointers + should be freed from the original context only. + - encoding: Set by libavcodec. + - decoding: Set by libavcodec. + + @deprecated this field has been moved to an internal context + + + +Current packet as passed into the decoder, to avoid having +to pass the packet into every function. Currently only valid +inside lavc and get/release_buffer callbacks. +- decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts +- encoding: unused + + + +Header containing style information for text subtitles. +For SUBTITLE_ASS subtitle type, it should contain the whole ASS +[Script Info] and [V4+ Styles] section, plus the [Events] line and +the Format line following. It shouldn't include any Dialogue line. +- encoding: Set/allocated/freed by user (before avcodec_open2()) +- decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) + + + +Number of slices. +Indicates number of picture subdivisions. Used for parallelized +decoding. +- encoding: Set by user +- decoding: unused + + + +Number of passes to use for Cholesky factorization during LPC analysis +- encoding: Set by user +- decoding: unused + + + +Constant rate factor maximum +With CRF encoding mode and VBV restrictions enabled, prevents quality from being worse +than crf_max, even if doing so would violate VBV restrictions. +- encoding: Set by user. +- decoding: unused + + + +RC lookahead +Number of frames for frametype and ratecontrol lookahead +- encoding: Set by user +- decoding: unused + + + +PSY trellis +Strength of psychovisual optimization +- encoding: Set by user +- decoding: unused + + + +PSY RD +Strength of psychovisual optimization +- encoding: Set by user +- decoding: unused + + + +AQ strength +Reduces blocking and blurring in flat and textured areas. +- encoding: Set by user +- decoding: unused + + + +AQ mode +0: Disabled +1: Variance AQ (complexity mask) +2: Auto-variance AQ (experimental) +- encoding: Set by user +- decoding: unused + + + +explicit P-frame weighted prediction analysis method +0: off +1: fast blind weighting (one reference duplicate with -1 offset) +2: smart weighting (full fade detection analysis) +- encoding: Set by user. +- decoding: unused + + + +MPEG vs JPEG YUV range. +- encoding: Set by user +- decoding: Set by libavcodec + + + +YUV colorspace type. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Color Transfer Characteristic. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Chromaticity coordinates of the source primaries. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Hardware accelerator context. +For some hardware accelerators, a global context needs to be +provided by the user. In that case, this holds display-dependent +data FFmpeg cannot instantiate itself. Please refer to the +FFmpeg HW accelerator documentation to know how to fill this +is. e.g. for VA API, this is a struct vaapi_context. +- encoding: unused +- decoding: Set by user + + + + For some codecs, the time base is closer to the field rate than the frame rate. + Most notably, H.264 and MPEG-2 specify time_base as half of frame duration + if no telecine is used ... + + Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. + + + +Hardware accelerator in use +- encoding: unused. +- decoding: Set by libavcodec + + +AVHWAccel. + + + +Request decoder to use this channel layout if it can (0 for default) +- encoding: unused +- decoding: Set by user. + + + +Audio channel layout. +- encoding: set by user. +- decoding: set by user, may be overwritten by libavcodec. + + + +Bits per sample/pixel of internal libavcodec pixel/sample format. +- encoding: set by user. +- decoding: set by libavcodec. + + + +opaque 64bit number (generally a PTS) that will be reordered and +output in AVFrame.reordered_opaque +@deprecated in favor of pkt_pts +- encoding: unused +- decoding: Set by user. + + + +Percentage of dynamic range compression to be applied by the decoder. +The default value is 1.0, corresponding to full compression. +- encoding: unused +- decoding: Set by user. +@deprecated use AC3 decoder private option instead. + + + +Decoder should decode to this many channels if it can (0 for default) +- encoding: unused +- decoding: Set by user. +@deprecated Deprecated in favor of request_channel_layout. + + + +@} + +GOP timecode frame start number +- encoding: Set by user, in non drop frame format +- decoding: Set by libavcodec (timecode in the 25 bits format, -1 if unset) + + + +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +search method for selecting prediction order +- encoding: Set by user. +- decoding: unused + + + +@name FLAC options +@deprecated Use FLAC encoder private options instead. +@{ + +LPC coefficient precision - used by FLAC encoder +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +Adjust sensitivity of b_frame_strategy 1. +- encoding: Set by user. +- decoding: unused + + + + + Note: Value depends upon the compare function used for fullpel ME. + - encoding: Set by user. + - decoding: unused + + + +Multiplied by qscale for each frame and added to scene_change_score. +- encoding: Set by user. +- decoding: unused + + + +Audio cutoff bandwidth (0 means "automatic") +- encoding: Set by user. +- decoding: unused + + + +direct MV prediction mode - 0 (none), 1 (spatial), 2 (temporal), 3 (auto) +- encoding: Set by user. +- decoding: unused + + + +macroblock subpartition sizes to consider - p8x8, p4x4, b8x8, i8x8, i4x4 +- encoding: Set by user. +- decoding: unused + + + +in-loop deblocking filter beta parameter +beta is in the range -6...6 +- encoding: Set by user. +- decoding: unused + + + +in-loop deblocking filter alphac0 parameter +alpha is in the range -6...6 +- encoding: Set by user. +- decoding: unused + + + +Reduce fluctuations in qp (before curve compression). +- encoding: Set by user. +- decoding: unused + + + +trellis RD quantization +- encoding: Set by user. +- decoding: unused + + + +Influence how often B-frames are used. +- encoding: Set by user. +- decoding: unused + + + +chroma qp offset from luma +- encoding: Set by user. +- decoding: unused + + + +number of reference frames +- encoding: Set by user. +- decoding: Set by lavc. + + + +minimum GOP size +- encoding: Set by user. +- decoding: unused + + + +constant quantization parameter rate control method +- encoding: Set by user. +- decoding: unused + @deprecated use 'cqp' libx264 private option + + + +constant rate factor - quality-based VBR - values ~correspond to qps +- encoding: Set by user. +- decoding: unused + @deprecated use 'crf' libx264 private option + + + + + - encoding: Set by user. + - decoding: unused + + + + + - encoding: Set by user. + - decoding: unused + + + + + - encoding: unused + - decoding: Set by user. + + + + - encoding: unused + - decoding: Set by user. + + + + - encoding: unused + - decoding: Set by user. + + + + + - encoding: Set by user. + - decoding: unused + + + +maximum MB lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +minimum MB lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +Border processing masking, raises the quantizer for mbs on the borders +of the picture. +- encoding: Set by user. +- decoding: unused + + + +frame skip comparison function +- encoding: Set by user. +- decoding: unused + + + +frame skip exponent +- encoding: Set by user. +- decoding: unused + + + +frame skip factor +- encoding: Set by user. +- decoding: unused + + + +frame skip threshold +- encoding: Set by user. +- decoding: unused + + + +Bitstream width / height, may be different from width/height if lowres enabled. +- encoding: unused +- decoding: Set by user before init if known. Codec should override / dynamically change if needed. + + + +low resolution decoding, 1-> 1/2 size, 2->1/4 size +- encoding: unused +- decoding: Set by user. + + + +level +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +profile +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +Number of macroblock rows at the bottom which are skipped. +- encoding: unused +- decoding: Set by user. + + + +Number of macroblock rows at the top which are skipped. +- encoding: unused +- decoding: Set by user. + + + +noise vs. sse weight for the nsse comparsion function +- encoding: Set by user. +- decoding: unused + + + +precision of the intra DC coefficient - 8 +- encoding: Set by user. +- decoding: unused + + + +Macroblock threshold below which the user specified macroblock types will be used. +- encoding: Set by user. +- decoding: unused + + + + Motion estimation threshold below which no motion estimation is + performed, but instead the user specified motion vectors are used. + + - encoding: Set by user. + - decoding: unused + + + +thread opaque +Can be used by execute() to store some per AVCodecContext stuff. +- encoding: set by execute() +- decoding: set by execute() + + + +The codec may call this to execute several independent things. +It will return only after finishing all tasks. +The user may replace this with some multithreaded implementation, +the default implementation will execute the parts serially. +@param count the number of things to execute +- encoding: Set by libavcodec, user can override. +- decoding: Set by libavcodec, user can override. + + + +thread count +is used to decide how many independent tasks should be passed to execute() +- encoding: Set by user. +- decoding: Set by user. + + + +quantizer noise shaping +- encoding: Set by user. +- decoding: unused + + + +MP3 antialias algorithm, see FF_AA_* below. +- encoding: unused +- decoding: Set by user. + + + +Simulates errors in the bitstream to test error concealment. +- encoding: Set by user. +- decoding: unused + + + +CODEC_FLAG2_* +- encoding: Set by user. +- decoding: Set by user. + + + + + - encoding: Set by user. + - decoding: unused + + + +Number of bits which should be loaded into the rc buffer before decoding starts. +- encoding: Set by user. +- decoding: unused + + + +Called at the beginning of a frame to get cr buffer for it. +Buffer type (size, hints) must be the same. libavcodec won't check it. +libavcodec will pass previous buffer in pic, function should return +same buffer or new buffer with old frame "painted" into it. +If pic.data[0] == NULL must behave like get_buffer(). +if CODEC_CAP_DR1 is not set then reget_buffer() must call +avcodec_default_reget_buffer() instead of providing buffers allocated by +some other means. +- encoding: unused +- decoding: Set by libavcodec, user can override. + + + +noise reduction strength +- encoding: Set by user. +- decoding: unused + + + +palette control structure +- encoding: ??? (no palette-enabled encoder yet) +- decoding: Set by user. + + + AVPaletteControl + This structure defines a method for communicating palette changes + between and demuxer and a decoder. + + @deprecated Use AVPacket to send palette changes instead. + This is totally broken. + + + +maximum Lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +minimum Lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +scene change detection threshold +0 is default, larger means fewer detected scene changes. +- encoding: Set by user. +- decoding: unused + + + +custom inter quantization matrix +- encoding: Set by user, can be NULL. +- decoding: Set by libavcodec. + + + +custom intra quantization matrix +- encoding: Set by user, can be NULL. +- decoding: Set by libavcodec. + + + +macroblock decision mode +- encoding: Set by user. +- decoding: unused + + + +XVideo Motion Acceleration +- encoding: forbidden +- decoding: set by decoder + + + +slice flags +- encoding: unused +- decoding: Set by user. + + + +context model +- encoding: Set by user. +- decoding: unused + + + +coder type +- encoding: Set by user. +- decoding: unused + + + +Global quality for codecs which cannot change it per frame. +This should be proportional to MPEG-1/2/4 qscale. +- encoding: Set by user. +- decoding: unused + + + +internal_buffers +Don't touch, used by libavcodec default_get_buffer(). +@deprecated this field was moved to an internal context + + + +internal_buffer count +Don't touch, used by libavcodec default_get_buffer(). +@deprecated this field was moved to an internal context + + + +color table ID +- encoding: unused +- decoding: Which clrtable should be used for 8bit RGB images. + Tables have to be stored somewhere. FIXME + + + +inter quantizer bias +- encoding: Set by user. +- decoding: unused + + + +intra quantizer bias +- encoding: Set by user. +- decoding: unused + + + + maximum motion estimation search range in subpel units + If 0 then no limit. + + - encoding: Set by user. + - decoding: unused + + + + DTG active format information (additional aspect ratio + information only used in DVB MPEG-2 transport streams) + 0 if not set. + + - encoding: unused + - decoding: Set by decoder. + + + +subpel ME quality +- encoding: Set by user. +- decoding: unused + + + +motion estimation prepass comparison function +- encoding: Set by user. +- decoding: unused + + + +prepass for motion estimation +- encoding: Set by user. +- decoding: unused + + + +amount of previous MV predictors (2a+1 x 2a+1 square) +- encoding: Set by user. +- decoding: unused + + + +interlaced DCT comparison function +- encoding: Set by user. +- decoding: unused + + + +macroblock comparison function (not supported yet) +- encoding: Set by user. +- decoding: unused + + + +subpixel motion estimation comparison function +- encoding: Set by user. +- decoding: unused + + + +motion estimation comparison function +- encoding: Set by user. +- decoding: unused + + + +debug +- encoding: Set by user. +- decoding: Set by user. + + + +debug +- encoding: Set by user. +- decoding: Set by user. + + + +the picture in the bitstream +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +sample aspect ratio (0 if unknown) +That is the width of a pixel divided by the height of the pixel. +Numerator and denominator must be relatively prime and smaller than 256 for some video standards. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +prediction method (needed for huffyuv) +- encoding: Set by user. +- decoding: unused + + + +bits per sample/pixel from the demuxer (needed for huffyuv). +- encoding: Set by libavcodec. +- decoding: Set by user. + + + + dsp_mask could be add used to disable unwanted CPU features + CPU features (i.e. MMX, SSE. ...) + + With the FORCE flag you may instead enable given CPU features. + (Dangerous: Usable in case of misdetection, improper usage however will + result into program crash.) + + + +error concealment flags +- encoding: unused +- decoding: Set by user. + + + +slice offsets in the frame in bytes +- encoding: Set/allocated by libavcodec. +- decoding: Set/allocated by user (or NULL). + + + +slice count +- encoding: Set by libavcodec. +- decoding: Set by user (or 0). + + + +IDCT algorithm, see FF_IDCT_* below. +- encoding: Set by user. +- decoding: Set by user. + + + +darkness masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +p block masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +spatial complexity masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +temporary complexity masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +luminance masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +DCT algorithm, see FF_DCT_* below +- encoding: Set by user. +- decoding: unused + + + +initial complexity for pass1 ratecontrol +- encoding: Set by user. +- decoding: unused + + + +qscale offset between P and I-frames +- encoding: Set by user. +- decoding: unused + + + +decoder bitstream buffer size +- encoding: Set by user. +- decoding: unused + + + +minimum bitrate +- encoding: Set by user. +- decoding: unused + + + +maximum bitrate +- encoding: Set by user. +- decoding: unused + + + +rate control equation +- encoding: Set by user +- decoding: unused + + + +ratecontrol override, see RcOverride +- encoding: Allocated/set/freed by user. +- decoding: unused + + + +ratecontrol qmin qmax limiting method +0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax. +- encoding: Set by user. +- decoding: unused + + + +pass2 encoding statistics input buffer +Concatenated stuff from stats_out of pass1 should be placed here. +- encoding: Allocated/set/freed by user. +- decoding: unused + + + +pass1 encoding statistics output buffer +- encoding: Set by libavcodec. +- decoding: unused + + + +0-> h263 quant 1-> mpeg quant +- encoding: Set by user. +- decoding: unused + + + +If true, only parsing is done. The frame data is returned. +Only MPEG audio decoders support this now. +- encoding: unused +- decoding: Set by user + + + +number of bytes per packet if constant and known or 0 +Used by some WAV based audio codecs. + + + +Size of the frame reordering buffer in the decoder. +For MPEG-2 it is 1 IPB or 0 low delay IP. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +Called to release buffers which were allocated with get_buffer. +A released buffer can be reused in get_buffer(). +pic.data[*] must be set to NULL. +May be called from a different thread if frame multithreading is used, +but not by more than one thread at once, so does not need to be reentrant. +- encoding: unused +- decoding: Set by libavcodec, user can override. + + + + Called at the beginning of each frame to get a buffer for it. + + The function will set AVFrame.data[], AVFrame.linesize[]. + AVFrame.extended_data[] must also be set, but it should be the same as + AVFrame.data[] except for planar audio with more channels than can fit + in AVFrame.data[]. In that case, AVFrame.data[] shall still contain as + many data pointers as it can hold. + + if CODEC_CAP_DR1 is not set then get_buffer() must call + avcodec_default_get_buffer() instead of providing buffers allocated by + some other means. + + AVFrame.data[] should be 32- or 16-byte-aligned unless the CPU doesn't + need it. avcodec_default_get_buffer() aligns the output buffer properly, + but if get_buffer() is overridden then alignment considerations should + be taken into account. + + @see avcodec_default_get_buffer() + + Video: + + If pic.reference is set then the frame will be read later by libavcodec. + avcodec_align_dimensions2() should be used to find the required width and + height, as they normally need to be rounded up to the next multiple of 16. + + If frame multithreading is used and thread_safe_callbacks is set, + it may be called from a different thread, but not from more than one at + once. Does not need to be reentrant. + + @see release_buffer(), reget_buffer() + @see avcodec_align_dimensions2() + + Audio: + + Decoders request a buffer of a particular size by setting + AVFrame.nb_samples prior to calling get_buffer(). The decoder may, + however, utilize only part of the buffer by setting AVFrame.nb_samples + to a smaller value in the output frame. + + Decoders cannot use the buffer after returning from + avcodec_decode_audio4(), so they will not call release_buffer(), as it + is assumed to be released immediately upon return. + + As a convenience, av_samples_get_buffer_size() and + av_samples_fill_arrays() in libavutil may be used by custom get_buffer() + functions to find the required data size and to fill data pointers and + linesize. In AVFrame.linesize, only linesize[0] may be set for audio + since all planes must be the same size. + + @see av_samples_get_buffer_size(), av_samples_fill_arrays() + + - encoding: unused + - decoding: Set by libavcodec, user can override. + + + +Error recognition; higher values will detect more errors but may +misdetect some more or less valid parts as errors. +- encoding: unused +- decoding: Set by user. + + + +qscale offset between IP and B-frames +- encoding: Set by user. +- decoding: unused + + + +strictly follow the standard (MPEG4, ...). +- encoding: Set by user. +- decoding: Set by user. +Setting this to STRICT or higher means the encoder and decoder will +generally do stupid things, whereas setting it to unofficial or lower +will mean the encoder might produce output that is not supported by all +spec-compliant decoders. Decoders don't differentiate between normal, +unofficial and experimental (that is, they always try to decode things +when they can) unless they are explicitly asked to behave stupidly +(=strictly conform to the specs) + + + +chroma single coeff elimination threshold +- encoding: Set by user. +- decoding: unused + + + +luma single coefficient elimination threshold +- encoding: Set by user. +- decoding: unused + + + +Work around bugs in encoders which sometimes cannot be detected automatically. +- encoding: Set by user +- decoding: Set by user + + + +Private data of the user, can be used to carry app specific stuff. +- encoding: Set by user. +- decoding: Set by user. + + + +number of bits used for the previously encoded frame +- encoding: Set by libavcodec. +- decoding: unused + + + +obsolete FIXME remove + + +maximum number of B-frames between non-B-frames +Note: The output will be delayed by max_b_frames+1 relative to the input. +- encoding: Set by user. +- decoding: unused + + + +maximum quantizer difference between frames +- encoding: Set by user. +- decoding: unused + + + +maximum quantizer +- encoding: Set by user. +- decoding: unused + + + +minimum quantizer +- encoding: Set by user. +- decoding: unused + + + +Encoding: Number of frames delay there will be from the encoder input to + the decoder output. (we assume the decoder matches the spec) +Decoding: Number of frames delay in addition to what a standard decoder + as specified in the spec would produce. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +Samples per packet, initialized when calling 'init'. + + + +If non NULL, 'draw_horiz_band' is called by the libavcodec +decoder to draw a horizontal band. It improves cache usage. Not +all codecs can do that. You must check the codec capabilities +beforehand. +When multithreading is used, it may be called from multiple threads +at the same time; threads might draw different parts of the same AVFrame, +or multiple AVFrames, and there is no guarantee that slices will be drawn +in order. +The function is also used by hardware acceleration APIs. +It is called at least once during frame decoding to pass +the data needed for hardware render. +In that mode instead of pixel data, AVFrame points to +a structure specific to the acceleration API. The application +reads the structure and can change some fields to indicate progress +or mark state. +- encoding: unused +- decoding: Set by user. +@param height the height of the slice +@param y the y position of the slice +@param type 1->top field, 2->bottom field, 3->frame +@param offset offset into the AVFrame.data from which the slice should be read + + + +Pixel format, see PIX_FMT_xxx. +May be set by the demuxer if known from headers. +May be overriden by the decoder if it knows better. +- encoding: Set by user. +- decoding: Set by user if known, overridden by libavcodec if known + + +callback to negotiate the pixelFormat +@param fmt is the list of formats which are supported by the codec, +it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. +The first is always the native one. +@return the chosen format +- encoding: unused +- decoding: Set by user, if not set the native format will be chosen. + + + Supported pixel format. + + Only hardware accelerated formats are supported here. + + + +the number of pictures in a group of pictures, or 0 for intra_only +- encoding: Set by user. +- decoding: unused + + + +picture width / height. +- encoding: MUST be set by user. +- decoding: Set by libavcodec. +Note: For compatibility it is possible to set this instead of +coded_width/height before decoding. + + + +This is the fundamental unit of time (in seconds) in terms +of which frame timestamps are represented. For fixed-fps content, +timebase should be 1/framerate and timestamp increments should be +identically 1. +- encoding: MUST be set by user. +- decoding: Set by libavcodec. + + + +some codecs need / can use extradata like Huffman tables. +mjpeg: Huffman tables +rv10: additional flags +mpeg4: global headers (they can be in the bitstream or here) +The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger +than extradata_size to avoid prolems if it is read with the bitstream reader. +The bytewise contents of extradata must not depend on the architecture or CPU endianness. +- encoding: Set/allocated/freed by libavcodec. +- decoding: Set/allocated/freed by user. + + + +Motion estimation algorithm used for video coding. +1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), +8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] +- encoding: MUST be set by user. +- decoding: unused + + + +Some codecs need additional format info. It is stored here. +If any muxer uses this then ALL demuxers/parsers AND encoders for the +specific codec MUST set it correctly otherwise stream copy breaks. +In general use of this field by muxers is not recommended. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. (FIXME: Is this OK?) + + + +CODEC_FLAG_*. +- encoding: Set by user. +- decoding: Set by user. + + + +number of bits the bitstream is allowed to diverge from the reference. + the reference can be CBR (for CBR pass1) or VBR (for pass2) +- encoding: Set by user; unused for constant quantizer encoding. +- decoding: unused + + + +the average bitrate +- encoding: Set by user; unused for constant quantizer encoding. +- decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream. + + + +information on struct for av_log +- set by avcodec_alloc_context3 + + + +reordered pos from the last AVPacket that has been input into the decoder +Code outside libavcodec should access this field using: + av_opt_ptr(avcodec_get_frame_class(), frame, "pkt_pos"); +- encoding: unused +- decoding: Read by user. + + + +frame timestamp estimated using various heuristics, in stream time base +Code outside libavcodec should access this field using: + av_opt_ptr(avcodec_get_frame_class(), frame, "best_effort_timestamp"); +- encoding: unused +- decoding: set by libavcodec, read by user. + + + +format of the frame, -1 if unknown or unset +Values correspond to enum PixelFormat for video frames, +enum AVSampleFormat for audio) +- encoding: unused +- decoding: Read by user. + + + +width and height of the video frame +- encoding: unused +- decoding: Read by user. + + + +sample aspect ratio for the video frame, 0/1 if unknown\unspecified +- encoding: unused +- decoding: Read by user. + + + + pointers to the data planes/channels. + + For video, this should simply point to data[]. + + For planar audio, each channel has a separate data pointer, and + linesize[0] contains the size of each channel buffer. + For packed audio, there is just one data pointer, and linesize[0] + contains the total size of the buffer for all channels. + + Note: Both data and extended_data will always be set by get_buffer(), + but for planar audio with more channels that can fit in data, + extended_data must be used by the decoder in order to access all + channels. + + encoding: unused + decoding: set by AVCodecContext.get_buffer() + + + +number of audio samples (per channel) described by this frame +- encoding: unused +- decoding: Set by libavcodec + + + +used by multithreading to store frame-specific info +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +the AVCodecContext which ff_thread_get_buffer() was last called on +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + +main external API structure. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +Please use AVOptions (av_opt* / av_set/get*()) to access these fields from user +applications. +sizeof(AVCodecContext) must not be used outside libav*. + + + +dts from the last AVPacket that has been input into the decoder +- encoding: unused +- decoding: Read by user. + + + +reordered pts from the last AVPacket that has been input into the decoder +- encoding: unused +- decoding: Read by user. + + + +hardware accelerator private data (FFmpeg-allocated) +- encoding: unused +- decoding: Set by libavcodec + + + +reordered opaque 64bit (generally an integer or a double precision float +PTS but can be anything). +The user sets AVCodecContext.reordered_opaque to represent the input at +that time, +the decoder reorders values as needed and sets AVFrame.reordered_opaque +to exactly one of the values provided by the user through AVCodecContext.reordered_opaque +@deprecated in favor of pkt_pts +- encoding: unused +- decoding: Read by user. + + + +motion reference frame index +the order in which these are stored can depend on the codec. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +DCT coefficients +- encoding: unused +- decoding: Set by libavcodec. + + + +codec suggestion on buffer type if != 0 +- encoding: unused +- decoding: Set by libavcodec. (before get_buffer() call)). + + + +Tell user application that palette has changed from previous frame. +- encoding: ??? (no palette-enabled encoder yet) +- decoding: Set by libavcodec. (default 0). + + + +Pan scan. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +If the content is interlaced, is top field displayed first. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +The content of the picture is interlaced. +- encoding: Set by user. +- decoding: Set by libavcodec. (default 0) + + + +When decoding, this signals how much the picture must be delayed. +extra_delay = repeat_pict / (2*fps) +- encoding: unused +- decoding: Set by libavcodec. + + + +for some private data of the user +- encoding: unused +- decoding: Set by user. + + + +log2 of the size of the block which a single vector in motion_val represents: +(4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2) +- encoding: unused +- decoding: Set by libavcodec. + + + +macroblock type table +mb_type_base + mb_width + 2 +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +mbskip_table[mb]>=1 if MB didn't change +stride= mb_width = (width+15)>>4 +- encoding: unused +- decoding: Set by libavcodec. + + + +QP store stride +- encoding: unused +- decoding: Set by libavcodec. + + + +QP table +- encoding: unused +- decoding: Set by libavcodec. + + + +is this picture used as reference +The values for this are the same as the MpegEncContext.picture_structure +variable, that is 1->top field, 2->bottom field, 3->frame/both fields. +Set to 4 for delayed, non-reference frames. +- encoding: unused +- decoding: Set by libavcodec. (before get_buffer() call)). + + + +@deprecated unused + + + +quality (between 1 (good) and FF_LAMBDA_MAX (bad)) +- encoding: Set by libavcodec. for coded_picture (and set by user for input). +- decoding: Set by libavcodec. + + + +picture number in display order +- encoding: set by +- decoding: Set by libavcodec. + + + +picture number in bitstream order +- encoding: set by +- decoding: Set by libavcodec. + + + +presentation timestamp in time_base units (time when frame should be shown to user) +If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed. +- encoding: MUST be set by user. +- decoding: Set by libavcodec. + + + +1 -> keyframe, 0-> not +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer. +This isn't used by libavcodec unless the default get/release_buffer() is used. +- encoding: +- decoding: + + + + Size, in bytes, of the data for each picture/channel plane. + + For audio, only linesize[0] may be set. For planar audio, each channel + plane must be the same size. + + - encoding: Set by user (video only) + - decoding: set by AVCodecContext.get_buffer() + + + +pointer to the picture/channel planes. +This might be different from the first allocated byte +- encoding: Set by user +- decoding: set by AVCodecContext.get_buffer() + + + +Audio Video Frame. +New fields can be added to the end of AVFRAME with minor version +bumps. Similarly fields that are marked as to be only accessed by +av_opt_ptr() can be reordered. This allows 2 forks to add fields +without breaking compatibility with each other. +Removal, reordering and changes in the remaining cases require +a major version bump. +sizeof(AVFrame) must not be used outside libavcodec. + + + + Time difference in AVStream->time_base units from the pts of this + packet to the point at which the output from the decoder has converged + independent from the availability of previous frames. That is, the + frames are virtually identical no matter if decoding started from + the very first frame or from this keyframe. + Is AV_NOPTS_VALUE if unknown. + This field is not the display duration of the current packet. + This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + set. + + The purpose of this field is to allow seeking in streams that have no + keyframes in the conventional sense. It corresponds to the + recovery point SEI in H.264 and match_time_delta in NUT. It is also + essential for some types of subtitle streams to ensure that all + subtitles are correctly displayed after seeking. + + + +Duration of this packet in AVStream->time_base units, 0 if unknown. +Equals next_pts - this_pts in presentation order. + + + +A combination of AV_PKT_FLAG values + + + +Decompression timestamp in AVStream->time_base units; the time at which +the packet is decompressed. +Can be AV_NOPTS_VALUE if it is not stored in the file. + + + +Presentation timestamp in AVStream->time_base units; the time at which +the decompressed packet will be presented to the user. +Can be AV_NOPTS_VALUE if it is not stored in the file. +pts MUST be larger or equal to dts as presentation cannot happen before +decompression, unless one wants to view hex dumps. Some formats misuse +the terms dts and pts/cts to mean something different. Such timestamps +must be converted to true pts/dts before they are stored in AVPacket. + + + +position of the top left corner in 1/16 pel for up to 3 fields/frames +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +width and height in 1/16 pel +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +id +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +The parent program guarantees that the input for B-frames containing +streams is not written to for at least s->max_b_frames+1 frames, if +this is not set the input will be copied. + +@defgroup deprecated_flags Deprecated codec flags +Use corresponding private codec options instead. +@{ + +@} + +Codec uses get_buffer() for allocating buffers and supports custom allocators. +If not set, it might not use get_buffer() at all or use operations that +assume the buffer was allocated by avcodec_default_get_buffer. + + Encoder or decoder requires flushing with NULL input at the end in order to + give the complete and correct output. + + NOTE: If this flag is not set, the codec is guaranteed to never be fed with + with NULL data. The user can still send NULL data to the public encode + or decode function, but libavcodec will not pass it along to the codec + unless this flag is set. + + Decoders: + The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, + avpkt->size=0 at the end to get the delayed data until the decoder no longer + returns frames. + + Encoders: + The encoder needs to be fed with NULL data at the end of encoding until the + encoder no longer returns data. + + NOTE: For encoders implementing the AVCodec.encode2() function, setting this + flag also means that the encoder must set the pts and duration for + each output packet. If this flag is not set, the pts and duration will + be determined by libavcodec from the input frame. + +Codec can be fed a final frame with a smaller size. +This can be used to prevent truncation of the last audio samples. + +Codec can export data for HW decoding (VDPAU). + +Codec can output multiple frames per AVPacket +Normally demuxers return one frame at a time, demuxers which do not do +are connected to a parser to split what they return into proper frames. +This flag is reserved to the very rare category of codecs which have a +bitstream that cannot be split into frames without timeconsuming +operations like full decoding. Demuxers carring such bitstreams thus +may return multiple frames in a packet. This has many disadvantages like +prohibiting stream copy in many cases thus it should only be considered +as a last resort. + +Codec is experimental and is thus avoided in favor of non experimental +encoders + +Codec should fill in channel configuration and samplerate instead of container + +Codec is able to deal with negative linesizes + +Codec supports frame-level multithreading. + +Codec supports slice-based (or partition-based) multithreading. + +Codec supports changed parameters at any point. + +Codec supports avctx->thread_count == 0 (auto). + +Audio encoder supports receiving a different number of samples in each call. + +Codec is lossless. + +Pan Scan area. +This specifies the area which should be displayed. +Note there may be multiple such areas for one frame. + + + +LPC analysis type + + +Determine which LPC analysis algorithm to use. +- encoding: Set by user +- decoding: unused + + + +X X 3 4 X X are luma samples, + 1 2 1-6 are possible chroma positions +X X 5 6 X 0 is undefined/unknown position + + +This defines the location of chroma samples. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Return default channel layout for a given number of channels. + + + +Return the number of channels in the channel layout. + + + +@file +audio conversion routines + +@addtogroup lavu_audio +@{ + +@defgroup channel_masks Audio channel masks +@{ + +Channel mask value used for AVCodecContext.request_channel_layout + to indicate that the user requests the channel order of the decoder output + to be the native codec channel order. +@} +@defgroup channel_mask_c Audio channel convenience macros +@{ + +@} + + * Return a channel layout id that matches name, 0 if no match. + * name can be one or several of the following notations, + * separated by '+' or '|': + * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0, + * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix); + * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC, + * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR); + * - a number of channels, in decimal, optionnally followed by 'c', yielding + * the default channel layout for that number of channels (@see + * av_get_default_channel_layout); + * - a channel layout mask, in hexadecimal starting with "0x" (see the + * AV_CH_* macros). + + Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7" + + + +@} + +Those FF_API_* defines are not part of public API. +They may change, break or disappear at any time. + + @defgroup libavc Encoding/Decoding Library + @{ + + @defgroup lavc_decoding Decoding + @{ + @} + + @defgroup lavc_encoding Encoding + @{ + @} + + @defgroup lavc_codec Codecs + @{ + @defgroup lavc_codec_native Native Codecs + @{ + @} + @defgroup lavc_codec_wrappers External library wrappers + @{ + @} + @defgroup lavc_codec_hwaccel Hardware Accelerators bridge + @{ + @} + @} + @defgroup lavc_internal Internal + @{ + @} + @} + + + Identify the syntax and semantics of the bitstream. + The principle is roughly: + Two decoders with the same ID can decode the same streams. + Two encoders with the same ID can encode compatible streams. + There may be slight deviations from the principle due to implementation + details. + + If you add a codec ID to this list, add it so that + 1. no value of a existing codec ID changes (that would break ABI), + 2. Give it a value which when taken as ASCII is recognized uniquely by a human as this specific codec. + This ensures that 2 forks can independantly add CodecIDs without producing conflicts. + + + Codec implemented by the hardware accelerator. + + See CODEC_ID_xxx + + +Forced video codec_id. +Demuxing: Set by user. + + +Forced audio codec_id. +Demuxing: Set by user. + + +Forced subtitle codec_id. +Demuxing: Set by user. + + +@} + + +Guess the codec ID based upon muxer and filename. + + + Get the CodecID for the given codec tag tag. + If no codec id is found returns CODEC_ID_NONE. + + @param tags list of supported codec_id-codec_tag pairs, as stored + in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + + + +Free all the memory allocated for an AVDictionary struct +and all keys and values. + + + +Copy entries from one AVDictionary struct into another. +@param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + this function will allocate a struct for you and put it in *dst +@param src pointer to source AVDictionary struct +@param flags flags to use when setting entries in *dst +@note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + + + + Get a dictionary entry with matching key. + + @param prev Set to the previous matching element to find the next. + If set to NULL the first matching element is returned. + @param flags Allows case as well as suffix-insensitive comparisons. + @return Found entry or NULL, changing key or value leads to undefined behavior. + + + +Disables cpu detection and forces the specified flags. + + + +Return the flags which specify extensions supported by the CPU. + + + + Fill channel data pointers and linesize for samples with sample + format sample_fmt. + + The pointers array is filled with the pointers to the samples data: + for planar, set the start point of each channel's data within the buffer, + for packed, set the start point of the entire buffer only. + + The linesize array is filled with the aligned size of each channel's data + buffer for planar layout, or the aligned size of the buffer for all channels + for packed layout. + + @param[out] audio_data array to be filled with the pointer for each channel + @param[out] linesize calculated linesize + @param buf the pointer to a buffer containing the samples + @param nb_channels the number of channels + @param nb_samples the number of samples in a single channel + @param sample_fmt the sample format + @param align buffer size alignment (1 = no alignment required) + @return 0 on success or a negative error code on failure + + + + Get the required buffer size for the given audio parameters. + + @param[out] linesize calculated linesize, may be NULL + @param nb_channels the number of channels + @param nb_samples the number of samples in a single channel + @param sample_fmt the sample format + @return required buffer size, or negative error code on failure + + + + Check if the sample format is planar. + + @param sample_fmt the sample format to inspect + @return 1 if the sample format is planar, 0 if it is interleaved + + + + Return number of bytes per sample. + + @param sample_fmt the sample format + @return number of bytes per sample or zero if unknown for the given + sample format + + + +@deprecated Use av_get_bytes_per_sample() instead. + + + + Generate a string corresponding to the sample format with + sample_fmt, or a header if sample_fmt is negative. + + @param buf the buffer where to write the string + @param buf_size the size of buf + @param sample_fmt the number of the sample format to print the + corresponding info string, or a negative value to print the + corresponding header. + @return the pointer to the filled buffer or NULL if sample_fmt is + unknown or in case of other errors + + + +Return the name of sample_fmt, or NULL if sample_fmt is not +recognized. + + + +@} +@} + +all in native-endian format + + +Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE +on error. + + +audio sample format +- encoding: Set by user. +- decoding: Set by libavcodec. + + +desired sample format +- encoding: Not used. +- decoding: Set by user. +Decoder will decode to this format if it can. + + + +Return x default pointer in case p is NULL. + + + +av_dlog macros +Useful to print debug messages that shouldn't get compiled in normally. + +Skip repeated messages, this requires the user app to use av_log() instead of +(f)printf as the 2 would otherwise interfere and lead to +"Last message repeated x times" messages below (f)printf messages with some +bad luck. +Also to receive the last, "last repeated" line if any, the user app must +call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end + + + +Format a line of log the same way as the default callback. +@param line buffer to receive the formated line +@param line_size size of the buffer +@param print_prefix used to store whether the prefix must be printed; + must point to a persistent integer initially set to 1 + + + +Something went really wrong and we will crash now. + +Something went wrong and recovery is not possible. +For example, no header was found for a format which depends +on headers or an illegal combination of parameters is used. + +Something went wrong and cannot losslessly be recovered. +However, not all future data is affected. + +Something somehow does not look correct. This may or may not +lead to problems. An example would be the use of '-vstrict -2'. + +Stuff which is only useful for libav* developers. + + Send the specified message to the log if the level is less than or equal + to the current av_log_level. By default, all logging messages are sent to + stderr. This behavior can be altered by setting a different av_vlog callback + function. + + @param avcl A pointer to an arbitrary struct of which the first field is a + pointer to an AVClass struct. + @param level The importance level of the message, lower values signifying + higher importance. + @param fmt The format string (printf-compatible) that specifies how + subsequent arguments are converted to output. + @see av_vlog + + + +Return next AVOptions-enabled child or NULL + + + +Offset in the structure where a pointer to the parent context for loging is stored. +for example a decoder that uses eval.c could pass its AVCodecContext to eval as such +parent context. And a av_log() implementation could then display the parent context +can be NULL of course + + + +Offset in the structure where log_level_offset is stored. +0 means there is no such variable + + + +LIBAVUTIL_VERSION with which this structure was created. +This is used to allow fields to be added without requiring major +version bumps everywhere. + + + + a pointer to the first option specified in the class if any or NULL + + @see av_set_default_options() + + + +A pointer to a function which returns the name of a context +instance ctx associated with the class. + + + +The name of the class; usually it is the same name as the +context structure type to which the AVClass is associated. + + + +Describe the class of an AVClass context structure. That is an +arbitrary struct of which the first field is a pointer to an +AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). + + + Return an AVClass corresponding to next potential + AVOptions-enabled child. + + The difference between child_next and this is that + child_next iterates over _already existing_ objects, while + child_class_next iterates over _all possible_ children. + + + +@} + + + + Compare 2 integers modulo mod. + That is we compare integers a and b for which only the least + significant log2(mod) bits are known. + + @param mod must be a power of 2 + @return a negative value if a is smaller than b + a positive value if a is greater than b + 0 if a equals b + + + +Compare 2 timestamps each in its own timebases. +The result of the function is undefined if one of the timestamps +is outside the int64_t range when represented in the others timebase. +@return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position + + + +Rescale a 64-bit integer by 2 rational numbers. + + + +Rescale a 64-bit integer with specified rounding. +A simple a*b/c isn't possible as it can overflow. + + + +Rescale a 64-bit integer with rounding to nearest. +A simple a*b/c isn't possible as it can overflow. + + + +@} + +@addtogroup lavu_math +@{ + + + +Find the nearest value in q_list to q. +@param q_list an array of rationals terminated by {0, 0} +@return the index of the nearest value found in the array + + + +@return 1 if q1 is nearer to q than q2, -1 if q2 is nearer +than q1, 0 if they have the same distance. + + + + Convert a double precision floating point number to a rational. + inf is expressed as {1,0} or {-1,0} depending on the sign. + + @param d double to convert + @param max the maximum allowed numerator and denominator + @return (AVRational) d + + + +Subtract one rational from another. +@param b first rational +@param c second rational +@return b-c + + + +Add two rationals. +@param b first rational +@param c second rational +@return b+c + + + +Divide one rational by another. +@param b first rational +@param c second rational +@return b/c + + + +Multiply two rationals. +@param b first rational +@param c second rational +@return b*c + + + +Convert rational to double. +@param a rational to convert +@return (double) a + + + +Set the maximum size that may me allocated in one block. + + + +Multiply two size_t values checking for overflow. +@return 0 if success, AVERROR(EINVAL) if overflow. + + + + Add an element to a dynamic array. + + @param tab_ptr Pointer to the array. + @param nb_ptr Pointer to the number of elements in the array. + @param elem Element to be added. + + + +Free a memory block which has been allocated with av_malloc(z)() or +av_realloc() and set the pointer pointing to it to NULL. +@param ptr Pointer to the pointer to the memory block which should +be freed. +@see av_free() + + + +Duplicate the string s. +@param s string to be duplicated +@return Pointer to a newly allocated string containing a +copy of s or NULL if the string cannot be allocated. + + + +Allocate a block of nmemb * size bytes with alignment suitable for all +memory accesses (including vectors if available on the CPU) and +zero all the bytes of the block. +The allocation will fail if nmemb * size is greater than or equal +to INT_MAX. +@param nmemb +@param size +@return Pointer to the allocated block, NULL if it cannot be allocated. + + + +Allocate a block of size bytes with alignment suitable for all +memory accesses (including vectors if available on the CPU) and +zero all the bytes of the block. +@param size Size in bytes for the memory block to be allocated. +@return Pointer to the allocated block, NULL if it cannot be allocated. +@see av_malloc() + + + +Free a memory block which has been allocated with av_malloc(z)() or +av_realloc(). +@param ptr Pointer to the memory block which should be freed. +@note ptr = NULL is explicitly allowed. +@note It is recommended that you use av_freep() instead. +@see av_freep() + + + +Allocate or reallocate a block of memory. +This function does the same thing as av_realloc, except: +- It takes two arguments and checks the result of the multiplication for + integer overflow. +- It frees the input block in case of failure, thus avoiding the memory + leak with the classic "buf = realloc(buf); if (!buf) return -1;". + + + +Allocate or reallocate a block of memory. +If ptr is NULL and size > 0, allocate a new block. If +size is zero, free the memory block pointed to by ptr. +@param ptr Pointer to a memory block already allocated with +av_malloc(z)() or av_realloc() or NULL. +@param size Size in bytes for the memory block to be allocated or +reallocated. +@return Pointer to a newly reallocated block or NULL if the block +cannot be reallocated or the function is used to free the memory block. +@see av_fast_realloc() + + + +@} + +@addtogroup lavu_mem +@{ + +Allocate a block of size bytes with alignment suitable for all +memory accesses (including vectors if available on the CPU). +@param size Size in bytes for the memory block to be allocated. +@return Pointer to the allocated block, NULL if the block cannot +be allocated. +@see av_mallocz() + + + + Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. + + @param val Output value, must be an lvalue of type uint32_t. + @param GET_BYTE Expression reading one byte from the input. + Evaluated up to 7 times (4 for the currently + assigned Unicode range). With a memory buffer + input, this could be *ptr++. + @param ERROR Expression to be evaluated on invalid input, + typically a goto statement. + + Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. + + @param val Output value, must be an lvalue of type uint32_t. + @param GET_16BIT Expression returning two bytes of UTF-16 data converted + to native byte order. Evaluated one or two times. + @param ERROR Expression to be evaluated on invalid input, + typically a goto statement. + +@def PUT_UTF8(val, tmp, PUT_BYTE) +Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). +@param val is an input-only argument and should be of type uint32_t. It holds +a UCS-4 encoded Unicode character that is to be converted to UTF-8. If +val is given as a function it is executed only once. +@param tmp is a temporary variable and should be of type uint8_t. It +represents an intermediate value during conversion that is to be +output by PUT_BYTE. +@param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. +It could be a function or a statement, and uses tmp as the input byte. +For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be +executed up to 4 times for values in the valid UTF-8 range and up to +7 times in the general case, depending on the length of the converted +Unicode character. + +@def PUT_UTF16(val, tmp, PUT_16BIT) +Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). +@param val is an input-only argument and should be of type uint32_t. It holds +a UCS-4 encoded Unicode character that is to be converted to UTF-16. If +val is given as a function it is executed only once. +@param tmp is a temporary variable and should be of type uint16_t. It +represents an intermediate value during conversion that is to be +output by PUT_16BIT. +@param PUT_16BIT writes the converted UTF-16 data to any proper destination +in desired endianness. It could be a function or a statement, and uses tmp +as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" +PUT_BYTE will be executed 1 or 2 times depending on input character. + +@file +memory handling functions + +@file +error code definitions + + @addtogroup lavu_error + + @{ + +This is semantically identical to AVERROR_BUG +it has been introduced in Libav after our AVERROR_BUG and with a modified value. + + Put a description of the AVERROR code errnum in errbuf. + In case of failure the global variable errno is set to indicate the + error. Even in case of failure av_strerror() will print a generic + error message indicating the errnum provided to errbuf. + + @param errnum error code to describe + @param errbuf buffer to which description is written + @param errbuf_size the size in bytes of errbuf + @return 0 on success, a negative value if a description for errnum + cannot be found + + + +Count number of bits set to one in x +@param x value to count bits of +@return the number of bits set to one in x + + + +Count number of bits set to one in x +@param x value to count bits of +@return the number of bits set to one in x + + + +Compute ceil(log2(x)). + * @param x value used to compute ceil(log2(x)) + * @return computed ceiling of log2(x) + + + +Clip a float value into the amin-amax range. +@param a value to clip +@param amin minimum value of the clip range +@param amax maximum value of the clip range +@return clipped value + + + +Clip a signed integer to an unsigned power of two range. +@param a value to clip +@param p bit position to clip at +@return clipped value + + + +Clip a signed 64-bit integer value into the -2147483648,2147483647 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the -32768,32767 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the 0-65535 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the -128,127 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the 0-255 range. +@param a value to clip +@return clipped value + + + +@file +common internal and external API header + +Clip a signed integer value into the amin-amax range. +@param a value to clip +@param amin minimum value of the clip range +@param amax maximum value of the clip range +@return clipped value + + + +@file +Macro definitions for various function/variable attributes + +Disable warnings about deprecated features +This is useful for sections of code kept for backward compatibility and +scheduled for removal. + +Mark a variable as used and prevent the compiler from optimizing it +away. This is useful for variables accessed only from inline +assembler without the compiler being aware. + + + +@} + +@file +common internal and external API header + + + + Return a single letter to describe the given picture type + pict_type. + + @param[in] pict_type the picture type @return a single character + representing the picture type, '?' if pict_type is unknown + + + + @defgroup lavu_const Constants + @{ + + @defgroup lavu_enc Encoding specific + + @note those definition should move to avcodec + @{ + + @} + @defgroup lavu_time Timestamp specific + + FFmpeg internal timebase and timestamp definitions + + @{ + + @brief Undefined timestamp value + + Usually reported by demuxer that work on containers that do not provide + either pts or dts. + +Internal time base represented as integer + +Internal time base represented as fractional value + + @} + @} + @defgroup lavu_picture Image related + + AVPicture types, pixel formats and basic image planes manipulation. + + @{ + + +Picture type of the frame, see ?_TYPE below. +- encoding: Set by libavcodec. for coded_picture (and set by user for input). +- decoding: Set by libavcodec. + + + +Return a string describing the media_type enum, NULL if media_type +is unknown. + + + +@} + +@addtogroup lavu_media Media Type +@brief Media Type + + + Type of codec implemented by the hardware accelerator. + + See AVMEDIA_TYPE_xxx + + +Get the type of the given codec. + + + +Return the libavutil license. + + + +Return the libavutil build-time configuration. + + + +@file +external API header + + @mainpage + + @section libav_intro Introduction + + This document describe the usage of the different libraries + provided by FFmpeg. + + @li @ref libavc "libavcodec" encoding/decoding library + @li @subpage libavfilter graph based frame editing library + @li @ref libavf "libavformat" I/O and muxing/demuxing library + @li @ref lavd "libavdevice" special devices muxing/demuxing library + @li @ref lavu "libavutil" common utility library + @li @subpage libpostproc post processing library + @li @subpage libswscale color conversion and scaling library + + + @defgroup lavu Common utility functions + + @brief + libavutil contains the code shared across all the other FFmpeg + libraries + + @note In order to use the functions provided by avutil you must include + the specific header. + + @{ + + @defgroup lavu_crypto Crypto and Hashing + + @{ + @} + + @defgroup lavu_math Maths + @{ + + @} + + @defgroup lavu_string String Manipulation + + @{ + + @} + + @defgroup lavu_mem Memory Management + + @{ + + @} + + @defgroup lavu_data Data Structures + @{ + + @} + + @defgroup lavu_audio Audio related + + @{ + + @} + + @defgroup lavu_error Error Codes + + @{ + + @} + + @defgroup lavu_misc Other + + @{ + + @defgroup lavu_internal Internal + + Not exported functions, for internal usage only + + @{ + + @} + + @defgroup preproc_misc Preprocessor String Macros + + String manipulation macros + + @{ + +@} + + @defgroup version_utils Library Version Macros + + Useful to check and match library version in order to maintain + backward compatibility. + + @{ + + @} + + @defgroup lavu_ver Version and Build diagnostics + + Macros and function useful to check at compiletime and at runtime + which version of libavutil is in use. + + @{ + + @} + + @defgroup depr_guards Deprecation guards + Those FF_API_* defines are not part of public API. + They may change, break or disappear at any time. + + They are used mostly internally to mark code that will be removed + on the next major version. + + @{ + +@} + +@addtogroup lavu_ver +@{ + +Return the LIBAVUTIL_VERSION_INT constant. + + + + +Enumeration of some video codecs from FFmpeg library, which are available for writing video files. + + + + +Raw (uncompressed) video. + + + + +MPEG-2 part 2. + + + + +Flash Video (FLV) / Sorenson Spark / Sorenson H.263. + + + + +H.263+ / H.263-1998 / H.263 version 2. + + + + +MPEG-4 part 2 Microsoft variant version 3. + + + + +MPEG-4 part 2 Microsoft variant version 2. + + + + +Windows Media Video 8. + + + + +Windows Media Video 7. + + + + +MPEG-4 part 2. + + + + +Default video codec, which FFmpeg library selects for the specified file format. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net40/Accord.Video.FFMPEG.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net40/Accord.Video.FFMPEG.dll new file mode 100644 index 0000000000..0ae51d69f Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net40/Accord.Video.FFMPEG.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net40/Accord.Video.FFMPEG.xml b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net40/Accord.Video.FFMPEG.xml new file mode 100644 index 0000000000..0e23edc5e --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net40/Accord.Video.FFMPEG.xml @@ -0,0 +1,5808 @@ + + + + "Accord.Video.FFMPEG (GPL)" + + + + +Close currently opened video file if any. + + + + +Write new video frame with a specific timestamp into currently opened video file. + + Bitmap to add as a new video frame. + Frame timestamp, total time since recording started. + + The specified bitmap must be either color 24 or 32 bpp image or grayscale 8 bpp (indexed) image. + + The parameter allows user to specify presentation +time of the frame being saved. However, it is user's responsibility to make sure the value is increasing +over time. + + + Thrown if no video file was open. + The provided bitmap must be 24 or 32 bpp color image or 8 bpp grayscale image. + Bitmap size must be of the same as video size, which was specified on opening video file. + A error occurred while writing new video frame. See exception message. + + + +Write new video frame into currently opened video file. + + Bitmap to add as a new video frame. + + The specified bitmap must be either color 24 or 32 bpp image or grayscale 8 bpp (indexed) image. + + Thrown if no video file was open. + The provided bitmap must be 24 or 32 bpp color image or 8 bpp grayscale image. + Bitmap size must be of the same as video size, which was specified on opening video file. + A error occurred while writing new video frame. See exception message. + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + Frame rate of the video file. + Video codec to use for compression. + Bit rate of the video stream. + + The methods creates new video file with the specified name. +If a file with such name already exists in the file system, it will be overwritten. + When adding new video frames using method, +the video frame must have width and height as specified during file opening. + + The bit rate parameter represents a trade-off value between video quality +and video file size. Higher bit rate value increase video quality and result in larger +file size. Smaller values result in opposite – worse quality and small video files. + + + Video file resolution must be a multiple of two. + Invalid video codec is specified. + A error occurred while creating new video file. See exception message. + Cannot open video file with the specified name. + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + Frame rate of the video file. + Video codec to use for compression. + + The methods creates new video file with the specified name. +If a file with such name already exists in the file system, it will be overwritten. + When adding new video frames using method, +the video frame must have width and height as specified during file opening. + + Video file resolution must be a multiple of two. + Invalid video codec is specified. + A error occurred while creating new video file. See exception message. + Cannot open video file with the specified name. + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + Frame rate of the video file. + + See documentation to the +for more information and the list of possible exceptions. + + The method opens the video file using +codec. + + + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + + See documentation to the +for more information and the list of possible exceptions. + + The method opens the video file using +codec and 25 fps frame rate. + + + + + +Disposes the object and frees its resources. + + + + +Initializes a new instance of the class. + + + + +Object's finalizer. + + + + +The property specifies if a video file is opened or not by this instance of the class. + + + + +Codec to use for the video file. + + Thrown if no video file was open. + + + +Bit rate of the video stream. + + Thrown if no video file was open. + + + +Frame rate of the opened video file. + + Thrown if no video file was open. + + + +Frame height of the opened video file. + + Thrown if no video file was open. + + + +Frame width of the opened video file. + + Thrown if no video file was open. + + + +Class for writing video files utilizing FFmpeg library. + + + The class allows to write video files using FFmpeg library. + + Make sure you have FFmpeg binaries (DLLs) in the output folder of your application in order +to use this class successfully. FFmpeg binaries can be found in Externals folder provided with AForge.NET +framework's distribution. + + Sample usage: + +int width = 320; +int height = 240; + +// create instance of video writer +VideoFileWriter writer = new VideoFileWriter( ); +// create new video file +writer.Open( "test.avi", width, height, 25, VideoCodec.MPEG4 ); +// create a bitmap to save into the video file +Bitmap image = new Bitmap( width, height, PixelFormat.Format24bppRgb ); +// write 1000 video frames +for ( int i = 0; i < 1000; i++ ) +{ + image.SetPixel( i % width, i % height, Color.Red ); + writer.WriteVideoFrame( image ); +} +writer.Close( ); + + + + + +Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred +and should be done only if there are no other options. The correct way of stopping camera +is signaling it stop and then +waiting for background thread's completion. + + + + + +Wait for video source has stopped. + + Waits for source stopping after it was signalled to stop using + method. + + + +Signal video source to stop its work. + + Signals video source to stop its background thread, stop to +provide new frames and free resources. + + + +Start video source. + + Starts video source and return execution to caller. Video source +object creates background thread and notifies about new frames with the +help of event. + Video source is not specified. + + + +Initializes a new instance of the class. + + + + +Get frame interval from source or use manually specified. + + + The property specifies which frame rate to use for video playing. +If the property is set to , then video is played +with original frame rate, which is set in source video file. If the property is +set to , then custom frame rate is used, which is +calculated based on the manually specified frame interval. + Default value is set to . + + + + +Frame interval. + + + The property sets the interval in milliseconds between frames. If the property is +set to 100, then the desired frame rate will be 10 frames per second. + + Setting this property to 0 leads to no delay between video frames - frames +are read as fast as possible. + + + Setting this property has effect only when +is set to . + + Default value is set to 0. + + + + +State of the video source. + + Current state of video source object - running or not. + + + +Received bytes count. + + Number of bytes the video source provided from the moment of the last +access to the property. + + + + +Received frames count. + + Number of frames the video source provided from the moment of the last +access to the property. + + + + +Video source. + + + Video file name to play. + + + + +Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + +Video source error event. + + This event is used to notify clients about any type of errors occurred in +video source object, for example internal exceptions. + + + +New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for +making a copy (cloning) of the passed video frame, because the video source disposes its +own original copy after notifying of clients. + + + + + +Video source for video files. + + + The video source provides access to video files using FFmpeg library. + + The class provides video only. Sound is not supported. + + + The class ignores presentation time of video frames while retrieving them from +video file. Instead it provides video frames according to the FPS rate of the video file +or the configured . + + + Make sure you have FFmpeg binaries (DLLs) in the output folder of your application in order +to use this class successfully. FFmpeg binaries can be found in Externals folder provided with AForge.NET +framework's distribution. + + Sample usage: + +// create video source +VideoFileSource videoSource = new VideoFileSource( fileName ); +// set NewFrame event handler +videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); +// start the video source +videoSource.Start( ); +// ... + +// New frame event handler, which is invoked on each new available video frame +private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) +{ + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame +} + + + + + +Enumeration of some video codecs from FFmpeg library, which are available for writing video files. + + + + +Raw (uncompressed) video. + + + + +MPEG-2 part 2. + + + + +Flash Video (FLV) / Sorenson Spark / Sorenson H.263. + + + + +H.263+ / H.263-1998 / H.263 version 2. + + + + +MPEG-4 part 2 Microsoft variant version 3. + + + + +MPEG-4 part 2 Microsoft variant version 2. + + + + +Windows Media Video 8. + + + + +Windows Media Video 7. + + + + +MPEG-4 part 2. + + + + +Default video codec, which FFmpeg library selects for the specified file format. + + + + Get the AVClass for swsContext. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + + Convert an 8-bit paletted frame into a frame with a color depth of 24 bits. + + With the palette format "ABCD", the destination frame ends up with the format "ABC". + + @param src source frame buffer + @param dst destination frame buffer + @param num_pixels number of pixels to convert + @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src + + + + Convert an 8-bit paletted frame into a frame with a color depth of 32 bits. + + The output frame will have the same packed format as the palette. + + @param src source frame buffer + @param dst destination frame buffer + @param num_pixels number of pixels to convert + @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src + + + +Allocate and return a clone of the vector a, that is a vector +with the same coefficients as a. + + + +Scale all the coefficients of a so that their sum equals height. + + + +Scale all the coefficients of a by the scalar value. + + + +Allocate and return a vector with just one coefficient, with +value 1.0. + + + +Allocate and return a vector with length coefficients, all +with the same value c. + + + +Return a normalized Gaussian curve used to filter stuff +quality = 3 is high quality, lower is lower quality. + + + +Allocate and return an uninitialized vector with length coefficients. + + + +@return -1 if not supported + + + +@param inv_table the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x] +@return -1 if not supported + + + + Scale the image slice in srcSlice and put the resulting scaled + slice in the image in dst. A slice is a sequence of consecutive + rows in an image. + + Slices have to be provided in sequential order, either in + top-bottom or bottom-top order. If slices are provided in + non-sequential order the behavior of the function is undefined. + + @param c the scaling context previously created with + sws_getContext() + @param srcSlice the array containing the pointers to the planes of + the source slice + @param srcStride the array containing the strides for each plane of + the source image + @param srcSliceY the position in the source image of the slice to + process, that is the number (counted starting from + zero) in the image of the first row of the slice + @param srcSliceH the height of the source slice, that is the number + of rows in the slice + @param dst the array containing the pointers to the planes of + the destination image + @param dstStride the array containing the strides for each plane of + the destination image + @return the height of the output slice + + + +Free the swscaler context swsContext. +If swsContext is NULL, then does nothing. + + + + Initialize the swscaler context sws_context. + + @return zero or positive value on success, a negative value on + error + + + +Allocate an empty SwsContext. This must be filled and passed to +sws_init_context(). For filling see AVOptions, options.c and +sws_setColorspaceDetails(). + + + Allocate and return an SwsContext. You need it to perform + scaling/conversion operations using sws_scale(). + + @param srcW the width of the source image + @param srcH the height of the source image + @param srcFormat the source image format + @param dstW the width of the destination image + @param dstH the height of the destination image + @param dstFormat the destination image format + @param flags specify which algorithm and options to use for rescaling + @return a pointer to an allocated context, or NULL in case of error + @note this function is to be removed after a saner alternative is + written + @deprecated Use sws_getCachedContext() instead. + + + Check if context can be reused, otherwise reallocate a new one. + + If context is NULL, just calls sws_getContext() to get a new + context. Otherwise, checks if the parameters are the ones already + saved in context. If that is the case, returns the current + context. Otherwise, frees context and gets a new context with + the new parameters. + + Be warned that srcFilter and dstFilter are not checked, they + are assumed to remain the same. + + + +Return a positive value if pix_fmt is a supported output format, 0 +otherwise. + + + +Return a positive value if pix_fmt is a supported input format, 0 +otherwise. + + + +Return the libswscale license. + + + +Return the libswscale build-time configuration. + + + +@} + +@file +@brief + external api for the swscale stuff + +Those FF_API_* defines are not part of public API. +They may change, break or disappear at any time. + +Return the LIBSWSCALE_VERSION_INT constant. + + + + Test if the given container can store a codec. + + @param std_compliance standards compliance level, one of FF_COMPLIANCE_* + + @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. + A negative number if this information is not available. + + + + Return a positive value if the given filename has one of the given + extensions, 0 otherwise. + + @param extensions a comma-separated list of filename extensions + + + + Generate an SDP for an RTP session. + + @param ac array of AVFormatContexts describing the RTP streams. If the + array is composed by only one context, such context can contain + multiple AVStreams (one AVStream per RTP stream). Otherwise, + all the contexts in the array (an AVCodecContext per RTP stream) + must contain only one AVStream. + @param n_files number of AVCodecContexts contained in ac + @param buf buffer where the SDP will be stored (must be allocated by + the caller) + @param size the size of the buffer + @return 0 if OK, AVERROR_xxx on error + + + + Check whether filename actually is a numbered sequence generator. + + @param filename possible numbered sequence string + @return 1 if a valid numbered sequence string, 0 otherwise + + + + Return in 'buf' the path with '%d' replaced by a number. + + Also handles the '%0nd' format where 'n' is the total number + of digits and '%%'. + + @param buf destination buffer + @param buf_size destination buffer size + @param path numbered sequence string + @param number frame number + @return 0 if OK, -1 on format error + + + +@deprecated use av_find_info_tag in libavutil instead. + + + +Get the current time in microseconds. + + + + Parse datestr and return a corresponding number of microseconds. + + @param datestr String representing a date or a duration. + See av_parse_time() for the syntax of the provided string. + @deprecated in favor of av_parse_time() + + + +@deprecated Deprecated in favor of av_dump_format(). + + + + Split a URL string into components. + + The pointers to buffers for storing individual components may be null, + in order to ignore that component. Buffers for components not found are + set to empty strings. If the port is not found, it is set to a negative + value. + + @param proto the buffer for the protocol + @param proto_size the size of the proto buffer + @param authorization the buffer for the authorization + @param authorization_size the size of the authorization buffer + @param hostname the buffer for the host name + @param hostname_size the size of the hostname buffer + @param port_ptr a pointer to store the port number in + @param path the buffer for the path + @param path_size the size of the path buffer + @param url the URL to split + + + + Add an index entry into a sorted list. Update the entry if the list + already contains it. + + @param timestamp timestamp in the time base of the given stream + + + + Get the codec tag for the given codec id id. + If no codec tag is found returns 0. + + @param tags list of supported codec_id-codec_tag pairs, as stored + in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + + + + Send a nice dump of a packet to the log. + + @param avcl A pointer to an arbitrary struct of which the first field is a + pointer to an AVClass struct. + @param level The importance level of the message, lower values signifying + higher importance. + @param pkt packet to dump + @param dump_payload True if the payload must be displayed, too. + @param st AVStream that the packet belongs to + + + + Send a nice dump of a packet to the specified file stream. + + @param f The file stream pointer where the dump should be sent to. + @param pkt packet to dump + @param dump_payload True if the payload must be displayed, too. + @param st AVStream that the packet belongs to + + + + Send a nice hexadecimal dump of a buffer to the log. + + @param avcl A pointer to an arbitrary struct of which the first field is a + pointer to an AVClass struct. + @param level The importance level of the message, lower values signifying + higher importance. + @param buf buffer + @param size buffer size + + @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 + + + +@} + + @defgroup lavf_misc Utility functions + @ingroup libavf + @{ + + Miscelaneous utility functions related to both muxing and demuxing + (or neither). + + Send a nice hexadecimal dump of a buffer to the specified file stream. + + @param f The file stream pointer where the dump should be sent to. + @param buf buffer + @param size buffer size + + @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 + + + +Get timing information for the data currently output. +The exact meaning of "currently output" depends on the format. +It is mostly relevant for devices that have an internal buffer and/or +work in real time. +@param s media file handle +@param stream stream in the media file +@param dts[out] DTS of the last packet output for the stream, in stream + time_base units +@param wall[out] absolute time when that packet whas output, + in microsecond +@return 0 if OK, AVERROR(ENOSYS) if the format does not support it +Note: some formats or devices may not allow to measure dts and wall +atomically. + + + + Return the output format in the list of registered output formats + which best matches the provided parameters, or return NULL if + there is no match. + + @param short_name if non-NULL checks if short_name matches with the + names of the registered formats + @param filename if non-NULL checks if filename terminates with the + extensions of the registered formats + @param mime_type if non-NULL checks if mime_type matches with the + MIME type of the registered formats + + + + Write the stream trailer to an output media file and free the + file private data. + + May only be called after a successful call to av_write_header. + + @param s media file handle + @return 0 if OK, AVERROR_xxx on error + + + + Write a packet to an output media file ensuring correct interleaving. + + The packet must contain one audio or video frame. + If the packets are already correctly interleaved, the application should + call av_write_frame() instead as it is slightly faster. It is also important + to keep in mind that completely non-interleaved input will need huge amounts + of memory to interleave with this, so it is preferable to interleave at the + demuxer level. + + @param s media file handle + @param pkt The packet containing the data to be written. Libavformat takes + ownership of the data and will free it when it sees fit using the packet's + @ref AVPacket.destruct "destruct" field. The caller must not access the data + after this function returns, as it may already be freed. + Packet's @ref AVPacket.stream_index "stream_index" field must be set to the + index of the corresponding stream in @ref AVFormatContext.streams + "s.streams". + It is very strongly recommended that timing information (@ref AVPacket.pts + "pts", @ref AVPacket.dts "dts" @ref AVPacket.duration "duration") is set to + correct values. + + @return 0 on success, a negative AVERROR on error. + + + + Allocate the stream private data and write the stream header to an + output media file. + @note: this sets stream time-bases, if possible to stream->codec->time_base + but for some formats it might also be some other time base + + @param s media file handle + @return 0 if OK, AVERROR_xxx on error + + @deprecated use avformat_write_header. + + + +@addtogroup lavf_encoding +@{ + + Allocate the stream private data and write the stream header to + an output media file. + + @param s Media file handle, must be allocated with avformat_alloc_context(). + Its oformat field must be set to the desired output format; + Its pb field must be set to an already openened AVIOContext. + @param options An AVDictionary filled with AVFormatContext and muxer-private options. + On return this parameter will be destroyed and replaced with a dict containing + options that were not found. May be NULL. + + @return 0 on success, negative AVERROR on failure. + + @see av_opt_find, av_dict_set, avio_open, av_oformat_next. + + + +@deprecated pass the options to avformat_write_header directly. + + + +@deprecated this function is not supposed to be called outside of lavf + + + +@} + + Add a new stream to a media file. + + Can only be called in the read_header() function. If the flag + AVFMTCTX_NOHEADER is in the format context, then new streams + can be added in read_packet too. + + @param s media file handle + @param id file-format-dependent stream ID + + + +Close an opened input AVFormatContext. Free it and all its contents +and set *s to NULL. + + + + @deprecated use avformat_close_input() + Close a media file (but not its codecs). + + @param s media file handle + + + +Free a AVFormatContext allocated by av_open_input_stream. +@param s context to free +@deprecated use av_close_input_file() + + + + Pause a network-based stream (e.g. RTSP stream). + + Use av_read_play() to resume it. + + + +Start playing a network-based stream (e.g. RTSP stream) at the +current position. + + + +Seek to the keyframe at timestamp. +'timestamp' in 'stream_index'. +@param stream_index If stream_index is (-1), a default +stream is selected, and timestamp is automatically converted +from AV_TIME_BASE units to the stream specific time_base. +@param timestamp Timestamp in AVStream.time_base units + or, if no stream is specified, in AV_TIME_BASE units. +@param flags flags which select direction and seeking mode +@return >= 0 on success + + + + Read a transport packet from a media file. + + This function is obsolete and should never be used. + Use av_read_frame() instead. + + @param s media file handle + @param pkt is filled + @return 0 if OK, AVERROR_xxx on error + + + + Find the "best" stream in the file. + The best stream is determined according to various heuristics as the most + likely to be what the user expects. + If the decoder parameter is non-NULL, av_find_best_stream will find the + default decoder for the stream's codec; streams for which no decoder can + be found are ignored. + + @param ic media file handle + @param type stream type: video, audio, subtitles, etc. + @param wanted_stream_nb user-requested stream number, + or -1 for automatic selection + @param related_stream try to find a stream related (eg. in the same + program) to this one, or -1 if none + @param decoder_ret if non-NULL, returns the decoder for the + selected stream + @param flags flags; none are currently defined + @return the non-negative stream number in case of success, + AVERROR_STREAM_NOT_FOUND if no stream with the requested type + could be found, + AVERROR_DECODER_NOT_FOUND if streams were found but no decoder + @note If av_find_best_stream returns successfully and decoder_ret is not + NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec. + + + + Find the programs which belong to a given stream. + + @param ic media file handle + @param last the last found program, the search will start after this + program, or from the beginning if it is NULL + @param s stream index + @return the next program which belongs to s, NULL if no program is found or + the last program is not among the programs of ic. + + + + Read packets of a media file to get stream information. This + is useful for file formats with no headers such as MPEG. This + function also computes the real framerate in case of MPEG-2 repeat + frame mode. + The logical file position is not changed by this function; + examined packets may be buffered for later processing. + + @param ic media file handle + @param options If non-NULL, an ic.nb_streams long array of pointers to + dictionaries, where i-th member contains options for + codec corresponding to i-th stream. + On return each dictionary will be filled with options that were not found. + @return >=0 if OK, AVERROR_xxx on error + + @note this function isn't guaranteed to open all the codecs, so + options being non-empty at return is a perfectly normal behavior. + + @todo Let the user decide somehow what information is needed so that + we do not waste time getting stuff the user does not need. + + + + Read packets of a media file to get stream information. This + is useful for file formats with no headers such as MPEG. This + function also computes the real framerate in case of MPEG-2 repeat + frame mode. + The logical file position is not changed by this function; + examined packets may be buffered for later processing. + + @param ic media file handle + @return >=0 if OK, AVERROR_xxx on error + @todo Let the user decide somehow what information is needed so that + we do not waste time getting stuff the user does not need. + + @deprecated use avformat_find_stream_info. + + + + Open an input stream and read the header. The codecs are not opened. + The stream must be closed with av_close_input_file(). + + @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context). + May be a pointer to NULL, in which case an AVFormatContext is allocated by this + function and written into ps. + Note that a user-supplied AVFormatContext will be freed on failure. + @param filename Name of the stream to open. + @param fmt If non-NULL, this parameter forces a specific input format. + Otherwise the format is autodetected. + @param options A dictionary filled with AVFormatContext and demuxer-private options. + On return this parameter will be destroyed and replaced with a dict containing + options that were not found. May be NULL. + + @return 0 on success, a negative AVERROR on failure. + + @note If you want to use custom IO, preallocate the format context and set its pb field. + + + + Open a media file as input. The codecs are not opened. Only the file + header (if present) is read. + + @param ic_ptr The opened media file handle is put here. + @param filename filename to open + @param fmt If non-NULL, force the file format to use. + @param buf_size optional buffer size (zero if default is OK) + @param ap Additional parameters needed when opening the file + (NULL if default). + @return 0 if OK, AVERROR_xxx otherwise + + @deprecated use avformat_open_input instead. + + + +Allocate all the structures needed to read an input stream. + This does not open the needed codecs for decoding the stream[s]. +@deprecated use avformat_open_input instead. + + + + Probe a bytestream to determine the input format. Each time a probe returns + with a score that is too low, the probe buffer size is increased and another + attempt is made. When the maximum probe size is reached, the input format + with the highest score is returned. + + @param pb the bytestream to probe + @param fmt the input format is put here + @param filename the filename of the stream + @param logctx the log context + @param offset the offset within the bytestream to probe from + @param max_probe_size the maximum probe buffer size (zero for default) + @return 0 in case of success, a negative value corresponding to an + AVERROR code otherwise + + + + Guess the file format. + + @param is_opened Whether the file is already opened; determines whether + demuxers with or without AVFMT_NOFILE are probed. + @param score_ret The score of the best detection. + + + + Guess the file format. + + @param is_opened Whether the file is already opened; determines whether + demuxers with or without AVFMT_NOFILE are probed. + + + +@addtogroup lavf_decoding +@{ + +Find AVInputFormat based on the short name of the input format. + + + + Allocate an AVFormatContext for an output format. + avformat_free_context() can be used to free the context and + everything allocated by the framework within it. + + @param *ctx is set to the created format context, or to NULL in + case of failure + @param oformat format to use for allocating the context, if NULL + format_name and filename are used instead + @param format_name the name of output format to use for allocating the + context, if NULL filename is used instead + @param filename the name of the filename to use for allocating the + context, may be NULL + @return >= 0 in case of success, a negative AVERROR code in case of + failure + + + +@deprecated deprecated in favor of avformat_alloc_output_context2() + + + + Add a new stream to a media file. + + When demuxing, it is called by the demuxer in read_header(). If the + flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also + be called in read_packet(). + + When muxing, should be called by the user before avformat_write_header(). + + @param c If non-NULL, the AVCodecContext corresponding to the new stream + will be initialized to use this codec. This is needed for e.g. codec-specific + defaults to be set, so codec should be provided if it is known. + + @return newly created stream or NULL on error. + + + + Get the AVClass for AVFormatContext. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + +Free an AVFormatContext and all its streams. +@param s context to free + + + +Allocate an AVFormatContext. +avformat_free_context() can be used to free the context and everything +allocated by the framework within it. + + + +If f is NULL, returns the first registered output format, +if f is non-NULL, returns the next registered output format after f +or NULL if f is the last one. + + + +If f is NULL, returns the first registered input format, +if f is non-NULL, returns the next registered input format after f +or NULL if f is the last one. + + + +Undo the initialization done by avformat_network_init. + + + + Do global initialization of network components. This is optional, + but recommended, since it avoids the overhead of implicitly + doing the setup for each session. + + Calling this function will become mandatory if using network + protocols at some major version bump. + + + + Initialize libavformat and register all the muxers, demuxers and + protocols. If you do not call this function, then you can select + exactly which formats you want to support. + + @see av_register_input_format() + @see av_register_output_format() + @see av_register_protocol() + + + +Return the libavformat license. + + + +Return the libavformat build-time configuration. + + + + @defgroup lavf_core Core functions + @ingroup libavf + + Functions for querying libavformat capabilities, allocating core structures, + etc. + @{ + +Return the LIBAVFORMAT_VERSION_INT constant. + + + +Max chunk size in bytes +Note, not all formats support this and unpredictable things may happen if it is used when not supported. +- encoding: Set by user via AVOptions (NO direct access) +- decoding: unused + + + +Max chunk time in microseconds. +Note, not all formats support this and unpredictable things may happen if it is used when not supported. +- encoding: Set by user via AVOptions (NO direct access) +- decoding: unused + + + +Audio preload in microseconds. +Note, not all formats support this and unpredictable things may happen if it is used when not supported. +- encoding: Set by user via AVOptions (NO direct access) +- decoding: unused + + + +Transport stream id. +This will be moved into demuxer private options. Thus no API/ABI compatibility + + + + Custom interrupt callbacks for the I/O layer. + + decoding: set by the user before avformat_open_input(). + encoding: set by the user before avformat_write_header() + (mainly useful for AVFMT_NOFILE formats). The callback + should also be passed to avio_open2() if it's used to + open the file. + + + +Error recognition; higher values will detect more errors but may +misdetect some more or less valid parts as errors. +- encoding: unused +- decoding: Set by user. + + + +decoding: number of frames used to probe fps + + + +Start time of the stream in real world time, in microseconds +since the unix epoch (00:00 1st January 1970). That is, pts=0 +in the stream was captured at this real world time. +- encoding: Set by user. +- decoding: Unused. + + + +Remaining size available for raw_packet_buffer, in bytes. +NOT PART OF PUBLIC API + + + +Flags to enable debugging. + + + +Maximum amount of memory in bytes to use for buffering frames +obtained from realtime capture devices. + + + +Maximum amount of memory in bytes to use for the index of each stream. +If the index exceeds this size, entries will be discarded as +needed to maintain a smaller size. This can lead to slower or less +accurate seeking (depends on demuxer). +Demuxers for which a full in-memory index is mandatory will ignore +this. +muxing : unused +demuxing: set by user + + + +decoding: maximum time (in AV_TIME_BASE units) during which the input should +be analyzed in avformat_find_stream_info(). + + + +decoding: size of data to probe; encoding: unused. + + + +@deprecated, use the 'loop' img2 demuxer private option. + + + + number of times to loop output in formats that support it + + @deprecated use the 'loop' private option in the gif muxer. + + + +use mpeg muxer private options instead + + + +Decoding: total stream bitrate in bit/s, 0 if not +available. Never set it directly if the file_size and the +duration are known as FFmpeg can compute it automatically. + + + +decoding: total file size, 0 if unknown + + + +Decoding: duration of the stream, in AV_TIME_BASE fractional +seconds. Only set this value if you know none of the individual stream +durations and also do not set any of them. This is deduced from the +AVStream values if not set. + + + +Decoding: position of the first frame of the component, in +AV_TIME_BASE fractional seconds. NEVER set this value directly: +It is deduced from the AVStream values. + + + +@deprecated use 'creation_time' metadata tag instead + + + + A list of all streams in the file. New streams are created with + avformat_new_stream(). + + decoding: streams are created by libavformat in avformat_open_input(). + If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also + appear in av_read_frame(). + encoding: streams are created by the user before avformat_write_header(). + + + +Format private data. This is an AVOptions-enabled struct +if and only if iformat/oformat.priv_class is not NULL. + + + +A class for logging and AVOptions. Set by avformat_alloc_context(). +Exports (de)muxer private options if they exist. + + + +Format I/O context. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(AVFormatContext) must not be used outside libav*, use +avformat_alloc_context() to create an AVFormatContext. + + + +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(AVProgram) must not be used outside libav*. + + + +flag to indicate that probing is requested +NOT PART OF PUBLIC API + + + +Stream Identifier +This is the MPEG-TS stream identifier +1 +0 means unknown + + + +Number of frames that have been demuxed during av_find_stream_info() + + + +Average framerate + + + +last packet in packet_buffer for this stream when muxing. +Used internally, NOT PART OF PUBLIC API, do not read or +write from outside of libav* + + +This buffer is only needed when packets were already buffered but +not decoded, for example to get the codec parameters in MPEG +streams. + + +Raw packets from the demuxer, prior to parsing and decoding. +This buffer is used for buffering packets until the codec can +be identified, as parsing cannot be done without knowing the +codec. + + + +Number of packets to buffer for codec probing +NOT PART OF PUBLIC API + + + + Timestamp corresponding to the last dts sync point. + + Initialized when AVCodecParserContext.dts_sync_point >= 0 and + a DTS is received from the underlying container. Otherwise set to + AV_NOPTS_VALUE by default. + + + +sample aspect ratio (0 if unknown) +- encoding: Set by user. +- decoding: Set by libavformat. + + + +Decoding: duration of the stream, in stream time base. +If a source file does not specify a duration, but does specify +a bitrate, this value will be estimated from bitrate and file size. + + + +Decoding: pts of the first frame of the stream in presentation order, in stream time base. +Only set this if you are absolutely 100% sure that the value you set +it to really is the pts of the first frame. +This may be undefined (AV_NOPTS_VALUE). +@note The ASF header does NOT contain a correct start_time the ASF +demuxer must NOT set this. + + + +Quality, as it has been removed from AVCodecContext and put in AVVideoFrame. +MN: dunno if that is the right place for it + + + +This is the fundamental unit of time (in seconds) in terms +of which frame timestamps are represented. For fixed-fps content, +time base should be 1/framerate and timestamp increments should be 1. +decoding: set by libavformat +encoding: set by libavformat in av_write_header + + + +encoding: pts generation when outputting stream + + + +Real base framerate of the stream. +This is the lowest framerate with which all timestamps can be +represented accurately (it is the least common multiple of all +framerates in the stream). Note, this value is just a guess! +For example, if the time base is 1/90000 and all frames have either +approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. + + + +Track should be used during playback by default. +Useful for subtitle track that should be displayed +even when user did not explicitly ask for subtitles. + +Stream structure. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(AVStream) must not be used outside libav*. + + + +@} + + + +Pause playing - only meaningful if using a network-based format +(RTSP). + + + +Start/resume playing - only meaningful if using a network-based format +(RTSP). + + + +General purpose read-only value that the format can use. + + + +If extensions are defined, then no probe is done. You should +usually not use extension format guessing because it is not +reliable enough + + + +Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, +AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, +AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK. + + + +Get the next timestamp in stream[stream_index].time_base units. +@return the timestamp or AV_NOPTS_VALUE if an error occurred + + + +Seek to a given timestamp relative to the frames in +stream component stream_index. +@param stream_index Must not be -1. +@param flags Selects which direction should be preferred if no exact + match is available. +@return >= 0 on success (but not necessarily the new offset) + + + +Close the stream. The AVFormatContext and AVStreams are not +freed by this function + + + +Read the format header and initialize the AVFormatContext +structure. Return 0 if OK. 'ap' if non-NULL contains +additional parameters. Only used in raw format right +now. 'av_new_stream' should be called to create new streams. + + + +Tell if a given file has a chance of being parsed as this format. +The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes +big so you do not have to check for that unless you need more. + + + +Size of private data so that it can be allocated in the wrapper. + + + +Descriptive name for the format, meant to be more human-readable +than name. You should use the NULL_IF_CONFIG_SMALL() macro +to define it. + + + +A comma separated list of short names for the format. New names +may be appended with a minor bump. + + + +@} + +@addtogroup lavf_decoding +@{ + + + Can only be iformat or oformat, not both at the same time. + + decoding: set by avformat_open_input(). + encoding: set by the user. + + + + Test if the given codec can be stored in this container. + + @return 1 if the codec is supported, 0 if it is not. + A negative number if unknown. + + + +List of supported codec_id-codec_tag pairs, ordered by "better +choice first". The arrays are all terminated by CODEC_ID_NONE. + + + +can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE, +AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, +AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH + + + +Write a packet. If AVFMT_ALLOW_FLUSH is set in flags, +pkt can be NULL in order to flush data buffered in the muxer. +When flushing, return 0 if there still is more data to flush, +or 1 if everything was flushed and there is no more buffered +data. + + + +size of private data so that it can be allocated in the wrapper + + + +Descriptive name for the format, meant to be more human-readable +than name. You should use the NULL_IF_CONFIG_SMALL() macro +to define it. + + + +Demuxer will use avio_open, no opened file should be provided by the caller. +@addtogroup lavf_encoding +@{ + + + +This structure contains the data a format has to probe a file. + + + + Read data and append it to the current content of the AVPacket. + If pkt->size is 0 this is identical to av_get_packet. + Note that this uses av_grow_packet and thus involves a realloc + which is inefficient. Thus this function should only be used + when there is no reasonable way to know (an upper bound of) + the final size. + + @param pkt packet + @param size amount of data to read + @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data + will not be lost even if an error occurs. + + + +@} + + Allocate and read the payload of a packet and initialize its + fields with default values. + + @param pkt packet + @param size desired payload size + @return >0 (read size) if OK, AVERROR_xxx otherwise + + + +Free all the memory allocated for an AVDictionary struct. + + + +Copy metadata from one AVDictionary struct into another. +@param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + this function will allocate a struct for you and put it in *dst +@param src pointer to source AVDictionary struct +@param flags flags to use when setting metadata in *dst +@note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + + + +This function is provided for compatibility reason and currently does nothing. + + + + Get a metadata element with matching key. + + @param prev Set to the previous matching element to find the next. + If set to NULL the first matching element is returned. + @param flags Allows case as well as suffix-insensitive comparisons. + @return Found tag or NULL, changing key or value leads to undefined behavior. + + + +Seek to a given timestamp relative to some component stream. +Only meaningful if using a network streaming protocol (e.g. MMS.). +@param stream_index The stream index that the timestamp is relative to. + If stream_index is (-1) the timestamp should be in AV_TIME_BASE + units from the beginning of the presentation. + If a stream_index >= 0 is used and the protocol does not support + seeking based on component streams, the call will fail. +@param timestamp timestamp in AVStream.time_base units + or if there is no stream specified then in AV_TIME_BASE units. +@param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE + and AVSEEK_FLAG_ANY. The protocol may silently ignore + AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will + fail if used and not supported. +@return >= 0 on success +@see AVInputFormat::read_seek + + + +Pause and resume playing - only meaningful if using a network streaming +protocol (e.g. MMS). +@param pause 1 for pause, 0 for resume + + + + Iterate through names of available protocols. + @note it is recommanded to use av_protocol_next() instead of this + + @param opaque A private pointer representing current protocol. + It must be a pointer to NULL on first iteration and will + be updated by successive calls to avio_enum_protocols. + @param output If set to 1, iterate over output protocols, + otherwise over input protocols. + + @return A static string containing the name of current protocol or NULL + + + + Return the written size and a pointer to the buffer. The buffer + must be freed with av_free(). + Padding of FF_INPUT_BUFFER_PADDING_SIZE is added to the buffer. + + @param s IO context + @param pbuffer pointer to a byte buffer + @return the length of the byte buffer + + + + Open a write only memory stream. + + @param s new IO context + @return zero if no error. + + + + Create and initialize a AVIOContext for accessing the + resource indicated by url. + @note When the resource indicated by url has been opened in + read+write mode, the AVIOContext can be used only for writing. + + @param s Used to return the pointer to the created AVIOContext. + In case of failure the pointed to value is set to NULL. + @param flags flags which control how the resource indicated by url + is to be opened + @param int_cb an interrupt callback to be used at the protocols level + @param options A dictionary filled with protocol-private options. On return + this parameter will be destroyed and replaced with a dict containing options + that were not found. May be NULL. + @return 0 in case of success, a negative value corresponding to an + AVERROR code in case of failure + + + +@name URL open modes +The flags argument to avio_open must be one of the following +constants, optionally ORed with other flags. +@{ + +@} + +Use non-blocking mode. +If this flag is set, operations on the context will return +AVERROR(EAGAIN) if they can not be performed immediately. +If this flag is not set, operations on the context will never return +AVERROR(EAGAIN). +Note that this flag does not affect the opening/connecting of the +context. Connecting a protocol will always block if necessary (e.g. on +network protocols) but never hang (e.g. on busy devices). +Warning: non-blocking protocols is work-in-progress; this flag may be +silently ignored. + + Create and initialize a AVIOContext for accessing the + resource indicated by url. + @note When the resource indicated by url has been opened in + read+write mode, the AVIOContext can be used only for writing. + + @param s Used to return the pointer to the created AVIOContext. + In case of failure the pointed to value is set to NULL. + @param flags flags which control how the resource indicated by url + is to be opened + @return 0 in case of success, a negative value corresponding to an + AVERROR code in case of failure + + + + @name Functions for reading from AVIOContext + @{ + + @note return 0 if EOF, so you cannot use it if EOF handling is + necessary + + + +Read size bytes from AVIOContext into buf. +@return number of bytes read or AVERROR + + + +@warning currently size is limited + + +feof() equivalent for AVIOContext. +@return non zero if and only if end of file + + + +Get the filesize. +@return filesize or AVERROR + + + +ftell() equivalent for AVIOContext. +@return position or AVERROR. + + + +Skip given number of bytes forward +@return new position or AVERROR. + + + +Convert an UTF-8 string to UTF-16LE and write it. +@return number of bytes written. + + + +Write a NULL-terminated string. +@return number of bytes written. + + + + Allocate and initialize an AVIOContext for buffered I/O. It must be later + freed with av_free(). + + @param buffer Memory block for input/output operations via AVIOContext. + The buffer must be allocated with av_malloc() and friends. + @param buffer_size The buffer size is very important for performance. + For protocols with fixed blocksize it should be set to this blocksize. + For others a typical size is a cache page, e.g. 4kb. + @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. + @param opaque An opaque pointer to user-specific data. + @param read_packet A function for refilling the buffer, may be NULL. + @param write_packet A function for writing the buffer contents, may be NULL. + @param seek A function for seeking to specified byte position, may be NULL. + + @return Allocated AVIOContext or NULL on failure. + + + +The callback is called in blocking functions to test regulary if +asynchronous interruption is needed. AVERROR_EXIT is returned +in this case by the interrupted function. 'NULL' means no interrupt +callback is given. +@deprecated Use interrupt_callback in AVFormatContext/avio_open2 + instead. + + + + Return AVIO_FLAG_* access flags corresponding to the access permissions + of the resource in url, or a negative value corresponding to an + AVERROR code in case of failure. The returned access flags are + masked by the value in flags. + + @note This function is intrinsically unsafe, in the sense that the + checked resource may change its existence or permission status from + one call to another. Thus you should not trust the returned value, + unless you are sure that no other processes are accessing the + checked resource. + + + +Return a non-zero value if the resource indicated by url +exists, 0 otherwise. +@deprecated Use avio_check instead. + + + +return the written or read size + + +@deprecated use AVIOContext.max_packet_size directly. + + + +@deprecated Use AVIOContext.seekable field directly. + + + +@deprecated use avio_get_str instead + + + +@note unlike fgets, the EOL character is not returned and a whole + line is parsed. return NULL if first char read was EOF + + +@} + + + +@defgroup old_url_f_funcs Old url_f* functions +The following functions are deprecated, use the "avio_"-prefixed functions instead. +@{ +@ingroup lavf_io + + + +@} + + + +@defgroup old_avio_funcs Old put_/get_*() functions +The following functions are deprecated. Use the "avio_"-prefixed functions instead. +@{ +@ingroup lavf_io + + + +@} + + + + Register the URLProtocol protocol. + + @param size the size of the URLProtocol struct referenced + + + +returns the next registered protocol after the given protocol (the first if +NULL is given), or NULL if protocol is the last one. + + + +@defgroup old_url_funcs Old url_* functions +The following functions are deprecated. Use the buffered API based on #AVIOContext instead. +@{ +@ingroup lavf_io + + + +@name URL open modes +The flags argument to url_open and cosins must be one of the following +constants, optionally ORed with other flags. +@{ + +@} + +Use non-blocking mode. +If this flag is set, operations on the context will return +AVERROR(EAGAIN) if they can not be performed immediately. +If this flag is not set, operations on the context will never return +AVERROR(EAGAIN). +Note that this flag does not affect the opening/connecting of the +context. Connecting a protocol will always block if necessary (e.g. on +network protocols) but never hang (e.g. on busy devices). +Warning: non-blocking protocols is work-in-progress; this flag may be +silently ignored. + + + +@deprecated This struct is to be made private. Use the higher-level + AVIOContext-based API instead. + + + +URL Context. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(URLContext) must not be used outside libav*. +@deprecated This struct will be made private + + + + Get the AVClass for AVFrame. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + + Get the AVClass for AVCodecContext. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + + Register a user provided lock manager supporting the operations + specified by AVLockOp. mutex points to a (void *) where the + lockmgr should store/get a pointer to a user allocated mutex. It's + NULL upon AV_LOCK_CREATE and != NULL for all other ops. + + @param cb User defined callback. Note: FFmpeg may invoke calls to this + callback during the call to av_lockmgr_register(). + Thus, the application must be prepared to handle that. + If cb is set to NULL the lockmgr will be unregistered. + Also note that during unregistration the previously registered + lockmgr callback may also be invoked. + + + +Lock operation used by lockmgr + + + +If hwaccel is NULL, returns the first registered hardware accelerator, +if hwaccel is non-NULL, returns the next registered hardware accelerator +after hwaccel, or NULL if hwaccel is the last one. + + + +Register the hardware accelerator hwaccel. + + + +Log a generic warning message asking for a sample. This function is +intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) +only, and would normally not be used by applications. +@param[in] avc a pointer to an arbitrary struct of which the first field is +a pointer to an AVClass struct +@param[in] msg string containing an optional message, or NULL if no message + + + +Log a generic warning message about a missing feature. This function is +intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) +only, and would normally not be used by applications. +@param[in] avc a pointer to an arbitrary struct of which the first field is +a pointer to an AVClass struct +@param[in] feature string containing the name of the missing feature +@param[in] want_sample indicates if samples are wanted which exhibit this feature. +If want_sample is non-zero, additional verbage will be added to the log +message which tells the user how to report samples to the development +mailing list. + + + + Encode extradata length to a buffer. Used by xiph codecs. + + @param s buffer to write to; must be at least (v/255+1) bytes long + @param v size of extradata in bytes + @return number of bytes written to the buffer. + + + +Pad image. + + + +Crop image top and left side. + + + +Copy image src to dst. Wraps av_picture_data_copy() above. + + + + Same behaviour av_fast_malloc but the buffer has additional + FF_INPUT_PADDING_SIZE at the end which will will always be 0. + + In addition the whole buffer will initially and after resizes + be 0-initialized so that no uninitialized data will ever appear. + + + + Allocate a buffer, reusing the given one if large enough. + + Contrary to av_fast_realloc the current buffer contents might not be + preserved and on error the old buffer is freed, thus no special + handling to avoid memleaks is necessary. + + @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer + @param size size of the buffer *ptr points to + @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and + *size 0 if an error occurred. + + + + Reallocate the given block if it is not large enough, otherwise do nothing. + + @see av_realloc + + + +Previous frame byte position. + + + +Byte position of currently parsed frame in stream. + + + + Position of the packet in file. + + Analogous to cur_frame_pts/dts + + + + Presentation delay of current frame in units of AVCodecContext.time_base. + + Set to INT_MIN when dts_sync_point unused. Otherwise, it must + contain valid non-negative timestamp delta (presentation time of a frame + must not lie in the past). + + This delay represents the difference between decoding and presentation + time of the frame. + + For example, this corresponds to H.264 dpb_output_delay. + + + + Offset of the current timestamp against last timestamp sync point in + units of AVCodecContext.time_base. + + Set to INT_MIN when dts_sync_point unused. Otherwise, it must + contain a valid timestamp offset. + + Note that the timestamp of sync point has usually a nonzero + dts_ref_dts_delta, which refers to the previous sync point. Offset of + the next frame after timestamp sync point will be usually 1. + + For example, this corresponds to H.264 cpb_removal_delay. + + + + Time difference in stream time base units from the pts of this + packet to the point at which the output from the decoder has converged + independent from the availability of previous frames. That is, the + frames are virtually identical no matter if decoding started from + the very first frame or from this keyframe. + Is AV_NOPTS_VALUE if unknown. + This field is not the display duration of the current frame. + This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + set. + + The purpose of this field is to allow seeking in streams that have no + keyframes in the conventional sense. It corresponds to the + recovery point SEI in H.264 and match_time_delta in NUT. It is also + essential for some types of subtitle streams to ensure that all + subtitles are correctly displayed after seeking. + + + +Set by parser to 1 for key frames and 0 for non-key frames. +It is initialized to -1, so if the parser doesn't set this flag, +old-style fallback using AV_PICTURE_TYPE_I picture type as key frames +will be used. + + + +Set if the parser has a valid file offset + + + This field is used for proper frame duration computation in lavf. + It signals, how much longer the frame duration of the current frame + is compared to normal frame duration. + + frame_duration = (1 + repeat_pict) * time_base + + It is used by codecs like H.264 to display telecined material. + + + +@deprecated Use av_get_bytes_per_sample() instead. + + + + Return codec bits per sample. + + @param[in] codec_id the codec + @return Number of bits per sample or zero if unknown for the given codec. + + + + Return a single letter to describe the given picture type pict_type. + + @param[in] pict_type the picture type + @return A single character representing the picture type. + @deprecated Use av_get_picture_type_char() instead. + + + +Flush buffers, should be called when seeking or when switching to a different stream. + + + + Register all the codecs, parsers and bitstream filters which were enabled at + configuration time. If you do not call this function you can select exactly + which formats you want to support, by using the individual registration + functions. + + @see avcodec_register + @see av_register_codec_parser + @see av_register_bitstream_filter + + + + Encode a video frame from pict into buf. + The input picture should be + stored using a specific format, namely avctx.pix_fmt. + + @param avctx the codec context + @param[out] buf the output buffer for the bitstream of encoded frame + @param[in] buf_size the size of the output buffer in bytes + @param[in] pict the input picture to encode + @return On error a negative value is returned, on success zero or the number + of bytes used from the output buffer. + + + + Fill audio frame data and linesize. + AVFrame extended_data channel pointers are allocated if necessary for + planar audio. + + @param frame the AVFrame + frame->nb_samples must be set prior to calling the + function. This function fills in frame->data, + frame->extended_data, frame->linesize[0]. + @param nb_channels channel count + @param sample_fmt sample format + @param buf buffer to use for frame data + @param buf_size size of buffer + @param align plane size sample alignment + @return 0 on success, negative error code on failure + + + + Encode a frame of audio. + + Takes input samples from frame and writes the next output packet, if + available, to avpkt. The output packet does not necessarily contain data for + the most recent frame, as encoders can delay, split, and combine input frames + internally as needed. + + @param avctx codec context + @param avpkt output AVPacket. + The user can supply an output buffer by setting + avpkt->data and avpkt->size prior to calling the + function, but if the size of the user-provided data is not + large enough, encoding will fail. All other AVPacket fields + will be reset by the encoder using av_init_packet(). If + avpkt->data is NULL, the encoder will allocate it. + The encoder will set avpkt->size to the size of the + output packet. + @param[in] frame AVFrame containing the raw audio data to be encoded. + May be NULL when flushing an encoder that has the + CODEC_CAP_DELAY capability set. + There are 2 codec capabilities that affect the allowed + values of frame->nb_samples. + If CODEC_CAP_SMALL_LAST_FRAME is set, then only the final + frame may be smaller than avctx->frame_size, and all other + frames must be equal to avctx->frame_size. + If CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame + can have any number of samples. + If neither is set, frame->nb_samples must be equal to + avctx->frame_size for all frames. + @param[out] got_packet_ptr This field is set to 1 by libavcodec if the + output packet is non-empty, and to 0 if it is + empty. If the function returns an error, the + packet can be assumed to be invalid, and the + value of got_packet_ptr is undefined and should + not be used. + @return 0 on success, negative error code on failure + + + + Encode an audio frame from samples into buf. + + @deprecated Use avcodec_encode_audio2 instead. + + @note The output buffer should be at least FF_MIN_BUFFER_SIZE bytes large. + However, for codecs with avctx->frame_size equal to 0 (e.g. PCM) the user + will know how much space is needed because it depends on the value passed + in buf_size as described below. In that case a lower value can be used. + + @param avctx the codec context + @param[out] buf the output buffer + @param[in] buf_size the output buffer size + @param[in] samples the input buffer containing the samples + The number of samples read from this buffer is frame_size*channels, + both of which are defined in avctx. + For codecs which have avctx->frame_size equal to 0 (e.g. PCM) the number of + samples read from samples is equal to: + buf_size * 8 / (avctx->channels * av_get_bits_per_sample(avctx->codec_id)) + This also implies that av_get_bits_per_sample() must not return 0 for these + codecs. + @return On error a negative value is returned, on success zero or the number + of bytes used to encode the data read from the input buffer. + + + + Free all allocated data in the given subtitle struct. + + @param sub AVSubtitle to free. + + + + * Decode a subtitle message. + * Return a negative value on error, otherwise return the number of bytes used. + * If no subtitle could be decompressed, got_sub_ptr is zero. + * Otherwise, the subtitle is stored in *sub. + * Note that CODEC_CAP_DR1 is not available for subtitle codecs. This is for + * simplicity, because the performance difference is expect to be negligible + * and reusing a get_buffer written for video codecs would probably perform badly + * due to a potentially very different allocation pattern. + * + * @param avctx the codec context + * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be + freed with avsubtitle_free if *got_sub_ptr is set. + * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. + * @param[in] avpkt The input AVPacket containing the input buffer. + + + + Decode the audio frame of size avpkt->size from avpkt->data into frame. + + Some decoders may support multiple frames in a single AVPacket. Such + decoders would then just decode the first frame. In this case, + avcodec_decode_audio4 has to be called again with an AVPacket containing + the remaining data in order to decode the second frame, etc... + Even if no frames are returned, the packet needs to be fed to the decoder + with remaining data until it is completely consumed or an error occurs. + + @warning The input buffer, avpkt->data must be FF_INPUT_BUFFER_PADDING_SIZE + larger than the actual read bytes because some optimized bitstream + readers read 32 or 64 bits at once and could read over the end. + + @note You might have to align the input buffer. The alignment requirements + depend on the CPU and the decoder. + + @param avctx the codec context + @param[out] frame The AVFrame in which to store decoded audio samples. + Decoders request a buffer of a particular size by setting + AVFrame.nb_samples prior to calling get_buffer(). The + decoder may, however, only utilize part of the buffer by + setting AVFrame.nb_samples to a smaller value in the + output frame. + @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is + non-zero. + @param[in] avpkt The input AVPacket containing the input buffer. + At least avpkt->data and avpkt->size should be set. Some + decoders might also require additional fields to be set. + @return A negative error code is returned if an error occurred during + decoding, otherwise the number of bytes consumed from the input + AVPacket is returned. + + + + Wrapper function which calls avcodec_decode_audio4. + + @deprecated Use avcodec_decode_audio4 instead. + + Decode the audio frame of size avpkt->size from avpkt->data into samples. + Some decoders may support multiple frames in a single AVPacket, such + decoders would then just decode the first frame. In this case, + avcodec_decode_audio3 has to be called again with an AVPacket that contains + the remaining data in order to decode the second frame etc. + If no frame + could be outputted, frame_size_ptr is zero. Otherwise, it is the + decompressed frame size in bytes. + + @warning You must set frame_size_ptr to the allocated size of the + output buffer before calling avcodec_decode_audio3(). + + @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than + the actual read bytes because some optimized bitstream readers read 32 or 64 + bits at once and could read over the end. + + @warning The end of the input buffer avpkt->data should be set to 0 to ensure that + no overreading happens for damaged MPEG streams. + + @warning You must not provide a custom get_buffer() when using + avcodec_decode_audio3(). Doing so will override it with + avcodec_default_get_buffer. Use avcodec_decode_audio4() instead, + which does allow the application to provide a custom get_buffer(). + + @note You might have to align the input buffer avpkt->data and output buffer + samples. The alignment requirements depend on the CPU: On some CPUs it isn't + necessary at all, on others it won't work at all if not aligned and on others + it will work but it will have an impact on performance. + + In practice, avpkt->data should have 4 byte alignment at minimum and + samples should be 16 byte aligned unless the CPU doesn't need it + (AltiVec and SSE do). + + @note Codecs which have the CODEC_CAP_DELAY capability set have a delay + between input and output, these need to be fed with avpkt->data=NULL, + avpkt->size=0 at the end to return the remaining frames. + + @param avctx the codec context + @param[out] samples the output buffer, sample type in avctx->sample_fmt + If the sample format is planar, each channel plane will + be the same size, with no padding between channels. + @param[in,out] frame_size_ptr the output buffer size in bytes + @param[in] avpkt The input AVPacket containing the input buffer. + You can create such packet with av_init_packet() and by then setting + data and size, some decoders might in addition need other fields. + All decoders are designed to use the least fields possible though. + @return On error a negative value is returned, otherwise the number of bytes + used or zero if no frame data was decompressed (used) from the input AVPacket. + + + +@deprecated Set s->thread_count before calling avcodec_open2() instead of calling this. + + + + Modify width and height values so that they will result in a memory + buffer that is acceptable for the codec if you also ensure that all + line sizes are a multiple of the respective linesize_align[i]. + + May only be used if a codec with CODEC_CAP_DR1 has been opened. + If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + according to avcodec_get_edge_width() before. + + + + Modify width and height values so that they will result in a memory + buffer that is acceptable for the codec if you do not use any horizontal + padding. + + May only be used if a codec with CODEC_CAP_DR1 has been opened. + If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + according to avcodec_get_edge_width() before. + + + + Return the amount of padding in pixels which the get_buffer callback must + provide around the edge of the image for codecs which do not have the + CODEC_FLAG_EMU_EDGE flag. + + @return Required padding in pixels. + + + + Allocate an AVFrame and set its fields to default values. The resulting + struct can be deallocated by simply calling av_free(). + + @return An AVFrame filled with default values or NULL on failure. + @see avcodec_get_frame_defaults + + + + Set the fields of the given AVFrame to default values. + + @param pic The AVFrame of which the fields should be set to default values. + + + + Copy the settings of the source AVCodecContext into the destination + AVCodecContext. The resulting destination codec context will be + unopened, i.e. you are required to call avcodec_open2() before you + can use this AVCodecContext to decode/encode video/audio data. + + @param dest target codec context, should be initialized with + avcodec_alloc_context3(), but otherwise uninitialized + @param src source codec context + @return AVERROR() on error (e.g. memory allocation error), 0 on success + + + + Allocate an AVCodecContext and set its fields to default values. The + resulting struct can be deallocated by simply calling av_free(). + + @param codec if non-NULL, allocate private data and initialize defaults + for the given codec. It is illegal to then call avcodec_open2() + with a different codec. + + @return An AVCodecContext filled with default values or NULL on failure. + @see avcodec_get_context_defaults + + + +THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! + + + Allocate an AVCodecContext and set its fields to default values. The + resulting struct can be deallocated by simply calling av_free(). + + @return An AVCodecContext filled with default values or NULL on failure. + @see avcodec_get_context_defaults + + @deprecated use avcodec_alloc_context3() + + + + Set the fields of the given AVCodecContext to default values corresponding + to the given codec (defaults may be codec-dependent). + + Do not call this function if a non-NULL codec has been passed + to avcodec_alloc_context3() that allocated this AVCodecContext. + If codec is non-NULL, it is illegal to call avcodec_open2() with a + different codec on this AVCodecContext. + + + +THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! + + + Set the fields of the given AVCodecContext to default values. + + @param s The AVCodecContext of which the fields should be set to default values. + @deprecated use avcodec_get_context_defaults3 + + + + Return a name for the specified profile, if available. + + @param codec the codec that is searched for the given profile + @param profile the profile value for which a name is requested + @return A name for the profile if found, NULL otherwise. + + + + Find a registered decoder with the specified name. + + @param name name of the requested decoder + @return A decoder if one was found, NULL otherwise. + + + + Find a registered decoder with a matching codec ID. + + @param id CodecID of the requested decoder + @return A decoder if one was found, NULL otherwise. + + + + Find a registered encoder with the specified name. + + @param name name of the requested encoder + @return An encoder if one was found, NULL otherwise. + + + + Find a registered encoder with a matching codec ID. + + @param id CodecID of the requested encoder + @return An encoder if one was found, NULL otherwise. + + + + Register the codec codec and initialize libavcodec. + + @warning either this function or avcodec_register_all() must be called + before any other libavcodec functions. + + @see avcodec_register_all() + + + +@deprecated this function is called automatically from avcodec_register() +and avcodec_register_all(), there is no need to call it manually + + + +Return the libavcodec license. + + + +Return the libavcodec build-time configuration. + + + +Return the LIBAVCODEC_VERSION_INT constant. + + + +If c is NULL, returns the first registered codec, +if c is non-NULL, returns the next registered codec after c, +or NULL if c is the last one. + + + +Tell if an image really has transparent alpha values. +@return ored mask of FF_ALPHA_xxx constants + + + + Compute what kind of losses will occur when converting from one specific + pixel format to another. + When converting from one pixel format to another, information loss may occur. + For example, when converting from RGB24 to GRAY, the color information will + be lost. Similarly, other losses occur when converting from some formats to + other formats. These losses can involve loss of chroma, but also loss of + resolution, loss of color depth, loss due to the color space conversion, loss + of the alpha bits or loss due to color quantization. + avcodec_get_fix_fmt_loss() informs you about the various types of losses + which will occur when converting from one pixel format to another. + + @param[in] dst_pix_fmt destination pixel format + @param[in] src_pix_fmt source pixel format + @param[in] has_alpha Whether the source pixel format alpha channel is used. + @return Combination of flags informing you what kind of losses will occur + (maximum loss for an invalid dst_pix_fmt). + + + + Put a string representing the codec tag codec_tag in buf. + + @param buf_size size in bytes of buf + @return the length of the string that would have been generated if + enough space had been available, excluding the trailing null + + + +Return a value representing the fourCC code associated to the +pixel format pix_fmt, or 0 if no associated fourCC code can be +found. + + + + Return the short name for a pixel format. + + \see av_get_pix_fmt(), av_get_pix_fmt_string(). + @deprecated Deprecated in favor of av_get_pix_fmt_name(). + + + +Get the name of a codec. +@return a static string identifying the codec; never NULL + + + + Calculate the size in bytes that a picture of the given width and height + would occupy if stored in the given picture format. + Note that this returns the size of a compact representation as generated + by avpicture_layout(), which can be smaller than the size required for e.g. + avpicture_fill(). + + @param pix_fmt the given picture format + @param width the width of the image + @param height the height of the image + @return Image data size in bytes or -1 on error (e.g. too large dimensions). + + + + Copy pixel data from an AVPicture into a buffer. + The data is stored compactly, without any gaps for alignment or padding + which may be applied by avpicture_fill(). + + @see avpicture_get_size() + + @param[in] src AVPicture containing image data + @param[in] pix_fmt The format in which the picture data is stored. + @param[in] width the width of the image in pixels. + @param[in] height the height of the image in pixels. + @param[out] dest A buffer into which picture data will be copied. + @param[in] dest_size The size of 'dest'. + @return The number of bytes written to dest, or a negative value (error code) on error. + + + + Fill in the AVPicture fields. + The fields of the given AVPicture are filled in by using the 'ptr' address + which points to the image data buffer. Depending on the specified picture + format, one or multiple image data pointers and line sizes will be set. + If a planar format is specified, several pointers will be set pointing to + the different picture planes and the line sizes of the different planes + will be stored in the lines_sizes array. + Call with ptr == NULL to get the required size for the ptr buffer. + + To allocate the buffer and fill in the AVPicture fields in one call, + use avpicture_alloc(). + + @param picture AVPicture whose fields are to be filled in + @param ptr Buffer which will contain or contains the actual image data + @param pix_fmt The format in which the picture data is stored. + @param width the width of the image in pixels + @param height the height of the image in pixels + @return size of the image data in bytes + + + + Free a picture previously allocated by avpicture_alloc(). + The data buffer used by the AVPicture is freed, but the AVPicture structure + itself is not. + + @param picture the AVPicture to be freed + + + + Allocate memory for a picture. Call avpicture_free() to free it. + + @see avpicture_fill() + + @param picture the picture to be filled in + @param pix_fmt the format of the picture + @param width the width of the picture + @param height the height of the picture + @return zero if successful, a negative value if not + + + + Compensate samplerate/timestamp drift. The compensation is done by changing + the resampler parameters, so no audible clicks or similar distortions occur + @param compensation_distance distance in output samples over which the compensation should be performed + @param sample_delta number of output samples which should be output less + + example: av_resample_compensate(c, 10, 500) + here instead of 510 samples only 500 samples would be output + + note, due to rounding the actual compensation might be slightly different, + especially if the compensation_distance is large and the in_rate used during init is small + + + +Resample an array of samples using a previously configured context. +@param src an array of unconsumed samples +@param consumed the number of samples of src which have been consumed are returned here +@param src_size the number of unconsumed samples available +@param dst_size the amount of space in samples available in dst +@param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. +@return the number of samples written in dst or -1 if an error occurred + + + + * Initialize an audio resampler. + * Note, if either rate is not an integer then simply scale both rates up so they are. + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear If 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + + + + Free resample context. + + @param s a non-NULL pointer to a resample context previously + created with av_audio_resample_init() + + + + * Initialize audio resampling context. + * + * @param output_channels number of output channels + * @param input_channels number of input channels + * @param output_rate output sample rate + * @param input_rate input sample rate + * @param sample_fmt_out requested output sample format + * @param sample_fmt_in input sample format + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff frequency + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear if 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + * @return allocated ReSampleContext, NULL if error occurred + + + + Get side information from packet. + + @param pkt packet + @param type desired side information type + @param size pointer for side information size to store (optional) + @return pointer to data if present or NULL otherwise + + + + Allocate new information of a packet. + + @param pkt packet + @param type side information type + @param size side information size + @return pointer to fresh allocated data or NULL otherwise + + + + Free a packet. + + @param pkt packet to free + + + +@warning This is a hack - the packet memory allocation stuff is broken. The +packet is allocated if it was not really allocated. + + + + Increase packet size, correctly zeroing padding + + @param pkt packet + @param grow_by number of bytes by which to increase the size of the packet + + + + Reduce packet size, correctly zeroing padding + + @param pkt packet + @param size new size + + + + Allocate the payload of a packet and initialize its fields with + default values. + + @param pkt packet + @param size wanted payload size + @return 0 if OK, AVERROR_xxx otherwise + + + + Initialize optional fields of a packet with default values. + + @param pkt packet + + + +Default packet destructor. + + + +@deprecated use NULL instead + + + +0 terminated ASS/SSA compatible event line. +The pressentation of this is unaffected by the other values in this +struct. + + + +data+linesize for the bitmap of this subtitle. +can be set for text/ass as well once they where rendered + + + +Formatted text, the ass field must be set by the decoder and is +authoritative. pict and text fields may contain approximations. + + + +Plain text, the text field must be set by the decoder and is +authoritative. ass and pict fields may contain approximations. + + + +four components are given, that's all. +the last component is alpha + + + + Size of HW accelerator private data. + + Private data is allocated with av_mallocz() before + AVCodecContext.get_buffer() and deallocated after + AVCodecContext.release_buffer(). + + + + Called at the end of each frame or field picture. + + The whole picture is parsed at this point and can now be sent + to the hardware accelerator. This function is mandatory. + + @param avctx the codec context + @return zero if successful, a negative value otherwise + + + + Callback for each slice. + + Meaningful slice information (codec specific) is guaranteed to + be parsed at this point. This function is mandatory. + + @param avctx the codec context + @param buf the slice data buffer base + @param buf_size the size of the slice in bytes + @return zero if successful, a negative value otherwise + + + + Called at the beginning of each frame or field picture. + + Meaningful frame information (codec specific) is guaranteed to + be parsed at this point. This function is mandatory. + + Note that buf can be NULL along with buf_size set to 0. + Otherwise, this means the whole frame is available at this point. + + @param avctx the codec context + @param buf the frame data buffer base + @param buf_size the size of the frame in bytes + @return zero if successful, a negative value otherwise + + + +Hardware accelerated codec capabilities. +see FF_HWACCEL_CODEC_CAP_* + + + +Name of the hardware accelerated codec. +The name is globally unique among encoders and among decoders (but an +encoder and a decoder can share the same name). + + + + Encode data to an AVPacket. + + @param avctx codec context + @param avpkt output AVPacket (may contain a user-provided buffer) + @param[in] frame AVFrame containing the raw data to be encoded + @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a + non-empty packet was returned in avpkt. + @return 0 on success, negative error code on failure + + + +Initialize codec static data, called from avcodec_register(). + + + +@} +Private codec-specific defaults. + + + + Copy necessary context variables from a previous thread context to the current one. + If not defined, the next thread will start automatically; otherwise, the codec + must call ff_thread_finish_setup(). + + dst and src will (rarely) point to the same context, in which case memcpy should be skipped. + + + +@name Frame-level threading support functions +@{ + +If defined, called on thread contexts when they are created. +If the codec allocates writable tables in init(), re-allocate them here. +priv_data will be set to a copy of the original. + + + +Descriptive name for the codec, meant to be more human readable than name. +You should use the NULL_IF_CONFIG_SMALL() macro to define it. + + + +Flush buffers. +Will be called when seeking + + + +Codec capabilities. +see CODEC_CAP_* + + + +Name of the codec implementation. +The name is globally unique among encoders and among decoders (but an +encoder and a decoder can share the same name). +This is the primary way to find a codec from the user perspective. + + + +AVCodec. + + + +AVProfile. + + + +Current statistics for PTS correction. +- decoding: maintained and used by libavcodec, not intended to be used by user apps +- encoding: unused + + + +Field order + * - encoding: set by libavcodec + * - decoding: Set by libavcodec + + + + Private context used for internal data. + + Unlike priv_data, this is not codec-specific. It is used in general + libavcodec functions. + + + +Error recognition; may misdetect some more or less valid parts as errors. +- encoding: unused +- decoding: Set by user. + + + +Type of service that the audio stream conveys. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +VBV delay coded in the last frame (in periods of a 27 MHz clock). +Used for compliant TS muxing. +- encoding: Set by libavcodec. +- decoding: unused. + + + +Set by the client if its custom get_buffer() callback can be called +from another thread, which allows faster multithreaded decoding. +draw_horiz_band() will be called from other threads regardless of this setting. +Ignored if the default get_buffer() is used. +- encoding: Set by user. +- decoding: Set by user. + + + +Which multithreading methods are in use by the codec. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + + Which multithreading methods to use. + Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, + so clients which cannot provide future frames should not use it. + + - encoding: Set by user, otherwise the default is used. + - decoding: Set by user, otherwise the default is used. + + + + Whether this is a copy of the context which had init() called on it. + This is used by multithreading - shared tables and picture pointers + should be freed from the original context only. + - encoding: Set by libavcodec. + - decoding: Set by libavcodec. + + @deprecated this field has been moved to an internal context + + + +Current packet as passed into the decoder, to avoid having +to pass the packet into every function. Currently only valid +inside lavc and get/release_buffer callbacks. +- decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts +- encoding: unused + + + +Header containing style information for text subtitles. +For SUBTITLE_ASS subtitle type, it should contain the whole ASS +[Script Info] and [V4+ Styles] section, plus the [Events] line and +the Format line following. It shouldn't include any Dialogue line. +- encoding: Set/allocated/freed by user (before avcodec_open2()) +- decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) + + + +Number of slices. +Indicates number of picture subdivisions. Used for parallelized +decoding. +- encoding: Set by user +- decoding: unused + + + +Number of passes to use for Cholesky factorization during LPC analysis +- encoding: Set by user +- decoding: unused + + + +Constant rate factor maximum +With CRF encoding mode and VBV restrictions enabled, prevents quality from being worse +than crf_max, even if doing so would violate VBV restrictions. +- encoding: Set by user. +- decoding: unused + + + +RC lookahead +Number of frames for frametype and ratecontrol lookahead +- encoding: Set by user +- decoding: unused + + + +PSY trellis +Strength of psychovisual optimization +- encoding: Set by user +- decoding: unused + + + +PSY RD +Strength of psychovisual optimization +- encoding: Set by user +- decoding: unused + + + +AQ strength +Reduces blocking and blurring in flat and textured areas. +- encoding: Set by user +- decoding: unused + + + +AQ mode +0: Disabled +1: Variance AQ (complexity mask) +2: Auto-variance AQ (experimental) +- encoding: Set by user +- decoding: unused + + + +explicit P-frame weighted prediction analysis method +0: off +1: fast blind weighting (one reference duplicate with -1 offset) +2: smart weighting (full fade detection analysis) +- encoding: Set by user. +- decoding: unused + + + +MPEG vs JPEG YUV range. +- encoding: Set by user +- decoding: Set by libavcodec + + + +YUV colorspace type. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Color Transfer Characteristic. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Chromaticity coordinates of the source primaries. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Hardware accelerator context. +For some hardware accelerators, a global context needs to be +provided by the user. In that case, this holds display-dependent +data FFmpeg cannot instantiate itself. Please refer to the +FFmpeg HW accelerator documentation to know how to fill this +is. e.g. for VA API, this is a struct vaapi_context. +- encoding: unused +- decoding: Set by user + + + + For some codecs, the time base is closer to the field rate than the frame rate. + Most notably, H.264 and MPEG-2 specify time_base as half of frame duration + if no telecine is used ... + + Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. + + + +Hardware accelerator in use +- encoding: unused. +- decoding: Set by libavcodec + + +AVHWAccel. + + + +Request decoder to use this channel layout if it can (0 for default) +- encoding: unused +- decoding: Set by user. + + + +Audio channel layout. +- encoding: set by user. +- decoding: set by user, may be overwritten by libavcodec. + + + +Bits per sample/pixel of internal libavcodec pixel/sample format. +- encoding: set by user. +- decoding: set by libavcodec. + + + +opaque 64bit number (generally a PTS) that will be reordered and +output in AVFrame.reordered_opaque +@deprecated in favor of pkt_pts +- encoding: unused +- decoding: Set by user. + + + +Percentage of dynamic range compression to be applied by the decoder. +The default value is 1.0, corresponding to full compression. +- encoding: unused +- decoding: Set by user. +@deprecated use AC3 decoder private option instead. + + + +Decoder should decode to this many channels if it can (0 for default) +- encoding: unused +- decoding: Set by user. +@deprecated Deprecated in favor of request_channel_layout. + + + +@} + +GOP timecode frame start number +- encoding: Set by user, in non drop frame format +- decoding: Set by libavcodec (timecode in the 25 bits format, -1 if unset) + + + +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +search method for selecting prediction order +- encoding: Set by user. +- decoding: unused + + + +@name FLAC options +@deprecated Use FLAC encoder private options instead. +@{ + +LPC coefficient precision - used by FLAC encoder +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +Adjust sensitivity of b_frame_strategy 1. +- encoding: Set by user. +- decoding: unused + + + + + Note: Value depends upon the compare function used for fullpel ME. + - encoding: Set by user. + - decoding: unused + + + +Multiplied by qscale for each frame and added to scene_change_score. +- encoding: Set by user. +- decoding: unused + + + +Audio cutoff bandwidth (0 means "automatic") +- encoding: Set by user. +- decoding: unused + + + +direct MV prediction mode - 0 (none), 1 (spatial), 2 (temporal), 3 (auto) +- encoding: Set by user. +- decoding: unused + + + +macroblock subpartition sizes to consider - p8x8, p4x4, b8x8, i8x8, i4x4 +- encoding: Set by user. +- decoding: unused + + + +in-loop deblocking filter beta parameter +beta is in the range -6...6 +- encoding: Set by user. +- decoding: unused + + + +in-loop deblocking filter alphac0 parameter +alpha is in the range -6...6 +- encoding: Set by user. +- decoding: unused + + + +Reduce fluctuations in qp (before curve compression). +- encoding: Set by user. +- decoding: unused + + + +trellis RD quantization +- encoding: Set by user. +- decoding: unused + + + +Influence how often B-frames are used. +- encoding: Set by user. +- decoding: unused + + + +chroma qp offset from luma +- encoding: Set by user. +- decoding: unused + + + +number of reference frames +- encoding: Set by user. +- decoding: Set by lavc. + + + +minimum GOP size +- encoding: Set by user. +- decoding: unused + + + +constant quantization parameter rate control method +- encoding: Set by user. +- decoding: unused + @deprecated use 'cqp' libx264 private option + + + +constant rate factor - quality-based VBR - values ~correspond to qps +- encoding: Set by user. +- decoding: unused + @deprecated use 'crf' libx264 private option + + + + + - encoding: Set by user. + - decoding: unused + + + + + - encoding: Set by user. + - decoding: unused + + + + + - encoding: unused + - decoding: Set by user. + + + + - encoding: unused + - decoding: Set by user. + + + + - encoding: unused + - decoding: Set by user. + + + + + - encoding: Set by user. + - decoding: unused + + + +maximum MB lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +minimum MB lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +Border processing masking, raises the quantizer for mbs on the borders +of the picture. +- encoding: Set by user. +- decoding: unused + + + +frame skip comparison function +- encoding: Set by user. +- decoding: unused + + + +frame skip exponent +- encoding: Set by user. +- decoding: unused + + + +frame skip factor +- encoding: Set by user. +- decoding: unused + + + +frame skip threshold +- encoding: Set by user. +- decoding: unused + + + +Bitstream width / height, may be different from width/height if lowres enabled. +- encoding: unused +- decoding: Set by user before init if known. Codec should override / dynamically change if needed. + + + +low resolution decoding, 1-> 1/2 size, 2->1/4 size +- encoding: unused +- decoding: Set by user. + + + +level +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +profile +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +Number of macroblock rows at the bottom which are skipped. +- encoding: unused +- decoding: Set by user. + + + +Number of macroblock rows at the top which are skipped. +- encoding: unused +- decoding: Set by user. + + + +noise vs. sse weight for the nsse comparsion function +- encoding: Set by user. +- decoding: unused + + + +precision of the intra DC coefficient - 8 +- encoding: Set by user. +- decoding: unused + + + +Macroblock threshold below which the user specified macroblock types will be used. +- encoding: Set by user. +- decoding: unused + + + + Motion estimation threshold below which no motion estimation is + performed, but instead the user specified motion vectors are used. + + - encoding: Set by user. + - decoding: unused + + + +thread opaque +Can be used by execute() to store some per AVCodecContext stuff. +- encoding: set by execute() +- decoding: set by execute() + + + +The codec may call this to execute several independent things. +It will return only after finishing all tasks. +The user may replace this with some multithreaded implementation, +the default implementation will execute the parts serially. +@param count the number of things to execute +- encoding: Set by libavcodec, user can override. +- decoding: Set by libavcodec, user can override. + + + +thread count +is used to decide how many independent tasks should be passed to execute() +- encoding: Set by user. +- decoding: Set by user. + + + +quantizer noise shaping +- encoding: Set by user. +- decoding: unused + + + +MP3 antialias algorithm, see FF_AA_* below. +- encoding: unused +- decoding: Set by user. + + + +Simulates errors in the bitstream to test error concealment. +- encoding: Set by user. +- decoding: unused + + + +CODEC_FLAG2_* +- encoding: Set by user. +- decoding: Set by user. + + + + + - encoding: Set by user. + - decoding: unused + + + +Number of bits which should be loaded into the rc buffer before decoding starts. +- encoding: Set by user. +- decoding: unused + + + +Called at the beginning of a frame to get cr buffer for it. +Buffer type (size, hints) must be the same. libavcodec won't check it. +libavcodec will pass previous buffer in pic, function should return +same buffer or new buffer with old frame "painted" into it. +If pic.data[0] == NULL must behave like get_buffer(). +if CODEC_CAP_DR1 is not set then reget_buffer() must call +avcodec_default_reget_buffer() instead of providing buffers allocated by +some other means. +- encoding: unused +- decoding: Set by libavcodec, user can override. + + + +noise reduction strength +- encoding: Set by user. +- decoding: unused + + + +palette control structure +- encoding: ??? (no palette-enabled encoder yet) +- decoding: Set by user. + + + AVPaletteControl + This structure defines a method for communicating palette changes + between and demuxer and a decoder. + + @deprecated Use AVPacket to send palette changes instead. + This is totally broken. + + + +maximum Lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +minimum Lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +scene change detection threshold +0 is default, larger means fewer detected scene changes. +- encoding: Set by user. +- decoding: unused + + + +custom inter quantization matrix +- encoding: Set by user, can be NULL. +- decoding: Set by libavcodec. + + + +custom intra quantization matrix +- encoding: Set by user, can be NULL. +- decoding: Set by libavcodec. + + + +macroblock decision mode +- encoding: Set by user. +- decoding: unused + + + +XVideo Motion Acceleration +- encoding: forbidden +- decoding: set by decoder + + + +slice flags +- encoding: unused +- decoding: Set by user. + + + +context model +- encoding: Set by user. +- decoding: unused + + + +coder type +- encoding: Set by user. +- decoding: unused + + + +Global quality for codecs which cannot change it per frame. +This should be proportional to MPEG-1/2/4 qscale. +- encoding: Set by user. +- decoding: unused + + + +internal_buffers +Don't touch, used by libavcodec default_get_buffer(). +@deprecated this field was moved to an internal context + + + +internal_buffer count +Don't touch, used by libavcodec default_get_buffer(). +@deprecated this field was moved to an internal context + + + +color table ID +- encoding: unused +- decoding: Which clrtable should be used for 8bit RGB images. + Tables have to be stored somewhere. FIXME + + + +inter quantizer bias +- encoding: Set by user. +- decoding: unused + + + +intra quantizer bias +- encoding: Set by user. +- decoding: unused + + + + maximum motion estimation search range in subpel units + If 0 then no limit. + + - encoding: Set by user. + - decoding: unused + + + + DTG active format information (additional aspect ratio + information only used in DVB MPEG-2 transport streams) + 0 if not set. + + - encoding: unused + - decoding: Set by decoder. + + + +subpel ME quality +- encoding: Set by user. +- decoding: unused + + + +motion estimation prepass comparison function +- encoding: Set by user. +- decoding: unused + + + +prepass for motion estimation +- encoding: Set by user. +- decoding: unused + + + +amount of previous MV predictors (2a+1 x 2a+1 square) +- encoding: Set by user. +- decoding: unused + + + +interlaced DCT comparison function +- encoding: Set by user. +- decoding: unused + + + +macroblock comparison function (not supported yet) +- encoding: Set by user. +- decoding: unused + + + +subpixel motion estimation comparison function +- encoding: Set by user. +- decoding: unused + + + +motion estimation comparison function +- encoding: Set by user. +- decoding: unused + + + +debug +- encoding: Set by user. +- decoding: Set by user. + + + +debug +- encoding: Set by user. +- decoding: Set by user. + + + +the picture in the bitstream +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +sample aspect ratio (0 if unknown) +That is the width of a pixel divided by the height of the pixel. +Numerator and denominator must be relatively prime and smaller than 256 for some video standards. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +prediction method (needed for huffyuv) +- encoding: Set by user. +- decoding: unused + + + +bits per sample/pixel from the demuxer (needed for huffyuv). +- encoding: Set by libavcodec. +- decoding: Set by user. + + + + dsp_mask could be add used to disable unwanted CPU features + CPU features (i.e. MMX, SSE. ...) + + With the FORCE flag you may instead enable given CPU features. + (Dangerous: Usable in case of misdetection, improper usage however will + result into program crash.) + + + +error concealment flags +- encoding: unused +- decoding: Set by user. + + + +slice offsets in the frame in bytes +- encoding: Set/allocated by libavcodec. +- decoding: Set/allocated by user (or NULL). + + + +slice count +- encoding: Set by libavcodec. +- decoding: Set by user (or 0). + + + +IDCT algorithm, see FF_IDCT_* below. +- encoding: Set by user. +- decoding: Set by user. + + + +darkness masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +p block masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +spatial complexity masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +temporary complexity masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +luminance masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +DCT algorithm, see FF_DCT_* below +- encoding: Set by user. +- decoding: unused + + + +initial complexity for pass1 ratecontrol +- encoding: Set by user. +- decoding: unused + + + +qscale offset between P and I-frames +- encoding: Set by user. +- decoding: unused + + + +decoder bitstream buffer size +- encoding: Set by user. +- decoding: unused + + + +minimum bitrate +- encoding: Set by user. +- decoding: unused + + + +maximum bitrate +- encoding: Set by user. +- decoding: unused + + + +rate control equation +- encoding: Set by user +- decoding: unused + + + +ratecontrol override, see RcOverride +- encoding: Allocated/set/freed by user. +- decoding: unused + + + +ratecontrol qmin qmax limiting method +0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax. +- encoding: Set by user. +- decoding: unused + + + +pass2 encoding statistics input buffer +Concatenated stuff from stats_out of pass1 should be placed here. +- encoding: Allocated/set/freed by user. +- decoding: unused + + + +pass1 encoding statistics output buffer +- encoding: Set by libavcodec. +- decoding: unused + + + +0-> h263 quant 1-> mpeg quant +- encoding: Set by user. +- decoding: unused + + + +If true, only parsing is done. The frame data is returned. +Only MPEG audio decoders support this now. +- encoding: unused +- decoding: Set by user + + + +number of bytes per packet if constant and known or 0 +Used by some WAV based audio codecs. + + + +Size of the frame reordering buffer in the decoder. +For MPEG-2 it is 1 IPB or 0 low delay IP. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +Called to release buffers which were allocated with get_buffer. +A released buffer can be reused in get_buffer(). +pic.data[*] must be set to NULL. +May be called from a different thread if frame multithreading is used, +but not by more than one thread at once, so does not need to be reentrant. +- encoding: unused +- decoding: Set by libavcodec, user can override. + + + + Called at the beginning of each frame to get a buffer for it. + + The function will set AVFrame.data[], AVFrame.linesize[]. + AVFrame.extended_data[] must also be set, but it should be the same as + AVFrame.data[] except for planar audio with more channels than can fit + in AVFrame.data[]. In that case, AVFrame.data[] shall still contain as + many data pointers as it can hold. + + if CODEC_CAP_DR1 is not set then get_buffer() must call + avcodec_default_get_buffer() instead of providing buffers allocated by + some other means. + + AVFrame.data[] should be 32- or 16-byte-aligned unless the CPU doesn't + need it. avcodec_default_get_buffer() aligns the output buffer properly, + but if get_buffer() is overridden then alignment considerations should + be taken into account. + + @see avcodec_default_get_buffer() + + Video: + + If pic.reference is set then the frame will be read later by libavcodec. + avcodec_align_dimensions2() should be used to find the required width and + height, as they normally need to be rounded up to the next multiple of 16. + + If frame multithreading is used and thread_safe_callbacks is set, + it may be called from a different thread, but not from more than one at + once. Does not need to be reentrant. + + @see release_buffer(), reget_buffer() + @see avcodec_align_dimensions2() + + Audio: + + Decoders request a buffer of a particular size by setting + AVFrame.nb_samples prior to calling get_buffer(). The decoder may, + however, utilize only part of the buffer by setting AVFrame.nb_samples + to a smaller value in the output frame. + + Decoders cannot use the buffer after returning from + avcodec_decode_audio4(), so they will not call release_buffer(), as it + is assumed to be released immediately upon return. + + As a convenience, av_samples_get_buffer_size() and + av_samples_fill_arrays() in libavutil may be used by custom get_buffer() + functions to find the required data size and to fill data pointers and + linesize. In AVFrame.linesize, only linesize[0] may be set for audio + since all planes must be the same size. + + @see av_samples_get_buffer_size(), av_samples_fill_arrays() + + - encoding: unused + - decoding: Set by libavcodec, user can override. + + + +Error recognition; higher values will detect more errors but may +misdetect some more or less valid parts as errors. +- encoding: unused +- decoding: Set by user. + + + +qscale offset between IP and B-frames +- encoding: Set by user. +- decoding: unused + + + +strictly follow the standard (MPEG4, ...). +- encoding: Set by user. +- decoding: Set by user. +Setting this to STRICT or higher means the encoder and decoder will +generally do stupid things, whereas setting it to unofficial or lower +will mean the encoder might produce output that is not supported by all +spec-compliant decoders. Decoders don't differentiate between normal, +unofficial and experimental (that is, they always try to decode things +when they can) unless they are explicitly asked to behave stupidly +(=strictly conform to the specs) + + + +chroma single coeff elimination threshold +- encoding: Set by user. +- decoding: unused + + + +luma single coefficient elimination threshold +- encoding: Set by user. +- decoding: unused + + + +Work around bugs in encoders which sometimes cannot be detected automatically. +- encoding: Set by user +- decoding: Set by user + + + +Private data of the user, can be used to carry app specific stuff. +- encoding: Set by user. +- decoding: Set by user. + + + +number of bits used for the previously encoded frame +- encoding: Set by libavcodec. +- decoding: unused + + + +obsolete FIXME remove + + +maximum number of B-frames between non-B-frames +Note: The output will be delayed by max_b_frames+1 relative to the input. +- encoding: Set by user. +- decoding: unused + + + +maximum quantizer difference between frames +- encoding: Set by user. +- decoding: unused + + + +maximum quantizer +- encoding: Set by user. +- decoding: unused + + + +minimum quantizer +- encoding: Set by user. +- decoding: unused + + + +Encoding: Number of frames delay there will be from the encoder input to + the decoder output. (we assume the decoder matches the spec) +Decoding: Number of frames delay in addition to what a standard decoder + as specified in the spec would produce. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +Samples per packet, initialized when calling 'init'. + + + +If non NULL, 'draw_horiz_band' is called by the libavcodec +decoder to draw a horizontal band. It improves cache usage. Not +all codecs can do that. You must check the codec capabilities +beforehand. +When multithreading is used, it may be called from multiple threads +at the same time; threads might draw different parts of the same AVFrame, +or multiple AVFrames, and there is no guarantee that slices will be drawn +in order. +The function is also used by hardware acceleration APIs. +It is called at least once during frame decoding to pass +the data needed for hardware render. +In that mode instead of pixel data, AVFrame points to +a structure specific to the acceleration API. The application +reads the structure and can change some fields to indicate progress +or mark state. +- encoding: unused +- decoding: Set by user. +@param height the height of the slice +@param y the y position of the slice +@param type 1->top field, 2->bottom field, 3->frame +@param offset offset into the AVFrame.data from which the slice should be read + + + +Pixel format, see PIX_FMT_xxx. +May be set by the demuxer if known from headers. +May be overriden by the decoder if it knows better. +- encoding: Set by user. +- decoding: Set by user if known, overridden by libavcodec if known + + +callback to negotiate the pixelFormat +@param fmt is the list of formats which are supported by the codec, +it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. +The first is always the native one. +@return the chosen format +- encoding: unused +- decoding: Set by user, if not set the native format will be chosen. + + + Supported pixel format. + + Only hardware accelerated formats are supported here. + + + +the number of pictures in a group of pictures, or 0 for intra_only +- encoding: Set by user. +- decoding: unused + + + +picture width / height. +- encoding: MUST be set by user. +- decoding: Set by libavcodec. +Note: For compatibility it is possible to set this instead of +coded_width/height before decoding. + + + +This is the fundamental unit of time (in seconds) in terms +of which frame timestamps are represented. For fixed-fps content, +timebase should be 1/framerate and timestamp increments should be +identically 1. +- encoding: MUST be set by user. +- decoding: Set by libavcodec. + + + +some codecs need / can use extradata like Huffman tables. +mjpeg: Huffman tables +rv10: additional flags +mpeg4: global headers (they can be in the bitstream or here) +The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger +than extradata_size to avoid prolems if it is read with the bitstream reader. +The bytewise contents of extradata must not depend on the architecture or CPU endianness. +- encoding: Set/allocated/freed by libavcodec. +- decoding: Set/allocated/freed by user. + + + +Motion estimation algorithm used for video coding. +1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), +8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] +- encoding: MUST be set by user. +- decoding: unused + + + +Some codecs need additional format info. It is stored here. +If any muxer uses this then ALL demuxers/parsers AND encoders for the +specific codec MUST set it correctly otherwise stream copy breaks. +In general use of this field by muxers is not recommended. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. (FIXME: Is this OK?) + + + +CODEC_FLAG_*. +- encoding: Set by user. +- decoding: Set by user. + + + +number of bits the bitstream is allowed to diverge from the reference. + the reference can be CBR (for CBR pass1) or VBR (for pass2) +- encoding: Set by user; unused for constant quantizer encoding. +- decoding: unused + + + +the average bitrate +- encoding: Set by user; unused for constant quantizer encoding. +- decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream. + + + +information on struct for av_log +- set by avcodec_alloc_context3 + + + +reordered pos from the last AVPacket that has been input into the decoder +Code outside libavcodec should access this field using: + av_opt_ptr(avcodec_get_frame_class(), frame, "pkt_pos"); +- encoding: unused +- decoding: Read by user. + + + +frame timestamp estimated using various heuristics, in stream time base +Code outside libavcodec should access this field using: + av_opt_ptr(avcodec_get_frame_class(), frame, "best_effort_timestamp"); +- encoding: unused +- decoding: set by libavcodec, read by user. + + + +format of the frame, -1 if unknown or unset +Values correspond to enum PixelFormat for video frames, +enum AVSampleFormat for audio) +- encoding: unused +- decoding: Read by user. + + + +width and height of the video frame +- encoding: unused +- decoding: Read by user. + + + +sample aspect ratio for the video frame, 0/1 if unknown\unspecified +- encoding: unused +- decoding: Read by user. + + + + pointers to the data planes/channels. + + For video, this should simply point to data[]. + + For planar audio, each channel has a separate data pointer, and + linesize[0] contains the size of each channel buffer. + For packed audio, there is just one data pointer, and linesize[0] + contains the total size of the buffer for all channels. + + Note: Both data and extended_data will always be set by get_buffer(), + but for planar audio with more channels that can fit in data, + extended_data must be used by the decoder in order to access all + channels. + + encoding: unused + decoding: set by AVCodecContext.get_buffer() + + + +number of audio samples (per channel) described by this frame +- encoding: unused +- decoding: Set by libavcodec + + + +used by multithreading to store frame-specific info +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +the AVCodecContext which ff_thread_get_buffer() was last called on +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + +main external API structure. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +Please use AVOptions (av_opt* / av_set/get*()) to access these fields from user +applications. +sizeof(AVCodecContext) must not be used outside libav*. + + + +dts from the last AVPacket that has been input into the decoder +- encoding: unused +- decoding: Read by user. + + + +reordered pts from the last AVPacket that has been input into the decoder +- encoding: unused +- decoding: Read by user. + + + +hardware accelerator private data (FFmpeg-allocated) +- encoding: unused +- decoding: Set by libavcodec + + + +reordered opaque 64bit (generally an integer or a double precision float +PTS but can be anything). +The user sets AVCodecContext.reordered_opaque to represent the input at +that time, +the decoder reorders values as needed and sets AVFrame.reordered_opaque +to exactly one of the values provided by the user through AVCodecContext.reordered_opaque +@deprecated in favor of pkt_pts +- encoding: unused +- decoding: Read by user. + + + +motion reference frame index +the order in which these are stored can depend on the codec. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +DCT coefficients +- encoding: unused +- decoding: Set by libavcodec. + + + +codec suggestion on buffer type if != 0 +- encoding: unused +- decoding: Set by libavcodec. (before get_buffer() call)). + + + +Tell user application that palette has changed from previous frame. +- encoding: ??? (no palette-enabled encoder yet) +- decoding: Set by libavcodec. (default 0). + + + +Pan scan. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +If the content is interlaced, is top field displayed first. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +The content of the picture is interlaced. +- encoding: Set by user. +- decoding: Set by libavcodec. (default 0) + + + +When decoding, this signals how much the picture must be delayed. +extra_delay = repeat_pict / (2*fps) +- encoding: unused +- decoding: Set by libavcodec. + + + +for some private data of the user +- encoding: unused +- decoding: Set by user. + + + +log2 of the size of the block which a single vector in motion_val represents: +(4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2) +- encoding: unused +- decoding: Set by libavcodec. + + + +macroblock type table +mb_type_base + mb_width + 2 +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +mbskip_table[mb]>=1 if MB didn't change +stride= mb_width = (width+15)>>4 +- encoding: unused +- decoding: Set by libavcodec. + + + +QP store stride +- encoding: unused +- decoding: Set by libavcodec. + + + +QP table +- encoding: unused +- decoding: Set by libavcodec. + + + +is this picture used as reference +The values for this are the same as the MpegEncContext.picture_structure +variable, that is 1->top field, 2->bottom field, 3->frame/both fields. +Set to 4 for delayed, non-reference frames. +- encoding: unused +- decoding: Set by libavcodec. (before get_buffer() call)). + + + +@deprecated unused + + + +quality (between 1 (good) and FF_LAMBDA_MAX (bad)) +- encoding: Set by libavcodec. for coded_picture (and set by user for input). +- decoding: Set by libavcodec. + + + +picture number in display order +- encoding: set by +- decoding: Set by libavcodec. + + + +picture number in bitstream order +- encoding: set by +- decoding: Set by libavcodec. + + + +presentation timestamp in time_base units (time when frame should be shown to user) +If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed. +- encoding: MUST be set by user. +- decoding: Set by libavcodec. + + + +1 -> keyframe, 0-> not +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer. +This isn't used by libavcodec unless the default get/release_buffer() is used. +- encoding: +- decoding: + + + + Size, in bytes, of the data for each picture/channel plane. + + For audio, only linesize[0] may be set. For planar audio, each channel + plane must be the same size. + + - encoding: Set by user (video only) + - decoding: set by AVCodecContext.get_buffer() + + + +pointer to the picture/channel planes. +This might be different from the first allocated byte +- encoding: Set by user +- decoding: set by AVCodecContext.get_buffer() + + + +Audio Video Frame. +New fields can be added to the end of AVFRAME with minor version +bumps. Similarly fields that are marked as to be only accessed by +av_opt_ptr() can be reordered. This allows 2 forks to add fields +without breaking compatibility with each other. +Removal, reordering and changes in the remaining cases require +a major version bump. +sizeof(AVFrame) must not be used outside libavcodec. + + + + Time difference in AVStream->time_base units from the pts of this + packet to the point at which the output from the decoder has converged + independent from the availability of previous frames. That is, the + frames are virtually identical no matter if decoding started from + the very first frame or from this keyframe. + Is AV_NOPTS_VALUE if unknown. + This field is not the display duration of the current packet. + This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + set. + + The purpose of this field is to allow seeking in streams that have no + keyframes in the conventional sense. It corresponds to the + recovery point SEI in H.264 and match_time_delta in NUT. It is also + essential for some types of subtitle streams to ensure that all + subtitles are correctly displayed after seeking. + + + +Duration of this packet in AVStream->time_base units, 0 if unknown. +Equals next_pts - this_pts in presentation order. + + + +A combination of AV_PKT_FLAG values + + + +Decompression timestamp in AVStream->time_base units; the time at which +the packet is decompressed. +Can be AV_NOPTS_VALUE if it is not stored in the file. + + + +Presentation timestamp in AVStream->time_base units; the time at which +the decompressed packet will be presented to the user. +Can be AV_NOPTS_VALUE if it is not stored in the file. +pts MUST be larger or equal to dts as presentation cannot happen before +decompression, unless one wants to view hex dumps. Some formats misuse +the terms dts and pts/cts to mean something different. Such timestamps +must be converted to true pts/dts before they are stored in AVPacket. + + + +position of the top left corner in 1/16 pel for up to 3 fields/frames +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +width and height in 1/16 pel +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +id +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +The parent program guarantees that the input for B-frames containing +streams is not written to for at least s->max_b_frames+1 frames, if +this is not set the input will be copied. + +@defgroup deprecated_flags Deprecated codec flags +Use corresponding private codec options instead. +@{ + +@} + +Codec uses get_buffer() for allocating buffers and supports custom allocators. +If not set, it might not use get_buffer() at all or use operations that +assume the buffer was allocated by avcodec_default_get_buffer. + + Encoder or decoder requires flushing with NULL input at the end in order to + give the complete and correct output. + + NOTE: If this flag is not set, the codec is guaranteed to never be fed with + with NULL data. The user can still send NULL data to the public encode + or decode function, but libavcodec will not pass it along to the codec + unless this flag is set. + + Decoders: + The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, + avpkt->size=0 at the end to get the delayed data until the decoder no longer + returns frames. + + Encoders: + The encoder needs to be fed with NULL data at the end of encoding until the + encoder no longer returns data. + + NOTE: For encoders implementing the AVCodec.encode2() function, setting this + flag also means that the encoder must set the pts and duration for + each output packet. If this flag is not set, the pts and duration will + be determined by libavcodec from the input frame. + +Codec can be fed a final frame with a smaller size. +This can be used to prevent truncation of the last audio samples. + +Codec can export data for HW decoding (VDPAU). + +Codec can output multiple frames per AVPacket +Normally demuxers return one frame at a time, demuxers which do not do +are connected to a parser to split what they return into proper frames. +This flag is reserved to the very rare category of codecs which have a +bitstream that cannot be split into frames without timeconsuming +operations like full decoding. Demuxers carring such bitstreams thus +may return multiple frames in a packet. This has many disadvantages like +prohibiting stream copy in many cases thus it should only be considered +as a last resort. + +Codec is experimental and is thus avoided in favor of non experimental +encoders + +Codec should fill in channel configuration and samplerate instead of container + +Codec is able to deal with negative linesizes + +Codec supports frame-level multithreading. + +Codec supports slice-based (or partition-based) multithreading. + +Codec supports changed parameters at any point. + +Codec supports avctx->thread_count == 0 (auto). + +Audio encoder supports receiving a different number of samples in each call. + +Codec is lossless. + +Pan Scan area. +This specifies the area which should be displayed. +Note there may be multiple such areas for one frame. + + + +LPC analysis type + + +Determine which LPC analysis algorithm to use. +- encoding: Set by user +- decoding: unused + + + +X X 3 4 X X are luma samples, + 1 2 1-6 are possible chroma positions +X X 5 6 X 0 is undefined/unknown position + + +This defines the location of chroma samples. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Return default channel layout for a given number of channels. + + + +Return the number of channels in the channel layout. + + + +@file +audio conversion routines + +@addtogroup lavu_audio +@{ + +@defgroup channel_masks Audio channel masks +@{ + +Channel mask value used for AVCodecContext.request_channel_layout + to indicate that the user requests the channel order of the decoder output + to be the native codec channel order. +@} +@defgroup channel_mask_c Audio channel convenience macros +@{ + +@} + + * Return a channel layout id that matches name, 0 if no match. + * name can be one or several of the following notations, + * separated by '+' or '|': + * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0, + * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix); + * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC, + * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR); + * - a number of channels, in decimal, optionnally followed by 'c', yielding + * the default channel layout for that number of channels (@see + * av_get_default_channel_layout); + * - a channel layout mask, in hexadecimal starting with "0x" (see the + * AV_CH_* macros). + + Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7" + + + +@} + +Those FF_API_* defines are not part of public API. +They may change, break or disappear at any time. + + @defgroup libavc Encoding/Decoding Library + @{ + + @defgroup lavc_decoding Decoding + @{ + @} + + @defgroup lavc_encoding Encoding + @{ + @} + + @defgroup lavc_codec Codecs + @{ + @defgroup lavc_codec_native Native Codecs + @{ + @} + @defgroup lavc_codec_wrappers External library wrappers + @{ + @} + @defgroup lavc_codec_hwaccel Hardware Accelerators bridge + @{ + @} + @} + @defgroup lavc_internal Internal + @{ + @} + @} + + + Identify the syntax and semantics of the bitstream. + The principle is roughly: + Two decoders with the same ID can decode the same streams. + Two encoders with the same ID can encode compatible streams. + There may be slight deviations from the principle due to implementation + details. + + If you add a codec ID to this list, add it so that + 1. no value of a existing codec ID changes (that would break ABI), + 2. Give it a value which when taken as ASCII is recognized uniquely by a human as this specific codec. + This ensures that 2 forks can independantly add CodecIDs without producing conflicts. + + + Codec implemented by the hardware accelerator. + + See CODEC_ID_xxx + + +Forced video codec_id. +Demuxing: Set by user. + + +Forced audio codec_id. +Demuxing: Set by user. + + +Forced subtitle codec_id. +Demuxing: Set by user. + + +@} + + +Guess the codec ID based upon muxer and filename. + + + Get the CodecID for the given codec tag tag. + If no codec id is found returns CODEC_ID_NONE. + + @param tags list of supported codec_id-codec_tag pairs, as stored + in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + + + +Free all the memory allocated for an AVDictionary struct +and all keys and values. + + + +Copy entries from one AVDictionary struct into another. +@param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + this function will allocate a struct for you and put it in *dst +@param src pointer to source AVDictionary struct +@param flags flags to use when setting entries in *dst +@note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + + + + Get a dictionary entry with matching key. + + @param prev Set to the previous matching element to find the next. + If set to NULL the first matching element is returned. + @param flags Allows case as well as suffix-insensitive comparisons. + @return Found entry or NULL, changing key or value leads to undefined behavior. + + + +Disables cpu detection and forces the specified flags. + + + +Return the flags which specify extensions supported by the CPU. + + + + Fill channel data pointers and linesize for samples with sample + format sample_fmt. + + The pointers array is filled with the pointers to the samples data: + for planar, set the start point of each channel's data within the buffer, + for packed, set the start point of the entire buffer only. + + The linesize array is filled with the aligned size of each channel's data + buffer for planar layout, or the aligned size of the buffer for all channels + for packed layout. + + @param[out] audio_data array to be filled with the pointer for each channel + @param[out] linesize calculated linesize + @param buf the pointer to a buffer containing the samples + @param nb_channels the number of channels + @param nb_samples the number of samples in a single channel + @param sample_fmt the sample format + @param align buffer size alignment (1 = no alignment required) + @return 0 on success or a negative error code on failure + + + + Get the required buffer size for the given audio parameters. + + @param[out] linesize calculated linesize, may be NULL + @param nb_channels the number of channels + @param nb_samples the number of samples in a single channel + @param sample_fmt the sample format + @return required buffer size, or negative error code on failure + + + + Check if the sample format is planar. + + @param sample_fmt the sample format to inspect + @return 1 if the sample format is planar, 0 if it is interleaved + + + + Return number of bytes per sample. + + @param sample_fmt the sample format + @return number of bytes per sample or zero if unknown for the given + sample format + + + +@deprecated Use av_get_bytes_per_sample() instead. + + + + Generate a string corresponding to the sample format with + sample_fmt, or a header if sample_fmt is negative. + + @param buf the buffer where to write the string + @param buf_size the size of buf + @param sample_fmt the number of the sample format to print the + corresponding info string, or a negative value to print the + corresponding header. + @return the pointer to the filled buffer or NULL if sample_fmt is + unknown or in case of other errors + + + +Return the name of sample_fmt, or NULL if sample_fmt is not +recognized. + + + +@} +@} + +all in native-endian format + + +Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE +on error. + + +audio sample format +- encoding: Set by user. +- decoding: Set by libavcodec. + + +desired sample format +- encoding: Not used. +- decoding: Set by user. +Decoder will decode to this format if it can. + + + +Return x default pointer in case p is NULL. + + + +av_dlog macros +Useful to print debug messages that shouldn't get compiled in normally. + +Skip repeated messages, this requires the user app to use av_log() instead of +(f)printf as the 2 would otherwise interfere and lead to +"Last message repeated x times" messages below (f)printf messages with some +bad luck. +Also to receive the last, "last repeated" line if any, the user app must +call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end + + + +Format a line of log the same way as the default callback. +@param line buffer to receive the formated line +@param line_size size of the buffer +@param print_prefix used to store whether the prefix must be printed; + must point to a persistent integer initially set to 1 + + + +Something went really wrong and we will crash now. + +Something went wrong and recovery is not possible. +For example, no header was found for a format which depends +on headers or an illegal combination of parameters is used. + +Something went wrong and cannot losslessly be recovered. +However, not all future data is affected. + +Something somehow does not look correct. This may or may not +lead to problems. An example would be the use of '-vstrict -2'. + +Stuff which is only useful for libav* developers. + + Send the specified message to the log if the level is less than or equal + to the current av_log_level. By default, all logging messages are sent to + stderr. This behavior can be altered by setting a different av_vlog callback + function. + + @param avcl A pointer to an arbitrary struct of which the first field is a + pointer to an AVClass struct. + @param level The importance level of the message, lower values signifying + higher importance. + @param fmt The format string (printf-compatible) that specifies how + subsequent arguments are converted to output. + @see av_vlog + + + +Return next AVOptions-enabled child or NULL + + + +Offset in the structure where a pointer to the parent context for loging is stored. +for example a decoder that uses eval.c could pass its AVCodecContext to eval as such +parent context. And a av_log() implementation could then display the parent context +can be NULL of course + + + +Offset in the structure where log_level_offset is stored. +0 means there is no such variable + + + +LIBAVUTIL_VERSION with which this structure was created. +This is used to allow fields to be added without requiring major +version bumps everywhere. + + + + a pointer to the first option specified in the class if any or NULL + + @see av_set_default_options() + + + +A pointer to a function which returns the name of a context +instance ctx associated with the class. + + + +The name of the class; usually it is the same name as the +context structure type to which the AVClass is associated. + + + +Describe the class of an AVClass context structure. That is an +arbitrary struct of which the first field is a pointer to an +AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). + + + Return an AVClass corresponding to next potential + AVOptions-enabled child. + + The difference between child_next and this is that + child_next iterates over _already existing_ objects, while + child_class_next iterates over _all possible_ children. + + + +@} + + + + Compare 2 integers modulo mod. + That is we compare integers a and b for which only the least + significant log2(mod) bits are known. + + @param mod must be a power of 2 + @return a negative value if a is smaller than b + a positive value if a is greater than b + 0 if a equals b + + + +Compare 2 timestamps each in its own timebases. +The result of the function is undefined if one of the timestamps +is outside the int64_t range when represented in the others timebase. +@return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position + + + +Rescale a 64-bit integer by 2 rational numbers. + + + +Rescale a 64-bit integer with specified rounding. +A simple a*b/c isn't possible as it can overflow. + + + +Rescale a 64-bit integer with rounding to nearest. +A simple a*b/c isn't possible as it can overflow. + + + +@} + +@addtogroup lavu_math +@{ + + + +Find the nearest value in q_list to q. +@param q_list an array of rationals terminated by {0, 0} +@return the index of the nearest value found in the array + + + +@return 1 if q1 is nearer to q than q2, -1 if q2 is nearer +than q1, 0 if they have the same distance. + + + + Convert a double precision floating point number to a rational. + inf is expressed as {1,0} or {-1,0} depending on the sign. + + @param d double to convert + @param max the maximum allowed numerator and denominator + @return (AVRational) d + + + +Subtract one rational from another. +@param b first rational +@param c second rational +@return b-c + + + +Add two rationals. +@param b first rational +@param c second rational +@return b+c + + + +Divide one rational by another. +@param b first rational +@param c second rational +@return b/c + + + +Multiply two rationals. +@param b first rational +@param c second rational +@return b*c + + + +Convert rational to double. +@param a rational to convert +@return (double) a + + + +Set the maximum size that may me allocated in one block. + + + +Multiply two size_t values checking for overflow. +@return 0 if success, AVERROR(EINVAL) if overflow. + + + + Add an element to a dynamic array. + + @param tab_ptr Pointer to the array. + @param nb_ptr Pointer to the number of elements in the array. + @param elem Element to be added. + + + +Free a memory block which has been allocated with av_malloc(z)() or +av_realloc() and set the pointer pointing to it to NULL. +@param ptr Pointer to the pointer to the memory block which should +be freed. +@see av_free() + + + +Duplicate the string s. +@param s string to be duplicated +@return Pointer to a newly allocated string containing a +copy of s or NULL if the string cannot be allocated. + + + +Allocate a block of nmemb * size bytes with alignment suitable for all +memory accesses (including vectors if available on the CPU) and +zero all the bytes of the block. +The allocation will fail if nmemb * size is greater than or equal +to INT_MAX. +@param nmemb +@param size +@return Pointer to the allocated block, NULL if it cannot be allocated. + + + +Allocate a block of size bytes with alignment suitable for all +memory accesses (including vectors if available on the CPU) and +zero all the bytes of the block. +@param size Size in bytes for the memory block to be allocated. +@return Pointer to the allocated block, NULL if it cannot be allocated. +@see av_malloc() + + + +Free a memory block which has been allocated with av_malloc(z)() or +av_realloc(). +@param ptr Pointer to the memory block which should be freed. +@note ptr = NULL is explicitly allowed. +@note It is recommended that you use av_freep() instead. +@see av_freep() + + + +Allocate or reallocate a block of memory. +This function does the same thing as av_realloc, except: +- It takes two arguments and checks the result of the multiplication for + integer overflow. +- It frees the input block in case of failure, thus avoiding the memory + leak with the classic "buf = realloc(buf); if (!buf) return -1;". + + + +Allocate or reallocate a block of memory. +If ptr is NULL and size > 0, allocate a new block. If +size is zero, free the memory block pointed to by ptr. +@param ptr Pointer to a memory block already allocated with +av_malloc(z)() or av_realloc() or NULL. +@param size Size in bytes for the memory block to be allocated or +reallocated. +@return Pointer to a newly reallocated block or NULL if the block +cannot be reallocated or the function is used to free the memory block. +@see av_fast_realloc() + + + +@} + +@addtogroup lavu_mem +@{ + +Allocate a block of size bytes with alignment suitable for all +memory accesses (including vectors if available on the CPU). +@param size Size in bytes for the memory block to be allocated. +@return Pointer to the allocated block, NULL if the block cannot +be allocated. +@see av_mallocz() + + + + Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. + + @param val Output value, must be an lvalue of type uint32_t. + @param GET_BYTE Expression reading one byte from the input. + Evaluated up to 7 times (4 for the currently + assigned Unicode range). With a memory buffer + input, this could be *ptr++. + @param ERROR Expression to be evaluated on invalid input, + typically a goto statement. + + Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. + + @param val Output value, must be an lvalue of type uint32_t. + @param GET_16BIT Expression returning two bytes of UTF-16 data converted + to native byte order. Evaluated one or two times. + @param ERROR Expression to be evaluated on invalid input, + typically a goto statement. + +@def PUT_UTF8(val, tmp, PUT_BYTE) +Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). +@param val is an input-only argument and should be of type uint32_t. It holds +a UCS-4 encoded Unicode character that is to be converted to UTF-8. If +val is given as a function it is executed only once. +@param tmp is a temporary variable and should be of type uint8_t. It +represents an intermediate value during conversion that is to be +output by PUT_BYTE. +@param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. +It could be a function or a statement, and uses tmp as the input byte. +For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be +executed up to 4 times for values in the valid UTF-8 range and up to +7 times in the general case, depending on the length of the converted +Unicode character. + +@def PUT_UTF16(val, tmp, PUT_16BIT) +Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). +@param val is an input-only argument and should be of type uint32_t. It holds +a UCS-4 encoded Unicode character that is to be converted to UTF-16. If +val is given as a function it is executed only once. +@param tmp is a temporary variable and should be of type uint16_t. It +represents an intermediate value during conversion that is to be +output by PUT_16BIT. +@param PUT_16BIT writes the converted UTF-16 data to any proper destination +in desired endianness. It could be a function or a statement, and uses tmp +as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" +PUT_BYTE will be executed 1 or 2 times depending on input character. + +@file +memory handling functions + +@file +error code definitions + + @addtogroup lavu_error + + @{ + +This is semantically identical to AVERROR_BUG +it has been introduced in Libav after our AVERROR_BUG and with a modified value. + + Put a description of the AVERROR code errnum in errbuf. + In case of failure the global variable errno is set to indicate the + error. Even in case of failure av_strerror() will print a generic + error message indicating the errnum provided to errbuf. + + @param errnum error code to describe + @param errbuf buffer to which description is written + @param errbuf_size the size in bytes of errbuf + @return 0 on success, a negative value if a description for errnum + cannot be found + + + +Count number of bits set to one in x +@param x value to count bits of +@return the number of bits set to one in x + + + +Count number of bits set to one in x +@param x value to count bits of +@return the number of bits set to one in x + + + +Compute ceil(log2(x)). + * @param x value used to compute ceil(log2(x)) + * @return computed ceiling of log2(x) + + + +Clip a float value into the amin-amax range. +@param a value to clip +@param amin minimum value of the clip range +@param amax maximum value of the clip range +@return clipped value + + + +Clip a signed integer to an unsigned power of two range. +@param a value to clip +@param p bit position to clip at +@return clipped value + + + +Clip a signed 64-bit integer value into the -2147483648,2147483647 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the -32768,32767 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the 0-65535 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the -128,127 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the 0-255 range. +@param a value to clip +@return clipped value + + + +@file +common internal and external API header + +Clip a signed integer value into the amin-amax range. +@param a value to clip +@param amin minimum value of the clip range +@param amax maximum value of the clip range +@return clipped value + + + +@file +Macro definitions for various function/variable attributes + +Disable warnings about deprecated features +This is useful for sections of code kept for backward compatibility and +scheduled for removal. + +Mark a variable as used and prevent the compiler from optimizing it +away. This is useful for variables accessed only from inline +assembler without the compiler being aware. + + + +@} + +@file +common internal and external API header + + + + Return a single letter to describe the given picture type + pict_type. + + @param[in] pict_type the picture type @return a single character + representing the picture type, '?' if pict_type is unknown + + + + @defgroup lavu_const Constants + @{ + + @defgroup lavu_enc Encoding specific + + @note those definition should move to avcodec + @{ + + @} + @defgroup lavu_time Timestamp specific + + FFmpeg internal timebase and timestamp definitions + + @{ + + @brief Undefined timestamp value + + Usually reported by demuxer that work on containers that do not provide + either pts or dts. + +Internal time base represented as integer + +Internal time base represented as fractional value + + @} + @} + @defgroup lavu_picture Image related + + AVPicture types, pixel formats and basic image planes manipulation. + + @{ + + +Picture type of the frame, see ?_TYPE below. +- encoding: Set by libavcodec. for coded_picture (and set by user for input). +- decoding: Set by libavcodec. + + + +Return a string describing the media_type enum, NULL if media_type +is unknown. + + + +@} + +@addtogroup lavu_media Media Type +@brief Media Type + + + Type of codec implemented by the hardware accelerator. + + See AVMEDIA_TYPE_xxx + + +Get the type of the given codec. + + + +Return the libavutil license. + + + +Return the libavutil build-time configuration. + + + +@file +external API header + + @mainpage + + @section libav_intro Introduction + + This document describe the usage of the different libraries + provided by FFmpeg. + + @li @ref libavc "libavcodec" encoding/decoding library + @li @subpage libavfilter graph based frame editing library + @li @ref libavf "libavformat" I/O and muxing/demuxing library + @li @ref lavd "libavdevice" special devices muxing/demuxing library + @li @ref lavu "libavutil" common utility library + @li @subpage libpostproc post processing library + @li @subpage libswscale color conversion and scaling library + + + @defgroup lavu Common utility functions + + @brief + libavutil contains the code shared across all the other FFmpeg + libraries + + @note In order to use the functions provided by avutil you must include + the specific header. + + @{ + + @defgroup lavu_crypto Crypto and Hashing + + @{ + @} + + @defgroup lavu_math Maths + @{ + + @} + + @defgroup lavu_string String Manipulation + + @{ + + @} + + @defgroup lavu_mem Memory Management + + @{ + + @} + + @defgroup lavu_data Data Structures + @{ + + @} + + @defgroup lavu_audio Audio related + + @{ + + @} + + @defgroup lavu_error Error Codes + + @{ + + @} + + @defgroup lavu_misc Other + + @{ + + @defgroup lavu_internal Internal + + Not exported functions, for internal usage only + + @{ + + @} + + @defgroup preproc_misc Preprocessor String Macros + + String manipulation macros + + @{ + +@} + + @defgroup version_utils Library Version Macros + + Useful to check and match library version in order to maintain + backward compatibility. + + @{ + + @} + + @defgroup lavu_ver Version and Build diagnostics + + Macros and function useful to check at compiletime and at runtime + which version of libavutil is in use. + + @{ + + @} + + @defgroup depr_guards Deprecation guards + Those FF_API_* defines are not part of public API. + They may change, break or disappear at any time. + + They are used mostly internally to mark code that will be removed + on the next major version. + + @{ + +@} + +@addtogroup lavu_ver +@{ + +Return the LIBAVUTIL_VERSION_INT constant. + + + + +Close currently opened video file if any. + + + + +Read next video frame of the currently opened video file. + + Returns next video frame of the opened file or if end of +file was reached. The returned video frame has 24 bpp color format. + Thrown if no video file was open. + A error occurred while reading next video frame. See exception message. + + + +Open video file with the specified name. + + Video file name to open. + Cannot open video file with the specified name. + A error occurred while opening the video file. See exception message. + + + +Disposes the object and frees its resources. + + + + +Initializes a new instance of the class. + + + + +Object's finalizer. + + + + +The property specifies if a video file is opened or not by this instance of the class. + + + + +Name of codec used for encoding the opened video file. + + Thrown if no video file was open. + + + +Number of video frames in the opened video file. + + + + + Warning: some video file formats may report different value +from the actual number of video frames in the file (subject to fix/investigate). + + + Thrown if no video file was open. + + + +Frame rate of the opened video file. + + Thrown if no video file was open. + + + +Frame height of the opened video file. + + Thrown if no video file was open. + + + +Frame width of the opened video file. + + Thrown if no video file was open. + + + +Class for reading video files utilizing FFmpeg library. + + + The class allows to read video files using FFmpeg library. + + Make sure you have FFmpeg binaries (DLLs) in the output folder of your application in order +to use this class successfully. FFmpeg binaries can be found in Externals folder provided with AForge.NET +framework's distribution. + + Sample usage: + +// create instance of video reader +VideoFileReader reader = new VideoFileReader( ); +// open video file +reader.Open( "test.avi" ); +// check some of its attributes +Console.WriteLine( "width: " + reader.Width ); +Console.WriteLine( "height: " + reader.Height ); +Console.WriteLine( "fps: " + reader.FrameRate ); +Console.WriteLine( "codec: " + reader.CodecName ); +// read 100 video frames out of it +for ( int i = 0; i < 100; i++ ) +{ + Bitmap videoFrame = reader.ReadVideoFrame( ); + // process the frame somehow + // ... + + // dispose the frame when it is no longer required + videoFrame.Dispose( ); +} +reader.Close( ); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net45/Accord.Video.FFMPEG.dll b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net45/Accord.Video.FFMPEG.dll new file mode 100644 index 0000000000..765edf987 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net45/Accord.Video.FFMPEG.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net45/Accord.Video.FFMPEG.xml b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net45/Accord.Video.FFMPEG.xml new file mode 100644 index 0000000000..1435afc79 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.FFMPEG.3.0.2/lib/net45/Accord.Video.FFMPEG.xml @@ -0,0 +1,5808 @@ + + + + "Accord.Video.FFMPEG (GPL)" + + + + +Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred +and should be done only if there are no other options. The correct way of stopping camera +is signaling it stop and then +waiting for background thread's completion. + + + + + +Wait for video source has stopped. + + Waits for source stopping after it was signalled to stop using + method. + + + +Signal video source to stop its work. + + Signals video source to stop its background thread, stop to +provide new frames and free resources. + + + +Start video source. + + Starts video source and return execution to caller. Video source +object creates background thread and notifies about new frames with the +help of event. + Video source is not specified. + + + +Initializes a new instance of the class. + + + + +Get frame interval from source or use manually specified. + + + The property specifies which frame rate to use for video playing. +If the property is set to , then video is played +with original frame rate, which is set in source video file. If the property is +set to , then custom frame rate is used, which is +calculated based on the manually specified frame interval. + Default value is set to . + + + + +Frame interval. + + + The property sets the interval in milliseconds between frames. If the property is +set to 100, then the desired frame rate will be 10 frames per second. + + Setting this property to 0 leads to no delay between video frames - frames +are read as fast as possible. + + + Setting this property has effect only when +is set to . + + Default value is set to 0. + + + + +State of the video source. + + Current state of video source object - running or not. + + + +Received bytes count. + + Number of bytes the video source provided from the moment of the last +access to the property. + + + + +Received frames count. + + Number of frames the video source provided from the moment of the last +access to the property. + + + + +Video source. + + + Video file name to play. + + + + +Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + +Video source error event. + + This event is used to notify clients about any type of errors occurred in +video source object, for example internal exceptions. + + + +New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for +making a copy (cloning) of the passed video frame, because the video source disposes its +own original copy after notifying of clients. + + + + + +Video source for video files. + + + The video source provides access to video files using FFmpeg library. + + The class provides video only. Sound is not supported. + + + The class ignores presentation time of video frames while retrieving them from +video file. Instead it provides video frames according to the FPS rate of the video file +or the configured . + + + Make sure you have FFmpeg binaries (DLLs) in the output folder of your application in order +to use this class successfully. FFmpeg binaries can be found in Externals folder provided with AForge.NET +framework's distribution. + + Sample usage: + +// create video source +VideoFileSource videoSource = new VideoFileSource( fileName ); +// set NewFrame event handler +videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); +// start the video source +videoSource.Start( ); +// ... + +// New frame event handler, which is invoked on each new available video frame +private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) +{ + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame +} + + + + + +Close currently opened video file if any. + + + + +Read next video frame of the currently opened video file. + + Returns next video frame of the opened file or if end of +file was reached. The returned video frame has 24 bpp color format. + Thrown if no video file was open. + A error occurred while reading next video frame. See exception message. + + + +Open video file with the specified name. + + Video file name to open. + Cannot open video file with the specified name. + A error occurred while opening the video file. See exception message. + + + +Disposes the object and frees its resources. + + + + +Initializes a new instance of the class. + + + + +Object's finalizer. + + + + +The property specifies if a video file is opened or not by this instance of the class. + + + + +Name of codec used for encoding the opened video file. + + Thrown if no video file was open. + + + +Number of video frames in the opened video file. + + + + + Warning: some video file formats may report different value +from the actual number of video frames in the file (subject to fix/investigate). + + + Thrown if no video file was open. + + + +Frame rate of the opened video file. + + Thrown if no video file was open. + + + +Frame height of the opened video file. + + Thrown if no video file was open. + + + +Frame width of the opened video file. + + Thrown if no video file was open. + + + +Class for reading video files utilizing FFmpeg library. + + + The class allows to read video files using FFmpeg library. + + Make sure you have FFmpeg binaries (DLLs) in the output folder of your application in order +to use this class successfully. FFmpeg binaries can be found in Externals folder provided with AForge.NET +framework's distribution. + + Sample usage: + +// create instance of video reader +VideoFileReader reader = new VideoFileReader( ); +// open video file +reader.Open( "test.avi" ); +// check some of its attributes +Console.WriteLine( "width: " + reader.Width ); +Console.WriteLine( "height: " + reader.Height ); +Console.WriteLine( "fps: " + reader.FrameRate ); +Console.WriteLine( "codec: " + reader.CodecName ); +// read 100 video frames out of it +for ( int i = 0; i < 100; i++ ) +{ + Bitmap videoFrame = reader.ReadVideoFrame( ); + // process the frame somehow + // ... + + // dispose the frame when it is no longer required + videoFrame.Dispose( ); +} +reader.Close( ); + + + + + Get the AVClass for swsContext. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + + Convert an 8-bit paletted frame into a frame with a color depth of 24 bits. + + With the palette format "ABCD", the destination frame ends up with the format "ABC". + + @param src source frame buffer + @param dst destination frame buffer + @param num_pixels number of pixels to convert + @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src + + + + Convert an 8-bit paletted frame into a frame with a color depth of 32 bits. + + The output frame will have the same packed format as the palette. + + @param src source frame buffer + @param dst destination frame buffer + @param num_pixels number of pixels to convert + @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src + + + +Allocate and return a clone of the vector a, that is a vector +with the same coefficients as a. + + + +Scale all the coefficients of a so that their sum equals height. + + + +Scale all the coefficients of a by the scalar value. + + + +Allocate and return a vector with just one coefficient, with +value 1.0. + + + +Allocate and return a vector with length coefficients, all +with the same value c. + + + +Return a normalized Gaussian curve used to filter stuff +quality = 3 is high quality, lower is lower quality. + + + +Allocate and return an uninitialized vector with length coefficients. + + + +@return -1 if not supported + + + +@param inv_table the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x] +@return -1 if not supported + + + + Scale the image slice in srcSlice and put the resulting scaled + slice in the image in dst. A slice is a sequence of consecutive + rows in an image. + + Slices have to be provided in sequential order, either in + top-bottom or bottom-top order. If slices are provided in + non-sequential order the behavior of the function is undefined. + + @param c the scaling context previously created with + sws_getContext() + @param srcSlice the array containing the pointers to the planes of + the source slice + @param srcStride the array containing the strides for each plane of + the source image + @param srcSliceY the position in the source image of the slice to + process, that is the number (counted starting from + zero) in the image of the first row of the slice + @param srcSliceH the height of the source slice, that is the number + of rows in the slice + @param dst the array containing the pointers to the planes of + the destination image + @param dstStride the array containing the strides for each plane of + the destination image + @return the height of the output slice + + + +Free the swscaler context swsContext. +If swsContext is NULL, then does nothing. + + + + Initialize the swscaler context sws_context. + + @return zero or positive value on success, a negative value on + error + + + +Allocate an empty SwsContext. This must be filled and passed to +sws_init_context(). For filling see AVOptions, options.c and +sws_setColorspaceDetails(). + + + Allocate and return an SwsContext. You need it to perform + scaling/conversion operations using sws_scale(). + + @param srcW the width of the source image + @param srcH the height of the source image + @param srcFormat the source image format + @param dstW the width of the destination image + @param dstH the height of the destination image + @param dstFormat the destination image format + @param flags specify which algorithm and options to use for rescaling + @return a pointer to an allocated context, or NULL in case of error + @note this function is to be removed after a saner alternative is + written + @deprecated Use sws_getCachedContext() instead. + + + Check if context can be reused, otherwise reallocate a new one. + + If context is NULL, just calls sws_getContext() to get a new + context. Otherwise, checks if the parameters are the ones already + saved in context. If that is the case, returns the current + context. Otherwise, frees context and gets a new context with + the new parameters. + + Be warned that srcFilter and dstFilter are not checked, they + are assumed to remain the same. + + + +Return a positive value if pix_fmt is a supported output format, 0 +otherwise. + + + +Return a positive value if pix_fmt is a supported input format, 0 +otherwise. + + + +Return the libswscale license. + + + +Return the libswscale build-time configuration. + + + +@} + +@file +@brief + external api for the swscale stuff + +Those FF_API_* defines are not part of public API. +They may change, break or disappear at any time. + +Return the LIBSWSCALE_VERSION_INT constant. + + + + Test if the given container can store a codec. + + @param std_compliance standards compliance level, one of FF_COMPLIANCE_* + + @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. + A negative number if this information is not available. + + + + Return a positive value if the given filename has one of the given + extensions, 0 otherwise. + + @param extensions a comma-separated list of filename extensions + + + + Generate an SDP for an RTP session. + + @param ac array of AVFormatContexts describing the RTP streams. If the + array is composed by only one context, such context can contain + multiple AVStreams (one AVStream per RTP stream). Otherwise, + all the contexts in the array (an AVCodecContext per RTP stream) + must contain only one AVStream. + @param n_files number of AVCodecContexts contained in ac + @param buf buffer where the SDP will be stored (must be allocated by + the caller) + @param size the size of the buffer + @return 0 if OK, AVERROR_xxx on error + + + + Check whether filename actually is a numbered sequence generator. + + @param filename possible numbered sequence string + @return 1 if a valid numbered sequence string, 0 otherwise + + + + Return in 'buf' the path with '%d' replaced by a number. + + Also handles the '%0nd' format where 'n' is the total number + of digits and '%%'. + + @param buf destination buffer + @param buf_size destination buffer size + @param path numbered sequence string + @param number frame number + @return 0 if OK, -1 on format error + + + +@deprecated use av_find_info_tag in libavutil instead. + + + +Get the current time in microseconds. + + + + Parse datestr and return a corresponding number of microseconds. + + @param datestr String representing a date or a duration. + See av_parse_time() for the syntax of the provided string. + @deprecated in favor of av_parse_time() + + + +@deprecated Deprecated in favor of av_dump_format(). + + + + Split a URL string into components. + + The pointers to buffers for storing individual components may be null, + in order to ignore that component. Buffers for components not found are + set to empty strings. If the port is not found, it is set to a negative + value. + + @param proto the buffer for the protocol + @param proto_size the size of the proto buffer + @param authorization the buffer for the authorization + @param authorization_size the size of the authorization buffer + @param hostname the buffer for the host name + @param hostname_size the size of the hostname buffer + @param port_ptr a pointer to store the port number in + @param path the buffer for the path + @param path_size the size of the path buffer + @param url the URL to split + + + + Add an index entry into a sorted list. Update the entry if the list + already contains it. + + @param timestamp timestamp in the time base of the given stream + + + + Get the codec tag for the given codec id id. + If no codec tag is found returns 0. + + @param tags list of supported codec_id-codec_tag pairs, as stored + in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + + + + Send a nice dump of a packet to the log. + + @param avcl A pointer to an arbitrary struct of which the first field is a + pointer to an AVClass struct. + @param level The importance level of the message, lower values signifying + higher importance. + @param pkt packet to dump + @param dump_payload True if the payload must be displayed, too. + @param st AVStream that the packet belongs to + + + + Send a nice dump of a packet to the specified file stream. + + @param f The file stream pointer where the dump should be sent to. + @param pkt packet to dump + @param dump_payload True if the payload must be displayed, too. + @param st AVStream that the packet belongs to + + + + Send a nice hexadecimal dump of a buffer to the log. + + @param avcl A pointer to an arbitrary struct of which the first field is a + pointer to an AVClass struct. + @param level The importance level of the message, lower values signifying + higher importance. + @param buf buffer + @param size buffer size + + @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 + + + +@} + + @defgroup lavf_misc Utility functions + @ingroup libavf + @{ + + Miscelaneous utility functions related to both muxing and demuxing + (or neither). + + Send a nice hexadecimal dump of a buffer to the specified file stream. + + @param f The file stream pointer where the dump should be sent to. + @param buf buffer + @param size buffer size + + @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 + + + +Get timing information for the data currently output. +The exact meaning of "currently output" depends on the format. +It is mostly relevant for devices that have an internal buffer and/or +work in real time. +@param s media file handle +@param stream stream in the media file +@param dts[out] DTS of the last packet output for the stream, in stream + time_base units +@param wall[out] absolute time when that packet whas output, + in microsecond +@return 0 if OK, AVERROR(ENOSYS) if the format does not support it +Note: some formats or devices may not allow to measure dts and wall +atomically. + + + + Return the output format in the list of registered output formats + which best matches the provided parameters, or return NULL if + there is no match. + + @param short_name if non-NULL checks if short_name matches with the + names of the registered formats + @param filename if non-NULL checks if filename terminates with the + extensions of the registered formats + @param mime_type if non-NULL checks if mime_type matches with the + MIME type of the registered formats + + + + Write the stream trailer to an output media file and free the + file private data. + + May only be called after a successful call to av_write_header. + + @param s media file handle + @return 0 if OK, AVERROR_xxx on error + + + + Write a packet to an output media file ensuring correct interleaving. + + The packet must contain one audio or video frame. + If the packets are already correctly interleaved, the application should + call av_write_frame() instead as it is slightly faster. It is also important + to keep in mind that completely non-interleaved input will need huge amounts + of memory to interleave with this, so it is preferable to interleave at the + demuxer level. + + @param s media file handle + @param pkt The packet containing the data to be written. Libavformat takes + ownership of the data and will free it when it sees fit using the packet's + @ref AVPacket.destruct "destruct" field. The caller must not access the data + after this function returns, as it may already be freed. + Packet's @ref AVPacket.stream_index "stream_index" field must be set to the + index of the corresponding stream in @ref AVFormatContext.streams + "s.streams". + It is very strongly recommended that timing information (@ref AVPacket.pts + "pts", @ref AVPacket.dts "dts" @ref AVPacket.duration "duration") is set to + correct values. + + @return 0 on success, a negative AVERROR on error. + + + + Allocate the stream private data and write the stream header to an + output media file. + @note: this sets stream time-bases, if possible to stream->codec->time_base + but for some formats it might also be some other time base + + @param s media file handle + @return 0 if OK, AVERROR_xxx on error + + @deprecated use avformat_write_header. + + + +@addtogroup lavf_encoding +@{ + + Allocate the stream private data and write the stream header to + an output media file. + + @param s Media file handle, must be allocated with avformat_alloc_context(). + Its oformat field must be set to the desired output format; + Its pb field must be set to an already openened AVIOContext. + @param options An AVDictionary filled with AVFormatContext and muxer-private options. + On return this parameter will be destroyed and replaced with a dict containing + options that were not found. May be NULL. + + @return 0 on success, negative AVERROR on failure. + + @see av_opt_find, av_dict_set, avio_open, av_oformat_next. + + + +@deprecated pass the options to avformat_write_header directly. + + + +@deprecated this function is not supposed to be called outside of lavf + + + +@} + + Add a new stream to a media file. + + Can only be called in the read_header() function. If the flag + AVFMTCTX_NOHEADER is in the format context, then new streams + can be added in read_packet too. + + @param s media file handle + @param id file-format-dependent stream ID + + + +Close an opened input AVFormatContext. Free it and all its contents +and set *s to NULL. + + + + @deprecated use avformat_close_input() + Close a media file (but not its codecs). + + @param s media file handle + + + +Free a AVFormatContext allocated by av_open_input_stream. +@param s context to free +@deprecated use av_close_input_file() + + + + Pause a network-based stream (e.g. RTSP stream). + + Use av_read_play() to resume it. + + + +Start playing a network-based stream (e.g. RTSP stream) at the +current position. + + + +Seek to the keyframe at timestamp. +'timestamp' in 'stream_index'. +@param stream_index If stream_index is (-1), a default +stream is selected, and timestamp is automatically converted +from AV_TIME_BASE units to the stream specific time_base. +@param timestamp Timestamp in AVStream.time_base units + or, if no stream is specified, in AV_TIME_BASE units. +@param flags flags which select direction and seeking mode +@return >= 0 on success + + + + Read a transport packet from a media file. + + This function is obsolete and should never be used. + Use av_read_frame() instead. + + @param s media file handle + @param pkt is filled + @return 0 if OK, AVERROR_xxx on error + + + + Find the "best" stream in the file. + The best stream is determined according to various heuristics as the most + likely to be what the user expects. + If the decoder parameter is non-NULL, av_find_best_stream will find the + default decoder for the stream's codec; streams for which no decoder can + be found are ignored. + + @param ic media file handle + @param type stream type: video, audio, subtitles, etc. + @param wanted_stream_nb user-requested stream number, + or -1 for automatic selection + @param related_stream try to find a stream related (eg. in the same + program) to this one, or -1 if none + @param decoder_ret if non-NULL, returns the decoder for the + selected stream + @param flags flags; none are currently defined + @return the non-negative stream number in case of success, + AVERROR_STREAM_NOT_FOUND if no stream with the requested type + could be found, + AVERROR_DECODER_NOT_FOUND if streams were found but no decoder + @note If av_find_best_stream returns successfully and decoder_ret is not + NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec. + + + + Find the programs which belong to a given stream. + + @param ic media file handle + @param last the last found program, the search will start after this + program, or from the beginning if it is NULL + @param s stream index + @return the next program which belongs to s, NULL if no program is found or + the last program is not among the programs of ic. + + + + Read packets of a media file to get stream information. This + is useful for file formats with no headers such as MPEG. This + function also computes the real framerate in case of MPEG-2 repeat + frame mode. + The logical file position is not changed by this function; + examined packets may be buffered for later processing. + + @param ic media file handle + @param options If non-NULL, an ic.nb_streams long array of pointers to + dictionaries, where i-th member contains options for + codec corresponding to i-th stream. + On return each dictionary will be filled with options that were not found. + @return >=0 if OK, AVERROR_xxx on error + + @note this function isn't guaranteed to open all the codecs, so + options being non-empty at return is a perfectly normal behavior. + + @todo Let the user decide somehow what information is needed so that + we do not waste time getting stuff the user does not need. + + + + Read packets of a media file to get stream information. This + is useful for file formats with no headers such as MPEG. This + function also computes the real framerate in case of MPEG-2 repeat + frame mode. + The logical file position is not changed by this function; + examined packets may be buffered for later processing. + + @param ic media file handle + @return >=0 if OK, AVERROR_xxx on error + @todo Let the user decide somehow what information is needed so that + we do not waste time getting stuff the user does not need. + + @deprecated use avformat_find_stream_info. + + + + Open an input stream and read the header. The codecs are not opened. + The stream must be closed with av_close_input_file(). + + @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context). + May be a pointer to NULL, in which case an AVFormatContext is allocated by this + function and written into ps. + Note that a user-supplied AVFormatContext will be freed on failure. + @param filename Name of the stream to open. + @param fmt If non-NULL, this parameter forces a specific input format. + Otherwise the format is autodetected. + @param options A dictionary filled with AVFormatContext and demuxer-private options. + On return this parameter will be destroyed and replaced with a dict containing + options that were not found. May be NULL. + + @return 0 on success, a negative AVERROR on failure. + + @note If you want to use custom IO, preallocate the format context and set its pb field. + + + + Open a media file as input. The codecs are not opened. Only the file + header (if present) is read. + + @param ic_ptr The opened media file handle is put here. + @param filename filename to open + @param fmt If non-NULL, force the file format to use. + @param buf_size optional buffer size (zero if default is OK) + @param ap Additional parameters needed when opening the file + (NULL if default). + @return 0 if OK, AVERROR_xxx otherwise + + @deprecated use avformat_open_input instead. + + + +Allocate all the structures needed to read an input stream. + This does not open the needed codecs for decoding the stream[s]. +@deprecated use avformat_open_input instead. + + + + Probe a bytestream to determine the input format. Each time a probe returns + with a score that is too low, the probe buffer size is increased and another + attempt is made. When the maximum probe size is reached, the input format + with the highest score is returned. + + @param pb the bytestream to probe + @param fmt the input format is put here + @param filename the filename of the stream + @param logctx the log context + @param offset the offset within the bytestream to probe from + @param max_probe_size the maximum probe buffer size (zero for default) + @return 0 in case of success, a negative value corresponding to an + AVERROR code otherwise + + + + Guess the file format. + + @param is_opened Whether the file is already opened; determines whether + demuxers with or without AVFMT_NOFILE are probed. + @param score_ret The score of the best detection. + + + + Guess the file format. + + @param is_opened Whether the file is already opened; determines whether + demuxers with or without AVFMT_NOFILE are probed. + + + +@addtogroup lavf_decoding +@{ + +Find AVInputFormat based on the short name of the input format. + + + + Allocate an AVFormatContext for an output format. + avformat_free_context() can be used to free the context and + everything allocated by the framework within it. + + @param *ctx is set to the created format context, or to NULL in + case of failure + @param oformat format to use for allocating the context, if NULL + format_name and filename are used instead + @param format_name the name of output format to use for allocating the + context, if NULL filename is used instead + @param filename the name of the filename to use for allocating the + context, may be NULL + @return >= 0 in case of success, a negative AVERROR code in case of + failure + + + +@deprecated deprecated in favor of avformat_alloc_output_context2() + + + + Add a new stream to a media file. + + When demuxing, it is called by the demuxer in read_header(). If the + flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also + be called in read_packet(). + + When muxing, should be called by the user before avformat_write_header(). + + @param c If non-NULL, the AVCodecContext corresponding to the new stream + will be initialized to use this codec. This is needed for e.g. codec-specific + defaults to be set, so codec should be provided if it is known. + + @return newly created stream or NULL on error. + + + + Get the AVClass for AVFormatContext. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + +Free an AVFormatContext and all its streams. +@param s context to free + + + +Allocate an AVFormatContext. +avformat_free_context() can be used to free the context and everything +allocated by the framework within it. + + + +If f is NULL, returns the first registered output format, +if f is non-NULL, returns the next registered output format after f +or NULL if f is the last one. + + + +If f is NULL, returns the first registered input format, +if f is non-NULL, returns the next registered input format after f +or NULL if f is the last one. + + + +Undo the initialization done by avformat_network_init. + + + + Do global initialization of network components. This is optional, + but recommended, since it avoids the overhead of implicitly + doing the setup for each session. + + Calling this function will become mandatory if using network + protocols at some major version bump. + + + + Initialize libavformat and register all the muxers, demuxers and + protocols. If you do not call this function, then you can select + exactly which formats you want to support. + + @see av_register_input_format() + @see av_register_output_format() + @see av_register_protocol() + + + +Return the libavformat license. + + + +Return the libavformat build-time configuration. + + + + @defgroup lavf_core Core functions + @ingroup libavf + + Functions for querying libavformat capabilities, allocating core structures, + etc. + @{ + +Return the LIBAVFORMAT_VERSION_INT constant. + + + +Max chunk size in bytes +Note, not all formats support this and unpredictable things may happen if it is used when not supported. +- encoding: Set by user via AVOptions (NO direct access) +- decoding: unused + + + +Max chunk time in microseconds. +Note, not all formats support this and unpredictable things may happen if it is used when not supported. +- encoding: Set by user via AVOptions (NO direct access) +- decoding: unused + + + +Audio preload in microseconds. +Note, not all formats support this and unpredictable things may happen if it is used when not supported. +- encoding: Set by user via AVOptions (NO direct access) +- decoding: unused + + + +Transport stream id. +This will be moved into demuxer private options. Thus no API/ABI compatibility + + + + Custom interrupt callbacks for the I/O layer. + + decoding: set by the user before avformat_open_input(). + encoding: set by the user before avformat_write_header() + (mainly useful for AVFMT_NOFILE formats). The callback + should also be passed to avio_open2() if it's used to + open the file. + + + +Error recognition; higher values will detect more errors but may +misdetect some more or less valid parts as errors. +- encoding: unused +- decoding: Set by user. + + + +decoding: number of frames used to probe fps + + + +Start time of the stream in real world time, in microseconds +since the unix epoch (00:00 1st January 1970). That is, pts=0 +in the stream was captured at this real world time. +- encoding: Set by user. +- decoding: Unused. + + + +Remaining size available for raw_packet_buffer, in bytes. +NOT PART OF PUBLIC API + + + +Flags to enable debugging. + + + +Maximum amount of memory in bytes to use for buffering frames +obtained from realtime capture devices. + + + +Maximum amount of memory in bytes to use for the index of each stream. +If the index exceeds this size, entries will be discarded as +needed to maintain a smaller size. This can lead to slower or less +accurate seeking (depends on demuxer). +Demuxers for which a full in-memory index is mandatory will ignore +this. +muxing : unused +demuxing: set by user + + + +decoding: maximum time (in AV_TIME_BASE units) during which the input should +be analyzed in avformat_find_stream_info(). + + + +decoding: size of data to probe; encoding: unused. + + + +@deprecated, use the 'loop' img2 demuxer private option. + + + + number of times to loop output in formats that support it + + @deprecated use the 'loop' private option in the gif muxer. + + + +use mpeg muxer private options instead + + + +Decoding: total stream bitrate in bit/s, 0 if not +available. Never set it directly if the file_size and the +duration are known as FFmpeg can compute it automatically. + + + +decoding: total file size, 0 if unknown + + + +Decoding: duration of the stream, in AV_TIME_BASE fractional +seconds. Only set this value if you know none of the individual stream +durations and also do not set any of them. This is deduced from the +AVStream values if not set. + + + +Decoding: position of the first frame of the component, in +AV_TIME_BASE fractional seconds. NEVER set this value directly: +It is deduced from the AVStream values. + + + +@deprecated use 'creation_time' metadata tag instead + + + + A list of all streams in the file. New streams are created with + avformat_new_stream(). + + decoding: streams are created by libavformat in avformat_open_input(). + If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also + appear in av_read_frame(). + encoding: streams are created by the user before avformat_write_header(). + + + +Format private data. This is an AVOptions-enabled struct +if and only if iformat/oformat.priv_class is not NULL. + + + +A class for logging and AVOptions. Set by avformat_alloc_context(). +Exports (de)muxer private options if they exist. + + + +Format I/O context. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(AVFormatContext) must not be used outside libav*, use +avformat_alloc_context() to create an AVFormatContext. + + + +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(AVProgram) must not be used outside libav*. + + + +flag to indicate that probing is requested +NOT PART OF PUBLIC API + + + +Stream Identifier +This is the MPEG-TS stream identifier +1 +0 means unknown + + + +Number of frames that have been demuxed during av_find_stream_info() + + + +Average framerate + + + +last packet in packet_buffer for this stream when muxing. +Used internally, NOT PART OF PUBLIC API, do not read or +write from outside of libav* + + +This buffer is only needed when packets were already buffered but +not decoded, for example to get the codec parameters in MPEG +streams. + + +Raw packets from the demuxer, prior to parsing and decoding. +This buffer is used for buffering packets until the codec can +be identified, as parsing cannot be done without knowing the +codec. + + + +Number of packets to buffer for codec probing +NOT PART OF PUBLIC API + + + + Timestamp corresponding to the last dts sync point. + + Initialized when AVCodecParserContext.dts_sync_point >= 0 and + a DTS is received from the underlying container. Otherwise set to + AV_NOPTS_VALUE by default. + + + +sample aspect ratio (0 if unknown) +- encoding: Set by user. +- decoding: Set by libavformat. + + + +Decoding: duration of the stream, in stream time base. +If a source file does not specify a duration, but does specify +a bitrate, this value will be estimated from bitrate and file size. + + + +Decoding: pts of the first frame of the stream in presentation order, in stream time base. +Only set this if you are absolutely 100% sure that the value you set +it to really is the pts of the first frame. +This may be undefined (AV_NOPTS_VALUE). +@note The ASF header does NOT contain a correct start_time the ASF +demuxer must NOT set this. + + + +Quality, as it has been removed from AVCodecContext and put in AVVideoFrame. +MN: dunno if that is the right place for it + + + +This is the fundamental unit of time (in seconds) in terms +of which frame timestamps are represented. For fixed-fps content, +time base should be 1/framerate and timestamp increments should be 1. +decoding: set by libavformat +encoding: set by libavformat in av_write_header + + + +encoding: pts generation when outputting stream + + + +Real base framerate of the stream. +This is the lowest framerate with which all timestamps can be +represented accurately (it is the least common multiple of all +framerates in the stream). Note, this value is just a guess! +For example, if the time base is 1/90000 and all frames have either +approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. + + + +Track should be used during playback by default. +Useful for subtitle track that should be displayed +even when user did not explicitly ask for subtitles. + +Stream structure. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(AVStream) must not be used outside libav*. + + + +@} + + + +Pause playing - only meaningful if using a network-based format +(RTSP). + + + +Start/resume playing - only meaningful if using a network-based format +(RTSP). + + + +General purpose read-only value that the format can use. + + + +If extensions are defined, then no probe is done. You should +usually not use extension format guessing because it is not +reliable enough + + + +Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, +AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, +AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK. + + + +Get the next timestamp in stream[stream_index].time_base units. +@return the timestamp or AV_NOPTS_VALUE if an error occurred + + + +Seek to a given timestamp relative to the frames in +stream component stream_index. +@param stream_index Must not be -1. +@param flags Selects which direction should be preferred if no exact + match is available. +@return >= 0 on success (but not necessarily the new offset) + + + +Close the stream. The AVFormatContext and AVStreams are not +freed by this function + + + +Read the format header and initialize the AVFormatContext +structure. Return 0 if OK. 'ap' if non-NULL contains +additional parameters. Only used in raw format right +now. 'av_new_stream' should be called to create new streams. + + + +Tell if a given file has a chance of being parsed as this format. +The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes +big so you do not have to check for that unless you need more. + + + +Size of private data so that it can be allocated in the wrapper. + + + +Descriptive name for the format, meant to be more human-readable +than name. You should use the NULL_IF_CONFIG_SMALL() macro +to define it. + + + +A comma separated list of short names for the format. New names +may be appended with a minor bump. + + + +@} + +@addtogroup lavf_decoding +@{ + + + Can only be iformat or oformat, not both at the same time. + + decoding: set by avformat_open_input(). + encoding: set by the user. + + + + Test if the given codec can be stored in this container. + + @return 1 if the codec is supported, 0 if it is not. + A negative number if unknown. + + + +List of supported codec_id-codec_tag pairs, ordered by "better +choice first". The arrays are all terminated by CODEC_ID_NONE. + + + +can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE, +AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, +AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH + + + +Write a packet. If AVFMT_ALLOW_FLUSH is set in flags, +pkt can be NULL in order to flush data buffered in the muxer. +When flushing, return 0 if there still is more data to flush, +or 1 if everything was flushed and there is no more buffered +data. + + + +size of private data so that it can be allocated in the wrapper + + + +Descriptive name for the format, meant to be more human-readable +than name. You should use the NULL_IF_CONFIG_SMALL() macro +to define it. + + + +Demuxer will use avio_open, no opened file should be provided by the caller. +@addtogroup lavf_encoding +@{ + + + +This structure contains the data a format has to probe a file. + + + + Read data and append it to the current content of the AVPacket. + If pkt->size is 0 this is identical to av_get_packet. + Note that this uses av_grow_packet and thus involves a realloc + which is inefficient. Thus this function should only be used + when there is no reasonable way to know (an upper bound of) + the final size. + + @param pkt packet + @param size amount of data to read + @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data + will not be lost even if an error occurs. + + + +@} + + Allocate and read the payload of a packet and initialize its + fields with default values. + + @param pkt packet + @param size desired payload size + @return >0 (read size) if OK, AVERROR_xxx otherwise + + + +Free all the memory allocated for an AVDictionary struct. + + + +Copy metadata from one AVDictionary struct into another. +@param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + this function will allocate a struct for you and put it in *dst +@param src pointer to source AVDictionary struct +@param flags flags to use when setting metadata in *dst +@note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + + + +This function is provided for compatibility reason and currently does nothing. + + + + Get a metadata element with matching key. + + @param prev Set to the previous matching element to find the next. + If set to NULL the first matching element is returned. + @param flags Allows case as well as suffix-insensitive comparisons. + @return Found tag or NULL, changing key or value leads to undefined behavior. + + + +Seek to a given timestamp relative to some component stream. +Only meaningful if using a network streaming protocol (e.g. MMS.). +@param stream_index The stream index that the timestamp is relative to. + If stream_index is (-1) the timestamp should be in AV_TIME_BASE + units from the beginning of the presentation. + If a stream_index >= 0 is used and the protocol does not support + seeking based on component streams, the call will fail. +@param timestamp timestamp in AVStream.time_base units + or if there is no stream specified then in AV_TIME_BASE units. +@param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE + and AVSEEK_FLAG_ANY. The protocol may silently ignore + AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will + fail if used and not supported. +@return >= 0 on success +@see AVInputFormat::read_seek + + + +Pause and resume playing - only meaningful if using a network streaming +protocol (e.g. MMS). +@param pause 1 for pause, 0 for resume + + + + Iterate through names of available protocols. + @note it is recommanded to use av_protocol_next() instead of this + + @param opaque A private pointer representing current protocol. + It must be a pointer to NULL on first iteration and will + be updated by successive calls to avio_enum_protocols. + @param output If set to 1, iterate over output protocols, + otherwise over input protocols. + + @return A static string containing the name of current protocol or NULL + + + + Return the written size and a pointer to the buffer. The buffer + must be freed with av_free(). + Padding of FF_INPUT_BUFFER_PADDING_SIZE is added to the buffer. + + @param s IO context + @param pbuffer pointer to a byte buffer + @return the length of the byte buffer + + + + Open a write only memory stream. + + @param s new IO context + @return zero if no error. + + + + Create and initialize a AVIOContext for accessing the + resource indicated by url. + @note When the resource indicated by url has been opened in + read+write mode, the AVIOContext can be used only for writing. + + @param s Used to return the pointer to the created AVIOContext. + In case of failure the pointed to value is set to NULL. + @param flags flags which control how the resource indicated by url + is to be opened + @param int_cb an interrupt callback to be used at the protocols level + @param options A dictionary filled with protocol-private options. On return + this parameter will be destroyed and replaced with a dict containing options + that were not found. May be NULL. + @return 0 in case of success, a negative value corresponding to an + AVERROR code in case of failure + + + +@name URL open modes +The flags argument to avio_open must be one of the following +constants, optionally ORed with other flags. +@{ + +@} + +Use non-blocking mode. +If this flag is set, operations on the context will return +AVERROR(EAGAIN) if they can not be performed immediately. +If this flag is not set, operations on the context will never return +AVERROR(EAGAIN). +Note that this flag does not affect the opening/connecting of the +context. Connecting a protocol will always block if necessary (e.g. on +network protocols) but never hang (e.g. on busy devices). +Warning: non-blocking protocols is work-in-progress; this flag may be +silently ignored. + + Create and initialize a AVIOContext for accessing the + resource indicated by url. + @note When the resource indicated by url has been opened in + read+write mode, the AVIOContext can be used only for writing. + + @param s Used to return the pointer to the created AVIOContext. + In case of failure the pointed to value is set to NULL. + @param flags flags which control how the resource indicated by url + is to be opened + @return 0 in case of success, a negative value corresponding to an + AVERROR code in case of failure + + + + @name Functions for reading from AVIOContext + @{ + + @note return 0 if EOF, so you cannot use it if EOF handling is + necessary + + + +Read size bytes from AVIOContext into buf. +@return number of bytes read or AVERROR + + + +@warning currently size is limited + + +feof() equivalent for AVIOContext. +@return non zero if and only if end of file + + + +Get the filesize. +@return filesize or AVERROR + + + +ftell() equivalent for AVIOContext. +@return position or AVERROR. + + + +Skip given number of bytes forward +@return new position or AVERROR. + + + +Convert an UTF-8 string to UTF-16LE and write it. +@return number of bytes written. + + + +Write a NULL-terminated string. +@return number of bytes written. + + + + Allocate and initialize an AVIOContext for buffered I/O. It must be later + freed with av_free(). + + @param buffer Memory block for input/output operations via AVIOContext. + The buffer must be allocated with av_malloc() and friends. + @param buffer_size The buffer size is very important for performance. + For protocols with fixed blocksize it should be set to this blocksize. + For others a typical size is a cache page, e.g. 4kb. + @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. + @param opaque An opaque pointer to user-specific data. + @param read_packet A function for refilling the buffer, may be NULL. + @param write_packet A function for writing the buffer contents, may be NULL. + @param seek A function for seeking to specified byte position, may be NULL. + + @return Allocated AVIOContext or NULL on failure. + + + +The callback is called in blocking functions to test regulary if +asynchronous interruption is needed. AVERROR_EXIT is returned +in this case by the interrupted function. 'NULL' means no interrupt +callback is given. +@deprecated Use interrupt_callback in AVFormatContext/avio_open2 + instead. + + + + Return AVIO_FLAG_* access flags corresponding to the access permissions + of the resource in url, or a negative value corresponding to an + AVERROR code in case of failure. The returned access flags are + masked by the value in flags. + + @note This function is intrinsically unsafe, in the sense that the + checked resource may change its existence or permission status from + one call to another. Thus you should not trust the returned value, + unless you are sure that no other processes are accessing the + checked resource. + + + +Return a non-zero value if the resource indicated by url +exists, 0 otherwise. +@deprecated Use avio_check instead. + + + +return the written or read size + + +@deprecated use AVIOContext.max_packet_size directly. + + + +@deprecated Use AVIOContext.seekable field directly. + + + +@deprecated use avio_get_str instead + + + +@note unlike fgets, the EOL character is not returned and a whole + line is parsed. return NULL if first char read was EOF + + +@} + + + +@defgroup old_url_f_funcs Old url_f* functions +The following functions are deprecated, use the "avio_"-prefixed functions instead. +@{ +@ingroup lavf_io + + + +@} + + + +@defgroup old_avio_funcs Old put_/get_*() functions +The following functions are deprecated. Use the "avio_"-prefixed functions instead. +@{ +@ingroup lavf_io + + + +@} + + + + Register the URLProtocol protocol. + + @param size the size of the URLProtocol struct referenced + + + +returns the next registered protocol after the given protocol (the first if +NULL is given), or NULL if protocol is the last one. + + + +@defgroup old_url_funcs Old url_* functions +The following functions are deprecated. Use the buffered API based on #AVIOContext instead. +@{ +@ingroup lavf_io + + + +@name URL open modes +The flags argument to url_open and cosins must be one of the following +constants, optionally ORed with other flags. +@{ + +@} + +Use non-blocking mode. +If this flag is set, operations on the context will return +AVERROR(EAGAIN) if they can not be performed immediately. +If this flag is not set, operations on the context will never return +AVERROR(EAGAIN). +Note that this flag does not affect the opening/connecting of the +context. Connecting a protocol will always block if necessary (e.g. on +network protocols) but never hang (e.g. on busy devices). +Warning: non-blocking protocols is work-in-progress; this flag may be +silently ignored. + + + +@deprecated This struct is to be made private. Use the higher-level + AVIOContext-based API instead. + + + +URL Context. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +sizeof(URLContext) must not be used outside libav*. +@deprecated This struct will be made private + + + + Get the AVClass for AVFrame. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + + Get the AVClass for AVCodecContext. It can be used in combination with + AV_OPT_SEARCH_FAKE_OBJ for examining options. + + @see av_opt_find(). + + + + Register a user provided lock manager supporting the operations + specified by AVLockOp. mutex points to a (void *) where the + lockmgr should store/get a pointer to a user allocated mutex. It's + NULL upon AV_LOCK_CREATE and != NULL for all other ops. + + @param cb User defined callback. Note: FFmpeg may invoke calls to this + callback during the call to av_lockmgr_register(). + Thus, the application must be prepared to handle that. + If cb is set to NULL the lockmgr will be unregistered. + Also note that during unregistration the previously registered + lockmgr callback may also be invoked. + + + +Lock operation used by lockmgr + + + +If hwaccel is NULL, returns the first registered hardware accelerator, +if hwaccel is non-NULL, returns the next registered hardware accelerator +after hwaccel, or NULL if hwaccel is the last one. + + + +Register the hardware accelerator hwaccel. + + + +Log a generic warning message asking for a sample. This function is +intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) +only, and would normally not be used by applications. +@param[in] avc a pointer to an arbitrary struct of which the first field is +a pointer to an AVClass struct +@param[in] msg string containing an optional message, or NULL if no message + + + +Log a generic warning message about a missing feature. This function is +intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) +only, and would normally not be used by applications. +@param[in] avc a pointer to an arbitrary struct of which the first field is +a pointer to an AVClass struct +@param[in] feature string containing the name of the missing feature +@param[in] want_sample indicates if samples are wanted which exhibit this feature. +If want_sample is non-zero, additional verbage will be added to the log +message which tells the user how to report samples to the development +mailing list. + + + + Encode extradata length to a buffer. Used by xiph codecs. + + @param s buffer to write to; must be at least (v/255+1) bytes long + @param v size of extradata in bytes + @return number of bytes written to the buffer. + + + +Pad image. + + + +Crop image top and left side. + + + +Copy image src to dst. Wraps av_picture_data_copy() above. + + + + Same behaviour av_fast_malloc but the buffer has additional + FF_INPUT_PADDING_SIZE at the end which will will always be 0. + + In addition the whole buffer will initially and after resizes + be 0-initialized so that no uninitialized data will ever appear. + + + + Allocate a buffer, reusing the given one if large enough. + + Contrary to av_fast_realloc the current buffer contents might not be + preserved and on error the old buffer is freed, thus no special + handling to avoid memleaks is necessary. + + @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer + @param size size of the buffer *ptr points to + @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and + *size 0 if an error occurred. + + + + Reallocate the given block if it is not large enough, otherwise do nothing. + + @see av_realloc + + + +Previous frame byte position. + + + +Byte position of currently parsed frame in stream. + + + + Position of the packet in file. + + Analogous to cur_frame_pts/dts + + + + Presentation delay of current frame in units of AVCodecContext.time_base. + + Set to INT_MIN when dts_sync_point unused. Otherwise, it must + contain valid non-negative timestamp delta (presentation time of a frame + must not lie in the past). + + This delay represents the difference between decoding and presentation + time of the frame. + + For example, this corresponds to H.264 dpb_output_delay. + + + + Offset of the current timestamp against last timestamp sync point in + units of AVCodecContext.time_base. + + Set to INT_MIN when dts_sync_point unused. Otherwise, it must + contain a valid timestamp offset. + + Note that the timestamp of sync point has usually a nonzero + dts_ref_dts_delta, which refers to the previous sync point. Offset of + the next frame after timestamp sync point will be usually 1. + + For example, this corresponds to H.264 cpb_removal_delay. + + + + Time difference in stream time base units from the pts of this + packet to the point at which the output from the decoder has converged + independent from the availability of previous frames. That is, the + frames are virtually identical no matter if decoding started from + the very first frame or from this keyframe. + Is AV_NOPTS_VALUE if unknown. + This field is not the display duration of the current frame. + This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + set. + + The purpose of this field is to allow seeking in streams that have no + keyframes in the conventional sense. It corresponds to the + recovery point SEI in H.264 and match_time_delta in NUT. It is also + essential for some types of subtitle streams to ensure that all + subtitles are correctly displayed after seeking. + + + +Set by parser to 1 for key frames and 0 for non-key frames. +It is initialized to -1, so if the parser doesn't set this flag, +old-style fallback using AV_PICTURE_TYPE_I picture type as key frames +will be used. + + + +Set if the parser has a valid file offset + + + This field is used for proper frame duration computation in lavf. + It signals, how much longer the frame duration of the current frame + is compared to normal frame duration. + + frame_duration = (1 + repeat_pict) * time_base + + It is used by codecs like H.264 to display telecined material. + + + +@deprecated Use av_get_bytes_per_sample() instead. + + + + Return codec bits per sample. + + @param[in] codec_id the codec + @return Number of bits per sample or zero if unknown for the given codec. + + + + Return a single letter to describe the given picture type pict_type. + + @param[in] pict_type the picture type + @return A single character representing the picture type. + @deprecated Use av_get_picture_type_char() instead. + + + +Flush buffers, should be called when seeking or when switching to a different stream. + + + + Register all the codecs, parsers and bitstream filters which were enabled at + configuration time. If you do not call this function you can select exactly + which formats you want to support, by using the individual registration + functions. + + @see avcodec_register + @see av_register_codec_parser + @see av_register_bitstream_filter + + + + Encode a video frame from pict into buf. + The input picture should be + stored using a specific format, namely avctx.pix_fmt. + + @param avctx the codec context + @param[out] buf the output buffer for the bitstream of encoded frame + @param[in] buf_size the size of the output buffer in bytes + @param[in] pict the input picture to encode + @return On error a negative value is returned, on success zero or the number + of bytes used from the output buffer. + + + + Fill audio frame data and linesize. + AVFrame extended_data channel pointers are allocated if necessary for + planar audio. + + @param frame the AVFrame + frame->nb_samples must be set prior to calling the + function. This function fills in frame->data, + frame->extended_data, frame->linesize[0]. + @param nb_channels channel count + @param sample_fmt sample format + @param buf buffer to use for frame data + @param buf_size size of buffer + @param align plane size sample alignment + @return 0 on success, negative error code on failure + + + + Encode a frame of audio. + + Takes input samples from frame and writes the next output packet, if + available, to avpkt. The output packet does not necessarily contain data for + the most recent frame, as encoders can delay, split, and combine input frames + internally as needed. + + @param avctx codec context + @param avpkt output AVPacket. + The user can supply an output buffer by setting + avpkt->data and avpkt->size prior to calling the + function, but if the size of the user-provided data is not + large enough, encoding will fail. All other AVPacket fields + will be reset by the encoder using av_init_packet(). If + avpkt->data is NULL, the encoder will allocate it. + The encoder will set avpkt->size to the size of the + output packet. + @param[in] frame AVFrame containing the raw audio data to be encoded. + May be NULL when flushing an encoder that has the + CODEC_CAP_DELAY capability set. + There are 2 codec capabilities that affect the allowed + values of frame->nb_samples. + If CODEC_CAP_SMALL_LAST_FRAME is set, then only the final + frame may be smaller than avctx->frame_size, and all other + frames must be equal to avctx->frame_size. + If CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame + can have any number of samples. + If neither is set, frame->nb_samples must be equal to + avctx->frame_size for all frames. + @param[out] got_packet_ptr This field is set to 1 by libavcodec if the + output packet is non-empty, and to 0 if it is + empty. If the function returns an error, the + packet can be assumed to be invalid, and the + value of got_packet_ptr is undefined and should + not be used. + @return 0 on success, negative error code on failure + + + + Encode an audio frame from samples into buf. + + @deprecated Use avcodec_encode_audio2 instead. + + @note The output buffer should be at least FF_MIN_BUFFER_SIZE bytes large. + However, for codecs with avctx->frame_size equal to 0 (e.g. PCM) the user + will know how much space is needed because it depends on the value passed + in buf_size as described below. In that case a lower value can be used. + + @param avctx the codec context + @param[out] buf the output buffer + @param[in] buf_size the output buffer size + @param[in] samples the input buffer containing the samples + The number of samples read from this buffer is frame_size*channels, + both of which are defined in avctx. + For codecs which have avctx->frame_size equal to 0 (e.g. PCM) the number of + samples read from samples is equal to: + buf_size * 8 / (avctx->channels * av_get_bits_per_sample(avctx->codec_id)) + This also implies that av_get_bits_per_sample() must not return 0 for these + codecs. + @return On error a negative value is returned, on success zero or the number + of bytes used to encode the data read from the input buffer. + + + + Free all allocated data in the given subtitle struct. + + @param sub AVSubtitle to free. + + + + * Decode a subtitle message. + * Return a negative value on error, otherwise return the number of bytes used. + * If no subtitle could be decompressed, got_sub_ptr is zero. + * Otherwise, the subtitle is stored in *sub. + * Note that CODEC_CAP_DR1 is not available for subtitle codecs. This is for + * simplicity, because the performance difference is expect to be negligible + * and reusing a get_buffer written for video codecs would probably perform badly + * due to a potentially very different allocation pattern. + * + * @param avctx the codec context + * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be + freed with avsubtitle_free if *got_sub_ptr is set. + * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. + * @param[in] avpkt The input AVPacket containing the input buffer. + + + + Decode the audio frame of size avpkt->size from avpkt->data into frame. + + Some decoders may support multiple frames in a single AVPacket. Such + decoders would then just decode the first frame. In this case, + avcodec_decode_audio4 has to be called again with an AVPacket containing + the remaining data in order to decode the second frame, etc... + Even if no frames are returned, the packet needs to be fed to the decoder + with remaining data until it is completely consumed or an error occurs. + + @warning The input buffer, avpkt->data must be FF_INPUT_BUFFER_PADDING_SIZE + larger than the actual read bytes because some optimized bitstream + readers read 32 or 64 bits at once and could read over the end. + + @note You might have to align the input buffer. The alignment requirements + depend on the CPU and the decoder. + + @param avctx the codec context + @param[out] frame The AVFrame in which to store decoded audio samples. + Decoders request a buffer of a particular size by setting + AVFrame.nb_samples prior to calling get_buffer(). The + decoder may, however, only utilize part of the buffer by + setting AVFrame.nb_samples to a smaller value in the + output frame. + @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is + non-zero. + @param[in] avpkt The input AVPacket containing the input buffer. + At least avpkt->data and avpkt->size should be set. Some + decoders might also require additional fields to be set. + @return A negative error code is returned if an error occurred during + decoding, otherwise the number of bytes consumed from the input + AVPacket is returned. + + + + Wrapper function which calls avcodec_decode_audio4. + + @deprecated Use avcodec_decode_audio4 instead. + + Decode the audio frame of size avpkt->size from avpkt->data into samples. + Some decoders may support multiple frames in a single AVPacket, such + decoders would then just decode the first frame. In this case, + avcodec_decode_audio3 has to be called again with an AVPacket that contains + the remaining data in order to decode the second frame etc. + If no frame + could be outputted, frame_size_ptr is zero. Otherwise, it is the + decompressed frame size in bytes. + + @warning You must set frame_size_ptr to the allocated size of the + output buffer before calling avcodec_decode_audio3(). + + @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than + the actual read bytes because some optimized bitstream readers read 32 or 64 + bits at once and could read over the end. + + @warning The end of the input buffer avpkt->data should be set to 0 to ensure that + no overreading happens for damaged MPEG streams. + + @warning You must not provide a custom get_buffer() when using + avcodec_decode_audio3(). Doing so will override it with + avcodec_default_get_buffer. Use avcodec_decode_audio4() instead, + which does allow the application to provide a custom get_buffer(). + + @note You might have to align the input buffer avpkt->data and output buffer + samples. The alignment requirements depend on the CPU: On some CPUs it isn't + necessary at all, on others it won't work at all if not aligned and on others + it will work but it will have an impact on performance. + + In practice, avpkt->data should have 4 byte alignment at minimum and + samples should be 16 byte aligned unless the CPU doesn't need it + (AltiVec and SSE do). + + @note Codecs which have the CODEC_CAP_DELAY capability set have a delay + between input and output, these need to be fed with avpkt->data=NULL, + avpkt->size=0 at the end to return the remaining frames. + + @param avctx the codec context + @param[out] samples the output buffer, sample type in avctx->sample_fmt + If the sample format is planar, each channel plane will + be the same size, with no padding between channels. + @param[in,out] frame_size_ptr the output buffer size in bytes + @param[in] avpkt The input AVPacket containing the input buffer. + You can create such packet with av_init_packet() and by then setting + data and size, some decoders might in addition need other fields. + All decoders are designed to use the least fields possible though. + @return On error a negative value is returned, otherwise the number of bytes + used or zero if no frame data was decompressed (used) from the input AVPacket. + + + +@deprecated Set s->thread_count before calling avcodec_open2() instead of calling this. + + + + Modify width and height values so that they will result in a memory + buffer that is acceptable for the codec if you also ensure that all + line sizes are a multiple of the respective linesize_align[i]. + + May only be used if a codec with CODEC_CAP_DR1 has been opened. + If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + according to avcodec_get_edge_width() before. + + + + Modify width and height values so that they will result in a memory + buffer that is acceptable for the codec if you do not use any horizontal + padding. + + May only be used if a codec with CODEC_CAP_DR1 has been opened. + If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + according to avcodec_get_edge_width() before. + + + + Return the amount of padding in pixels which the get_buffer callback must + provide around the edge of the image for codecs which do not have the + CODEC_FLAG_EMU_EDGE flag. + + @return Required padding in pixels. + + + + Allocate an AVFrame and set its fields to default values. The resulting + struct can be deallocated by simply calling av_free(). + + @return An AVFrame filled with default values or NULL on failure. + @see avcodec_get_frame_defaults + + + + Set the fields of the given AVFrame to default values. + + @param pic The AVFrame of which the fields should be set to default values. + + + + Copy the settings of the source AVCodecContext into the destination + AVCodecContext. The resulting destination codec context will be + unopened, i.e. you are required to call avcodec_open2() before you + can use this AVCodecContext to decode/encode video/audio data. + + @param dest target codec context, should be initialized with + avcodec_alloc_context3(), but otherwise uninitialized + @param src source codec context + @return AVERROR() on error (e.g. memory allocation error), 0 on success + + + + Allocate an AVCodecContext and set its fields to default values. The + resulting struct can be deallocated by simply calling av_free(). + + @param codec if non-NULL, allocate private data and initialize defaults + for the given codec. It is illegal to then call avcodec_open2() + with a different codec. + + @return An AVCodecContext filled with default values or NULL on failure. + @see avcodec_get_context_defaults + + + +THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! + + + Allocate an AVCodecContext and set its fields to default values. The + resulting struct can be deallocated by simply calling av_free(). + + @return An AVCodecContext filled with default values or NULL on failure. + @see avcodec_get_context_defaults + + @deprecated use avcodec_alloc_context3() + + + + Set the fields of the given AVCodecContext to default values corresponding + to the given codec (defaults may be codec-dependent). + + Do not call this function if a non-NULL codec has been passed + to avcodec_alloc_context3() that allocated this AVCodecContext. + If codec is non-NULL, it is illegal to call avcodec_open2() with a + different codec on this AVCodecContext. + + + +THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! + + + Set the fields of the given AVCodecContext to default values. + + @param s The AVCodecContext of which the fields should be set to default values. + @deprecated use avcodec_get_context_defaults3 + + + + Return a name for the specified profile, if available. + + @param codec the codec that is searched for the given profile + @param profile the profile value for which a name is requested + @return A name for the profile if found, NULL otherwise. + + + + Find a registered decoder with the specified name. + + @param name name of the requested decoder + @return A decoder if one was found, NULL otherwise. + + + + Find a registered decoder with a matching codec ID. + + @param id CodecID of the requested decoder + @return A decoder if one was found, NULL otherwise. + + + + Find a registered encoder with the specified name. + + @param name name of the requested encoder + @return An encoder if one was found, NULL otherwise. + + + + Find a registered encoder with a matching codec ID. + + @param id CodecID of the requested encoder + @return An encoder if one was found, NULL otherwise. + + + + Register the codec codec and initialize libavcodec. + + @warning either this function or avcodec_register_all() must be called + before any other libavcodec functions. + + @see avcodec_register_all() + + + +@deprecated this function is called automatically from avcodec_register() +and avcodec_register_all(), there is no need to call it manually + + + +Return the libavcodec license. + + + +Return the libavcodec build-time configuration. + + + +Return the LIBAVCODEC_VERSION_INT constant. + + + +If c is NULL, returns the first registered codec, +if c is non-NULL, returns the next registered codec after c, +or NULL if c is the last one. + + + +Tell if an image really has transparent alpha values. +@return ored mask of FF_ALPHA_xxx constants + + + + Compute what kind of losses will occur when converting from one specific + pixel format to another. + When converting from one pixel format to another, information loss may occur. + For example, when converting from RGB24 to GRAY, the color information will + be lost. Similarly, other losses occur when converting from some formats to + other formats. These losses can involve loss of chroma, but also loss of + resolution, loss of color depth, loss due to the color space conversion, loss + of the alpha bits or loss due to color quantization. + avcodec_get_fix_fmt_loss() informs you about the various types of losses + which will occur when converting from one pixel format to another. + + @param[in] dst_pix_fmt destination pixel format + @param[in] src_pix_fmt source pixel format + @param[in] has_alpha Whether the source pixel format alpha channel is used. + @return Combination of flags informing you what kind of losses will occur + (maximum loss for an invalid dst_pix_fmt). + + + + Put a string representing the codec tag codec_tag in buf. + + @param buf_size size in bytes of buf + @return the length of the string that would have been generated if + enough space had been available, excluding the trailing null + + + +Return a value representing the fourCC code associated to the +pixel format pix_fmt, or 0 if no associated fourCC code can be +found. + + + + Return the short name for a pixel format. + + \see av_get_pix_fmt(), av_get_pix_fmt_string(). + @deprecated Deprecated in favor of av_get_pix_fmt_name(). + + + +Get the name of a codec. +@return a static string identifying the codec; never NULL + + + + Calculate the size in bytes that a picture of the given width and height + would occupy if stored in the given picture format. + Note that this returns the size of a compact representation as generated + by avpicture_layout(), which can be smaller than the size required for e.g. + avpicture_fill(). + + @param pix_fmt the given picture format + @param width the width of the image + @param height the height of the image + @return Image data size in bytes or -1 on error (e.g. too large dimensions). + + + + Copy pixel data from an AVPicture into a buffer. + The data is stored compactly, without any gaps for alignment or padding + which may be applied by avpicture_fill(). + + @see avpicture_get_size() + + @param[in] src AVPicture containing image data + @param[in] pix_fmt The format in which the picture data is stored. + @param[in] width the width of the image in pixels. + @param[in] height the height of the image in pixels. + @param[out] dest A buffer into which picture data will be copied. + @param[in] dest_size The size of 'dest'. + @return The number of bytes written to dest, or a negative value (error code) on error. + + + + Fill in the AVPicture fields. + The fields of the given AVPicture are filled in by using the 'ptr' address + which points to the image data buffer. Depending on the specified picture + format, one or multiple image data pointers and line sizes will be set. + If a planar format is specified, several pointers will be set pointing to + the different picture planes and the line sizes of the different planes + will be stored in the lines_sizes array. + Call with ptr == NULL to get the required size for the ptr buffer. + + To allocate the buffer and fill in the AVPicture fields in one call, + use avpicture_alloc(). + + @param picture AVPicture whose fields are to be filled in + @param ptr Buffer which will contain or contains the actual image data + @param pix_fmt The format in which the picture data is stored. + @param width the width of the image in pixels + @param height the height of the image in pixels + @return size of the image data in bytes + + + + Free a picture previously allocated by avpicture_alloc(). + The data buffer used by the AVPicture is freed, but the AVPicture structure + itself is not. + + @param picture the AVPicture to be freed + + + + Allocate memory for a picture. Call avpicture_free() to free it. + + @see avpicture_fill() + + @param picture the picture to be filled in + @param pix_fmt the format of the picture + @param width the width of the picture + @param height the height of the picture + @return zero if successful, a negative value if not + + + + Compensate samplerate/timestamp drift. The compensation is done by changing + the resampler parameters, so no audible clicks or similar distortions occur + @param compensation_distance distance in output samples over which the compensation should be performed + @param sample_delta number of output samples which should be output less + + example: av_resample_compensate(c, 10, 500) + here instead of 510 samples only 500 samples would be output + + note, due to rounding the actual compensation might be slightly different, + especially if the compensation_distance is large and the in_rate used during init is small + + + +Resample an array of samples using a previously configured context. +@param src an array of unconsumed samples +@param consumed the number of samples of src which have been consumed are returned here +@param src_size the number of unconsumed samples available +@param dst_size the amount of space in samples available in dst +@param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. +@return the number of samples written in dst or -1 if an error occurred + + + + * Initialize an audio resampler. + * Note, if either rate is not an integer then simply scale both rates up so they are. + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear If 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + + + + Free resample context. + + @param s a non-NULL pointer to a resample context previously + created with av_audio_resample_init() + + + + * Initialize audio resampling context. + * + * @param output_channels number of output channels + * @param input_channels number of input channels + * @param output_rate output sample rate + * @param input_rate input sample rate + * @param sample_fmt_out requested output sample format + * @param sample_fmt_in input sample format + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff frequency + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear if 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + * @return allocated ReSampleContext, NULL if error occurred + + + + Get side information from packet. + + @param pkt packet + @param type desired side information type + @param size pointer for side information size to store (optional) + @return pointer to data if present or NULL otherwise + + + + Allocate new information of a packet. + + @param pkt packet + @param type side information type + @param size side information size + @return pointer to fresh allocated data or NULL otherwise + + + + Free a packet. + + @param pkt packet to free + + + +@warning This is a hack - the packet memory allocation stuff is broken. The +packet is allocated if it was not really allocated. + + + + Increase packet size, correctly zeroing padding + + @param pkt packet + @param grow_by number of bytes by which to increase the size of the packet + + + + Reduce packet size, correctly zeroing padding + + @param pkt packet + @param size new size + + + + Allocate the payload of a packet and initialize its fields with + default values. + + @param pkt packet + @param size wanted payload size + @return 0 if OK, AVERROR_xxx otherwise + + + + Initialize optional fields of a packet with default values. + + @param pkt packet + + + +Default packet destructor. + + + +@deprecated use NULL instead + + + +0 terminated ASS/SSA compatible event line. +The pressentation of this is unaffected by the other values in this +struct. + + + +data+linesize for the bitmap of this subtitle. +can be set for text/ass as well once they where rendered + + + +Formatted text, the ass field must be set by the decoder and is +authoritative. pict and text fields may contain approximations. + + + +Plain text, the text field must be set by the decoder and is +authoritative. ass and pict fields may contain approximations. + + + +four components are given, that's all. +the last component is alpha + + + + Size of HW accelerator private data. + + Private data is allocated with av_mallocz() before + AVCodecContext.get_buffer() and deallocated after + AVCodecContext.release_buffer(). + + + + Called at the end of each frame or field picture. + + The whole picture is parsed at this point and can now be sent + to the hardware accelerator. This function is mandatory. + + @param avctx the codec context + @return zero if successful, a negative value otherwise + + + + Callback for each slice. + + Meaningful slice information (codec specific) is guaranteed to + be parsed at this point. This function is mandatory. + + @param avctx the codec context + @param buf the slice data buffer base + @param buf_size the size of the slice in bytes + @return zero if successful, a negative value otherwise + + + + Called at the beginning of each frame or field picture. + + Meaningful frame information (codec specific) is guaranteed to + be parsed at this point. This function is mandatory. + + Note that buf can be NULL along with buf_size set to 0. + Otherwise, this means the whole frame is available at this point. + + @param avctx the codec context + @param buf the frame data buffer base + @param buf_size the size of the frame in bytes + @return zero if successful, a negative value otherwise + + + +Hardware accelerated codec capabilities. +see FF_HWACCEL_CODEC_CAP_* + + + +Name of the hardware accelerated codec. +The name is globally unique among encoders and among decoders (but an +encoder and a decoder can share the same name). + + + + Encode data to an AVPacket. + + @param avctx codec context + @param avpkt output AVPacket (may contain a user-provided buffer) + @param[in] frame AVFrame containing the raw data to be encoded + @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a + non-empty packet was returned in avpkt. + @return 0 on success, negative error code on failure + + + +Initialize codec static data, called from avcodec_register(). + + + +@} +Private codec-specific defaults. + + + + Copy necessary context variables from a previous thread context to the current one. + If not defined, the next thread will start automatically; otherwise, the codec + must call ff_thread_finish_setup(). + + dst and src will (rarely) point to the same context, in which case memcpy should be skipped. + + + +@name Frame-level threading support functions +@{ + +If defined, called on thread contexts when they are created. +If the codec allocates writable tables in init(), re-allocate them here. +priv_data will be set to a copy of the original. + + + +Descriptive name for the codec, meant to be more human readable than name. +You should use the NULL_IF_CONFIG_SMALL() macro to define it. + + + +Flush buffers. +Will be called when seeking + + + +Codec capabilities. +see CODEC_CAP_* + + + +Name of the codec implementation. +The name is globally unique among encoders and among decoders (but an +encoder and a decoder can share the same name). +This is the primary way to find a codec from the user perspective. + + + +AVCodec. + + + +AVProfile. + + + +Current statistics for PTS correction. +- decoding: maintained and used by libavcodec, not intended to be used by user apps +- encoding: unused + + + +Field order + * - encoding: set by libavcodec + * - decoding: Set by libavcodec + + + + Private context used for internal data. + + Unlike priv_data, this is not codec-specific. It is used in general + libavcodec functions. + + + +Error recognition; may misdetect some more or less valid parts as errors. +- encoding: unused +- decoding: Set by user. + + + +Type of service that the audio stream conveys. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +VBV delay coded in the last frame (in periods of a 27 MHz clock). +Used for compliant TS muxing. +- encoding: Set by libavcodec. +- decoding: unused. + + + +Set by the client if its custom get_buffer() callback can be called +from another thread, which allows faster multithreaded decoding. +draw_horiz_band() will be called from other threads regardless of this setting. +Ignored if the default get_buffer() is used. +- encoding: Set by user. +- decoding: Set by user. + + + +Which multithreading methods are in use by the codec. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + + Which multithreading methods to use. + Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, + so clients which cannot provide future frames should not use it. + + - encoding: Set by user, otherwise the default is used. + - decoding: Set by user, otherwise the default is used. + + + + Whether this is a copy of the context which had init() called on it. + This is used by multithreading - shared tables and picture pointers + should be freed from the original context only. + - encoding: Set by libavcodec. + - decoding: Set by libavcodec. + + @deprecated this field has been moved to an internal context + + + +Current packet as passed into the decoder, to avoid having +to pass the packet into every function. Currently only valid +inside lavc and get/release_buffer callbacks. +- decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts +- encoding: unused + + + +Header containing style information for text subtitles. +For SUBTITLE_ASS subtitle type, it should contain the whole ASS +[Script Info] and [V4+ Styles] section, plus the [Events] line and +the Format line following. It shouldn't include any Dialogue line. +- encoding: Set/allocated/freed by user (before avcodec_open2()) +- decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) + + + +Number of slices. +Indicates number of picture subdivisions. Used for parallelized +decoding. +- encoding: Set by user +- decoding: unused + + + +Number of passes to use for Cholesky factorization during LPC analysis +- encoding: Set by user +- decoding: unused + + + +Constant rate factor maximum +With CRF encoding mode and VBV restrictions enabled, prevents quality from being worse +than crf_max, even if doing so would violate VBV restrictions. +- encoding: Set by user. +- decoding: unused + + + +RC lookahead +Number of frames for frametype and ratecontrol lookahead +- encoding: Set by user +- decoding: unused + + + +PSY trellis +Strength of psychovisual optimization +- encoding: Set by user +- decoding: unused + + + +PSY RD +Strength of psychovisual optimization +- encoding: Set by user +- decoding: unused + + + +AQ strength +Reduces blocking and blurring in flat and textured areas. +- encoding: Set by user +- decoding: unused + + + +AQ mode +0: Disabled +1: Variance AQ (complexity mask) +2: Auto-variance AQ (experimental) +- encoding: Set by user +- decoding: unused + + + +explicit P-frame weighted prediction analysis method +0: off +1: fast blind weighting (one reference duplicate with -1 offset) +2: smart weighting (full fade detection analysis) +- encoding: Set by user. +- decoding: unused + + + +MPEG vs JPEG YUV range. +- encoding: Set by user +- decoding: Set by libavcodec + + + +YUV colorspace type. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Color Transfer Characteristic. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Chromaticity coordinates of the source primaries. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Hardware accelerator context. +For some hardware accelerators, a global context needs to be +provided by the user. In that case, this holds display-dependent +data FFmpeg cannot instantiate itself. Please refer to the +FFmpeg HW accelerator documentation to know how to fill this +is. e.g. for VA API, this is a struct vaapi_context. +- encoding: unused +- decoding: Set by user + + + + For some codecs, the time base is closer to the field rate than the frame rate. + Most notably, H.264 and MPEG-2 specify time_base as half of frame duration + if no telecine is used ... + + Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. + + + +Hardware accelerator in use +- encoding: unused. +- decoding: Set by libavcodec + + +AVHWAccel. + + + +Request decoder to use this channel layout if it can (0 for default) +- encoding: unused +- decoding: Set by user. + + + +Audio channel layout. +- encoding: set by user. +- decoding: set by user, may be overwritten by libavcodec. + + + +Bits per sample/pixel of internal libavcodec pixel/sample format. +- encoding: set by user. +- decoding: set by libavcodec. + + + +opaque 64bit number (generally a PTS) that will be reordered and +output in AVFrame.reordered_opaque +@deprecated in favor of pkt_pts +- encoding: unused +- decoding: Set by user. + + + +Percentage of dynamic range compression to be applied by the decoder. +The default value is 1.0, corresponding to full compression. +- encoding: unused +- decoding: Set by user. +@deprecated use AC3 decoder private option instead. + + + +Decoder should decode to this many channels if it can (0 for default) +- encoding: unused +- decoding: Set by user. +@deprecated Deprecated in favor of request_channel_layout. + + + +@} + +GOP timecode frame start number +- encoding: Set by user, in non drop frame format +- decoding: Set by libavcodec (timecode in the 25 bits format, -1 if unset) + + + +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +search method for selecting prediction order +- encoding: Set by user. +- decoding: unused + + + +@name FLAC options +@deprecated Use FLAC encoder private options instead. +@{ + +LPC coefficient precision - used by FLAC encoder +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +- encoding: Set by user. +- decoding: unused + + + +Adjust sensitivity of b_frame_strategy 1. +- encoding: Set by user. +- decoding: unused + + + + + Note: Value depends upon the compare function used for fullpel ME. + - encoding: Set by user. + - decoding: unused + + + +Multiplied by qscale for each frame and added to scene_change_score. +- encoding: Set by user. +- decoding: unused + + + +Audio cutoff bandwidth (0 means "automatic") +- encoding: Set by user. +- decoding: unused + + + +direct MV prediction mode - 0 (none), 1 (spatial), 2 (temporal), 3 (auto) +- encoding: Set by user. +- decoding: unused + + + +macroblock subpartition sizes to consider - p8x8, p4x4, b8x8, i8x8, i4x4 +- encoding: Set by user. +- decoding: unused + + + +in-loop deblocking filter beta parameter +beta is in the range -6...6 +- encoding: Set by user. +- decoding: unused + + + +in-loop deblocking filter alphac0 parameter +alpha is in the range -6...6 +- encoding: Set by user. +- decoding: unused + + + +Reduce fluctuations in qp (before curve compression). +- encoding: Set by user. +- decoding: unused + + + +trellis RD quantization +- encoding: Set by user. +- decoding: unused + + + +Influence how often B-frames are used. +- encoding: Set by user. +- decoding: unused + + + +chroma qp offset from luma +- encoding: Set by user. +- decoding: unused + + + +number of reference frames +- encoding: Set by user. +- decoding: Set by lavc. + + + +minimum GOP size +- encoding: Set by user. +- decoding: unused + + + +constant quantization parameter rate control method +- encoding: Set by user. +- decoding: unused + @deprecated use 'cqp' libx264 private option + + + +constant rate factor - quality-based VBR - values ~correspond to qps +- encoding: Set by user. +- decoding: unused + @deprecated use 'crf' libx264 private option + + + + + - encoding: Set by user. + - decoding: unused + + + + + - encoding: Set by user. + - decoding: unused + + + + + - encoding: unused + - decoding: Set by user. + + + + - encoding: unused + - decoding: Set by user. + + + + - encoding: unused + - decoding: Set by user. + + + + + - encoding: Set by user. + - decoding: unused + + + +maximum MB lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +minimum MB lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +Border processing masking, raises the quantizer for mbs on the borders +of the picture. +- encoding: Set by user. +- decoding: unused + + + +frame skip comparison function +- encoding: Set by user. +- decoding: unused + + + +frame skip exponent +- encoding: Set by user. +- decoding: unused + + + +frame skip factor +- encoding: Set by user. +- decoding: unused + + + +frame skip threshold +- encoding: Set by user. +- decoding: unused + + + +Bitstream width / height, may be different from width/height if lowres enabled. +- encoding: unused +- decoding: Set by user before init if known. Codec should override / dynamically change if needed. + + + +low resolution decoding, 1-> 1/2 size, 2->1/4 size +- encoding: unused +- decoding: Set by user. + + + +level +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +profile +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +Number of macroblock rows at the bottom which are skipped. +- encoding: unused +- decoding: Set by user. + + + +Number of macroblock rows at the top which are skipped. +- encoding: unused +- decoding: Set by user. + + + +noise vs. sse weight for the nsse comparsion function +- encoding: Set by user. +- decoding: unused + + + +precision of the intra DC coefficient - 8 +- encoding: Set by user. +- decoding: unused + + + +Macroblock threshold below which the user specified macroblock types will be used. +- encoding: Set by user. +- decoding: unused + + + + Motion estimation threshold below which no motion estimation is + performed, but instead the user specified motion vectors are used. + + - encoding: Set by user. + - decoding: unused + + + +thread opaque +Can be used by execute() to store some per AVCodecContext stuff. +- encoding: set by execute() +- decoding: set by execute() + + + +The codec may call this to execute several independent things. +It will return only after finishing all tasks. +The user may replace this with some multithreaded implementation, +the default implementation will execute the parts serially. +@param count the number of things to execute +- encoding: Set by libavcodec, user can override. +- decoding: Set by libavcodec, user can override. + + + +thread count +is used to decide how many independent tasks should be passed to execute() +- encoding: Set by user. +- decoding: Set by user. + + + +quantizer noise shaping +- encoding: Set by user. +- decoding: unused + + + +MP3 antialias algorithm, see FF_AA_* below. +- encoding: unused +- decoding: Set by user. + + + +Simulates errors in the bitstream to test error concealment. +- encoding: Set by user. +- decoding: unused + + + +CODEC_FLAG2_* +- encoding: Set by user. +- decoding: Set by user. + + + + + - encoding: Set by user. + - decoding: unused + + + +Number of bits which should be loaded into the rc buffer before decoding starts. +- encoding: Set by user. +- decoding: unused + + + +Called at the beginning of a frame to get cr buffer for it. +Buffer type (size, hints) must be the same. libavcodec won't check it. +libavcodec will pass previous buffer in pic, function should return +same buffer or new buffer with old frame "painted" into it. +If pic.data[0] == NULL must behave like get_buffer(). +if CODEC_CAP_DR1 is not set then reget_buffer() must call +avcodec_default_reget_buffer() instead of providing buffers allocated by +some other means. +- encoding: unused +- decoding: Set by libavcodec, user can override. + + + +noise reduction strength +- encoding: Set by user. +- decoding: unused + + + +palette control structure +- encoding: ??? (no palette-enabled encoder yet) +- decoding: Set by user. + + + AVPaletteControl + This structure defines a method for communicating palette changes + between and demuxer and a decoder. + + @deprecated Use AVPacket to send palette changes instead. + This is totally broken. + + + +maximum Lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +minimum Lagrange multipler +- encoding: Set by user. +- decoding: unused + + + +scene change detection threshold +0 is default, larger means fewer detected scene changes. +- encoding: Set by user. +- decoding: unused + + + +custom inter quantization matrix +- encoding: Set by user, can be NULL. +- decoding: Set by libavcodec. + + + +custom intra quantization matrix +- encoding: Set by user, can be NULL. +- decoding: Set by libavcodec. + + + +macroblock decision mode +- encoding: Set by user. +- decoding: unused + + + +XVideo Motion Acceleration +- encoding: forbidden +- decoding: set by decoder + + + +slice flags +- encoding: unused +- decoding: Set by user. + + + +context model +- encoding: Set by user. +- decoding: unused + + + +coder type +- encoding: Set by user. +- decoding: unused + + + +Global quality for codecs which cannot change it per frame. +This should be proportional to MPEG-1/2/4 qscale. +- encoding: Set by user. +- decoding: unused + + + +internal_buffers +Don't touch, used by libavcodec default_get_buffer(). +@deprecated this field was moved to an internal context + + + +internal_buffer count +Don't touch, used by libavcodec default_get_buffer(). +@deprecated this field was moved to an internal context + + + +color table ID +- encoding: unused +- decoding: Which clrtable should be used for 8bit RGB images. + Tables have to be stored somewhere. FIXME + + + +inter quantizer bias +- encoding: Set by user. +- decoding: unused + + + +intra quantizer bias +- encoding: Set by user. +- decoding: unused + + + + maximum motion estimation search range in subpel units + If 0 then no limit. + + - encoding: Set by user. + - decoding: unused + + + + DTG active format information (additional aspect ratio + information only used in DVB MPEG-2 transport streams) + 0 if not set. + + - encoding: unused + - decoding: Set by decoder. + + + +subpel ME quality +- encoding: Set by user. +- decoding: unused + + + +motion estimation prepass comparison function +- encoding: Set by user. +- decoding: unused + + + +prepass for motion estimation +- encoding: Set by user. +- decoding: unused + + + +amount of previous MV predictors (2a+1 x 2a+1 square) +- encoding: Set by user. +- decoding: unused + + + +interlaced DCT comparison function +- encoding: Set by user. +- decoding: unused + + + +macroblock comparison function (not supported yet) +- encoding: Set by user. +- decoding: unused + + + +subpixel motion estimation comparison function +- encoding: Set by user. +- decoding: unused + + + +motion estimation comparison function +- encoding: Set by user. +- decoding: unused + + + +debug +- encoding: Set by user. +- decoding: Set by user. + + + +debug +- encoding: Set by user. +- decoding: Set by user. + + + +the picture in the bitstream +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +sample aspect ratio (0 if unknown) +That is the width of a pixel divided by the height of the pixel. +Numerator and denominator must be relatively prime and smaller than 256 for some video standards. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +prediction method (needed for huffyuv) +- encoding: Set by user. +- decoding: unused + + + +bits per sample/pixel from the demuxer (needed for huffyuv). +- encoding: Set by libavcodec. +- decoding: Set by user. + + + + dsp_mask could be add used to disable unwanted CPU features + CPU features (i.e. MMX, SSE. ...) + + With the FORCE flag you may instead enable given CPU features. + (Dangerous: Usable in case of misdetection, improper usage however will + result into program crash.) + + + +error concealment flags +- encoding: unused +- decoding: Set by user. + + + +slice offsets in the frame in bytes +- encoding: Set/allocated by libavcodec. +- decoding: Set/allocated by user (or NULL). + + + +slice count +- encoding: Set by libavcodec. +- decoding: Set by user (or 0). + + + +IDCT algorithm, see FF_IDCT_* below. +- encoding: Set by user. +- decoding: Set by user. + + + +darkness masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +p block masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +spatial complexity masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +temporary complexity masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +luminance masking (0-> disabled) +- encoding: Set by user. +- decoding: unused + + + +DCT algorithm, see FF_DCT_* below +- encoding: Set by user. +- decoding: unused + + + +initial complexity for pass1 ratecontrol +- encoding: Set by user. +- decoding: unused + + + +qscale offset between P and I-frames +- encoding: Set by user. +- decoding: unused + + + +decoder bitstream buffer size +- encoding: Set by user. +- decoding: unused + + + +minimum bitrate +- encoding: Set by user. +- decoding: unused + + + +maximum bitrate +- encoding: Set by user. +- decoding: unused + + + +rate control equation +- encoding: Set by user +- decoding: unused + + + +ratecontrol override, see RcOverride +- encoding: Allocated/set/freed by user. +- decoding: unused + + + +ratecontrol qmin qmax limiting method +0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax. +- encoding: Set by user. +- decoding: unused + + + +pass2 encoding statistics input buffer +Concatenated stuff from stats_out of pass1 should be placed here. +- encoding: Allocated/set/freed by user. +- decoding: unused + + + +pass1 encoding statistics output buffer +- encoding: Set by libavcodec. +- decoding: unused + + + +0-> h263 quant 1-> mpeg quant +- encoding: Set by user. +- decoding: unused + + + +If true, only parsing is done. The frame data is returned. +Only MPEG audio decoders support this now. +- encoding: unused +- decoding: Set by user + + + +number of bytes per packet if constant and known or 0 +Used by some WAV based audio codecs. + + + +Size of the frame reordering buffer in the decoder. +For MPEG-2 it is 1 IPB or 0 low delay IP. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +Called to release buffers which were allocated with get_buffer. +A released buffer can be reused in get_buffer(). +pic.data[*] must be set to NULL. +May be called from a different thread if frame multithreading is used, +but not by more than one thread at once, so does not need to be reentrant. +- encoding: unused +- decoding: Set by libavcodec, user can override. + + + + Called at the beginning of each frame to get a buffer for it. + + The function will set AVFrame.data[], AVFrame.linesize[]. + AVFrame.extended_data[] must also be set, but it should be the same as + AVFrame.data[] except for planar audio with more channels than can fit + in AVFrame.data[]. In that case, AVFrame.data[] shall still contain as + many data pointers as it can hold. + + if CODEC_CAP_DR1 is not set then get_buffer() must call + avcodec_default_get_buffer() instead of providing buffers allocated by + some other means. + + AVFrame.data[] should be 32- or 16-byte-aligned unless the CPU doesn't + need it. avcodec_default_get_buffer() aligns the output buffer properly, + but if get_buffer() is overridden then alignment considerations should + be taken into account. + + @see avcodec_default_get_buffer() + + Video: + + If pic.reference is set then the frame will be read later by libavcodec. + avcodec_align_dimensions2() should be used to find the required width and + height, as they normally need to be rounded up to the next multiple of 16. + + If frame multithreading is used and thread_safe_callbacks is set, + it may be called from a different thread, but not from more than one at + once. Does not need to be reentrant. + + @see release_buffer(), reget_buffer() + @see avcodec_align_dimensions2() + + Audio: + + Decoders request a buffer of a particular size by setting + AVFrame.nb_samples prior to calling get_buffer(). The decoder may, + however, utilize only part of the buffer by setting AVFrame.nb_samples + to a smaller value in the output frame. + + Decoders cannot use the buffer after returning from + avcodec_decode_audio4(), so they will not call release_buffer(), as it + is assumed to be released immediately upon return. + + As a convenience, av_samples_get_buffer_size() and + av_samples_fill_arrays() in libavutil may be used by custom get_buffer() + functions to find the required data size and to fill data pointers and + linesize. In AVFrame.linesize, only linesize[0] may be set for audio + since all planes must be the same size. + + @see av_samples_get_buffer_size(), av_samples_fill_arrays() + + - encoding: unused + - decoding: Set by libavcodec, user can override. + + + +Error recognition; higher values will detect more errors but may +misdetect some more or less valid parts as errors. +- encoding: unused +- decoding: Set by user. + + + +qscale offset between IP and B-frames +- encoding: Set by user. +- decoding: unused + + + +strictly follow the standard (MPEG4, ...). +- encoding: Set by user. +- decoding: Set by user. +Setting this to STRICT or higher means the encoder and decoder will +generally do stupid things, whereas setting it to unofficial or lower +will mean the encoder might produce output that is not supported by all +spec-compliant decoders. Decoders don't differentiate between normal, +unofficial and experimental (that is, they always try to decode things +when they can) unless they are explicitly asked to behave stupidly +(=strictly conform to the specs) + + + +chroma single coeff elimination threshold +- encoding: Set by user. +- decoding: unused + + + +luma single coefficient elimination threshold +- encoding: Set by user. +- decoding: unused + + + +Work around bugs in encoders which sometimes cannot be detected automatically. +- encoding: Set by user +- decoding: Set by user + + + +Private data of the user, can be used to carry app specific stuff. +- encoding: Set by user. +- decoding: Set by user. + + + +number of bits used for the previously encoded frame +- encoding: Set by libavcodec. +- decoding: unused + + + +obsolete FIXME remove + + +maximum number of B-frames between non-B-frames +Note: The output will be delayed by max_b_frames+1 relative to the input. +- encoding: Set by user. +- decoding: unused + + + +maximum quantizer difference between frames +- encoding: Set by user. +- decoding: unused + + + +maximum quantizer +- encoding: Set by user. +- decoding: unused + + + +minimum quantizer +- encoding: Set by user. +- decoding: unused + + + +Encoding: Number of frames delay there will be from the encoder input to + the decoder output. (we assume the decoder matches the spec) +Decoding: Number of frames delay in addition to what a standard decoder + as specified in the spec would produce. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +Samples per packet, initialized when calling 'init'. + + + +If non NULL, 'draw_horiz_band' is called by the libavcodec +decoder to draw a horizontal band. It improves cache usage. Not +all codecs can do that. You must check the codec capabilities +beforehand. +When multithreading is used, it may be called from multiple threads +at the same time; threads might draw different parts of the same AVFrame, +or multiple AVFrames, and there is no guarantee that slices will be drawn +in order. +The function is also used by hardware acceleration APIs. +It is called at least once during frame decoding to pass +the data needed for hardware render. +In that mode instead of pixel data, AVFrame points to +a structure specific to the acceleration API. The application +reads the structure and can change some fields to indicate progress +or mark state. +- encoding: unused +- decoding: Set by user. +@param height the height of the slice +@param y the y position of the slice +@param type 1->top field, 2->bottom field, 3->frame +@param offset offset into the AVFrame.data from which the slice should be read + + + +Pixel format, see PIX_FMT_xxx. +May be set by the demuxer if known from headers. +May be overriden by the decoder if it knows better. +- encoding: Set by user. +- decoding: Set by user if known, overridden by libavcodec if known + + +callback to negotiate the pixelFormat +@param fmt is the list of formats which are supported by the codec, +it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. +The first is always the native one. +@return the chosen format +- encoding: unused +- decoding: Set by user, if not set the native format will be chosen. + + + Supported pixel format. + + Only hardware accelerated formats are supported here. + + + +the number of pictures in a group of pictures, or 0 for intra_only +- encoding: Set by user. +- decoding: unused + + + +picture width / height. +- encoding: MUST be set by user. +- decoding: Set by libavcodec. +Note: For compatibility it is possible to set this instead of +coded_width/height before decoding. + + + +This is the fundamental unit of time (in seconds) in terms +of which frame timestamps are represented. For fixed-fps content, +timebase should be 1/framerate and timestamp increments should be +identically 1. +- encoding: MUST be set by user. +- decoding: Set by libavcodec. + + + +some codecs need / can use extradata like Huffman tables. +mjpeg: Huffman tables +rv10: additional flags +mpeg4: global headers (they can be in the bitstream or here) +The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger +than extradata_size to avoid prolems if it is read with the bitstream reader. +The bytewise contents of extradata must not depend on the architecture or CPU endianness. +- encoding: Set/allocated/freed by libavcodec. +- decoding: Set/allocated/freed by user. + + + +Motion estimation algorithm used for video coding. +1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), +8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] +- encoding: MUST be set by user. +- decoding: unused + + + +Some codecs need additional format info. It is stored here. +If any muxer uses this then ALL demuxers/parsers AND encoders for the +specific codec MUST set it correctly otherwise stream copy breaks. +In general use of this field by muxers is not recommended. +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. (FIXME: Is this OK?) + + + +CODEC_FLAG_*. +- encoding: Set by user. +- decoding: Set by user. + + + +number of bits the bitstream is allowed to diverge from the reference. + the reference can be CBR (for CBR pass1) or VBR (for pass2) +- encoding: Set by user; unused for constant quantizer encoding. +- decoding: unused + + + +the average bitrate +- encoding: Set by user; unused for constant quantizer encoding. +- decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream. + + + +information on struct for av_log +- set by avcodec_alloc_context3 + + + +reordered pos from the last AVPacket that has been input into the decoder +Code outside libavcodec should access this field using: + av_opt_ptr(avcodec_get_frame_class(), frame, "pkt_pos"); +- encoding: unused +- decoding: Read by user. + + + +frame timestamp estimated using various heuristics, in stream time base +Code outside libavcodec should access this field using: + av_opt_ptr(avcodec_get_frame_class(), frame, "best_effort_timestamp"); +- encoding: unused +- decoding: set by libavcodec, read by user. + + + +format of the frame, -1 if unknown or unset +Values correspond to enum PixelFormat for video frames, +enum AVSampleFormat for audio) +- encoding: unused +- decoding: Read by user. + + + +width and height of the video frame +- encoding: unused +- decoding: Read by user. + + + +sample aspect ratio for the video frame, 0/1 if unknown\unspecified +- encoding: unused +- decoding: Read by user. + + + + pointers to the data planes/channels. + + For video, this should simply point to data[]. + + For planar audio, each channel has a separate data pointer, and + linesize[0] contains the size of each channel buffer. + For packed audio, there is just one data pointer, and linesize[0] + contains the total size of the buffer for all channels. + + Note: Both data and extended_data will always be set by get_buffer(), + but for planar audio with more channels that can fit in data, + extended_data must be used by the decoder in order to access all + channels. + + encoding: unused + decoding: set by AVCodecContext.get_buffer() + + + +number of audio samples (per channel) described by this frame +- encoding: unused +- decoding: Set by libavcodec + + + +used by multithreading to store frame-specific info +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +the AVCodecContext which ff_thread_get_buffer() was last called on +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + +main external API structure. +New fields can be added to the end with minor version bumps. +Removal, reordering and changes to existing fields require a major +version bump. +Please use AVOptions (av_opt* / av_set/get*()) to access these fields from user +applications. +sizeof(AVCodecContext) must not be used outside libav*. + + + +dts from the last AVPacket that has been input into the decoder +- encoding: unused +- decoding: Read by user. + + + +reordered pts from the last AVPacket that has been input into the decoder +- encoding: unused +- decoding: Read by user. + + + +hardware accelerator private data (FFmpeg-allocated) +- encoding: unused +- decoding: Set by libavcodec + + + +reordered opaque 64bit (generally an integer or a double precision float +PTS but can be anything). +The user sets AVCodecContext.reordered_opaque to represent the input at +that time, +the decoder reorders values as needed and sets AVFrame.reordered_opaque +to exactly one of the values provided by the user through AVCodecContext.reordered_opaque +@deprecated in favor of pkt_pts +- encoding: unused +- decoding: Read by user. + + + +motion reference frame index +the order in which these are stored can depend on the codec. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +DCT coefficients +- encoding: unused +- decoding: Set by libavcodec. + + + +codec suggestion on buffer type if != 0 +- encoding: unused +- decoding: Set by libavcodec. (before get_buffer() call)). + + + +Tell user application that palette has changed from previous frame. +- encoding: ??? (no palette-enabled encoder yet) +- decoding: Set by libavcodec. (default 0). + + + +Pan scan. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +If the content is interlaced, is top field displayed first. +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +The content of the picture is interlaced. +- encoding: Set by user. +- decoding: Set by libavcodec. (default 0) + + + +When decoding, this signals how much the picture must be delayed. +extra_delay = repeat_pict / (2*fps) +- encoding: unused +- decoding: Set by libavcodec. + + + +for some private data of the user +- encoding: unused +- decoding: Set by user. + + + +log2 of the size of the block which a single vector in motion_val represents: +(4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2) +- encoding: unused +- decoding: Set by libavcodec. + + + +macroblock type table +mb_type_base + mb_width + 2 +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +mbskip_table[mb]>=1 if MB didn't change +stride= mb_width = (width+15)>>4 +- encoding: unused +- decoding: Set by libavcodec. + + + +QP store stride +- encoding: unused +- decoding: Set by libavcodec. + + + +QP table +- encoding: unused +- decoding: Set by libavcodec. + + + +is this picture used as reference +The values for this are the same as the MpegEncContext.picture_structure +variable, that is 1->top field, 2->bottom field, 3->frame/both fields. +Set to 4 for delayed, non-reference frames. +- encoding: unused +- decoding: Set by libavcodec. (before get_buffer() call)). + + + +@deprecated unused + + + +quality (between 1 (good) and FF_LAMBDA_MAX (bad)) +- encoding: Set by libavcodec. for coded_picture (and set by user for input). +- decoding: Set by libavcodec. + + + +picture number in display order +- encoding: set by +- decoding: Set by libavcodec. + + + +picture number in bitstream order +- encoding: set by +- decoding: Set by libavcodec. + + + +presentation timestamp in time_base units (time when frame should be shown to user) +If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed. +- encoding: MUST be set by user. +- decoding: Set by libavcodec. + + + +1 -> keyframe, 0-> not +- encoding: Set by libavcodec. +- decoding: Set by libavcodec. + + + +pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer. +This isn't used by libavcodec unless the default get/release_buffer() is used. +- encoding: +- decoding: + + + + Size, in bytes, of the data for each picture/channel plane. + + For audio, only linesize[0] may be set. For planar audio, each channel + plane must be the same size. + + - encoding: Set by user (video only) + - decoding: set by AVCodecContext.get_buffer() + + + +pointer to the picture/channel planes. +This might be different from the first allocated byte +- encoding: Set by user +- decoding: set by AVCodecContext.get_buffer() + + + +Audio Video Frame. +New fields can be added to the end of AVFRAME with minor version +bumps. Similarly fields that are marked as to be only accessed by +av_opt_ptr() can be reordered. This allows 2 forks to add fields +without breaking compatibility with each other. +Removal, reordering and changes in the remaining cases require +a major version bump. +sizeof(AVFrame) must not be used outside libavcodec. + + + + Time difference in AVStream->time_base units from the pts of this + packet to the point at which the output from the decoder has converged + independent from the availability of previous frames. That is, the + frames are virtually identical no matter if decoding started from + the very first frame or from this keyframe. + Is AV_NOPTS_VALUE if unknown. + This field is not the display duration of the current packet. + This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + set. + + The purpose of this field is to allow seeking in streams that have no + keyframes in the conventional sense. It corresponds to the + recovery point SEI in H.264 and match_time_delta in NUT. It is also + essential for some types of subtitle streams to ensure that all + subtitles are correctly displayed after seeking. + + + +Duration of this packet in AVStream->time_base units, 0 if unknown. +Equals next_pts - this_pts in presentation order. + + + +A combination of AV_PKT_FLAG values + + + +Decompression timestamp in AVStream->time_base units; the time at which +the packet is decompressed. +Can be AV_NOPTS_VALUE if it is not stored in the file. + + + +Presentation timestamp in AVStream->time_base units; the time at which +the decompressed packet will be presented to the user. +Can be AV_NOPTS_VALUE if it is not stored in the file. +pts MUST be larger or equal to dts as presentation cannot happen before +decompression, unless one wants to view hex dumps. Some formats misuse +the terms dts and pts/cts to mean something different. Such timestamps +must be converted to true pts/dts before they are stored in AVPacket. + + + +position of the top left corner in 1/16 pel for up to 3 fields/frames +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +width and height in 1/16 pel +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +id +- encoding: Set by user. +- decoding: Set by libavcodec. + + + +The parent program guarantees that the input for B-frames containing +streams is not written to for at least s->max_b_frames+1 frames, if +this is not set the input will be copied. + +@defgroup deprecated_flags Deprecated codec flags +Use corresponding private codec options instead. +@{ + +@} + +Codec uses get_buffer() for allocating buffers and supports custom allocators. +If not set, it might not use get_buffer() at all or use operations that +assume the buffer was allocated by avcodec_default_get_buffer. + + Encoder or decoder requires flushing with NULL input at the end in order to + give the complete and correct output. + + NOTE: If this flag is not set, the codec is guaranteed to never be fed with + with NULL data. The user can still send NULL data to the public encode + or decode function, but libavcodec will not pass it along to the codec + unless this flag is set. + + Decoders: + The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, + avpkt->size=0 at the end to get the delayed data until the decoder no longer + returns frames. + + Encoders: + The encoder needs to be fed with NULL data at the end of encoding until the + encoder no longer returns data. + + NOTE: For encoders implementing the AVCodec.encode2() function, setting this + flag also means that the encoder must set the pts and duration for + each output packet. If this flag is not set, the pts and duration will + be determined by libavcodec from the input frame. + +Codec can be fed a final frame with a smaller size. +This can be used to prevent truncation of the last audio samples. + +Codec can export data for HW decoding (VDPAU). + +Codec can output multiple frames per AVPacket +Normally demuxers return one frame at a time, demuxers which do not do +are connected to a parser to split what they return into proper frames. +This flag is reserved to the very rare category of codecs which have a +bitstream that cannot be split into frames without timeconsuming +operations like full decoding. Demuxers carring such bitstreams thus +may return multiple frames in a packet. This has many disadvantages like +prohibiting stream copy in many cases thus it should only be considered +as a last resort. + +Codec is experimental and is thus avoided in favor of non experimental +encoders + +Codec should fill in channel configuration and samplerate instead of container + +Codec is able to deal with negative linesizes + +Codec supports frame-level multithreading. + +Codec supports slice-based (or partition-based) multithreading. + +Codec supports changed parameters at any point. + +Codec supports avctx->thread_count == 0 (auto). + +Audio encoder supports receiving a different number of samples in each call. + +Codec is lossless. + +Pan Scan area. +This specifies the area which should be displayed. +Note there may be multiple such areas for one frame. + + + +LPC analysis type + + +Determine which LPC analysis algorithm to use. +- encoding: Set by user +- decoding: unused + + + +X X 3 4 X X are luma samples, + 1 2 1-6 are possible chroma positions +X X 5 6 X 0 is undefined/unknown position + + +This defines the location of chroma samples. +- encoding: Set by user +- decoding: Set by libavcodec + + + +Return default channel layout for a given number of channels. + + + +Return the number of channels in the channel layout. + + + +@file +audio conversion routines + +@addtogroup lavu_audio +@{ + +@defgroup channel_masks Audio channel masks +@{ + +Channel mask value used for AVCodecContext.request_channel_layout + to indicate that the user requests the channel order of the decoder output + to be the native codec channel order. +@} +@defgroup channel_mask_c Audio channel convenience macros +@{ + +@} + + * Return a channel layout id that matches name, 0 if no match. + * name can be one or several of the following notations, + * separated by '+' or '|': + * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0, + * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix); + * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC, + * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR); + * - a number of channels, in decimal, optionnally followed by 'c', yielding + * the default channel layout for that number of channels (@see + * av_get_default_channel_layout); + * - a channel layout mask, in hexadecimal starting with "0x" (see the + * AV_CH_* macros). + + Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7" + + + +@} + +Those FF_API_* defines are not part of public API. +They may change, break or disappear at any time. + + @defgroup libavc Encoding/Decoding Library + @{ + + @defgroup lavc_decoding Decoding + @{ + @} + + @defgroup lavc_encoding Encoding + @{ + @} + + @defgroup lavc_codec Codecs + @{ + @defgroup lavc_codec_native Native Codecs + @{ + @} + @defgroup lavc_codec_wrappers External library wrappers + @{ + @} + @defgroup lavc_codec_hwaccel Hardware Accelerators bridge + @{ + @} + @} + @defgroup lavc_internal Internal + @{ + @} + @} + + + Identify the syntax and semantics of the bitstream. + The principle is roughly: + Two decoders with the same ID can decode the same streams. + Two encoders with the same ID can encode compatible streams. + There may be slight deviations from the principle due to implementation + details. + + If you add a codec ID to this list, add it so that + 1. no value of a existing codec ID changes (that would break ABI), + 2. Give it a value which when taken as ASCII is recognized uniquely by a human as this specific codec. + This ensures that 2 forks can independantly add CodecIDs without producing conflicts. + + + Codec implemented by the hardware accelerator. + + See CODEC_ID_xxx + + +Forced video codec_id. +Demuxing: Set by user. + + +Forced audio codec_id. +Demuxing: Set by user. + + +Forced subtitle codec_id. +Demuxing: Set by user. + + +@} + + +Guess the codec ID based upon muxer and filename. + + + Get the CodecID for the given codec tag tag. + If no codec id is found returns CODEC_ID_NONE. + + @param tags list of supported codec_id-codec_tag pairs, as stored + in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + + + +Free all the memory allocated for an AVDictionary struct +and all keys and values. + + + +Copy entries from one AVDictionary struct into another. +@param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + this function will allocate a struct for you and put it in *dst +@param src pointer to source AVDictionary struct +@param flags flags to use when setting entries in *dst +@note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + + + + Get a dictionary entry with matching key. + + @param prev Set to the previous matching element to find the next. + If set to NULL the first matching element is returned. + @param flags Allows case as well as suffix-insensitive comparisons. + @return Found entry or NULL, changing key or value leads to undefined behavior. + + + +Disables cpu detection and forces the specified flags. + + + +Return the flags which specify extensions supported by the CPU. + + + + Fill channel data pointers and linesize for samples with sample + format sample_fmt. + + The pointers array is filled with the pointers to the samples data: + for planar, set the start point of each channel's data within the buffer, + for packed, set the start point of the entire buffer only. + + The linesize array is filled with the aligned size of each channel's data + buffer for planar layout, or the aligned size of the buffer for all channels + for packed layout. + + @param[out] audio_data array to be filled with the pointer for each channel + @param[out] linesize calculated linesize + @param buf the pointer to a buffer containing the samples + @param nb_channels the number of channels + @param nb_samples the number of samples in a single channel + @param sample_fmt the sample format + @param align buffer size alignment (1 = no alignment required) + @return 0 on success or a negative error code on failure + + + + Get the required buffer size for the given audio parameters. + + @param[out] linesize calculated linesize, may be NULL + @param nb_channels the number of channels + @param nb_samples the number of samples in a single channel + @param sample_fmt the sample format + @return required buffer size, or negative error code on failure + + + + Check if the sample format is planar. + + @param sample_fmt the sample format to inspect + @return 1 if the sample format is planar, 0 if it is interleaved + + + + Return number of bytes per sample. + + @param sample_fmt the sample format + @return number of bytes per sample or zero if unknown for the given + sample format + + + +@deprecated Use av_get_bytes_per_sample() instead. + + + + Generate a string corresponding to the sample format with + sample_fmt, or a header if sample_fmt is negative. + + @param buf the buffer where to write the string + @param buf_size the size of buf + @param sample_fmt the number of the sample format to print the + corresponding info string, or a negative value to print the + corresponding header. + @return the pointer to the filled buffer or NULL if sample_fmt is + unknown or in case of other errors + + + +Return the name of sample_fmt, or NULL if sample_fmt is not +recognized. + + + +@} +@} + +all in native-endian format + + +Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE +on error. + + +audio sample format +- encoding: Set by user. +- decoding: Set by libavcodec. + + +desired sample format +- encoding: Not used. +- decoding: Set by user. +Decoder will decode to this format if it can. + + + +Return x default pointer in case p is NULL. + + + +av_dlog macros +Useful to print debug messages that shouldn't get compiled in normally. + +Skip repeated messages, this requires the user app to use av_log() instead of +(f)printf as the 2 would otherwise interfere and lead to +"Last message repeated x times" messages below (f)printf messages with some +bad luck. +Also to receive the last, "last repeated" line if any, the user app must +call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end + + + +Format a line of log the same way as the default callback. +@param line buffer to receive the formated line +@param line_size size of the buffer +@param print_prefix used to store whether the prefix must be printed; + must point to a persistent integer initially set to 1 + + + +Something went really wrong and we will crash now. + +Something went wrong and recovery is not possible. +For example, no header was found for a format which depends +on headers or an illegal combination of parameters is used. + +Something went wrong and cannot losslessly be recovered. +However, not all future data is affected. + +Something somehow does not look correct. This may or may not +lead to problems. An example would be the use of '-vstrict -2'. + +Stuff which is only useful for libav* developers. + + Send the specified message to the log if the level is less than or equal + to the current av_log_level. By default, all logging messages are sent to + stderr. This behavior can be altered by setting a different av_vlog callback + function. + + @param avcl A pointer to an arbitrary struct of which the first field is a + pointer to an AVClass struct. + @param level The importance level of the message, lower values signifying + higher importance. + @param fmt The format string (printf-compatible) that specifies how + subsequent arguments are converted to output. + @see av_vlog + + + +Return next AVOptions-enabled child or NULL + + + +Offset in the structure where a pointer to the parent context for loging is stored. +for example a decoder that uses eval.c could pass its AVCodecContext to eval as such +parent context. And a av_log() implementation could then display the parent context +can be NULL of course + + + +Offset in the structure where log_level_offset is stored. +0 means there is no such variable + + + +LIBAVUTIL_VERSION with which this structure was created. +This is used to allow fields to be added without requiring major +version bumps everywhere. + + + + a pointer to the first option specified in the class if any or NULL + + @see av_set_default_options() + + + +A pointer to a function which returns the name of a context +instance ctx associated with the class. + + + +The name of the class; usually it is the same name as the +context structure type to which the AVClass is associated. + + + +Describe the class of an AVClass context structure. That is an +arbitrary struct of which the first field is a pointer to an +AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). + + + Return an AVClass corresponding to next potential + AVOptions-enabled child. + + The difference between child_next and this is that + child_next iterates over _already existing_ objects, while + child_class_next iterates over _all possible_ children. + + + +@} + + + + Compare 2 integers modulo mod. + That is we compare integers a and b for which only the least + significant log2(mod) bits are known. + + @param mod must be a power of 2 + @return a negative value if a is smaller than b + a positive value if a is greater than b + 0 if a equals b + + + +Compare 2 timestamps each in its own timebases. +The result of the function is undefined if one of the timestamps +is outside the int64_t range when represented in the others timebase. +@return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position + + + +Rescale a 64-bit integer by 2 rational numbers. + + + +Rescale a 64-bit integer with specified rounding. +A simple a*b/c isn't possible as it can overflow. + + + +Rescale a 64-bit integer with rounding to nearest. +A simple a*b/c isn't possible as it can overflow. + + + +@} + +@addtogroup lavu_math +@{ + + + +Find the nearest value in q_list to q. +@param q_list an array of rationals terminated by {0, 0} +@return the index of the nearest value found in the array + + + +@return 1 if q1 is nearer to q than q2, -1 if q2 is nearer +than q1, 0 if they have the same distance. + + + + Convert a double precision floating point number to a rational. + inf is expressed as {1,0} or {-1,0} depending on the sign. + + @param d double to convert + @param max the maximum allowed numerator and denominator + @return (AVRational) d + + + +Subtract one rational from another. +@param b first rational +@param c second rational +@return b-c + + + +Add two rationals. +@param b first rational +@param c second rational +@return b+c + + + +Divide one rational by another. +@param b first rational +@param c second rational +@return b/c + + + +Multiply two rationals. +@param b first rational +@param c second rational +@return b*c + + + +Convert rational to double. +@param a rational to convert +@return (double) a + + + +Set the maximum size that may me allocated in one block. + + + +Multiply two size_t values checking for overflow. +@return 0 if success, AVERROR(EINVAL) if overflow. + + + + Add an element to a dynamic array. + + @param tab_ptr Pointer to the array. + @param nb_ptr Pointer to the number of elements in the array. + @param elem Element to be added. + + + +Free a memory block which has been allocated with av_malloc(z)() or +av_realloc() and set the pointer pointing to it to NULL. +@param ptr Pointer to the pointer to the memory block which should +be freed. +@see av_free() + + + +Duplicate the string s. +@param s string to be duplicated +@return Pointer to a newly allocated string containing a +copy of s or NULL if the string cannot be allocated. + + + +Allocate a block of nmemb * size bytes with alignment suitable for all +memory accesses (including vectors if available on the CPU) and +zero all the bytes of the block. +The allocation will fail if nmemb * size is greater than or equal +to INT_MAX. +@param nmemb +@param size +@return Pointer to the allocated block, NULL if it cannot be allocated. + + + +Allocate a block of size bytes with alignment suitable for all +memory accesses (including vectors if available on the CPU) and +zero all the bytes of the block. +@param size Size in bytes for the memory block to be allocated. +@return Pointer to the allocated block, NULL if it cannot be allocated. +@see av_malloc() + + + +Free a memory block which has been allocated with av_malloc(z)() or +av_realloc(). +@param ptr Pointer to the memory block which should be freed. +@note ptr = NULL is explicitly allowed. +@note It is recommended that you use av_freep() instead. +@see av_freep() + + + +Allocate or reallocate a block of memory. +This function does the same thing as av_realloc, except: +- It takes two arguments and checks the result of the multiplication for + integer overflow. +- It frees the input block in case of failure, thus avoiding the memory + leak with the classic "buf = realloc(buf); if (!buf) return -1;". + + + +Allocate or reallocate a block of memory. +If ptr is NULL and size > 0, allocate a new block. If +size is zero, free the memory block pointed to by ptr. +@param ptr Pointer to a memory block already allocated with +av_malloc(z)() or av_realloc() or NULL. +@param size Size in bytes for the memory block to be allocated or +reallocated. +@return Pointer to a newly reallocated block or NULL if the block +cannot be reallocated or the function is used to free the memory block. +@see av_fast_realloc() + + + +@} + +@addtogroup lavu_mem +@{ + +Allocate a block of size bytes with alignment suitable for all +memory accesses (including vectors if available on the CPU). +@param size Size in bytes for the memory block to be allocated. +@return Pointer to the allocated block, NULL if the block cannot +be allocated. +@see av_mallocz() + + + + Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. + + @param val Output value, must be an lvalue of type uint32_t. + @param GET_BYTE Expression reading one byte from the input. + Evaluated up to 7 times (4 for the currently + assigned Unicode range). With a memory buffer + input, this could be *ptr++. + @param ERROR Expression to be evaluated on invalid input, + typically a goto statement. + + Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. + + @param val Output value, must be an lvalue of type uint32_t. + @param GET_16BIT Expression returning two bytes of UTF-16 data converted + to native byte order. Evaluated one or two times. + @param ERROR Expression to be evaluated on invalid input, + typically a goto statement. + +@def PUT_UTF8(val, tmp, PUT_BYTE) +Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). +@param val is an input-only argument and should be of type uint32_t. It holds +a UCS-4 encoded Unicode character that is to be converted to UTF-8. If +val is given as a function it is executed only once. +@param tmp is a temporary variable and should be of type uint8_t. It +represents an intermediate value during conversion that is to be +output by PUT_BYTE. +@param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. +It could be a function or a statement, and uses tmp as the input byte. +For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be +executed up to 4 times for values in the valid UTF-8 range and up to +7 times in the general case, depending on the length of the converted +Unicode character. + +@def PUT_UTF16(val, tmp, PUT_16BIT) +Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). +@param val is an input-only argument and should be of type uint32_t. It holds +a UCS-4 encoded Unicode character that is to be converted to UTF-16. If +val is given as a function it is executed only once. +@param tmp is a temporary variable and should be of type uint16_t. It +represents an intermediate value during conversion that is to be +output by PUT_16BIT. +@param PUT_16BIT writes the converted UTF-16 data to any proper destination +in desired endianness. It could be a function or a statement, and uses tmp +as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" +PUT_BYTE will be executed 1 or 2 times depending on input character. + +@file +memory handling functions + +@file +error code definitions + + @addtogroup lavu_error + + @{ + +This is semantically identical to AVERROR_BUG +it has been introduced in Libav after our AVERROR_BUG and with a modified value. + + Put a description of the AVERROR code errnum in errbuf. + In case of failure the global variable errno is set to indicate the + error. Even in case of failure av_strerror() will print a generic + error message indicating the errnum provided to errbuf. + + @param errnum error code to describe + @param errbuf buffer to which description is written + @param errbuf_size the size in bytes of errbuf + @return 0 on success, a negative value if a description for errnum + cannot be found + + + +Count number of bits set to one in x +@param x value to count bits of +@return the number of bits set to one in x + + + +Count number of bits set to one in x +@param x value to count bits of +@return the number of bits set to one in x + + + +Compute ceil(log2(x)). + * @param x value used to compute ceil(log2(x)) + * @return computed ceiling of log2(x) + + + +Clip a float value into the amin-amax range. +@param a value to clip +@param amin minimum value of the clip range +@param amax maximum value of the clip range +@return clipped value + + + +Clip a signed integer to an unsigned power of two range. +@param a value to clip +@param p bit position to clip at +@return clipped value + + + +Clip a signed 64-bit integer value into the -2147483648,2147483647 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the -32768,32767 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the 0-65535 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the -128,127 range. +@param a value to clip +@return clipped value + + + +Clip a signed integer value into the 0-255 range. +@param a value to clip +@return clipped value + + + +@file +common internal and external API header + +Clip a signed integer value into the amin-amax range. +@param a value to clip +@param amin minimum value of the clip range +@param amax maximum value of the clip range +@return clipped value + + + +@file +Macro definitions for various function/variable attributes + +Disable warnings about deprecated features +This is useful for sections of code kept for backward compatibility and +scheduled for removal. + +Mark a variable as used and prevent the compiler from optimizing it +away. This is useful for variables accessed only from inline +assembler without the compiler being aware. + + + +@} + +@file +common internal and external API header + + + + Return a single letter to describe the given picture type + pict_type. + + @param[in] pict_type the picture type @return a single character + representing the picture type, '?' if pict_type is unknown + + + + @defgroup lavu_const Constants + @{ + + @defgroup lavu_enc Encoding specific + + @note those definition should move to avcodec + @{ + + @} + @defgroup lavu_time Timestamp specific + + FFmpeg internal timebase and timestamp definitions + + @{ + + @brief Undefined timestamp value + + Usually reported by demuxer that work on containers that do not provide + either pts or dts. + +Internal time base represented as integer + +Internal time base represented as fractional value + + @} + @} + @defgroup lavu_picture Image related + + AVPicture types, pixel formats and basic image planes manipulation. + + @{ + + +Picture type of the frame, see ?_TYPE below. +- encoding: Set by libavcodec. for coded_picture (and set by user for input). +- decoding: Set by libavcodec. + + + +Return a string describing the media_type enum, NULL if media_type +is unknown. + + + +@} + +@addtogroup lavu_media Media Type +@brief Media Type + + + Type of codec implemented by the hardware accelerator. + + See AVMEDIA_TYPE_xxx + + +Get the type of the given codec. + + + +Return the libavutil license. + + + +Return the libavutil build-time configuration. + + + +@file +external API header + + @mainpage + + @section libav_intro Introduction + + This document describe the usage of the different libraries + provided by FFmpeg. + + @li @ref libavc "libavcodec" encoding/decoding library + @li @subpage libavfilter graph based frame editing library + @li @ref libavf "libavformat" I/O and muxing/demuxing library + @li @ref lavd "libavdevice" special devices muxing/demuxing library + @li @ref lavu "libavutil" common utility library + @li @subpage libpostproc post processing library + @li @subpage libswscale color conversion and scaling library + + + @defgroup lavu Common utility functions + + @brief + libavutil contains the code shared across all the other FFmpeg + libraries + + @note In order to use the functions provided by avutil you must include + the specific header. + + @{ + + @defgroup lavu_crypto Crypto and Hashing + + @{ + @} + + @defgroup lavu_math Maths + @{ + + @} + + @defgroup lavu_string String Manipulation + + @{ + + @} + + @defgroup lavu_mem Memory Management + + @{ + + @} + + @defgroup lavu_data Data Structures + @{ + + @} + + @defgroup lavu_audio Audio related + + @{ + + @} + + @defgroup lavu_error Error Codes + + @{ + + @} + + @defgroup lavu_misc Other + + @{ + + @defgroup lavu_internal Internal + + Not exported functions, for internal usage only + + @{ + + @} + + @defgroup preproc_misc Preprocessor String Macros + + String manipulation macros + + @{ + +@} + + @defgroup version_utils Library Version Macros + + Useful to check and match library version in order to maintain + backward compatibility. + + @{ + + @} + + @defgroup lavu_ver Version and Build diagnostics + + Macros and function useful to check at compiletime and at runtime + which version of libavutil is in use. + + @{ + + @} + + @defgroup depr_guards Deprecation guards + Those FF_API_* defines are not part of public API. + They may change, break or disappear at any time. + + They are used mostly internally to mark code that will be removed + on the next major version. + + @{ + +@} + +@addtogroup lavu_ver +@{ + +Return the LIBAVUTIL_VERSION_INT constant. + + + + +Close currently opened video file if any. + + + + +Write new video frame with a specific timestamp into currently opened video file. + + Bitmap to add as a new video frame. + Frame timestamp, total time since recording started. + + The specified bitmap must be either color 24 or 32 bpp image or grayscale 8 bpp (indexed) image. + + The parameter allows user to specify presentation +time of the frame being saved. However, it is user's responsibility to make sure the value is increasing +over time. + + + Thrown if no video file was open. + The provided bitmap must be 24 or 32 bpp color image or 8 bpp grayscale image. + Bitmap size must be of the same as video size, which was specified on opening video file. + A error occurred while writing new video frame. See exception message. + + + +Write new video frame into currently opened video file. + + Bitmap to add as a new video frame. + + The specified bitmap must be either color 24 or 32 bpp image or grayscale 8 bpp (indexed) image. + + Thrown if no video file was open. + The provided bitmap must be 24 or 32 bpp color image or 8 bpp grayscale image. + Bitmap size must be of the same as video size, which was specified on opening video file. + A error occurred while writing new video frame. See exception message. + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + Frame rate of the video file. + Video codec to use for compression. + Bit rate of the video stream. + + The methods creates new video file with the specified name. +If a file with such name already exists in the file system, it will be overwritten. + When adding new video frames using method, +the video frame must have width and height as specified during file opening. + + The bit rate parameter represents a trade-off value between video quality +and video file size. Higher bit rate value increase video quality and result in larger +file size. Smaller values result in opposite – worse quality and small video files. + + + Video file resolution must be a multiple of two. + Invalid video codec is specified. + A error occurred while creating new video file. See exception message. + Cannot open video file with the specified name. + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + Frame rate of the video file. + Video codec to use for compression. + + The methods creates new video file with the specified name. +If a file with such name already exists in the file system, it will be overwritten. + When adding new video frames using method, +the video frame must have width and height as specified during file opening. + + Video file resolution must be a multiple of two. + Invalid video codec is specified. + A error occurred while creating new video file. See exception message. + Cannot open video file with the specified name. + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + Frame rate of the video file. + + See documentation to the +for more information and the list of possible exceptions. + + The method opens the video file using +codec. + + + + + +Create video file with the specified name and attributes. + + Video file name to create. + Frame width of the video file. + Frame height of the video file. + + See documentation to the +for more information and the list of possible exceptions. + + The method opens the video file using +codec and 25 fps frame rate. + + + + + +Disposes the object and frees its resources. + + + + +Initializes a new instance of the class. + + + + +Object's finalizer. + + + + +The property specifies if a video file is opened or not by this instance of the class. + + + + +Codec to use for the video file. + + Thrown if no video file was open. + + + +Bit rate of the video stream. + + Thrown if no video file was open. + + + +Frame rate of the opened video file. + + Thrown if no video file was open. + + + +Frame height of the opened video file. + + Thrown if no video file was open. + + + +Frame width of the opened video file. + + Thrown if no video file was open. + + + +Class for writing video files utilizing FFmpeg library. + + + The class allows to write video files using FFmpeg library. + + Make sure you have FFmpeg binaries (DLLs) in the output folder of your application in order +to use this class successfully. FFmpeg binaries can be found in Externals folder provided with AForge.NET +framework's distribution. + + Sample usage: + +int width = 320; +int height = 240; + +// create instance of video writer +VideoFileWriter writer = new VideoFileWriter( ); +// create new video file +writer.Open( "test.avi", width, height, 25, VideoCodec.MPEG4 ); +// create a bitmap to save into the video file +Bitmap image = new Bitmap( width, height, PixelFormat.Format24bppRgb ); +// write 1000 video frames +for ( int i = 0; i < 1000; i++ ) +{ + image.SetPixel( i % width, i % height, Color.Red ); + writer.WriteVideoFrame( image ); +} +writer.Close( ); + + + + + +Enumeration of some video codecs from FFmpeg library, which are available for writing video files. + + + + +Raw (uncompressed) video. + + + + +MPEG-2 part 2. + + + + +Flash Video (FLV) / Sorenson Spark / Sorenson H.263. + + + + +H.263+ / H.263-1998 / H.263 version 2. + + + + +MPEG-4 part 2 Microsoft variant version 3. + + + + +MPEG-4 part 2 Microsoft variant version 2. + + + + +Windows Media Video 8. + + + + +Windows Media Video 7. + + + + +MPEG-4 part 2. + + + + +Default video codec, which FFmpeg library selects for the specified file format. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/Accord.Video.Kinect.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/Accord.Video.Kinect.3.0.2.nupkg new file mode 100644 index 0000000000..a24c05e9d Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/Accord.Video.Kinect.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/build/Accord.Video.Kinect.targets b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/build/Accord.Video.Kinect.targets new file mode 100644 index 0000000000..a236bdc85 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/build/Accord.Video.Kinect.targets @@ -0,0 +1,29 @@ + + + + + + + + x86 + + + + + $(PrepareForRunDependsOn); + CopyNativeBinaries + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/build/x86/FREENECT-LICENSE.txt/APACHE20 b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/build/x86/FREENECT-LICENSE.txt/APACHE20 new file mode 100644 index 0000000000..d64569567 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/build/x86/FREENECT-LICENSE.txt/APACHE20 @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/build/x86/freenect.dll b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/build/x86/freenect.dll new file mode 100644 index 0000000000..e3974ca6a Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/build/x86/freenect.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net35/Accord.Video.Kinect.dll b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net35/Accord.Video.Kinect.dll new file mode 100644 index 0000000000..dbaf67e44 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net35/Accord.Video.Kinect.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net35/Accord.Video.Kinect.xml b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net35/Accord.Video.Kinect.xml new file mode 100644 index 0000000000..7d8a3e893 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net35/Accord.Video.Kinect.xml @@ -0,0 +1,612 @@ + + + + Accord.Video.Kinect + + + + + Kinect's LED color options. + + + + + + The LED is off. + + + + + + The LED is on and has green color. + + + + + + The LED is on and has red color. + + + + + + The LED is on and has yellow color. + + + + + + The LED is blinking with green color. + + + + + + The LED is blinking from red to yellow color. + + + + + + Kinect's resolutions of video and depth cameras. + + + + + Low resolution. + + + + + Medium resolution. + + + + + Hight resolution. + + + + + The class provides access to Microsoft's Xbox Kinect + controller. + + + The class allows to manipulate Kinec device by changing its LED color, setting motor's + tilt value and accessing its camera. See and + classes, which provide access to actual video. + + + + In order to run correctly the class requires freenect.dll library + to be put into solution's output folder. This can be found within the AForge.NET framework's + distribution in Externals folder. + + Sample usage: + + // get Kinect device + Kinect kinectDevice = Kinect.GetDevice( 0 ); + // change LED color + kinectDevice.LedColor = LedColorOption.Yellow; + // set motor tilt angle to -10 degrees + kinectDevice.SetMotorTilt( -10 ); + // get video camera + KinectVideoCamera videoCamera = kinectDevice.GetVideoCamera( ); + + // see example for video camera also + + + + + + + Get initialized instance of the Kinect device. + + + ID of the Kinect device to get instance of, [0, ), + + Returns initialized Kinect device. Use method + when the device is no longer required. + + There is no Kinect device with specified ID connected to the system. + Failed connecting to the Kinect device specified ID. + + + + + Object finalizer/destructor makes sure unmanaged resource are freed if user did not call . + + + + + Dispose device freeing all associated unmanaged resources. + + + + + + Set color of Kinect's LED. + + + LED color to set. + + Some error occurred with the device. Check error message. + + + + + Set motor's tilt value. + + + Tilt value to set, [-31, 30] degrees. + + Motor tilt has to be in the [-31, 31] range. + Some error occurred with the device. Check error message. + + + + + Get accelerometer values for 3 axes. + + + X axis value on the accelerometer. + Y axis value on the accelerometer. + Z axis value on the accelerometer. + + Units of all 3 values are m/s2. The g value used + for calculations is taken as 9.80665 m/s2. + + + + + Get Kinect's video camera. + + + Returns Kinect's video camera. + + The method simply creates instance of the class + by calling its appropriate constructor. Use method + to start the video then. + + + + + Get Kinect's depth camera. + + + Returns Kinect's depth camera. + + The method simply creates instance of the class + by calling its appropriate constructor. Use method + to start the video then. + + + + + ID of the opened Kinect device. + + + + + + Number of Kinect devices available in the system. + + + + + Video source for Microsoft Kinect's depth sensor. + + + The video source captures depth data from Microsoft Kinect + depth sensor, which is aimed originally as a gaming device for XBox 360 platform. + + Prior to using the class, make sure you've installed Kinect's drivers + as described on Open Kinect + project's page. + + In order to run correctly the class requires freenect.dll library + to be put into solution's output folder. This can be found within the AForge.NET framework's + distribution in Externals folder. + + Sample usage: + + // create video source + KinectDepthCamera videoSource = new KinectDepthCamera( 0 ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of depth sensor to set. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of depth sensor to set. + Provide original depth image or colored depth map + (see property). + + + + + Start video source. + + + Starts video source and returns execution to caller. Video camera will be started + and will provide new video frames through the event. + + The specified resolution is not supported for the selected + mode of the Kinect depth sensor. + Could not connect to Kinect's depth sensor. + Another connection to the specified depth sensor is already running. + + + + + Signal video source to stop its work. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Wait for video source has stopped. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Stop video source. + + + The method stop the video source, so it no longer provides new video frames + and does not consume any resources. + + + + + + New frame event. + + + Notifies clients about new available frames from the video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Provide original depth image or colored depth map. + + + The property specifies if the video source should provide original data + provided by Kinect's depth sensor or provide colored depth map. If the property is set to + , then the video source will provide 16 bpp grayscale images, where + 11 least significant bits represent data provided by the sensor. If the property is + set to , then the video source will provide 24 bpp color images, + which represents depth map. In this case depth is encoded by color gradient: + white->red->yellow->green->cyan->blue->black. So colors which are closer to white represent + objects which are closer to the Kinect sensor, but colors which are closer to black represent + objects which are further away from Kinect. + + The property must be set before running the video source to take effect. + + Default value is set to . + + + + + + Resolution of depth sensor to set. + + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + A string identifying the video source. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Enumeration of video camera modes for the . + + + + + 24 bit per pixel RGB mode. + + + + + 8 bit per pixel Bayer mode. + + + + + 8 bit per pixel Infra Red mode. + + + + + Video source for Microsoft Kinect's video camera. + + + The video source captures video data from Microsoft Kinect + video camera, which is aimed originally as a gaming device for XBox 360 platform. + + Prior to using the class, make sure you've installed Kinect's drivers + as described on Open Kinect + project's page. + + In order to run correctly the class requires freenect.dll library + to be put into solution's output folder. This can be found within the AForge.NET framework's + distribution in Externals folder. + + Sample usage: + + // create video source + KinectVideoCamera videoSource = new KinectVideoCamera( 0 ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of video camera to set. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of video camera to set. + Sets video camera mode. + + + + + Start video source. + + + Starts video source and returns execution to caller. Video camera will be started + and will provide new video frames through the event. + + The specified resolution is not supported for the selected + mode of the Kinect video camera. + Could not connect to Kinect's video camera. + Another connection to the specified video camera is already running. + + + + + Signal video source to stop its work. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Wait for video source has stopped. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Stop video source. + + + The method stops the video source, so it no longer provides new video frames + and does not consume any resources. + + + + + + New frame event. + + + Notifies clients about new available frames from the video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Specifies video mode for the camera. + + + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + Resolution of video camera to set. + + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + A string identifying the video source. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net40/Accord.Video.Kinect.dll b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net40/Accord.Video.Kinect.dll new file mode 100644 index 0000000000..30c738f91 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net40/Accord.Video.Kinect.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net40/Accord.Video.Kinect.xml b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net40/Accord.Video.Kinect.xml new file mode 100644 index 0000000000..7d8a3e893 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net40/Accord.Video.Kinect.xml @@ -0,0 +1,612 @@ + + + + Accord.Video.Kinect + + + + + Kinect's LED color options. + + + + + + The LED is off. + + + + + + The LED is on and has green color. + + + + + + The LED is on and has red color. + + + + + + The LED is on and has yellow color. + + + + + + The LED is blinking with green color. + + + + + + The LED is blinking from red to yellow color. + + + + + + Kinect's resolutions of video and depth cameras. + + + + + Low resolution. + + + + + Medium resolution. + + + + + Hight resolution. + + + + + The class provides access to Microsoft's Xbox Kinect + controller. + + + The class allows to manipulate Kinec device by changing its LED color, setting motor's + tilt value and accessing its camera. See and + classes, which provide access to actual video. + + + + In order to run correctly the class requires freenect.dll library + to be put into solution's output folder. This can be found within the AForge.NET framework's + distribution in Externals folder. + + Sample usage: + + // get Kinect device + Kinect kinectDevice = Kinect.GetDevice( 0 ); + // change LED color + kinectDevice.LedColor = LedColorOption.Yellow; + // set motor tilt angle to -10 degrees + kinectDevice.SetMotorTilt( -10 ); + // get video camera + KinectVideoCamera videoCamera = kinectDevice.GetVideoCamera( ); + + // see example for video camera also + + + + + + + Get initialized instance of the Kinect device. + + + ID of the Kinect device to get instance of, [0, ), + + Returns initialized Kinect device. Use method + when the device is no longer required. + + There is no Kinect device with specified ID connected to the system. + Failed connecting to the Kinect device specified ID. + + + + + Object finalizer/destructor makes sure unmanaged resource are freed if user did not call . + + + + + Dispose device freeing all associated unmanaged resources. + + + + + + Set color of Kinect's LED. + + + LED color to set. + + Some error occurred with the device. Check error message. + + + + + Set motor's tilt value. + + + Tilt value to set, [-31, 30] degrees. + + Motor tilt has to be in the [-31, 31] range. + Some error occurred with the device. Check error message. + + + + + Get accelerometer values for 3 axes. + + + X axis value on the accelerometer. + Y axis value on the accelerometer. + Z axis value on the accelerometer. + + Units of all 3 values are m/s2. The g value used + for calculations is taken as 9.80665 m/s2. + + + + + Get Kinect's video camera. + + + Returns Kinect's video camera. + + The method simply creates instance of the class + by calling its appropriate constructor. Use method + to start the video then. + + + + + Get Kinect's depth camera. + + + Returns Kinect's depth camera. + + The method simply creates instance of the class + by calling its appropriate constructor. Use method + to start the video then. + + + + + ID of the opened Kinect device. + + + + + + Number of Kinect devices available in the system. + + + + + Video source for Microsoft Kinect's depth sensor. + + + The video source captures depth data from Microsoft Kinect + depth sensor, which is aimed originally as a gaming device for XBox 360 platform. + + Prior to using the class, make sure you've installed Kinect's drivers + as described on Open Kinect + project's page. + + In order to run correctly the class requires freenect.dll library + to be put into solution's output folder. This can be found within the AForge.NET framework's + distribution in Externals folder. + + Sample usage: + + // create video source + KinectDepthCamera videoSource = new KinectDepthCamera( 0 ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of depth sensor to set. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of depth sensor to set. + Provide original depth image or colored depth map + (see property). + + + + + Start video source. + + + Starts video source and returns execution to caller. Video camera will be started + and will provide new video frames through the event. + + The specified resolution is not supported for the selected + mode of the Kinect depth sensor. + Could not connect to Kinect's depth sensor. + Another connection to the specified depth sensor is already running. + + + + + Signal video source to stop its work. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Wait for video source has stopped. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Stop video source. + + + The method stop the video source, so it no longer provides new video frames + and does not consume any resources. + + + + + + New frame event. + + + Notifies clients about new available frames from the video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Provide original depth image or colored depth map. + + + The property specifies if the video source should provide original data + provided by Kinect's depth sensor or provide colored depth map. If the property is set to + , then the video source will provide 16 bpp grayscale images, where + 11 least significant bits represent data provided by the sensor. If the property is + set to , then the video source will provide 24 bpp color images, + which represents depth map. In this case depth is encoded by color gradient: + white->red->yellow->green->cyan->blue->black. So colors which are closer to white represent + objects which are closer to the Kinect sensor, but colors which are closer to black represent + objects which are further away from Kinect. + + The property must be set before running the video source to take effect. + + Default value is set to . + + + + + + Resolution of depth sensor to set. + + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + A string identifying the video source. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Enumeration of video camera modes for the . + + + + + 24 bit per pixel RGB mode. + + + + + 8 bit per pixel Bayer mode. + + + + + 8 bit per pixel Infra Red mode. + + + + + Video source for Microsoft Kinect's video camera. + + + The video source captures video data from Microsoft Kinect + video camera, which is aimed originally as a gaming device for XBox 360 platform. + + Prior to using the class, make sure you've installed Kinect's drivers + as described on Open Kinect + project's page. + + In order to run correctly the class requires freenect.dll library + to be put into solution's output folder. This can be found within the AForge.NET framework's + distribution in Externals folder. + + Sample usage: + + // create video source + KinectVideoCamera videoSource = new KinectVideoCamera( 0 ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of video camera to set. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of video camera to set. + Sets video camera mode. + + + + + Start video source. + + + Starts video source and returns execution to caller. Video camera will be started + and will provide new video frames through the event. + + The specified resolution is not supported for the selected + mode of the Kinect video camera. + Could not connect to Kinect's video camera. + Another connection to the specified video camera is already running. + + + + + Signal video source to stop its work. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Wait for video source has stopped. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Stop video source. + + + The method stops the video source, so it no longer provides new video frames + and does not consume any resources. + + + + + + New frame event. + + + Notifies clients about new available frames from the video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Specifies video mode for the camera. + + + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + Resolution of video camera to set. + + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + A string identifying the video source. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net45/Accord.Video.Kinect.dll b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net45/Accord.Video.Kinect.dll new file mode 100644 index 0000000000..5c4d66113 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net45/Accord.Video.Kinect.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net45/Accord.Video.Kinect.xml b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net45/Accord.Video.Kinect.xml new file mode 100644 index 0000000000..7d8a3e893 --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.Kinect.3.0.2/lib/net45/Accord.Video.Kinect.xml @@ -0,0 +1,612 @@ + + + + Accord.Video.Kinect + + + + + Kinect's LED color options. + + + + + + The LED is off. + + + + + + The LED is on and has green color. + + + + + + The LED is on and has red color. + + + + + + The LED is on and has yellow color. + + + + + + The LED is blinking with green color. + + + + + + The LED is blinking from red to yellow color. + + + + + + Kinect's resolutions of video and depth cameras. + + + + + Low resolution. + + + + + Medium resolution. + + + + + Hight resolution. + + + + + The class provides access to Microsoft's Xbox Kinect + controller. + + + The class allows to manipulate Kinec device by changing its LED color, setting motor's + tilt value and accessing its camera. See and + classes, which provide access to actual video. + + + + In order to run correctly the class requires freenect.dll library + to be put into solution's output folder. This can be found within the AForge.NET framework's + distribution in Externals folder. + + Sample usage: + + // get Kinect device + Kinect kinectDevice = Kinect.GetDevice( 0 ); + // change LED color + kinectDevice.LedColor = LedColorOption.Yellow; + // set motor tilt angle to -10 degrees + kinectDevice.SetMotorTilt( -10 ); + // get video camera + KinectVideoCamera videoCamera = kinectDevice.GetVideoCamera( ); + + // see example for video camera also + + + + + + + Get initialized instance of the Kinect device. + + + ID of the Kinect device to get instance of, [0, ), + + Returns initialized Kinect device. Use method + when the device is no longer required. + + There is no Kinect device with specified ID connected to the system. + Failed connecting to the Kinect device specified ID. + + + + + Object finalizer/destructor makes sure unmanaged resource are freed if user did not call . + + + + + Dispose device freeing all associated unmanaged resources. + + + + + + Set color of Kinect's LED. + + + LED color to set. + + Some error occurred with the device. Check error message. + + + + + Set motor's tilt value. + + + Tilt value to set, [-31, 30] degrees. + + Motor tilt has to be in the [-31, 31] range. + Some error occurred with the device. Check error message. + + + + + Get accelerometer values for 3 axes. + + + X axis value on the accelerometer. + Y axis value on the accelerometer. + Z axis value on the accelerometer. + + Units of all 3 values are m/s2. The g value used + for calculations is taken as 9.80665 m/s2. + + + + + Get Kinect's video camera. + + + Returns Kinect's video camera. + + The method simply creates instance of the class + by calling its appropriate constructor. Use method + to start the video then. + + + + + Get Kinect's depth camera. + + + Returns Kinect's depth camera. + + The method simply creates instance of the class + by calling its appropriate constructor. Use method + to start the video then. + + + + + ID of the opened Kinect device. + + + + + + Number of Kinect devices available in the system. + + + + + Video source for Microsoft Kinect's depth sensor. + + + The video source captures depth data from Microsoft Kinect + depth sensor, which is aimed originally as a gaming device for XBox 360 platform. + + Prior to using the class, make sure you've installed Kinect's drivers + as described on Open Kinect + project's page. + + In order to run correctly the class requires freenect.dll library + to be put into solution's output folder. This can be found within the AForge.NET framework's + distribution in Externals folder. + + Sample usage: + + // create video source + KinectDepthCamera videoSource = new KinectDepthCamera( 0 ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of depth sensor to set. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of depth sensor to set. + Provide original depth image or colored depth map + (see property). + + + + + Start video source. + + + Starts video source and returns execution to caller. Video camera will be started + and will provide new video frames through the event. + + The specified resolution is not supported for the selected + mode of the Kinect depth sensor. + Could not connect to Kinect's depth sensor. + Another connection to the specified depth sensor is already running. + + + + + Signal video source to stop its work. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Wait for video source has stopped. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Stop video source. + + + The method stop the video source, so it no longer provides new video frames + and does not consume any resources. + + + + + + New frame event. + + + Notifies clients about new available frames from the video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Provide original depth image or colored depth map. + + + The property specifies if the video source should provide original data + provided by Kinect's depth sensor or provide colored depth map. If the property is set to + , then the video source will provide 16 bpp grayscale images, where + 11 least significant bits represent data provided by the sensor. If the property is + set to , then the video source will provide 24 bpp color images, + which represents depth map. In this case depth is encoded by color gradient: + white->red->yellow->green->cyan->blue->black. So colors which are closer to white represent + objects which are closer to the Kinect sensor, but colors which are closer to black represent + objects which are further away from Kinect. + + The property must be set before running the video source to take effect. + + Default value is set to . + + + + + + Resolution of depth sensor to set. + + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + A string identifying the video source. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Enumeration of video camera modes for the . + + + + + 24 bit per pixel RGB mode. + + + + + 8 bit per pixel Bayer mode. + + + + + 8 bit per pixel Infra Red mode. + + + + + Video source for Microsoft Kinect's video camera. + + + The video source captures video data from Microsoft Kinect + video camera, which is aimed originally as a gaming device for XBox 360 platform. + + Prior to using the class, make sure you've installed Kinect's drivers + as described on Open Kinect + project's page. + + In order to run correctly the class requires freenect.dll library + to be put into solution's output folder. This can be found within the AForge.NET framework's + distribution in Externals folder. + + Sample usage: + + // create video source + KinectVideoCamera videoSource = new KinectVideoCamera( 0 ); + // set NewFrame event handler + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + // ... + + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of video camera to set. + + + + + Initializes a new instance of the class. + + + Kinect's device ID (index) to connect to. + Resolution of video camera to set. + Sets video camera mode. + + + + + Start video source. + + + Starts video source and returns execution to caller. Video camera will be started + and will provide new video frames through the event. + + The specified resolution is not supported for the selected + mode of the Kinect video camera. + Could not connect to Kinect's video camera. + Another connection to the specified video camera is already running. + + + + + Signal video source to stop its work. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Wait for video source has stopped. + + + Calling this method is equivalent to calling + for Kinect video camera. + + + + + Stop video source. + + + The method stops the video source, so it no longer provides new video frames + and does not consume any resources. + + + + + + New frame event. + + + Notifies clients about new available frames from the video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Specifies video mode for the camera. + + + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + Resolution of video camera to set. + + + The property must be set before running the video source to take effect. + + Default value of the property is set to . + + + + + + A string identifying the video source. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/Accord.Video.VFW.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/Accord.Video.VFW.3.0.2.nupkg new file mode 100644 index 0000000000..7a7abed72 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/Accord.Video.VFW.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net35/Accord.Video.VFW.dll b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net35/Accord.Video.VFW.dll new file mode 100644 index 0000000000..5d4b90ed9 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net35/Accord.Video.VFW.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net35/Accord.Video.VFW.xml b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net35/Accord.Video.VFW.xml new file mode 100644 index 0000000000..0f4dbbbfd --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net35/Accord.Video.VFW.xml @@ -0,0 +1,1098 @@ + + + + Accord.Video.VFW + + + + + AVI file video source. + + + The video source reads AVI files using Video for Windows. + + Sample usage: + + // create AVI file video source + AVIFileVideoSource source = new AVIFileVideoSource( "some file" ); + // set event handlers + source.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + source.Start( ); + // ... + // signal to stop + source.SignalToStop( ); + + // New frame event handler, which is invoked on each new available video frame + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Video file name. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Worker thread. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Frame interval. + + + The property sets the interval in milliseconds between frames. If the property is + set to 100, then the desired frame rate will be 10 frames per second. + + Setting this property to 0 leads to no delay between video frames - frames + are read as fast as possible. + + Default value is set to 0. + + + + + + Get frame interval from source or use manually specified. + + + The property specifies which frame rate to use for video playing. + If the property is set to , then video is played + with original frame rate, which is set in source AVI file. If the property is + set to , then custom frame rate is used, which is + calculated based on the manually specified frame interval. + + Default value is set to . + + + + + + Video source. + + + Video file name to play. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + AVI files reading using Video for Windows. + + + The class allows to read AVI files using Video for Windows API. + + Sample usage: + + // instantiate AVI reader + AVIReader reader = new AVIReader( ); + // open video file + reader.Open( "test.avi" ); + // read the video file + while ( reader.Position - reader.Start < reader.Length ) + { + // get next frame + Bitmap image = reader.GetNextFrame( ); + // .. process the frame somehow or display it + } + reader.Close( ); + + + + + + + Initializes a new instance of the class. + + + Initializes Video for Windows library. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + Frees unmanaged resources used by the object. The object becomes unusable + after that. + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Open AVI file. + + + AVI file name to open. + + The method opens a video file and prepares the stream and decoder for + reading video frames with the help of method. + + + Failed opening the specified file. + A error occurred while opening the video file. See exception message. + + + + + + Close video file. + + + + + + Get next frame of opened video stream. + + + Returns next frame as a bitmap. + + The method reads and returns the next video frame in the opened video stream + at the position, which is set in property. + + Thrown if no video file was open. + A error occurred while reading next video frame. See exception message. + + + + + Width of video frames. + + + The property specifies the width of video frames within the opened video + file. + + + + + Height of video frames. + + + The property specifies the height of video frames within the opened video + file. + + + + + Current position in video stream. + + + Setting position outside of video range, will lead to reseting position to the start. + + + + + Starting position of video stream. + + + + + + Video stream length. + + + + + + Desired playing frame rate. + + + The property specifies the frame rate, which should be used to play the opened video + file. + + + + + Codec used for video compression. + + + The property tells about which codec was used to encode the opened video file. + + + + + AVI files writing using Video for Windows interface. + + + The class allows to write AVI files using Video for Windows API. + + Sample usage: + + // instantiate AVI writer, use WMV3 codec + AVIWriter writer = new AVIWriter( "wmv3" ); + // create new AVI file and open it + writer.Open( "test.avi", 320, 240 ); + // create frame image + Bitmap image = new Bitmap( 320, 240 ); + + for ( int i = 0; i < 240; i++ ) + { + // update image + image.SetPixel( i, i, Color.Red ); + // add the image as a new frame of video file + writer.AddFrame( image ); + } + writer.Close( ); + + + + + + + Initializes a new instance of the class. + + + Initializes Video for Windows library. + + + + + Initializes a new instance of the class. + + + Codec to use for compression. + + Initializes Video for Windows library. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + Frees unmanaged resources used by the object. The object becomes unusable + after that. + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Create new AVI file and open it for writing. + + + AVI file name to create. + Video width. + Video height. + + The method opens (creates) a video files, configure video codec and prepares + the stream for saving video frames with a help of method. + + Failed opening the specified file. + A error occurred while creating new video file. See exception message. + Insufficient memory for internal buffer. + Video file resolution must be a multiple of two. + + + + + Close video file. + + + + + + Add new frame to the AVI file. + + + New frame image. + + The method adds new video frame to an opened video file. The width and heights + of the frame should be the same as it was specified in method + (see and properties). + + Thrown if no video file was open. + Bitmap size must be of the same as video size, which was specified on opening video file. + A error occurred while writing new video frame. See exception message. + + + + + Width of video frames. + + + The property specifies the width of video frames, which are acceptable + by method for saving, which is set in + method. + + + + + Height of video frames. + + + The property specifies the height of video frames, which are acceptable + by method for saving, which is set in + method. + + + + + Current position in video stream. + + + The property tell current position in video stream, which actually equals + to the amount of frames added using method. + + + + + Desired playing frame rate. + + + The property sets the video frame rate, which should be use during playing + of the video to be saved. + + The property should be set befor opening new file to take effect. + + Default frame rate is set to 25. + + + + + Codec used for video compression. + + + The property sets the FOURCC code of video compression codec, which needs to + be used for video encoding. + + The property should be set befor opening new file to take effect. + + Default video codec is set "DIB ", which means no compression. + + + + + Compression video quality. + + + The property sets video quality used by codec in order to balance compression rate + and image quality. The quality is measured usually in the [0, 100] range. + + The property should be set befor opening new file to take effect. + + Default value is set to -1 - default compression quality of the codec. + + + + + Windows API functions and structures. + + + The class provides Video for Windows and some other Win32 functions and structurs. + + + + + Copy a block of memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's the value of dst - pointer to destination. + + + + + Initialize the AVIFile library. + + + + + + Exit the AVIFile library. + + + + + Open an AVI file. + + + Opened AVI file interface. + AVI file name. + Opening mode (see ). + Handler to use (null to use default). + + Returns zero on success or error code otherwise. + + + + + Release an open AVI stream. + + + Open AVI file interface. + + Returns the reference count of the file. + + + + + Get stream interface that is associated with a specified AVI file + + + Handler to an open AVI file. + Stream interface. + Stream type to open. + Count of the stream type. Identifies which occurrence of the specified stream type to access. + + + + + + + Create a new stream in an existing file and creates an interface to the new stream. + + + Handler to an open AVI file. + Stream interface. + Pointer to a structure containing information about the new stream. + + Returns zero if successful or an error otherwise. + + + + + Release an open AVI stream. + + + Handle to an open stream. + + Returns the current reference count of the stream. + + + + + Set the format of a stream at the specified position. + + + Handle to an open stream. + Position in the stream to receive the format. + Pointer to a structure containing the new format. + Size, in bytes, of the block of memory referenced by format. + + Returns zero if successful or an error otherwise. + + + + + Get the starting sample number for the stream. + + + Handle to an open stream. + + Returns the number if successful or – 1 otherwise. + + + + + Get the length of the stream. + + + Handle to an open stream. + + Returns the stream's length, in samples, if successful or -1 otherwise. + + + + + Obtain stream header information. + + + Handle to an open stream. + Pointer to a structure to contain the stream information. + Size, in bytes, of the structure used for streamInfo. + + Returns zero if successful or an error otherwise. + + + + + Prepare to decompress video frames from the specified video stream + + + Pointer to the video stream used as the video source. + Pointer to a structure that defines the desired video format. Specify NULL to use a default format. + + Returns an object that can be used with the function. + + + + + Prepare to decompress video frames from the specified video stream. + + + Pointer to the video stream used as the video source. + Pointer to a structure that defines the desired video format. Specify NULL to use a default format. + + Returns a GetFrame object that can be used with the function. + + + + + Releases resources used to decompress video frames. + + + Handle returned from the function. + + Returns zero if successful or an error otherwise. + + + + + Return the address of a decompressed video frame. + + + Pointer to a GetFrame object. + Position, in samples, within the stream of the desired frame. + + Returns a pointer to the frame data if successful or NULL otherwise. + + + + + Write data to a stream. + + + Handle to an open stream. + First sample to write. + Number of samples to write. + Pointer to a buffer containing the data to write. + Size of the buffer referenced by buffer. + Flag associated with this data. + Pointer to a buffer that receives the number of samples written. This can be set to NULL. + Pointer to a buffer that receives the number of bytes written. This can be set to NULL. + + Returns zero if successful or an error otherwise. + + + + + Retrieve the save options for a file and returns them in a buffer. + + + Handle to the parent window for the Compression Options dialog box. + Flags for displaying the Compression Options dialog box. + Number of streams that have their options set by the dialog box. + Pointer to an array of stream interface pointers. + Pointer to an array of pointers to AVICOMPRESSOPTIONS structures. + + Returns TRUE if the user pressed OK, FALSE for CANCEL, or an error otherwise. + + + + + Free the resources allocated by the AVISaveOptions function. + + + Count of the AVICOMPRESSOPTIONS structures referenced in options. + Pointer to an array of pointers to AVICOMPRESSOPTIONS structures. + + Returns 0. + + + + + Create a compressed stream from an uncompressed stream and a + compression filter, and returns the address of a pointer to + the compressed stream. + + + Pointer to a buffer that receives the compressed stream pointer. + Pointer to the stream to be compressed. + Pointer to a structure that identifies the type of compression to use and the options to apply. + Pointer to a class identifier used to create the stream. + + Returns 0 if successful or an error otherwise. + + + + + .NET replacement of mmioFOURCC macros. Converts four characters to code. + + + Four characters string. + + Returns the code created from provided characters. + + + + + Inverse to . Converts code to fout characters string. + + + Code to convert. + + Returns four characters string. + + + + + Version of for one stream only. + + + Stream to configure. + Stream options. + + Returns TRUE if the user pressed OK, FALSE for CANCEL, or an error otherwise. + + + + + Structure to define the coordinates of the upper-left and + lower-right corners of a rectangle. + + + + + + x-coordinate of the upper-left corner of the rectangle. + + + + + + y-coordinate of the upper-left corner of the rectangle. + + + + + + x-coordinate of the bottom-right corner of the rectangle. + + + + + + y-coordinate of the bottom-right corner of the rectangle. + + + + + + Structure, which contains information for a single stream . + + + + + + Four-character code indicating the stream type. + + + + + + Four-character code of the compressor handler that will compress this video stream when it is saved. + + + + + + Applicable flags for the stream. + + + + + + Capability flags; currently unused. + + + + + + Priority of the stream. + + + + + + Language of the stream. + + + + + + Time scale applicable for the stream. + + + Dividing rate by scale gives the playback rate in number of samples per second. + + + + + Rate in an integer format. + + + + + + Sample number of the first frame of the AVI file. + + + + + + Length of this stream. + + + The units are defined by rate and scale. + + + + + Audio skew. This member specifies how much to skew the audio data ahead of the video frames in interleaved files. + + + + + + Recommended buffer size, in bytes, for the stream. + + + + + + Quality indicator of the video data in the stream. + + + Quality is represented as a number between 0 and 10,000. + + + + + Size, in bytes, of a single data sample. + + + + + + Dimensions of the video destination rectangle. + + + + + + Number of times the stream has been edited. + + + + + + Number of times the stream format has changed. + + + + + + Description of the stream. + + + + + + Structure, which contains information about the dimensions and color format of a DIB. + + + + + + Specifies the number of bytes required by the structure. + + + + + + Specifies the width of the bitmap, in pixels. + + + + + + Specifies the height of the bitmap, in pixels. + + + If height is positive, the bitmap is a bottom-up DIB and its origin is + the lower-left corner. If height is negative, the bitmap is a top-down DIB and its + origin is the upper-left corner. + + + + + Specifies the number of planes for the target device. This value must be set to 1. + + + + + + Specifies the number of bits-per-pixel. + + + + + + Specifies the type of compression for a compressed bottom-up bitmap (top-down DIBs cannot be compressed). + + + + + + Specifies the size, in bytes, of the image. + + + + + + Specifies the horizontal resolution, in pixels-per-meter, of the target device for the bitmap. + + + + + + Specifies the vertical resolution, in pixels-per-meter, of the target device for the bitmap. + + + + + + Specifies the number of color indexes in the color table that are actually used by the bitmap. + + + + + + Specifies the number of color indexes that are required for displaying the bitmap. + + + + + + Structure, which contains information about a stream and how it is compressed and saved. + + + + + + Four-character code indicating the stream type. + + + + + + Four-character code for the compressor handler that will compress this video stream when it is saved. + + + + + + Maximum period between video key frames. + + + + + + Quality value passed to a video compressor. + + + + + + Video compressor data rate. + + + + + + Flags used for compression. + + + + + + Pointer to a structure defining the data format. + + + + + + Size, in bytes, of the data referenced by format. + + + + + + Video-compressor-specific data; used internally. + + + + + + Size, in bytes, of the data referenced by parameters. + + + + + Interleave factor for interspersing stream data with data from the first stream. + + + + + + File access modes. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net40/Accord.Video.VFW.dll b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net40/Accord.Video.VFW.dll new file mode 100644 index 0000000000..1fedcb918 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net40/Accord.Video.VFW.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net40/Accord.Video.VFW.xml b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net40/Accord.Video.VFW.xml new file mode 100644 index 0000000000..0f4dbbbfd --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net40/Accord.Video.VFW.xml @@ -0,0 +1,1098 @@ + + + + Accord.Video.VFW + + + + + AVI file video source. + + + The video source reads AVI files using Video for Windows. + + Sample usage: + + // create AVI file video source + AVIFileVideoSource source = new AVIFileVideoSource( "some file" ); + // set event handlers + source.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + source.Start( ); + // ... + // signal to stop + source.SignalToStop( ); + + // New frame event handler, which is invoked on each new available video frame + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Video file name. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Worker thread. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Frame interval. + + + The property sets the interval in milliseconds between frames. If the property is + set to 100, then the desired frame rate will be 10 frames per second. + + Setting this property to 0 leads to no delay between video frames - frames + are read as fast as possible. + + Default value is set to 0. + + + + + + Get frame interval from source or use manually specified. + + + The property specifies which frame rate to use for video playing. + If the property is set to , then video is played + with original frame rate, which is set in source AVI file. If the property is + set to , then custom frame rate is used, which is + calculated based on the manually specified frame interval. + + Default value is set to . + + + + + + Video source. + + + Video file name to play. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + AVI files reading using Video for Windows. + + + The class allows to read AVI files using Video for Windows API. + + Sample usage: + + // instantiate AVI reader + AVIReader reader = new AVIReader( ); + // open video file + reader.Open( "test.avi" ); + // read the video file + while ( reader.Position - reader.Start < reader.Length ) + { + // get next frame + Bitmap image = reader.GetNextFrame( ); + // .. process the frame somehow or display it + } + reader.Close( ); + + + + + + + Initializes a new instance of the class. + + + Initializes Video for Windows library. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + Frees unmanaged resources used by the object. The object becomes unusable + after that. + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Open AVI file. + + + AVI file name to open. + + The method opens a video file and prepares the stream and decoder for + reading video frames with the help of method. + + + Failed opening the specified file. + A error occurred while opening the video file. See exception message. + + + + + + Close video file. + + + + + + Get next frame of opened video stream. + + + Returns next frame as a bitmap. + + The method reads and returns the next video frame in the opened video stream + at the position, which is set in property. + + Thrown if no video file was open. + A error occurred while reading next video frame. See exception message. + + + + + Width of video frames. + + + The property specifies the width of video frames within the opened video + file. + + + + + Height of video frames. + + + The property specifies the height of video frames within the opened video + file. + + + + + Current position in video stream. + + + Setting position outside of video range, will lead to reseting position to the start. + + + + + Starting position of video stream. + + + + + + Video stream length. + + + + + + Desired playing frame rate. + + + The property specifies the frame rate, which should be used to play the opened video + file. + + + + + Codec used for video compression. + + + The property tells about which codec was used to encode the opened video file. + + + + + AVI files writing using Video for Windows interface. + + + The class allows to write AVI files using Video for Windows API. + + Sample usage: + + // instantiate AVI writer, use WMV3 codec + AVIWriter writer = new AVIWriter( "wmv3" ); + // create new AVI file and open it + writer.Open( "test.avi", 320, 240 ); + // create frame image + Bitmap image = new Bitmap( 320, 240 ); + + for ( int i = 0; i < 240; i++ ) + { + // update image + image.SetPixel( i, i, Color.Red ); + // add the image as a new frame of video file + writer.AddFrame( image ); + } + writer.Close( ); + + + + + + + Initializes a new instance of the class. + + + Initializes Video for Windows library. + + + + + Initializes a new instance of the class. + + + Codec to use for compression. + + Initializes Video for Windows library. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + Frees unmanaged resources used by the object. The object becomes unusable + after that. + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Create new AVI file and open it for writing. + + + AVI file name to create. + Video width. + Video height. + + The method opens (creates) a video files, configure video codec and prepares + the stream for saving video frames with a help of method. + + Failed opening the specified file. + A error occurred while creating new video file. See exception message. + Insufficient memory for internal buffer. + Video file resolution must be a multiple of two. + + + + + Close video file. + + + + + + Add new frame to the AVI file. + + + New frame image. + + The method adds new video frame to an opened video file. The width and heights + of the frame should be the same as it was specified in method + (see and properties). + + Thrown if no video file was open. + Bitmap size must be of the same as video size, which was specified on opening video file. + A error occurred while writing new video frame. See exception message. + + + + + Width of video frames. + + + The property specifies the width of video frames, which are acceptable + by method for saving, which is set in + method. + + + + + Height of video frames. + + + The property specifies the height of video frames, which are acceptable + by method for saving, which is set in + method. + + + + + Current position in video stream. + + + The property tell current position in video stream, which actually equals + to the amount of frames added using method. + + + + + Desired playing frame rate. + + + The property sets the video frame rate, which should be use during playing + of the video to be saved. + + The property should be set befor opening new file to take effect. + + Default frame rate is set to 25. + + + + + Codec used for video compression. + + + The property sets the FOURCC code of video compression codec, which needs to + be used for video encoding. + + The property should be set befor opening new file to take effect. + + Default video codec is set "DIB ", which means no compression. + + + + + Compression video quality. + + + The property sets video quality used by codec in order to balance compression rate + and image quality. The quality is measured usually in the [0, 100] range. + + The property should be set befor opening new file to take effect. + + Default value is set to -1 - default compression quality of the codec. + + + + + Windows API functions and structures. + + + The class provides Video for Windows and some other Win32 functions and structurs. + + + + + Copy a block of memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's the value of dst - pointer to destination. + + + + + Initialize the AVIFile library. + + + + + + Exit the AVIFile library. + + + + + Open an AVI file. + + + Opened AVI file interface. + AVI file name. + Opening mode (see ). + Handler to use (null to use default). + + Returns zero on success or error code otherwise. + + + + + Release an open AVI stream. + + + Open AVI file interface. + + Returns the reference count of the file. + + + + + Get stream interface that is associated with a specified AVI file + + + Handler to an open AVI file. + Stream interface. + Stream type to open. + Count of the stream type. Identifies which occurrence of the specified stream type to access. + + + + + + + Create a new stream in an existing file and creates an interface to the new stream. + + + Handler to an open AVI file. + Stream interface. + Pointer to a structure containing information about the new stream. + + Returns zero if successful or an error otherwise. + + + + + Release an open AVI stream. + + + Handle to an open stream. + + Returns the current reference count of the stream. + + + + + Set the format of a stream at the specified position. + + + Handle to an open stream. + Position in the stream to receive the format. + Pointer to a structure containing the new format. + Size, in bytes, of the block of memory referenced by format. + + Returns zero if successful or an error otherwise. + + + + + Get the starting sample number for the stream. + + + Handle to an open stream. + + Returns the number if successful or – 1 otherwise. + + + + + Get the length of the stream. + + + Handle to an open stream. + + Returns the stream's length, in samples, if successful or -1 otherwise. + + + + + Obtain stream header information. + + + Handle to an open stream. + Pointer to a structure to contain the stream information. + Size, in bytes, of the structure used for streamInfo. + + Returns zero if successful or an error otherwise. + + + + + Prepare to decompress video frames from the specified video stream + + + Pointer to the video stream used as the video source. + Pointer to a structure that defines the desired video format. Specify NULL to use a default format. + + Returns an object that can be used with the function. + + + + + Prepare to decompress video frames from the specified video stream. + + + Pointer to the video stream used as the video source. + Pointer to a structure that defines the desired video format. Specify NULL to use a default format. + + Returns a GetFrame object that can be used with the function. + + + + + Releases resources used to decompress video frames. + + + Handle returned from the function. + + Returns zero if successful or an error otherwise. + + + + + Return the address of a decompressed video frame. + + + Pointer to a GetFrame object. + Position, in samples, within the stream of the desired frame. + + Returns a pointer to the frame data if successful or NULL otherwise. + + + + + Write data to a stream. + + + Handle to an open stream. + First sample to write. + Number of samples to write. + Pointer to a buffer containing the data to write. + Size of the buffer referenced by buffer. + Flag associated with this data. + Pointer to a buffer that receives the number of samples written. This can be set to NULL. + Pointer to a buffer that receives the number of bytes written. This can be set to NULL. + + Returns zero if successful or an error otherwise. + + + + + Retrieve the save options for a file and returns them in a buffer. + + + Handle to the parent window for the Compression Options dialog box. + Flags for displaying the Compression Options dialog box. + Number of streams that have their options set by the dialog box. + Pointer to an array of stream interface pointers. + Pointer to an array of pointers to AVICOMPRESSOPTIONS structures. + + Returns TRUE if the user pressed OK, FALSE for CANCEL, or an error otherwise. + + + + + Free the resources allocated by the AVISaveOptions function. + + + Count of the AVICOMPRESSOPTIONS structures referenced in options. + Pointer to an array of pointers to AVICOMPRESSOPTIONS structures. + + Returns 0. + + + + + Create a compressed stream from an uncompressed stream and a + compression filter, and returns the address of a pointer to + the compressed stream. + + + Pointer to a buffer that receives the compressed stream pointer. + Pointer to the stream to be compressed. + Pointer to a structure that identifies the type of compression to use and the options to apply. + Pointer to a class identifier used to create the stream. + + Returns 0 if successful or an error otherwise. + + + + + .NET replacement of mmioFOURCC macros. Converts four characters to code. + + + Four characters string. + + Returns the code created from provided characters. + + + + + Inverse to . Converts code to fout characters string. + + + Code to convert. + + Returns four characters string. + + + + + Version of for one stream only. + + + Stream to configure. + Stream options. + + Returns TRUE if the user pressed OK, FALSE for CANCEL, or an error otherwise. + + + + + Structure to define the coordinates of the upper-left and + lower-right corners of a rectangle. + + + + + + x-coordinate of the upper-left corner of the rectangle. + + + + + + y-coordinate of the upper-left corner of the rectangle. + + + + + + x-coordinate of the bottom-right corner of the rectangle. + + + + + + y-coordinate of the bottom-right corner of the rectangle. + + + + + + Structure, which contains information for a single stream . + + + + + + Four-character code indicating the stream type. + + + + + + Four-character code of the compressor handler that will compress this video stream when it is saved. + + + + + + Applicable flags for the stream. + + + + + + Capability flags; currently unused. + + + + + + Priority of the stream. + + + + + + Language of the stream. + + + + + + Time scale applicable for the stream. + + + Dividing rate by scale gives the playback rate in number of samples per second. + + + + + Rate in an integer format. + + + + + + Sample number of the first frame of the AVI file. + + + + + + Length of this stream. + + + The units are defined by rate and scale. + + + + + Audio skew. This member specifies how much to skew the audio data ahead of the video frames in interleaved files. + + + + + + Recommended buffer size, in bytes, for the stream. + + + + + + Quality indicator of the video data in the stream. + + + Quality is represented as a number between 0 and 10,000. + + + + + Size, in bytes, of a single data sample. + + + + + + Dimensions of the video destination rectangle. + + + + + + Number of times the stream has been edited. + + + + + + Number of times the stream format has changed. + + + + + + Description of the stream. + + + + + + Structure, which contains information about the dimensions and color format of a DIB. + + + + + + Specifies the number of bytes required by the structure. + + + + + + Specifies the width of the bitmap, in pixels. + + + + + + Specifies the height of the bitmap, in pixels. + + + If height is positive, the bitmap is a bottom-up DIB and its origin is + the lower-left corner. If height is negative, the bitmap is a top-down DIB and its + origin is the upper-left corner. + + + + + Specifies the number of planes for the target device. This value must be set to 1. + + + + + + Specifies the number of bits-per-pixel. + + + + + + Specifies the type of compression for a compressed bottom-up bitmap (top-down DIBs cannot be compressed). + + + + + + Specifies the size, in bytes, of the image. + + + + + + Specifies the horizontal resolution, in pixels-per-meter, of the target device for the bitmap. + + + + + + Specifies the vertical resolution, in pixels-per-meter, of the target device for the bitmap. + + + + + + Specifies the number of color indexes in the color table that are actually used by the bitmap. + + + + + + Specifies the number of color indexes that are required for displaying the bitmap. + + + + + + Structure, which contains information about a stream and how it is compressed and saved. + + + + + + Four-character code indicating the stream type. + + + + + + Four-character code for the compressor handler that will compress this video stream when it is saved. + + + + + + Maximum period between video key frames. + + + + + + Quality value passed to a video compressor. + + + + + + Video compressor data rate. + + + + + + Flags used for compression. + + + + + + Pointer to a structure defining the data format. + + + + + + Size, in bytes, of the data referenced by format. + + + + + + Video-compressor-specific data; used internally. + + + + + + Size, in bytes, of the data referenced by parameters. + + + + + Interleave factor for interspersing stream data with data from the first stream. + + + + + + File access modes. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net45/Accord.Video.VFW.dll b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net45/Accord.Video.VFW.dll new file mode 100644 index 0000000000..a5f144ebc Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net45/Accord.Video.VFW.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net45/Accord.Video.VFW.xml b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net45/Accord.Video.VFW.xml new file mode 100644 index 0000000000..0f4dbbbfd --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.VFW.3.0.2/lib/net45/Accord.Video.VFW.xml @@ -0,0 +1,1098 @@ + + + + Accord.Video.VFW + + + + + AVI file video source. + + + The video source reads AVI files using Video for Windows. + + Sample usage: + + // create AVI file video source + AVIFileVideoSource source = new AVIFileVideoSource( "some file" ); + // set event handlers + source.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + source.Start( ); + // ... + // signal to stop + source.SignalToStop( ); + + // New frame event handler, which is invoked on each new available video frame + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Video file name. + + + + + Start video source. + + + Starts video source and return execution to caller. Video source + object creates background thread and notifies about new frames with the + help of event. + + Video source is not specified. + + + + + Signal video source to stop its work. + + + Signals video source to stop its background thread, stop to + provide new frames and free resources. + + + + + Wait for video source has stopped. + + + Waits for source stopping after it was signalled to stop using + method. + + + + + Stop video source. + + + Stops video source aborting its thread. + + Since the method aborts background thread, its usage is highly not preferred + and should be done only if there are no other options. The correct way of stopping camera + is signaling it stop and then + waiting for background thread's completion. + + + + + + Free resource. + + + + + + Worker thread. + + + + + + New frame event. + + + Notifies clients about new available frame from video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + Frame interval. + + + The property sets the interval in milliseconds between frames. If the property is + set to 100, then the desired frame rate will be 10 frames per second. + + Setting this property to 0 leads to no delay between video frames - frames + are read as fast as possible. + + Default value is set to 0. + + + + + + Get frame interval from source or use manually specified. + + + The property specifies which frame rate to use for video playing. + If the property is set to , then video is played + with original frame rate, which is set in source AVI file. If the property is + set to , then custom frame rate is used, which is + calculated based on the manually specified frame interval. + + Default value is set to . + + + + + + Video source. + + + Video file name to play. + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + AVI files reading using Video for Windows. + + + The class allows to read AVI files using Video for Windows API. + + Sample usage: + + // instantiate AVI reader + AVIReader reader = new AVIReader( ); + // open video file + reader.Open( "test.avi" ); + // read the video file + while ( reader.Position - reader.Start < reader.Length ) + { + // get next frame + Bitmap image = reader.GetNextFrame( ); + // .. process the frame somehow or display it + } + reader.Close( ); + + + + + + + Initializes a new instance of the class. + + + Initializes Video for Windows library. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + Frees unmanaged resources used by the object. The object becomes unusable + after that. + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Open AVI file. + + + AVI file name to open. + + The method opens a video file and prepares the stream and decoder for + reading video frames with the help of method. + + + Failed opening the specified file. + A error occurred while opening the video file. See exception message. + + + + + + Close video file. + + + + + + Get next frame of opened video stream. + + + Returns next frame as a bitmap. + + The method reads and returns the next video frame in the opened video stream + at the position, which is set in property. + + Thrown if no video file was open. + A error occurred while reading next video frame. See exception message. + + + + + Width of video frames. + + + The property specifies the width of video frames within the opened video + file. + + + + + Height of video frames. + + + The property specifies the height of video frames within the opened video + file. + + + + + Current position in video stream. + + + Setting position outside of video range, will lead to reseting position to the start. + + + + + Starting position of video stream. + + + + + + Video stream length. + + + + + + Desired playing frame rate. + + + The property specifies the frame rate, which should be used to play the opened video + file. + + + + + Codec used for video compression. + + + The property tells about which codec was used to encode the opened video file. + + + + + AVI files writing using Video for Windows interface. + + + The class allows to write AVI files using Video for Windows API. + + Sample usage: + + // instantiate AVI writer, use WMV3 codec + AVIWriter writer = new AVIWriter( "wmv3" ); + // create new AVI file and open it + writer.Open( "test.avi", 320, 240 ); + // create frame image + Bitmap image = new Bitmap( 320, 240 ); + + for ( int i = 0; i < 240; i++ ) + { + // update image + image.SetPixel( i, i, Color.Red ); + // add the image as a new frame of video file + writer.AddFrame( image ); + } + writer.Close( ); + + + + + + + Initializes a new instance of the class. + + + Initializes Video for Windows library. + + + + + Initializes a new instance of the class. + + + Codec to use for compression. + + Initializes Video for Windows library. + + + + + Destroys the instance of the class. + + + + + + Dispose the object. + + + Frees unmanaged resources used by the object. The object becomes unusable + after that. + + + + + Dispose the object. + + + Indicates if disposing was initiated manually. + + + + + Create new AVI file and open it for writing. + + + AVI file name to create. + Video width. + Video height. + + The method opens (creates) a video files, configure video codec and prepares + the stream for saving video frames with a help of method. + + Failed opening the specified file. + A error occurred while creating new video file. See exception message. + Insufficient memory for internal buffer. + Video file resolution must be a multiple of two. + + + + + Close video file. + + + + + + Add new frame to the AVI file. + + + New frame image. + + The method adds new video frame to an opened video file. The width and heights + of the frame should be the same as it was specified in method + (see and properties). + + Thrown if no video file was open. + Bitmap size must be of the same as video size, which was specified on opening video file. + A error occurred while writing new video frame. See exception message. + + + + + Width of video frames. + + + The property specifies the width of video frames, which are acceptable + by method for saving, which is set in + method. + + + + + Height of video frames. + + + The property specifies the height of video frames, which are acceptable + by method for saving, which is set in + method. + + + + + Current position in video stream. + + + The property tell current position in video stream, which actually equals + to the amount of frames added using method. + + + + + Desired playing frame rate. + + + The property sets the video frame rate, which should be use during playing + of the video to be saved. + + The property should be set befor opening new file to take effect. + + Default frame rate is set to 25. + + + + + Codec used for video compression. + + + The property sets the FOURCC code of video compression codec, which needs to + be used for video encoding. + + The property should be set befor opening new file to take effect. + + Default video codec is set "DIB ", which means no compression. + + + + + Compression video quality. + + + The property sets video quality used by codec in order to balance compression rate + and image quality. The quality is measured usually in the [0, 100] range. + + The property should be set befor opening new file to take effect. + + Default value is set to -1 - default compression quality of the codec. + + + + + Windows API functions and structures. + + + The class provides Video for Windows and some other Win32 functions and structurs. + + + + + Copy a block of memory. + + + Destination pointer. + Source pointer. + Memory block's length to copy. + + Return's the value of dst - pointer to destination. + + + + + Initialize the AVIFile library. + + + + + + Exit the AVIFile library. + + + + + Open an AVI file. + + + Opened AVI file interface. + AVI file name. + Opening mode (see ). + Handler to use (null to use default). + + Returns zero on success or error code otherwise. + + + + + Release an open AVI stream. + + + Open AVI file interface. + + Returns the reference count of the file. + + + + + Get stream interface that is associated with a specified AVI file + + + Handler to an open AVI file. + Stream interface. + Stream type to open. + Count of the stream type. Identifies which occurrence of the specified stream type to access. + + + + + + + Create a new stream in an existing file and creates an interface to the new stream. + + + Handler to an open AVI file. + Stream interface. + Pointer to a structure containing information about the new stream. + + Returns zero if successful or an error otherwise. + + + + + Release an open AVI stream. + + + Handle to an open stream. + + Returns the current reference count of the stream. + + + + + Set the format of a stream at the specified position. + + + Handle to an open stream. + Position in the stream to receive the format. + Pointer to a structure containing the new format. + Size, in bytes, of the block of memory referenced by format. + + Returns zero if successful or an error otherwise. + + + + + Get the starting sample number for the stream. + + + Handle to an open stream. + + Returns the number if successful or – 1 otherwise. + + + + + Get the length of the stream. + + + Handle to an open stream. + + Returns the stream's length, in samples, if successful or -1 otherwise. + + + + + Obtain stream header information. + + + Handle to an open stream. + Pointer to a structure to contain the stream information. + Size, in bytes, of the structure used for streamInfo. + + Returns zero if successful or an error otherwise. + + + + + Prepare to decompress video frames from the specified video stream + + + Pointer to the video stream used as the video source. + Pointer to a structure that defines the desired video format. Specify NULL to use a default format. + + Returns an object that can be used with the function. + + + + + Prepare to decompress video frames from the specified video stream. + + + Pointer to the video stream used as the video source. + Pointer to a structure that defines the desired video format. Specify NULL to use a default format. + + Returns a GetFrame object that can be used with the function. + + + + + Releases resources used to decompress video frames. + + + Handle returned from the function. + + Returns zero if successful or an error otherwise. + + + + + Return the address of a decompressed video frame. + + + Pointer to a GetFrame object. + Position, in samples, within the stream of the desired frame. + + Returns a pointer to the frame data if successful or NULL otherwise. + + + + + Write data to a stream. + + + Handle to an open stream. + First sample to write. + Number of samples to write. + Pointer to a buffer containing the data to write. + Size of the buffer referenced by buffer. + Flag associated with this data. + Pointer to a buffer that receives the number of samples written. This can be set to NULL. + Pointer to a buffer that receives the number of bytes written. This can be set to NULL. + + Returns zero if successful or an error otherwise. + + + + + Retrieve the save options for a file and returns them in a buffer. + + + Handle to the parent window for the Compression Options dialog box. + Flags for displaying the Compression Options dialog box. + Number of streams that have their options set by the dialog box. + Pointer to an array of stream interface pointers. + Pointer to an array of pointers to AVICOMPRESSOPTIONS structures. + + Returns TRUE if the user pressed OK, FALSE for CANCEL, or an error otherwise. + + + + + Free the resources allocated by the AVISaveOptions function. + + + Count of the AVICOMPRESSOPTIONS structures referenced in options. + Pointer to an array of pointers to AVICOMPRESSOPTIONS structures. + + Returns 0. + + + + + Create a compressed stream from an uncompressed stream and a + compression filter, and returns the address of a pointer to + the compressed stream. + + + Pointer to a buffer that receives the compressed stream pointer. + Pointer to the stream to be compressed. + Pointer to a structure that identifies the type of compression to use and the options to apply. + Pointer to a class identifier used to create the stream. + + Returns 0 if successful or an error otherwise. + + + + + .NET replacement of mmioFOURCC macros. Converts four characters to code. + + + Four characters string. + + Returns the code created from provided characters. + + + + + Inverse to . Converts code to fout characters string. + + + Code to convert. + + Returns four characters string. + + + + + Version of for one stream only. + + + Stream to configure. + Stream options. + + Returns TRUE if the user pressed OK, FALSE for CANCEL, or an error otherwise. + + + + + Structure to define the coordinates of the upper-left and + lower-right corners of a rectangle. + + + + + + x-coordinate of the upper-left corner of the rectangle. + + + + + + y-coordinate of the upper-left corner of the rectangle. + + + + + + x-coordinate of the bottom-right corner of the rectangle. + + + + + + y-coordinate of the bottom-right corner of the rectangle. + + + + + + Structure, which contains information for a single stream . + + + + + + Four-character code indicating the stream type. + + + + + + Four-character code of the compressor handler that will compress this video stream when it is saved. + + + + + + Applicable flags for the stream. + + + + + + Capability flags; currently unused. + + + + + + Priority of the stream. + + + + + + Language of the stream. + + + + + + Time scale applicable for the stream. + + + Dividing rate by scale gives the playback rate in number of samples per second. + + + + + Rate in an integer format. + + + + + + Sample number of the first frame of the AVI file. + + + + + + Length of this stream. + + + The units are defined by rate and scale. + + + + + Audio skew. This member specifies how much to skew the audio data ahead of the video frames in interleaved files. + + + + + + Recommended buffer size, in bytes, for the stream. + + + + + + Quality indicator of the video data in the stream. + + + Quality is represented as a number between 0 and 10,000. + + + + + Size, in bytes, of a single data sample. + + + + + + Dimensions of the video destination rectangle. + + + + + + Number of times the stream has been edited. + + + + + + Number of times the stream format has changed. + + + + + + Description of the stream. + + + + + + Structure, which contains information about the dimensions and color format of a DIB. + + + + + + Specifies the number of bytes required by the structure. + + + + + + Specifies the width of the bitmap, in pixels. + + + + + + Specifies the height of the bitmap, in pixels. + + + If height is positive, the bitmap is a bottom-up DIB and its origin is + the lower-left corner. If height is negative, the bitmap is a top-down DIB and its + origin is the upper-left corner. + + + + + Specifies the number of planes for the target device. This value must be set to 1. + + + + + + Specifies the number of bits-per-pixel. + + + + + + Specifies the type of compression for a compressed bottom-up bitmap (top-down DIBs cannot be compressed). + + + + + + Specifies the size, in bytes, of the image. + + + + + + Specifies the horizontal resolution, in pixels-per-meter, of the target device for the bitmap. + + + + + + Specifies the vertical resolution, in pixels-per-meter, of the target device for the bitmap. + + + + + + Specifies the number of color indexes in the color table that are actually used by the bitmap. + + + + + + Specifies the number of color indexes that are required for displaying the bitmap. + + + + + + Structure, which contains information about a stream and how it is compressed and saved. + + + + + + Four-character code indicating the stream type. + + + + + + Four-character code for the compressor handler that will compress this video stream when it is saved. + + + + + + Maximum period between video key frames. + + + + + + Quality value passed to a video compressor. + + + + + + Video compressor data rate. + + + + + + Flags used for compression. + + + + + + Pointer to a structure defining the data format. + + + + + + Size, in bytes, of the data referenced by format. + + + + + + Video-compressor-specific data; used internally. + + + + + + Size, in bytes, of the data referenced by parameters. + + + + + Interleave factor for interspersing stream data with data from the first stream. + + + + + + File access modes. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/Accord.Video.Ximea.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/Accord.Video.Ximea.3.0.2.nupkg new file mode 100644 index 0000000000..fc6c80d26 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/Accord.Video.Ximea.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net35/Accord.Video.Ximea.dll b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net35/Accord.Video.Ximea.dll new file mode 100644 index 0000000000..6f4183616 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net35/Accord.Video.Ximea.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net35/Accord.Video.Ximea.xml b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net35/Accord.Video.Ximea.xml new file mode 100644 index 0000000000..6cae4bfbf --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net35/Accord.Video.Ximea.xml @@ -0,0 +1,1122 @@ + + + + Accord.Video.Ximea + + + + + Set of available configuration options for XIMEA cameras. + + + The class defines list of parameters, which are available + to set/get using corresponding methods of and + classes. + + + + + Get camera model name. Type string. + + + + + Get device serial number in decimal format. Type string, integer, float + + + + + Returns device type (1394, USB2.0, CURRERA…..). Type string. + + + + + Set/Get exposure time in microseconds. Type integer. + + + + + Get longest possible exposure to be set on camera in microseconds. Type integer. + + + + + Get shortest possible exposure to be set on camera in microseconds. Type integer. + + + + + Set/Get camera gain in dB. Type float. + + + + + Get highest possible camera gain in dB. Type float. + + + + + Get lowest possible camera gain in dB. Type float. + + + + + Set/Get width of the image provided by the camera (in pixels). Type integer. + + + + + Get maximal image width provided by the camera (in pixels). Type integer. + + + + + Get minimum image width provided by the camera (in pixels). Type integer. + + + + + Set/Get height of the image provided by the camera (in pixels). Type integer. + + + + + Get maximal image height provided by the camera (in pixels). Type integer. + + + + + Get minimum image height provided by the camera (in pixels). Type integer. + + + + + Set/Get image resolution by binning or skipping. Type integer. + + + + + Get highest value for binning or skipping. Type integer. + + + + + Get lowest value for binning or skipping. Type integer. + + + + + Get frames per second. Type float. + + + + + Get highest possible framerate for current camera settings. Type float. + + + + + Get lowest framerate for current camera settings. Type float. + + + + + Set/Get horizontal offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get maximum horizontal offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get minimum horizontal offset from the origin to the area of interest (in pixels). Type integer. + + + + + Set/Get vertical offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get maximum vertical offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get minimal vertical offset from the origin to the area of interest (in pixels). Type integer. + + + + + Set/Get white balance blue coefficient. Type float. + + + + + Set/Get white balance red coefficient. Type float. + + + + + Set/Get white balance green coefficient. Type float. + + + + + Set/Get sharpness strenght. Type float. + + + + + Set/Get luminosity gamma value. Type float. By default 1.0. + + + + + Set/Get chromaticity gamma value. Type float. By default 0. + + + + + Set default color correction matrx. + + + + + Set/Get image format provided by the camera. Type integer. Use + enumeraton for possible values. + + + + + Set/Get camera's trigger mode. Type integer. Use + enumeration for possible values. + + + + + Generates an internal trigger. must be set to . + Type integer. + + + + + Calculates white balance. Takes white balance from image center (should be white/grey object + in the center of scene). Type integer. + + + + + Enable/disable automatic white balance. Type integer. By default 0. + + + Set 0 to disable automatic white balance or 1 to enable. + + + + + Enable/disable bad pixels correction. Type integer. By default 0. + + + Set 0 to disable bad pixels correction or 1 to enable. + + + + + Set/Get acquisition buffer size in bytes. Type integer. By default 53248000. + + + Defines acquisition buffer size in bytes. This buffer contains images' + data from sensor. This parameter can be set only when acquisition is stopped. + + See for additional information. + + + + + + Set/Get maximum number of images to store in queue. Type integer. By default 4. + + + + + + See also for additional information. + + + + + + Set of configuration options to configure Automatic Exposure/Gain (AEAG) parameters. + + + + + Enable/disable automatic exposure/gain control. Type integer. By default 0. + + + Set 0 to disable automatic exposure/gain control or 1 to enable. + + + + + Set/Get maximum limit of exposure in AEAG procedure. Type integer. By default 100. Units - ms. + + + + + Set/Get maximum limit of gain in AEAG procedure. Type float. Default depends on camera type. Units - dB. + + + + + Set/Get exposure priority, [0, 1]. Type float. By default 0.8. + + + Setting the value to 0.5, for example, set exposure priority to 50% + and gain priority to 50%. + + + + + Set/Get average intensity of output signal AEAG should achieve (in %). Type float. By default 40. + + + + + Set of configuration options to configure camera's LEDs. Currently supported only for Currera-R cameras. + + + + + Selects camera LED to be used. Type integer. + + + + + Get highest LED number on camera. Type integer. + + + + + Get lowest LED number on camera. Type integer. + + + + + Set/Get LED functionality. Select LED by using parameter. + Use enumeration for possible parameter values. Type integer. + + + + + Set of configuration options to configure GPO (General Purpose Output) ports. + + + + + Select camera GPO port. Type integer. + + + + + Get highest GPO port number on camera. Type integer. + + + + + Get lowest GPO port number on camera. Type integer + + + + + Set/Get GPO port functionality. Select port by using parameter. + Use enumeration to set mode. Type integer. + + + + + Set of configuration options to access/configure GPI (General Purpose Input) ports. + + + + + Select camera GPI port. Type integer. + + + + + Get highest GPI port number on camera. Type integer. + + + + + Get lowest GPI port number on camera. Type integer + + + + + Set/Get GPI port functionality. Select port by using parameter. + Use enumeration to set mode. Type integer. + + + + + Get current GPI level. Type integer. + + + + + Set of configuration options to configure camera's LUT - Look-Up-Table. + Currently available only for Currera-R cameras. + + + + + Enable/Disable LUT. Type integer. Default 0. + + + Set 0 to disable LUT - sensor pixels are transferred directly. + Set 1 to enable LUT - sensor pixels are mapped through LUT. + + + + + Set/Get the index (offset) of the coefficient to access in the LUT. Type integer. + + + + + Get lowest LUT index (offset) of the coefficient to access in the LUT. Type integer. + + + + + Get highest LUT index (offset) of the coefficient to access in the LUT. Type integer. + + + + + Set/Get value in the LUT. Index of the value must be selected using + parameter. Type integer. + + + + + Get highest value to be set in LUT. Type integer. + + + + + Get lowest value to be set in LUT. Type integer. + + + + + Set of configuration options to access elements of Color Correction Matrix. + + + + + + Set/Get color correction matrix element [0][0]. Type float. By default 1.0. + + + + + Set/Get color correction matrix element [0][1]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [0][2]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [0][3]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [1][0]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [1][1]. Type float. By default 1.0. + + + + + Set/Get color correction matrix element [1][2]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [1][3]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [2][0]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [2][1]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [2][2]. Type float. By default 1.0. + + + + + Set/Get color correction matrix element [2][3]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][0]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][1]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][2]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][3]. Type float. By default 1.0. + + + + + XIMEA camera's GPI port modes. + + + + + Input is off. + + + + + Trigger input. + + + + + External signal input. + + + + + XIMEA camera's GPO port modes. + + + + + Output off. + + + + + Logical level. + + + + + High during exposure (integration) time + readout time + data transfer time. + + + + + Low during exposure (integration) time + readout time + data trasnfer time. + + + + + High during exposure(integration) time. + + + + + Low during exposure(integration) time. + + + + + Enumeration of image formats supported by XIMEA cameras. + + + + + 8 bits per pixel. + + + + + 16 bits per pixel. + + + + + RGB data format. + + + + + RGBA data format. + + + + + XIMEA camera's LED state options. + + + + + Blink if link is ok (led 1), heartbeat mode (led 2). + + + + + Blink led if trigger detected. + + + + + Blink led if external signal detected. + + + + + Blink led during data streaming. + + + + + Blink led during sensor integration time. + + + + + Blink if device busy/not busy. + + + + + Blink led if link is OK. + + + + + Turn off LED. + + + + + Turn on LED. + + + + + Enumeration of camera's trigger modes. + + + + + Camera works in free run mode. + + + + + External trigger (rising edge). + + + + + External trigger (falling edge). + + + + + Software (manual) trigger. + + + + + The class provides access to XIMEA cameras. + + + The class allows to perform image acquisition from XIMEA cameras. + It wraps XIMEA'a xiAPI, which means that users of this class will also require m3api.dll and a correct + TM file for the camera model connected to the system (both are provided with XIMEA API software package). + + Sample usage: + + XimeaCamera camera = new XimeaCamera( ); + + // open camera and start data acquisition + camera.Open( 0 ); + camera.StartAcquisition( ); + + // set exposure time to 10 milliseconds + camera.SetParam( CameraParameter.Exposure, 10 * 1000 ); + + // get image from the camera + Bitmap bitmap = camera.GetImage( ); + // process the image + // ... + + // dispose the image when it is no longer needed + bitmap.Dispose( ); + + // stop data acquisition and close the camera + camera.StopAcquisition( ); + camera.Close( ); + + + + + + + + + Open XIMEA camera. + + + Camera ID to open. + + Opens the specified XIMEA camera preparing it for starting video acquisition + which is done using method. The + property can be used at any time to find if a camera was opened or not. + + An error occurred while communicating with a camera. See error + message for additional information. + + + + + Close opened camera (if any) and release allocated resources. + + + The method also calls method if it was not + done by user. + + An error occurred while communicating with a camera. See error + message for additional information. + + + + + Begin camera's work cycle and start data acquisition from it. + + + The property can be used at any time to find if the + acquisition was started or not. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + End camera's work cycle and stops data acquisition. + + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Set camera's parameter. + + + Parameter name. + Integer parameter value. + + The method allows to control different camera's parameters, like exposure time, gain value, etc. + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Set camera's parameter. + + + Parameter name. + Float parameter value. + + The method allows to control different camera's parameters, like exposure time, gain value, etc. + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get camera's parameter as integer value. + + + Parameter name to get from camera. + + Returns integer value of the requested parameter. + + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get camera's parameter as float value. + + + Parameter name to get from camera. + + Returns float value of the requested parameter. + + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get camera's parameter as string value. + + + Parameter name to get from camera. + + Returns string value of the requested parameter. + + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get image from the opened XIMEA camera. + + + Returns image retrieved from the camera. + + The method calls method specifying 5000 as the timeout + value. + + + + + Get image from the opened XIMEA camera. + + + Maximum time to wait in milliseconds till image becomes available. + + Returns image retrieved from the camera. + + The method calls method specifying + the makeCopy parameter. + + + + + Get image from the opened XIMEA camera. + + + Maximum time to wait in milliseconds till image becomes available. + Make a copy of the camera's image or not. + + Returns image retrieved from the camera. + + If the is set to , then the method + creates a managed copy of the camera's image, so the managed image stays valid even when the camera + is closed. However, setting this parameter to creates a managed image which is + just a wrapper around camera's unmanaged image. So if camera is closed and its resources are freed, the + managed image becomes no longer valid and accessing it will generate an exception. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + Time out value reached - no image is available within specified time value. + + + + + Get number of XIMEA camera connected to the system. + + + + + Specifies if camera's data acquisition is currently active for the opened camera (if any). + + + + + Specifies if a camera is currently opened by the instance of the class. + + + + + ID of the the recently opened XIMEA camera. + + + + + The class provides continues access to XIMEA cameras. + + + The video source class is aimed to provide continues access to XIMEA camera, when + images are continuosly acquired from camera and provided throw the event. + It just creates a background thread and gets new images from XIMEA camera + keeping the specified time interval between image acquisition. + Essentially it is a wrapper class around providing interface. + + Sample usage: + + // create video source for the XIMEA camera with ID 0 + XimeaVideoSource videoSource = new XimeaVideoSource( 0 ); + // set event handlers + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + + // set exposure time to 10 milliseconds + videoSource.SetParam( CameraParameter.Exposure, 10 * 1000 ); + + // ... + + // New frame event handler, which is invoked on each new available video frame + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + + + Initializes a new instance of the class. + + + XIMEA camera ID (index) to connect to. + + + + + Start video source. + + + Starts video source and returns execution to caller. Video camera will be started + and will provide new video frames through the event. + + There is no XIMEA camera with specified ID connected to the system. + An error occurred while communicating with a camera. See error + message for additional information. + + + + + Signal video source to stop its work. + + + + + + + + Wait for video source has stopped. + + + + + + + + Stop video source. + + + The method stops the video source, so it no longer provides new video frames + and does not consume any resources. + + + + + + Set camera's parameter. + + + Parameter name. + Integer parameter value. + + The call is redirected to . + + + + + Set camera's parameter. + + + Parameter name. + Float parameter value. + + The call is redirected to . + + + + + Get camera's parameter as integer value. + + + Parameter name to get from camera. + + Returns integer value of the requested parameter. + + The call is redirected to . + + + + + Get camera's parameter as float value. + + + Parameter name to get from camera. + + Returns float value of the requested parameter. + + The call is redirected to . + + + + + Get camera's parameter as string value. + + + Parameter name to get from camera. + + Returns string value of the requested parameter. + + The call is redirected to . + + + + + New frame event. + + + Notifies clients about new available frames from the video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + A string identifying the video source. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Time interval between frames. + + + The property sets the interval in milliseconds between getting new frames from the camera. + If the property is set to 100, then the desired frame rate should be about 10 frames per second. + + Setting this property to 0 leads to no delay between video frames - frames + are read as fast as possible. + + Default value is set to 200. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net40/Accord.Video.Ximea.dll b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net40/Accord.Video.Ximea.dll new file mode 100644 index 0000000000..bbfa9301d Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net40/Accord.Video.Ximea.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net40/Accord.Video.Ximea.xml b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net40/Accord.Video.Ximea.xml new file mode 100644 index 0000000000..6cae4bfbf --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net40/Accord.Video.Ximea.xml @@ -0,0 +1,1122 @@ + + + + Accord.Video.Ximea + + + + + Set of available configuration options for XIMEA cameras. + + + The class defines list of parameters, which are available + to set/get using corresponding methods of and + classes. + + + + + Get camera model name. Type string. + + + + + Get device serial number in decimal format. Type string, integer, float + + + + + Returns device type (1394, USB2.0, CURRERA…..). Type string. + + + + + Set/Get exposure time in microseconds. Type integer. + + + + + Get longest possible exposure to be set on camera in microseconds. Type integer. + + + + + Get shortest possible exposure to be set on camera in microseconds. Type integer. + + + + + Set/Get camera gain in dB. Type float. + + + + + Get highest possible camera gain in dB. Type float. + + + + + Get lowest possible camera gain in dB. Type float. + + + + + Set/Get width of the image provided by the camera (in pixels). Type integer. + + + + + Get maximal image width provided by the camera (in pixels). Type integer. + + + + + Get minimum image width provided by the camera (in pixels). Type integer. + + + + + Set/Get height of the image provided by the camera (in pixels). Type integer. + + + + + Get maximal image height provided by the camera (in pixels). Type integer. + + + + + Get minimum image height provided by the camera (in pixels). Type integer. + + + + + Set/Get image resolution by binning or skipping. Type integer. + + + + + Get highest value for binning or skipping. Type integer. + + + + + Get lowest value for binning or skipping. Type integer. + + + + + Get frames per second. Type float. + + + + + Get highest possible framerate for current camera settings. Type float. + + + + + Get lowest framerate for current camera settings. Type float. + + + + + Set/Get horizontal offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get maximum horizontal offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get minimum horizontal offset from the origin to the area of interest (in pixels). Type integer. + + + + + Set/Get vertical offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get maximum vertical offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get minimal vertical offset from the origin to the area of interest (in pixels). Type integer. + + + + + Set/Get white balance blue coefficient. Type float. + + + + + Set/Get white balance red coefficient. Type float. + + + + + Set/Get white balance green coefficient. Type float. + + + + + Set/Get sharpness strenght. Type float. + + + + + Set/Get luminosity gamma value. Type float. By default 1.0. + + + + + Set/Get chromaticity gamma value. Type float. By default 0. + + + + + Set default color correction matrx. + + + + + Set/Get image format provided by the camera. Type integer. Use + enumeraton for possible values. + + + + + Set/Get camera's trigger mode. Type integer. Use + enumeration for possible values. + + + + + Generates an internal trigger. must be set to . + Type integer. + + + + + Calculates white balance. Takes white balance from image center (should be white/grey object + in the center of scene). Type integer. + + + + + Enable/disable automatic white balance. Type integer. By default 0. + + + Set 0 to disable automatic white balance or 1 to enable. + + + + + Enable/disable bad pixels correction. Type integer. By default 0. + + + Set 0 to disable bad pixels correction or 1 to enable. + + + + + Set/Get acquisition buffer size in bytes. Type integer. By default 53248000. + + + Defines acquisition buffer size in bytes. This buffer contains images' + data from sensor. This parameter can be set only when acquisition is stopped. + + See for additional information. + + + + + + Set/Get maximum number of images to store in queue. Type integer. By default 4. + + + + + + See also for additional information. + + + + + + Set of configuration options to configure Automatic Exposure/Gain (AEAG) parameters. + + + + + Enable/disable automatic exposure/gain control. Type integer. By default 0. + + + Set 0 to disable automatic exposure/gain control or 1 to enable. + + + + + Set/Get maximum limit of exposure in AEAG procedure. Type integer. By default 100. Units - ms. + + + + + Set/Get maximum limit of gain in AEAG procedure. Type float. Default depends on camera type. Units - dB. + + + + + Set/Get exposure priority, [0, 1]. Type float. By default 0.8. + + + Setting the value to 0.5, for example, set exposure priority to 50% + and gain priority to 50%. + + + + + Set/Get average intensity of output signal AEAG should achieve (in %). Type float. By default 40. + + + + + Set of configuration options to configure camera's LEDs. Currently supported only for Currera-R cameras. + + + + + Selects camera LED to be used. Type integer. + + + + + Get highest LED number on camera. Type integer. + + + + + Get lowest LED number on camera. Type integer. + + + + + Set/Get LED functionality. Select LED by using parameter. + Use enumeration for possible parameter values. Type integer. + + + + + Set of configuration options to configure GPO (General Purpose Output) ports. + + + + + Select camera GPO port. Type integer. + + + + + Get highest GPO port number on camera. Type integer. + + + + + Get lowest GPO port number on camera. Type integer + + + + + Set/Get GPO port functionality. Select port by using parameter. + Use enumeration to set mode. Type integer. + + + + + Set of configuration options to access/configure GPI (General Purpose Input) ports. + + + + + Select camera GPI port. Type integer. + + + + + Get highest GPI port number on camera. Type integer. + + + + + Get lowest GPI port number on camera. Type integer + + + + + Set/Get GPI port functionality. Select port by using parameter. + Use enumeration to set mode. Type integer. + + + + + Get current GPI level. Type integer. + + + + + Set of configuration options to configure camera's LUT - Look-Up-Table. + Currently available only for Currera-R cameras. + + + + + Enable/Disable LUT. Type integer. Default 0. + + + Set 0 to disable LUT - sensor pixels are transferred directly. + Set 1 to enable LUT - sensor pixels are mapped through LUT. + + + + + Set/Get the index (offset) of the coefficient to access in the LUT. Type integer. + + + + + Get lowest LUT index (offset) of the coefficient to access in the LUT. Type integer. + + + + + Get highest LUT index (offset) of the coefficient to access in the LUT. Type integer. + + + + + Set/Get value in the LUT. Index of the value must be selected using + parameter. Type integer. + + + + + Get highest value to be set in LUT. Type integer. + + + + + Get lowest value to be set in LUT. Type integer. + + + + + Set of configuration options to access elements of Color Correction Matrix. + + + + + + Set/Get color correction matrix element [0][0]. Type float. By default 1.0. + + + + + Set/Get color correction matrix element [0][1]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [0][2]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [0][3]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [1][0]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [1][1]. Type float. By default 1.0. + + + + + Set/Get color correction matrix element [1][2]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [1][3]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [2][0]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [2][1]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [2][2]. Type float. By default 1.0. + + + + + Set/Get color correction matrix element [2][3]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][0]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][1]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][2]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][3]. Type float. By default 1.0. + + + + + XIMEA camera's GPI port modes. + + + + + Input is off. + + + + + Trigger input. + + + + + External signal input. + + + + + XIMEA camera's GPO port modes. + + + + + Output off. + + + + + Logical level. + + + + + High during exposure (integration) time + readout time + data transfer time. + + + + + Low during exposure (integration) time + readout time + data trasnfer time. + + + + + High during exposure(integration) time. + + + + + Low during exposure(integration) time. + + + + + Enumeration of image formats supported by XIMEA cameras. + + + + + 8 bits per pixel. + + + + + 16 bits per pixel. + + + + + RGB data format. + + + + + RGBA data format. + + + + + XIMEA camera's LED state options. + + + + + Blink if link is ok (led 1), heartbeat mode (led 2). + + + + + Blink led if trigger detected. + + + + + Blink led if external signal detected. + + + + + Blink led during data streaming. + + + + + Blink led during sensor integration time. + + + + + Blink if device busy/not busy. + + + + + Blink led if link is OK. + + + + + Turn off LED. + + + + + Turn on LED. + + + + + Enumeration of camera's trigger modes. + + + + + Camera works in free run mode. + + + + + External trigger (rising edge). + + + + + External trigger (falling edge). + + + + + Software (manual) trigger. + + + + + The class provides access to XIMEA cameras. + + + The class allows to perform image acquisition from XIMEA cameras. + It wraps XIMEA'a xiAPI, which means that users of this class will also require m3api.dll and a correct + TM file for the camera model connected to the system (both are provided with XIMEA API software package). + + Sample usage: + + XimeaCamera camera = new XimeaCamera( ); + + // open camera and start data acquisition + camera.Open( 0 ); + camera.StartAcquisition( ); + + // set exposure time to 10 milliseconds + camera.SetParam( CameraParameter.Exposure, 10 * 1000 ); + + // get image from the camera + Bitmap bitmap = camera.GetImage( ); + // process the image + // ... + + // dispose the image when it is no longer needed + bitmap.Dispose( ); + + // stop data acquisition and close the camera + camera.StopAcquisition( ); + camera.Close( ); + + + + + + + + + Open XIMEA camera. + + + Camera ID to open. + + Opens the specified XIMEA camera preparing it for starting video acquisition + which is done using method. The + property can be used at any time to find if a camera was opened or not. + + An error occurred while communicating with a camera. See error + message for additional information. + + + + + Close opened camera (if any) and release allocated resources. + + + The method also calls method if it was not + done by user. + + An error occurred while communicating with a camera. See error + message for additional information. + + + + + Begin camera's work cycle and start data acquisition from it. + + + The property can be used at any time to find if the + acquisition was started or not. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + End camera's work cycle and stops data acquisition. + + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Set camera's parameter. + + + Parameter name. + Integer parameter value. + + The method allows to control different camera's parameters, like exposure time, gain value, etc. + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Set camera's parameter. + + + Parameter name. + Float parameter value. + + The method allows to control different camera's parameters, like exposure time, gain value, etc. + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get camera's parameter as integer value. + + + Parameter name to get from camera. + + Returns integer value of the requested parameter. + + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get camera's parameter as float value. + + + Parameter name to get from camera. + + Returns float value of the requested parameter. + + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get camera's parameter as string value. + + + Parameter name to get from camera. + + Returns string value of the requested parameter. + + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get image from the opened XIMEA camera. + + + Returns image retrieved from the camera. + + The method calls method specifying 5000 as the timeout + value. + + + + + Get image from the opened XIMEA camera. + + + Maximum time to wait in milliseconds till image becomes available. + + Returns image retrieved from the camera. + + The method calls method specifying + the makeCopy parameter. + + + + + Get image from the opened XIMEA camera. + + + Maximum time to wait in milliseconds till image becomes available. + Make a copy of the camera's image or not. + + Returns image retrieved from the camera. + + If the is set to , then the method + creates a managed copy of the camera's image, so the managed image stays valid even when the camera + is closed. However, setting this parameter to creates a managed image which is + just a wrapper around camera's unmanaged image. So if camera is closed and its resources are freed, the + managed image becomes no longer valid and accessing it will generate an exception. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + Time out value reached - no image is available within specified time value. + + + + + Get number of XIMEA camera connected to the system. + + + + + Specifies if camera's data acquisition is currently active for the opened camera (if any). + + + + + Specifies if a camera is currently opened by the instance of the class. + + + + + ID of the the recently opened XIMEA camera. + + + + + The class provides continues access to XIMEA cameras. + + + The video source class is aimed to provide continues access to XIMEA camera, when + images are continuosly acquired from camera and provided throw the event. + It just creates a background thread and gets new images from XIMEA camera + keeping the specified time interval between image acquisition. + Essentially it is a wrapper class around providing interface. + + Sample usage: + + // create video source for the XIMEA camera with ID 0 + XimeaVideoSource videoSource = new XimeaVideoSource( 0 ); + // set event handlers + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + + // set exposure time to 10 milliseconds + videoSource.SetParam( CameraParameter.Exposure, 10 * 1000 ); + + // ... + + // New frame event handler, which is invoked on each new available video frame + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + + + Initializes a new instance of the class. + + + XIMEA camera ID (index) to connect to. + + + + + Start video source. + + + Starts video source and returns execution to caller. Video camera will be started + and will provide new video frames through the event. + + There is no XIMEA camera with specified ID connected to the system. + An error occurred while communicating with a camera. See error + message for additional information. + + + + + Signal video source to stop its work. + + + + + + + + Wait for video source has stopped. + + + + + + + + Stop video source. + + + The method stops the video source, so it no longer provides new video frames + and does not consume any resources. + + + + + + Set camera's parameter. + + + Parameter name. + Integer parameter value. + + The call is redirected to . + + + + + Set camera's parameter. + + + Parameter name. + Float parameter value. + + The call is redirected to . + + + + + Get camera's parameter as integer value. + + + Parameter name to get from camera. + + Returns integer value of the requested parameter. + + The call is redirected to . + + + + + Get camera's parameter as float value. + + + Parameter name to get from camera. + + Returns float value of the requested parameter. + + The call is redirected to . + + + + + Get camera's parameter as string value. + + + Parameter name to get from camera. + + Returns string value of the requested parameter. + + The call is redirected to . + + + + + New frame event. + + + Notifies clients about new available frames from the video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + A string identifying the video source. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Time interval between frames. + + + The property sets the interval in milliseconds between getting new frames from the camera. + If the property is set to 100, then the desired frame rate should be about 10 frames per second. + + Setting this property to 0 leads to no delay between video frames - frames + are read as fast as possible. + + Default value is set to 200. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net45/Accord.Video.Ximea.dll b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net45/Accord.Video.Ximea.dll new file mode 100644 index 0000000000..483ef5747 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net45/Accord.Video.Ximea.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net45/Accord.Video.Ximea.xml b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net45/Accord.Video.Ximea.xml new file mode 100644 index 0000000000..6cae4bfbf --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Video.Ximea.3.0.2/lib/net45/Accord.Video.Ximea.xml @@ -0,0 +1,1122 @@ + + + + Accord.Video.Ximea + + + + + Set of available configuration options for XIMEA cameras. + + + The class defines list of parameters, which are available + to set/get using corresponding methods of and + classes. + + + + + Get camera model name. Type string. + + + + + Get device serial number in decimal format. Type string, integer, float + + + + + Returns device type (1394, USB2.0, CURRERA…..). Type string. + + + + + Set/Get exposure time in microseconds. Type integer. + + + + + Get longest possible exposure to be set on camera in microseconds. Type integer. + + + + + Get shortest possible exposure to be set on camera in microseconds. Type integer. + + + + + Set/Get camera gain in dB. Type float. + + + + + Get highest possible camera gain in dB. Type float. + + + + + Get lowest possible camera gain in dB. Type float. + + + + + Set/Get width of the image provided by the camera (in pixels). Type integer. + + + + + Get maximal image width provided by the camera (in pixels). Type integer. + + + + + Get minimum image width provided by the camera (in pixels). Type integer. + + + + + Set/Get height of the image provided by the camera (in pixels). Type integer. + + + + + Get maximal image height provided by the camera (in pixels). Type integer. + + + + + Get minimum image height provided by the camera (in pixels). Type integer. + + + + + Set/Get image resolution by binning or skipping. Type integer. + + + + + Get highest value for binning or skipping. Type integer. + + + + + Get lowest value for binning or skipping. Type integer. + + + + + Get frames per second. Type float. + + + + + Get highest possible framerate for current camera settings. Type float. + + + + + Get lowest framerate for current camera settings. Type float. + + + + + Set/Get horizontal offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get maximum horizontal offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get minimum horizontal offset from the origin to the area of interest (in pixels). Type integer. + + + + + Set/Get vertical offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get maximum vertical offset from the origin to the area of interest (in pixels). Type integer. + + + + + Get minimal vertical offset from the origin to the area of interest (in pixels). Type integer. + + + + + Set/Get white balance blue coefficient. Type float. + + + + + Set/Get white balance red coefficient. Type float. + + + + + Set/Get white balance green coefficient. Type float. + + + + + Set/Get sharpness strenght. Type float. + + + + + Set/Get luminosity gamma value. Type float. By default 1.0. + + + + + Set/Get chromaticity gamma value. Type float. By default 0. + + + + + Set default color correction matrx. + + + + + Set/Get image format provided by the camera. Type integer. Use + enumeraton for possible values. + + + + + Set/Get camera's trigger mode. Type integer. Use + enumeration for possible values. + + + + + Generates an internal trigger. must be set to . + Type integer. + + + + + Calculates white balance. Takes white balance from image center (should be white/grey object + in the center of scene). Type integer. + + + + + Enable/disable automatic white balance. Type integer. By default 0. + + + Set 0 to disable automatic white balance or 1 to enable. + + + + + Enable/disable bad pixels correction. Type integer. By default 0. + + + Set 0 to disable bad pixels correction or 1 to enable. + + + + + Set/Get acquisition buffer size in bytes. Type integer. By default 53248000. + + + Defines acquisition buffer size in bytes. This buffer contains images' + data from sensor. This parameter can be set only when acquisition is stopped. + + See for additional information. + + + + + + Set/Get maximum number of images to store in queue. Type integer. By default 4. + + + + + + See also for additional information. + + + + + + Set of configuration options to configure Automatic Exposure/Gain (AEAG) parameters. + + + + + Enable/disable automatic exposure/gain control. Type integer. By default 0. + + + Set 0 to disable automatic exposure/gain control or 1 to enable. + + + + + Set/Get maximum limit of exposure in AEAG procedure. Type integer. By default 100. Units - ms. + + + + + Set/Get maximum limit of gain in AEAG procedure. Type float. Default depends on camera type. Units - dB. + + + + + Set/Get exposure priority, [0, 1]. Type float. By default 0.8. + + + Setting the value to 0.5, for example, set exposure priority to 50% + and gain priority to 50%. + + + + + Set/Get average intensity of output signal AEAG should achieve (in %). Type float. By default 40. + + + + + Set of configuration options to configure camera's LEDs. Currently supported only for Currera-R cameras. + + + + + Selects camera LED to be used. Type integer. + + + + + Get highest LED number on camera. Type integer. + + + + + Get lowest LED number on camera. Type integer. + + + + + Set/Get LED functionality. Select LED by using parameter. + Use enumeration for possible parameter values. Type integer. + + + + + Set of configuration options to configure GPO (General Purpose Output) ports. + + + + + Select camera GPO port. Type integer. + + + + + Get highest GPO port number on camera. Type integer. + + + + + Get lowest GPO port number on camera. Type integer + + + + + Set/Get GPO port functionality. Select port by using parameter. + Use enumeration to set mode. Type integer. + + + + + Set of configuration options to access/configure GPI (General Purpose Input) ports. + + + + + Select camera GPI port. Type integer. + + + + + Get highest GPI port number on camera. Type integer. + + + + + Get lowest GPI port number on camera. Type integer + + + + + Set/Get GPI port functionality. Select port by using parameter. + Use enumeration to set mode. Type integer. + + + + + Get current GPI level. Type integer. + + + + + Set of configuration options to configure camera's LUT - Look-Up-Table. + Currently available only for Currera-R cameras. + + + + + Enable/Disable LUT. Type integer. Default 0. + + + Set 0 to disable LUT - sensor pixels are transferred directly. + Set 1 to enable LUT - sensor pixels are mapped through LUT. + + + + + Set/Get the index (offset) of the coefficient to access in the LUT. Type integer. + + + + + Get lowest LUT index (offset) of the coefficient to access in the LUT. Type integer. + + + + + Get highest LUT index (offset) of the coefficient to access in the LUT. Type integer. + + + + + Set/Get value in the LUT. Index of the value must be selected using + parameter. Type integer. + + + + + Get highest value to be set in LUT. Type integer. + + + + + Get lowest value to be set in LUT. Type integer. + + + + + Set of configuration options to access elements of Color Correction Matrix. + + + + + + Set/Get color correction matrix element [0][0]. Type float. By default 1.0. + + + + + Set/Get color correction matrix element [0][1]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [0][2]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [0][3]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [1][0]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [1][1]. Type float. By default 1.0. + + + + + Set/Get color correction matrix element [1][2]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [1][3]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [2][0]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [2][1]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [2][2]. Type float. By default 1.0. + + + + + Set/Get color correction matrix element [2][3]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][0]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][1]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][2]. Type float. By default 0.0. + + + + + Set/Get color correction matrix element [3][3]. Type float. By default 1.0. + + + + + XIMEA camera's GPI port modes. + + + + + Input is off. + + + + + Trigger input. + + + + + External signal input. + + + + + XIMEA camera's GPO port modes. + + + + + Output off. + + + + + Logical level. + + + + + High during exposure (integration) time + readout time + data transfer time. + + + + + Low during exposure (integration) time + readout time + data trasnfer time. + + + + + High during exposure(integration) time. + + + + + Low during exposure(integration) time. + + + + + Enumeration of image formats supported by XIMEA cameras. + + + + + 8 bits per pixel. + + + + + 16 bits per pixel. + + + + + RGB data format. + + + + + RGBA data format. + + + + + XIMEA camera's LED state options. + + + + + Blink if link is ok (led 1), heartbeat mode (led 2). + + + + + Blink led if trigger detected. + + + + + Blink led if external signal detected. + + + + + Blink led during data streaming. + + + + + Blink led during sensor integration time. + + + + + Blink if device busy/not busy. + + + + + Blink led if link is OK. + + + + + Turn off LED. + + + + + Turn on LED. + + + + + Enumeration of camera's trigger modes. + + + + + Camera works in free run mode. + + + + + External trigger (rising edge). + + + + + External trigger (falling edge). + + + + + Software (manual) trigger. + + + + + The class provides access to XIMEA cameras. + + + The class allows to perform image acquisition from XIMEA cameras. + It wraps XIMEA'a xiAPI, which means that users of this class will also require m3api.dll and a correct + TM file for the camera model connected to the system (both are provided with XIMEA API software package). + + Sample usage: + + XimeaCamera camera = new XimeaCamera( ); + + // open camera and start data acquisition + camera.Open( 0 ); + camera.StartAcquisition( ); + + // set exposure time to 10 milliseconds + camera.SetParam( CameraParameter.Exposure, 10 * 1000 ); + + // get image from the camera + Bitmap bitmap = camera.GetImage( ); + // process the image + // ... + + // dispose the image when it is no longer needed + bitmap.Dispose( ); + + // stop data acquisition and close the camera + camera.StopAcquisition( ); + camera.Close( ); + + + + + + + + + Open XIMEA camera. + + + Camera ID to open. + + Opens the specified XIMEA camera preparing it for starting video acquisition + which is done using method. The + property can be used at any time to find if a camera was opened or not. + + An error occurred while communicating with a camera. See error + message for additional information. + + + + + Close opened camera (if any) and release allocated resources. + + + The method also calls method if it was not + done by user. + + An error occurred while communicating with a camera. See error + message for additional information. + + + + + Begin camera's work cycle and start data acquisition from it. + + + The property can be used at any time to find if the + acquisition was started or not. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + End camera's work cycle and stops data acquisition. + + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Set camera's parameter. + + + Parameter name. + Integer parameter value. + + The method allows to control different camera's parameters, like exposure time, gain value, etc. + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Set camera's parameter. + + + Parameter name. + Float parameter value. + + The method allows to control different camera's parameters, like exposure time, gain value, etc. + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get camera's parameter as integer value. + + + Parameter name to get from camera. + + Returns integer value of the requested parameter. + + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get camera's parameter as float value. + + + Parameter name to get from camera. + + Returns float value of the requested parameter. + + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get camera's parameter as string value. + + + Parameter name to get from camera. + + Returns string value of the requested parameter. + + See class for the list of some possible configuration parameters. See + XIMEA documentation for the complete list of supported parameters. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + + + + + Get image from the opened XIMEA camera. + + + Returns image retrieved from the camera. + + The method calls method specifying 5000 as the timeout + value. + + + + + Get image from the opened XIMEA camera. + + + Maximum time to wait in milliseconds till image becomes available. + + Returns image retrieved from the camera. + + The method calls method specifying + the makeCopy parameter. + + + + + Get image from the opened XIMEA camera. + + + Maximum time to wait in milliseconds till image becomes available. + Make a copy of the camera's image or not. + + Returns image retrieved from the camera. + + If the is set to , then the method + creates a managed copy of the camera's image, so the managed image stays valid even when the camera + is closed. However, setting this parameter to creates a managed image which is + just a wrapper around camera's unmanaged image. So if camera is closed and its resources are freed, the + managed image becomes no longer valid and accessing it will generate an exception. + + An error occurred while communicating with a camera. See error + message for additional information. + No camera was opened, so can not access its methods. + Time out value reached - no image is available within specified time value. + + + + + Get number of XIMEA camera connected to the system. + + + + + Specifies if camera's data acquisition is currently active for the opened camera (if any). + + + + + Specifies if a camera is currently opened by the instance of the class. + + + + + ID of the the recently opened XIMEA camera. + + + + + The class provides continues access to XIMEA cameras. + + + The video source class is aimed to provide continues access to XIMEA camera, when + images are continuosly acquired from camera and provided throw the event. + It just creates a background thread and gets new images from XIMEA camera + keeping the specified time interval between image acquisition. + Essentially it is a wrapper class around providing interface. + + Sample usage: + + // create video source for the XIMEA camera with ID 0 + XimeaVideoSource videoSource = new XimeaVideoSource( 0 ); + // set event handlers + videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + // start the video source + videoSource.Start( ); + + // set exposure time to 10 milliseconds + videoSource.SetParam( CameraParameter.Exposure, 10 * 1000 ); + + // ... + + // New frame event handler, which is invoked on each new available video frame + private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + { + // get new frame + Bitmap bitmap = eventArgs.Frame; + // process the frame + } + + + + + + + + + Initializes a new instance of the class. + + + XIMEA camera ID (index) to connect to. + + + + + Start video source. + + + Starts video source and returns execution to caller. Video camera will be started + and will provide new video frames through the event. + + There is no XIMEA camera with specified ID connected to the system. + An error occurred while communicating with a camera. See error + message for additional information. + + + + + Signal video source to stop its work. + + + + + + + + Wait for video source has stopped. + + + + + + + + Stop video source. + + + The method stops the video source, so it no longer provides new video frames + and does not consume any resources. + + + + + + Set camera's parameter. + + + Parameter name. + Integer parameter value. + + The call is redirected to . + + + + + Set camera's parameter. + + + Parameter name. + Float parameter value. + + The call is redirected to . + + + + + Get camera's parameter as integer value. + + + Parameter name to get from camera. + + Returns integer value of the requested parameter. + + The call is redirected to . + + + + + Get camera's parameter as float value. + + + Parameter name to get from camera. + + Returns float value of the requested parameter. + + The call is redirected to . + + + + + Get camera's parameter as string value. + + + Parameter name to get from camera. + + Returns string value of the requested parameter. + + The call is redirected to . + + + + + New frame event. + + + Notifies clients about new available frames from the video source. + + Since video source may have multiple clients, each client is responsible for + making a copy (cloning) of the passed video frame, because the video source disposes its + own original copy after notifying of clients. + + + + + + Video source error event. + + + This event is used to notify clients about any type of errors occurred in + video source object, for example internal exceptions. + + + + + Video playing finished event. + + + This event is used to notify clients that the video playing has finished. + + + + + + A string identifying the video source. + + + + + + State of the video source. + + + Current state of video source object - running or not. + + + + + Received bytes count. + + + Number of bytes the video source provided from the moment of the last + access to the property. + + + + + + Received frames count. + + + Number of frames the video source provided from the moment of the last + access to the property. + + + + + + Time interval between frames. + + + The property sets the interval in milliseconds between getting new frames from the camera. + If the property is set to 100, then the desired frame rate should be about 10 frames per second. + + Setting this property to 0 leads to no delay between video frames - frames + are read as fast as possible. + + Default value is set to 200. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/Accord.Vision.3.0.2.nupkg b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/Accord.Vision.3.0.2.nupkg new file mode 100644 index 0000000000..53b84e219 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/Accord.Vision.3.0.2.nupkg differ diff --git a/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net35/Accord.Vision.dll b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net35/Accord.Vision.dll new file mode 100644 index 0000000000..36963fa53 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net35/Accord.Vision.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net35/Accord.Vision.xml b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net35/Accord.Vision.xml new file mode 100644 index 0000000000..2c56de0ec --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net35/Accord.Vision.xml @@ -0,0 +1,3021 @@ + + + + Accord.Vision + + + + + Group matching algorithm for detection region averaging. + + + + This class can be seen as a post-processing filter. Its goal is to + group near or contained regions together in order to produce more + robust and smooth estimates of the detected regions. + + + + + + Group matching algorithm for detection region averaging. + + + + This class can be seen as a post-processing filter. Its goal is to + group near or contained regions together in order to produce more + robust and smooth estimates of the detected regions. + + + + + + Creates a new object. + + + + The minimum number of neighbors needed to keep a detection. If a rectangle + has less than this minimum number, it will be discarded as a false positive. + + + + + Groups possibly near rectangles into a smaller + set of distinct and averaged rectangles. + + + The rectangles to group. + + + + + Detects rectangles which are near and + assigns similar class labels accordingly. + + + + + + Merges two labels. + + + + + + When overridden in a child class, should compute + whether two given shapes are near. Definition of + near is up to the implementation. + + + True if the two shapes are near; false otherwise. + + + + + When overridden in a child class, should compute + an average of the shapes given as parameters. + + + The label of each shape. + The shapes themselves. + Should return how many neighbors each shape had. + + The averaged shapes found in the given parameters. + + + + + Gets or sets the minimum number of neighbors necessary to keep a detection. + If a rectangle has less neighbors than this number, it will be discarded as + a false positive. + + + + + + Gets how many classes were found in the + last call to . + + + + + + Creates a new object. + + + + The minimum number of neighbors needed to keep a detection. If a rectangle + has less than this minimum number, it will be discarded as a false positive. + + The minimum distance threshold to consider two rectangles as neighbors. + Default is 0.2. + + + + + Checks if two rectangles are near. + + + + + + Averages rectangles which belongs to the + same class (have the same class label) + + + + + + Gets the minimum distance threshold to consider + two rectangles as neighbors. Default is 0.2. + + + + + + Default Face Haar Cascade for using with Haar Classifiers. + + + + The definition was originally based on a hard coded partial transcription of + OpenCV's haarcascade_frontalface_alt.xml by Mario Klingemann. This + class, however, has been re-created using . + + + + + + Cascade of Haar-like features' weak classification stages. + + + + + The Viola-Jones object detection framework is the first object detection framework + to provide competitive object detection rates in real-time proposed in 2001 by Paul + Viola and Michael Jones. Although it can be trained to detect a variety of object + classes, it was motivated primarily by the problem of face detection. + + + The implementation of this code has used Viola and Jones' original publication, the + OpenCV Library and the Marilena Project as reference. OpenCV is released under a BSD + license, it is free for both academic and commercial use. Please be aware that some + particular versions of the Haar object detection framework are patented by Viola and + Jones and may be subject to restrictions for use in commercial applications. + + + References: + + + + Viola, P. and Jones, M. (2001). Rapid Object Detection using a Boosted Cascade + of Simple Features. + + + Wikipedia, The Free Encyclopedia. Viola-Jones object detection framework + + + + + + + To load an OpenCV-compatible XML definition for a Haar cascade, you can use HaarCascade's + FromXml static method. An example would be: + + String path = @"C:\Users\haarcascade-frontalface_alt2.xml"; + HaarCascade cascade1 = HaarCascade.FromXml(path); + + + + After the cascade has been loaded, it is possible to create a new + using the cascade. Please see for more details. It is also + possible to generate embeddable C# definitions from a cascade, avoiding the need to load + XML files on program startup. Please see method or + class for details. + + + + + + Constructs a new Haar Cascade. + + + Base feature width. + Base feature height. + Haar-like features classification stages. + + + + + Constructs a new Haar Cascade. + + + Base feature width. + Base feature height. + + + + + Checks if the classifier contains tilted (rotated) features + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Loads a HaarCascade from a OpenCV-compatible XML file. + + + + A containing the file stream + for the xml definition of the classifier to be loaded. + + The HaarCascadeClassifier loaded from the file. + + + + + Loads a HaarCascade from a OpenCV-compatible XML file. + + + + The file path for the xml definition of the classifier to be loaded. + + The HaarCascadeClassifier loaded from the file. + + + + + Loads a HaarCascade from a OpenCV-compatible XML file. + + + + A containing the file stream + for the xml definition of the classifier to be loaded. + + The HaarCascadeClassifier loaded from the file. + + + + + Saves a HaarCascade to C# code. + + + + + + Saves a HaarCascade to C# code. + + + + + + Gets the stages' base width. + + + + + + Gets the stages' base height. + + + + + + Gets the classification stages. + + + + + + Gets a value indicating whether this cascade has tilted features. + + + + true if this cascade has tilted features; otherwise, false. + + + + + + Hard-coded partial transcription of haarcascade_frontalface_alt.xml + based on code by Mario Klingemann. + + + + + + Automatic transcription of Haar cascade definitions + for facial features by Modesto Castrillon-Santana. + + + + + This code has been automatically generated by the Accord.NET Framework + based on original research by Modesto Castrillon-Santana. The original + code has been shared under a BSD license in the OpenCV library and has + been incorporated in the Accord.NET Framework under permission of the + original author. + + + // Copyright (c) 2008, Modesto Castrillon-Santana (IUSIANI, University of + // Las Palmas de Gran Canaria, Spain). + // All rights reserved. + // + // Redistribution and use in source and binary forms, with or without + // modification, are permitted provided that the following conditions are + // met: + // + // * Redistributions of source code must retain the above copyright + // notice, this list of conditions and the following disclaimer. + // * Redistributions in binary form must reproduce the above + // copyright notice, this list of conditions and the following + // disclaimer in the documentation and/or other materials provided + // with the distribution. + // * The name of Contributor may not used to endorse or promote products + // derived from this software without specific prior written permission. + // + // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + + + + + Creates a new cascade for nose detection. + + + + + + Automatic transcriber for Haar cascades. + + + + This class can be used to generate code-only definitions for Haar cascades, + avoiding the need for loading and parsing XML files during application startup. + This class generates C# code for a class inheriting from + which may be used to create a . + + + + + + Constructs a new class. + + The stream to write to. + + + + + Writes the specified cascade. + + The cascade to write. + The name for the generated class. + + + + + Strong classifier based on a weaker cascade of + classifiers using Haar-like rectangular features. + + + + + The Viola-Jones object detection framework is the first object detection framework + to provide competitive object detection rates in real-time proposed in 2001 by Paul + Viola and Michael Jones. Although it can be trained to detect a variety of object + classes, it was motivated primarily by the problem of face detection. + + + The implementation of this code has used Viola and Jones' original publication, the + OpenCV Library and the Marilena Project as reference. OpenCV is released under a BSD + license, it is free for both academic and commercial use. Please be aware that some + particular versions of the Haar object detection framework are patented by Viola and + Jones and may be subject to restrictions for use in commercial applications. The code + has been implemented with full support for tilted Haar features. + + + References: + + + + Viola, P. and Jones, M. (2001). Rapid Object Detection using a Boosted Cascade + of Simple Features. + + + http://en.wikipedia.org/wiki/Viola-Jones_object_detection_framework + + + + + + + + + Constructs a new classifier. + + + + + + Constructs a new classifier. + + + + + + Detects the presence of an object in a given window. + + + + + + Gets the cascade of weak-classifiers + used by this strong classifier. + + + + + + Gets or sets the scale of the search window + being currently used by the classifier. + + + + + + Haar Cascade Classifier Stage. + + + + A Haar Cascade Classifier is composed of several stages. Each stage + contains a set of classifier trees used in the decision process. + + + + + + Constructs a new Haar Cascade Stage. + + + + + + Constructs a new Haar Cascade Stage. + + + + + + Constructs a new Haar Cascade Stage. + + + + + + Classifies an image as having the searched object or not. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the feature trees and its respective + feature tree nodes which compose this stage. + + + + + + Gets or sets the threshold associated with this stage, + i.e. the minimum value the classifiers should output + to decide if the image contains the object or not. + + + + + + Gets the index of the parent stage from this stage. + + + + + + Gets the index of the next stage from this stage. + + + + + + Haar Cascade Serialization Root. This class is used + only for XML serialization/deserialization. + + + + + + The stages retrieved after deserialization. + + + + + Haar Cascade Feature Tree Node. + + + + The Feature Node is a node belonging to a feature tree, + containing information about child nodes and an associated + . + + + + + + Constructs a new feature tree node. + + + + + Constructs a new feature tree node. + + + + + + Constructs a new feature tree node. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the threshold for this feature. + + + + + + Gets the left value for this feature. + + + + + + Gets the right value for this feature. + + + + + + Gets the left node index for this feature. + + + + + + Gets the right node index for this feature. + + + + + + Gets the feature associated with this node. + + + + + + Rectangular Haar-like feature container. + + + + References: + - http://en.wikipedia.org/wiki/Haar-like_features#Rectangular_Haar-like_features + + + + + + Constructs a new Haar-like feature. + + + + + + Constructs a new Haar-like feature. + + + + + + Constructs a new Haar-like feature. + + + + + + Constructs a new Haar-like feature. + + + + + + Gets the sum of the areas of the rectangular features in an integral image. + + + + + + Sets the scale and weight of a Haar-like rectangular feature container. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets whether this feature is tilted. + + + + + + Gets or sets the Haar rectangles for this feature. + + + + + + Scalable rectangular area. + + + + A rectangle which can be at any position and scale within the original image. + + + + + + Constructs a new Haar-like feature rectangle. + + Values for this rectangle. + + + + + Constructs a new Haar-like feature rectangle. + + + + + + Scales the values of this rectangle. + + + + + + Scales the weight of this rectangle. + + + + + + Converts from a string representation. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the x-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the y-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the width of this Haar feature rectangle. + + + + + + Gets or sets the height of this Haar feature rectangle. + + + + + + Gets or sets the weight of this Haar feature rectangle. + + + + + + Gets or sets the scaled x-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the scaled y-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the scaled width of this Haar feature rectangle. + + + + + + Gets or sets the scaled height of this Haar feature rectangle. + + + + + + Gets or sets the scaled weight of this Haar feature rectangle. + + + + + + Gets the area of this rectangle. + + + + + + Object detector interface. + + + + + Process a new image scene looking for objects. + + + + + Gets the location of the detected objects. + + + + + Object detector options for the search procedure. + + + + + + Entire image will be scanned. + + + + + + Only a single object will be retrieved. + + + + + + If a object has already been detected inside an area, + it will not be scanned twice for inner or overlapping + objects, saving computation time. + + + + + + If several objects are located within one another, + they will be averaged. Additionally, objects which + have not been detected sufficient times may be dropped + by setting . + + + + + + Object detector options for window scaling. + + + + + + Will start with a big search window and + gradually scale into smaller ones. + + + + + + Will start with small search windows and + gradually scale into greater ones. + + + + + + Viola-Jones Object Detector based on Haar-like features. + + + + + The Viola-Jones object detection framework is the first object detection framework + to provide competitive object detection rates in real-time proposed in 2001 by Paul + Viola and Michael Jones. Although it can be trained to detect a variety of object + classes, it was motivated primarily by the problem of face detection. + + + The implementation of this code has used Viola and Jones' original publication, the + OpenCV Library and the Marilena Project as reference. OpenCV is released under a BSD + license, it is free for both academic and commercial use. Please be aware that some + particular versions of the Haar object detection framework are patented by Viola and + Jones and may be subject to restrictions for use in commercial applications. The code + has been implemented with full support for tilted Haar features from the ground up. + + + References: + + + + Viola, P. and Jones, M. (2001). Rapid Object Detection using a Boosted Cascade + of Simple Features. + + + http://en.wikipedia.org/wiki/Viola-Jones_object_detection_framework + + + + + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + Minimum window size to consider when searching for + objects. Default value is 15. + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + + Minimum window size to consider when searching for + objects. Default value is 15. + The to use + during search. Please see documentation of + for details. Default value is + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + Minimum window size to consider when searching for + objects. Default value is 15. + + The to use + during search. Please see documentation of + for details. Default value is + The re-scaling factor to use when re-scaling the window during search. + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + Minimum window size to consider when searching for + objects. Default value is 15. + The to use + during search. Please see documentation of + for details. Default is . + The scaling factor to rescale the window + during search. Default value is 1.2f. + The to use + when re-scaling the search window during search. Default is + . + + + + + Performs object detection on the given frame. + + + + + + Performs object detection on the given frame. + + + + + + Gets or sets a value indicating whether this + should scan the image using multiple threads. This setting can only be changed + to true on .NET version which support the Parallel Tasks framework (4.0+). + + + true to use multiple threads; otherwise, false. + + + + + Minimum window size to consider when searching objects. + + + + + + Maximum window size to consider when searching objects. + + + + + + Gets or sets the color channel to use when processing color images. + + + + + + Gets or sets the scaling factor to rescale the window during search. + + + + + + Gets or sets the desired searching method. + + + + + + Gets or sets the desired scaling method. + + + + + + Gets or sets the minimum threshold used to suppress rectangles which + have not been detected sufficient number of times. This property only + has effect when is set to . + + + + + The value of this property represents the minimum amount of detections + made inside a region to report this region as an actual detection. For + example, setting this property to two will discard all regions which + had not achieved at least two detected rectangles within it. + + + Setting this property to a value higher than zero may decrease the + number of false positives. + + + + + + Gets the detected objects bounding boxes. + + + + + + Gets the internal Cascade Classifier used by this detector. + + + + + + Gets how many frames the object has + been detected in a steady position. + + + The number of frames the detected object + has been in a steady position. + + + + + Motion processing algorithm, which counts separate moving objects and highlights them. + + + The aim of this motion processing algorithm is to count separate objects + in the motion frame, which is provided by motion detection algorithm. + In the case if property is set to , + found objects are also highlighted on the original video frame. The algorithm + counts and highlights only those objects, which size satisfies + and properties. + + The motion processing algorithm is supposed to be used only with motion detection + algorithms, which are based on finding difference with background frame + (see and + as simple implementations) and allow extract moving objects clearly. + + Sample usage: + + // create instance of motion detection algorithm + IMotionDetector motionDetector = new ... ; + // create instance of motion processing algorithm + BlobCountingObjectsProcessing motionProcessing = new BlobCountingObjectsProcessing( ); + // create motion detector + MotionDetector detector = new MotionDetector( motionDetector, motionProcessing ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // check number of detected objects + if ( motionProcessing.ObjectsCount > 1 ) + { + // ... + } + } + } + + + + + + + + + + Interface of motion processing algorithm. + + + The interface specifies methods, which should be implemented + by all motion processng algorithms - algorithm which perform further post processing + of detected motion, which is done by motion detection algorithms (see ). + + + + + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + The method does father post processing of detected motion. + Type of motion post processing is specified by specific implementation + of the interface - it may motion + area highlighting, motion objects counting, etc. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + Some motion processing algorithms may not have any stored internal + states and may just process provided video frames without relying on any motion + history etc. In this case such algorithms provide empty implementation of this method. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Highlight motion regions or not (see property). + + + + + Initializes a new instance of the class. + + + Minimum width of acceptable object (see property). + Minimum height of acceptable object (see property). + + + + + Initializes a new instance of the class. + + + Minimum width of acceptable object (see property). + Minimum height of acceptable object (see property). + Color used to highlight motion regions. + + + + + Initializes a new instance of the class. + + + Minimum width of acceptable object (see property). + Minimum height of acceptable object (see property). + Highlight motion regions or not (see property). + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and counts number of separate + objects, which size satisfies and + properties. In the case if property is + set to , the found object are also highlighted on the + original video frame. + + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Highlight motion regions or not. + + + The property specifies if detected moving objects should be highlighted + with rectangle or not. + + Default value is set to . + + Turning the value on leads to additional processing time of video frame. + + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Minimum width of acceptable object. + + + The property sets minimum width of an object to count and highlight. If + objects have smaller width, they are not counted and are not highlighted. + + Default value is set to 10. + + + + + + Minimum height of acceptable object. + + + The property sets minimum height of an object to count and highlight. If + objects have smaller height, they are not counted and are not highlighted. + + Default value is set to 10. + + + + + + Number of detected objects. + + + The property provides number of moving objects detected by + the last call of method. + + + + + Rectangles of moving objects. + + + The property provides array of moving objects' rectangles + detected by the last call of method. + + + + + Motion detector based on difference with predefined background frame. + + + The class implements motion detection algorithm, which is based on + difference of current video frame with predefined background frame. The difference frame + is thresholded and the amount of difference pixels is calculated. + To suppress stand-alone noisy pixels erosion morphological operator may be applied, which + is controlled by property. + + In the case if precise motion area's borders are required (for example, + for further motion post processing), then property + may be used to restore borders after noise suppression. + + In the case if custom background frame is not specified by using + method, the algorithm takes first video frame + as a background frame and calculates difference of further video frames with it. + + Unlike motion detection algorithm, this algorithm + allows to identify quite clearly all objects, which are not part of the background (scene) - + most likely moving objects. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new CustomFrameDifferenceDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + + + Interface of motion detector algorithm. + + + The interface specifies methods, which should be implemented + by all motion detection algorithms - algorithms which perform processing of video + frames in order to detect motion. Amount of detected motion may be checked using + property. Also property may + be used in order to see all the detected motion areas. For example, the property + is used by motion processing algorithms for further motion post processing, like + highlighting motion areas, counting number of detected moving object, etc. + + + + + + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% of changes + (however it is up to specific implementation to decide how to compare specified frame). + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + Restore objects edges after noise suppression or not (see property). + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + Check property to get information about amount of motion + (changes) in the processed frame. + + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + In the case if custom background frame was set using + method, this method does not reset it. + The method resets only automatically generated background frame. + + + + + + + Set background frame. + + + Background frame to set. + + The method sets background frame, which will be used to calculate + difference with. + + + + + Set background frame. + + + Background frame to set. + + The method sets background frame, which will be used to calculate + difference with. + + + + + Set background frame. + + + Background frame to set. + + The method sets background frame, which will be used to calculate + difference with. + + + + + Difference threshold value, [1, 255]. + + + The value specifies the amount off difference between pixels, which is treated + as motion pixel. + + Default value is set to 15. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% difference + with defined background frame. + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + The property is set to after processing of the first + video frame by the algorithm in the case if custom background frame was not set manually + by using method (it will be not + after second call in this case). If correct custom background + was set then the property should bet set to estimated motion frame after + method call. + + + + + + Suppress noise in video frames or not. + + + The value specifies if additional filtering should be + done to suppress standalone noisy pixels by applying 3x3 erosion image processing + filter. See property, if it is required to restore + edges of objects, which are not noise. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Restore objects edges after noise suppression or not. + + + The value specifies if additional filtering should be done + to restore objects' edges after noise suppression by applying 3x3 dilatation + image processing filter. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Motion processing algorithm, which performs grid processing of motion frame. + + + The aim of this motion processing algorithm is to do grid processing + of motion frame. This means that entire motion frame is divided by a grid into + certain amount of cells and the motion level is calculated for each cell. The + information about each cell's motion level may be retrieved using + property. + + In addition the algorithm can highlight those cells, which have motion + level above the specified threshold (see + property). To enable this it is required to set + property to . + + Sample usage: + + // create instance of motion detection algorithm + IMotionDetector motionDetector = new ... ; + // create instance of motion processing algorithm + GridMotionAreaProcessing motionProcessing = new GridMotionAreaProcessing( 16, 16 ); + // create motion detector + MotionDetector detector = new MotionDetector( motionDetector, motionProcessing ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame + detector.ProcessFrame( videoFrame ); + + // check motion level in 5th row 8th column + if ( motionProcessing.MotionGrid[5, 8] > 0.15 ) + { + // ... + } + } + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Width of motion grid (see property). + Height of motion grid (see property). + + + + + Initializes a new instance of the class. + + + Width of motion grid (see property). + Height of motion grid (see property). + Highlight motion regions or not (see property). + + + + + Initializes a new instance of the class. + + + Width of motion grid (see property). + Height of motion grid (see property). + Highlight motion regions or not (see property). + Motion amount to highlight cell (see property). + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and calculates motion level + for each grid's cell. In the case if property is + set to , the cell with motion level above threshold are + highlighted. + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Highlight motion regions or not. + + + The property specifies if motion grid should be highlighted - + if cell, which have motion level above the + specified value, should be highlighted. + + Default value is set to . + + Turning the value on leads to additional processing time of video frame. + + + + + + Motion amount to highlight cell. + + + The property specifies motion level threshold for highlighting grid's + cells. If motion level of a certain cell is higher than this value, then the cell + is highlighted. + + Default value is set to 0.15. + + + + + + Motion levels of each grid's cell. + + + The property represents an array of size + x, which keeps motion level + of each grid's cell. If certain cell has motion level equal to 0.2, then it + means that this cell has 20% of changes. + + + + + + Width of motion grid, [2, 64]. + + + The property specifies motion grid's width - number of grid' columns. + + Default value is set to 16. + + + + + + Height of motion grid, [2, 64]. + + + The property specifies motion grid's height - number of grid' rows. + + Default value is set to 16. + + + + + + Motion processing algorithm, which highlights motion areas. + + + The aim of this motion processing algorithm is to highlight + motion areas with grid pattern of the specified color. + + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + /* motion detection algorithm */, + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame + detector.ProcessFrame( videoFrame ); + } + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Color used to highlight motion regions. + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and highlights motion areas + on the original video frame with specified color. + + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Motion processing algorithm, which highlights border of motion areas. + + + The aim of this motion processing algorithm is to highlight + borders of motion areas with the specified color. + + + The motion processing algorithm is supposed to be used only with motion detection + algorithms, which are based on finding difference with background frame + (see and + as simple implementations) and allow extract moving objects clearly. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + /* motion detection algorithm */, + new MotionBorderHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame + detector.ProcessFrame( videoFrame ); + } + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Color used to highlight motion regions. + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and highlights borders of motion areas + on the original video frame with specified color. + + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Motion detection wrapper class, which performs motion detection and processing. + + + The class serves as a wrapper class for + motion detection and + motion processing algorithms, allowing to call them with + single call. Unlike motion detection and motion processing interfaces, the class also + provides additional methods for convenience, so the algorithms could be applied not + only to , but to .NET's class + as well. + + In addition to wrapping of motion detection and processing algorthms, the class provides + some additional functionality. Using property it is possible to specify + set of rectangular zones to observe - only motion in these zones is counted and post procesed. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new SimpleBackgroundModelingDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + Initializes a new instance of the class. + + + Motion detection algorithm to apply to each video frame. + + + + + Initializes a new instance of the class. + + + Motion detection algorithm to apply to each video frame. + Motion processing algorithm to apply to each video frame after + motion detection is done. + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Returns amount of motion, which is provided + property of the motion detection algorithm in use. + + See for additional details. + + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Returns amount of motion, which is provided + property of the motion detection algorithm in use. + + See for additional details. + + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Returns amount of motion, which is provided + property of the motion detection algorithm in use. + + The method first of all applies motion detection algorithm to the specified video + frame to calculate motion level and + motion frame. After this it applies motion processing algorithm + (if it was set) to do further post processing, like highlighting motion areas, counting moving + objects, etc. + + In the case if property is set, this method will perform + motion filtering right after motion algorithm is done and before passing motion frame to motion + processing algorithm. The method does filtering right on the motion frame, which is produced + by motion detection algorithm. At the same time the method recalculates motion level and returns + new value, which takes motion zones into account (but the new value is not set back to motion detection + algorithm' property). + + + + + + + Reset motion detector to initial state. + + + The method resets motion detection and motion processing algotithms by calling + their and methods. + + + + + + Motion detection algorithm to apply to each video frame. + + + The property sets motion detection algorithm, which is used by + method in order to calculate + motion level and + motion frame. + + + + + + Motion processing algorithm to apply to each video frame after + motion detection is done. + + + The property sets motion processing algorithm, which is used by + method after motion detection in order to do further + post processing of motion frames. The aim of further post processing depends on + actual implementation of the specified motion processing algorithm - it can be + highlighting of motion area, objects counting, etc. + + + + + + Set of zones to detect motion in. + + + The property keeps array of rectangular zones, which are observed for motion detection. + Motion outside of these zones is ignored. + + In the case if this property is set, the method + will filter out all motion witch was detected by motion detection algorithm, but is not + located in the specified zones. + + + + + + Motion detector based on simple background modeling. + + + The class implements motion detection algorithm, which is based on + difference of current video frame with modeled background frame. + The difference frame is thresholded and the + amount of difference pixels is calculated. + To suppress stand-alone noisy pixels erosion morphological operator may be applied, which + is controlled by property. + + In the case if precise motion area's borders are required (for example, + for further motion post processing), then property + may be used to restore borders after noise suppression. + + As the first approximation of background frame, the first frame of video stream is taken. + During further video processing the background frame is constantly updated, so it + changes in the direction to decrease difference with current video frame (the background + frame is moved towards current frame). See + properties, which control the rate of + background frame update. + + Unlike motion detection algorithm, this algorithm + allows to identify quite clearly all objects, which are not part of the background (scene) - + most likely moving objects. And unlike motion + detection algorithm, this algorithm includes background adaptation feature, which allows it + to update its modeled background frame in order to take scene changes into account. + + Because of the adaptation feature of the algorithm, it may adopt + to background changes, what algorithm can not do. + However, if moving object stays on the scene for a while (so algorithm adopts to it and does + not treat it as a new moving object any more) and then starts to move again, the algorithm may + find two moving objects - the true one, which is really moving, and the false one, which does not (the + place, where the object stayed for a while). + + The algorithm is not applicable to such cases, when moving object resides + in camera's view most of the time (laptops camera monitoring a person sitting in front of it, + for example). The algorithm is mostly supposed for cases, when camera monitors some sort + of static scene, where moving objects appear from time to time - street, road, corridor, etc. + + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new SimpleBackgroundModelingDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + Restore objects edges after noise suppression or not (see property). + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + Check property to get information about amount of motion + (changes) in the processed frame. + + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + + + + + Difference threshold value, [1, 255]. + + + The value specifies the amount off difference between pixels, which is treated + as motion pixel. + + Default value is set to 15. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% difference + with modeled background frame. + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + The property is set to after processing of the first + video frame by the algorithm. + + + + + + Suppress noise in video frames or not. + + + The value specifies if additional filtering should be + done to suppress standalone noisy pixels by applying 3x3 erosion image processing + filter. See property, if it is required to restore + edges of objects, which are not noise. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Restore objects edges after noise suppression or not. + + + The value specifies if additional filtering should be done + to restore objects' edges after noise suppression by applying 3x3 dilatation + image processing filter. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Frames per background update, [1, 50]. + + + The value controls the speed of modeled background adaptation to + scene changes. After each specified amount of frames the background frame is updated + in the direction to decrease difference with current processing frame. + + Default value is set to 2. + + The property has effect only in the case if + property is set to 0. Otherwise it does not have effect and background + update is managed according to the + property settings. + + + + + + Milliseconds per background update, [0, 5000]. + + + The value represents alternate way of controlling the speed of modeled + background adaptation to scene changes. The value sets number of milliseconds, which + should elapse between two consequent video frames to result in background update + for one intensity level. For example, if this value is set to 100 milliseconds and + the amount of time elapsed between two last video frames equals to 350, then background + frame will be update for 3 intensity levels in the direction to decrease difference + with current video frame (the remained 50 milliseconds will be added to time difference + between two next consequent frames, so the accuracy is preserved). + + Unlike background update method controlled using + method, the method guided by this property is not affected by changes + in frame rates. If, for some reasons, a video source starts to provide delays between + frames (frame rate drops down), the amount of background update still stays consistent. + When background update is controlled by this property, it is always possible to estimate + amount of time required to change, for example, absolutely black background (0 intensity + values) into absolutely white background (255 intensity values). If value of this + property is set to 100, then it will take approximately 25.5 seconds for such update + regardless of frame rate. + + Background update controlled by this property is slightly slower then + background update controlled by property, + so it has a bit greater impact on performance. + + If this property is set to 0, then corresponding background updating + method is not used (turned off), but background update guided by + property is used. + + Default value is set to 0. + + + + + + Motion detector based on two continues frames difference. + + + The class implements the simplest motion detection algorithm, which is + based on difference of two continues frames. The difference frame + is thresholded and the amount of difference pixels is calculated. + To suppress stand-alone noisy pixels erosion morphological operator may be applied, which + is controlled by property. + + Although the class may be used on its own to perform motion detection, it is preferred + to use it in conjunction with class, which provides additional + features and allows to use moton post processing algorithms. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new TwoFramesDifferenceDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + Check property to get information about amount of motion + (changes) in the processed frame. + + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + + + + + Difference threshold value, [1, 255]. + + + The value specifies the amount off difference between pixels, which is treated + as motion pixel. + + Default value is set to 15. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% difference + with previous frame. + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + The property is set to after processing of the first + video frame by the algorithm. + + + + + + Suppress noise in video frames or not. + + + The value specifies if additional filtering should be + done to suppress standalone noisy pixels by applying 3x3 erosion image processing + filter. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Template matching object tracker. + + + + The matching tracker will track the object presented in the search window + of the first frame given to the tracker. To reset the tracker and start + tracking another object, one can call the Reset method, then set the search + window around a new object of interest present the image containing the new + object to the tracker. + + + + + + Object tracker interface. + + + + + + Process a new video frame. + + + + + + Gets the current location of the object being tracked. + + + + + + Gets or sets a value indicating whether the tracker should + extract the object image from the source. The extracted image + should be stored in . + + + + + + Constructs a new object tracker. + + + + + + Process a new video frame. + + + + + + Resets this instance. + + + + + + Gets or sets the current search window. + + + + + + Gets the current location of the object being tracked. + + + + + + Gets or sets the similarity threshold to + determine when the object has been lost. + + + + + + Gets or sets a value indicating whether the tracker should + extract the object image from the source. The extracted image + should be stored in . + + + + + + Modes for the Camshift Tracker. + + + + + + By choosing RGB, the tracker will process raw high-intensity RGB values. + + + + + + By choosing HSL, the tracker will perform a RGB-to-HSL conversion and use the Hue value instead. + + + + + + By choosing Mixed, the tracker will use HSL with some lightness information. + + + + + + Continuously Adaptive Mean Shift (Camshift) Object Tracker + + + + Camshift stands for "Continuously Adaptive Mean Shift". It combines the basic + Mean Shift algorithm with an adaptive region-sizing step. The kernel is a step + function applied to a probability map. The probability of each image pixel is + based on color using a method called histogram backprojection. + + The implementation of this code has used Gary Bradski's original publication, + the OpenCV Library and the FaceIt implementation as references. The OpenCV + library is distributed under a BSD license. FaceIt is distributed under a MIT + license. The original licensing terms for FaceIt are described in the source + code and in the Copyright.txt file accompanying the framework. + + + References: + + + G.R. Bradski, Computer video face tracking for use in a perceptual user interface, + Intel Technology Journal, Q2 1998. Available on: + + ftp://download.intel.com/technology/itj/q21998/pdf/camshift.pdf + + R. Hewitt, Face tracking project description: Camshift Algorithm. Available on: + + http://www.robinhewitt.com/research/track/camshift.html + + OpenCV Computer Vision Library. Available on: + + http://sourceforge.net/projects/opencvlibrary/ + + FaceIt object tracking in Flash AS3. Available on: + + http://www.libspark.org/browser/as3/FaceIt + + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Resets the object tracking algorithm. + + + + + + Generates a image of the histogram back projection + + + + + Generates a image of the histogram backprojection + + + + + Generates a image of the histogram backprojection + + + + + Generates a image of the histogram backprojection + + + + + Processes a new video frame. + + + + + + Camshift algorithm + + + + + + Mean shift algorithm + + + + + + Computes the ratio histogram between to histograms. + + + + http://www.robinhewitt.com/research/track/backproject.html + + + + + + Image histogram back-projection. + + + + + + Creates a color histogram discarding low intensity colors + + + + + + Checks for aberrant fluctuations in the tracking object. + + + + + + Gets or sets the current search window. + + + + + + Gets or sets the desired window aspect ratio. + + + + + + Gets or sets the mode of operation for this tracker. + + + + + + If using HSL mode, specifies the operational saturation range for the tracker. + + + + + + If using HSL mode, specifies the operational lightness range for the tracker. + + + + + + Gets the location of the object being tracked. + + + + + + Gets or sets a value indicating whether the tracker + should extract the object image from the source. The + extracted image will be available in . + + + + + + Probability map + + + + + + Gets or sets whether the algorithm should scan only the + active window or the entire image for histogram ratio. + + + + + + Gets or sets a value indicating whether the angular + movements should be smoothed using a moving average. + + true to smooth angular movements; otherwise, false. + + + + + Gets whether the tracking object is + showing little variation of fluctuation. + + true if the tracking object is steady; otherwise, false. + + + + + Blob object tracker. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The filter. + + + + + Process a new video frame. + + + + + + Resets this instance. + + + + + Gets or sets the maximum width of tracked objects. + + + + + + Gets or sets the maximum height of tracked objects. + + + + + + Gets or sets the minimum width of tracked objects. + + + + + + Gets or sets the minimum height of tracked objects. + + + + + + Gets or sets a value indicating whether the tracker + should extract the object image from the source. The + extracted image will be available in . + + + + + + Gets or sets whether the tracker should compute blob's orientation. + + + + + + Gets the HSL filter used in color segmentation. + + + The HSL filter used in segmentation. + + + + + Gets the HSL filtered image. + + + + + + Gets the current location of the object being tracked. + + + + + + Axis orientation. + + + + + + Horizontal axis. + + + + + + Vertical axis. + + + + + + Tracking object to represent an object in a scene. + + + + + + Constructs a new tracking object. + + + + + + Constructs a new tracking object. + + + The center of gravity of the object. + + + + + Constructs a new tracking object. + + + The angle of orientation for the object. + The center of gravity of the object. + The rectangle containing the object. + + + + + Constructs a new tracking object. + + + The rectangle containing the object. + The angle of the object. + + + + + Gets two points defining the horizontal axis of the object. + + + + + + Gets two points defining the axis of the object. + + + + + + Resets this tracking object. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + Pass true to not include + the in the copy object. + + + + + Gets or sets an user-defined tag associated with this object. + + + + + + Gets or sets the rectangle containing the object. + + + + + + Gets or sets the center of gravity of the object + relative to the original image from where it has + been extracted. + + + + + + Gets or sets the object's extracted image. + + + + + + Gets a value indicating whether the object is empty. + + + true if this instance is empty; otherwise, false. + + + + + Gets the area of the object. + + + + + + Gets or sets the angle of the object. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net40/Accord.Vision.dll b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net40/Accord.Vision.dll new file mode 100644 index 0000000000..a46177b88 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net40/Accord.Vision.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net40/Accord.Vision.xml b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net40/Accord.Vision.xml new file mode 100644 index 0000000000..2c56de0ec --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net40/Accord.Vision.xml @@ -0,0 +1,3021 @@ + + + + Accord.Vision + + + + + Group matching algorithm for detection region averaging. + + + + This class can be seen as a post-processing filter. Its goal is to + group near or contained regions together in order to produce more + robust and smooth estimates of the detected regions. + + + + + + Group matching algorithm for detection region averaging. + + + + This class can be seen as a post-processing filter. Its goal is to + group near or contained regions together in order to produce more + robust and smooth estimates of the detected regions. + + + + + + Creates a new object. + + + + The minimum number of neighbors needed to keep a detection. If a rectangle + has less than this minimum number, it will be discarded as a false positive. + + + + + Groups possibly near rectangles into a smaller + set of distinct and averaged rectangles. + + + The rectangles to group. + + + + + Detects rectangles which are near and + assigns similar class labels accordingly. + + + + + + Merges two labels. + + + + + + When overridden in a child class, should compute + whether two given shapes are near. Definition of + near is up to the implementation. + + + True if the two shapes are near; false otherwise. + + + + + When overridden in a child class, should compute + an average of the shapes given as parameters. + + + The label of each shape. + The shapes themselves. + Should return how many neighbors each shape had. + + The averaged shapes found in the given parameters. + + + + + Gets or sets the minimum number of neighbors necessary to keep a detection. + If a rectangle has less neighbors than this number, it will be discarded as + a false positive. + + + + + + Gets how many classes were found in the + last call to . + + + + + + Creates a new object. + + + + The minimum number of neighbors needed to keep a detection. If a rectangle + has less than this minimum number, it will be discarded as a false positive. + + The minimum distance threshold to consider two rectangles as neighbors. + Default is 0.2. + + + + + Checks if two rectangles are near. + + + + + + Averages rectangles which belongs to the + same class (have the same class label) + + + + + + Gets the minimum distance threshold to consider + two rectangles as neighbors. Default is 0.2. + + + + + + Default Face Haar Cascade for using with Haar Classifiers. + + + + The definition was originally based on a hard coded partial transcription of + OpenCV's haarcascade_frontalface_alt.xml by Mario Klingemann. This + class, however, has been re-created using . + + + + + + Cascade of Haar-like features' weak classification stages. + + + + + The Viola-Jones object detection framework is the first object detection framework + to provide competitive object detection rates in real-time proposed in 2001 by Paul + Viola and Michael Jones. Although it can be trained to detect a variety of object + classes, it was motivated primarily by the problem of face detection. + + + The implementation of this code has used Viola and Jones' original publication, the + OpenCV Library and the Marilena Project as reference. OpenCV is released under a BSD + license, it is free for both academic and commercial use. Please be aware that some + particular versions of the Haar object detection framework are patented by Viola and + Jones and may be subject to restrictions for use in commercial applications. + + + References: + + + + Viola, P. and Jones, M. (2001). Rapid Object Detection using a Boosted Cascade + of Simple Features. + + + Wikipedia, The Free Encyclopedia. Viola-Jones object detection framework + + + + + + + To load an OpenCV-compatible XML definition for a Haar cascade, you can use HaarCascade's + FromXml static method. An example would be: + + String path = @"C:\Users\haarcascade-frontalface_alt2.xml"; + HaarCascade cascade1 = HaarCascade.FromXml(path); + + + + After the cascade has been loaded, it is possible to create a new + using the cascade. Please see for more details. It is also + possible to generate embeddable C# definitions from a cascade, avoiding the need to load + XML files on program startup. Please see method or + class for details. + + + + + + Constructs a new Haar Cascade. + + + Base feature width. + Base feature height. + Haar-like features classification stages. + + + + + Constructs a new Haar Cascade. + + + Base feature width. + Base feature height. + + + + + Checks if the classifier contains tilted (rotated) features + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Loads a HaarCascade from a OpenCV-compatible XML file. + + + + A containing the file stream + for the xml definition of the classifier to be loaded. + + The HaarCascadeClassifier loaded from the file. + + + + + Loads a HaarCascade from a OpenCV-compatible XML file. + + + + The file path for the xml definition of the classifier to be loaded. + + The HaarCascadeClassifier loaded from the file. + + + + + Loads a HaarCascade from a OpenCV-compatible XML file. + + + + A containing the file stream + for the xml definition of the classifier to be loaded. + + The HaarCascadeClassifier loaded from the file. + + + + + Saves a HaarCascade to C# code. + + + + + + Saves a HaarCascade to C# code. + + + + + + Gets the stages' base width. + + + + + + Gets the stages' base height. + + + + + + Gets the classification stages. + + + + + + Gets a value indicating whether this cascade has tilted features. + + + + true if this cascade has tilted features; otherwise, false. + + + + + + Hard-coded partial transcription of haarcascade_frontalface_alt.xml + based on code by Mario Klingemann. + + + + + + Automatic transcription of Haar cascade definitions + for facial features by Modesto Castrillon-Santana. + + + + + This code has been automatically generated by the Accord.NET Framework + based on original research by Modesto Castrillon-Santana. The original + code has been shared under a BSD license in the OpenCV library and has + been incorporated in the Accord.NET Framework under permission of the + original author. + + + // Copyright (c) 2008, Modesto Castrillon-Santana (IUSIANI, University of + // Las Palmas de Gran Canaria, Spain). + // All rights reserved. + // + // Redistribution and use in source and binary forms, with or without + // modification, are permitted provided that the following conditions are + // met: + // + // * Redistributions of source code must retain the above copyright + // notice, this list of conditions and the following disclaimer. + // * Redistributions in binary form must reproduce the above + // copyright notice, this list of conditions and the following + // disclaimer in the documentation and/or other materials provided + // with the distribution. + // * The name of Contributor may not used to endorse or promote products + // derived from this software without specific prior written permission. + // + // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + + + + + Creates a new cascade for nose detection. + + + + + + Automatic transcriber for Haar cascades. + + + + This class can be used to generate code-only definitions for Haar cascades, + avoiding the need for loading and parsing XML files during application startup. + This class generates C# code for a class inheriting from + which may be used to create a . + + + + + + Constructs a new class. + + The stream to write to. + + + + + Writes the specified cascade. + + The cascade to write. + The name for the generated class. + + + + + Strong classifier based on a weaker cascade of + classifiers using Haar-like rectangular features. + + + + + The Viola-Jones object detection framework is the first object detection framework + to provide competitive object detection rates in real-time proposed in 2001 by Paul + Viola and Michael Jones. Although it can be trained to detect a variety of object + classes, it was motivated primarily by the problem of face detection. + + + The implementation of this code has used Viola and Jones' original publication, the + OpenCV Library and the Marilena Project as reference. OpenCV is released under a BSD + license, it is free for both academic and commercial use. Please be aware that some + particular versions of the Haar object detection framework are patented by Viola and + Jones and may be subject to restrictions for use in commercial applications. The code + has been implemented with full support for tilted Haar features. + + + References: + + + + Viola, P. and Jones, M. (2001). Rapid Object Detection using a Boosted Cascade + of Simple Features. + + + http://en.wikipedia.org/wiki/Viola-Jones_object_detection_framework + + + + + + + + + Constructs a new classifier. + + + + + + Constructs a new classifier. + + + + + + Detects the presence of an object in a given window. + + + + + + Gets the cascade of weak-classifiers + used by this strong classifier. + + + + + + Gets or sets the scale of the search window + being currently used by the classifier. + + + + + + Haar Cascade Classifier Stage. + + + + A Haar Cascade Classifier is composed of several stages. Each stage + contains a set of classifier trees used in the decision process. + + + + + + Constructs a new Haar Cascade Stage. + + + + + + Constructs a new Haar Cascade Stage. + + + + + + Constructs a new Haar Cascade Stage. + + + + + + Classifies an image as having the searched object or not. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the feature trees and its respective + feature tree nodes which compose this stage. + + + + + + Gets or sets the threshold associated with this stage, + i.e. the minimum value the classifiers should output + to decide if the image contains the object or not. + + + + + + Gets the index of the parent stage from this stage. + + + + + + Gets the index of the next stage from this stage. + + + + + + Haar Cascade Serialization Root. This class is used + only for XML serialization/deserialization. + + + + + + The stages retrieved after deserialization. + + + + + Haar Cascade Feature Tree Node. + + + + The Feature Node is a node belonging to a feature tree, + containing information about child nodes and an associated + . + + + + + + Constructs a new feature tree node. + + + + + Constructs a new feature tree node. + + + + + + Constructs a new feature tree node. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the threshold for this feature. + + + + + + Gets the left value for this feature. + + + + + + Gets the right value for this feature. + + + + + + Gets the left node index for this feature. + + + + + + Gets the right node index for this feature. + + + + + + Gets the feature associated with this node. + + + + + + Rectangular Haar-like feature container. + + + + References: + - http://en.wikipedia.org/wiki/Haar-like_features#Rectangular_Haar-like_features + + + + + + Constructs a new Haar-like feature. + + + + + + Constructs a new Haar-like feature. + + + + + + Constructs a new Haar-like feature. + + + + + + Constructs a new Haar-like feature. + + + + + + Gets the sum of the areas of the rectangular features in an integral image. + + + + + + Sets the scale and weight of a Haar-like rectangular feature container. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets whether this feature is tilted. + + + + + + Gets or sets the Haar rectangles for this feature. + + + + + + Scalable rectangular area. + + + + A rectangle which can be at any position and scale within the original image. + + + + + + Constructs a new Haar-like feature rectangle. + + Values for this rectangle. + + + + + Constructs a new Haar-like feature rectangle. + + + + + + Scales the values of this rectangle. + + + + + + Scales the weight of this rectangle. + + + + + + Converts from a string representation. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the x-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the y-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the width of this Haar feature rectangle. + + + + + + Gets or sets the height of this Haar feature rectangle. + + + + + + Gets or sets the weight of this Haar feature rectangle. + + + + + + Gets or sets the scaled x-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the scaled y-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the scaled width of this Haar feature rectangle. + + + + + + Gets or sets the scaled height of this Haar feature rectangle. + + + + + + Gets or sets the scaled weight of this Haar feature rectangle. + + + + + + Gets the area of this rectangle. + + + + + + Object detector interface. + + + + + Process a new image scene looking for objects. + + + + + Gets the location of the detected objects. + + + + + Object detector options for the search procedure. + + + + + + Entire image will be scanned. + + + + + + Only a single object will be retrieved. + + + + + + If a object has already been detected inside an area, + it will not be scanned twice for inner or overlapping + objects, saving computation time. + + + + + + If several objects are located within one another, + they will be averaged. Additionally, objects which + have not been detected sufficient times may be dropped + by setting . + + + + + + Object detector options for window scaling. + + + + + + Will start with a big search window and + gradually scale into smaller ones. + + + + + + Will start with small search windows and + gradually scale into greater ones. + + + + + + Viola-Jones Object Detector based on Haar-like features. + + + + + The Viola-Jones object detection framework is the first object detection framework + to provide competitive object detection rates in real-time proposed in 2001 by Paul + Viola and Michael Jones. Although it can be trained to detect a variety of object + classes, it was motivated primarily by the problem of face detection. + + + The implementation of this code has used Viola and Jones' original publication, the + OpenCV Library and the Marilena Project as reference. OpenCV is released under a BSD + license, it is free for both academic and commercial use. Please be aware that some + particular versions of the Haar object detection framework are patented by Viola and + Jones and may be subject to restrictions for use in commercial applications. The code + has been implemented with full support for tilted Haar features from the ground up. + + + References: + + + + Viola, P. and Jones, M. (2001). Rapid Object Detection using a Boosted Cascade + of Simple Features. + + + http://en.wikipedia.org/wiki/Viola-Jones_object_detection_framework + + + + + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + Minimum window size to consider when searching for + objects. Default value is 15. + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + + Minimum window size to consider when searching for + objects. Default value is 15. + The to use + during search. Please see documentation of + for details. Default value is + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + Minimum window size to consider when searching for + objects. Default value is 15. + + The to use + during search. Please see documentation of + for details. Default value is + The re-scaling factor to use when re-scaling the window during search. + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + Minimum window size to consider when searching for + objects. Default value is 15. + The to use + during search. Please see documentation of + for details. Default is . + The scaling factor to rescale the window + during search. Default value is 1.2f. + The to use + when re-scaling the search window during search. Default is + . + + + + + Performs object detection on the given frame. + + + + + + Performs object detection on the given frame. + + + + + + Gets or sets a value indicating whether this + should scan the image using multiple threads. This setting can only be changed + to true on .NET version which support the Parallel Tasks framework (4.0+). + + + true to use multiple threads; otherwise, false. + + + + + Minimum window size to consider when searching objects. + + + + + + Maximum window size to consider when searching objects. + + + + + + Gets or sets the color channel to use when processing color images. + + + + + + Gets or sets the scaling factor to rescale the window during search. + + + + + + Gets or sets the desired searching method. + + + + + + Gets or sets the desired scaling method. + + + + + + Gets or sets the minimum threshold used to suppress rectangles which + have not been detected sufficient number of times. This property only + has effect when is set to . + + + + + The value of this property represents the minimum amount of detections + made inside a region to report this region as an actual detection. For + example, setting this property to two will discard all regions which + had not achieved at least two detected rectangles within it. + + + Setting this property to a value higher than zero may decrease the + number of false positives. + + + + + + Gets the detected objects bounding boxes. + + + + + + Gets the internal Cascade Classifier used by this detector. + + + + + + Gets how many frames the object has + been detected in a steady position. + + + The number of frames the detected object + has been in a steady position. + + + + + Motion processing algorithm, which counts separate moving objects and highlights them. + + + The aim of this motion processing algorithm is to count separate objects + in the motion frame, which is provided by motion detection algorithm. + In the case if property is set to , + found objects are also highlighted on the original video frame. The algorithm + counts and highlights only those objects, which size satisfies + and properties. + + The motion processing algorithm is supposed to be used only with motion detection + algorithms, which are based on finding difference with background frame + (see and + as simple implementations) and allow extract moving objects clearly. + + Sample usage: + + // create instance of motion detection algorithm + IMotionDetector motionDetector = new ... ; + // create instance of motion processing algorithm + BlobCountingObjectsProcessing motionProcessing = new BlobCountingObjectsProcessing( ); + // create motion detector + MotionDetector detector = new MotionDetector( motionDetector, motionProcessing ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // check number of detected objects + if ( motionProcessing.ObjectsCount > 1 ) + { + // ... + } + } + } + + + + + + + + + + Interface of motion processing algorithm. + + + The interface specifies methods, which should be implemented + by all motion processng algorithms - algorithm which perform further post processing + of detected motion, which is done by motion detection algorithms (see ). + + + + + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + The method does father post processing of detected motion. + Type of motion post processing is specified by specific implementation + of the interface - it may motion + area highlighting, motion objects counting, etc. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + Some motion processing algorithms may not have any stored internal + states and may just process provided video frames without relying on any motion + history etc. In this case such algorithms provide empty implementation of this method. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Highlight motion regions or not (see property). + + + + + Initializes a new instance of the class. + + + Minimum width of acceptable object (see property). + Minimum height of acceptable object (see property). + + + + + Initializes a new instance of the class. + + + Minimum width of acceptable object (see property). + Minimum height of acceptable object (see property). + Color used to highlight motion regions. + + + + + Initializes a new instance of the class. + + + Minimum width of acceptable object (see property). + Minimum height of acceptable object (see property). + Highlight motion regions or not (see property). + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and counts number of separate + objects, which size satisfies and + properties. In the case if property is + set to , the found object are also highlighted on the + original video frame. + + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Highlight motion regions or not. + + + The property specifies if detected moving objects should be highlighted + with rectangle or not. + + Default value is set to . + + Turning the value on leads to additional processing time of video frame. + + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Minimum width of acceptable object. + + + The property sets minimum width of an object to count and highlight. If + objects have smaller width, they are not counted and are not highlighted. + + Default value is set to 10. + + + + + + Minimum height of acceptable object. + + + The property sets minimum height of an object to count and highlight. If + objects have smaller height, they are not counted and are not highlighted. + + Default value is set to 10. + + + + + + Number of detected objects. + + + The property provides number of moving objects detected by + the last call of method. + + + + + Rectangles of moving objects. + + + The property provides array of moving objects' rectangles + detected by the last call of method. + + + + + Motion detector based on difference with predefined background frame. + + + The class implements motion detection algorithm, which is based on + difference of current video frame with predefined background frame. The difference frame + is thresholded and the amount of difference pixels is calculated. + To suppress stand-alone noisy pixels erosion morphological operator may be applied, which + is controlled by property. + + In the case if precise motion area's borders are required (for example, + for further motion post processing), then property + may be used to restore borders after noise suppression. + + In the case if custom background frame is not specified by using + method, the algorithm takes first video frame + as a background frame and calculates difference of further video frames with it. + + Unlike motion detection algorithm, this algorithm + allows to identify quite clearly all objects, which are not part of the background (scene) - + most likely moving objects. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new CustomFrameDifferenceDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + + + Interface of motion detector algorithm. + + + The interface specifies methods, which should be implemented + by all motion detection algorithms - algorithms which perform processing of video + frames in order to detect motion. Amount of detected motion may be checked using + property. Also property may + be used in order to see all the detected motion areas. For example, the property + is used by motion processing algorithms for further motion post processing, like + highlighting motion areas, counting number of detected moving object, etc. + + + + + + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% of changes + (however it is up to specific implementation to decide how to compare specified frame). + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + Restore objects edges after noise suppression or not (see property). + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + Check property to get information about amount of motion + (changes) in the processed frame. + + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + In the case if custom background frame was set using + method, this method does not reset it. + The method resets only automatically generated background frame. + + + + + + + Set background frame. + + + Background frame to set. + + The method sets background frame, which will be used to calculate + difference with. + + + + + Set background frame. + + + Background frame to set. + + The method sets background frame, which will be used to calculate + difference with. + + + + + Set background frame. + + + Background frame to set. + + The method sets background frame, which will be used to calculate + difference with. + + + + + Difference threshold value, [1, 255]. + + + The value specifies the amount off difference between pixels, which is treated + as motion pixel. + + Default value is set to 15. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% difference + with defined background frame. + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + The property is set to after processing of the first + video frame by the algorithm in the case if custom background frame was not set manually + by using method (it will be not + after second call in this case). If correct custom background + was set then the property should bet set to estimated motion frame after + method call. + + + + + + Suppress noise in video frames or not. + + + The value specifies if additional filtering should be + done to suppress standalone noisy pixels by applying 3x3 erosion image processing + filter. See property, if it is required to restore + edges of objects, which are not noise. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Restore objects edges after noise suppression or not. + + + The value specifies if additional filtering should be done + to restore objects' edges after noise suppression by applying 3x3 dilatation + image processing filter. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Motion processing algorithm, which performs grid processing of motion frame. + + + The aim of this motion processing algorithm is to do grid processing + of motion frame. This means that entire motion frame is divided by a grid into + certain amount of cells and the motion level is calculated for each cell. The + information about each cell's motion level may be retrieved using + property. + + In addition the algorithm can highlight those cells, which have motion + level above the specified threshold (see + property). To enable this it is required to set + property to . + + Sample usage: + + // create instance of motion detection algorithm + IMotionDetector motionDetector = new ... ; + // create instance of motion processing algorithm + GridMotionAreaProcessing motionProcessing = new GridMotionAreaProcessing( 16, 16 ); + // create motion detector + MotionDetector detector = new MotionDetector( motionDetector, motionProcessing ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame + detector.ProcessFrame( videoFrame ); + + // check motion level in 5th row 8th column + if ( motionProcessing.MotionGrid[5, 8] > 0.15 ) + { + // ... + } + } + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Width of motion grid (see property). + Height of motion grid (see property). + + + + + Initializes a new instance of the class. + + + Width of motion grid (see property). + Height of motion grid (see property). + Highlight motion regions or not (see property). + + + + + Initializes a new instance of the class. + + + Width of motion grid (see property). + Height of motion grid (see property). + Highlight motion regions or not (see property). + Motion amount to highlight cell (see property). + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and calculates motion level + for each grid's cell. In the case if property is + set to , the cell with motion level above threshold are + highlighted. + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Highlight motion regions or not. + + + The property specifies if motion grid should be highlighted - + if cell, which have motion level above the + specified value, should be highlighted. + + Default value is set to . + + Turning the value on leads to additional processing time of video frame. + + + + + + Motion amount to highlight cell. + + + The property specifies motion level threshold for highlighting grid's + cells. If motion level of a certain cell is higher than this value, then the cell + is highlighted. + + Default value is set to 0.15. + + + + + + Motion levels of each grid's cell. + + + The property represents an array of size + x, which keeps motion level + of each grid's cell. If certain cell has motion level equal to 0.2, then it + means that this cell has 20% of changes. + + + + + + Width of motion grid, [2, 64]. + + + The property specifies motion grid's width - number of grid' columns. + + Default value is set to 16. + + + + + + Height of motion grid, [2, 64]. + + + The property specifies motion grid's height - number of grid' rows. + + Default value is set to 16. + + + + + + Motion processing algorithm, which highlights motion areas. + + + The aim of this motion processing algorithm is to highlight + motion areas with grid pattern of the specified color. + + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + /* motion detection algorithm */, + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame + detector.ProcessFrame( videoFrame ); + } + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Color used to highlight motion regions. + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and highlights motion areas + on the original video frame with specified color. + + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Motion processing algorithm, which highlights border of motion areas. + + + The aim of this motion processing algorithm is to highlight + borders of motion areas with the specified color. + + + The motion processing algorithm is supposed to be used only with motion detection + algorithms, which are based on finding difference with background frame + (see and + as simple implementations) and allow extract moving objects clearly. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + /* motion detection algorithm */, + new MotionBorderHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame + detector.ProcessFrame( videoFrame ); + } + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Color used to highlight motion regions. + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and highlights borders of motion areas + on the original video frame with specified color. + + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Motion detection wrapper class, which performs motion detection and processing. + + + The class serves as a wrapper class for + motion detection and + motion processing algorithms, allowing to call them with + single call. Unlike motion detection and motion processing interfaces, the class also + provides additional methods for convenience, so the algorithms could be applied not + only to , but to .NET's class + as well. + + In addition to wrapping of motion detection and processing algorthms, the class provides + some additional functionality. Using property it is possible to specify + set of rectangular zones to observe - only motion in these zones is counted and post procesed. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new SimpleBackgroundModelingDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + Initializes a new instance of the class. + + + Motion detection algorithm to apply to each video frame. + + + + + Initializes a new instance of the class. + + + Motion detection algorithm to apply to each video frame. + Motion processing algorithm to apply to each video frame after + motion detection is done. + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Returns amount of motion, which is provided + property of the motion detection algorithm in use. + + See for additional details. + + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Returns amount of motion, which is provided + property of the motion detection algorithm in use. + + See for additional details. + + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Returns amount of motion, which is provided + property of the motion detection algorithm in use. + + The method first of all applies motion detection algorithm to the specified video + frame to calculate motion level and + motion frame. After this it applies motion processing algorithm + (if it was set) to do further post processing, like highlighting motion areas, counting moving + objects, etc. + + In the case if property is set, this method will perform + motion filtering right after motion algorithm is done and before passing motion frame to motion + processing algorithm. The method does filtering right on the motion frame, which is produced + by motion detection algorithm. At the same time the method recalculates motion level and returns + new value, which takes motion zones into account (but the new value is not set back to motion detection + algorithm' property). + + + + + + + Reset motion detector to initial state. + + + The method resets motion detection and motion processing algotithms by calling + their and methods. + + + + + + Motion detection algorithm to apply to each video frame. + + + The property sets motion detection algorithm, which is used by + method in order to calculate + motion level and + motion frame. + + + + + + Motion processing algorithm to apply to each video frame after + motion detection is done. + + + The property sets motion processing algorithm, which is used by + method after motion detection in order to do further + post processing of motion frames. The aim of further post processing depends on + actual implementation of the specified motion processing algorithm - it can be + highlighting of motion area, objects counting, etc. + + + + + + Set of zones to detect motion in. + + + The property keeps array of rectangular zones, which are observed for motion detection. + Motion outside of these zones is ignored. + + In the case if this property is set, the method + will filter out all motion witch was detected by motion detection algorithm, but is not + located in the specified zones. + + + + + + Motion detector based on simple background modeling. + + + The class implements motion detection algorithm, which is based on + difference of current video frame with modeled background frame. + The difference frame is thresholded and the + amount of difference pixels is calculated. + To suppress stand-alone noisy pixels erosion morphological operator may be applied, which + is controlled by property. + + In the case if precise motion area's borders are required (for example, + for further motion post processing), then property + may be used to restore borders after noise suppression. + + As the first approximation of background frame, the first frame of video stream is taken. + During further video processing the background frame is constantly updated, so it + changes in the direction to decrease difference with current video frame (the background + frame is moved towards current frame). See + properties, which control the rate of + background frame update. + + Unlike motion detection algorithm, this algorithm + allows to identify quite clearly all objects, which are not part of the background (scene) - + most likely moving objects. And unlike motion + detection algorithm, this algorithm includes background adaptation feature, which allows it + to update its modeled background frame in order to take scene changes into account. + + Because of the adaptation feature of the algorithm, it may adopt + to background changes, what algorithm can not do. + However, if moving object stays on the scene for a while (so algorithm adopts to it and does + not treat it as a new moving object any more) and then starts to move again, the algorithm may + find two moving objects - the true one, which is really moving, and the false one, which does not (the + place, where the object stayed for a while). + + The algorithm is not applicable to such cases, when moving object resides + in camera's view most of the time (laptops camera monitoring a person sitting in front of it, + for example). The algorithm is mostly supposed for cases, when camera monitors some sort + of static scene, where moving objects appear from time to time - street, road, corridor, etc. + + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new SimpleBackgroundModelingDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + Restore objects edges after noise suppression or not (see property). + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + Check property to get information about amount of motion + (changes) in the processed frame. + + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + + + + + Difference threshold value, [1, 255]. + + + The value specifies the amount off difference between pixels, which is treated + as motion pixel. + + Default value is set to 15. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% difference + with modeled background frame. + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + The property is set to after processing of the first + video frame by the algorithm. + + + + + + Suppress noise in video frames or not. + + + The value specifies if additional filtering should be + done to suppress standalone noisy pixels by applying 3x3 erosion image processing + filter. See property, if it is required to restore + edges of objects, which are not noise. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Restore objects edges after noise suppression or not. + + + The value specifies if additional filtering should be done + to restore objects' edges after noise suppression by applying 3x3 dilatation + image processing filter. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Frames per background update, [1, 50]. + + + The value controls the speed of modeled background adaptation to + scene changes. After each specified amount of frames the background frame is updated + in the direction to decrease difference with current processing frame. + + Default value is set to 2. + + The property has effect only in the case if + property is set to 0. Otherwise it does not have effect and background + update is managed according to the + property settings. + + + + + + Milliseconds per background update, [0, 5000]. + + + The value represents alternate way of controlling the speed of modeled + background adaptation to scene changes. The value sets number of milliseconds, which + should elapse between two consequent video frames to result in background update + for one intensity level. For example, if this value is set to 100 milliseconds and + the amount of time elapsed between two last video frames equals to 350, then background + frame will be update for 3 intensity levels in the direction to decrease difference + with current video frame (the remained 50 milliseconds will be added to time difference + between two next consequent frames, so the accuracy is preserved). + + Unlike background update method controlled using + method, the method guided by this property is not affected by changes + in frame rates. If, for some reasons, a video source starts to provide delays between + frames (frame rate drops down), the amount of background update still stays consistent. + When background update is controlled by this property, it is always possible to estimate + amount of time required to change, for example, absolutely black background (0 intensity + values) into absolutely white background (255 intensity values). If value of this + property is set to 100, then it will take approximately 25.5 seconds for such update + regardless of frame rate. + + Background update controlled by this property is slightly slower then + background update controlled by property, + so it has a bit greater impact on performance. + + If this property is set to 0, then corresponding background updating + method is not used (turned off), but background update guided by + property is used. + + Default value is set to 0. + + + + + + Motion detector based on two continues frames difference. + + + The class implements the simplest motion detection algorithm, which is + based on difference of two continues frames. The difference frame + is thresholded and the amount of difference pixels is calculated. + To suppress stand-alone noisy pixels erosion morphological operator may be applied, which + is controlled by property. + + Although the class may be used on its own to perform motion detection, it is preferred + to use it in conjunction with class, which provides additional + features and allows to use moton post processing algorithms. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new TwoFramesDifferenceDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + Check property to get information about amount of motion + (changes) in the processed frame. + + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + + + + + Difference threshold value, [1, 255]. + + + The value specifies the amount off difference between pixels, which is treated + as motion pixel. + + Default value is set to 15. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% difference + with previous frame. + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + The property is set to after processing of the first + video frame by the algorithm. + + + + + + Suppress noise in video frames or not. + + + The value specifies if additional filtering should be + done to suppress standalone noisy pixels by applying 3x3 erosion image processing + filter. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Template matching object tracker. + + + + The matching tracker will track the object presented in the search window + of the first frame given to the tracker. To reset the tracker and start + tracking another object, one can call the Reset method, then set the search + window around a new object of interest present the image containing the new + object to the tracker. + + + + + + Object tracker interface. + + + + + + Process a new video frame. + + + + + + Gets the current location of the object being tracked. + + + + + + Gets or sets a value indicating whether the tracker should + extract the object image from the source. The extracted image + should be stored in . + + + + + + Constructs a new object tracker. + + + + + + Process a new video frame. + + + + + + Resets this instance. + + + + + + Gets or sets the current search window. + + + + + + Gets the current location of the object being tracked. + + + + + + Gets or sets the similarity threshold to + determine when the object has been lost. + + + + + + Gets or sets a value indicating whether the tracker should + extract the object image from the source. The extracted image + should be stored in . + + + + + + Modes for the Camshift Tracker. + + + + + + By choosing RGB, the tracker will process raw high-intensity RGB values. + + + + + + By choosing HSL, the tracker will perform a RGB-to-HSL conversion and use the Hue value instead. + + + + + + By choosing Mixed, the tracker will use HSL with some lightness information. + + + + + + Continuously Adaptive Mean Shift (Camshift) Object Tracker + + + + Camshift stands for "Continuously Adaptive Mean Shift". It combines the basic + Mean Shift algorithm with an adaptive region-sizing step. The kernel is a step + function applied to a probability map. The probability of each image pixel is + based on color using a method called histogram backprojection. + + The implementation of this code has used Gary Bradski's original publication, + the OpenCV Library and the FaceIt implementation as references. The OpenCV + library is distributed under a BSD license. FaceIt is distributed under a MIT + license. The original licensing terms for FaceIt are described in the source + code and in the Copyright.txt file accompanying the framework. + + + References: + + + G.R. Bradski, Computer video face tracking for use in a perceptual user interface, + Intel Technology Journal, Q2 1998. Available on: + + ftp://download.intel.com/technology/itj/q21998/pdf/camshift.pdf + + R. Hewitt, Face tracking project description: Camshift Algorithm. Available on: + + http://www.robinhewitt.com/research/track/camshift.html + + OpenCV Computer Vision Library. Available on: + + http://sourceforge.net/projects/opencvlibrary/ + + FaceIt object tracking in Flash AS3. Available on: + + http://www.libspark.org/browser/as3/FaceIt + + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Resets the object tracking algorithm. + + + + + + Generates a image of the histogram back projection + + + + + Generates a image of the histogram backprojection + + + + + Generates a image of the histogram backprojection + + + + + Generates a image of the histogram backprojection + + + + + Processes a new video frame. + + + + + + Camshift algorithm + + + + + + Mean shift algorithm + + + + + + Computes the ratio histogram between to histograms. + + + + http://www.robinhewitt.com/research/track/backproject.html + + + + + + Image histogram back-projection. + + + + + + Creates a color histogram discarding low intensity colors + + + + + + Checks for aberrant fluctuations in the tracking object. + + + + + + Gets or sets the current search window. + + + + + + Gets or sets the desired window aspect ratio. + + + + + + Gets or sets the mode of operation for this tracker. + + + + + + If using HSL mode, specifies the operational saturation range for the tracker. + + + + + + If using HSL mode, specifies the operational lightness range for the tracker. + + + + + + Gets the location of the object being tracked. + + + + + + Gets or sets a value indicating whether the tracker + should extract the object image from the source. The + extracted image will be available in . + + + + + + Probability map + + + + + + Gets or sets whether the algorithm should scan only the + active window or the entire image for histogram ratio. + + + + + + Gets or sets a value indicating whether the angular + movements should be smoothed using a moving average. + + true to smooth angular movements; otherwise, false. + + + + + Gets whether the tracking object is + showing little variation of fluctuation. + + true if the tracking object is steady; otherwise, false. + + + + + Blob object tracker. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The filter. + + + + + Process a new video frame. + + + + + + Resets this instance. + + + + + Gets or sets the maximum width of tracked objects. + + + + + + Gets or sets the maximum height of tracked objects. + + + + + + Gets or sets the minimum width of tracked objects. + + + + + + Gets or sets the minimum height of tracked objects. + + + + + + Gets or sets a value indicating whether the tracker + should extract the object image from the source. The + extracted image will be available in . + + + + + + Gets or sets whether the tracker should compute blob's orientation. + + + + + + Gets the HSL filter used in color segmentation. + + + The HSL filter used in segmentation. + + + + + Gets the HSL filtered image. + + + + + + Gets the current location of the object being tracked. + + + + + + Axis orientation. + + + + + + Horizontal axis. + + + + + + Vertical axis. + + + + + + Tracking object to represent an object in a scene. + + + + + + Constructs a new tracking object. + + + + + + Constructs a new tracking object. + + + The center of gravity of the object. + + + + + Constructs a new tracking object. + + + The angle of orientation for the object. + The center of gravity of the object. + The rectangle containing the object. + + + + + Constructs a new tracking object. + + + The rectangle containing the object. + The angle of the object. + + + + + Gets two points defining the horizontal axis of the object. + + + + + + Gets two points defining the axis of the object. + + + + + + Resets this tracking object. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + Pass true to not include + the in the copy object. + + + + + Gets or sets an user-defined tag associated with this object. + + + + + + Gets or sets the rectangle containing the object. + + + + + + Gets or sets the center of gravity of the object + relative to the original image from where it has + been extracted. + + + + + + Gets or sets the object's extracted image. + + + + + + Gets a value indicating whether the object is empty. + + + true if this instance is empty; otherwise, false. + + + + + Gets the area of the object. + + + + + + Gets or sets the angle of the object. + + + + + diff --git a/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net45/Accord.Vision.dll b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net45/Accord.Vision.dll new file mode 100644 index 0000000000..4113c07e2 Binary files /dev/null and b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net45/Accord.Vision.dll differ diff --git a/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net45/Accord.Vision.xml b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net45/Accord.Vision.xml new file mode 100644 index 0000000000..2c56de0ec --- /dev/null +++ b/Tools/Performance/Comparer/packages/Accord.Vision.3.0.2/lib/net45/Accord.Vision.xml @@ -0,0 +1,3021 @@ + + + + Accord.Vision + + + + + Group matching algorithm for detection region averaging. + + + + This class can be seen as a post-processing filter. Its goal is to + group near or contained regions together in order to produce more + robust and smooth estimates of the detected regions. + + + + + + Group matching algorithm for detection region averaging. + + + + This class can be seen as a post-processing filter. Its goal is to + group near or contained regions together in order to produce more + robust and smooth estimates of the detected regions. + + + + + + Creates a new object. + + + + The minimum number of neighbors needed to keep a detection. If a rectangle + has less than this minimum number, it will be discarded as a false positive. + + + + + Groups possibly near rectangles into a smaller + set of distinct and averaged rectangles. + + + The rectangles to group. + + + + + Detects rectangles which are near and + assigns similar class labels accordingly. + + + + + + Merges two labels. + + + + + + When overridden in a child class, should compute + whether two given shapes are near. Definition of + near is up to the implementation. + + + True if the two shapes are near; false otherwise. + + + + + When overridden in a child class, should compute + an average of the shapes given as parameters. + + + The label of each shape. + The shapes themselves. + Should return how many neighbors each shape had. + + The averaged shapes found in the given parameters. + + + + + Gets or sets the minimum number of neighbors necessary to keep a detection. + If a rectangle has less neighbors than this number, it will be discarded as + a false positive. + + + + + + Gets how many classes were found in the + last call to . + + + + + + Creates a new object. + + + + The minimum number of neighbors needed to keep a detection. If a rectangle + has less than this minimum number, it will be discarded as a false positive. + + The minimum distance threshold to consider two rectangles as neighbors. + Default is 0.2. + + + + + Checks if two rectangles are near. + + + + + + Averages rectangles which belongs to the + same class (have the same class label) + + + + + + Gets the minimum distance threshold to consider + two rectangles as neighbors. Default is 0.2. + + + + + + Default Face Haar Cascade for using with Haar Classifiers. + + + + The definition was originally based on a hard coded partial transcription of + OpenCV's haarcascade_frontalface_alt.xml by Mario Klingemann. This + class, however, has been re-created using . + + + + + + Cascade of Haar-like features' weak classification stages. + + + + + The Viola-Jones object detection framework is the first object detection framework + to provide competitive object detection rates in real-time proposed in 2001 by Paul + Viola and Michael Jones. Although it can be trained to detect a variety of object + classes, it was motivated primarily by the problem of face detection. + + + The implementation of this code has used Viola and Jones' original publication, the + OpenCV Library and the Marilena Project as reference. OpenCV is released under a BSD + license, it is free for both academic and commercial use. Please be aware that some + particular versions of the Haar object detection framework are patented by Viola and + Jones and may be subject to restrictions for use in commercial applications. + + + References: + + + + Viola, P. and Jones, M. (2001). Rapid Object Detection using a Boosted Cascade + of Simple Features. + + + Wikipedia, The Free Encyclopedia. Viola-Jones object detection framework + + + + + + + To load an OpenCV-compatible XML definition for a Haar cascade, you can use HaarCascade's + FromXml static method. An example would be: + + String path = @"C:\Users\haarcascade-frontalface_alt2.xml"; + HaarCascade cascade1 = HaarCascade.FromXml(path); + + + + After the cascade has been loaded, it is possible to create a new + using the cascade. Please see for more details. It is also + possible to generate embeddable C# definitions from a cascade, avoiding the need to load + XML files on program startup. Please see method or + class for details. + + + + + + Constructs a new Haar Cascade. + + + Base feature width. + Base feature height. + Haar-like features classification stages. + + + + + Constructs a new Haar Cascade. + + + Base feature width. + Base feature height. + + + + + Checks if the classifier contains tilted (rotated) features + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Loads a HaarCascade from a OpenCV-compatible XML file. + + + + A containing the file stream + for the xml definition of the classifier to be loaded. + + The HaarCascadeClassifier loaded from the file. + + + + + Loads a HaarCascade from a OpenCV-compatible XML file. + + + + The file path for the xml definition of the classifier to be loaded. + + The HaarCascadeClassifier loaded from the file. + + + + + Loads a HaarCascade from a OpenCV-compatible XML file. + + + + A containing the file stream + for the xml definition of the classifier to be loaded. + + The HaarCascadeClassifier loaded from the file. + + + + + Saves a HaarCascade to C# code. + + + + + + Saves a HaarCascade to C# code. + + + + + + Gets the stages' base width. + + + + + + Gets the stages' base height. + + + + + + Gets the classification stages. + + + + + + Gets a value indicating whether this cascade has tilted features. + + + + true if this cascade has tilted features; otherwise, false. + + + + + + Hard-coded partial transcription of haarcascade_frontalface_alt.xml + based on code by Mario Klingemann. + + + + + + Automatic transcription of Haar cascade definitions + for facial features by Modesto Castrillon-Santana. + + + + + This code has been automatically generated by the Accord.NET Framework + based on original research by Modesto Castrillon-Santana. The original + code has been shared under a BSD license in the OpenCV library and has + been incorporated in the Accord.NET Framework under permission of the + original author. + + + // Copyright (c) 2008, Modesto Castrillon-Santana (IUSIANI, University of + // Las Palmas de Gran Canaria, Spain). + // All rights reserved. + // + // Redistribution and use in source and binary forms, with or without + // modification, are permitted provided that the following conditions are + // met: + // + // * Redistributions of source code must retain the above copyright + // notice, this list of conditions and the following disclaimer. + // * Redistributions in binary form must reproduce the above + // copyright notice, this list of conditions and the following + // disclaimer in the documentation and/or other materials provided + // with the distribution. + // * The name of Contributor may not used to endorse or promote products + // derived from this software without specific prior written permission. + // + // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + + + + + Creates a new cascade for nose detection. + + + + + + Automatic transcriber for Haar cascades. + + + + This class can be used to generate code-only definitions for Haar cascades, + avoiding the need for loading and parsing XML files during application startup. + This class generates C# code for a class inheriting from + which may be used to create a . + + + + + + Constructs a new class. + + The stream to write to. + + + + + Writes the specified cascade. + + The cascade to write. + The name for the generated class. + + + + + Strong classifier based on a weaker cascade of + classifiers using Haar-like rectangular features. + + + + + The Viola-Jones object detection framework is the first object detection framework + to provide competitive object detection rates in real-time proposed in 2001 by Paul + Viola and Michael Jones. Although it can be trained to detect a variety of object + classes, it was motivated primarily by the problem of face detection. + + + The implementation of this code has used Viola and Jones' original publication, the + OpenCV Library and the Marilena Project as reference. OpenCV is released under a BSD + license, it is free for both academic and commercial use. Please be aware that some + particular versions of the Haar object detection framework are patented by Viola and + Jones and may be subject to restrictions for use in commercial applications. The code + has been implemented with full support for tilted Haar features. + + + References: + + + + Viola, P. and Jones, M. (2001). Rapid Object Detection using a Boosted Cascade + of Simple Features. + + + http://en.wikipedia.org/wiki/Viola-Jones_object_detection_framework + + + + + + + + + Constructs a new classifier. + + + + + + Constructs a new classifier. + + + + + + Detects the presence of an object in a given window. + + + + + + Gets the cascade of weak-classifiers + used by this strong classifier. + + + + + + Gets or sets the scale of the search window + being currently used by the classifier. + + + + + + Haar Cascade Classifier Stage. + + + + A Haar Cascade Classifier is composed of several stages. Each stage + contains a set of classifier trees used in the decision process. + + + + + + Constructs a new Haar Cascade Stage. + + + + + + Constructs a new Haar Cascade Stage. + + + + + + Constructs a new Haar Cascade Stage. + + + + + + Classifies an image as having the searched object or not. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the feature trees and its respective + feature tree nodes which compose this stage. + + + + + + Gets or sets the threshold associated with this stage, + i.e. the minimum value the classifiers should output + to decide if the image contains the object or not. + + + + + + Gets the index of the parent stage from this stage. + + + + + + Gets the index of the next stage from this stage. + + + + + + Haar Cascade Serialization Root. This class is used + only for XML serialization/deserialization. + + + + + + The stages retrieved after deserialization. + + + + + Haar Cascade Feature Tree Node. + + + + The Feature Node is a node belonging to a feature tree, + containing information about child nodes and an associated + . + + + + + + Constructs a new feature tree node. + + + + + Constructs a new feature tree node. + + + + + + Constructs a new feature tree node. + + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + + Gets the threshold for this feature. + + + + + + Gets the left value for this feature. + + + + + + Gets the right value for this feature. + + + + + + Gets the left node index for this feature. + + + + + + Gets the right node index for this feature. + + + + + + Gets the feature associated with this node. + + + + + + Rectangular Haar-like feature container. + + + + References: + - http://en.wikipedia.org/wiki/Haar-like_features#Rectangular_Haar-like_features + + + + + + Constructs a new Haar-like feature. + + + + + + Constructs a new Haar-like feature. + + + + + + Constructs a new Haar-like feature. + + + + + + Constructs a new Haar-like feature. + + + + + + Gets the sum of the areas of the rectangular features in an integral image. + + + + + + Sets the scale and weight of a Haar-like rectangular feature container. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets whether this feature is tilted. + + + + + + Gets or sets the Haar rectangles for this feature. + + + + + + Scalable rectangular area. + + + + A rectangle which can be at any position and scale within the original image. + + + + + + Constructs a new Haar-like feature rectangle. + + Values for this rectangle. + + + + + Constructs a new Haar-like feature rectangle. + + + + + + Scales the values of this rectangle. + + + + + + Scales the weight of this rectangle. + + + + + + Converts from a string representation. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Gets or sets the x-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the y-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the width of this Haar feature rectangle. + + + + + + Gets or sets the height of this Haar feature rectangle. + + + + + + Gets or sets the weight of this Haar feature rectangle. + + + + + + Gets or sets the scaled x-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the scaled y-coordinate of this Haar feature rectangle. + + + + + + Gets or sets the scaled width of this Haar feature rectangle. + + + + + + Gets or sets the scaled height of this Haar feature rectangle. + + + + + + Gets or sets the scaled weight of this Haar feature rectangle. + + + + + + Gets the area of this rectangle. + + + + + + Object detector interface. + + + + + Process a new image scene looking for objects. + + + + + Gets the location of the detected objects. + + + + + Object detector options for the search procedure. + + + + + + Entire image will be scanned. + + + + + + Only a single object will be retrieved. + + + + + + If a object has already been detected inside an area, + it will not be scanned twice for inner or overlapping + objects, saving computation time. + + + + + + If several objects are located within one another, + they will be averaged. Additionally, objects which + have not been detected sufficient times may be dropped + by setting . + + + + + + Object detector options for window scaling. + + + + + + Will start with a big search window and + gradually scale into smaller ones. + + + + + + Will start with small search windows and + gradually scale into greater ones. + + + + + + Viola-Jones Object Detector based on Haar-like features. + + + + + The Viola-Jones object detection framework is the first object detection framework + to provide competitive object detection rates in real-time proposed in 2001 by Paul + Viola and Michael Jones. Although it can be trained to detect a variety of object + classes, it was motivated primarily by the problem of face detection. + + + The implementation of this code has used Viola and Jones' original publication, the + OpenCV Library and the Marilena Project as reference. OpenCV is released under a BSD + license, it is free for both academic and commercial use. Please be aware that some + particular versions of the Haar object detection framework are patented by Viola and + Jones and may be subject to restrictions for use in commercial applications. The code + has been implemented with full support for tilted Haar features from the ground up. + + + References: + + + + Viola, P. and Jones, M. (2001). Rapid Object Detection using a Boosted Cascade + of Simple Features. + + + http://en.wikipedia.org/wiki/Viola-Jones_object_detection_framework + + + + + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + Minimum window size to consider when searching for + objects. Default value is 15. + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + + Minimum window size to consider when searching for + objects. Default value is 15. + The to use + during search. Please see documentation of + for details. Default value is + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + Minimum window size to consider when searching for + objects. Default value is 15. + + The to use + during search. Please see documentation of + for details. Default value is + The re-scaling factor to use when re-scaling the window during search. + + + + + Constructs a new Haar object detector. + + + + The to use in the detector's classifier. + For the default face cascade, please take a look on + . + + Minimum window size to consider when searching for + objects. Default value is 15. + The to use + during search. Please see documentation of + for details. Default is . + The scaling factor to rescale the window + during search. Default value is 1.2f. + The to use + when re-scaling the search window during search. Default is + . + + + + + Performs object detection on the given frame. + + + + + + Performs object detection on the given frame. + + + + + + Gets or sets a value indicating whether this + should scan the image using multiple threads. This setting can only be changed + to true on .NET version which support the Parallel Tasks framework (4.0+). + + + true to use multiple threads; otherwise, false. + + + + + Minimum window size to consider when searching objects. + + + + + + Maximum window size to consider when searching objects. + + + + + + Gets or sets the color channel to use when processing color images. + + + + + + Gets or sets the scaling factor to rescale the window during search. + + + + + + Gets or sets the desired searching method. + + + + + + Gets or sets the desired scaling method. + + + + + + Gets or sets the minimum threshold used to suppress rectangles which + have not been detected sufficient number of times. This property only + has effect when is set to . + + + + + The value of this property represents the minimum amount of detections + made inside a region to report this region as an actual detection. For + example, setting this property to two will discard all regions which + had not achieved at least two detected rectangles within it. + + + Setting this property to a value higher than zero may decrease the + number of false positives. + + + + + + Gets the detected objects bounding boxes. + + + + + + Gets the internal Cascade Classifier used by this detector. + + + + + + Gets how many frames the object has + been detected in a steady position. + + + The number of frames the detected object + has been in a steady position. + + + + + Motion processing algorithm, which counts separate moving objects and highlights them. + + + The aim of this motion processing algorithm is to count separate objects + in the motion frame, which is provided by motion detection algorithm. + In the case if property is set to , + found objects are also highlighted on the original video frame. The algorithm + counts and highlights only those objects, which size satisfies + and properties. + + The motion processing algorithm is supposed to be used only with motion detection + algorithms, which are based on finding difference with background frame + (see and + as simple implementations) and allow extract moving objects clearly. + + Sample usage: + + // create instance of motion detection algorithm + IMotionDetector motionDetector = new ... ; + // create instance of motion processing algorithm + BlobCountingObjectsProcessing motionProcessing = new BlobCountingObjectsProcessing( ); + // create motion detector + MotionDetector detector = new MotionDetector( motionDetector, motionProcessing ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // check number of detected objects + if ( motionProcessing.ObjectsCount > 1 ) + { + // ... + } + } + } + + + + + + + + + + Interface of motion processing algorithm. + + + The interface specifies methods, which should be implemented + by all motion processng algorithms - algorithm which perform further post processing + of detected motion, which is done by motion detection algorithms (see ). + + + + + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + The method does father post processing of detected motion. + Type of motion post processing is specified by specific implementation + of the interface - it may motion + area highlighting, motion objects counting, etc. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + Some motion processing algorithms may not have any stored internal + states and may just process provided video frames without relying on any motion + history etc. In this case such algorithms provide empty implementation of this method. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Highlight motion regions or not (see property). + + + + + Initializes a new instance of the class. + + + Minimum width of acceptable object (see property). + Minimum height of acceptable object (see property). + + + + + Initializes a new instance of the class. + + + Minimum width of acceptable object (see property). + Minimum height of acceptable object (see property). + Color used to highlight motion regions. + + + + + Initializes a new instance of the class. + + + Minimum width of acceptable object (see property). + Minimum height of acceptable object (see property). + Highlight motion regions or not (see property). + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and counts number of separate + objects, which size satisfies and + properties. In the case if property is + set to , the found object are also highlighted on the + original video frame. + + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Highlight motion regions or not. + + + The property specifies if detected moving objects should be highlighted + with rectangle or not. + + Default value is set to . + + Turning the value on leads to additional processing time of video frame. + + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Minimum width of acceptable object. + + + The property sets minimum width of an object to count and highlight. If + objects have smaller width, they are not counted and are not highlighted. + + Default value is set to 10. + + + + + + Minimum height of acceptable object. + + + The property sets minimum height of an object to count and highlight. If + objects have smaller height, they are not counted and are not highlighted. + + Default value is set to 10. + + + + + + Number of detected objects. + + + The property provides number of moving objects detected by + the last call of method. + + + + + Rectangles of moving objects. + + + The property provides array of moving objects' rectangles + detected by the last call of method. + + + + + Motion detector based on difference with predefined background frame. + + + The class implements motion detection algorithm, which is based on + difference of current video frame with predefined background frame. The difference frame + is thresholded and the amount of difference pixels is calculated. + To suppress stand-alone noisy pixels erosion morphological operator may be applied, which + is controlled by property. + + In the case if precise motion area's borders are required (for example, + for further motion post processing), then property + may be used to restore borders after noise suppression. + + In the case if custom background frame is not specified by using + method, the algorithm takes first video frame + as a background frame and calculates difference of further video frames with it. + + Unlike motion detection algorithm, this algorithm + allows to identify quite clearly all objects, which are not part of the background (scene) - + most likely moving objects. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new CustomFrameDifferenceDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + + + Interface of motion detector algorithm. + + + The interface specifies methods, which should be implemented + by all motion detection algorithms - algorithms which perform processing of video + frames in order to detect motion. Amount of detected motion may be checked using + property. Also property may + be used in order to see all the detected motion areas. For example, the property + is used by motion processing algorithms for further motion post processing, like + highlighting motion areas, counting number of detected moving object, etc. + + + + + + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% of changes + (however it is up to specific implementation to decide how to compare specified frame). + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + Restore objects edges after noise suppression or not (see property). + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + Check property to get information about amount of motion + (changes) in the processed frame. + + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + In the case if custom background frame was set using + method, this method does not reset it. + The method resets only automatically generated background frame. + + + + + + + Set background frame. + + + Background frame to set. + + The method sets background frame, which will be used to calculate + difference with. + + + + + Set background frame. + + + Background frame to set. + + The method sets background frame, which will be used to calculate + difference with. + + + + + Set background frame. + + + Background frame to set. + + The method sets background frame, which will be used to calculate + difference with. + + + + + Difference threshold value, [1, 255]. + + + The value specifies the amount off difference between pixels, which is treated + as motion pixel. + + Default value is set to 15. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% difference + with defined background frame. + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + The property is set to after processing of the first + video frame by the algorithm in the case if custom background frame was not set manually + by using method (it will be not + after second call in this case). If correct custom background + was set then the property should bet set to estimated motion frame after + method call. + + + + + + Suppress noise in video frames or not. + + + The value specifies if additional filtering should be + done to suppress standalone noisy pixels by applying 3x3 erosion image processing + filter. See property, if it is required to restore + edges of objects, which are not noise. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Restore objects edges after noise suppression or not. + + + The value specifies if additional filtering should be done + to restore objects' edges after noise suppression by applying 3x3 dilatation + image processing filter. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Motion processing algorithm, which performs grid processing of motion frame. + + + The aim of this motion processing algorithm is to do grid processing + of motion frame. This means that entire motion frame is divided by a grid into + certain amount of cells and the motion level is calculated for each cell. The + information about each cell's motion level may be retrieved using + property. + + In addition the algorithm can highlight those cells, which have motion + level above the specified threshold (see + property). To enable this it is required to set + property to . + + Sample usage: + + // create instance of motion detection algorithm + IMotionDetector motionDetector = new ... ; + // create instance of motion processing algorithm + GridMotionAreaProcessing motionProcessing = new GridMotionAreaProcessing( 16, 16 ); + // create motion detector + MotionDetector detector = new MotionDetector( motionDetector, motionProcessing ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame + detector.ProcessFrame( videoFrame ); + + // check motion level in 5th row 8th column + if ( motionProcessing.MotionGrid[5, 8] > 0.15 ) + { + // ... + } + } + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Width of motion grid (see property). + Height of motion grid (see property). + + + + + Initializes a new instance of the class. + + + Width of motion grid (see property). + Height of motion grid (see property). + Highlight motion regions or not (see property). + + + + + Initializes a new instance of the class. + + + Width of motion grid (see property). + Height of motion grid (see property). + Highlight motion regions or not (see property). + Motion amount to highlight cell (see property). + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and calculates motion level + for each grid's cell. In the case if property is + set to , the cell with motion level above threshold are + highlighted. + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Highlight motion regions or not. + + + The property specifies if motion grid should be highlighted - + if cell, which have motion level above the + specified value, should be highlighted. + + Default value is set to . + + Turning the value on leads to additional processing time of video frame. + + + + + + Motion amount to highlight cell. + + + The property specifies motion level threshold for highlighting grid's + cells. If motion level of a certain cell is higher than this value, then the cell + is highlighted. + + Default value is set to 0.15. + + + + + + Motion levels of each grid's cell. + + + The property represents an array of size + x, which keeps motion level + of each grid's cell. If certain cell has motion level equal to 0.2, then it + means that this cell has 20% of changes. + + + + + + Width of motion grid, [2, 64]. + + + The property specifies motion grid's width - number of grid' columns. + + Default value is set to 16. + + + + + + Height of motion grid, [2, 64]. + + + The property specifies motion grid's height - number of grid' rows. + + Default value is set to 16. + + + + + + Motion processing algorithm, which highlights motion areas. + + + The aim of this motion processing algorithm is to highlight + motion areas with grid pattern of the specified color. + + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + /* motion detection algorithm */, + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame + detector.ProcessFrame( videoFrame ); + } + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Color used to highlight motion regions. + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and highlights motion areas + on the original video frame with specified color. + + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Motion processing algorithm, which highlights border of motion areas. + + + The aim of this motion processing algorithm is to highlight + borders of motion areas with the specified color. + + + The motion processing algorithm is supposed to be used only with motion detection + algorithms, which are based on finding difference with background frame + (see and + as simple implementations) and allow extract moving objects clearly. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + /* motion detection algorithm */, + new MotionBorderHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame + detector.ProcessFrame( videoFrame ); + } + + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Color used to highlight motion regions. + + + + + Process video and motion frames doing further post processing after + performed motion detection. + + + Original video frame. + Motion frame provided by motion detection + algorithm (see ). + + Processes provided motion frame and highlights borders of motion areas + on the original video frame with specified color. + + + Motion frame is not 8 bpp image, but it must be so. + Video frame must be 8 bpp grayscale image or 24/32 bpp color image. + + + + + Reset internal state of motion processing algorithm. + + + The method allows to reset internal state of motion processing + algorithm and prepare it for processing of next video stream or to restart + the algorithm. + + + + + Color used to highlight motion regions. + + + + Default value is set to red color. + + + + + + Motion detection wrapper class, which performs motion detection and processing. + + + The class serves as a wrapper class for + motion detection and + motion processing algorithms, allowing to call them with + single call. Unlike motion detection and motion processing interfaces, the class also + provides additional methods for convenience, so the algorithms could be applied not + only to , but to .NET's class + as well. + + In addition to wrapping of motion detection and processing algorthms, the class provides + some additional functionality. Using property it is possible to specify + set of rectangular zones to observe - only motion in these zones is counted and post procesed. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new SimpleBackgroundModelingDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + Initializes a new instance of the class. + + + Motion detection algorithm to apply to each video frame. + + + + + Initializes a new instance of the class. + + + Motion detection algorithm to apply to each video frame. + Motion processing algorithm to apply to each video frame after + motion detection is done. + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Returns amount of motion, which is provided + property of the motion detection algorithm in use. + + See for additional details. + + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Returns amount of motion, which is provided + property of the motion detection algorithm in use. + + See for additional details. + + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Returns amount of motion, which is provided + property of the motion detection algorithm in use. + + The method first of all applies motion detection algorithm to the specified video + frame to calculate motion level and + motion frame. After this it applies motion processing algorithm + (if it was set) to do further post processing, like highlighting motion areas, counting moving + objects, etc. + + In the case if property is set, this method will perform + motion filtering right after motion algorithm is done and before passing motion frame to motion + processing algorithm. The method does filtering right on the motion frame, which is produced + by motion detection algorithm. At the same time the method recalculates motion level and returns + new value, which takes motion zones into account (but the new value is not set back to motion detection + algorithm' property). + + + + + + + Reset motion detector to initial state. + + + The method resets motion detection and motion processing algotithms by calling + their and methods. + + + + + + Motion detection algorithm to apply to each video frame. + + + The property sets motion detection algorithm, which is used by + method in order to calculate + motion level and + motion frame. + + + + + + Motion processing algorithm to apply to each video frame after + motion detection is done. + + + The property sets motion processing algorithm, which is used by + method after motion detection in order to do further + post processing of motion frames. The aim of further post processing depends on + actual implementation of the specified motion processing algorithm - it can be + highlighting of motion area, objects counting, etc. + + + + + + Set of zones to detect motion in. + + + The property keeps array of rectangular zones, which are observed for motion detection. + Motion outside of these zones is ignored. + + In the case if this property is set, the method + will filter out all motion witch was detected by motion detection algorithm, but is not + located in the specified zones. + + + + + + Motion detector based on simple background modeling. + + + The class implements motion detection algorithm, which is based on + difference of current video frame with modeled background frame. + The difference frame is thresholded and the + amount of difference pixels is calculated. + To suppress stand-alone noisy pixels erosion morphological operator may be applied, which + is controlled by property. + + In the case if precise motion area's borders are required (for example, + for further motion post processing), then property + may be used to restore borders after noise suppression. + + As the first approximation of background frame, the first frame of video stream is taken. + During further video processing the background frame is constantly updated, so it + changes in the direction to decrease difference with current video frame (the background + frame is moved towards current frame). See + properties, which control the rate of + background frame update. + + Unlike motion detection algorithm, this algorithm + allows to identify quite clearly all objects, which are not part of the background (scene) - + most likely moving objects. And unlike motion + detection algorithm, this algorithm includes background adaptation feature, which allows it + to update its modeled background frame in order to take scene changes into account. + + Because of the adaptation feature of the algorithm, it may adopt + to background changes, what algorithm can not do. + However, if moving object stays on the scene for a while (so algorithm adopts to it and does + not treat it as a new moving object any more) and then starts to move again, the algorithm may + find two moving objects - the true one, which is really moving, and the false one, which does not (the + place, where the object stayed for a while). + + The algorithm is not applicable to such cases, when moving object resides + in camera's view most of the time (laptops camera monitoring a person sitting in front of it, + for example). The algorithm is mostly supposed for cases, when camera monitors some sort + of static scene, where moving objects appear from time to time - street, road, corridor, etc. + + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new SimpleBackgroundModelingDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + Restore objects edges after noise suppression or not (see property). + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + Check property to get information about amount of motion + (changes) in the processed frame. + + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + + + + + Difference threshold value, [1, 255]. + + + The value specifies the amount off difference between pixels, which is treated + as motion pixel. + + Default value is set to 15. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% difference + with modeled background frame. + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + The property is set to after processing of the first + video frame by the algorithm. + + + + + + Suppress noise in video frames or not. + + + The value specifies if additional filtering should be + done to suppress standalone noisy pixels by applying 3x3 erosion image processing + filter. See property, if it is required to restore + edges of objects, which are not noise. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Restore objects edges after noise suppression or not. + + + The value specifies if additional filtering should be done + to restore objects' edges after noise suppression by applying 3x3 dilatation + image processing filter. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Frames per background update, [1, 50]. + + + The value controls the speed of modeled background adaptation to + scene changes. After each specified amount of frames the background frame is updated + in the direction to decrease difference with current processing frame. + + Default value is set to 2. + + The property has effect only in the case if + property is set to 0. Otherwise it does not have effect and background + update is managed according to the + property settings. + + + + + + Milliseconds per background update, [0, 5000]. + + + The value represents alternate way of controlling the speed of modeled + background adaptation to scene changes. The value sets number of milliseconds, which + should elapse between two consequent video frames to result in background update + for one intensity level. For example, if this value is set to 100 milliseconds and + the amount of time elapsed between two last video frames equals to 350, then background + frame will be update for 3 intensity levels in the direction to decrease difference + with current video frame (the remained 50 milliseconds will be added to time difference + between two next consequent frames, so the accuracy is preserved). + + Unlike background update method controlled using + method, the method guided by this property is not affected by changes + in frame rates. If, for some reasons, a video source starts to provide delays between + frames (frame rate drops down), the amount of background update still stays consistent. + When background update is controlled by this property, it is always possible to estimate + amount of time required to change, for example, absolutely black background (0 intensity + values) into absolutely white background (255 intensity values). If value of this + property is set to 100, then it will take approximately 25.5 seconds for such update + regardless of frame rate. + + Background update controlled by this property is slightly slower then + background update controlled by property, + so it has a bit greater impact on performance. + + If this property is set to 0, then corresponding background updating + method is not used (turned off), but background update guided by + property is used. + + Default value is set to 0. + + + + + + Motion detector based on two continues frames difference. + + + The class implements the simplest motion detection algorithm, which is + based on difference of two continues frames. The difference frame + is thresholded and the amount of difference pixels is calculated. + To suppress stand-alone noisy pixels erosion morphological operator may be applied, which + is controlled by property. + + Although the class may be used on its own to perform motion detection, it is preferred + to use it in conjunction with class, which provides additional + features and allows to use moton post processing algorithms. + + Sample usage: + + // create motion detector + MotionDetector detector = new MotionDetector( + new TwoFramesDifferenceDetector( ), + new MotionAreaHighlighting( ) ); + + // continuously feed video frames to motion detector + while ( ... ) + { + // process new video frame and check motion level + if ( detector.ProcessFrame( videoFrame ) > 0.02 ) + { + // ring alarm or do somethng else + } + } + + + + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + Suppress noise in video frames or not (see property). + + + + + Process new video frame. + + + Video frame to process (detect motion in). + + Processes new frame from video source and detects motion in it. + + Check property to get information about amount of motion + (changes) in the processed frame. + + + + + + Reset motion detector to initial state. + + + Resets internal state and variables of motion detection algorithm. + Usually this is required to be done before processing new video source, but + may be also done at any time to restart motion detection algorithm. + + + + + + Difference threshold value, [1, 255]. + + + The value specifies the amount off difference between pixels, which is treated + as motion pixel. + + Default value is set to 15. + + + + + + Motion level value, [0, 1]. + + + Amount of changes in the last processed frame. For example, if value of + this property equals to 0.1, then it means that last processed frame has 10% difference + with previous frame. + + + + + + Motion frame containing detected areas of motion. + + + Motion frame is a grayscale image, which shows areas of detected motion. + All black pixels in the motion frame correspond to areas, where no motion is + detected. But white pixels correspond to areas, where motion is detected. + + The property is set to after processing of the first + video frame by the algorithm. + + + + + + Suppress noise in video frames or not. + + + The value specifies if additional filtering should be + done to suppress standalone noisy pixels by applying 3x3 erosion image processing + filter. + + Default value is set to . + + Turning the value on leads to more processing time of video frame. + + + + + + Template matching object tracker. + + + + The matching tracker will track the object presented in the search window + of the first frame given to the tracker. To reset the tracker and start + tracking another object, one can call the Reset method, then set the search + window around a new object of interest present the image containing the new + object to the tracker. + + + + + + Object tracker interface. + + + + + + Process a new video frame. + + + + + + Gets the current location of the object being tracked. + + + + + + Gets or sets a value indicating whether the tracker should + extract the object image from the source. The extracted image + should be stored in . + + + + + + Constructs a new object tracker. + + + + + + Process a new video frame. + + + + + + Resets this instance. + + + + + + Gets or sets the current search window. + + + + + + Gets the current location of the object being tracked. + + + + + + Gets or sets the similarity threshold to + determine when the object has been lost. + + + + + + Gets or sets a value indicating whether the tracker should + extract the object image from the source. The extracted image + should be stored in . + + + + + + Modes for the Camshift Tracker. + + + + + + By choosing RGB, the tracker will process raw high-intensity RGB values. + + + + + + By choosing HSL, the tracker will perform a RGB-to-HSL conversion and use the Hue value instead. + + + + + + By choosing Mixed, the tracker will use HSL with some lightness information. + + + + + + Continuously Adaptive Mean Shift (Camshift) Object Tracker + + + + Camshift stands for "Continuously Adaptive Mean Shift". It combines the basic + Mean Shift algorithm with an adaptive region-sizing step. The kernel is a step + function applied to a probability map. The probability of each image pixel is + based on color using a method called histogram backprojection. + + The implementation of this code has used Gary Bradski's original publication, + the OpenCV Library and the FaceIt implementation as references. The OpenCV + library is distributed under a BSD license. FaceIt is distributed under a MIT + license. The original licensing terms for FaceIt are described in the source + code and in the Copyright.txt file accompanying the framework. + + + References: + + + G.R. Bradski, Computer video face tracking for use in a perceptual user interface, + Intel Technology Journal, Q2 1998. Available on: + + ftp://download.intel.com/technology/itj/q21998/pdf/camshift.pdf + + R. Hewitt, Face tracking project description: Camshift Algorithm. Available on: + + http://www.robinhewitt.com/research/track/camshift.html + + OpenCV Computer Vision Library. Available on: + + http://sourceforge.net/projects/opencvlibrary/ + + FaceIt object tracking in Flash AS3. Available on: + + http://www.libspark.org/browser/as3/FaceIt + + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Constructs a new Camshift tracking algorithm. + + + + + + Resets the object tracking algorithm. + + + + + + Generates a image of the histogram back projection + + + + + Generates a image of the histogram backprojection + + + + + Generates a image of the histogram backprojection + + + + + Generates a image of the histogram backprojection + + + + + Processes a new video frame. + + + + + + Camshift algorithm + + + + + + Mean shift algorithm + + + + + + Computes the ratio histogram between to histograms. + + + + http://www.robinhewitt.com/research/track/backproject.html + + + + + + Image histogram back-projection. + + + + + + Creates a color histogram discarding low intensity colors + + + + + + Checks for aberrant fluctuations in the tracking object. + + + + + + Gets or sets the current search window. + + + + + + Gets or sets the desired window aspect ratio. + + + + + + Gets or sets the mode of operation for this tracker. + + + + + + If using HSL mode, specifies the operational saturation range for the tracker. + + + + + + If using HSL mode, specifies the operational lightness range for the tracker. + + + + + + Gets the location of the object being tracked. + + + + + + Gets or sets a value indicating whether the tracker + should extract the object image from the source. The + extracted image will be available in . + + + + + + Probability map + + + + + + Gets or sets whether the algorithm should scan only the + active window or the entire image for histogram ratio. + + + + + + Gets or sets a value indicating whether the angular + movements should be smoothed using a moving average. + + true to smooth angular movements; otherwise, false. + + + + + Gets whether the tracking object is + showing little variation of fluctuation. + + true if the tracking object is steady; otherwise, false. + + + + + Blob object tracker. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + The filter. + + + + + Process a new video frame. + + + + + + Resets this instance. + + + + + Gets or sets the maximum width of tracked objects. + + + + + + Gets or sets the maximum height of tracked objects. + + + + + + Gets or sets the minimum width of tracked objects. + + + + + + Gets or sets the minimum height of tracked objects. + + + + + + Gets or sets a value indicating whether the tracker + should extract the object image from the source. The + extracted image will be available in . + + + + + + Gets or sets whether the tracker should compute blob's orientation. + + + + + + Gets the HSL filter used in color segmentation. + + + The HSL filter used in segmentation. + + + + + Gets the HSL filtered image. + + + + + + Gets the current location of the object being tracked. + + + + + + Axis orientation. + + + + + + Horizontal axis. + + + + + + Vertical axis. + + + + + + Tracking object to represent an object in a scene. + + + + + + Constructs a new tracking object. + + + + + + Constructs a new tracking object. + + + The center of gravity of the object. + + + + + Constructs a new tracking object. + + + The angle of orientation for the object. + The center of gravity of the object. + The rectangle containing the object. + + + + + Constructs a new tracking object. + + + The rectangle containing the object. + The angle of the object. + + + + + Gets two points defining the horizontal axis of the object. + + + + + + Gets two points defining the axis of the object. + + + + + + Resets this tracking object. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + Pass true to not include + the in the copy object. + + + + + Gets or sets an user-defined tag associated with this object. + + + + + + Gets or sets the rectangle containing the object. + + + + + + Gets or sets the center of gravity of the object + relative to the original image from where it has + been extracted. + + + + + + Gets or sets the object's extracted image. + + + + + + Gets a value indicating whether the object is empty. + + + true if this instance is empty; otherwise, false. + + + + + Gets the area of the object. + + + + + + Gets or sets the angle of the object. + + + + + diff --git a/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/BenchmarkDotNet.0.9.4.nupkg b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/BenchmarkDotNet.0.9.4.nupkg new file mode 100644 index 0000000000..4ddce497d Binary files /dev/null and b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/BenchmarkDotNet.0.9.4.nupkg differ diff --git a/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/dnx451/BenchmarkDotNet.dll b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/dnx451/BenchmarkDotNet.dll new file mode 100644 index 0000000000..e6db7a09c Binary files /dev/null and b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/dnx451/BenchmarkDotNet.dll differ diff --git a/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/dnx451/BenchmarkDotNet.xml b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/dnx451/BenchmarkDotNet.xml new file mode 100644 index 0000000000..e0c447e00 --- /dev/null +++ b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/dnx451/BenchmarkDotNet.xml @@ -0,0 +1,185 @@ + + + + BenchmarkDotNet + + + + + This attribute has the same effect as writing [Config("Jobs=Dry")] + + + + The events are guaranteed to happen in the following sequence: + Start // When the Benchmark run is started and most importantly BEFORE the process has been launched + ProcessStarted // After the Process (in a "Diagnostic" run) has been launched + AfterBenchmarkHasRun // After a "Warmpup" iteration of the Benchmark has run, i.e. we know the [Benchmark] method has been + // executed and JITted, this is important if the Diagnoser needs to know when it can do a Memory Dump. + ProcessStopped // Once the Process (in a "Diagnostic" run) has stopped/completed + Stop // At the end, when the entire Benchmark run has complete + DisplayResults // When the results/output should be displayed + + + + The frequency of the timer as the number of ticks per second. + + + + + System timer + + + + + Time Stamp Counter + + + + + + High Precision Event Timer + + + + + + This method chooses the best time unit for representing a set of time measurements. + + The list of time measurements in nanoseconds. + Best time unit. + + + + Desired time of execution of an iteration (in ms). + + + + + ProcessorAffinity for the benchmark process. + + + + + + Create a new job as a copy of the original job with specific time of a single iteration + + Original job + Iteration time in Millisecond or Auto + + + + + Adds prefix for each line + + + + + The basic captured statistics for a benchmark. + + + + + Gets the number of operations performed. + + + + + Gets the total number of nanoseconds it took to perform all operations. + + + + + Creates an instance of class. + + + + + The number of operations performed. + The total number of nanoseconds it took to perform all operations. + + + + Parses the benchmark statistics from the plain text line. + + E.g. given the input : + + Target 1: 10 op, 1005842518 ns + + Will extract the number of performed and the + total number of it took to perform them. + + The logger to write any diagnostic messages to. + The line to parse. + An instance of if parsed successfully. Null in case of any trouble. + + + + Gets the number of operations performed per second (ops/sec). + + + + + Gets the average duration of one operation in nanoseconds. + + + + + + + + + + Warmup for idle method (overhead) + + + + + Idle method (overhead) + + + + + Warmup for main benchmark iteration (with overhead) + + + + + Main benchmark iteration (with overhead) + + + + + Target - TargetIdle (without overhead) + + + + + Unknown + + + + + generates project.lock.json that tells compiler where to take dlls and source from + and builds executable and copies all required dll's + + + + + we use custom output path in order to avoid any future problems related to dotnet cli paths changing + + + + + we need our folder to be on the same level as the project that we want to reference + we are limited by xprojs (by default compiles all .cs files in all subfolders, Program.cs could be doubled and fail the build) + and also by nuget internal implementation like looking for global.json file in parent folders + + + + + we can not simply call assemblyName.Version.ToString() because it is different than package version which can contain (and often does) text + we are using the wildcard to get latest version of package/project restored + + + + diff --git a/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net40/BenchmarkDotNet.dll b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net40/BenchmarkDotNet.dll new file mode 100644 index 0000000000..84eb37c68 Binary files /dev/null and b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net40/BenchmarkDotNet.dll differ diff --git a/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net40/BenchmarkDotNet.xml b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net40/BenchmarkDotNet.xml new file mode 100644 index 0000000000..e0c447e00 --- /dev/null +++ b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net40/BenchmarkDotNet.xml @@ -0,0 +1,185 @@ + + + + BenchmarkDotNet + + + + + This attribute has the same effect as writing [Config("Jobs=Dry")] + + + + The events are guaranteed to happen in the following sequence: + Start // When the Benchmark run is started and most importantly BEFORE the process has been launched + ProcessStarted // After the Process (in a "Diagnostic" run) has been launched + AfterBenchmarkHasRun // After a "Warmpup" iteration of the Benchmark has run, i.e. we know the [Benchmark] method has been + // executed and JITted, this is important if the Diagnoser needs to know when it can do a Memory Dump. + ProcessStopped // Once the Process (in a "Diagnostic" run) has stopped/completed + Stop // At the end, when the entire Benchmark run has complete + DisplayResults // When the results/output should be displayed + + + + The frequency of the timer as the number of ticks per second. + + + + + System timer + + + + + Time Stamp Counter + + + + + + High Precision Event Timer + + + + + + This method chooses the best time unit for representing a set of time measurements. + + The list of time measurements in nanoseconds. + Best time unit. + + + + Desired time of execution of an iteration (in ms). + + + + + ProcessorAffinity for the benchmark process. + + + + + + Create a new job as a copy of the original job with specific time of a single iteration + + Original job + Iteration time in Millisecond or Auto + + + + + Adds prefix for each line + + + + + The basic captured statistics for a benchmark. + + + + + Gets the number of operations performed. + + + + + Gets the total number of nanoseconds it took to perform all operations. + + + + + Creates an instance of class. + + + + + The number of operations performed. + The total number of nanoseconds it took to perform all operations. + + + + Parses the benchmark statistics from the plain text line. + + E.g. given the input : + + Target 1: 10 op, 1005842518 ns + + Will extract the number of performed and the + total number of it took to perform them. + + The logger to write any diagnostic messages to. + The line to parse. + An instance of if parsed successfully. Null in case of any trouble. + + + + Gets the number of operations performed per second (ops/sec). + + + + + Gets the average duration of one operation in nanoseconds. + + + + + + + + + + Warmup for idle method (overhead) + + + + + Idle method (overhead) + + + + + Warmup for main benchmark iteration (with overhead) + + + + + Main benchmark iteration (with overhead) + + + + + Target - TargetIdle (without overhead) + + + + + Unknown + + + + + generates project.lock.json that tells compiler where to take dlls and source from + and builds executable and copies all required dll's + + + + + we use custom output path in order to avoid any future problems related to dotnet cli paths changing + + + + + we need our folder to be on the same level as the project that we want to reference + we are limited by xprojs (by default compiles all .cs files in all subfolders, Program.cs could be doubled and fail the build) + and also by nuget internal implementation like looking for global.json file in parent folders + + + + + we can not simply call assemblyName.Version.ToString() because it is different than package version which can contain (and often does) text + we are using the wildcard to get latest version of package/project restored + + + + diff --git a/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net45/BenchmarkDotNet.dll b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net45/BenchmarkDotNet.dll new file mode 100644 index 0000000000..b90234330 Binary files /dev/null and b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net45/BenchmarkDotNet.dll differ diff --git a/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net45/BenchmarkDotNet.xml b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net45/BenchmarkDotNet.xml new file mode 100644 index 0000000000..e0c447e00 --- /dev/null +++ b/Tools/Performance/Comparer/packages/BenchmarkDotNet.0.9.4/lib/net45/BenchmarkDotNet.xml @@ -0,0 +1,185 @@ + + + + BenchmarkDotNet + + + + + This attribute has the same effect as writing [Config("Jobs=Dry")] + + + + The events are guaranteed to happen in the following sequence: + Start // When the Benchmark run is started and most importantly BEFORE the process has been launched + ProcessStarted // After the Process (in a "Diagnostic" run) has been launched + AfterBenchmarkHasRun // After a "Warmpup" iteration of the Benchmark has run, i.e. we know the [Benchmark] method has been + // executed and JITted, this is important if the Diagnoser needs to know when it can do a Memory Dump. + ProcessStopped // Once the Process (in a "Diagnostic" run) has stopped/completed + Stop // At the end, when the entire Benchmark run has complete + DisplayResults // When the results/output should be displayed + + + + The frequency of the timer as the number of ticks per second. + + + + + System timer + + + + + Time Stamp Counter + + + + + + High Precision Event Timer + + + + + + This method chooses the best time unit for representing a set of time measurements. + + The list of time measurements in nanoseconds. + Best time unit. + + + + Desired time of execution of an iteration (in ms). + + + + + ProcessorAffinity for the benchmark process. + + + + + + Create a new job as a copy of the original job with specific time of a single iteration + + Original job + Iteration time in Millisecond or Auto + + + + + Adds prefix for each line + + + + + The basic captured statistics for a benchmark. + + + + + Gets the number of operations performed. + + + + + Gets the total number of nanoseconds it took to perform all operations. + + + + + Creates an instance of class. + + + + + The number of operations performed. + The total number of nanoseconds it took to perform all operations. + + + + Parses the benchmark statistics from the plain text line. + + E.g. given the input : + + Target 1: 10 op, 1005842518 ns + + Will extract the number of performed and the + total number of it took to perform them. + + The logger to write any diagnostic messages to. + The line to parse. + An instance of if parsed successfully. Null in case of any trouble. + + + + Gets the number of operations performed per second (ops/sec). + + + + + Gets the average duration of one operation in nanoseconds. + + + + + + + + + + Warmup for idle method (overhead) + + + + + Idle method (overhead) + + + + + Warmup for main benchmark iteration (with overhead) + + + + + Main benchmark iteration (with overhead) + + + + + Target - TargetIdle (without overhead) + + + + + Unknown + + + + + generates project.lock.json that tells compiler where to take dlls and source from + and builds executable and copies all required dll's + + + + + we use custom output path in order to avoid any future problems related to dotnet cli paths changing + + + + + we need our folder to be on the same level as the project that we want to reference + we are limited by xprojs (by default compiles all .cs files in all subfolders, Program.cs could be doubled and fail the build) + and also by nuget internal implementation like looking for global.json file in parent folders + + + + + we can not simply call assemblyName.Version.ToString() because it is different than package version which can contain (and often does) text + we are using the wildcard to get latest version of package/project restored + + + + diff --git a/Tools/Performance/Comparer/packages/SharpDX.2.6.0/SharpDX.2.6.0.nupkg b/Tools/Performance/Comparer/packages/SharpDX.2.6.0/SharpDX.2.6.0.nupkg new file mode 100644 index 0000000000..94cf6fe24 Binary files /dev/null and b/Tools/Performance/Comparer/packages/SharpDX.2.6.0/SharpDX.2.6.0.nupkg differ diff --git a/Tools/Performance/Comparer/packages/SharpDX.2.6.0/build/SharpDX.targets b/Tools/Performance/Comparer/packages/SharpDX.2.6.0/build/SharpDX.targets new file mode 100644 index 0000000000..2266d6c81 --- /dev/null +++ b/Tools/Performance/Comparer/packages/SharpDX.2.6.0/build/SharpDX.targets @@ -0,0 +1,47 @@ + + + + + + + + + + + DirectX11 + DirectX11_2 + DirectX11_2 + DirectX11_1 + + + net20 + net40 + winrt + wp8-x86 + wp8-ARM + wp81 + + + Signed- + + + + $(SharpDXDirectXVersion)-$(SharpDXSigned)$(SharpDXNETFramework) + + + DirectX11-net40 + + + $(MSBuildThisFileDirectory).. + + + $(SharpDXPackageDir)\Bin\$(SharpDXPlatform) + + + + $(SharpDXPackageDir)\Bin\$(SharpDXPlatformTool) + + \ No newline at end of file diff --git a/Tools/Performance/Comparer/packages/SharpDX.2.6.0/lib/dummy.txt b/Tools/Performance/Comparer/packages/SharpDX.2.6.0/lib/dummy.txt new file mode 100644 index 0000000000..e69de29bb diff --git a/Tools/Performance/Comparer/packages/SharpDX.2.6.0/tools/Install.ps1 b/Tools/Performance/Comparer/packages/SharpDX.2.6.0/tools/Install.ps1 new file mode 100644 index 0000000000..830b4dcda --- /dev/null +++ b/Tools/Performance/Comparer/packages/SharpDX.2.6.0/tools/Install.ps1 @@ -0,0 +1,36 @@ +param($installPath, $toolsPath, $package, $project) + +"Installing [{0}] to project [{1}]" -f $package.Id, $project.FullName | Write-Host + +# Load MSBuild assembly if it’s not loaded yet. +Add-Type -AssemblyName "Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + +# Check that SharpDX.targets was correctly imported +$buildProject = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1 +$importsToRemove = $buildProject.Xml.Imports | Where-Object { $_.Project.Endswith('SharpDX.targets') } +if (!$importsToRemove) +{ + throw ("SharpDX.targets import not found in project [{0}]" -f $project.FullName) +} +$sharpdx_package_bin_dir = $buildProject.GetProperty("SharpDXPackageBinDir").EvaluatedValue +$sharpdx_assembly_path = "{0}\{1}.dll" -f $sharpdx_package_bin_dir, $package.Id + +# Add the assembly through the project in order for VS to update correctly the references in the IDE +$project.Object.References.Add($sharpdx_assembly_path) + +# Find the references we just added +$sharpdx_reference = $buildProject.GetItems("Reference") | Where-Object { $_.EvaluatedInclude -eq $package.Id } +if (!$sharpdx_reference) +{ + $sharpdx_reference = $buildProject.GetItems("Reference") | Where-Object { $_.EvaluatedInclude.StartsWith("{0}," -f $package.Id) } +} +if (!$sharpdx_reference) +{ + throw ("Unable to find reference in project for assembly [{0}]" -f $package.Id) +} + +# Replace the HintPath using the $(SharpDXPackageBinDir) variable provided by the SharpDX.targets +$sharpdx_reference.SetMetadataValue("HintPath", '$(SharpDXPackageBinDir)\{0}.dll' -f $package.Id) + +# Save the project +$project.Save() diff --git a/Tools/Performance/Comparer/packages/SharpDX.2.6.0/tools/UnInstall.ps1 b/Tools/Performance/Comparer/packages/SharpDX.2.6.0/tools/UnInstall.ps1 new file mode 100644 index 0000000000..6c092698c --- /dev/null +++ b/Tools/Performance/Comparer/packages/SharpDX.2.6.0/tools/UnInstall.ps1 @@ -0,0 +1,13 @@ +param($installPath, $toolsPath, $package, $project) + +"Uninstalling [{0}] from project [{1}]" -f $package.Id, $project.FullName | Write-Host + +# Retrieve the reference to the package +$sharpdx_reference = $project.Object.References.Item($package.Id) +if ($sharpdx_reference) +{ + # Remove the reference + $sharpdx_reference.Remove() + # Save the project + $project.Save() +} diff --git a/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/SharpDX.DirectSound.2.6.0.nupkg b/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/SharpDX.DirectSound.2.6.0.nupkg new file mode 100644 index 0000000000..7ffc6b292 Binary files /dev/null and b/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/SharpDX.DirectSound.2.6.0.nupkg differ diff --git a/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/lib/dummy.txt b/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/lib/dummy.txt new file mode 100644 index 0000000000..e69de29bb diff --git a/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/tools/Install.ps1 b/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/tools/Install.ps1 new file mode 100644 index 0000000000..830b4dcda --- /dev/null +++ b/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/tools/Install.ps1 @@ -0,0 +1,36 @@ +param($installPath, $toolsPath, $package, $project) + +"Installing [{0}] to project [{1}]" -f $package.Id, $project.FullName | Write-Host + +# Load MSBuild assembly if it’s not loaded yet. +Add-Type -AssemblyName "Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + +# Check that SharpDX.targets was correctly imported +$buildProject = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1 +$importsToRemove = $buildProject.Xml.Imports | Where-Object { $_.Project.Endswith('SharpDX.targets') } +if (!$importsToRemove) +{ + throw ("SharpDX.targets import not found in project [{0}]" -f $project.FullName) +} +$sharpdx_package_bin_dir = $buildProject.GetProperty("SharpDXPackageBinDir").EvaluatedValue +$sharpdx_assembly_path = "{0}\{1}.dll" -f $sharpdx_package_bin_dir, $package.Id + +# Add the assembly through the project in order for VS to update correctly the references in the IDE +$project.Object.References.Add($sharpdx_assembly_path) + +# Find the references we just added +$sharpdx_reference = $buildProject.GetItems("Reference") | Where-Object { $_.EvaluatedInclude -eq $package.Id } +if (!$sharpdx_reference) +{ + $sharpdx_reference = $buildProject.GetItems("Reference") | Where-Object { $_.EvaluatedInclude.StartsWith("{0}," -f $package.Id) } +} +if (!$sharpdx_reference) +{ + throw ("Unable to find reference in project for assembly [{0}]" -f $package.Id) +} + +# Replace the HintPath using the $(SharpDXPackageBinDir) variable provided by the SharpDX.targets +$sharpdx_reference.SetMetadataValue("HintPath", '$(SharpDXPackageBinDir)\{0}.dll' -f $package.Id) + +# Save the project +$project.Save() diff --git a/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/tools/UnInstall.ps1 b/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/tools/UnInstall.ps1 new file mode 100644 index 0000000000..6c092698c --- /dev/null +++ b/Tools/Performance/Comparer/packages/SharpDX.DirectSound.2.6.0/tools/UnInstall.ps1 @@ -0,0 +1,13 @@ +param($installPath, $toolsPath, $package, $project) + +"Uninstalling [{0}] from project [{1}]" -f $package.Id, $project.FullName | Write-Host + +# Retrieve the reference to the package +$sharpdx_reference = $project.Object.References.Item($package.Id) +if ($sharpdx_reference) +{ + # Remove the reference + $sharpdx_reference.Remove() + # Save the project + $project.Save() +} diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/ZedGraph.5.1.6.nupkg b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/ZedGraph.5.1.6.nupkg new file mode 100644 index 0000000000..d8faa9f3f Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/ZedGraph.5.1.6.nupkg differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/content/License-LGPL.txt b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/content/License-LGPL.txt new file mode 100644 index 0000000000..8ac0cecfb --- /dev/null +++ b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/content/License-LGPL.txt @@ -0,0 +1,506 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey 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 library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + + + diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ZedGraph.XML b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ZedGraph.XML new file mode 100644 index 0000000000..cd0fc5d29 --- /dev/null +++ b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ZedGraph.XML @@ -0,0 +1,25465 @@ + + + + ZedGraph + + + + + A class that represents a graphic arrow or line object on the graph. A list of + ArrowObj objects is maintained by the collection class. + + + John Champion + $Revision: 3.4 $ $Date: 2007-01-25 07:56:08 $ + + + + A class that represents a line segment object on the graph. A list of + GraphObj objects is maintained by the collection class. + + + This should not be confused with the class, which represents + a set of points plotted together as a "curve". The class is + a single line segment, drawn as a "decoration" on the chart. + + John Champion + $Revision: 3.4 $ $Date: 2007-01-25 07:56:09 $ + + + + An abstract base class that represents a text object on the graph. A list of + objects is maintained by the + collection class. + + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Current schema value that defines the version of the serialized file + + + schema changed to 2 when isClippedToChartRect was added. + + + + + Protected field that stores the location of this . + Use the public property to access this value. + + + + + Protected field that determines whether or not this + is visible in the graph. Use the public property to + access this value. + + + + + Protected field that determines whether or not the rendering of this + will be clipped to the ChartRect. Use the public property to + access this value. + + + + + A tag object for use by the user. This can be used to store additional + information associated with the . ZedGraph does + not use this value for any purpose. + + + Note that, if you are going to Serialize ZedGraph data, then any type + that you store in must be a serializable type (or + it will cause an exception). + + + + + Internal field that determines the z-order "depth" of this + item relative to other graphic objects. Use the public property + to access this value. + + + + + Internal field that stores the hyperlink information for this object. + + + + + Constructors for the class. + + + Default constructor that sets all properties to default + values as defined in the class. + + + + + Constructor that sets all properties to default + values as defined in the class. + + The x position of the text. The units + of this position are specified by the + property. The text will be + aligned to this position based on the + property. + The y position of the text. The units + of this position are specified by the + property. The text will be + aligned to this position based on the + property. + + + + Constructor that creates a with the specified + coordinates and all other properties to defaults as specified + in the class.. + + + The four coordinates define the starting point and ending point for + 's, or the topleft and bottomright points for + 's. For 's that only require + one point, the and values + will be ignored. The units of the coordinates are specified by the + property. + + The x position of the item. + The y position of the item. + The x2 position of the item. + The x2 position of the item. + + + + Constructor that creates a with the specified + position and . Other properties are set to default + values as defined in the class. + + + The two coordinates define the location point for the object. + The units of the coordinates are specified by the + property. + + The x position of the item. The item will be + aligned to this position based on the + property. + The y position of the item. The item will be + aligned to this position based on the + property. + The enum value that + indicates what type of coordinate system the x and y parameters are + referenced to. + + + + Constructor that creates a with the specified + position, , , and . + Other properties are set to default values as defined in the class. + + + The two coordinates define the location point for the object. + The units of the coordinates are specified by the + property. + + The x position of the item. The item will be + aligned to this position based on the + property. + The y position of the text. The units + of this position are specified by the + property. The text will be + aligned to this position based on the + property. + The enum value that + indicates what type of coordinate system the x and y parameters are + referenced to. + The enum that specifies + the horizontal alignment of the object with respect to the (x,y) location + The enum that specifies + the vertical alignment of the object with respect to the (x,y) location + + + + Constructor that creates a with the specified + position, , , and . + Other properties are set to default values as defined in the class. + + + The four coordinates define the starting point and ending point for + 's, or the topleft and bottomright points for + 's. For 's that only require + one point, the and values + will be ignored. The units of the coordinates are specified by the + property. + + The x position of the item. + The y position of the item. + The x2 position of the item. + The x2 position of the item. + The enum value that + indicates what type of coordinate system the x and y parameters are + referenced to. + The enum that specifies + the horizontal alignment of the object with respect to the (x,y) location + The enum that specifies + the vertical alignment of the object with respect to the (x,y) location + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of Clone. + + + Note that this method must be called with an explicit cast to ICloneable, and + that it is inherently virtual. For example: + + ParentClass foo = new ChildClass(); + ChildClass bar = (ChildClass) ((ICloneable)foo).Clone(); + + Assume that ChildClass is inherited from ParentClass. Even though foo is declared with + ParentClass, it is actually an instance of ChildClass. Calling the ICloneable implementation + of Clone() on foo actually calls ChildClass.Clone() as if it were a virtual function. + + A deep copy of this object + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Render this object to the specified device. + + + This method is normally only called by the Draw method + of the parent collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine if the specified screen point lies inside the bounding box of this + . + + The screen point, in pixels + + A reference to the object that is the parent or + owner of this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + true if the point lies in the bounding box, false otherwise + + + + Determines the shape type and Coords values for this GraphObj + + + + + The struct that describes the location + for this . + + + + + Gets or sets a value that determines the z-order "depth" of this + item relative to other graphic objects. + + Note that this controls the z-order with respect to + other elements such as 's, + objects, etc. The order of objects having + the same value is controlled by their order in + the . The first + in the list is drawn in front of other + objects having the same value. + + + + Gets or sets a value that determines if this will be + visible in the graph. true displays the item, false hides it. + + + + + Gets or sets a value that determines whether or not the rendering of this + will be clipped to the . + + true to clip the to the bounds, + false to leave it unclipped. + + + + Gets or sets the hyperlink information for this . + + + + + true if the of this object is set to put it in front + of the data points. + + + + + A simple struct that defines the + default property values for the class. + + + + + Default value for the vertical + text alignment ( property). + This is specified + using the enum type. + + + + + Default value for the horizontal + text alignment ( property). + This is specified + using the enum type. + + + + + The default coordinate system to be used for defining the + location coordinates + ( property). + + The coordinate system is defined with the + enum + + + + The default value for . + + + + + Current schema value that defines the version of the serialized file + + + + + protected field that maintains the attributes of the line using an + instance of the class. + + + + Constructors for the object + + A constructor that allows the position, color, and size of the + to be pre-specified. + + An arbitrary specification + for the arrow + The x position of the starting point that defines the + line. The units of this position are specified by the + property. + The y position of the starting point that defines the + line. The units of this position are specified by the + property. + The x position of the ending point that defines the + line. The units of this position are specified by the + property. + The y position of the ending point that defines the + line. The units of this position are specified by the + property. + + + + A constructor that allows only the position of the + line to be pre-specified. All other properties are set to + default values + + The x position of the starting point that defines the + . The units of this position are specified by the + property. + The y position of the starting point that defines the + . The units of this position are specified by the + property. + The x position of the ending point that defines the + . The units of this position are specified by the + property. + The y position of the ending point that defines the + . The units of this position are specified by the + property. + + + + Default constructor -- places the at location + (0,0) to (1,1). All other values are defaulted. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Render this object to the specified device. + + + This method is normally only called by the Draw method + of the parent collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine if the specified screen point lies inside the bounding box of this + . + + The bounding box is calculated assuming a distance + of pixels around the arrow segment. + + The screen point, in pixels + + A reference to the object that is the parent or + owner of this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + true if the point lies in the bounding box, false otherwise + + + + Determines the shape type and Coords values for this GraphObj + + + + + A class that contains the attributes for drawing this + . + + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the arrowhead size, measured in points. + Use the public property to access this value. + + + + + Private boolean field that stores the arrowhead state. + Use the public property to access this value. + + true if an arrowhead is to be drawn, false otherwise + + + Constructors for the object + + A constructor that allows the position, color, and size of the + to be pre-specified. + + An arbitrary specification + for the arrow + The size of the arrowhead, measured in points. + The x position of the starting point that defines the + arrow. The units of this position are specified by the + property. + The y position of the starting point that defines the + arrow. The units of this position are specified by the + property. + The x position of the ending point that defines the + arrow. The units of this position are specified by the + property. + The y position of the ending point that defines the + arrow. The units of this position are specified by the + property. + + + + A constructor that allows only the position of the + arrow to be pre-specified. All other properties are set to + default values + + The x position of the starting point that defines the + . The units of this position are specified by the + property. + The y position of the starting point that defines the + . The units of this position are specified by the + property. + The x position of the ending point that defines the + . The units of this position are specified by the + property. + The y position of the ending point that defines the + . The units of this position are specified by the + property. + + + + Default constructor -- places the at location + (0,0) to (1,1). All other values are defaulted. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Render this object to the specified device. + + + This method is normally only called by the Draw method + of the parent collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + The size of the arrowhead. + + The display of the arrowhead can be + enabled or disabled with the property. + + The size is defined in points (1/72 inch) + + + + + Determines whether or not to draw an arrowhead + + true to show the arrowhead, false to show the line segment + only + + + + + A simple struct that defines the + default property values for the class. + + + + + The default size for the item arrowhead + ( property). Units are in points (1/72 inch). + + + + + The default display mode for the item arrowhead + ( property). true to show the + arrowhead, false to hide it. + + + + + The Axis class is an abstract base class that encompasses all properties + and methods required to define a graph Axis. + + This class is inherited by the + , , and classes + to define specific characteristics for those types. + + + John Champion modified by Jerry Vos + $Revision: 3.76 $ $Date: 2008-02-16 23:21:48 $ + + + + Current schema value that defines the version of the serialized file + + + + + private field that stores the class, which implements all the + calculations and methods associated with the numeric scale for this + . See the public property to access this class. + + + + + Private field that stores the class, which handles all + the minor tic information. See the public property to access this class. + + + + + Private field that stores the class, which handles all + the major tic information. See the public property to access this class. + + + + + Private field that stores the class, which handles all + the major grid information. See the public property to access this class. + + + + + Private field that stores the class, which handles all + the minor grid information. See the public property to access this class. + + + + Private fields for the scale rendering properties. + Use the public properties and + for access to these values. + + + + Private field for the automatic cross position mode. + Use the public property for access to this value. + + + + Private fields for the attributes. + Use the public properties , + for access to these values. + + + + Private fields for the attributes. + Use the public properties , + for access to these values. + + + + Private field for the title string. + Use the public property for access to this value. + + + + + A tag object for use by the user. This can be used to store additional + information associated with the . ZedGraph does + not use this value for any purpose. + + + Note that, if you are going to Serialize ZedGraph data, then any type + that you store in must be a serializable type (or + it will cause an exception). + + + + Private field for the drawing dimensions. + Use the public property + for access to these values. + + + + Private field for the minimum allowable space allocation. + Use the public property to access this value. + + + + + Private fields for the colors. + Use the public property for access to this values. + + + + + Temporary values for axis space calculations (see ). + + + + + Default constructor for that sets all axis properties + to default values as defined in the class. + + + + + Constructor for that sets all axis properties + to default values as defined in the class, + except for the . + + A string containing the axis title + + + + The Copy Constructor. + + The Axis object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of Clone. + + + Note that this method must be called with an explicit cast to ICloneable, and + that it is inherently virtual. For example: + + ParentClass foo = new ChildClass(); + ChildClass bar = (ChildClass) ((ICloneable)foo).Clone(); + + Assume that ChildClass is inherited from ParentClass. Even though foo is declared with + ParentClass, it is actually an instance of ChildClass. Calling the ICloneable implementation + of Clone() on foo actually calls ChildClass.Clone() as if it were a virtual function. + + A deep copy of this object + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Restore the scale ranging to automatic mode, and recalculate the + scale ranges + + + A reference to the object that is the parent or + owner of this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + + + + + + Do all rendering associated with this to the specified + device. + + + This method is normally only + called by the Draw method of the parent object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + The number of pixels to shift to account for non-primary axis position (e.g., + the second, third, fourth, etc. or . + + + + + This method will set the property for this + using the currently required space multiplied by a fraction (bufferFraction). + + + The currently required space is calculated using , and is + based on current data ranges, font sizes, etc. The "space" is actually the amount of space + required to fit the tic marks, scale labels, and axis title. + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + A reference to the object that is the parent or + owner of this object. + The amount of space to allocate for the axis, expressed + as a fraction of the currently required space. For example, a value of 1.2 would + allow for 20% extra above the currently required space. + If true, then this method will only modify the + property if the calculated result is more than the current value. + + + + Setup the Transform Matrix to handle drawing of this + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Calculate the "shift" size, in pixels, in order to shift the axis from its default + location to the value specified by . + + + A reference to the object that is the parent or + owner of this object. + + The shift amount measured in pixels + + + + Gets the "Cross" axis that corresponds to this axis. + + + The cross axis is the axis which determines the of this Axis when the + Axis.Cross property is used. The + cross axis for any or + is always the primary , and + the cross axis for any or is + always the primary . + + + A reference to the object that is the parent or + owner of this object. + + + + + Returns the linearized actual cross position for this axis, reflecting the settings of + , , and . + + + If the value of lies outside the axis range, it is + limited to the axis range. + + + + + Returns true if the axis is shifted at all due to the setting of + . This function will always return false if + is true. + + + + + Calculates the proportional fraction of the total cross axis width at which + this axis is located. + + + + + + + Calculate the space required (pixels) for this object. + + + This is the total space (vertical space for the X axis, horizontal space for + the Y axes) required to contain the axis. If is zero, then + this space will be the space required between the and + the . This method sets the internal values of + for use by the + method. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The amount of space (pixels) at the edge of the ChartRect + that is always required for this axis, even if the axis is shifted by the + value. + Returns the space, in pixels, required for this axis (between the + rect and ChartRect) + + + + Determines if this object is a "primary" one. + + + The primary axes are the (always), the first + in the + ( = 0), and the first + in the + ( = 0). Note that + and + always reference the primary axes. + + + A reference to the object that is the parent or + owner of this object. + + true for a primary (for the , + this is always true), false otherwise + + + + Draw the minor tic marks as required for this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scale value for the first major tic position. This is the reference point + for all other tic marks. + + The number of pixels to shift this axis, based on the + value of . A positive value is into the ChartRect relative to + the default axis position. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + The pixel location of the far side of the ChartRect from this axis. + This value is the ChartRect.Height for the XAxis, or the ChartRect.Width + for the YAxis and Y2Axis. + + + + + Draw the title for this . + + On entry, it is assumed that the + graphics transform has been configured so that the origin is at the left side + of this axis, and the axis is aligned along the X coordinate direction. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The number of pixels to shift this axis, based on the + value of . A positive value is into the ChartRect relative to + the default axis position. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Make a value label for the axis at the specified ordinal position. + + + This method properly accounts for , + , + and other axis format settings. It also implements the ScaleFormatEvent such that + custom labels can be created. + + + A reference to the object that is the parent or + owner of this object. + + + The zero-based, ordinal index of the label to be generated. For example, a value of 2 would + cause the third value label on the axis to be generated. + + + The numeric value associated with the label. This value is ignored for log + () + and text () type axes. + + The resulting value label as a + + + + Subscribe to this event to handle custom formatting of the scale labels. + + + + + Allow customization of the title when the scale is very large + Subscribe to this event to handle custom formatting of the scale axis label. + + + + + Gets the instance associated with this . + + + + + Gets or sets the scale value at which this axis should cross the "other" axis. + + This property allows the axis to be shifted away from its default location. + For example, for a graph with an X range from -100 to +100, the Y Axis can be located + at the X=0 value rather than the left edge of the ChartRect. This value can be set + automatically based on the state of . If + this value is set manually, then will + also be set to false. The "other" axis is the axis the handles the second dimension + for the graph. For the XAxis, the "other" axis is the YAxis. For the YAxis or + Y2Axis, the "other" axis is the XAxis. + + The value is defined in user scale units + + + + + + + + Gets or sets a value that determines whether or not the value + is set automatically. + + Set to true to have ZedGraph put the axis in the default location, or false + to specify the axis location manually with a value. + + + + + + + + Gets or sets the minimum axis space allocation. + + + This term, expressed in + points (1/72 inch) and scaled according to + for the , determines the minimum amount of space + an axis must have between the Chart.Rect and the + GraphPane.Rect. This minimum space + applies whether is true or false. + + + + + The color to use for drawing this . + + + This affects only the axis segment (see ), + since the , + , , , + , and + all have their own color specification. + + The color is defined using the + class + . + + + + + Gets a reference to the class instance + for this . This class stores all the major tic settings. + + + + + Gets a reference to the class instance + for this . This class stores all the minor tic settings. + + + + + Gets a reference to the class that contains the properties + of the major grid. + + + + + Gets a reference to the class that contains the properties + of the minor grid. + + + + + This property determines whether or not the is shown. + + + Note that even if + the axis is not visible, it can still be actively used to draw curves on a + graph, it will just be invisible to the user + + true to show the axis, false to disable all drawing of this axis + . + . + . + . + + + + Gets or sets a property that determines whether or not the axis segment (the line that + represents the axis itself) is drawn. + + + Under normal circumstances, this value won't affect the appearance of the display because + the Axis segment is overlain by the Axis border (see ). + However, when the border is not visible, or when is set to + false, this value will make a difference. + + + + + Gets or sets the for this . + + + The type can be either , + , , + or . + + + + + + + + + + Gets or sets the class that contains the title of this + . + + The title normally shows the basis and dimensions of + the scale range, such as "Time (Years)". The title is only shown if the + property is set to true. If the Title text is empty, + then no title is shown, and no space is "reserved" for the title on the graph. + + the title is a string value + + + + + The size of the gap between multiple axes (see and + ). + + + This size will be scaled + according to the for the + + + The axis gap is measured in points (1/72 inch) + . + + + + A delegate that allows full custom formatting of the Axis labels + + The for which the label is to be + formatted + The of interest. + The value to be formatted + The zero-based index of the label to be formatted + + A string value representing the label, or null if the ZedGraph should go ahead + and generate the label according to the current settings + + + + + Allow customization of title based on user preferences. + + The of interest. + + A string value representing the label, or null if the ZedGraph should go ahead + and generate the label according to the current settings. To make the title + blank, return "". + + + + + A simple struct that defines the + default property values for the class. + + + + + The default size for the gap between multiple axes + ( property). Units are in points (1/72 inch). + + + + + The default setting for the gap between the scale labels and the axis title. + + + + + The default font family for the text + font specification + ( property). + + + + + The default font size for the text + font specification + ( property). Units are + in points (1/72 inch). + + + + + The default font color for the text + font specification + ( property). + + + + + The default font bold mode for the text + font specification + ( property). true + for a bold typeface, false otherwise. + + + + + The default font italic mode for the text + font specification + ( property). true + for an italic typeface, false otherwise. + + + + + The default font underline mode for the text + font specification + ( property). true + for an underlined typeface, false otherwise. + + + + + The default color for filling in the text background + (see property). + + + + + The default custom brush for filling in the text background + (see property). + + + + + The default fill mode for filling in the text background + (see property). + + + + + The default color for the itself + ( property). This color only affects the + the axis border. + + + + + The default value for , which determines + whether or not the scale segment itself is visible + + + + + The default setting for the scale axis type + ( property). This value is set as per + the enumeration + + + + + The default color for the axis segment. + + + + + The default setting for the axis space allocation. This term, expressed in + points (1/72 inch) and scaled according to for the + , determines the minimum amount of space an axis must + have between the and the + . This minimum space + applies whether is true or false. + + + + + Class that handles the data associated with text title and its associated font + properties. Inherits from , and adds + and properties, which are specifically associated with + the . + + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Class that handles the data associated with a text title and its associated font + properties. Inherits from , and adds the + property for use by the and objects. + + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Class that handles the data associated with text title and its associated font + properties + + + John Champion + $Revision: 3.2 $ $Date: 2007-03-11 02:08:16 $ + + + + Current schema value that defines the version of the serialized file + + + + + private field that stores the text for this label + + + + + private field that stores the font properties for this label + + + + + private field that determines if this label will be displayed. + + + + + Constructor to build an from the text and the + associated font properties. + + The representing the text to be + displayed + The font family name + The size of the font in points and scaled according + to the logic. + The instance representing the color + of the font + true for a bold font face + true for an italic font face + true for an underline font face + + + + Constructor that builds a from a text + and a instance. + + + + + + + Copy constructor + + the instance to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + The text to be displayed + + + + + A instance representing the font properties + for the displayed text. + + + + + Gets or sets a boolean value that determines whether or not this label will be displayed. + + + + + Current schema value that defines the version of the serialized file + + + + + Constructor to build a from the text and the + associated font properties. + + The representing the text to be + displayed + The font family name + The size of the font in points and scaled according + to the logic. + The instance representing the color + of the font + true for a bold font face + true for an italic font face + true for an underline font face + + + + Copy constructor + + the instance to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Calculate the size of the based on the + height, in pixel units and scaled according to . + + The scaling factor to be applied + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets or sets the gap factor between this label and the opposing + or . + + + This value is expressed as a fraction of the character height for the . + + + + + A simple struct that defines the + default property values for the class. + + + + + The default setting. + + + + + Current schema value that defines the version of the serialized file + + + + + Constructor to build an from the text and the + associated font properties. + + The representing the text to be + displayed + The font family name + The size of the font in points and scaled according + to the logic. + The instance representing the color + of the font + true for a bold font face + true for an italic font face + true for an underline font face + + + + Copy constructor + + the instance to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets or sets the property that controls whether or not the magnitude factor (power of 10) for + this scale will be included in the label. + + + For large scale values, a "magnitude" value (power of 10) is automatically + used for scaling the graph. This magnitude value is automatically appended + to the end of the Axis (e.g., "(10^4)") to indicate + that a magnitude is in use. This property controls whether or not the + magnitude is included in the title. Note that it only affects the axis + title; a magnitude value may still be used even if it is not shown in the title. + + true to show the magnitude value, false to hide it + + + + + + + Gets or sets a value that determines whether the Axis title is located at the + + value or at the normal position (outside the ). + + + This value only applies if is false. + + + + + A class representing all the characteristics of the bar + segments that make up a curve on the graph. + + + John Champion + $Revision: 3.30 $ $Date: 2007-11-03 04:41:28 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field that stores the class that defines the + properties of the border around this . Use the public + property to access this value. + + + + + Default constructor that sets all properties to default + values as defined in the class. + + + + + Default constructor that sets the + as specified, and the remaining + properties to default + values as defined in the class. + The specified color is only applied to the + , and the + will be defaulted. + + A value indicating + the + of the Bar. + + + + + The Copy Constructor + + The Bar object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Draw the to the specified device + at the specified location. This routine draws a single bar. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The x position of the left side of the bar in + pixel units + The x position of the right side of the bar in + pixel units + The y position of the top of the bar in + pixel units + The y position of the bottom of the bar in + pixel units + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + + true to draw the bottom portion of the border around the + bar (this is for legend entries) + The data value to be used for a value-based + color gradient. This is only applicable for , + or . + Indicates that the should be drawn + with attributes from the class. + + + + + Draw the to the specified device + at the specified location. This routine draws a single bar. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The rectangle (pixels) to contain the bar + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + + true to draw the bottom portion of the border around the + bar (this is for legend entries) + The data value to be used for a value-based + color gradient. This is only applicable for , + or . + Indicates that the should be drawn + with attributes from the class. + + + + + Draw the this to the specified + device as a bar at each defined point. This method + is normally only called by the method of the + object + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A object representing the + 's to be drawn. + The class instance that defines the base (independent) + axis for the + The class instance that defines the value (dependent) + axis for the + + The width of each bar, in pixels. + + + The ordinal position of the this bar series (0=first bar, 1=second bar, etc.) + in the cluster of bars. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Draw the specified single bar (an individual "point") of this series to the specified + device. This method is not as efficient as + , which draws the bars for all points. It is intended to be used + only for , which requires special handling of each bar. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A object representing the + 's to be drawn. + The class instance that defines the base (independent) + axis for the + The class instance that defines the value (dependent) + axis for the + + The ordinal position of the this bar series (0=first bar, 1=second bar, etc.) + in the cluster of bars. + + + The zero-based index number for the single bar to be drawn. + + + The width of each bar, in pixels. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Protected internal routine that draws the specified single bar (an individual "point") + of this series to the specified device. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A object representing the + 's to be drawn. + + The zero-based index number for the single bar to be drawn. + + + The ordinal position of the this bar series (0=first bar, 1=second bar, etc.) + in the cluster of bars. + + The class instance that defines the base (independent) + axis for the + The class instance that defines the value (dependent) + axis for the + + The width of each bar, in pixels. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + The object used to draw the border around the . + + + + + + + + Gets or sets the data for this + . + + + + + A simple struct that defines the + default property values for the class. + + + + + The default pen width to be used for drawing the border around the bars + ( property). Units are points. + + + + + The default fill mode for bars ( property). + + + + + The default border mode for bars ( property). + true to display frames around bars, false otherwise + + + + + The default color for drawing frames around bars + ( property). + + + + + The default color for filling in the bars + ( property). + + + + + The default custom brush for filling in the bars + ( property). + + + + + Encapsulates a bar type that displays vertical or horizontal bars + + + The orientation of the bars depends on the state of + , and the bars can be stacked or + clustered, depending on the state of + + John Champion + $Revision: 3.27 $ $Date: 2007-11-03 04:41:28 $ + + + + This class contains the data and methods for an individual curve within + a graph pane. It carries the settings for the curve including the + key and item names, colors, symbols and sizes, linetypes, etc. + + + John Champion + modified by Jerry Vos + $Revision: 3.43 $ $Date: 2007-11-03 04:41:28 $ + + + + Current schema value that defines the version of the serialized file + + + + + protected field that stores a instance for this + , which is used for the + label. Use the public + property to access this value. + + + + + protected field that stores the boolean value that determines whether this + is on the bottom X axis or the top X axis (X2). + Use the public property to access this value. + + + + + protected field that stores the boolean value that determines whether this + is on the left Y axis or the right Y axis (Y2). + Use the public property to access this value. + + + + + protected field that stores the index number of the Y Axis to which this + belongs. Use the public property + to access this value. + + + + + protected field that stores the boolean value that determines whether this + is visible on the graph. + Use the public property to access this value. + Note that this value turns the curve display on or off, but it does not + affect the display of the legend entry. To hide the legend entry, you + have to set to false. + + + + + Protected field that stores the boolean value that determines whether this + is selected on the graph. + Use the public property to access this value. + Note that this value changes the curve display color, but it does not + affect the display of the legend entry. To hide the legend entry, you + have to set to false. + + + + + Protected field that stores the boolean value that determines whether this + can be selected in the graph. + + + + + protected field that stores a boolean value which allows you to override the normal + ordinal axis behavior. Use the public property to + access this value. + + + + + The of value sets that + represent this . + The size of this list determines the number of points that are + plotted. Note that values defined as + System.Double.MaxValue are considered "missing" values + (see ), + and are not plotted. The curve will have a break at these points + to indicate the values are missing. + + + + + A tag object for use by the user. This can be used to store additional + information associated with the . ZedGraph does + not use this value for any purpose. + + + Note that, if you are going to Serialize ZedGraph data, then any type + that you store in must be a serializable type (or + it will cause an exception). + + + + + Protected field that stores the hyperlink information for this object. + + + + + constructor the pre-specifies the curve label, the + x and y data values as a , the curve + type (Bar or Line/Symbol), the , and the + . Other properties of the curve are + defaulted to the values in the class. + + A string label (legend entry) for this curve + An array of double precision values that define + the independent (X axis) values for this curve + An array of double precision values that define + the dependent (Y axis) values for this curve + + + + constructor the pre-specifies the curve label, the + x and y data values as a , the curve + type (Bar or Line/Symbol), the , and the + . Other properties of the curve are + defaulted to the values in the class. + + A string label (legend entry) for this curve + A of double precision value pairs that define + the X and Y values for this curve + + + + Internal initialization routine thats sets some initial values to defaults. + + A string label (legend entry) for this curve + + + + constructor that specifies the label of the CurveItem. + This is the same as CurveItem(label, null, null). + + + A string label (legend entry) for this curve + + + + + + + + + The Copy Constructor + + The CurveItem object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of Clone. + + + Note that this method must be called with an explicit cast to ICloneable, and + that it is inherently virtual. For example: + + ParentClass foo = new ChildClass(); + ChildClass bar = (ChildClass) ((ICloneable)foo).Clone(); + + Assume that ChildClass is inherited from ParentClass. Even though foo is declared with + ParentClass, it is actually an instance of ChildClass. Calling the ICloneable implementation + of Clone() on foo actually calls ChildClass.Clone() as if it were a virtual function. + + A deep copy of this object + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + The parent of this . + + true if the Z data are included, false otherwise + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Do all rendering associated with this to the specified + device. This method is normally only + called by the Draw method of the parent + collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The ordinal position of the current + curve. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Draw a legend key entry for this at the specified location. + This abstract base method passes through to or + to do the rendering. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The struct that specifies the + location for the legend key + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Add a single x,y coordinate point to the end of the points collection for this curve. + + The X coordinate value + The Y coordinate value + + + + Add a object to the end of the points collection for this curve. + + + This method will only work if the instance reference + at supports the interface. + Otherwise, it does nothing. + + A reference to the object to + be added + + + + Clears the points from this . This is the same + as CurveItem.Points.Clear(). + + + This method will only work if the instance reference + at supports the interface. + Otherwise, it does nothing. + + + + + Removes a single point from this . + + + This method will only work if the instance reference + at supports the interface. + Otherwise, it does nothing. + + The ordinal position of the point to be removed. + + + + Get the X Axis instance (either or ) to + which this belongs. + + The object to which this curve belongs. + Either a or to which this + belongs. + + + + + Get the Y Axis instance (either or ) to + which this belongs. + + + This method safely retrieves a Y Axis instance from either the + or the using the values of and + . If the value of is out of bounds, the + default or is used. + + The object to which this curve belongs. + Either a or to which this + belongs. + + + + + Get the index of the Y Axis in the or list to + which this belongs. + + + This method safely retrieves a Y Axis index into either the + or the using the values of and + . If the value of is out of bounds, the + default or is used, which is index zero. + + The object to which this curve belongs. + An integer value indicating which index position in the list applies to this + + + + + + Loads some pseudo unique colors/symbols into this CurveItem. This + is the same as MakeUnique(ColorSymbolRotator.StaticInstance). + + + + + + + + Loads some pseudo unique colors/symbols into this CurveItem. This + is mainly useful for differentiating a set of new CurveItems without + having to pick your own colors/symbols. + + + + The that is used to pick the color + and symbol for this method call. + + + + + Go through the list of data values for this + and determine the minimum and maximum values in the data. + + The minimum X value in the range of data + The maximum X value in the range of data + The minimum Y value in the range of data + The maximum Y value in the range of data + ignoreInitial is a boolean value that + affects the data range that is considered for the automatic scale + ranging (see ). If true, then initial + data points where the Y value is zero are not included when + automatically determining the scale , + , and size. All data after + the first non-zero Y value are included. + + + Determines if the auto-scaled axis ranges will subset the + data points based on any manually set scale range values. + + + A reference to the object that is the parent or + owner of this object. + + + + + Returns a reference to the object that is the "base" + (independent axis) from which the values are drawn. + + This property is determined by the value of for + , , and + types. It is always the X axis for regular types. + Note that the setting can override the + and settings for bar types + (this is because all the bars that are clustered together must share the + same base axis). + + + + + + Returns a reference to the object that is the "value" + (dependent axis) from which the points are drawn. + + This property is determined by the value of for + , , and + types. It is always the Y axis for regular types. + + + + + + + Calculate the width of each bar, depending on the actual bar type + + The width for an individual bar, in pixel units + + + + Determine the coords for the rectangle associated with a specified point for + this + + The to which this curve belongs + The index of the point of interest + A list of coordinates that represents the "rect" for + this point (used in an html AREA tag) + true if it's a valid point, false otherwise + + + + A instance that represents the + entry for the this object + + + + + The // + color (FillColor for the Bar). This is a common access to + Line.Color, + Border.Color, and + Fill.Color properties for this curve. + + + + + Determines whether this is visible on the graph. + Note that this value turns the curve display on or off, but it does not + affect the display of the legend entry. To hide the legend entry, you + have to set to false. + + + + + Determines whether this is selected on the graph. + Note that this value changes the curve displayed color, but it does not + affect the display of the legend entry. To hide the legend entry, you + have to set to false. + + + + + Determines whether this can be selected in the graph. + + + + + Gets or sets a value which allows you to override the normal + ordinal axis behavior. + + + Normally for an ordinal axis type, the actual data values corresponding to the ordinal + axis will be ignored (essentially they are replaced by ordinal values, e.g., 1, 2, 3, etc). + If IsOverrideOrdinal is true, then the user data values will be used (even if they don't + make sense). Fractional values are allowed, such that a value of 1.5 is between the first and + second ordinal position, etc. + + + + + + + Gets or sets a value that determines which X axis this + is assigned to. + + + The + is on the bottom side of the graph and the + is on the top side. Assignment to an axis + determines the scale that is used to draw the curve on the graph. + + true to assign the curve to the , + false to assign the curve to the + + + + Gets or sets a value that determines which Y axis this + is assigned to. + + + The + is on the left side of the graph and the + is on the right side. Assignment to an axis + determines the scale that is used to draw the curve on the graph. Note that + this value is used in combination with the to determine + which of the Y Axes (if there are multiples) this curve belongs to. + + true to assign the curve to the , + false to assign the curve to the + + + + Gets or sets the index number of the Y Axis to which this + belongs. + + + This value is essentially an index number into the + or , depending on the setting of + . + + + + + Determines whether this + is a . + + true for a bar chart, or false for a line or pie graph + + + + Determines whether this + is a . + + true for a pie chart, or false for a line or bar graph + + + + Determines whether this + is a . + + true for a line chart, or false for a bar type + + + + Readonly property that gives the number of points that define this + object, which is the number of points in the + data collection. + + + + + The of X,Y point sets that represent this + . + + + + + An accessor for the datum for this . + Index is the ordinal reference (zero based) of the point. + + + + + Gets or sets the hyperlink information for this . + + + + + Compares 's based on the point value at the specified + index and for the specified axis. + + + + + + Constructor for Comparer. + + The axis type on which to sort. + The index number of the point on which to sort + + + + Compares two s using the previously specified index value + and axis. Sorts in descending order. + + Curve to the left. + Curve to the right. + -1, 0, or 1 depending on l.X's relation to r.X + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores a reference to the + class defined for this . Use the public + property to access this value. + + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + The parent of this . + + true if the Z data are included, false otherwise + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Create a new , specifying only the legend label for the bar. + + The label that will appear in the legend. + + + + Create a new using the specified properties. + + The label that will appear in the legend. + An array of double precision values that define + the independent (X axis) values for this curve + An array of double precision values that define + the dependent (Y axis) values for this curve + A value that will be applied to + the and properties. + + + + + Create a new using the specified properties. + + The label that will appear in the legend. + A of double precision value pairs that define + the X and Y values for this curve + A value that will be applied to + the and properties. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Do all rendering associated with this to the specified + device. This method is normally only + called by the Draw method of the parent + collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The ordinal position of the current + curve. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Draw a legend key entry for this at the specified location + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The struct that specifies the + location for the legend key + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Create a for each bar in the . + + + This method will go through the bars, create a label that corresponds to the bar value, + and place it on the graph depending on user preferences. This works for horizontal or + vertical bars in clusters or stacks, but only for types. This method + does not apply to or objects. + Call this method only after calling . + + The GraphPane in which to place the text labels. + true to center the labels inside the bars, false to + place the labels just above the top of the bar. + The double.ToString string format to use for creating + the labels. + + + + + Create a for each bar in the . + + + This method will go through the bars, create a label that corresponds to the bar value, + and place it on the graph depending on user preferences. This works for horizontal or + vertical bars in clusters or stacks, but only for types. This method + does not apply to or objects. + Call this method only after calling . + + The GraphPane in which to place the text labels. + true to center the labels inside the bars, false to + place the labels just above the top of the bar. + The double.ToString string format to use for creating + the labels. + + The color in which to draw the labels + The string name of the font family to use for the labels + The floating point size of the font, in scaled points + true for a bold font type, false otherwise + true for an italic font type, false otherwise + true for an underline font type, false otherwise + + + + Determine the coords for the rectangle associated with a specified point for + this + + The to which this curve belongs + The index of the point of interest + A list of coordinates that represents the "rect" for + this point (used in an html AREA tag) + true if it's a valid point, false otherwise + + + + Gets a reference to the class defined + for this . + + + + + Class that handles the global settings for bar charts + + + John Champion + $Revision: 3.6 $ $Date: 2007-12-30 23:27:39 $ + + + + Current schema value that defines the version of the serialized file + + + + Private field that determines the size of the gap between bar clusters + for bar charts. This gap is expressed as a fraction of the bar size (1.0 means + leave a 1-barwidth gap between clusters). + Use the public property to access this value. + + + Private field that determines the size of the gap between individual bars + within a bar cluster for bar charts. This gap is expressed as a fraction of the + bar size (1.0 means leave a 1-barwidth gap between each bar). + Use the public property to access this value. + + + Private field that determines the base axis from which + graphs will be displayed. The base axis is the axis from which the bars grow with + increasing value. The value is of the enumeration type . + To access this value, use the public property . + + + + + Private field that determines how the + graphs will be displayed. See the enum + for the individual types available. + To access this value, use the public property . + + + + + Private field that determines the width of a bar cluster (for bar charts) + in user scale units. Normally, this value is 1.0 because bar charts are typically + or , and the bars are + defined at ordinal values (1.0 scale units apart). For + or other scale types, you can use this value to scale the bars to an arbitrary + user scale. Use the public property to access this + value. + + + + Private field that determines if the will be + calculated automatically. Use the public property + to access this value. + + + + + private field that stores the owner GraphPane that contains this BarSettings instance. + + + + + Constructor to build a instance from the defaults. + + + + + Copy constructor + + the instance to be copied. + The that will be the + parent of this new BarSettings object. + + + + Constructor for deserializing objects + + + You MUST set the _ownerPane property after deserializing a BarSettings object. + + A instance that defines the + serialized data + + A instance that contains + the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Calculate the width of an individual bar cluster on a graph. + This value only applies to bar graphs plotted on non-ordinal X axis + types ( is false). + + + This value can be calculated automatically if + is set to true. In this case, ClusterScaleWidth will be calculated if + refers to an of a non-ordinal type + ( is false). The ClusterScaleWidth is calculated + from the minimum difference found between any two points on the + for any in the + . The ClusterScaleWidth is set automatically + each time is called. + + + + + + + + + Determine the minimum increment between individual points to be used for + calculating a bar size that fits without overlapping + + The list of points for the bar + of interest + The base axis for the bar + The minimum increment between bars along the base axis + + + + Determine the width, in screen pixel units, of each bar cluster including + the cluster gaps and bar gaps. + + This method calls the + method for the base for graphs + (the base is assigned by the + property). + + + + + + The width of each bar cluster, in pixel units + + + + Determine the from which the charts are based. + + + + + + The class for the axis from which the bars are based + + + + The minimum space between clusters, expressed as a + fraction of the bar size. + + + + + + + + The minimum space between individual Bars + within a cluster, expressed as a + fraction of the bar size. + + + + + + + Determines the base axis from which + graphs will be displayed. + + The base axis is the axis from which the bars grow with + increasing value. The value is of the enumeration type . + + + + + Determines how the + graphs will be displayed. See the enum + for the individual types available. + + + + + + The width of an individual bar cluster on a graph. + This value only applies to bar graphs plotted on non-ordinal X axis + types (, , and + . + + + This value can be calculated automatically if + is set to true. In this case, ClusterScaleWidth will be calculated if + refers to an of a non-ordinal type + ( is false). The ClusterScaleWidth is calculated + from the minimum difference found between any two points on the + for any in the + . The ClusterScaleWidth is set automatically + each time is called. Calculations are + done by the method. + + + + + + + + + Gets or sets a property that determines if the will be + calculated automatically. + + true for the to be calculated + automatically based on the available data, false otherwise. This value will + be set to false automatically if the value + is changed by the user. + + + + + + + A simple struct that defines the + default property values for the class. + + + + + The default dimension gap between clusters of bars on a + graph. + This dimension is expressed in terms of the normal bar width. + + + + + + + The default dimension gap between each individual bar within a bar cluster + on a graph. + This dimension is expressed in terms of the normal bar width. + + + + + + The default value for the , which determines the base + from which the graphs will be displayed. + + + + + The default value for the property, which + determines if the bars are drawn overlapping eachother in a "stacked" format, + or side-by-side in a "cluster" format. See the + for more information. + + + + + + The default width of a bar cluster + on a graph. This value only applies to + graphs, and only when the + is , + or . + This dimension is expressed in terms of X scale user units. + + + + + + + The default value for . + + + + + A data collection class for ZedGraph, provided as an alternative to . + + + The data storage class for ZedGraph can be any type, so long as it uses the + interface. This class, albeit simple, is a demonstration of implementing the + interface to provide a simple data collection using only two arrays. The + interface can also be used as a layer between ZedGraph and a database, for example. + + + + + John Champion + $Revision: 3.4 $ $Date: 2007-02-18 05:51:53 $ + + + + An interface to a collection class containing data + that define the set of points to be displayed on the curve. + + + This interface is designed to allow customized data abstraction. The default data + collection class is , however, you can define your own + data collection class using the interface. + + + + + John Champion + $Revision: 1.6 $ $Date: 2007-11-11 07:29:43 $ + + + + Indexer to access a data point by its ordinal position in the collection. + + + This is the standard interface that ZedGraph uses to access the data. Although + you must pass a here, your internal data storage format + can be anything. + + The ordinal position (zero-based) of the + data point to be accessed. + A object instance. + + + + Gets the number of points available in the list. + + + + + Instance of an array of x values + + + + + Instance of an array of x values + + + + + Constructor to initialize the PointPairList from two arrays of + type double. + + + + + The Copy Constructor + + The PointPairList from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Indexer to access the specified object by + its ordinal position in the list. + + + Returns for any value of + that is outside of its corresponding array bounds. + + The ordinal position (zero-based) of the + object to be accessed. + A object reference. + + + + Returns the number of points available in the arrays. Count will be the greater + of the lengths of the X and Y arrays. + + + + + A class that encapsulates Border (frame) properties for an object. The class + is used in a variety of ZedGraph objects to handle the drawing of the Border around the object. + + + John Champion + $Revision: 3.18 $ $Date: 2007-03-17 18:43:44 $ + + + + A class that handles the basic attributes of a line segment. + + + This is the base class for and classes. + + John Champion + $Revision: 3.2 $ $Date: 2007-03-17 18:43:44 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the pen width for this line. + Use the public property to access this value. + + + + + Private field that stores the for this + line. Use the public + property to access this value. + + + + + private field that stores the "Dash On" length for drawing the line. Use the + public property to access this value. + + + + + private field that stores the "Dash Off" length for drawing the line. Use the + public property to access this value. + + + + + Private field that stores the visibility of this line. Use the public + property to access this value. + + + + + private field that determines if the line is drawn using + Anti-Aliasing capabilities from the class. + Use the public property to access + this value. + + + + + Private field that stores the color of this line. Use the public + property to access this value. If this value is + false, the line will not be shown (but the may + still be shown). + + + + + Internal field that stores a custom class. This + fill is used strictly for , + , , + and calculations to determine + the color of the line. + + + + + Default constructor that sets all properties to default + values as defined in the class. + + + + + Constructor that sets the color property to the specified value, and sets + the remaining properties to default + values as defined in the class. + + The color to assign to this new Line object + + + + The Copy Constructor + + The LineBase object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of Clone. + + + Note that this method must be called with an explicit cast to ICloneable, and + that it is inherently virtual. For example: + + ParentClass foo = new ChildClass(); + ChildClass bar = (ChildClass) ((ICloneable)foo).Clone(); + + Assume that ChildClass is inherited from ParentClass. Even though foo is declared with + ParentClass, it is actually an instance of ChildClass. Calling the ICloneable implementation + of Clone() on foo actually calls ChildClass.Clone() as if it were a virtual function. + + A deep copy of this object + + + + Constructor for deserializing objects + + A instance that defines the + serialized data + + A instance that contains + the serialized data + + + + + Populates a instance with the data needed to serialize + the target object + + A instance that defines the + serialized data + A instance that contains the + serialized data + + + + Create a object based on the properties of this + . + + The owner of this + . + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + A object with the properties of this + + + + + Create a object based on the properties of this + . + + The owner of this + . + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The data value to be used for a value-based + color gradient. This is only applicable if GradientFill.Type + is one of , + , , + or . + + A object with the properties of this + + + + + The color of the . Note that this color value can be + overridden if the GradientFill.Type is one of the + , + , , + and types. + + + + + + The style of the , defined as a enum. + This allows the line to be solid, dashed, or dotted. + + + + + + + + The "Dash On" mode for drawing the line. + + + This is the distance, in points (1/72 inch), of the dash segments that make up + the dashed grid lines. This setting is only valid if + is set to . + + The dash on length is defined in points (1/72 inch) + + + . + + + + The "Dash Off" mode for drawing the line. + + + This is the distance, in points (1/72 inch), of the spaces between the dash + segments that make up the dashed grid lines. This setting is only valid if + is set to . + + The dash off length is defined in points (1/72 inch) + + + . + + + + The pen width used to draw the , in points (1/72 inch) + + + + + + Gets or sets a property that shows or hides the . + + true to show the line, false to hide it + + + + + Gets or sets a value that determines if the lines are drawn using + Anti-Aliasing capabilities from the class. + + + If this value is set to true, then the + property will be set to only while + this is drawn. A value of false will leave the value of + unchanged. + + + + + Gets or sets a custom class. + + This fill is used strictly for , + , , + and calculations to determine + the color of the line. It overrides the property if + one of the above values are selected. + + + + + + A simple struct that defines the + default property values for the class. + + + + + The default mode for displaying line segments ( + property). True to show the line segments, false to hide them. + + + + + The default width for line segments ( property). + Units are points (1/72 inch). + + + + + The default value for the + property. + + + + + The default drawing style for line segments ( property). + This is defined with the enumeration. + + + + + The default "dash on" size for drawing the line + ( property). Units are in points (1/72 inch). + + + + + The default "dash off" size for drawing the the line + ( property). Units are in points (1/72 inch). + + + + + The default color for the line. + This is the default value for the property. + + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the amount of inflation to be done on the rectangle + before rendering. This allows the border to be inset or outset relative to + the actual rectangle area. Use the public property + to access this value. + + + + + The default constructor. Initialized to default values. + + + + + Constructor that specifies the visibility, color and penWidth of the Border. + + Determines whether or not the Border will be drawn. + The color of the Border + The width, in points (1/72 inch), for the Border. + + + + Constructor that specifies the color and penWidth of the Border. + + The color of the Border + The width, in points (1/72 inch), for the Border. + + + + The Copy Constructor + + The Border object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Draw the specified Border () using the properties of + this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + + A struct to be drawn. + + + + Gets or sets the amount of inflation to be done on the rectangle + before rendering. + + This allows the border to be inset or outset relative to + the actual rectangle area. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default value for , in units of points (1/72 inch). + + + + + + A class that represents a bordered and/or filled box (rectangle) object on + the graph. A list of + BoxObj objects is maintained by the collection class. + + + John Champion + $Revision: 3.3 $ $Date: 2007-01-25 07:56:08 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field that determines the properties of the border around this + + Use the public property to access this value. + + + + Constructors for the object + + A constructor that allows the position, border color, and solid fill color + of the to be pre-specified. + + An arbitrary specification + for the box border + An arbitrary specification + for the box fill (will be a solid color fill) + The x location for this . This will be in units determined by + . + The y location for this . This will be in units determined by + . + The width of this . This will be in units determined by + . + The height of this . This will be in units determined by + . + + + + A constructor that allows the position + of the to be pre-specified. Other properties are defaulted. + + The x location for this . This will be in units determined by + . + The y location for this . This will be in units determined by + . + The width of this . This will be in units determined by + . + The height of this . This will be in units determined by + . + + + + A default constructor that creates a using a location of (0,0), + and a width,height of (1,1). Other properties are defaulted. + + + + + A constructor that allows the position, border color, and two-color + gradient fill colors + of the to be pre-specified. + + An arbitrary specification + for the box border + An arbitrary specification + for the start of the box gradient fill + An arbitrary specification + for the end of the box gradient fill + The x location for this . This will be in units determined by + . + The y location for this . This will be in units determined by + . + The width of this . This will be in units determined by + . + The height of this . This will be in units determined by + . + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Render this object to the specified device. + + + This method is normally only called by the Draw method + of the parent collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine if the specified screen point lies inside the bounding box of this + . + + The screen point, in pixels + + A reference to the object that is the parent or + owner of this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + true if the point lies in the bounding box, false otherwise + + + + Determines the shape type and Coords values for this GraphObj + + + + + Gets or sets the data for this + . + + + + + Gets or sets the object, which + determines the properties of the border around this + + + + + + A simple struct that defines the + default property values for the class. + + + + + The default pen width used for the border + ( property). Units are points (1/72 inch). + + + + + The default color used for the border + ( property). + + + + + The default color used for the fill + ( property). + + + + + Encapsulates an "High-Low" Bar curve type that displays a bar in which both + the bottom and the top of the bar are set by data valuesfrom the + struct. + + The type is intended for displaying + bars that cover a band of data, such as a confidence interval, "waterfall" + chart, etc. The position of each bar is set + according to the values. The independent axis + is assigned with , and is a + enum type. If + is set to or , then + the bars will actually be horizontal, since the X axis becomes the + value axis and the Y or Y2 axis becomes the independent axis. + John Champion + $Revision: 3.18 $ $Date: 2007-11-03 04:41:28 $ + + + + Current schema value that defines the version of the serialized file + + + + + Create a new using the specified properties. + + The label that will appear in the legend. + An array of double precision values that define + the independent (X axis) values for this curve + An array of double precision values that define + the dependent (Y axis) values for this curve + An array of double precision values that define the + base value (the bottom) of the bars for this curve. + + A value that will be applied to + the and properties. + + + + + Create a new using the specified properties. + + The label that will appear in the legend. + A of double precision value trio's that define + the X, Y, and lower dependent values for this curve + A value that will be applied to + the and properties. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + This class handles the drawing of the curve objects. + + + John Champion + $Revision: 3.5 $ $Date: 2007-04-16 00:03:02 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the visibility of the open and + close line segments ("wings"). Use the public + property to access this value. If this value is + false, the wings will not be shown. + + + + + Private field that stores the total width for the Opening/Closing line + segments. Use the public property to access this value. + + + + + Private field that determines if the property will be + calculated automatically based on the minimum axis scale step size between + bars. Use the public property to access this value. + + + + + The result of the autosize calculation, which is the size of the bars in + user scale units. This is converted to pixels at draw time. + + + + + Default constructor that sets all properties to + default values as defined in the class. + + + + + Default constructor that sets the + as specified, and the remaining + properties to default + values as defined in the class. + + A value indicating + the color of the symbol + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Draw the to the specified + device at the specified location. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + boolean value that indicates if the "base" axis for this + is the X axis. True for an base, + false for a or base. + The independent axis position of the center of the candlestick in + pixel units + The dependent axis position of the top of the candlestick in + pixel units + The dependent axis position of the bottom of the candlestick in + pixel units + The dependent axis position of the opening value of the candlestick in + pixel units + The dependent axis position of the closing value of the candlestick in + pixel units + + The scaled width of the candlesticks, pixels + A pen with attributes of and + for this + + + + Draw all the 's to the specified + device as a candlestick at each defined point. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A object representing the + 's to be drawn. + The class instance that defines the base (independent) + axis for the + The class instance that defines the value (dependent) + axis for the + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Returns the width of the candleStick, in pixels, based on the settings for + and . + + The parent object. + The object that + represents the bar base (independent axis). + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The width of each bar, in pixel units + + + + Gets or sets a property that shows or hides the open/close "wings". + + true to show the CandleStick wings, false to hide them + + + + + Gets or sets the total width to be used for drawing the opening/closing line + segments ("wings") of the items. Units are points. + + The size of the candlesticks can be set by this value, which + is then scaled according to the scaleFactor (see + ). Alternatively, + if is true, the bar width will + be set according to the maximum available cluster width less + the cluster gap (see + and ). That is, if + is true, then the value of + will be ignored. If you modify the value of Size, + then will be automatically set to false. + + Size in points (1/72 inch) + + + + + Gets or sets a value that determines if the property will be + calculated automatically based on the minimum axis scale step size between + bars. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default width for the candlesticks (see ), + in units of points. + + + + + The default display mode for symbols ( property). + true to display symbols, false to hide them. + + + + + The default value for the property. + + + + + Encapsulates a CandleStick curve type that displays a vertical (or horizontal) + line displaying the range of data values at each sample point, plus an starting + mark and an ending mark signifying the opening and closing value for the sample. + + For this type to work properly, your must contain + objects, rather than ordinary types. + This is because the type actually displays 5 data values + but the only stores 3 data values. The + stores , , + , , and + members. + For a vertical CandleStick chart, the opening value is drawn as a horizontal line + segment to the left of the vertical range bar, and the closing value is a horizontal + line segment to the right. The total length of these two line segments is controlled + by the property, which is specified in + points (1/72nd inch), and scaled according to . + The candlesticks are drawn horizontally or vertically depending on the + value of , which is a + enum type. + John Champion + $Revision: 3.4 $ $Date: 2007-12-31 00:23:05 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores a reference to the + class defined for this . Use the public + property to access this value. + + + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + + IsZIncluded is true for objects, since the Y and Z + values are defined as the High and Low values for the day. + The parent of this . + + true if the Z data are included, false otherwise + + + + Create a new , specifying only the legend label. + + The label that will appear in the legend. + + + + Create a new using the specified properties. + + The _label that will appear in the legend. + An of double precision values that define + the Date, Close, Open, High, and Low values for the curve. Note that this + should contain items rather + than items. + + + The to use for drawing the candlesticks. + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Do all rendering associated with this to the specified + device. This method is normally only + called by the Draw method of the parent + collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The ordinal position of the current + curve. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Draw a legend key entry for this at the specified location + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The struct that specifies the + location for the legend key + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine the coords for the rectangle associated with a specified point for + this + + The to which this curve belongs + The index of the point of interest + A list of coordinates that represents the "rect" for + this point (used in an html AREA tag) + true if it's a valid point, false otherwise + + + + Gets a reference to the class defined + for this . + + + + + Class that handles the properties of the charting area (where the curves are + actually drawn), which is bounded by the , , + and . + + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Current schema value that defines the version of the serialized file + + + + + The rectangle that contains the area bounded by the axes, in pixel units + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + Private field that determines if the will be + sized automatically. Use the public property to access + this value. + + + + Default constructor. + + + + + Copy constructor + + The source to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets or sets the rectangle that contains the area bounded by the axes + (, , and ). + If you set this value manually, then the + value will automatically be set to false. + + The rectangle units are in screen pixels + + + + Gets or sets the data for this + . + + + + + Gets or sets the class for drawing the border + border around the + + + + + + + Gets or sets a boolean value that determines whether or not the + will be calculated automatically (almost always true). + + + If you have a need to set the ChartRect manually, such as you have multiple graphs + on a page and you want to line up the edges perfectly, you can set this value + to false. If you set this value to false, you must also manually set + the property. + You can easily determine the ChartRect that ZedGraph would have + calculated by calling the method, which returns + a chart rect sized for the current data range, scale sizes, etc. + + true to have ZedGraph calculate the ChartRect, false to do it yourself + + + + A simple struct that defines the + default property values for the class. + + + + + The default color for the border. + ( property). + + + + + The default color for the background. + ( property). + + + + + The default brush for the background. + ( property of ). + + + + + The default for the background. + ( property of ). + + + + + The default pen width for drawing the + border + ( property). + Units are in points (1/72 inch). + + + + + The default display mode for the border + ( property). true + to show the border border, false to omit the border + + + + + A collection base class containing basic extra functionality to be inherited + by , , + . + + The methods in this collection operate on basic + types. Therefore, in order to make sure that + the derived classes remain strongly-typed, there are no Add() or + Insert() methods here, and no methods that return an object. + Only Remove(), Move(), IndexOf(), etc. methods are included. + + John Champion + $Revision: 3.8 $ $Date: 2006-06-24 20:26:43 $ + + + + Default Constructor + + + + + Return the zero-based position index of the specified object + in the collection. + + A reference to the object that is to be found. + + The zero-based index of the specified object, or -1 if the + object is not in the list + + + + + Remove an object from the collection at the specified ordinal location. + + + An ordinal position in the list at which the object to be removed + is located. + + + + + + Remove an object from the collection based on an object reference. + + A reference to the object that is to be + removed. + + + + + Move the position of the object at the specified index + to the new relative position in the list. + For Graphic type objects, this method controls the + Z-Order of the items. Objects at the beginning of the list + appear in front of objects at the end of the list. + The zero-based index of the object + to be moved. + The relative number of positions to move + the object. A value of -1 will move the + object one position earlier in the list, a value + of 1 will move it one position later. To move an item to the + beginning of the list, use a large negative value (such as -999). + To move it to the end of the list, use a large positive value. + + The new position for the object, or -1 if the object + was not found. + + + + Class used to get the next color/symbol for GraphPane.AddCurve methods. + + + Jerry Vos modified by John Champion + $Revision: 3.4 $ $Date: 2006-06-24 20:26:43 $ + + + + The s + rotates through. + + + + + The s + rotates through. + + + + + The index of the next color to be used. Note: may be + > COLORS.Length, it is reset to 0 on the next call if it is. + + + + + The index of the next symbol to be used. Note: may be + > SYMBOLS.Length, it is reset to 0 on the next call if it is. + + + + + Retrieves the next color in the rotation Calling this + method has the side effect of incrementing the color index. + + + + + + + Retrieves the index of the next color to be used. Calling this + method has the side effect of incrementing the color index. + + + + + Retrieves the next color in the rotation. Calling this + method has the side effect of incrementing the symbol index. + + + + + + + Retrieves the index of the next symbol to be used. Calling this + method has the side effect of incrementing the symbol index. + + + + + Retrieves the instance used by the + static methods. + + + + + + + Retrieves the next color from this class's static + instance + + + + + + + Retrieves the next symbol type from this class's static + instance + + + + + + + A collection class containing a list of objects + that define the set of curves to be displayed on the graph. + + + John Champion + modified by Jerry Vos + $Revision: 3.43 $ $Date: 2007-11-03 04:41:28 $ + + + + Determine if there is any data in any of the + objects for this graph. This method does not verify valid data, it + only checks to see if > 0. + + true if there is any data, false otherwise + + + + Default constructor for the collection class + + + + + The Copy Constructor + + The XAxis object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Return the zero-based position index of the + with the specified . + + The label that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the is not in the list + + + + + Return the zero-based position index of the + with the specified . + + In order for this method to work, the + property must be of type . + The tag that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the is not in the list + + + + Sorts the list according to the point values at the specified index and + for the specified axis. + + + + + Move the position of the object at the specified index + to the new relative position in the list. + For Graphic type objects, this method controls the + Z-Order of the items. Objects at the beginning of the list + appear in front of objects at the end of the list. + The zero-based index of the object + to be moved. + The relative number of positions to move + the object. A value of -1 will move the + object one position earlier in the list, a value + of 1 will move it one position later. To move an item to the + beginning of the list, use a large negative value (such as -999). + To move it to the end of the list, use a large positive value. + + The new position for the object, or -1 if the object + was not found. + + + + Go through each object in the collection, + calling the member to + determine the minimum and maximum values in the + list of data value pairs. If the curves include + a stack bar, handle within the current GetRange method. In the event that no + data are available, a default range of min=0.0 and max=1.0 are returned. + If the Y axis has a valid data range and the Y2 axis not, then the Y2 + range will be a duplicate of the Y range. Vice-versa for the Y2 axis + having valid data when the Y axis does not. + If any in the list has a missing + , a new empty one will be generated. + + ignoreInitial is a boolean value that + affects the data range that is considered for the automatic scale + ranging (see ). If true, then initial + data points where the Y value is zero are not included when + automatically determining the scale , + , and size. All data after + the first non-zero Y value are included. + + + Determines if the auto-scaled axis ranges will subset the + data points based on any manually set scale range values. + + + A reference to the object that is the parent or + owner of this object. + + + + + + Calculate the range for stacked bars and lines. + + This method is required for the stacked + types because (for bars), the negative values are a separate stack than the positive + values. If you just sum up the bars, you will get the sum of the positive plus negative, + which is less than the maximum positive value and greater than the maximum negative value. + + + A reference to the object that is the parent or + owner of this object. + + The for which to calculate the range + The minimum X value so far + The minimum Y value so far + The maximum X value so far + The maximum Y value so far + + + + + Render all the objects in the list to the + specified + device by calling the member function of + each object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Find the ordinal position of the specified within + the . This position only counts + types, ignoring all other types. + + The of interest + The for which to search. + The ordinal position of the specified bar, or -1 if the bar + was not found. + + + + Read only value for the maximum number of points in any of the curves + in the list. + + + + + Read only property that returns the number of curves in the list that are of + type . This does not include or + types. + + + + + Read only property that returns the number of curves in the list that are + potentially "clusterable", which includes and + types. This does not include , + , , etc. types. + + Note that this property is only the number of bars that COULD BE clustered. The + actual cluster settings are not considered. + + + + Read only property that returns the number of pie slices in the list (class type is + ). + + + + + Read only property that determines if all items in the are + Pies. + + + + + Iterate backwards through the items. + + + + + Iterate forward through the items. + + + + + Indexer to access the specified object by + its string. + + The string label of the + object to be accessed. + A object reference. + + + + + + + + + John Champion + $Revision: 3.7 $ $Date: 2007-11-05 04:33:26 $ + + + + Default Constructor + + + + + Constructor to initialize the DataSourcePointList from an + existing + + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Extract a double value from the specified table row or data object with the + specified column name. + + The data object from which to extract the value + The property name or column name of the value + to be extracted + The zero-based index of the point to be extracted. + + + + + Extract an object from the specified table row or data object with the + specified column name. + + The data object from which to extract the object + The property name or column name of the object + to be extracted + + + + Indexer to access the specified object by + its ordinal position in the list. + + The ordinal position (zero-based) of the + object to be accessed. + A object reference. + + + + gets the number of points available in the list + + + + + The object from which to get the bound data + + + Typically, you set the + property to a reference to your database, table or list object. The + property would be set + to the name of the datatable within the + , + if applicable. + + + + The table or list object from which to extract the data values. + + + This property is just an alias for + . + + + + + The name of the property or column from which to obtain the + X data values for the chart. + + Set this to null leave the X data values set to + + + + + The name of the property or column from which to obtain the + Y data values for the chart. + + Set this to null leave the Y data values set to + + + + + The name of the property or column from which to obtain the + Z data values for the chart. + + Set this to null leave the Z data values set to + + + + + The name of the property or column from which to obtain the + tag values for the chart. + + Set this to null leave the tag values set to null. If this references string + data, then the tags may be used as tooltips using the + option. + + + + + The DateAsOrdinalScale class inherits from the class, and implements + the features specific to . + + DateAsOrdinalScale is an ordinal axis that will have labels formatted with dates from the + actual data values of the first in the . + Although the tics are labeled with real data values, the actual points will be + evenly-spaced in spite of the data values. For example, if the X values of the first curve + are 1, 5, and 100, then the tic labels will show 1, 5, and 100, but they will be equal + distance from each other. + + + John Champion + $Revision: 1.13 $ $Date: 2007-11-28 02:38:22 $ + + + + The Scale class is an abstract base class that encompasses the properties + and methods associated with a scale of data. + + This class is inherited by the + , , , + , , , + , and + classes to define specific characteristics for those types. + + + John Champion + $Revision: 1.33 $ $Date: 2007-09-19 06:41:56 $ + + + + Current schema value that defines the version of the serialized file + + + + Private fields for the scale definitions. + Use the public properties , , + , , and + for access to these values. + + + + Private fields for the scale definitions. + Use the public properties , , + , , and + for access to these values. + + + + Private fields for the scale definitions. + Use the public properties , , + , , and + for access to these values. + + + + Private fields for the scale definitions. + Use the public properties , , + , , and + for access to these values. + + + + Private fields for the scale definitions. + Use the public properties , , + , , and + for access to these values. + + + + Private fields for the scale definitions. + Use the public properties , , + , , and + for access to these values. + + + + Private fields for the automatic scaling modes. + Use the public properties , , + , , + and + for access to these values. + + + + Private fields for the automatic scaling modes. + Use the public properties , , + , , + and + for access to these values. + + + + Private fields for the automatic scaling modes. + Use the public properties , , + , , + and + for access to these values. + + + + Private fields for the automatic scaling modes. + Use the public properties , , + , , + and + for access to these values. + + + + Private fields for the automatic scaling modes. + Use the public properties , , + , , + and + for access to these values. + + + + Private fields for the automatic scaling modes. + Use the public properties , , + , , + and + for access to these values. + + + + Private fields for the "grace" settings. + These values determine how much extra space is left before the first data value + and after the last data value. + Use the public properties and + for access to these values. + + + + Private fields for the "grace" settings. + These values determine how much extra space is left before the first data value + and after the last data value. + Use the public properties and + for access to these values. + + + + Private field for the scale value display. + Use the public property for access to this value. + + + + Private fields for the attributes. + Use the public properties and + for access to these values. + + + + Private fields for the attributes. + Use the public properties and + for access to these values. + + + + Private fields for the attributes. + Use the public properties and + for access to these values. + + + + Private fields for the attributes. + Use the public properties and + for access to these values. + + + + Private fields for the attributes. + Use the public properties and + for access to these values. + + + + Private fields for the attributes. + Use the public properties and + for access to these values. + + + + Private fields for the attributes. + Use the public properties and + for access to these values. + + + + Private fields for the attributes. + Use the public properties and + for access to these values. + + + + Private field for the array of text labels. + This property is only used if is set to + + + + Private field for the format of the tic labels. + Use the public property for access to this value. + + + + + Private fields for Unit types to be used for the major and minor tics. + See and for the corresponding + public properties. + These types only apply for date-time scales (). + + The value of these types is of enumeration type + + + + + Private fields for Unit types to be used for the major and minor tics. + See and for the corresponding + public properties. + These types only apply for date-time scales (). + + The value of these types is of enumeration type + + + + Private field for the alignment of the tic labels. + This fields controls whether the inside, center, or outside edges of the text labels are aligned. + Use the public property + for access to this value. + + + + Private field for the alignment of the tic labels. + This fields controls whether the left, center, or right edges of the text labels are aligned. + Use the public property + for access to this value. + + + + Private fields for the font specificatios. + Use the public properties and + for access to these values. + + + + Internal field that stores the amount of space between the scale labels and the + major tics. Use the public property to access this + value. + + + + + Data range temporary values, used by GetRange(). + + + + + Data range temporary values, used by GetRange(). + + + + + Data range temporary values, used by GetRange(). + + + + + Data range temporary values, used by GetRange(). + + + + + Pixel positions at the minimum and maximum value for this scale. + These are temporary values used/valid only during the Draw process. + + + + + Pixel positions at the minimum and maximum value for this scale. + These are temporary values used/valid only during the Draw process. + + + + + Scale values for calculating transforms. These are temporary values + used ONLY during the Draw process. + + + These values are just and + for normal linear scales, but for log or exponent scales they will be a + linear representation. For , it is the + of the value, and for , + it is the + of the value. + + + + + Scale values for calculating transforms. These are temporary values + used ONLY during the Draw process. + + + These values are just and + for normal linear scales, but for log or exponent scales they will be a + linear representation. For , it is the + of the value, and for , + it is the + of the value. + + + + + private field that stores the owner Axis that contains this Scale instance. + + + + + Basic constructor -- requires that the object be intialized with + a pre-existing owner . + + The object that is the owner of this + instance. + + + + Copy Constructor. Create a new object based on the specified + existing one. + + The object to be copied. + The object that will own the + new instance of + + + + Create a new clone of the current item, with a new owner assignment + + The new instance that will be + the owner of the new Scale + A new clone. + + + + A construction method that creates a new object using the + properties of an existing object, but specifying a new + . + + + This constructor is used to change the type of an existing . + By specifying the old object, you are giving a set of properties + (which encompasses all fields associated with the scale, since the derived types + have no fields) to be used in creating a new object, only this + time having the newly specified object type. + The existing object from which to + copy the field data. + An representing the type of derived type + of new object to create. + The new object. + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to + serialize the target object + + + You MUST set the _ownerAxis property after deserializing a BarSettings object. + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Setup some temporary transform values in preparation for rendering the + . + + + This method is typically called by the parent + object as part of the method. It is also + called by and + + methods to setup for coordinate transformations. + + + A reference to the object that is the parent or + owner of this object. + + + The parent for this + + + + + Convert a value to its linear equivalent for this type of scale. + + + The default behavior is to just return the value unchanged. However, + for and , + it returns the log or power equivalent. + + The value to be converted + + + + Convert a value from its linear equivalent to its actual scale value + for this type of scale. + + + The default behavior is to just return the value unchanged. However, + for and , + it returns the anti-log or inverse-power equivalent. + + The value to be converted + + + + Make a value label for the axis at the specified ordinal position. + + + This method properly accounts for , , + and other axis format settings. + + + A reference to the object that is the parent or + owner of this object. + + + The zero-based, ordinal index of the label to be generated. For example, a value of 2 would + cause the third value label on the axis to be generated. + + + The numeric value associated with the label. This value is ignored for log () + and text () type axes. + + The resulting value label as a + + + + Get the maximum width of the scale value text that is required to label this + . + The results of this method are used to determine how much space is required for + the axis labels. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + true to get the bounding box of the text using the , + false to just get the bounding box without rotation + + the maximum width of the text in pixel units + + + + Determine the value for any major tic. + + + This method properly accounts for , , + and other axis format settings. + + + The value of the first major tic (floating point double) + + + The major tic number (0 = first major tic). For log scales, this is the actual power of 10. + + + The specified major tic value (floating point double). + + + + + Determine the value for any minor tic. + + + This method properly accounts for , , + and other axis format settings. + + + The value of the first major tic (floating point double). This tic value is the base + reference for all tics (including minor ones). + + + The major tic number (0 = first major tic). For log scales, this is the actual power of 10. + + + The specified minor tic value (floating point double). + + + + + Internal routine to determine the ordinals of the first minor tic mark + + + The value of the first major tic for the axis. + + + The ordinal position of the first minor tic, relative to the first major tic. + This value can be negative (e.g., -3 means the first minor tic is 3 minor step + increments before the first major tic. + + + + + Determine the value for the first major tic. + + + This is done by finding the first possible value that is an integral multiple of + the step size, taking into account the date/time units if appropriate. + This method properly accounts for , , + and other axis format settings. + + + First major tic value (floating point double). + + + + + Draw the value labels, tic marks, and grid lines as + required for this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The first major tic value for the axis + + + The total number of major tics for the axis + + + The pixel location of the far side of the ChartRect from this axis. + This value is the ChartRect.Height for the XAxis, or the ChartRect.Width + for the YAxis and Y2Axis. + + The number of pixels to shift this axis, based on the + value of . A positive value is into the ChartRect relative to + the default axis position. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Draw the scale, including the tic marks, value labels, and grid lines as + required for this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + The number of pixels to shift to account for non-primary axis position (e.g., + the second, third, fourth, etc. or . + + + + + Determine the width, in pixel units, of each bar cluster including + the cluster gaps and bar gaps. + + + This method uses the for + non-ordinal axes, or a cluster width of 1.0 for ordinal axes. + + A reference to the object + associated with this + The width of each bar cluster, in pixel units + + + + Calculates the cluster width, in pixels, by transforming the specified + clusterScaleWidth. + + The width in user scale units of each + bar cluster + The equivalent pixel size of the bar cluster + + + + Select a reasonable scale given a range of data values. + + + The scale range is chosen + based on increments of 1, 2, or 5 (because they are even divisors of 10). This + routine honors the , , + and autorange settings as well as the + setting. In the event that any of the autorange settings are false, the + corresponding , , or + setting is explicitly honored, and the remaining autorange settings (if any) will + be calculated to accomodate the non-autoranged values. The basic defaults for + scale selection are defined using , + , and + from the default class. + On Exit: + is set to scale minimum (if = true) + is set to scale maximum (if = true) + is set to scale step size (if = true) + is set to scale minor step size (if = true) + is set to a magnitude multiplier according to the data + is set to the display format for the values (this controls the + number of decimal places, whether there are thousands separators, currency types, etc.) + + A reference to the object + associated with this + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Calculate the maximum number of labels that will fit on this axis. + + + This method works for + both X and Y direction axes, and it works for angled text (assuming that a bounding box + is an appropriate measure). Technically, labels at 45 degree angles could fit better than + the return value of this method since the bounding boxes can overlap without the labels actually + overlapping. + + A reference to the object + associated with this + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Calculate a step size based on a data range. + + + This utility method + will try to honor the and + number of + steps while using a rational increment (1, 2, or 5 -- which are + even divisors of 10). This method is used by . + + The range of data in user scale units. This can + be a full range of the data for the major step size, or just the + value of the major step size to calculate the minor step size + The desired "typical" number of steps + to divide the range into + The calculated step size for the specified data range. + + + + Calculate a step size based on a data range, limited to a maximum number of steps. + + + This utility method + will calculate a step size, of no more than maxSteps, + using a rational increment (1, 2, or 5 -- which are + even divisors of 10). This method is used by . + + The range of data in user scale units. This can + be a full range of the data for the major step size, or just the + value of the major step size to calculate the minor step size + The maximum allowable number of steps + to divide the range into + The calculated step size for the specified data range. + + + + Internal routine to determine the ordinals of the first and last major axis label. + + + This is the total number of major tics for this axis. + + + + + Calculate the modulus (remainder) in a safe manner so that divide + by zero errors are avoided + + The divisor + The dividend + the value of the modulus, or zero for the divide-by-zero + case + + + + Define suitable default ranges for an axis in the event that + no data were available + + The of interest + The for which to set the range + + + + Transform the coordinate value from user coordinates (scale value) + to graphics device coordinates (pixels). + + This method takes into + account the scale range ( and ), + logarithmic state (), scale reverse state + () and axis type (, + , or ). + Note that the must be valid, and + must be called for the + current configuration before using this method (this is called everytime + the graph is drawn (i.e., is called). + + The coordinate value, in user scale units, to + be transformed + the coordinate value transformed to screen coordinates + for use in calling the draw routines + + + + Transform the coordinate value from user coordinates (scale value) + to graphics device coordinates (pixels). + + + This method takes into + account the scale range ( and ), + logarithmic state (), scale reverse state + () and axis type (, + , or ). + Note that the must be valid, and + must be called for the + current configuration before using this method (this is called everytime + the graph is drawn (i.e., is called). + + true to force the axis to honor the data + value, rather than replacing it with the ordinal value + The ordinal value of this point, just in case + this is an axis + The coordinate value, in user scale units, to + be transformed + the coordinate value transformed to screen coordinates + for use in calling the draw routines + + + + Reverse transform the user coordinates (scale value) + given a graphics device coordinate (pixels). + + + This method takes into + account the scale range ( and ), + logarithmic state (), scale reverse state + () and axis type (, + , or ). + Note that the must be valid, and + must be called for the + current configuration before using this method (this is called everytime + the graph is drawn (i.e., is called). + + The screen pixel value, in graphics device coordinates to + be transformed + The user scale value that corresponds to the screen pixel location + + + + Transform the coordinate value from user coordinates (scale value) + to graphics device coordinates (pixels). + + Assumes that the origin + has been set to the "left" of this axis, facing from the label side. + Note that the left side corresponds to the scale minimum for the X and + Y2 axes, but it is the scale maximum for the Y axis. + This method takes into + account the scale range ( and ), + logarithmic state (), scale reverse state + () and axis type (, + , or ). Note that + the must be valid, and + must be called for the + current configuration before using this method. + + The coordinate value, in linearized user scale units, to + be transformed + the coordinate value transformed to screen coordinates + for use in calling the method + + + + Calculate a base 10 logarithm in a safe manner to avoid math exceptions + + The value for which the logarithm is to be calculated + The value of the logarithm, or 0 if the + argument was negative or zero + + + + Calculate an exponential in a safe manner to avoid math exceptions + + The value for which the exponential is to be calculated + The exponent value to use for calculating the exponential. + + + + Gets or sets the linearized version of the scale range. + + + This value is valid at any time, whereas is an optimization + pre-set that is only valid during draw operations. + + + + + Gets or sets the linearized version of the scale range. + + + This value is valid at any time, whereas is an optimization + pre-set that is only valid during draw operations. + + + + + Get an enumeration that indicates the type of this scale. + + + + + True if this scale is , false otherwise. + + + + + True if this scale is , false otherwise. + + + + + True if this scale is , false otherwise. + + + + + True if this scale is , false otherwise. + + + + + True if this scale is , false otherwise. + + + Note that this is only true for an actual class. + This property will be false for other ordinal types such as + , , + or . Use the + as a "catchall" for all ordinal type axes. + + + + + Gets a value that indicates if this is of any of the + ordinal types in the enumeration. + + + + + + Gets or sets the minimum scale value for this . + + This value can be set + automatically based on the state of . If + this value is set manually, then will + also be set to false. + + The value is defined in user scale units for + and axes. For + and axes, + this value is an ordinal starting with 1.0. For + axes, this value is in XL Date format (see , which is the + number of days since the reference date of January 1, 1900. + + + + + + + + Gets or sets the maximum scale value for this . + + + This value can be set + automatically based on the state of . If + this value is set manually, then will + also be set to false. + + The value is defined in user scale units for + and axes. For + and axes, + this value is an ordinal starting with 1.0. For + axes, this value is in XL Date format (see , which is the + number of days since the reference date of January 1, 1900. + + + + + + + + Gets or sets the scale step size for this (the increment between + labeled axis values). + + + This value can be set + automatically based on the state of . If + this value is set manually, then will + also be set to false. This value is ignored for + axes. For axes, this + value is defined in units of . + + The value is defined in user scale units + + + + + + + + + + + + Gets or sets the scale minor step size for this (the spacing between + minor tics). + + This value can be set + automatically based on the state of . If + this value is set manually, then will + also be set to false. This value is ignored for and + axes. For axes, this + value is defined in units of . + + The value is defined in user scale units + + + + + + + + Gets or sets the scale exponent value. This only applies to . + + + + + + + + + + + + + Gets or sets the scale value at which the first major tic label will appear. + + This property allows the scale labels to start at an irregular value. + For example, on a scale range with = 0, = 1000, + and = 200, a value of 50 would cause + the scale labels to appear at values 50, 250, 450, 650, and 850. Note that the + default value for this property is , which means the + value is not used. Setting this property to any value other than + will activate the effect. The value specified must + coincide with the first major tic. That is, if were set to + 650 in the example above, then the major tics would only occur at 650 and 850. This + setting may affect the minor tics, since the minor tics are always referenced to the + . That is, in the example above, if the + were set to 30 (making it a non-multiple of the major step), then the minor tics would + occur at 20, 50 (so it lines up with the BaseTic), 80, 110, 140, etc. + + The value is defined in user scale units + + + + + + + + + Gets or sets the type of units used for the major step size (). + + + This unit type only applies to Date-Time axes ( = true). + The axis is set to date type with the property. + The unit types are defined as . + + The value is a enum type + + + + + + + + + Gets or sets the type of units used for the minor step size (). + + + This unit type only applies to Date-Time axes ( = true). + The axis is set to date type with the property. + The unit types are defined as . + + The value is a enum type + + + + + + + + + Gets the major unit multiplier for this scale type, if any. + + The major unit multiplier will correct the units of + to match the units of + and . This reflects the setting of + . + + + + + Gets the minor unit multiplier for this scale type, if any. + + The minor unit multiplier will correct the units of + to match the units of + and . This reflects the setting of + . + + + + + Gets or sets a value that determines whether or not the minimum scale value + is set automatically. + + + This value will be set to false if + is manually changed. + + true for automatic mode, false for manual mode + + + + + Gets or sets a value that determines whether or not the maximum scale value + is set automatically. + + + This value will be set to false if + is manually changed. + + true for automatic mode, false for manual mode + + + + + Gets or sets a value that determines whether or not the scale step size + is set automatically. + + + This value will be set to false if + is manually changed. + + true for automatic mode, false for manual mode + + + + + Gets or sets a value that determines whether or not the minor scale step size + is set automatically. + + + This value will be set to false if + is manually changed. + + true for automatic mode, false for manual mode + + + + + Determines whether or not the scale label format + is determined automatically based on the range of data values. + + + This value will be set to false if + is manually changed. + + true if will be set automatically, false + if it is to be set manually by the user + + + + + + + The format of the tic labels. + + + This property may be a date format or a numeric format, depending on the setting of + Scale.Type. + This property may be set automatically by ZedGraph, depending on the state of + . + + The format string conforms to the + for date formats, and + for numeric formats. + + + + + + + + The magnitude multiplier for scale values. + + + This is used to limit + the size of the displayed value labels. For example, if the value + is really 2000000, then the graph will display 2000 with a 10^3 + magnitude multiplier. This value can be determined automatically + depending on the state of . + If this value is set manually by the user, + then will also be set to false. + + The magnitude multiplier (power of 10) for the scale + value labels + + + + + + + + Determines whether the value will be set + automatically based on the data, or manually by the user. + + + If the user manually sets the value, then this + flag will be set to false. + + true to have set automatically, + false otherwise + + + + + + Gets or sets the "grace" value applied to the minimum data range. + + + This value is + expressed as a fraction of the total data range. For example, assume the data + range is from 4.0 to 16.0, leaving a range of 12.0. If MinGrace is set to + 0.1, then 10% of the range, or 1.2 will be subtracted from the minimum data value. + The scale will then be ranged to cover at least 2.8 to 16.0. + + + + + + + Gets or sets the "grace" value applied to the maximum data range. + + + This values determines how much extra space is left after the last data value. + This value is + expressed as a fraction of the total data range. For example, assume the data + range is from 4.0 to 16.0, leaving a range of 12.0. If MaxGrace is set to + 0.1, then 10% of the range, or 1.2 will be added to the maximum data value. + The scale will then be ranged to cover at least 4.0 to 17.2. + + + + + + + Controls the alignment of the tic labels. + + + This property controls whether the inside, center, or outside edges of the + text labels are aligned. + + + + Controls the alignment of the tic labels. + + + This property controls whether the left, center, or right edges of the + text labels are aligned. + + + + + Gets a reference to the class used to render + the scale values + + + + + + + + + + + The gap between the scale labels and the tics. + + + + + Gets or sets a value that causes the axis scale labels and title to appear on the + opposite side of the axis. + + + For example, setting this flag to true for the will shift the + axis labels and title to the right side of the instead of the + normal left-side location. Set this property to true for the , + and set the property for the to an arbitrarily + large value (assuming is false for the ) in + order to have the appear at the top of the . + + + + + + + Gets or sets a value that causes the first scale label for this to be + hidden. + + + Often, for axis that have an active setting (e.g., + is false), the first and/or last scale label are overlapped by opposing axes. Use this + property to hide the first scale label to avoid the overlap. Note that setting this value + to true will hide any scale label that appears within of the + beginning of the . + + + + + Gets or sets a value that causes the last scale label for this to be + hidden. + + + Often, for axis that have an active setting (e.g., + is false), the first and/or last scale label are overlapped by opposing axes. Use this + property to hide the last scale label to avoid the overlap. Note that setting this value + to true will hide any scale label that appears within of the + end of the . + + + + + Gets or sets a value that causes the scale label that is located at the + value for this to be hidden. + + + For axes that have an active setting (e.g., + is false), the scale label at the value is overlapped by opposing axes. + Use this property to hide the scale label to avoid the overlap. + + + + + Determines if the scale values are reversed for this + + true for the X values to decrease to the right or the Y values to + decrease upwards, false otherwise + . + + + + Determines if powers-of-ten notation will be used for the numeric value labels. + + + The powers-of-ten notation is just the text "10" followed by a superscripted value + indicating the magnitude. This mode is only valid for log scales (see + and ). + + boolean value; true to show the title as a power of ten, false to + show a regular numeric value (e.g., "0.01", "10", "1000") + + + + Gets or sets a value that determines if ZedGraph will check to + see if the scale labels are close enough to overlap. If so, + ZedGraph will adjust the step size to prevent overlap. + + + The process of checking for overlap is done during the + method call, and affects the selection of the major step size (). + + boolean value; true to check for overlap, false otherwise + + + + Gets or sets a property that determines whether or not the scale values will be shown. + + true to show the scale values, false otherwise + . + + + + The text labels for this . + + + This property is only + applicable if is set to . + + + + + A simple struct that defines the + default property values for the class. + + + + + The default "zero lever" for automatically selecting the axis + scale range (see ). This number is + used to determine when an axis scale range should be extended to + include the zero value. This value is maintained only in the + class, and cannot be changed after compilation. + + + + The default "grace" value applied to the minimum data range. + This value is + expressed as a fraction of the total data range. For example, assume the data + range is from 4.0 to 16.0, leaving a range of 12.0. If MinGrace is set to + 0.1, then 10% of the range, or 1.2 will be subtracted from the minimum data value. + The scale will then be ranged to cover at least 2.8 to 16.0. + + + + + The default "grace" value applied to the maximum data range. + This value is + expressed as a fraction of the total data range. For example, assume the data + range is from 4.0 to 16.0, leaving a range of 12.0. If MaxGrace is set to + 0.1, then 10% of the range, or 1.2 will be added to the maximum data value. + The scale will then be ranged to cover at least 4.0 to 17.2. + + + + + + + The maximum number of text labels (major tics) that will be allowed on the plot by + the automatic scaling logic. This value applies only to + axes. If there are more than MaxTextLabels on the plot, then + will be increased to reduce the number of labels. That is, + the step size might be increased to 2.0 to show only every other label. + + + + + The default target number of steps for automatically selecting the X axis + scale step size (see ). + This number is an initial target value for the number of major steps + on an axis. This value is maintained only in the + class, and cannot be changed after compilation. + + + + + The default target number of steps for automatically selecting the Y or Y2 axis + scale step size (see ). + This number is an initial target value for the number of major steps + on an axis. This value is maintained only in the + class, and cannot be changed after compilation. + + + + + The default target number of minor steps for automatically selecting the X axis + scale minor step size (see ). + This number is an initial target value for the number of minor steps + on an axis. This value is maintained only in the + class, and cannot be changed after compilation. + + + + + The default target number of minor steps for automatically selecting the Y or Y2 axis + scale minor step size (see ). + This number is an initial target value for the number of minor steps + on an axis. This value is maintained only in the + class, and cannot be changed after compilation. + + + + + The default reverse mode for the scale + ( property). true for a reversed scale + (X decreasing to the left, Y/Y2 decreasing upwards), false otherwise. + + + + + The default setting for the scale format string + ( property). For numeric values, this value is + setting according to the format strings. For date + type values, this value is set as per the function. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 1825 days (5 years). + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 730 days (2 years). + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 300 days (10 months). + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 10 days. + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 3 days. + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 0.4167 days (10 hours). + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 0.125 days (3 hours). + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 6.94e-3 days (10 minutes). + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 2.083e-3 days (3 minutes). + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + If the total span of data exceeds this number (in days), then the auto-range + code will select = + and = . + This value normally defaults to 3.472e-5 days (3 seconds). + This value is used by the method. + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + + A default setting for the auto-ranging code. + This values applies only to Date-Time type axes. + This is the format used for the scale values when auto-ranging code + selects a of + for and for + for . + This value is used by the method. + + + + + The default alignment of the tic labels. + This value controls whether the inside, center, or outside edges of the text labels are aligned. + + + + + The default alignment of the tic labels. + This value controls whether the left, center, or right edges of the text labels are aligned. + + + + + + The default font family for the scale values + font specification + ( property). + + + + + The default font size for the scale values + font specification + ( property). Units are + in points (1/72 inch). + + + + + The default font color for the scale values + font specification + ( property). + + + + + The default font bold mode for the scale values + font specification + ( property). true + for a bold typeface, false otherwise. + + + + + The default font italic mode for the scale values + font specification + ( property). true + for an italic typeface, false otherwise. + + + + + The default font underline mode for the scale values + font specification + ( property). true + for an underlined typeface, false otherwise. + + + + + The default color for filling in the scale text background + (see property). + + + + + The default custom brush for filling in the scale text background + (see property). + + + + + The default fill mode for filling in the scale text background + (see property). + + + + + The default value for , which determines + whether or not the scale values are displayed. + + + + + The default value for , which determines + whether or not the scale labels and title for the will appear + on the opposite side of the that it normally appears. + + + + + Determines the size of the band at the beginning and end of the axis that will have labels + omitted if the axis is shifted due to a non-default location using the + property. + + + This parameter applies only when is false. It is scaled according + to the size of the graph based on . When a non-default + axis location is selected, the first and last labels on that axis will overlap the opposing + axis frame. This parameter allows those labels to be omitted to avoid the overlap. Set this + parameter to zero to turn off the effect. + + + + + The default setting for the gap between the outside tics (or the axis edge + if there are no outside tics) and the scale labels, expressed as a fraction of + the major tic size. + + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that defines the owner + (containing object) for this new object. + + The owner, or containing object, of this instance + + + + The Copy Constructor + + The object from which to copy + The object that will own the + new instance of + + + + Create a new clone of the current item, with a new owner assignment + + The new instance that will be + the owner of the new Scale + A new clone. + + + + Select a reasonable ordinal axis scale given a range of data values, with the expectation that + dates will be displayed. + + + This method only applies to type axes, and it + is called by the general method. For this type, + the first curve is the "master", which contains the dates to be applied. + On Exit: + is set to scale minimum (if = true) + is set to scale maximum (if = true) + is set to scale step size (if = true) + is set to scale minor step size (if = true) + is set to a magnitude multiplier according to the data + is set to the display format for the values (this controls the + number of decimal places, whether there are thousands separators, currency types, etc.) + + A reference to the object + associated with this + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + + + Make a value label for an . + + + A reference to the object that is the parent or + owner of this object. + + + The zero-based, ordinal index of the label to be generated. For example, a value of 2 would + cause the third value label on the axis to be generated. + + + The numeric value associated with the label. This value is ignored for log + () + and text () type axes. + + The resulting value label as a + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Return the for this , which is + . + + + + + Gets or sets the minimum value for this scale. + + + The set property is specifically adapted for scales, + in that it automatically limits the value to the range of valid dates for the + struct. + + + + + Gets or sets the maximum value for this scale. + + + The set property is specifically adapted for scales, + in that it automatically limits the value to the range of valid dates for the + struct. + + + + + The DateScale class inherits from the class, and implements + the features specific to . + + + DateScale is a cartesian axis with calendar dates or times. The actual data values should + be created with the type, which is directly translatable to a + type for storage in the point value arrays. + + + John Champion + $Revision: 1.15 $ $Date: 2007-09-19 06:41:56 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that defines the owner + (containing object) for this new object. + + The owner, or containing object, of this instance + + + + The Copy Constructor + + The object from which to copy + The object that will own the + new instance of + + + + Create a new clone of the current item, with a new owner assignment + + The new instance that will be + the owner of the new Scale + A new clone. + + + + Determine the value for any major tic. + + + This method properly accounts for , , + and other axis format settings. + + + The value of the first major tic (floating point double) + + + The major tic number (0 = first major tic). For log scales, this is the actual power of 10. + + + The specified major tic value (floating point double). + + + + + Determine the value for any minor tic. + + + This method properly accounts for , , + and other axis format settings. + + + The value of the first major tic (floating point double). This tic value is the base + reference for all tics (including minor ones). + + + The major tic number (0 = first major tic). For log scales, this is the actual power of 10. + + + The specified minor tic value (floating point double). + + + + + Internal routine to determine the ordinals of the first minor tic mark + + + The value of the first major tic for the axis. + + + The ordinal position of the first minor tic, relative to the first major tic. + This value can be negative (e.g., -3 means the first minor tic is 3 minor step + increments before the first major tic. + + + + + Determine the value for the first major tic. + + + This is done by finding the first possible value that is an integral multiple of + the step size, taking into account the date/time units if appropriate. + This method properly accounts for , , + and other axis format settings. + + + First major tic value (floating point double). + + + + + Internal routine to determine the ordinals of the first and last major axis label. + + + This is the total number of major tics for this axis. + + + + + Select a reasonable date-time axis scale given a range of data values. + + + This method only applies to type axes, and it + is called by the general method. The scale range is chosen + based on increments of 1, 2, or 5 (because they are even divisors of 10). + Note that the property setting can have multiple unit + types ( and ), + but the and + units are always days (). This + method honors the , , + and autorange settings. + In the event that any of the autorange settings are false, the + corresponding , , or + setting is explicitly honored, and the remaining autorange settings (if any) will + be calculated to accomodate the non-autoranged values. The basic default for + scale selection is defined with + and + from the default class. + On Exit: + is set to scale minimum (if = true) + is set to scale maximum (if = true) + is set to scale step size (if = true) + is set to scale minor step size (if = true) + is set to a magnitude multiplier according to the data + is set to the display format for the values (this controls the + number of decimal places, whether there are thousands separators, currency types, etc.) + + A reference to the object + associated with this + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + + + + + Calculate a step size for a scale. + This method is used by . + + The range of data in units of days + The desired "typical" number of steps + to divide the range into + The calculated step size for the specified data range. Also + calculates and sets the values for , + , , and + + + + + Calculate a step size for a scale. + This method is used by . + + The range of data in units of days + The desired "typical" number of steps + to divide the range into + + The object on which to calculate the Date step size. + The calculated step size for the specified data range. Also + calculates and sets the values for , + , , and + + + + + Calculate a date that is close to the specified date and an + even multiple of the selected + for a scale. + This method is used by . + + The date which the calculation should be close to + The desired direction for the date to take. + 1 indicates the result date should be greater than the specified + date parameter. -1 indicates the other direction. + The calculated date + + + + Make a value label for an . + + + A reference to the object that is the parent or + owner of this object. + + + The zero-based, ordinal index of the label to be generated. For example, a value of 2 would + cause the third value label on the axis to be generated. + + + The numeric value associated with the label. This value is ignored for log () + and text () type axes. + + The resulting value label as a + + + + Internal routine to calculate a multiplier to the selected unit back to days. + + The unit type for which the multiplier is to be + calculated + + This is ratio of days/selected unit + + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Return the for this , which is + . + + + + + Gets or sets the minimum value for this scale. + + + The set property is specifically adapted for scales, + in that it automatically limits the value to the range of valid dates for the + struct. + + + + + Gets or sets the maximum value for this scale. + + + The set property is specifically adapted for scales, + in that it automatically limits the value to the range of valid dates for the + struct. + + + + + Gets the major unit multiplier for this scale type, if any. + + The major unit multiplier will correct the units of + to match the units of + and . This reflects the setting of + . + + + + + Gets the minor unit multiplier for this scale type, if any. + + The minor unit multiplier will correct the units of + to match the units of + and . This reflects the setting of + . + + + + + A class that represents a bordered and/or filled ellipse object on + the graph. A list of EllipseObj objects is maintained by the + collection class. The ellipse is defined + as the ellipse that would be contained by the rectangular box as + defined by the property. + + + John Champion + $Revision: 3.3 $ $Date: 2007-01-25 07:56:08 $ + + + + Current schema value that defines the version of the serialized file + + + + Constructors for the object + + A constructor that allows the position and size + of the to be pre-specified. Other properties are defaulted. + + The x location for this . This will be in units determined by + . + The y location for this . This will be in units determined by + . + The width of this . This will be in units determined by + . + The height of this . This will be in units determined by + . + + + + A default constructor that places the at location (0,0), + with width/height of (1,1). Other properties are defaulted. + + + + + A constructor that allows the position, border color, and solid fill color + of the to be pre-specified. + + An arbitrary specification + for the ellipse border + An arbitrary specification + for the ellipse fill (will be a solid color fill) + The x location for this . This will be in units determined by + . + The y location for this . This will be in units determined by + . + The width of this . This will be in units determined by + . + The height of this . This will be in units determined by + . + + + + A constructor that allows the position, border color, and two-color + gradient fill colors + of the to be pre-specified. + + An arbitrary specification + for the ellipse border + An arbitrary specification + for the start of the ellipse gradient fill + An arbitrary specification + for the end of the ellipse gradient fill + The x location for this . This will be in units determined by + . + The y location for this . This will be in units determined by + . + The width of this . This will be in units determined by + . + The height of this . This will be in units determined by + . + + + + The Copy Constructor + + The object from + which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Render this object to the specified device. + + + This method is normally only called by the Draw method + of the parent collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine if the specified screen point lies inside the bounding box of this + . + + The screen point, in pixels + + A reference to the object that is the parent or + owner of this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + true if the point lies in the bounding box, false otherwise + + + + This class handles the drawing of the curve objects. + The Error Bars are the vertical lines with a symbol at each end. + + To draw "I-Beam" bars, the symbol type defaults to + , which is just a horizontal line. + If is Y-oriented, then the symbol type should be + set to to get the same effect. + + + John Champion + $Revision: 3.21 $ $Date: 2007-08-10 16:22:54 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the visibility of this + . Use the public + property to access this value. If this value is + false, the symbols will not be shown. + + + + + Private field that stores the error bar color. Use the public + property to access this value. + + + + + Private field that stores the pen width for this error bar. Use the public + property to access this value. + + + + + private field that contains the symbol element that will be drawn + at the top and bottom of the error bar. Use the public property + to access this value. + + + + + Default constructor that sets all properties to + default values as defined in the class. + + + + + Default constructor that sets the + as specified, and the remaining + properties to default + values as defined in the class. + + A value indicating + the color of the symbol + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Draw the to the specified + device at the specified location. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + boolean value that indicates if the "base" axis for this + is the X axis. True for an base, + false for a or base. + The independent axis position of the center of the error bar in + pixel units + The dependent axis position of the top of the error bar in + pixel units + The dependent axis position of the bottom of the error bar in + pixel units + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + A pen with attributes of and + for this + The data value to be used for a value-based + color gradient. This is only applicable for , + or . + Indicates that the should be drawn + with attributes from the class. + + + + + Draw all the 's to the specified + device as a an error bar at each defined point. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A object representing the + 's to be drawn. + The class instance that defines the base (independent) + axis for the + The class instance that defines the value (dependent) + axis for the + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Gets or sets a property that shows or hides the . + + true to show the error bar, false to hide it + + + + + Gets or sets the data for this + . + + This property only controls the color of + the vertical line. The symbol color is controlled separately in + the property. + + + + + The pen width to be used for drawing error bars + Units are points. + + This property only controls the pen width for the + vertical line. The pen width for the symbol outline is + controlled separately by the property. + + + + + Contains the symbol element that will be drawn + at the top and bottom of the error bar. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default size for curve symbols + ( property), + in units of points. + + + + + The default pen width to be used for drawing error bars + ( property). Units are points. + + + + + The default display mode for symbols ( property). + true to display symbols, false to hide them. + + + + + The default color for drawing error bars ( property). + + + + + The default symbol for drawing at the top and bottom of the + error bar (see ). + + + + + Encapsulates an "Error Bar" curve type that displays a vertical or horizontal + line with a symbol at each end. + + The type is intended for displaying + confidence intervals, candlesticks, stock High-Low charts, etc. It is + technically not a bar, since it is drawn as a vertical or horizontal line. + The default symbol at each end of the "bar" is , + which creates an "I-Beam". For horizontal bars + ( or + ), you will need to change the symbol to + to get horizontal "I-Beams". + Since the horizontal segments are actually symbols, their widths are + controlled by the symbol size in , + specified in points (1/72nd inch). The position of each "I-Beam" is set + according to the values. The independent axis + is assigned with , and is a + enum type. + John Champion + $Revision: 3.19 $ $Date: 2007-04-16 00:03:01 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores a reference to the + class defined for this . Use the public + property to access this value. + + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + The parent of this . + + true if the Z data are included, false otherwise + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Create a new , specifying only the legend label. + + The label that will appear in the legend. + + + + Create a new using the specified properties. + + The label that will appear in the legend. + An array of double precision values that define + the X axis values for this curve + An array of double precision values that define + the Y axis values for this curve + An array of double precision values that define + the lower dependent values for this curve + A value that will be applied to + the properties. + + + + + Create a new using the specified properties. + + The label that will appear in the legend. + A of double precision values that define + the X, Y and lower dependent values for this curve + A value that will be applied to + the properties. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Do all rendering associated with this to the specified + device. This method is normally only + called by the Draw method of the parent + collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The ordinal position of the current + curve. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Draw a legend key entry for this at the specified location + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The struct that specifies the + location for the legend key + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine the coords for the rectangle associated with a specified point for + this + + The to which this curve belongs + The index of the point of interest + A list of coordinates that represents the "rect" for + this point (used in an html AREA tag) + true if it's a valid point, false otherwise + + + + Gets a reference to the class defined + for this . + + + + + The ExponentScale class inherits from the class, and implements + the features specific to . + + + ExponentScale is a non-linear axis in which the values are scaled using an exponential function + with the property. + + + John Champion with contributions by jackply + $Revision: 1.8 $ $Date: 2007-04-16 00:03:01 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that defines the owner + (containing object) for this new object. + + The owner, or containing object, of this instance + + + + The Copy Constructor + + The object from which to copy + The object that will own the + new instance of + + + + Create a new clone of the current item, with a new owner assignment + + The new instance that will be + the owner of the new Scale + A new clone. + + + + Setup some temporary transform values in preparation for rendering the . + + + This method is typically called by the parent + object as part of the method. It is also + called by and + + methods to setup for coordinate transformations. + + + A reference to the object that is the parent or + owner of this object. + + + The parent for this + + + + + Convert a value to its linear equivalent for this type of scale. + + + The default behavior is to just return the value unchanged. However, + for and , + it returns the log or power equivalent. + + The value to be converted + + + + Convert a value from its linear equivalent to its actual scale value + for this type of scale. + + + The default behavior is to just return the value unchanged. However, + for and , + it returns the anti-log or inverse-power equivalent. + + The value to be converted + + + + Determine the value for any major tic. + + + This method properly accounts for , , + and other axis format settings. + + + The value of the first major tic (floating point double) + + + The major tic number (0 = first major tic). For log scales, this is the actual power of 10. + + + The specified major tic value (floating point double). + + + + + Determine the value for any minor tic. + + + This method properly accounts for , , + and other axis format settings. + + + The value of the first major tic (floating point double). This tic value is the base + reference for all tics (including minor ones). + + + The major tic number (0 = first major tic). For log scales, this is the actual power of 10. + + + The specified minor tic value (floating point double). + + + + + Internal routine to determine the ordinals of the first minor tic mark + + + The value of the first major tic for the axis. + + + The ordinal position of the first minor tic, relative to the first major tic. + This value can be negative (e.g., -3 means the first minor tic is 3 minor step + increments before the first major tic. + + + + + Select a reasonable exponential axis scale given a range of data values. + + + This method only applies to type axes, and it + is called by the general method. The exponential scale + relies on the property to set the scaling exponent. This + method honors the , , + and autorange settings. + In the event that any of the autorange settings are false, the + corresponding , , or + setting is explicitly honored, and the remaining autorange settings (if any) will + be calculated to accomodate the non-autoranged values. For log axes, the MinorStep + value is not used. + On Exit: + is set to scale minimum (if = true) + is set to scale maximum (if = true) + is set to scale step size (if = true) + is set to a magnitude multiplier according to the data + is set to the display format for the values (this controls the + number of decimal places, whether there are thousands separators, currency types, etc.) + + + + + + + Make a value label for an . + + + A reference to the object that is the parent or + owner of this object. + + + The zero-based, ordinal index of the label to be generated. For example, a value of 2 would + cause the third value label on the axis to be generated. + + + The numeric value associated with the label. This value is ignored for log () + and text () type axes. + + The resulting value label as a + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + A class that encapsulates color-fill properties for an object. The class + is used in , , , + , and objects. + + + John Champion + $Revision: 3.22 $ $Date: 2007-01-26 09:01:49 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the fill color. Use the public + property to access this value. This property is + only applicable if the is not . + + + + + Private field that stores the secondary color for gradientByValue fills. Use the public + property to access this value. This property is + only applicable if the is , + , or . + + + + + Private field that stores the custom fill brush. Use the public + property to access this value. This property is + only applicable if the + property is set to . + + + + + Private field that determines the type of color fill. Use the public + property to access this value. The fill color + is determined by the property or + . + + + + + Private field that determines if the brush will be scaled to the bounding box + of the filled object. If this value is false, then the brush will only be aligned + with the filled object based on the and + properties. + + + + + Private field that determines how the brush will be aligned with the filled object + in the horizontal direction. This value is a enumeration. + This field only applies if is false. + properties. + + + + + + + Private field that determines how the brush will be aligned with the filled object + in the vertical direction. This value is a enumeration. + This field only applies if is false. + properties. + + + + + + + Private field that saves the image passed to the constructor. + This is used strictly for serialization. + + + + + Private field that saves the image wrapmode passed to the constructor. + This is used strictly for serialization. + + + + + Private field that saves the list of colors used to create the + in the constructor. This is used strictly + for serialization. + + + + + Private field that saves the list of positions used to create the + in the constructor. This is used strictly + for serialization. + + + + + Private field the saves the angle of the fill. This is used strictly for serialization. + + + + + Generic initializer to default values + + + + + The default constructor. Initialized to no fill. + + + + + Constructor that specifies the color, brush, and type for this fill. + + The color of the fill for solid fills + A custom brush for fills. Can be a , + , or . + The for this fill. + + + + Constructor that creates a solid color-fill, setting to + , and setting to the + specified color value. + + The color of the solid fill + + + + Constructor that creates a linear gradient color-fill, setting to + using the specified colors and angle. + + The first color for the gradient fill + The second color for the gradient fill + The angle (degrees) of the gradient fill + + + + Constructor that creates a linear gradient color-fill, setting to + using the specified colors. + + The first color for the gradient fill + The second color for the gradient fill + + + + Constructor that creates a linear gradient color-fill, setting to + using the specified colors. This gradient fill + consists of three colors. + + The first color for the gradient fill + The second color for the gradient fill + The third color for the gradient fill + + + + Constructor that creates a linear gradient color-fill, setting to + using the specified colors. This gradient fill + consists of three colors + + The first color for the gradient fill + The second color for the gradient fill + The third color for the gradient fill + The angle (degrees) of the gradient fill + + + + Constructor that creates a linear gradient multi-color-fill, setting to + using the specified colors. This gradient fill + consists of many colors based on a object. The gradient + angle is defaulted to zero. + + The object that defines the colors + and positions along the gradient. + + + + Constructor that creates a linear gradient multi-color-fill, setting to + using the specified colors. This gradient fill + consists of many colors based on a object, drawn at the + specified angle (degrees). + + The object that defines the colors + and positions along the gradient. + The angle (degrees) of the gradient fill + + + + Constructor that creates a linear gradient multi-color-fill, setting to + using the specified colors. This gradient fill + consists of many colors based on an array of objects, drawn at an + angle of zero (degrees). The array is used to create + a object assuming a even linear distribution of the colors + across the gradient. + + The array of objects that defines the colors + along the gradient. + + + + Constructor that creates a linear gradient multi-color-fill, setting to + using the specified colors. This gradient fill + consists of many colors based on an array of objects, drawn at the + specified angle (degrees). The array is used to create + a object assuming a even linear distribution of the colors + across the gradient. + + The array of objects that defines the colors + along the gradient. + The angle (degrees) of the gradient fill + + + + Constructor that creates a linear gradient multi-color-fill, setting to + using the specified colors. This gradient fill + consists of many colors based on an array of objects, drawn at the + an angle of zero (degrees). The array is used to create + a object assuming a even linear distribution of the colors + across the gradient. + + The array of objects that defines the colors + along the gradient. + The array of floating point values that defines the color + positions along the gradient. Values should range from 0 to 1. + + + + Constructor that creates a linear gradient multi-color-fill, setting to + using the specified colors. This gradient fill + consists of many colors based on an array of objects, drawn at the + specified angle (degrees). The array is used to create + a object assuming a even linear distribution of the colors + across the gradient. + + The array of objects that defines the colors + along the gradient. + The array of floating point values that defines the color + positions along the gradient. Values should range from 0 to 1. + The angle (degrees) of the gradient fill + + + + Constructor that creates a texture fill, setting to + and using the specified image. + + The to use for filling + The class that controls the image wrapping properties + + + + Constructor that creates a fill, using a user-supplied, custom + . The brush will be scaled to fit the destination screen object + unless you manually change to false; + + The to use for fancy fills. Typically, this would + be a or a class + + + + Constructor that creates a fill, using a user-supplied, custom + . The brush will be scaled to fit the destination screen object + according to the parameter. + + The to use for fancy fills. Typically, this would + be a or a class + Determines if the brush will be scaled to fit the bounding box + of the destination object. true to scale it, false to leave it unscaled + + + + Constructor that creates a fill, using a user-supplied, custom + . This constructor will make the brush unscaled (see ), + but it provides and parameters to control + alignment of the brush with respect to the filled object. + + The to use for fancy fills. Typically, this would + be a or a class + Controls the horizontal alignment of the brush within the filled object + (see + Controls the vertical alignment of the brush within the filled object + (see + + + + The Copy Constructor + + The Fill object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Create a fill brush using current properties. This method will construct a brush based on the + settings of , + and . If + is set to and + + is null, then a will be created between the colors of + and . + + A rectangle that bounds the object to be filled. This determines + the start and end of the gradient fill. + A class representing the fill brush + + + + Create a fill brush using current properties. This method will construct a brush based on the + settings of , + and . If + is set to and + + is null, then a will be created between the colors of + and . + + A rectangle that bounds the object to be filled. This determines + the start and end of the gradient fill. + The data value to be used for a value-based + color gradient. This is only applicable for , + or . + A class representing the fill brush + + + + Fill the background of the area, using the + fill type from this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The struct specifying the area + to be filled + + + + Fill the background of the area, using the + fill type from this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The struct specifying the area + to be filled + The data value to be used in case it's a + , , or + . + + + + The fill color. This property is used as a single color to make a solid fill + ( is ), or it can be used in + combination with to make a + + when is and + is null. + + + + + + Gets or sets the secondary color for gradientByValue fills. + + + This property is only applicable if the is + , + , or + . Once the gradient-by-value logic picks + a color, a new gradient will be created using the SecondaryValueGradientColor, the + resulting gradient-by-value color, and the angle setting for this + . Use a value of Color.Empty to have + a solid-color resulting from a gradient-by-value + . + + + + + The custom fill brush. This can be a , a + , or a . This property is + only applicable if the property is set + to . + + + + + Determines the type of fill, which can be either solid + color () or a custom brush + (). See for + more information. + + + + + + This property determines the type of color fill. + Returns true if the property is either + or + . If set to true, this property + will automatically set the to + . If set to false, this property + will automatically set the to + . In order to get a regular + solid-color fill, you have to manually set + to . + + + + + + + + Determines if the brush will be scaled to the bounding box + of the filled object. If this value is false, then the brush will only be aligned + with the filled object based on the and + properties. + + + + + Determines how the brush will be aligned with the filled object + in the horizontal direction. This value is a enumeration. + This field only applies if is false. + + + + + + Determines how the brush will be aligned with the filled object + in the vertical direction. This value is a enumeration. + This field only applies if is false. + + + + + + Returns a boolean value indicating whether or not this fill is a "Gradient-By-Value" + type. This is true for , , + or . + + + The gradient by value fill method allows the fill color for each point or bar to + be based on a value for that point (either X, Y, or Z in the . + For example, assume a class is defined with a linear gradient ranging from + to and the + is set to . If is set to + 100.0 and is set to 200.0, then a point that has a Y value of + 100 or less will be colored blue, a point with a Y value of 200 or more will be + colored red, and a point between 100 and 200 will have a color based on a linear scale + between blue and red. Note that the fill color is always solid for any given point. + You can use the Z value from along with + to color individual points according to some + property that is independent of the X,Y point pair. + + true if this is a Gradient-by-value type, false otherwise + + + + + + + The minimum user-scale value for the gradient-by-value determination. This defines + the user-scale value for the start of the gradient. + + + + + + + + A double value, in user scale unit + + + + The maximum user-scale value for the gradient-by-value determination. This defines + the user-scale value for the end of the gradient. + + + + + + + + A double value, in user scale unit + + + + The default user-scale value for the gradient-by-value determination. This defines the + value that will be used when there is no point value available, or the actual point value + is invalid. + + + Note that this value, when defined, will determine the color that is used in the legend. + If this value is set to double.MaxValue, then it remains "undefined." In this case, the + legend symbols will actually be filled with a color gradient representing the range of + colors. + + + + + + + + A double value, in user scale unit + + + + A simple struct that defines the + default property values for the class. + + + + + The default scaling mode for fills. + This is the default value for the property. + + + + + The default horizontal alignment for fills. + This is the default value for the property. + + + + + The default vertical alignment for fills. + This is the default value for the property. + + + + + An example of an implementation that stores large datasets, and + selectively filters the output data depending on the displayed range. + + + This class will refilter the data points each time is called. The + data are filtered down to points, within the data bounds of + a minimum and maximum data range. The data are filtered by simply skipping + points to achieve the desired total number of points. Input arrays are assumed to be + monotonically increasing in X, and evenly spaced in X. + + + + + + + John Champion with mods by Christophe Holmes + $Revision: 1.11 $ $Date: 2007-11-29 02:15:39 $ + + + + Instance of an array of x values + + + + + Instance of an array of x values + + + + + This is the maximum number of points that you want to see in the filtered dataset + + + + + The index of the xMinBound above + + + + + The index of the xMaxBound above + + + + + Constructor to initialize the PointPairList from two arrays of + type double. + + + + + The Copy Constructor + + The FilteredPointList from which to copy + + + + Deep-copy clone routine + + A new, independent copy of the FilteredPointList + + + + Set the data bounds to the specified minimum, maximum, and point count. Use values of + min=double.MinValue and max=double.MaxValue to get the full range of data. Use maxPts=-1 + to not limit the number of points. Call this method anytime the zoom range is changed. + + The lower bound for the X data of interest + The upper bound for the X data of interest + The maximum number of points allowed to be + output by the filter + + + + Indexer to access the specified object by + its ordinal position in the list. + + + Returns for any value of + that is outside of its corresponding array bounds. + + The ordinal position (zero-based) of the + object to be accessed. + A object reference. + + + + Returns the number of points according to the current state of the filter. + + + + + Gets the desired number of filtered points to output. You can set this value by + calling . + + + + + The class is a generic font class that maintains the font family, + attributes, colors, border and fill modes, font size, and angle information. + This class can render text with a variety of alignment options using the + and parameters in the + method. + + + John Champion + $Revision: 3.24 $ $Date: 2007-01-25 07:56:08 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the color of the font characters for this + . Use the public property + to access this value. + + A system reference. + + + + Private field that stores the font family name for this . + Use the public property to access this value. + + A text string with the font family name, e.g., "Arial" + + + + Private field that determines whether this is + drawn with bold typeface. + Use the public property to access this value. + + A boolean value, true for bold, false for normal + + + + Private field that determines whether this is + drawn with italic typeface. + Use the public property to access this value. + + A boolean value, true for italic, false for normal + + + + Private field that determines whether this is + drawn with underlined typeface. + Use the public property to access this value. + + A boolean value, true for underline, false for normal + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field that determines the properties of the border around the text. + Use the public property to access this value. + + + + + Private field that determines the angle at which this + object is drawn. Use the public property + to access this value. + + The angle of the font, measured in anti-clockwise degrees from + horizontal. Negative values are permitted. + + + + Private field that determines the alignment with which this + object is drawn. This alignment really only + affects multi-line strings. Use the public property + to access this value. + + A enumeration. + + + + Private field that determines the size of the font for this + object. Use the public property + to access this value. + + The size of the font, measured in points (1/72 inch). + + + + Private field that stores a reference to the + object for this . This font object will be at + the actual drawn size according to the current + size of the . Use the public method + to access this font object. + + A reference to a object + + + + Private field that determines if the will be + displayed using anti-aliasing logic. + Use the public property to access this value. + + + + + Private field that determines if the will be + displayed with a drop shadow. + Use the public property to access this value. + + + + + Private field that determines the color of the dropshadow for this + . + Use the public property to access this value. + + + + + Private field that determines the offset angle of the dropshadow for this + . + Use the public property to access this value. + + + + + Private field that determines the offset distance of the dropshadow for this + . + Use the public property to access this value. + + + + + Private field that stores a reference to the + object that will be used for superscripts. This font object will be a + fraction of the , + based on the value of . This + property is internal, and has no public access. + + A reference to a object + + + + Private field that temporarily stores the scaled size of the font for this + object. This represents the actual on-screen + size, rather than the that represents the reference + size for a "full-sized" . + + The size of the font, measured in points (1/72 inch). + + + + Construct a object with default properties. + + + + + Construct a object with the given properties. All other properties + are defaulted according to the values specified in the + default class. + + A text string representing the font family + (default is "Arial") + A size of the font in points. This size will be scaled + based on the ratio of the dimension to the + of the object. + The color with which to render the font + true for a bold typeface, false otherwise + true for an italic typeface, false otherwise + true for an underlined font, false otherwise + + + + Construct a object with the given properties. All other properties + are defaulted according to the values specified in the + default class. + + A text string representing the font family + (default is "Arial") + A size of the font in points. This size will be scaled + based on the ratio of the dimension to the + of the object. + The color with which to render the font + true for a bold typeface, false otherwise + true for an italic typeface, false otherwise + true for an underlined font, false otherwise + The to use for filling in the text background + The to use for filling in the text background + The to use for the + text background + + + + The Copy Constructor + + The FontSpec object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Recreate the font based on a new scaled size. The font + will only be recreated if the scaled size has changed by + at least 0.1 points. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The unscaled size of the font, in points + The scaled size of the font, in points + A reference to the object + + + + Get the class for the current scaled font. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + Returns a reference to a object + with a size of , and font . + + + + + Render the specified to the specifed + device. The text, border, and fill options + will be rendered as required. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A string value containing the text to be + displayed. This can be multiple lines, separated by newline ('\n') + characters + The X location to display the text, in screen + coordinates, relative to the horizontal () + alignment parameter + The Y location to display the text, in screen + coordinates, relative to the vertical ( + alignment parameter + A horizontal alignment parameter specified + using the enum type + A vertical alignment parameter specified + using the enum type + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Render the specified to the specifed + device. The text, border, and fill options + will be rendered as required. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A string value containing the text to be + displayed. This can be multiple lines, separated by newline ('\n') + characters + The X location to display the text, in screen + coordinates, relative to the horizontal () + alignment parameter + The Y location to display the text, in screen + coordinates, relative to the vertical ( + alignment parameter + A horizontal alignment parameter specified + using the enum type + A vertical alignment parameter specified + using the enum type + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The limiting area () into which the text + must fit. The actual rectangle may be smaller than this, but the text will be wrapped + to accomodate the area. + + + + Render the specified to the specifed + device. The text, border, and fill options + will be rendered as required. This special case method will show the + specified text as a power of 10, using the + and . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A string value containing the text to be + displayed. This can be multiple lines, separated by newline ('\n') + characters + The X location to display the text, in screen + coordinates, relative to the horizontal () + alignment parameter + The Y location to display the text, in screen + coordinates, relative to the vertical ( + alignment parameter + A horizontal alignment parameter specified + using the enum type + A vertical alignment parameter specified + using the enum type + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Get the height of the scaled font + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The scaled font height, in pixels + + + + Get the average character width of the scaled font. The average width is + based on the character 'x' + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The scaled font width, in pixels + + + + Get the total width of the specified text string + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The text string for which the width is to be calculated + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The scaled text width, in pixels + + + + Get a struct representing the width and height + of the specified text string, based on the scaled font size + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The text string for which the width is to be calculated + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The scaled text dimensions, in pixels, in the form of + a struct + + + + Get a struct representing the width and height + of the specified text string, based on the scaled font size, and using + the specified as an outer limit. + + + This method will allow the text to wrap as necessary to fit the + . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The text string for which the width is to be calculated + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The limiting area () into which the text + must fit. The actual rectangle may be smaller than this, but the text will be wrapped + to accomodate the area. + The scaled text dimensions, in pixels, in the form of + a struct + + + + Get a struct representing the width and height + of the bounding box for the specified text string, based on the scaled font size. + + + This routine differs from in that it takes into + account the rotation angle of the font, and gives the dimensions of the + bounding box that encloses the text at the specified angle. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The text string for which the width is to be calculated + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The scaled text dimensions, in pixels, in the form of + a struct + + + + Get a struct representing the width and height + of the bounding box for the specified text string, based on the scaled font size. + + + This routine differs from in that it takes into + account the rotation angle of the font, and gives the dimensions of the + bounding box that encloses the text at the specified angle. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The text string for which the width is to be calculated + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The limiting area () into which the text + must fit. The actual rectangle may be smaller than this, but the text will be wrapped + to accomodate the area. + The scaled text dimensions, in pixels, in the form of + a struct + + + + Get a struct representing the width and height + of the bounding box for the specified text string, based on the scaled font size. + + + This special case method will show the specified string as a power of 10, + superscripted and downsized according to the + and . + This routine differs from in that it takes into + account the rotation angle of the font, and gives the dimensions of the + bounding box that encloses the text at the specified angle. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The text string for which the width is to be calculated + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The scaled text dimensions, in pixels, in the form of + a struct + + + + Determines if the specified screen point lies within the bounding box of + the text, taking into account alignment and rotation parameters. + + The screen point, in pixel units + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + A string value containing the text to be + displayed. This can be multiple lines, separated by newline ('\n') + characters + The X location to display the text, in screen + coordinates, relative to the horizontal () + alignment parameter + The Y location to display the text, in screen + coordinates, relative to the vertical ( + alignment parameter + A horizontal alignment parameter specified + using the enum type + A vertical alignment parameter specified + using the enum type + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + true if the point lies within the bounding box, false otherwise + + + + Determines if the specified screen point lies within the bounding box of + the text, taking into account alignment and rotation parameters. + + The screen point, in pixel units + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + A string value containing the text to be + displayed. This can be multiple lines, separated by newline ('\n') + characters + The X location to display the text, in screen + coordinates, relative to the horizontal () + alignment parameter + The Y location to display the text, in screen + coordinates, relative to the vertical ( + alignment parameter + A horizontal alignment parameter specified + using the enum type + A vertical alignment parameter specified + using the enum type + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The limiting area () into which the text + must fit. The actual rectangle may be smaller than this, but the text will be wrapped + to accomodate the area. + true if the point lies within the bounding box, false otherwise + + + + Returns a polygon that defines the bounding box of + the text, taking into account alignment and rotation parameters. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + A string value containing the text to be + displayed. This can be multiple lines, separated by newline ('\n') + characters + The X location to display the text, in screen + coordinates, relative to the horizontal () + alignment parameter + The Y location to display the text, in screen + coordinates, relative to the vertical ( + alignment parameter + A horizontal alignment parameter specified + using the enum type + A vertical alignment parameter specified + using the enum type + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The limiting area () into which the text + must fit. The actual rectangle may be smaller than this, but the text will be wrapped + to accomodate the area. + A polygon of 4 points defining the area of this text + + + + The color of the font characters for this . + Note that the border and background + colors are set using the and + properties, respectively. + + A system reference. + + + + The font family name for this . + + A text string with the font family name, e.g., "Arial" + + + + Determines whether this is + drawn with bold typeface. + + A boolean value, true for bold, false for normal + + + + Determines whether this is + drawn with italic typeface. + + A boolean value, true for italic, false for normal + + + + Determines whether this is + drawn with underlined typeface. + + A boolean value, true for underline, false for normal + + + + The angle at which this object is drawn. + + The angle of the font, measured in anti-clockwise degrees from + horizontal. Negative values are permitted. + + + + Determines the alignment with which this + object is drawn. This alignment really only + affects multi-line strings. + + A enumeration. + + + + The size of the font for this object. + + The size of the font, measured in points (1/72 inch). + + + + Gets or sets the class used to draw the border border + around this text. + + + + + Gets or sets the data for this + , which controls how the background + behind the text is filled. + + + + + Gets or sets a value that determines if the will be + drawn using anti-aliasing logic within GDI+. + + + If this property is set to true, it will override the current setting of + by setting the value temporarily to + . If this property is set to false, + the the current setting of will be + left as-is. + + + + + Gets or sets a value that determines if the will be + displayed with a drop shadow. + + + + + + + + Gets or sets the color of the drop shadow for this . + + + This value only applies if is true. + + + + + + + + Gets or sets the offset angle of the drop shadow for this . + + + This value only applies if is true. + + The angle, measured in anti-clockwise degrees from + horizontal. Negative values are permitted. + + + + + + + Gets or sets the offset distance of the drop shadow for this . + + + This value only applies if is true. + + The offset distance, measured as a fraction of the scaled font height. + + + + + + + A simple struct that defines the + default property values for the class. + + + + + The default size fraction of the superscript font, expressed as a fraction + of the size of the main font. + + + + + The default shift fraction of the superscript, expressed as a + fraction of the superscripted character height. This is the height + above the main font (a zero shift means the main font and the superscript + font have the tops aligned). + + + + + The default color for filling in the background of the text block + ( property). + + + + + The default custom brush for filling in this + ( property). + + + + + The default fill mode for this + ( property). + + + + + Default value for the alignment with which this + object is drawn. This alignment really only + affects multi-line strings. + + A enumeration. + + + + Default value for , which determines + if the drop shadow is displayed for this . + + + + + Default value for , which determines + if anti-aliasing logic is used for this . + + + + + Default value for , which determines + the color of the drop shadow for this . + + + + + Default value for , which determines + the offset angle of the drop shadow for this . + + + + + Default value for , which determines + the offset distance of the drop shadow for this . + + + + + A class representing a needle on the GasGuage chart + s. + + Jay Mistry + $Revision: 1.2 $ $Date: 2007-08-11 14:37:47 $ + + + + Current schema value that defines the version of the serialized file + + + + + Value of this needle + + + + + Width of the line being drawn + + + + + Color of the needle line + + + + + Internally calculated angle that places this needle relative to the MinValue and + MaxValue of 180 degree GasGuage + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + A which will customize the label display of this + + + + + + Private field that stores the class that defines the + properties of the border around this . Use the public + property to access this value. + + + + + The bounding rectangle for this . + + + + + Private field to hold the GraphicsPath of this to be + used for 'hit testing'. + + + + + Create a new + + The value associated with this + instance. + The display color for this + instance. + The value of this . + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + The parent of this . + + true if the Z data are included, false otherwise + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Do all rendering associated with this item to the specified + device. This method is normally only + called by the Draw method of the parent + collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + Not used for rendering GasGaugeNeedle + Not used for rendering GasGaugeNeedle + + + + Render the label for this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + Bounding rectangle for this . + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine the coords for the rectangle associated with a specified point for + this + + The to which this curve belongs + The index of the point of interest + A list of coordinates that represents the "rect" for + this point (used in an html AREA tag) + true if it's a valid point, false otherwise + + + + Calculate the values needed to properly display this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + Calculate the that will be used to define the bounding rectangle of + the GasGaugeNeedle. + + This rectangle always lies inside of the , and it is + normally a square so that the pie itself is not oval-shaped. + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The (normally the ) + that bounds this pie. + + + + + Gets or Sets the NeedleWidth of this + + + + + Gets or Sets the Border of this + + + + + Gets or Sets the SlicePath of this + + + + + Gets or Sets the LableDetail of this + + + + + Gets or Sets the NeedelColor of this + + + + + Gets or Sets the Fill of this + + + + + Private property that Gets or Sets the SweepAngle of this + + + + + Gets or Sets the NeedleValue of this + + + + + Specify the default property values for the class. + + + + + The default width of the gas gauge needle. Units are points, scaled according + to + + + + + The default pen width to be used for drawing the border around the GasGaugeNeedle + ( property). Units are points. + + + + + The default border mode for GasGaugeNeedle ( + property). + true to display frame around GasGaugeNeedle, false otherwise + + + + + The default color for drawing frames around GasGaugeNeedle + ( property). + + + + + The default fill type for filling the GasGaugeNeedle. + + + + + The default color for filling in the GasGaugeNeedle + ( property). + + + + + The default custom brush for filling in the GasGaugeNeedle. + ( property). + + + + + Default value for controlling display. + + + + + The default font size for entries + ( property). Units are + in points (1/72 inch). + + + + + A class representing a region on the GasGuage chart + s. + + Jay Mistry + $Revision: 1.2 $ $Date: 2007-07-30 05:26:23 $ + + + + Current schema value that defines the version of the serialized file + + + + + Defines the minimum value of this + + + + + Defines the maximum value of this + + + + + Defines the Color of this + + + + + Internally calculated; Start angle of this pie that defines this + + + + + Internally calculated; Sweep angle of this pie that defines this + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + A which will customize the label display of this + + + + + + Private field that stores the class that defines the + properties of the border around this . Use the public + property to access this value. + + + + + The bounding rectangle for this . + + + + + Private field to hold the GraphicsPath of this to be + used for 'hit testing'. + + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Create a new + + The value associated with this instance. + The display color for this instance. + The minimum value of this . + The maximum value of this . + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + The parent of this . + + true if the Z data are included, false otherwise + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Do all rendering associated with this item to the specified + device. This method is normally only + called by the Draw method of the parent + collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + Not used for rendering GasGaugeNeedle + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Render the label for this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + Bounding rectangle for this . + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine the coords for the rectangle associated with a specified point for + this + + The to which this curve belongs + The index of the point of interest + A list of coordinates that represents the "rect" for + this point (used in an html AREA tag) + true if it's a valid point, false otherwise + + + + Calculate the values needed to properly display this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + Calculate the that will be used to define the bounding rectangle of + the GasGaugeNeedle. + + This rectangle always lies inside of the , and it is + normally a square so that the pie itself is not oval-shaped. + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The (normally the ) + that bounds this pie. + + + + + Gets or sets the SlicePath of this + + + + + Gets or sets the LabelDetail of this + + + + + Gets or sets the Border of this + + + + + Gets or sets the RegionColor of this + + + + + Gets or sets the Fill of this + + + + + Gets or sets the SweepAngle of this + + + + + Gets or sets the StartAngle of this + + + + + Gets or sets the MinValue of this + + + + + Gets or sets the MaxValue of this + + + + + Specify the default property values for the class. + + + + + The default border pen width for the + + + + + The default fill type for the + + + + + The default value for the visibility of the border. + + + + + The default value for the color of the border + + + + + The default value for the color of the fill + + + + + The default value for the fill brush of the + + + + + The default value for the visibility of the fill. + + + + + The default value for the font size of the labels. + + + + + A collection class containing a list of objects + to be displayed on the graph. + + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Default constructor for the collection class + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Return the zero-based position index of the + with the specified . + + In order for this method to work, the + property must be of type . + The tag that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the is not in the list + + + + Move the position of the object at the specified index + to the new relative position in the list. + For Graphic type objects, this method controls the + Z-Order of the items. Objects at the beginning of the list + appear in front of objects at the end of the list. + The zero-based index of the object + to be moved. + The relative number of positions to move + the object. A value of -1 will move the + object one position earlier in the list, a value + of 1 will move it one position later. To move an item to the + beginning of the list, use a large negative value (such as -999). + To move it to the end of the list, use a large positive value. + + The new position for the object, or -1 if the object + was not found. + + + + Render text to the specified device + by calling the Draw method of each object in + the collection. + + This method is normally only called by the Draw method + of the parent object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + A enumeration that controls + the placement of this relative to other + graphic objects. The order of 's with the + same value is control by their order in + this . + + + + Determine if a mouse point is within any , and if so, + return the index number of the the . + + The screen point, in pixel coordinates. + + A reference to the object that is the parent or + owner of this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The index number of the + that is under the mouse point. The object is + accessible via the indexer property. + + true if the mouse point is within a bounding + box, false otherwise. + + + + + Indexer to access the specified object by its . + Note that the must be a type for this method + to work. + + The type tag to search for. + A object reference. + + + + + Class encapsulates the graph pane, which is all display elements + associated with an individual graph. + + This class is the outside "wrapper" + for the ZedGraph classes, and provides the interface to access the attributes + of the graph. You can have multiple graphs in the same document or form, + just instantiate multiple GraphPane's. + + + John Champion modified by Jerry Vos + $Revision: 3.81 $ $Date: 2007-09-30 07:44:11 $ + + + + An abstract base class that defines basic functionality for handling a pane. This class is the + parent class for and . + + + John Champion + $Revision: 3.32 $ $Date: 2007-11-05 18:28:56 $ + + + + Current schema value that defines the version of the serialized file + + + + + The rectangle that defines the full area into which the pane is rendered. Units are pixels. + Use the public property to access this value. + + + + Private field that holds the main title of the pane. Use the + public property to access this value. + + + + Private field instance of the class. Use the + public property to access this class. + + + + Private field that stores the user-defined tag for this . This tag + can be any user-defined value. If it is a type, it can be used as + a parameter to the method. Use the public property + to access this value. + + + + + private field to store the margin values for this . Use the + public property to access this property. + + + + Private field that determines whether or not the fonts, tics, gaps, etc. + will be scaled according to the actual graph size. true for font and feature scaling + with graph size, false for fixed font sizes (scaleFactor = 1.0 constant). + Use the public property to access this value. + + + + + + Private field that controls whether or not pen widths are scaled according to the + size of the graph. This value is only applicable if + is true. If is false, then no scaling will be done, + regardless of the value of . + + true to scale the pen widths according to the size of the graph, + false otherwise. + + + + + + Private field that stores the data for the + background. Use the public property to + access this value. + + + + + Private field that stores the data for the + border. Use the public property to + access this value. + + + + Private field instance of the class. Use the + public property to access this class. + + + Private field that determines the base size of the pane, in inches. + Fonts, tics, gaps, etc. are scaled according to this base size. + Use the public property to access this value. + + + + + + private field that stores the gap between the bottom of the pane title and the + client area of the pane. This is expressed as a fraction of the title character height. + + + + + Default constructor for the class. Leaves the empty. + + + + + Default constructor for the class. Specifies the of + the , and the size of the . + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of Clone + + + Note that this method must be called with an explicit cast to ICloneable, and + that it is inherently virtual. For example: + + ParentClass foo = new ChildClass(); + ChildClass bar = (ChildClass) ((ICloneable)foo).Clone(); + + Assume that ChildClass is inherited from ParentClass. Even though foo is declared with + ParentClass, it is actually an instance of ChildClass. Calling the ICloneable implementation + of Clone() on foo actually calls ChildClass.Clone() as if it were a virtual function. + + A deep copy of this object + + + + Create a shallow, memberwise copy of this class. + + + Note that this method uses MemberWiseClone, which will copy all + members (shallow) including those of classes derived from this class. + a new copy of the class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Do all rendering associated with this to the specified + device. This abstract method is implemented by the child + classes. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + Calculate the client area rectangle based on the . + + The client rectangle is the actual area available for + or items after taking out space for the margins and the title. + This method does not take out the area required for the . + To do so, you must separately call . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + + The calculated chart rect, in pixel coordinates. + + + + Draw the border _border around the area. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + + + + + Draw the on the graph, centered at the top of the pane. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + + + + + Change the size of the . Override this method to handle resizing the contents + as required. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The new size for the . + + + + Calculate the scaling factor based on the ratio of the current dimensions and + the . + + This scaling factor is used to proportionally scale the + features of the so that small graphs don't have huge fonts, and vice versa. + The scale factor represents a linear multiple to be applied to font sizes, symbol sizes, tic sizes, + gap sizes, pen widths, etc. The units of the scale factor are "World Pixels" per "Standard Point". + If any object size, in points, is multiplied by this scale factor, the result is the size, in pixels, + that the object should be drawn using the standard GDI+ drawing instructions. A "Standard Point" + is a dimension based on points (1/72nd inch) assuming that the size + matches the . + Note that "World Pixels" will still be transformed by the GDI+ transform matrices to result + in "Output Device Pixels", but "World Pixels" are the reference basis for the drawing commands. + + + A value representing the scaling factor to use for the rendering calculations. + + + + + + Calculate the scaled pen width, taking into account the scaleFactor and the + setting of the property of the pane. + + The pen width, in points (1/72 inch) + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + + The scaled pen width, in world pixels + + + + Build a object containing the graphical rendering of + all the objects in this list. + + A object rendered with the current graph. + + + + + + + Build a object containing the graphical rendering of + all the objects in this list. + + A object rendered with the current graph. + + + + + + + Gets an image for the current GraphPane, scaled to the specified size and resolution. + + The scaled width of the bitmap in pixels + The scaled height of the bitmap in pixels + The resolution of the bitmap, in dots per inch + true for anti-aliased rendering, false otherwise + + + + + + + + Gets an image for the current GraphPane, scaled to the specified size and resolution. + + The scaled width of the bitmap in pixels + The scaled height of the bitmap in pixels + The resolution of the bitmap, in dots per inch + + + + + + + + Setup a instance with appropriate antialias settings. + + + No settings are modified if is set to false. This method + does not restore original settings, it presumes that the Graphics instance will be + disposed. + An existing instance + true to render in anti-alias mode, false otherwise + + + + Gets an enhanced metafile image for the current GraphPane, scaled to the specified size. + + + By definition, a Metafile is a vector drawing, and therefore scaling should not matter. + However, this method is provided because certain options in Zedgraph, such as + are affected by the size of the expected image. + + The "effective" scaled width of the bitmap in pixels + The "effective" scaled height of the bitmap in pixels + true to use anti-aliased drawing mode, false otherwise + + + + + + + Gets an enhanced metafile image for the current GraphPane, scaled to the specified size. + + + By definition, a Metafile is a vector drawing, and therefore scaling should not matter. + However, this method is provided because certain options in Zedgraph, such as + are affected by the size of the expected image. + + The "effective" scaled width of the bitmap in pixels + The "effective" scaled height of the bitmap in pixels + + + + + + + Gets an enhanced metafile image for the current GraphPane. + + + + + + + + The rectangle that defines the full area into which all graphics + will be rendered. + + Note that this rectangle has x, y, width, and height. Most of the + GDI+ graphic primitive actually draw one pixel beyond those dimensions. For + example, for a rectangle of ( X=0, Y=0, Width=100, Height=100 ), GDI+ would + draw into pixels 0 through 100, which is actually 101 pixels. For the + ZedGraph Rect, a Width of 100 pixels means that pixels 0 through 99 are used + Units are pixels. + + + + + Accesses the for this + + A reference to a object + + + + Gets the instance that contains the text and attributes of the title. + This text can be multiple lines separated by newline characters ('\n'). + + + + + + + + + + + + Gets or sets the user-defined tag for this . This tag + can be any user-defined value. If it is a type, it can be used as + a parameter to the method. + + + Note that, if you are going to Serialize ZedGraph data, then any type + that you store in must be a serializable type (or + it will cause an exception). + + + + + Gets or sets the class for drawing the border + border around the + + + + + + + Gets or sets the data for the + filling the background of the . + + + + + Gets or sets the list of items for this + + A reference to a collection object + + + + Gets or sets the instance that controls the space between + the edge of the and the rendered content of the graph. + + + + + BaseDimension is a double precision value that sets "normal" pane size on + which all the settings are based. The BaseDimension is in inches. For + example, if the BaseDimension is 8.0 inches and the + size is 14 points. Then the pane title font + will be 14 points high when the is approximately 8.0 + inches wide. If the Rect is 4.0 inches wide, the pane title font will be + 7 points high. Most features of the graph are scaled in this manner. + + The base dimension reference for the , in inches + + + + + + + Gets or sets the gap between the bottom of the pane title and the + client area of the pane. This is expressed as a fraction of the scaled + character height. + + + + + Determines if the font sizes, tic sizes, gap sizes, etc. will be scaled according to + the size of the and the . If this + value is set to false, then the font sizes and tic sizes will always be exactly as + specified, without any scaling. + + True to have the fonts and tics scaled, false to have them constant + + + + + Gets or sets the property that controls whether or not pen widths are scaled for this + . + + This value is only applicable if + is true. If is false, then no scaling will be done, + regardless of the value of . Note that scaling the pen + widths can cause "artifacts" to appear at typical screen resolutions. This occurs + because of roundoff differences; in some cases the pen width may round to 1 pixel wide + and in another it may round to 2 pixels wide. The result is typically undesirable. + Therefore, this option defaults to false. This option is primarily useful for high + resolution output, such as printer output or high resolution bitmaps (from + ) where it is desirable to have the pen width + be consistent with the screen image. + + true to scale the pen widths according to the size of the graph, + false otherwise. + + + + + + A simple struct that defines the default property values for the class. + + + + + The default display mode for the title at the top of the pane + ( property). true to + display a title, false otherwise. + + + + + The default font family for the title + ( property). + + + + + The default font size (points) for the + ( property). + + + + + The default font color for the + + ( property). + + + + + The default font bold mode for the + + ( property). true + for a bold typeface, false otherwise. + + + + + The default font italic mode for the + + ( property). true + for an italic typeface, false otherwise. + + + + + The default font underline mode for the + + ( property). true + for an underlined typeface, false otherwise. + + + + + The default border mode for the . + ( property). true + to draw a border around the , + false otherwise. + + + + + The default color for the border. + ( property). + + + + + The default color for the background. + ( property). + + + + + The default pen width for the border. + ( property). Units are in points (1/72 inch). + + + + + The default dimension of the , which + defines a normal sized plot. This dimension is used to scale the + fonts, symbols, etc. according to the actual size of the + . + + + + + + The default setting for the option. + true to have all pen widths scaled according to , + false otherwise. + + + + + + The default setting for the option. + true to have all fonts scaled according to , + false otherwise. + + + + + + The default value for the property, expressed as + a fraction of the scaled character height. + + + + + Current schema value that defines the version of the serialized file + + + + Private field instance of the class. Use the + public property to access this class. + + + Private field instance of the class. Use the + public property to access this class. + + + Private field instance of the class. Use the + public property to access this class. + + + Private field instance of the class. Use the + public property to access this class. + + + Private field instance of the class. Use the + public property to access this class. + + + + private value that contains a , which stores prior + objects containing scale range information. This enables + zooming and panning functionality for the . + + + + Private field that determines whether or not initial zero values will + be included or excluded when determining the Y or Y2 axis scale range. + Use the public property to access + this value. + + + Private field that determines whether or not initial + values will cause the line segments of + a curve to be discontinuous. If this field is true, then the curves + will be plotted as continuous lines as if the Missing values did not + exist. + Use the public property to access + this value. + + + private field that determines if the auto-scaled axis ranges will subset the + data points based on any manually set scale range values. Use the public property + to access this value. + The bounds provide a means to subset the data. For example, if all the axes are set to + autoscale, then the full range of data are used. But, if the XAxis.Min and XAxis.Max values + are manually set, then the Y data range will reflect the Y values within the bounds of + XAxis.Min and XAxis.Max. + + + + private field that determines if ZedGraph should modify the scale ranges for the Y and Y2 + axes such that the number of steps, and therefore the grid lines, line up. Use the + public property to acccess this value. + + + + Private field that determines how the + graphs will be displayed. See the enum + for the individual types available. + To access this value, use the public property . + + + + + + Default Constructor. Sets the to (0, 0, 500, 375), and + sets the and values to empty + strings. + + + + + Constructor for the object. This routine will + initialize all member variables and classes, setting appropriate default + values as defined in the class. + + A rectangular screen area where the graph is to be displayed. + This area can be any size, and can be resize at any time using the + property. + + The for this + The for the + The for the + + + + The Copy Constructor + + The GraphPane object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + AxisChange causes the axes scale ranges to be recalculated based on the current data range. + + + There is no obligation to call AxisChange() for manually scaled axes. AxisChange() is only + intended to handle auto scaling operations. Call this function anytime you change, add, or + remove curve data to insure that the scale range of the axes are appropriate for the data range. + This method calculates + a scale minimum, maximum, and step size for each axis based on the current curve data. + Only the axis attributes (min, max, step) that are set to auto-range + (, , ) + will be modified. You must call after calling + AxisChange to make sure the display gets updated.
+ This overload of AxisChange just uses a throw-away bitmap as Graphics. + If you have a Graphics instance available from your Windows Form, you should use + the overload instead. +
+
+ + + AxisChange causes the axes scale ranges to be recalculated based on the current data range. + + + There is no obligation to call AxisChange() for manually scaled axes. AxisChange() is only + intended to handle auto scaling operations. Call this function anytime you change, add, or + remove curve data to insure that the scale range of the axes are appropriate for the data range. + This method calculates + a scale minimum, maximum, and step size for each axis based on the current curve data. + Only the axis attributes (min, max, step) that are set to auto-range + (, , ) + will be modified. You must call + after calling AxisChange to make sure the display gets updated. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + Draw all elements in the to the specified graphics device. + + This method + should be part of the Paint() update process. Calling this routine will redraw all + features of the graph. No preparation is required other than an instantiated + object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + Calculate the based on the . + + The ChartRect + is the plot area bounded by the axes, and the rect is the total area as + specified by the client application. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The calculated chart rect, in pixel coordinates. + + + + Calculate the based on the . + + The ChartRect + is the plot area bounded by the axes, and the rect is the total area as + specified by the client application. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + + The calculated chart rect, in pixel coordinates. + + + + This method will set the property for all three axes; + , , and . + + The + is calculated using the currently required space multiplied by a fraction + (bufferFraction). + The currently required space is calculated using , and is + based on current data ranges, font sizes, etc. The "space" is actually the amount of space + required to fit the tic marks, scale labels, and axis title. + The calculation is done by calling the method for + each . + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + The amount of space to allocate for the axis, expressed + as a fraction of the currently required space. For example, a value of 1.2 would + allow for 20% extra above the currently required space. + If true, then this method will only modify the + property if the calculated result is more than the current value. + + + + Add a curve ( object) to the plot with + the given data points (double arrays) and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + An array of double precision X values (the + independent values) that define the curve. + An array of double precision Y values (the + dependent values) that define the curve. + The color to used for the curve line, + symbols, etc. + A class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a curve ( object) to the plot with + the given data points () and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + A of double precision value pairs that define + the X and Y values for this curve + The color to used for the curve line, + symbols, etc. + A class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a curve ( object) to the plot with + the given data points (double arrays) and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + An array of double precision X values (the + independent values) that define the curve. + An array of double precision Y values (the + dependent values) that define the curve. + The color to used for the curve line, + symbols, etc. + A symbol type () + that will be used for this curve. + A class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a curve ( object) to the plot with + the given data points () and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + A of double precision value pairs that define + the X and Y values for this curve + The color to used for the curve line, + symbols, etc. + A symbol type () + that will be used for this curve. + A class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a stick graph ( object) to the plot with + the given data points (double arrays) and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + An array of double precision X values (the + independent values) that define the curve. + An array of double precision Y values (the + dependent values) that define the curve. + The color to used for the curve line, + symbols, etc. + A class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a stick graph ( object) to the plot with + the given data points () and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + A of double precision value pairs that define + the X and Y values for this curve + The color to used for the curve line, + symbols, etc. + A class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a candlestick graph ( object) to the plot with + the given data points () and properties. + + + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + Note that the + should contain objects instead of + objects in order to contain all the data values required for this curve type. + + The text label (string) for the curve that will be + used as a entry. + A of double precision value pairs that define + the X and Y values for this curve + The color to used for the curve line, + symbols, etc. + A class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a japanesecandlestick graph ( object) to the plot with + the given data points () and properties. + + + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + Note that the + should contain objects instead of + objects in order to contain all the data values required for this curve type. + + The text label (string) for the curve that will be + used as a entry. + A of double precision value pairs that define + the X and Y values for this curve + A class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add an error bar set ( object) to the plot with + the given data points () and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + An array of double precision X values (the + independent values) that define the curve. + An array of double precision Y values (the + dependent values) that define the curve. + An array of double precision values that define the + base value (the bottom) of the bars for this curve. + + The color to used for the curve line, + symbols, etc. + An class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add an error bar set ( object) to the plot with + the given data points () and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + A of double precision value pairs that define + the X and Y values for this curve + The color to used for the curve line, + symbols, etc. + An class for the newly created curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a bar type curve ( object) to the plot with + the given data points () and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + A of double precision value pairs that define + the X and Y values for this curve + The color to used to fill the bars + A class for the newly created bar curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a bar type curve ( object) to the plot with + the given data points (double arrays) and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + An array of double precision X values (the + independent values) that define the curve. + An array of double precision Y values (the + dependent values) that define the curve. + The color to used for the bars + A class for the newly created bar curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a "High-Low" bar type curve ( object) to the plot with + the given data points (double arrays) and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + An array of double precision X values (the + independent values) that define the curve. + An array of double precision Y values (the + dependent values) that define the curve. + An array of double precision values that define the + base value (the bottom) of the bars for this curve. + + The color to used for the bars + A class for the newly created bar curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a hi-low bar type curve ( object) to the plot with + the given data points () and properties. + This is simplified way to add curves without knowledge of the + class. An alternative is to use + the Add() method. + + The text label (string) for the curve that will be + used as a entry. + A of double precision value Trio's that define + the X, Y, and lower dependent values for this curve + The color to used to fill the bars + A class for the newly created bar curve. + This can then be used to access all of the curve properties that + are not defined as arguments to the + method. + + + + Add a to the display. + + The value associated with this item. + The display color for this item. + The amount this item will be + displaced from the center of the . + Text label for this + a reference to the constructed + + + + Add a to the display, providing a gradient fill for the pie color. + + The value associated with this instance. + The starting display color for the gradient for this + instance. + The ending display color for the gradient for this + instance. + The angle for the gradient . + The amount this instance will be + displaced from the center point. + Text label for this instance. + + + + Creates all the s for a single Pie Chart. + + double array containing all s + for a single PieChart. + + string array containing all s + for a single PieChart. + + an array containing references to all s comprising + the Pie Chart. + + + + Transform a data point from the specified coordinate type + () to screen coordinates (pixels). + + This method implicitly assumes that + has already been calculated via or + methods, or the is + set manually (see ). + The X,Y pair that defines the point in user + coordinates. + A type that defines the + coordinate system in which the X,Y pair is defined. + A point in screen coordinates that corresponds to the + specified user point. + + + + Transform a data point from the specified coordinate type + () to screen coordinates (pixels). + + This method implicitly assumes that + has already been calculated via or + methods, or the is + set manually (see ). + Note that this method is more accurate than the + overload, since it uses double types. This would typically only be significant for + coordinates. + + The x coordinate that defines the location in user space + The y coordinate that defines the location in user space + A type that defines the + coordinate system in which the X,Y pair is defined. + A point in screen coordinates that corresponds to the + specified user point. + + + + Return the user scale values that correspond to the specified screen + coordinate position (pixels). This overload assumes the default + and . + + This method implicitly assumes that + has already been calculated via or + methods, or the is + set manually (see ). + The X,Y pair that defines the screen coordinate + point of interest + The resultant value in user coordinates from the + + The resultant value in user coordinates from the + primary + + + + Return the user scale values that correspond to the specified screen + coordinate position (pixels). + + This method implicitly assumes that + has already been calculated via or + methods, or the is + set manually (see ). + The X,Y pair that defines the screen coordinate + point of interest + The resultant value in user coordinates from the + + The resultant value in user coordinates from the + + The resultant value in user coordinates from the + primary + The resultant value in user coordinates from the + primary + + + + Return the user scale values that correspond to the specified screen + coordinate position (pixels). + + This method implicitly assumes that + has already been calculated via or + methods, or the is + set manually (see ). + The X,Y pair that defines the screen coordinate + point of interest + true to return data that corresponds to an + , false for an . + true to return data that corresponds to a + , false for a . + The ordinal index of the Y or Y2 axis from which + to return data (see , ) + + The resultant value in user coordinates from the + + The resultant value in user coordinates from the + primary + + + + Return the user scale values that correspond to the specified screen + coordinate position (pixels) for all y axes. + + This method implicitly assumes that + has already been calculated via or + methods, or the is + set manually (see ). + The X,Y pair that defines the screen coordinate + point of interest + The resultant value in user coordinates from the + + The resultant value in user coordinates from the + + An array of resultant values in user coordinates from the + list of instances. This method allocates the + array for you, according to the number of objects + in the list. + An array of resultant values in user coordinates from the + list of instances. This method allocates the + array for you, according to the number of objects + in the list. + + + + Add a secondary (left side) to the list of axes + in the Graph. + + + Note that the primary is always included by default. + This method turns off the and + and + properties by default. + + The title for the . + the ordinal position (index) in the . + + + + Add a secondary (right side) to the list of axes + in the Graph. + + + Note that the primary is always included by default. + This method turns off the and + and + properties by default. + + The title for the . + the ordinal position (index) in the . + + + + Find the object that lies closest to the specified mouse (screen) point. + + + This method will search through all of the graph objects, such as + , , , + , and . + If the mouse point is within the bounding box of the items (or in the case + of and , within + pixels), then the object will be returned. + You must check the type of the object to determine what object was + selected (for example, "if ( object is Legend ) ..."). The + parameter returns the index number of the item + within the selected object (such as the point number within a + object. + + The screen point, in pixel coordinates. + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + A reference to the nearest object to the + specified screen point. This can be any of , + , , + , , or . + Note: If the pane title is selected, then the object + will be returned. + + The index number of the item within the selected object + (where applicable). For example, for a object, + will be the index number of the nearest data point, + accessible via CurveItem.Points[index]. + index will be -1 if no data points are available. + true if an object was found, false otherwise. + + + + + Find the data point that lies closest to the specified mouse (screen) + point for the specified curve. + + + This method will search only through the points for the specified + curve to determine which point is + nearest the mouse point. It will only consider points that are within + pixels of the screen point. + + The screen point, in pixel coordinates. + A reference to the + instance that contains the closest point. nearestCurve will be null if + no data points are available. + A object containing + the data points to be searched. + The index number of the closest point. The + actual data vpoint will then be CurveItem.Points[iNearest] + . iNearest will + be -1 if no data points are available. + true if a point was found and that point lies within + pixels + of the screen point, false otherwise. + + + + Find the data point that lies closest to the specified mouse (screen) + point. + + + This method will search through all curves in + to find which point is + nearest. It will only consider points that are within + pixels of the screen point. + + The screen point, in pixel coordinates. + A reference to the + instance that contains the closest point. nearestCurve will be null if + no data points are available. + The index number of the closest point. The + actual data vpoint will then be CurveItem.Points[iNearest] + . iNearest will + be -1 if no data points are available. + true if a point was found and that point lies within + pixels + of the screen point, false otherwise. + + + + Find the data point that lies closest to the specified mouse (screen) + point. + + + This method will search through the specified list of curves to find which point is + nearest. It will only consider points that are within + pixels of the screen point, and it will + only consider 's that are in + . + + The screen point, in pixel coordinates. + A object containing + a subset of 's to be searched. + A reference to the + instance that contains the closest point. nearestCurve will be null if + no data points are available. + The index number of the closest point. The + actual data vpoint will then be CurveItem.Points[iNearest] + . iNearest will + be -1 if no data points are available. + true if a point was found and that point lies within + pixels + of the screen point, false otherwise. + + + + Search through the and for + items that contain active objects. + + The mouse location where the click occurred + An appropriate instance + The current scaling factor for drawing operations. + The clickable object that was found. Typically a type of + or a type of . + The instance that is contained within + the object. + An index value, indicating which point was clicked for + type objects. + returns true if a clickable link was found under the + , or false otherwise. + + + + + Find any objects that exist within the specified (screen) rectangle. + This method will search through all of the graph objects, such as + , , , + , and . + and see if the objects' bounding boxes are within the specified (screen) rectangle + This method returns true if any are found. + + + + + Subscribe to this event to be notified when is called. + + + + + Gets or sets the list of items for this + + A reference to a collection object + + + + Accesses the for this graph + + A reference to a object + + + + Accesses the for this graph + + A reference to a object + + + + Accesses the primary for this graph + + A reference to a object + + + + + + Accesses the primary for this graph + + A reference to a object + + + + + + Gets the collection of Y axes that belong to this . + + + + + Gets the collection of Y2 axes that belong to this . + + + + + Gets the instance for this . + + + + + Gets the instance for this , + which stores the global properties for bar type charts. + + + + + Gets or sets a boolean value that affects the data range that is considered + for the automatic scale ranging. + + If true, then initial data points where the Y value + is zero are not included when automatically determining the scale , + , and size. + All data after the first non-zero Y value are included. + + + + + Gets or sets a boolean value that determines if the auto-scaled axis ranges will + subset the data points based on any manually set scale range values. + The bounds provide a means to subset the data. For example, if all the axes are set to + autoscale, then the full range of data are used. But, if the XAxis.Min and XAxis.Max values + are manually set, then the Y data range will reflect the Y values within the bounds of + XAxis.Min and XAxis.Max. Set to true to subset the data, or false to always include + all data points when calculating scale ranges. + + + Gets or sets a value that determines whether or not initial + values will cause the line segments of + a curve to be discontinuous. + + If this field is true, then the curves + will be plotted as continuous lines as if the Missing values did not exist. + Use the public property to access + this value. + + + + Gets or sets a value that determines if ZedGraph should modify the scale ranges + for the Y and Y2 axes such that the number of major steps, and therefore the + major grid lines, line up. + + + This property affects the way that selects the scale + ranges for the Y and Y2 axes. It applies to the scale ranges of all Y and Y2 axes, + but only if the is set to true.
+
+
+ + Determines how the + graphs will be displayed. See the enum + for the individual types available. + + + + + + Gets a value that indicates whether or not the for + this is empty. Note that this value is only used for + the . + + + + + Gets a reference to the for this . + + + + + A delegate to provide notification through the + when is called. + + The for which AxisChange() has + been called. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default settings for the scale ignore initial + zero values option ( property). + true to have the auto-scale-range code ignore the initial data points + until the first non-zero Y value, false otherwise. + + + + + The default settings for the scale bounded ranges option + ( property). + true to have the auto-scale-range code subset the data according to any + manually set scale values, false otherwise. + + + + The default value for the property, which + determines if the lines are drawn in normal or "stacked" mode. See the + for more information. + + + + + + The default width of a bar cluster + on a graph. This value only applies to + graphs, and only when the + is , + or . + This dimension is expressed in terms of X scale user units. + + + + + + + The tolerance that is applied to the + routine. + If a given curve point is within this many pixels of the mousePt, the curve + point is considered to be close enough for selection as a nearest point + candidate. + + + + + Hue-Saturation-Brightness Color class to store a color value, and to manage conversions + to and from RGB colors in the struct. + + + This class is based on code from http://www.cs.rit.edu/~ncs/color/ by Eugene Vishnevsky. + This struct stores the hue, saturation, brightness, and alpha values internally as + values from 0 to 255. The hue represents a fraction of the 360 degrees + of color space available. The saturation is the color intensity, where 0 represents gray scale + and 255 is the most colored. For the brightness, 0 represents black and 255 + represents white. + + + + + The color hue value, ranging from 0 to 255. + + + This property is actually a rescaling of the 360 degrees on the color wheel to 255 + possible values. Therefore, every 42.5 units is a new sector, with the following + convention: red=0, yellow=42.5, green=85, cyan=127.5, blue=170, magenta=212.5 + + + + + The color saturation (intensity) value, ranging from 0 (gray scale) to 255 (most colored). + + + + + The brightness value, ranging from 0 (black) to 255 (white). + + + + + The alpha value (opacity), ranging from 0 (transparent) to 255 (opaque). + + + + + Constructor to load an struct from hue, saturation and + brightness values + + The color hue value, ranging from 0 to 255 + The color saturation (intensity) value, ranging from 0 (gray scale) + to 255 (most colored) + The brightness value, ranging from 0 (black) to 255 (white) + + + + Constructor to load an struct from hue, saturation, + brightness, and alpha values + + The color hue value, ranging from 0 to 255 + The color saturation (intensity) value, ranging from 0 (gray scale) + to 255 (most colored) + The brightness value, ranging from 0 (black) to 255 (white) + The alpha value (opacity), ranging from 0 (transparent) to + 255 (opaque) + + + + Constructor to load an struct from a system + struct. + + An rgb struct containing the equivalent + color you want to generate + + + + Implicit conversion operator to convert directly from an to + a struct. + + The struct to be converted + An equivalent struct that can be used in the GDI+ + graphics library + + + + Convert an value to an equivalent value. + + + This method is based on code from http://www.cs.rit.edu/~ncs/color/ by Eugene Vishnevsky. + + The struct to be converted + An equivalent struct, compatible with the GDI+ library + + + + Convert this value to an equivalent value. + + + This method is based on code from http://www.cs.rit.edu/~ncs/color/ by Eugene Vishnevsky. + + An equivalent struct, compatible with the GDI+ library + + + + Convert a value to an equivalent value. + + + This method is based on code from http://www.cs.rit.edu/~ncs/color/ by Eugene Vishnevsky. + + An equivalent struct + + + + Convert a value to an equivalent value. + + + This method is based on code from http://www.cs.rit.edu/~ncs/color/ by Eugene Vishnevsky. + + The struct to be converted + An equivalent struct + + + + A class that represents an image object on the graph. A list of + objects is maintained by the + collection class. + + + John Champion + $Revision: 3.2 $ $Date: 2006-09-09 17:32:01 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the image. Use the public property + to access this value. + + + + + Private field that determines if the image will be scaled to the output rectangle. + + true to scale the image, false to draw the image unscaled, but clipped + to the destination rectangle + + + Constructors for the object + + A default constructor that places a null at a + default of (0,0,1,1) + + + + + A constructor that allows the and + location for the + to be pre-specified. + + A class that defines + the image + A struct that defines the + image location, specifed in units based on the + property. + + + Constructors for the object + + A constructor that allows the and + location for the + to be pre-specified. + + A class that defines + the image + A struct that defines the + image location, specifed in units based on the + property. + The enum value that + indicates what type of coordinate system the x and y parameters are + referenced to. + The enum that specifies + the horizontal alignment of the object with respect to the (x,y) location + The enum that specifies + the vertical alignment of the object with respect to the (x,y) location + + + Constructors for the object + + A constructor that allows the and + individual coordinate locations for the + to be pre-specified. + + A class that defines + the image + The position of the left side of the rectangle that defines the + location. The units of this position are specified by the + property. + The position of the top side of the rectangle that defines the + location. The units of this position are specified by the + property. + The width of the rectangle that defines the + location. The units of this position are specified by the + property. + The height of the rectangle that defines the + location. The units of this position are specified by the + property. + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Render this object to the specified device + This method is normally only called by the Draw method + of the parent collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine if the specified screen point lies inside the bounding box of this + . The bounding box is calculated assuming a distance + of pixels around the arrow segment. + + The screen point, in pixels + + A reference to the object that is the parent or + owner of this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + true if the point lies in the bounding box, false otherwise + + + + Determines the shape type and Coords values for this GraphObj + + + + + The object. + + A class reference. + + + + Gets or sets a property that determines if the image will be scaled to the + output rectangle (see ). + + true to scale the image, false to draw the image unscaled, but clipped + to the destination rectangle + + + + A simple struct that defines the + default property values for the class. + + + + + Default value for the + property. + + + + + An interface to a collection class containing data + that define the set of points to be displayed on the curve. + + + This interface is designed to allow customized data abstraction. The default data + collection class is , however, you can define your own + data collection class using the interface. This + interface adds the ability to remove and add points + to the list, and so is used by the class for the + , , and + methods. + + + + + + + John Champion + $Revision: 3.6 $ $Date: 2006-10-19 04:40:14 $ + + + + Appends a point to the end of the list. The data are passed in as a + object. + + The object containing the data to be added. + + + + Appends a point to the end of the list. The data are passed in as two + types. + + The value containing the X data to be added. + The value containing the Y data to be added. + The ordinal position (zero-based), at which the new point was added. + + + + Removes a single data point from the list at the specified ordinal location + (zero based). + + + + + Clears all data points from the list. After calling this method, + will be zero. + + + + + Indexer to access a data point by its ordinal position in the collection. + + + This is the standard interface that ZedGraph uses to access the data. Although + you must pass a here, your internal data storage format + can be anything. + + The ordinal position (zero-based) of the + data point to be accessed. + A object instance. + + + + This class handles the drawing of the curve objects. + + + John Champion + $Revision: 3.10 $ $Date: 2007-04-16 00:03:02 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field to store the class to be used for filling the + candlestick "bars" when the value is greater than + the value. See the public property + to access this value. + + + + + Private field to store the class to be used for filling the + candlestick "bars" when the value is less than + the value. See the public property + to access this value. + + + + + Private field to store the class to be used for drawing the + candlestick "bars" when the value is greater than + the value. See the public property + to access this value. + + + + + Private field to store the class to be used for drawing the + candlestick "bars" when the value is less than + the value. See the public property + to access this value. + + + + + Private field that stores the CandleStick color when the + value is less than the value. Use the public + property to access this value. + + + + + Default constructor that sets all properties to + default values as defined in the class. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Draw the to the specified + device at the specified location. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + boolean value that indicates if the "base" axis for this + is the X axis. True for an base, + false for a or base. + The independent axis position of the center of the candlestick in + pixel units + The high value position of the candlestick in + pixel units + The low value position of the candlestick in + pixel units + The opening value position of the candlestick in + pixel units + The closing value position of the candlestick in + pixel units + The scaled width of one-half of a bar, in pixels + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + A pen with the attribute for this + + + The instance to be used for filling this + + + The instance to be used for drawing the + border around the filled box + The to be used for determining the + , just in case it's a , + , or + + + + + Draw all the 's to the specified + device as a candlestick at each defined point. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A object representing the + 's to be drawn. + The class instance that defines the base (independent) + axis for the + The class instance that defines the value (dependent) + axis for the + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Gets or sets the class that is used to fill the candlestick + "bars" when the value is greater than the + value. + + + + + Gets or sets the class that is used to fill the candlestick + "bars" when the value is less than the + value. + + + + + The instance to be used for drawing the border frame of + the candlestick "bars" when the value is greater than the + value. + + + + + The instance to be used for drawing the border frame of + the candlestick "bars" when the value is less than the + value. + + + + + Gets or sets the data for this + when the value of the candlestick is + falling. + + This property only controls the color of + the vertical line when the value is falling. The rising color is controlled + by the property. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default fillcolor for drawing the rising case CandleSticks + ( property). + + + + + The default fillcolor for drawing the falling case CandleSticks + ( property). + + + + + The default color for the border of the rising CandleSticks + ( property). + + + + + The default color for the border of the falling CandleSticks + ( property). + + + + + Encapsulates a Japanese CandleStick curve type that displays a vertical (or horizontal) + line displaying the range of data values at each sample point, plus a filled bar + signifying the opening and closing value for the sample. + + For this type to work properly, your must contain + objects, rather than ordinary types. + This is because the type actually displays 5 data values + but the only stores 3 data values. The + stores , , + , , and + members. + For a JapaneseCandleStick chart, the range between opening and closing values + is drawn as a filled bar, with the filled color different + () for the case of + + higher than , and + + for the reverse. The width of the bar is controlled + by the property, which is specified in + points (1/72nd inch), and scaled according to . + The candlesticks are drawn horizontally or vertically depending on the + value of , which is a + enum type. + John Champion + $Revision: 3.6 $ $Date: 2007-12-31 00:23:05 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores a reference to the + class defined for this . Use the public + property to access this value. + + + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + + IsZIncluded is true for objects, since the Y and Z + values are defined as the High and Low values for the day. + The parent of this . + + true if the Z data are included, false otherwise + + + + Create a new , specifying only the legend label. + + The label that will appear in the legend. + + + + Create a new using the specified properties. + + The label that will appear in the legend. + An of double precision values that define + the Date, Close, Open, High, and Low values for the curve. Note that this + should contain items rather + than items. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Do all rendering associated with this to the specified + device. This method is normally only + called by the Draw method of the parent + collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The ordinal position of the current + curve. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Draw a legend key entry for this at the specified location + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The struct that specifies the + location for the legend key + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine the coords for the rectangle associated with a specified point for + this + + The to which this curve belongs + The index of the point of interest + A list of coordinates that represents the "rect" for + this point (used in an html AREA tag) + true if it's a valid point, false otherwise + + + + Gets a reference to the class defined + for this . + + + + + This class encapsulates the chart that is displayed + in the + + + John Champion + $Revision: 3.41 $ $Date: 2007-08-11 19:24:55 $ + + + + Current schema value that defines the version of the serialized file + + + + Private field to hold the bounding rectangle around the legend. + This bounding rectangle varies with the number of legend entries, font sizes, + etc., and is re-calculated by at each redraw. + Use the public readonly property to access this + rectangle. + + + + Private field to hold the legend location setting. This field + contains the enum type to specify the area of + the graph where the legend will be positioned. Use the public property + to access this value. + + + + + + Private field to enable/disable horizontal stacking of the legend entries. + If this value is false, then the legend entries will always be a single column. + Use the public property to access this value. + + + + + + Private field to enable/disable drawing of the entire legend. + If this value is false, then the legend will not be drawn. + Use the public property to access this value. + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field to maintain the class that + maintains font attributes for the entries in this legend. Use + the property to access this class. + + + + + Private field to maintain the location. This object + is only applicable if the property is set to + . + + + + + Private temporary field to maintain the number of columns (horizontal stacking) to be used + for drawing the . This value is only valid during a draw operation. + + + + + Private temporary field to maintain the width of each column in the + . This value is only valid during a draw operation. + + + + + Private temporary field to maintain the height of each row in the + . This value is only valid during a draw operation. + + + + + Private field to store the gap between the legend and the chart rectangle. + + + + + Private field to select output order of legend entries. + + + + + Private temporary field to maintain the characteristic "gap" for the legend. + This is normal the height of the largest font in the legend. + This value is only valid during a draw operation. + + + + + Private field to enable/diable drawing the line and symbol samples in the + legend. + + + + + Default constructor that sets all properties to default + values as defined in the class. + + + + + The Copy Constructor + + The XAxis object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Render the to the specified device. + + + This method is normally only called by the Draw method + of the parent object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine if a mouse point is within the legend, and if so, which legend + entry () is nearest. + + The screen point, in pixel coordinates. + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The index number of the legend + entry that is under the mouse point. The object is + accessible via CurveList[index]. + + true if the mouse point is within the bounding + box, false otherwise. + + + + + Calculate the rectangle (), + taking into account the number of required legend + entries, and the legend drawing preferences. + + Adjust the size of the + for the parent to accomodate the + space required by the legend. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + The rectangle that contains the area bounded by the axes, in pixel units. + + + + + + Get the bounding rectangle for the in screen coordinates + + A screen rectangle in pixel units + + + + Access to the class used to render + the entries + + A reference to a object + + + + + + + + + + Gets or sets a property that shows or hides the entirely + + true to show the , false to hide it + + + + + The class used to draw the border border around this . + + + + + Gets or sets the data for this + background. + + + + + Sets or gets a property that allows the items to + stack horizontally in addition to the vertical stacking + + true to allow horizontal stacking, false otherwise + + + + + + Sets or gets the location of the on the + using the enum type + + + + + + Gets or sets the data for the . + This property is only applicable if is set + to . + + + + + Gets or sets the gap size between the legend and the . + + + This is expressed as a fraction of the largest scaled character height for any + of the fonts used in the legend. Each in the legend can + optionally have its own specification. + + + + + Gets or sets a value that determines if the legend entries are displayed in normal order + (matching the order in the , or in reverse order. + + + + + Gets or sets a value that determines whether the line and symbol keys will be displayed + in the legend. + + + Note: If this value is set to false (so that only the curve label text is displayed + with no legend keys), then the color of the font for the legend entry of each curve + will automatically be set to match the setting for that curve. + You can override this behavior by specifying a specific font to be used for each + individual curve with the CurveItem.Label.FontSpec + property. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default pen width for the border border. + ( property). Units are in pixels. + + + + + The default color for the border border. + ( property). + + + + + The default color for the background. + ( property). Use of this + color depends on the status of the + property. + + + + + The default custom brush for filling in this . + + + + + The default fill mode for the background. + + + + + The default location for the on the graph + ( property). This property is + defined as a enumeration. + + + + + The default border mode for the . + ( property). true + to draw a border around the , + false otherwise. + + + + + The default display mode for the . + ( property). true + to show the legend, + false to hide it. + + + + + The default fill mode for the background + ( property). + true to fill-in the background with color, + false to leave the background transparent. + + + + + The default horizontal stacking mode for the + ( property). + true to allow horizontal legend item stacking, false to allow + only vertical legend orientation. + + + + + The default font family for the entries + ( property). + + + + + The default font size for the entries + ( property). Units are + in points (1/72 inch). + + + + + The default font color for the entries + ( property). + + + + + The default font bold mode for the entries + ( property). true + for a bold typeface, false otherwise. + + + + + The default font italic mode for the entries + ( property). true + for an italic typeface, false otherwise. + + + + + The default font underline mode for the entries + ( property). true + for an underlined typeface, false otherwise. + + + + + The default color for filling in the scale text background + (see property). + + + + + The default custom brush for filling in the scale text background + (see property). + + + + + The default fill mode for filling in the scale text background + (see property). + + + + + The default gap size between the legend and the . + This is the default value of . + + + + + Default value for the property. + + + + + Default value for the property. + + + + + A class representing all the characteristics of the Line + segments that make up a curve on the graph. + + + John Champion + $Revision: 3.50 $ $Date: 2007-12-30 23:27:39 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the smoothing flag for this + . Use the public + property to access this value. + + + + + Private field that stores the smoothing tension + for this . Use the public property + to access this value. + + A floating point value indicating the level of smoothing. + 0.0F for no smoothing, 1.0F for lots of smoothing, >1.0 for odd + smoothing. + + + + + + + Private field that stores the for this + . Use the public + property to access this value. + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field that determines if this will be drawn with + optimizations enabled. Use the public + property to access this value. + + + + + Default constructor that sets all properties to default + values as defined in the class. + + + + + Constructor that sets the color property to the specified value, and sets + the remaining properties to default + values as defined in the class. + + The color to assign to this new Line object + + + + The Copy Constructor + + The Line object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Do all rendering associated with this to the specified + device. This method is normally only + called by the Draw method of the parent object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + A reference to the object that is the parent or + owner of this object. + + A representing this + curve. + + + + Render a single segment to the specified + device. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The x position of the starting point that defines the + line segment in screen pixel units + The y position of the starting point that defines the + line segment in screen pixel units + The x position of the ending point that defines the + line segment in screen pixel units + The y position of the ending point that defines the + line segment in screen pixel units + + + + Render the 's as vertical sticks (from a ) to + the specified device. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A representing this + curve. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Draw the this to the specified + device using the specified smoothing property (). + The routine draws the line segments and the area fill (if any, see ; + the symbols are drawn by the method. This method + is normally only called by the Draw method of the + object. Note that the property + is ignored for smooth lines (e.g., when is true). + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + A reference to the object that is the parent or + owner of this object. + + A representing this + curve. + + + + Draw the this to the specified + device. The format (stair-step or line) of the curve is + defined by the property. The routine + only draws the line segments; the symbols are drawn by the + method. This method + is normally only called by the Draw method of the + object + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + A reference to the object that is the parent or + owner of this object. + + A representing this + curve. + + + + Draw the this to the specified + device. The format (stair-step or line) of the curve is + defined by the property. The routine + only draws the line segments; the symbols are drawn by the + method. This method + is normally only called by the Draw method of the + object + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + A reference to the object that is the parent or + owner of this object. + + A representing this + curve. + + + + This method just handles the case where one or more of the coordinates are outrageous, + or GDI+ threw an exception. This method attempts to correct the outrageous coordinates by + interpolating them to a point (along the original line) that lies at the edge of the ChartRect + so that GDI+ will handle it properly. GDI+ will throw an exception, or just plot the data + incorrectly if the coordinates are too large (empirically, this appears to be when the + coordinate value is greater than 5,000,000 or less than -5,000,000). Although you typically + would not see coordinates like this, if you repeatedly zoom in on a ZedGraphControl, eventually + all your points will be way outside the bounds of the plot. + + + + + Build an array of values (pixel coordinates) that represents + the current curve. Note that this drawing routine ignores + values, but it does not "break" the line to indicate values are missing. + + A reference to the object that is the parent or + owner of this object. + A representing this + curve. + An array of values in pixel + coordinates representing the current curve. + The number of points contained in the "arrPoints" + parameter. + true for a successful points array build, false for data problems + + + + Build an array of values (pixel coordinates) that represents + the low values for the current curve. + + Note that this drawing routine ignores + values, but it does not "break" the line to indicate values are missing. + + A reference to the object that is the parent or + owner of this object. + A representing this + curve. + An array of values in pixel + coordinates representing the current curve. + The number of points contained in the "arrPoints" + parameter. + true for a successful points array build, false for data problems + + + + Close off a that defines a curve + + A reference to the object that is the parent or + owner of this object. + A representing this + curve. + An array of values in screen pixel + coordinates representing the current curve. + The number of points contained in the "arrPoints" + parameter. + The Y axis value location where the X axis crosses. + The class that represents the curve. + + + + Gets or sets a property that determines if this + will be drawn smooth. The "smoothness" is controlled by + the property. + + true to smooth the line, false to just connect the dots + with linear segments + + + + + + + Gets or sets a property that determines the smoothing tension + for this . This property is only used if + is true. A tension value 0.0 will just + draw ordinary line segments like an unsmoothed line. A tension + value of 1.0 will be smooth. Values greater than 1.0 will generally + give odd results. + + A floating point value indicating the level of smoothing. + 0.0F for no smoothing, 1.0F for lots of smoothing, >1.0 for odd + smoothing. + + + + + + + Determines if the will be drawn by directly connecting the + points from the data collection, + or if the curve will be a "stair-step" in which the points are + connected by a series of horizontal and vertical lines that + represent discrete, constant values. Note that the values can + be forward oriented ForwardStep () or + rearward oriented RearwardStep. + That is, the points are defined at the beginning or end + of the constant value for which they apply, respectively. + The property is ignored for lines + that have set to true. + + enum value + + + + + Gets or sets the data for this + . + + + + + Gets or sets a boolean value that determines if this will be drawn with + optimizations enabled. + + + Normally, the optimizations can be used without a problem, especially if the data + are sorted. The optimizations are particularly helpful with very large datasets. + However, if the data are very discontinuous (for example, a curve that doubles back + on itself), then the optimizations can cause drawing artifacts in the form of + missing line segments. The default option for this mode is false, so you must + explicitly enable it for each LineItem.Line. + Also note that, even if the optimizations are enabled explicitly, no actual + optimization will be done for datasets of less than 1000 points. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default color for curves (line segments connecting the points). + This is the default value for the property. + + + + + The default color for filling in the area under the curve + ( property). + + + + + The default custom brush for filling in the area under the curve + ( property). + + + + + The default fill mode for the curve ( property). + + + + + The default value for the + property. + + + + + The default value for the property. + + + + + The default value for the property. + + + + + Default value for the curve type property + (). This determines if the curve + will be drawn by directly connecting the points from the + data collection, + or if the curve will be a "stair-step" in which the points are + connected by a series of horizontal and vertical lines that + represent discrete, staticant values. Note that the values can + be forward oriented ForwardStep () or + rearward oriented RearwardStep. + That is, the points are defined at the beginning or end + of the staticant value for which they apply, respectively. + + enum value + + + + The LinearAsOrdinalScale class inherits from the class, and implements + the features specific to . + + + LinearAsOrdinal is an ordinal axis that will have labels formatted with values from the actual data + values of the first in the . + Although the tics are labeled with real data values, the actual points will be + evenly-spaced in spite of the data values. For example, if the X values of the first curve + are 1, 5, and 100, then the tic labels will show 1, 5, and 100, but they will be equal + distance from each other. + + + John Champion + $Revision: 1.10 $ $Date: 2007-04-16 00:03:02 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that defines the owner + (containing object) for this new object. + + The owner, or containing object, of this instance + + + + The Copy Constructor + + The object from which to copy + The object that will own the + new instance of + + + + Create a new clone of the current item, with a new owner assignment + + The new instance that will be + the owner of the new Scale + A new clone. + + + + Select a reasonable ordinal axis scale given a range of data values, with the expectation that + linear values will be displayed. + + + This method only applies to type axes, and it + is called by the general method. For this type, + the first curve is the "master", which contains the dates to be applied. + On Exit: + is set to scale minimum (if = true) + is set to scale maximum (if = true) + is set to scale step size (if = true) + is set to scale minor step size (if = true) + is set to a magnitude multiplier according to the data + is set to the display format for the values (this controls the + number of decimal places, whether there are thousands separators, currency types, etc.) + + A reference to the object + associated with this + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + + + Make a value label for an . + + + A reference to the object that is the parent or + owner of this object. + + + The zero-based, ordinal index of the label to be generated. For example, a value of 2 would + cause the third value label on the axis to be generated. + + + The numeric value associated with the label. This value is ignored for log () + and text () type axes. + + The resulting value label as a + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Return the for this , which is + . + + + + + The LinearScale class inherits from the class, and implements + the features specific to . + + + LinearScale is the normal, default cartesian axis. + + + John Champion + $Revision: 1.10 $ $Date: 2007-04-16 00:03:02 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that defines the owner + (containing object) for this new object. + + The owner, or containing object, of this instance + + + + The Copy Constructor + + The object from which to copy + The object that will own the + new instance of + + + + Create a new clone of the current item, with a new owner assignment + + The new instance that will be + the owner of the new Scale + A new clone. + + + + Select a reasonable linear axis scale given a range of data values. + + + This method only applies to type axes, and it + is called by the general method. The scale range is chosen + based on increments of 1, 2, or 5 (because they are even divisors of 10). This + method honors the , , + and autorange settings. + In the event that any of the autorange settings are false, the + corresponding , , or + setting is explicitly honored, and the remaining autorange settings (if any) will + be calculated to accomodate the non-autoranged values. The basic defaults for + scale selection are defined using , + , and + from the default class. + On Exit: + is set to scale minimum (if = true) + is set to scale maximum (if = true) + is set to scale step size (if = true) + is set to scale minor step size (if = true) + is set to a magnitude multiplier according to the data + is set to the display format for the values (this controls the + number of decimal places, whether there are thousands separators, currency types, etc.) + + A reference to the object + associated with this + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Return the for this , which is + . + + + + + Encapsulates a curve type that is displayed as a line and/or a set of + symbols at each point. + + + John Champion + $Revision: 3.22 $ $Date: 2007-08-10 16:22:54 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores a reference to the + class defined for this . Use the public + property to access this value. + + + + + Private field that stores a reference to the + class defined for this . Use the public + property to access this value. + + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + The parent of this . + + true if the Z data are included, false otherwise + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Create a new , specifying only the legend . + + The _label that will appear in the legend. + + + + Create a new using the specified properties. + + The _label that will appear in the legend. + An array of double precision values that define + the independent (X axis) values for this curve + An array of double precision values that define + the dependent (Y axis) values for this curve + A value that will be applied to + the and properties. + + A enum specifying the + type of symbol to use for this . Use + to hide the symbols. + The width (in points) to be used for the . This + width is scaled based on . Use a value of zero to + hide the line (see ). + + + + Create a new using the specified properties. + + The _label that will appear in the legend. + An array of double precision values that define + the independent (X axis) values for this curve + An array of double precision values that define + the dependent (Y axis) values for this curve + A value that will be applied to + the and properties. + + A enum specifying the + type of symbol to use for this . Use + to hide the symbols. + + + + Create a new using the specified properties. + + The _label that will appear in the legend. + A of double precision value pairs that define + the X and Y values for this curve + A value that will be applied to + the and properties. + + A enum specifying the + type of symbol to use for this . Use + to hide the symbols. + The width (in points) to be used for the . This + width is scaled based on . Use a value of zero to + hide the line (see ). + + + + Create a new using the specified properties. + + The _label that will appear in the legend. + A of double precision value pairs that define + the X and Y values for this curve + A value that will be applied to + the and properties. + + A enum specifying the + type of symbol to use for this . Use + to hide the symbols. + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Do all rendering associated with this to the specified + device. This method is normally only + called by the Draw method of the parent + collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The ordinal position of the current + curve. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Draw a legend key entry for this at the specified location + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The struct that specifies the + location for the legend key + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Loads some pseudo unique colors/symbols into this LineItem. This + is mainly useful for differentiating a set of new LineItems without + having to pick your own colors/symbols. + + + + The that is used to pick the color + and symbol for this method call. + + + + + Determine the coords for the rectangle associated with a specified point for + this + + The to which this curve belongs + The index of the point of interest + A list of coordinates that represents the "rect" for + this point (used in an html AREA tag) + true if it's a valid point, false otherwise + + + + Gets or sets the class instance defined + for this . + + + + + Gets or sets the class instance defined + for this . + + + + + A class that maintains hyperlink information for a clickable object on the graph. + + + John Champion + $Revision: 3.6 $ $Date: 2007-04-16 00:03:02 $ + + + + Current schema value that defines the version of the serialized file + + + schema started with 10 for ZedGraph version 5 + + + + + Internal field that stores the title string for this link. + + + + + Internal field that stores the url string for this link + + + + + Internal field that stores the target string for this link + + + + + Internal field that determines if this link is "live". + + + + + A tag object for use by the user. This can be used to store additional + information associated with the . ZedGraph does + not use this value for any purpose. + + + Note that, if you are going to Serialize ZedGraph data, then any type + that you store in must be a serializable type (or + it will cause an exception). + + + + + Default constructor. Set all properties to string.Empty, or null. + + + + + Construct a Link instance from a specified title, url, and target. + + The title for the link (which shows up in the tooltip). + The URL destination for the link. + The target for the link (typically "_blank" or "_self"). + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Create a URL for a that includes the index of the + point that was selected. + + + An "index" parameter is added to the property for this + link to indicate which point was selected. Further, if the + X or Y axes that correspond to this are of + , then an + additional parameter will be added containing the text value that + corresponds to the of the selected point. + The text parameter will be labeled "xtext", and + the text parameter will be labeled "ytext". + + The zero-based index of the selected point + The of interest + The for which to + make the url string. + A string containing the url with an index parameter added. + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets or sets the title string for this link. + + + For web controls, this title will be shown as a tooltip when the mouse + hovers over the area of the object that owns this link. Set the value to + to have no title. + + + + + Gets or sets the url string for this link. + + + Set this value to if you don't want to have + a hyperlink associated with the object to which this link belongs. + + + + + Gets or sets the target string for this link. + + + This value should be set to a valid target associated with the "Target" + property of an html hyperlink. Typically, this would be "_blank" to open + a new browser window, or "_self" to open in the current browser. + + + + + Gets or sets a property that determines if this link is active. True to have + a clickable link, false to ignore the link. + + + + + Gets a value that indicates if this is enabled + (see ), and that either the + or the is non-null. + + + + + A class than contains information about the position of an object on the graph. + + + John Champion + $Revision: 3.14 $ $Date: 2006-06-24 20:26:43 $ + + + + Current schema value that defines the version of the serialized file + + + + Private field to store the vertical alignment property for + this object. Use the public property + to access this value. The value of this field is a enum. + + + + Private field to store the horizontal alignment property for + this object. Use the public property + to access this value. The value of this field is a enum. + + + + Private fields to store the X and Y coordinate positions for + this object. Use the public properties and + to access these values. The coordinate type stored here is + dependent upon the setting of . + + + + Private fields to store the X and Y coordinate positions for + this object. Use the public properties and + to access these values. The coordinate type stored here is + dependent upon the setting of . + + + + Private fields to store the X and Y coordinate positions for + this object. Use the public properties and + to access these values. The coordinate type stored here is + dependent upon the setting of . + + + + Private fields to store the X and Y coordinate positions for + this object. Use the public properties and + to access these values. The coordinate type stored here is + dependent upon the setting of . + + + + + Private field to store the coordinate system to be used for defining the + object position. Use the public property + to access this value. The coordinate system + is defined with the enum. + + + + + Default constructor for the class. + + + + + Constructor for the class that specifies the + x, y position and the . + + + The (x,y) position corresponds to the top-left corner; + + The x position, specified in units of . + + The y position, specified in units of . + + The enum that specifies the + units for and + + + + Constructor for the class that specifies the + x, y position and the . + + + The (x,y) position corresponds to the top-left corner; + + The x position, specified in units of . + + The y position, specified in units of . + + The enum that specifies the + units for and + The enum that specifies + the horizontal alignment of the object with respect to the (x,y) location + The enum that specifies + the vertical alignment of the object with respect to the (x,y) location + + + + Constructor for the class that specifies the + (x, y), (width, height), and the . + + + The (x,y) position + corresponds to the starting position, the (x2, y2) coorresponds to the ending position + (typically used for 's). + + The x position, specified in units of . + + The y position, specified in units of . + + The width, specified in units of . + + The height, specified in units of . + + The enum that specifies the + units for and + The enum that specifies + the horizontal alignment of the object with respect to the (x,y) location + The enum that specifies + the vertical alignment of the object with respect to the (x,y) location + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Transform this object to display device + coordinates using the properties of the specified . + + + A reference to the object that contains + the classes which will be used for the transform. + + A point in display device coordinates that corresponds to the + specified user point. + + + + Transform a data point from the specified coordinate type + () to display device coordinates (pixels). + + + If is not of type , then + only the transformation is available. + + + A reference to the object that contains + the classes which will be used for the transform. + + The x coordinate that defines the point in user + space. + The y coordinate that defines the point in user + space. + A type that defines the + coordinate system in which the X,Y pair is defined. + A point in display device coordinates that corresponds to the + specified user point. + + + + Transform this from the coordinate system + as specified by to the device coordinates + of the specified object. + + + The returned + struct represents the top-left corner of the + object that honors the properties. + The and properties are honored in + this transformation. + + + A reference to the object that contains + the classes which will be used for the transform. + + The width of the object in device pixels + The height of the object in device pixels + The top-left corner of the object + + + + The for this object as defined by the + and + properties. + + + This method transforms the location to output device pixel units. + The and properties are ignored for + this transformation (see ). + + A in pixel units. + + + + The for this object as defined by the + and properties. + + + This method transforms the location to output device pixel units. + The and properties are ignored for + this transformation (see ). + + A in pixel units. + + + + Transform the for this object as defined by the + , , , and + properties. + + + This method transforms the location to output device pixel units. + The and properties are honored in + this transformation. + + A in pixel units. + + + + A horizontal alignment parameter for this object specified + using the enum type. + + + + + A vertical alignment parameter for this object specified + using the enum type. + + + + + The coordinate system to be used for defining the object position + + The coordinate system is defined with the + enum + + + + The x position of the object. + + + The units of this position + are specified by the property. + The object will be aligned to this position based on the + property. + + + + + The y position of the object. + + + The units of this position + are specified by the property. + The object will be aligned to this position based on the + property. + + + + + The x1 position of the object (an alias for the x position). + + + The units of this position + are specified by the property. + The object will be aligned to this position based on the + property. + + + + + The y1 position of the object (an alias for the y position). + + + The units of this position + are specified by the property. + The object will be aligned to this position based on the + property. + + + + + The width of the object. + + + The units of this position are specified by the + property. + + + + + The height of the object. + + + The units of this position are specified by the + property. + + + + + The x2 position of the object. + + + The units of this position are specified by the + property. + The object will be aligned to this position based on the + property. This position is only used for + objects such as , where it makes sense + to have a second coordinate. Note that the X2 position is stored + internally as a offset from . + + + + + The y2 position of the object. + + + The units of this position + are specified by the property. + The object will be aligned to this position based on the + property. This position is only used for + objects such as , where it makes sense + to have a second coordinate. Note that the Y2 position is stored + internally as a offset from . + + + + + The for this object as defined by the + , , , and + properties. + + + Note that this method reduces the precision of the location coordinates from double + precision to single precision. In some cases, such as , it + may affect the resolution of the point location. + + A in + units. + + + + The top-left for this . + + + Note that this method reduces the precision of the location coordinates from double + precision to single precision. In some cases, such as , it + may affect the resolution of the point location. + + A in units. + + + + The bottom-right for this . + + + Note that this method reduces the precision of the location coordinates from double + precision to single precision. In some cases, such as , it + may affect the resolution of the point location. + + A in units. + + + + The LogScale class inherits from the class, and implements + the features specific to . + + + LogScale is a non-linear axis in which the values are scaled using the base 10 + + function. + + + John Champion + $Revision: 1.12 $ $Date: 2007-04-16 00:03:02 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that defines the owner + (containing object) for this new object. + + The owner, or containing object, of this instance + + + + The Copy Constructor + + The object from which to copy + The object that will own the + new instance of + + + + Create a new clone of the current item, with a new owner assignment + + The new instance that will be + the owner of the new Scale + A new clone. + + + + Setup some temporary transform values in preparation for rendering the . + + + This method is typically called by the parent + object as part of the method. It is also + called by and + + methods to setup for coordinate transformations. + + + A reference to the object that is the parent or + owner of this object. + + + The parent for this + + + + + Convert a value to its linear equivalent for this type of scale. + + + The default behavior is to just return the value unchanged. However, + for and , + it returns the log or power equivalent. + + The value to be converted + + + + Convert a value from its linear equivalent to its actual scale value + for this type of scale. + + + The default behavior is to just return the value unchanged. However, + for and , + it returns the anti-log or inverse-power equivalent. + + The value to be converted + + + + Determine the value for any major tic. + + + This method properly accounts for , , + and other axis format settings. + + + The value of the first major tic (floating point double) + + + The major tic number (0 = first major tic). For log scales, this is the actual power of 10. + + + The specified major tic value (floating point double). + + + + + Determine the value for any minor tic. + + + This method properly accounts for , , + and other axis format settings. + + + The value of the first major tic (floating point double). This tic value is the base + reference for all tics (including minor ones). + + + The major tic number (0 = first major tic). For log scales, this is the actual power of 10. + + + The specified minor tic value (floating point double). + + + + + Internal routine to determine the ordinals of the first minor tic mark + + + The value of the first major tic for the axis. + + + The ordinal position of the first minor tic, relative to the first major tic. + This value can be negative (e.g., -3 means the first minor tic is 3 minor step + increments before the first major tic. + + + + + Determine the value for the first major tic. + + + This is done by finding the first possible value that is an integral multiple of + the step size, taking into account the date/time units if appropriate. + This method properly accounts for , , + and other axis format settings. + + + First major tic value (floating point double). + + + + + Internal routine to determine the ordinals of the first and last major axis label. + + + This is the total number of major tics for this axis. + + + + + Select a reasonable base 10 logarithmic axis scale given a range of data values. + + + This method only applies to type axes, and it + is called by the general method. The scale range is chosen + based always on powers of 10 (full log cycles). This + method honors the , , + and autorange settings. + In the event that any of the autorange settings are false, the + corresponding , , or + setting is explicitly honored, and the remaining autorange settings (if any) will + be calculated to accomodate the non-autoranged values. For log axes, the MinorStep + value is not used. + On Exit: + is set to scale minimum (if = true) + is set to scale maximum (if = true) + is set to scale step size (if = true) + is set to a magnitude multiplier according to the data + is set to the display format for the values (this controls the + number of decimal places, whether there are thousands separators, currency types, etc.) + + A reference to the object + associated with this + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + + + Make a value label for an . + + + A reference to the object that is the parent or + owner of this object. + + + The zero-based, ordinal index of the label to be generated. For example, a value of 2 would + cause the third value label on the axis to be generated. + + + The numeric value associated with the label. This value is ignored for log () + and text () type axes. + + The resulting value label as a + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Return the for this , which is + . + + + + + Gets or sets the minimum value for this scale. + + + The set property is specifically adapted for scales, + in that it automatically limits the setting to values greater than zero. + + + + + Gets or sets the maximum value for this scale. + + + The set property is specifically adapted for scales, + in that it automatically limits the setting to values greater than zero. + struct. + + + + + Class that handles the data associated with the major grid lines on the chart. + Inherits from . + + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Class that holds the specific properties for the minor grid. + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor + + + + + Copy constructor + + The source to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets or sets a value that determines if the major gridlines + (at each labeled value) will be visible + + true to show the gridlines, false otherwise + Default.IsShowGrid. + + + + + + + + + The "Dash On" mode for drawing the grid. + + + This is the distance, + in points (1/72 inch), of the dash segments that make up the dashed grid lines. + + The dash on length is defined in points (1/72 inch) + + + . + + + + The "Dash Off" mode for drawing the grid. + + + This is the distance, + in points (1/72 inch), of the spaces between the dash segments that make up + the dashed grid lines. + + The dash off length is defined in points (1/72 inch) + + + . + + + + The pen width used for drawing the grid lines. + + The grid pen width is defined in points (1/72 inch) + + . + + + + + The color to use for drawing this grid. + + The color is defined using the + class + . + + + + + A simple struct that defines the + default property values for the class. + + + + + The default "dash on" size for drawing the minor grid + ( property). Units are in points (1/72 inch). + + + + + The default "dash off" size for drawing the minor grid + ( property). Units are in points (1/72 inch). + + + + + The default pen width for drawing the minor grid + ( property). Units are in points (1/72 inch). + + + + + The default color for the minor grid lines + ( property). This color only affects the + minor grid lines. + + + + + The default display mode for the minor grid lines + ( property). true + to show the minor grid lines, false to hide them. + + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor + + + + + Copy constructor + + The source to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets or sets a boolean value that determines if a line will be drawn at the + zero value for the axis. + + + The zero line is a line that divides the negative values from the positive values. + The default is set according to + , , + , + + true to show the zero line, false otherwise + + + + A simple struct that defines the + default property values for the class. + + + + + The default "dash on" size for drawing the grid + ( property). Units are in points (1/72 inch). + + + + + The default "dash off" size for drawing the grid + ( property). Units are in points (1/72 inch). + + + + + The default pen width for drawing the grid + ( property). Units are in points (1/72 inch). + + + + + The default color for the grid lines + ( property). This color only affects the + grid lines. + + + + + The default display mode for the grid lines + ( property). true + to show the grid lines, false to hide them. + + + + + The default boolean value that determines if a line will be drawn at the + zero value for the axis. + + + The zero line is a line that divides the negative values from the positive values. + The default is set according to + , , + , + + true to show the zero line, false otherwise + + + + Class that holds the specific properties for the major tics. Inherits from + . + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Class that holds the specific properties for the minor tics. + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default Constructor + + + + + Copy constructor. + + The that is to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Calculate the scaled tic size for this + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The scaled tic size, in points (1/72 inch) + + + + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Draw a tic mark at the specified single position. This includes the inner, outer, + cross and opposite tic marks as required. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + Graphic with which to draw the tic mark. + The pixel location of the tic mark on this + + The pixel value of the top of the axis border + The number of pixels to shift this axis, based on the + value of . A positive value is into the ChartRect relative to + the default axis position. + The scaled size of a minor tic, in pixel units + + + + The color to use for drawing the tics of this class instance + + The color is defined using the + class + . + + + + + + The length of the major tic marks. + + + This length will be scaled + according to the for the + + + The tic size is measured in points (1/72 inch) + . + + + + + + + This is convenience property sets the status of all the different + tic properties in this instance to the same value. true to activate all tics, + false to clear all tics. + + + This setting does not persist. That is, you can clear all the tics with + = false, then activate them individually (example: + = true). + + + + + + + + + + Gets or sets a property that determines whether or not the minor outside tic marks + are shown. + + + These are the tic marks on the outside of the border. + The minor tic spacing is controlled by . + + true to show the minor outside tic marks, false otherwise + . + + + + + + + + + Gets or sets a property that determines whether or not the major inside tic marks + are shown. + + + These are the tic marks on the inside of the border. + The major tic spacing is controlled by . + + true to show the major inside tic marks, false otherwise + . + + + + + + + + + Gets or sets a property that determines whether or not the major opposite tic marks + are shown. + + + These are the tic marks on the inside of the border on + the opposite side from the axis. + The major tic spacing is controlled by . + + true to show the major opposite tic marks, false otherwise + . + + + + + + + + + Gets or sets the display mode for the major outside + "cross" tic marks. + + + The "cross" tics are a special, additional set of tic marks that + always appear on the actual axis, even if it has been shifted due + to the setting. The other tic marks are always + fixed to the edges of the . The cross tics + are normally not displayed, since, if is true, + they will exactly overlay the "normal" and "inside" tics. If + is false, then you will most likely want to + enable the cross tics. + The major tic spacing is controlled by . + + true to show the major cross tic marks, false otherwise + + + + Gets or sets the display mode for the major inside + "cross" tic marks. + + + The "cross" tics are a special, additional set of tic marks that + always appear on the actual axis, even if it has been shifted due + to the setting. The other tic marks are always + fixed to the edges of the . The cross tics + are normally not displayed, since, if is true, + they will exactly overlay the "normal" and "inside" tics. If + is false, then you will most likely want to + enable the cross tics. + The major tic spacing is controlled by . + + true to show the major cross tic marks, false otherwise + + + + Gets or sets the pen width to be used when drawing the tic marks for + this + + The pen width is defined in points (1/72 inch) + . + + + + + + A simple struct that defines the + default property values for the class. + + + + + The default size for the minor tic marks. + ( property). Units are in points (1/72 inch). + + + + + The default pen width for drawing the tic marks. + ( property). Units are in points (1/72 inch). + + + + + The display mode for the minor outside tic marks + ( property). + The minor tic spacing is controlled by . + + true to show the minor tic marks (outside the axis), + false otherwise + + + + The display mode for the minor inside tic marks + ( property). + The minor tic spacing is controlled by . + + true to show the minor tic marks (inside the axis), + false otherwise + + + + The display mode for the minor opposite tic marks + ( property). + The minor tic spacing is controlled by . + + true to show the minor tic marks + (inside the axis on the opposite side), + false otherwise + + + + The default display mode for the minor outside + "cross" tic marks ( property). + + + The "cross" tics are a special, additional set of tic marks that + always appear on the actual axis, even if it has been shifted due + to the setting. The other tic marks are always + fixed to the edges of the . The cross tics + are normally not displayed, since, if is true, + they will exactly overlay the "normal" and "inside" tics. If + is false, then you will most likely want to + enable the cross tics. + The minor tic spacing is controlled by . + + true to show the major cross tic marks, false otherwise + + + + The default display mode for the minor inside + "cross" tic marks ( property). + + + The "cross" tics are a special, additional set of tic marks that + always appear on the actual axis, even if it has been shifted due + to the setting. The other tic marks are always + fixed to the edges of the . The cross tics + are normally not displayed, since, if is true, + they will exactly overlay the "normal" and "inside" tics. If + is false, then you will most likely want to + enable the cross tics. + The major tic spacing is controlled by . + + true to show the major cross tic marks, false otherwise + + + + The default color for minor tics ( property). + + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor for . + + + + + Copy constructor. + + The that is to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets or sets a property that determines whether or not the major tics will be drawn + inbetween the labels, rather than right at the labels. + + + Note that this setting is only + applicable if = . + + true to place the text between the labels for text axes, false otherwise + + + + + + + + + A simple struct that defines the + default property values for the class. + + + + + The default size for the tic marks. + ( property). Units are in points (1/72 inch). + + + + + The default pen width for drawing the tic marks. + ( property). Units are in points (1/72 inch). + + + + + The display mode for the major outside tic marks + ( property). + The major tic spacing is controlled by . + + true to show the major tic marks (outside the axis), + false otherwise + + + + The display mode for the major inside tic marks + ( property). + The major tic spacing is controlled by . + + true to show the major tic marks (inside the axis), + false otherwise + + + + The display mode for the major opposite tic marks + ( property). + The major tic spacing is controlled by . + + true to show the major tic marks + (inside the axis on the opposite side), + false otherwise + + + + The default display mode for the major outside + "cross" tic marks ( property). + + + The "cross" tics are a special, additional set of tic marks that + always appear on the actual axis, even if it has been shifted due + to the setting. The other tic marks are always + fixed to the edges of the . The cross tics + are normally not displayed, since, if is true, + they will exactly overlay the "normal" and "inside" tics. If + is false, then you will most likely want to + enable the cross tics. + The major tic spacing is controlled by . + + true to show the major cross tic marks, false otherwise + + + + The default display mode for the major inside + "cross" tic marks ( property). + + + The "cross" tics are a special, additional set of tic marks that + always appear on the actual axis, even if it has been shifted due + to the setting. The other tic marks are always + fixed to the edges of the . The cross tics + are normally not displayed, since, if is true, + they will exactly overlay the "normal" and "inside" tics. If + is false, then you will most likely want to + enable the cross tics. + The major tic spacing is controlled by . + + true to show the major cross tic marks, false otherwise + + + + The default color for major tics ( property). + + + + + Class that handles that stores the margin properties for the GraphPane + + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private fields that store the size of the margin around the edge of the pane which will be + kept blank. Use the public properties , , + , to access these values. + + Units are points (1/72 inch) + + + + Private fields that store the size of the margin around the edge of the pane which will be + kept blank. Use the public properties , , + , to access these values. + + Units are points (1/72 inch) + + + + Private fields that store the size of the margin around the edge of the pane which will be + kept blank. Use the public properties , , + , to access these values. + + Units are points (1/72 inch) + + + + Private fields that store the size of the margin around the edge of the pane which will be + kept blank. Use the public properties , , + , to access these values. + + Units are points (1/72 inch) + + + + Constructor to build a from the default values. + + + + + Copy constructor + + the instance to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets or sets a float value that determines the margin area between the left edge of the + rectangle and the features of the graph. + + This value is in units of points (1/72 inch), and is scaled + linearly with the graph size. + + + + + + + + + Gets or sets a float value that determines the margin area between the right edge of the + rectangle and the features of the graph. + + This value is in units of points (1/72 inch), and is scaled + linearly with the graph size. + + + + + + + + + Gets or sets a float value that determines the margin area between the top edge of the + rectangle and the features of the graph. + + This value is in units of points (1/72 inch), and is scaled + linearly with the graph size. + + + + + + + + + Gets or sets a float value that determines the margin area between the bottom edge of the + rectangle and the features of the graph. + + This value is in units of points (1/72 inch), and is scaled + linearly with the graph size. + + + + + + + + + Concurrently sets all outer margin values to a single value. + + This value is in units of points (1/72 inch), and is scaled + linearly with the graph size. + + + + + + + + + A simple struct that defines the default property values for the class. + + + + + The default value for the property, which is + the size of the space on the left side of the . + + Units are points (1/72 inch) + + + + The default value for the property, which is + the size of the space on the right side of the . + + Units are points (1/72 inch) + + + + The default value for the property, which is + the size of the space on the top side of the . + + Units are points (1/72 inch) + + + + The default value for the property, which is + the size of the space on the bottom side of the . + + Units are points (1/72 inch) + + + + A collection class containing a list of objects + organized together in some form. + + + John Champion + $Revision: 3.26 $ $Date: 2007-11-05 18:28:56 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that holds a collection of objects for inclusion + in this . Use the public property + to access this collection. + + + + + Private field that sets the amount of space between the GraphPanes. Use the public property + to access this value; + + + + + Private field that stores a boolean value which signifies whether all + s in the chart use the same entries in their + If set to true, only one set of entries will be displayed in + this instance. If set to false, this instance will display all + entries from all s. + + + + + private field that determines if the + + function will automatically set + the of each in the + such that the scale factors have the same value. + + + + + private field that saves the paneLayout format specified when + was called. This value will + default to if + (or an overload) was never called. + + + + + Private field that stores the boolean value that determines whether + is specifying rows or columns. + + + + + private field that stores the row/column item count that was specified to the + method. This values will be + null if was never called. + + + + + private field that stores the row/column size proportional values as specified + to the method. This + value will be null if + was never called. + + + + + private field that determines if anti-aliased drawing will be forced on. Use the + public property to access this value. + + + + + Default constructor for the class. Sets the to (0, 0, 500, 375). + + + + + Default constructor for the class. Specifies the of + the , and the size of the . + + + + + The Copy Constructor - Make a deep-copy clone of this class instance. + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of to make a deep copy. + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Respond to the callback when the MasterPane objects are fully initialized. + + + + + + Add a object to the collection at the end of the list. + + A reference to the object to + be added + + + + + Call for all objects in the + list. + + + This overload of AxisChange just uses a throw-away bitmap as Graphics. + If you have a Graphics instance available from your Windows Form, you should use + the overload instead. + + + + + Call for all objects in the + list. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + Redo the layout using the current size of the , + and also handle resizing the + contents by calling . + + This method will use the pane layout that was specified by a call to + . If + has not previously been called, + it will default to . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + + + + + Change the size of the , and also handle resizing the + contents by calling . + + This method will use the pane layout that was specified by a call to + . If + has not previously been called, + it will default to . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + + + + + + Method that forces the scale factor calculations + (via ), + to give a common scale factor for all objects in the + . + + + This will make it such that a given font size will result in the same output font + size for all 's. Note that this does not make the scale + factor for the 's the same as that of the + . + + + + + + Render all the objects in the to the + specified graphics device. + + This method should be part of the Paint() update process. Calling this routine + will redraw all + features of all the items. No preparation is required other than + instantiated objects that have been added to the list with the + method. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + + + Find the pane and the object within that pane that lies closest to the specified + mouse (screen) point. + + + This method first finds the within the list that contains + the specified mouse point. It then calls the + method to determine which object, if any, was clicked. With the exception of the + , all the parameters in this method are identical to those + in the method. + If the mouse point lies within the of any + item, then that pane will be returned (otherwise it will be + null). Further, within the selected pane, if the mouse point is within the + bounding box of any of the items (or in the case + of and , within + pixels), then the object will be returned. + You must check the type of the object to determine what object was + selected (for example, "if ( object is Legend ) ..."). The + parameter returns the index number of the item + within the selected object (such as the point number within a + object. + + The screen point, in pixel coordinates. + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + A reference to the object that was clicked. + A reference to the nearest object to the + specified screen point. This can be any of , + , , + , , or . + Note: If the pane title is selected, then the object + will be returned. + + The index number of the item within the selected object + (where applicable). For example, for a object, + will be the index number of the nearest data point, + accessible via CurveItem.Points[index]. + index will be -1 if no data points are available. + true if a was found, false otherwise. + + + + + Find the within the that contains the + within its . + + The mouse point location where you want to search + A object that contains the mouse point, or + null if no was found. + + + + Find the within the that contains the + within its . + + The mouse point location where you want to search + A object that contains the mouse point, or + null if no was found. + + + The SetLayout() methods setup the desired layout of the + objects within a . These functions + do not make any changes, they merely set the parameters so that future calls + to or + will use the desired layout.

+ The layout options include a set of "canned" layouts provided by the + enumeration, options to just set a specific + number of rows and columns of panes (and all pane sizes are the same), and more + customized options of specifying the number or rows in each column or the number of + columns in each row, along with proportional values that determine the size of each + individual column or row. +
+ + Automatically set all of the 's in + the list to a pre-defined layout configuration from a + enumeration. + + This method uses a enumeration to describe the type of layout + to be used. Overloads are available that provide other layout options + A enumeration that describes how + the panes should be laid out within the . + + A graphic device object to be drawn into. This is normally created with a call to + the CreateGraphics() method of the Control or Form. + + + + +
+ + + Automatically set all of the 's in + the list to a reasonable configuration. + + This method explicitly specifies the number of rows and columns to use + in the layout, and all objects will have the same size. + Overloads are available that provide other layout options + + A graphic device object to be drawn into. This is normally created with a call to + the CreateGraphics() method of the Control or Form. + + The number of rows of objects + to include in the layout + The number of columns of objects + to include in the layout + + + + + + + Automatically set all of the 's in + the list to the specified configuration. + + This method specifies the number of rows in each column, or the number of + columns in each row, allowing for irregular layouts. Overloads are available that + provide other layout options. + + + A graphic device object to be drawn into. This is normally created with a call to + the CreateGraphics() method of the Control or Form. + + Specifies whether the number of columns in each row, or + the number of rows in each column will be specified. A value of true indicates the + number of columns in each row are specified in . + An integer array specifying either the number of columns in + each row or the number of rows in each column, depending on the value of + . + + + + + + + Automatically set all of the 's in + the list to the specified configuration. + + This method specifies the number of panes in each row or column, allowing for + irregular layouts. + This method specifies the number of rows in each column, or the number of + columns in each row, allowing for irregular layouts. Additionally, a + parameter is provided that allows varying column or + row sizes. Overloads for SetLayout() are available that provide other layout options. + + + A graphic device object to be drawn into. This is normally created with a call to + the CreateGraphics() method of the Control or Form. + + Specifies whether the number of columns in each row, or + the number of rows in each column will be specified. A value of true indicates the + number of columns in each row are specified in . + An integer array specifying either the number of columns in + each row or the number of rows in each column, depending on the value of + . + An array of float values specifying proportional sizes for each + row or column. Note that these proportions apply to the non-specified dimension -- that is, + if is true, then these proportions apply to the row + heights, and if is false, then these proportions apply + to the column widths. The values in this array are arbitrary floats -- the dimension of + any given row or column is that particular proportional value divided by the sum of all + the values. For example, let be true, and + is an array with values of { 1.0, 2.0, 3.0 }. The sum of + those values is 6.0. Therefore, the first row is 1/6th of the available height, the + second row is 2/6th's of the available height, and the third row is 3/6th's of the + available height. + + + + + + + + Modify the sizes of each + such that they fit within the + in a pre-configured layout. + + The method (and overloads) is + used for setting the layout configuration. + + + + + + + + Internal method that applies a previously set layout with a specific + row and column count. This method is only called by + . + + + + + Internal method that applies a previously set layout with a rows per column or + columns per row configuration. This method is only called by + . + + + + + Gets or sets the collection instance that holds the list of + objects that are included in this . + + + + + + + Gets or sets the size of the margin between adjacent + objects. + + This property is scaled according to , + based on . The default value comes from + . + + The value is in points (1/72nd inch). + + + + Gets or set the value of the + + + + + Gets or sets a value that determines if the + method will automatically set the + + of each in the such that the + scale factors have the same value. + + + The scale factors, calculated by , determine + scaled font sizes, tic lengths, etc. This function will insure that for + multiple graphpanes, a certain specified font size will be the same for + all the panes. + + + + + + + + + + Gets or sets a value that determines if all drawing operations for this + will be forced to operate in Anti-alias mode. + Note that if this value is set to "true", it overrides the setting for sub-objects. + Otherwise, the sub-object settings (such as ) + will be honored. + + + + + Indexer to access the specified object from + by its ordinal position in the list. + + The ordinal position (zero-based) of the + object to be accessed. + A object reference. + + + + Indexer to access the specified object from + by its string. + + The string title of the + object to be accessed. + A object reference. + + + + A simple struct that defines the + default property values for the class. + + + + + The default pane layout for + + method calls. + + + + + + + + + + The default value for the property. + This is the size of the margin between adjacent + objects, in units of points (1/72 inch). + + + + + + The default value for the property for + the class. + + + + + The default value for the property. + + + + + The default value for the property. + + + + + A simple storage struct to maintain an individual sampling of data. This only + contains two data values in order to reduce to memory load for large datasets. + (e.g., no Tag or Z property) + + + + + The X value for the point, stored as a double type. + + + + + The Y value for the point, stored as a double type. + + + + + A collection class to maintain a set of samples. + + This type, intended for very + large datasets, will reduce the number of points displayed by eliminating + individual points that overlay (at the same pixel location) on the graph. + Note that this type probably does not make sense for line plots, but is intended + primarily for scatter plots. + + + John Champion + $Revision: 3.5 $ $Date: 2007-06-02 06:56:03 $ + + + + Protected field that stores a value indicating whether or not the data have been filtered. + If the data have not been filtered, then will be equal to + . Use the public property to + access this value. + + + + + Protected field that stores the number of data points after filtering (e.g., + has been called). The property + returns the total count for an unfiltered dataset, or + for a dataset that has been filtered. + + + + + Protected array of indices for all the points that are currently visible. This only + applies if is true. + + + + + Protected field that stores a value that determines how close a point must be to a prior + neighbor in order to be filtered out. Use the public property + to access this value. + + + + + Append a data point to the collection + + The value to append + + + + Append a point to the collection + + The x value of the point to append + The y value of the point to append + + + + typesafe clone method + + A new cloned NoDupePointList. This returns a copy of the structure, + but it does not duplicate the data (it just keeps a reference to the original) + + + + + default constructor + + + + + copy constructor -- this returns a copy of the structure, + but it does not duplicate the data (it just keeps a reference to the original) + + The NoDupePointList to be copied + + + + Protected method to access the internal DataPoint collection, without any + translation to a PointPair. + + The ordinal position of the DataPoint of interest + + + + Clears any filtering previously done by a call to . + After calling this method, all data points will be visible, and + will be equal to . + + + + + Go through the collection, and hide (filter out) any points that fall on the + same pixel location as a previously included point. + + + This method does not delete any points, it just temporarily hides them until + the next call to or . + You should call once your collection of points has + been constructed. You may need to call again if + you add points, or if the chart rect changes size (by resizing, printing, + image save, etc.), or if the scale range changes. + You must call before calling + this method so that the GraphPane.Chart.Rect + and the scale ranges are valid. This method is not valid for + ordinal axes (but ordinal axes don't make sense for very large datasets + anyway). + + The into which the data + will be plotted. + The class to be used in the Y direction + for plotting these data. This can be a or a + , and can be a primary or secondary axis (if multiple Y or Y2 + axes are being used). + + The class to be used in the X direction + for plotting these data. This can be an or a + . + + + + + Gets or sets a value that determines how close a point must be to a prior + neighbor in order to be filtered out. + + + A value of 0 indicates that subsequent + points must coincide exactly at the same pixel location. A value of 1 or more + indicates that number of pixels distance from a prior point that will cause + a new point to be filtered out. For example, a value of 2 means that, once + a particular pixel location is taken, any subsequent point that lies within 2 + pixels of that location will be filtered out. + + + + + Gets a value indicating whether or not the data have been filtered. If the data + have not been filtered, then will be equal to + . + + + + + Indexer: get the DataPoint instance at the specified ordinal position in the list + + + This method will throw an exception if the index is out of range. This can happen + if the index is less than the number of filtered values, or if data points are + removed from a filtered dataset with updating the filter (by calling + ). + + The ordinal position in the list of points + Returns a instance. The + and properties will be defaulted to + and null, respectively. + + + + + Gets the number of active samples in the collection. This is the number of + samples that are non-duplicates. See the property + to get the total number of samples in the list. + + + + + Gets the total number of samples in the collection. See the + property to get the number of active (non-duplicate) samples in the list. + + + + + The OrdinalScale class inherits from the class, and implements + the features specific to . + + + OrdinalScale is an ordinal axis with tic labels generated at integral values. An ordinal axis means that + all data points are evenly spaced at integral values, and the actual coordinate values + for points corresponding to that axis are ignored. That is, if the X axis is an + ordinal type, then all X values associated with the curves are ignored. + + + John Champion + $Revision: 1.8 $ $Date: 2007-04-16 00:03:02 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that defines the owner + (containing object) for this new object. + + The owner, or containing object, of this instance + + + + The Copy Constructor + + The object from which to copy + The object that will own the + new instance of + + + + Create a new clone of the current item, with a new owner assignment + + The new instance that will be + the owner of the new Scale + A new clone. + + + + Select a reasonable ordinal axis scale given a range of data values. + + + This method only applies to type axes, and it + is called by the general method. The scale range is chosen + based on increments of 1, 2, or 5 (because they are even divisors of 10). + Being an ordinal axis type, the value will always be integral. This + method honors the , , + and autorange settings. + In the event that any of the autorange settings are false, the + corresponding , , or + setting is explicitly honored, and the remaining autorange settings (if any) will + be calculated to accomodate the non-autoranged values. The basic defaults for + scale selection are defined using , + , and + from the default class. + On Exit: + is set to scale minimum (if = true) + is set to scale maximum (if = true) + is set to scale step size (if = true) + is set to scale minor step size (if = true) + is set to a magnitude multiplier according to the data + is set to the display format for the values (this controls the + number of decimal places, whether there are thousands separators, currency types, etc.) + + A reference to the object + associated with this + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Return the for this , which is + . + + + + + A collection class containing a list of objects. + + + John Champion + $Revision: 3.6 $ $Date: 2006-06-24 20:26:43 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor for the collection class. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Return the zero-based position index of the + with the specified . + + The comparison of titles is not case sensitive, but it must include + all characters including punctuation, spaces, etc. + The label that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the was not found in the list + + + + + Return the zero-based position index of the + with the specified . + + In order for this method to work, the + property must be of type . + The tag that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the string is not in the list + + + + Indexer to access the specified object by + its string. + + The string title of the + object to be accessed. + A object reference. + + + + A class representing a pie chart object comprised of one or more + s. + + Bob Kaye + $Revision: 1.32 $ $Date: 2007-07-30 05:26:23 $ + + + + Current schema value that defines the version of the serialized file + + + + + Percentage (expressed as #.##) of radius to + which this is to be displaced from the center. + Displacement is done outward along the radius + bisecting the chord of this . Maximum allowable value + is 0.5. + + + + + A which will customize the label display of this + + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field that stores the class that defines the + properties of the border around this . Use the public + property to access this value. + + + + + Private field that stores the absolute value of this instance. + Value will be set to zero if submitted value is less than zero. + + + + + An enum that specifies how each for this object + will be displayed. Use the public property to access this data. + Use enum . + + + + + The point on the arc of this representing the intersection of + the arc and the explosion radius. + + + + + The bounding rectangle for this . + + + + + The formatted string for this 's label. Formatting is + done based on the . + + + + + The point at which the line between this and its + label bends to the horizontal. + + + + + The point at the end of the line between this and + it's label (i.e. the beginning of the label display) + + + + + Private field to hold the GraphicsPath of this to be + used for 'hit testing'. + + + + + Private field which holds the angle (in degrees) at which the display of this + object will begin. + + + + + Private field which holds the length (in degrees) of the arc representing this + object. + + + + + Private field which represents the angle (in degrees) of the radius along which this + object will be displaced, if desired. + + + + + Private field which determines the number of decimal digits displayed to + in a label containing a value. + + + + + Private field which determines the number of decimal digits displayed + in a label containing a percent. + + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + The parent of this . + + true if the Z data are included, false otherwise + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Create a new , providing a gradient fill for the pie color. + + The value associated with this instance. + The starting display color for the gradient for this + instance. + The ending display color for the gradient for this + instance. + The angle for the gradient . + The amount this instance will be + displaced from the center point. + Text label for this instance. + + + + Create a new . + + The value associated with this instance. + The display color for this instance. + The amount this instance will be + displaced from the center point. + Text label for this instance. + + + + Create a new . + + The value associated with this instance. + Text label for this instance + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Do all rendering associated with this item to the specified + device. This method is normally only + called by the Draw method of the parent + collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + Not used for rendering Piesparam> + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Calculate the that will be used to define the bounding rectangle of + the Pie. + + This rectangle always lies inside of the , and it is + normally a square so that the pie itself is not oval-shaped. + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + The (normally the ) + that bounds this pie. + + + + + Recalculate the bounding rectangle when a piee slice is displaced. + + rectangle to be used for drawing exploded pie + + + + Calculate the values needed to properly display this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + maximum slice displacement + + + + Render the label for this . + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + Bounding rectangle for this . + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + This method collects all the data relative to rendering this 's label. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The rectangle used for rendering this + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + + + + + + + + Build the string that will be displayed as the slice label as determined by + . + + reference to the + + + + A method which calculates a new size for the bounding rectangle for the non-displaced + 's in the pie chart. This method is called after it is found + that at least one slice is displaced. + + The biggest displacement among the s + making up the pie chart. + The current bounding rectangle + + + + Draw a legend key entry for this at the specified location + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The struct that specifies the + location for the legend key + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine the coords for the rectangle associated with a specified point for + this + + The to which this curve belongs + The index of the point of interest + A list of coordinates that represents the "rect" for + this point (used in an html AREA tag) + true if it's a valid point, false otherwise + + + + Gets or sets the a value which determines the amount, if any, of this + displacement. + + + + + Gets a path representing this + + + + + Gets or sets the to be used + for displaying this 's label. + + + + + Gets or sets the object so as to be able to modify + its properties. + + + + + Gets or sets the object which is used to fill the + pie slice with color. + + + + + Gets or sets the arc length (in degrees) of this . + + + + + Gets or sets the starting angle (in degrees) of this . + + + + + Gets or sets the angle (in degrees) of the radius along which + this will be displaced. + + + + + Gets or sets the value of this . + Minimum value is 0. + + + + + Gets or sets the to be used in displaying + labels. + + + + + Gets or sets the number of decimal digits to be displayed in a + value label. + + + + + Gets or sets the number of decimal digits to be displayed in a + percent label. + + + + + Specify the default property values for the class. + + + + + Default displacement. + + + + + The default pen width to be used for drawing the border around the PieItem + ( property). Units are points. + + + + + The default fill mode for this PieItem ( property). + + + + + The default border mode for PieItem ( property). + true to display frame around PieItem, false otherwise + + + + + The default color for drawing frames around PieItem + ( property). + + + + + The default color for filling in the PieItem + ( property). + + + + + The default custom brush for filling in the PieItem. + ( property). + + + + + Default value for controlling display. + + + + + Default value for . + + + + + The default font size for entries + ( property). Units are + in points (1/72 inch). + + + + + Default value for the number of decimal digits + to be displayed when contains a value. + + + + + Default value for the number of decimal digits + to be displayed where contains a percent. + + + + + Simple struct that stores X and Y coordinates as doubles. + + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + The X coordinate + + + + + The Y coordinate + + + + + Construct a object from two double values. + + The X coordinate + The Y coordinate + + + + A simple point represented by an (X,Y,Z) group of double values. + + + Jerry Vos modified by John Champion + $Revision: 3.26 $ $Date: 2007-11-28 02:38:22 $ + + + + This is a base class that provides base-level functionality for a data point consisting + of an (X,Y) pair of double values. + + + This class is typically a base class for actual type implementations. + + + Jerry Vos modified by John Champion + $Revision: 1.4 $ $Date: 2007-04-16 00:03:02 $ + + + + Missing values are represented internally using . + + + + + The default format to be used for displaying point values via the + method. + + + + + Current schema value that defines the version of the serialized file + + + + + This PointPair's X coordinate + + + + + This PointPair's Y coordinate + + + + + Default Constructor + + + + + Creates a point pair with the specified X and Y. + + This pair's x coordinate. + This pair's y coordinate. + + + + Creates a point pair from the specified struct. + + The struct from which to get the + new values. + + + + The PointPairBase copy constructor. + + The basis for the copy. + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + static method to determine if the specified point value is invalid. + + The value is considered invalid if it is , + , + or . + The value to be checked for validity. + true if the value is invalid, false otherwise + + + + Implicit conversion from PointPair to PointF. Note that this conversion + can result in data loss, since the data are being cast from a type + double (64 bit) to a float (32 bit). + + The PointPair struct on which to operate + A PointF struct equivalent to the PointPair + + + + Compare two objects for equality. To be equal, X and Y + must be exactly the same between the two objects. + + The object to be compared with. + true if the objects are equal, false otherwise + + + + Return the HashCode from the base class. + + + + + + Format this PointPair value using the default format. Example: "( 12.345, -16.876 )". + The two double values are formatted with the "g" format type. + + A string representation of the PointPair + + + + Format this PointPair value using a general format string. + Example: a format string of "e2" would give "( 1.23e+001, -1.69e+001 )". + + A format string that will be used to format each of + the two double type values (see ). + A string representation of the PointPair + + + + Format this PointPair value using different general format strings for the X and Y values. + Example: a format string of "e2" would give "( 1.23e+001, -1.69e+001 )". + The Z value is not displayed (see ). + + A format string that will be used to format the X + double type value (see ). + A format string that will be used to format the Y + double type value (see ). + A string representation of the PointPair + + + + Readonly value that determines if either the X or the Y + coordinate in this PointPair is a missing value. + + true if either value is missing + + + + Readonly value that determines if either the X or the Y + coordinate in this PointPair is an invalid (not plotable) value. + It is considered invalid if it is missing (equal to System.Double.Max), + Infinity, or NaN. + + true if either value is invalid + + + + Current schema value that defines the version of the serialized file + + + + + This PointPair's Z coordinate. Also used for the lower value (dependent axis) + for and charts. + + + + + A tag object for use by the user. This can be used to store additional + information associated with the . ZedGraph never + modifies this value, but if it is a type, it + may be displayed in a + within the object. + + + Note that, if you are going to Serialize ZedGraph data, then any type + that you store in must be a serializable type (or + it will cause an exception). + + + + + Default Constructor + + + + + Creates a point pair with the specified X and Y. + + This pair's x coordinate. + This pair's y coordinate. + + + + Creates a point pair with the specified X, Y, and + label (). + + This pair's x coordinate. + This pair's y coordinate. + This pair's string label () + + + + Creates a point pair with the specified X, Y, and base value. + + This pair's x coordinate. + This pair's y coordinate. + This pair's z or lower dependent coordinate. + + + + Creates a point pair with the specified X, Y, base value, and + string label (). + + This pair's x coordinate. + This pair's y coordinate. + This pair's z or lower dependent coordinate. + This pair's string label () + + + + Creates a point pair with the specified X, Y, base value, and + (). + + This pair's x coordinate. + This pair's y coordinate. + This pair's z or lower dependent coordinate. + This pair's property + + + + Creates a point pair from the specified struct. + + The struct from which to get the + new values. + + + + The PointPair copy constructor. + + The basis for the copy. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Compare two objects for equality. To be equal, X, Y, and Z + must be exactly the same between the two objects. + + The object to be compared with. + true if the objects are equal, false otherwise + + + + Return the HashCode from the base class. + + + + + + Format this PointPair value using the default format. Example: "( 12.345, -16.876 )". + The two double values are formatted with the "g" format type. + + true to show the third "Z" or low dependent value coordinate + A string representation of the PointPair + + + + Format this PointPair value using a general format string. + Example: a format string of "e2" would give "( 1.23e+001, -1.69e+001 )". + If + is true, then the third "Z" coordinate is also shown. + + A format string that will be used to format each of + the two double type values (see ). + A string representation of the PointPair + true to show the third "Z" or low dependent value coordinate + + + + Format this PointPair value using different general format strings for the X, Y, and Z values. + Example: a format string of "e2" would give "( 1.23e+001, -1.69e+001 )". + + A format string that will be used to format the X + double type value (see ). + A format string that will be used to format the Y + double type value (see ). + A format string that will be used to format the Z + double type value (see ). + A string representation of the PointPair + + + + Readonly value that determines if either the X, Y, or Z + coordinate in this PointPair is an invalid (not plotable) value. + It is considered invalid if it is missing (equal to System.Double.Max), + Infinity, or NaN. + + true if any value is invalid + + + + The "low" value for this point (lower dependent-axis value). + This is really just an alias for . + + The lower dependent value for this . + + + + The ColorValue property is just an alias for the + property. + + + For other types, such as the , the + can be mapped to a unique value. This is used with the + option. + + + + + Compares points based on their y values. Is setup to be used in an + ascending order sort. + + + + + + Compares two s. + + Point to the left. + Point to the right. + -1, 0, or 1 depending on l.Y's relation to r.Y + + + + Compares points based on their x values. Is setup to be used in an + ascending order sort. + + + + + + Constructor for PointPairComparer. + + The axis type on which to sort. + + + + Compares two s. + + Point to the left. + Point to the right. + -1, 0, or 1 depending on l.X's relation to r.X + + + + The basic class holds three data values (X, Y, Z). This + class extends the basic PointPair to contain four data values (X, Y, Z, T). + + + John Champion + $Revision: 3.3 $ $Date: 2007-03-17 18:43:44 $ + + + + Current schema value that defines the version of the serialized file + + + + + This PointPair4's T coordinate. + + + + + Default Constructor + + + + + Creates a point pair with the specified X, Y, Z, and T value. + + This pair's x coordinate. + This pair's y coordinate. + This pair's z coordinate. + This pair's t coordinate. + + + + Creates a point pair with the specified X, Y, base value, and + label (). + + This pair's x coordinate. + This pair's y coordinate. + This pair's z coordinate. + This pair's t coordinate. + This pair's string label () + + + + The PointPair4 copy constructor. + + The basis for the copy. + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Format this PointPair4 value using the default format. Example: "( 12.345, -16.876 )". + The two double values are formatted with the "g" format type. + + true to show the third "Z" and fourth "T" value coordinates + A string representation of the PointPair4 + + + + Format this PointPair value using a general format string. + Example: a format string of "e2" would give "( 1.23e+001, -1.69e+001 )". + If + is true, then the third "Z" coordinate is also shown. + + A format string that will be used to format each of + the two double type values (see ). + A string representation of the PointPair + true to show the third "Z" or low dependent value coordinate + + + + Format this PointPair value using different general format strings for the X, Y, and Z values. + Example: a format string of "e2" would give "( 1.23e+001, -1.69e+001 )". + + A format string that will be used to format the X + double type value (see ). + A format string that will be used to format the Y + double type value (see ). + A format string that will be used to format the Z + double type value (see ). + A format string that will be used to format the T + double type value (see ). + A string representation of the PointPair + + + + Readonly value that determines if either the X, Y, Z, or T + coordinate in this PointPair4 is an invalid (not plotable) value. + It is considered invalid if it is missing (equal to System.Double.Max), + Infinity, or NaN. + + true if any value is invalid + + + + A simple instance that stores a data point (X, Y, Z). This differs from a regular + in that it maps the property + to an independent value. That is, and + are not related (as they are in the + ). + + + + + Current schema value that defines the version of the serialized file + + + + + This is a user value that can be anything. It is used to provide special + property-based coloration to the graph elements. + + + + + Creates a point pair with the specified X, Y, and base value. + + This pair's x coordinate. + This pair's y coordinate. + This pair's z or lower dependent coordinate. + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + The ColorValue property. This is used with the + option. + + + + + A collection class containing a list of objects + that define the set of points to be displayed on the curve. + + + + + Jerry Vos based on code by John Champion + modified by John Champion + $Revision: 3.37 $ $Date: 2007-06-29 15:39:07 $ + + + Private field to maintain the sort status of this + . Use the public property + to access this value. + + + + + Default constructor for the collection class + + + + + Constructor to initialize the PointPairList from two arrays of + type double. + + + + + Constructor to initialize the PointPairList from an IPointList + + + + + Constructor to initialize the PointPairList from three arrays of + type double. + + + + + The Copy Constructor + + The PointPairList from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Add a object to the collection at the end of the list. + + The object to + be added + The zero-based ordinal index where the point was added in the list. + + + + Add a object to the collection at the end of the list. + + A reference to the object to + be added + The zero-based ordinal index where the last point was added in the list, + or -1 if no points were added. + + + + Add a set of points to the PointPairList from two arrays of type double. + If either array is null, then a set of ordinal values is automatically + generated in its place (see . + If the arrays are of different size, then the larger array prevails and the + smaller array is padded with values. + + A double[] array of X values + A double[] array of Y values + The zero-based ordinal index where the last point was added in the list, + or -1 if no points were added. + + + + Add a set of points to the from three arrays of type double. + If the X or Y array is null, then a set of ordinal values is automatically + generated in its place (see . If the + is null, then it is set to zero. + If the arrays are of different size, then the larger array prevails and the + smaller array is padded with values. + + A double[] array of X values + A double[] array of Y values + A double[] array of Z or lower-dependent axis values + The zero-based ordinal index where the last point was added in the list, + or -1 if no points were added. + + + + Add a single point to the from values of type double. + + The X value + The Y value + The zero-based ordinal index where the point was added in the list. + + + + Add a single point to the from values of type double. + + The X value + The Y value + The Tag value for the PointPair + The zero-based ordinal index where the point was added in the list. + + + + Add a single point to the from values of type double. + + The X value + The Y value + The Z or lower dependent axis value + The zero-based ordinal index where the point was added + in the list. + + + + Add a single point to the from values of type double. + + The X value + The Y value + The Z or lower dependent axis value + The Tag value for the PointPair + The zero-based ordinal index where the point was added + in the list. + + + + Add a object to the collection at the specified, + zero-based, index location. + + + The zero-based ordinal index where the point is to be added in the list. + + + The object to be added. + + + + + Add a single point (from values of type double ) to the at the specified, + zero-based, index location. + + + The zero-based ordinal index where the point is to be added in the list. + + The X value + The Y value + + + + Add a single point (from values of type double ) to the at the specified, + zero-based, index location. + + + The zero-based ordinal index where the point is to be added in the list. + + The X value + The Y value + The Z or lower dependent axis value + + + + Return the zero-based position index of the + with the specified label . + + The object must be of type + for this method to find it. + The label that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the is not in the list + + + + Compare two objects to see if they are equal. + + Equality is based on equal count of items, and + each individual must be equal (as per the + method. + The to be compared with for equality. + true if the objects are equal, false otherwise. + + + + Return the HashCode from the base class. + + + + + + Sorts the list according to the point x values. Will not sort the + list if the list is already sorted. + + If the list was sorted before sort was called + + + + Sorts the list according to the point values . Will not sort the + list if the list is already sorted. + + The + used to determine whether the X or Y values will be used to sort + the list + If the list was sorted before sort was called + + + + Set the X values for this from the specified + array of double values. + + + If has more values than + this list, then the extra values will be ignored. If + has less values, then the corresponding values + will not be changed. That is, if the has 20 values + and has 15 values, then the first 15 values of the + will be changed, and the last 5 values will not be + changed. + + An array of double values that will replace the existing X + values in the . + + + + Set the Y values for this from the specified + array of double values. + + + If has more values than + this list, then the extra values will be ignored. If + has less values, then the corresponding values + will not be changed. That is, if the has 20 values + and has 15 values, then the first 15 values of the + will be changed, and the last 5 values will not be + changed. + + An array of double values that will replace the existing Y + values in the . + + + + Set the Z values for this from the specified + array of double values. + + + If has more values than + this list, then the extra values will be ignored. If + has less values, then the corresponding values + will not be changed. That is, if the has 20 values + and has 15 values, then the first 15 values of the + will be changed, and the last 5 values will not be + changed. + + An array of double values that will replace the existing Z + values in the . + + + + Add the Y values from the specified object to this + . If has more values than + this list, then the extra values will be ignored. If + has less values, the missing values are assumed to be zero. + + A reference to the object to + be summed into the this . + + + + Add the X values from the specified object to this + . If has more values than + this list, then the extra values will be ignored. If + has less values, the missing values are assumed to be zero. + + A reference to the object to + be summed into the this . + + + + Linearly interpolate the data to find an arbitraty Y value that corresponds to the specified X value. + + + This method uses linear interpolation with a binary search algorithm. It therefore + requires that the x data be monotonically increasing. Missing values are not allowed. This + method will extrapolate outside the range of the PointPairList if necessary. + + The target X value on which to interpolate + The Y value that corresponds to the value. + + + + Use Cardinal Splines to Interpolate the data to find an arbitraty Y value that corresponds to + the specified X value. + + + This method uses cardinal spline interpolation with a binary search algorithm. It therefore + requires that the x data be monotonically increasing. Missing values are not allowed. This + method will not extrapolate outside the range of the PointPairList (it returns + if extrapolation would be required). WARNING: Cardinal + spline interpolation can generate curves with non-unique X values for higher tension + settings. That is, there may be multiple X values for the same Y value. This routine + follows the path of the spline curve until it reaches the FIRST OCCURRENCE of the + target X value. It does not check to see if other solutions are possible. + + The target X value on which to interpolate + The tension setting that controls the curvature of the spline fit. + Typical values are between 0 and 1, where 0 is a linear fit, and 1 is lots of "roundness". + Values greater than 1 may give odd results. + + The Y value that corresponds to the value. + + + + Linearly interpolate the data to find an arbitraty X value that corresponds to the specified Y value. + + + This method uses linear interpolation with a binary search algorithm. It therefore + requires that the Y data be monotonically increasing. Missing values are not allowed. This + method will extrapolate outside the range of the PointPairList if necessary. + + The target Y value on which to interpolate + The X value that corresponds to the value. + + + + Use linear regression to form a least squares fit of an existing + instance. + + The output will cover the + same X range of data as the original dataset. + + An instance containing + the data to be regressed. + The number of desired points to be included + in the resultant . + + A new containing the resultant + data fit. + + + + + Use linear regression to form a least squares fit of an existing + instance. + + An instance containing + the data to be regressed. + The number of desired points to be included + in the resultant . + + The minimum X value of the resultant + . + The maximum X value of the resultant + . + A new containing the resultant + data fit. + + Brian Chappell - lazarusds + modified by John Champion + + + + true if the list is currently sorted. + + + + + + A class that represents a bordered and/or filled polygon object on + the graph. A list of objects is maintained by + the collection class. + + + John Champion + $Revision: 3.4 $ $Date: 2007-01-25 07:56:09 $ + + + + Current schema value that defines the version of the serialized file + + + + + private value that determines if the polygon will be automatically closed. + true to close the figure, false to leave it "open." Use the public property + to access this value. + + + + Constructors for the object + + A constructor that allows the position, border color, and solid fill color + of the to be pre-specified. + + An arbitrary specification + for the box border + An arbitrary specification + for the box fill (will be a solid color fill) + The array that defines + the polygon. This will be in units determined by + . + + + + + A constructor that allows the position + of the to be pre-specified. Other properties are defaulted. + + The array that defines + the polygon. This will be in units determined by + . + + + + + A default constructor that creates a from an empty + array. Other properties are defaulted. + + + + + A constructor that allows the position, border color, and two-color + gradient fill colors + of the to be pre-specified. + + An arbitrary specification + for the box border + An arbitrary specification + for the start of the box gradient fill + An arbitrary specification + for the end of the box gradient fill + The array that defines + the polygon. This will be in units determined by + . + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Render this object to the specified device. + + + This method is normally only called by the Draw method + of the parent collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine if the specified screen point lies inside the bounding box of this + . + + The screen point, in pixels + + A reference to the object that is the parent or + owner of this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + true if the point lies in the bounding box, false otherwise + + + + Gets or sets the array that defines + the polygon. This will be in units determined by + . + + + + + Gets or sets a value that determines if the polygon will be automatically closed. + true to close the figure, false to leave it "open." + + + This boolean determines whether or not the CloseFigure() method will be called + to fully close the path of the polygon. This value defaults to true, and for any + closed figure it should fine. If you want to draw a line that does not close into + a shape, then you should set this value to false. For a figure that is naturally + closed (e.g., the first point of the polygon is the same as the last point), + leaving this value set to false may result in minor pixel artifacts due to + rounding. + + + + + A class containing a set of data values to be plotted as a RadarPlot. + This class will effectively convert the data into objects + by converting the polar coordinates to rectangular coordinates + + + + + + Jerry Vos and John Champion + $Revision: 3.5 $ $Date: 2007-04-16 00:03:02 $ + + + + Default to clockwise rotation as this is the standard for radar charts + + + + + Default to 90 degree rotation so main axis is in the 12 o'clock position, + which is the standard for radar charts. + + + + + Get the raw data + + + + + + + Default Constructor + + + + + Copy Constructor + + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Add a single point to the from two values of type double. + + The radial coordinate value + The 'Z' coordinate value, which is not normally used for plotting, + but can be used for type fills + The zero-based ordinal index where the point was added in the list. + + + + Indexer to access the specified object by + its ordinal position in the list. This method does the calculations + to convert the data from polar to rectangular coordinates. + + The ordinal position (zero-based) of the + object to be accessed. + A object reference. + + + + Indicates if points should be added in clockwise or counter-clockwise order + + + + + Sets the angular rotation (starting angle) for the initial axis + + + + + gets the number of points available in the list + + + + + A class that provides a rolling list of objects. + This is essentially a + first-in-first-out (FIFO) queue with a fixed capacity which allows 'rolling' + (or oscilloscope like) graphs to be be animated without having the overhead of an + ever-growing ArrayList. + + The queue is constructed with a fixed capacity and new points can be enqueued. When the + capacity is reached the oldest (first in) PointPair is overwritten. However, when + accessing via , the objects are + seen in the order in which they were enqeued. + + RollingPointPairList supports data editing through the + interface. + + Colin Green with mods by John Champion + $Date: 2007-11-05 04:33:26 $ + + + + + Current schema value that defines the version of the serialized file + + + + + An array of PointPair objects that acts as the underlying buffer. + + + + + The index of the previously enqueued item. -1 if buffer is empty. + + + + + The index of the next item to be dequeued. -1 if buffer is empty. + + + + + Constructs an empty buffer with the specified capacity. + + Number of elements in the rolling list. This number + cannot be changed once the RollingPointPairList is constructed. + + + + Constructs an empty buffer with the specified capacity. Pre-allocates space + for all PointPair's in the list if is true. + + Number of elements in the rolling list. This number + cannot be changed once the RollingPointPairList is constructed. + true to pre-allocate all PointPair instances in + the list, false otherwise. Note that in order to be memory efficient, + the method should be used to add + data. Avoid the method. + + + + + + Constructs a buffer with a copy of the items within the provided + . + The is set to the length of the provided list. + + The to be copied. + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Clear the buffer of all objects. + Note that the remains unchanged. + + + + + Calculate that the next index in the buffer that should receive a new data point. + Note that this method actually advances the buffer, so a datapoint should be + added at _mBuffer[_headIdx]. + + The index position of the new head element + + + + Add a onto the head of the queue, + overwriting old values if the buffer is full. + + The to be added. + + + + Add an object to the head of the queue. + + A reference to the object to + be added + + + + Remove an old item from the tail of the queue. + + The removed item. Throws an + if the buffer was empty. + Check the buffer's length () or the + property to avoid exceptions. + + + + Remove the at the specified index + + + All items in the queue that lie after will + be shifted back by one, and the queue will be one item shorter. + + The ordinal position of the item to be removed. + Throws an if index is less than + zero or greater than or equal to + + + + + Remove a range of objects starting at the specified index + + + All items in the queue that lie after will + be shifted back, and the queue will be items shorter. + + The ordinal position of the item to be removed. + Throws an if index is less than + zero or greater than or equal to + + The number of items to be removed. Throws an + if is less than zero + or greater than the total available items in the queue + + + + Pop an item off the head of the queue. + + The popped item. Throws an exception if the buffer was empty. + + + + Peek at the item at the head of the queue. + + The item at the head of the queue. + Throws an if the buffer was empty. + + + + + Add a set of values onto the head of the queue, + overwriting old values if the buffer is full. + + + This method is much more efficient that the Add(PointPair) + method, since it does not require that a new PointPair instance be provided. + If the buffer already contains a at the head position, + then the x, y, z, and tag values will be copied into the existing PointPair. + Otherwise, a new PointPair instance must be created. + In this way, each PointPair position in the rolling list will only be allocated one time. + To truly be memory efficient, the , , + and methods should be avoided. Also, the property + for this method should be null, since it is a reference type. + + The X value + The Y value + The Z value + The Tag value for the PointPair + + + + Add a set of values onto the head of the queue, + overwriting old values if the buffer is full. + + + This method is much more efficient that the Add(PointPair) + method, since it does not require that a new PointPair instance be provided. + If the buffer already contains a at the head position, + then the x, y, z, and tag values will be copied into the existing PointPair. + Otherwise, a new PointPair instance must be created. + In this way, each PointPair position in the rolling list will only be allocated one time. + To truly be memory efficient, the , , + and methods should be avoided. + + The X value + The Y value + + + + Add a set of values onto the head of the queue, + overwriting old values if the buffer is full. + + + This method is much more efficient that the Add(PointPair) + method, since it does not require that a new PointPair instance be provided. + If the buffer already contains a at the head position, + then the x, y, z, and tag values will be copied into the existing PointPair. + Otherwise, a new PointPair instance must be created. + In this way, each PointPair position in the rolling list will only be allocated one time. + To truly be memory efficient, the , , + and methods should be avoided. Also, the property + for this method should be null, since it is a reference type. + + The X value + The Y value + The Tag value for the PointPair + + + + Add a set of values onto the head of the queue, + overwriting old values if the buffer is full. + + + This method is much more efficient that the Add(PointPair) + method, since it does not require that a new PointPair instance be provided. + If the buffer already contains a at the head position, + then the x, y, z, and tag values will be copied into the existing PointPair. + Otherwise, a new PointPair instance must be created. + In this way, each PointPair position in the rolling list will only be allocated one time. + To truly be memory efficient, the , , + and methods should be avoided. + + The X value + The Y value + The Z value + + + + Add a set of points to the + from two arrays of type double. + If either array is null, then a set of ordinal values is automatically + generated in its place (see ). + If the arrays are of different size, then the larger array prevails and the + smaller array is padded with values. + + A double[] array of X values + A double[] array of Y values + + + + Add a set of points to the from + three arrays of type double. + If the X or Y array is null, then a set of ordinal values is automatically + generated in its place (see . + If the value + is null, then it is set to zero. + If the arrays are of different size, then the larger array prevails and the + smaller array is padded with values. + + A double[] array of X values + A double[] array of Y values + A double[] array of Z values + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Gets the capacity of the rolling buffer. + + + + + Gets the count of items within the rolling buffer. Note that this may be less than + the capacity. + + + + + Gets a bolean that indicates if the buffer is empty. + Alternatively you can test Count==0. + + + + + Gets or sets the at the specified index in the buffer. + + + Index must be within the current size of the buffer, e.g., the set + method will not expand the buffer even if is available + + + + + An enum used to specify the X or Y data type of interest -- see + and . + + + + + The time (seconds) at which these data are measured + + + + + The distance traveled, meters + + + + + The instantaneous velocity, meters per second + + + + + The instantaneous acceleration, meters per second squared + + + + + Sample data structure containing a variety of data values, in this case the values + are related in that they correspond to the same time value. + + + + + The time (seconds) at which these data are measured + + + + + The distance traveled, meters + + + + + The instantaneous velocity, meters per second + + + + + The instantaneous acceleration, meters per second squared + + + + + Constructor that specifies each data value in the PerformanceData struct + + The time (seconds) at which these data are measured + The distance traveled, meters + The instantaneous velocity, meters per second + The instantaneous acceleration, meters per second squared + + + + Gets or sets the data value as specified by the enum + + The required data value type + + + + A sample class that holds an internal collection, and implements the + interface so that it can be used by ZedGraph as curve data. + + + This particular class efficiently implements the data storage so that the class + can be cloned without duplicating the data points. For example, you can create + a , populate it with values, and set + = and + = . + You can then clone this to a new one, and set + = . + Each of these 's can then be used as an + argument, + thereby plotting a distance vs time curve and a velocity vs time curve. There + will still be only one copy of the data in memory. + + + + + This is where the data are stored. Duplicating the + copies the reference to this , but does not actually duplicate + the data. + + + + + Determines what X data will be returned by the indexer of this list. + + + + + Determines what Y data will be returned by the indexer of this list. + + + + + Default constructor + + + + + The Copy Constructor. This method does NOT duplicate the data, it merely makes + another "Window" into the same collection. You can make multiple copies and + set the and/or properties to different + values to plot different data, while maintaining only one copy of the original values. + + The from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Adds the specified struct to the end of the collection. + + A struct to be added + The ordinal position in the collection where the values were added + + + + Remove the struct from the list at the specified + ordinal location. + + The ordinal location of the + struct to be removed + + + + Insert the specified struct into the list at + the specified ordinal location. + + The ordinal location at which to insert + The struct to be inserted + + + + Indexer to access the data. This gets the appropriate data and converts to + the struct that is compatible with ZedGraph. The + actual data returned depends on the values of and + . + + The ordinal position of the desired point in the list + A corresponding to the specified ordinal data position + + + + Gets the number of data points in the collection + + + + + enumeration used to indicate which type of data will be plotted. + + + + + Designates the "Time" property will be used + + + + + Designates the "Position" property will be used + + + + + Designates the Instantaneous Velocity property will be used + + + + + Designates the "Time since start" property will be used + + + + + Designates the Average Velocity property will be used + + + + + A simple storage class to maintain an individual sampling of data + + + + + The time of the sample + + + + + The position at sample time + + + + + The instantaneous velocity at sample time + + + + + A collection class to maintain a set of samples + + + + + Determines what data type gets plotted for the X values + + + + + Determines what data type gets plotted for the Y values + + + + + Get the specified data type from the specified sample + + The sample instance of interest + The data type to be extracted from the sample + A double value representing the requested data + + + + Append a sample to the collection + + The sample to append + The ordinal position at which the sample was added + + + + typesafe clone method + + A new cloned SamplePointList. This returns a copy of the structure, + but it does not duplicate the data (it just keeps a reference to the original) + + + + + default constructor + + + + + copy constructor -- this returns a copy of the structure, + but it does not duplicate the data (it just keeps a reference to the original) + + The SamplePointList to be copied + + + + Indexer: get the Sample instance at the specified ordinal position in the list + + The ordinal position in the list of samples + Returns a instance containing the + data specified by and + + + + + Gets the number of samples in the collection + + + + + A class that captures an scale range. + + This structure is used by the class to store + scale range settings in a collection for later retrieval. + The class stores the , , + , and properties, along with + the corresponding auto-scale settings: , + , , + and . + John Champion + $Revision: 3.2 $ $Date: 2007-02-19 08:05:24 $ + + + + The axis range data for , , + , and + + + + + The axis range data for , , + , and + + + + + The axis range data for , , + , and + + + + + The axis range data for , , + , and + + + + + The status of , + , , + and + + + + + The status of , + , , + and + + + + + The status of , + , , + and + + + + + The status of , + , , + and + + + + + The status of , + , , + and + + + + + The status of , + , , + and + + + + + The status of and + + + + + The status of and + + + + + Construct a from the specified + + The from which to collect the scale + range settings. + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Copy the properties from this out to the specified . + + The reference to which the properties should be + copied + + + + Determine if the state contained in this object is different from + the state of the specified . + + The object with which to compare states. + true if the states are different, false otherwise + + + + A collection class that maintains a list of + objects, corresponding to the list of objects + from or . + + + + + Construct a new automatically from an + existing . + + The (a list of Y axes), + from which to retrieve the state and create the + objects. + + + + Construct a new automatically from an + existing . + + The (a list of Y axes), + from which to retrieve the state and create the + objects. + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Iterate through the list of objects, comparing them + to the state of the specified + objects. + + A object specifying a list of + objects to be compared with this . + + true if a difference is found, false otherwise + + + + Iterate through the list of objects, comparing them + to the state of the specified + objects. + + A object specifying a list of + objects to be compared with this . + + true if a difference is found, false otherwise + + + + + + + + + + + + + + + + A simple struct to store minimum and maximum type + values for the scroll range + + + + + Construct a object given the specified data values. + + The minimum axis value limit for the scroll bar + The maximum axis value limit for the scroll bar + true to make this item scrollable, false otherwise + + + + Sets the scroll range to default values of zero, and sets the + property as specified. + + true to make this item scrollable, false otherwise + + + + The Copy Constructor + + The object from which to copy + + + + Gets or sets a property that determines if the corresponding to + this object can be scrolled. + + + + + The minimum axis value limit for the scroll bar. + + + + + The maximum axis value limit for the scroll bar. + + + + + A collection class containing a list of objects. + + + John Champion + $Revision: 3.3 $ $Date: 2006-06-24 20:26:43 $ + + + + Default constructor for the collection class. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Indexer to access the specified object by + its ordinal position in the list. + + The ordinal position (zero-based) of the + object to be accessed. + A object instance + + + + + + + + John Champion and JCarpenter + $Revision: 3.5 $ $Date: 2007-03-11 02:08:16 $ + + + + The type to be used for drawing "selected" + , , , + , and item types. + + + + + The type to be used for drawing "selected" + , , , + and item types. + + + + + The type to be used for drawing "selected" + and types + + + + + The type to be used for drawing "selected" + and types. + + + + + Place a in the selection list, removing all other + items. + + The that is the "owner" + of the 's. + The to be added to the list. + + + + Place a list of 's in the selection list, removing all other + items. + + The that is the "owner" + of the 's. + The list of to be added to the list. + + + + Add a to the selection list. + + The that is the "owner" + of the 's. + The to be added to the list. + + + + Add a list of 's to the selection list. + + The that is the "owner" + of the 's. + The list of 's to be added to the list. + + + + Remove the specified from the selection list. + + The that is the "owner" + of the 's. + The to be removed from the list. + + + + Clear the selection list and trigger a . + + The that "owns" the selection list. + + + + Clear the selection list and optionally trigger a . + + The that "owns" the selection list. + true to trigger a , + false otherwise. + + + + Mark the 's that are included in the selection list + by setting the property to true. + + The that "owns" the selection list. + + + + Subscribe to this event to receive notice + that the list of selected CurveItems has changed + + + + + Encapsulates a curve type that is displayed as a series of vertical "sticks", + one at each defined point. + + + The sticks run from the zero value of the Y axis, to the Y point defined in each + of the (see ). + The properties of the sticks are defined in the property. + Normally, the is not visible. However, if you manually enable the + using the property, the + symbols will be drawn at the "Z" value from each (see + ). + + + John Champion + $Revision: 1.7 $ $Date: 2007-01-25 07:56:09 $ + + + + Current schema value that defines the version of the serialized file + + + + + Gets a flag indicating if the Z data range should be included in the axis scaling calculations. + + The parent of this . + + true if the Z data are included, false otherwise + + + + Gets a flag indicating if the X axis is the independent axis for this + + The parent of this . + + true if the X axis is independent, false otherwise + + + + Create a new , specifying only the legend . + + The label that will appear in the legend. + + + + Create a new using the specified properties. + + The label that will appear in the legend. + An array of double precision values that define + the independent (X axis) values for this curve + An array of double precision values that define + the dependent (Y axis) values for this curve + A value that will be applied to + the and properties. + + The width (in points) to be used for the . This + width is scaled based on . Use a value of zero to + hide the line (see ). + + + + Create a new using the specified properties. + + The label that will appear in the legend. + An array of double precision values that define + the independent (X axis) values for this curve + An array of double precision values that define + the dependent (Y axis) values for this curve + A value that will be applied to + the and properties. + + + + + Create a new using the specified properties. + + The label that will appear in the legend. + A of double precision value pairs that define + the X and Y values for this curve + A value that will be applied to + the and properties. + + + + + Create a new using the specified properties. + + The label that will appear in the legend. + A of double precision value pairs that define + the X and Y values for this curve + A value that will be applied to + the and properties. + + The width (in points) to be used for the . This + width is scaled based on . Use a value of zero to + hide the line (see ). + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + A collection class containing a list of objects + that define the set of points to be displayed on the curve. + + + John Champion based on code by Jerry Vos + $Revision: 3.4 $ $Date: 2007-02-18 05:51:54 $ + + + + Default constructor for the collection class + + + + + The Copy Constructor + + The StockPointList from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Add a object to the collection at the end of the list. + + The object to + be added + + + + Add a object to the collection at the end of the list. + + The object to be added + + + + Add a object to the collection at the end of the list using + the specified values. The unspecified values (low, open, close) are all set to + . + + An value + The high value for the day + The zero-based ordinal index where the point was added in the list. + + + + Add a single point to the from values of type double. + + An value + The high value for the day + The low value for the day + The opening value for the day + The closing value for the day + The trading volume for the day + The zero-based ordinal index where the point was added in the list. + + + + Access the at the specified ordinal index. + + + To be compatible with the interface, the + must implement an index that returns a + rather than a . This method + will return the actual at the specified position. + + The ordinal position (zero-based) in the list + The specified . + + + + + Indexer to access the specified object by + its ordinal position in the list. + + The ordinal position (zero-based) of the + object to be accessed. + A object reference. + + + + The basic class holds three data values (X, Y, Z). This + class extends the basic PointPair to contain five data values (X, Y, Z, Open, Close). + + + The values are remapped to , , + , , and . + + + John Champion + $Revision: 3.4 $ $Date: 2007-02-07 07:46:46 $ + + + + Current schema value that defines the version of the serialized file + + + + + This opening value + + + + + This closing value + + + + + This daily trading volume + + + + + This is a user value that can be anything. It is used to provide special + property-based coloration to the graph elements. + + + + + Default Constructor + + + + + Construct a new StockPt from the specified data values + + The trading date () + The opening stock price + The closing stock price + The daily high stock price + The daily low stock price + The daily trading volume + + + + Construct a new StockPt from the specified data values including a Tag property + + The trading date () + The opening stock price + The closing stock price + The daily high stock price + The daily low stock price + The daily trading volume + The user-defined property. + + + + The StockPt copy constructor. + + The basis for the copy. + + + + The StockPt copy constructor. + + The basis for the copy. + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Format this StockPt value using the default format. Example: "( 12.345, -16.876 )". + The two double values are formatted with the "g" format type. + + true to show all the value coordinates + A string representation of the . + + + + Format this PointPair value using a general format string. + Example: a format string of "e2" would give "( 1.23e+001, -1.69e+001 )". + If + is true, then the third all coordinates are shown. + + A format string that will be used to format each of + the two double type values (see ). + A string representation of the PointPair + true to show all the value coordinates + + + + Map the Date property to the X value + + + + + Map the high property to the Y value + + + + + Map the low property to the Z value + + + + + The ColorValue property. This is used with the + option. + + + + + Readonly value that determines if either the Date, Close, Open, High, or Low + coordinate in this StockPt is an invalid (not plotable) value. + It is considered invalid if it is missing (equal to System.Double.Max), + Infinity, or NaN. + + true if any value is invalid + + + + This class handles the drawing of the curve objects. + The symbols are the small shapes that appear over each defined point + along the curve. + + + John Champion + $Revision: 3.37 $ $Date: 2007-09-19 06:41:56 $ + + + + Current schema value that defines the version of the serialized file + + + + + Private field that stores the size of this + in points (1/72 inch). Use the public + property to access this value. + + + + + Private field that stores the for this + . Use the public + property to access this value. + + + + + private field that determines if the symbols are drawn using + Anti-Aliasing capabilities from the class. + Use the public property to access + this value. + + + + + Private field that stores the visibility of this + . Use the public + property to access this value. If this value is + false, the symbols will not be shown (but the may + still be shown). + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field that stores the data for this + . Use the public property to + access this value. + + + + + Private field that stores the user defined data for this + . Use the public property to + access this value. + + + + + Default constructor that sets all properties to default + values as defined in the class. + + + + + Default constructor that sets the and + as specified, and the remaining + properties to default + values as defined in the class. + + A enum value + indicating the shape of the symbol + A value indicating + the color of the symbol + + + + + The Copy Constructor + + The Symbol object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Draw the to the specified device + at the specified location. This routine draws a single symbol. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + The x position of the center of the symbol in + pixel units + The y position of the center of the symbol in + pixel units + A previously constructed by + for this symbol + A class representing the standard pen for this symbol + A class representing a default solid brush for this symbol + If this symbol uses a , it will be created on the fly for + each point, since it has to be scaled to the individual point coordinates. + + + + Draw the to the specified device + at the specified location. This routine draws a single symbol. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + The x position of the center of the symbol in + pixel units + The y position of the center of the symbol in + pixel units + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + + The data value to be used for a value-based + color gradient. This is only applicable for , + or . + Indicates that the should be drawn + with attributes from the class. + + + + + Create a struct for the current symbol based on the + specified scaleFactor and assuming the symbol will be centered at position 0,0. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor for the features of the graph based on the . This + scaling factor is calculated by the method. The scale factor + represents a linear multiple to be applied to font sizes, symbol sizes, etc. + Returns the for the current symbol + + + + Draw this to the specified + device as a symbol at each defined point. The routine + only draws the symbols; the lines are draw by the + method. This method + is normally only called by the Draw method of the + object + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + A representing this + curve. + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + Indicates that the should be drawn + with attributes from the class. + + + + + Gets or sets the size of the + + Size in points (1/72 inch) + + + + + Gets or sets the type (shape) of the + + A enum value indicating the shape + + + + + Gets or sets a value that determines if the symbols are drawn using + Anti-Aliasing capabilities from the class. + + + If this value is set to true, then the + property will be set to only while + this is drawn. A value of false will leave the value of + unchanged. + + + + + Gets or sets a property that shows or hides the . + + true to show the symbol, false to hide it + + + + + Gets or sets the data for this + . + + + + + Gets or sets the data for this + , which controls the border outline of the symbol. + + + + + Gets or sets the data for this + , describing the user-defined symbol type. + + + This value only applies if Symbol.Type + is SymbolType.UserDefined + + + + + A simple struct that defines the + default property values for the class. + + + + + The default size for curve symbols ( property), + in units of points. + + + + + The default pen width to be used for drawing curve symbols + ( property). Units are points. + + + + + The default color for filling in this + ( property). + + + + + The default custom brush for filling in this + ( property). + + + + + The default fill mode for the curve ( property). + + + + + The default symbol type for curves ( property). + This is defined as a enumeration. + + + + + The default value for the + property. + + + + + The default display mode for symbols ( property). + true to display symbols, false to hide them. + + + + + The default for drawing frames around symbols ( property). + true to display symbol frames, false to hide them. + + + + + The default color for drawing symbols ( property). + + + + + A class that represents a text object on the graph. A list of + objects is maintained by the + collection class. + + + John Champion + $Revision: 3.4 $ $Date: 2007-01-25 07:56:09 $ + + + + Current schema value that defines the version of the serialized file + + + + Private field to store the actual text string for this + . Use the public property + to access this value. + + + + + Private field to store the class used to render + this . Use the public property + to access this class. + + + + + Private field holding the SizeF into which this + should be rendered. Use the public property + to access this value. + + + + + Constructor that sets all properties to default + values as defined in the class. + + The text to be displayed. + The x position of the text. The units + of this position are specified by the + property. The text will be + aligned to this position based on the + property. + The y position of the text. The units + of this position are specified by the + property. The text will be + aligned to this position based on the + property. + + + + Constructor that sets all properties to default + values as defined in the class. + + The text to be displayed. + The x position of the text. The units + of this position are specified by the + property. The text will be + aligned to this position based on the + property. + The y position of the text. The units + of this position are specified by the + property. The text will be + aligned to this position based on the + property. + The enum value that + indicates what type of coordinate system the x and y parameters are + referenced to. + + + + Constructor that sets all properties to default + values as defined in the class. + + The text to be displayed. + The x position of the text. The units + of this position are specified by the + property. The text will be + aligned to this position based on the + property. + The y position of the text. The units + of this position are specified by the + property. The text will be + aligned to this position based on the + property. + The enum value that + indicates what type of coordinate system the x and y parameters are + referenced to. + The enum that specifies + the horizontal alignment of the object with respect to the (x,y) location + The enum that specifies + the vertical alignment of the object with respect to the (x,y) location + + + + Parameterless constructor that initializes a new . + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Render this object to the specified device + This method is normally only called by the Draw method + of the parent collection object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determine if the specified screen point lies inside the bounding box of this + . This method takes into account rotation and alignment + parameters of the text, as specified in the . + + The screen point, in pixels + + A reference to the object that is the parent or + owner of this object. + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + true if the point lies in the bounding box, false otherwise + + + + Determines the shape type and Coords values for this GraphObj + + + + + + + + + + The to be displayed. This text can be multi-line by + including newline ('\n') characters between the lines. + + + + + Gets a reference to the class used to render + this + + + + + + + + + + + A simple struct that defines the + default property values for the class. + + + + + The default font family for the text + ( property). + + + + + The default font size for the text + ( property). Units are + in points (1/72 inch). + + + + + The default font color for the text + ( property). + + + + + The default font bold mode for the text + ( property). true + for a bold typeface, false otherwise. + + + + + The default font underline mode for the text + ( property). true + for an underlined typeface, false otherwise. + + + + + The default font italic mode for the text + ( property). true + for an italic typeface, false otherwise. + + + + + The TextScale class inherits from the class, and implements + the features specific to . + + + TextScale is an ordinal axis with user-defined text labels. An ordinal axis means that + all data points are evenly spaced at integral values, and the actual coordinate values + for points corresponding to that axis are ignored. That is, if the X axis is an + ordinal type, then all X values associated with the curves are ignored. + + + John Champion + $Revision: 1.8 $ $Date: 2006-08-25 05:19:09 $ + + + + Current schema value that defines the version of the serialized file + + + + + The Copy Constructor + + The object from which to copy + The object that will own the + new instance of + + + + Create a new clone of the current item, with a new owner assignment + + The new instance that will be + the owner of the new Scale + A new clone. + + + + Internal routine to determine the ordinals of the first minor tic mark + + + The value of the first major tic for the axis. + + + The ordinal position of the first minor tic, relative to the first major tic. + This value can be negative (e.g., -3 means the first minor tic is 3 minor step + increments before the first major tic. + + + + + Determine the value for the first major tic. + + + This is done by finding the first possible value that is an integral multiple of + the step size, taking into account the date/time units if appropriate. + This method properly accounts for , , + and other axis format settings. + + + First major tic value (floating point double). + + + + + Internal routine to determine the ordinals of the first and last major axis label. + + + This is the total number of major tics for this axis. + + + + + Select a reasonable text axis scale given a range of data values. + + + This method only applies to type axes, and it + is called by the general method. This is an ordinal + type, such that the labeled values start at 1.0 and increment by 1.0 for + each successive label. The maximum number of labels on the graph is + determined by . If necessary, this method will + set the value to greater than 1.0 in order to keep the total + labels displayed below . For example, a + size of 2.0 would only display every other label on the + axis. The value calculated by this routine is always + an integral value. This + method honors the , , + and autorange settings. + In the event that any of the autorange settings are false, the + corresponding , , or + setting is explicitly honored, and the remaining autorange settings (if any) will + be calculated to accomodate the non-autoranged values. + On Exit: + is set to scale minimum (if = true) + is set to scale maximum (if = true) + is set to scale step size (if = true) + is set to scale minor step size (if = true) + is set to a magnitude multiplier according to the data + is set to the display format for the values (this controls the + number of decimal places, whether there are thousands separators, currency types, etc.) + + A reference to the object + associated with this + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + + + Make a value label for an . + + + A reference to the object that is the parent or + owner of this object. + + + The zero-based, ordinal index of the label to be generated. For example, a value of 2 would + cause the third value label on the axis to be generated. + + + The numeric value associated with the label. This value is ignored for log () + and text () type axes. + + The resulting value label as a + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Enumeration type for the various axis types that are available + + + + + An ordinary, cartesian axis + + + A base 10 log axis + + + A cartesian axis with calendar dates or times + + + An ordinal axis with user-defined text labels. An ordinal axis means that + all data points are evenly spaced at integral values, and the actual coordinate values + for points corresponding to that axis are ignored. That is, if the X axis is an + ordinal type, then all X values associated with the curves are ignored. + + + + + + An ordinal axis with regular numeric labels. An ordinal axis means that + all data points are evenly spaced at integral values, and the actual coordinate values + for points corresponding to that axis are ignored. That is, if the X axis is an + ordinal type, then all X values associated with the curves are ignored. + + + + + An ordinal axis that will have labels formatted with ordinal values corresponding + to the number of values in each . + + + The data points will be evenly-spaced at ordinal locations, and the + actual data values are ignored. + + + + + An ordinal axis that will have labels formatted with values from the actual data + values of the first in the . + + + Although the tics are labeled with real data values, the actual points will be + evenly-spaced in spite of the data values. For example, if the X values of the first curve + are 1, 5, and 100, then the tic labels will show 1, 5, and 100, but they will be equal + distance from each other. + + + + + An exponential axis + + + + Enumeration type for the various types of fills that can be used with + charts. + + + + No fill + + + A solid fill using + + + A custom fill using either or + + + + + Fill with a single solid color based on the X value of the data. + The X value is + used to determine the color value based on a gradient brush, and using a data range + of and . You can create a multicolor + range by initializing the class with your own custom + object based on a . In cases where a + data value makes no sense (, , + etc.), a default value of 50% of the range is assumed. The default range is 0 to 1. + + + + + + + + Fill with a single solid color based on the Z value of the data. + The Z value is + used to determine the color value based on a gradient brush, and using a data range + of and . You can create a multicolor + range by initializing the class with your own custom + object based on a . In cases where a + data value makes no sense (, , + etc.), a default value of 50% of the range is assumed. The default range is 0 to 1. + + + + + + + + Fill with a single solid color based on the Z value of the data. + The Z value is + used to determine the color value based on a gradient brush, and using a data range + of and . You can create a multicolor + range by initializing the class with your own custom + object based on a . In cases where a + data value makes no sense (, , + etc.), a default value of 50% of the range is assumed. The default range is 0 to 1. + + + + + + + + Fill with a single solid color based on the "ColorValue" property of the data. + The "ColorValue" property is + used to determine the color value based on a gradient brush, and using a data range + of and . You can create a multicolor + range by initializing the class with your own custom + object based on a . In cases where a + data value makes no sense (, , + etc.), a default value of 50% of the range is assumed. The default range is 0 to 1. + + + + + + + + Enumeration type for the various axis date and time unit types that are available + + + + Yearly units and + + + + Monthly units and + + + + Daily units and + + + + Hourly units and + + + + Minute units and + + + + Second units and + + + + Millisecond units and + + + + + Enumeration type for the various symbol shapes that are available + + + + + Square-shaped + + + Rhombus-shaped + + + Equilateral triangle + + + Uniform circle + + + "X" shaped . This symbol cannot + be filled since it has no outline. + + + "+" shaped . This symbol cannot + be filled since it has no outline. + + + Asterisk-shaped . This symbol + cannot be filled since it has no outline. + + + Unilateral triangle , pointing + down. + + + + Horizontal dash . This symbol cannot be + filled since it has no outline. + + + + + Vertical dash . This symbol cannot be + filled since it has no outline. + + + + A symbol defined by the propery. + If no symbol is defined, the . symbol will + be used. + + + + A Default symbol type (the symbol type will be obtained + from . + + + No symbol is shown (this is equivalent to using + = false. + + + + Enumeration type that defines the possible legend locations + + + + + + Locate the above the + + + + + Locate the on the left side of the + + + + + Locate the on the right side of the + + + + + Locate the below the + + + + + Locate the inside the in the + top-left corner. + + + + + Locate the inside the in the + top-right corner. + + + + + Locate the inside the in the + bottom-left corner. + + + + + Locate the inside the in the + bottom-right corner. + + + + + Locate the as a floating object above the graph at the + location specified by . + + + + + Locate the centered above the + + + + + Locate the centered below the + + + + + Locate the above the , but flush + against the left margin of the . + + + + + Locate the below the , but flush + against the left margin of the . + + + + + Enumeration type for the different horizontal text alignment options + + + + + + Position the text so that its left edge is aligned with the + specified X,Y location. Used by the + method. + + + + + Position the text so that its center is aligned (horizontally) with the + specified X,Y location. Used by the + method. + + + + + Position the text so that its right edge is aligned with the + specified X,Y location. Used by the + method. + + + + + Enumeration type for the different proximal alignment options + + + + + + + Position the text so that its "inside" edge (the edge that is + nearest to the alignment reference point or object) is aligned. + Used by the method to align text + to the axis. + + + + + Position the text so that its center is aligned with the + reference object or point. + Used by the method to align text + to the axis. + + + + + Position the text so that its right edge (the edge that is + farthest from the alignment reference point or object) is aligned. + Used by the method to align text + to the axis. + + + + + Enumeration type for the different vertical text alignment options + + specified X,Y location. Used by the + method. + + + + Position the text so that its top edge is aligned with the + specified X,Y location. Used by the + method. + + + + + Position the text so that its center is aligned (vertically) with the + specified X,Y location. Used by the + method. + + + + + Position the text so that its bottom edge is aligned with the + specified X,Y location. Used by the + method. + + + + + Enumeration type for the user-defined coordinate types available. + These coordinate types are used the objects + and objects only. + + + + + + Coordinates are specified as a fraction of the + . That is, for the X coordinate, 0.0 + is at the left edge of the ChartRect and 1.0 + is at the right edge of the ChartRect. A value less + than zero is left of the ChartRect and a value + greater than 1.0 is right of the ChartRect. For the Y coordinate, 0.0 + is the top and 1.0 is the bottom. + + + + + Coordinates are specified as a fraction of the + . That is, for the X coordinate, 0.0 + is at the left edge of the Rect and 1.0 + is at the right edge of the Rect. A value less + than zero is left of the Rect and a value + greater than 1.0 is right of the Rect. For the Y coordinate, 0.0 + is the top and 1.0 is the bottom. Note that + any value less than zero or greater than 1.0 will be outside + the Rect, and therefore clipped. + + + + + Coordinates are specified according to the user axis scales + for the and . + + + + + Coordinates are specified according to the user axis scales + for the and . + + + + + The X coordinate is specified as a fraction of the , + and the Y coordinate is specified as a fraction of the . + + + For the X coordinate, 0.0 + is at the left edge of the ChartRect and 1.0 + is at the right edge of the ChartRect. A value less + than zero is left of the ChartRect and a value + greater than 1.0 is right of the ChartRect. For the Y coordinate, a value of zero is at + the left side of the pane, and a value of 1.0 is at the right side of the pane. + + + + + The X coordinate is specified as a fraction of the , + and the Y coordinate is specified as a fraction of the . + + + For the X coordinate, a value of zero is at + the left side of the pane, and a value of 1.0 is at the right side of the pane. + For the Y coordinate, 0.0 + is at the top edge of the ChartRect and 1.0 + is at the bottom edge of the ChartRect. A value less + than zero is above the ChartRect and a value + greater than 1.0 is below the ChartRect. + + + + + The X coordinate is specified as an X Scale value, and the Y coordinate + is specified as a fraction of the . + + + For the X coordinate, the value just corresponds to the values of the X scale. + Values outside the scale range will be + outside the . For the Y coordinate, 0.0 + is at the top edge of the ChartRect and 1.0 + is at the bottom edge of the ChartRect. A value less + than zero is above the ChartRect and a value + greater than 1.0 is below the ChartRect. + + + + + The X coordinate is specified as a fraction of the + and the Y coordinate is specified as + a Y scale value. + + + For the X coordinate, 0.0 + is at the left edge of the ChartRect and 1.0 + is at the right edge of the ChartRect. A value less + than zero is left of the ChartRect and a value + greater than 1.0 is right of the ChartRect. For the Y coordinate, the value just + corresponds to the values of the Y scale. Values outside the scale range will be + outside the . + + + + + The X coordinate is specified as a fraction of the + and the Y coordinate is specified as + a Y2 scale value. + + + For the X coordinate, 0.0 + is at the left edge of the ChartRect and 1.0 + is at the right edge of the ChartRect. A value less + than zero is left of the ChartRect and a value + greater than 1.0 is right of the ChartRect. For the Y coordinate, the value just + corresponds to the values of the Y2 scale. Values outside the scale range will be + outside the . + + + + + Enumeration type that defines how a curve is drawn. Curves can be drawn + as ordinary lines by connecting the points directly, or in a stair-step + fashion as a series of discrete, constant values. In a stair step plot, + all lines segments are either horizontal or vertical. In a non-step (line) + plot, the lines can be any angle. + + + + + + Draw the as a stair-step in which each + point defines the + beginning (left side) of a new stair. This implies the points are + defined at the beginning of an "event." + + + + + Draw the as a stair-step in which each + point defines the end (right side) of a new stair. This implies + the points are defined at the end of an "event." + + + + + Draw the as an ordinary line, in which the + points are connected directly by line segments. + + + + + Draw the as a segment in which each point defines the + beginning (left side) of a new "stair." This implies the points are defined + at the beginning of an "event." Note that ForwardSegment is different + from ForwardStep in that it does not draw the vertical portion of the step. + + + + + Draw the as a segment in which each point defines the + end (right side) of a new "stair." This implies the points are defined + at the end of an "event." Note that RearwardSegment is different + from RearwardStep in that it does not draw the vertical portion of the step. + + + + + Enumeration type that defines the base axis from which graphs + are displayed. The bars can be drawn on any of the four axes (, + , , and ). + + + + + + Draw the chart based from the . + + + + + Draw the chart based from the . + + + + + Draw the chart based from the . + + + + + Draw the chart based from the . + + + + + Enumeration type that defines the available types of graphs. + + + + + + Draw the lines as normal. Any fill area goes from each line down to the X Axis. + + + + + Draw the lines stacked on top of each other, accumulating values to a total value. + + + + + Enumeration type that defines the available types of graphs. + + + + + + Draw each side by side in clusters. + + + + + Draw the bars one on top of the other. The bars will + be drawn such that the last bar in the will be behind + all other bars. Note that the bar values are not summed up for the overlay + mode. The data values must be summed before being passed + to . + For example, if the first bar of + the first has a value of 100, and the first bar of + the second has a value of 120, then that bar will + appear to be 20 units on top of the first bar. + + + + + Draw the bars one on top of the other. The bars will + be drawn such that the bars are sorted according to the maximum value, with + the tallest bar at each point at the back and the shortest bar at the front. + This is similar to the mode, but the bars are sorted at + each base value. + The data values must be summed before being passed + to . For example, if the first bar of + the first has a value of 100, and the first bar of + the second has a value of 120, then that bar will + appear to be 20 units on top of the first bar. + + + + + Draw the bars in an additive format so that they stack on + top of one another. The value of the last bar drawn will be the sum of the values + of all prior bars. + + + + + Draw the bars in a format whereby the height of each + represents the percentage of the total each one represents. Negative values + are displayed below the zero line as percentages of the absolute total of all values. + + + + + Enumeration type that defines which set of data points - X or Y - is used + to perform the sort. + + + + + Use the Y values to sort the list. + + + + + Use the X values to sort the list. + + + + + Enumeration that specifies a Z-Order position for + objects. + + This enumeration allows you to set the layering of various graph + features. Except for the objects, other feature types + all have a fixed depth as follows (front to back): + + objects + The border around + objects + The features + The background fill of the + The pane + The background fill of the + + You cannot place anything behind the + background fill, but allows you to + explicitly control the depth of objects + between all other object types. For items of equal , + such as multiple 's or 's + having the same value, the relative depth is + controlled by the ordinal position in the list (either + or ). + objects + can be placed in the of either a + or a . For a + -based , all + values are applicable. For a -based + , any value can be used, but there + are really only three depths: + will place the item behind the pane title, + will place on top of all other graph features, + any other value places the object above the pane title, but behind the 's. + + + + + + Specifies that the will be behind all other + objects (including the ). + + + + + Specifies that the will be behind the + background + (see ). + + + + + Specifies that the will be behind the grid lines. + + + + + Specifies that the will be behind the + objects. + + + + + Specifies that the will be behind the + objects. + + + + + Specifies that the will be behind the + border. + + + + + Specifies that the will be behind the + object. + + + + + Specifies that the will be in front of + all other objects, except for the other + objects that have the same and are before + this object in the . + + + + + Enumeration that determines the type of label that is displayed for each pie slice + (see ). + + + + + Displays and for + a slice in a Pie Chart. + + + + + Displays and (as % of total) for + a slice in a Pie Chart. + + + + + Displays a containing the both + as an absolute number and as percentage of the total. + + + + + Displays for + a slice in a Pie Chart. + + + + + Displays (as % of total) for + a slice in a Pie Chart. + + + + + Displays for a slice in a Pie Chart. + + + + + No label displayed. + + + + + Define the auto layout options for the + method. + + + + + Layout the 's so they are in a square grid (always 2x2, 3x3, 4x4), + leaving blank spaces as required. + + For example, a single pane would generate a 1x1 grid, between 2 and 4 panes would generate + a 2x2 grid, 5 to 9 panes would generate a 3x3 grid. + + + + Layout the 's so they are in a general square (2x2, 3x3, etc.), but use extra + columns when necessary (row x column = 1x2, 2x3, 3x4, etc.) depending on the total number + of panes required. + + For example, a 2x2 grid has four panes and a 3x3 grid has 9 panes. If there are + 6 panes required, then this option will eliminate a row (column preferred) to make a + 2 row x 3 column grid. With 7 panes, it will make a 3x3 grid with 2 empty spaces. + + + + Layout the 's so they are in a general square (2x2, 3x3, etc.), but use extra + rows when necessary (2x1, 3x2, 4x3, etc.) depending on the total number of panes required. + + For example, a 2x2 grid has four panes and a 3x3 grid has 9 panes. If there are + 6 panes required, then this option will eliminate a column (row preferred) to make a + 3 row x 2 column grid. With 7 panes, it will make a 3x3 grid with 2 empty spaces. + + + + Layout the 's in a single row + + + + + Layout the 's in a single column + + + + + Layout the 's with an explicit number of columns: The first row has + 1 column and the second row has 2 columns for a total of 3 panes. + + + + + Layout the 's with an explicit number of columns: The first row has + 2 columns and the second row has 1 column for a total of 3 panes. + + + + + Layout the 's with an explicit number of columns: The first row has + 2 columns and the second row has 3 columns for a total of 5 panes. + + + + + Layout the 's with an explicit number of columns: The first row has + 3 columns and the second row has 2 columns for a total of 5 panes. + + + + + Layout the 's with an explicit number of rows: The first column has + 1 row and the second column has 2 rows for a total of 3 panes. + + + + + Layout the 's with an explicit number of rows: The first column has + 2 rows and the second column has 1 row for a total of 3 panes. + + + + + Layout the 's with an explicit number of rows: The first column has + 2 rows and the second column has 3 rows for a total of 5 panes. + + + + + Layout the 's with an explicit number of rows: The first column has + 3 rows and the second column has 2 rows for a total of 5 panes. + + + + + Enum for specifying the type of data to be returned by the ZedGraphWeb Render() method. + + + + + Renders as an IMG tag referencing a local generated image. ContentType stays text. + + + + + Renders the binary image. ContentType is changed accordingly. + + + + + A class designed to simplify the process of getting the actual value for + the various stacked and regular curve types + + + John Champion + $Revision: 3.21 $ $Date: 2008-12-02 12:55:34 $ + + + + Basic constructor that saves a reference to the parent + object. + + The parent object. + A flag to indicate whether or + not the drawing variables should be initialized. Initialization is not + required if this is part of a ZedGraph internal draw operation (i.e., its in + the middle of a call to ). Otherwise, you should + initialize to make sure the drawing variables are configured. true to do + an initialization, false otherwise. + + + + Get the user scale values associate with a particular point of a + particular curve. + The main purpose of this method is to handle + stacked bars, in which case the stacked values are returned rather + than the individual data values. + + A object of interest. + The zero-based point index for the point of interest. + A value representing the value + for the independent axis. + A value representing the lower + value for the dependent axis. + A value representing the upper + value for the dependent axis. + true if the data point is value, false for + , invalid, etc. data. + + + + Get the user scale values associate with a particular point of a + particular curve. + The main purpose of this method is to handle + stacked bars and lines, in which case the stacked values are returned rather + than the individual data values. However, this method works generically for any + curve type. + + The parent object. + A object of interest. + The zero-based point index for the point of interest. + A value representing the value + for the independent axis. + A value representing the lower + value for the dependent axis. + A value representing the upper + value for the dependent axis. + true if the data point is value, false for + , invalid, etc. data. + + + + Calculate the user scale position of the center of the specified bar, using the + as specified by . This method is + used primarily by the + method in order to + determine the bar "location," which is defined as the center of the top of the individual bar. + + The representing the + bar of interest. + The width of each individual bar. This can be calculated using + the method. + The cluster number for the bar of interest. This is the ordinal + position of the current point. That is, if a particular has + 10 points, then a value of 3 would indicate the 4th point in the data array. + The actual independent axis value for the bar of interest. + The ordinal position of the of interest. + That is, the first bar series is 0, the second is 1, etc. Note that this applies only + to the bars. If a graph includes both bars and lines, then count only the bars. + A user scale value position of the center of the bar of interest. + + + + inherits from , and defines the + special characteristics of a horizontal axis, specifically located at + the top of the of the + object + + + John Champion + $Revision: 3.1 $ $Date: 2007-04-16 00:03:07 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that sets all properties to + default values as defined in the class + + + + + Default constructor that sets all properties to + default values as defined in the class, except + for the axis title + + The for this axis + + + + The Copy Constructor + + The X2Axis object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Setup the Transform Matrix to handle drawing of this + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determines if this object is a "primary" one. + + + The primary axes are the (always), + the (always), the first + in the + ( = 0), and the first + in the + ( = 0). Note that + and + always reference the primary axes. + + + A reference to the object that is the parent or + owner of this object. + + true for a primary (for the , + this is always true), false otherwise + + + + Calculate the "shift" size, in pixels, in order to shift the axis from its default + location to the value specified by . + + + A reference to the object that is the parent or + owner of this object. + + The shift amount measured in pixels + + + + Gets the "Cross" axis that corresponds to this axis. + + + The cross axis is the axis which determines the of this Axis when the + Axis.Cross property is used. The + cross axis for any or + is always the primary , and + the cross axis for any or is + always the primary . + + + A reference to the object that is the parent or + owner of this object. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default display mode for the + ( property). true to display the scale + values, title, tic marks, false to hide the axis entirely. + + + + + Determines if a line will be drawn at the zero value for the + , that is, a line that + divides the negative values from positive values. + . + + + + + inherits from , and defines the + special characteristics of a horizontal axis, specifically located at + the bottom of the of the + object + + + John Champion + $Revision: 3.16 $ $Date: 2007-04-16 00:03:02 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that sets all properties to + default values as defined in the class + + + + + Default constructor that sets all properties to + default values as defined in the class, except + for the axis title + + The for this axis + + + + The Copy Constructor + + The XAxis object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Setup the Transform Matrix to handle drawing of this + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determines if this object is a "primary" one. + + + The primary axes are the (always), the first + in the + ( = 0), and the first + in the + ( = 0). Note that + and + always reference the primary axes. + + + A reference to the object that is the parent or + owner of this object. + + true for a primary (for the , + this is always true), false otherwise + + + + Calculate the "shift" size, in pixels, in order to shift the axis from its default + location to the value specified by . + + + A reference to the object that is the parent or + owner of this object. + + The shift amount measured in pixels + + + + Gets the "Cross" axis that corresponds to this axis. + + + The cross axis is the axis which determines the of this Axis when the + Axis.Cross property is used. The + cross axis for any or + is always the primary , and + the cross axis for any or is + always the primary . + + + A reference to the object that is the parent or + owner of this object. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default display mode for the + ( property). true to display the scale + values, title, tic marks, false to hide the axis entirely. + + + + + Determines if a line will be drawn at the zero value for the + , that is, a line that + divides the negative values from positive values. + . + + + + + This struct encapsulates a date and time value, and handles associated + calculations and conversions between various formats. + + + This format stored as a double value representing days since a reference date + (XL date 0.0 is December 30, 1899 at 00:00 hrs). + Negative values are permissible, and the + range of valid dates is from noon on January 1st, 4713 B.C. forward. Internally, the + date calculations are done using Astronomical Julian Day numbers. The Astronomical Julian + Day number is defined as the number of days since noon on January 1st, 4713 B.C. + (also referred to as 12:00 on January 1, -4712). + NOTE: MS Excel actually has an error in the Serial Date calculations because it + errantly assumes 1900 is a leap year. The XDate calculations do not have this same + error. Therefore, XDate and Excel Date Serial values are 1 day different up until + the date value of 60 (in Excel, this is February 29th, 1900, and in XDate, this is + February 28th, 1900). At a value of 61 (March 1st, 1900) or greater, they agree with + eachother. + + John Champion + $Revision: 3.23 $ $Date: 2007-11-11 06:56:34 $ + + + + The Astronomical Julian Day number that corresponds to XL Date 0.0 + + + + + The minimum valid Julian Day, which corresponds to January 1st, 4713 B.C. + + + + + The maximum valid Julian Day, which corresponds to December 31st, 9999 A.D. + + + + + The minimum valid Excel Day, which corresponds to January 1st, 4713 B.C. + + + + + The maximum valid Excel Day, which corresponds to December 31st, 9999 A.D. + + + + + The number of months in a year + + + + + The number of hours in a day + + + + + The number of minutes in an hour + + + + + The number of seconds in a minute + + + + + The number of minutes in a day + + + + + The number of seconds in a day + + + + + The number of milliseconds in a second + + + + + The number of milliseconds in a day + + + + + The default format string to be used in when + no format is provided + + + + + The actual date value in MS Excel format. This is the only data field in + the struct. + + + + + Construct a date class from an XL date value. + + + An XL Date value in floating point double format + + + + + Construct a date class from a struct. + + + A struct containing the initial date information. + + + + + Construct a date class from a calendar date (year, month, day). Assumes the time + of day is 00:00 hrs + + An integer value for the year, e.g., 1995. + An integer value for the day of the month, e.g., 23. + It is permissible to have day numbers outside of the 1-31 range, + which will rollover to the previous or next month and year. + An integer value for the month of the year, e.g., + 8 for August. It is permissible to have months outside of the 1-12 range, + which will rollover to the previous or next year. + + + + Construct a date class from a calendar date and time (year, month, day, hour, minute, + second). + + An integer value for the year, e.g., 1995. + An integer value for the day of the month, e.g., 23. + It is permissible to have day numbers outside of the 1-31 range, + which will rollover to the previous or next month and year. + An integer value for the month of the year, e.g., + 8 for August. It is permissible to have months outside of the 1-12 range, + which will rollover to the previous or next year. + An integer value for the hour of the day, e.g. 15. + It is permissible to have hour values outside the 0-23 range, which + will rollover to the previous or next day. + An integer value for the minute, e.g. 45. + It is permissible to have hour values outside the 0-59 range, which + will rollover to the previous or next hour. + An integer value for the second, e.g. 35. + It is permissible to have second values outside the 0-59 range, which + will rollover to the previous or next minute. + + + + Construct a date class from a calendar date and time (year, month, day, hour, minute, + second), where seconds is a value (allowing fractional seconds). + + An integer value for the year, e.g., 1995. + An integer value for the day of the month, e.g., 23. + It is permissible to have day numbers outside of the 1-31 range, + which will rollover to the previous or next month and year. + An integer value for the month of the year, e.g., + 8 for August. It is permissible to have months outside of the 1-12 range, + which will rollover to the previous or next year. + An integer value for the hour of the day, e.g. 15. + It is permissible to have hour values outside the 0-23 range, which + will rollover to the previous or next day. + An integer value for the minute, e.g. 45. + It is permissible to have hour values outside the 0-59 range, which + will rollover to the previous or next hour. + A double value for the second, e.g. 35.75. + It is permissible to have second values outside the 0-59 range, which + will rollover to the previous or next minute. + + + + Construct a date class from a calendar date and time (year, month, day, hour, minute, + second, millisecond). + + An integer value for the year, e.g., 1995. + An integer value for the day of the month, e.g., 23. + It is permissible to have day numbers outside of the 1-31 range, + which will rollover to the previous or next month and year. + An integer value for the month of the year, e.g., + 8 for August. It is permissible to have months outside of the 1-12 range, + which will rollover to the previous or next year. + An integer value for the hour of the day, e.g. 15. + It is permissible to have hour values outside the 0-23 range, which + will rollover to the previous or next day. + An integer value for the minute, e.g. 45. + It is permissible to have hour values outside the 0-59 range, which + will rollover to the previous or next hour. + An integer value for the second, e.g. 35. + It is permissible to have second values outside the 0-59 range, which + will rollover to the previous or next minute. + An integer value for the millisecond, e.g. 632. + It is permissible to have millisecond values outside the 0-999 range, which + will rollover to the previous or next second. + + + + The Copy Constructor + + The GraphPane object from which to copy + + + + Returns true if the specified date value is in the valid range + + The XL date value to be verified for validity + true for a valid date, false otherwise + + + + Take the specified date, and bound it to the valid date range for the XDate struct. + + The date to be bounded + An XLDate value that lies between the minimum and maximum valid date ranges + (see and ) + + + + Get the calendar date (year, month, day) corresponding to this instance. + + An integer value for the year, e.g., 1995. + An integer value for the day of the month, e.g., 23. + An integer value for the month of the year, e.g., + 8 for August. + + + + Set the calendar date (year, month, day) of this instance. + + An integer value for the year, e.g., 1995. + An integer value for the day of the month, e.g., 23. + An integer value for the month of the year, e.g., + 8 for August. + + + + Get the calendar date (year, month, day, hour, minute, second) corresponding + to this instance. + + An integer value for the year, e.g., 1995. + An integer value for the day of the month, e.g., 23. + An integer value for the month of the year, e.g., + 8 for August. + An integer value for the hour of the day, e.g. 15. + An integer value for the minute, e.g. 45. + An integer value for the second, e.g. 35. + + + + Set the calendar date (year, month, day, hour, minute, second) of this instance. + + An integer value for the year, e.g., 1995. + An integer value for the day of the month, e.g., 23. + An integer value for the month of the year, e.g., + 8 for August. + An integer value for the hour of the day, e.g. 15. + An integer value for the minute, e.g. 45. + An integer value for the second, e.g. 35. + + + + Get the day of year value (241.345 means the 241st day of the year) + corresponding to this instance. + + The day of the year in floating point double format. + + + + Calculate an XL Date from the specified Calendar date (year, month, day, hour, minute, second), + first normalizing all input data values. + + + The Calendar date is always based on the Gregorian Calendar. Note that the Gregorian calendar is really + only valid from October 15, 1582 forward. The countries that adopted the Gregorian calendar + first did so on October 4, 1582, so that the next day was October 15, 1582. Prior to that time + the Julian Calendar was used. However, Prior to March 1, 4 AD the treatment of leap years was + inconsistent, and prior to 45 BC the Julian Calendar did not exist. The + struct projects only Gregorian dates backwards and does not deal with Julian calendar dates at all. The + method will just append a "(BC)" notation to the end of any dates + prior to 1 AD, since the struct throws an exception when formatting earlier dates. + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + + The integer millisecond value (e.g., 374 for 374 milliseconds past the second). + + The corresponding XL date, expressed in double floating point format + + + + Calculate an XL Date from the specified Calendar date (year, month, day, hour, minute, second), + first normalizing all input data values. + + + The Calendar date is always based on the Gregorian Calendar. Note that the Gregorian calendar is really + only valid from October 15, 1582 forward. The countries that adopted the Gregorian calendar + first did so on October 4, 1582, so that the next day was October 15, 1582. Prior to that time + the Julian Calendar was used. However, Prior to March 1, 4 AD the treatment of leap years was + inconsistent, and prior to 45 BC the Julian Calendar did not exist. The + struct projects only Gregorian dates backwards and does not deal with Julian calendar dates at all. The + method will just append a "(BC)" notation to the end of any dates + prior to 1 AD, since the struct throws an exception when formatting earlier dates. + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + The corresponding XL date, expressed in double floating point format + + + + Calculate an XL Date from the specified Calendar date (year, month, day, hour, minute, second), + first normalizing all input data values. The seconds value is a double type, allowing fractional + seconds. + + + The Calendar date is always based on the Gregorian Calendar. Note that the Gregorian calendar is really + only valid from October 15, 1582 forward. The countries that adopted the Gregorian calendar + first did so on October 4, 1582, so that the next day was October 15, 1582. Prior to that time + the Julian Calendar was used. However, Prior to March 1, 4 AD the treatment of leap years was + inconsistent, and prior to 45 BC the Julian Calendar did not exist. The + struct projects only Gregorian dates backwards and does not deal with Julian calendar dates at all. The + method will just append a "(BC)" notation to the end of any dates + prior to 1 AD, since the struct throws an exception when formatting earlier dates. + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The double second value (e.g., 42.3 for 42.3 seconds past the minute). + + The corresponding XL date, expressed in double floating point format + + + + Calculate an Astronomical Julian Day number from the specified Calendar date + (year, month, day, hour, minute, second), first normalizing all input data values + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + The corresponding Astronomical Julian Day number, expressed in double + floating point format + + + + Calculate an Astronomical Julian Day number from the specified Calendar date + (year, month, day, hour, minute, second), first normalizing all input data values + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + + The integer second value (e.g., 325 for 325 milliseconds past the minute). + + The corresponding Astronomical Julian Day number, expressed in double + floating point format + + + + Normalize a set of Calendar date values (year, month, day, hour, minute, second) to make sure + that month is between 1 and 12, hour is between 0 and 23, etc. + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + + The double millisecond value (e.g., 325.3 for 325.3 milliseconds past the second). + + + + + Calculate an XL date from the specified Calendar date (year, month, day, hour, minute, second). + This is the internal trusted version, where all values are assumed to be legitimate + ( month is between 1 and 12, minute is between 0 and 59, etc. ) + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + + The double millisecond value (e.g., 325.3 for 325.3 milliseconds past the second). + + The corresponding XL date, expressed in double floating point format + + + + Calculate an Astronomical Julian Day Number from the specified Calendar date + (year, month, day, hour, minute, second). + This is the internal trusted version, where all values are assumed to be legitimate + ( month is between 1 and 12, minute is between 0 and 59, etc. ) + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + + The double millisecond value (e.g., 325.3 for 325.3 milliseconds past the second). + + The corresponding Astronomical Julian Day number, expressed in double + floating point format + + + + Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to + the specified XL date + + + The XL date value in floating point double format. + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + + + + Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to + the specified XL date + + + The XL date value in floating point double format. + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + + The integer millisecond value (e.g., 325 for 325 milliseconds past the second). + + + + + Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to + the specified XL date + + + The XL date value in floating point double format. + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The double second value (e.g., 42.3 for 42.3 seconds past the minute). + + + + + Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to + the Astronomical Julian Day number + + + The Astronomical Julian Day number to be converted + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + + + + Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to + the Astronomical Julian Day number + + + The Astronomical Julian Day number to be converted + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The double second value (e.g., 42.3 for 42.3 seconds past the minute). + + + + + Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to + the Astronomical Julian Day number + + + The Astronomical Julian Day number to be converted + + + The integer year value (e.g., 1994). + + + The integer month value (e.g., 7 for July). + + + The integer day value (e.g., 19 for the 19th day of the month). + + + The integer hour value (e.g., 14 for 2:00 pm). + + + The integer minute value (e.g., 35 for 35 minutes past the hour). + + + The integer second value (e.g., 42 for 42 seconds past the minute). + + + The millisecond value (e.g., 342.5 for 342.5 milliseconds past + the second). + + + + + Calculate an Astronomical Julian Day number corresponding to the specified XL date + + + The XL date value in floating point double format. + + The corresponding Astronomical Julian Day number, expressed in double + floating point format + + + + Calculate an XL Date corresponding to the specified Astronomical Julian Day number + + + The Astronomical Julian Day number in floating point double format. + + The corresponding XL Date, expressed in double + floating point format + + + + Calculate a decimal year value (e.g., 1994.6523) corresponding to the specified XL date + + + The XL date value in floating point double format. + + The corresponding decimal year value, expressed in double + floating point format + + + + Calculate a decimal year value (e.g., 1994.6523) corresponding to the specified XL date + + + The decimal year value in floating point double format. + + The corresponding XL Date, expressed in double + floating point format + + + + Calculate a day-of-year value (e.g., 241.543 corresponds to the 241st day of the year) + corresponding to the specified XL date + + + The XL date value in floating point double format. + + The corresponding day-of-year (DoY) value, expressed in double + floating point format + + + + Calculate a day-of-week value (e.g., Sun=0, Mon=1, Tue=2, etc.) + corresponding to the specified XL date + + + The XL date value in floating point double format. + + The corresponding day-of-week (DoW) value, expressed in integer format + + + + Convert an XL date format to a .Net DateTime struct + + + The XL date value in floating point double format. + + The corresponding XL Date, expressed in double + floating point format + The corresponding date in the form of a .Net DateTime struct + + + + Convert a .Net DateTime struct to an XL Format date + + + The date value in the form of a .Net DateTime struct + + The corresponding XL Date, expressed in double + floating point format + + + + Add the specified number of milliseconds (can be fractional) to the current XDate instance. + + + The incremental number of milliseconds (negative or positive) in floating point double format. + + + + + Add the specified number of seconds (can be fractional) to the current XDate instance. + + + The incremental number of seconds (negative or positive) in floating point double format. + + + + + Add the specified number of minutes (can be fractional) to the current XDate instance. + + + The incremental number of minutes (negative or positive) in floating point double format. + + + + + Add the specified number of hours (can be fractional) to the current XDate instance. + + + The incremental number of hours (negative or positive) in floating point double format. + + + + + Add the specified number of days (can be fractional) to the current XDate instance. + + + The incremental number of days (negative or positive) in floating point double format. + + + + + Add the specified number of Months (can be fractional) to the current XDate instance. + + + The incremental number of months (negative or positive) in floating point double format. + + + + + Add the specified number of years (can be fractional) to the current XDate instance. + + + The incremental number of years (negative or positive) in floating point double format. + + + + + '-' operator overload. When two XDates are subtracted, the number of days between dates + is returned. + + The left-hand-side of the '-' operator (an XDate class) + The right-hand-side of the '-' operator (an XDate class) + The days between dates, expressed as a floating point double + + + + '-' operator overload. When a double value is subtracted from an XDate, the result is a + new XDate with the number of days subtracted. + + The left-hand-side of the '-' operator (an XDate class) + The right-hand-side of the '-' operator (a double value) + An XDate with the rhs number of days subtracted + + + + '+' operator overload. When a double value is added to an XDate, the result is a + new XDate with the number of days added. + + The left-hand-side of the '-' operator (an XDate class) + The right-hand-side of the '+' operator (a double value) + An XDate with the rhs number of days added + + + + '++' operator overload. Increment the date by one day. + + The XDate struct on which to operate + An XDate one day later than the specified date + + + + '--' operator overload. Decrement the date by one day. + + The XDate struct on which to operate + An XDate one day prior to the specified date + + + + Implicit conversion from XDate to double (an XL Date). + + The XDate struct on which to operate + A double floating point value representing the XL Date + + + + Implicit conversion from XDate to float (an XL Date). + + The XDate struct on which to operate + A double floating point value representing the XL Date + + + + Implicit conversion from double (an XL Date) to XDate. + + The XDate struct on which to operate + An XDate struct representing the specified xlDate value. + + + + Implicit conversion from XDate to . + + The XDate struct on which to operate + A struct representing the specified xDate value. + + + + Implicit conversion from to . + + The struct on which to operate + An struct representing the specified DateTime value. + + + + Tests whether obj is either an structure or + a double floating point value that is equal to the same date as this XDate + struct instance. + + The object to compare for equality with this XDate instance. + This object should be either a type XDate or type double. + Returns true if obj is the same date as this + instance; otherwise, false + + + + Returns the hash code for this structure. In this case, the + hash code is simply the equivalent hash code for the floating point double date value. + + An integer representing the hash code for this XDate value + + + + Compares one object to another. + + + This method will throw an exception if is not an + object. + + The second object to be compared. + zero if is equal to the current instance, + -1 if is less than the current instance, and + 1 if is greater than the current instance. + + + + Format this XDate value using the default format string (). + + + The formatting is done using the + method in order to provide full localization capability. The DateTime struct is limited to + dates from 1 AD onward. However, all calendar dates in and + are projected Gregorian calendar dates. Since the Gregorian calendar was not implemented + until October 4, 1582 (or later in some countries), Gregorian dates prior to that time are + really dates that would have been, had the Gregorian calendar existed. In order to avoid + throwing an exception, for dates prior to 1 AD, the year will be converted to a positive + year and the text "(BC)" is appended to the end of the formatted string. Under this mode, the + year sequence is 2BC, 1BC, 1AD, 2AD, etc. There is no year zero. + + + The XL date value to be formatted in floating point double format. + + A string representation of the date + + + + Format this XDate value using the default format string (see cref="DefaultFormatStr"/>). + + + The formatting is done using the + + method in order to provide full localization capability. The DateTime struct is limited to + dates from 1 AD onward. However, all calendar dates in and + + are projected Gregorian calendar dates. Since the Gregorian calendar was not implemented + until October 4, 1582 (or later in some countries), Gregorian dates prior to that time are + really dates that would have been, had the Gregorian calendar existed. In order to avoid + throwing an exception, for dates prior to 1 AD, the year will be converted to a positive + year and the text "(BC)" is appended to the end of the formatted string. Under this mode, the + year sequence is 2BC, 1BC, 1AD, 2AD, etc. There is no year zero. + + A string representation of the date + + + + Format this XL Date value using the specified format string. The format + string is specified according to the class. + + + The formatting is done using the + + method in order to provide full localization capability. The DateTime struct is limited to + dates from 1 AD onward. However, all calendar dates in and + + are projected Gregorian calendar dates. Since the Gregorian calendar was not implemented + until October 4, 1582 (or later in some countries), Gregorian dates prior to that time are + really dates that would have been, had the Gregorian calendar existed. In order to avoid + throwing an exception, for dates prior to 1 AD, the year will be converted to a positive + year and the text "(BC)" is appended to the end of the formatted string. Under this mode, the + year sequence is 2BC, 1BC, 1AD, 2AD, etc. There is no year zero. + + + The formatting string to be used for the date. See + + class for a list of the format types available. + A string representation of the date + + + + Format the specified XL Date value using the specified format string. The format + string is specified according to the class. + + + The formatting is done using the + + method in order to provide full localization capability. The DateTime struct is limited to + dates from 1 AD onward. However, all calendar dates in and + + are projected Gregorian calendar dates. Since the Gregorian calendar was not implemented + until October 4, 1582 (or later in some countries), Gregorian dates prior to that time are + really dates that would have been, had the Gregorian calendar existed. In order to avoid + throwing an exception, for dates prior to 1 AD, the year will be converted to a positive + year and the text "(BC)" is appended to the end of the formatted string. Under this mode, the + year sequence is 2BC, 1BC, 1AD, 2AD, etc. There is no year zero. + + + The XL date value to be formatted in floating point double format. + + + The formatting string to be used for the date. See + + for a list of the format types available. + A string representation of the date + + + + Gets or sets the date value for this item in MS Excel format. + + + + + Returns true if this struct is in the valid date range + + + + + Gets or sets the date value for this item in .Net DateTime format. + + + + + Gets or sets the date value for this item in Julain day format. This is the + Astronomical Julian Day number, so a value of 0.0 corresponds to noon GMT on + January 1st, -4712. Thus, Julian Day number 2,400,000.0 corresponds to + noon GMT on November 16, 1858. + + + + + Gets or sets the decimal year number (i.e., 1997.345) corresponding to this item. + + + + + inherits from , and defines the + special characteristics of a vertical axis, specifically located on + the right side of the of the + object + + + John Champion + $Revision: 3.16 $ $Date: 2007-04-16 00:03:05 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that sets all properties to + default values as defined in the class + + + + + Default constructor that sets all properties to + default values as defined in the class, except + for the axis title + + The for this axis + + + + The Copy Constructor + + The Y2Axis object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Setup the Transform Matrix to handle drawing of this + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determines if this object is a "primary" one. + + + The primary axes are the (always), the first + in the + ( = 0), and the first + in the + ( = 0). Note that + and + always reference the primary axes. + + + A reference to the object that is the parent or + owner of this object. + + true for a primary , false otherwise + + + + Calculate the "shift" size, in pixels, in order to shift the axis from its default + location to the value specified by . + + + A reference to the object that is the parent or + owner of this object. + + The shift amount measured in pixels + + + + Gets the "Cross" axis that corresponds to this axis. + + + The cross axis is the axis which determines the of this Axis when the + Axis.Cross property is used. The + cross axis for any or + is always the primary , and + the cross axis for any or is + always the primary . + + + A reference to the object that is the parent or + owner of this object. + + + + + A simple subclass of the class that defines the + default property values for the class. + + + + + The default display mode for the + ( property). true to display the scale + values, title, tic marks, false to hide the axis entirely. + + + + + Determines if a line will be drawn at the zero value for the + , that is, a line that + divides the negative values from positive values. + . + + + + + A collection class containing a list of objects. + + + John Champion + $Revision: 3.3 $ $Date: 2006-06-24 20:26:43 $ + + + + Default constructor for the collection class. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Return the zero-based position index of the + with the specified . + + The comparison of titles is not case sensitive, but it must include + all characters including punctuation, spaces, etc. + The label that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the was not found in the list + + + + + Return the zero-based position index of the + with the specified . + + In order for this method to work, the + property must be of type . + The tag that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the string is not in the list + + + + + Create a new and add it to this list. + + The title string for the new axis + An integer representing the ordinal position of the new in + this . This is the value that you would set the + property of a given to + assign it to this new . Note that, for a , + you would also need to set the property to true. + + + + Indexer to access the specified object by + its ordinal position in the list. + + The ordinal position (zero-based) of the + object to be accessed. + An object reference. + + + + Indexer to access the specified object by + its string. + + The string title of the + object to be accessed. + A object reference. + + + + inherits from , and defines the + special characteristics of a vertical axis, specifically located on + the right side of the of the + object + + + John Champion + $Revision: 3.16 $ $Date: 2007-04-16 00:03:06 $ + + + + Current schema value that defines the version of the serialized file + + + + + Default constructor that sets all properties to + default values as defined in the class + + + + + Default constructor that sets all properties to + default values as defined in the class, except + for the axis title + + The for this axis + + + + The Copy Constructor + + The YAxis object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Constructor for deserializing objects + + A instance that defines the serialized data + + A instance that contains the serialized data + + + + + Populates a instance with the data needed to serialize the target object + + A instance that defines the serialized data + A instance that contains the serialized data + + + + Setup the Transform Matrix to handle drawing of this + + + A graphic device object to be drawn into. This is normally e.Graphics from the + PaintEventArgs argument to the Paint() method. + + + A reference to the object that is the parent or + owner of this object. + + + The scaling factor to be used for rendering objects. This is calculated and + passed down by the parent object using the + method, and is used to proportionally adjust + font sizes, etc. according to the actual size of the graph. + + + + + Determines if this object is a "primary" one. + + + The primary axes are the (always), the first + in the + ( = 0), and the first + in the + ( = 0). Note that + and + always reference the primary axes. + + + A reference to the object that is the parent or + owner of this object. + + true for a primary , false otherwise + + + + Calculate the "shift" size, in pixels, in order to shift the axis from its default + location to the value specified by . + + + A reference to the object that is the parent or + owner of this object. + + The shift amount measured in pixels + + + + Gets the "Cross" axis that corresponds to this axis. + + + The cross axis is the axis which determines the of this Axis when the + Axis.Cross property is used. The + cross axis for any or + is always the primary , and + the cross axis for any or is + always the primary . + + + A reference to the object that is the parent or + owner of this object. + + + + + A simple struct that defines the + default property values for the class. + + + + + The default display mode for the + ( property). true to display the scale + values, title, tic marks, false to hide the axis entirely. + + + + + Determines if a line will be drawn at the zero value for the + , that is, a line that + divides the negative values from positive values. + . + + + + + A collection class containing a list of objects. + + + John Champion + $Revision: 3.3 $ $Date: 2006-06-24 20:26:43 $ + + + + Default constructor for the collection class. + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Return the zero-based position index of the + with the specified . + + The comparison of titles is not case sensitive, but it must include + all characters including punctuation, spaces, etc. + The label that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the was not found in the list + + + + + Return the zero-based position index of the + with the specified . + + In order for this method to work, the + property must be of type . + + The tag that is in the + attribute of the item to be found. + + The zero-based index of the specified , + or -1 if the string is not in the list + + + + Create a new and add it to this list. + + The title string for the new axis + An integer representing the ordinal position of the new in + this . This is the value that you would set the + property of a given to + assign it to this new . + + + + Indexer to access the specified object by + its ordinal position in the list. + + The ordinal position (zero-based) of the + object to be accessed. + An object reference. + + + + Indexer to access the specified object by + its string. + + The string title of the + object to be accessed. + A object reference. + + + + The ZedGraphControl class provides a UserControl interface to the + class library. This allows ZedGraph to be installed + as a control in the Visual Studio toolbox. You can use the control by simply + dragging it onto a form in the Visual Studio form editor. All graph + attributes are accessible via the + property. + + John Champion revised by Jerry Vos + $Revision: 3.86 $ $Date: 2007-11-03 04:41:29 $ + + + + Find the object currently under the mouse cursor, and return its state. + + + + + protected method to handle the popup context menu in the . + + + + + + + Handler for the "Copy" context menu item. Copies the current image to a bitmap on the + clipboard. + + + + + + + Handler for the "Copy" context menu item. Copies the current image to a bitmap on the + clipboard. + + boolean value that determines whether or not a prompt will be + displayed. true to show a message of "Image Copied to ClipBoard". + + + + A threaded version of the copy method to avoid crash with MTA + + + + + Setup for creation of a new image, applying appropriate anti-alias properties and + returning the resultant image file + + + + + + Special handler that copies the current image to an Emf file on the clipboard. + + This version is similar to the regular method, except that + it will place an Emf image (vector) on the ClipBoard instead of the regular bitmap. + boolean value that determines whether or not a prompt will be + displayed. true to show a message of "Image Copied to ClipBoard". + + + + A threaded version of the copy method to avoid crash with MTA + + + + + Handler for the "Save Image As" context menu item. Copies the current image to the selected + file. + + + + + + + Handler for the "Save Image As" context menu item. Copies the current image to the selected + file in either the Emf (vector), or a variety of Bitmap formats. + + + Note that and methods are provided + which allow for Bitmap-only or Emf-only handling of the "Save As" context menu item. + + + + + Copies the current image to the selected file in + Emf (vector), or a variety of Bitmap formats. + + + Accepts a default file name for the file dialog (if "" or null, default is not used) + + + The file name saved, or "" if cancelled. + + + Note that and methods are provided + which allow for Bitmap-only or Emf-only handling of the "Save As" context menu item. + + + + + Handler for the "Save Image As" context menu item. Copies the current image to the selected + Bitmap file. + + + Note that this handler saves as a bitmap only. The default handler is + , which allows for Bitmap or EMF formats + + + + + Handler for the "Save Image As" context menu item. Copies the current image to the selected + Emf format file. + + + Note that this handler saves as an Emf format only. The default handler is + , which allows for Bitmap or EMF formats. + + + + + Save the current Graph to the specified filename in EMF (vector) format. + See for public access. + + + Note that this handler saves as an Emf format only. The default handler is + , which allows for Bitmap or EMF formats. + + + + + Handler for the "Show Values" context menu item. Toggles the + property, which activates the point value tooltips. + + + + + + + Handler for the "Set Scale to Default" context menu item. Sets the scale ranging to + full auto mode for all axes. + + + This method differs from the method in that it sets the scales + to full auto mode. The method sets the scales to their initial + setting prior to any user actions (which may or may not be full auto mode). + + + + + + + Handler for the "Set Scale to Default" context menu item. Sets the scale ranging to + full auto mode for all axes. + + + This method differs from the method in that it sets the scales + to full auto mode. The method sets the scales to their initial + setting prior to any user actions (which may or may not be full auto mode). + + The object which is to have the + scale restored + + + + Handler for the "UnZoom/UnPan" context menu item. Restores the scale ranges to the values + before the last zoom or pan operation. + + + + + + + Handler for the "UnZoom/UnPan" context menu item. Restores the scale ranges to the values + before the last zoom, pan, or scroll operation. + + + Triggers a for any type of undo (including pan, scroll, zoom, and + wheelzoom). This method will affect all the + objects in the if + or is true. + + The primary object which is to be + zoomed out + + + + Handler for the "Undo All Zoom/Pan" context menu item. Restores the scale ranges to the values + before all zoom and pan operations + + + This method differs from the method in that it sets the scales + to their initial setting prior to any user actions. The method + sets the scales to full auto mode (regardless of what the initial setting may have been). + + + + + + + Handler for the "Undo All Zoom/Pan" context menu item. Restores the scale ranges to the values + before all zoom and pan operations + + + This method differs from the method in that it sets the scales + to their initial setting prior to any user actions. The method + sets the scales to full auto mode (regardless of what the initial setting may have been). + + The object which is to be zoomed out + + + + This private field contains the instance for the MasterPane object of this control. + You can access the MasterPane object through the public property + . This is nulled when this Control is + disposed. + + + + + private field that determines whether or not tooltips will be displayed + when the mouse hovers over data values. Use the public property + to access this value. + + + + + private field that determines whether or not tooltips will be displayed + showing the scale values while the mouse is located within the ChartRect. + Use the public property to access this value. + + + + + private field that determines the format for displaying tooltip values. + This format is passed to . + Use the public property to access this + value. + + + + + private field that determines whether or not the context menu will be available. Use the + public property to access this value. + + + + + private field that determines whether or not a message box will be shown in response to + a context menu "Copy" command. Use the + public property to access this value. + + + Note that, if this value is set to false, the user will receive no indicative feedback + in response to a Copy action. + + + + + private field that determines whether the settings of + and + will be overridden to true during printing operations. + + + Printing involves pixel maps that are typically of a dramatically different dimension + than on-screen pixel maps. Therefore, it becomes more important to scale the fonts and + lines to give a printed image that looks like what is shown on-screen. The default + setting for is true, but the default + setting for is false. + + + A value of true will cause both and + to be temporarily set to true during + printing operations. + + + + + private field that determines whether or not the visible aspect ratio of the + will be preserved + when printing this . + + + + + private field that determines whether or not the + dimensions will be expanded to fill the + available space when printing this . + + + If is also true, then the + dimensions will be expanded to fit as large + a space as possible while still honoring the visible aspect ratio. + + + + + private field that determines the format for displaying tooltip date values. + This format is passed to . + Use the public property to access this + value. + + + + + private value that determines whether or not zooming is enabled for the control in the + vertical direction. Use the public property to access this + value. + + + + + private value that determines whether or not zooming is enabled for the control in the + horizontal direction. Use the public property to access this + value. + + + + + private value that determines whether or not zooming is enabled with the mousewheel. + Note that this property is used in combination with the and + properties to control zoom options. + + + + + private value that determines whether or not point editing is enabled in the + vertical direction. Use the public property to access this + value. + + + + + private value that determines whether or not point editing is enabled in the + horizontal direction. Use the public property to access this + value. + + + + + private value that determines whether or not panning is allowed for the control in the + horizontal direction. Use the + public property to access this value. + + + + + private value that determines whether or not panning is allowed for the control in the + vertical direction. Use the + public property to access this value. + + + + + Internal variable that indicates if the control can manage selections. + + + + + private field that stores a instance, which maintains + a persistent selection of printer options. + + + This is needed so that a "Print" action utilizes the settings from a prior + "Page Setup" action. + + + + This private field contains a list of selected CurveItems. + + + + + Gets or sets a value that determines which Mouse button will be used to click on + linkable objects + + + + + + Gets or sets a value that determines which modifier keys will be used to click + on linkable objects + + + + + + Gets or sets a value that determines which Mouse button will be used to edit point + data values + + + This setting only applies if and/or + are true. + + + + + + Gets or sets a value that determines which modifier keys will be used to edit point + data values + + + This setting only applies if and/or + are true. + + + + + + Gets or sets a value that determines which mouse button will be used to select + 's. + + + This setting only applies if is true. + + + + + + Gets or sets a value that determines which modifier keys will be used to select + 's. + + + This setting only applies if is true. + + + + + + Gets or sets a value that determines which Mouse button will be used to perform + zoom operations + + + This setting only applies if and/or + are true. + + + + + + + + Gets or sets a value that determines which modifier keys will be used to perform + zoom operations + + + This setting only applies if and/or + are true. + + + + + + + + Gets or sets a value that determines which Mouse button will be used as a + secondary option to perform zoom operations + + + This setting only applies if and/or + are true. + + + + + + + + Gets or sets a value that determines which modifier keys will be used as a + secondary option to perform zoom operations + + + This setting only applies if and/or + are true. + + + + + + + + Gets or sets a value that determines which Mouse button will be used to perform + panning operations + + + This setting only applies if and/or + are true. A Pan operation (dragging the graph with + the mouse) should not be confused with a scroll operation (using a scroll bar to + move the graph). + + + + + + + + Gets or sets a value that determines which modifier keys will be used to perform + panning operations + + + This setting only applies if and/or + are true. A Pan operation (dragging the graph with + the mouse) should not be confused with a scroll operation (using a scroll bar to + move the graph). + + + + + + + + Gets or sets a value that determines which Mouse button will be used as a + secondary option to perform panning operations + + + This setting only applies if and/or + are true. A Pan operation (dragging the graph with + the mouse) should not be confused with a scroll operation (using a scroll bar to + move the graph). + + + + + + + + Gets or sets a value that determines which modifier keys will be used as a + secondary option to perform panning operations + + + This setting only applies if and/or + are true. A Pan operation (dragging the graph with + the mouse) should not be confused with a scroll operation (using a scroll bar to + move the graph). + + + + + + + + Internal variable that indicates the control is currently being zoomed. + + + + + Internal variable that indicates the control is currently being panned. + + + + + Internal variable that indicates a point value is currently being edited. + + + + + Internal variable that indicates the control is currently using selection. + + + + + Internal variable that stores the reference for the Pane that is + currently being zoomed or panned. + + + + + Internal variable that stores a rectangle which is either the zoom rectangle, or the incremental + pan amount since the last mousemove event. + + + + + private field that stores the state of the scale ranges prior to starting a panning action. + + + + + Default Constructor + + + + + Clean up any resources being used. + + true if the components should be + disposed, false otherwise + + + + Called by the system to update the control on-screen + + + A PaintEventArgs object containing the Graphics specifications + for this Paint event. + + + + + Called when the control has been resized. + + + A reference to the control that has been resized. + + + An EventArgs object. + + + + This performs an axis change command on the graphPane. + + + This is the same as + ZedGraphControl.GraphPane.AxisChange( ZedGraphControl.CreateGraphics() ), however, + this method also calls if + is true. + + + + + Save the current states of the GraphPanes to a separate collection. Save a single + () GraphPane if the panes are not synchronized + (see and ), + or save a list of states for all GraphPanes if the panes are synchronized. + + The primary GraphPane on which zoom/pan/scroll operations + are taking place + The that describes the + current operation + The that corresponds to the + . + + + + + Restore the states of the GraphPanes to a previously saved condition (via + . This is essentially an "undo" for live + pan and scroll actions. Restores a single + () GraphPane if the panes are not synchronized + (see and ), + or save a list of states for all GraphPanes if the panes are synchronized. + + The primary GraphPane on which zoom/pan/scroll operations + are taking place + + + + Place the previously saved states of the GraphPanes on the individual GraphPane + collections. This provides for an + option to undo the state change at a later time. Save a single + () GraphPane if the panes are not synchronized + (see and ), + or save a list of states for all GraphPanes if the panes are synchronized. + + The primary GraphPane on which zoom/pan/scroll operations + are taking place + The that corresponds to the + . + + + + + Clear the collection of saved states. + + + + + Clear all states from the undo stack for each GraphPane. + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Handle a MouseDown event in the + + A reference to the + A instance + + + + Set the cursor according to the current mouse location. + + + + + Set the cursor according to the current mouse location. + + + + + Handle a KeyUp event + + The in which the KeyUp occurred. + A instance. + + + + Handle the Key Events so ZedGraph can Escape out of a panning or zooming operation. + + + + + + + Handle a MouseUp event in the + + A reference to the + A instance + + + + Make a string label that corresponds to a user scale value. + + The axis from which to obtain the scale value. This determines + if it's a date value, linear, log, etc. + The value to be made into a label + The ordinal position of the value + true to override the ordinal settings of the axis, + and prefer the actual value instead. + The string label. + + + + protected method for handling MouseMove events to display tooltips over + individual datapoints. + + + A reference to the control that has the MouseMove event. + + + A MouseEventArgs object. + + + + + Handle a MouseWheel event in the + + A reference to the + A instance + + + + Zoom a specified pane in or out according to the specified zoom fraction. + + + The zoom will occur on the , , and + only if the corresponding flag, or + , is true. Note that if there are multiple Y or Y2 axes, all of + them will be zoomed. + + The instance to be zoomed. + The fraction by which to zoom, less than 1 to zoom in, greater than + 1 to zoom out. For example, 0.9 will zoom in such that the scale is 90% of what it was + originally. + The screen position about which the zoom will be centered. This + value is only used if is true. + + true to cause the zoom to be centered on the point + , false to center on the . + + true to force a refresh of the control, false to leave it unrefreshed + + + + Zoom a specified pane in or out according to the specified zoom fraction. + + + The zoom will occur on the , , and + only if the corresponding flag, or + , is true. Note that if there are multiple Y or Y2 axes, all of + them will be zoomed. + + The instance to be zoomed. + The fraction by which to zoom, less than 1 to zoom in, greater than + 1 to zoom out. For example, 0.9 will zoom in such that the scale is 90% of what it was + originally. + The screen position about which the zoom will be centered. This + value is only used if is true. + + true to cause the zoom to be centered on the point + , false to center on the . + + + + + Zoom the specified axis by the specified amount, with the center of the zoom at the + (optionally) specified point. + + + This method is used for MouseWheel zoom operations + The to be zoomed. + The zoom fraction, less than 1.0 to zoom in, greater than 1.0 to + zoom out. That is, a value of 0.9 will zoom in such that the scale length is 90% of what + it previously was. + The location for the center of the zoom. This is only used if + is true. + true if the zoom is to be centered at the + screen position, false for the zoom to be centered within + the . + + + + + Handle a panning operation for the specified . + + The to be panned + The value where the pan started. The scale range + will be shifted by the difference between and + . + + The value where the pan ended. The scale range + will be shifted by the difference between and + . + + + + + Perform selection on curves within the drag pane, or under the mouse click. + + + + + + + Handler for the "Page Setup..." context menu item. Displays a + . + + + + + + + Handler for the "Print..." context menu item. Displays a + . + + + + + + + Rendering method used by the print context menu items + + The applicable . + A instance providing + page bounds, margins, and a Graphics instance for this printed output. + + + + + Display a to the user, allowing them to modify + the print settings for this . + + + + + Display a to the user, allowing them to select a + printer and print the contained in this + . + + + + + Display a , allowing the user to preview and + subsequently print the contained in this + . + + + + + Gets the graph pane's current image. + + + + When the control has been disposed before this call. + + + + + Sets the value of the scroll range properties (see , + , , and + based on the actual range of the data for + each corresponding . + + + This method is called automatically by if + + is true. Note that this will not be called if you call AxisChange directly from the + . For example, zedGraphControl1.AxisChange() works properly, but + zedGraphControl1.GraphPane.AxisChange() does not. + + + + Subscribe to this event to be able to modify the ZedGraph context menu. + + + The context menu is built on the fly after a right mouse click. You can add menu items + to this menu by simply modifying the parameter. + + + + + Subscribe to this event to be notified when the is zoomed or panned by the user, + either via a mouse drag operation or by the context menu commands. + + + + + Subscribe to this event to be notified when the is scrolled by the user + using the scrollbars. + + + + + Subscribe to this event to be notified when the is scrolled by the user + using the scrollbars. + + + + + Subscribe to this event to be notified when the is scrolled by the user + using the scrollbars. + + + + + Subscribe to this event to receive notifcation and/or respond after a data + point has been edited via and . + + + To subscribe to this event, use the following in your Form_Load method: + zedGraphControl1.PointEditEvent += + new ZedGraphControl.PointEditHandler( MyPointEditHandler ); + Add this method to your Form1.cs: + + private string MyPointEditHandler( object sender, GraphPane pane, CurveItem curve, int iPt ) + { + PointPair pt = curve[iPt]; + return "This value is " + pt.Y.ToString("f2") + " gallons"; + } + + + + + Subscribe to this event to provide custom formatting for the tooltips + + + To subscribe to this event, use the following in your FormLoad method: + zedGraphControl1.PointValueEvent += + new ZedGraphControl.PointValueHandler( MyPointValueHandler ); + Add this method to your Form1.cs: + + private string MyPointValueHandler( object sender, GraphPane pane, CurveItem curve, int iPt ) + { + #region + PointPair pt = curve[iPt]; + return "This value is " + pt.Y.ToString("f2") + " gallons"; + #endregion + } + + + + + Subscribe to this event to provide custom formatting for the cursor value tooltips + + + To subscribe to this event, use the following in your FormLoad method: + zedGraphControl1.CursorValueEvent += + new ZedGraphControl.CursorValueHandler( MyCursorValueHandler ); + Add this method to your Form1.cs: + + private string MyCursorValueHandler( object sender, GraphPane pane, Point mousePt ) + { + #region + double x, y; + pane.ReverseTransform( mousePt, out x, out y ); + return "( " + x.ToString( "f2" ) + ", " + y.ToString( "f2" ) + " )"; + #endregion + } + + + + + Subscribe to this event to provide notification of MouseDown clicks on graph + objects + + + This event provides for a notification when the mouse is clicked on an object + within any of the associated + with this . This event will use the + method to determine which object + was clicked. The boolean value that you return from this handler determines whether + or not the will do any further handling of the + MouseDown event (see ). Return true if you have + handled the MouseDown event entirely, and you do not + want the to do any further action (e.g., starting + a zoom operation). Return false if ZedGraph should go ahead and process the + MouseDown event. + + + + + Hide the standard control MouseDown event so that the ZedGraphControl.MouseDownEvent + can be used. This is so that the user must return true/false in order to indicate + whether or not we should respond to the event. + + + + + Hide the standard control MouseUp event so that the ZedGraphControl.MouseUpEvent + can be used. This is so that the user must return true/false in order to indicate + whether or not we should respond to the event. + + + + + Hide the standard control MouseMove event so that the ZedGraphControl.MouseMoveEvent + can be used. This is so that the user must return true/false in order to indicate + whether or not we should respond to the event. + + + + + Subscribe to this event to provide notification of MouseUp clicks on graph + objects + + + This event provides for a notification when the mouse is clicked on an object + within any of the associated + with this . This event will use the + method to determine which object + was clicked. The boolean value that you return from this handler determines whether + or not the will do any further handling of the + MouseUp event (see ). Return true if you have + handled the MouseUp event entirely, and you do not + want the to do any further action (e.g., starting + a zoom operation). Return false if ZedGraph should go ahead and process the + MouseUp event. + + + + + Subscribe to this event to provide notification of MouseMove events over graph + objects + + + This event provides for a notification when the mouse is moving over on the control. + The boolean value that you return from this handler determines whether + or not the will do any further handling of the + MouseMove event (see ). Return true if you + have handled the MouseMove event entirely, and you do not + want the to do any further action. + Return false if ZedGraph should go ahead and process the MouseMove event. + + + + + Subscribe to this event to provide notification of Double Clicks on graph + objects + + + This event provides for a notification when the mouse is double-clicked on an object + within any of the associated + with this . This event will use the + method to determine which object + was clicked. The boolean value that you return from this handler determines whether + or not the will do any further handling of the + DoubleClick event (see ). Return true if you have + handled the DoubleClick event entirely, and you do not + want the to do any further action. + Return false if ZedGraph should go ahead and process the + DoubleClick event. + + + + + Subscribe to this event to be able to respond to mouse clicks within linked + objects. + + + Linked objects are typically either type objects or + type objects. These object types can include + hyperlink information allowing for "drill-down" type operation. + + + + CurveItem.Link + GraphObj.Link + + + + Gets or sets the instance + that is used for all of the context menu printing functions. + + + + + Gets or sets a value that determines which mouse button will be used as a primary option + to trigger a zoom event. + + + This value is combined with to determine the actual zoom combination. + A secondary zoom button/key combination option is available via and + . To not use this button/key combination, set the value + of to . + + + + + Gets or sets a value that determines which mouse button will be used as the secondary option + to trigger a zoom event. + + + This value is combined with to determine the actual zoom combination. + The primary zoom button/key combination option is available via and + . To not use this button/key combination, set the value + of to . + + + + + Gets or sets a value that determines which modifier keys will be used as a primary option + to trigger a zoom event. + + + This value is combined with to determine the actual zoom combination. + A secondary zoom button/key combination option is available via and + . To not use this button/key combination, set the value + of to . + + + + + Gets or sets a value that determines which modifier keys will be used as a secondary option + to trigger a zoom event. + + + This value is combined with to determine the actual zoom combination. + A primary zoom button/key combination option is available via and + . To not use this button/key combination, set the value + of to . + + + + + Gets or sets a value that determines which mouse button will be used as a primary option + to trigger a pan event. + + + This value is combined with to determine the actual pan combination. + A secondary pan button/key combination option is available via and + . To not use this button/key combination, set the value + of to . + + + + + Gets or sets a value that determines which mouse button will be used as the secondary option + to trigger a pan event. + + + This value is combined with to determine the actual pan combination. + The primary pan button/key combination option is available via and + . To not use this button/key combination, set the value + of to . + + + + + Gets or sets a value that determines which modifier keys will be used as a primary option + to trigger a pan event. + + + This value is combined with to determine the actual pan combination. + A secondary pan button/key combination option is available via and + . To not use this button/key combination, set the value + of to . + + + + + Gets or sets a value that determines which modifier keys will be used as a secondary option + to trigger a pan event. + + + This value is combined with to determine the actual pan combination. + A primary pan button/key combination option is available via and + . To not use this button/key combination, set the value + of to . + + + + + Gets or sets a value that determines which Mouse button will be used to edit point + data values + + + This setting only applies if and/or + are true. + + + + + + Gets or sets a value that determines which modifier keys will be used to edit point + data values + + + This setting only applies if and/or + are true. + + + + + + Gets or sets a value that determines which Mouse button will be used to + select 's. + + + This setting only applies if is true. + + + + + + Gets or sets a value that determines which Modifier keys will be used to + select 's. + + + This setting only applies if is true. + + + + + + Gets or sets a value that determines which Modifier keys will be used to + append a to the selection list. + + + + + Gets or sets a value that determines which Mouse button will be used to click + on linkable objects + + + + + + + Gets or sets a value that determines which modifier keys will be used to click + on linkable objects + + + + + + + Gets or sets the property for the control + + + + + Gets or sets the property for the control + + + actually uses a object + to hold a list of objects. This property really only + accesses the first in the list. If there is more + than one , use the + indexer property to access any of the objects. + + + + Gets or sets a value that determines if all drawing operations for this control + will be forced to operate in Anti-alias mode. Note that if this value is set to + "true", it overrides the setting for sub-objects. Otherwise, the sub-object settings + (such as ) + will be honored. + + + + + Gets or sets a value that determines whether or not tooltips will be displayed + when the mouse hovers over data values. + + The displayed values are taken from + if it is a type, or + otherwise (using the as a format string). + Additionally, the user can custom format the values using the + event. Note that + may be overridden by . + + + + + Gets or sets a value that determines whether or not tooltips will be displayed + showing the current scale values when the mouse is within the + . + + The displayed values are taken from the current mouse position, and formatted + according to and/or . If this + value is set to true, it overrides the setting. + + + + + Gets or sets a value that determines whether or not editing of point data is allowed in + the horizontal direction. + + + Editing is done by holding down the Alt key, and left-clicking on an individual point of + a given to drag it to a new location. The Mouse and Key + combination for this mode are modifiable using and + . + + + + + + + + Gets or sets a value that determines whether or not editing of point data is allowed in + the vertical direction. + + + Editing is done by holding down the Alt key, and left-clicking on an individual point of + a given to drag it to a new location. The Mouse and Key + combination for this mode are modifiable using and + . + + + + + Gets or sets a value that determines whether or not zooming is allowed for the control. + + + Zooming is done by left-clicking inside the to drag + out a rectangle, indicating the new scale ranges that will be part of the graph. + + + + + Gets or sets a value that determines whether or not zooming is allowed for the control in + the horizontal direction. + + + Zooming is done by left-clicking inside the to drag + out a rectangle, indicating the new scale ranges that will be part of the graph. + + + + + Gets or sets a value that determines whether or not zooming is allowed for the control in + the vertical direction. + + + Zooming is done by left-clicking inside the to drag + out a rectangle, indicating the new scale ranges that will be part of the graph. + + + + + Gets or sets a value that determines whether or not zooming is allowed via the mouse wheel. + + + Wheel zooming is done by rotating the mouse wheel. + Note that this property is used in combination with the and + properties to control zoom options. + + + + + Gets or sets a value that determines whether or not panning is allowed for the control in + the horizontal direction. + + + Panning is done by clicking the middle mouse button (or holding down the shift key + while clicking the left mouse button) inside the and + dragging the mouse around to shift the scale ranges as desired. + + + + + + Gets or sets a value that determines whether or not panning is allowed for the control in + the vertical direction. + + + Panning is done by clicking the middle mouse button (or holding down the shift key + while clicking the left mouse button) inside the and + dragging the mouse around to shift the scale ranges as desired. + + + + + + Gets or sets a value that determines whether or not the context menu will be available. + + The context menu is a menu that appears when you right-click on the + . It provides options for Zoom, Pan, AutoScale, Clipboard + Copy, and toggle . + + true to allow the context menu, false to disable it + + + + Gets or sets a value that determines whether or not a message box will be shown + in response to a context menu "Copy" command. + + + Note that, if this property is set to false, the user will receive no + indicative feedback in response to a Copy action. + + + + + Gets or sets the instance that will be used + by the "Save As..." context menu item. + + + This provides the opportunity to modify the dialog, such as setting the + property. + + + + + Gets or sets a value that determines whether or not the visible aspect ratio of the + will be preserved + when printing this . + + + + + Gets or sets a value that determines whether or not the + dimensions will be expanded to fill the + available space when printing this . + + + If is also true, then the + dimensions will be expanded to fit as large + a space as possible while still honoring the visible aspect ratio. + + + + + Gets or sets a value that determines whether the settings of + and + will be overridden to true during printing operations. + + + Printing involves pixel maps that are typically of a dramatically different dimension + than on-screen pixel maps. Therefore, it becomes more important to scale the fonts and + lines to give a printed image that looks like what is shown on-screen. The default + setting for is true, but the default + setting for is false. + + + A value of true will cause both and + to be temporarily set to true during + printing operations. + + + + + Gets or sets a value that controls whether or not the axis value range for the scroll + bars will be set automatically. + + + If this value is set to true, then the range of the scroll bars will be set automatically + to the actual range of the data as returned by at the + time that was last called. Note that a value of true + can override any setting of , , + , , + , and . Note also that you must + call from the for this to + work properly (e.g., don't call it directly from the . + Alternatively, you can call at anytime to set + the scroll bar range.
+ In most cases, you will probably want to disable + before activating this option. +
+
+ + + Set a "grace" value that leaves a buffer area around the data when + is true. + + + This value represents a fraction of the total range around each axis. For example, if the + axis ranges from 0 to 100, then a 0.05 value for ScrollGrace would set the scroll range + to -5 to 105. + + + + + Gets or sets a value that determines if the horizontal scroll bar will be visible. + + This scroll bar allows the display to be scrolled in the horizontal direction. + Another option is display panning, in which the user can move the display around by + clicking directly on it and dragging (see and ). + You can control the available range of scrolling with the and + properties. Note that the scroll range can be set automatically by + .
+ In most cases, you will probably want to disable + before activating this option. +
+ A boolean value. true to display a horizontal scrollbar, false otherwise. +
+ + + Gets or sets a value that determines if the vertical scroll bar will be visible. + + This scroll bar allows the display to be scrolled in the vertical direction. + Another option is display panning, in which the user can move the display around by + clicking directly on it and dragging (see and ). + You can control the available range of scrolling with the and + properties. + Note that the vertical scroll bar only affects the ; it has no impact on + the . The panning options affect both the and + . Note also that the scroll range can be set automatically by + .
+ In most cases, you will probably want to disable + before activating this option. +
+ A boolean value. true to display a vertical scrollbar, false otherwise. +
+ + + Gets or sets a value that determines if the + ranges for all objects in the will + be forced to match. + + + If set to true (default is false), then all of the objects + in the associated with this + will be forced to have matching scale ranges for the x axis. That is, zoom, pan, + and scroll operations will result in zoom/pan/scroll for all graphpanes simultaneously. + + + + + Gets or sets a value that determines if the + ranges for all objects in the will + be forced to match. + + + If set to true (default is false), then all of the objects + in the associated with this + will be forced to have matching scale ranges for the y axis. That is, zoom, pan, + and scroll operations will result in zoom/pan/scroll for all graphpanes simultaneously. + + + + + Gets or sets a value that determines if the vertical scroll bar will affect the Y2 axis. + + + The vertical scroll bar is automatically associated with the Y axis. With this value, you + can choose to include or exclude the Y2 axis with the scrolling. Note that the Y2 axis + scrolling is handled as a secondary. The vertical scroll bar position always reflects + the status of the Y axis. This can cause the Y2 axis to "jump" when first scrolled if + the and values are not set to the + same proportions as and with respect + to the actual and . Also note that + this property is actually just an alias to the + property of the first element of . + + + + + + + + + + Access the for the Y axes. + + + This list maintains the user scale ranges for the scroll bars for each axis + in the . Each ordinal location in + corresponds to an equivalent ordinal location + in . + + + + + + + Access the for the Y2 axes. + + + This list maintains the user scale ranges for the scroll bars for each axis + in the . Each ordinal location in + corresponds to an equivalent ordinal location + in . + + + + + + + The minimum value for the X axis scroll range. + + + Effectively, the minimum endpoint of the scroll range will cause the + value to be set to . Note that this + value applies only to the scroll bar settings. Axis panning (see ) + is not affected by this value. Note that this value can be overridden by + and . + + A double value indicating the minimum axis value + + + + The maximum value for the X axis scroll range. + + + Effectively, the maximum endpoint of the scroll range will cause the + value to be set to . Note that this + value applies only to the scroll bar settings. Axis panning (see ) + is not affected by this value. Note that this value can be overridden by + and . + + A double value indicating the maximum axis value + + + + The minimum value for the Y axis scroll range. + + + Effectively, the minimum endpoint of the scroll range will cause the + value to be set to . Note that this + value applies only to the scroll bar settings. Axis panning (see ) + is not affected by this value. Note that this value can be overridden by + and . Also note that + this property is actually just an alias to the + property of the first element of . + + A double value indicating the minimum axis value + + + + + The maximum value for the Y axis scroll range. + + + Effectively, the maximum endpoint of the scroll range will cause the + value to be set to . Note that this + value applies only to the scroll bar settings. Axis panning (see ) + is not affected by this value. Note that this value can be overridden by + and . Also note that + this property is actually just an alias to the + property of the first element of . + + A double value indicating the maximum axis value + + + + + The minimum value for the Y2 axis scroll range. + + + Effectively, the minimum endpoint of the scroll range will cause the + value to be set to . Note that this + value applies only to the scroll bar settings. Axis panning (see ) + is not affected by this value. Note that this value can be overridden by + and . Also note that + this property is actually just an alias to the + property of the first element of . + + A double value indicating the minimum axis value + + + + + The maximum value for the Y2 axis scroll range. + + + Effectively, the maximum endpoint of the scroll range will cause the + value to be set to . Note that this + value applies only to the scroll bar settings. Axis panning (see ) + is not affected by this value. Note that this value can be overridden by + and . Also note that + this property is actually just an alias to the + property of the first element of . + + A double value indicating the maximum axis value + + + + + Returns true if the user is currently scrolling via the scrollbar, or + false if no scrolling is taking place. + + + This method just tests ScrollBar.Capture to see if the + mouse has been captured by the scroll bar. If so, scrolling is active. + + + + + Gets or sets the format for displaying tooltip values. + This format is passed to . + + + Use the type + to determine the format strings. + + + + + Gets or sets the format for displaying tooltip values. + This format is passed to . + + + Use the type + to determine the format strings. + + + + + Gets or sets the step size fraction for zooming with the mouse wheel. + A value of 0.1 will result in a 10% zoom step for each mouse wheel movement. + + + + + Gets or sets a boolean value that determines if zooming with the wheel mouse + is centered on the mouse location, or centered on the existing graph. + + + + + This checks if the control has been disposed. This is synonymous with + the graph pane having been nulled or disposed. Therefore this is the + same as ZedGraphControl.GraphPane == null. + + + + + Readonly property that gets the list of selected CurveItems + + + + + Gets or sets a value that determines whether or not selection is allowed for the control. + + + + + Public enumeration that specifies the type of + object present at the Context Menu's mouse location + + + + + The object is an Inactive Curve Item at the Context Menu's mouse position + + + + + The object is an active Curve Item at the Context Menu's mouse position + + + + + There is no selectable object present at the Context Menu's mouse position + + + + + A delegate that allows subscribing methods to append or modify the context menu. + + The source object + A reference to the object + that contains the context menu. + + The point at which the mouse was clicked + The current context menu state + + + + + A delegate that allows notification of zoom and pan events. + + The source object + A object that corresponds to the state of the + before the zoom or pan event. + A object that corresponds to the state of the + after the zoom or pan event + + + + + A delegate that allows notification of scroll events. + + The source object + The source object + A object that corresponds to the state of the + before the scroll event. + A object that corresponds to the state of the + after the scroll event + + + + + A delegate that allows notification of scroll events. + + The source object + The source object + A object that corresponds to the state of the + before the scroll event. + A object that corresponds to the state of the + after the scroll event + + + + + A delegate that receives notification after a point-edit operation is completed. + + The source object + The object that contains the + point that has been edited + The object that contains the point + that has been edited + The integer index of the edited within the + of the selected + + + + + + A delegate that allows custom formatting of the point value tooltips + + The source object + The object that contains the point value of interest + The object that contains the point value of interest + The integer index of the selected within the + of the selected + + + + + A delegate that allows custom formatting of the cursor value tooltips + + The source object + The object that contains the cursor of interest + The object that represents the cursor value location + + + + + A delegate that allows notification of mouse events on Graph objects. + + The source object + A corresponding to this event + + + Return true if you have handled the mouse event entirely, and you do not + want the to do any further action (e.g., starting + a zoom operation). Return false if ZedGraph should go ahead and process the + mouse event. + + + + + A delegate that allows notification of clicks on ZedGraph objects that have + active links enabled + + The source object + The source in which the click + occurred. + + The source object which was clicked. This is typically + a type of if a curve point was clicked, or + a type of if a graph object was clicked. + + The object, belonging to + , that contains the link information + + An index value, typically used if a + was clicked, indicating the ordinal value of the actual point that was clicked. + + + Return true if you have handled the LinkEvent entirely, and you do not + want the to do any further action. + Return false if ZedGraph should go ahead and process the LinkEvent. + + + + + An exception thrown by ZedGraph. A child class of . + + + Jerry Vos modified by John Champion + $Revision: 3.2 $ $Date: 2006-06-24 20:26:44 $ + + + + Initializes a new instance of the + class with serialized data. + + The + instance that holds the serialized object data about the exception being thrown. + The + instance that contains contextual information about the source or destination. + + + + Initializes a new instance of the class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception. + If the innerException parameter is not a null reference, the current exception is raised + in a catch block that handles the inner exception. + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class. + + + + + A class that captures all the scale range settings for a . + + + This class is used to store scale ranges in order to allow zooming out to + prior scale range states. objects are maintained in the + collection. The object holds + a object for each of the three axes; the , + the , and the . + + John Champion + $Revision: 3.15 $ $Date: 2007-04-16 00:03:07 $ + + + + objects to store the state data from the axes. + + + + + objects to store the state data from the axes. + + + + + An enum value indicating the type of adjustment being made to the + scale range state. + + + + + Construct a object from the scale ranges settings contained + in the specified . + + The from which to obtain the scale + range values. + + A enumeration that indicates whether + this saved state is from a pan or zoom. + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Copy the properties from this out to the specified . + + The to which the scale range properties should be + copied. + + + + Determine if the state contained in this object is different from + the state of the specified . + + The object with which to compare states. + true if the states are different, false otherwise + + + + Gets a value indicating the type of action (zoom or pan) + saved by this . + + + + + Gets a string representing the type of adjustment that was made when this scale + state was saved. + + A string representation for the state change type; typically + "Pan", "Zoom", or "Scroll". + + + + An enumeration that describes whether a given state is the result of a Pan or Zoom + operation. + + + + + Indicates the object is from a Zoom operation + + + + + Indicates the object is from a Wheel Zoom operation + + + + + Indicates the object is from a Pan operation + + + + + Indicates the object is from a Scroll operation + + + + + A LIFO stack of prior objects, used to allow zooming out to prior + states (of scale range settings). + + John Champion + $Revision: 3.1 $ $Date: 2006-06-24 20:26:44 $ + + + + Default Constructor + + + + + The Copy Constructor + + The object from which to copy + + + + Implement the interface in a typesafe manner by just + calling the typed version of + + A deep copy of this object + + + + Typesafe, deep-copy clone method. + + A new, independent copy of this class + + + + Add the scale range information from the specified object as a + new entry on the stack. + + The object from which the scale range + information should be copied. + A enumeration that indicates whether this + state is the result of a zoom or pan operation. + The resultant object that was pushed on the stack. + + + + Add the scale range information from the specified object as a + new entry on the stack. + + The object to be placed on the stack. + The object (same as the + parameter). + + + + Pop a entry from the top of the stack, and apply the properties + to the specified object. + + The object to which the scale range + information should be copied. + The object that was "popped" from the stack and applied + to the specified . null if no was + available (the stack was empty). + + + + Pop the entry from the bottom of the stack, and apply the properties + to the specified object. Clear the stack completely. + + The object to which the scale range + information should be copied. + The object at the bottom of the stack that was applied + to the specified . null if no was + available (the stack was empty). + + + + Public readonly property that indicates if the stack is empty + + true for an empty stack, false otherwise + + + + Gets a reference to the object at the top of the stack, + without actually removing it from the stack. + + A object reference, or null if the stack is empty. + +
+
diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ZedGraph.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ZedGraph.dll new file mode 100644 index 0000000000..1e321243c Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ZedGraph.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/de/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/de/ZedGraph.resources.dll new file mode 100644 index 0000000000..92ece0a3c Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/de/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/es/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/es/ZedGraph.resources.dll new file mode 100644 index 0000000000..6ffb60c20 Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/es/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/fr/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/fr/ZedGraph.resources.dll new file mode 100644 index 0000000000..88df670ea Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/fr/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/hu/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/hu/ZedGraph.resources.dll new file mode 100644 index 0000000000..f3a5b7542 Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/hu/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/it/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/it/ZedGraph.resources.dll new file mode 100644 index 0000000000..d528c68a3 Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/it/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ja/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ja/ZedGraph.resources.dll new file mode 100644 index 0000000000..ca34d1c73 Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ja/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/pt/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/pt/ZedGraph.resources.dll new file mode 100644 index 0000000000..8cf2475f8 Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/pt/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ru/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ru/ZedGraph.resources.dll new file mode 100644 index 0000000000..e9fc66276 Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/ru/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/sk/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/sk/ZedGraph.resources.dll new file mode 100644 index 0000000000..cf9190b4e Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/sk/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/sv/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/sv/ZedGraph.resources.dll new file mode 100644 index 0000000000..fe9543029 Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/sv/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/tr/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/tr/ZedGraph.resources.dll new file mode 100644 index 0000000000..d846dc0ab Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/tr/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/zh-cn/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/zh-cn/ZedGraph.resources.dll new file mode 100644 index 0000000000..306fcd4c5 Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/zh-cn/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/zh-tw/ZedGraph.resources.dll b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/zh-tw/ZedGraph.resources.dll new file mode 100644 index 0000000000..7559b014c Binary files /dev/null and b/Tools/Performance/Comparer/packages/ZedGraph.5.1.6/lib/net35-Client/zh-tw/ZedGraph.resources.dll differ diff --git a/Tools/Performance/Comparer/packages/repositories.config b/Tools/Performance/Comparer/packages/repositories.config new file mode 100644 index 0000000000..889468371 --- /dev/null +++ b/Tools/Performance/Comparer/packages/repositories.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file